Home › Fields

Fields

The 4 core and 13 key fields curated for every sample, with coverage and the routes that supply them.

About this page

The catalog curates 4 core fields (age_category, country, health_condition, subject_id) and 13 key fields (age_at_collection_days, sex, detailed_location, lifestyle, collection_date, intervention, antibiotic_exposure, bmi, timepoint_label, diet, smoking_status, medication, stool_consistency_bristol) for every sample — tiers defined in config/packs/gut.yaml — plus 9 infant-extension fields that exist only where a study was curated in depth for the infant extension. Fields whose column is not yet in this package are omitted below. Every committed value is one row of gut_sample_determinations.parquet with a route (R1 archive attribute · R2 supplementary table · R3 paper full text · R4 abstract / description), a scope (sample or study_all = a cohort-wide statement applied to the study's samples), a confidence and a verbatim evidence quote. Precedence per sample × field: R1 > R2 > R3 > R4 (the infant-extension curation wins for its studies). Coverage below is the share of all 573,001 samples with a value.

Core fields (4 fields; core_fields in the pack — the contribute worklist counts a study as open when ≥ 2 of them are below threshold)

fieldtypesamplescoveragestudiesneonateinfantchildadolescentadultelderlyunknownroutes (share of values)
age_category core377,23365.8%1,82599% exact73% exact36% exact73% exact31% exact48% exact—
R1 140,823 · R2 39,637 · R3 58,912 · R4 137,861
country coreiso3166_alpha2523,60591.4%2,58392%97%94%91%91%97%89%
R1 475,105 · R2 19,082 · R3 16,020 · R4 13,398
health_condition corevocab285,98749.9%1,85953%42%63%69%61%49%37%
R1 109,978 · R2 57,770 · R3 50,250 · R4 67,989
subject_id coretext427,17674.6%1,91899%75%66%74%79%79%68%
R1 317,593 · R2 26,254 · R3 65,086 · R4 18,243

Key fields (13 fields; key_fields in the pack)

fieldtypesamplescoveragestudiesneonateinfantchildadolescentadultelderlyunknownroutes (share of values)
age_at_collection_days keyfloat165,00528.8%80099%73%36%73%31%49%0%
R1 119,303 · R2 39,984 · R3 5,374 · R4 344
sex keyenum192,16933.5%88170%41%35%63%37%57%19%
R1 133,426 · R2 47,217 · R3 11,526 · R4 0
detailed_location keyderived309,72154.1%1,89439%44%74%70%62%71%44%
R1 0 · R2 0 · R3 0 · R4 0
lifestyle keyvocab18,8723.3%979%7%3%2%2%7%3%
R1 3,545 · R2 696 · R3 8,204 · R4 6,427
collection_date keyiso8601_partial440,06676.8%2,27176%69%79%75%80%89%73%
R1 387,454 · R2 499 · R3 46,813 · R4 5,300
intervention keyvocab_list49,1528.6%3737%10%8%11%12%9%4%
R1 43,715 · R2 5,241 · R3 63 · R4 133
antibiotic_exposure keyenum115,62220.2%62835%22%32%33%25%31%10%
R1 26,144 · R2 38,437 · R3 45,171 · R4 5,870
bmi keyfloat53,6139.4%2761%1%3%9%16%30%2%
R1 34,941 · R2 18,672 · R3 0 · R4 0
timepoint_label keytext179,69831.4%94360%62%38%43%29%24%22%
R1 157,154 · R2 22,544 · R3 0 · R4 0
diet keyvocab16,9293.0%8015%4%1%4%3%4%1%
R1 12,676 · R2 4,150 · R3 46 · R4 57
smoking_status keyvocab13,9572.4%390%0%0%3%4%6%1%
R1 11,326 · R2 2,095 · R3 536 · R4 0
medication keyvocab_list10,5521.8%730%0%1%1%3%5%1%
R1 7,751 · R2 2,193 · R3 570 · R4 38
stool_consistency_bristol keyint3,0380.5%110%0%0%1%1%4%0%
R1 3,038 · R2 0 · R3 0 · R4 0

Further fields (15 fields)

fieldtypesamplescoveragestudiesneonateinfantchildadolescentadultelderlyunknownroutes (share of values)
collection_year otherderived440,06676.8%2,27176%69%79%75%80%89%73%
R1 0 · R2 0 · R3 0 · R4 0
health_condition_detail othertext309,67854.0%1,92036%37%80%88%67%61%40%
R1 115,345 · R2 53,817 · R3 43,711 · R4 96,805
latitude otherfloat224,29839.1%1,3852%2%61%49%50%74%33%
R1 224,298 · R2 0 · R3 0 · R4 0
longitude otherfloat224,29839.1%1,3852%2%61%49%50%74%33%
R1 224,298 · R2 0 · R3 0 · R4 0
location_region othertext216,83337.8%1,36111%20%59%50%46%57%30%
R1 181,035 · R2 1,137 · R3 26,971 · R4 7,690
location_locality othertext170,36629.7%1,16528%25%37%50%33%38%25%
R1 113,761 · R2 0 · R3 44,055 · R4 12,550
location_site othertext93,05716.2%56922%18%21%23%18%13%13%
R1 6,536 · R2 0 · R3 61,425 · R4 25,096
family_id othertext34,8146.1%8722%15%12%12%3%1%5%
R1 30,507 · R2 4,121 · R3 186 · R4 0
family_role othervocab32,6865.7%9224%18%5%5%2%1%5%
R1 28,978 · R2 3,451 · R3 257 · R4 0
intervention_detail othertext20,0333.5%1190%0%4%4%7%5%1%
R1 19,900 · R2 0 · R3 0 · R4 133
lifestyle_detail othertext16,4792.9%788%6%2%1%1%5%3%
R1 1,775 · R2 171 · R3 6,351 · R4 8,182
shared_setting_type othervocab10,3271.8%462%4%5%4%1%3%1%
R1 7,905 · R2 1,448 · R3 974 · R4 0
shared_setting_id othertext9,6281.7%432%4%5%4%1%1%1%
R1 7,885 · R2 1,686 · R3 57 · R4 0
diet_detail othertext4,1330.7%420%0%1%1%1%1%0%
R1 4,118 · R2 0 · R3 15 · R4 0
medication_detail othertext3,1690.6%360%0%1%1%1%2%0%
R1 2,097 · R2 525 · R3 509 · R4 38

Infant extension (9 fields; carried verbatim from the infant curated tables, only for infant-extension samples)

fieldtypesamplescoveragestudiesneonateinfantchildadolescentadultelderlyunknownroutes (share of values)
preterm_status infant extensionenum32,7295.7%11055%35%0%0%0%0%0%
R1 5,840 · R2 5,199 · R3 11,937 · R4 9,753
delivery_mode infant extensionenum29,8495.2%8547%25%1%1%1%1%1%
R1 17,107 · R2 11,354 · R3 1,388 · R4 0
gestational_age_weeks infant extensionfloat13,1412.3%4736%11%0%0%0%0%0%
R1 5,785 · R2 7,106 · R3 223 · R4 27
feeding_mode infant extensionenum12,0052.1%6926%11%0%0%0%0%0%
R1 4,322 · R2 5,999 · R3 1,576 · R4 108
birth_weight_grams infant extensionfloat10,7321.9%3732%8%0%0%0%0%0%
R1 2,633 · R2 8,002 · R3 97 · R4 0
maternal_antibiotics infant extensionenum8,6771.5%3817%9%0%0%0%0%0%
R1 1,926 · R2 5,052 · R3 1,679 · R4 20
probiotic_exposure infant extensionenum8,0041.4%234%3%0%1%1%1%1%
R1 6,597 · R2 429 · R3 978 · R4 0
nec_status infant extensionenum5,3240.9%1821%3%0%0%0%0%0%
R1 855 · R2 4,340 · R3 129 · R4 0
hmo_supplementation infant extensionenum1,2560.2%34%1%0%0%0%0%0%
R1 1,148 · R2 0 · R3 108 · R4 0

Definitions and caveats

fieldallowed routesvocabulary / valuesdefinition and caveats
age_categoryR1 R2 R3 R4neonate, infant, child, adolescent, adult, elderlyage at collection at the level of a life stage: from the exact age when known (age_at_collection_days, bins above), else the sample's own life-stage attribute, else a cohort statement in the paper (R3) or abstract (R4), else the study's single registry life stage; the basis is recorded per sample in age_category_basis. 'unknown' = not covered. Per-category cells for this row: share of the category whose life stage comes from an exact age (the rest rests on a sample life-stage attribute or a cohort statement).
countryR1 R2 R3 R4ISO-3166 alpha-2ISO-2 of the sampling / recruitment country from archive attributes, tables or paper text (not the laboratory or ethics-committee country).
health_conditionR1 R2 R3 R4healthy_control, ibd_unspecified, crohns_disease, ulcerative_colitis, ibs, colorectal_cancer, colorectal_adenoma, other_cancer, obesity, type2_diabetes, type1_diabetes, cardiometabolic_other, liver_disease, kidney_disease, gi_infection_or_diarrhoea, other_infection, autoimmune_inflammatory, neurological_psychiatric, allergy_or_atopy, malnutrition, transplant_or_immunocompromised, pregnancy_postpartum, intervention_cohort, other_disease, unknown, preterm_nicu, nec, sepsis_or_infection, ibd_or_gi_diseaseControlled vocabulary (config/vocab/health_conditions.yaml). Cohort-wide codes (R3/R4) are committed only when every sequenced subject shares the condition; case–control cohorts stay unknown at sample level unless the table or attribute names the group.
subject_idR1 R2study's own subject identifier (free text)Submitter identifier of the individual (host_subject_id, participant, donor …); never a sample id. Not evaluated.
age_at_collection_daysR1 R2 R3 R4integer days postnatalAge at sample collection in days. Archive ages without a unit are read as years for non-infant studies (rule recorded in the field map); ranges and timepoint lists are never values. The age category (neonate … elderly) is derived from this value, else from the sample's or study's stated life stage (basis column).
sexR1 R2 R3female, male, unknownArchive attribute, table column or single-sex cohort statement (R3); no external truth set.
detailed_locationR1 R2 R3 R4derived: location_site, location_locality, location_regionmost specific place below the country: 'site, locality, region' with empty parts dropped; not a determination itself — its parts are
lifestyleR1 R2 R3 R4hunter_gatherer, pastoralist, traditional_agriculturalist, rural_non_industrialized, urban_industrialized, transitional_or_migrant, isolated_religious_community, indigenous_community, nomadic, vegetarian_or_vegan, athlete, military, spaceflight_or_analog, institutionalized, extreme_environment, other_lifestyle, unknownControlled vocabulary (config/vocab/lifestyle.yaml); committed only when the source states it — never inferred from the country.
collection_dateR1 R2 R3 R4As specific as the source gives it (YYYY, YYYY-MM, YYYY-MM-DD or an ISO interval for a stated sampling period); placeholders (missing / not collected / restricted) stay unknown.
interventionR1 R2 R3 R4what this sample's subject had received IN THE STUDY at or before sampling (';'-joined sorted codes; placebo / no_intervention for control arms and pre-intervention baselines). Per-sample from archive attributes (R1); the study-level list of administered interventions is gut_studies.interventions (R4, abstracts) and is not copied onto samples — controls of an FMT trial are not FMT samples.
antibiotic_exposureR1 R2 R3 R4yes, no, unknown"yes"/"no". "no" from a source that documents no exposure (attribute, table, or an exclusion window ≥ 1 month in the Methods), never from "no mention".
bmiR1 R2Body-mass index from archive attributes or tables; plausibility window 10–80; never derived from a cohort mean.
timepoint_labelR1 R2study's own label (free text)Compact tokens (D6, M4, baseline) are labels, not ages, unless the study confirms the unit.
dietR1 R2 R3 R4habitual diet pattern stated by the source
smoking_statusR1 R2 R3 R4never | former | current
medicationR1 R2 R3 R4';'-joined sorted codes; antibiotics are antibiotic_exposure, not here
stool_consistency_bristolR1 R2Bristol stool form scale 1–7 as stated; textual forms (hard / normal / loose / watery) are mapped 2 / 4 / 6 / 7 with confidence 0.7
collection_yearR1 R2 R3 R4leading YYYY of collection_date (start of an interval)
health_condition_detailR1 R2 R3 R4Free text behind the code (diagnosis, group label, criterion).
latitudeR1 R2Decimal degrees from lat_lon / geographic-location attributes (R1/R2 only), rounded to 4 decimals.
longitudeR1 R2Decimal degrees; same source row as latitude.
location_regionR1 R2 R3 R4First-level administrative region below the country (state, province, prefecture …); English exonym, no country name.
location_localityR1 R2 R3 R4City, town, village or district where subjects were recruited — not where the laboratory is.
location_siteR1 R2 R3 R4Named recruitment site (hospital, clinic, school, cohort field station, community name) in the source's own words.
family_idR1 R2 R3the source's own family / household / dyad / twin-pair identifier; samples of related people share it (within the project); never a cohort or study id
family_roleR1 R2 R3role of the sampled person in that family: mother | father | parent | child | twin | sibling | partner | grandparent | other_relative | household_member
intervention_detailR1 R2 R3 R4
lifestyle_detailR1 R2 R3 R4Named population or the source's own words behind the lifestyle code (Hadza, Hutterite colony, elite rugby players …).
shared_setting_typeR1 R2 R3 R4a unit below the project shared with other sampled people: household, village / community, tribe, daycare / school, care home, ward, military unit, team, workplace
shared_setting_idR1 R2 R3 R4the source's name / code of that unit (e.g. 'H12', 'Mbomo', 'daycare D3')
diet_detailR1 R2 R3 R4
medication_detailR1 R2 R3 R4
preterm_statuspreterm | term | unknownInfant field: term requires ≥ 37 weeks when derived from a criterion.
delivery_modevaginal | c_section | c_section_elective | c_section_emergency | unknownInfant field: vaginal / caesarean; categories as stated by the source.
gestational_age_weeksfloat weeks at birthInfant field: completed weeks at birth.
feeding_modeexclusive_breast | mixed | formula | weaned | unknownInfant field: breast / mixed / formula as stated; boolean feeding columns never become a value.
birth_weight_gramsinteger gramsInfant field; no external truth set.
maternal_antibioticsyes | no | unknown (pregnancy, labour or lactation)Infant field: intrapartum or pregnancy antibiotics to the mother.
probiotic_exposureyes | no | unknownInfant field: any probiotic given to the infant.
nec_statusyes | no | unknown (necrotising enterocolitis diagnosis)Infant field: necrotising enterocolitis diagnosis.
hmo_supplementationyes | no | unknownInfant field: HMO-supplemented formula.

Health-condition vocabulary

config/vocab/health_conditions.yaml. Codes are assigned from archive attributes and tables by rule and by a utility model over distinct (key, value) pairs, and from papers as cohort-wide statements only when every sequenced subject shares the condition; unknown is never a value.

codelabelsamplesstudies
healthy_controlHealthy / control116,4001,005
other_diseaseOther disease / condition17,741201
other_cancerOther cancer (incl. immunotherapy cohorts)13,124149
gi_infection_or_diarrhoeaGI infection / diarrhoea (incl. C. difficile)12,705133
transplant_or_immunocompromisedTransplant / immunocompromised (HSCT12,39266
other_infectionOther infection (HIV11,673116
neurological_psychiatricNeurological / psychiatric (PD9,688134
preterm_nicuPreterm / NICU (infant)9,02726
cardiometabolic_otherOther cardiometabolic (hypertension8,48572
obesityObesity / overweight8,06487
ulcerative_colitisUlcerative colitis7,88490
type2_diabetesType 2 diabetes / prediabetes7,07769
crohns_diseaseCrohn's disease6,903102
liver_diseaseLiver disease (cirrhosis6,61259
colorectal_cancerColorectal cancer4,94378
malnutritionMalnutrition / undernutrition4,53217
autoimmune_inflammatoryAutoimmune / inflammatory (RA4,45865
ibsIrritable bowel syndrome4,27240
intervention_cohortIntervention cohort (drug3,61114
kidney_diseaseKidney disease3,22822
pregnancy_postpartumPregnancy / postpartum2,43729
ibd_unspecifiedIBD (unspecified)2,23544
allergy_or_atopyAllergy / atopy / asthma2,22628
ibd_or_gi_diseaseIBD or GI disease (infant)1,9918
colorectal_adenomaColorectal adenoma / polyp1,58331
necNecrotising enterocolitis (infant)1,2519
type1_diabetesType 1 diabetes1,10816
sepsis_or_infectionSepsis / infection (infant)3377

Confidence by route

Confidence is a discrete engine tier, not a calibrated probability: R1 parsers 0.7–0.9 by unit certainty; R2 table joins 0.8–0.85; R3 two-replicate full-text statements 0.6–0.7; R4 abstract statements ≤ 0.5. Cohort-wide rows (scope = study_all) are counted per sample they were applied to.

routesourcevalues< 0.50.5–0.690.7–0.84≥ 0.85cohort-wide (study_all)
R1archive attribute2,857,8001134,176410,9292,312,6940
R2supplementary table398,67108,816264,926124,9290
R3paper full text452,2857,45326,059418,6011720
R4abstract / description278,20189,191188,98213150

Package data dictionary

Every column of every package table (DATA_DICTIONARY.md). The catalog tables are gut_studies, gut_sample_metadata_wide, gut_sample_determinations; the registry tables are registry_*; the remaining tables are the infant extension.

Show the data dictionary

Data dictionary

sample_metadata_wide.parquet

column type meaning
sample_key string ENA/BioSample accession (SAMEA/SAMN/SAMD) — primary key
study_accession str BioProject (PRJ…)
secondary_sample str ENA secondary sample accession (ERS/SRS/DRS)
sample_title str submitter sample title
body_site_class str vocabulary (v1.2.1): primary — infant gut/stool/meconium/rectal sample; unknown — no body-site evidence, kept in body-site scope; excluded — non-gut site (skin, oral, milk, vaginal, nasal, blood…) or, since v1.2.1, a non-human host / isolate-genome sample (exclusion_reason_code); linked — mother/other sample linked to an infant subject, outside body-site scope. Body-site scope = {primary, unknown}; headline scope = catalog_scope (age scope ∧ body-site scope)
collection_date str archive collection_date as given
is_gold_heldout bool True if in the curatedMetagenomicData evaluation set
probiotic_exposure str yes
preterm_status str preterm
gestational_age_weeks float64 float weeks at birth
delivery_mode str vaginal
feeding_mode str exclusive_breast
antibiotic_exposure str yes
age_at_collection_days float64 integer days postnatal
birth_weight_grams float64 integer grams
country str ISO-3166 alpha-2
maternal_antibiotics str yes
hmo_supplementation str yes
nec_status str yes
health_condition str healthy_control
multiple_birth str singleton
sibling_in_study str yes
geo_subregion str 'City, Region' free text as given by submitter (never reverse-geocoded)
sex str male
timepoint_label str study's own label (free text)
subject_id str study's own subject identifier (free text)
probiotic_exposure__confidence float confidence (0–1) of probiotic_exposure
preterm_status__confidence float confidence (0–1) of preterm_status
gestational_age_weeks__confidence float confidence (0–1) of gestational_age_weeks
delivery_mode__confidence float confidence (0–1) of delivery_mode
feeding_mode__confidence float confidence (0–1) of feeding_mode
antibiotic_exposure__confidence float confidence (0–1) of antibiotic_exposure
age_at_collection_days__confidence float confidence (0–1) of age_at_collection_days
birth_weight_grams__confidence float confidence (0–1) of birth_weight_grams
country__confidence float confidence (0–1) of country
maternal_antibiotics__confidence float confidence (0–1) of maternal_antibiotics
hmo_supplementation__confidence float confidence (0–1) of hmo_supplementation
nec_status__confidence float confidence (0–1) of nec_status
health_condition__confidence float confidence (0–1) of health_condition
multiple_birth__confidence float confidence (0–1) of multiple_birth
sibling_in_study__confidence float confidence (0–1) of sibling_in_study
geo_subregion__confidence float confidence (0–1) of geo_subregion
sex__confidence float confidence (0–1) of sex
timepoint_label__confidence float confidence (0–1) of timepoint_label
subject_id__confidence float confidence (0–1) of subject_id
probiotic_exposure__route str evidence route of probiotic_exposure (R1–R4)
preterm_status__route str evidence route of preterm_status (R1–R4)
gestational_age_weeks__route str evidence route of gestational_age_weeks (R1–R4)
delivery_mode__route str evidence route of delivery_mode (R1–R4)
feeding_mode__route str evidence route of feeding_mode (R1–R4)
antibiotic_exposure__route str evidence route of antibiotic_exposure (R1–R4)
age_at_collection_days__route str evidence route of age_at_collection_days (R1–R4)
birth_weight_grams__route str evidence route of birth_weight_grams (R1–R4)
country__route str evidence route of country (R1–R4)
maternal_antibiotics__route str evidence route of maternal_antibiotics (R1–R4)
hmo_supplementation__route str evidence route of hmo_supplementation (R1–R4)
nec_status__route str evidence route of nec_status (R1–R4)
health_condition__route str evidence route of health_condition (R1–R4)
multiple_birth__route str evidence route of multiple_birth (R1–R4)
sibling_in_study__route str evidence route of sibling_in_study (R1–R4)
geo_subregion__route str evidence route of geo_subregion (R1–R4)
sex__route str evidence route of sex (R1–R4)
timepoint_label__route str evidence route of timepoint_label (R1–R4)
subject_id__route str evidence route of subject_id (R1–R4)
subject_key str resolved subject id (study-scoped)
role str infant · mother · other · unknown · adult (age ≥ 18 y) · child (1,101 d – 18 y). infant only when evidenced: an attribute/sample-name role, or age_scope ∈ {infant_evidenced, study_all_infant}; unevidenced body-site defaults are unknown (v1.2)
role_source str what evidences role: attr_role, sample_name_token, body_site_raw, body_site_class=linked, age_scope:<value>, none
t_index float64 ordinal timepoint within subject
n_timepoints_subject float64 timepoints for this subject
linked_infant_subject_key str for mother samples: the infant's subject_key
run_accessions str ';'-joined run accessions
n_runs int64 runs for this sample
instrument_model str instrument model(s)
library_layout str PAIRED/SINGLE
read_count_total int64 sum of read_count over runs
study_title str BioProject title
cohort_id str cohort cluster id (COH…)
cohort_name str cohort name
first_public_min str earliest run release date in study
adult_age_flag bool Rule (v1.2): True iff age_at_collection_days > 1,100 — i.e. the sample carries a committed age_at_collection_days determination whose parse_note starts with out_of_scope_adult (an archive age attribute, R1, that the validator's in-scope check validate_age rejected as age N days outside 0-1100). The flag is therefore always evidence-linked; the 12 v1.1 samples that carried both an in-scope and an out-of-range age were resolved in favour of the archive attribute (reasons in value_history.parquet, change_stage = auditor_review:B9)
n_fields_with_value int64 count of populated metadata fields
ena_sample_url str ENA browser link
ena_study_url str ENA browser link

sample_determinations.parquet

column meaning
sample_key, study_accession, field_name key
field_value raw value as found in the source
value_normalized value in the controlled vocabulary/unit
confidence 0–1
evidence_source label: sample.attr.<key>, run.library_name, sample_id_pattern, paper.supp.table, paper.fulltext.methods, paper.abstract, study.description …
evidence_locator attribute key / pmcid:file:sheet:column / section
evidence_quote ≤12-word verbatim quote
evidence_limited_to_abstract 1 when the paper was paywalled
determined_by parser or model id
route R1–R4
scope sample
parse_note derivation notes (unit resolution, propagation, supersession, review flags)
group_audit keep/downgrade for group statements (Opus audit)
src_track pipeline pass that produced the row
release_added release in which this row first became visible (R<YYYY>.<n> or a pre-numbered package semver 1.0.0–1.2.2); pre-1.3.0 values are reconstructed — see DATA_DICTIONARY 'Release columns'
release_retired release that replaced/removed the row; null (empty in CSV) = current row
package_added semver of the data package in which the row first appeared

Routes

R1 = archive sample attribute or sample-name convention (per sample); R2 = supplementary table row (per sample; 'subject_level_join' in parse_note when copied from a per-subject row); R3 = statement in the paper text applied to a defined group; R4 = abstract/ENA description statement (group; confidence ≤0.5).

Field vocabularies

field values
delivery_mode vaginal
feeding_mode exclusive_breast
preterm_status preterm
antibiotic_exposure yes
maternal_antibiotics yes
probiotic_exposure yes
hmo_supplementation yes
nec_status yes
age_at_collection_days integer days postnatal
gestational_age_weeks float weeks at birth
birth_weight_grams integer grams
country ISO-3166 alpha-2
sex male
timepoint_label study's own label (free text)
subject_id study's own subject identifier (free text)
health_condition healthy_control
multiple_birth singleton
sibling_in_study yes
geo_subregion 'City, Region' free text as given by submitter (never reverse-geocoded)

study_metadata_wide.parquet

column meaning
study_accession, study_title, n_samples, n_runs, first_public_min archive identity and size
catalog_status, triage_verdict, decision_stage, confidence, evidence INFANT-catalog inclusion verdict and its evidence (historical; not all-age catalog membership — use gut_studies.parquet)
universe_slice enumeration channel that found the study
recov_age, recov_delivery, … recoverability tier predicted before extraction (R1 archive / R2 table / R3 paper / R4 abstract / R0 none)
cov_<field> fraction of the study's infant-scope samples with a value
cohort_id, cohort_name, n_linked_papers, linked_pmids cohort and literature
n_unique_infants_est distinct resolved subject_key among role = infant samples — populated only when n_unique_infants_source ∈ {subject_ids, subject_ids_partial}; NaN otherwise (v1.2; v1.1 wrote 0 or n = n_samples sentinels)
n_unique_infants_source subject_ids (every infant sample has a resolved subject and subjects repeat), subject_ids_partial (subjects resolved on part of the infant samples), subject_ids_all_distinct (one subject id per sample — cannot distinguish cross-sectional from unresolved; render "≤ n"), no_subject_evidence (render "unknown (≤ n)"), no_infant_role_samples
n_unique_infants_upper, n_unique_infants_display upper bound (number of infant-role samples) and the string the site should render
n_infant_role_samples, n_infant_samples_with_subject inputs to the above
n_infant_evidenced, n_study_all_infant, n_age_unknown_mixed_study, n_age_unknown_no_study_estimate, n_adult_flagged, n_non_infant_role, n_age_scope_infant per-study age_scope counts; n_age_scope_infant = infant_evidenced + study_all_infant
mixed_age_deposit True when more than half of the study's sample rows are age_unknown_mixed_study or adult_flagged — render a banner
n_samples, n_runs, n_biosamples from runs.parquet: runs of the study; distinct BioSamples; n_samples = runs for run-unit studies, else BioSamples. n_sample_rows = rows of the sample table keyed to this study (differs when a BioSample carries runs from two BioProjects; n_biosamples_shared_with_other_study)
longitudinal, max_timepoints, n_mothers subject resolution (infant-role samples)
worklist_rank, effort_class curation priority
ena_url, ncbi_url links

Sample unit (added after the auditor's run-vs-BioSample finding)

column meaning
biosample_accession str
run_accession str
age_scope str
age_scope_basis str
sample_unit biosample (default: one BioSample = one stool), run (child row: the submitter registered one BioSample per infant and one run per stool — 6 studies, 521 rows), biosample_pooled rows were moved to parent_biosamples.parquet in v1.2 — the sample table contains only biosample and run units
parent_biosample for run rows, the pooled BioSample they belong to
studies.n_samples catalog sample rows (biosample + run units); n_biosamples keeps the archive's BioSample count (e.g. PRJNA294605: 158 samples, 11 BioSamples)

Class-A decision rule (deterministic, sample_unit_classification.csv): BioSample text says 'Assembly of N … samples'/'pooled', or a run-keyed supplementary table gives ≥2 distinct ages/timepoints across the BioSample's runs, or NCBI BioSample carries a collection-date range. Technical multi-run BioSamples (lanes, replicates, paired/unpaired, long+short reads; 33 studies) keep the BioSample as unit.

Confidence (v1.2 clarification)

confidence (and every <field>__confidence) is an ordinal reliability tier assigned by the route and engine that produced the value, not a calibrated probability. Deterministic R1 parsers emit 0.90 (title parser 0.70, unit resolution 0.75–0.85, date arithmetic 0.85, subject propagation 0.70–0.85); R2 table extraction emits 0.65–0.85 (0.75 typical, 0.85 when a paper's own table maps by exact run/sample accession); R3 paper-text group statements 0.25–0.80 (Opus-downgraded statements are capped at 0.40); R4 abstract statements 0.40–0.50. The full tier list is confidence_tiers.csv (route × determiner × scope, with the discrete values emitted). The empirical precision of each tier against the curatedMetagenomicData gold join is in tier_field_precision.csv (gold_set = hires excludes gold rows whose age is an integer number of years; all is the full 3,670-sample join; value mapping: cMD c-section subtypes → c_section, No Breastfeeding/Exclusively Formula Feeding → formula; age tolerance max(7 d, 10 %); GA ± 1 wk). On that join the tiers are monotone for age (R1 0.90 → 1.00, R1 0.85 date/propagation → 0.70, R2 0.85 → 1.00, R2 0.75 → 0.98) but not for feeding (R2 0.75 → 0.48, R2 0.85 → 0.94), and no gold exists for R4 or for exposure fields — treat the number as a tier label and read the precision table for the field you use.

parent_biosamples.parquet

The 16 BioSamples that the submitters of 6 deposits registered one-per-infant with one run per stool. Their runs are the catalog's run sample units (n_child_run_units, child_run_units). Same columns as the sample table plus n_determinations_moved (their 97 v1.1 determinations are in value_history.parquet, status moved_to_parent_biosamples). Excluded from every count.

study_verdict_history.parquet

One row per (study, stage table, replicate). stage_order (v1.2.1) follows the stage ontology stage_rank/stage_level: screen < tier1_rubric < confirm r1–r3 < adjudication < growth_wave (wave order ff, gap, grow, grow_w2, grow_w3, gsa, loose, nm, r3, v3_delta; r1 < r2 < wave adjudication) < growth_wave_merged < biosample_rejudge < human_review (round 1, round 2) < consolidated_triage_v2 < consolidated_final; ties broken by date, replicate, stage. is_consolidated marks rows copied from a consolidated table (consolidated_kind = final / triage_v2 / growth_wave) — render only the final row as the single 'final' line. verdict_norm (v1.2.1): Haiku screen yes → uncertain (screen-pass, not a verdict), no → exclude, ERROR and empty verdicts → null; verdict_norm_note explains each mapping. stage_family groups tables (haiku_screen, sonnet_rubric_tier1, sonnet_confirm:, opus_adjudication:, growth_triage_merged:*, biosample_rejudge, human_review_round1/2, triage_v2_consolidated, catalog_final). verdict is the raw label of that stage (include/exclude/unsure/uncertain; the Haiku screen's yes/no; ERROR for failed requests); verdict_norm maps it to include/exclude/uncertain/None. is_final marks the row that equals universe_studies_all. evidence is the stage's JSON evidence list; src_artifact/src_version_id name the release-bundle table the row was copied from.

value_history.parquet

Determinations that are not in sample_determinations.parquet. status: superseded (a higher-precedence value replaced it; replaced_by names it), rejected (validator or rule rejection; reason), dropped (group statement failed the Opus checklist audit; reason = drop_reason), recommitted_out_of_scope_adult (an R1 age the v1.1 validator rejected as out of range that v1.2 commits with parse_note out_of_scope_adult to evidence adult_age_flag), not_committed_duplicate (second out-of-range age attribute on the same sample), moved_to_parent_biosamples, auditor_finding_applied (study-level auditor findings and what was done). change_stage names the pipeline stage that made the change (auditor_review:B2/B9 for v1.2.0; auditor_review:R3-3 for the v1.2.1 host/isolate rule, statuses recommitted_out_of_scope_host and recommitted_out_of_scope_isolate, field_name body_site_class, evidence source run.scientific_name / run.library_source).

Release columns (R2026.1, package 1.3.0)

Fact tables — sample_determinations.parquet, universe_studies_all.parquet, study_metadata_wide.parquet, cohorts.csv, study_paper_links.csv, sandpiper_sample_summary.parquet, sandpiper_run_qc.parquet, sandpiper_top_genera.parquet, sandpiper_study_panels.parquet, study_metadata_wide.csv — end with three columns:

column dtype meaning
release_added string release in which this row first became visible (R<YYYY>.<n> or a pre-numbered package semver 1.0.0–1.2.2); pre-1.3.0 values are reconstructed — see DATA_DICTIONARY 'Release columns'
release_retired string | null release that replaced/removed the row; null (empty in CSV) = current row
package_added string semver of the data package in which the row first appeared

Release ids are R<YYYY>.<n> (first: R2026.1 = package 1.3.0) or, for states published before numbering, the package semver 1.0.0 (first public package, 2026-09-25), 1.1.0 (release v11), 1.2.0, 1.2.1, 1.2.2. "Current" = release_retired IS NULL; in the shipped fact tables every row is current. sample_metadata_wide is derived from sample_determinations and carries no release columns.

Reconstruction caveat. Packages before 1.3.0 carried no release columns, so release_added of pre-existing rows was reconstructed: newest value_history.change_stage touching the (sample_key, field_name) or sample_determinations.src_track, mapped to the package the CHANGELOG records for that stage (sample_unit_fix → 1.1.0, auditor_review:B2/B9 → 1.2.0, auditor_review:R3-3 → 1.2.1, owner_decision → 1.2.2). Exact for rows those stages touched (13191 current determinations: src_track = sample_unit_fix → 1.1.0, src_track = adult_scope_fix → 1.2.0); every other pre-1.3.0 row is labelled 1.0.0 by assumption (the first package is not archived as a table, so this cannot be verified row by row). package_added equals release_added for all pre-1.3.0 rows. Study verdict rows are all 1.0.0 (no verdict change is dated after the first package); Sandpiper rows are 1.2.0 (when Sandpiper landed; the v1.2.1 recomputation of existing rows is recorded in the CHANGELOG, not as retire+add).

sample_determinations_all.parquet (R2026.1)

sample_determinations columns + the three release columns + retired_reason (string|null; value_history.reason) + retired_change_stage (string|null; value_history.change_stage). Rows: every current determination (618,898, release_retired null) ∪ every retired published value (1,316) reconstructed from value_history rows whose status ∈ {superseded, moved_to_parent_biosamples, recommitted_out_of_scope_host, recommitted_out_of_scope_isolate} (release_retired = the package of their change_stage). value_history rows with status rejected, dropped, not_committed_duplicate, recommitted_out_of_scope_adult (the pre-history of a row that IS current) or auditor_finding_applied were never published and are not rows here. Exactly one current row per (sample_key, field_name); retired rows may repeat a key. sample_determinations_superseded.parquet (223 rows) is the same set as the superseded rows of stages sample_unit_fix (75) and auditor_review:B9 (148) and is kept for the v1.1 layout.

releases.csv (R2026.1)

One row per release id, oldest first: release_id, package_version, release_date, data_tag, site_tag, doi (empty until Zenodo mints one), n_studies_included, n_samples, n_catalog_scope, n_determinations_current, sandpiper_version, notes_file. Historical rows carry only the counts the CHANGELOGs state (empty otherwise — never invented).

Contribute worklist (R2026.2, package 1.4.0)

contribute_worklist.csv — one row per open study (universe_studies_all.triage_verdict ∈ {include, uncertain} and at least one of the six worklist fields below 0.5 coverage on its catalog_scope samples; studies with 0 catalog_scope samples are judged on body-site scope body_site_class ∈ {primary, unknown}). Complete studies are not listed. Rules, templates and vocabularies: the pipeline's config/contribute.yaml and docs/CONTRIBUTE.md. Read-only: nothing here is a curated value — every column is derived from the tables of this package and from the recoverability / R2-rescue / supplement-inventory artifacts registered in config/inputs.json (group contribute).

contribute_worklist.csv (439 rows)

column dtype meaning
rank int64 1 = highest priority_score (ties: n_samples desc, accession)
study_accession string BioProject accession (universe_studies_all key)
study_title string universe_studies_all.study_title
cohort_id string cohorts.csv id
cohort_name string cohorts.csv name
triage_verdict string include
n_samples int64 sample units of the study (universe_studies_all.n_samples)
n_catalog_scope int64 sample_metadata_wide rows with catalog_scope = True
n_infant_samples_est float64 null
missing_fields string ';'-joined short field names (age, delivery, feeding, preterm, antibiotics, probiotic) whose coverage < 0.5
n_missing_fields int64 count of missing_fields (≥ 1 for every listed study)
coverage_<field> float64 fraction of catalog_scope samples with a value for the field (body-site scope {primary, unknown} when n_catalog_scope = 0); six columns: age, delivery, feeding, preterm, antibiotics, probiotic
best_tier_<field> string best recoverability tier for study × field (R1 archive attribute · R2 supplementary table · R3 paper text · R4 abstract · R0 none); six columns
blocker_code string dominant reason the study is open — vocabulary in config/contribute.yaml blocker_codes (controlled_access, no_linked_paper, paywalled_abstract_only, tables_unjoinable_need_key, pdf_only_supplement, no_supplement_found, archive_only_uncertain, unitless_age_needs_curator, partial_coverage); decision order blocker_order
blocker_detail string ≤ 200 the deciding evidence (counts, access tier, sample-ID forms from RESCUE_REPORT_v2, human-review note)
unlock_text string ≤ 200 imperative 'what would unlock this' sentence from the unlock_templates of the blocker (id form / missing fields substituted)
contribution_type string primary ask: per_sample_table
n_linked_papers int64 rows in study_paper_links for the study
own_data_pmids string ';'-joined PMIDs of the linked papers (empty when none)
n_supp_tables_inventoried int64 supp_inventory members with member_type = table across the linked papers
controlled_access bool study or its cohort is in controlled_access_registry.csv (non-open tier) or flagged controlled in extraction_worklist / universe_studies_all
priority_score float64 Σ over missing fields of weight × (1 − coverage) × log10(n_catalog_scope + 1); weights age 3, delivery 2, feeding 2, preterm 1.5, antibiotics 1, probiotic 0.5
ena_url string ENA browser URL of the study
ncbi_url string NCBI BioProject URL
issue_url string prefilled GitHub Issue (form catalog-contribution.yml, label contribution; query keys study_accession, contribution_type, release_tag, title)
release_added string release in which this row first became visible (R<YYYY>.<n> or a pre-numbered package semver 1.0.0–1.2.2); pre-1.3.0 values are reconstructed — see DATA_DICTIONARY 'Release columns'
release_retired string release that replaced/removed the row; null (empty in CSV) = current row
package_added string semver of the data package in which the row first appeared

contribute_worklist_fields.csv (2,634 rows = 6 per worklist study)

column dtype meaning
study_accession string BioProject accession
field string age
coverage float64 fraction of in-scope samples with a value (same scope rule as the worklist)
n_with_value int64 in-scope samples with a value
n_catalog_scope int64 catalog_scope samples of the study
best_tier string best recoverability tier R0–R4 for the study × field
blocker_code string complete when coverage ≥ 0.5, else the study blocker (only the age field carries unitless_age_needs_curator; other fields then partial_coverage)
evidence string ≤ 120 tier + first recoverability evidence quote/source + note
release_added string release in which this row first became visible (R<YYYY>.<n> or a pre-numbered package semver 1.0.0–1.2.2); pre-1.3.0 values are reconstructed — see DATA_DICTIONARY 'Release columns'
release_retired string release that replaced/removed the row; null (empty in CSV) = current row
package_added string semver of the data package in which the row first appeared

Blocker codes (one per study, decision order = listing order for included studies; uncertain studies always archive_only_uncertain): controlled_access (study/cohort in the controlled-access registry) · no_linked_paper (0 rows in study_paper_links) · paywalled_abstract_only (extraction_worklist access_tier C/D/E) · tables_unjoinable_need_key (R2 rescue: supplementary tables keyed by paper-internal names) · pdf_only_supplement (only PDF/DOCX supplements) · no_supplement_found (paper but no inventoried supplement) · unitless_age_needs_curator (age column without unit) · partial_coverage (paper + tables processed, fields still missing). Field-level code complete = field at/above threshold. Contribution types: per_sample_table, id_key, paper_pointer, age_schedule, verdict_evidence (dropdown of the GitHub Issue form catalog-contribution.yml that issue_url opens prefilled). Rows get release_retired when the study becomes complete in a later release.

Registry tier (R2026.4, package 1.6.0)

The registry is the outer tier of the catalog (docs/EXPANSION.md): every ENA study with a human shotgun-metagenome signal, any body site, any age, classified at STUDY level from ENA study/sample/run metadata (no paper reading). Enumeration slices: S1 library_source=METAGENOMIC × WGS|WXS; S2 misfiled GENOMIC on verified human-metagenome taxa; S3 OTHER|Targeted-Capture|WGA adjudication (per-slice completeness in registry_universe_audit.csv). Classification stages: deterministic_prior (infant-universe verdict carried over), deterministic_rule, sonnet_x2 (two rubric replicates agree), opus_adjudicated (replicates disagreed → adjudication), pending. Vocabularies: the pipeline's config/vocab/{body_sites,life_stages,assay,population_flags}.yaml; scope rules: config/scope.yaml. The curated infant catalog is the scope infant_gut inside this registry (in_infant_catalog mirrors universe_studies_all.triage_verdict). The run-level table registry_runs.parquet (all runs of the universe, 46 ENA fields + found_by) is attached to the GitHub Release of the data repository as registry_runs_v<version>.parquet (too large for this package). Bitemporal columns follow the package convention (release_added, release_retired, package_added).

registry_studies.parquet (54,410 rows)

column dtype meaning
study_accession string ENA/INSDC BioProject accession (PRJ…); primary key
secondary_study_accession string ENA secondary study accession (ERP/SRP/DRP)
study_title string ENA study title
description_short string ENA study description truncated to 300 characters
center_name string Submitting centre
first_public_min string Earliest run first_public date (ISO)
first_public_max string Latest run first_public date (ISO)
n_runs int64 Runs in the registry universe for this study
n_samples int64 Distinct sample_accession values
n_biosamples int64 Distinct BioSample accessions
library_strategies string JSON dict strategy → run count
library_sources string ';'-joined distinct library_source values
instrument_platforms string ';'-joined distinct instrument_platform values
scientific_names_top string ';'-joined top-5 scientific_name values with run counts, e.g. 'human gut metagenome (120)'
host_tax_ids string ';'-joined distinct host_tax_id values
n_runs_host_9606 int64 Runs with host_tax_id 9606
n_runs_nonhuman_host int64 Runs with a non-9606 host_tax_id
human_signal bool Frame-free sweep human-signal rule outcome (pre-filter)
human_signal_rule string A
ambiguous bool Human-signal rule tie flag
host_human string Classified host
host_evidence string JSON list of {source, quote} (quote ≤ 12 words; source from the curation-skill label list)
assay string Assay class (config/vocab/assay.yaml)
access string Access tier
body_sites string ';'-joined body-site codes (config/vocab/body_sites.yaml)
body_site_primary string Primary body-site code (multi_site when ≥ 3 strong sites)
body_site_evidence string JSON evidence list
life_stages string ';'-joined life-stage codes (config/vocab/life_stages.yaml)
life_stage_primary string Primary life-stage code (mixed_ages when ≥ 3 strong stages)
life_stage_evidence string JSON evidence list
population_flags string ';'-joined flags (config/vocab/population_flags.yaml)
health_context string ≤ 120 chars free text or null
classification_stage string Cascade stage that produced the classification
classification_confidence float64 0–1; minimum over components
classification_model string 'deterministic' or the resolved model id of the deciding stage
in_infant_catalog string Infant-catalog verdict
infant_reason_code string Infant triage reason_code (curation-skill vocabulary) or null
scope_memberships string ';'-joined scope ids from config/scope.yaml
universe_slice string Enumeration slice that found the study
release_added string Bitemporal: release id in which the row first appeared
release_retired string Bitemporal: release id in which the row was retired; null = current
package_added string Bitemporal: package semver of first appearance

registry_universe_audit.csv

column dtype meaning
slice string Slice tag / ENA query label
ena_query string ENA portal query string
ena_count int64 Count returned by the ENA count endpoint
rows_pulled int64 read_run rows actually streamed
n_studies int64 Distinct studies in the slice
completeness float64 rows_pulled / ena_count
pulled_at string ISO timestamp of the pull

registry_biosamples.parquet (611,601 rows) — one row per harvested BioSample of a registry study (S2: human_all studies outside the curated infant catalog) — added R2026.5

column dtype meaning
sample_accession string BioSample accession (SAMN/SAME/SAMD) as listed in registry_biosample_index; primary key
study_accession string ENA study (BioProject) the sample belongs to
n_attributes int64 Non-placeholder attribute rows harvested for the sample
source string ena_xml
body_site_code string config/vocab/body_sites.yaml code from the normalised body-site attribute; unknown_site when an attribute existed but mapped to no site; null when no body-site attribute
body_site_raw_key string Normalised attribute key the code came from (e.g. host_body_site, isolation_source)
body_site_raw_value string Raw attribute value the code came from
life_stage string config/vocab/life_stages.yaml code from the age attribute (or from age_days); unknown_age when an age attribute existed but was not interpretable; null when none
age_days float64 Age at collection in days when a numeric age with unit was given
age_raw_key string Attribute key the age came from
age_raw_value string Raw age value
sex string female
sex_raw_key string Attribute key the sex came from
sex_raw_value string Raw sex/gender value
country_iso2 string ISO-3166-1 alpha-2 from geo_loc_name / country attributes
country_raw_key string Attribute key the country came from
country_raw_value string Raw geographic value
collection_date_raw string Raw collection date attribute
collection_year Int64 Year extracted from collection_date_raw
disease_raw string First non-placeholder disease/health/phenotype attribute value (≤200 chars; NOT normalised — no controlled vocabulary yet)
release_added string Release id in which the row first appeared
release_retired string Release id in which the row was retired (null = current)
package_added string Package version that first carried the row

registry_study_papers.parquet (6,398 rows) — one row per study × linked paper (accession mention in Europe PMC and/or publication declared in the NCBI BioProject record); 4,217 human_all studies outside the curated infant catalog — added R2026.5

column dtype meaning
study_accession str ENA study (BioProject) accession
paper_id str Europe PMC id (MED:
pmid str PubMed id of the linked paper
pmcid str PubMed Central id
doi str DOI
title str Paper title
journal str Journal
year Int64 Publication year
pub_type str Europe PMC publication types
is_open_access boolean Europe PMC open-access flag
in_epmc_fulltext object Full text available in Europe PMC
source str europepmc_mention
match_field str abstract_or_title
match_accession str Accession matched (primary PRJ… or secondary ERP/SRP/DRP)
bioproject_declared bool Paper is listed as a publication in the NCBI BioProject record
n_registry_studies int64 How many processed registry studies this paper mentions
relation str data_paper
method str Rule that produced the relation (det_bioproject_declared 0.9, det_single_mention_abstract 0.75, det_single_mention_fulltext 0.6)
confidence float64 Rule confidence (null for unsure)
contested bool True when the paper mentions ≥ 2 processed studies
contest_reason str multi_study
epmc_rank float64 Rank of the paper in the Europe PMC hit list for the study
epmc_hit_count float64 Europe PMC hitCount for the study query
epmc_hits_capped object Hit list truncated at 300 (never true in R2026.5)
body_site_primary str registry_studies.body_site_primary at harvest time (convenience)
release_added string Release id in which the row first appeared
release_retired string Release id in which the row was retired (null = current)
package_added string Package version that first carried the row

registry_bioproject_records.parquet (4,217 rows) — one row per processed registry study (NCBI BioProject XML) — added R2026.5

column dtype meaning
study_accession str ENA study (BioProject) accession
secondary_study_accession str ENA secondary study accession
found_in_ncbi bool BioProject record found via esearch
bioproject_uid str NCBI BioProject UID
archive str NCBI
center_id str Submitting center id
center_id_center str Center attribute of center_id
title str Paper title
name str BioProject name
organisation str Submitting organisation (first)
submitter_owner str Submitter/owner organisation
organizations_json str JSON list of organisations (name, abbr, role)
n_publications float64 Publications declared in the record
publication_pmids str ; -joined PMIDs declared
publication_dois str ; -joined DOIs declared
publications_json str JSON list of declared publications
grants_json str JSON list of grants
external_links_json str JSON list of external links
registration_date str ProjectReleaseDate when present (239 studies)
submitted str Submission date
last_update str Last update date
submission_access str public
data_types str Declared data types
target_material str BioProject target material (eGenome, …)
target_capture str Target capture (eWhole, …)
target_sample_scope str Sample scope (eMultiisolate, eEnvironment, …)
method_type str Method type (eSequencing, …)
relevance_medical str Medical relevance flag
body_site_primary str registry_studies.body_site_primary at harvest time (convenience)
release_added string Release id in which the row first appeared
release_retired string Release id in which the row was retired (null = current)
package_added string Package version that first carried the row

registry_authors.parquet (52,110 rows) — one row per study × paper × author (Europe PMC core records of ≤ 5 linked papers per study) — added R2026.5

column dtype meaning
study_accession str ENA study (BioProject) accession
author_full_name str Author full name (Europe PMC)
author_display str Surname + initials
author_surname str Surname
author_initials str Initials
is_group bool Collective/group author
source str europepmc_mention
pmid str PubMed id of the linked paper
pmcid str PubMed Central id
doi str DOI
paper_title str Paper title
pub_year Int64 Publication year
position int64 Author position (1 = first); part of the key
n_authors int64 Authors on the paper
is_first bool First author
is_last bool Last author
affiliation str Affiliation string (e-mail addresses removed, rule F7)
orcid str ORCID iD when present
paper_relation str relation of the study×paper link (registry_study_papers)
link_method str method of the link
author_source str europepmc_core
author_key str lower-case surname + initials key for de-duplication
release_added string Release id in which the row first appeared
release_retired string Release id in which the row was retired (null = current)
package_added string Package version that first carried the row

gut_sample_determinations.parquet (1,659,128 rows) — one row per sample × field of the gut_all curated scope (current value; precedence infant catalog > R1 > R2 > R3 > R4) — added R2026.7

column dtype meaning
sample_key string BioSample accession (or run accession for run-unit samples); with field_name the key
field_name string Field of config/packs/gut.yaml
study_accession string ENA study
field_value string Raw value as found in the source
value_normalized string Normalised value (days for age, vocabulary codes, ISO-2 country, yes/no)
confidence float64 Route/parser confidence tier (R1 0.85–0.9, R2 0.8–0.85, R3 ≤ 0.7, R4 ≤ 0.5)
evidence_source string Labelled source: sample.attr.
evidence_locator string biosample_attr
evidence_quote string Verbatim quote ≤ 12 words
evidence_limited_to_abstract float64 1 when the evidence is abstract/description only (R4)
determined_by string Parser / stage id
route string R1
scope string sample (rows expanded from study_all statements carry 'expanded from study_all' in parse_note)
parse_note string Parser notes
group_audit string Audit note for group statements (infant rows)
src_track string infant_catalog (copied from the curated infant tables)
release_added string Release id in which the row first appeared
release_retired string Release id in which the row was retired (null = current)
package_added string Package version that first carried the row

gut_sample_metadata_wide.parquet (579,252 rows) — one row per sample of the gut_all curated scope (one column per field with its route and confidence) — added R2026.7

column dtype meaning
sample_key string BioSample accession; primary key
study_accession string ENA study
biosample_accession string BioSample accession
secondary_sample string ERS/SRS/DRS accession (infant rows)
sample_unit string biosample
body_site_code string Registry body-site code of the sample (from its attributes) or the infant catalog's class
sample_life_stage string Registry life stage from the sample's age attribute
curated_source string infant_catalog
in_infant_catalog bool Study is an included infant-catalog study
age_at_collection_days float64 Age at collection in days
sex string female
bmi float64 Body-mass index kg/m²
country string ISO-3166-1 alpha-2
health_condition string config/vocab/health_conditions.yaml code
health_condition_detail string Raw health / disease text
antibiotic_exposure string yes
subject_id string Subject / participant identifier as given by the source
timepoint_label string Timepoint / visit label as given
age_at_collection_days__confidence float64 Confidence of the committed age_at_collection_days value
age_at_collection_days__route string Route of the committed age_at_collection_days value
sex__confidence float64 Confidence of the committed sex value
sex__route string Route of the committed sex value
bmi__confidence float64 Confidence of the committed bmi value
bmi__route string Route of the committed bmi value
country__confidence float64 Confidence of the committed country value
country__route string Route of the committed country value
health_condition__confidence float64 Confidence of the committed health_condition value
health_condition__route string Route of the committed health_condition value
health_condition_detail__confidence float64 Confidence of the committed health_condition_detail value
health_condition_detail__route string Route of the committed health_condition_detail value
antibiotic_exposure__confidence float64 Confidence of the committed antibiotic_exposure value
antibiotic_exposure__route string Route of the committed antibiotic_exposure value
subject_id__confidence float64 Confidence of the committed subject_id value
subject_id__route string Route of the committed subject_id value
timepoint_label__confidence float64 Confidence of the committed timepoint_label value
timepoint_label__route string Route of the committed timepoint_label value
delivery_mode string Infant-catalog field (only on infant rows)
feeding_mode string Infant-catalog field (only on infant rows)
preterm_status string Infant-catalog field (only on infant rows)
gestational_age_weeks string Infant-catalog field (only on infant rows)
birth_weight_grams string Infant-catalog field (only on infant rows)
maternal_antibiotics string Infant-catalog field (only on infant rows)
probiotic_exposure string Infant-catalog field (only on infant rows)
hmo_supplementation string Infant-catalog field (only on infant rows)
nec_status string Infant-catalog field (only on infant rows)
age_category string neonate
age_category_basis string age_at_collection_days
body_site_class string primary (gut/stool)
body_site_basis string sample_attribute
infant_scope bool == the infant catalog's catalog_scope rule (reproduces the infant catalog exactly)
n_fields_with_value int64 Pack fields with a committed value
release_added string Release id
release_retired string Release id when retired (null = current)
package_added string Package version

gut_studies.parquet (2,837 rows) — one row per study of the gut_all curated scope — registry columns plus curation coverage — added R2026.7

column dtype meaning
study_accession string ENA study; primary key
secondary_study_accession string registry_studies column (see registry_studies.parquet)
study_title string registry_studies column (see registry_studies.parquet)
description_short string registry_studies column (see registry_studies.parquet)
center_name string registry_studies column (see registry_studies.parquet)
first_public_min string registry_studies column (see registry_studies.parquet)
first_public_max string registry_studies column (see registry_studies.parquet)
n_runs int64 Runs
n_samples int64 Samples
n_biosamples int64 BioSamples
n_runs_sandpiper int64 Runs with Sandpiper profiles
…registry_studies columns… all registry_studies columns are carried (classification, evidence, scope memberships, sample roll-ups)
cov_<field> float64 Share of the study's samples with a value for each pack field
n_samples_curated int64 Samples in gut_sample_metadata_wide
age_categories string JSON dict age_category → samples
health_conditions string JSON dict health_condition → samples (top 6)
curated_depth string Routes present among the study's committed values (e.g. R1;R2;R4)
curated_source string infant_catalog
release_added string Release id
release_retired string Release id when retired
package_added string Package version

gut_runs.parquet (721,678 rows) — one row per sequencing run of a gut_all catalog study (registry_runs ∩ gut_studies) with the catalog sample_key — added R2026.12 / 1.12.0 — added R2026.12

column dtype meaning
run_accession string ENA/SRA run accession (SRR/ERR/DRR)
study_accession string BioProject of the run (a gut_studies row)
sample_accession string BioSample accession(s) of the run (';'-joined when the run pools several)
secondary_sample_accession string SRS/ERS secondary sample accession(s)
experiment_accession string SRX/ERX experiment accession
library_name string Submitter library name
library_strategy string ENA library_strategy (WGS / WXS / OTHER …)
library_source string ENA library_source (METAGENOMIC …)
library_layout string SINGLE
instrument_platform string ENA instrument_platform
instrument_model string ENA instrument_model
read_count string ENA read_count (as delivered by the portal)
base_count string ENA base_count (as delivered by the portal)
first_public string ENA first_public date (YYYY-MM-DD); its year bounds collection_date (R1 parser)
sandpiper_profiled bool Run present in the Sandpiper snapshot (registry_runs_sandpiper)
sample_key string gut_sample_metadata_wide.sample_key of the run's sample (run accession for run-unit samples; null when the BioSample is not a catalog sample, e.g. pooled runs)

gut_sandpiper_sample_summary.parquet (339,626 rows) — one row per catalog sample with >= 1 run in the Sandpiper 2.0.0 snapshot (339,626 samples / 2,084 studies) — added R2026.12 — added R2026.12

column dtype meaning
sample_key str catalog sample key (gut_sample_metadata_wide)
study_accession str BioProject
n_runs_profiled int64 runs of the sample with a Sandpiper profile
n_runs_total int64 runs of the sample in gut_runs
qc_partial bool 1 = some runs of the sample are unprofiled
root_coverage_sum float64 summed SingleM root coverage over the profiled runs (depth proxy)
richness_genus int64 genera with relative abundance >= 0.001
shannon_genus float64 Shannon index over genus relative abundances (natural log)
shannon_genus_assigned float64 Shannon over genus-assigned coverage only (unassigned remainder excluded)
top_genus str most abundant GTDB genus
top_genus_relabund float64 its relative abundance (0-1)
unassigned_genus_relabund float64 share of root coverage not resolved to a genus
unassigned_species_relabund float64 share of root coverage not resolved to a species
spf float64 Sandpiper single-copy-marker profile fraction (per_acc_summary)
known_species_fraction float64 fraction of coverage in known species (per_acc_summary)
qc_flags str ';'-joined QC flags (qc_low_depth, qc_low_complexity, qc_non_metagenome, qc_partial, ...) — flagged, never dropped
qc_any_flag bool 1 = at least one QC flag set
qc_low_depth bool root coverage below the depth threshold
qc_low_complexity bool Sandpiper low_complexity flag
qc_readfraction_warning bool Sandpiper read-fraction warning
qc_non_metagenome bool organism prediction not a metagenome (loose rule)
qc_non_metagenome_strict bool organism prediction not a metagenome (strict rule)
qc_synthetic bool Sandpiper synthetic-sample flag
qc_rna bool RNA / non-DNA library flag
qc_predicted_ecological bool Sandpiper host_or_not prediction = ecological
qc_no_genus_assigned bool no coverage resolved to any genus
organism_labels str ';'-joined Sandpiper organism labels of the runs
runs_profiled str ';'-joined profiled run accessions
sandpiper_url str Sandpiper page of the first profiled run
age_category str catalog age category (copied from the wide table)
body_site_class str catalog body-site class
infant_scope bool infant-extension filter flag
taxonomy_db str taxonomy database (GTDB)
taxonomy_version str GTDB release (R232)
sandpiper_version str Sandpiper version (2.0.0)
zenodo_record str Zenodo record of the bulk snapshot (20419175)

gut_sandpiper_pca_scores.parquet (335,956 rows) — one row per scored sample of the genus-level CLR-PCA (335,956 samples x 383 genera; root coverage >= 2) — added R2026.12 — added R2026.12

column dtype meaning
sample_key str catalog sample key
pc1 float32 PCA score, component 1 (16.3 % variance)
pc2 float32 component 2 (6.5 %)
pc3 float32 component 3 (3.8 %)
pc4 float32 component 4 (3.2 %)
pc5 float32 component 5 (2.3 %)
study_accession str BioProject
root_coverage_sum float64 summed root coverage (depth proxy)
taxonomy_db str taxonomy database (GTDB)
taxonomy_version str GTDB release (R232)
sandpiper_version str Sandpiper version (2.0.0)
zenodo_record str Zenodo record of the bulk snapshot (20419175)
pca_method str CLR on 383 genera (prevalence >= 1 %), multiplicative pseudocount, randomized SVD

gut_sandpiper_pca_loadings.parquet (383 rows) — one row per genus x component loading of the CLR-PCA — added R2026.12 — added R2026.12

column dtype meaning
genus str GTDB R232 genus
pc1 float64 loading
pc2 float64 loading
pc3 float64 loading
pc4 float64 loading
pc5 float64 loading
prevalence_ge_0p1pct float64 share of samples where the genus is >= 0.1 % relative abundance
mean_relabund float64 mean relative abundance over scored samples
clr_mean float64 mean CLR value
taxonomy_db str taxonomy database (GTDB)
taxonomy_version str GTDB release (R232)
sandpiper_version str Sandpiper version (2.0.0)

gut_sandpiper_pca_variance.csv (5 rows) — one row per PCA component: explained variance ratio — added R2026.12 — added R2026.12

column dtype meaning
pc str component index
explained_variance_ratio float64 share of CLR variance
singular_value float64 singular value
cumulative float64 cumulative explained variance ratio
n_samples int64 samples in the PCA
n_genera int64 genera in the PCA
root_coverage_min int64 minimum root coverage for inclusion
prevalence_min float64 minimum genus prevalence for inclusion
prevalence_detection float64 relative-abundance threshold used for prevalence
pseudocount float64 multiplicative pseudocount before CLR
total_clr_variance float64 total variance of the CLR matrix

gut_sandpiper_study_coverage.csv (2,837 rows) — one row per catalog study: Sandpiper join coverage — added R2026.12 — added R2026.12

column dtype meaning
study_accession str BioProject
study_title str study title
n_runs int64 runs in gut_runs
n_runs_profiled int64 runs with a profile
n_samples int64 samples
n_infant_scope int64 infant-scope samples
n_samples_profiled int64 samples with >= 1 profiled run
n_samples_partial int64 samples with unprofiled runs
n_low_depth int64 samples flagged low depth
n_low_complexity int64 samples flagged low complexity
n_any_flag int64 samples with any QC flag
root_coverage_median float64 median root coverage
richness_genus_median float64 median genus richness
shannon_genus_median float64 median Shannon
frac_runs_profiled float64 profiled / total runs
frac_samples_profiled float64 profiled / total samples
coverage_class str full
top_genus_mode str most frequent top genus
prefix str accession prefix (SRR/ERR/DRR)
sandpiper_version str Sandpiper version (2.0.0)
taxonomy_db str taxonomy database (GTDB)
taxonomy_version str GTDB release (R232)
zenodo_record int64 Zenodo record of the bulk snapshot (20419175)

gut_relatedness.parquet (5,858 rows) — one row per family or shared setting with >= 2 catalogued people — added R2026.23 / 1.19.0 — added R2026.23

column dtype meaning
study_accession str catalog project
group_kind str family
group_type str family, or the shared setting type
group_id str family_id / shared_setting_id as given in the source
n_people int64 distinct people (person_key)
n_samples int64 catalog samples
roles str JSON {family_role: n_people}
motif str family motif, e.g. mother + child×2
people str ';'-joined person keys
sample_keys str ';'-joined sample keys

gut_relations.parquet (1,015 rows) — one row per explicit pairwise relation stated by the authors — added R2026.23 / 1.19.0 — added R2026.23

column dtype meaning
study_accession str catalog project
subject_a str person (subject id or label)
subject_b str related person
relation str donor_of
evidence_source str where the relation is stated
evidence_quote str verbatim quote
confidence float64 0-1
sample_key_a str a sample of subject_a when known
notes str free text

gut_pass_coverage.csv (2,798 rows) — one row per catalog project: status of every annotation pass — added R2026.25 / 1.20.0 (release check scripts/check_pass_coverage.py) — added R2026.25

column dtype meaning
study_accession string catalog project
has_pmcid bool project has an uncontested linked paper with a PMCID (full-text / supplementary passes apply)
fulltext string full-text cohort statements (R3 + R3b): done
abstract string abstract / ENA-description statements (R4 + R4b)
interventions string study-level intervention classification
deep string per-sample deep annotation (archive attributes, sample names, paper tables)
supplementary string supplementary / body-table search (R2)
subject string subject_id pass (applies when subject_id coverage < 95 %)
design string relatedness + longitudinal study-design pass
n_missing int passes that apply but were never attempted

gut_metadata_contradictions.parquet (8,853 rows) — one row per withheld sample x field: self-contradictory metadata — added R2026.25 / 1.20.0 (catalog.scopes.contradictions) — added R2026.25

column dtype meaning
sample_key string catalog sample
study_accession string project
field_name string field whose value is withheld
kind string sources_disagree
value_a string value of the published-precedence source (or the sample's own value)
route_a string route of value_a
source_a string evidence source of value_a
quote_a string evidence quote of value_a
value_b string incompatible value from the other source
route_b string route of value_b
source_b string evidence source of value_b
quote_b string evidence quote of value_b
handling string what was published (normally: neither value)
note string e.g. the sex split of the subject

Sandpiper columns (added v1.2.0)

Source: SingleM community profiles from Sandpiper 2.0.0 (Woodcroft et al. 2025, Nat Biotechnol; Zenodo record 20419175, CC-BY), taxonomy GTDB R232. Profiles are keyed by run; for a catalog sample with several profiled runs the filled coverage per taxon is summed across runs and then normalised (never averaged). Every *_ra column is a fraction of prokaryotic (Bacteria + Archaea) coverage — approximately a cell proportion, not a read fraction; not comparable with MetaPhlAn or 16S numbers.

column meaning
sp_profiled True when at least one run of the sample has a Sandpiper profile
sandpiper_url https://sandpiper.qut.edu.au/run/<run> — the RANDOM-selection profiled run with the highest root coverage (v1.2.1)
sp_n_runs_total, sp_n_runs_profiled, sp_partial run counts; sp_partial = some runs unprofiled
sp_spf prokaryotic read fraction (%), metagenome-size-weighted over runs
sp_known_species_fraction % of prokaryotic coverage assigned to a named GTDB species
sp_root_coverage summed root coverage (× genome equivalents); sp_low_depth = root < 2× (bars hidden)
sp_top_genus, sp_top_genus_ra most abundant genus-level bin (may be unassigned_at_genus)
sp_ra_g_Bifidobacterium GTDB g__Bifidobacterium (stable genus)
sp_ra_f_Bacteroidaceae, sp_ra_g_Bacteroides, sp_ra_g_Phocaeicola GTDB moved B. vulgatus/dorei/plebeius/coprocola to Phocaeicola; the family ≈ NCBI-sense Bacteroides
sp_ra_enterobacterales_core Σ of six GTDB genera incl. their alphabetic-suffix genera (^g__<Name>(_[A-Z]+)?$): Escherichia, Klebsiella, Enterobacter(+_B,_D), Citrobacter(+_A = amalonaticus/farmeri, _B = koseri, _C, _D), Salmonella, Serratia(+_B,_G) (GTDB f__Enterobacteriaceae is broader than NCBI's, so the family is not used)
sp_ra_g_Escherichia, sp_ra_g_Klebsiella, sp_ra_f_Lachnospiraceae, sp_ra_f_Lactobacillaceae (GTDB splits Lactobacillus), sp_ra_g_Streptococcus, sp_ra_g_Staphylococcus, sp_ra_g_Enterococcus, sp_ra_g_Veillonella, sp_ra_g_Clostridioides (C. difficile) indicator taxa
sp_ra_unassigned_genus coverage not resolved to a genus (novel fraction; never renormalised away)
sp_shannon_genus, sp_n_genera_ge1pct Shannon (ln) over genus bins incl. the unassigned bin; named genera ≥ 1 %
sp_flag_low_complexity Sandpiper low-complexity rule — expected for Bifidobacterium-/Enterobacterales-dominated neonatal stool; display only, never triage
sp_nonmeta_class, sp_flag_non_metagenome, sp_flag_synthetic, sp_flag_rna, sp_flag_readfraction_warning see sandpiper_flag_table.csv (single source for field, site label, definition, level; sandpiper_flag_definitions.json is generated from it). sp_flag_non_metagenome = sp_nonmeta_class ∈ {named_nonhuman_host, named_microbe_or_other} over the sample's runs (v1.2.1)
sp_run_concordance_bc, sp_runs_discordant max pairwise genus-level Bray–Curtis between the sample's runs; discordant = BC > 0.5 (human-review hint, not a verdict)
taxonomy_db, taxonomy_version, sandpiper_version GTDB / R232 / 2.0.0 on every profiled row

GTDB alphabetic-suffix genera (v1.2.1, R3-1)

Every genus indicator matches ^g__<Name>(_[A-Z]+)?$, i.e. the GTDB genus and its alphabetic-suffix split genera, so that the NCBI-sense genus is covered. gtdb_to_ncbi_note per indicator:

indicator GTDB taxa summed gtdb_to_ncbi_note
sp_ra_g_Bifidobacterium g__Bifidobacterium single GTDB genus; equals NCBI Bifidobacterium
sp_ra_g_Bacteroides g__Bacteroides, g__Bacteroides_D, g__Bacteroides_E, g__Bacteroides_F Bacteroides_D/_E/_F are NCBI Bacteroides species split by GTDB (e.g. B. pectinophilus)
sp_ra_g_Phocaeicola g__Phocaeicola, g__Phocaeicola_A Phocaeicola_A added; the family f__Bacteroidaceae ≈ NCBI-sense Bacteroides
sp_ra_enterobacterales_core g__Citrobacter, g__Citrobacter_A, g__Citrobacter_B, g__Citrobacter_C, g__Citrobacter_D, g__Enterobacter, g__Enterobacter_B, g__Enterobacter_D, g__Escherichia, g__Klebsiella, g__Salmonella, g__Serratia, g__Serratia_B, g__Serratia_G includes Citrobacter_A (amalonaticus/farmeri), Citrobacter_B (koseri), Enterobacter_B/_D, Serratia_B/_G; Escherichia includes NCBI Shigella
sp_ra_g_Escherichia g__Escherichia GTDB Escherichia includes NCBI Shigella
sp_ra_g_Klebsiella g__Klebsiella single GTDB genus
sp_ra_g_Streptococcus g__Streptococcus single GTDB genus in this dataset
sp_ra_g_Staphylococcus g__Staphylococcus single GTDB genus in this dataset
sp_ra_g_Enterococcus g__Enterococcus, g__Enterococcus_A, g__Enterococcus_B, g__Enterococcus_C, g__Enterococcus_D, g__Enterococcus_E, g__Enterococcus_F, g__Enterococcus_G, g__Enterococcus_H, g__Enterococcus_I, g__Enterococcus_J, g__Enterococcus_K, g__Enterococcus_L includes GTDB Enterococcus_A (avium/raffinosus/gilvus), _B (faecium/lactis/hirae/durans), _C (asini/dispar), _D (gallinarum/casseliflavus), _E (cecorum), _F … _L; plain g__Enterococcus = E. faecalis group
sp_ra_g_Veillonella g__Veillonella, g__Veillonella_A includes Veillonella_A (seminalis/ratti and unnamed species)
sp_ra_g_Clostridioides g__Clostridioides single GTDB genus (C. difficile)

Placeholder genera: GTDB R232 contains alphanumeric placeholder genera without a Latin name, e.g. g__ECMA0423 (Enterobacteriaceae; one species, detected in ~34 % of profiled samples at ~0.25 % mean RA) and g__G047199095. They are real GTDB genera, appear in sandpiper_top_genera.parquet and in study panels under their placeholder name, and are not counted in any named indicator column. Bifidobacterium species shares (share_within_bifidobacterium, off-package table) are normalised over named species only; in ~20 % of samples > 10 % of genus coverage is unresolved at species rank, so shares overstate named species — use sp_ra_unassigned_species as the denominator caveat.

<field>__scope (16 coverage fields): scope of the winning determination — sample, subject, biosample (propagated from a parent BioSample) or group (R3/R4 statement applied to a defined group). Apply the README reading rule to group-scope values.

Study columns sp_*: sp_frac_samples_profiled = profiled rows / n_sample_rows (one denominator, v1.2.1); sp_median_* are computed over panel-scope rows (catalog_scope ∧ profiled ∧ NOT sp_low_depth) and are null with sp_panel_scope giving the fallback label when a study has none; sp_frac_runs_flagged counts runs whose organism label is a non-human host or a named microbe, or synthetic / RNA (the routine "Homo sapiens" host label is not counted). sp_auditor_attention/sp_auditor_reason: the Sandpiper track's hint that a study deserves a human look (never a verdict).

Author columns (added v1.2.0)

authors.parquet: one row per study × author × paper (author_display, author_surname, author_initials, is_group, source ∈ linked_paper / bioproject_publication / ena_study_xref, pmid, doi, position, n_authors, is_first, is_last, paper_relation, catalog_status). study_authors_summary.csv: per screened study first_author, last_author, n_authors, n_papers, organisations (ENA centre / broker and NCBI BioProject owner names, ;-joined). Names are string-matched from Europe PMC authorString; the same person may appear under several initial variants and no disambiguation was attempted.

sandpiper_run_qc.parquet (documented v1.2.1)

One row per run of the 389 included studies (174,022 rows). Keys: run_accession, study_accession, sample_accession (BioSample), catalog_sample_key (sample-table key), sample_unit (biosample / run — v1.2.0 wrote the retired value biosample_pooled for the 521 run-unit runs; renamed in v1.2.1 so a join on sample_unit = 'run' works).

column meaning
in_sandpiper True when the run has a profile in the Zenodo snapshot
sp_miss_reason why not (precedence v1.2.1: strategy → platform → access → horizon → size → snapshot gap): profiled · non_wgs_strategy (library_strategy in {AMPLICON, Targeted-Capture, WXS} — the strategies with zero profiled runs in the snapshot; OTHER and WGA are profiled by Sandpiper and are not miss reasons) · non_illumina_platform · controlled_access_study · published_after_snapshot_horizon · unknown_size (ENA base_count ≤ 0, so size cannot be judged) · small_run_lt_100Mbp · ena_illumina_not_in_snapshot / sra_illumina_not_in_snapshot / ddbj_illumina_not_in_snapshot (eligible by every rule but absent from the snapshot)
library_strategy, library_source, instrument_platform, base_count, first_public, organism ENA run/sample fields used by the rules
sp_root_coverage, sp_species_coverage root / species-level coverage (genome equivalents)
top1_order_fraction, top3_order_fraction share of coverage in the top 1 / top 3 orders (low-complexity inputs)
sp_spf, sp_known_species_fraction prokaryotic read fraction (%), known-species fraction (%)
bacterial_archaeal_bases, metagenome_size, average_bacterial_archaeal_genome_size Sandpiper size estimates (bases)
sp_warning_present Sandpiper emitted a warning for the run
sp_prediction, sp_host_or_not Sandpiper ecological prediction and host-associated call
sp_nonmeta_class organism-label class: not_flagged · named_human_host · named_nonhuman_host · named_microbe_or_other (see sandpiper_flag_table.csv)
sp_flag_*, sp_low_depth, sp_predicted_ecological, sp_low_known_species_high_depth run-level flags — every one is defined in sandpiper_flag_table.csv
sandpiper_url, sandpiper_version, taxonomy_db, taxonomy_version, zenodo_record provenance (Sandpiper 2.0.0 outputs, Zenodo 20419175, GTDB R232; the live Sandpiper site may show a newer version)

sandpiper_study_panels.parquet (v2, v1.2.1)

Mean relative abundance per study over panel-scope rows = catalog_scope ∧ sp_profiled ∧ NOT sp_low_depth (top-12 phyla, top-15 genera, plus the unassigned_at_* bins with rank_order = 0). Columns: study_accession, rank, taxon, mean_rel_abundance, n_samples_panel (rows averaged; asserted equal to the recomputation from the shipped sample table), rank_order, n_samples_study (rows of the study), n_catalog_scope, n_profiled, n_profiled_catalog_scope, n_profiled_age_infant / n_profiled_age_adult / n_profiled_age_unknown_or_other (age_scope breakdown of all profiled rows, for the caption), n_low_depth_excluded_from_panel, frac_samples_profiled, panel_scope, panel_definition, taxonomy_db, taxonomy_version. Studies without panel-scope rows have no rows here; their fallback label is in sandpiper_study_panel_status.csv and in study_metadata_wide.sp_panel_scope. The v1.2.0 merge artefacts n_samples_x/n_samples_y are gone.

sandpiper_flag_table.csv (v1.2.1)

Single source for every Sandpiper flag: field, level (run / sample / study), site_label, definition, used. sandpiper_flag_definitions.json is generated from it; the GlobDB domain-only flags are kept with used = false (the catalog uses GTDB profiles only).

organisations.parquet (v2, v1.2.1) and study_authors_summary.csv

One row per study × organisation token × source (bioproject_organization = NCBI BioProject Organization, submitter_center = ENA center_name, ena_broker). v1.2.1 adds not_org_reason (submission_id for ^SUB\d+( \| SUB\d+)*$, email_or_handle for tokens containing @, placeholder for n/a / None / '.', lowercase_username for single all-lowercase tokens such as hpsun), is_organisation (not_org_reason is null; such rows get org_type = not_an_organisation) and display_eligible (is_organisation AND, for PRJNA studies with an NCBI BioProject organisation, not an ENA center_name). organisations_index.json, study_authors_summary.organisations and study_metadata_wide.organisations are built from display_eligible rows only; a check asserts that no published organisation string matches SUB\d{6,} or contains @. Single lowercase tokens include some genuine company/institute acronyms (e.g. novogene, rivm) — they stay in the parquet for owner whitelisting but are not displayed.

authors.parquet (v2): author_key folds names with a transliteration map (ø→o, æ→ae, ß→ss, ł→l, đ→d, İ→i, Ð→d, Þ→th) before NFKD stripping, and folds initials too; the group regex includes office / production / editorial; name_needs_check flags no-initials multi-token person names for manual review.

Complete column reference (generated from the parquet schema; the build fails on an undocumented column)

sample_metadata_wide.parquet (147 columns)

column dtype description
sample_key str primary key: BioSample accession for biosample units, run accession for run units
study_accession str BioProject accession
secondary_sample str ENA secondary sample accession
sample_title str submitter sample title
body_site_class str body-site scope class — vocabulary: primary (infant gut/stool/meconium/rectal), unknown (no body-site evidence; kept in body-site scope), excluded (non-gut site: skin, oral, milk, vaginal, nasal…; or, since v1.2.1, non-human host / isolate genome — see exclusion_reason_code), linked (mother/other sample linked to an infant subject; out of body-site scope)
collection_date str archive collection_date as given
is_gold_heldout bool True if in the curatedMetagenomicData evaluation set
probiotic_exposure str metadata field probiotic_exposure (see Field vocabularies)
preterm_status str metadata field preterm_status (see Field vocabularies)
gestational_age_weeks float64 metadata field gestational_age_weeks (see Field vocabularies)
delivery_mode str metadata field delivery_mode (see Field vocabularies)
feeding_mode str metadata field feeding_mode (see Field vocabularies)
antibiotic_exposure str metadata field antibiotic_exposure (see Field vocabularies)
age_at_collection_days float64 metadata field age_at_collection_days (see Field vocabularies)
birth_weight_grams float64 metadata field birth_weight_grams (see Field vocabularies)
country str metadata field country (see Field vocabularies)
maternal_antibiotics str metadata field maternal_antibiotics (see Field vocabularies)
hmo_supplementation str metadata field hmo_supplementation (see Field vocabularies)
nec_status str metadata field nec_status (see Field vocabularies)
health_condition str metadata field health_condition (see Field vocabularies)
multiple_birth str metadata field multiple_birth (see Field vocabularies)
sibling_in_study str metadata field sibling_in_study (see Field vocabularies)
geo_subregion str metadata field geo_subregion (see Field vocabularies)
sex str metadata field sex (see Field vocabularies)
timepoint_label str metadata field timepoint_label (see Field vocabularies)
subject_id str metadata field subject_id (see Field vocabularies)
probiotic_exposure__confidence float64 confidence of probiotic_exposure (0–1)
preterm_status__confidence float64 confidence of preterm_status (0–1)
gestational_age_weeks__confidence float64 confidence of gestational_age_weeks (0–1)
delivery_mode__confidence float64 confidence of delivery_mode (0–1)
feeding_mode__confidence float64 confidence of feeding_mode (0–1)
antibiotic_exposure__confidence float64 confidence of antibiotic_exposure (0–1)
age_at_collection_days__confidence float64 confidence of age_at_collection_days (0–1)
birth_weight_grams__confidence float64 confidence of birth_weight_grams (0–1)
country__confidence float64 confidence of country (0–1)
maternal_antibiotics__confidence float64 confidence of maternal_antibiotics (0–1)
hmo_supplementation__confidence float64 confidence of hmo_supplementation (0–1)
nec_status__confidence float64 confidence of nec_status (0–1)
health_condition__confidence float64 confidence of health_condition (0–1)
multiple_birth__confidence float64 confidence of multiple_birth (0–1)
sibling_in_study__confidence float64 confidence of sibling_in_study (0–1)
geo_subregion__confidence float64 confidence of geo_subregion (0–1)
sex__confidence float64 confidence of sex (0–1)
timepoint_label__confidence float64 confidence of timepoint_label (0–1)
subject_id__confidence float64 confidence of subject_id (0–1)
probiotic_exposure__route str route of probiotic_exposure (R1–R4, see Routes)
preterm_status__route str route of preterm_status (R1–R4, see Routes)
gestational_age_weeks__route str route of gestational_age_weeks (R1–R4, see Routes)
delivery_mode__route str route of delivery_mode (R1–R4, see Routes)
feeding_mode__route str route of feeding_mode (R1–R4, see Routes)
antibiotic_exposure__route str route of antibiotic_exposure (R1–R4, see Routes)
age_at_collection_days__route str route of age_at_collection_days (R1–R4, see Routes)
birth_weight_grams__route str route of birth_weight_grams (R1–R4, see Routes)
country__route str route of country (R1–R4, see Routes)
maternal_antibiotics__route str route of maternal_antibiotics (R1–R4, see Routes)
hmo_supplementation__route str route of hmo_supplementation (R1–R4, see Routes)
nec_status__route str route of nec_status (R1–R4, see Routes)
health_condition__route str route of health_condition (R1–R4, see Routes)
multiple_birth__route str route of multiple_birth (R1–R4, see Routes)
sibling_in_study__route str route of sibling_in_study (R1–R4, see Routes)
geo_subregion__route str route of geo_subregion (R1–R4, see Routes)
sex__route str route of sex (R1–R4, see Routes)
timepoint_label__route str route of timepoint_label (R1–R4, see Routes)
subject_id__route str route of subject_id (R1–R4, see Routes)
subject_key str resolved subject id (study-scoped)
role str infant · mother · other · unknown · adult · child (see Sample unit section)
t_index float64 timepoint index within subject
n_timepoints_subject float64 timepoints of the subject
linked_infant_subject_key str infant subject a mother/other sample is linked to
run_accessions str ;-joined run accessions of the sample
n_runs float64 number of runs
instrument_model str instrument model (top)
library_layout str PAIRED/SINGLE
read_count_total float64 summed read_count over runs
study_title str BioProject title
cohort_id str cohort id (cohorts.csv)
cohort_name str cohort name
first_public_min str earliest first_public of the runs
adult_age_flag bool True when a committed age is > 1,100 d (see age_scope = adult_flagged)
n_fields_with_value int64 count of the 19 fields with a value
ena_sample_url str ENA browser link
ena_study_url str ENA study link
sample_unit str biosample or run (see Sample unit section)
parent_biosample str parent BioSample of a run unit
biosample_accession str BioSample accession (always populated)
run_accession str run accession for run units, else null
age_scope str age-scope class (see Sample unit section). Footnote: adult_flagged means "over-age flagged" — any committed age > 1,100 d, which includes children aged 3–18 y (role = child), not only adults
age_scope_basis str evidence behind age_scope
role_source str evidence behind role
sp_profiled bool True when at least one run has a Sandpiper profile
sandpiper_url str link to the representative profiled run: RANDOM-selection run with the highest root coverage (v1.2.1; v1.2.0 used the alphabetically first run)
sp_n_runs_total int64 runs of the sample (populated for every row since v1.2.1)
sp_n_runs_profiled int64 profiled runs (0 when unprofiled)
sp_partial bool True when 0 < profiled runs < total runs; False for unprofiled rows
sp_spf float64 prokaryotic read fraction (%)
sp_known_species_fraction float64 % of prokaryotic coverage assigned to a named GTDB species
sp_root_coverage float64 summed root coverage (genome equivalents)
sp_low_depth boolean root coverage < 2 (excluded from panels/medians)
sp_top_genus str most abundant genus bin
sp_top_genus_ra float64 its relative abundance
sp_ra_g_Bifidobacterium float64 GTDB g__Bifidobacterium (no suffix genera in R232)
sp_ra_f_Bacteroidaceae float64 GTDB f__Bacteroidaceae
sp_ra_g_Bacteroides float64 GTDB g__Bacteroides + suffix genera Bacteroides_D/_E/_F
sp_ra_g_Phocaeicola float64 GTDB g__Phocaeicola + Phocaeicola_A
sp_ra_enterobacterales_core float64 Σ of GTDB Escherichia, Klebsiella, Enterobacter(+_B,_D), Citrobacter(+_A,_B,_C,_D), Salmonella, Serratia(+_B,_G)
sp_ra_g_Escherichia float64 GTDB g__Escherichia (includes NCBI Shigella)
sp_ra_g_Klebsiella float64 GTDB g__Klebsiella
sp_ra_f_Lachnospiraceae float64 GTDB f__Lachnospiraceae
sp_ra_f_Lactobacillaceae float64 GTDB f__Lactobacillaceae (GTDB splits NCBI Lactobacillus into many genera)
sp_ra_g_Streptococcus float64 GTDB g__Streptococcus
sp_ra_g_Staphylococcus float64 GTDB g__Staphylococcus
sp_ra_g_Enterococcus float64 GTDB g__Enterococcus (= E. faecalis group) + Enterococcus_A (avium/raffinosus/gilvus) + _B (faecium/lactis/hirae/durans) + _C … _L
sp_ra_g_Veillonella float64 GTDB g__Veillonella + Veillonella_A
sp_ra_g_Clostridioides float64 GTDB g__Clostridioides (C. difficile)
sp_ra_unassigned_genus float64 coverage not resolved to a genus
sp_shannon_genus float64 Shannon (ln) over genus bins incl. unassigned
sp_n_genera_ge1pct float64 named genera ≥ 1 %
sp_flag_low_complexity boolean see sandpiper_flag_table.csv
sp_flag_non_metagenome bool see sandpiper_flag_table.csv (derived from sp_nonmeta_class since v1.2.1)
sp_flag_synthetic boolean see sandpiper_flag_table.csv
sp_flag_rna boolean see sandpiper_flag_table.csv
sp_flag_readfraction_warning boolean see sandpiper_flag_table.csv
sp_run_concordance_bc float64 max pairwise genus Bray–Curtis between runs
sp_runs_discordant boolean BC > 0.5
taxonomy_db str GTDB
taxonomy_version str R232
sandpiper_version str 2.0.0 (Zenodo snapshot 20419175; the live Sandpiper site may show a newer version)
age_at_collection_days__scope string scope of the winning age_at_collection_days determination: sample / subject / biosample / group
antibiotic_exposure__scope string scope of the winning antibiotic_exposure determination: sample / subject / biosample / group
birth_weight_grams__scope string scope of the winning birth_weight_grams determination: sample / subject / biosample / group
country__scope string scope of the winning country determination: sample / subject / biosample / group
delivery_mode__scope string scope of the winning delivery_mode determination: sample / subject / biosample / group
feeding_mode__scope string scope of the winning feeding_mode determination: sample / subject / biosample / group
geo_subregion__scope string scope of the winning geo_subregion determination: sample / subject / biosample / group
gestational_age_weeks__scope string scope of the winning gestational_age_weeks determination: sample / subject / biosample / group
health_condition__scope string scope of the winning health_condition determination: sample / subject / biosample / group
hmo_supplementation__scope string scope of the winning hmo_supplementation determination: sample / subject / biosample / group
maternal_antibiotics__scope string scope of the winning maternal_antibiotics determination: sample / subject / biosample / group
multiple_birth__scope string scope of the winning multiple_birth determination: sample / subject / biosample / group
nec_status__scope string scope of the winning nec_status determination: sample / subject / biosample / group
preterm_status__scope string scope of the winning preterm_status determination: sample / subject / biosample / group
probiotic_exposure__scope string scope of the winning probiotic_exposure determination: sample / subject / biosample / group
sibling_in_study__scope string scope of the winning sibling_in_study determination: sample / subject / biosample / group
exclusion_reason_code object controlled reason code when a deterministic sample rule set body_site_class = excluded in v1.2.1: host_nonhuman (ENA scientific_name/tax_id is a non-human animal) or assay_isolate_genome (all runs GENOMIC with a named microbe organism); null otherwise. Rows are logged in value_history (change_stage auditor_review:R3-3)
sp_nonmeta_class str any-run organism-label class over ALL runs of the sample (see sandpiper_flag_table.csv): not_flagged · named_human_host · named_nonhuman_host · named_microbe_or_other
catalog_scope bool headline scope (v1.2.1) = age_scope ∈ {infant_evidenced, study_all_infant} AND body_site_class ∈ {primary, unknown}; the intersection used for headline counts (71,795 rows) and for Sandpiper study panels/medians
panel_scope bool True when the row enters its study's Sandpiper panel/medians: catalog_scope AND sp_profiled AND NOT sp_low_depth

study_metadata_wide.parquet (120 columns)

column dtype description
study_accession str BioProject accession (key)
triage_verdict str include/exclude/uncertain from the infant triage cascade. INFANT-CATALOG verdict (historical, 2026-09 infant screen) — NOT membership in the all-age catalog: a study can be excluded here (e.g. age_adult_only) and still be in gut_studies. Catalog membership = presence in gut_studies.parquet.
outcome str contract outcome of the final verdict row
confidence float64 confidence of the final verdict
reason_code str controlled exclusion reason of the INFANT screen (null for included); age_* codes are infant-age reasons, not catalog exclusions
evidence str JSON evidence list of the final verdict
model str model/stage that produced the final verdict
decision_stage str stage table of the final verdict
note str free-text note of the final verdict
n_infant_samples_est float64 triage estimate of infant samples
body_site_call str triage body-site call for the study
slot str verdict slot name
validator_ok object validator result on the verdict row
validator_msg str validator message
study_title str BioProject title
n_samples int64 from runs.parquet: distinct BioSamples with runs registered under this study (runs for run-unit studies). Sums to 154,268 over studies because 62 BioSamples carry runs from two BioProjects; use n_sample_rows for rows in the sample table
n_runs int64 runs registered under the study
first_public_min str earliest first_public
sig_infant_hit bool enumeration infant signal hit
sig_infant_title bool infant term in title
screen_haiku str Haiku screen label (yes/no)
linked_infant_paper bool a linked paper is infant-scoped
universe_slice str enumeration channel
catalog_status str included / excluded / human_review in the INFANT catalog. INFANT-CATALOG verdict (historical, 2026-09 infant screen) — NOT membership in the all-age catalog: a study can be excluded here (e.g. age_adult_only) and still be in gut_studies. Catalog membership = presence in gut_studies.parquet.
assessed_downstream bool reached the extraction stage
recov_age str recoverability tier for age (R0–R4)
recov_antibiotics str recoverability tier for antibiotics (R0–R4)
recov_delivery str recoverability tier for delivery (R0–R4)
recov_feeding str recoverability tier for feeding (R0–R4)
recov_preterm str recoverability tier for preterm (R0–R4)
recov_probiotic str recoverability tier for probiotic (R0–R4)
cohort_id str cohort id
cohort_name str cohort name
cohort_crosswalk_names str alternative cohort names
n_biosample_infant_flagged int64 BioSamples flagged infant by archive attributes at triage
n_linked_papers int64 linked papers
linked_pmids str ;-joined PMIDs
median_gbp float64 median bases per run (Gbp)
median_read_len float64 median nominal read length
paired_share float64 fraction of PAIRED runs
instrument_model_top str most frequent instrument model
generation_top str sequencer generation of instrument_model_top
timepoint_class str cross_sectional / longitudinal heuristic from sample titles
country_top str most frequent country
worklist_rank float64 curation priority rank
expected_field_yield float64 predicted number of recoverable fields
effort_class str curation effort class
controlled_access object True when the study is controlled-access (dbGaP/EGA)
n_biosamples int64 BioSample-unit rows of the study in the sample table (v1.2.1: parents of run units no longer counted here; see n_run_units, n_parent_biosamples)
sample_unit str dominant sample unit of the study: biosample / run
cov_probiotic_exposure float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a probiotic_exposure value
cov_preterm_status float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a preterm_status value
cov_gestational_age_weeks float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a gestational_age_weeks value
cov_delivery_mode float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a delivery_mode value
cov_feeding_mode float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a feeding_mode value
cov_antibiotic_exposure float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a antibiotic_exposure value
cov_age_at_collection_days float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a age_at_collection_days value
cov_birth_weight_grams float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a birth_weight_grams value
cov_country float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a country value
cov_maternal_antibiotics float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a maternal_antibiotics value
cov_hmo_supplementation float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a hmo_supplementation value
cov_nec_status float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a nec_status value
cov_health_condition float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a health_condition value
cov_multiple_birth float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a multiple_birth value
cov_sibling_in_study float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a sibling_in_study value
cov_geo_subregion float64 fraction of catalog-scope-eligible rows (n_infant_scope_samples denominator) with a geo_subregion value
n_unique_infants_est float64 distinct infant subjects (see Sample unit section)
max_timepoints float64 max timepoints per infant subject
longitudinal bool True when max_timepoints > 1
n_mothers int64 mother-role subjects
n_infant_scope_samples int64 body-site scope count: rows with body_site_class ∈ {primary, unknown} (name kept for compatibility; not age-evidenced)
ena_url str ENA link
ncbi_url str NCBI link
n_age_scope_infant int64 rows with age_scope ∈ {infant_evidenced, study_all_infant}
n_adult_flagged int64 rows with age_scope = adult_flagged (over-age, includes children)
n_age_unknown_mixed_study int64 rows age_unknown_mixed_study
n_age_unknown_no_study_estimate int64 rows age_unknown_no_study_estimate
n_infant_evidenced int64 rows infant_evidenced
n_non_infant_role int64 rows non_infant_role
n_study_all_infant int64 rows study_all_infant
mixed_age_deposit bool > 50 % of rows are age_unknown_mixed_study or adult_flagged
n_infant_role_samples int64 rows with role = infant
n_infant_samples_with_subject int64 infant rows with a resolved subject
n_unique_infants_source str source class of the unique-infant estimate
n_unique_infants_upper float64 upper bound
n_unique_infants_display str string to render
n_sample_rows int64 rows of the sample table keyed to this study
n_biosamples_shared_with_other_study int64 BioSamples of this study also registered under another BioProject
sp_n_samples_profiled int64 sample rows with a profile
sp_frac_samples_profiled float64 sp_n_samples_profiled / n_sample_rows (single denominator since v1.2.1)
sp_median_bifidobacterium_ra float64 median sp_ra_g_Bifidobacterium over panel-scope rows (catalog_scope ∧ profiled ∧ NOT low depth); null when the study has none
sp_median_shannon_genus float64 median Shannon over panel-scope rows
sp_n_runs_profiled int64 profiled runs registered under this study
sp_frac_runs_profiled float64 sp_n_runs_profiled / n_runs
sp_coverage_class str none (no profiled rows) · partial · full (every row profiled); defined on sample rows since v1.2.1
sp_frac_runs_flagged float64 see sandpiper_flag_table.csv
sp_frac_low_complexity_profiled float64 see sandpiper_flag_table.csv
sp_frac_low_depth_profiled float64 see sandpiper_flag_table.csv
sp_median_spf float64 median prokaryotic read fraction over panel-scope rows
sp_median_known_species_fraction float64 median known-species fraction over panel-scope rows
sp_auditor_attention bool see sandpiper_flag_table.csv
sp_auditor_reason str reason text for sp_auditor_attention
first_author str first author of the primary linked paper
last_author str last author
n_authors int64 distinct author keys over linked papers
n_author_papers int64 papers contributing authors
organisations str ;-joined organisation names (v1.2.1: submission ids, e-mail addresses, placeholders and single lowercase tokens removed; NCBI BioProject Organization preferred over ENA center_name for PRJNA studies)
sp_median_scope str scope label of the medians (same vocabulary as sp_panel_scope)
sp_n_samples_panel int64 rows in the panel scope
sp_panel_scope str catalog_scope_adequate_depth (panel shown) · fallback:no_catalog_scope_samples · fallback:no_age_evidenced_profiled_samples · fallback:all_age_evidenced_profiled_samples_low_depth · no_profiled_samples — render the fallback text instead of a panel
sp_coverage_note str set when rows are profiled only through runs registered under a sibling BioProject
n_catalog_scope int64 rows with catalog_scope = True (age scope ∧ body-site scope) — the headline denominator
n_excluded_host_or_isolate int64 rows set to body_site_class = excluded by the v1.2.1 host/isolate rule (exclusion_reason_code not null)
n_body_site_excluded int64 rows with body_site_class = excluded
n_run_units int64 run-unit rows (one BioSample per infant, one run per stool)
n_parent_biosamples int64 parent BioSamples of the run units (listed in parent_biosamples.parquet, counted nowhere else)
shared_biosample_note object human-readable note for the five studies sharing BioSamples (F6)
release_added string release in which this row first became visible (R<YYYY>.<n> or a pre-numbered package semver 1.0.0–1.2.2); pre-1.3.0 values are reconstructed — see DATA_DICTIONARY 'Release columns'
release_retired string release that replaced/removed the row; null (empty in CSV) = current row
package_added string semver of the data package in which the row first appeared