Skip to content

Diagram-sourced reaction connectivity (A→product→B) to fill precedingEvent gaps #39

Description

@adamjohnwright

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions