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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions