[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-quantitative-proteomics":3,"mdc--g0dm0v-key":49,"related-org-aws-labs-quantitative-proteomics":1922,"related-repo-aws-labs-quantitative-proteomics":2102},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":44,"sourceUrl":47,"mdContent":48},"quantitative-proteomics","design quantitative proteomics experiments","Reason about quantitative proteomics experiment design and data analysis strategy. Use when the user asks to choose between LFQ, TMT, and DIA quantification; select an imputation method for missing values; pick a normalization strategy; interpret differential expression results from proteomics data; evaluate ratio compression; or design a proteomics study for biomarker discovery or validation. Triggers include \"LFQ vs TMT\", \"DIA quantification\", \"proteomics normalization\", \"missing value imputation\", \"MNAR\", \"MinProb\", \"QRILC\", \"kNN imputation\", \"VSN normalization\", \"median centering\", \"quantile normalization\", \"limma proteomics\", \"ratio compression\", \"proteomics study design\", \"label-free quantification\", \"tandem mass tag\", \"data-independent acquisition\", \"DIA-NN\", \"Spectronaut\", \"MaxQuant LFQ\", \"proteomics differential expression\", \"empirical Bayes proteomics\", \"proteinGroups.txt\", \"MSFragger output\", \"TMT normalization code\", \"LFQ analysis\", \"proteomics pipeline R\", \"MaxQuant output\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Proteomics","proteomics","tag",{"name":18,"slug":19,"type":16},"Data Analysis","data-analysis",{"name":21,"slug":22,"type":16},"Life Sciences","life-sciences",{"name":24,"slug":25,"type":16},"Bioinformatics","bioinformatics",4,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fhcls-agent-skills","2026-07-12T08:38:16.066699",null,0,[32,33,34,35,36,37,38,39,40,22,41,42,43],"agent-skills","agentcore","ai-agents","amazon-quick-desktop","claims-processing","drug-discovery","genomics","healthcare-ai","kiro","medical-imaging","risk-adjustment","strands-agents",{"repoUrl":27,"stars":26,"forks":30,"topics":45,"description":46},[32,33,34,35,36,37,38,39,40,22,41,42,43],"Agent skills for healthcare and life sciences: genomics, imaging, claims, drug discovery, and more. Works with Amazon Quick, Kiro, Amazon AgentCore, AWS Strands SDK, Claude Code, Codex, and any Agent Skills-compatible platform.","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fhcls-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fquantitative-proteomics","---\nname: quantitative-proteomics\ndescription: >\n  Reason about quantitative proteomics experiment design and data analysis strategy.\n  Use when the user asks to choose between LFQ, TMT, and DIA quantification; select an\n  imputation method for missing values; pick a normalization strategy; interpret\n  differential expression results from proteomics data; evaluate ratio compression;\n  or design a proteomics study for biomarker discovery or validation. Triggers include\n  \"LFQ vs TMT\", \"DIA quantification\", \"proteomics normalization\", \"missing value\n  imputation\", \"MNAR\", \"MinProb\", \"QRILC\", \"kNN imputation\", \"VSN normalization\",\n  \"median centering\", \"quantile normalization\", \"limma proteomics\", \"ratio compression\",\n  \"proteomics study design\", \"label-free quantification\", \"tandem mass tag\",\n  \"data-independent acquisition\", \"DIA-NN\", \"Spectronaut\", \"MaxQuant LFQ\",\n  \"proteomics differential expression\", \"empirical Bayes proteomics\",\n  \"proteinGroups.txt\", \"MSFragger output\", \"TMT normalization code\",\n  \"LFQ analysis\", \"proteomics pipeline R\", \"MaxQuant output\".\nusage: Invoke when designing a quantitative proteomics experiment or choosing analysis parameters.\nversion: 1.0.0\ntags: [skill, category:reasoning, proteomics, mass-spectrometry, quantification, biomarker, hcls]\n---\n\n# Quantitative Proteomics — Reasoning Skill\n\n## Overview\n\nYou are an expert in quantitative proteomics experimental design and statistical analysis.\nWhen the user asks about quantification strategy, imputation, normalization, or\ndifferential expression for proteomics data, apply the decision frameworks below.\n\n## Usage\n\n- Choose between LFQ, TMT, and DIA quantification strategies for a given study design\n- Select imputation and normalization methods based on missingness patterns and data properties\n\n## Core Concepts\n\n---\n\n## Response Format\n\n- Lead with the direct recommendation or classification (≤3 sentences)\n- Structure as: recommendation → justification (citing specific criteria\u002Fthresholds) → caveats\n- Use tables for comparisons; bullet points for criteria lists\n- Omit background the user already knows — they asked the question\n- Target: 200-400 words unless the user requests exhaustive detail\nThe decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.\n\n\n## 1. Quantification Strategy Selection\n\n### 1.1 Decision Tree\n\n```\nIs the goal discovery or targeted validation?\n├─ Discovery (maximize coverage)\n│  ├─ Sample count ≤ 20 → LFQ (label-free quantification)\n│  ├─ Sample count 20–100 → TMT (multiplexed, up to 18-plex)\n│  └─ Sample count any, need comprehensive coverage → DIA\n├─ Targeted validation\n│  └─ Use PRM (parallel reaction monitoring) or SRM\u002FMRM\n└─ Large clinical cohort (>100 samples)\n   ├─ Budget allows multiplexing → TMT with fractionation\n   └─ Budget constrained → DIA (single-shot)\n```\n\n### 1.2 Key Rules\n\n1. **Never mix quantification strategies** within a single study unless you have a rigorous batch-correction plan.\n2. **LFQ requires match-between-runs (MBR)** to reduce missingness — but MBR can introduce false transfers (~5% false positive rate at default settings).\n3. **DIA library-free mode** (DIA-NN ≥1.8) is simpler; library-based gives ~10% more IDs.\n4. **Biological replicates matter more than technical replicates.** Minimum 3 per condition; 5+ for clinical studies.\n5. **TMT ratio compression:** Expect 30–50% underestimation at MS2 level. True FC ≈ observed FC × 1.5–2.0. SPS-MS3 reduces compression to \u003C10% but costs ~30% fewer IDs. Do not apply arbitrary correction without spike-in ground truth.\n\n---\n\n## 2. Missing Value Assessment and Imputation\n\n### 2.1 Imputation Decision Tree\n\n```\nAssess missingness pattern:\n├─ >50% missing across ALL groups → Exclude protein (unreliable)\n├─ Missing predominantly in one condition\n│  └─ Likely MNAR → Use left-censored methods (MinProb, QRILC)\n├─ Missing scattered across conditions\n│  └─ Likely MAR → Use kNN, MLE, or BPCA\n└─ Mixed pattern\n   └─ Hybrid: classify each protein's missingness, apply appropriate method\n```\n\n### 2.2 Imputation Methods and Pitfalls\n\n| Method | Mechanism | When to Use | Pitfall |\n|---|---|---|---|\n| MinProb | MNAR | Low-abundance below LOD | Underestimates variance |\n| QRILC | MNAR | Left-censored distributions | Assumes normality |\n| kNN (k=10) | MAR | Scattered missingness | Fails if too many missing |\n| MLE (EM) | MAR | Well-behaved MAR data | Assumes multivariate normality |\n| BPCA | MAR | High-dimensional data | Computationally expensive |\n\n### 2.3 Imputation Rules\n\n1. **Always visualize missingness first.** Plot heatmap and density plots before choosing method.\n2. **Filter before imputing.** Remove proteins with >50% missing and contaminants.\n3. **MNAR parameters:** downshift = 1.8 SD, width = 0.3 SD from the observed distribution.\n4. **Never impute then filter.** Filtering after imputation biases the dataset.\n5. **Sensitivity analysis:** Run DE with and without imputation to confirm key hits are robust.\n\n---\n\n## 3. Normalization Strategy\n\n### 3.1 Decision Tree\n\n```\nWhat is the expected biological variation?\n├─ Most proteins unchanged between conditions (typical)\n│  ├─ Default → Median centering (simple, robust)\n│  ├─ Strong batch effects → Quantile normalization\n│  └─ Variance depends on intensity → VSN\n├─ Global shift expected (e.g., drug treatment affecting many proteins)\n│  └─ Use spike-in standards, NOT data-driven methods\n└─ TMT data\n   └─ Sample loading normalization → then median centering within plex\n└─ DIA data\n   └─ Median centering on precursor quantities BEFORE protein roll-up\n```\n\n### 3.2 Rules\n\n1. **Log2-transform intensities before normalization** (except VSN, which includes transformation).\n2. **Do NOT quantile-normalize if >30% of proteome is affected.** It will mask real biology.\n3. **TMT requires two-step normalization:** sample loading normalization, then internal reference scaling.\n4. **Batch correction (ComBat) is separate from normalization.** Normalize first, then correct.\n5. **Check with box plots and MA plots.** Post-normalization medians should align.\n\n---\n\n## 4. Differential Expression Interpretation\n\n### 4.1 FC Thresholds and Rules\n\n1. **FC thresholds depend on biology.** Secreted biomarkers: |log2FC| > 0.5. Intracellular: |log2FC| > 1.0.\n2. **DEqMS is preferred over limma** because it models variance as a function of peptide count.\n3. **Always use adjusted p-values.** Unadjusted p \u003C 0.05 yields hundreds of false positives.\n4. **Check for confounders.** Include batch, sex, age as covariates in the linear model.\n\n### 4.2 Common Mistakes\n\n- **Wrong:** Using a standard t-test for differential expression in proteomics\n  **Right:** Use limma (empirical Bayes moderated t-test) or DEqMS (variance modeled by peptide count)\n  **Why:** Standard t-tests have insufficient power with small sample sizes; moderated statistics borrow strength across proteins\n\n- **Wrong:** Filtering differentially expressed proteins on p-value alone without a fold-change threshold\n  **Right:** Require both adjusted p-value \u003C 0.05 and a minimum |log2FC| threshold (≥0.5 for secreted, ≥1.0 for intracellular)\n  **Why:** Statistically significant but biologically trivial changes (tiny FC) are not actionable and clutter results\n\n- **Wrong:** Interpreting TMT fold changes at face value without accounting for ratio compression\n  **Right:** Use SPS-MS3 quantification or apply a compression correction factor (true FC ≈ observed × 1.5–2.0)\n  **Why:** MS2-level TMT systematically underestimates fold changes by 30–50% due to co-isolation interference\n\n- **Wrong:** Including contaminant and reverse-hit proteins in the analysis\n  **Right:** Filter out all entries with CON__ and REV__ prefixes before normalization and statistical testing\n  **Why:** Contaminants distort normalization and inflate protein counts; reverse hits are decoy sequences\n\n- **Wrong:** Imputing missing values after normalization\n  **Right:** Log2-transform first, then impute, then normalize\n  **Why:** Imputing on normalized data uses shifted distributions as reference, introducing systematic bias in imputed values\n\n- **Wrong:** Including proteins identified by only a single peptide in quantitative analysis\n  **Right:** Require ≥2 unique peptides per protein for confident identification and quantification\n  **Why:** Single-peptide IDs have high false-discovery rates and unreliable quantification\n\n---\n\n## 5. Study Design and QC\n\n### 5.1 Sample Size Guidelines\n\n| Study Type | Minimum | Recommended |\n|---|---|---|\n| Discovery | 3 per group | 5–6 per group |\n| Biomarker validation | 10 per group | 20+ per group |\n| Clinical proteomics | 20 per group | 50+ per group |\n\n### 5.2 Batch Design Rules\n\n1. **Randomize samples across batches.** Never all cases in one batch, all controls in another.\n2. **Include a bridge sample in every TMT plex** for cross-plex normalization.\n3. **Block confounders:** Balance age and sex across batches.\n\n### 5.3 QC Checkpoints\n\n| Checkpoint | Acceptable Range |\n|---|---|\n| Protein IDs per run | >4,000 (LFQ), >6,000 (DIA), >8,000 (TMT) |\n| CV of intensities | \u003C20% for technical replicates |\n| Missingness rate | \u003C30% (LFQ), \u003C10% (TMT), \u003C15% (DIA) |\n| Replicate correlation | Pearson r >0.95 (technical), >0.85 (biological) |\n| PCA clustering | Replicates cluster together |\n\n---\n\n## 6. Critical Thresholds Quick Reference\n\n- **CV > 20% across replicates** → flag run for investigation\n- **Proteins >50% missing in ALL groups** → exclude before imputation\n- **TMT ratio compression correction:** true FC ≈ observed FC × 1.5–2.0 (MS2 level)\n- **Quantile normalization forbidden** if >30% of proteome differentially expressed\n- **Phosphoproteomics:** require site localization probability >0.75; normalize phospho to total protein\n- **Proteomics-transcriptomics correlation** is typically r = 0.4–0.6 — discordance is biologically informative (post-translational regulation)\n\n---\n\n## 7. Quick-Reference Decision Summary\n\n```\nQuantification:  Small discovery → LFQ\n                 Large cohort → TMT (with SPS-MS3)\n                 Comprehensive → DIA\n\nImputation:      Low-abundance missing → MinProb \u002F QRILC (MNAR)\n                 Random missing → kNN \u002F MLE (MAR)\n                 Mixed → Hybrid approach\n\nNormalization:   Default → Median centering\n                 Batch effects → Quantile\n                 Heteroscedastic → VSN\n                 Global shift → Spike-in standards\n\nDE Testing:      Default → limma (empirical Bayes)\n                 Proteomics-aware → DEqMS\n                 Threshold → adj.p \u003C 0.05, |log2FC| > 1.0\n```\n\n---\n\n## Pipeline Reference\n\n### Input Formats\n\n| Source | File | Key Columns |\n|---|---|---|\n| MaxQuant | proteinGroups.txt | Protein IDs, Gene names, LFQ intensity *, iBAQ, Reverse, Potential contaminant |\n| MSFragger | combined_protein.tsv | Protein, Gene, *Intensity*, *Spectral Count* |\n| Proteome Discoverer | Proteins.txt | Accession, Description, Abundance * |\n| DIA-NN | report.pg_matrix.tsv | Protein.Group, sample columns with quantities |\n\n### TMT Sample Loading Normalization + Internal Reference Scaling\n\n```r\n# TMT: Sample Loading Normalization + Internal Reference Scaling\ncol_sums \u003C- colSums(mat, na.rm = TRUE)\nscaling_factors \u003C- median(col_sums) \u002F col_sums\nmat_sln \u003C- sweep(mat, 2, scaling_factors, \"*\")\n\n# IRS using bridge channel (e.g., pooled reference in 131C)\nbridge \u003C- mat_sln[, grep(\"131C\", colnames(mat_sln))]\nirs_factors \u003C- apply(bridge, 1, median, na.rm = TRUE)\nmat_irs \u003C- mat_sln \u002F irs_factors  # row-wise scaling across plexes\n```\n\n### When limma Fails\n\n| Scenario | Problem | Use Instead |\n|---|---|---|\n| \u003C3 replicates per group | Variance estimation unreliable | `RankProd` (rank-based, no variance estimate needed) |\n| Unbalanced design (e.g., 3 vs 8) | Pooled variance biased toward larger group | Mixed models: `lme4` + `lmerTest` |\n| Repeated measures \u002F longitudinal | Correlated samples violate independence | `limma::duplicateCorrelation()` or `dream()` from variancePartition |\n| >2 groups | Pairwise t-tests inflate FDR | `limma::contrasts.fit()` with proper contrast matrix |\n| Paired samples (e.g., tumor vs adjacent normal) | Must account for patient effect | Include patient as blocking factor in design matrix |\n\n### Parameter Reference\n\n| Parameter | Default | Range | Notes |\n|---|---|---|---|\n| MinProb quantile (q) | 0.01 | 0.001–0.05 | Lower = more conservative imputation |\n| MinProb downshift (σ) | 1.8 | 1.4–2.0 | Standard deviations below mean |\n| MinProb width | 0.3 | 0.2–0.5 | Fraction of observed σ for imputed spread |\n| kNN k | 10 | 5–15 | Higher k = smoother but slower |\n| kNN rowmax | 0.5 | 0.3–0.7 | Max fraction missing per row allowed |\n| Missingness filter | 70% in ≥1 group | 50–100% | Stricter = fewer proteins, less noise |\n| log2FC threshold | 1.0 | 0.5–2.0 | Adjust to biological context |\n| adj.p threshold | 0.05 | 0.01–0.1 | 0.01 for stringent discovery |\n| Unique peptides min | 2 | 1–3 | ≥2 required for confident ID |\n\n---\n\n## When NOT to Use This Skill\n\n- Validating biomarker candidates for clinical assay development (needs assay chemist)\n- When sample prep issues dominate variance (pre-analytical problem, not analytical)\n- Absolute quantification requiring isotope-labeled standards\n\n## When to Escalate to a Human Expert\n\n- When missing data exceeds 50% and imputation assumptions are untestable\n- Before publishing quantitative claims from single-batch experiments\n- When results require mass spectrometry method development expertise\n\n## 8. Troubleshooting Common Issues\n\n| Symptom | Likely Cause | Solution |\n|---|---|---|\n| Very few protein IDs (\u003C2,000) | Poor sample prep or instrument issue | Check TIC, re-run QC standard |\n| All samples cluster by batch in PCA | Batch effect dominates biology | Apply ComBat or limma removeBatchEffect |\n| No significant DE proteins | Underpowered study or wrong test | Check sample size, use DEqMS, relax FC threshold |\n| Too many significant hits (>50%) | Normalization failure or global shift | Check box plots, consider spike-in normalization |\n| Imputation creates artificial clusters | MNAR imputation too aggressive | Reduce downshift, try kNN, or filter more stringently |\n| TMT fold changes smaller than expected | Ratio compression | Use SPS-MS3 or apply compression correction |\n| High CV between replicates (>30%) | Sample prep variability | Review digestion protocol, add QC samples |\n",{"data":50,"body":60},{"name":4,"description":6,"usage":51,"version":52,"tags":53},"Invoke when designing a quantitative proteomics experiment or choosing analysis parameters.","1.0.0",[54,55,15,56,57,58,59],"skill","category:reasoning","mass-spectrometry","quantification","biomarker","hcls",{"type":61,"children":62},"root",[63,72,79,85,91,106,112,116,122,150,156,163,176,182,237,240,246,252,261,267,417,423,476,479,485,491,500,506,559,562,568,574,617,623,755,758,764,770,851,857,890,896,983,986,992,1055,1058,1064,1073,1076,1082,1088,1200,1206,1298,1304,1461,1467,1706,1709,1715,1733,1739,1757,1763,1916],{"type":64,"tag":65,"props":66,"children":68},"element","h1",{"id":67},"quantitative-proteomics-reasoning-skill",[69],{"type":70,"value":71},"text","Quantitative Proteomics — Reasoning Skill",{"type":64,"tag":73,"props":74,"children":76},"h2",{"id":75},"overview",[77],{"type":70,"value":78},"Overview",{"type":64,"tag":80,"props":81,"children":82},"p",{},[83],{"type":70,"value":84},"You are an expert in quantitative proteomics experimental design and statistical analysis.\nWhen the user asks about quantification strategy, imputation, normalization, or\ndifferential expression for proteomics data, apply the decision frameworks below.",{"type":64,"tag":73,"props":86,"children":88},{"id":87},"usage",[89],{"type":70,"value":90},"Usage",{"type":64,"tag":92,"props":93,"children":94},"ul",{},[95,101],{"type":64,"tag":96,"props":97,"children":98},"li",{},[99],{"type":70,"value":100},"Choose between LFQ, TMT, and DIA quantification strategies for a given study design",{"type":64,"tag":96,"props":102,"children":103},{},[104],{"type":70,"value":105},"Select imputation and normalization methods based on missingness patterns and data properties",{"type":64,"tag":73,"props":107,"children":109},{"id":108},"core-concepts",[110],{"type":70,"value":111},"Core Concepts",{"type":64,"tag":113,"props":114,"children":115},"hr",{},[],{"type":64,"tag":73,"props":117,"children":119},{"id":118},"response-format",[120],{"type":70,"value":121},"Response Format",{"type":64,"tag":92,"props":123,"children":124},{},[125,130,135,140,145],{"type":64,"tag":96,"props":126,"children":127},{},[128],{"type":70,"value":129},"Lead with the direct recommendation or classification (≤3 sentences)",{"type":64,"tag":96,"props":131,"children":132},{},[133],{"type":70,"value":134},"Structure as: recommendation → justification (citing specific criteria\u002Fthresholds) → caveats",{"type":64,"tag":96,"props":136,"children":137},{},[138],{"type":70,"value":139},"Use tables for comparisons; bullet points for criteria lists",{"type":64,"tag":96,"props":141,"children":142},{},[143],{"type":70,"value":144},"Omit background the user already knows — they asked the question",{"type":64,"tag":96,"props":146,"children":147},{},[148],{"type":70,"value":149},"Target: 200-400 words unless the user requests exhaustive detail\nThe decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.",{"type":64,"tag":73,"props":151,"children":153},{"id":152},"_1-quantification-strategy-selection",[154],{"type":70,"value":155},"1. Quantification Strategy Selection",{"type":64,"tag":157,"props":158,"children":160},"h3",{"id":159},"_11-decision-tree",[161],{"type":70,"value":162},"1.1 Decision Tree",{"type":64,"tag":164,"props":165,"children":169},"pre",{"className":166,"code":168,"language":70},[167],"language-text","Is the goal discovery or targeted validation?\n├─ Discovery (maximize coverage)\n│  ├─ Sample count ≤ 20 → LFQ (label-free quantification)\n│  ├─ Sample count 20–100 → TMT (multiplexed, up to 18-plex)\n│  └─ Sample count any, need comprehensive coverage → DIA\n├─ Targeted validation\n│  └─ Use PRM (parallel reaction monitoring) or SRM\u002FMRM\n└─ Large clinical cohort (>100 samples)\n   ├─ Budget allows multiplexing → TMT with fractionation\n   └─ Budget constrained → DIA (single-shot)\n",[170],{"type":64,"tag":171,"props":172,"children":174},"code",{"__ignoreMap":173},"",[175],{"type":70,"value":168},{"type":64,"tag":157,"props":177,"children":179},{"id":178},"_12-key-rules",[180],{"type":70,"value":181},"1.2 Key Rules",{"type":64,"tag":183,"props":184,"children":185},"ol",{},[186,197,207,217,227],{"type":64,"tag":96,"props":187,"children":188},{},[189,195],{"type":64,"tag":190,"props":191,"children":192},"strong",{},[193],{"type":70,"value":194},"Never mix quantification strategies",{"type":70,"value":196}," within a single study unless you have a rigorous batch-correction plan.",{"type":64,"tag":96,"props":198,"children":199},{},[200,205],{"type":64,"tag":190,"props":201,"children":202},{},[203],{"type":70,"value":204},"LFQ requires match-between-runs (MBR)",{"type":70,"value":206}," to reduce missingness — but MBR can introduce false transfers (~5% false positive rate at default settings).",{"type":64,"tag":96,"props":208,"children":209},{},[210,215],{"type":64,"tag":190,"props":211,"children":212},{},[213],{"type":70,"value":214},"DIA library-free mode",{"type":70,"value":216}," (DIA-NN ≥1.8) is simpler; library-based gives ~10% more IDs.",{"type":64,"tag":96,"props":218,"children":219},{},[220,225],{"type":64,"tag":190,"props":221,"children":222},{},[223],{"type":70,"value":224},"Biological replicates matter more than technical replicates.",{"type":70,"value":226}," Minimum 3 per condition; 5+ for clinical studies.",{"type":64,"tag":96,"props":228,"children":229},{},[230,235],{"type":64,"tag":190,"props":231,"children":232},{},[233],{"type":70,"value":234},"TMT ratio compression:",{"type":70,"value":236}," Expect 30–50% underestimation at MS2 level. True FC ≈ observed FC × 1.5–2.0. SPS-MS3 reduces compression to \u003C10% but costs ~30% fewer IDs. Do not apply arbitrary correction without spike-in ground truth.",{"type":64,"tag":113,"props":238,"children":239},{},[],{"type":64,"tag":73,"props":241,"children":243},{"id":242},"_2-missing-value-assessment-and-imputation",[244],{"type":70,"value":245},"2. Missing Value Assessment and Imputation",{"type":64,"tag":157,"props":247,"children":249},{"id":248},"_21-imputation-decision-tree",[250],{"type":70,"value":251},"2.1 Imputation Decision Tree",{"type":64,"tag":164,"props":253,"children":256},{"className":254,"code":255,"language":70},[167],"Assess missingness pattern:\n├─ >50% missing across ALL groups → Exclude protein (unreliable)\n├─ Missing predominantly in one condition\n│  └─ Likely MNAR → Use left-censored methods (MinProb, QRILC)\n├─ Missing scattered across conditions\n│  └─ Likely MAR → Use kNN, MLE, or BPCA\n└─ Mixed pattern\n   └─ Hybrid: classify each protein's missingness, apply appropriate method\n",[257],{"type":64,"tag":171,"props":258,"children":259},{"__ignoreMap":173},[260],{"type":70,"value":255},{"type":64,"tag":157,"props":262,"children":264},{"id":263},"_22-imputation-methods-and-pitfalls",[265],{"type":70,"value":266},"2.2 Imputation Methods and Pitfalls",{"type":64,"tag":268,"props":269,"children":270},"table",{},[271,300],{"type":64,"tag":272,"props":273,"children":274},"thead",{},[275],{"type":64,"tag":276,"props":277,"children":278},"tr",{},[279,285,290,295],{"type":64,"tag":280,"props":281,"children":282},"th",{},[283],{"type":70,"value":284},"Method",{"type":64,"tag":280,"props":286,"children":287},{},[288],{"type":70,"value":289},"Mechanism",{"type":64,"tag":280,"props":291,"children":292},{},[293],{"type":70,"value":294},"When to Use",{"type":64,"tag":280,"props":296,"children":297},{},[298],{"type":70,"value":299},"Pitfall",{"type":64,"tag":301,"props":302,"children":303},"tbody",{},[304,328,350,373,395],{"type":64,"tag":276,"props":305,"children":306},{},[307,313,318,323],{"type":64,"tag":308,"props":309,"children":310},"td",{},[311],{"type":70,"value":312},"MinProb",{"type":64,"tag":308,"props":314,"children":315},{},[316],{"type":70,"value":317},"MNAR",{"type":64,"tag":308,"props":319,"children":320},{},[321],{"type":70,"value":322},"Low-abundance below LOD",{"type":64,"tag":308,"props":324,"children":325},{},[326],{"type":70,"value":327},"Underestimates variance",{"type":64,"tag":276,"props":329,"children":330},{},[331,336,340,345],{"type":64,"tag":308,"props":332,"children":333},{},[334],{"type":70,"value":335},"QRILC",{"type":64,"tag":308,"props":337,"children":338},{},[339],{"type":70,"value":317},{"type":64,"tag":308,"props":341,"children":342},{},[343],{"type":70,"value":344},"Left-censored distributions",{"type":64,"tag":308,"props":346,"children":347},{},[348],{"type":70,"value":349},"Assumes normality",{"type":64,"tag":276,"props":351,"children":352},{},[353,358,363,368],{"type":64,"tag":308,"props":354,"children":355},{},[356],{"type":70,"value":357},"kNN (k=10)",{"type":64,"tag":308,"props":359,"children":360},{},[361],{"type":70,"value":362},"MAR",{"type":64,"tag":308,"props":364,"children":365},{},[366],{"type":70,"value":367},"Scattered missingness",{"type":64,"tag":308,"props":369,"children":370},{},[371],{"type":70,"value":372},"Fails if too many missing",{"type":64,"tag":276,"props":374,"children":375},{},[376,381,385,390],{"type":64,"tag":308,"props":377,"children":378},{},[379],{"type":70,"value":380},"MLE (EM)",{"type":64,"tag":308,"props":382,"children":383},{},[384],{"type":70,"value":362},{"type":64,"tag":308,"props":386,"children":387},{},[388],{"type":70,"value":389},"Well-behaved MAR data",{"type":64,"tag":308,"props":391,"children":392},{},[393],{"type":70,"value":394},"Assumes multivariate normality",{"type":64,"tag":276,"props":396,"children":397},{},[398,403,407,412],{"type":64,"tag":308,"props":399,"children":400},{},[401],{"type":70,"value":402},"BPCA",{"type":64,"tag":308,"props":404,"children":405},{},[406],{"type":70,"value":362},{"type":64,"tag":308,"props":408,"children":409},{},[410],{"type":70,"value":411},"High-dimensional data",{"type":64,"tag":308,"props":413,"children":414},{},[415],{"type":70,"value":416},"Computationally expensive",{"type":64,"tag":157,"props":418,"children":420},{"id":419},"_23-imputation-rules",[421],{"type":70,"value":422},"2.3 Imputation Rules",{"type":64,"tag":183,"props":424,"children":425},{},[426,436,446,456,466],{"type":64,"tag":96,"props":427,"children":428},{},[429,434],{"type":64,"tag":190,"props":430,"children":431},{},[432],{"type":70,"value":433},"Always visualize missingness first.",{"type":70,"value":435}," Plot heatmap and density plots before choosing method.",{"type":64,"tag":96,"props":437,"children":438},{},[439,444],{"type":64,"tag":190,"props":440,"children":441},{},[442],{"type":70,"value":443},"Filter before imputing.",{"type":70,"value":445}," Remove proteins with >50% missing and contaminants.",{"type":64,"tag":96,"props":447,"children":448},{},[449,454],{"type":64,"tag":190,"props":450,"children":451},{},[452],{"type":70,"value":453},"MNAR parameters:",{"type":70,"value":455}," downshift = 1.8 SD, width = 0.3 SD from the observed distribution.",{"type":64,"tag":96,"props":457,"children":458},{},[459,464],{"type":64,"tag":190,"props":460,"children":461},{},[462],{"type":70,"value":463},"Never impute then filter.",{"type":70,"value":465}," Filtering after imputation biases the dataset.",{"type":64,"tag":96,"props":467,"children":468},{},[469,474],{"type":64,"tag":190,"props":470,"children":471},{},[472],{"type":70,"value":473},"Sensitivity analysis:",{"type":70,"value":475}," Run DE with and without imputation to confirm key hits are robust.",{"type":64,"tag":113,"props":477,"children":478},{},[],{"type":64,"tag":73,"props":480,"children":482},{"id":481},"_3-normalization-strategy",[483],{"type":70,"value":484},"3. Normalization Strategy",{"type":64,"tag":157,"props":486,"children":488},{"id":487},"_31-decision-tree",[489],{"type":70,"value":490},"3.1 Decision Tree",{"type":64,"tag":164,"props":492,"children":495},{"className":493,"code":494,"language":70},[167],"What is the expected biological variation?\n├─ Most proteins unchanged between conditions (typical)\n│  ├─ Default → Median centering (simple, robust)\n│  ├─ Strong batch effects → Quantile normalization\n│  └─ Variance depends on intensity → VSN\n├─ Global shift expected (e.g., drug treatment affecting many proteins)\n│  └─ Use spike-in standards, NOT data-driven methods\n└─ TMT data\n   └─ Sample loading normalization → then median centering within plex\n└─ DIA data\n   └─ Median centering on precursor quantities BEFORE protein roll-up\n",[496],{"type":64,"tag":171,"props":497,"children":498},{"__ignoreMap":173},[499],{"type":70,"value":494},{"type":64,"tag":157,"props":501,"children":503},{"id":502},"_32-rules",[504],{"type":70,"value":505},"3.2 Rules",{"type":64,"tag":183,"props":507,"children":508},{},[509,519,529,539,549],{"type":64,"tag":96,"props":510,"children":511},{},[512,517],{"type":64,"tag":190,"props":513,"children":514},{},[515],{"type":70,"value":516},"Log2-transform intensities before normalization",{"type":70,"value":518}," (except VSN, which includes transformation).",{"type":64,"tag":96,"props":520,"children":521},{},[522,527],{"type":64,"tag":190,"props":523,"children":524},{},[525],{"type":70,"value":526},"Do NOT quantile-normalize if >30% of proteome is affected.",{"type":70,"value":528}," It will mask real biology.",{"type":64,"tag":96,"props":530,"children":531},{},[532,537],{"type":64,"tag":190,"props":533,"children":534},{},[535],{"type":70,"value":536},"TMT requires two-step normalization:",{"type":70,"value":538}," sample loading normalization, then internal reference scaling.",{"type":64,"tag":96,"props":540,"children":541},{},[542,547],{"type":64,"tag":190,"props":543,"children":544},{},[545],{"type":70,"value":546},"Batch correction (ComBat) is separate from normalization.",{"type":70,"value":548}," Normalize first, then correct.",{"type":64,"tag":96,"props":550,"children":551},{},[552,557],{"type":64,"tag":190,"props":553,"children":554},{},[555],{"type":70,"value":556},"Check with box plots and MA plots.",{"type":70,"value":558}," Post-normalization medians should align.",{"type":64,"tag":113,"props":560,"children":561},{},[],{"type":64,"tag":73,"props":563,"children":565},{"id":564},"_4-differential-expression-interpretation",[566],{"type":70,"value":567},"4. Differential Expression Interpretation",{"type":64,"tag":157,"props":569,"children":571},{"id":570},"_41-fc-thresholds-and-rules",[572],{"type":70,"value":573},"4.1 FC Thresholds and Rules",{"type":64,"tag":183,"props":575,"children":576},{},[577,587,597,607],{"type":64,"tag":96,"props":578,"children":579},{},[580,585],{"type":64,"tag":190,"props":581,"children":582},{},[583],{"type":70,"value":584},"FC thresholds depend on biology.",{"type":70,"value":586}," Secreted biomarkers: |log2FC| > 0.5. Intracellular: |log2FC| > 1.0.",{"type":64,"tag":96,"props":588,"children":589},{},[590,595],{"type":64,"tag":190,"props":591,"children":592},{},[593],{"type":70,"value":594},"DEqMS is preferred over limma",{"type":70,"value":596}," because it models variance as a function of peptide count.",{"type":64,"tag":96,"props":598,"children":599},{},[600,605],{"type":64,"tag":190,"props":601,"children":602},{},[603],{"type":70,"value":604},"Always use adjusted p-values.",{"type":70,"value":606}," Unadjusted p \u003C 0.05 yields hundreds of false positives.",{"type":64,"tag":96,"props":608,"children":609},{},[610,615],{"type":64,"tag":190,"props":611,"children":612},{},[613],{"type":70,"value":614},"Check for confounders.",{"type":70,"value":616}," Include batch, sex, age as covariates in the linear model.",{"type":64,"tag":157,"props":618,"children":620},{"id":619},"_42-common-mistakes",[621],{"type":70,"value":622},"4.2 Common Mistakes",{"type":64,"tag":92,"props":624,"children":625},{},[626,650,671,692,713,734],{"type":64,"tag":96,"props":627,"children":628},{},[629,634,636,641,643,648],{"type":64,"tag":190,"props":630,"children":631},{},[632],{"type":70,"value":633},"Wrong:",{"type":70,"value":635}," Using a standard t-test for differential expression in proteomics\n",{"type":64,"tag":190,"props":637,"children":638},{},[639],{"type":70,"value":640},"Right:",{"type":70,"value":642}," Use limma (empirical Bayes moderated t-test) or DEqMS (variance modeled by peptide count)\n",{"type":64,"tag":190,"props":644,"children":645},{},[646],{"type":70,"value":647},"Why:",{"type":70,"value":649}," Standard t-tests have insufficient power with small sample sizes; moderated statistics borrow strength across proteins",{"type":64,"tag":96,"props":651,"children":652},{},[653,657,659,663,665,669],{"type":64,"tag":190,"props":654,"children":655},{},[656],{"type":70,"value":633},{"type":70,"value":658}," Filtering differentially expressed proteins on p-value alone without a fold-change threshold\n",{"type":64,"tag":190,"props":660,"children":661},{},[662],{"type":70,"value":640},{"type":70,"value":664}," Require both adjusted p-value \u003C 0.05 and a minimum |log2FC| threshold (≥0.5 for secreted, ≥1.0 for intracellular)\n",{"type":64,"tag":190,"props":666,"children":667},{},[668],{"type":70,"value":647},{"type":70,"value":670}," Statistically significant but biologically trivial changes (tiny FC) are not actionable and clutter results",{"type":64,"tag":96,"props":672,"children":673},{},[674,678,680,684,686,690],{"type":64,"tag":190,"props":675,"children":676},{},[677],{"type":70,"value":633},{"type":70,"value":679}," Interpreting TMT fold changes at face value without accounting for ratio compression\n",{"type":64,"tag":190,"props":681,"children":682},{},[683],{"type":70,"value":640},{"type":70,"value":685}," Use SPS-MS3 quantification or apply a compression correction factor (true FC ≈ observed × 1.5–2.0)\n",{"type":64,"tag":190,"props":687,"children":688},{},[689],{"type":70,"value":647},{"type":70,"value":691}," MS2-level TMT systematically underestimates fold changes by 30–50% due to co-isolation interference",{"type":64,"tag":96,"props":693,"children":694},{},[695,699,701,705,707,711],{"type":64,"tag":190,"props":696,"children":697},{},[698],{"type":70,"value":633},{"type":70,"value":700}," Including contaminant and reverse-hit proteins in the analysis\n",{"type":64,"tag":190,"props":702,"children":703},{},[704],{"type":70,"value":640},{"type":70,"value":706}," Filter out all entries with CON__ and REV__ prefixes before normalization and statistical testing\n",{"type":64,"tag":190,"props":708,"children":709},{},[710],{"type":70,"value":647},{"type":70,"value":712}," Contaminants distort normalization and inflate protein counts; reverse hits are decoy sequences",{"type":64,"tag":96,"props":714,"children":715},{},[716,720,722,726,728,732],{"type":64,"tag":190,"props":717,"children":718},{},[719],{"type":70,"value":633},{"type":70,"value":721}," Imputing missing values after normalization\n",{"type":64,"tag":190,"props":723,"children":724},{},[725],{"type":70,"value":640},{"type":70,"value":727}," Log2-transform first, then impute, then normalize\n",{"type":64,"tag":190,"props":729,"children":730},{},[731],{"type":70,"value":647},{"type":70,"value":733}," Imputing on normalized data uses shifted distributions as reference, introducing systematic bias in imputed values",{"type":64,"tag":96,"props":735,"children":736},{},[737,741,743,747,749,753],{"type":64,"tag":190,"props":738,"children":739},{},[740],{"type":70,"value":633},{"type":70,"value":742}," Including proteins identified by only a single peptide in quantitative analysis\n",{"type":64,"tag":190,"props":744,"children":745},{},[746],{"type":70,"value":640},{"type":70,"value":748}," Require ≥2 unique peptides per protein for confident identification and quantification\n",{"type":64,"tag":190,"props":750,"children":751},{},[752],{"type":70,"value":647},{"type":70,"value":754}," Single-peptide IDs have high false-discovery rates and unreliable quantification",{"type":64,"tag":113,"props":756,"children":757},{},[],{"type":64,"tag":73,"props":759,"children":761},{"id":760},"_5-study-design-and-qc",[762],{"type":70,"value":763},"5. Study Design and QC",{"type":64,"tag":157,"props":765,"children":767},{"id":766},"_51-sample-size-guidelines",[768],{"type":70,"value":769},"5.1 Sample Size Guidelines",{"type":64,"tag":268,"props":771,"children":772},{},[773,794],{"type":64,"tag":272,"props":774,"children":775},{},[776],{"type":64,"tag":276,"props":777,"children":778},{},[779,784,789],{"type":64,"tag":280,"props":780,"children":781},{},[782],{"type":70,"value":783},"Study Type",{"type":64,"tag":280,"props":785,"children":786},{},[787],{"type":70,"value":788},"Minimum",{"type":64,"tag":280,"props":790,"children":791},{},[792],{"type":70,"value":793},"Recommended",{"type":64,"tag":301,"props":795,"children":796},{},[797,815,833],{"type":64,"tag":276,"props":798,"children":799},{},[800,805,810],{"type":64,"tag":308,"props":801,"children":802},{},[803],{"type":70,"value":804},"Discovery",{"type":64,"tag":308,"props":806,"children":807},{},[808],{"type":70,"value":809},"3 per group",{"type":64,"tag":308,"props":811,"children":812},{},[813],{"type":70,"value":814},"5–6 per group",{"type":64,"tag":276,"props":816,"children":817},{},[818,823,828],{"type":64,"tag":308,"props":819,"children":820},{},[821],{"type":70,"value":822},"Biomarker validation",{"type":64,"tag":308,"props":824,"children":825},{},[826],{"type":70,"value":827},"10 per group",{"type":64,"tag":308,"props":829,"children":830},{},[831],{"type":70,"value":832},"20+ per group",{"type":64,"tag":276,"props":834,"children":835},{},[836,841,846],{"type":64,"tag":308,"props":837,"children":838},{},[839],{"type":70,"value":840},"Clinical proteomics",{"type":64,"tag":308,"props":842,"children":843},{},[844],{"type":70,"value":845},"20 per group",{"type":64,"tag":308,"props":847,"children":848},{},[849],{"type":70,"value":850},"50+ per group",{"type":64,"tag":157,"props":852,"children":854},{"id":853},"_52-batch-design-rules",[855],{"type":70,"value":856},"5.2 Batch Design Rules",{"type":64,"tag":183,"props":858,"children":859},{},[860,870,880],{"type":64,"tag":96,"props":861,"children":862},{},[863,868],{"type":64,"tag":190,"props":864,"children":865},{},[866],{"type":70,"value":867},"Randomize samples across batches.",{"type":70,"value":869}," Never all cases in one batch, all controls in another.",{"type":64,"tag":96,"props":871,"children":872},{},[873,878],{"type":64,"tag":190,"props":874,"children":875},{},[876],{"type":70,"value":877},"Include a bridge sample in every TMT plex",{"type":70,"value":879}," for cross-plex normalization.",{"type":64,"tag":96,"props":881,"children":882},{},[883,888],{"type":64,"tag":190,"props":884,"children":885},{},[886],{"type":70,"value":887},"Block confounders:",{"type":70,"value":889}," Balance age and sex across batches.",{"type":64,"tag":157,"props":891,"children":893},{"id":892},"_53-qc-checkpoints",[894],{"type":70,"value":895},"5.3 QC Checkpoints",{"type":64,"tag":268,"props":897,"children":898},{},[899,915],{"type":64,"tag":272,"props":900,"children":901},{},[902],{"type":64,"tag":276,"props":903,"children":904},{},[905,910],{"type":64,"tag":280,"props":906,"children":907},{},[908],{"type":70,"value":909},"Checkpoint",{"type":64,"tag":280,"props":911,"children":912},{},[913],{"type":70,"value":914},"Acceptable Range",{"type":64,"tag":301,"props":916,"children":917},{},[918,931,944,957,970],{"type":64,"tag":276,"props":919,"children":920},{},[921,926],{"type":64,"tag":308,"props":922,"children":923},{},[924],{"type":70,"value":925},"Protein IDs per run",{"type":64,"tag":308,"props":927,"children":928},{},[929],{"type":70,"value":930},">4,000 (LFQ), >6,000 (DIA), >8,000 (TMT)",{"type":64,"tag":276,"props":932,"children":933},{},[934,939],{"type":64,"tag":308,"props":935,"children":936},{},[937],{"type":70,"value":938},"CV of intensities",{"type":64,"tag":308,"props":940,"children":941},{},[942],{"type":70,"value":943},"\u003C20% for technical replicates",{"type":64,"tag":276,"props":945,"children":946},{},[947,952],{"type":64,"tag":308,"props":948,"children":949},{},[950],{"type":70,"value":951},"Missingness rate",{"type":64,"tag":308,"props":953,"children":954},{},[955],{"type":70,"value":956},"\u003C30% (LFQ), \u003C10% (TMT), \u003C15% (DIA)",{"type":64,"tag":276,"props":958,"children":959},{},[960,965],{"type":64,"tag":308,"props":961,"children":962},{},[963],{"type":70,"value":964},"Replicate correlation",{"type":64,"tag":308,"props":966,"children":967},{},[968],{"type":70,"value":969},"Pearson r >0.95 (technical), >0.85 (biological)",{"type":64,"tag":276,"props":971,"children":972},{},[973,978],{"type":64,"tag":308,"props":974,"children":975},{},[976],{"type":70,"value":977},"PCA clustering",{"type":64,"tag":308,"props":979,"children":980},{},[981],{"type":70,"value":982},"Replicates cluster together",{"type":64,"tag":113,"props":984,"children":985},{},[],{"type":64,"tag":73,"props":987,"children":989},{"id":988},"_6-critical-thresholds-quick-reference",[990],{"type":70,"value":991},"6. Critical Thresholds Quick Reference",{"type":64,"tag":92,"props":993,"children":994},{},[995,1005,1015,1025,1035,1045],{"type":64,"tag":96,"props":996,"children":997},{},[998,1003],{"type":64,"tag":190,"props":999,"children":1000},{},[1001],{"type":70,"value":1002},"CV > 20% across replicates",{"type":70,"value":1004}," → flag run for investigation",{"type":64,"tag":96,"props":1006,"children":1007},{},[1008,1013],{"type":64,"tag":190,"props":1009,"children":1010},{},[1011],{"type":70,"value":1012},"Proteins >50% missing in ALL groups",{"type":70,"value":1014}," → exclude before imputation",{"type":64,"tag":96,"props":1016,"children":1017},{},[1018,1023],{"type":64,"tag":190,"props":1019,"children":1020},{},[1021],{"type":70,"value":1022},"TMT ratio compression correction:",{"type":70,"value":1024}," true FC ≈ observed FC × 1.5–2.0 (MS2 level)",{"type":64,"tag":96,"props":1026,"children":1027},{},[1028,1033],{"type":64,"tag":190,"props":1029,"children":1030},{},[1031],{"type":70,"value":1032},"Quantile normalization forbidden",{"type":70,"value":1034}," if >30% of proteome differentially expressed",{"type":64,"tag":96,"props":1036,"children":1037},{},[1038,1043],{"type":64,"tag":190,"props":1039,"children":1040},{},[1041],{"type":70,"value":1042},"Phosphoproteomics:",{"type":70,"value":1044}," require site localization probability >0.75; normalize phospho to total protein",{"type":64,"tag":96,"props":1046,"children":1047},{},[1048,1053],{"type":64,"tag":190,"props":1049,"children":1050},{},[1051],{"type":70,"value":1052},"Proteomics-transcriptomics correlation",{"type":70,"value":1054}," is typically r = 0.4–0.6 — discordance is biologically informative (post-translational regulation)",{"type":64,"tag":113,"props":1056,"children":1057},{},[],{"type":64,"tag":73,"props":1059,"children":1061},{"id":1060},"_7-quick-reference-decision-summary",[1062],{"type":70,"value":1063},"7. Quick-Reference Decision Summary",{"type":64,"tag":164,"props":1065,"children":1068},{"className":1066,"code":1067,"language":70},[167],"Quantification:  Small discovery → LFQ\n                 Large cohort → TMT (with SPS-MS3)\n                 Comprehensive → DIA\n\nImputation:      Low-abundance missing → MinProb \u002F QRILC (MNAR)\n                 Random missing → kNN \u002F MLE (MAR)\n                 Mixed → Hybrid approach\n\nNormalization:   Default → Median centering\n                 Batch effects → Quantile\n                 Heteroscedastic → VSN\n                 Global shift → Spike-in standards\n\nDE Testing:      Default → limma (empirical Bayes)\n                 Proteomics-aware → DEqMS\n                 Threshold → adj.p \u003C 0.05, |log2FC| > 1.0\n",[1069],{"type":64,"tag":171,"props":1070,"children":1071},{"__ignoreMap":173},[1072],{"type":70,"value":1067},{"type":64,"tag":113,"props":1074,"children":1075},{},[],{"type":64,"tag":73,"props":1077,"children":1079},{"id":1078},"pipeline-reference",[1080],{"type":70,"value":1081},"Pipeline Reference",{"type":64,"tag":157,"props":1083,"children":1085},{"id":1084},"input-formats",[1086],{"type":70,"value":1087},"Input Formats",{"type":64,"tag":268,"props":1089,"children":1090},{},[1091,1112],{"type":64,"tag":272,"props":1092,"children":1093},{},[1094],{"type":64,"tag":276,"props":1095,"children":1096},{},[1097,1102,1107],{"type":64,"tag":280,"props":1098,"children":1099},{},[1100],{"type":70,"value":1101},"Source",{"type":64,"tag":280,"props":1103,"children":1104},{},[1105],{"type":70,"value":1106},"File",{"type":64,"tag":280,"props":1108,"children":1109},{},[1110],{"type":70,"value":1111},"Key Columns",{"type":64,"tag":301,"props":1113,"children":1114},{},[1115,1133,1164,1182],{"type":64,"tag":276,"props":1116,"children":1117},{},[1118,1123,1128],{"type":64,"tag":308,"props":1119,"children":1120},{},[1121],{"type":70,"value":1122},"MaxQuant",{"type":64,"tag":308,"props":1124,"children":1125},{},[1126],{"type":70,"value":1127},"proteinGroups.txt",{"type":64,"tag":308,"props":1129,"children":1130},{},[1131],{"type":70,"value":1132},"Protein IDs, Gene names, LFQ intensity *, iBAQ, Reverse, Potential contaminant",{"type":64,"tag":276,"props":1134,"children":1135},{},[1136,1141,1146],{"type":64,"tag":308,"props":1137,"children":1138},{},[1139],{"type":70,"value":1140},"MSFragger",{"type":64,"tag":308,"props":1142,"children":1143},{},[1144],{"type":70,"value":1145},"combined_protein.tsv",{"type":64,"tag":308,"props":1147,"children":1148},{},[1149,1151,1157,1159],{"type":70,"value":1150},"Protein, Gene, ",{"type":64,"tag":1152,"props":1153,"children":1154},"em",{},[1155],{"type":70,"value":1156},"Intensity",{"type":70,"value":1158},", ",{"type":64,"tag":1152,"props":1160,"children":1161},{},[1162],{"type":70,"value":1163},"Spectral Count",{"type":64,"tag":276,"props":1165,"children":1166},{},[1167,1172,1177],{"type":64,"tag":308,"props":1168,"children":1169},{},[1170],{"type":70,"value":1171},"Proteome Discoverer",{"type":64,"tag":308,"props":1173,"children":1174},{},[1175],{"type":70,"value":1176},"Proteins.txt",{"type":64,"tag":308,"props":1178,"children":1179},{},[1180],{"type":70,"value":1181},"Accession, Description, Abundance *",{"type":64,"tag":276,"props":1183,"children":1184},{},[1185,1190,1195],{"type":64,"tag":308,"props":1186,"children":1187},{},[1188],{"type":70,"value":1189},"DIA-NN",{"type":64,"tag":308,"props":1191,"children":1192},{},[1193],{"type":70,"value":1194},"report.pg_matrix.tsv",{"type":64,"tag":308,"props":1196,"children":1197},{},[1198],{"type":70,"value":1199},"Protein.Group, sample columns with quantities",{"type":64,"tag":157,"props":1201,"children":1203},{"id":1202},"tmt-sample-loading-normalization-internal-reference-scaling",[1204],{"type":70,"value":1205},"TMT Sample Loading Normalization + Internal Reference Scaling",{"type":64,"tag":164,"props":1207,"children":1211},{"className":1208,"code":1209,"language":1210,"meta":173,"style":173},"language-r shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# TMT: Sample Loading Normalization + Internal Reference Scaling\ncol_sums \u003C- colSums(mat, na.rm = TRUE)\nscaling_factors \u003C- median(col_sums) \u002F col_sums\nmat_sln \u003C- sweep(mat, 2, scaling_factors, \"*\")\n\n# IRS using bridge channel (e.g., pooled reference in 131C)\nbridge \u003C- mat_sln[, grep(\"131C\", colnames(mat_sln))]\nirs_factors \u003C- apply(bridge, 1, median, na.rm = TRUE)\nmat_irs \u003C- mat_sln \u002F irs_factors  # row-wise scaling across plexes\n","r",[1212],{"type":64,"tag":171,"props":1213,"children":1214},{"__ignoreMap":173},[1215,1226,1235,1244,1252,1262,1271,1280,1289],{"type":64,"tag":1216,"props":1217,"children":1220},"span",{"class":1218,"line":1219},"line",1,[1221],{"type":64,"tag":1216,"props":1222,"children":1223},{},[1224],{"type":70,"value":1225},"# TMT: Sample Loading Normalization + Internal Reference Scaling\n",{"type":64,"tag":1216,"props":1227,"children":1229},{"class":1218,"line":1228},2,[1230],{"type":64,"tag":1216,"props":1231,"children":1232},{},[1233],{"type":70,"value":1234},"col_sums \u003C- colSums(mat, na.rm = TRUE)\n",{"type":64,"tag":1216,"props":1236,"children":1238},{"class":1218,"line":1237},3,[1239],{"type":64,"tag":1216,"props":1240,"children":1241},{},[1242],{"type":70,"value":1243},"scaling_factors \u003C- median(col_sums) \u002F col_sums\n",{"type":64,"tag":1216,"props":1245,"children":1246},{"class":1218,"line":26},[1247],{"type":64,"tag":1216,"props":1248,"children":1249},{},[1250],{"type":70,"value":1251},"mat_sln \u003C- sweep(mat, 2, scaling_factors, \"*\")\n",{"type":64,"tag":1216,"props":1253,"children":1255},{"class":1218,"line":1254},5,[1256],{"type":64,"tag":1216,"props":1257,"children":1259},{"emptyLinePlaceholder":1258},true,[1260],{"type":70,"value":1261},"\n",{"type":64,"tag":1216,"props":1263,"children":1265},{"class":1218,"line":1264},6,[1266],{"type":64,"tag":1216,"props":1267,"children":1268},{},[1269],{"type":70,"value":1270},"# IRS using bridge channel (e.g., pooled reference in 131C)\n",{"type":64,"tag":1216,"props":1272,"children":1274},{"class":1218,"line":1273},7,[1275],{"type":64,"tag":1216,"props":1276,"children":1277},{},[1278],{"type":70,"value":1279},"bridge \u003C- mat_sln[, grep(\"131C\", colnames(mat_sln))]\n",{"type":64,"tag":1216,"props":1281,"children":1283},{"class":1218,"line":1282},8,[1284],{"type":64,"tag":1216,"props":1285,"children":1286},{},[1287],{"type":70,"value":1288},"irs_factors \u003C- apply(bridge, 1, median, na.rm = TRUE)\n",{"type":64,"tag":1216,"props":1290,"children":1292},{"class":1218,"line":1291},9,[1293],{"type":64,"tag":1216,"props":1294,"children":1295},{},[1296],{"type":70,"value":1297},"mat_irs \u003C- mat_sln \u002F irs_factors  # row-wise scaling across plexes\n",{"type":64,"tag":157,"props":1299,"children":1301},{"id":1300},"when-limma-fails",[1302],{"type":70,"value":1303},"When limma Fails",{"type":64,"tag":268,"props":1305,"children":1306},{},[1307,1328],{"type":64,"tag":272,"props":1308,"children":1309},{},[1310],{"type":64,"tag":276,"props":1311,"children":1312},{},[1313,1318,1323],{"type":64,"tag":280,"props":1314,"children":1315},{},[1316],{"type":70,"value":1317},"Scenario",{"type":64,"tag":280,"props":1319,"children":1320},{},[1321],{"type":70,"value":1322},"Problem",{"type":64,"tag":280,"props":1324,"children":1325},{},[1326],{"type":70,"value":1327},"Use Instead",{"type":64,"tag":301,"props":1329,"children":1330},{},[1331,1355,1387,1419,1443],{"type":64,"tag":276,"props":1332,"children":1333},{},[1334,1339,1344],{"type":64,"tag":308,"props":1335,"children":1336},{},[1337],{"type":70,"value":1338},"\u003C3 replicates per group",{"type":64,"tag":308,"props":1340,"children":1341},{},[1342],{"type":70,"value":1343},"Variance estimation unreliable",{"type":64,"tag":308,"props":1345,"children":1346},{},[1347,1353],{"type":64,"tag":171,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":70,"value":1352},"RankProd",{"type":70,"value":1354}," (rank-based, no variance estimate needed)",{"type":64,"tag":276,"props":1356,"children":1357},{},[1358,1363,1368],{"type":64,"tag":308,"props":1359,"children":1360},{},[1361],{"type":70,"value":1362},"Unbalanced design (e.g., 3 vs 8)",{"type":64,"tag":308,"props":1364,"children":1365},{},[1366],{"type":70,"value":1367},"Pooled variance biased toward larger group",{"type":64,"tag":308,"props":1369,"children":1370},{},[1371,1373,1379,1381],{"type":70,"value":1372},"Mixed models: ",{"type":64,"tag":171,"props":1374,"children":1376},{"className":1375},[],[1377],{"type":70,"value":1378},"lme4",{"type":70,"value":1380}," + ",{"type":64,"tag":171,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":70,"value":1386},"lmerTest",{"type":64,"tag":276,"props":1388,"children":1389},{},[1390,1395,1400],{"type":64,"tag":308,"props":1391,"children":1392},{},[1393],{"type":70,"value":1394},"Repeated measures \u002F longitudinal",{"type":64,"tag":308,"props":1396,"children":1397},{},[1398],{"type":70,"value":1399},"Correlated samples violate independence",{"type":64,"tag":308,"props":1401,"children":1402},{},[1403,1409,1411,1417],{"type":64,"tag":171,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":70,"value":1408},"limma::duplicateCorrelation()",{"type":70,"value":1410}," or ",{"type":64,"tag":171,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":70,"value":1416},"dream()",{"type":70,"value":1418}," from variancePartition",{"type":64,"tag":276,"props":1420,"children":1421},{},[1422,1427,1432],{"type":64,"tag":308,"props":1423,"children":1424},{},[1425],{"type":70,"value":1426},">2 groups",{"type":64,"tag":308,"props":1428,"children":1429},{},[1430],{"type":70,"value":1431},"Pairwise t-tests inflate FDR",{"type":64,"tag":308,"props":1433,"children":1434},{},[1435,1441],{"type":64,"tag":171,"props":1436,"children":1438},{"className":1437},[],[1439],{"type":70,"value":1440},"limma::contrasts.fit()",{"type":70,"value":1442}," with proper contrast matrix",{"type":64,"tag":276,"props":1444,"children":1445},{},[1446,1451,1456],{"type":64,"tag":308,"props":1447,"children":1448},{},[1449],{"type":70,"value":1450},"Paired samples (e.g., tumor vs adjacent normal)",{"type":64,"tag":308,"props":1452,"children":1453},{},[1454],{"type":70,"value":1455},"Must account for patient effect",{"type":64,"tag":308,"props":1457,"children":1458},{},[1459],{"type":70,"value":1460},"Include patient as blocking factor in design matrix",{"type":64,"tag":157,"props":1462,"children":1464},{"id":1463},"parameter-reference",[1465],{"type":70,"value":1466},"Parameter Reference",{"type":64,"tag":268,"props":1468,"children":1469},{},[1470,1496],{"type":64,"tag":272,"props":1471,"children":1472},{},[1473],{"type":64,"tag":276,"props":1474,"children":1475},{},[1476,1481,1486,1491],{"type":64,"tag":280,"props":1477,"children":1478},{},[1479],{"type":70,"value":1480},"Parameter",{"type":64,"tag":280,"props":1482,"children":1483},{},[1484],{"type":70,"value":1485},"Default",{"type":64,"tag":280,"props":1487,"children":1488},{},[1489],{"type":70,"value":1490},"Range",{"type":64,"tag":280,"props":1492,"children":1493},{},[1494],{"type":70,"value":1495},"Notes",{"type":64,"tag":301,"props":1497,"children":1498},{},[1499,1522,1545,1568,1591,1614,1637,1660,1683],{"type":64,"tag":276,"props":1500,"children":1501},{},[1502,1507,1512,1517],{"type":64,"tag":308,"props":1503,"children":1504},{},[1505],{"type":70,"value":1506},"MinProb quantile (q)",{"type":64,"tag":308,"props":1508,"children":1509},{},[1510],{"type":70,"value":1511},"0.01",{"type":64,"tag":308,"props":1513,"children":1514},{},[1515],{"type":70,"value":1516},"0.001–0.05",{"type":64,"tag":308,"props":1518,"children":1519},{},[1520],{"type":70,"value":1521},"Lower = more conservative imputation",{"type":64,"tag":276,"props":1523,"children":1524},{},[1525,1530,1535,1540],{"type":64,"tag":308,"props":1526,"children":1527},{},[1528],{"type":70,"value":1529},"MinProb downshift (σ)",{"type":64,"tag":308,"props":1531,"children":1532},{},[1533],{"type":70,"value":1534},"1.8",{"type":64,"tag":308,"props":1536,"children":1537},{},[1538],{"type":70,"value":1539},"1.4–2.0",{"type":64,"tag":308,"props":1541,"children":1542},{},[1543],{"type":70,"value":1544},"Standard deviations below mean",{"type":64,"tag":276,"props":1546,"children":1547},{},[1548,1553,1558,1563],{"type":64,"tag":308,"props":1549,"children":1550},{},[1551],{"type":70,"value":1552},"MinProb width",{"type":64,"tag":308,"props":1554,"children":1555},{},[1556],{"type":70,"value":1557},"0.3",{"type":64,"tag":308,"props":1559,"children":1560},{},[1561],{"type":70,"value":1562},"0.2–0.5",{"type":64,"tag":308,"props":1564,"children":1565},{},[1566],{"type":70,"value":1567},"Fraction of observed σ for imputed spread",{"type":64,"tag":276,"props":1569,"children":1570},{},[1571,1576,1581,1586],{"type":64,"tag":308,"props":1572,"children":1573},{},[1574],{"type":70,"value":1575},"kNN k",{"type":64,"tag":308,"props":1577,"children":1578},{},[1579],{"type":70,"value":1580},"10",{"type":64,"tag":308,"props":1582,"children":1583},{},[1584],{"type":70,"value":1585},"5–15",{"type":64,"tag":308,"props":1587,"children":1588},{},[1589],{"type":70,"value":1590},"Higher k = smoother but slower",{"type":64,"tag":276,"props":1592,"children":1593},{},[1594,1599,1604,1609],{"type":64,"tag":308,"props":1595,"children":1596},{},[1597],{"type":70,"value":1598},"kNN rowmax",{"type":64,"tag":308,"props":1600,"children":1601},{},[1602],{"type":70,"value":1603},"0.5",{"type":64,"tag":308,"props":1605,"children":1606},{},[1607],{"type":70,"value":1608},"0.3–0.7",{"type":64,"tag":308,"props":1610,"children":1611},{},[1612],{"type":70,"value":1613},"Max fraction missing per row allowed",{"type":64,"tag":276,"props":1615,"children":1616},{},[1617,1622,1627,1632],{"type":64,"tag":308,"props":1618,"children":1619},{},[1620],{"type":70,"value":1621},"Missingness filter",{"type":64,"tag":308,"props":1623,"children":1624},{},[1625],{"type":70,"value":1626},"70% in ≥1 group",{"type":64,"tag":308,"props":1628,"children":1629},{},[1630],{"type":70,"value":1631},"50–100%",{"type":64,"tag":308,"props":1633,"children":1634},{},[1635],{"type":70,"value":1636},"Stricter = fewer proteins, less noise",{"type":64,"tag":276,"props":1638,"children":1639},{},[1640,1645,1650,1655],{"type":64,"tag":308,"props":1641,"children":1642},{},[1643],{"type":70,"value":1644},"log2FC threshold",{"type":64,"tag":308,"props":1646,"children":1647},{},[1648],{"type":70,"value":1649},"1.0",{"type":64,"tag":308,"props":1651,"children":1652},{},[1653],{"type":70,"value":1654},"0.5–2.0",{"type":64,"tag":308,"props":1656,"children":1657},{},[1658],{"type":70,"value":1659},"Adjust to biological context",{"type":64,"tag":276,"props":1661,"children":1662},{},[1663,1668,1673,1678],{"type":64,"tag":308,"props":1664,"children":1665},{},[1666],{"type":70,"value":1667},"adj.p threshold",{"type":64,"tag":308,"props":1669,"children":1670},{},[1671],{"type":70,"value":1672},"0.05",{"type":64,"tag":308,"props":1674,"children":1675},{},[1676],{"type":70,"value":1677},"0.01–0.1",{"type":64,"tag":308,"props":1679,"children":1680},{},[1681],{"type":70,"value":1682},"0.01 for stringent discovery",{"type":64,"tag":276,"props":1684,"children":1685},{},[1686,1691,1696,1701],{"type":64,"tag":308,"props":1687,"children":1688},{},[1689],{"type":70,"value":1690},"Unique peptides min",{"type":64,"tag":308,"props":1692,"children":1693},{},[1694],{"type":70,"value":1695},"2",{"type":64,"tag":308,"props":1697,"children":1698},{},[1699],{"type":70,"value":1700},"1–3",{"type":64,"tag":308,"props":1702,"children":1703},{},[1704],{"type":70,"value":1705},"≥2 required for confident ID",{"type":64,"tag":113,"props":1707,"children":1708},{},[],{"type":64,"tag":73,"props":1710,"children":1712},{"id":1711},"when-not-to-use-this-skill",[1713],{"type":70,"value":1714},"When NOT to Use This Skill",{"type":64,"tag":92,"props":1716,"children":1717},{},[1718,1723,1728],{"type":64,"tag":96,"props":1719,"children":1720},{},[1721],{"type":70,"value":1722},"Validating biomarker candidates for clinical assay development (needs assay chemist)",{"type":64,"tag":96,"props":1724,"children":1725},{},[1726],{"type":70,"value":1727},"When sample prep issues dominate variance (pre-analytical problem, not analytical)",{"type":64,"tag":96,"props":1729,"children":1730},{},[1731],{"type":70,"value":1732},"Absolute quantification requiring isotope-labeled standards",{"type":64,"tag":73,"props":1734,"children":1736},{"id":1735},"when-to-escalate-to-a-human-expert",[1737],{"type":70,"value":1738},"When to Escalate to a Human Expert",{"type":64,"tag":92,"props":1740,"children":1741},{},[1742,1747,1752],{"type":64,"tag":96,"props":1743,"children":1744},{},[1745],{"type":70,"value":1746},"When missing data exceeds 50% and imputation assumptions are untestable",{"type":64,"tag":96,"props":1748,"children":1749},{},[1750],{"type":70,"value":1751},"Before publishing quantitative claims from single-batch experiments",{"type":64,"tag":96,"props":1753,"children":1754},{},[1755],{"type":70,"value":1756},"When results require mass spectrometry method development expertise",{"type":64,"tag":73,"props":1758,"children":1760},{"id":1759},"_8-troubleshooting-common-issues",[1761],{"type":70,"value":1762},"8. Troubleshooting Common Issues",{"type":64,"tag":268,"props":1764,"children":1765},{},[1766,1787],{"type":64,"tag":272,"props":1767,"children":1768},{},[1769],{"type":64,"tag":276,"props":1770,"children":1771},{},[1772,1777,1782],{"type":64,"tag":280,"props":1773,"children":1774},{},[1775],{"type":70,"value":1776},"Symptom",{"type":64,"tag":280,"props":1778,"children":1779},{},[1780],{"type":70,"value":1781},"Likely Cause",{"type":64,"tag":280,"props":1783,"children":1784},{},[1785],{"type":70,"value":1786},"Solution",{"type":64,"tag":301,"props":1788,"children":1789},{},[1790,1808,1826,1844,1862,1880,1898],{"type":64,"tag":276,"props":1791,"children":1792},{},[1793,1798,1803],{"type":64,"tag":308,"props":1794,"children":1795},{},[1796],{"type":70,"value":1797},"Very few protein IDs (\u003C2,000)",{"type":64,"tag":308,"props":1799,"children":1800},{},[1801],{"type":70,"value":1802},"Poor sample prep or instrument issue",{"type":64,"tag":308,"props":1804,"children":1805},{},[1806],{"type":70,"value":1807},"Check TIC, re-run QC standard",{"type":64,"tag":276,"props":1809,"children":1810},{},[1811,1816,1821],{"type":64,"tag":308,"props":1812,"children":1813},{},[1814],{"type":70,"value":1815},"All samples cluster by batch in PCA",{"type":64,"tag":308,"props":1817,"children":1818},{},[1819],{"type":70,"value":1820},"Batch effect dominates biology",{"type":64,"tag":308,"props":1822,"children":1823},{},[1824],{"type":70,"value":1825},"Apply ComBat or limma removeBatchEffect",{"type":64,"tag":276,"props":1827,"children":1828},{},[1829,1834,1839],{"type":64,"tag":308,"props":1830,"children":1831},{},[1832],{"type":70,"value":1833},"No significant DE proteins",{"type":64,"tag":308,"props":1835,"children":1836},{},[1837],{"type":70,"value":1838},"Underpowered study or wrong test",{"type":64,"tag":308,"props":1840,"children":1841},{},[1842],{"type":70,"value":1843},"Check sample size, use DEqMS, relax FC threshold",{"type":64,"tag":276,"props":1845,"children":1846},{},[1847,1852,1857],{"type":64,"tag":308,"props":1848,"children":1849},{},[1850],{"type":70,"value":1851},"Too many significant hits (>50%)",{"type":64,"tag":308,"props":1853,"children":1854},{},[1855],{"type":70,"value":1856},"Normalization failure or global shift",{"type":64,"tag":308,"props":1858,"children":1859},{},[1860],{"type":70,"value":1861},"Check box plots, consider spike-in normalization",{"type":64,"tag":276,"props":1863,"children":1864},{},[1865,1870,1875],{"type":64,"tag":308,"props":1866,"children":1867},{},[1868],{"type":70,"value":1869},"Imputation creates artificial clusters",{"type":64,"tag":308,"props":1871,"children":1872},{},[1873],{"type":70,"value":1874},"MNAR imputation too aggressive",{"type":64,"tag":308,"props":1876,"children":1877},{},[1878],{"type":70,"value":1879},"Reduce downshift, try kNN, or filter more stringently",{"type":64,"tag":276,"props":1881,"children":1882},{},[1883,1888,1893],{"type":64,"tag":308,"props":1884,"children":1885},{},[1886],{"type":70,"value":1887},"TMT fold changes smaller than expected",{"type":64,"tag":308,"props":1889,"children":1890},{},[1891],{"type":70,"value":1892},"Ratio compression",{"type":64,"tag":308,"props":1894,"children":1895},{},[1896],{"type":70,"value":1897},"Use SPS-MS3 or apply compression correction",{"type":64,"tag":276,"props":1899,"children":1900},{},[1901,1906,1911],{"type":64,"tag":308,"props":1902,"children":1903},{},[1904],{"type":70,"value":1905},"High CV between replicates (>30%)",{"type":64,"tag":308,"props":1907,"children":1908},{},[1909],{"type":70,"value":1910},"Sample prep variability",{"type":64,"tag":308,"props":1912,"children":1913},{},[1914],{"type":70,"value":1915},"Review digestion protocol, add QC samples",{"type":64,"tag":1917,"props":1918,"children":1919},"style",{},[1920],{"type":70,"value":1921},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1923,"total":2101},[1924,1945,1966,1976,1989,2002,2012,2022,2043,2058,2073,2088],{"slug":1925,"name":1925,"fn":1926,"description":1927,"org":1928,"tags":1929,"stars":1942,"repoUrl":1943,"updatedAt":1944},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1930,1933,1936,1939],{"name":1931,"slug":1932,"type":16},"AWS","aws",{"name":1934,"slug":1935,"type":16},"Debugging","debugging",{"name":1937,"slug":1938,"type":16},"Logs","logs",{"name":1940,"slug":1941,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1946,"name":1947,"fn":1948,"description":1949,"org":1950,"tags":1951,"stars":1942,"repoUrl":1943,"updatedAt":1965},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1952,1955,1956,1959,1962],{"name":1953,"slug":1954,"type":16},"Aurora","aurora",{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},"Database","database",{"name":1960,"slug":1961,"type":16},"Serverless","serverless",{"name":1963,"slug":1964,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1967,"name":1968,"fn":1948,"description":1949,"org":1969,"tags":1970,"stars":1942,"repoUrl":1943,"updatedAt":1975},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1971,1972,1973,1974],{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},{"name":1960,"slug":1961,"type":16},{"name":1963,"slug":1964,"type":16},"2026-07-12T08:36:42.694299",{"slug":1977,"name":1978,"fn":1948,"description":1949,"org":1979,"tags":1980,"stars":1942,"repoUrl":1943,"updatedAt":1988},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1981,1982,1983,1986,1987],{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},{"name":1984,"slug":1985,"type":16},"Migration","migration",{"name":1960,"slug":1961,"type":16},{"name":1963,"slug":1964,"type":16},"2026-07-12T08:36:38.584057",{"slug":1990,"name":1991,"fn":1948,"description":1949,"org":1992,"tags":1993,"stars":1942,"repoUrl":1943,"updatedAt":2001},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1994,1995,1996,1999,2000],{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},{"name":1997,"slug":1998,"type":16},"PostgreSQL","postgresql",{"name":1960,"slug":1961,"type":16},{"name":1963,"slug":1964,"type":16},"2026-07-12T08:36:46.530743",{"slug":2003,"name":2004,"fn":1948,"description":1949,"org":2005,"tags":2006,"stars":1942,"repoUrl":1943,"updatedAt":2011},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2007,2008,2009,2010],{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},{"name":1960,"slug":1961,"type":16},{"name":1963,"slug":1964,"type":16},"2026-07-12T08:36:48.104182",{"slug":2013,"name":2013,"fn":1948,"description":1949,"org":2014,"tags":2015,"stars":1942,"repoUrl":1943,"updatedAt":2021},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2016,2017,2018,2019,2020],{"name":1931,"slug":1932,"type":16},{"name":1957,"slug":1958,"type":16},{"name":1984,"slug":1985,"type":16},{"name":1960,"slug":1961,"type":16},{"name":1963,"slug":1964,"type":16},"2026-07-12T08:36:36.374512",{"slug":2023,"name":2023,"fn":2024,"description":2025,"org":2026,"tags":2027,"stars":2040,"repoUrl":2041,"updatedAt":2042},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2028,2031,2034,2037],{"name":2029,"slug":2030,"type":16},"Accounting","accounting",{"name":2032,"slug":2033,"type":16},"Analytics","analytics",{"name":2035,"slug":2036,"type":16},"Cost Optimization","cost-optimization",{"name":2038,"slug":2039,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2044,"name":2044,"fn":2045,"description":2046,"org":2047,"tags":2048,"stars":2040,"repoUrl":2041,"updatedAt":2057},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2049,2050,2051,2054],{"name":1931,"slug":1932,"type":16},{"name":2038,"slug":2039,"type":16},{"name":2052,"slug":2053,"type":16},"Management","management",{"name":2055,"slug":2056,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2059,"name":2059,"fn":2060,"description":2061,"org":2062,"tags":2063,"stars":2040,"repoUrl":2041,"updatedAt":2072},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2064,2065,2066,2069],{"name":2032,"slug":2033,"type":16},{"name":2038,"slug":2039,"type":16},{"name":2067,"slug":2068,"type":16},"Financial Statements","financial-statements",{"name":2070,"slug":2071,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2074,"name":2074,"fn":2075,"description":2076,"org":2077,"tags":2078,"stars":2040,"repoUrl":2041,"updatedAt":2087},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2079,2082,2085],{"name":2080,"slug":2081,"type":16},"Automation","automation",{"name":2083,"slug":2084,"type":16},"Documents","documents",{"name":2086,"slug":2074,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2089,"name":2089,"fn":2090,"description":2091,"org":2092,"tags":2093,"stars":2040,"repoUrl":2041,"updatedAt":2100},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2094,2095,2096,2097],{"name":2029,"slug":2030,"type":16},{"name":18,"slug":19,"type":16},{"name":2038,"slug":2039,"type":16},{"name":2098,"slug":2099,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":2103,"total":2198},[2104,2122,2135,2149,2162,2175,2188],{"slug":2105,"name":2105,"fn":2106,"description":2107,"org":2108,"tags":2109,"stars":26,"repoUrl":27,"updatedAt":2121},"aws-genai-ml-architect","design AWS GenAI and ML architectures","Reasoning skill for designing AWS GenAI and ML architectures for healthcare and life sciences workloads. Use when the user asks to choose between SageMaker and Bedrock, design a RAG system over medical literature, architect clinical NLP or medical imaging inference, plan genomics or drug discovery pipelines on AWS, address HIPAA\u002FPHI compliance in ML systems, design MLOps for regulated clinical models, or optimize cost for HCLS ML workloads. Triggers include \"AWS architecture\", \"SageMaker vs Bedrock\", \"HIPAA ML\", \"clinical RAG\", \"medical imaging inference\", \"genomics on AWS\", \"PHI training\", \"MLOps healthcare\", \"Bedrock guardrails\", \"HealthLake\", \"HCLS cloud architecture\", \"BAA compliance\", \"SageMaker endpoint\", \"Bedrock knowledge base\", \"clinical NLP on AWS\", \"FDA SaMD on AWS\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2110,2113,2114,2117,2118],{"name":2111,"slug":2112,"type":16},"Architecture","architecture",{"name":1931,"slug":1932,"type":16},{"name":2115,"slug":2116,"type":16},"Healthcare","healthcare",{"name":21,"slug":22,"type":16},{"name":2119,"slug":2120,"type":16},"LLM","llm","2026-07-12T08:38:07.975937",{"slug":2123,"name":2123,"fn":2124,"description":2125,"org":2126,"tags":2127,"stars":26,"repoUrl":27,"updatedAt":2134},"biomarker-discovery","guide biomarker discovery and validation","Reason about biomarker discovery and validation in HCLS — classifying biomarker intent, choosing feature-selection and cross-validation strategies, avoiding leakage, and planning external replication. Use when the user asks to discover, develop, or validate a biomarker; select features from high-dimensional omics or clinical data; design a validation study; choose evaluation metrics; justify sample size; combine multi-omics signals; or assess clinical utility. Triggers include \"discover a biomarker\", \"validate biomarker\", \"prognostic vs predictive\", \"feature selection\", \"LASSO vs elastic net\", \"nested cross-validation\", \"data leakage\", \"C-index\", \"time-dependent AUC\", \"decision curve analysis\", \"external validation cohort\", \"events per variable\", \"optimism-corrected\", \"multi-omics integration\", \"clinical utility of a biomarker\", \"is this biomarker ready\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2128,2129,2130,2131],{"name":1931,"slug":1932,"type":16},{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},{"name":2132,"slug":2133,"type":16},"Research","research","2026-07-12T08:37:49.295301",{"slug":2136,"name":2136,"fn":2137,"description":2138,"org":2139,"tags":2140,"stars":26,"repoUrl":27,"updatedAt":2148},"cdisc-compliance","reason about CDISC SDTM and ADaM implementation","Reason about CDISC SDTM and ADaM implementation for regulatory submissions. Use when the user asks about SDTM domain mapping, ADaM dataset design, controlled terminology versioning, define.xml completeness, FDA or PMDA submission requirements, query prioritization by clinical impact, SUPPQUAL usage, or CDISC compliance review. Triggers include \"SDTM mapping\", \"ADaM dataset\", \"CDISC compliance\", \"controlled terminology\", \"define.xml\", \"FDA submission data\", \"PMDA submission\", \"SDTM domain\", \"ADSL\", \"ADAE\", \"ADLB\", \"BDS structure\", \"SUPPQUAL\", \"RELREC\", \"value-level metadata\", \"CDISC CT\", \"regulatory submission data standards\", \"eCTD datasets\", \"SDTM 3.3\", \"ADaM 1.1\", \"query prioritization\", \"clinical data review\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2141,2144,2145],{"name":2142,"slug":2143,"type":16},"Clinical Trials","clinical-trials",{"name":21,"slug":22,"type":16},{"name":2146,"slug":2147,"type":16},"Regulatory Compliance","regulatory-compliance","2026-07-12T08:37:33.35594",{"slug":2150,"name":2150,"fn":2151,"description":2152,"org":2153,"tags":2154,"stars":26,"repoUrl":27,"updatedAt":2161},"cell-type-annotation","annotate single-cell RNA-seq clusters","Generate code to assign cell type labels to single-cell RNA-seq clusters using CellTypist, SingleR, marker-based annotation, or reference label transfer (scANVI\u002Fingest). Triggers on requests to \"annotate cell types\", \"label clusters\", \"run CellTypist\", \"SingleR annotation\", \"marker gene dotplot\", \"transfer labels from reference atlas\", \"cell identity\", \"automated annotation\", \"reference mapping\", \"scANVI label transfer\", \"canonical markers\", \"immune cell types\", \"hierarchical annotation\", \"majority voting CellTypist\", \"over-clustering annotation\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2155,2156,2157,2158],{"name":24,"slug":25,"type":16},{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":2159,"slug":2160,"type":16},"RNA-seq","rna-seq","2026-07-12T08:38:05.443454",{"slug":2163,"name":2163,"fn":2164,"description":2165,"org":2166,"tags":2167,"stars":26,"repoUrl":27,"updatedAt":2174},"cheminformatics","calculate molecular properties with RDKit","Cheminformatics pipeline for small-molecule property calculation, filtering, and similarity analysis using RDKit. Use when the user asks to compute molecular descriptors, filter compounds by Lipinski or Veber rules, detect PAINS, calculate fingerprint similarity, run matched molecular pair analysis, generate ADMET descriptors, or process SMILES. Triggers include \"RDKit\", \"molecular descriptors\", \"Lipinski\", \"rule of five\", \"Veber\", \"PAINS\", \"pan-assay interference\", \"Morgan fingerprint\", \"Tanimoto\", \"fingerprint similarity\", \"matched molecular pair\", \"MMP\", \"mmpdb\", \"ADMET\", \"druglikeness\", \"SMILES\", \"cheminformatics\", \"compound filtering\", \"chemical similarity\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2168,2169,2172,2173],{"name":24,"slug":25,"type":16},{"name":2170,"slug":2171,"type":16},"Chemistry","chemistry",{"name":18,"slug":19,"type":16},{"name":2132,"slug":2133,"type":16},"2026-07-12T08:37:28.334619",{"slug":2176,"name":2176,"fn":2177,"description":2178,"org":2179,"tags":2180,"stars":26,"repoUrl":27,"updatedAt":2187},"claims-analytics","analyze and parse healthcare claims data","Pipeline skill for healthcare claims data parsing, analysis, and fraud detection. Use when the user asks to parse X12 837 or 835 claim files, manipulate ICD-10 CPT or HCPCS codes, detect billing pattern anomalies, profile providers against specialty peers, identify outlier billing behavior, validate NCCI edits programmatically, detect duplicate claims, run Benford's law analysis on charges, build claims data pipelines, or analyze E&M code distributions. Triggers include \"parse X12 837\", \"parse 835\", \"claims SQL\", \"ICD-10 manipulation\", \"CPT code analysis\", \"provider profiling\", \"billing outlier\", \"NCCI validation code\", \"duplicate claim detection\", \"Benford's law charges\", \"claims ETL\", \"E&M distribution analysis\", \"claims analytics pipeline\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2181,2182,2183,2186],{"name":18,"slug":19,"type":16},{"name":2115,"slug":2116,"type":16},{"name":2184,"slug":2185,"type":16},"Insurance","insurance",{"name":21,"slug":22,"type":16},"2026-07-12T08:37:34.815088",{"slug":2189,"name":2189,"fn":2190,"description":2191,"org":2192,"tags":2193,"stars":26,"repoUrl":27,"updatedAt":2197},"claims-billing-rules","analyze healthcare claims billing rules","Reasoning skill for healthcare claims billing rules and fraud detection logic. Use when the user asks about CMS billing rules, place of service codes, global surgery periods, modifier usage (25 59 76 77), NCCI edit logic, column 1 column 2 code pairs, mutually exclusive procedures, modifier indicators, fraud waste and abuse patterns, E&M upcoding, unbundling, phantom billing, impossible day detection, coding error versus fraud distinction, FWA investigation methodology, or claims audit logic. Triggers include \"CMS billing rules\", \"NCCI edits\", \"modifier 25\", \"modifier 59\", \"global surgery period\", \"upcoding\", \"unbundling\", \"phantom billing\", \"impossible day\", \"FWA\", \"fraud waste abuse\", \"coding error vs fraud\", \"claims audit\", \"billing compliance\", \"E&M level selection\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2194,2195,2196],{"name":2115,"slug":2116,"type":16},{"name":2184,"slug":2185,"type":16},{"name":2146,"slug":2147,"type":16},"2026-07-12T08:38:28.210856",40]