Skip to content

[study] DUPERRET2025_POMS_STARVE (MTBLS13313): reanalyzed from Table S12, QC failed - #71

Merged
sr320 merged 1 commit into
mainfrom
study/MTBLS13313/DUPERRET2025_POMS_STARVE
Oct 16, 2026
Merged

sr320 merged 1 commit into
mainfrom
study/MTBLS13313/DUPERRET2025_POMS_STARVE

Conversation

@sr320

@sr320 sr320 commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Replaces sr320/AREE#70. That PR was stacked on #69, and GitHub closed it instead of retargeting it when #69 merged and its branch was deleted. The branch and commits are unchanged. The workflow options it needs are now on main through sr320/AREE#69.

Study

What was run

  • Source data: Table S12 (mmc13.xlsx) is CC BY-NC-ND 4.0, so it is not committed. build_feature_table.py fetches it from the Europe PMC supplementary-files API, checks its SHA-256 and writes the workflow inputs. table_s12_provenance.json records what it did: 310 metabolites, plus 10 internal standards (the rows the authors filled green, checked against the names in the Methods), across 48 samples.
  • Workflow run: the 0 hpc starved-vs-fed contrast, with:
    • --metabolomics.normalization internal_standard, the authors' own first step;
    • --metabolomics.detection_limit 0.001, so the 0.0001 and 0 placeholders count as below detection;
    • --metabolomics.replicate_unit tank, giving 3 vs 3 tanks, as in DUPERRET2025_STARVE_RNASEQ;
    • --metabolomics.acquisition targeted.
  • Result: 122 of 310 metabolites were tested and 68 have padj < 0.05. The other 188 are in the missingness report, 149 of them never detected.

Why it failed QC

Diet is fully confounded with MS batch: fed and starved samples ran months apart. This run shows the consequence:

  • The internal standards shift with diet. On GM the per-sample offset is about +0.8 log2 in fed samples and −0.9 in starved ones. On nucleotides, which use the same MES spike, the shift goes the other way.
  • Normalization decides direction. Median normalization ranks metabolites identically within GM, NUCs and TCA (r = 1.00), but moves every log2FC by about 1 log2 per platform. On PUFAs the two methods disagree outright (r = 0.40). Only 61% of tested metabolites keep their direction (normalization_sensitivity.tsv).

Direction is what an evidence record asserts, and here it can't be separated from batch.

QC decision (sr320):

  • qc_status: failed;
  • results_file stays null;
  • nothing is harmonized or pooled.

As with the IOCAS studies, the run's outputs are committed as provenance for the decision: the standardized table, missingness report, manifest, report and sensitivity table. On the dashboard the study moves from "harmonize" to "resolve QC failures".

Checklist

  • aree validate-study registry/studies/DUPERRET2025_POMS_STARVE.yaml passes
  • Source checksum verified before the run (table_s12_provenance.json)
  • Workflow manifest committed, with parameters, tool versions and input checksums
  • Standardized result table and the HTML report committed; no source table, work/ or results/
  • qc_status and analysis_status reflect what was actually run (failed / in_progress)
  • Limitations and curation notes record the batch confounding, the sensitivity check and the MSI level 2 choice
  • Curation tests in tests/test_duperret2025_study.py pin the decision and its evidence
  • No edits to shared code, vocabularies or docs; aree check-study-scope reports 9 files, all owned by the study

Full suite: 613 passed; ruff clean.

Follow-ups, not in this PR:

  • a batch_confounded quality flag (the registry notes AREE has none);
  • a metabolite-to-enzyme-gene map, without which metabolomics evidence can't converge with RNA-seq genes in the multi-omics tier.

🤖 Generated with Claude Code

…ion confounded with MS batch)

MetaboLights MTBLS13313 has no abundances, but the paper's Table S12 holds
per-sample peak areas for all four targeted platforms. It is CC BY-NC-ND,
so build_feature_table.py fetches it from Europe PMC and checks its SHA-256
instead of committing it (table_s12_provenance.json).

The 0 hpc starved-vs-fed contrast ran in raw_reanalysis mode with
per-platform internal-standard normalization, a 0.001 detection limit and
families averaged within tank (3 vs 3): 122 of 310 metabolites tested,
68 at padj < 0.05.

It fails QC. The internal standards shift with diet, which here is MS
batch, in opposite directions on two platforms that share the MES spike.
Median normalization ranks metabolites identically within GM, NUCs and TCA
but shifts every log2FC by about 1, and disagrees outright on PUFAs; only
61% of metabolites keep their direction (normalization_sensitivity.tsv).
qc_status failed, results_file stays null, nothing is harmonized; the run's
outputs are committed as provenance for the decision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sr320
sr320 merged commit 6e6afae into main Oct 16, 2026
12 checks passed
@sr320
sr320 deleted the study/MTBLS13313/DUPERRET2025_POMS_STARVE branch October 16, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant