Picking a GEO supplementary file by slot number instead of extension substitutes a depth-normalised bigWig for a raw fragment BED in 107 of this deposit's 171 records
Each sample in this dataset lists two downloadable files, but their order is not consistent between samples. Taking whichever comes first gives you the wrong kind of file about two thirds of the time.
The same thing, for a scientist
`!Sample_supplementary_file_1` holds the `*_hg38.bed.gz` fragment BED for **64** of the 171 records and the `*.hg38.bw` bigWig for the other **107** [E1]. The slots are ordered by filename, and the BED is named `GSM<id>_hg38.bed.gz` while the bigWig is named `GSM<id>_<sample>_<antibody>.hg38.bw`, so which sorts first depends on whether the sample label begins with a character before or after `h`. **The failure is silent and it looks like data.** Both files are gzipped-or-binary genomic tracks for the same GSM. A pipeline that takes slot 1, decompresses and counts lines will not error on a bigWig - it will read binary garbage and produce a small or zero count, which is indistinguishable from a shallow library unless something checks. A pipeline that reads values will get a **depth-normalised** signal where it believes it has raw counts, and every Poisson or binomial interval computed downstream will be fictional. **The rule:** select a GEO supplementary file by its **extension or by a filename regex**, never by `_1`/`_2`. Then assert the selection - this beat's extractor asserted exactly one `.bed.gz` per record before downloading anything, and rejected any output whose `#total_fragments` fell below 100,000.
The guard that caught the sibling failure
The same extractor's first run produced 133 consecutive failures in under a minute because the URL list was written with Windows line endings and every URL carried a trailing carriage return. The failures were caught only because the script asserted a minimum fragment count on its own output: curl in a pipeline does not set the pipeline's exit status, so the if testing the download had succeeded was testing awk's status and would have passed. The check that worked was the one on the output, not the one on the command.
| script | analyses/q144-unbounded-magnitude/run.py |
|---|---|
| status | run |
| result summary | BED in slot 1 for 64/171 records, slot 2 for 107/171. |
- How many analyses in this corpus that cite a GEO supplementary file record which slot they took it from, and could any of them have taken the wrong file type?
- E1established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.dataset
In GSE252378 the fragment BED occupies !Sample_supplementary_file_1 in 64 records and !Sample_supplementary_file_2 in 107 records; the slot order is not constant across the deposit.
GSE252378 - KMT2A oncoproteins induce epigenetic resistance to targeted therapies (171 GSMs, AutoCUT&RUN / AutoCUT&Tag, hg38 fragment BEDs and bigWigs) · Janssens DH, Henikoff S (Fred Hutchinson Cancer Center / Van Andel Institute) · NCBI Gene Expression Omnibus 2024What this evidence cannot show
Counted over all 171 records of the series matrix. This is a property of this deposit's filenames, not a documented GEO guarantee, so the direction of the split will differ in other accessions - which is the point: the slot number carries no type information anywhere.
Evidence that argues against this (1)
- A reader could argue this is a naming accident of one submission rather than a general hazard. It is - but the generalisable part is that GEO's supplementary-file fields are positional and untyped, so any accession with two file types per sample can present the same trap, and nothing in the record warns of it. Janssens DH et al. 2024
retrieval hazard in the same deposit