Oncofusion

start / graph / ana-the-interactome-instrument-is-migrated-and-coverage-fell-by-three-and-a-half-points

Analysisstrong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.

The interactome instrument is migrated to IntAct REST: 277 partners, 118 written, 42.6% - the denominator grew by 60 and coverage fell 3.5 points, which is the instrument getting honest

also called interactome REST migration · 277 partners 118 written 42.6% · coverage fell 3.5 points · rule 93 closed · PSICQUIC 64.1%

The tool this project uses to ask how much of the fusion's protein network has been written down was only seeing about two thirds of the database it was asking. Now that it sees all of it, the job looks bigger and less finished than we have been saying.

The same thing, for a scientist

Cycle 57 measured the defect; this is the repair. The old instrument (`analyses/core-complex-interactome-gap/`) queries **PSICQUIC**, which returns **651 of the 1,015 rows** IntAct's own REST endpoint returns for the same six baits - **64.1%** - and is worst precisely where this project lives: **MEN1 45.3%, PSIP1 43.9%**, against AFF1 87.5% and AFF4 86.5%. Rule 93 recorded that defect and named what was missing. Nobody migrated the instrument. `analyses/interactome-union-migrated-to-rest/` is the migration. **The result, and it goes the direction I said it would.** On REST the union is **277 human partners** with **118** having an entry of their own - **42.6%** - against PSICQUIC's **217 / 100 / 46.1%** measured the same day. The denominator grew by **+60**, the numerator by **+18**, and coverage **fell 3.5 points**. The read queue went from **0 to 9** - and its first run said 19, because I wrote this new instrument without the ADJUDICATED register I had added to the old one a cycle earlier, so ten partners Q104 had already rejected with measurements came back as fresh work. Fixing one of the two defects Q104 found reproduced the other. A fall here is not a regression: the old figure was computed over 64% of the curated rows and was quoted for several cycles as a measurement of the interactome. **Twenty partners PSICQUIC structurally could not reach**, because every curated row for them sits on a non-canonical accession - an isoform or a processed chain - so an accession-keyed PSICQUIC query cannot see them at all. **Seven already had entries** (JUND, KAT6A, MED12, NFKB1, NFKB2, NIN, SKP2), which is the part worth noticing: those entries were written from other sources, so the instrument had been scoring them as covered while being unable to see the rows that made them partners. Thirteen have no entry, led by **ARFIP1** (3 rows, AFF1) and **ING4** (KMT2A). **The proof case is the one rule 93 named.** The first record REST returns for MEN1 is `O00255-2` - a MEN1 isoform - against `Q03164`, curated as **MI:0407 direct interaction** by **isothermal titration calorimetry**, PMID 22327296. That is one of the seven direct menin-KMT2A records the old endpoint could not deliver, and it is the most rigorous class of evidence in the whole beat. **The migration also answers two questions that needed a separate hand-read last cycle**, because the REST record carries fields MITAB 2.5 does not: **`detectionMethod`** and **`experimentalRole`**. Only **one** partner in the entire 277 has every row from an enzyme assay or an isolated-module structure - **H3C13**, by methyltransferase assay, the H3K79 enzyme on its own substrate. That confirms cycle 57's measurement that the substrate-contamination problem is real but small, and it is reported rather than filtered, because excluding it is a judgement a reader should make.

