diff --git a/manuscript/journal_revision/transformer_egnn/FIGURE1B_ARCHIVE_CHECK.json b/manuscript/journal_revision/transformer_egnn/FIGURE1B_ARCHIVE_CHECK.json new file mode 100644 index 000000000..1a0a07a1c --- /dev/null +++ b/manuscript/journal_revision/transformer_egnn/FIGURE1B_ARCHIVE_CHECK.json @@ -0,0 +1,50 @@ +{ + "display_preservation": { + "prior_displays": 62, + "current_displays": 64, + "removed_labels": [ + "fig:extension_architecture" + ], + "added_labels": [ + "fig:matched_backbone_effects", + "tab:backbone_resources", + "tab:matched_backbone" + ], + "empirical_displays_removed": 0, + "all_other_labels_and_roles_retained": true + }, + "status": "COMPLETE_DOCUMENT_BUILD", + "research_status": "COMPLETE", + "documents": { + "main": { + "pages": 94, + "diagnostics": [] + }, + "article_only": { + "pages": 42, + "diagnostics": [] + }, + "supplementary": { + "pages": 52, + "diagnostics": [] + } + }, + "figures": 40, + "tables": 24, + "references": 40, + "continuous_pages": true, + "no_final_tex_diagnostics": true, + "removed_schematic_absent": true, + "intro_contributions": 4, + "related_work_themes": 9, + "outputs": { + "GraphPathology_Combined_Manuscript_Transformer_EGNN.pdf": "765e4a09b7c134947b37ee6e6a734bf2fd1907a1277dba16f36c27be24bfbf31", + "GraphPathology_Article_Only_Transformer_EGNN.pdf": "5f6ea5c85a8567543e6438e632875050f4b932323fe580af2b4513dbb4c905d0", + "GraphPathology_Supplementary_Transformer_EGNN.pdf": "accb8606b3c1b1c8b65969c0d1b62d36eb31d0eb3f11a9547a29fa1d2b444ac5" + }, + "change": "Figure 1b: lengthen purple downward arrow and lower output label for clearance.", + "unchanged_tex_sources": true, + "text_extraction_differences_confined_to_figure1_page": 7, + "supplementary_pdf_unchanged": true, + "date": "2026-11-02" +} diff --git a/manuscript/journal_revision/transformer_egnn/GraphPathology_Article_Only_Transformer_EGNN.pdf b/manuscript/journal_revision/transformer_egnn/GraphPathology_Article_Only_Transformer_EGNN.pdf index eff2d5203..7d7ca0374 100644 Binary files a/manuscript/journal_revision/transformer_egnn/GraphPathology_Article_Only_Transformer_EGNN.pdf and b/manuscript/journal_revision/transformer_egnn/GraphPathology_Article_Only_Transformer_EGNN.pdf differ diff --git a/manuscript/journal_revision/transformer_egnn/GraphPathology_Combined_Manuscript_Transformer_EGNN.pdf b/manuscript/journal_revision/transformer_egnn/GraphPathology_Combined_Manuscript_Transformer_EGNN.pdf index 3743aa20e..32e04544d 100644 Binary files a/manuscript/journal_revision/transformer_egnn/GraphPathology_Combined_Manuscript_Transformer_EGNN.pdf and b/manuscript/journal_revision/transformer_egnn/GraphPathology_Combined_Manuscript_Transformer_EGNN.pdf differ diff --git a/manuscript/journal_revision/transformer_egnn/figures/Figure1.pdf b/manuscript/journal_revision/transformer_egnn/figures/Figure1.pdf index 255619f5b..5774037e7 100644 Binary files a/manuscript/journal_revision/transformer_egnn/figures/Figure1.pdf and b/manuscript/journal_revision/transformer_egnn/figures/Figure1.pdf differ diff --git a/manuscript/journal_revision/transformer_egnn/figures/Figure1.svg b/manuscript/journal_revision/transformer_egnn/figures/Figure1.svg index 1219a1108..a328b5a73 100644 --- a/manuscript/journal_revision/transformer_egnn/figures/Figure1.svg +++ b/manuscript/journal_revision/transformer_egnn/figures/Figure1.svg @@ -1,16 +1,16 @@ - + - 2026-11-01T00:17:27.469164 + 2026-11-02T07:33:39.969847 image/svg+xml - Matplotlib v3.10.8, https://matplotlib.org/ + Matplotlib v3.11.2, https://matplotlib.org/ @@ -21,807 +21,807 @@ - - - - + + - - - + + - - - + + - +" clip-path="url(#pb6717e937c)" style="fill: #f1f5f7; stroke: #8d9ba6; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #eef5f8; stroke: #688ba5; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #eef5f8; stroke: #688ba5; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #f4f0f8; stroke: #9b83ad; stroke-width: 0.9; stroke-linejoin: miter"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #1d2935; stroke: #1d2935; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #1d2935; stroke: #1d2935; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #1d2935; stroke: #1d2935; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #8050a0; stroke: #8050a0; stroke-linecap: round"/> - +" clip-path="url(#pb6717e937c)" style="fill: #eaf4f3; stroke: #087e8b; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #eaf4f3; stroke: #087e8b; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #eaf4f3; stroke: #087e8b; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #faf0eb; stroke: #a54b2a; stroke-width: 0.9; stroke-linejoin: miter"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #087e8b; stroke: #087e8b; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #087e8b; stroke: #087e8b; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #087e8b; stroke: #087e8b; stroke-linecap: round"/> - +" clip-path="url(#pb6717e937c)" style="fill: #faf0eb; stroke: #a54b2a; stroke-width: 0.9; stroke-linejoin: miter"/> - +" clip-path="url(#pb6717e937c)" style="fill: #faf0eb; stroke: #a54b2a; stroke-width: 0.9; stroke-linejoin: miter"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #a54b2a; stroke: #a54b2a; stroke-linecap: round"/> - - + +" clip-path="url(#pb6717e937c)" style="fill: #a54b2a; stroke: #a54b2a; stroke-linecap: round"/> - + - + - + - a + a - Cohort roles and observation geometry + Cohort roles and observation geometry - Development: HEST, 4 patients + Development: HEST, 4 patients - 2 train / 1 validation / 1 evaluation + 2 train / 1 validation / 1 evaluation - Transportability: HER2ST, 8 patients + Transportability: HER2ST, 8 patients - Reused for calibration development + Reused for calibration development - Fresh evaluation: Wu 3 + Bassiouni 22 + Fresh evaluation: Wu 3 + Bassiouni 22 - Three separate Wu patients supply calibration + Three separate Wu patients supply calibration - Observed + Observed - Hidden + Hidden - Scored region + Scored region - b + b - Frozen encoder and three trained regression heads + Frozen encoder and three trained regression heads - Nominal 112 μm + Nominal 112 μm H&E patch - 224 × 224 RGB + 224 × 224 RGB - Frozen ResNet18 - 4 stages: 64/128/256/512 + Frozen ResNet18 + 4 stages: 64/128/256/512 2 basic blocks per stage - Global average pooling - 512-dimensional vector + Global average pooling + 512-dimensional vector - Feature - standardization - (fit on training) + Feature + standardization + (fit on training) - Three MLP heads - Linear: 512 → 256 - GELU → dropout 0.1 - Linear: 256 → 50 - Seeds: 0, 1, 2 + Three MLP heads + Linear: 512 → 256 + GELU → dropout 0.1 + Linear: 256 → 50 + Seeds: 0, 1, 2 - Patch processing: LANCZOS → 224; official resize → 256; - center crop → 224; ImageNet channel normalization + Patch processing: LANCZOS → 224; official resize → 256; + center crop → 224; ImageNet channel normalization - Invert target scaling for each head; - mean of three 50-gene predictions + Invert target scaling for each head; + mean of three 50-gene predictions - c + c - Molecular interpolation and fixed fusion + Molecular interpolation and fixed fusion - Coordinates + - observed expression + Coordinates + + observed expression - Up to 16 anchors - V1: inverse distance² - V2: equal weights + Up to 16 anchors + V1: inverse distance² + V2: equal weights - Molecular - prediction + Molecular + prediction - Fixed fusion - 0.8 molecular - + 0.2 image + Fixed fusion + 0.8 molecular + + 0.2 image - + - ̂ - y - S - T - i + ̂ + y + S + T + i - Image-only - prediction + Image-only + prediction - Frozen source-to-Wu image calibration - Transported unchanged to Bassiouni + Frozen source-to-Wu image calibration + Transported unchanged to Bassiouni - Score hidden locations only: image, molecular and fusion predictions + Score hidden locations only: image, molecular and fusion predictions - V1 scores all hidden locations; V2 scores the designated contiguous region. + V1 scores all hidden locations; V2 scores the designated contiguous region. - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -832,386 +832,386 @@ z - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -1222,13 +1222,13 @@ z - + - + - + diff --git a/manuscript/journal_revision/transformer_egnn/scripts/draw_architecture.py b/manuscript/journal_revision/transformer_egnn/scripts/draw_architecture.py index 1a26ef275..a394baf2f 100644 --- a/manuscript/journal_revision/transformer_egnn/scripts/draw_architecture.py +++ b/manuscript/journal_revision/transformer_egnn/scripts/draw_architecture.py @@ -72,8 +72,9 @@ def heading(y,letter,title): fc='#f4f0f8',ec='#9b83ad',size=8.6) arrow(1.38,4.24,1.55,4.24);arrow(3.54,4.24,3.71,4.24);arrow(4.93,4.24,5.10,4.24) text(.12,3.40,'Patch processing: LANCZOS → 224; official resize → 256;\ncenter crop → 224; ImageNet channel normalization',8.0,va='center') -text(6.10,3.36,'Invert target scaling for each head;\nmean of three 50-gene predictions',8.0,ha='center') -arrow(6.10,3.68,6.10,3.57,color=violet) +text(6.10,3.28,'Invert target scaling for each head;\nmean of three 50-gene predictions',8.0,ha='center') +# Extend the downward connector and leave clear space above its output label. +arrow(6.10,3.665,6.10,3.44,color=violet) ax.plot([.1,7.1],[3.05,3.05],color='#cad3da',lw=.8) heading(2.83,'c','Molecular interpolation and fixed fusion')