Oncofusion

start / graph / ana-q190-the-absence-vocabulary-is-used-mostly-outside-absences-and-interfaces-reach-for-states-it-cannot-express

Analysismoderate confidence 3 of 5: One strong study, or several smaller consistent ones.

Only 69 of the 529 entries carrying absence_class are absence entries, and every conceptually novel token authors reached for - partially-measured, measured-and-contradicted, not-worth-measuring - is on an interface entry, where the thing being graded is not an absence at all

also called q190 · the absence vocabulary outside absences

This project requires every 'nobody has measured X' entry to say what kind of gap it is, from a fixed list of seven words. Eight entries used words that are not on the list. Rather than treat that as sloppiness, the question was whether the list is missing something. It is - but not where expected. The field has quietly spread far beyond the entries it was designed for, and the odd words all appear on entries describing a protein contact, where what needs recording is a disagreement between two labs, or a result that exists for a different fusion, or a decision not to pursue something. None of those is an absence.

The same thing, for a scientist

`scripts/check-absence-class.py` enforces a seven-token vocabulary and reports **8 invalid tokens across 539 absence entries**. Its own error text says the right thing — *"the prose is usually truer than any token and must not be deleted to satisfy this check"* — so the question is whether the vocabulary is missing states, as happened with the epigenetics third state two cycles ago. 🔵 **The field is used overwhelmingly outside its own domain.** 529 entries carry `absence_class`, and **only 69 are `absence-*` entries** [E1]. The bulk sit on `ana-` (198) and `gene-` (123). **The field is applied 6.7× more often to non-absences than to absences.** 🟠 **Six of the eight invalid tokens are genuinely missing states, not author error** [E1]. One is a synonym (`not-measured` → `never-measured`) and three are specialisations that could fold in (`measured-not-usable`, `measured-not-deposited-for-this-assay`, `curated-not-measured`). But three are **not absences of measurement at all**: - **`partially-measured`** (×2) — the contact is measured in MLL-AF9 or KMT2A::MLLT3 but not in the index fusion. - **`measured-and-contradicted`** — *"Two groups asked it and got different answers; the gap is a structure, not an experiment."* - **`not-worth-measuring`** — a recorded decline, written *"so that the next database sweep does not re-surface DRC5 as an unexamined top-ranked gap."* A conflict, a decision, and a result that exists for the wrong fusion. **An absence vocabulary cannot express any of them**, and all three sit on `interface-` entries, which have the **highest invalid rate of any non-absence prefix at 8.7% (4 of 46)** [E1]. 🔴 **Two hypotheses I formed along the way were both wrong, and the measurement says so.** 1. *"`partially-measured` is this corpus's single most common evidential situation, so the missing state must be forcing mislabels at scale."* **Pre-registered threshold: 10.** Measured: **4 of 539 entries** have partially-measured prose and **2** carry a token that denies any measurement exists [E2]. The pre-registered verdict is *outliers*, and it is accepted. 2. *"The invalid tokens cluster on non-absence entries."* **They do not, by rate.** Invalid is **4.3% on `absence-*`** against **1.1% elsewhere** — four times *more* likely on genuine absences [E1]. What clusters is the *kind* of token: the conceptually novel ones are all on interfaces, while the absence entries' three invalids are near-synonyms of existing vocabulary.

Go deeper
What the two genuinely mislabelled entries are

Only two entries carry a token that denies a measurement their own prose says exists:

  • gene-arid1b, tagged never-measured
  • absence-q136-the-index-fusion-line-in-this-deposit-carries-h3k79me2-only…, tagged never-measured

Both describe something measured in a comparator and not in the index fusion. Two is not a schema crisis, and the honest recommendation that follows is narrow: add partially-measured to the vocabulary and relabel these two, rather than restructure anything.

