convert the file to 16:9 and refine as per tancon2026 guidelines
mkdir -p /tmp/workspace/tancon2026-poster && ls -la /tmp/workspace/attachments/d0a81def-4942-4984-9f06-d275d6b6fb9e/ && python3 -c " import pypdf r = pypdf.PdfReader('/tmp/workspace/attachments/d0a81def-4942-4984-9f06-d275d6b6fb9e/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages:', len(r.pages)) for i,p in enumerate(r.pages): print(i, p.mediabox, float(p.mediabox.width)/72, float(p.mediabox.height)/72) "
cd /tmp/workspace/tancon2026-poster && python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/attachments/d0a81def-4942-4984-9f06-d275d6b6fb9e/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') as pdf: p = pdf.pages[0] print('size', p.width, p.height) print('---TEXT---') print(p.extract_text()) print('---IMAGES---') for im in p.images: print(im['x0'], im['y0'], im['x1'], im['y1'], im.get('name')) print('---RECTS---') for r in p.rects[:20]: print(r['x0'], r['y0'], r['x1'], r['y1']) print('num rects', len(p.rects)) print('---LINES---', len(p.lines)) "
TANCON 2026 e-poster guidelines dimensions format
https://tancon2026hosur.com/abstract-submission.html
tancon2026hosur.com e-poster guidelines format 16:9
https://tancon2026hosur.com/index.html
tancon2026hosur.com "e-poster" size PDF upload instructions
mkdir -p /tmp/workspace/tancon2026-poster/output && cd /tmp/workspace/tancon2026-poster && cat > make_chart.py << 'EOF' import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt categories = ["High-priority", "Moderate-priority", "Low-priority"] counts = [5, 8, 11] colors = ["#D64550", "#F2A541", "#4C9F70"] fig, ax = plt.subplots(figsize=(3.6, 2.15), dpi=300) bars = ax.bar(categories, counts, color=colors, edgecolor="none", width=0.6) for b, c in zip(bars, counts): ax.text(b.get_x() + b.get_width()/2, b.get_height() + 0.3, str(c), ha="center", va="bottom", fontsize=11, fontweight="bold", color="#222222") ax.set_ylim(0, 13) ax.set_ylabel("No. of variants", fontsize=8.5) ax.set_title("Variant Priority Classification (N = 24)", fontsize=9.5, fontweight="bold", color="#123C69") ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) ax.tick_params(axis="x", labelsize=8.5) ax.tick_params(axis="y", labelsize=8) plt.tight_layout() plt.savefig("output/variant_chart.png", transparent=True) print("saved") EOF python3 make_chart.py
~/tancon2026-poster/build_poster.py
"""
TANCON 2026 E-Poster - 16:9 refined layout
Genotype-Guided Insights: In Silico Variant Prioritization and Levodopa Response
Correlation in Early-Onset Parkinson's Disease
"""
from reportlab.lib.pagesizes import landscape
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.platypus import (BaseDocTemplate, PageTemplate, Frame, Paragraph,
Spacer, Table, TableStyle, Image, FrameBreak, NextPageTemplate)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_JUSTIFY, TA_CENTER
PAGE_W, PAGE_H = 13.333 * inch, 7.5 * inch # 16:9
NAVY = colors.HexColor("#123C69")
TEAL = colors.HexColor("#1F6F8B")
LIGHT_BG = colors.HexColor("#F4F7F9")
RED = colors.HexColor("#D64550")
AMBER = colors.HexColor("#F2A541")
GREEN = colors.HexColor("#4C9F70")
DARK = colors.HexColor("#222222")
GRAY = colors.HexColor("#5A6B76")
# ---------- Styles ----------
title_style = ParagraphStyle("title", fontName="Helvetica-Bold", fontSize=17.5,
leading=20.5, textColor=colors.white, alignment=TA_LEFT)
authors_style = ParagraphStyle("authors", fontName="Helvetica-Bold", fontSize=10.5,
leading=13, textColor=colors.white, alignment=TA_LEFT)
affil_style = ParagraphStyle("affil", fontName="Helvetica", fontSize=9,
leading=11, textColor=colors.HexColor("#D8E4EC"), alignment=TA_LEFT)
badge_conf = ParagraphStyle("badge", fontName="Helvetica-Bold", fontSize=11,
leading=13, textColor=NAVY, alignment=TA_CENTER)
badge_sub = ParagraphStyle("badgesub", fontName="Helvetica", fontSize=7.3,
leading=9, textColor=NAVY, alignment=TA_CENTER)
sec_head_style = ParagraphStyle("sechead", fontName="Helvetica-Bold", fontSize=11.3,
leading=13, textColor=colors.white, alignment=TA_LEFT,
leftIndent=2)
body_style = ParagraphStyle("body", fontName="Helvetica", fontSize=8.9, leading=11.6,
textColor=DARK, alignment=TA_JUSTIFY, spaceAfter=5)
bullet_style = ParagraphStyle("bullet", fontName="Helvetica", fontSize=8.9, leading=11.6,
textColor=DARK, alignment=TA_LEFT, leftIndent=9,
bulletIndent=0, spaceAfter=4.5)
gene_style = ParagraphStyle("gene", fontName="Helvetica-Bold", fontSize=9.2, leading=12,
textColor=NAVY, alignment=TA_LEFT, spaceAfter=2)
kw_label_style = ParagraphStyle("kwlabel", fontName="Helvetica-Bold", fontSize=8.7,
textColor=NAVY, alignment=TA_LEFT)
kw_style = ParagraphStyle("kw", fontName="Helvetica", fontSize=8.7, leading=11,
textColor=DARK, alignment=TA_LEFT)
def sec_header(text, color=TEAL):
t = Table([[Paragraph(text, sec_head_style)]], colWidths=[None])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), color),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
]))
return t
# ---------- Content ----------
TITLE = ("Genotype-Guided Insights: In Silico Variant Prioritization and Levodopa "
"Response Correlation in Early-Onset Parkinson's Disease")
AUTHORS = ("Rajasekhar Naidu Y<super rise=2 size=6>1</super> (Presenting Author), "
"Vijayashankar P<super rise=2 size=6>1</super>, Anitha Saminathan<super rise=2 size=6>1</super>, "
"Indhumathi Nagarathinam<super rise=2 size=6>2</super>")
AFFIL = ("<super rise=2 size=6>1</super>Apollo Hospital, Chennai "
"<super rise=2 size=6>2</super>Sri Ramachandra Institute of Higher Education and Research, Chennai")
INTRO = ("Parkinson's disease (PD) is a progressive neurodegenerative disorder with considerable "
"clinical and genetic heterogeneity. Although whole-exome sequencing (WES) has identified "
"numerous PD-associated variants, many remain classified as <b>variants of uncertain "
"significance (VUS)</b>, limiting clinical interpretation.<br/><br/>"
"<b>Aim:</b> To evaluate the pathogenic potential of missense VUS using an integrated "
"in silico framework and explore genotype-phenotype correlations, including levodopa "
"responsiveness, in early-onset PD.")
METHODS = ("Whole-exome sequencing was performed in <b>50</b> clinically diagnosed PD patients. "
"<b>24 missense VUS</b> identified in <b>17 patients</b> across <b>12 PD-associated genes</b> "
"were analyzed using:<br/>"
"• Pathogenicity prediction algorithms<br/>"
"• Structural modeling & stability assessment<br/>"
"• Functional annotation tools<br/><br/>"
"Variants were classified as high-, moderate-, or low-priority. High-priority variants "
"underwent <b>molecular docking</b> with FDA-approved anti-Parkinsonian drugs. Clinical "
"features (age at onset, motor/non-motor symptoms, cognitive status, levodopa response) "
"were correlated with genetic findings.")
RESULTS_BULLETS = [
"Of 24 VUS: <b>5 high-priority</b>, <b>8 moderate-priority</b>, <b>11 low-priority</b>",
"High-priority carriers showed <b>earlier disease onset</b>, greater phenotypic heterogeneity, and higher non-motor symptom burden",
"<b>Variable levodopa responsiveness</b> observed among carriers of prioritized variants",
]
GENE_CALLOUT = ("<b>Key genes with high pathogenic potential & structural destabilization:</b> "
"DNAJC6, LRRK2, PLXNA4, DCTN1")
CONCLUSION = ("This integrated in silico framework effectively prioritized potentially pathogenic "
"missense VUS and revealed clinically relevant associations between genetic variation, "
"phenotypic heterogeneity, and therapeutic response.<br/><br/>"
"Findings suggest specific variants may contribute to differences in disease severity, "
"symptom profile, and dopaminergic therapy responsiveness — supporting "
"<b>genotype-guided patient stratification</b> in early-onset Parkinson's disease.")
KEYWORDS = ("Early-onset Parkinson's disease • VUS • in silico prediction • "
"genotype-phenotype correlation • molecular docking • levodopa response")
# ---------- Header / footer drawing ----------
def draw_header_footer(canv, doc):
canv.saveState()
# Header band
canv.setFillColor(NAVY)
canv.rect(0, PAGE_H - 1.05 * inch, PAGE_W, 1.05 * inch, stroke=0, fill=1)
# thin accent line under header
canv.setFillColor(TEAL)
canv.rect(0, PAGE_H - 1.05 * inch - 0.045 * inch, PAGE_W, 0.045 * inch, stroke=0, fill=1)
# Conference badge top-right
badge_w, badge_h = 1.75 * inch, 0.85 * inch
bx, by = PAGE_W - badge_w - 0.18 * inch, PAGE_H - badge_h - 0.10 * inch
canv.setFillColor(colors.white)
canv.roundRect(bx, by, badge_w, badge_h, 6, stroke=0, fill=1)
canv.setFillColor(NAVY)
canv.setFont("Helvetica-Bold", 12.5)
canv.drawCentredString(bx + badge_w / 2, by + badge_h - 0.28 * inch, "TANCON 2026")
canv.setFont("Helvetica", 6.6)
canv.drawCentredString(bx + badge_w / 2, by + badge_h - 0.44 * inch, "14th Annual Conference of TN &")
canv.drawCentredString(bx + badge_w / 2, by + badge_h - 0.56 * inch, "Pondicherry Association of Neurologists")
canv.setFont("Helvetica-Bold", 7.2)
canv.drawCentredString(bx + badge_w / 2, by + badge_h - 0.74 * inch, "E-POSTER \u2022 ORIGINAL RESEARCH")
# Footer band
canv.setFillColor(LIGHT_BG)
canv.rect(0, 0, PAGE_W, 0.42 * inch, stroke=0, fill=1)
canv.setFillColor(TEAL)
canv.rect(0, 0.42 * inch, PAGE_W, 0.02 * inch, stroke=0, fill=1)
canv.restoreState()
# ---------- Document / frames ----------
doc = BaseDocTemplate("output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf",
pagesize=(PAGE_W, PAGE_H),
leftMargin=0, rightMargin=0, topMargin=0, bottomMargin=0)
MARGIN = 0.22 * inch
GUTTER = 0.14 * inch
TOP_Y = 0.55 * inch # bottom of footer + spacer
HEADER_H = 1.05 * inch
BODY_TOP = PAGE_H - HEADER_H - 0.06 * inch
BODY_BOTTOM = 0.55 * inch
BODY_H = BODY_TOP - BODY_BOTTOM
col_w = (PAGE_W - 2 * MARGIN - 3 * GUTTER) / 4
frame_header = Frame(MARGIN, PAGE_H - HEADER_H, PAGE_W - 2*MARGIN - 1.95*inch, HEADER_H,
leftPadding=6, rightPadding=6, topPadding=6, bottomPadding=6, showBoundary=0)
frames_body = []
for i in range(4):
x = MARGIN + i * (col_w + GUTTER)
f = Frame(x, BODY_BOTTOM, col_w, BODY_H,
leftPadding=4, rightPadding=4, topPadding=4, bottomPadding=4, showBoundary=0)
frames_body.append(f)
frame_footer = Frame(MARGIN, 0.03*inch, PAGE_W - 2*MARGIN, 0.36*inch,
leftPadding=4, rightPadding=4, topPadding=2, bottomPadding=2, showBoundary=0)
template = PageTemplate(id="poster",
frames=[frame_header] + frames_body + [frame_footer],
onPage=draw_header_footer)
doc.addPageTemplates([template])
story = []
# ---- header content ----
story.append(Paragraph(TITLE, title_style))
story.append(Spacer(1, 5))
story.append(Paragraph(AUTHORS, authors_style))
story.append(Spacer(1, 2))
story.append(Paragraph(AFFIL, affil_style))
story.append(FrameBreak())
# ---- Column 1: Introduction ----
story.append(sec_header("INTRODUCTION", NAVY))
story.append(Spacer(1, 6))
story.append(Paragraph(INTRO, body_style))
story.append(FrameBreak())
# ---- Column 2: Materials and Methods ----
story.append(sec_header("MATERIALS & METHODS", TEAL))
story.append(Spacer(1, 6))
story.append(Paragraph(METHODS, body_style))
story.append(FrameBreak())
# ---- Column 3: Results ----
story.append(sec_header("RESULTS", colors.HexColor("#B34756")))
story.append(Spacer(1, 6))
for b in RESULTS_BULLETS:
story.append(Paragraph("• " + b, bullet_style))
story.append(Spacer(1, 4))
story.append(Image("output/variant_chart.png", width=col_w - 8, height=(col_w - 8) * (2.15/3.6)))
story.append(Spacer(1, 4))
gene_box = Table([[Paragraph(GENE_CALLOUT, ParagraphStyle("gc", parent=body_style, fontSize=8.3,
textColor=NAVY, alignment=TA_LEFT))]],
colWidths=[col_w - 8])
gene_box.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), colors.HexColor("#EAF1F5")),
("BOX", (0, 0), (-1, -1), 0.75, TEAL),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
]))
story.append(gene_box)
story.append(FrameBreak())
# ---- Column 4: Conclusion ----
story.append(sec_header("CONCLUSION", GREEN))
story.append(Spacer(1, 6))
story.append(Paragraph(CONCLUSION, body_style))
story.append(FrameBreak())
# ---- Footer: keywords ----
kw_table = Table([[Paragraph("KEYWORDS:", kw_label_style), Paragraph(KEYWORDS, kw_style)]],
colWidths=[0.85*inch, None])
kw_table.setStyle(TableStyle([
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (0, 0), 0),
("TOPPADDING", (0, 0), (-1, -1), 2),
("BOTTOMPADDING", (0, 0), (-1, -1), 2),
]))
story.append(kw_table)
doc.build(story)
print("PDF built.")
cd /tmp/workspace/tancon2026-poster && python3 build_poster.py 2>&1 | tail -50
cd /tmp/workspace/tancon2026-poster && python3 -c " import pypdf r = pypdf.PdfReader('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages', len(r.pages)) p = r.pages[0] print('size', p.mediabox, float(p.mediabox.width)/72, float(p.mediabox.height)/72) " python3 -c "import fitz; print('pymupdf available')" 2>&1 | tail -3
cd /tmp/workspace/tancon2026-poster && python3 -c " import pdfplumber with pdfplumber.open('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') as pdf: for i,p in enumerate(pdf.pages): print('PAGE', i, p.width, p.height) print(repr(p.extract_text())[:800]) print('----') "
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
cd /tmp/workspace/tancon2026-poster && python3 build_poster.py && python3 -c " import pypdf r = pypdf.PdfReader('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages', len(r.pages)) p=r.pages[0] print('size', float(p.mediabox.width)/72, float(p.mediabox.height)/72) "
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
cd /tmp/workspace/tancon2026-poster && python3 build_poster.py && python3 -c " import pypdf r = pypdf.PdfReader('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages', len(r.pages)) "
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
~/tancon2026-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tancon2026-poster/build_poster.py'
cd /tmp/workspace/tancon2026-poster && python3 build_poster.py && python3 -c " import pypdf r = pypdf.PdfReader('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages', len(r.pages)) p=r.pages[0] print('size_in', float(p.mediabox.width)/72, float(p.mediabox.height)/72) " && ls -la output/
TANCON2026 EPoster PD GenomeToPhenome 16x9
PDF Document · PDF
can u make the above poster in this form
cd /tmp/workspace/tancon2026-poster && python3 -c " import pypdf r = pypdf.PdfReader('/tmp/workspace/attachments/d0a81def-4942-4984-9f06-d275d6b6fb9e/TANCON2026_EPoster_AdaptiveDBS_Revised 2_16x9.pdf') print('pages', len(r.pages)) p = r.pages[0] print(p.mediabox, float(p.mediabox.width)/72, float(p.mediabox.height)/72) "
~/tancon2026-poster/build_poster_v2.py
"""
TANCON 2026 E-Poster - matched to reference template
(Adaptive DBS poster layout style) applied to the
Genotype-Guided Insights PD/VUS study.
"""
from reportlab.lib.pagesizes import landscape
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.pdfgen import canvas as canvas_mod
from reportlab.platypus import (BaseDocTemplate, PageTemplate, Frame, Paragraph,
Spacer, Table, TableStyle, FrameBreak)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_JUSTIFY, TA_CENTER
PAGE_W, PAGE_H = 960, 540 # 16:9 in points (13.333in x 7.5in)
NAVY = colors.HexColor("#0B2545")
GOLD = colors.HexColor("#F2A93B")
WHITE = colors.white
BLUE_BRD = colors.HexColor("#2E75B6")
BLUE_BG = colors.HexColor("#EAF3FB")
TEAL_BRD = colors.HexColor("#2FA88E")
TEAL_BG = colors.HexColor("#EAF7F3")
GRAY_BRD = colors.HexColor("#8C97A6")
GRAY_BG = colors.HexColor("#F0F3F6")
RED_BRD = colors.HexColor("#C0392B")
RED_BG = colors.HexColor("#FBEAEA")
DARK = colors.HexColor("#1B1B1B")
# ---------------- layout geometry ----------------
MARGIN = 20
GUTTER = 16
HEADER_H = 92
FOOTER_H = 12
col_w = (PAGE_W - 2 * MARGIN - GUTTER) / 2
content_top = PAGE_H - HEADER_H
content_bottom = FOOTER_H
box_gap = 10
box_h = (content_top - content_bottom - box_gap) / 2
LEFT_X = MARGIN
RIGHT_X = MARGIN + col_w + GUTTER
TOP_BOX_Y = content_bottom + box_h + box_gap # y (bottom) of top box
BOTTOM_BOX_Y = content_bottom # y (bottom) of bottom box
HBAR_H = 20 # section header bar height
boxes = {
"intro": dict(x=LEFT_X, y=TOP_BOX_Y, w=col_w, h=box_h, border=BLUE_BRD, bg=BLUE_BG, hdr=NAVY, title="INTRODUCTION"),
"methods":dict(x=LEFT_X, y=BOTTOM_BOX_Y, w=col_w, h=box_h, border=TEAL_BRD, bg=TEAL_BG, hdr=NAVY, title="MATERIALS AND METHODS"),
"results":dict(x=RIGHT_X, y=TOP_BOX_Y, w=col_w, h=box_h, border=GRAY_BRD, bg=GRAY_BG, hdr=NAVY, title="RESULTS"),
"conclusion":dict(x=RIGHT_X, y=BOTTOM_BOX_Y, w=col_w, h=box_h, border=RED_BRD, bg=RED_BG, hdr=RED_BRD, title="CONCLUSION"),
}
# ---------------- styles ----------------
title_style = ParagraphStyle("title", fontName="Helvetica-Bold", fontSize=14.5,
leading=17.5, textColor=WHITE, alignment=TA_CENTER)
authors_style = ParagraphStyle("authors", fontName="Helvetica-Bold", fontSize=10.5,
leading=13, textColor=GOLD, alignment=TA_CENTER)
affil_style = ParagraphStyle("affil", fontName="Helvetica-Oblique", fontSize=8.8,
leading=11, textColor=colors.HexColor("#E7ECF2"), alignment=TA_CENTER)
body_style = ParagraphStyle("body", fontName="Helvetica", fontSize=9.3, leading=12.1,
textColor=DARK, alignment=TA_JUSTIFY, spaceAfter=6)
bullet_style = ParagraphStyle("bullet", fontName="Helvetica", fontSize=9.1, leading=11.8,
textColor=DARK, alignment=TA_LEFT, leftIndent=10,
bulletIndent=0, spaceAfter=4.5)
gene_style = ParagraphStyle("gene", fontName="Helvetica-Bold", fontSize=8.7, leading=11,
textColor=NAVY, alignment=TA_LEFT, spaceAfter=0)
# ---------------- content ----------------
TITLE = ("Genotype-Guided Insights: In Silico Variant Prioritization and Levodopa "
"Response Correlation in Early-Onset Parkinson's Disease")
AUTHORS = ("Rajasekhar Naidu Y<super rise=2 size=6>1</super> (Presenting Author), "
"Vijayashankar P<super rise=2 size=6>1</super>, Anitha Saminathan<super rise=2 size=6>1</super>, "
"Indhumathi Nagarathinam<super rise=2 size=6>2</super>")
AFFIL = ("<super rise=2 size=6>1</super>Apollo Hospital, Chennai "
"<super rise=2 size=6>2</super>Sri Ramachandra Institute of Higher Education and Research, Chennai")
INTRO = ("Parkinson's disease (PD) is a progressive neurodegenerative disorder with considerable "
"clinical and genetic heterogeneity. Although whole-exome sequencing (WES) has identified "
"numerous PD-associated variants, many remain classified as variants of uncertain "
"significance (VUS), limiting clinical interpretation.<br/><br/>"
"This study aimed to evaluate the pathogenic potential of missense VUS using an integrated "
"in silico framework and explore genotype-phenotype correlations, including levodopa "
"responsiveness, in early-onset PD.")
METHODS = ("Whole-exome sequencing was performed in 50 clinically diagnosed PD patients. Twenty-four "
"missense VUS identified in 17 patients across 12 PD-associated genes were analyzed using "
"pathogenicity prediction, structural modeling, stability assessment, and functional "
"annotation tools.<br/><br/>"
"Variants were classified as high-, moderate-, or low-priority. High-priority variants "
"underwent molecular docking with FDA-approved anti-Parkinsonian drugs. Clinical features "
"(age at onset, motor/non-motor symptoms, cognitive status, levodopa response) were "
"correlated with genetic findings.")
RESULTS_BULLETS = [
"5 variants classified as high-priority, 8 as moderate-priority, and 11 as low-priority (N = 24)",
"Variants in DNAJC6, LRRK2, PLXNA4, and DCTN1 showed high pathogenic potential and structural destabilization",
"High-priority variant carriers showed earlier disease onset, greater phenotypic heterogeneity, and higher non-motor symptom burden",
"Variable levodopa responsiveness observed among carriers of prioritized variants",
]
CONCLUSION = ("This integrated in silico framework effectively prioritized potentially pathogenic "
"missense VUS and revealed clinically relevant associations between genetic variation, "
"phenotypic heterogeneity, and therapeutic response.<br/><br/>"
"Findings suggest specific variants may contribute to differences in disease severity, "
"symptom profile, and dopaminergic therapy responsiveness, supporting genotype-guided "
"patient stratification in early-onset Parkinson's disease.")
def sec_header_table(title, w, hdr_color):
style = ParagraphStyle("shead", fontName="Helvetica-Bold", fontSize=10.3,
leading=12, textColor=WHITE, alignment=TA_LEFT)
t = Table([[Paragraph("● " + title, style)]], colWidths=[w])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), hdr_color),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
]))
return t
def variant_table(w):
data = [["VARIANT PRIORITY CLASSIFICATION (N = 24)", ""],
["High-priority", "5"],
["Moderate-priority", "8"],
["Low-priority", "11"]]
t = Table(data, colWidths=[w * 0.72, w * 0.28])
t.setStyle(TableStyle([
("SPAN", (0, 0), (1, 0)),
("BACKGROUND", (0, 0), (-1, 0), NAVY),
("TEXTCOLOR", (0, 0), (-1, 0), WHITE),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 8.3),
("ALIGN", (0, 0), (-1, 0), "CENTER"),
("FONTNAME", (0, 1), (0, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 8.6),
("FONTNAME", (1, 1), (1, -1), "Helvetica-Bold"),
("TEXTCOLOR", (1, 1), (1, -1), RED_BRD),
("ALIGN", (1, 1), (1, -1), "CENTER"),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.HexColor("#EAF3FB"), WHITE]),
("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#C7D3DE")),
("TOPPADDING", (0, 0), (-1, -1), 3),
("BOTTOMPADDING", (0, 0), (-1, -1), 3),
]))
return t
def gene_callout(w):
p = Paragraph("<b>High pathogenic potential & structural destabilization:</b> "
"DNAJC6, LRRK2, PLXNA4, DCTN1", gene_style)
t = Table([[p]], colWidths=[w])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), colors.HexColor("#FFF3D6")),
("BOX", (0, 0), (-1, -1), 0.75, GOLD),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
]))
return t
# ---------------- background drawing ----------------
def draw_background(canv, doc):
canv.saveState()
# header
canv.setFillColor(NAVY)
canv.rect(0, PAGE_H - HEADER_H, PAGE_W, HEADER_H, stroke=0, fill=1)
canv.setFillColor(GOLD)
canv.rect(0, PAGE_H - HEADER_H - 2.5, PAGE_W, 2.5, stroke=0, fill=1)
canv.setFillColor(RED_BRD)
canv.rect(0, PAGE_H - HEADER_H - 5.5, PAGE_W, 3, stroke=0, fill=1)
# boxes (rounded rect bg + border) then header bars on top
for key, b in boxes.items():
canv.setFillColor(b["bg"])
canv.setStrokeColor(b["border"])
canv.setLineWidth(1.6)
canv.roundRect(b["x"], b["y"], b["w"], b["h"], 8, stroke=1, fill=1)
# footer accent line
canv.setFillColor(NAVY)
canv.rect(0, 0, PAGE_W, 4, stroke=0, fill=1)
canv.setFillColor(GOLD)
canv.rect(0, 4, PAGE_W, 1.5, stroke=0, fill=1)
canv.restoreState()
# ---------------- document ----------------
doc = BaseDocTemplate("output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf",
pagesize=(PAGE_W, PAGE_H),
leftMargin=0, rightMargin=0, topMargin=0, bottomMargin=0)
frame_header = Frame(0, PAGE_H - HEADER_H, PAGE_W, HEADER_H,
leftPadding=20, rightPadding=20, topPadding=8, bottomPadding=10, showBoundary=0)
PAD = 10
frame_intro = Frame(boxes["intro"]["x"] + PAD, boxes["intro"]["y"] + PAD,
boxes["intro"]["w"] - 2*PAD, boxes["intro"]["h"] - 2*PAD,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0, showBoundary=0)
frame_methods = Frame(boxes["methods"]["x"] + PAD, boxes["methods"]["y"] + PAD,
boxes["methods"]["w"] - 2*PAD, boxes["methods"]["h"] - 2*PAD,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0, showBoundary=0)
frame_results = Frame(boxes["results"]["x"] + PAD, boxes["results"]["y"] + PAD,
boxes["results"]["w"] - 2*PAD, boxes["results"]["h"] - 2*PAD,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0, showBoundary=0)
frame_conclusion = Frame(boxes["conclusion"]["x"] + PAD, boxes["conclusion"]["y"] + PAD,
boxes["conclusion"]["w"] - 2*PAD, boxes["conclusion"]["h"] - 2*PAD,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0, showBoundary=0)
template = PageTemplate(id="poster",
frames=[frame_header, frame_intro, frame_methods, frame_results, frame_conclusion],
onPage=draw_background)
doc.addPageTemplates([template])
story = []
# header content
story.append(Paragraph(TITLE, title_style))
story.append(Spacer(1, 3))
story.append(Paragraph(AUTHORS, authors_style))
story.append(Spacer(1, 1))
story.append(Paragraph(AFFIL, affil_style))
story.append(FrameBreak())
inner_w = boxes["intro"]["w"] - 2*PAD
# INTRODUCTION
story.append(sec_header_table("INTRODUCTION", inner_w, NAVY))
story.append(Spacer(1, 5))
story.append(Paragraph(INTRO, body_style))
story.append(FrameBreak())
# MATERIALS AND METHODS
story.append(sec_header_table("MATERIALS AND METHODS", inner_w, NAVY))
story.append(Spacer(1, 5))
story.append(Paragraph(METHODS, body_style))
story.append(FrameBreak())
# RESULTS
story.append(sec_header_table("RESULTS", inner_w, NAVY))
story.append(Spacer(1, 5))
for b in RESULTS_BULLETS:
story.append(Paragraph("● " + b, bullet_style))
story.append(Spacer(1, 4))
story.append(variant_table(inner_w))
story.append(FrameBreak())
# CONCLUSION
story.append(sec_header_table("CONCLUSION", inner_w, RED_BRD))
story.append(Spacer(1, 5))
story.append(Paragraph(CONCLUSION, body_style))
doc.build(story)
print("PDF v2 built.")
cd /tmp/workspace/tancon2026-poster && mkdir -p output && python3 build_poster_v2.py && python3 -c " import pypdf r = pypdf.PdfReader('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') print('pages', len(r.pages)) p=r.pages[0] print('size_in', float(p.mediabox.width)/72, float(p.mediabox.height)/72) "
cd /tmp/workspace/tancon2026-poster && python3 -c " import pdfplumber with pdfplumber.open('output/TANCON2026_EPoster_PD_GenomeToPhenome_16x9.pdf') as pdf: p = pdf.pages[0] print(p.extract_text()) " ls -la output/
TANCON2026 EPoster PD GenomeToPhenome 16x9
PDF Document · PDF