export_node_reaction_context (src/logic_network_generator.py:2370) exports cr_uuid = r.get("uuid") — a per-row UUID minted by _bulk_fetch_reaction_entity_links (:207) that is never used as an edge endpoint. The actual endpoint is the member_uuid that append_regulators mints separately from stid_to_existing_uuid (:1575-1589).
So every catalyst and regulator row's context_node is unjoinable to logic_network.csv.
Measured across all 92 fresh v97 pathways:
role rows orphaned
catalyst 20198 20198 (100%)
regulator 5860 5860 (100%)
input 81117 0
output 29359 0
26,058 of 136,534 rows.
export_uuid_to_reactome_mapping is unaffected — it filters on in all_uuids — so this is a provenance-export defect, not a network defect. But anyone joining the context file to the network to answer "which reaction did this catalyst edge come from?" silently gets nothing back for catalysts and regulators, which is most of what that file is for.
Fix is to export the endpoint UUID append_regulators actually used rather than the fetch-row UUID.
export_node_reaction_context(src/logic_network_generator.py:2370) exportscr_uuid = r.get("uuid")— a per-row UUID minted by_bulk_fetch_reaction_entity_links(:207) that is never used as an edge endpoint. The actual endpoint is themember_uuidthatappend_regulatorsmints separately fromstid_to_existing_uuid(:1575-1589).So every catalyst and regulator row's
context_nodeis unjoinable tologic_network.csv.Measured across all 92 fresh v97 pathways:
26,058 of 136,534 rows.
export_uuid_to_reactome_mappingis unaffected — it filters onin all_uuids— so this is a provenance-export defect, not a network defect. But anyone joining the context file to the network to answer "which reaction did this catalyst edge come from?" silently gets nothing back for catalysts and regulators, which is most of what that file is for.Fix is to export the endpoint UUID
append_regulatorsactually used rather than the fetch-row UUID.