Q (sonnet): How does the mutation landscape differ between primary and metastatic samples from the same patients in the MSK-CHORD Study? ▶ read_guide { "uri": "cbioportal://mutation-frequency-guide" } ▶ read_guide { "uri": "cbioportal://sample-filtering-guide" } ◀ result # Mutation Frequency Analysis Guide ## IMPORTANT: Reporting Mutation Frequencies - **ALWAYS report frequencies as percentages**, not raw counts: `frequency = (altered_samples / total_profiled_samples) × 100` - For quick frequency lookups, **prefer the TCGA Pan-Cancer Atlas study first**, then offer to expand to other studies - When reporting across multiple studies, show **ranges** (e.g., "TP53 is mutated in 30–60% of samples") rather than a single average - **NEVER** sum mutation events across studies to compute an aggregate frequency — this can exceed 100% due to double-counting - Warn users that samples may overlap across cohorts (e.g., MSK studies may share patients) - **Choose and state the counting unit**: use patient-level frequencies for prevalence/rate questions unless the user explicitly asks for samples; use sample-level frequencies when the user asks about samples. - **For "across cancer types" questions**, jump to the [Cross-Cancer-Type Mutation Frequency](#cross-cancer-type-mutation-frequency) section below — there is one correct recipe and several common wrong ones. ## Counting Unit: Samples vs Patients Before answering any mutation count or frequency question, decide whether the unit is samples or patients and state that choice in the answer. | User wording | Counting unit | |--------------|---------------| | "prevalence", "rate", "fraction of patients", "patients with", "how common is" | Patient-level: `COUNT(DISTINCT patient_unique_id)` | | "samples", "specimens", "biopsies", sample-level cohort composition | Sample-level: `COUNT(DISTINCT sample_unique_id)` | | Ambiguous | Ask, or default to patient-level for prevalence/rate language and say so | ### Cross-study sample-count caveat When an answer touches more than one study and reports a sample count, prepend a one-line caveat: > Sample IDs are unique within cBioPortal study prefixes, not guaranteed biological-sample identifiers across studies; overlapping cohorts can count the same patient/sample more than once. Prefer one of these safer approaches: - Use a shipped `cancer_study_query_preferences` cohort such as `pan_cancer_tcga` or `all_studies_non_redundant`. - Restrict to one named study. - Aggregate by `patient_unique_id` when the biological question is patient prevalence. ## STOP rule: a frequency above 100% means your query is wrong If your query returns a frequency over 100%, **do not try to debug or explain the data inconsistency to the user**. The cause is always one of these query bugs: - Summing mutation events instead of `COUNT(DISTINCT sample_unique_id)` for the numerator - Using a study-wide sample count as the denominator instead of the gene-specific profiled count - Cross-study aggregation where the same biological sample appears under multiple `sample_unique_id` values (e.g., MSK-IMPACT and MSK-CHORD share patients) - **Joining the profiled CTE through `gene_panel` / `gene_panel_list` without a WES branch.** `gene_panel_id = 'WES'` is *not* a row in … (36467 more chars) ▶ get_study_guide { "study_id": "msk_chord_2024" } ◀ result # Sample and Study Filtering Guide ## Overview Proper filtering is essential for meaningful cBioPortal analysis. This guide covers filtering by studies, sample types, and other criteria. ## Study-Level Filtering ### 1. Always Filter by Study Every query should specify a study to ensure consistent results: ```sql -- Always include study filtering SELECT * FROM your_table WHERE cancer_study_identifier = 'your_study_id' -- Additional filters... ``` ### 2. Find Available Studies ```sql -- Discover available studies SELECT cancer_study_identifier, name, description, type_of_cancer_id FROM cancer_study ORDER BY cancer_study_identifier; ``` ### 3. Study Information ```sql -- Get detailed study information SELECT cs.cancer_study_identifier, cs.name as study_name, cs.description, cs.sample_count, COUNT(DISTINCT p.internal_id) as patient_count FROM cancer_study cs LEFT JOIN patient p ON cs.cancer_study_id = p.cancer_study_id WHERE cs.cancer_study_identifier = 'your_study_id' GROUP BY cs.cancer_study_identifier, cs.name, cs.description, cs.sample_count; ``` ### 4. Find Studies by Available Data Types Use this when the user asks *"which studies have mutation and copy-number data for X"*, *"studies with expression for Y"*, *"is there any imaging data"*, or any *"studies with Z data"* question. `cancer_study` has one precomputed sample count per data type — filter on them. No join and no schema exploration needed. These are the same counts as the portal's study list and its "Data type" filter. **Canonical query — studies with ALL requested data types for a cancer type:** ```sql SELECT cancer_study_identifier, name, sample_count, mutation_sample_count, cna_sample_count FROM cancer_study WHERE type_of_cancer_id = 'luad' -- ← OncoTree code from search_oncotree AND mutation_sample_count > 0 -- ← one condition per required data type AND cna_sample_count > 0 ORDER BY sample_count DESC; ``` **Data type → column** (a count of 0 means the study doesn't have that data): | Data type in the user's question | Column (portal "Data type" filter label) | |---|---| | samples in the study | `sample_count` | | mutation / mutations | `mutation_sample_count` ("Mutations") | | copy-number / CNA / amplification / deletion | `cna_sample_count` ("CNA") | | structural variant / fusion | `structural_variant_sample_count` | | RNA / mRNA / gene expression (any platform) | `mrna_expression_sample_count` — use this for "which studies have expression data" | | specifically the portal's "RNA-Seq" filter | `rna_seq_sample_count` ("RNA-Seq") — counts only the `_rna_seq_v2_mrna` list; 0 for many GDC and iAtlas studies that do have RNA-Seq | | specifically the portal's "RNA (microarray)" filter | `mrna_microarray_sample_count` ("RNA (microarray)") — counts only the `_mrna` list | | microRNA | `mirna_sample_count` ("miRNA") | | protein / RPPA | `rppa_sample_count` ("RPPA") | | mas … (7866 more chars) ◀ result # MSK-CHORD (MSK, Nature 2024) **Study ID:** `msk_chord_2024` ## Overview Targeted sequencing via MSK-IMPACT panels. Clinical annotations include some derived from natural language processing (denoted NLP). **Exactly five cancer types** (`CANCER_TYPE`, patients): Non-Small Cell Lung Cancer 7,809, Colorectal Cancer 5,543, Breast Cancer 5,368, Prostate Cancer 3,211, Pancreatic Cancer 3,109. There is **no melanoma** or any other cancer type; say so up front if asked, instead of substituting another type. **No therapy-response variable.** There is no RECIST, objective response, or best-response attribute or event. For treatment-outcome questions (e.g. immunotherapy response), say this first; the only proxies are `OS_MONTHS`/`OS_STATUS`, or NLP radiology progression events (`Diagnosis` events with `SUBTYPE = 'Progression'`, key `PROGRESSION` = Y/N/Indeterminate), in patients with `Treatment` events of the relevant `SUBTYPE` (e.g. `Immuno`: 3,341 patients). Hand off the comparison to cBioPortal group comparison / survival. **Nearly one sample per patient: 24,950 patients / 25,040 samples.** Only 90 patients have more than one sample, and all 90 have samples from two different cancer types (second primaries); only 26 have both a `Primary` and a `Metastasis` sample. There is no meaningful same-patient (paired) primary-vs-metastasis cohort. For "same patient" / paired questions, say this up front, then offer the **unpaired** comparison of all `Primary` vs `Metastasis` samples (`SAMPLE_TYPE`), labelled as unpaired. ```sql SELECT countIf(n > 1) AS multi_sample_patients, -- 90 countIf(has_p AND has_m) AS primary_and_met -- 26 FROM (SELECT patient_unique_id, count() AS n, has(groupArray(attribute_value), 'Primary') AS has_p, has(groupArray(attribute_value), 'Metastasis') AS has_m FROM clinical_data_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND attribute_name = 'SAMPLE_TYPE' GROUP BY patient_unique_id); ``` ## Gene Panels This study uses multiple MSK-IMPACT panel versions: - **IMPACT341**: Earlier version, 341 genes - **IMPACT410**: 410 genes - **IMPACT468**: 468 genes - **IMPACT505**: Latest version, 505 genes **Important:** Different samples may have different gene coverage. Always use gene-specific denominators when calculating mutation frequencies. ## Clinical Attributes - Semantic Guide ### Cancer Classification | Attribute | Description | Values | |-----------|-------------|--------| | `CANCER_TYPE` | Broad cancer category | e.g., "Non-Small Cell Lung Cancer", "Breast Cancer" | | `CANCER_TYPE_DETAILED` | Specific subtype | e.g., "Lung Adenocarcinoma", "Invasive Ductal Carcinoma" | | `ONCOTREE_CODE` | OncoTree classification code | Standardized cancer type codes | ### Sample Information | Attribute | Description | Values | |-----------|-------------|--------| | `SAMPLE_TYPE` | Sample origin | Primary, Metastasis, Local Recurrence, Unknown | | `SAMPLE_CLASS` | Sample … (5439 more chars) ▶ clickhouse_run_select_query { "query": " WITH primary_samples AS ( SELECT DISTINCT sample_unique_id FROM clinical_data_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND attribute_name = 'SAMPLE_TYPE' AND attribute_value = 'Primary' ), met_samples AS ( SELECT DISTINCT sample_unique_id FROM clinical_data_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND attribute_name = 'SAMPLE_TYPE' AND attribute_value = 'Metastasis' ), mut_primary AS ( SELECT hugo_gene_symbol, COUNT(DISTINCT sample_unique_id) AS altered FROM genomic_event_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND variant_type = 'mutation' AND mutation_status != 'UNCALLED' AND off_panel = 0 AND sample_unique_id IN (SELECT sample_unique_id FROM primary_samples) GROUP BY hugo_gene_symbol ), mut_met AS ( SELECT hugo_gene_symbol, COUNT(DISTINCT sample_unique_id) AS altered FROM genomic_event_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND variant_type = 'mutation' AND mutation_status != 'UNCALLED' AND off_panel = 0 AND sample_unique_id IN (SELECT sample_unique_id FROM met_samples) GROUP BY hugo_gene_symbol ), profiled_primary AS ( SELECT stgp.hugo_gene_symbol, COUNT(DISTINCT stgp.sample_unique_id) AS profiled FROM ( SELECT g.hugo_gene_symbol, stgp.sample_unique_id FROM sample_to_gene_panel_derived stgp JOIN gene_panel gp ON stgp.gene_panel_id = gp.stable_id JOIN gene_panel_list gpl ON gp.internal_id = gpl.internal_id JOIN gene g ON gpl.gene_id = g.entrez_gene_id WHERE stgp.alteration_type = 'MUTATION_EXTENDED' AND stgp.cancer_study_identifier = 'msk_chord_2024' AND stgp.sample_unique_id IN (SELECT sample_unique_id FROM primary_samples) ) stgp GROUP BY stgp.hugo_gene_symbol ), profiled_met AS ( SELECT stgp.hugo_gene_symbol, COUNT(DISTINCT stgp.sample_unique_id) AS profiled FROM ( SELECT g.hugo_gene_symbol, stgp.sample_unique_id FROM sample_to_gene_panel_derived stgp JOIN gene_panel gp ON stgp.gene_panel_id = gp.stable_id JOIN gene_panel_list gpl ON gp.internal_id = gpl.internal_id JOIN gene g ON gpl.gene_id = g.entrez_gene_id WHERE stgp.alteration_type = 'MUTATION_EXTENDED' AND stgp.cancer_study_identifier = 'msk_chord_2024' AND stgp.sample_unique_id IN (SELECT sample_unique_id FROM met_samples) ) stgp GROUP BY stgp.hugo_gene_symbol ) SELECT p.hugo_gene_symbol, p.altered AS primary_altered, pp.profiled AS primary_profiled, ROUND(p.altered * 100.0 / pp.profiled, 1) AS primary_pct, m.altered AS met_altered, mp.profiled AS met_profiled, ROUND(m.altered * 100.0 / mp.profiled, 1) AS met_pct, ROUND((m.altered * 100.0 / mp.profiled) - (p.altered * 100.0 / pp.profiled), 1) AS pct_point_diff FROM mut_primary p JOIN profiled_primary pp ON p.hugo_gene_symbol = pp.hugo_gene_symbol JOIN mut_met m ON p.hugo_gene_symbol = m.hugo_gene_symbol JOIN profiled_met mp ON m.hugo_gene_symbol = mp.hugo_gene_symbol WHERE pp.profiled >= 500 AND mp.profiled >= 500 ORDER BY (p.altered + m.altered) DESC LIMIT 25 ", "max_rows": 30 } ◀ result {"rows":[{"p.hugo_gene_symbol":"TP53","primary_altered":8104,"primary_profiled":15928,"primary_pct":50.9,"met_altered":4890,"met_profiled":8878,"met_pct":55.1,"pct_point_diff":4.2},{"p.hugo_gene_symbol":"KRAS","primary_altered":4751,"primary_profiled":15928,"primary_pct":29.8,"met_altered":2326,"met_profiled":8878,"met_pct":26.2,"pct_point_diff":-3.6},{"p.hugo_gene_symbol":"APC","primary_altered":3345,"primary_profiled":15928,"primary_pct":21,"met_altered":1400,"met_profiled":8878,"met_pct":15.8,"pct_point_diff":-5.2},{"p.hugo_gene_symbol":"PIK3CA","primary_altered":2351,"primary_profiled":15928,"primary_pct":14.8,"met_altered":1327,"met_profiled":8878,"met_pct":14.9,"pct_point_diff":0.2},{"p.hugo_gene_symbol":"EGFR","primary_altered":1338,"primary_profiled":15928,"primary_pct":8.4,"met_altered":779,"met_profiled":8878,"met_pct":8.8,"pct_point_diff":0.4},{"p.hugo_gene_symbol":"ARID1A","primary_altered":1199,"primary_profiled":15928,"primary_pct":7.5,"met_altered":634,"met_profiled":8878,"met_pct":7.1,"pct_point_diff":-0.4},{"p.hugo_gene_symbol":"SMAD4","primary_altered":1142,"primary_profiled":15928,"primary_pct":7.2,"met_altered":643,"met_profiled":8878,"met_pct":7.2,"pct_point_diff":0.1},{"p.hugo_gene_symbol":"KMT2D","primary_altered":1203,"primary_profiled":15928,"primary_pct":7.6,"met_altered":569,"met_profiled":8878,"met_pct":6.4,"pct_point_diff":-1.1},{"p.hugo_gene_symbol":"KMT2C","primary_altered":1059,"primary_profiled":15928,"primary_pct":6.6,"met_altered":552,"met_profiled":8878,"met_pct":6.2,"pct_point_diff":-0.4},{"p.hugo_gene_symbol":"ATM","primary_altered":890,"primary_profiled":15928,"primary_pct":5.6,"met_altered":483,"met_profiled":8878,"met_pct":5.4,"pct_point_diff":-0.1},{"p.hugo_gene_symbol":"CDKN2A","primary_altered":846,"primary_profiled":15928,"primary_pct":5.3,"met_altered":483,"met_profiled":8878,"met_pct":5.4,"pct_point_diff":0.1},{"p.hugo_gene_symbol":"FAT1","primary_altered":818,"primary_profiled":15928,"primary_pct":5.1,"met_altered":421,"met_profiled":8878,"met_pct":4.7,"pct_point_diff":-0.4},{"p.hugo_gene_symbol":"ZFHX3","primary_altered":828,"primary_profiled":15394,"primary_pct":5.4,"met_altered":382,"met_profiled":8393,"met_pct":4.6,"pct_point_diff":-0.8},{"p.hugo_gene_symbol":"NF1","primary_altered":778,"primary_profiled":15928,"primary_pct":4.9,"met_altered":424,"met_profiled":8878,"met_pct":4.8,"pct_point_diff":-0.1},{"p.hugo_gene_symbol":"PTEN","primary_altered":782,"primary_profiled":15928,"primary_pct":4.9,"met_altered":407,"met_profiled":8878,"met_pct":4.6,"pct_point_diff":-0.3},{"p.hugo_gene_symbol":"STK11","primary_altered":755,"primary_profiled":15928,"primary_pct":4.7,"met_altered":428,"met_profiled":8878,"met_pct":4.8,"pct_point_diff":0.1},{"p.hugo_gene_symbol":"PTPRT","primary_altered":780,"primary_profiled":15928,"primary_pct":4.9,"met_altered":401,"met_profiled":8878,"met_pct":4.5,"pct_point_diff":-0.4},{"p.hugo_gene_symbol":"KEAP1","primary_altered":702,"primary_profiled":15928,"primary_pct":4.4," … (1255 more chars) ▶ clickhouse_run_select_query { "query": " WITH s AS ( SELECT sample_unique_id, attribute_value AS sample_type FROM clinical_data_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND attribute_name = 'SAMPLE_TYPE' AND attribute_value IN ('Primary','Metastasis') ), tmb AS ( SELECT sample_unique_id, toFloat64OrNull(attribute_value) AS tmb FROM clinical_data_derived WHERE cancer_study_identifier = 'msk_chord_2024' AND attribute_name = 'TMB_NONSYNONYMOUS' ) SELECT s.sample_type, count() AS n_samples, round(avg(tmb.tmb),2) AS mean_tmb, round(quantile(0.5)(tmb.tmb),2) AS median_tmb FROM s JOIN tmb USING (sample_unique_id) WHERE tmb.tmb IS NOT NULL GROUP BY s.sample_type " } ◀ result {"rows":[{"sample_type":"Primary","n_samples":15928,"mean_tmb":7.77,"median_tmb":4.1},{"sample_type":"Metastasis","n_samples":8878,"mean_tmb":6.35,"median_tmb":4.32}]} ▶ clickhouse_run_select_query { "query": " SELECT cd_type.attribute_value AS sample_type, cd_cancer.attribute_value AS cancer_type, COUNT(DISTINCT cd_type.sample_unique_id) AS n FROM clinical_data_derived cd_type JOIN clinical_data_derived cd_cancer ON cd_type.sample_unique_id = cd_cancer.sample_unique_id WHERE cd_type.cancer_study_identifier = 'msk_chord_2024' AND cd_type.attribute_name = 'SAMPLE_TYPE' AND cd_type.attribute_value IN ('Primary','Metastasis') AND cd_cancer.cancer_study_identifier = 'msk_chord_2024' AND cd_cancer.attribute_name = 'CANCER_TYPE' GROUP BY sample_type, cancer_type ORDER BY cancer_type, sample_type " } ◀ result {"rows":[{"sample_type":"Metastasis","cancer_type":"Breast Cancer","n":2464},{"sample_type":"Primary","cancer_type":"Breast Cancer","n":2859},{"sample_type":"Metastasis","cancer_type":"Colorectal Cancer","n":1457},{"sample_type":"Primary","cancer_type":"Colorectal Cancer","n":4054},{"sample_type":"Metastasis","cancer_type":"Non-Small Cell Lung Cancer","n":2763},{"sample_type":"Primary","cancer_type":"Non-Small Cell Lung Cancer","n":4908},{"sample_type":"Metastasis","cancer_type":"Pancreatic Cancer","n":1124},{"sample_type":"Primary","cancer_type":"Pancreatic Cancer","n":1977},{"sample_type":"Metastasis","cancer_type":"Prostate Cancer","n":1070},{"sample_type":"Primary","cancer_type":"Prostate Cancer","n":2130}]} ▶ resolve_and_route { "studyIds": [ "msk_chord_2024" ] } ◀ result {"success":true,"message":"Found 1 study. Use the metadata to call the appropriate navigation tool(s).","data":{"totalCount":1,"studiesWithMetadata":[{"studyId":"msk_chord_2024","name":"MSK-CHORD (MSK, Nature 2024)","sampleCount":25040,"studyViewUrl":"https://www.cbioportal.org/study?id=msk_chord_2024","metadata":{"clinicalAttributeIds":["ADRENAL_GLANDS","BONE","CANCER_TYPE","CANCER_TYPE_DETAILED","CLINICAL_GROUP","CLINICAL_SUMMARY","CNS_BRAIN","CURRENT_AGE_DEID","DIAGNOSIS_DESCRIPTION","ETHNICITY","FRACTION_GENOME_ALTERED","GENDER","GENE_PANEL","GLEASON_FIRST_REPORTED","GLEASON_HIGHEST_REPORTED","GLEASON_SAMPLE_LEVEL","HER2","HISTORY_OF_PDL1","HR","ICD_O_HISTOLOGY_DESCRIPTION","INTRA_ABDOMINAL","LIVER","LUNG","LYMPH_NODES","METASTATIC_SITE","MSI_COMMENT","MSI_SCORE","MSI_TYPE","MUTATION_COUNT","NUM_ICDO_DX","ONCOTREE_CODE","OS_MONTHS","OS_STATUS","OTHER","PATHOLOGICAL_GROUP","PDL1_POSITIVE","PLEURA","PRIMARY_SITE","PRIOR_MED_TO_MSK","RACE","REPRODUCTIVE_ORGANS","SAMPLE_CLASS","SAMPLE_COUNT","SAMPLE_COVERAGE","SAMPLE_TYPE","SMOKING_PREDICTIONS_3_CLASSES","SOMATIC_STATUS","STAGE_HIGHEST_RECORDED","TMB_NONSYNONYMOUS","TUMOR_PURITY"],"molecularProfileIds":["msk_chord_2024_cna","msk_chord_2024_mutations","msk_chord_2024_structural_variants"],"availableComparisonTabs":["overlap","clinical","survival","alterations","mutations"]}}]}} ▶ get_studyviewfilter_options { "studyId": "msk_chord_2024", "attributeIds": [ "SAMPLE_TYPE" ] } ◀ result {"success":true,"message":"Successfully retrieved StudyView filter options","data":{"studyId":"msk_chord_2024","attributes":[{"attributeId":"SAMPLE_TYPE","displayName":"Sample Type","description":"The type assigned to a sample (i.e., normal, primary, met, recurrence). Source: MPath","datatype":"STRING","values":["Local Recurrence","Unknown","Primary","Metastasis"]}]}} ▶ navigate_to_group_comparison { "studyIds": [ "msk_chord_2024" ], "groups": [ { "name": "Primary", "studyViewFilter": { "clinicalDataFilters": [ { "attributeId": "SAMPLE_TYPE", "values": [ { "value": "Primary" } ] } ] } }, { "name": "Metastasis", "studyViewFilter": { "clinicalDataFilters": [ { "attributeId": "SAMPLE_TYPE", "values": [ { "value": "Metastasis" } ] } ] } } ], "tab": "alterations" } ◀ result {"success":true,"message":"Navigating to https://www.cbioportal.org/comparison/alterations?comparisonId=6ab49e90c2115c492d884a5c","url":"https://www.cbioportal.org/comparison/alterations?comparisonId=6ab49e90c2115c492d884a5c","data":{"description":"Group comparison (2 custom groups)","studies":["msk_chord_2024"],"totalGroups":2,"groups":[{"name":"Primary","sampleCount":15928},{"name":"Metastasis","sampleCount":8878}],"studyViewUrl":"https://www.cbioportal.org/study?id=msk_chord_2024","groupUrls":[{"groupName":"Primary","url":"https://www.cbioportal.org/study?id=msk_chord_2024#filterJson=%7B%22clinicalDataFilters%22%3A%5B%7B%22attributeId%22%3A%22SAMPLE_TYPE%22%2C%22values%22%3A%5B%7B%22value%22%3A%22Primary%22%7D%5D%7D%5D%7D"},{"groupName":"Metastasis","url":"https://www.cbioportal.org/study?id=msk_chord_2024#filterJson=%7B%22clinicalDataFilters%22%3A%5B%7B%22attributeId%22%3A%22SAMPLE_TYPE%22%2C%22values%22%3A%5B%7B%22value%22%3A%22Metastasis%22%7D%5D%7D%5D%7D"}],"pageDescription":"Comparison of genomic alteration rates across Primary (15928) vs Metastasis (8878)."}} ═ answer (success) ## Important caveat first: this is not a paired (same-patient) comparison MSK-CHORD contains 24,950 patients but only 25,040 samples — the cohort is almost entirely one sample per patient. Only **26 patients** in the entire study have *both* a Primary and a Metastasis sample. There is no meaningful same-patient paired primary-vs-metastatic cohort to analyze here. What I can report instead is an **unpaired** comparison: all Primary tumor samples (n=15,928, mostly from different patients) vs. all Metastasis samples (n=8,878, mostly from different patients), each profiled by MSK-IMPACT. ## Top mutated genes, Primary vs. Metastasis (unpaired, % of profiled samples) | Gene | Primary altered/profiled (%) | Metastasis altered/profiled (%) | Difference (pp) | |---|---|---|---| | TP53 | 8,104/15,928 (50.9%) | 4,890/8,878 (55.1%) | +4.2 | | KRAS | 4,751/15,928 (29.8%) | 2,326/8,878 (26.2%) | −3.6 | | APC | 3,345/15,928 (21.0%) | 1,400/8,878 (15.8%) | −5.2 | | PIK3CA | 2,351/15,928 (14.8%) | 1,327/8,878 (14.9%) | +0.2 | | EGFR | 1,338/15,928 (8.4%) | 779/8,878 (8.8%) | +0.4 | | FBXW7 | 876/15,928 (5.5%) | 238/8,878 (2.7%) | −2.8 | | BRAF | 826/15,928 (5.2%) | 307/8,878 (3.5%) | −1.7 | | KEAP1 | 702/15,928 (4.4%) | 475/8,878 (5.4%) | +0.9 | | GATA3 | 634/15,928 (4.0%) | 458/8,878 (5.2%) | +1.2 | | CDH1 | 554/15,928 (3.5%) | 406/8,878 (4.6%) | +1.1 | Notable patterns (descriptive only — no significance testing done): - **TP53** is somewhat more frequent in metastatic samples, consistent with the general expectation that metastatic lesions are enriched for later, higher-burden clones — but I have not run a statistical test to confirm this is significant. - **APC and FBXW7** are noticeably less frequent in metastases — largely a composition effect: Colorectal Cancer (where APC is common) is disproportionately Primary (4,054 primary vs. 1,457 metastasis samples), while other cancer types are more evenly split. - **KRAS and BRAF** are also modestly lower in the metastatic group, again potentially confounded by cancer-type mix. **Cancer-type composition differs by sample type** (this drives much of the above): Colorectal Cancer is 74% Primary/26% Metastasis samples, whereas Prostate Cancer is 67%/33% and Breast Cancer is 54%/46%. Any Primary-vs-Metastasis mutation difference in this pooled, 5-cancer-type cohort partly reflects this mix rather than a pure primary→metastasis biological effect. A cleaner comparison would restrict to one cancer type at a time. **Tumor mutational burden:** mean TMB is slightly higher in Primary samples (7.77 vs. 6.35 mutations/Mb) but median TMB is nearly identical (4.10 vs. 4.32 mutations/Mb) — the means are pulled by a right tail of hypermutated samples, so I'm not characterizing this as a real group difference without a proper test. None of these differences have been tested for statistical significance — for that, use cBioPortal's Mutual Exclusivity / Comparison tools directly. ## Explore interactively [Primary vs. Metastasis mutation/CNA comparison in MSK-CHORD](https://www.cbioportal.org/comparison/alterations?comparisonId=6ab49e90c2115c492d884a5c) — Comparison of genomic alteration rates across Primary (15,928 samples) vs Metastasis (8,878 samples), with built-in enrichment statistics (Fisher's exact / log-odds ratio) for each gene. [MSK-CHORD Study Overview](https://www.cbioportal.org/study?id=msk_chord_2024)