Oncofusion

start / graph / ana-no-two-entries-name-the-same-gene-and-only-two-use-a-symbol-hgnc-retired

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

No two entries name the same gene - 574 symbol-shaped entries, zero duplicate groups - and only two use a symbol HGNC does not approve: gene-kdm3c is JMJD1C and gene-bod1l is BOD1L1

also called symbol authority check · duplicate entry check · JMJD1C is KDM3C · BOD1L1 is BOD1L · one entry per thing holds

Entries here are named after gene symbols, and some genes have more than one symbol, so the same protein could in principle have been written up twice under two names. It has not been: of 574 such entries, none duplicates another and only two use an out-of-date name.

The same thing, for a scientist

This graph names entries after symbols, and cycle 61 found `gene-kdm3c` exists while HGNC's approved symbol for that gene is **JMJD1C**. That makes a symbol-keyed gap check report JMJD1C as a missing gene at 16 files while it has had an entry all along, and it makes `mechanism-h3k9me1-2-ctcf-balance-gates-kmt2a-rearrangement`'s falsifier [3] - which turns on separating KDM3B from JMJD1C - harder to read than it needs to be, because that is the same gene under its other name. Two questions follow and **only the second is dangerous**: how many entries use a non-approved symbol, and **do any two entries resolve to the same gene?** The second would be a duplicate under two names - a direct violation of the PI's standing rule of one entry per thing, and invisible to any filename check. **Measured over 574 symbol-shaped entries against 45,083 HGNC approved symbols, resolving on approved symbol then retired symbol then alias: ZERO duplicate groups.** No two entries of the same prefix resolve to the same gene. The one-entry-per-thing rule holds. **And only two entries of 574 use a symbol HGNC does not approve:** `gene-kdm3c` (alias; approved **JMJD1C**) and `gene-bod1l` (retired symbol; approved **BOD1L1**). 463 are exactly the approved symbol. **THE BLIND SPOT IS CHARACTERISED RATHER THAN ASSERTED, because a clean negative is the result most likely to be a measurement failure.** 111 entries do not resolve to any HGNC gene and are therefore invisible to the duplicate check. Reading all of them: **53** are multiword, fusion or compound ids (`target-crispr-correction-fusion-junction`, `protein-huca-complex`), **35** are `protein-X-domains` entries - a deliberate unit in this graph, not a gene - **21** are `mark-*`, and **exactly 2** are bare single tokens, which are the two already found. So no gene is hiding in the unresolved set, and the negative is not an artefact of things falling out of the denominator. **AND THE FIX WAS MOSTLY ALREADY THERE, which I only discovered by reading my own script output.** I set out to add the approved symbol to each entry’s `aliases`, and both entries **already carried it** — `JMJD1C` was already in `gene-kdm3c`’s aliases and `BOD1L1` in `gene-bod1l`’s. All that was actually added was the HGNC full name to one entry and a `symbol_authority_note` to both. So the entries were never unfindable by approved symbol; what is broken is narrower and is stated in `data.consequence_for_other_instruments`: the symbol-keyed instruments key on the entry **id**, and an alias field does not reach them. Renaming remains off the table — entry ids are referenced by more than 10,800 edges.

Facts and figures
scriptanalyses/entries-written-under-a-non-approved-symbol/run.py
resultsanalyses/entries-written-under-a-non-approved-symbol/results.json
statusrun
run date2026-09-22
why this rancycle 61 published an open question asking whether entries written under non-approved symbols should be reconciled, after gene-kdm3c turned up in a missing-gene queue while having an entry
THE DANGEROUS QUESTION ANSWEREDZERO duplicate groups. No two entries of the same prefix resolve to the same HGNC gene, so the PI's one-entry-per-thing rule holds across the symbol-named part of the corpus.
the fix appliedCORRECTED. I intended to add each approved symbol to aliases and found both were ALREADY present - JMJD1C in gene-kdm3c, BOD1L1 in gene-bod1l. Actually added: the HGNC full name to gene-kdm3c, and a symbol_authority_note to both. Renaming was never an option because entry ids carry more than 10,800 edges. The entries were therefore always findable by approved symbol; the real gap is that symbol-keyed instruments key on the id and never look at aliases.
consequence for other instrumentsany symbol-keyed gap check in this project - scripts/check-named-but-unwritten.py and the cycle-61 triage built on it - will keep reporting JMJD1C as a missing gene at 16 files until it resolves aliases. The alias field added here does not fix that, because those instruments key on the entry ID, not on the aliases list.
absence classmeasured-not-analysed
status counts
ALIAS_SYMBOL1.000ALIAS_SYMBOL: 1PREV_SYMBOL1.000PREV_SYMBOL: 1UNRESOLVED109.0UNRESOLVED: 109APPROVED463.0APPROVED: 463
scope
{
  "hgnc_approved_symbols": 45083,
  "symbol_shaped_entries": 574,
  "prefixes_walked": [
    "gene-",
    "protein-",
    "target-",
    "mark-"
  ],
  "resolution_order": "approved symbol, then prev_symbol, then alias_symbol"
}
status counts — the numbers behind the chart
{
  "APPROVED": 463,
  "UNRESOLVED": 109,
  "ALIAS_SYMBOL": 1,
  "PREV_SYMBOL": 1
}
the two non approved
{
  "gene-kdm3c": "ALIAS_SYMBOL - approved is JMJD1C, jumonji domain containing 1C",
  "gene-bod1l": "PREV_SYMBOL - approved is BOD1L1, biorientation of chromosomes in cell division 1 like 1"
}
the unresolved blind spot read in full
{
  "n": 111,
  "multiword_fusion_or_compound_ids": 53,
  "protein_X_domains_entries": 35,
  "mark_entries": 21,
  "bare_single_tokens": 2,
  "conclusion": "the two bare tokens are the two already found, so no gene is hiding in the set excluded from the duplicate check"
}
How this could bite us back
  • This is a naming and integrity audit and nominates nothing clinically. The only caution is against over-reading the clean negative: zero duplicates among symbol-named entries says nothing about whether any individual entry is correct, well-cited or about the protein it claims to be. PZP in this graph is named for an HGNC gene and means a domain cassette, and that entry would pass every check run here.
Still open
  1. Should scripts/check-named-but-unwritten.py resolve HGNC aliases before reporting a symbol as missing? It currently reports JMJD1C as a gap at 16 files because it keys on the entry id, and the alias field added here does not reach it. That is a one-line fix to the instrument and it was not made, because changing a shared instrument mid-cycle while two agents are running it would be reckless.
  2. How many entries are ABOUT a protein without being named after its symbol? Those are invisible to this check and could duplicate a symbol-named entry. Nothing here bounds that population.
  3. Is gene-bod1l's content about BOD1L1 or about something else? The symbol was retired rather than aliased away, which usually means a straightforward rename, but the entry was not read as part of this check - only its id was resolved.
Every source behind this entry (1)
  1. E1moderate confidence 3 of 5: One strong study, or several smaller consistent ones.database

    Of 574 entries whose id begins gene-, protein-, target- or mark-, resolved against 45,083 HGNC approved symbols on approved symbol then retired symbol then alias, 463 use exactly the approved symbol, 1 uses an alias (gene-kdm3c, approved JMJD1C), 1 uses a retired symbol (gene-bod1l, approved BOD1L1), 0 are ambiguous across multiple genes, and 109 do not resolve. No two entries sharing a prefix resolve to the same HGNC gene, so there are zero duplicate groups. Reading the unresolved set in full: 53 are multiword, fusion or compound ids, 35 are protein-X-domains entries, 21 are marks, and 2 are bare single tokens, which are the same two already identified.

    What this evidence cannot show

    AN ALIAS RESOLUTION CAN BE CONFIDENTLY WRONG, and this project has the canonical example: PZP is HGNC's alpha-2-macroglobulin while 21 entries here mean KMT2A's PHD-Zinc-finger-PHD cassette. The duplicate check inherits that risk in principle - two entries could be grouped as duplicates because an alias resolved wrongly - though with zero groups found it did not arise. The check is also confined to entries NAMED after a symbol; an entry about a protein under a descriptive id is invisible to it, and nothing here bounds how many of those exist.

    Evidence that argues against this (2)
    • A clean negative is the outcome most likely to be a measurement failure, and this project's ledger records several - an instrument that flagged 1,717 titles as truncated and was wrong about nearly all of them, and a cycle-60 audit wrong about almost everything on its first two runs. The defence here is that the excluded set was read in full rather than sampled, but the check still only looks where ids are symbol-shaped.
    • Finding no duplicates is weaker praise than it sounds. The strongest reason there are none may simply be that agents are told to list existing ids before writing and the ids are literally the symbols - so the convention that created the JMJD1C problem is the same convention that prevents duplicates. A graph that named entries descriptively would be more readable and more duplicate-prone, and this result does not argue that the current convention is right, only that it is internally consistent.
Connected to