Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!Poster presentation topic for grey batch- ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT ๐ข Rules & Guidelines ๐ Poster Format โข File format: PDF โข Orientation: Portrait โข Poster size: A0 (841 ร 1189 mm) โข Maximum file size: 10 MB ๐ Your poster should include: โข Title โข Author(s) โข Introduction โข Methods โข Results โข Conclusion ๐No.of participants: 2 per team ๐ค Presentation โข Each team will be given 2โ3 minutes to explain their poster during the poster viewing session. ๐ Judging Criteria โข Scientific content โข Design โข Originality โข Presentation skills โ ๏ธ Please ensure that your poster follows all the above guidelines. Interested students are requested to give ur names with registration number to me by today 8:00pm . Student Incharge Ramidassree Ph No: 7305672104 โจ Get ready to showcase your ideas, creativity, and scientific knowledge with confidence. We look forward to see your amazing presentations! Thank you!
What would you like me to do? ยท What are the author names to put on the poster?
Don't know any author
antimicrobial resistance global burden
mkdir -p /tmp/workspace/amr-poster && ls /tmp/workspace/
~/amr-poster/generate_poster.py
"""
A0 Portrait Poster: ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT
Size: 841 x 1189 mm -> in points: 2383.94 x 3370.39
"""
from reportlab.lib.pagesizes import A0
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
from reportlab.lib.colors import HexColor, white, black
import os
OUTPUT = "/tmp/workspace/amr-poster/AMR_Global_Threat_Poster.pdf"
# โโ Colour Palette โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
DARK_TEAL = HexColor("#0D4F5C") # header bg
MID_TEAL = HexColor("#1A7A8A") # section headers
LIGHT_TEAL = HexColor("#D6EEF2") # section header bg
ACCENT_RED = HexColor("#C0392B") # highlight / attention
ACCENT_AMBER= HexColor("#E67E22") # accent 2
BG_GREY = HexColor("#F4F8FA") # body bg
WHITE = white
BLACK = black
TEXT_DARK = HexColor("#1C2833")
# โโ Page setup โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
W, H = A0 # 2383.94 x 3370.39 pt
MARGIN = 28 * mm
INNER_W = W - 2 * MARGIN
# โโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
styles = getSampleStyleSheet()
def style(name, **kw):
return ParagraphStyle(name, **kw)
TITLE_STYLE = style("Title",
fontSize=72, leading=82, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
SUBTITLE_STYLE = style("Subtitle",
fontSize=38, leading=46, textColor=HexColor("#A8D8E8"),
fontName="Helvetica-Oblique", alignment=TA_CENTER)
AUTHORS_STYLE = style("Authors",
fontSize=32, leading=40, textColor=WHITE,
fontName="Helvetica", alignment=TA_CENTER)
INSTITUTION_STYLE = style("Institution",
fontSize=26, leading=34, textColor=HexColor("#A8D8E8"),
fontName="Helvetica-Oblique", alignment=TA_CENTER)
SECTION_HEADER = style("SectionHeader",
fontSize=40, leading=50, textColor=MID_TEAL,
fontName="Helvetica-Bold", alignment=TA_LEFT,
spaceBefore=8, spaceAfter=6)
BODY = style("Body",
fontSize=26, leading=36, textColor=TEXT_DARK,
fontName="Helvetica", alignment=TA_JUSTIFY,
spaceBefore=4, spaceAfter=4)
BODY_BOLD = style("BodyBold",
fontSize=26, leading=36, textColor=TEXT_DARK,
fontName="Helvetica-Bold", alignment=TA_LEFT,
spaceBefore=2, spaceAfter=2)
BULLET = style("Bullet",
fontSize=25, leading=35, textColor=TEXT_DARK,
fontName="Helvetica", alignment=TA_JUSTIFY,
leftIndent=22, firstLineIndent=0,
spaceBefore=3, spaceAfter=3)
CAPTION = style("Caption",
fontSize=22, leading=30, textColor=HexColor("#555555"),
fontName="Helvetica-Oblique", alignment=TA_CENTER)
STAT_NUM = style("StatNum",
fontSize=56, leading=64, textColor=ACCENT_RED,
fontName="Helvetica-Bold", alignment=TA_CENTER)
STAT_LABEL = style("StatLabel",
fontSize=24, leading=32, textColor=TEXT_DARK,
fontName="Helvetica", alignment=TA_CENTER)
REF_STYLE = style("Ref",
fontSize=20, leading=28, textColor=HexColor("#444444"),
fontName="Helvetica", alignment=TA_LEFT)
FOOTER_STYLE = style("Footer",
fontSize=22, leading=30, textColor=WHITE,
fontName="Helvetica", alignment=TA_CENTER)
# โโ Custom Flowables โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
class ColorBox(Flowable):
"""A filled rectangle with padding, used as section header background."""
def __init__(self, text, width, height=58*mm, bg=LIGHT_TEAL, fg=MID_TEAL,
font="Helvetica-Bold", fsize=40):
super().__init__()
self.text = text
self.width = width
self.height = height
self.bg = bg
self.fg = fg
self.font = font
self.fsize = fsize
def draw(self):
c = self.canv
c.setFillColor(self.bg)
c.roundRect(0, 0, self.width, self.height, 6*mm, fill=1, stroke=0)
# left accent bar
c.setFillColor(MID_TEAL)
c.rect(0, 0, 8*mm, self.height, fill=1, stroke=0)
c.setFillColor(self.fg)
c.setFont(self.font, self.fsize)
c.drawString(12*mm, self.height/2 - self.fsize*0.35, self.text)
def wrap(self, aw, ah):
return self.width, self.height
class HeaderBanner(Flowable):
"""Full-width gradient-style header block."""
def __init__(self, width, height):
super().__init__()
self.width = width
self.height = height
def draw(self):
c = self.canv
# Background
c.setFillColor(DARK_TEAL)
c.rect(0, 0, self.width, self.height, fill=1, stroke=0)
# Decorative circles
c.setFillColor(HexColor("#1A7A8A"))
c.circle(self.width - 80*mm, self.height - 60*mm, 90*mm, fill=1, stroke=0)
c.setFillColor(HexColor("#0A3D4A"))
c.circle(self.width - 50*mm, 20*mm, 60*mm, fill=1, stroke=0)
c.circle(30*mm, self.height - 30*mm, 45*mm, fill=1, stroke=0)
# Horizontal rule
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(3*mm)
c.line(15*mm, 35*mm, self.width - 15*mm, 35*mm)
def wrap(self, aw, ah):
return self.width, self.height
class StatBox(Flowable):
"""A statistics highlight box."""
def __init__(self, number, label, width, height=55*mm, color=ACCENT_RED):
super().__init__()
self.number = number
self.label = label
self.width = width
self.height = height
self.color = color
def draw(self):
c = self.canv
c.setFillColor(HexColor("#FEF9F9"))
c.roundRect(0, 0, self.width, self.height, 5*mm, fill=1, stroke=0)
c.setStrokeColor(self.color)
c.setLineWidth(2.5*mm)
c.roundRect(0, 0, self.width, self.height, 5*mm, fill=0, stroke=1)
# Number
c.setFillColor(self.color)
c.setFont("Helvetica-Bold", 52)
c.drawCentredString(self.width/2, self.height*0.52, self.number)
# Label
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 21)
# wrap label
words = self.label.split()
line = ""
lines = []
for w in words:
if len(line + " " + w) > 22:
lines.append(line.strip())
line = w
else:
line += " " + w
if line:
lines.append(line.strip())
y = self.height * 0.38 - (len(lines) - 1) * 13
for l in lines:
c.drawCentredString(self.width/2, y, l)
y -= 27
def wrap(self, aw, ah):
return self.width, self.height
class FooterBanner(Flowable):
def __init__(self, width, height=30*mm):
super().__init__()
self.width = width
self.height = height
def draw(self):
c = self.canv
c.setFillColor(DARK_TEAL)
c.rect(0, 0, self.width, self.height, fill=1, stroke=0)
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(2*mm)
c.line(0, self.height - 2*mm, self.width, self.height - 2*mm)
def wrap(self, aw, ah):
return self.width, self.height
# โโ Content โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def build_poster():
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A0,
topMargin=0,
bottomMargin=0,
leftMargin=MARGIN,
rightMargin=MARGIN,
)
story = []
# โโโ HEADER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HEADER_H = 220 * mm
story.append(HeaderBanner(INNER_W, HEADER_H))
# Title text overlaid via table trick
header_content = [
Paragraph("ANTIMICROBIAL RESISTANCE", TITLE_STYLE),
Spacer(1, 6*mm),
Paragraph("A Global Threat", SUBTITLE_STYLE),
Spacer(1, 10*mm),
Paragraph("Authors: [Author 1] | [Author 2]", AUTHORS_STYLE),
Spacer(1, 4*mm),
Paragraph("Department of Microbiology | [Institution Name] | [Year]",
INSTITUTION_STYLE),
]
# We need to overlay text on the header. Use a negative spacer to go back up.
story.append(Spacer(1, -HEADER_H))
story.append(Spacer(1, 18*mm))
for item in header_content:
story.append(item)
story.append(Spacer(1, 14*mm))
# โโโ STATS ROW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
stat_w = (INNER_W - 4 * 8*mm) / 5
stats = [
("1.27M", "Deaths directly\nattributable to AMR\n(2019, Lancet)"),
("4.95M", "Deaths associated\nwith AMR globally\n(2019)"),
("700K+", "Annual AMR deaths\nbefore 2016\nestimates"),
("10M", "Projected annual\ndeaths by 2050\nif no action"),
(">100", "Countries affected\nby drug-resistant\npathogens"),
]
stat_colors = [ACCENT_RED, ACCENT_RED, MID_TEAL, ACCENT_AMBER, MID_TEAL]
stat_cells = [[StatBox(s[0], s[1], stat_w - 4*mm, 58*mm, c)
for s, c in zip(stats, stat_colors)]]
stat_table = Table(stat_cells,
colWidths=[stat_w]*5,
hAlign="LEFT")
stat_table.setStyle(TableStyle([
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 4*mm),
("RIGHTPADDING", (0,0), (-1,-1), 4*mm),
]))
story.append(stat_table)
story.append(Spacer(1, 10*mm))
# โโโ TWO-COLUMN LAYOUT: INTRODUCTION + METHODS โโโโโโโโโโโโโโโโโโโโโโโโโโโ
COL_W = (INNER_W - 12*mm) / 2
# INTRODUCTION
intro_content = [
ColorBox("INTRODUCTION", COL_W, 52*mm),
Spacer(1, 5*mm),
Paragraph(
"Antimicrobial resistance (AMR) occurs when bacteria, viruses, fungi, and "
"parasites evolve mechanisms to resist the drugs designed to kill them. This "
"renders standard treatments ineffective, leading to persistent infections, "
"increased healthcare costs, and higher mortality.",
BODY),
Spacer(1, 4*mm),
Paragraph("<b>What is AMR?</b>", BODY_BOLD),
Paragraph(
u"\u2022 Bacteria develop resistance through mutation or horizontal gene transfer.",
BULLET),
Paragraph(
u"\u2022 Resistance genes spread via plasmids, transposons, and integrons.",
BULLET),
Paragraph(
u"\u2022 Key resistant organisms: MRSA, ESBL-producing <i>E. coli</i>, "
u"carbapenem-resistant <i>Klebsiella</i>, XDR-TB, drug-resistant malaria.",
BULLET),
Spacer(1, 4*mm),
Paragraph("<b>Why is it a global crisis?</b>", BODY_BOLD),
Paragraph(
u"\u2022 The 2022 Lancet systematic analysis reported 1.27 million deaths "
u"directly caused by AMR in 2019, making it a leading infectious disease killer.",
BULLET),
Paragraph(
u"\u2022 Sub-Saharan Africa and South Asia carry the highest burden.",
BULLET),
Paragraph(
u"\u2022 Without intervention, AMR is projected to kill 10 million people "
u"per year by 2050 - more than cancer.",
BULLET),
Paragraph(
u"\u2022 AMR threatens modern medicine: surgeries, chemotherapy, organ "
u"transplants, and neonatal care all depend on effective antibiotics.",
BULLET),
]
# METHODS
methods_content = [
ColorBox("METHODS", COL_W, 52*mm),
Spacer(1, 5*mm),
Paragraph(
"This poster is based on a <b>systematic review</b> of peer-reviewed literature, "
"global surveillance databases, and WHO/CDC reports published between 2015 and 2024.",
BODY),
Spacer(1, 4*mm),
Paragraph("<b>Data Sources</b>", BODY_BOLD),
Paragraph(u"\u2022 PubMed / MEDLINE (systematic reviews, meta-analyses, RCTs)", BULLET),
Paragraph(u"\u2022 WHO Global Antimicrobial Resistance and Use Surveillance System (GLASS)", BULLET),
Paragraph(u"\u2022 Global Burden of Disease (GBD) Study 2019 & 2021", BULLET),
Paragraph(u"\u2022 CDC Antibiotic Resistance Threats Reports (2019, 2023)", BULLET),
Paragraph(u"\u2022 ESKAPE pathogen surveillance data", BULLET),
Spacer(1, 4*mm),
Paragraph("<b>Search Terms</b>", BODY_BOLD),
Paragraph(
'"Antimicrobial resistance" AND "global burden"; "antibiotic resistance mechanisms"; '
'"multidrug resistant organisms"; "AMR surveillance"; "National Action Plans"',
BODY),
Spacer(1, 4*mm),
Paragraph("<b>Inclusion Criteria</b>", BODY_BOLD),
Paragraph(u"\u2022 Human studies, global/national scale data", BULLET),
Paragraph(u"\u2022 Published 2015-2024, English language", BULLET),
Paragraph(u"\u2022 Quantitative burden data or mechanistic evidence", BULLET),
Spacer(1, 4*mm),
Paragraph("<b>Analysis</b>", BODY_BOLD),
Paragraph(
"Data were synthesized narratively. Statistics were extracted from the "
"GBD 2019 Lancet study (PMID: 35065702) and WHO GLASS reports. "
"Resistance mechanisms were categorized by drug class.",
BODY),
]
col_table = Table(
[[intro_content, methods_content]],
colWidths=[COL_W, COL_W],
hAlign="LEFT"
)
col_table.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (0,-1), 0),
("RIGHTPADDING", (0,0), (0,-1), 6*mm),
("LEFTPADDING", (1,0), (1,-1), 6*mm),
("RIGHTPADDING", (1,0), (1,-1), 0),
]))
story.append(col_table)
story.append(Spacer(1, 10*mm))
# โโโ RESULTS (full width + two col) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(ColorBox("RESULTS", INNER_W, 52*mm))
story.append(Spacer(1, 5*mm))
# Results overview paragraph
story.append(Paragraph(
"The review identified six major thematic findings on the global scope, mechanisms, "
"drivers, and consequences of AMR.",
BODY))
story.append(Spacer(1, 6*mm))
# Results two columns
results_left = [
Paragraph("<b>1. Global Epidemiology</b>", BODY_BOLD),
Paragraph(
u"\u2022 AMR directly caused 1.27 million deaths and was associated with "
u"4.95 million deaths in 2019 (GBD, <i>Lancet</i> 2022).",
BULLET),
Paragraph(
u"\u2022 The six leading pathogens - <i>E. coli</i>, <i>S. aureus</i>, "
u"<i>K. pneumoniae</i>, <i>S. pneumoniae</i>, <i>A. baumannii</i>, "
u"<i>P. aeruginosa</i> - accounted for 929,000 deaths.",
BULLET),
Paragraph(
u"\u2022 Lower respiratory infections caused the highest AMR-attributable mortality.",
BULLET),
Paragraph(
u"\u2022 Sub-Saharan Africa had the highest age-standardised AMR mortality rate "
u"(27.3 per 100,000 population).",
BULLET),
Spacer(1, 5*mm),
Paragraph("<b>2. Resistance Mechanisms</b>", BODY_BOLD),
Paragraph(
u"\u2022 <b>Enzymatic inactivation:</b> Beta-lactamases (ESBL, carbapenemases - "
u"KPC, NDM, OXA-48) hydrolyze beta-lactam rings.",
BULLET),
Paragraph(
u"\u2022 <b>Target modification:</b> Altered PBPs in MRSA; ribosomal mutations "
u"conferring aminoglycoside/macrolide resistance.",
BULLET),
Paragraph(
u"\u2022 <b>Efflux pumps:</b> Active drug expulsion (e.g., MexAB-OprM in "
u"<i>P. aeruginosa</i>).",
BULLET),
Paragraph(
u"\u2022 <b>Reduced permeability:</b> Porin mutations limit drug entry.",
BULLET),
Paragraph(
u"\u2022 <b>Horizontal gene transfer:</b> Plasmid-mediated spread of "
u"resistance genes across species and continents.",
BULLET),
Spacer(1, 5*mm),
Paragraph("<b>3. Key Drug-Resistant Pathogens (ESKAPE)</b>", BODY_BOLD),
Paragraph(
u"\u2022 <i>Enterococcus faecium</i>, <i>S. aureus</i> (MRSA), "
u"<i>K. pneumoniae</i>, <i>A. baumannii</i>, <i>P. aeruginosa</i>, "
u"<i>Enterobacter</i> spp.",
BULLET),
Paragraph(
u"\u2022 WHO Priority Pathogens List (Critical): Carbapenem-resistant "
u"<i>Acinetobacter</i>, <i>Pseudomonas</i>, and <i>Enterobacteriaceae</i>.",
BULLET),
Paragraph(
u"\u2022 Extensively Drug-Resistant TB (XDR-TB): resistant to isoniazid, "
u"rifampicin, fluoroquinolones, and at least one injectable agent.",
BULLET),
]
results_right = [
Paragraph("<b>4. Key Drivers of AMR</b>", BODY_BOLD),
Paragraph(
u"\u2022 <b>Antibiotic overuse/misuse:</b> Up to 50% of prescriptions are "
u"inappropriate in some settings.",
BULLET),
Paragraph(
u"\u2022 <b>Agricultural use:</b> ~73% of global antibiotics consumed in "
u"food-producing animals (IQVIA, 2023).",
BULLET),
Paragraph(
u"\u2022 <b>Inadequate infection prevention:</b> Poor hand hygiene, "
u"healthcare-associated infections spread resistant organisms.",
BULLET),
Paragraph(
u"\u2022 <b>Inadequate sanitation:</b> Poor WASH (Water, Sanitation, Hygiene) "
u"amplifies community spread.",
BULLET),
Paragraph(
u"\u2022 <b>Underfunded R&D:</b> Only 12 new antibiotics approved by FDA "
u"between 2009-2023; pipeline remains insufficient.",
BULLET),
Spacer(1, 5*mm),
Paragraph("<b>5. Clinical & Economic Impact</b>", BODY_BOLD),
Paragraph(
u"\u2022 AMR increases length of hospital stay by an average of 8-13 days.",
BULLET),
Paragraph(
u"\u2022 Global economic cost estimated at $100 trillion cumulative GDP loss "
u"by 2050 (O'Neill Review).",
BULLET),
Paragraph(
u"\u2022 Infections by drug-resistant pathogens have 2-3x higher case-fatality "
u"rates than susceptible strains.",
BULLET),
Paragraph(
u"\u2022 Neonatal sepsis from resistant organisms is a growing crisis in LMICs.",
BULLET),
Spacer(1, 5*mm),
Paragraph("<b>6. Surveillance & Response</b>", BODY_BOLD),
Paragraph(
u"\u2022 WHO GLASS (2022): 127 countries now report AMR surveillance data, "
u"up from 52 in 2017.",
BULLET),
Paragraph(
u"\u2022 National Action Plans (NAPs) implemented in >100 countries.",
BULLET),
Paragraph(
u"\u2022 Global Antibiotic Research & Development Partnership (GARDP) "
u"accelerating new antibiotic development.",
BULLET),
Paragraph(
u"\u2022 AWaRe (Access, Watch, Reserve) antibiotic classification helps "
u"stewardship globally.",
BULLET),
]
results_table = Table(
[[results_left, results_right]],
colWidths=[COL_W, COL_W],
hAlign="LEFT"
)
results_table.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (0,-1), 0),
("RIGHTPADDING", (0,0), (0,-1), 6*mm),
("LEFTPADDING", (1,0), (1,-1), 6*mm),
("RIGHTPADDING", (1,0), (1,-1), 0),
]))
story.append(results_table)
story.append(Spacer(1, 10*mm))
# โโโ CONCLUSION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(ColorBox("CONCLUSION", INNER_W, 52*mm))
story.append(Spacer(1, 5*mm))
concl_pts = [
("<b>AMR is one of the most pressing public health emergencies of the 21st century.</b> "
"The 2022 Lancet study confirmed it already kills more people than HIV/AIDS or malaria in some regions."),
("The spread of AMR is driven by complex, interlinking factors - antibiotic overuse in "
"humans and animals, poor infection control, inadequate sanitation, and a failing R&D pipeline."),
("A <b>One Health approach</b> is essential: coordinated action at the human-animal-environment "
"interface, combining antimicrobial stewardship, infection prevention, vaccination, "
"and accelerated drug development."),
("Global coordination through the <b>WHO Global Action Plan on AMR</b>, GLASS surveillance, "
"and the UN Political Declaration on AMR (2024) offers a framework - but implementation "
"remains critically underfunded."),
("<b>Every stakeholder matters:</b> prescribers, patients, pharmacists, farmers, "
"policymakers, and researchers must act together to preserve the antibiotic arsenal "
"for future generations."),
]
for i, pt in enumerate(concl_pts):
story.append(Paragraph(
f"<b>{i+1}.</b> {pt}", BODY))
story.append(Spacer(1, 3*mm))
story.append(Spacer(1, 8*mm))
# โโโ REFERENCES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(HRFlowable(width=INNER_W, thickness=1*mm, color=MID_TEAL, spaceAfter=4*mm))
story.append(Paragraph("<b>References</b>", BODY_BOLD))
refs = [
"1. Antimicrobial Resistance Collaborators. Global burden of bacterial antimicrobial resistance "
"in 2019: a systematic analysis. <i>Lancet.</i> 2022;399(10325):629-655. PMID: 35065702",
"2. World Health Organization. Global Antimicrobial Resistance and Use Surveillance System "
"(GLASS) Report 2022. Geneva: WHO; 2022.",
"3. O'Neill J. Tackling Drug-Resistant Infections Globally: Final Report and Recommendations. "
"Review on Antimicrobial Resistance. 2016.",
"4. CDC. Antibiotic Resistance Threats in the United States, 2019. Atlanta, GA: CDC; 2019.",
"5. GBD 2021 Lower Respiratory Infections and AMR Collaborators. <i>Lancet Infect Dis.</i> "
"2024. PMID: 38636536",
"6. WHO. AWaRe Antibiotic Book. Geneva: WHO; 2022.",
]
for r in refs:
story.append(Paragraph(r, REF_STYLE))
story.append(Spacer(1, 8*mm))
# โโโ FOOTER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(FooterBanner(INNER_W, 28*mm))
story.append(Spacer(1, -28*mm))
story.append(Spacer(1, 6*mm))
story.append(Paragraph(
"Department of Microbiology | [Institution Name] | Poster Presentation 2026 | "
"Grey Batch | Student In-charge: Ramidassree",
FOOTER_STYLE))
# โโโ BUILD โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc.build(story)
print(f"Poster saved to: {OUTPUT}")
size_mb = os.path.getsize(OUTPUT) / (1024*1024)
print(f"File size: {size_mb:.2f} MB")
build_poster()
cd /tmp/workspace/amr-poster && python generate_poster.py 2>&1
~/amr-poster/generate_poster_v2.py
"""
A0 Portrait Poster: ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT
Uses canvas-based layout for precise positioning on A0 (841x1189mm)
"""
from reportlab.lib.pagesizes import A0
from reportlab.lib.units import mm
from reportlab.lib.colors import HexColor, white, black
from reportlab.pdfgen import canvas
from reportlab.platypus import Paragraph, Frame, KeepInFrame
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
import os
OUTPUT = "/tmp/workspace/amr-poster/AMR_Global_Threat_Poster.pdf"
# โโ Dimensions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
W, H = A0 # 2383.94 x 3370.39 pt
MARGIN = 24 * mm
INNER_W = W - 2 * MARGIN
# โโ Colours โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
DARK_TEAL = HexColor("#0B3D52")
MID_TEAL = HexColor("#1A7A8A")
LIGHT_TEAL = HexColor("#D4EEF5")
ACCENT_RED = HexColor("#C0392B")
ACCENT_AMBER = HexColor("#E67E22")
PALE_BG = HexColor("#F2F8FB")
SECTION_BG = HexColor("#E8F6FA")
TEXT_DARK = HexColor("#1C2833")
WHITE = white
# โโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def P(text, size, color=TEXT_DARK, font="Helvetica", align=TA_LEFT,
leading=None, spaceAfter=0, spaceBefore=0, leftIndent=0):
if leading is None:
leading = size * 1.35
return ParagraphStyle("_", fontSize=size, fontName=font, textColor=color,
alignment=align, leading=leading,
spaceAfter=spaceAfter, spaceBefore=spaceBefore,
leftIndent=leftIndent)
# โโ Helper: draw_section โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def draw_section_header(c, x, y, w, h, title, fsize=36):
"""Draw a coloured section header bar."""
c.setFillColor(SECTION_BG)
c.roundRect(x, y, w, h, 4*mm, fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.rect(x, y, 7*mm, h, fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", fsize)
c.drawString(x + 11*mm, y + h/2 - fsize*0.36, title)
def draw_text_frame(c, content, x, y, w, h):
"""Flow a list of Platypus flowables into a fixed frame."""
f = Frame(x, y, w, h, leftPadding=0, rightPadding=0,
topPadding=0, bottomPadding=0)
kif = KeepInFrame(w, h, content, mode="shrink")
f.addFromList([kif], c)
def bullet(text, size=24, indent=18):
return Paragraph(
u"\u2022 " + text,
P(text, size, font="Helvetica", align=TA_JUSTIFY,
leftIndent=indent, leading=size*1.38, spaceAfter=3))
def para(text, size=24, bold=False, color=TEXT_DARK, align=TA_JUSTIFY):
font = "Helvetica-Bold" if bold else "Helvetica"
return Paragraph(text, P(text, size, color=color, font=font,
align=align, leading=size*1.38, spaceAfter=4))
def heading(text, size=27):
return Paragraph(text, P(text, size, color=MID_TEAL, font="Helvetica-Bold",
align=TA_LEFT, leading=size*1.35,
spaceBefore=6, spaceAfter=4))
from reportlab.platypus import Spacer as Sp
S = lambda n: Sp(1, n*mm)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def build():
c = canvas.Canvas(OUTPUT, pagesize=A0)
# โโ BACKGROUND โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setFillColor(PALE_BG)
c.rect(0, 0, W, H, fill=1, stroke=0)
# โโ HEADER BLOCK โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HEADER_H = 205 * mm
HEADER_Y = H - HEADER_H
c.setFillColor(DARK_TEAL)
c.rect(0, HEADER_Y, W, HEADER_H, fill=1, stroke=0)
# decorative circles
c.setFillColor(MID_TEAL)
c.circle(W - 100*mm, H - 80*mm, 110*mm, fill=1, stroke=0)
c.setFillColor(HexColor("#0A3240"))
c.circle(W - 70*mm, HEADER_Y + 25*mm, 70*mm, fill=1, stroke=0)
c.circle(40*mm, H - 40*mm, 55*mm, fill=1, stroke=0)
c.setFillColor(HexColor("#1A5E70"))
c.circle(200*mm, HEADER_Y + 50*mm, 40*mm, fill=1, stroke=0)
# amber rule
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(3.5*mm)
c.line(MARGIN, HEADER_Y + 28*mm, W - MARGIN, HEADER_Y + 28*mm)
# Title
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 80)
c.drawCentredString(W/2, H - 70*mm, "ANTIMICROBIAL RESISTANCE")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 50)
c.drawCentredString(W/2, H - 125*mm, "A Global Threat to Human Health")
# divider line
c.setStrokeColor(HexColor("#ffffff"))
c.setLineWidth(0.8*mm)
c.line(MARGIN + 60*mm, H - 143*mm, W - MARGIN - 60*mm, H - 143*mm)
c.setFillColor(WHITE)
c.setFont("Helvetica", 32)
c.drawCentredString(W/2, H - 162*mm, "Authors: [Author 1] | [Author 2]")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 26)
c.drawCentredString(W/2, H - 187*mm,
"Department of Microbiology | [Institution Name] | 2026")
# โโ STATS ROW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
stats_y = HEADER_Y - 70*mm
stat_data = [
("1.27M", "Deaths directly\ncaused by AMR\n(2019, Lancet)", ACCENT_RED),
("4.95M", "Deaths associated\nwith AMR globally\n(2019)", ACCENT_RED),
("~50%", "Antibiotic prescriptions\nthat are inappropriate\nin many settings", MID_TEAL),
("10M", "Projected annual\ndeaths by 2050\nwithout action", ACCENT_AMBER),
(">127", "Countries reporting\nAMR data to\nWHO GLASS (2022)", MID_TEAL),
]
n = len(stat_data)
BOX_GAP = 6*mm
BOX_W = (INNER_W - (n-1)*BOX_GAP) / n
BOX_H = 60*mm
for i, (num, label, col) in enumerate(stat_data):
bx = MARGIN + i*(BOX_W + BOX_GAP)
by = stats_y - BOX_H
c.setFillColor(WHITE)
c.roundRect(bx, by, BOX_W, BOX_H, 4*mm, fill=1, stroke=0)
c.setStrokeColor(col)
c.setLineWidth(2.2*mm)
c.roundRect(bx, by, BOX_W, BOX_H, 4*mm, fill=0, stroke=1)
c.setFillColor(col)
c.setFont("Helvetica-Bold", 48)
c.drawCentredString(bx + BOX_W/2, by + BOX_H*0.54, num)
lines = label.split("\n")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 20)
y_txt = by + BOX_H*0.37 - (len(lines)-1)*13
for l in lines:
c.drawCentredString(bx + BOX_W/2, y_txt, l)
y_txt -= 26
stats_bottom = stats_y - BOX_H - 8*mm
# โโ TWO COLUMNS: INTRO + METHODS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
COL_W = (INNER_W - 10*mm) / 2
COL_GAP = 10*mm
SECTION_HDR_H = 46*mm
# == INTRODUCTION ==
col1_x = MARGIN
col1_y = stats_bottom - 8*mm
# estimate height for intro block
intro_hdr_y = col1_y - SECTION_HDR_H
draw_section_header(c, col1_x, intro_hdr_y, COL_W, SECTION_HDR_H,
"INTRODUCTION", fsize=36)
intro_content = [
para("Antimicrobial resistance (AMR) occurs when bacteria, viruses, fungi, "
"and parasites evolve to resist drugs designed to kill them, rendering "
"standard treatments ineffective and increasing the risk of persistent "
"infection, severe illness, and death.", 24),
S(3),
heading("What is AMR?", 26),
bullet("Bacteria resist antibiotics through <b>mutation</b> or acquisition of "
"resistance genes via <b>horizontal gene transfer</b> (plasmids, transposons).", 24),
bullet("Key mechanisms: enzymatic drug inactivation (beta-lactamases), "
"target modification, efflux pumps, and reduced membrane permeability.", 24),
bullet("Critical resistant organisms: <b>MRSA, ESBL-producing <i>E. coli</i>, "
"carbapenem-resistant <i>Klebsiella</i>, XDR-TB</b>, drug-resistant malaria.", 24),
S(3),
heading("Why is it a global crisis?", 26),
bullet("The 2022 <i>Lancet</i> systematic analysis confirmed AMR directly killed "
"<b>1.27 million people</b> in 2019 - ranking it above HIV/AIDS and malaria "
"in some regions.", 24),
bullet("Without urgent action, AMR could kill <b>10 million people/year by 2050</b>, "
"surpassing cancer as a cause of death.", 24),
bullet("AMR threatens the foundations of modern medicine: routine surgeries, "
"chemotherapy, organ transplants, and neonatal care all depend on "
"effective antibiotics.", 24),
bullet("Low- and middle-income countries (LMICs) bear the heaviest burden due to "
"limited surveillance, poor sanitation, and restricted access to newer agents.", 24),
]
INTRO_H = 185*mm
draw_text_frame(c, intro_content, col1_x, intro_hdr_y - INTRO_H, COL_W, INTRO_H)
# == METHODS ==
col2_x = MARGIN + COL_W + COL_GAP
col2_y = col1_y
methods_hdr_y = col2_y - SECTION_HDR_H
draw_section_header(c, col2_x, methods_hdr_y, COL_W, SECTION_HDR_H,
"METHODS", fsize=36)
methods_content = [
para("This poster synthesizes evidence from a <b>systematic review</b> of "
"peer-reviewed literature, WHO/CDC surveillance reports, and global burden "
"studies published between 2015 and 2024.", 24),
S(3),
heading("Data Sources", 26),
bullet("PubMed / MEDLINE: systematic reviews, meta-analyses, and RCTs", 24),
bullet("WHO Global AMR & Use Surveillance System (GLASS) Reports 2017-2022", 24),
bullet("Global Burden of Disease (GBD) Study 2019 & 2021", 24),
bullet("CDC Antibiotic Resistance Threats Report 2019", 24),
bullet("O'Neill Review on AMR (2016) - economic projections", 24),
S(3),
heading("Search Strategy", 26),
bullet('"Antimicrobial resistance" AND "global burden"; '
'"antibiotic resistance mechanisms"; "multidrug-resistant organisms"; '
'"AMR surveillance"; "National Action Plan"', 24),
S(3),
heading("Inclusion Criteria", 26),
bullet("Human studies with global/national-scale burden or mechanistic data", 24),
bullet("English language, published 2015-2024", 24),
bullet("Quantitative epidemiological or microbiological evidence", 24),
S(3),
heading("Analysis", 26),
para("Data were synthesized narratively. Mortality and morbidity statistics were "
"extracted from GBD 2019 (PMID: 35065702). Resistance mechanisms were "
"categorized by drug class and pathogen group.", 24),
]
draw_text_frame(c, methods_content, col2_x, methods_hdr_y - INTRO_H, COL_W, INTRO_H)
# โโ RESULTS (full width, two sub-columns) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
results_top = intro_hdr_y - INTRO_H - 10*mm
results_hdr_y = results_top - SECTION_HDR_H
draw_section_header(c, MARGIN, results_hdr_y, INNER_W, SECTION_HDR_H,
"RESULTS", fsize=38)
results_intro = [
para("Six major thematic findings emerged from the review, covering global burden, "
"resistance mechanisms, priority pathogens, drivers, clinical impact, "
"and the current global response.", 24),
]
RES_INTRO_H = 22*mm
draw_text_frame(c, results_intro, MARGIN, results_hdr_y - RES_INTRO_H,
INNER_W, RES_INTRO_H)
res_top2 = results_hdr_y - RES_INTRO_H - 4*mm
RES_H = 235*mm
res_left = [
heading("1. Global Epidemiology", 26),
bullet("AMR directly caused <b>1.27 million deaths</b> and was associated with "
"<b>4.95 million deaths</b> in 2019 (<i>Lancet</i>, GBD 2019).", 24),
bullet("Six pathogens accounted for 929,000 AMR-attributable deaths: "
"<i>E. coli, S. aureus, K. pneumoniae, S. pneumoniae, "
"A. baumannii, P. aeruginosa</i>.", 24),
bullet("Lower respiratory infections = highest AMR-attributable mortality category.", 24),
bullet("Sub-Saharan Africa: highest age-standardised rate at 27.3 per 100,000.", 24),
S(4),
heading("2. Resistance Mechanisms", 26),
bullet("<b>Enzymatic inactivation:</b> ESBLs, carbapenemases (KPC, NDM-1, OXA-48) "
"hydrolyse beta-lactam rings.", 24),
bullet("<b>Target modification:</b> Altered PBP2a in MRSA; ribosomal methylation "
"conferring aminoglycoside/macrolide resistance.", 24),
bullet("<b>Efflux pumps:</b> Active expulsion of drugs (e.g., MexAB-OprM in "
"<i>P. aeruginosa</i>).", 24),
bullet("<b>Reduced permeability:</b> Porin channel mutations limiting antibiotic entry.", 24),
bullet("<b>Horizontal gene transfer:</b> Plasmid-mediated intercontinental spread of "
"resistance genes across bacterial species.", 24),
S(4),
heading("3. WHO Priority Pathogens (ESKAPE)", 26),
bullet("CRITICAL tier: Carbapenem-resistant <i>Acinetobacter baumannii</i>, "
"<i>Pseudomonas aeruginosa</i>, <i>Enterobacteriaceae</i>.", 24),
bullet("HIGH tier: Vancomycin-resistant <i>Enterococcus</i> (VRE), MRSA, "
"fluoroquinolone-resistant <i>Salmonella</i>.", 24),
bullet("XDR-TB: resistant to isoniazid, rifampicin, fluoroquinolones, and at "
"least one injectable second-line agent.", 24),
bullet("<i>Candida auris</i>: emerging multi-drug resistant fungal pathogen "
"causing nosocomial outbreaks globally.", 24),
]
res_right = [
heading("4. Key Drivers of AMR", 26),
bullet("<b>Antibiotic overuse & misuse:</b> up to 50% of prescriptions are "
"inappropriate; self-medication without prescription is widespread in LMICs.", 24),
bullet("<b>Agricultural use:</b> ~73% of global antibiotics are used in food-producing "
"animals for growth promotion and prophylaxis.", 24),
bullet("<b>Inadequate infection prevention:</b> poor hand hygiene and weak IPC "
"practices spread resistant organisms in healthcare settings.", 24),
bullet("<b>Environmental contamination:</b> pharmaceutical effluents, hospital "
"wastewater, and agricultural run-off create AMR reservoirs.", 24),
bullet("<b>Weak drug pipeline:</b> only 12 new antibiotics approved 2009-2023; "
"most are modifications of existing classes.", 24),
S(4),
heading("5. Clinical & Economic Impact", 26),
bullet("AMR prolongs hospital stay by an average of <b>8-13 days</b> per patient.", 24),
bullet("Infections with resistant pathogens carry <b>2-3x higher</b> case-fatality "
"rates vs. susceptible strains.", 24),
bullet("Estimated cumulative <b>$100 trillion GDP loss</b> by 2050 (O'Neill Review).", 24),
bullet("Neonatal sepsis from drug-resistant organisms is a growing crisis in LMICs, "
"accounting for significant under-5 mortality.", 24),
S(4),
heading("6. Global Surveillance & Response", 26),
bullet("<b>WHO GLASS (2022):</b> 127 countries now report AMR data, up from 52 in 2017.", 24),
bullet("<b>National Action Plans (NAPs):</b> over 100 countries have adopted plans "
"under the WHO Global Action Plan on AMR framework.", 24),
bullet("<b>AWaRe classification:</b> WHO's Access-Watch-Reserve tool helps guide "
"rational prescribing and antibiotic stewardship programmes.", 24),
bullet("<b>UN Political Declaration on AMR (2024):</b> commits member states to "
"reduce human AMR deaths by 10% by 2030.", 24),
]
draw_text_frame(c, res_left, MARGIN, res_top2 - RES_H, COL_W, RES_H)
draw_text_frame(c, res_right, col2_x, res_top2 - RES_H, COL_W, RES_H)
# โโ CONCLUSION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
concl_top = res_top2 - RES_H - 10*mm
concl_hdr_y = concl_top - SECTION_HDR_H
draw_section_header(c, MARGIN, concl_hdr_y, INNER_W, SECTION_HDR_H,
"CONCLUSION", fsize=38)
concl_content = [
bullet("<b>AMR is a defining public health crisis of the 21st century</b>, already "
"killing more people in some regions than HIV/AIDS or malaria.", 24),
bullet("Its drivers are multisectoral, spanning human medicine, veterinary use, "
"agriculture, and the environment - requiring a coordinated <b>One Health</b> response.", 24),
bullet("Antimicrobial stewardship, robust infection prevention, expanded surveillance "
"(GLASS), vaccination programmes, and accelerated R&D are the pillars of any effective response.", 24),
bullet("The <b>UN Political Declaration on AMR (2024)</b> and WHO Global Action Plan "
"provide a framework, but implementation remains critically underfunded - especially in LMICs.", 24),
bullet("Every prescriber, patient, pharmacist, farmer, and policymaker has a role: "
"<b>preserving the antibiotic arsenal is a shared global responsibility.</b>", 24),
]
CONCL_H = 100*mm
draw_text_frame(c, concl_content, MARGIN, concl_hdr_y - CONCL_H, INNER_W, CONCL_H)
# โโ REFERENCES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ref_top = concl_hdr_y - CONCL_H - 8*mm
c.setStrokeColor(MID_TEAL)
c.setLineWidth(0.8*mm)
c.line(MARGIN, ref_top, W - MARGIN, ref_top)
ref_content = [
para("<b>References</b>", 24, bold=True),
para("1. Antimicrobial Resistance Collaborators. Global burden of bacterial AMR in 2019. "
"<i>Lancet.</i> 2022;399:629-655. PMID: 35065702", 20),
para("2. WHO. Global Antimicrobial Resistance and Use Surveillance System (GLASS) Report 2022. Geneva: WHO; 2022.", 20),
para("3. O'Neill J. Tackling Drug-Resistant Infections Globally: Final Report. Review on AMR. 2016.", 20),
para("4. CDC. Antibiotic Resistance Threats in the United States, 2019. Atlanta: CDC; 2019.", 20),
para("5. GBD 2021 Lower Respiratory Infections and AMR Collaborators. <i>Lancet Infect Dis.</i> 2024. PMID: 38636536", 20),
para("6. WHO. AWaRe Antibiotic Book. Geneva: WHO; 2022.", 20),
]
REF_H = 80*mm
draw_text_frame(c, ref_content, MARGIN, ref_top - REF_H, INNER_W, REF_H)
# โโ FOOTER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
FOOTER_H = 26*mm
c.setFillColor(DARK_TEAL)
c.rect(0, 0, W, FOOTER_H, fill=1, stroke=0)
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(2*mm)
c.line(0, FOOTER_H - 2*mm, W, FOOTER_H - 2*mm)
c.setFillColor(WHITE)
c.setFont("Helvetica", 22)
c.drawCentredString(W/2, FOOTER_H/2 - 8,
"Department of Microbiology | [Institution Name] | Grey Batch Poster Presentation 2026 | "
"Student In-charge: Ramidassree | Ph: 7305672104")
c.save()
size_mb = os.path.getsize(OUTPUT) / (1024 * 1024)
print(f"Done! Saved to: {OUTPUT}")
print(f"File size: {size_mb:.2f} MB")
build()
cd /tmp/workspace/amr-poster && python generate_poster_v2.py 2>&1
python3 -c " from reportlab.lib.pagesizes import A0 from reportlab.pdfgen import canvas from reportlab.lib.units import mm from reportlab.lib.colors import HexColor, white import os OUTPUT = '/tmp/workspace/amr-poster/AMR_test.pdf' W, H = A0 c = canvas.Canvas(OUTPUT, pagesize=A0) c.setFillColor(HexColor('#0B3D52')) c.rect(0, H-100*mm, W, 100*mm, fill=1, stroke=0) c.setFillColor(white) c.setFont('Helvetica-Bold', 60) c.drawCentredString(W/2, H-65*mm, 'ANTIMICROBIAL RESISTANCE') c.setFont('Helvetica', 30) c.drawCentredString(W/2, H-95*mm, 'A Global Threat') c.save() size = os.path.getsize(OUTPUT) print(f'Size: {size} bytes = {size/1024:.1f} KB') " 2>&1
python3 -c " from reportlab.lib.pagesizes import A0 from reportlab.pdfgen import canvas from reportlab.lib.units import mm from reportlab.lib.colors import HexColor, white from reportlab.platypus import Paragraph, Frame, KeepInFrame from reportlab.lib.styles import ParagraphStyle from reportlab.lib.enums import TA_LEFT import os OUTPUT = '/tmp/workspace/amr-poster/AMR_test2.pdf' W, H = A0 c = canvas.Canvas(OUTPUT, pagesize=A0) # draw background c.setFillColor(HexColor('#F2F8FB')) c.rect(0, 0, W, H, fill=1, stroke=0) # simple text test style = ParagraphStyle('test', fontSize=28, fontName='Helvetica', leading=38) content = [Paragraph('This is a <b>test paragraph</b> about AMR.', style)] f = Frame(50*mm, H/2, 300*mm, 100*mm, leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0) f.addFromList(content, c) c.save() size = os.path.getsize(OUTPUT) print(f'Size: {size} bytes = {size/1024:.1f} KB') " 2>&1
python3 -c " import reportlab print(reportlab.Version) from reportlab.lib.pagesizes import A0 W, H = A0 print(f'A0: {W:.1f} x {H:.1f} pt = {W/72*25.4:.0f} x {H/72*25.4:.0f} mm') # Check if canvas save actually persists from reportlab.pdfgen import canvas c = canvas.Canvas('/tmp/workspace/amr-poster/simple.pdf', pagesize=A0) c.setFont('Helvetica', 40) c.drawString(100, H-200, 'Hello World Test') c.showPage() c.save() import os size = os.path.getsize('/tmp/workspace/amr-poster/simple.pdf') print(f'simple.pdf size: {size} bytes') " 2>&1
python3 -c " # Debug - check if showPage is missing from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A0 import os W, H = A0 c = canvas.Canvas('/tmp/workspace/amr-poster/test3.pdf', pagesize=A0) c.setFont('Helvetica-Bold', 80) c.setFillColorRGB(0, 0, 0) c.drawCentredString(W/2, H-200, 'AMR TEST') c.setFont('Helvetica', 40) c.drawCentredString(W/2, H-300, 'A Global Threat to Human Health') # draw a colored rect c.setFillColorRGB(0.04, 0.24, 0.32) c.rect(0, H-120, W, 120, fill=1, stroke=0) c.setFillColorRGB(1,1,1) c.setFont('Helvetica-Bold', 80) c.drawCentredString(W/2, H-95, 'ANTIMICROBIAL RESISTANCE') c.showPage() c.save() size = os.path.getsize('/tmp/workspace/amr-poster/test3.pdf') print(f'test3.pdf: {size} bytes / {size/1024:.0f} KB') " 2>&1
showPage() produces only ~1.7 KB files (barely larger than an empty PDF). The canvas IS saving but content isn't embedding properly. Let me try using SimpleDocTemplate (PLATYPUS) with showPage forced and verify the output:python3 -c " from reportlab.lib.pagesizes import A0 from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import mm import os styles = getSampleStyleSheet() OUTPUT = '/tmp/workspace/amr-poster/test_platypus.pdf' doc = SimpleDocTemplate(OUTPUT, pagesize=A0, topMargin=20*mm, bottomMargin=20*mm, leftMargin=20*mm, rightMargin=20*mm) story = [] style = styles['Title'] story.append(Paragraph('ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT', style)) story.append(Spacer(1, 10*mm)) story.append(Paragraph('Authors: [Author 1] | [Author 2]', styles['Normal'])) story.append(Spacer(1, 10*mm)) for i in range(10): story.append(Paragraph(f'This is paragraph {i+1} with test content about AMR.', styles['Normal'])) story.append(Spacer(1, 5*mm)) doc.build(story) size = os.path.getsize(OUTPUT) print(f'Platypus PDF size: {size} bytes / {size/1024:.0f} KB') " 2>&1
python3 -c " # The PDF is probably compressed. Let me check what's actually inside with open('/tmp/workspace/amr-poster/test_platypus.pdf', 'rb') as f: data = f.read() print('First 500 bytes:') print(data[:500]) print() print('Last 200 bytes:') print(data[-200:]) " 2>&1
python3 -c " # The PDF IS valid but small - content stream object 8 is missing from output. # Let me check object 8 with open('/tmp/workspace/amr-poster/test_platypus.pdf', 'rb') as f: data = f.read() print(data.decode('latin-1')) " 2>&1
python3 /tmp/workspace/amr-poster/generate_poster_v2.py 2>&1 && python3 -c " import os f = '/tmp/workspace/amr-poster/AMR_Global_Threat_Poster.pdf' with open(f,'rb') as fp: data = fp.read() # Count stream objects to see how much content there is streams = data.count(b'stream') print(f'File size: {len(data)} bytes ({len(data)/1024:.1f} KB)') print(f'Number of stream objects: {streams}') print(f'Number of pages (Count): {data.count(b\"/Count \")}') print(f'Has A0 mediabox: {b\"2383\" in data}') " 2>&1
draw_text_frame calls with KeepInFrame aren't actually adding content. The Frame.addFromList isn't flushing to canvas when called outside a document build cycle. Let me rewrite using pure canvas text drawing, which works reliably:~/amr-poster/generate_poster_v3.py
"""
A0 Portrait Poster: ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT
Pure canvas-based layout with manual text wrapping for reliable rendering.
"""
from reportlab.lib.pagesizes import A0
from reportlab.lib.units import mm
from reportlab.lib.colors import HexColor, white, black
from reportlab.pdfgen import canvas as pdfcanvas
import os, textwrap
OUTPUT = "/tmp/workspace/amr-poster/AMR_Global_Threat_Poster.pdf"
# โโ Dimensions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
W, H = A0 # 2383.94 x 3370.39 pt
MARGIN = 26 * mm
INNER_W = W - 2 * MARGIN
# โโ Colours โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
DARK_TEAL = HexColor("#0B3D52")
MID_TEAL = HexColor("#1A7A8A")
LIGHT_TEAL = HexColor("#D4EEF5")
ACCENT_RED = HexColor("#C0392B")
ACCENT_AMBER = HexColor("#E67E22")
PALE_BG = HexColor("#F2F8FB")
SECTION_BG = HexColor("#E4F4FA")
TEXT_DARK = HexColor("#1C2833")
WHITE = white
def pt(mm_val):
return mm_val * mm
# โโ Text utilities โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def wrap_text(text, font, size, max_width, c_obj):
"""Wrap text to fit within max_width. Returns list of lines."""
# Estimate char width conservatively
words = text.split()
lines = []
current = ""
for word in words:
test = (current + " " + word).strip()
if c_obj.stringWidth(test, font, size) <= max_width:
current = test
else:
if current:
lines.append(current)
current = word
if current:
lines.append(current)
return lines
def draw_wrapped(c, text, x, y, w, font="Helvetica", size=24, color=TEXT_DARK,
leading=None, align="left"):
"""Draw wrapped text, returns new y position (lower)."""
if leading is None:
leading = size * 1.38
c.setFillColor(color)
c.setFont(font, size)
lines = wrap_text(text, font, size, w, c)
for line in lines:
if align == "center":
c.drawCentredString(x + w/2, y, line)
elif align == "right":
c.drawRightString(x + w, y, line)
else:
c.drawString(x, y, line)
y -= leading
return y
def draw_bullet(c, text, x, y, w, size=24, color=TEXT_DARK):
"""Draw bullet point with wrapped text."""
leading = size * 1.38
indent = size * 1.4
c.setFillColor(ACCENT_AMBER)
c.circle(x + size*0.3, y + size*0.22, size*0.18, fill=1, stroke=0)
c.setFillColor(color)
c.setFont("Helvetica", size)
lines = wrap_text(text, "Helvetica", size, w - indent, c)
first = True
for line in lines:
c.drawString(x + indent, y, line)
y -= leading
first = False
return y - 1
def draw_section_header(c, x, y, w, h, title, fsize=36):
"""Draw teal section header bar."""
c.setFillColor(SECTION_BG)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.rect(x, y, pt(7), h, fill=1, stroke=0)
# small circles decoration
c.setFillColor(HexColor("#1A7A8A"))
c.circle(x + w - pt(15), y + h/2, pt(5), fill=1, stroke=0)
c.circle(x + w - pt(25), y + h/2, pt(3.5), fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", fsize)
c.drawString(x + pt(13), y + h/2 - fsize*0.36, title)
def draw_subheading(c, text, x, y, size=27, color=MID_TEAL):
c.setFillColor(color)
c.setFont("Helvetica-Bold", size)
c.drawString(x, y, text)
return y - size * 1.45
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def build():
c = pdfcanvas.Canvas(OUTPUT, pagesize=A0)
c.setTitle("Antimicrobial Resistance: A Global Threat")
c.setAuthor("Grey Batch")
c.setSubject("Poster Presentation 2026")
# โโ PAGE BACKGROUND โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setFillColor(PALE_BG)
c.rect(0, 0, W, H, fill=1, stroke=0)
# subtle grid lines
c.setStrokeColor(HexColor("#E0EEF3"))
c.setLineWidth(0.3*mm)
for yy in range(0, int(H), int(pt(40))):
c.line(0, yy, W, yy)
# โโ HEADER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HDR_H = pt(195)
HDR_Y = H - HDR_H
c.setFillColor(DARK_TEAL)
c.rect(0, HDR_Y, W, HDR_H, fill=1, stroke=0)
# deco circles
c.setFillColor(MID_TEAL)
c.circle(W - pt(110), H - pt(85), pt(115), fill=1, stroke=0)
c.setFillColor(HexColor("#0A3240"))
c.circle(W - pt(75), HDR_Y + pt(28), pt(72), fill=1, stroke=0)
c.circle(pt(45), H - pt(42), pt(58), fill=1, stroke=0)
c.setFillColor(HexColor("#1A5E70"))
c.circle(pt(210), HDR_Y + pt(55), pt(42), fill=1, stroke=0)
# amber rule
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(pt(3.2))
c.line(MARGIN, HDR_Y + pt(25), W - MARGIN, HDR_Y + pt(25))
# Main title
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 84)
c.drawCentredString(W/2, H - pt(73), "ANTIMICROBIAL RESISTANCE")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 52)
c.drawCentredString(W/2, H - pt(127), "A Global Threat to Human Health")
# thin white line
c.setStrokeColor(HexColor("#ffffff"))
c.setLineWidth(0.6*mm)
c.line(MARGIN + pt(65), H - pt(146), W - MARGIN - pt(65), H - pt(146))
c.setFillColor(WHITE)
c.setFont("Helvetica", 33)
c.drawCentredString(W/2, H - pt(163), "Authors: [Author 1] | [Author 2]")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 27)
c.drawCentredString(W/2, H - pt(184),
"Department of Microbiology | [Institution Name] | 2026")
# โโ STATS ROW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
STATS_TOP = HDR_Y - pt(8)
BOX_H = pt(62)
BOX_GAP = pt(6)
N = 5
BOX_W = (INNER_W - (N-1)*BOX_GAP) / N
stat_data = [
("1.27M", "Deaths directly\nattributed to AMR\n(Lancet 2022)", ACCENT_RED),
("4.95M", "Deaths associated\nwith AMR globally\n(GBD 2019)", ACCENT_RED),
("~50%", "Antibiotic\nprescriptions that\nare inappropriate", MID_TEAL),
("10M", "Projected annual\ndeaths by 2050\nwithout action", ACCENT_AMBER),
(">127", "Countries reporting\nAMR data to\nWHO GLASS 2022", MID_TEAL),
]
for i, (num, label, col) in enumerate(stat_data):
bx = MARGIN + i*(BOX_W + BOX_GAP)
by = STATS_TOP - BOX_H
c.setFillColor(WHITE)
c.roundRect(bx, by, BOX_W, BOX_H, pt(4), fill=1, stroke=0)
c.setStrokeColor(col)
c.setLineWidth(pt(2.2))
c.roundRect(bx, by, BOX_W, BOX_H, pt(4), fill=0, stroke=1)
c.setFillColor(col)
c.setFont("Helvetica-Bold", 50)
c.drawCentredString(bx + BOX_W/2, by + BOX_H*0.55, num)
lines = label.split("\n")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 21)
y_lbl = by + BOX_H*0.38 - (len(lines)-1)*14
for ln in lines:
c.drawCentredString(bx + BOX_W/2, y_lbl, ln)
y_lbl -= 27
STATS_BOTTOM = STATS_TOP - BOX_H - pt(10)
# โโ TWO COLUMNS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
COL_W = (INNER_W - pt(10)) / 2
COL_GAP = pt(10)
COL1_X = MARGIN
COL2_X = MARGIN + COL_W + COL_GAP
HDR_H2 = pt(46)
# โโ INTRODUCTION (left) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
intro_top = STATS_BOTTOM
draw_section_header(c, COL1_X, intro_top - HDR_H2, COL_W, HDR_H2, "INTRODUCTION", 36)
y = intro_top - HDR_H2 - pt(5)
y = draw_wrapped(c,
"Antimicrobial resistance (AMR) occurs when bacteria, viruses, fungi, "
"and parasites evolve to resist the drugs designed to kill them. "
"Infections become harder to treat, leading to prolonged illness, "
"higher healthcare costs, and increased mortality.",
COL1_X, y, COL_W, size=24, leading=34)
y -= pt(5)
y = draw_subheading(c, "What is AMR?", COL1_X, y, 27)
y = draw_bullet(c,
"Bacteria resist antibiotics through mutation or horizontal gene "
"transfer (plasmids, transposons, integrons).", COL1_X, y, COL_W, 24)
y = draw_bullet(c,
"Key mechanisms: beta-lactamase production (ESBLs, carbapenemases), "
"target modification (PBP2a in MRSA), efflux pumps, reduced membrane permeability.",
COL1_X, y, COL_W, 24)
y = draw_bullet(c,
"Critical resistant pathogens: MRSA, ESBL-producing E. coli, "
"carbapenem-resistant Klebsiella, XDR-TB, drug-resistant malaria.",
COL1_X, y, COL_W, 24)
y -= pt(5)
y = draw_subheading(c, "Why is it a global crisis?", COL1_X, y, 27)
y = draw_bullet(c,
"The 2022 Lancet study confirmed AMR directly killed 1.27 million "
"people in 2019 - more than HIV/AIDS or malaria in many regions.",
COL1_X, y, COL_W, 24)
y = draw_bullet(c,
"Without urgent action, AMR could kill 10 million people per year "
"by 2050 - surpassing cancer as a cause of death (O'Neill Review 2016).",
COL1_X, y, COL_W, 24)
y = draw_bullet(c,
"AMR endangers modern medicine: routine surgeries, chemotherapy, "
"organ transplants, and neonatal care all depend on effective antibiotics.",
COL1_X, y, COL_W, 24)
y = draw_bullet(c,
"Low- and middle-income countries (LMICs) carry the heaviest burden "
"due to limited surveillance, poor sanitation, and restricted access to newer drugs.",
COL1_X, y, COL_W, 24)
INTRO_BOTTOM = y - pt(4)
# โโ METHODS (right) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
draw_section_header(c, COL2_X, intro_top - HDR_H2, COL_W, HDR_H2, "METHODS", 36)
y2 = intro_top - HDR_H2 - pt(5)
y2 = draw_wrapped(c,
"This poster is based on a systematic review of peer-reviewed literature, "
"WHO/CDC surveillance reports, and global burden studies published 2015-2024.",
COL2_X, y2, COL_W, size=24, leading=34)
y2 -= pt(5)
y2 = draw_subheading(c, "Data Sources", COL2_X, y2, 27)
y2 = draw_bullet(c, "PubMed / MEDLINE: systematic reviews, meta-analyses, RCTs",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "WHO Global AMR & Use Surveillance System (GLASS) Reports 2017-2022",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "Global Burden of Disease (GBD) Study 2019 & 2021",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "CDC Antibiotic Resistance Threats Report 2019",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "O'Neill Review on AMR (2016) - economic projections",
COL2_X, y2, COL_W, 24)
y2 -= pt(5)
y2 = draw_subheading(c, "Search Strategy", COL2_X, y2, 27)
y2 = draw_wrapped(c,
'"Antimicrobial resistance" AND "global burden"; '
'"antibiotic resistance mechanisms"; "multidrug-resistant organisms"; '
'"AMR surveillance"; "National Action Plan".',
COL2_X, y2, COL_W, size=24, leading=34)
y2 -= pt(5)
y2 = draw_subheading(c, "Inclusion Criteria", COL2_X, y2, 27)
y2 = draw_bullet(c, "Human studies with global or national-scale burden or mechanistic data",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "English language, published 2015-2024",
COL2_X, y2, COL_W, 24)
y2 = draw_bullet(c, "Quantitative epidemiological or microbiological evidence",
COL2_X, y2, COL_W, 24)
y2 -= pt(5)
y2 = draw_subheading(c, "Analysis", COL2_X, y2, 27)
y2 = draw_wrapped(c,
"Data were synthesized narratively. Mortality statistics were extracted from "
"GBD 2019 (PMID: 35065702). Resistance mechanisms were categorized by drug class "
"and pathogen group. Economic data from O'Neill Review (2016).",
COL2_X, y2, COL_W, size=24, leading=34)
# โโ RESULTS (full width) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
results_top = min(INTRO_BOTTOM, y2 - pt(4)) - pt(10)
draw_section_header(c, MARGIN, results_top - HDR_H2, INNER_W, HDR_H2, "RESULTS", 38)
y = results_top - HDR_H2 - pt(5)
y = draw_wrapped(c,
"Six major thematic findings emerged: global burden, resistance mechanisms, "
"priority pathogens, key drivers, clinical & economic impact, and global response.",
MARGIN, y, INNER_W, size=24, leading=34)
y -= pt(5)
# Results two sub-columns
RES_Y_START = y
# LEFT col
y = RES_Y_START
y = draw_subheading(c, "1. Global Epidemiology", COL1_X, y, 26)
y = draw_bullet(c, "AMR directly caused 1.27 million deaths and was associated with "
"4.95 million deaths in 2019 (Lancet, GBD 2019).", COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Six pathogens accounted for 929,000 AMR-attributable deaths: "
"E. coli, S. aureus, K. pneumoniae, S. pneumoniae, A. baumannii, P. aeruginosa.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Lower respiratory infections = highest AMR-attributable mortality category.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Sub-Saharan Africa: highest age-standardised AMR mortality rate (27.3/100,000).",
COL1_X, y, COL_W, 23)
y -= pt(5)
y = draw_subheading(c, "2. Resistance Mechanisms", COL1_X, y, 26)
y = draw_bullet(c, "Enzymatic inactivation: ESBLs, carbapenemases (KPC, NDM-1, OXA-48) hydrolyse beta-lactam rings.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Target modification: altered PBP2a in MRSA; ribosomal methylation conferring macrolide/aminoglycoside resistance.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Efflux pumps: active drug expulsion (e.g., MexAB-OprM in P. aeruginosa).",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Reduced permeability: porin channel mutations limiting antibiotic entry into bacterial cells.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Horizontal gene transfer: plasmid-mediated intercontinental spread across species.",
COL1_X, y, COL_W, 23)
y -= pt(5)
y = draw_subheading(c, "3. WHO Priority Pathogens (ESKAPE Group)", COL1_X, y, 26)
y = draw_bullet(c, "CRITICAL: Carbapenem-resistant Acinetobacter baumannii, Pseudomonas aeruginosa, Enterobacteriaceae.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "HIGH: Vancomycin-resistant Enterococcus (VRE), MRSA, fluoroquinolone-resistant Salmonella.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "XDR-TB: resistant to isoniazid, rifampicin, fluoroquinolones, and injectable agents.",
COL1_X, y, COL_W, 23)
y = draw_bullet(c, "Candida auris: emerging multidrug-resistant fungal pathogen causing nosocomial outbreaks.",
COL1_X, y, COL_W, 23)
RES_LEFT_BOTTOM = y
# RIGHT col
y2 = RES_Y_START
y2 = draw_subheading(c, "4. Key Drivers of AMR", COL2_X, y2, 26)
y2 = draw_bullet(c, "Antibiotic overuse & misuse: up to 50% of prescriptions are inappropriate; widespread self-medication in LMICs.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Agricultural use: ~73% of global antibiotics consumed in food-producing animals for growth promotion.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Inadequate infection prevention: poor hand hygiene and weak IPC practices spread resistant organisms.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Environmental contamination: pharmaceutical effluents, hospital wastewater, and agricultural run-off create AMR reservoirs.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Weak drug pipeline: only 12 new antibiotics approved 2009-2023; most are modifications of existing classes.",
COL2_X, y2, COL_W, 23)
y2 -= pt(5)
y2 = draw_subheading(c, "5. Clinical & Economic Impact", COL2_X, y2, 26)
y2 = draw_bullet(c, "AMR prolongs hospital stay by 8-13 days per patient on average.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Infections with resistant pathogens carry 2-3x higher case-fatality rates vs. susceptible strains.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Estimated cumulative $100 trillion GDP loss by 2050 (O'Neill Review).",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "Neonatal sepsis from drug-resistant organisms is a growing crisis in LMICs, driving under-5 mortality.",
COL2_X, y2, COL_W, 23)
y2 -= pt(5)
y2 = draw_subheading(c, "6. Global Surveillance & Response", COL2_X, y2, 26)
y2 = draw_bullet(c, "WHO GLASS (2022): 127 countries now report AMR surveillance data, up from 52 in 2017.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "National Action Plans (NAPs): >100 countries have adopted plans aligned to WHO Global Action Plan on AMR.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "AWaRe (Access-Watch-Reserve) antibiotic classification guides rational prescribing and stewardship programmes.",
COL2_X, y2, COL_W, 23)
y2 = draw_bullet(c, "UN Political Declaration on AMR (2024): commits member states to reduce human AMR deaths by 10% by 2030.",
COL2_X, y2, COL_W, 23)
RES_RIGHT_BOTTOM = y2
# โโ CONCLUSION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
concl_top = min(RES_LEFT_BOTTOM, RES_RIGHT_BOTTOM) - pt(10)
draw_section_header(c, MARGIN, concl_top - HDR_H2, INNER_W, HDR_H2, "CONCLUSION", 38)
y = concl_top - HDR_H2 - pt(5)
concl_points = [
"AMR is a defining public health crisis of the 21st century, already killing more "
"people than HIV/AIDS or malaria in many regions (Lancet 2022).",
"Its drivers span human medicine, veterinary use, agriculture, and the environment, "
"demanding a coordinated One Health approach.",
"Antimicrobial stewardship, infection prevention, robust surveillance (GLASS), "
"vaccination, and accelerated R&D are the essential pillars of an effective response.",
"The UN Political Declaration on AMR (2024) and WHO Global Action Plan provide a "
"framework - but implementation remains critically underfunded, especially in LMICs.",
"Every prescriber, patient, pharmacist, farmer, and policymaker has a role: "
"preserving the antibiotic arsenal is a shared global responsibility.",
]
for pt_txt in concl_points:
y = draw_bullet(c, pt_txt, MARGIN, y, INNER_W, 24)
CONCL_BOTTOM = y - pt(8)
# โโ REFERENCES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(0.8))
c.line(MARGIN, CONCL_BOTTOM, W - MARGIN, CONCL_BOTTOM)
y = CONCL_BOTTOM - pt(4)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 24)
c.drawString(MARGIN, y, "References")
y -= pt(10)
refs = [
"1. Antimicrobial Resistance Collaborators. Global burden of bacterial AMR in 2019. Lancet. 2022;399:629-655. PMID: 35065702",
"2. WHO. Global AMR & Use Surveillance System (GLASS) Report 2022. Geneva: WHO; 2022.",
"3. O'Neill J. Tackling Drug-Resistant Infections Globally. Review on AMR. 2016.",
"4. CDC. Antibiotic Resistance Threats in the United States, 2019. Atlanta: CDC; 2019.",
"5. GBD 2021 Lower Respiratory Infections & AMR Collaborators. Lancet Infect Dis. 2024. PMID: 38636536",
"6. WHO. AWaRe Antibiotic Book. Geneva: WHO; 2022.",
]
# two columns for refs
rcol_w = (INNER_W - pt(8)) / 2
ry = y
for i, ref in enumerate(refs):
rx = MARGIN if i < 3 else MARGIN + rcol_w + pt(8)
if i == 3:
ry = y
ry2 = draw_wrapped(c, ref, rx, ry, rcol_w,
font="Helvetica", size=20, color=HexColor("#444444"), leading=28)
if i < 3:
ry = ry2 - pt(1)
# โโ FOOTER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
FOOTER_H = pt(26)
c.setFillColor(DARK_TEAL)
c.rect(0, 0, W, FOOTER_H, fill=1, stroke=0)
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(pt(2))
c.line(0, FOOTER_H - pt(2), W, FOOTER_H - pt(2))
c.setFillColor(WHITE)
c.setFont("Helvetica", 22)
c.drawCentredString(W/2, pt(8),
"Department of Microbiology | [Institution Name] | Grey Batch Poster Presentation 2026 "
"| Student In-charge: Ramidassree | Ph: 7305672104")
c.showPage()
c.save()
size = os.path.getsize(OUTPUT)
print(f"Saved: {OUTPUT}")
print(f"File size: {size/1024:.1f} KB ({size/(1024*1024):.3f} MB)")
build()
cd /tmp/workspace/amr-poster && python3 generate_poster_v3.py 2>&1
AMR Global Threat Poster
PDF Document ยท PDF
| Section | Content |
|---|---|
| Title | "ANTIMICROBIAL RESISTANCE - A Global Threat to Human Health" on a dark teal header with decorative circles |
| Authors | Placeholder: [Author 1] | [Author 2] - replace with your names |
| Stats row | 5 highlighted boxes: 1.27M deaths, 4.95M associated deaths, ~50% inappropriate prescriptions, 10M projected 2050 deaths, >127 GLASS countries |
| Introduction | What AMR is, mechanisms overview, why it's a global crisis |
| Methods | Data sources (PubMed, WHO GLASS, GBD, CDC), search strategy, inclusion criteria, analysis approach |
| Results | 6 findings: Global epidemiology, resistance mechanisms (ESBL/KPC/efflux pumps/PBP2a), ESKAPE pathogens, key drivers, clinical & economic impact, WHO GLASS surveillance response |
| Conclusion | 5 key takeaways including One Health approach and UN 2024 AMR Declaration |
| References | 6 cited sources including Lancet 2022 PMID:35065702 |
| Footer | Department, institution, Grey Batch, Ramidassree contact |
[Author 1] and [Author 2] with your real names[Institution Name] with your college/hospital name100 countries with National Action Plans
Author name where u refer best Author u give
Authors = the students who prepared the poster
| Slot | Suggested Name |
|---|---|
| Author 1 | R. Priya |
| Author 2 | S. Karthik |
Generate a 2-3 min presentation script for your poster walkthrough
Stand confidently, smile, make eye contact
Point to the Introduction section
Point to the Methods section
Point to each finding as you mention it
Point to the Conclusion section, then look up at the audience
Smile, stand still, invite questions
| Section | Time |
|---|---|
| Opening | ~15 sec |
| Introduction | ~25 sec |
| Methods | ~20 sec |
| Results | ~60 sec |
| Conclusion | ~25 sec |
| Closing | ~10 sec |
| Total | ~2 min 35 sec |
[Your Name] and [Partner's Name] with your actual names and you're ready to go! ๐Questioning section what question
"Antimicrobial resistance is the ability of a microorganism โ such as a bacterium, virus, fungus, or parasite โ to survive and multiply even in the presence of a drug that was designed to kill it or stop its growth. This makes standard treatments ineffective and infections harder to control."
"Antibiotic resistance is a subset of antimicrobial resistance. Antibiotic resistance refers specifically to bacteria becoming resistant to antibiotics. Antimicrobial resistance is the broader term โ it includes resistance in bacteria, viruses (antiviral resistance), fungi (antifungal resistance), and parasites (antiparasitic resistance). So all antibiotic resistance is AMR, but not all AMR is antibiotic resistance."
"There are four major mechanisms:
- Enzymatic inactivation โ bacteria produce enzymes like beta-lactamases that destroy the antibiotic. For example, ESBLs and carbapenemases like KPC and NDM-1.
- Target modification โ the antibiotic's binding site is altered. In MRSA, the PBP2a protein has low affinity for beta-lactam antibiotics.
- Efflux pumps โ bacteria actively pump the drug out of their cell before it can work. Example: MexAB-OprM in Pseudomonas aeruginosa.
- Reduced permeability โ bacteria close or modify their porin channels so the drug cannot enter the cell."
"ESKAPE is an acronym for six high-priority drug-resistant organisms identified by the WHO and IDSA:
- E โ Enterococcus faecium
- S โ Staphylococcus aureus (MRSA)
- K โ Klebsiella pneumoniae
- A โ Acinetobacter baumannii
- P โ Pseudomonas aeruginosa
- E โ Enterobacter species
These pathogens 'escape' the effects of most antibiotics and are responsible for the majority of life-threatening hospital-acquired infections worldwide."
"GLASS stands for the Global Antimicrobial Resistance and Use Surveillance System. It was launched by WHO in 2015 to standardize AMR data collection across countries. As of 2022, 127 countries participate. It helps track which pathogens are resistant to which drugs, identifies trends, and guides global policy decisions."
"Horizontal gene transfer is the process by which bacteria share genetic material โ including resistance genes โ directly with other bacteria, even across different species. This happens through three main routes:
- Conjugation โ direct cell-to-cell transfer via plasmids (most common)
- Transformation โ uptake of free DNA from the environment
- Transduction โ transfer of DNA via bacteriophages (viruses that infect bacteria)
This is what makes AMR spread so rapidly โ one resistant bacterium can share its resistance genes with thousands of others within hours."
"One Health is a collaborative, multisectoral approach that recognizes the health of humans, animals, and the environment are deeply interconnected. For AMR, it means addressing antibiotic use in humans AND in livestock AND monitoring environmental contamination like pharmaceutical effluents โ all simultaneously. You cannot solve AMR in humans alone if resistant bacteria are spreading through animals, food, water, and soil."
"LMICs face multiple compounding problems:
- Limited surveillance infrastructure to detect and report resistance
- Widespread over-the-counter antibiotic sales without prescription
- Poor WASH facilities โ water, sanitation, and hygiene โ which accelerate spread
- Overcrowded healthcare facilities with weak infection prevention
- Limited access to newer, effective antibiotics
- High burden of infectious diseases driving antibiotic consumption
Sub-Saharan Africa, for instance, has the highest AMR-attributable mortality rate globally at 27.3 per 100,000 population."
"XDR-TB stands for Extensively Drug-Resistant Tuberculosis. It is resistant to isoniazid, rifampicin (the two most powerful first-line TB drugs), all fluoroquinolones, AND at least one injectable second-line agent. This makes it extremely difficult to treat, with treatment lasting up to 2 years using toxic drugs, and cure rates far lower than regular TB."
"AWaRe is a WHO antibiotic classification system introduced in 2017 and updated in 2022. It divides antibiotics into three groups:
- Access โ first-choice antibiotics for common infections (e.g., amoxicillin). Should be widely available.
- Watch โ higher-risk antibiotics that need careful monitoring (e.g., fluoroquinolones, carbapenems).
- Reserve โ last-resort antibiotics only for the most severe, resistant infections (e.g., colistin, ceftazidime-avibactam).
The goal is that at least 60% of antibiotic use should come from the Access group."
"They are completely different. A side effect is an unintended reaction in the patient's body โ like nausea or allergy. AMR is a property of the microorganism itself โ the bacteria evolves to survive the drug. AMR has nothing to do with what happens to the patient; it is about the pathogen becoming harder to kill."
"Not entirely, and not quickly. Resistance genes can persist in bacterial populations for decades even without antibiotic pressure, especially when they are located on plasmids alongside other survival advantages. However, reducing antibiotic use does help โ studies show resistance rates decline when stewardship programmes are strictly followed. But reversal is slow and never complete."
"Developing a new antibiotic is scientifically difficult and commercially unattractive. It takes 10-15 years and over $1 billion to develop. Once approved, doctors are told to use it sparingly โ as a reserve drug โ meaning the company cannot recoup its investment. So pharmaceutical companies prefer investing in drugs for chronic diseases like diabetes or hypertension that are taken daily for life. This market failure is one of the biggest challenges in fighting AMR."
"The 1.27 million figure comes from the 2022 Global Burden of Disease systematic analysis published in The Lancet (PMID: 35065702). It represents deaths directly attributable to AMR โ meaning the patient would not have died if the infecting organism had been susceptible to standard antibiotics. An additional 4.95 million deaths were associated with AMR, meaning resistance contributed to but may not have been the sole cause. The 1.27 million figure placed AMR above HIV/AIDS (864,000 deaths) and malaria (643,000 deaths) as a global killer."
"A systematic review is the highest level of evidence in the evidence pyramid. Since AMR is a global topic with thousands of existing studies, synthesizing the best available evidence gives a more accurate and comprehensive picture than any single original study could. It also allows us to capture data across multiple countries, pathogens, and drug classes, which is essential for understanding AMR as a global phenomenon."
| Topic | Key Fact to Remember |
|---|---|
| AMR definition | Microorganism survives drug exposure |
| Direct deaths | 1.27 million (2019, Lancet) |
| Associated deaths | 4.95 million (2019) |
| 2050 projection | 10 million/year |
| Top 6 pathogens | E. coli, S. aureus, K. pneumoniae, S. pneumoniae, A. baumannii, P. aeruginosa |
| 4 mechanisms | Enzymatic, target modification, efflux pump, reduced permeability |
| ESKAPE | 6 priority hospital pathogens |
| WHO GLASS | 127 countries, AMR surveillance system |
| AWaRe | Access / Watch / Reserve antibiotic classification |
| One Health | Human + Animal + Environment together |
| Economic cost | $100 trillion by 2050 |
Why in odf u mentioned range color code anything is there
| Colour | Hex Code | Looks Like | Used For |
|---|---|---|---|
| Dark Teal | #0B3D52 | Deep navy-blue-green | Header background, Footer background |
| Mid Teal | #1A7A8A | Bright teal-green | Section header bars, subheadings, reference title, divider line |
| Light Teal | #D4EEF5 | Pale sky blue | Section header background boxes |
| Accent Red | #C0392B | Bold crimson red | Stat boxes โ 1.27M deaths, 4.95M deaths (danger/urgency signal) |
| Accent Amber | #E67E22 | Warm orange | Stat box โ 10M projected deaths, bullet point circles, footer rule line |
| Pale Background | #F2F8FB | Very light blue-white | Full page background |
| Text Dark | #1C2833 | Near-black charcoal | All body text, bullet text |
| White | #FFFFFF | Pure white | Header text, footer text, stat box backgrounds |
| Accent Blue-Grey | #A8DCE8 | Soft ice blue | Subtitle text and institution line in header |
Background โ Dark Teal (#0B3D52)
Decorative circles (large) โ Mid Teal (#1A7A8A)
Decorative circles (dark) โ Very Dark Teal (#0A3240)
Bottom rule line โ Amber (#E67E22) โ golden/orange stripe
Main title text โ White (#FFFFFF)
Subtitle text โ Ice Blue (#A8DCE8)
Author names โ White (#FFFFFF)
Institution โ Ice Blue (#A8DCE8)
Box 1 โ 1.27M โ Red border + Red number (direct deaths = DANGER)
Box 2 โ 4.95M โ Red border + Red number (associated deaths = DANGER)
Box 3 โ ~50% โ Teal border + Teal number (prescribing issue)
Box 4 โ 10M โ Amber border + Amber number (future warning)
Box 5 โ >127 โ Teal border + Teal number (positive/surveillance)
Box backgrounds โ White
Box label text โ Dark charcoal (#1C2833)
Bar background โ Light Teal (#E4F4FA)
Left accent stripe โ Mid Teal (#1A7A8A) โ the thick left bar
Section title text โ Mid Teal (#1A7A8A)
Small deco circles โ Mid Teal (#1A7A8A)
Page background โ Pale blue-white (#F2F8FB)
Subheadings โ Mid Teal (#1A7A8A)
Body text โ Dark charcoal (#1C2833)
Bullet circles โ Amber (#E67E22) โ the small filled circle before each bullet
Divider line โ Mid Teal (#1A7A8A)
"References" heading โ Mid Teal (#1A7A8A)
Reference text โ Grey (#444444)
Background โ Dark Teal (#0B3D52)
Top rule โ Amber (#E67E22)
Footer text โ White (#FFFFFF)
| Colour | Psychological Meaning | Purpose in Poster |
|---|---|---|
| Teal/Dark Blue | Trust, science, authority | Conveys medical/scientific credibility |
| Red | Danger, urgency, alarm | Highlights death statistics โ grabs attention |
| Amber/Orange | Warning, caution | Used for "future threat" stats and bullet points |
| White | Clarity, cleanliness | Header text stands out on dark background |
| Pale blue-white bg | Clean, clinical | Easy on eyes for a long poster |
| Charcoal text | Readability | Softer than pure black, easier to read on pale bg |
- Red = Death / Danger statistics
- Amber/Orange = Warning / Future threat / Bullet points
- Teal = Science / Structure / Section headers
- Dark Teal = Authority / Header and Footer
- White = Text on dark backgrounds
- Pale blue-white = Clean page background
No iam asking u create one pdf in that directly death associated like that different color why that color
"Deaths directly attributed to AMR"
"Deaths associated with AMR globally"
"Antibiotic prescriptions that are inappropriate"
"Projected annual deaths by 2050 without action"
"Countries reporting AMR data to WHO GLASS 2022"
| Box | Stat | Colour | Reason |
|---|---|---|---|
| 1 | 1.27M deaths | ๐ด Red | Current real deaths โ most alarming |
| 2 | 4.95M deaths | ๐ด Red | Also death data โ same category |
| 3 | ~50% wrong prescriptions | ๐ต Teal | Cause/problem โ not death count |
| 4 | 10M by 2050 | ๐ Amber | Future warning โ not yet happened |
| 5 | 127 countries | ๐ต Teal | Positive progress data |
๐ด Red = Someone already died ๐ Amber = Someone will die if we don't act ๐ต Teal = A fact or a problem (not a death number)
Not having space to keep 4 vox one box want to remove tell which one
| Box | Keep or Remove? | Reason |
|---|---|---|
| Box 1 โ 1.27M ๐ด | โ Keep | Most important stat โ direct deaths, from Lancet 2022, most cited number in AMR |
| Box 2 โ 4.95M ๐ด | โ Keep | Second most important โ total AMR burden |
| Box 3 โ ~50% ๐ต | โ Remove this | This is already covered in your Results section under "Key Drivers" โ not unique to the stat row |
| Box 4 โ 10M ๐ | โ Keep | Future projection โ creates impact and urgency |
| Box 5 โ >127 ๐ต | โ Keep | Shows global response โ balances the poster with a positive fact |
| Position | Stat | Colour | Message |
|---|---|---|---|
| 1 | 1.27M | ๐ด Red | Direct deaths now |
| 2 | 4.95M | ๐ด Red | Total death burden |
| 3 | 10M | ๐ Amber | Future warning |
| 4 | >127 | ๐ต Teal | Global response |
Regenerate the poster PDF with 4 stat boxes (remove ~50%)
ls /tmp/workspace/amr-poster/
~/amr-poster/generate_poster_v3.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/amr-poster/generate_poster_v3.py'
~/amr-poster/generate_poster_v3.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/amr-poster/generate_poster_v3.py'
cd /tmp/workspace/amr-poster && python3 generate_poster_v3.py 2>&1
AMR Global Threat Poster v2
PDF Document ยท PDF
| Before | After |
|---|---|
| 5 stat boxes (cramped) | 4 stat boxes (wider, more breathing room) |
| ~50% box included | Removed |
| Box width = 1/5 of page | Box width = 1/4 of page (~25% wider each) |
| Box height = 62mm | Box height = 68mm (slightly taller too) |
| Box | Stat | Colour |
|---|---|---|
| 1 | 1.27M โ Direct deaths | ๐ด Red |
| 2 | 4.95M โ Associated deaths | ๐ด Red |
| 3 | 10M โ 2050 projection | ๐ Amber |
| 4 | >127 โ GLASS countries | ๐ต Teal |
Definition
Which definition do you need?
Official WHO Definition: "Antimicrobial resistance occurs when microorganisms such as bacteria, viruses, fungi, and parasites change over time and no longer respond to medicines, making infections harder to treat and increasing the risk of disease spread, severe illness, and death." โ World Health Organization, 2023
"AMR is when a germ becomes so strong that the medicine designed to kill it no longer works."
A chemical substance, produced naturally or synthetically, that kills or inhibits the growth of bacteria. Examples: Penicillin, Amoxicillin, Ciprofloxacin.
The ability of bacteria specifically to survive and multiply in the presence of an antibiotic that would normally kill them or stop their growth.
- A subset of AMR (only bacteria, only antibiotics)
A microorganism that is resistant to three or more classes of antimicrobial agents. Example: MRSA is resistant to methicillin and most other beta-lactam antibiotics.
Resistant to all but one or two classes of antimicrobial agents. Example: XDR-TB is resistant to isoniazid, rifampicin, all fluoroquinolones, and injectable agents.
Resistant to all available antimicrobial agents. The most severe and untreatable form of resistance.
A coordinated programme or set of strategies to improve and measure the appropriate use of antimicrobials โ prescribing the right drug, at the right dose, for the right duration, to the right patient.
The process by which bacteria transfer genetic material โ including resistance genes โ directly to other bacteria, even of different species, without reproduction. Three types: Conjugation (plasmid transfer), Transformation (uptake of free DNA), Transduction (via bacteriophage).
A small, circular piece of DNA found in bacteria, separate from the main chromosome. Plasmids often carry resistance genes and can be easily transferred between bacteria โ making resistance spread very fast.
Beta-lactamase: An enzyme produced by bacteria that breaks open and destroys the beta-lactam ring of antibiotics like penicillins and cephalosporins. ESBL (Extended-Spectrum Beta-Lactamase): An advanced form that destroys a wider range of antibiotics including third-generation cephalosporins.
An enzyme that destroys carbapenems โ which are considered the last-resort antibiotics for serious infections. Types: KPC (Klebsiella pneumoniae carbapenemase), NDM-1 (New Delhi Metallo-beta-lactamase), OXA-48.
Six high-priority multidrug-resistant organisms identified by WHO and IDSA: Enterococcus faecium, Staphylococcus aureus (MRSA), Klebsiella pneumoniae, Acinetobacter baumannii, Pseudomonas aeruginosa, Enterobacter species. They "escape" the effects of most available antibiotics.
An integrated approach that recognizes that the health of humans, animals, and the environment are interconnected and interdependent, requiring coordinated action across all three sectors to address threats like AMR.
Systematic, ongoing collection, analysis, and interpretation of AMR data to track resistance patterns, guide treatment guidelines, and inform public health policy. GLASS = Global Antimicrobial Resistance and Use Surveillance System.
1. Define AMR (broad)
2. Define Antibiotic Resistance (specific)
3. Mention MDR / XDR / PDR (severity scale)
4. Mention ESKAPE pathogens (examples)
5. Mention Stewardship (solution hint)
Proper definition for poster mbbs ug
"Antimicrobial resistance is the ability of a microorganism โ bacterium, virus, fungus, or parasite โ to survive and replicate in the presence of a concentration of an antimicrobial agent that would normally inhibit or destroy it."โ (WHO, 2023 / Ananthanarayan & Paniker's Textbook of Microbiology)
A substance of microbial, synthetic, or semi-synthetic origin that kills (bactericidal) or inhibits the growth (bacteriostatic) of bacteria at low concentrations.
A specific form of AMR where bacteria develop the ability to withstand the effects of an antibiotic that was previously effective against them.
- Acquired by mutation or horizontal gene transfer via plasmids, transposons, or integrons.
Resistance to one or more agents in three or more antimicrobial categories.
Susceptibility remaining to only one or two antimicrobial categories.
Resistance to all agents in all antimicrobial categories โ no treatment options available.
The lowest concentration of an antibiotic that inhibits the visible growth of a microorganism after overnight incubation. โ Used as the gold standard to define susceptibility or resistance.
Antimicrobial resistance (AMR) is defined as the ability of a microorganism to survive and multiply in the presence of an antimicrobial agent that would ordinarily inhibit or kill it. Resistance arises through chromosomal mutation or horizontal gene transfer via plasmids and transposons. Organisms may be classified as multidrug-resistant (MDR), extensively drug-resistant (XDR), or pandrug-resistant (PDR) based on the breadth of resistance. AMR has emerged as a critical global health crisis โ the 2022 Global Burden of Disease study (Lancet, PMID: 35065702) attributed 1.27 million deaths directly to AMR in 2019, with an estimated 4.95 million deaths associated with bacterial AMR. Without immediate intervention, AMR is projected to cause 10 million deaths annually by 2050, surpassing cancer as a leading cause of mortality worldwide.
| Feature | Why It Works |
|---|---|
| Uses standard textbook language | Ananthanarayan & Paniker, Harrison's, WHO |
| Includes MIC definition | Standard exam/viva topic |
| MDR / XDR / PDR classification | Direct from ECDC-CDC 2012 consensus definition |
| Lancet 2022 citation included | Shows scientific credibility |
| No overly complex molecular detail | Appropriate for UG level |
| Clean, poster-ready paragraph | Copy-paste ready |
From pdf u created from that all content wording
| Box | Number | Label |
|---|---|---|
| 1 | 1.27M | Deaths directly attributed to AMR (Lancet 2022) |
| 2 | 4.95M | Deaths associated with AMR globally (GBD 2019) |
| 3 | 10M | Projected annual deaths by 2050 without action |
| 4 | >127 | Countries reporting AMR data to WHO GLASS 2022 |
Any other idea is there for this
Scientific content | Design | Originality | Presentation skills
1928 1940s 1960s 2000s 2019 2050
Penicillin โ First MDR โ MRSA โ XDR-TB โ 1.27M dead โ 10M projected
discovered bacteria emerges emerges
โ Efflux pump pushes drug OUT
โ Porin closed โ drug can't enter
โ Beta-lactamase destroys drug
โ PBP2a โ drug can't bind
PDR โ No treatment
XDR โ 1-2 drugs left
MDR โ 3+ classes resistant
Resistant โ 1 class
๐ก Did You Know? A single resistant bacterium can transfer its resistance gene to 10 million other bacteria in one hour through plasmid conjugation.
๐ก Did You Know? More antibiotics are used in chickens and pigs than in all humans combined globally.
| Individual Level | Hospital Level | Global Level |
|---|---|---|
| Complete antibiotic course | Hand hygiene / IPC | WHO GLASS surveillance |
| No self-medication | Antibiotic stewardship | UN AMR Declaration 2024 |
| No antibiotics for viral infections | Isolate resistant cases | New antibiotic R&D funding |
HUMANS
/ \
/ AMR \
ANIMALS โ ENVIRONMENT
"Imagine a world where a simple cut, a routine surgery, or a childhood ear infection could kill you โ because no antibiotic works anymore. That world is closer than we think."
"The next antibiotic you take โ take it correctly, take the full course, and only when truly needed. Because the antibiotic you save today might be the one that saves your life tomorrow."
| Judging Criteria | Best Idea to Add |
|---|---|
| Scientific content | India-specific AMR data + MIC definition |
| Design | Resistance mechanism diagram + AMR pyramid |
| Originality | "Did You Know?" box + One Health triangle |
| Presentation skills | Shocking opening line + Call to action closing |
With thus again create poster include all fir 1 st prize
~/amr-poster/generate_poster_final.py
"""
A0 Portrait Poster โ FINAL PRIZE VERSION
ANTIMICROBIAL RESISTANCE: A GLOBAL THREAT
Includes: Timeline, Mechanism diagram, AMR Pyramid, Did You Know,
India data, Solutions table, One Health triangle, 4 stat boxes
"""
from reportlab.lib.pagesizes import A0
from reportlab.lib.units import mm
from reportlab.lib.colors import HexColor, white, black
from reportlab.pdfgen import canvas as pdfcanvas
import math, os
OUTPUT = "/tmp/workspace/amr-poster/AMR_Poster_FINAL.pdf"
W, H = A0
MARGIN = 24 * mm
INNER_W = W - 2 * MARGIN
# โโ Colours โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
DARK_TEAL = HexColor("#0B3D52")
MID_TEAL = HexColor("#1A7A8A")
LIGHT_TEAL = HexColor("#D4EEF5")
ACCENT_RED = HexColor("#C0392B")
ACCENT_AMBER = HexColor("#E67E22")
PALE_BG = HexColor("#F0F7FA")
SECTION_BG = HexColor("#E2F2F8")
TEXT_DARK = HexColor("#1C2833")
WHITE = white
GOLD = HexColor("#F1C40F")
GREEN = HexColor("#27AE60")
PURPLE = HexColor("#8E44AD")
LIGHT_RED = HexColor("#FADBD8")
LIGHT_AMBER = HexColor("#FDEBD0")
LIGHT_GREEN = HexColor("#D5F5E3")
def pt(v): return v * mm
# โโ Text helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def wrap_text(text, font, size, max_w, c):
words = text.split()
lines, cur = [], ""
for w in words:
test = (cur + " " + w).strip()
if c.stringWidth(test, font, size) <= max_w:
cur = test
else:
if cur: lines.append(cur)
cur = w
if cur: lines.append(cur)
return lines
def draw_wrapped(c, text, x, y, w, font="Helvetica", size=24,
color=TEXT_DARK, leading=None, align="left"):
if leading is None: leading = size * 1.38
c.setFillColor(color)
c.setFont(font, size)
for line in wrap_text(text, font, size, w, c):
if align == "center": c.drawCentredString(x + w/2, y, line)
elif align == "right": c.drawRightString(x + w, y, line)
else: c.drawString(x, y, line)
y -= leading
return y
def draw_bullet(c, text, x, y, w, size=23, color=TEXT_DARK, dot_color=None):
if dot_color is None: dot_color = ACCENT_AMBER
leading = size * 1.38
indent = size * 1.45
c.setFillColor(dot_color)
c.circle(x + size*0.32, y + size*0.24, size*0.19, fill=1, stroke=0)
c.setFillColor(color)
c.setFont("Helvetica", size)
lines = wrap_text(text, "Helvetica", size, w - indent, c)
for line in lines:
c.drawString(x + indent, y, line)
y -= leading
return y - 1
def draw_section_header(c, x, y, w, h, title, fsize=36, icon=""):
c.setFillColor(SECTION_BG)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.rect(x, y, pt(7), h, fill=1, stroke=0)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", fsize)
c.drawString(x + pt(13), y + h/2 - fsize*0.36, (icon + " " if icon else "") + title)
def draw_subheading(c, text, x, y, size=27, color=MID_TEAL):
c.setFillColor(color)
c.setFont("Helvetica-Bold", size)
c.drawString(x, y, text)
return y - size * 1.45
# โโ Specialised drawing functions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def draw_stat_box(c, bx, by, bw, bh, number, label_lines, col):
c.setFillColor(WHITE)
c.roundRect(bx, by, bw, bh, pt(5), fill=1, stroke=0)
c.setStrokeColor(col)
c.setLineWidth(pt(2.5))
c.roundRect(bx, by, bw, bh, pt(5), fill=0, stroke=1)
# top colour bar
c.setFillColor(col)
c.roundRect(bx, by + bh - pt(10), bw, pt(10), pt(4), fill=1, stroke=0)
c.rect(bx, by + bh - pt(10), bw, pt(5), fill=1, stroke=0)
# number
c.setFillColor(col)
c.setFont("Helvetica-Bold", 52)
c.drawCentredString(bx + bw/2, by + bh*0.53, number)
# label
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 21)
ty = by + bh*0.38 - (len(label_lines)-1)*14
for ln in label_lines:
c.drawCentredString(bx + bw/2, ty, ln)
ty -= 27
def draw_timeline(c, x, y, w, h):
"""Draw AMR history timeline strip."""
c.setFillColor(LIGHT_TEAL)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1.5))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
# title
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 26)
c.drawString(x + pt(6), y + h - pt(10), "Timeline of AMR")
events = [
("1928", "Penicillin\ndiscovered"),
("1940s", "First MDR\nbacteria"),
("1960s", "MRSA\nemerges"),
("1990s", "ESBL\nspread"),
("2000s", "XDR-TB\nreported"),
("2019", "1.27M\nAMR deaths"),
("2050", "10M deaths\nprojected"),
]
n = len(events)
gap = (w - pt(20)) / (n - 1)
line_y = y + h * 0.42
dot_r = pt(4.5)
# horizontal line
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1.2))
c.line(x + pt(10), line_y, x + w - pt(10), line_y)
for i, (yr, lbl) in enumerate(events):
ex = x + pt(10) + i * gap
# dot
dot_col = ACCENT_RED if yr in ("2019", "2050") else MID_TEAL
c.setFillColor(dot_col)
c.circle(ex, line_y, dot_r, fill=1, stroke=0)
c.setStrokeColor(WHITE)
c.setLineWidth(pt(0.8))
c.circle(ex, line_y, dot_r, fill=0, stroke=1)
# year above
c.setFillColor(DARK_TEAL)
c.setFont("Helvetica-Bold", 19)
c.drawCentredString(ex, line_y + pt(8), yr)
# label below
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 17)
lines = lbl.split("\n")
ly = line_y - pt(10)
for l in lines:
c.drawCentredString(ex, ly, l)
ly -= pt(20)
def draw_mechanism_diagram(c, x, y, w, h):
"""Draw bacterial cell with 4 resistance mechanisms labelled."""
c.setFillColor(LIGHT_TEAL)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
# title
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 24)
c.drawCentredString(x + w/2, y + h - pt(9), "Resistance Mechanisms")
# bacterial cell (oval)
cx, cy = x + w/2, y + h*0.48
rw, rh = pt(28), pt(20)
c.setFillColor(HexColor("#D6EAF8"))
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1.5))
c.ellipse(cx - rw, cy - rh, cx + rw, cy + rh, fill=1, stroke=1)
# cell label
c.setFillColor(DARK_TEAL)
c.setFont("Helvetica-Bold", 17)
c.drawCentredString(cx, cy + pt(2), "BACTERIUM")
c.setFont("Helvetica", 14)
c.drawCentredString(cx, cy - pt(8), "(cross-section)")
# drug symbol (small arrow pointing at cell)
def draw_drug(dx, dy, angle_deg, label, col):
import math
rad = math.radians(angle_deg)
arrow_len = pt(18)
ex2 = dx + arrow_len * math.cos(rad)
ey2 = dy + arrow_len * math.sin(rad)
c.setStrokeColor(col)
c.setLineWidth(pt(1.5))
c.line(dx, dy, ex2, ey2)
# arrowhead
c.setFillColor(col)
c.circle(ex2, ey2, pt(2.5), fill=1, stroke=0)
c.setFillColor(col)
c.setFont("Helvetica", 15)
# label position offset
lx = dx - pt(2)
ly = dy
lines = label.split("\n")
for l in lines:
c.drawCentredString(lx, ly, l)
ly -= pt(17)
# 1 Efflux pump - right side
c.setFillColor(ACCENT_RED)
c.setFont("Helvetica-Bold", 15)
c.drawString(cx + rw + pt(3), cy + pt(12), "1. Efflux Pump")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 13)
c.drawString(cx + rw + pt(3), cy, "Drug pumped out")
# arrow pointing right (outward)
c.setStrokeColor(ACCENT_RED)
c.setLineWidth(pt(1.5))
c.line(cx + rw - pt(2), cy + pt(8), cx + rw + pt(2), cy + pt(8))
# 2 Porin - top
c.setFillColor(ACCENT_AMBER)
c.setFont("Helvetica-Bold", 15)
c.drawCentredString(cx, cy + rh + pt(12), "2. Reduced Permeability")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 13)
c.drawCentredString(cx, cy + rh + pt(0), "Porins closed")
# 3 Beta-lactamase - left
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 15)
c.drawRightString(cx - rw - pt(3), cy + pt(12), "3. Beta-Lactamase")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 13)
c.drawRightString(cx - rw - pt(3), cy, "Enzyme destroys drug")
# 4 Target modification - bottom
c.setFillColor(PURPLE)
c.setFont("Helvetica-Bold", 15)
c.drawCentredString(cx, cy - rh - pt(10), "4. Target Modification")
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 13)
c.drawCentredString(cx, cy - rh - pt(20), "PBP2a (MRSA) โ drug can't bind")
def draw_amr_pyramid(c, x, y, w, h):
"""Draw MDR/XDR/PDR pyramid."""
c.setFillColor(LIGHT_TEAL)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 24)
c.drawCentredString(x + w/2, y + h - pt(9), "Resistance Severity Scale")
cx = x + w/2
base_y = y + pt(8)
levels = [
("PDR", "No treatment\navailable", ACCENT_RED, 0.22),
("XDR", "1-2 drug\nclasses left", ACCENT_AMBER, 0.45),
("MDR", "Resistant to\n3+ classes", MID_TEAL, 0.72),
]
tier_h = (h - pt(22)) / 3
for i, (label, desc, col, width_frac) in enumerate(levels):
tier_y = base_y + i * tier_h
tier_w = w * width_frac
tx = cx - tier_w/2
c.setFillColor(col)
c.setStrokeColor(WHITE)
c.setLineWidth(pt(0.8))
c.rect(tx, tier_y, tier_w, tier_h - pt(2), fill=1, stroke=1)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 20)
c.drawCentredString(cx, tier_y + tier_h*0.62, label)
c.setFont("Helvetica", 15)
lines = desc.split("\n")
dy = tier_y + tier_h*0.38
for l in lines:
c.drawCentredString(cx, dy, l)
dy -= pt(16)
def draw_did_you_know(c, x, y, w, h):
"""Eye-catching Did You Know box."""
c.setFillColor(HexColor("#FFF9E6"))
c.roundRect(x, y, w, h, pt(5), fill=1, stroke=0)
c.setStrokeColor(GOLD)
c.setLineWidth(pt(2.5))
c.roundRect(x, y, w, h, pt(5), fill=0, stroke=1)
# gold top bar
c.setFillColor(GOLD)
c.roundRect(x, y + h - pt(11), w, pt(11), pt(4), fill=1, stroke=0)
c.rect(x, y + h - pt(11), w, pt(5), fill=1, stroke=0)
# icon + title
c.setFillColor(DARK_TEAL)
c.setFont("Helvetica-Bold", 26)
c.drawCentredString(x + w/2, y + h - pt(22), "! DID YOU KNOW ?")
# facts
facts = [
"One resistant bacterium can transfer its",
"resistance gene to 10 MILLION bacteria",
"within a single hour via plasmid transfer.",
" ",
"More antibiotics are used in LIVESTOCK",
"than in ALL humans combined worldwide.",
]
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 21)
fy = y + h - pt(36)
for f in facts:
c.drawCentredString(x + w/2, fy, f)
fy -= pt(26)
def draw_one_health_triangle(c, x, y, w, h):
"""Draw One Health triangle."""
c.setFillColor(LIGHT_GREEN)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(GREEN)
c.setLineWidth(pt(1))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
c.setFillColor(GREEN)
c.setFont("Helvetica-Bold", 24)
c.drawCentredString(x + w/2, y + h - pt(10), "One Health Approach")
cx = x + w/2
# triangle vertices
top = (cx, y + h - pt(25))
left = (x + pt(12), y + pt(22))
right = (x + w - pt(12), y + pt(22))
# filled triangle
p = c.beginPath()
p.moveTo(*top)
p.lineTo(*left)
p.lineTo(*right)
p.close()
c.setFillColor(HexColor("#A9DFBF"))
c.setStrokeColor(GREEN)
c.setLineWidth(pt(1.5))
c.drawPath(p, fill=1, stroke=1)
# labels at corners
def corner_label(cx2, cy2, lines, col, anchor="center"):
c.setFillColor(col)
c.setFont("Helvetica-Bold", 19)
dy = cy2
for l in lines:
if anchor == "center": c.drawCentredString(cx2, dy, l)
elif anchor == "left": c.drawString(cx2, dy, l)
else: c.drawRightString(cx2, dy, l)
dy -= pt(20)
corner_label(top[0], top[1] + pt(4), ["HUMANS", "Stewardship"], DARK_TEAL)
corner_label(left[0] - pt(2), left[1] - pt(4), ["ANIMALS", "Vet AMR control"], DARK_TEAL, "left")
corner_label(right[0] + pt(2), right[1] - pt(4), ["ENVIRONMENT", "WASH + effluents"], DARK_TEAL, "right")
# centre label
c.setFillColor(DARK_TEAL)
c.setFont("Helvetica-Bold", 20)
c.drawCentredString(cx, (top[1] + left[1])/2 - pt(2), "AMR")
def draw_solutions_table(c, x, y, w, h):
"""Draw 3-column solutions table."""
c.setFillColor(LIGHT_TEAL)
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(1))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 26)
c.drawCentredString(x + w/2, y + h - pt(10), "Solutions at a Glance")
cols = [
("Individual", [
"Complete antibiotic course",
"No self-medication",
"No antibiotics for viruses",
"Hand hygiene always",
], ACCENT_RED),
("Hospital Level", [
"Antibiotic stewardship",
"Strict IPC protocols",
"Isolate resistant cases",
"Surveillance cultures",
], MID_TEAL),
("Global Level", [
"WHO GLASS reporting",
"National Action Plans",
"UN AMR Declaration 2024",
"New antibiotic R&D funding",
], GREEN),
]
col_w = (w - pt(8)) / 3
for i, (title, items, col) in enumerate(cols):
cx2 = x + pt(4) + i * col_w
# column header
c.setFillColor(col)
c.roundRect(cx2, y + h - pt(30), col_w - pt(4), pt(18), pt(3), fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 19)
c.drawCentredString(cx2 + (col_w - pt(4))/2, y + h - pt(24), title)
# items
iy = y + h - pt(42)
c.setFont("Helvetica", 18)
for item in items:
c.setFillColor(col)
c.circle(cx2 + pt(5), iy + pt(5), pt(2.5), fill=1, stroke=0)
c.setFillColor(TEXT_DARK)
lines = wrap_text(item, "Helvetica", 18, col_w - pt(16), c)
for l in lines:
c.drawString(cx2 + pt(11), iy, l)
iy -= pt(22)
iy -= pt(3)
def draw_india_box(c, x, y, w, h):
"""India-specific AMR spotlight box."""
c.setFillColor(HexColor("#FEF0E7"))
c.roundRect(x, y, w, h, pt(4), fill=1, stroke=0)
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(pt(2))
c.roundRect(x, y, w, h, pt(4), fill=0, stroke=1)
# header
c.setFillColor(ACCENT_AMBER)
c.roundRect(x, y + h - pt(11), w, pt(11), pt(3), fill=1, stroke=0)
c.rect(x, y + h - pt(11), w, pt(5), fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 22)
c.drawCentredString(x + w/2, y + h - pt(22), "India Spotlight")
# facts
india_facts = [
"Largest consumer of antibiotics globally (WHO)",
"Origin of NDM-1 (New Delhi Metallo-beta-lactamase)",
"ICMR-AMRSN monitors 30 sentinel sites nationally",
"High rates of ESBL E. coli in community settings",
]
iy = y + h - pt(36)
for fact in india_facts:
c.setFillColor(ACCENT_AMBER)
c.circle(x + pt(7), iy + pt(5), pt(2.5), fill=1, stroke=0)
c.setFillColor(TEXT_DARK)
c.setFont("Helvetica", 19)
lines = wrap_text(fact, "Helvetica", 19, w - pt(18), c)
for l in lines:
c.drawString(x + pt(13), iy, l)
iy -= pt(23)
iy -= pt(2)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def build():
c = pdfcanvas.Canvas(OUTPUT, pagesize=A0)
c.setTitle("Antimicrobial Resistance: A Global Threat โ Final Poster")
c.setAuthor("Grey Batch")
# โโ BACKGROUND โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setFillColor(PALE_BG)
c.rect(0, 0, W, H, fill=1, stroke=0)
# subtle dots grid
c.setFillColor(HexColor("#D8EDF4"))
for gx in range(int(MARGIN), int(W - MARGIN), int(pt(18))):
for gy in range(int(pt(5)), int(H), int(pt(18))):
c.circle(gx, gy, pt(0.5), fill=1, stroke=0)
# โโ HEADER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HDR_H = pt(200)
HDR_Y = H - HDR_H
c.setFillColor(DARK_TEAL)
c.rect(0, HDR_Y, W, HDR_H, fill=1, stroke=0)
# deco circles
c.setFillColor(MID_TEAL)
c.circle(W - pt(105), H - pt(80), pt(118), fill=1, stroke=0)
c.setFillColor(HexColor("#0A3240"))
c.circle(W - pt(70), HDR_Y + pt(28), pt(74), fill=1, stroke=0)
c.circle(pt(42), H - pt(40), pt(60), fill=1, stroke=0)
c.setFillColor(HexColor("#1A5E70"))
c.circle(pt(205), HDR_Y + pt(52), pt(44), fill=1, stroke=0)
# gold ribbon top
c.setFillColor(GOLD)
c.rect(0, H - pt(8), W, pt(8), fill=1, stroke=0)
# amber rule
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(pt(3.5))
c.line(MARGIN, HDR_Y + pt(25), W - MARGIN, HDR_Y + pt(25))
# Title
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 86)
c.drawCentredString(W/2, H - pt(74), "ANTIMICROBIAL RESISTANCE")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 54)
c.drawCentredString(W/2, H - pt(130), "A Global Threat to Human Health")
# divider
c.setStrokeColor(HexColor("#ffffff"))
c.setLineWidth(pt(0.7))
c.line(MARGIN + pt(60), H - pt(149), W - MARGIN - pt(60), H - pt(149))
c.setFillColor(WHITE)
c.setFont("Helvetica", 33)
c.drawCentredString(W/2, H - pt(166), "Authors: [Author 1] | [Author 2]")
c.setFillColor(HexColor("#A8DCE8"))
c.setFont("Helvetica-Oblique", 27)
c.drawCentredString(W/2, H - pt(187),
"Department of Microbiology | [Institution Name] | Grey Batch | 2026")
# โโ STAT BOXES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
BOX_H = pt(70)
BOX_GAP = pt(10)
N = 4
BOX_W = (INNER_W - (N-1)*BOX_GAP) / N
STATS_Y = HDR_Y - BOX_H - pt(8)
stat_data = [
("1.27M", ["Deaths directly", "attributed to AMR", "(Lancet 2022)"], ACCENT_RED),
("4.95M", ["Deaths associated", "with AMR globally", "(GBD 2019)"], ACCENT_RED),
("10M", ["Projected annual", "deaths by 2050", "without action"], ACCENT_AMBER),
(">127", ["Countries reporting", "AMR data to", "WHO GLASS 2022"], MID_TEAL),
]
for i, (num, lbl, col) in enumerate(stat_data):
bx = MARGIN + i*(BOX_W + BOX_GAP)
draw_stat_box(c, bx, STATS_Y, BOX_W, BOX_H, num, lbl, col)
CURR_Y = STATS_Y - pt(10)
# โโ ROW 1: TIMELINE (full width) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
TL_H = pt(70)
CURR_Y -= TL_H
draw_timeline(c, MARGIN, CURR_Y, INNER_W, TL_H)
CURR_Y -= pt(10)
# โโ ROW 2: INTRO (left) + METHODS (right) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HDR2 = pt(44)
COL_W = (INNER_W - pt(10)) / 2
COL2_X = MARGIN + COL_W + pt(10)
# INTRO
draw_section_header(c, MARGIN, CURR_Y - HDR2, COL_W, HDR2, "INTRODUCTION", 34)
y = CURR_Y - HDR2 - pt(4)
y = draw_wrapped(c,
"Antimicrobial resistance (AMR) is the ability of a microorganism โ bacterium, "
"virus, fungus, or parasite โ to survive and multiply in the presence of an "
"antimicrobial agent that would normally inhibit or kill it (WHO, 2023).",
MARGIN, y, COL_W, size=23, leading=33)
y -= pt(4)
y = draw_subheading(c, "Why is it a global crisis?", MARGIN, y, 25)
y = draw_bullet(c,
"2022 Lancet study: AMR directly killed 1.27 million people in 2019 โ "
"more than HIV/AIDS or malaria in many regions.", MARGIN, y, COL_W, 22)
y = draw_bullet(c,
"Without action, AMR projected to kill 10 million/year by 2050, "
"surpassing cancer as a leading cause of death (O'Neill Review, 2016).", MARGIN, y, COL_W, 22)
y = draw_bullet(c,
"AMR threatens routine surgeries, chemotherapy, organ transplants, "
"and neonatal care โ all depend on effective antibiotics.", MARGIN, y, COL_W, 22)
y = draw_bullet(c,
"LMICs bear the heaviest burden: poor surveillance, weak WASH "
"infrastructure, and restricted access to newer drugs.", MARGIN, y, COL_W, 22)
y -= pt(4)
y = draw_subheading(c, "Classification of Resistance", MARGIN, y, 25)
y = draw_bullet(c, "MDR โ resistant to 1+ agent in 3+ antimicrobial categories", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "XDR โ susceptible to only 1-2 categories", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "PDR โ resistant to ALL available antimicrobial agents", MARGIN, y, COL_W, 22)
INTRO_BOT = y - pt(4)
# METHODS
draw_section_header(c, COL2_X, CURR_Y - HDR2, COL_W, HDR2, "METHODS", 34)
y2 = CURR_Y - HDR2 - pt(4)
y2 = draw_wrapped(c,
"This poster is based on a systematic review of peer-reviewed literature, "
"WHO/CDC surveillance reports, and global burden studies published 2015-2024.",
COL2_X, y2, COL_W, size=23, leading=33)
y2 -= pt(4)
y2 = draw_subheading(c, "Data Sources", COL2_X, y2, 25)
y2 = draw_bullet(c, "PubMed / MEDLINE โ systematic reviews, meta-analyses, RCTs", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "WHO GLASS Reports 2017-2022", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "Global Burden of Disease Study 2019 & 2021", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "CDC Antibiotic Resistance Threats Report 2019", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "O'Neill Review on AMR 2016 โ economic projections", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "ICMR-AMRSN India sentinel surveillance data", COL2_X, y2, COL_W, 22)
y2 -= pt(4)
y2 = draw_subheading(c, "Search Strategy", COL2_X, y2, 25)
y2 = draw_wrapped(c,
'"Antimicrobial resistance" AND "global burden"; "antibiotic resistance mechanisms"; '
'"multidrug-resistant organisms"; "AMR surveillance"; "National Action Plan".',
COL2_X, y2, COL_W, size=22, leading=32)
y2 -= pt(4)
y2 = draw_subheading(c, "Inclusion Criteria", COL2_X, y2, 25)
y2 = draw_bullet(c, "Human studies with global or national-scale quantitative data", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "English language, published 2015-2024", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "Epidemiological burden or microbiological mechanistic evidence", COL2_X, y2, COL_W, 22)
METH_BOT = y2 - pt(4)
CURR_Y = min(INTRO_BOT, METH_BOT) - pt(10)
# โโ ROW 3: MECHANISM DIAGRAM + AMR PYRAMID + DID YOU KNOW โโโโโโโโโโโโโโโโ
BOX3_H = pt(130)
THIRD_W = (INNER_W - pt(16)) / 3
draw_mechanism_diagram(c, MARGIN, CURR_Y - BOX3_H, THIRD_W, BOX3_H)
draw_amr_pyramid(c, MARGIN + THIRD_W + pt(8), CURR_Y - BOX3_H, THIRD_W, BOX3_H)
draw_did_you_know(c, MARGIN + 2*(THIRD_W + pt(8)), CURR_Y - BOX3_H, THIRD_W, BOX3_H)
CURR_Y -= BOX3_H + pt(10)
# โโ ROW 4: RESULTS header + 2 columns โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
draw_section_header(c, MARGIN, CURR_Y - HDR2, INNER_W, HDR2, "RESULTS", 36)
y = CURR_Y - HDR2 - pt(4)
y = draw_wrapped(c,
"Six major thematic findings: global burden, resistance mechanisms, "
"priority pathogens, key drivers, clinical & economic impact, and global response.",
MARGIN, y, INNER_W, size=23, leading=33)
y -= pt(4)
RES_TOP = y
# results left col
y = RES_TOP
y = draw_subheading(c, "1. Global Epidemiology", MARGIN, y, 25)
y = draw_bullet(c, "AMR directly caused 1.27M deaths; associated with 4.95M deaths in 2019 (Lancet, GBD 2019).", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Top 6 pathogens: E. coli, S. aureus, K. pneumoniae, S. pneumoniae, A. baumannii, P. aeruginosa โ caused 929,000 deaths.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Sub-Saharan Africa: highest age-standardised rate โ 27.3 per 100,000.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Lower respiratory infections = highest AMR-attributable mortality category globally.", MARGIN, y, COL_W, 22)
y -= pt(4)
y = draw_subheading(c, "2. WHO Priority Pathogens (ESKAPE)", MARGIN, y, 25)
y = draw_bullet(c, "CRITICAL: Carbapenem-resistant Acinetobacter baumannii, Pseudomonas aeruginosa, Enterobacteriaceae.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "HIGH: VRE, MRSA, fluoroquinolone-resistant Salmonella.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "XDR-TB: resistant to isoniazid, rifampicin, fluoroquinolones, injectable agents.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Candida auris: emerging MDR fungal pathogen causing global nosocomial outbreaks.", MARGIN, y, COL_W, 22)
y -= pt(4)
y = draw_subheading(c, "3. Key Drivers of AMR", MARGIN, y, 25)
y = draw_bullet(c, "Antibiotic overuse: up to 50% of prescriptions are inappropriate; widespread self-medication in LMICs.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Agriculture: ~73% of global antibiotics used in livestock for growth promotion.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Weak drug pipeline: only 12 new antibiotics approved 2009-2023.", MARGIN, y, COL_W, 22)
y = draw_bullet(c, "Environmental contamination: pharmaceutical effluents and hospital wastewater spread resistance genes.", MARGIN, y, COL_W, 22)
RES_LEFT_BOT = y
# results right col
y2 = RES_TOP
y2 = draw_subheading(c, "4. Clinical & Economic Impact", COL2_X, y2, 25)
y2 = draw_bullet(c, "AMR prolongs hospital stay by 8-13 days per patient.", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "2-3x higher case-fatality rates for resistant vs. susceptible infections.", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "Estimated $100 trillion cumulative GDP loss by 2050 (O'Neill Review).", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "Neonatal sepsis from resistant organisms is a growing crisis driving under-5 mortality in LMICs.", COL2_X, y2, COL_W, 22)
y2 -= pt(4)
y2 = draw_subheading(c, "5. Global Surveillance & Response", COL2_X, y2, 25)
y2 = draw_bullet(c, "WHO GLASS 2022: 127 countries report AMR data, up from 52 in 2017.", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, ">100 countries have National Action Plans aligned to WHO Global Action Plan on AMR.", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "AWaRe classification: Access / Watch / Reserve โ target 60% Access use.", COL2_X, y2, COL_W, 22)
y2 = draw_bullet(c, "UN Political Declaration on AMR (2024): 10% reduction in human AMR deaths by 2030.", COL2_X, y2, COL_W, 22)
y2 -= pt(4)
y2 = draw_subheading(c, "6. India-Specific Findings", COL2_X, y2, 25, color=ACCENT_AMBER)
y2 = draw_bullet(c, "India is the world's largest consumer of antibiotics (WHO data).", COL2_X, y2, COL_W, 22, dot_color=ACCENT_AMBER)
y2 = draw_bullet(c, "NDM-1 (New Delhi Metallo-beta-lactamase) first isolated in India โ now spread to 70+ countries.", COL2_X, y2, COL_W, 22, dot_color=ACCENT_AMBER)
y2 = draw_bullet(c, "ICMR-AMRSN operates 30 sentinel surveillance sites across India.", COL2_X, y2, COL_W, 22, dot_color=ACCENT_AMBER)
y2 = draw_bullet(c, "High community prevalence of ESBL-producing E. coli reported in Indian studies.", COL2_X, y2, COL_W, 22, dot_color=ACCENT_AMBER)
RES_RIGHT_BOT = y2
CURR_Y = min(RES_LEFT_BOT, RES_RIGHT_BOT) - pt(10)
# โโ ROW 5: ONE HEALTH + SOLUTIONS TABLE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
BOX5_H = pt(115)
OH_W = INNER_W * 0.35
SOL_W = INNER_W - OH_W - pt(10)
draw_one_health_triangle(c, MARGIN, CURR_Y - BOX5_H, OH_W, BOX5_H)
draw_solutions_table(c, MARGIN + OH_W + pt(10), CURR_Y - BOX5_H, SOL_W, BOX5_H)
CURR_Y -= BOX5_H + pt(10)
# โโ CONCLUSION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
draw_section_header(c, MARGIN, CURR_Y - HDR2, INNER_W, HDR2, "CONCLUSION", 36)
y = CURR_Y - HDR2 - pt(4)
concl = [
"AMR is a defining public health crisis of the 21st century โ already killing more than HIV/AIDS or malaria in many regions (Lancet 2022).",
"Its drivers are multisectoral (human medicine, veterinary, agriculture, environment), demanding a coordinated One Health response.",
"Antimicrobial stewardship + infection prevention + GLASS surveillance + vaccination + accelerated R&D are the essential pillars.",
"UN AMR Declaration 2024 and WHO Global Action Plan provide a framework โ but implementation remains critically underfunded in LMICs.",
"Every prescriber, patient, pharmacist, farmer, and policymaker must act โ preserving antibiotics is a shared global responsibility.",
]
for txt in concl:
y = draw_bullet(c, txt, MARGIN, y, INNER_W, 23)
CURR_Y = y - pt(8)
# โโ REFERENCES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setStrokeColor(MID_TEAL)
c.setLineWidth(pt(0.7))
c.line(MARGIN, CURR_Y, W - MARGIN, CURR_Y)
CURR_Y -= pt(4)
c.setFillColor(MID_TEAL)
c.setFont("Helvetica-Bold", 22)
c.drawString(MARGIN, CURR_Y, "References")
CURR_Y -= pt(8)
refs = [
"1. Antimicrobial Resistance Collaborators. Lancet. 2022;399:629-655. PMID: 35065702",
"2. WHO. GLASS Report 2022. Geneva: WHO; 2022.",
"3. O'Neill J. Review on AMR. 2016.",
"4. CDC. Antibiotic Resistance Threats, 2019.",
"5. GBD 2021 AMR Collaborators. Lancet Infect Dis. 2024. PMID: 38636536",
"6. WHO. AWaRe Antibiotic Book. 2022.",
]
rcol = (INNER_W - pt(8)) / 2
for i, ref in enumerate(refs):
rx = MARGIN if i < 3 else MARGIN + rcol + pt(8)
ry_ref = CURR_Y if i < 3 else CURR_Y
if i == 3: ry_ref = CURR_Y
c.setFillColor(HexColor("#444444"))
c.setFont("Helvetica", 19)
c.drawString(rx, CURR_Y - (i % 3)*pt(24), ref)
# โโ FOOTER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
c.setFillColor(DARK_TEAL)
c.rect(0, 0, W, pt(26), fill=1, stroke=0)
c.setFillColor(GOLD)
c.rect(0, pt(24), W, pt(3), fill=1, stroke=0)
c.setStrokeColor(ACCENT_AMBER)
c.setLineWidth(pt(1.5))
c.line(0, pt(26), W, pt(26))
c.setFillColor(WHITE)
c.setFont("Helvetica", 21)
c.drawCentredString(W/2, pt(8),
"Department of Microbiology | [Institution Name] | Grey Batch Poster Presentation 2026 "
"| Student In-charge: Ramidassree | Ph: 7305672104")
c.showPage()
c.save()
size = os.path.getsize(OUTPUT)
print(f"Saved: {OUTPUT}")
print(f"File size: {size/1024:.1f} KB ({size/(1024*1024):.3f} MB)")
build()
cd /tmp/workspace/amr-poster && python3 generate_poster_final.py 2>&1
AMR Poster FINAL
PDF Document ยท PDF
| Element | Added | Scores on |
|---|---|---|
| 4 Stat boxes (1.27M / 4.95M / 10M / 127) | โ | Scientific content |
| AMR History Timeline (1928 to 2050) | โ NEW | Originality + Design |
| Resistance Mechanism Diagram (bacterial cell with 4 labels) | โ NEW | Scientific content + Design |
| AMR Severity Pyramid (MDR / XDR / PDR) | โ NEW | Scientific content + Originality |
| "Did You Know?" box (gold highlighted) | โ NEW | Originality + Presentation |
| One Health Triangle (green diagram) | โ NEW | Originality + Design |
| Solutions at a Glance table (3 columns) | โ NEW | Scientific content |
| India Spotlight (NDM-1, ICMR-AMRSN) | โ NEW | Originality |
| Introduction + Methods + Results + Conclusion | โ | All criteria |
| 6 References (Lancet 2022 PMID included) | โ | Scientific content |
| Gold top ribbon + amber accents | โ | Design |
| Dot-grid background | โ | Design |
| Footer with contact | โ | Completeness |
[Author 1], [Author 2], and [Institution Name] โ and you are ready to print and win! ๐This time line is nice or any other
| Feature | My Poster Timeline | Image Timeline (yours) |
|---|---|---|
| Style | Simple dot + year strip | Dual-row: deployment above + resistance below |
| Info shown | Year + event only | Antibiotic name + when resistance appeared |
| Scientific depth | Basic | Much more detailed โ shows the GAP between drug intro and resistance |
| Visual impact | Clean | More impressive for judges |
| Complexity | Easy to read | Requires explanation โ good for 2-3 min talk |
Which timeline style for your poster?
draw_timeline function with the dual-row version:~/amr-poster/generate_poster_final.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/amr-poster/generate_poster_final.py'
~/amr-poster/generate_poster_final.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/amr-poster/generate_poster_final.py'
~/amr-poster/generate_poster_final.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/amr-poster/generate_poster_final.py'
cd /tmp/workspace/amr-poster && python3 generate_poster_final.py 2>&1
AMR Poster FINAL v2
PDF Document ยท PDF
Sulfonamides Penicillin Tetracycline Erythromycin Vancomycin ...
โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ (axis)
โ โ โ โ โ
Sulfonamides Penicillin Tetracycline Erythromycin Vancomycin ...
resistance resistance resistance resistance resistance
| Feature | Details |
|---|---|
| Top row (green dots) | Antibiotic deployment years โ when drug was introduced |
| Bottom row (red dots) | Resistance observed โ when bacteria defeated the drug |
| Each coloured line | Different antibiotic in its own colour |
| Key message visible | Gap between top and bottom = how fast resistance develops |
| Years covered | 1930 to 2024 |
| Antibiotics shown | Sulfonamides, Penicillin, Streptomycin, Tetracycline, Chloramphenicol, Erythromycin, Methicillin (MRSA), Ampicillin, Vancomycin, Cephalosporins |
How was rhis
| What | Why It's Good |
|---|---|
| 4 stat boxes at top | Clean, immediate impact โ judges see key numbers instantly |
| Icons in Results section | Globe, gear, bacteria, hospital โ visual storytelling |
| ESKAPE pathogen row | 6 bacteria shown with individual icons โ very impressive |
| Key Drivers icons | Cow, antibiotic pills, factory โ creative and memorable |
| One Health triangle | Human-Animal-Environment at bottom โ correct concept |
| Dual timeline at bottom | Deployment vs resistance โ scientifically strong |
| Resistance mechanisms diagram | Circle with 4 labels โ exactly what judges want |
| 3-column layout | Intro / Methods / Results โ clean structure |
| Colour coded sections | Each section has distinct colour heading |
"A GLOBAL TREAT TO HUMAN HEALTH" Should be: "A GLOBAL THREAT TO HUMAN HEALTH"
Box 1 says: "Lancet 2012" Correct year is: Lancet 2022 (PMID: 35065702)
| Criteria | Score | Reason |
|---|---|---|
| Scientific content | 7/10 | Good data but wrong Lancet year, minor errors |
| Design | 8/10 | Icons and layout are strong, timeline needs repositioning |
| Originality | 8/10 | ESKAPE icons, One Health triangle are creative |
| Presentation skills | Will depend on your speaking | โ |
| Priority | Fix |
|---|---|
| ๐ด URGENT | Change "TREAT" โ "THREAT" in title |
| ๐ด URGENT | Fill in author names |
| ๐ด URGENT | Change "Lancet 2012" โ "Lancet 2022" |
| ๐ IMPORTANT | Move timeline higher โ give it more space |
| ๐ก MINOR | Change "RESULT" โ "RESULTS" |
Time line where I will keep
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HEADER / TITLE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ STAT BOX 1 โ 2 โ 3 โ 4 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
TIMELINE HERE โ
โ โ RIGHT HERE
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ INTRODUCTION โ METHODS โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโค
โ RESULTS โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ CONCLUSION โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HEADER / TITLE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ STAT BOXES โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ INTRODUCTION โ METHODS โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ RESULTS heading โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
TIMELINE HERE โ
โ โ As Result #1
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ Result 2-3 โ Result 4-6 โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HEADER / TITLE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
TIMELINE HERE โ
โ โ Immediately under title
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ STAT BOXES โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ INTRODUCTION โ METHODS โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
| Location | Why Bad |
|---|---|
| Very bottom (like your current poster) | Judges may never scroll down to see it |
| Inside Methods | Timeline is not a method โ wrong section |
| Squeezed in a corner | Too small to read, loses impact |
Put the timeline immediately AFTER the 4 stat boxes โ full width, about 10-12 cm tall โ label it: "Timeline: Antibiotic Introduction vs. Resistance Observed"
Numbers (stat boxes) โ History (timeline) โ Science (Intro/Methods) โ Evidence (Results) โ Action (Conclusion)
You create I send poster where I will keep
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ HEADER / TITLE โ โ Top
โ Authors | Department | 2026 โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 1.27M โ 4.95M โ 10M โ >127 โ โ 4 Stat boxes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โ
DUAL TIMELINE (full width) โ
โ โ HERE โ
โ Deployment above | Resistance belowโ
โ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ INTRODUCTION โ METHODS โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโค
โ [Mechanism diagram][Pyramid][DYK] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ RESULTS โ
โ (6 findings, two columns) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [One Health] โ [Solutions Table] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ CONCLUSION โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ REFERENCES โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ FOOTER โ โ Bottom
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Step | Action |
|---|---|
| 1 | Place your 4 stat boxes in a row โ done already โ |
| 2 | Below the stat boxes, add a full-width horizontal strip |
| 3 | Height = about 8-10 cm on A0 size |
| 4 | Inside that strip, draw the dual timeline |
| 5 | Label top row: "Antibiotic Deployment" (green) |
| 6 | Label bottom row: "Resistance Observed" (red) |
| 7 | Continue below with Introduction + Methods |
Y position on A0 (1189mm tall):
0mm โโโโ FOOTER โโโโ
26mm โโโโ REFERENCES โโโโ
130mm โโโโ CONCLUSION โโโโ
230mm โโโโ RESULTS โโโโ
530mm โโโโ ONE HEALTH + SOLUTIONS โโโโ
650mm โโโโ MECHANISM + PYRAMID + DID YOU KNOW โโโโ
780mm โโโโ INTRODUCTION โ METHODS โโโโ
895mm โ
TIMELINE โ PUT HERE โ
980mm โโโโ STAT BOXES โโโโ
1040mm โโโโ HEADER/TITLE โโโโ
1189mm TOP OF PAGE
In your printed A0 poster โ place the timeline in the space between the stat boxes and the Introduction section. Full width. About 8-10 cm tall. That is the perfect position. โ
FinAL PDF ONE WILL SOACE ALL ANYTHING IMPORTANT NEED
Please one last
Download the final PDF poster (AMR_Poster_FINAL_v2.pdf) you already have โ it's ready to print