Skip to content

Experiment to BioSample, via the ENA portal

Route id: experiment->biosample:ena_filereport Provider: EBI ENA portal Direction: SRX/ERX/DRX → SAMN/SAMEA/SAMD

curl -s 'https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRX21131063&result=read_run&fields=sample_accession&format=tsv&limit=0'

The experiment is the accession GEO names — !Sample_relation = SRA: points at an SRX — so this is the step that turns GEO's own record into an identity ENA and NCBI both recognise.

Measured

Corpus: sample:3000@reprocessed-srx, a seeded draw from the 114,715 experiments in the reprocessed table. Surveyed: 2026-09-15.

Resolved 2,959
Empty 41
Failed 0
Unique BioSamples 2,893

41 empty is 1.37%, and it is the same population as the experiments SOFT names that carry no runs, measured directly at 1.23% (95% CI 0.84–1.63%) on a different draw. The two agree inside that interval, which is the expected relationship: an experiment with no runs has no result=read_run row, so it returns empty here for exactly the same reason it returns no runs there.

That makes this route a cheap detector for the pathology: one request says whether an experiment GEO names is one that carries data.

Runs, experiments and samples do not line up one-to-one

2,959 experiments resolve to 2,893 BioSamples — a little sharing, where one biological sample was prepared into two libraries (CITE-seq alongside gene expression is the common case, and SRS9161836 in the tier-one corpus is the worked example). Going the other way, the sample → run census found 2.8 runs per sample. Nothing in this hierarchy is a bijection, in either direction.