CPTAC STAD Study
193 gastric cancers measured seven ways - proteome, phosphoproteome, acetylome, glycoproteome, ubiquitylome, metabolome and protein-protein interaction - the deepest single-cohort molecular characterization in the NCI portfolio, and openly downloadable.
Can it answer your research question?
5 of 6 supportedOverall survival
SupportedVital status and time are populated; median follow-up 2.0 years; 157 cases with follow-up; endpoint: overall survival.API
Progression or recurrence
Not supportedprogression_or_recurrenceis informative for no case in the harmonized records.APITreatment response
Supportedtreatment_outcomeis populated for 50% of cases; criteria: Complete Response, Partial Response.APIWhich drug was given
Supportedtherapeutic_agentsis recorded for 32% of cases.APIStage-adjusted modelling
Supportedajcc_pathologic_stageis informative for 86% of cases.APIAnalysis by race or ethnicity
SupportedRace is informative for 86% of cases.API
At a glance
Every percentage is the repository’s own record of what is filled inSubjectCALC
As filed by the repository
Who is in the cohortAPI
- Sex101 male · 70 female · 22 not reported
- Race151 white · 13 other · 1 black or african american · 28 not reported
- Ethnicity1 not hispanic or latino · 192 not reported
- Vital status147 Alive · 18 Dead · 22 Not Reported · 6 no value recorded
What was measured, and on how many
- Acetylome mass spectrometry (TMT18 / DDA)scarce193 of 193 · 100%
- Glycoproteome mass spectrometry (TMT18 / DDA)scarce193 of 193 · 100%
- Metabolome mass spectrometry (Label Free / N/A)scarce187 of 193 · 97%
- Phosphoproteome mass spectrometry (TMT18 / DDA)193 of 193 · 100%
- Protein-protein interaction mass spectrometry (TMT10 / DDA)153 of 193 · 79%
- Proteome mass spectrometry (TMT18 / DDA)193 of 193 · 100%
- Ubiquitylome mass spectrometry (Label Free / DIA)scarce184 of 193 · 95%
Platform, files and data levels
| Assay | Platform | Files | Levels |
|---|---|---|---|
| Acetylome mass spectrometry (TMT18 / DDA)API | TMT18 | - | raw, peptide/protein matrix |
| Glycoproteome mass spectrometry (TMT18 / DDA)API | TMT18 | - | raw, peptide/protein matrix |
| Metabolome mass spectrometry (Label Free / N/A)API | Label Free | - | raw, peptide/protein matrix |
| Phosphoproteome mass spectrometry (TMT18 / DDA)API | TMT18 | - | raw, peptide/protein matrix |
| Protein-protein interaction mass spectrometry (TMT10 / DDA)API | TMT10 | - | raw, peptide/protein matrix |
| Proteome mass spectrometry (TMT18 / DDA)API | TMT18 | - | raw, peptide/protein matrix |
| Ubiquitylome mass spectrometry (Label Free / DIA)API | Label Free | - | raw, peptide/protein matrix |
How complete all 27 clinical fields are - 10 informative for at least 80% of cases
Access
Direct download from the PDC portal or its API; no account required
- Open components
- 7 analytical fraction studies
- License
- Open access under the PDC data use terms
- Citation requirement
- Cite the PDC study identifier and the study's primary publication; PDC asks that the consortium be acknowledged.
What it is good for
Written and checked by a reviewer, not generated from metadata.
1. How do distinct post-translational modification layers diverge from each other and from transcript abundance on the same tumors?
Answerable as shippedn ≈ 184HUMANPhosphorylation, acetylation, glycosylation and ubiquitylation are measured on largely the same 184 to 193 tumors. Comparing regulation across four modification types on one cohort is an analysis this dataset uniquely enables; almost every other resource offers at most two.
Statistical note: Each layer has its own missingness pattern from mass spectrometry. Do not impute across layers; restrict to features quantified in a pre-specified fraction of samples and report that threshold.
NeedsProteome (mass spectrometry)PhosphoproteomeAcetylomeGlycoproteomeUbiquitylome2. Does protein degradation signaling, read from the ubiquitylome, identify tumor subgroups invisible to transcriptomics?
Answerable as shippedn ≈ 184HUMANUbiquitylome data on 184 cases is among the largest such datasets anywhere. Degradation is a major regulatory axis that expression data cannot see, and a cohort this size makes subgroup discovery feasible rather than anecdotal.
Statistical note: Ubiquitylation site quantification is sparser than proteome quantification; expect to lose a substantial fraction of sites to the completeness filter.
NeedsUbiquitylomeProteome (mass spectrometry)3. How does tumor metabolism, measured directly rather than inferred, relate to signaling state?
Answerable as shippedn ≈ 187HUMANMetabolomics on 187 cases is available alongside the phosphoproteome, so metabolic state can be related to signaling directly instead of being inferred from enzyme transcript levels - which is what most metabolic analyses in cancer actually do.
NeedsMetabolomePhosphoproteome4. Can measured protein-protein interaction data improve network inference over correlation-based approaches?
Answerable as shippedn ≈ 153HUMANInteraction data on 153 cases is exceptionally rare in a tumor cohort, and provides a measured reference against which inferred co-expression networks can be scored.
NeedsOtherProteome (mass spectrometry)
What it cannot tell you
Written by a reviewer against the source, not inferred from what is missing.
Race is informative for 86% of cases but is overwhelmingly one group, and ethnicity is informative for well under 1%: it is recorded as "not reported" for almost every case. Population-stratified work is not supportable here whatever the race field suggests.
Affects: Any population-stratified analysis; Disparities research
Mitigation: None within this cohort. Check the race distribution on the dataset page before planning any stratified contrast.
Clinical annotation is served by the PDC API rather than shipped with the study files, and it is uneven. Vital status, stage and race are informative for 86% of the 193 cases and the median follow-up is two years, which supports survival work. A treatment record exists for about half: type for 52%, a RECIST-style outcome for 50%, a named agent for 32%. Progression or recurrence is absent entirely.
Affects: Progression-free analysis; Complete-case treatment analysis
Mitigation: Read the clinical records from the PDC API (clinicalPerStudy and paginatedCaseTreatmentsPerStudy) rather than from the study download, and report the analysable subset. For progression, and for anything the PDC record leaves empty, retrieve the corresponding GDC CPTAC-3 clinical records and join on case identifier.
Each analytical fraction is a separate PDC study with its own sample set, so the seven layers do not cover an identical group of tumors - case counts range from 153 to 193.
Affects: Complete-case multi-layer integration
Mitigation: Build the intersection explicitly and report it. A complete-case analysis across all seven layers will be substantially smaller than 193.
Layers were acquired with different enrichment chemistries and instrument methods, so batch structure differs between them and does not cancel out on integration.
Affects: Cross-layer integration; Unsupervised clustering
Mitigation: Model layer-specific batch covariates; do not concatenate raw intensities.
Not appropriate for
- Progression-free or recurrence analysis from these data. - Progression or recurrence is recorded for no case in the PDC clinical records.HUMAN
- Treating treatment annotation as complete when reporting a response analysis. - A treatment outcome is recorded for half the cohort and a named agent for a third, so a complete-case treatment analysis runs on a self-selected subset.HUMAN
- Treating the seven layers as a complete-case multi-omic matrix without checking overlap. - Case counts differ by layer; the naive intersection is smaller than any single layer.HUMAN
Who has used it
Articles that analyzed these data, counted separately from articles that only cited the paper. Only the first counts as reuse.
What articles did with it
- Mentioned the dataset0
- Accession found in text0
- Declared using it0
- Analyzed the data1
Against comparable datasets
- Analyzed it1
- Expected~6
- 1 article(s) reference this dataset's accession in a methods section, against 5.7 predicted for datasets of comparable size, age, modality breadth and access tier (reuse gap index -1.75 on a log2 scale, 15th percentile of the assessed corpus).
Possible original publication, unverified
Articles that analyzed the data
None found. We searched Europe PMC for this dataset's accessions in article methods, results, tables, figures and data availability statements on 20 Sept 2026. That means our search found nothing, not that nobody has used these data.
Community examples
Share your exampleAnalyses someone ran on these data end to end, each with a receipt recording when it ran, against which packages and for how long.
Where can I find ubiquitylome, lipidome or metabolome data, and which cohorts carry several scarce layers on the same tumors?
Find and use the scarcest measurements in the portfolio
- Public PDC GraphQL API, no account required
- pandas
- Scarcity ranking of every analytical fraction
- Cohorts carrying two or more scarce layers
- Layer overlap bounding a complete-case analysis
- Citation counts demonstrating that PDC accessions are not quoted
- A chart of per-layer coverage with the complete-case ceiling marked
Steps
- Enumerate every PDC study through the public GraphQL endpoint
- Rank analytical fractions by number of studies
- Group per-fraction studies back into biological cohorts
- Report the per-layer case counts that bound a complete-case analysis
- Query Europe PMC for each accession to show citation tracing is blind here
Start here
Starter code generated from this record’s own identifiers, then the access steps.
Get the data in code
PDC: file manifest through the GraphQL APIpython
import requests
PDC_STUDY = "PDC000622"
API = "https://proteomic.datacommons.cancer.gov/graphql"
def gql(query, **variables):
r = requests.post(API, json={"query": query, "variables": variables}, timeout=180)
r.raise_for_status()
body = r.json()
if body.get("errors"):
raise RuntimeError(body["errors"][0]["message"])
return body["data"]
# filesPerStudy only fills its fields when given the study UUID: called with the
# pdc_study_id it returns the right number of rows with every column null.
study = gql("""query ($id: String!) {
study(pdc_study_id: $id acceptDUA: true) { study_id study_name }
}""", id=PDC_STUDY)["study"][0]
files = gql("""query ($sid: String!) {
filesPerStudy(study_id: $sid acceptDUA: true) {
file_id file_name file_type data_category md5sum file_size signedUrl { url }
}
}""", sid=study["study_id"])["filesPerStudy"]
print(study["study_name"], "-", len(files), "files")
for f in files[:3]:
print(f["file_name"], f["data_category"], f["file_size"])
# Each signedUrl.url is a time-limited download link; stream it to disk with requests.get(url, stream=True).This page as data: limitations firstbash
curl -s https://cd2s.vercel.app/data/datasets/pdc-cptac-stad-study.json | python3 -c '
import json, sys
r = json.load(sys.stdin)
for l in r["limitations"]:
print(l["severity"].upper(), "-", l["statement"][:120])
print("survival endpoint:", r["longitudinal"]["has_survival_endpoint"], "| treatment response:", r["longitudinal"]["has_treatment_response"])'Access steps
- Browse the study in the PDC portalFor people
No account is required. All seven fractions are openly downloadable.
https://pdc.cancer.gov/pdc/browse - Pull the study manifest from the PDC GraphQL APIFor people
The API is public and needs no key, which makes this cohort unusually easy to script against.
curl -s https://proteomic.datacommons.cancer.gov/graphql \ -H 'Content-Type: application/json' \ -d '{"query":"{ allPrograms { name projects { name studies { pdc_study_id study_name analytical_fraction experiment_type cases_count } } } }"}' \ | python3 -m json.tool | grep -A4 'CPTAC STAD' - Retrieve the matching clinical and genomic data from the GDCFor people
This is the step people skip. Without it the proteomic layers have no clinical context at all.
https://portal.gdc.cancer.gov/projects/CPTAC-3 - Resolve the study UUID, then fetch the file manifestFor agents
filesPerStudy keys on the study UUID, not on PDC000622: called with the pdc_study_id it returns the right number of rows with every column null. Resolve the UUID first and pass the terms acknowledgement.
https://pdc.cancer.gov/data-dictionary/publicapi-documentation/python - <<'PY' import requests API = "https://proteomic.datacommons.cancer.gov/graphql" def gql(query, **variables): r = requests.post(API, json={"query": query, "variables": variables}, timeout=180) r.raise_for_status() body = r.json() if body.get("errors"): raise RuntimeError(body["errors"][0]["message"]) return body["data"] study = gql('query($id:String!){ study(pdc_study_id:$id acceptDUA:true){ study_id } }', id="PDC000622")["study"][0] files = gql('query($sid:String!){ filesPerStudy(study_id:$sid acceptDUA:true)' '{ file_id file_name file_size } }', sid=study["study_id"])["filesPerStudy"] print(len(files), "files") PY
Provenance
All of it, and more, is in this record’s JSON.
Identifiers
Versions and verification
- Released
- 1 Jan 2026
- Metadata retrieved
- 18 Sept 2026
- Review status
- Project-curatedCD2S project curation on 18 Sept 2026
- Data generation funding
- Funded data generation
- PDC study identifiers are almost never quoted in the literature, so the reuse figure on this page is close to uninformative. A manual review of gastric proteogenomics papers would give a better estimate than any citation-based method.