RETRACTED: 'Sixteen percent of GEO sample labels contradict their own metadata' was an off-by-one in my own parser - GEO's brief format puts the title before the accession, so every sample was scored against the next sample's title; the true rate is ZERO, the deposit named as worst offender has none, and the same bug made me 'correct' an agent whose accessions were right
also called RETRACTED - the 16.4% was my parser · GEO puts the title before the accession · the manual check shared the bug it was checking · true rate 7 of 656, not 96 of 586 · the deposit disagrees with itself · GSE159608 metadata is 46/119 contradictory · a sample title is free text · the third vote was one vote counted twice · 16.4% of comparable GEO label pairs disagree
This entry previously reported that public gene-expression archives disagree with their own descriptions about one time in six. That was wrong: the fault was in the script that compared them, which lined up each experiment with the next one's name. The real disagreement rate is about one in a hundred, and the archive singled out as worst had none at all.
The same thing, for a scientist
# RETRACTED 2026-09-24 (cycle 121). THE 16.4% WAS A BUG IN MY OWN PARSER, NOT A PROPERTY OF ANY DEPOSIT. **The true rate is ZERO — 0 of 666 comparable pairs. GSE159608 — reported below as the worst offender at 46 of 119 antibody and 9 of 18 treatment contradictions — has ZERO.** **The error.** In GEO's brief format `!Sample_title` comes *before* `!Sample_geo_accession`: ``` !Sample_title = ALL1_Dot1L_AutoCUTnTag_(...) <- line 2 !Sample_geo_accession = GSM4835651 <- line 3 !Sample_characteristics_ch1 = ... antibody: Dot1L <- line 12 ``` My parser opened a new record only on the accession line, so **every sample was given the NEXT sample's title and compared against its own characteristics.** That manufactures a uniform one-record lag — and I reported that lag as the deposits' signature defect. **Every specific example below is an artefact.** `GSM5139712` is not titled VTP against EPZ-5676 characteristics; `GSM4835705` is not titled `KOPN8_H3K27me3` against *IgG* and *K562*; `GSM4835659` is not H3K4me3 against H3K4me1. In each case the title shown belonged to the following sample. **The manual check confirmed the bug to itself.** I read three mismatches 'in full' to satisfy `U2`, using an `awk` that began at the accession line and ran past the next title — **the same off-by-one**. A verification that shares the defect it is verifying is not a verification, and this one produced the confident sentence *"Real contradictions, not tokeniser artefacts"*. **`U2` named the category and I checked the wrong axis.** It says *"a mismatch I manufacture by failing to normalise is my defect, not the deposit's"* — so I checked **normalisation** and never checked **record boundaries**. The clause was right; my reading of it was too narrow. **Found by the q140 agent**, dispatched this cycle on a brief that asserted this entry's claim as established fact. It refused the premise and tested the parser. **That is four of the last six briefs containing a false premise that the agent caught**, and the first where the false premise was a published finding of mine rather than a ledger line. **FINAL FIGURE: ZERO.** After the parser was fixed the count fell to 7 of 656, and reading all seven individually showed **every one was this script's own tokeniser**, not a deposit: | apparent mismatch | what the raw record says | |---|---| | 4x `MLL1C` in title vs `MLL1` in characteristics | title `HCB1_ChIP_MLL1c_DMSO_REP1`, characteristics `antibody: MLL1 (c terminus)`, Active Motif 61296 — **the same antibody** | | 3x `EPZ5676` in title vs `DMSO` in characteristics | title `SEM_0umEPZ5676_Rep1`, characteristics `treated with: DMSO for 7 days` — **0 µM IS the vehicle arm** | Both normalisations were added and the final count is **0 of 666 comparable pairs across 32 series and 2,312 samples**. **The deposits agree with themselves completely.** 🟠 **Stated against my own interest:** those two normalisations were written *after* seeing which cases failed, which is a degree of freedom I did not control. Both are unambiguous on the raw records — a zero dose is a vehicle and a C-terminal MLL1 antibody is MLL1c — but a reader should know the sequence was 16.4% → 1.1% → 0% with me editing the tokeniser between the last two steps. 🔴 **AND THE SAME BUG MADE ME 'CORRECT' AN AGENT THAT WAS RIGHT.** In cycle 120 an agent reported GSE159608's SEM arms as **VTP `GSM5139713/14` against DMSO `GSM5139709/10`**. Using the shifted parse I wrote that it had *"two of its four sample accessions wrong"*, and put that into the entry's caveats, the king log and the commit message. **The agent's accessions were exactly right and mine were shifted by one.** The true map, read from raw line numbers: | arm | accessions | |---|---| | H3K4me3 DMSO | `GSM5139709`, `GSM5139710` | | H3K4me3 EPZ-5676 | `GSM5139711`, `GSM5139712` | | H3K4me3 VTP-50469 | `GSM5139713`, `GSM5139714` | | Menin (no drug arm) | `GSM5139719`, `GSM5139720` | **A parser defect that only shifted numbers also inverted a judgement about who was reliable.** That is the more expensive half of this error, and it is the half that had no pre-registered clause. **What survives:** the `U5` independence test (title and embedded filename agree 156/156 and are therefore one source, not two) is a comparison between two fields of the *same* record and is unaffected. The 7 residual mismatches are real and are listed in the corrected `results.json`. **What this reverses downstream:** GSE159608's SEM `DMSO` / `EPZ-5676` / `VTP-50469` arm labels **can be taken at face value**, so the cycle-120 correction to `absence-no-menin-inhibitor-occupancy-dataset-in-an-infant-derived-kmt2a-aff1-line` is no longer bounded to *the dataset exists*. --- **THE ORIGINAL ENTRY FOLLOWS, UNCHANGED EXCEPT FOR THIS BANNER, BECAUSE THE REASONING IS THE POINT.** **Statement.** A GEO sample title is free text, it is the label every downstream analysis keys on — including this project's, in cycle 116 — and nothing compares it to the sample's own `characteristics`. Comparing them across the 32 cached series, 2,312 samples: | | comparable | disagree | |---|---:|---:| | antibody | 252 | **62 (24.6%)** | | treatment | 334 | **34 (10.2%)** | | **total** | **586** | **96 (16.4%)** | **Pre-registered `A2` fires.** 14 series contradict themselves in a way not explained by `U1`'s pasted-template artefact, which accounted for 2 of 32. **The contradictions are not near-misses.** `GSM4835659` is titled `ALL1_H3K4me3_AutoCUTnTag` and its characteristics read *"cut&tag antibody: H3K4me1 Thermo cat# 710795"* — a different antibody with a catalogue number. `GSM4835705` is titled `KOPN8_H3K27me3` against *"antibody: IgG"* and *"cell type: K562"* — **wrong antibody and wrong cell line**. `GSM5139712` is titled `SEM_H3K4me3_VTP50469` against *"SEM ... with 30 uM EPZ-5676 for 72hrs"* — **the two drugs whose separation this project spent cycles 83 through 117 establishing.** **GSE159608 is the outlier and it is the one this cycle needed**: 46 of 119 antibody and 9 of 18 treatment assignments contradict, 55 of the 96 total. Excluding it the rate falls to roughly 9%, so *"GEO is 16% unreliable"* is the wrong generalisation — **some deposits are badly inconsistent and the only way to know is to check the one in front of you.** **THE PART I EXPECTED TO RESCUE THIS, AND DID NOT.** Each title carries a parenthesised original filename in a third vocabulary — `(20200324_DJ_Hs_K4m3_TB13_0323)`. It sides with the title **39 times to 0**, which reads as decisive vindication of titles. **`U5` was pre-registered against exactly that reading and it fires: title and filename never disagree with each other across 156 comparable pairs.** A field that never contradicts another is a field derived from it. **The third vote is one vote counted twice, and it adjudicates nothing.** **Consequence.** GSE159608 does contain SEM CUT&Tag under a menin inhibitor, which refutes one sentence in `absence-no-menin-inhibitor-occupancy-dataset-in-an-infant-derived-kmt2a-aff1-line`. **But which sample is the VTP arm cannot be decided from metadata**, so the refutation is bounded to *the dataset exists*. Its narrower claim — no menin **occupancy** readout under drug in an infant line — survives, because the SEM menin samples are DMSO-only.
Two independent reads hit this in one cycle, which is why it was measured
An agent scoring the GSE173599 degron arm found source_name reading HCB2/HCB3/HCB4/HCB5 while the same samples' treatment_protocol read HCB1 and the filenames said a third thing, and declined to interpret the arm rather than pick one. Separately, opening GSE159608 to check an absence claim produced SEM_H3K4me3_VTP50469 against "30 uM EPZ-5676".
Two hits in one cycle on two deposits is the signal that this is a property of the archive rather than of one careless submission, and it is the only reason the general measurement was made. The audit confirms it: GSE173599 carries 4 of 23 antibody contradictions and its sibling GSE173600 another 4 of 23.
It also cost this cycle a correction. The agent reporting the SEM finding named GSM5139713/14 against GSM5139709/10. GSM5139714 is H4K16ac, not an H3K4me3 VTP replicate, and GSM5139710 is the EPZ-5676 arm, not a DMSO control. Re-parsing the records rather than quoting the report is what caught it — the same rule that has caught every fabricated identifier in this project.
What this does and does not say about cycle 116
Cycle 116 searched 32 series and 2,312 samples for a menin readout under DOT1L inhibition and reached verdict D4, keying on sample titles. This audit does not overturn it, for a reason worth stating precisely: D4 was a statement about which series contain which channels, and channel identity is redundantly encoded across many samples in a series. A 16% per-sample label error degrades a per-sample arm assignment badly and a per-series inventory hardly at all.
What it does overturn is any future use of those titles at sample resolution — which is exactly what a re-analysis of the SEM VTP arms would require, and what the carried-forward task to reanalyse GSE159608's six SEM H3K4me3 libraries now has to contend with. That task cannot be done from metadata; it needs the signal. A correlation of the VTP-labelled libraries against the DMSO- and EPZ-labelled ones would settle the grouping empirically, and that is now the first step of it rather than an optional check.
U4 binds: none of this says the DATA are wrong. Mislabelled metadata over correct signal is fully recoverable by looking at the signal. The claim is only that the label cannot be trusted without that look.
A third deposit, and the defect tracks the SUBMITTER rather than the series
GSE252378, audited in cycle 121, carries the same offset: 9 of 21 comparable antibody assignments disagree (42.9%). The direction is identical — the characteristics field lags the sample title by exactly one record:
| GSM | title says | characteristics say |
|---|---|---|
| GSM8371008 | 148752_Menin_R1 | antibody KMT2A-N2 |
| GSM8371009 | 148752_Menin_R2 | antibody Menin |
| GSM8371002 | 148752_ENL_R1 | antibody Dot1L |
🔴 GSE159608 and GSE252378 share a first contributor — Derek H Janssens — and both series link PMID 39472576. Two deposits, four years apart, same submitter, same one-record lag. So this is a property of a submission pipeline, not of a careless series, which is a more useful and more actionable statement than the one this entry originally made.
🟠 It also spreads further than the antibody field. In GSE252378 the group field carries the fusion identity and is offset too: GSM8371030 is titled SEM_AFF1_1 and carries group: KMT2A-EPS15, although SEM is a KMT2A::AFF1 line. That is only visible because SEM's genotype is independently known — for the primary patient samples in that deposit there is no such external check, and any fusion assignment taken from that field inherits the lag.
🔵 This sharpens the original recommendation. Check the deposit in front of you becomes check the submitter: where one series from a group shows the lag, its siblings should be assumed to until tested.
| question | does a GEO deposit's sample title agree with its own characteristics fields? |
|---|---|
| verdict | A2 - deposits contradict themselves |
| series audited | 32 |
| samples | 2312 |
| series with genuine contradictions | 14 |
| template series excluded by U1 | 2 |
| rate excluding the worst series | roughly 9% |
| consequence for the absence entry | GSE159608 does contain SEM CUT&Tag arms labelled DMSO, EPZ-5676 and VTP-50469, refuting 'SEM never appears as a chromatin-profiling system under drug'; which sample is the VTP arm cannot be settled from metadata, so the refutation is bounded to 'the dataset exists' |
| does not overturn | cycle 116's D4 verdict, which is a per-SERIES channel inventory and is robust to per-sample label error because channel identity is redundantly encoded across many samples in a series |
| absence class | measured-not-curated |
| bite back | A reader could take this as licence to disbelieve any GEO label that is inconvenient. The audit supports the opposite discipline: check the specific deposit, because most of them contradict themselves rarely or not at all, and one series supplies more than half of everything found here. |
antibody — the numbers behind the chart
{
"comparable": 252,
"disagree": 62,
"pct": 24.6
}treatment — the numbers behind the chart
{
"comparable": 334,
"disagree": 34,
"pct": 10.2
}overall — the numbers behind the chart
{
"comparable": 586,
"disagree": 96,
"pct": 16.4
}worst series — the numbers behind the chart
{
"GSE159608": {
"antibody": "46/119",
"treatment": "9/18",
"samples": 419
},
"GSE173599": {
"antibody": "4/23",
"samples": 75
},
"GSE173600": {
"antibody": "4/23",
"treatment": "0/9",
"samples": 186
}
}read in full
{
"GSM4835659": "title ALL1_H3K4me3 vs characteristics 'H3K4me1 Thermo cat# 710795'",
"GSM4835705": "title KOPN8_H3K27me3 vs characteristics 'IgG' and 'cell type: K562'",
"GSM5139712": "title SEM_H3K4me3_VTP50469 vs characteristics 'SEM ... with 30 uM EPZ-5676 for 72hrs'"
}third vote
{
"sides_with_title": 39,
"sides_with_characteristics": 0,
"U5_independence_test": {
"comparable": 156,
"disagree": 0,
"independent": "no"
},
"reading": "the embedded filename never contradicts the title in 156 comparable pairs, which is what a DERIVED field looks like; the 39-0 result is one vote counted twice and does not adjudicate"
}third deposit cycle 121
{
"accession": "GSE252378",
"samples": 171,
"antibody_disagreements": "9 of 21 comparable (42.9%)",
"direction": "characteristics lag the sample title by exactly one record",
"group_field_also_offset": "GSM8371030 titled SEM_AFF1_1 carries group KMT2A-EPS15, though SEM is a KMT2A::AFF1 line",
"shared_first_contributor_with_GSE159608": "Derek H Janssens; both series link PMID 39472576",
"reading": "the defect tracks the SUBMITTER, not the series; where one series from a group shows the lag its siblings should be assumed to until tested"
}RETRACTED 2026 09 24
{
"what_was_claimed": "96 of 586 comparable pairs disagree (16.4%), 14 series affected",
"what_is_true": "0 of 666 comparable pairs disagree, across 32 series and 2,312 samples",
"GSE159608_claimed": "46 of 119 antibody and 9 of 18 treatment contradictions",
"GSE159608_true": "0 antibody and 0 treatment contradictions",
"GSE252378_claimed": "9 of 21 antibody (42.9%)",
"GSE252378_true": "0 of 44 antibody (0.0%)",
"the_bug": "the parser opened a new sample record on !Sample_geo_accession, but GEO's brief format emits !Sample_title first, so every sample was given the NEXT sample's title and compared against its own characteristics",
"why_the_manual_check_missed_it": "the awk used to read three mismatches 'in full' began at the accession line and ran past the following title, reproducing the same off-by-one; it confirmed the bug to itself",
"why_U2_did_not_catch_it": "U2 said a mismatch I manufacture by failing to normalise is my defect; I checked normalisation and never checked record boundaries",
"found_by": "the q140 agent, dispatched on a brief that asserted this entry as established fact, which refused the premise and tested the parser",
"what_survives": "the U5 independence test - title and embedded filename agree 156/156 and are one source rather than two - which compares two fields of the SAME record and is unaffected",
"residual_mismatches": [
"GSE173599/GSE173600 GSM5696327 and GSM5696328: title MLL1C vs characteristics HA+MLL1, probably this script's tokeniser splitting a compound antibody description",
"GSE83671 GSM2212263-65: title EPZ5676 vs characteristics DMSO"
],
"downstream_reversal": "GSE159608's SEM DMSO/EPZ-5676/VTP-50469 arm labels are usable, so the cycle-120 correction to the infant-line absence entry is no longer bounded to 'the dataset exists'",
"the_seven_residuals_were_also_mine": {
"4x MLL1C": "title HCB1_ChIP_MLL1c_DMSO_REP1 vs characteristics 'antibody: MLL1 (c terminus)' - the same antibody, Active Motif 61296",
"3x EPZ5676": "title SEM_0umEPZ5676_Rep1 vs characteristics 'treated with: DMSO for 7 days' - 0 uM is the vehicle arm",
"caveat": "both normalisations were added AFTER seeing which cases failed, an uncontrolled degree of freedom; the sequence was 16.4% -> 1.1% -> 0%"
},
"it_also_inverted_a_judgement_about_an_agent": {
"what_i_wrote_in_cycle_120": "an agent 'reported the SEM correction with 2 of 4 accessions wrong (GSM5139714 is H4K16ac; GSM5139710 is the EPZ arm)'",
"the_truth": "the agent's GSM5139713/14 for VTP and GSM5139709/10 for DMSO were exactly right; my accessions were shifted by one",
"true_map": {
"H3K4me3_DMSO": [
"GSM5139709",
"GSM5139710"
],
"H3K4me3_EPZ5676": [
"GSM5139711",
"GSM5139712"
],
"H3K4me3_VTP50469": [
"GSM5139713",
"GSM5139714"
],
"Menin_no_drug_arm": [
"GSM5139719",
"GSM5139720"
]
},
"why_this_is_the_worse_half": "a numeric defect also produced a false judgement about whose reporting to trust, and that judgement was written into an entry, a king log and a commit message"
}
}- Settle the GSE159608 SEM arms from the signal rather than the label. Correlating the VTP-labelled H3K4me3 libraries against the DMSO- and EPZ-labelled ones would group them empirically, and this is now the first step of the carried-forward SEM reanalysis rather than an optional check.
- Read a random sample of 20 of the 96 contradictions. Three were read and all three were selected for looking worst, which is the least representative sample available.
- Test the partial-template explanation: are contradictions clustered in contiguous runs of accession numbers? If so, many of the 96 are one clerical event rather than N, and the count is inflated.
- Run this audit against the GEO series behind every deposit-derived claim in this graph, not just the 32 cached here. Any per-sample arm assignment in the corpus rests on labels that have never been checked this way.
- E1strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.analysis
Parsing every cached GEO sample record across 32 series and 2,312 samples and comparing each sample's title against its own characteristics and treatment_protocol fields on normalised antibody and treatment tokens: 252 samples state an antibody in both fields, of which 62 disagree (24.6%); 334 state a treatment in both, of which 34 disagree (10.2%); 96 of 586 comparable pairs overall, 16.4%. Two of 32 series carry a single characteristics string pasted across every sample and are excluded as template artefacts, leaving 14 series with genuine contradictions. GSE159608 contributes 46 of 119 antibody and 9 of 18 treatment contradictions. The original filename embedded in each title sides with the title 39 times and the characteristics 0 times, but title and filename agree in 156 of 156 comparable pairs and never disagree.
analyses/does-this-deposit-agree-with-itself/run.py and results.json, this repository, computed 2026-09-23 against cached GEO sample dumps for 32 series · Oncofusion knowledge graph, coordinator · internal analysis, reproducible from the repository 2026What this evidence cannot show
THE DENOMINATOR IS COMPARABLE PAIRS, NOT SAMPLES: 586 of 2,312 samples state the same axis in both fields, so 74% of samples are outside this audit entirely and an unstated field was scored unstated rather than as agreement. A CONTRADICTION IS NOT PROOF THE DEPOSIT IS WRONG, only that it is internally inconsistent, and it does not say WHICH field is correct. The antibody and treatment token lists are the coordinator's; a mismatch created by failing to normalise a synonym would be a defect in this script rather than in the deposit, and only three mismatches were read in full - the other 93 are machine-scored and a systematic normalisation failure affecting one vocabulary could inflate the count substantially. The 16.4% is dominated by one series and is not a property of GEO. NOTHING HERE OPENS A SINGLE LIBRARY, so no statement is made about whether the underlying data match either label.
Evidence that argues against this (3)
- The three contradictions read in full were selected because they looked worst in a sorted list, which is the least representative sample available. Reading three of 96 and reporting them as characteristic of the whole is the same move this project criticised when an agent generalised from its cleanest cases, and a random sample of 20 would cost minutes and has not been done.
- An entirely innocent explanation is available and is not excluded here: GEO characteristics are frequently entered per submission BLOCK rather than per sample, so a block of samples can inherit a neighbour's description without anyone being wrong about the experiment. U1 only excludes the extreme form of this - one string across an entire series - and the partial form, a string pasted across a contiguous run of samples, would produce exactly the offset pattern seen in GSE159608 and is counted here as N separate contradictions when it may be one clerical event.
- This is the coordinator's third consecutive beat about instruments and metadata rather than about leukaemia, and the fourth in five cycles. The corpus gained two entries about its own hygiene this cycle while the agents did the biology. The pattern noted in cycle 119's counter-evidence has continued rather than corrected.
same cycle, same shape at a different layer: one instrument mismeasured the corpus's own citations, the other found the archive's sample labels contradict themselves - in both, the confident-looking number was on the wrong axis and a pre-registered uninformativeness clause caught it
GSE159608 contains SEM H3K4me3 Auto-CUT&Tag arms labelled DMSO, EPZ-5676 and VTP-50469, refuting 'SEM never appears as a chromatin-profiling system under drug'; the entry's narrower occupancy claim survives because its SEM menin samples are DMSO-only. CORRECTED 2026-09-24: this edge previously added that the deposit disagrees with itself about which sample is which arm, bounding the refutation to 'the dataset exists'. That was an off-by-one in the coordinator's parser; GSE159608 has zero contradictions and the arm labels are usable.
RETRACTED 2026-09-24. This edge claimed GSM5139712 is titled VTP50469 while its own characteristics read 30 uM EPZ-5676, and warned that sample-resolution arm assignments in these deposits need the signal rather than the label. The mismatch was an off-by-one in the coordinator's parser - GEO emits !Sample_title before !Sample_geo_accession - and GSE159608 has zero title-versus-characteristics contradictions. Cycle 117's 2x2 is NOT bounded by any metadata defect.
Q136's drug-class diagnostic rests on per-sample arm labels from GEO deposits, and those labels are sound: on a corrected parse the title-versus-characteristics contradiction rate is 0 of 666 comparable pairs across 32 series and 2,312 samples, with none in GSE159608. This edge previously cited a 16.4% rate, which was the coordinator's own parser bug.
CORRECTED 2026-09-24: this edge claimed GSE252378 showed the same one-record lag at 9 of 21 antibody assignments (42.9%) and that the defect tracked the submitter. Re-parsed with correct record boundaries GSE252378 has 0 of 44 antibody disagreements, and GSM8371030 titled SEM_AFF1_1 correctly carries group KMT2A-AFF1. There is no submitter-systematic defect; the fusion assignments that entry's counts rest on are reliable.
GSE260742 is cited by 147 entries, five times the most-cited paper in this corpus, and no entry records its label-integrity status - which remains worth checking even though the 16.4% contradiction rate this edge originally cited was the coordinator's parser bug and the true rate is 1.1%. Concentration of evidence in a few deposits is the real exposure the census measures.
supersedes it with the corrected measurement: 0 disagreements in 1,419 comparable pairs across three axes, against its retracted 96 of 586 (16.4%), which was this script's own record-boundary off-by-one plus seven tokeniser artefacts
The 16.4% headline is an off-by-one; corrected, 7 of 656 pairs (1.1%) and none survives a hand read
Names the exact line, the one-token fix, and the fields of the affected entry that change