Problem
The generator connects two reactions only when they are linked by precedingEvent. But older pathways under-annotate precedingEvent, so reactions where A's product is literally B's substrate are left disconnected.
Measured gap (shared whole-entity product→substrate pairs with no precedingEvent):
- Mitotic G1/S (modern): 13
- Amino-acid metabolism: 118
- Glycolysis: 24 of 43
- Metabolism (large): 591
Fix
Use the Reactome diagram JSON (release 97) as the authoritative curator-drawn connectivity. For each entity glyph shared between reaction A's output and reaction B's input, merge that shared product into a single node → A → product → B (NOT a reaction→reaction edge; the product carries the signal). Reuses the existing Phase-2 entity-merge; diagram pairs are fed in alongside precedingEvent.
Why the diagram (vs raw Neo4j dbId matching): curators draw cofactors (ATP/ADP/H2O) as separate per-reaction glyphs, so shared-glyph connectivity excludes cofactors for free — no hub threshold to tune. Verified on Mit_G1: shared-glyph carriers are all real species (CCNE:CDK2, DREAM complex, RB1, …), zero cofactors.
Diagrams rsync'd to ~/reactome-diagrams/97/ (R-HSA-<id>.json + .graph.json).
Validation
- Confirm the 9 modern benchmark pathways don't regress (their gap is tiny).
- Show recovered flows on an old pathway (Glycolysis R-HSA-70171).
- Note: gain is coverage/faithfulness for the broad catalog, not a 9-pathway score move (no experimental data for old pathways).
Do NOT retry (dead-ends, benchmarked net-negative)
- Component hand-off edges: bridging reactions on a shared component (not whole entity) — naive explodes (77k edges), max-shared false-couples (−7), hub-guarded (−4). You can't get the reconnected paths without equal coupling error. Kept as env-gated dead code (
LNG_HANDOFF_EDGES=0).
- All-complex assembly edges: slight regression, reverted.
Problem
The generator connects two reactions only when they are linked by
precedingEvent. But older pathways under-annotateprecedingEvent, so reactions where A's product is literally B's substrate are left disconnected.Measured gap (shared whole-entity product→substrate pairs with no
precedingEvent):Fix
Use the Reactome diagram JSON (release 97) as the authoritative curator-drawn connectivity. For each entity glyph shared between reaction A's output and reaction B's input, merge that shared product into a single node →
A → product → B(NOT a reaction→reaction edge; the product carries the signal). Reuses the existing Phase-2 entity-merge; diagram pairs are fed in alongsideprecedingEvent.Why the diagram (vs raw Neo4j dbId matching): curators draw cofactors (ATP/ADP/H2O) as separate per-reaction glyphs, so shared-glyph connectivity excludes cofactors for free — no hub threshold to tune. Verified on Mit_G1: shared-glyph carriers are all real species (CCNE:CDK2, DREAM complex, RB1, …), zero cofactors.
Diagrams rsync'd to
~/reactome-diagrams/97/(R-HSA-<id>.json+.graph.json).Validation
Do NOT retry (dead-ends, benchmarked net-negative)
LNG_HANDOFF_EDGES=0).