Facts and figures
scriptanalyses/interactome-union-migrated-to-rest/run.py
resultsanalyses/interactome-union-migrated-to-rest/results.json
statusrun
run date2026-09-22
endpointIntAct REST findInteractions, paged at 200 with a paging guard asserting the promised totalElements equals the number of records actually paged
comparabilityown_entry matching is the PSICQUIC instrument's regex verbatim - ^(?:gene|protein)-([a-z0-9]+)(?:-domains)?$ over the same node tree - so the only thing that differs between the two figures is the endpoint. The PSICQUIC series is deliberately left running and untouched rather than replaced, so the two numbers can be compared instead of one quietly superseding the other.
absence classmeasured-not-analysed
headline
{
  "rest_union_human_partners": 277,
  "rest_with_own_entry": 118,
  "rest_coverage_pct": 42.6,
  "rest_read_queue": 9,
  "psicquic_same_question_same_day": {
    "union": 217,
    "covered": 100,
    "pct": 46.1,
    "queue": 0
  },
  "delta": {
    "denominator": "+60",
    "numerator": "+18",
    "coverage_points": "-3.5",
    "queue": "0 -> 9 (19 before the adjudicated register was ported)"
  },
  "rest_read_queue_before_withholding_adjudications": 19,
  "adjudicated_and_withheld": [
    "H3C1",
    "CAMKV",
    "EPB41L1",
    "FGF12",
    "PLCD3",
    "RPS11",
    "ARRB2",
    "DENND2D",
    "FAM9A",
    "MDK"
  ]
}
the endpoint defect this repairs
{
  "KMT2A": "218/376 = 58.0%",
  "MEN1": "62/137 = 45.3%",
  "PSIP1": "50/114 = 43.9%",
  "AFF4": "179/207 = 86.5%",
  "DOT1L": "51/77 = 66.2%",
  "AFF1": "91/104 = 87.5%",
  "total": "651/1015 = 64.1%",
  "worst_where_it_matters": "menin and LEDGF/PSIP1, the two baits the menin-interface hypothesis rests on"
}
partners psicquic structurally could not see
{
  "n": 20,
  "already_had_an_entry": [
    "JUND",
    "KAT6A",
    "MED12",
    "NFKB1",
    "NFKB2",
    "NIN",
    "SKP2"
  ],
  "why_that_matters": "The instrument scored these as covered while being unable to see the rows that made them partners. Their entries were written from other sources, so coverage was right about them by luck rather than by measurement.",
  "no_entry": [
    "ARFIP1",
    "BRINP1",
    "CKAP5",
    "EPB41L5",
    "ING4",
    "INTS14",
    "KIF11",
    "KIF24",
    "MAPT",
    "ORC1",
    "RBM45",
    "SDC1",
    "YEATS4"
  ],
  "the_proof_case": "MEN1 isoform O00255-2 against KMT2A Q03164, MI:0407 direct interaction by isothermal titration calorimetry, PMID 22327296 - one of the seven direct menin-KMT2A records rule 93 named as missing"
}
substrate or structure only partners
{
  "n": 1,
  "genes": [
    "H3C13"
  ],
  "method": "methyltransferase assay",
  "reading": "The H3K79 enzyme on its own substrate, curated as an interaction. Confirms that the substrate-contamination problem is real and small, and matches cycle 57's independent 2.3-point denominator measurement. Reported, not filtered."
}
my own parser reproduced the defect it was written to fix
{
  "what_happened": "The first run discarded 15 row-sides across NFKB1, NFKB2 and KMT2A because IntAct presents a PROCESSED-CHAIN partner as an accession in moleculeX rather than as a symbol - P19838-PRO_0000030311 instead of NFKB1. So a script whose docstring advertised fixing processed-chain blindness was blind to processed chains on the partner side.",
  "the_fix": "Resolve the accession at UniProt and READ THE SYMBOL BACK from the returned record, comparing primaryAccession before accepting it. An accession that does not resolve stays in `unresolved` and is counted rather than becoming a partner under a guessed name.",
  "recovered": {
    "P19838 -> NFKB1": 6,
    "Q03164 -> KMT2A": 5,
    "Q00653 -> NFKB2": 4
  },
  "effect_on_the_headline": "union 275 -> 277, covered 116 -> 118, coverage 42.2% -> 42.6%"
}
still unresolved and why
{
  "row_sides": 94,
  "classes": [
    "fusion CONSTRUCTS on EBI- accessions, where neither side canonicalises to the queried bait (mll_af9_human_protein, mll_aff4_fusion, MLL/AF6 fusion) - the class enumerated separately in analyses/intact-fusion-construct-census",
    "GENE-level participants in protein-DNA rows (hoxa9_human_gene 11, hoxa7_human_gene 8, meis1_human_gene 3, myc_human_gene 2, msx2_human_gene 2, cdkn1b_human_gene 2, hoxa5_human_gene 2) - a different object class from a protein partner and correctly excluded from a protein-partner census, but they are NOT nothing: they are the fusion's target genes",
    "unreviewed TrEMBL-style participants (q2q440_human, q8td98_human) and one ribosomal fusion label (rl3_rl3l_human)"
  ],
  "honest_statement": "These are in NEITHER the numerator nor the denominator. The gene-level rows in particular mean this instrument cannot see the fusion's protein-DNA interactions at all, and never could."
}
i reproduced the other defect too
{
  "what_happened": "This migration's first queue was 19 and TEN of those were partners Q104 had already adjudicated with measurements. The ADJUDICATED register was added to the PSICQUIC instrument in cycle 57 and this new script was written without it, so fixing one of the two defects Q104 found reproduced the other.",
  "withheld": [
    "H3C1",
    "CAMKV",
    "EPB41L1",
    "FGF12",
    "PLCD3",
    "RPS11",
    "ARRB2",
    "DENND2D",
    "FAM9A",
    "MDK"
  ],
  "genuinely_new_queue": [
    "H2BC21",
    "NUMA1",
    "H2BC10",
    "NUCKS1",
    "ASB7",
    "CD226",
    "HMGA1",
    "PIH1D1",
    "RPL13"
  ],
  "the_one_worth_reading": "NUMA1 - nuclear mitotic apparatus protein, three baits, and this graph already carries a mitotic-bookmarking beat (mechanism-mll1-bookmarks-mitotic-chromatin-and-carries-menin-there). H2BC21, H2BC10 and RPL13 look like the histone and ribosomal classes already adjudicated for H3C1 and RPS11.",
  "and_a_second_slip": "porting the register lifted too much - a duplicate BAITS definition and the PSICQUIC script's own get(), which references an unimported sys. Both were shadowed by the later definitions so the run was unaffected; 1,859 characters of dead code removed and the file compile-checked rather than left because it happened to work."
}
How this could bite us back
  • Nothing here is a biological finding and nothing nominates a target. It is a measurement of an instrument, and the newly visible partners are mostly single-row single-bait observations - the weakest class of evidence in the database.
  • The one thing a reader should take away is deflationary: this project's interactome coverage figure has been quoted for several cycles as a measurement and was computed over 64% of the curated rows. Any downstream statement resting on '43.8%' or on 'the read queue is empty' should be re-derived.