The detector is narrow and that matters. PARTIAL is a hand-written regex over phrases like "measured only in MLL-AF9" and "not tested in the index fusion". This corpus expresses that situation in many more ways, and 4 of 539 is implausibly low against how often it appears in reading. The count is a floor, and the pre-registered verdict should be read as 'not demonstrated at scale', not as 'rare'.

The recommendation, which is smaller than the finding
  1. Add three tokens: partially-measured, measured-and-contradicted, not-worth-measuring. Each is already in use, each is unambiguous, and each describes something the current seven cannot. The checker's own message already invites this by preserving the prose.
  2. Fold the near-synonyms: not-measured → never-measured; measured-not-deposited-for-this-assay → measured-not-reported with the specificity in the note; measured-not-usable → measured-not-analysed plus a note.
  3. Do NOT rename or restrict the field because it is used outside absences. 460 non-absence entries use it productively to grade evidential status, which is a more useful field than a strictly-absence one. The name is wrong, not the usage — and renaming a field carried by 529 entries to fix a naming complaint would be the expensive way to achieve nothing.

What this entry does not do is apply any of it. Changing a controlled vocabulary touches a validator that 529 entries depend on, and the three additions should be made in one deliberate change with the checker updated in the same commit.

Facts and figures
scriptanalyses/q190-the-absence-vocabulary-is-missing-three-states/run.py
statusexecuted
answers open question fromana-q185-a-gap-report-counts-as-coverage-and-a-seven-bait-denominator-made-the-core-look-clean
entries with absence class529
absence prefixed69
non absence460
invalid rate absence PCT4.3
invalid rate non absence PCT1.1
invalid rate interface PCT8.7
partial prose entries4
partial but token denies2
preregistered threshold10
verdictadd three tokens, fold four synonyms, relabel two entries, and do not restructure the field - it is used productively outside absences and the name is what is wrong
prefix breakdown
mechanism11.0mechanism: 11hyp16.0hyp: 16exp17.0exp: 17concept18.0concept: 18interface46.0interface: 46absence69.0absence: 69gene123.0gene: 123ana198.0ana: 198
measurements
share0.043share: 0.043share0.087share: 0.087share0.130share: 0.13count2.000count: 2
prefix breakdown — the numbers behind the chart
{
  "ana": 198,
  "gene": 123,
  "absence": 69,
  "interface": 46,
  "concept": 18,
  "exp": 17,
  "hyp": 16,
  "mechanism": 11
}
invalid tokens
[
  "curated-not-measured",
  "measured-and-contradicted",
  "measured-not-deposited-for-this-assay",
  "measured-not-usable",
  "not-measured",
  "not-worth-measuring",
  "partially-measured"
]
genuinely missing states
[
  "partially-measured",
  "measured-and-contradicted",
  "not-worth-measuring"
]
near synonyms to fold
{
  "not-measured": "never-measured",
  "measured-not-deposited-for-this-assay": "measured-not-reported",
  "measured-not-usable": "measured-not-analysed",
  "curated-not-measured": "never-measured + provenance note"
}
mislabelled
[
  "gene-arid1b",
  "absence-q136-the-index-fusion-line-in-this-deposit-carries-h3k79me2-only"
]
hypotheses refuted
[
  "partially-measured is the corpus's commonest evidential situation",
  "invalid tokens cluster on non-absence entries"
]
measurements — the numbers behind the chart
[
  {
    "quantity": "share",
    "subject": "entries carrying absence_class that are absence- entries",
    "universe": "529 entries carrying the field",
    "value": 0.13
  },
  {
    "quantity": "share",
    "subject": "invalid absence_class rate on absence- entries",
    "universe": "69 absence- entries carrying the field",
    "value": 0.043
  },
  {
    "quantity": "share",
    "subject": "invalid absence_class rate on interface- entries",
    "universe": "46 interface- entries carrying the field",
    "value": 0.087
  },
  {
    "quantity": "count",
    "subject": "entries whose token denies a measurement their prose asserts",
    "universe": "539 absence entries",
    "value": 2
  }
]
Still open
  1. Make the vocabulary change in one commit: add partially-measured, measured-and-contradicted and not-worth-measuring, fold the four near-synonyms, update check-absence-class.py and relabel gene-arid1b and the q136 entry. 529 entries depend on this validator so it should be one deliberate change, not a drift.
  2. Widen the partially-measured detector and re-run over ALL entries, not only those carrying an absence_class. The population and the hypothesis were mismatched: that situation is described most often in interface- and mechanism- entries that carry no such field.
  3. Decide what absence_class is FOR. If it grades the evidential status of any claim - which 460 non-absence entries treat it as doing - then its name is wrong and its vocabulary is incomplete for its real purpose. If it is strictly about gaps, then 460 entries are misusing it. The field cannot be both.
  4. 10 entries carry no absence_class at all, including eight absence-q1xx entries from recent beats. They are listed in the checker's output and are a five-minute fix.
Every source behind this entry (2)
  1. E1strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.software

    529 entries carry a data.absence_class field. By id prefix: ana- 198, gene- 123, absence- 69, interface- 46, concept- 18, exp- 17, hyp- 16, mechanism- 11, and 27 across eleven further prefixes. Eight carry a token outside the seven-term vocabulary: not-measured; measured-not-usable; measured-not-deposited-for-this-assay; curated-not-measured; partially-measured (x2); measured-and-contradicted; not-worth-measuring. The invalid rate is 3 of 69 (4.3%) on absence- entries and 5 of 460 (1.1%) elsewhere; among non-absence prefixes interface- is highest at 4 of 46 (8.7%). All four instances of partially-measured, measured-and-contradicted and not-worth-measuring are on interface- entries; curated-not-measured is on an ana- entry.

    What this evidence cannot show

    Counts are of entries carrying the field at one moment while an agent was writing concurrently; the checker itself reported 539 absence entries against the 529 counted here, a difference consistent with its wider definition of what counts as an absence entry.

    Evidence that argues against this (2)
    • Eight invalid tokens in 529 entries is a 1.5% error rate, which for a free-text-adjacent field maintained by many agents over 160 cycles is very good. Framing this as a vocabulary defect rather than as a well-enforced schema with six interesting exceptions overstates the problem, and the checker is the reason the exceptions are visible at all.
    • The claim that three tokens are 'not absences at all' is a judgement about what the field means, and the field's own documentation may intend the broader reading - grading the evidential status of any claim, not only of a gap. If so the vocabulary is simply incomplete for its real purpose and the interface- clustering is unremarkable rather than diagnostic.
  2. E2moderate confidence 3 of 5: One strong study, or several smaller consistent ones.software

    A regex over phrases describing a measurement that exists for a comparator fusion but not the index fusion matches 4 of 539 absence entries. Of those, 2 carry a token that denies any measurement exists (never-measured): gene-arid1b and absence-q136-the-index-fusion-line-in-this-deposit-carries-h3k79me2-only. One carries measured-not-analysed and one carries partially-measured. A threshold of 10 was pre-registered before running as the line between 'the vocabulary forces mislabels at scale' and 'these are outliers'.

    What this evidence cannot show

    The detector is a hand-written regex over a handful of phrasings and is certainly incomplete; 4 of 539 is a floor, not an estimate. The pre-registered verdict is therefore 'not demonstrated at scale' rather than 'rare'.

    Evidence that argues against this (2)
    • A narrow detector returning a number below a pre-registered threshold is the easiest way to reach a comfortable conclusion, and the conclusion here happens to be that no schema work is needed. The threshold was set before running, which protects the inference from tuning, but it does not protect it from a detector that was always going to undercount.
    • Restricting the population to entries with an absence_class field or an absence- id biases against finding partially-measured situations, because those are described most often in interface- and mechanism- entries that carry no such field at all. The population and the hypothesis were mismatched from the start.
Connected to