Still open
  1. Which of the two unions is right about a partner both endpoints carry? No row-level reconciliation of the 217 and the 277 was done, so the +60 is an upper bound on the endpoint's contribution and some of it may be symbol-resolution differences between the two scripts.
  2. What fraction of ALL rows, rather than of partners, is enzyme-assay or structural evidence? The per-partner filter is too strict to bound the problem and the per-row census was not computed.
  3. Should the historical coverage series be retired? It mixes changes in the graph with changes in the instrument, and most of it was measured on an endpoint returning 64% of the rows.
  4. The 42 gene-level row-sides (hoxa9_human_gene, hoxa7_human_gene, meis1_human_gene, myc_human_gene and others) are the fusion's protein-DNA interactions and this instrument cannot see them at all, by construction. They belong in a separate census that does not exist.
  5. Do any of the 13 newly visible, entry-less partners deserve an entry, given that almost none clears the two-publication-or-two-bait threshold? ARFIP1 (3 rows, AFF1) and ING4 (KMT2A, a tumour-suppressor ING-family reader) are the only plausible candidates.
Every source behind this entry (4)
  1. E1established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.database

    Measured on IntAct REST, the union of human partners of the six core baits (KMT2A Q03164, MEN1 O00255, PSIP1 O75475, AFF4 Q9UHB7, DOT1L Q8TEK3, AFF1 P51825) is 277 proteins, of which 118 have an entry of their own - 42.6% coverage - with a read queue of 9 partners seen by at least two publications or at least two baits (19 before ten already-adjudicated partners were withheld). The same question asked through PSICQUIC on the same day returns 217 partners, 100 covered, 46.1%, queue 0. So migrating the endpoint grew the denominator by 60 partners, the numerator by 18, and moved coverage DOWN by 3.5 points.

    What this evidence cannot show

    This is a count within one run of one instrument against one database, which is what makes it established rather than strong - it is not a claim about the true size of the interactome. It is IntAct only: a partner absent from IntAct is absent from this figure, and IntAct has NOT curated Skucha 2018 (PMID 29777171), the seven-bait MLL-fusion AP-MS network this project measures separately, so the real biological denominator is larger again. Partner identity comes from IntAct's own moleculeA/moleculeB symbol fields, which removes the old alias-parsing failure mode and substitutes a dependency on IntAct's symbol choice. The paging guard asserts the promised totalElements equals the records actually paged, so a silently short union would fail rather than be reported.

    Evidence that argues against this (3)
    • The two figures are less comparable than presenting them side by side implies. The PSICQUIC instrument resolves partners by parsing alias strings and the REST instrument reads a symbol field, so a partner both endpoints carry could still be counted under different symbols by the two scripts. The 60-partner difference is therefore an upper bound on what the endpoint change alone contributed, and no row-level reconciliation of the two unions was performed.
    • A coverage figure that falls when the instrument improves undermines the use this project has been putting it to. It has been reported cycle to cycle as progress, and this shows the series is not a time series at all - it mixes changes in the graph with changes in the instrument. The honest reading is that no coverage number here should be compared across cycles unless the endpoint and the matching regex were identical, and most of the historical series does not meet that test.
    • The queue figure in this item was wrong when first written and is corrected here, which is itself an argument against trusting this instrument's derived numbers on first run. It reported 19 because the adjudication register had not been ported, so the very first thing the migrated instrument produced was ten units of duplicated work.
  2. E2strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.database

    Twenty partners are reachable ONLY through a non-canonical accession - every curated row for them sits on an isoform or processed-chain id - so an accession-keyed PSICQUIC query cannot see them at all. Seven of the twenty already had entries in this graph (JUND, KAT6A, MED12, NFKB1, NFKB2, NIN, SKP2), meaning the instrument scored them as covered while being unable to see the evidence that made them partners. The worked proof is the first record REST returns for MEN1: isoform O00255-2 against KMT2A Q03164, curated as MI:0407 direct interaction by isothermal titration calorimetry, PMID 22327296.

    What this evidence cannot show

    'Reachable only via a non-canonical id' is a property of THIS query form - a bare accession - not an absolute statement about PSICQUIC, which might return these rows under a different query. The underlying paper for the proof case (PMID 22327296) was not read here; what was verified is the curated record's fields, so the claim is about what IntAct asserts and what each endpoint delivers, not about the biology of the menin-KMT2A interface. The count of 20 depends on the isoform-stripping rule, and a partner with one canonical row and ten isoform rows correctly does not appear in it.

    Evidence that argues against this (2)
    • That seven of the twenty already had entries argues the practical cost of the defect was smaller than its size suggests. The graph had found these proteins by other routes - curated reading, other databases, the Skucha network - so the missing rows were not, for those seven, missing biology. It is evidence that redundant sourcing partly compensated for a broken instrument, which weakens the case that the coverage figure was badly misleading even while confirming it was wrong.
    • Thirteen of the twenty have no entry and most are single-row, single-bait observations - BRINP1, CKAP5, KIF11, KIF24, ORC1, RBM45, SDC1, YEATS4 each appear once. On this project's own read-queue threshold (two publications or two baits) almost none qualifies, so the newly visible partners are mostly the weakest class of evidence and should not be written up as findings merely because they became visible.
  3. E3moderate confidence 3 of 5: One strong study, or several smaller consistent ones.database

    The REST record carries detection method and experimental role, which MITAB 2.5 does not, and that answers the substrate-contamination question in the same pass. Of the 277 partners, exactly ONE has every one of its rows from an enzyme-substrate assay or an isolated-module structural measurement: H3C13, by methyltransferase assay - the H3K79 enzyme DOT1L acting on its own substrate, curated as an interaction.

    What this evidence cannot show

    The MI-id set was declared by me, not taken from a published ontology slice, so 'exactly one' is exactly one UNDER THAT FILTER and a different reasonable filter would give a different number. The rule is deliberately strict - it requires EVERY row for a partner to be substrate-or-structure - so a partner with one co-IP and nine methyltransferase assays does not appear, which understates the contamination. Including MI:0065 (ITC) and MI:0114 (x-ray) in the same set as enzyme assays is arguable: they are binding measurements, and the menin-KMT2A ITC record in E2 is evidence this project treats as its best, so this filter would discard it if that were its only row.

    Evidence that argues against this (2)
    • This result cuts against the fix Q104 asked for. It recommended filtering the census by detection method rather than by symbol class, and the measurement says that filter would remove exactly one partner out of 277 - so the engineering is not worth doing for its effect on the figure. The reason to care about substrate rows is that they misdescribe the biology of a specific entry, which is an argument for reading rows, not for filtering the census.
    • The strictness that makes 'exactly one' defensible also makes it nearly uninformative about how much of the union rests on non-binding evidence. A per-ROW census - what fraction of all rows are enzyme assays or structures - was not computed, and it is the number that would actually bound the problem.
  4. E4established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.database

    The migrated parser reproduced, on the partner side, the exact defect it was written to remove. Its first run discarded 15 row-sides across NFKB1, NFKB2 and KMT2A because IntAct presents a processed-chain participant as an accession in the moleculeA/moleculeB field (P19838-PRO_0000030311) rather than as a gene symbol, and the symbol-shaped regex rejected it. The three accessions were resolved at UniProt and read back - P19838 to NFKB1, Q00653 to NFKB2, Q03164 to KMT2A - and recovering them moved the union from 275 to 277 and coverage from 42.2% to 42.6%.

    What this evidence cannot show

    A count of row-sides in one run. The recovery resolves an accession to a symbol and therefore silently merges a processed chain with its parent protein - NFKB1's p50 chain becomes NFKB1 - which is right for a partner census and WRONG for any claim about which cleavage product was assayed. Nothing here establishes that the p50 chain rather than p105 is what binds; that distinction is discarded by design and would have to be read back out of the rows.

    Evidence that argues against this (1)
    • Merging a processed chain into its parent may be the wrong call for NF-kappa-B specifically, which is the clearest case in the set. p105 and p50 are functionally different molecules - p105 is a cytoplasmic precursor and inhibitor, p50 a nuclear DNA-binding subunit - so recording 'NFKB1 is a partner' from rows curated on the p50 chain asserts less than the rows contain and could mislead an entry written from this census.
Connected to