[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-multi-omics-integration":3,"mdc--1io96i-key":46,"related-repo-aws-labs-multi-omics-integration":2161,"related-org-aws-labs-multi-omics-integration":2262},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":41,"sourceUrl":44,"mdContent":45},"multi-omics-integration","integrate multi-omics data","Reasoning skill for multi-omics data integration strategy selection. Use when the user asks to integrate transcriptomics with proteomics, combine multi-omic layers, choose between early intermediate or late integration, apply batch correction across omics, handle partial sample overlap, run MOFA+ or iCluster, interpret multi-omic factors, select enrichment methods for multi-omic signatures, or decide how to merge genomics epigenomics transcriptomics proteomics and metabolomics data. Triggers include \"multi-omics integration\", \"combine omics layers\", \"early vs late fusion\", \"MOFA+\", \"iCluster\", \"batch correction across omics\", \"partial overlap\", \"multi-omic enrichment\", \"kernel integration\", \"concatenation vs stacking\", \"SNF\", \"similarity network fusion\", \"intermediate integration\", \"multi-omic factor analysis\".\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],{"name":14,"slug":15,"type":16},"Data Engineering","data-engineering","tag",{"name":18,"slug":19,"type":16},"Life Sciences","life-sciences",{"name":21,"slug":22,"type":16},"Bioinformatics","bioinformatics",4,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fhcls-agent-skills","2026-07-12T08:38:19.20019",null,0,[29,30,31,32,33,34,35,36,37,19,38,39,40],"agent-skills","agentcore","ai-agents","amazon-quick-desktop","claims-processing","drug-discovery","genomics","healthcare-ai","kiro","medical-imaging","risk-adjustment","strands-agents",{"repoUrl":24,"stars":23,"forks":27,"topics":42,"description":43},[29,30,31,32,33,34,35,36,37,19,38,39,40],"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\u002Fmulti-omics-integration","---\nname: multi-omics-integration\ndescription: >\n  Reasoning skill for multi-omics data integration strategy selection. Use when the user asks to\n  integrate transcriptomics with proteomics, combine multi-omic layers, choose between early\n  intermediate or late integration, apply batch correction across omics, handle partial sample\n  overlap, run MOFA+ or iCluster, interpret multi-omic factors, select enrichment methods for\n  multi-omic signatures, or decide how to merge genomics epigenomics transcriptomics proteomics\n  and metabolomics data. Triggers include \"multi-omics integration\", \"combine omics layers\",\n  \"early vs late fusion\", \"MOFA+\", \"iCluster\", \"batch correction across omics\", \"partial overlap\",\n  \"multi-omic enrichment\", \"kernel integration\", \"concatenation vs stacking\", \"SNF\",\n  \"similarity network fusion\", \"intermediate integration\", \"multi-omic factor analysis\".\nusage: Invoke when designing a multi-omics integration strategy to select the right fusion approach, batch correction method, and downstream enrichment.\nversion: 1.0.0\ntags: [skill, category:reasoning, multi-omics, integration, hcls]\n---\n\n# Multi-Omics Integration — Reasoning Skill\n\n## Overview\n\nGuide the agent through principled selection of multi-omics integration strategies, batch\ncorrection approaches, and enrichment methods. This skill encodes decision frameworks — not\ncode — so the agent reasons correctly before generating any pipeline.\n\n## Usage\n\n- Invoke when choosing between early, intermediate, or late integration strategies\n- Use for batch correction decisions across omics layers or partial sample overlap\n- Activate for MOFA+\u002FiCluster\u002FSNF method selection or multi-omic enrichment planning\n\n---\n\n## Core Concepts\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\n\nThe decision trees and parameter selection tables in this skill are for internal reasoning only. Apply them to select the correct integration strategy, but do not reproduce the full trees in your response. Never narrate the tree traversal or show deliberation between options. Present only the recommended approach with justification.\n\n## 1. Integration Strategy Decision Tree\n\nFollow this tree top-down. The first matching leaf is the recommended strategy.\n\n```\nSTART\n ├─ Sample size per omic layer?\n │   ├─ n ≥ 200 AND full overlap across layers\n │   │   └─ → EARLY integration (Section 2)\n │   ├─ 50 ≤ n \u003C 200 OR moderate overlap (≥70%)\n │   │   └─ → INTERMEDIATE integration (Section 3)\n │   └─ n \u003C 50 OR low overlap (\u003C70%) OR layers collected on different cohorts\n │       └─ → LATE integration (Section 4)\n └─ Special cases\n     ├─ Only 2 layers, one is sparse (e.g., somatic mutations)\n     │   └─ → INTERMEDIATE with kernel methods\n     └─ Layers have very different dimensionality (e.g., 20k genes vs 500 metabolites)\n         └─ → INTERMEDIATE with MOFA+ (handles heterogeneous dimensionality)\n```\n\n### Quick-Reference Table\n\n| Criterion | Early | Intermediate | Late |\n|---|---|---|---|\n| Minimum sample size | ≥200 | ≥50 | Any |\n| Sample overlap required | Full (100%) | ≥70% | None required |\n| Handles missing layers | No | Yes (MOFA+) | Yes |\n| Interpretability | Low (combined feature space) | Medium (latent factors) | High (per-omic models) |\n| Risk of overfitting | High | Medium | Low |\n| Best for discovery | Yes (finds cross-omic interactions) | Yes | No |\n| Best for prediction | Moderate | Good | Best for small n |\n\n---\n\n## 2. Early Integration\n\n### Definition\nConcatenate feature matrices from all omic layers into a single matrix, then apply a single\nmodel (clustering, classification, regression).\n\n### When to Use\n- Large cohort (n ≥ 200) with complete overlap across all layers.\n- Goal is to discover cross-omic feature interactions.\n- All layers have been individually QC'd and normalized.\n\n### Critical Steps\n\n1. **Scale normalization**: Each omic layer MUST be independently scaled before concatenation.\n   Failure to do this lets high-variance layers dominate.\n   - Transcriptomics: log2(CPM + 1) or variance-stabilizing transform (VST).\n   - Proteomics: log2 intensity, median-centered.\n   - Methylation: M-values (logit of beta), NOT raw beta values.\n   - Metabolomics: log-transform, pareto scaling, or auto-scaling.\n\n2. **Feature selection per layer**: Reduce each layer to top variable features BEFORE\n   concatenation to avoid curse of dimensionality.\n   - Transcriptomics: top 2,000–5,000 highly variable genes.\n   - Proteomics: all detected proteins (typically \u003C5,000).\n   - Metabolomics: all detected metabolites after QC filtering.\n\n3. **Block weighting**: After concatenation, optionally weight blocks so each layer contributes\n   equally regardless of feature count. Methods: block-PCA, DIABLO block weights.\n\n### Common Mistakes\n\n- **Wrong:** Concatenating raw counts with normalized intensities across layers\n  **Right:** Independently normalize each omic layer (log2-CPM for RNA, log2 intensity for proteomics, M-values for methylation) before concatenation\n  **Why:** Mixing scales lets the unnormalized layer dominate variance and distort all downstream analyses\n\n- **Wrong:** Not removing batch effects before concatenation\n  **Right:** Apply batch correction (ComBat or equivalent) to each layer independently before merging\n  **Why:** Batch effects in any single layer propagate into the combined matrix and confound integration\n\n- **Wrong:** Using PCA on the concatenated matrix without block weighting\n  **Right:** Apply block-PCA or DIABLO block weights so each layer contributes equally regardless of feature count\n  **Why:** The layer with the most features dominates the first principal components, masking signal from smaller layers\n\n---\n\n## 3. Intermediate Integration\n\n### Definition\nLearn shared latent factors or kernels that capture cross-omic variation, then use those\nfactors for downstream analysis.\n\n### Methods\n\n#### 3a. MOFA+ (Multi-Omics Factor Analysis)\n\n| Parameter | Guidance |\n|---|---|\n| Number of factors | Start with 15–25; MOFA+ prunes inactive factors automatically |\n| Likelihoods | Gaussian for continuous data; Poisson for counts; Bernoulli for binary |\n| Convergence | Default tolerance (0.01% ELBO change) is usually sufficient |\n| Missing data | MOFA+ handles partial overlap natively — no imputation needed |\n| Groups | Use for multi-site or multi-batch data; each group learns group-specific weights |\n\n**Interpretation workflow**:\n1. Rank factors by variance explained per view (omic layer).\n2. Factors explaining variance in multiple views capture shared biology.\n3. Factors explaining variance in one view capture omic-specific biology.\n4. Extract top-weight features per factor for pathway enrichment.\n\n#### 3b. iCluster \u002F iCluster+\n\n| Parameter | Guidance |\n|---|---|\n| Number of clusters (k) | Use BIC or gap statistic; test k = 2 to 8 |\n| Penalty (lambda) | Tune via cross-validation; higher lambda = sparser solution |\n| Data types | iCluster+ supports Gaussian, Binomial, Poisson per layer |\n| Convergence | EM algorithm; may need 100+ iterations for large datasets |\n\n**When to prefer iCluster over MOFA+**:\n- Primary goal is patient subtyping (clustering), not factor discovery.\n- Need sparse feature selection within the model.\n\n#### 3c. Kernel Methods (SNF, MKL)\n\n- **Similarity Network Fusion (SNF)**: Build per-omic patient similarity networks, fuse them.\n  Good for heterogeneous data types. Sensitive to hyperparameters (K neighbors, iterations).\n- **Multiple Kernel Learning (MKL)**: Combine per-omic kernels with learned weights.\n  Good for classification tasks.\n\n### Decision Sub-Tree for Intermediate Methods\n\n```\nGoal?\n ├─ Unsupervised factor discovery → MOFA+\n ├─ Patient subtyping with sparse features → iCluster+\n ├─ Patient subtyping, heterogeneous data → SNF\n └─ Supervised classification → MKL or DIABLO (mixOmics)\n```\n\n---\n\n## 4. Late Integration\n\n### Definition\nBuild separate models per omic layer, then combine predictions via ensemble methods.\n\n### When to Use\n- Small sample size (n \u003C 50).\n- Layers collected on different cohorts with minimal overlap.\n- Need interpretable per-omic contributions.\n\n### Combination Strategies\n\n| Strategy | Description | When to Use |\n|---|---|---|\n| Simple averaging | Average predicted probabilities | Baseline; all layers equally trusted |\n| Weighted averaging | Weight by per-omic cross-validated AUC | Layers have different predictive power |\n| Stacking | Train meta-learner on per-omic predictions | Enough samples for a held-out meta-training set |\n| Rank aggregation | Combine ranked feature lists (RRA, Stuart method) | Feature selection, not prediction |\n\n### Common Mistakes\n\n- **Wrong:** Using the same samples for per-omic model training and meta-learner training\n  **Right:** Hold out a separate set of samples for the meta-learner, or use nested cross-validation\n  **Why:** Training the meta-learner on the same data used for per-omic models causes data leakage and inflated performance estimates\n\n- **Wrong:** Not calibrating per-omic probabilities before averaging\n  **Right:** Apply Platt scaling or isotonic regression to each per-omic model's outputs before combining\n  **Why:** Uncalibrated probabilities from different models are not on the same scale, making averages meaningless\n\n- **Wrong:** Ignoring that late integration cannot discover cross-omic interactions\n  **Right:** Acknowledge this limitation and use intermediate integration (MOFA+, DIABLO) when cross-omic interactions are the scientific question\n  **Why:** Late integration treats each layer independently, so synergistic effects between layers are invisible\n\n---\n\n## 5. Batch Correction Across Omics\n\n### Decision Framework\n\n```\nIs the batch variable confounded with biology (e.g., all cases from site A, all controls from site B)?\n ├─ YES → Batch correction WILL remove biology. Do NOT correct. Instead:\n │         - Include batch as covariate in downstream models.\n │         - Use mixed-effects models.\n │         - Report results stratified by batch.\n └─ NO → Proceed with correction.\n         ├─ Continuous data (expression, methylation M-values, protein intensity)?\n         │   ├─ Known batch variable → ComBat (parametric) or ComBat-seq (counts)\n         │   └─ Unknown batch variable → SVA (surrogate variable analysis)\n         └─ Count data (RNA-seq raw counts)?\n             └─ ComBat-seq (preserves count distribution)\n```\n\n### ComBat Parameters\n\n| Parameter | Guidance |\n|---|---|\n| Parametric vs non-parametric | Parametric is default and works well for most cases. Use non-parametric if batch effects are non-Gaussian (check with QQ plots). |\n| Covariates to protect | ALWAYS include biological variables of interest (e.g., disease status, sex) as covariates. Omitting them risks removing real biology. |\n| Reference batch | Optional. Set one batch as reference if it is the \"gold standard\" (e.g., largest site). |\n\n### Validation After Batch Correction\n1. PCA\u002FUMAP colored by batch — batches should intermix.\n2. PCA\u002FUMAP colored by biology — biological groups should still separate.\n3. Silhouette score by batch should decrease; by biology should remain stable or increase.\n4. Differential expression results should be qualitatively similar before and after correction.\n\n### Common Mistakes\n\n- **Wrong:** Applying ComBat to data that has already been batch-corrected by another method\n  **Right:** Apply only one batch correction method per dataset; if switching methods, start from the uncorrected data\n  **Why:** Double correction introduces artificial variance structure and can remove real biological signal\n\n- **Wrong:** Correcting each omic layer with different batch definitions\n  **Right:** Use consistent batch labels across all omic layers (same batch variable for all)\n  **Why:** Inconsistent batch definitions create misaligned corrections that introduce spurious cross-omic correlations\n\n- **Wrong:** Running ComBat on the full dataset including test samples\n  **Right:** Fit ComBat parameters on training samples only, then apply the learned correction to test samples\n  **Why:** Including test samples in batch correction leaks information and inflates ML performance estimates\n\n---\n\n## 6. Handling Partial Sample Overlap\n\nWhen not all samples are measured across all omic layers:\n\n### Decision Framework\n\n| Overlap Level | Strategy |\n|---|---|\n| ≥90% | Drop non-overlapping samples; proceed with complete cases |\n| 70–90% | Use MOFA+ (handles missing views natively) or impute with KNN\u002FMICE |\n| 50–70% | Late integration preferred; or MOFA+ with careful validation |\n| \u003C50% | Late integration only; do NOT attempt joint factorization |\n\n### Imputation Considerations\n- KNN imputation across samples within a layer is acceptable for \u003C10% missingness.\n- Cross-omic imputation (predicting one layer from another) is experimental — validate heavily.\n- NEVER impute more than 30% of a layer's values; use late integration instead.\n\n---\n\n## 7. Enrichment Methods for Multi-Omic Signatures\n\nAfter identifying multi-omic factors or feature sets, interpret them biologically:\n\n### Method Selection\n\n| Method | Input | Best For |\n|---|---|---|\n| Over-representation analysis (ORA) | Gene list (thresholded) | Quick look; requires arbitrary cutoff |\n| Gene Set Enrichment Analysis (GSEA) | Ranked gene list (all genes) | No threshold needed; captures subtle shifts |\n| Multi-omic enrichment (ActivePathways) | P-values from multiple omics | Integrates evidence across layers |\n| Network-based (STRING, PCNA) | Gene\u002Fprotein list | Finding physical\u002Ffunctional interactions |\n\n### Gene Set Databases\n\n| Database | Content | Use Case |\n|---|---|---|\n| MSigDB Hallmark (H) | 50 curated gene sets | First pass; broad biological themes |\n| MSigDB C2:CP (canonical pathways) | KEGG, Reactome, BioCarta | Pathway-level interpretation |\n| MSigDB C5 (GO) | Gene Ontology terms | Biological process, molecular function |\n| MSigDB C6 (oncogenic) | Oncogenic signatures | Cancer studies |\n| Custom gene sets | Disease-specific or tissue-specific | When public sets are insufficient |\n\n### Common Mistakes\n\n- **Wrong:** Running ORA on a gene list from one omic layer and claiming \"multi-omic\" enrichment\n  **Right:** Use multi-omic enrichment methods (ActivePathways) that integrate p-values across layers, or run enrichment on integrated factor loadings\n  **Why:** Single-layer ORA does not leverage multi-omic evidence and misrepresents the analysis as integrated\n\n- **Wrong:** Not correcting for multiple testing in gene set enrichment (or using Bonferroni)\n  **Right:** Apply Benjamini-Hochberg FDR correction for gene set tests\n  **Why:** Bonferroni is overly conservative for correlated gene sets; no correction produces massive false positives\n\n- **Wrong:** Using KEGG pathways for non-model organisms without verifying pathway coverage\n  **Right:** Check pathway annotation coverage for your species; use Reactome or custom gene sets if KEGG coverage is \u003C50%\n  **Why:** Sparse pathway annotations produce misleading enrichment results — absence of annotation is not absence of biology\n\n- **Wrong:** Using the entire genome as the background set for over-representation analysis\n  **Right:** Set the ORA background (universe) to all genes\u002Fproteins actually measured in the experiment\n  **Why:** Using the full genome inflates significance by including thousands of genes that were never detectable in the assay\n\n---\n\n## 8. Reporting Checklist\n\nEvery multi-omics integration analysis MUST report:\n\n1. **Data description**: Number of samples per layer, overlap matrix, feature counts.\n2. **Normalization**: Method per layer, with justification.\n3. **Batch correction**: Method, covariates protected, validation plots.\n4. **Integration strategy**: Early\u002Fintermediate\u002Flate, with justification referencing sample size\n   and overlap.\n5. **Method parameters**: All non-default parameters for MOFA+, iCluster, SNF, etc.\n6. **Validation**: Stability analysis (bootstrap or cross-validation), comparison to single-omic\n   baselines.\n7. **Enrichment**: Method, gene set database, FDR threshold, number of significant terms.\n8. **Reproducibility**: Software versions, random seeds, data availability.\n\n---\n\n## When NOT to Use This Skill\n\n- When only one omics layer is available (use single-omic analysis skills instead)\n- Interpreting integrated results without domain context for the disease\n- When sample sizes differ >10x between layers with no overlap strategy\n\n## When to Escalate to a Human Expert\n\n- When integrated signatures will inform clinical trial stratification\n- When batch effects cannot be distinguished from biological signal\n- When results contradict established biology for the disease area\n\n## 9. Anti-Patterns to Flag\n\n1. **Wrong:** Concatenating omic layers without independent scaling\n   **Right:** Scale each layer independently (e.g., z-score or variance-stabilize) before concatenation\n   **Why:** The high-variance layer dominates all downstream analyses, masking signal from other layers\n\n2. **Wrong:** Running ComBat without including biological covariates in the model\n   **Right:** Always include biological variables of interest (disease status, sex) as covariates to protect\n   **Why:** Without protected covariates, ComBat removes real biological signal along with batch effects\n\n3. **Wrong:** Imputing more than 30% of missing values in an omic layer\n   **Right:** Use late integration instead of imputation when missingness exceeds 30%\n   **Why:** Heavy imputation introduces artificial structure that does not reflect biology and distorts factor analysis\n\n4. **Wrong:** Running MOFA+ with fewer than 20 samples\n   **Right:** Use late integration or simple correlation analysis for very small sample sizes\n   **Why:** MOFA+ requires sufficient samples for stable factor estimation; with \u003C20 samples, factors are unreliable\n\n5. **Wrong:** Reporting only the top factor from a multi-factor analysis\n   **Right:** Report all factors explaining >5% variance in at least one view\n   **Why:** Reporting only the top factor is cherry-picking; biologically important signals may appear in lower-ranked factors\n\n6. **Wrong:** Not comparing multi-omic integration results to single-omic baselines\n   **Right:** Always run single-omic analyses as baselines and demonstrate that integration adds value\n   **Why:** Without a baseline comparison, you cannot assess whether integration actually improves over the best single-omic result\n\n7. **Wrong:** Using gene symbols directly across species without ortholog mapping\n   **Right:** Use proper ortholog databases (HGNC Comparison of Orthology Predictions, Ensembl Compara) for cross-species mapping\n   **Why:** Ortholog mapping is non-trivial — many genes have no 1:1 ortholog, and symbol overlap does not guarantee functional equivalence\n\n---\n\n## 10. Glossary\n\n| Term | Definition |\n|---|---|\n| View | A single omic layer (e.g., transcriptomics, proteomics) in MOFA+ terminology |\n| Factor | A latent variable capturing shared or omic-specific variation |\n| Block | A feature matrix from one omic layer in mixOmics\u002FDIABLO terminology |\n| Kernel | A similarity matrix computed from one omic layer |\n| RAF | Risk Adjustment Factor (unrelated — see risk-adjustment skill) |\n| ELBO | Evidence Lower Bound; MOFA+ convergence metric |\n| BIC | Bayesian Information Criterion; used for selecting k in iCluster |\n",{"data":47,"body":56},{"name":4,"description":6,"usage":48,"version":49,"tags":50},"Invoke when designing a multi-omics integration strategy to select the right fusion approach, batch correction method, and downstream enrichment.","1.0.0",[51,52,53,54,55],"skill","category:reasoning","multi-omics","integration","hcls",{"type":57,"children":58},"root",[59,68,75,81,87,107,111,117,123,151,156,162,167,180,187,384,387,393,399,404,410,428,434,510,516,585,588,594,599,604,610,617,704,714,737,743,814,823,836,842,865,871,880,883,889,894,899,904,922,928,1026,1031,1097,1100,1106,1112,1121,1127,1186,1192,1215,1220,1286,1289,1295,1300,1305,1378,1384,1402,1405,1411,1416,1422,1521,1527,1644,1649,1736,1739,1745,1750,1833,1836,1842,1860,1866,1884,1890,2040,2043,2049],{"type":60,"tag":61,"props":62,"children":64},"element","h1",{"id":63},"multi-omics-integration-reasoning-skill",[65],{"type":66,"value":67},"text","Multi-Omics Integration — Reasoning Skill",{"type":60,"tag":69,"props":70,"children":72},"h2",{"id":71},"overview",[73],{"type":66,"value":74},"Overview",{"type":60,"tag":76,"props":77,"children":78},"p",{},[79],{"type":66,"value":80},"Guide the agent through principled selection of multi-omics integration strategies, batch\ncorrection approaches, and enrichment methods. This skill encodes decision frameworks — not\ncode — so the agent reasons correctly before generating any pipeline.",{"type":60,"tag":69,"props":82,"children":84},{"id":83},"usage",[85],{"type":66,"value":86},"Usage",{"type":60,"tag":88,"props":89,"children":90},"ul",{},[91,97,102],{"type":60,"tag":92,"props":93,"children":94},"li",{},[95],{"type":66,"value":96},"Invoke when choosing between early, intermediate, or late integration strategies",{"type":60,"tag":92,"props":98,"children":99},{},[100],{"type":66,"value":101},"Use for batch correction decisions across omics layers or partial sample overlap",{"type":60,"tag":92,"props":103,"children":104},{},[105],{"type":66,"value":106},"Activate for MOFA+\u002FiCluster\u002FSNF method selection or multi-omic enrichment planning",{"type":60,"tag":108,"props":109,"children":110},"hr",{},[],{"type":60,"tag":69,"props":112,"children":114},{"id":113},"core-concepts",[115],{"type":66,"value":116},"Core Concepts",{"type":60,"tag":69,"props":118,"children":120},{"id":119},"response-format",[121],{"type":66,"value":122},"Response Format",{"type":60,"tag":88,"props":124,"children":125},{},[126,131,136,141,146],{"type":60,"tag":92,"props":127,"children":128},{},[129],{"type":66,"value":130},"Lead with the direct recommendation or classification (≤3 sentences)",{"type":60,"tag":92,"props":132,"children":133},{},[134],{"type":66,"value":135},"Structure as: recommendation → justification (citing specific criteria\u002Fthresholds) → caveats",{"type":60,"tag":92,"props":137,"children":138},{},[139],{"type":66,"value":140},"Use tables for comparisons; bullet points for criteria lists",{"type":60,"tag":92,"props":142,"children":143},{},[144],{"type":66,"value":145},"Omit background the user already knows — they asked the question",{"type":60,"tag":92,"props":147,"children":148},{},[149],{"type":66,"value":150},"Target: 200-400 words unless the user requests exhaustive detail",{"type":60,"tag":76,"props":152,"children":153},{},[154],{"type":66,"value":155},"The decision trees and parameter selection tables in this skill are for internal reasoning only. Apply them to select the correct integration strategy, but do not reproduce the full trees in your response. Never narrate the tree traversal or show deliberation between options. Present only the recommended approach with justification.",{"type":60,"tag":69,"props":157,"children":159},{"id":158},"_1-integration-strategy-decision-tree",[160],{"type":66,"value":161},"1. Integration Strategy Decision Tree",{"type":60,"tag":76,"props":163,"children":164},{},[165],{"type":66,"value":166},"Follow this tree top-down. The first matching leaf is the recommended strategy.",{"type":60,"tag":168,"props":169,"children":173},"pre",{"className":170,"code":172,"language":66},[171],"language-text","START\n ├─ Sample size per omic layer?\n │   ├─ n ≥ 200 AND full overlap across layers\n │   │   └─ → EARLY integration (Section 2)\n │   ├─ 50 ≤ n \u003C 200 OR moderate overlap (≥70%)\n │   │   └─ → INTERMEDIATE integration (Section 3)\n │   └─ n \u003C 50 OR low overlap (\u003C70%) OR layers collected on different cohorts\n │       └─ → LATE integration (Section 4)\n └─ Special cases\n     ├─ Only 2 layers, one is sparse (e.g., somatic mutations)\n     │   └─ → INTERMEDIATE with kernel methods\n     └─ Layers have very different dimensionality (e.g., 20k genes vs 500 metabolites)\n         └─ → INTERMEDIATE with MOFA+ (handles heterogeneous dimensionality)\n",[174],{"type":60,"tag":175,"props":176,"children":178},"code",{"__ignoreMap":177},"",[179],{"type":66,"value":172},{"type":60,"tag":181,"props":182,"children":184},"h3",{"id":183},"quick-reference-table",[185],{"type":66,"value":186},"Quick-Reference Table",{"type":60,"tag":188,"props":189,"children":190},"table",{},[191,220],{"type":60,"tag":192,"props":193,"children":194},"thead",{},[195],{"type":60,"tag":196,"props":197,"children":198},"tr",{},[199,205,210,215],{"type":60,"tag":200,"props":201,"children":202},"th",{},[203],{"type":66,"value":204},"Criterion",{"type":60,"tag":200,"props":206,"children":207},{},[208],{"type":66,"value":209},"Early",{"type":60,"tag":200,"props":211,"children":212},{},[213],{"type":66,"value":214},"Intermediate",{"type":60,"tag":200,"props":216,"children":217},{},[218],{"type":66,"value":219},"Late",{"type":60,"tag":221,"props":222,"children":223},"tbody",{},[224,248,271,294,317,340,361],{"type":60,"tag":196,"props":225,"children":226},{},[227,233,238,243],{"type":60,"tag":228,"props":229,"children":230},"td",{},[231],{"type":66,"value":232},"Minimum sample size",{"type":60,"tag":228,"props":234,"children":235},{},[236],{"type":66,"value":237},"≥200",{"type":60,"tag":228,"props":239,"children":240},{},[241],{"type":66,"value":242},"≥50",{"type":60,"tag":228,"props":244,"children":245},{},[246],{"type":66,"value":247},"Any",{"type":60,"tag":196,"props":249,"children":250},{},[251,256,261,266],{"type":60,"tag":228,"props":252,"children":253},{},[254],{"type":66,"value":255},"Sample overlap required",{"type":60,"tag":228,"props":257,"children":258},{},[259],{"type":66,"value":260},"Full (100%)",{"type":60,"tag":228,"props":262,"children":263},{},[264],{"type":66,"value":265},"≥70%",{"type":60,"tag":228,"props":267,"children":268},{},[269],{"type":66,"value":270},"None required",{"type":60,"tag":196,"props":272,"children":273},{},[274,279,284,289],{"type":60,"tag":228,"props":275,"children":276},{},[277],{"type":66,"value":278},"Handles missing layers",{"type":60,"tag":228,"props":280,"children":281},{},[282],{"type":66,"value":283},"No",{"type":60,"tag":228,"props":285,"children":286},{},[287],{"type":66,"value":288},"Yes (MOFA+)",{"type":60,"tag":228,"props":290,"children":291},{},[292],{"type":66,"value":293},"Yes",{"type":60,"tag":196,"props":295,"children":296},{},[297,302,307,312],{"type":60,"tag":228,"props":298,"children":299},{},[300],{"type":66,"value":301},"Interpretability",{"type":60,"tag":228,"props":303,"children":304},{},[305],{"type":66,"value":306},"Low (combined feature space)",{"type":60,"tag":228,"props":308,"children":309},{},[310],{"type":66,"value":311},"Medium (latent factors)",{"type":60,"tag":228,"props":313,"children":314},{},[315],{"type":66,"value":316},"High (per-omic models)",{"type":60,"tag":196,"props":318,"children":319},{},[320,325,330,335],{"type":60,"tag":228,"props":321,"children":322},{},[323],{"type":66,"value":324},"Risk of overfitting",{"type":60,"tag":228,"props":326,"children":327},{},[328],{"type":66,"value":329},"High",{"type":60,"tag":228,"props":331,"children":332},{},[333],{"type":66,"value":334},"Medium",{"type":60,"tag":228,"props":336,"children":337},{},[338],{"type":66,"value":339},"Low",{"type":60,"tag":196,"props":341,"children":342},{},[343,348,353,357],{"type":60,"tag":228,"props":344,"children":345},{},[346],{"type":66,"value":347},"Best for discovery",{"type":60,"tag":228,"props":349,"children":350},{},[351],{"type":66,"value":352},"Yes (finds cross-omic interactions)",{"type":60,"tag":228,"props":354,"children":355},{},[356],{"type":66,"value":293},{"type":60,"tag":228,"props":358,"children":359},{},[360],{"type":66,"value":283},{"type":60,"tag":196,"props":362,"children":363},{},[364,369,374,379],{"type":60,"tag":228,"props":365,"children":366},{},[367],{"type":66,"value":368},"Best for prediction",{"type":60,"tag":228,"props":370,"children":371},{},[372],{"type":66,"value":373},"Moderate",{"type":60,"tag":228,"props":375,"children":376},{},[377],{"type":66,"value":378},"Good",{"type":60,"tag":228,"props":380,"children":381},{},[382],{"type":66,"value":383},"Best for small n",{"type":60,"tag":108,"props":385,"children":386},{},[],{"type":60,"tag":69,"props":388,"children":390},{"id":389},"_2-early-integration",[391],{"type":66,"value":392},"2. Early Integration",{"type":60,"tag":181,"props":394,"children":396},{"id":395},"definition",[397],{"type":66,"value":398},"Definition",{"type":60,"tag":76,"props":400,"children":401},{},[402],{"type":66,"value":403},"Concatenate feature matrices from all omic layers into a single matrix, then apply a single\nmodel (clustering, classification, regression).",{"type":60,"tag":181,"props":405,"children":407},{"id":406},"when-to-use",[408],{"type":66,"value":409},"When to Use",{"type":60,"tag":88,"props":411,"children":412},{},[413,418,423],{"type":60,"tag":92,"props":414,"children":415},{},[416],{"type":66,"value":417},"Large cohort (n ≥ 200) with complete overlap across all layers.",{"type":60,"tag":92,"props":419,"children":420},{},[421],{"type":66,"value":422},"Goal is to discover cross-omic feature interactions.",{"type":60,"tag":92,"props":424,"children":425},{},[426],{"type":66,"value":427},"All layers have been individually QC'd and normalized.",{"type":60,"tag":181,"props":429,"children":431},{"id":430},"critical-steps",[432],{"type":66,"value":433},"Critical Steps",{"type":60,"tag":435,"props":436,"children":437},"ol",{},[438,472,500],{"type":60,"tag":92,"props":439,"children":440},{},[441,447,449],{"type":60,"tag":442,"props":443,"children":444},"strong",{},[445],{"type":66,"value":446},"Scale normalization",{"type":66,"value":448},": Each omic layer MUST be independently scaled before concatenation.\nFailure to do this lets high-variance layers dominate.",{"type":60,"tag":88,"props":450,"children":451},{},[452,457,462,467],{"type":60,"tag":92,"props":453,"children":454},{},[455],{"type":66,"value":456},"Transcriptomics: log2(CPM + 1) or variance-stabilizing transform (VST).",{"type":60,"tag":92,"props":458,"children":459},{},[460],{"type":66,"value":461},"Proteomics: log2 intensity, median-centered.",{"type":60,"tag":92,"props":463,"children":464},{},[465],{"type":66,"value":466},"Methylation: M-values (logit of beta), NOT raw beta values.",{"type":60,"tag":92,"props":468,"children":469},{},[470],{"type":66,"value":471},"Metabolomics: log-transform, pareto scaling, or auto-scaling.",{"type":60,"tag":92,"props":473,"children":474},{},[475,480,482],{"type":60,"tag":442,"props":476,"children":477},{},[478],{"type":66,"value":479},"Feature selection per layer",{"type":66,"value":481},": Reduce each layer to top variable features BEFORE\nconcatenation to avoid curse of dimensionality.",{"type":60,"tag":88,"props":483,"children":484},{},[485,490,495],{"type":60,"tag":92,"props":486,"children":487},{},[488],{"type":66,"value":489},"Transcriptomics: top 2,000–5,000 highly variable genes.",{"type":60,"tag":92,"props":491,"children":492},{},[493],{"type":66,"value":494},"Proteomics: all detected proteins (typically \u003C5,000).",{"type":60,"tag":92,"props":496,"children":497},{},[498],{"type":66,"value":499},"Metabolomics: all detected metabolites after QC filtering.",{"type":60,"tag":92,"props":501,"children":502},{},[503,508],{"type":60,"tag":442,"props":504,"children":505},{},[506],{"type":66,"value":507},"Block weighting",{"type":66,"value":509},": After concatenation, optionally weight blocks so each layer contributes\nequally regardless of feature count. Methods: block-PCA, DIABLO block weights.",{"type":60,"tag":181,"props":511,"children":513},{"id":512},"common-mistakes",[514],{"type":66,"value":515},"Common Mistakes",{"type":60,"tag":88,"props":517,"children":518},{},[519,543,564],{"type":60,"tag":92,"props":520,"children":521},{},[522,527,529,534,536,541],{"type":60,"tag":442,"props":523,"children":524},{},[525],{"type":66,"value":526},"Wrong:",{"type":66,"value":528}," Concatenating raw counts with normalized intensities across layers\n",{"type":60,"tag":442,"props":530,"children":531},{},[532],{"type":66,"value":533},"Right:",{"type":66,"value":535}," Independently normalize each omic layer (log2-CPM for RNA, log2 intensity for proteomics, M-values for methylation) before concatenation\n",{"type":60,"tag":442,"props":537,"children":538},{},[539],{"type":66,"value":540},"Why:",{"type":66,"value":542}," Mixing scales lets the unnormalized layer dominate variance and distort all downstream analyses",{"type":60,"tag":92,"props":544,"children":545},{},[546,550,552,556,558,562],{"type":60,"tag":442,"props":547,"children":548},{},[549],{"type":66,"value":526},{"type":66,"value":551}," Not removing batch effects before concatenation\n",{"type":60,"tag":442,"props":553,"children":554},{},[555],{"type":66,"value":533},{"type":66,"value":557}," Apply batch correction (ComBat or equivalent) to each layer independently before merging\n",{"type":60,"tag":442,"props":559,"children":560},{},[561],{"type":66,"value":540},{"type":66,"value":563}," Batch effects in any single layer propagate into the combined matrix and confound integration",{"type":60,"tag":92,"props":565,"children":566},{},[567,571,573,577,579,583],{"type":60,"tag":442,"props":568,"children":569},{},[570],{"type":66,"value":526},{"type":66,"value":572}," Using PCA on the concatenated matrix without block weighting\n",{"type":60,"tag":442,"props":574,"children":575},{},[576],{"type":66,"value":533},{"type":66,"value":578}," Apply block-PCA or DIABLO block weights so each layer contributes equally regardless of feature count\n",{"type":60,"tag":442,"props":580,"children":581},{},[582],{"type":66,"value":540},{"type":66,"value":584}," The layer with the most features dominates the first principal components, masking signal from smaller layers",{"type":60,"tag":108,"props":586,"children":587},{},[],{"type":60,"tag":69,"props":589,"children":591},{"id":590},"_3-intermediate-integration",[592],{"type":66,"value":593},"3. Intermediate Integration",{"type":60,"tag":181,"props":595,"children":597},{"id":596},"definition-1",[598],{"type":66,"value":398},{"type":60,"tag":76,"props":600,"children":601},{},[602],{"type":66,"value":603},"Learn shared latent factors or kernels that capture cross-omic variation, then use those\nfactors for downstream analysis.",{"type":60,"tag":181,"props":605,"children":607},{"id":606},"methods",[608],{"type":66,"value":609},"Methods",{"type":60,"tag":611,"props":612,"children":614},"h4",{"id":613},"_3a-mofa-multi-omics-factor-analysis",[615],{"type":66,"value":616},"3a. MOFA+ (Multi-Omics Factor Analysis)",{"type":60,"tag":188,"props":618,"children":619},{},[620,636],{"type":60,"tag":192,"props":621,"children":622},{},[623],{"type":60,"tag":196,"props":624,"children":625},{},[626,631],{"type":60,"tag":200,"props":627,"children":628},{},[629],{"type":66,"value":630},"Parameter",{"type":60,"tag":200,"props":632,"children":633},{},[634],{"type":66,"value":635},"Guidance",{"type":60,"tag":221,"props":637,"children":638},{},[639,652,665,678,691],{"type":60,"tag":196,"props":640,"children":641},{},[642,647],{"type":60,"tag":228,"props":643,"children":644},{},[645],{"type":66,"value":646},"Number of factors",{"type":60,"tag":228,"props":648,"children":649},{},[650],{"type":66,"value":651},"Start with 15–25; MOFA+ prunes inactive factors automatically",{"type":60,"tag":196,"props":653,"children":654},{},[655,660],{"type":60,"tag":228,"props":656,"children":657},{},[658],{"type":66,"value":659},"Likelihoods",{"type":60,"tag":228,"props":661,"children":662},{},[663],{"type":66,"value":664},"Gaussian for continuous data; Poisson for counts; Bernoulli for binary",{"type":60,"tag":196,"props":666,"children":667},{},[668,673],{"type":60,"tag":228,"props":669,"children":670},{},[671],{"type":66,"value":672},"Convergence",{"type":60,"tag":228,"props":674,"children":675},{},[676],{"type":66,"value":677},"Default tolerance (0.01% ELBO change) is usually sufficient",{"type":60,"tag":196,"props":679,"children":680},{},[681,686],{"type":60,"tag":228,"props":682,"children":683},{},[684],{"type":66,"value":685},"Missing data",{"type":60,"tag":228,"props":687,"children":688},{},[689],{"type":66,"value":690},"MOFA+ handles partial overlap natively — no imputation needed",{"type":60,"tag":196,"props":692,"children":693},{},[694,699],{"type":60,"tag":228,"props":695,"children":696},{},[697],{"type":66,"value":698},"Groups",{"type":60,"tag":228,"props":700,"children":701},{},[702],{"type":66,"value":703},"Use for multi-site or multi-batch data; each group learns group-specific weights",{"type":60,"tag":76,"props":705,"children":706},{},[707,712],{"type":60,"tag":442,"props":708,"children":709},{},[710],{"type":66,"value":711},"Interpretation workflow",{"type":66,"value":713},":",{"type":60,"tag":435,"props":715,"children":716},{},[717,722,727,732],{"type":60,"tag":92,"props":718,"children":719},{},[720],{"type":66,"value":721},"Rank factors by variance explained per view (omic layer).",{"type":60,"tag":92,"props":723,"children":724},{},[725],{"type":66,"value":726},"Factors explaining variance in multiple views capture shared biology.",{"type":60,"tag":92,"props":728,"children":729},{},[730],{"type":66,"value":731},"Factors explaining variance in one view capture omic-specific biology.",{"type":60,"tag":92,"props":733,"children":734},{},[735],{"type":66,"value":736},"Extract top-weight features per factor for pathway enrichment.",{"type":60,"tag":611,"props":738,"children":740},{"id":739},"_3b-icluster-icluster",[741],{"type":66,"value":742},"3b. iCluster \u002F iCluster+",{"type":60,"tag":188,"props":744,"children":745},{},[746,760],{"type":60,"tag":192,"props":747,"children":748},{},[749],{"type":60,"tag":196,"props":750,"children":751},{},[752,756],{"type":60,"tag":200,"props":753,"children":754},{},[755],{"type":66,"value":630},{"type":60,"tag":200,"props":757,"children":758},{},[759],{"type":66,"value":635},{"type":60,"tag":221,"props":761,"children":762},{},[763,776,789,802],{"type":60,"tag":196,"props":764,"children":765},{},[766,771],{"type":60,"tag":228,"props":767,"children":768},{},[769],{"type":66,"value":770},"Number of clusters (k)",{"type":60,"tag":228,"props":772,"children":773},{},[774],{"type":66,"value":775},"Use BIC or gap statistic; test k = 2 to 8",{"type":60,"tag":196,"props":777,"children":778},{},[779,784],{"type":60,"tag":228,"props":780,"children":781},{},[782],{"type":66,"value":783},"Penalty (lambda)",{"type":60,"tag":228,"props":785,"children":786},{},[787],{"type":66,"value":788},"Tune via cross-validation; higher lambda = sparser solution",{"type":60,"tag":196,"props":790,"children":791},{},[792,797],{"type":60,"tag":228,"props":793,"children":794},{},[795],{"type":66,"value":796},"Data types",{"type":60,"tag":228,"props":798,"children":799},{},[800],{"type":66,"value":801},"iCluster+ supports Gaussian, Binomial, Poisson per layer",{"type":60,"tag":196,"props":803,"children":804},{},[805,809],{"type":60,"tag":228,"props":806,"children":807},{},[808],{"type":66,"value":672},{"type":60,"tag":228,"props":810,"children":811},{},[812],{"type":66,"value":813},"EM algorithm; may need 100+ iterations for large datasets",{"type":60,"tag":76,"props":815,"children":816},{},[817,822],{"type":60,"tag":442,"props":818,"children":819},{},[820],{"type":66,"value":821},"When to prefer iCluster over MOFA+",{"type":66,"value":713},{"type":60,"tag":88,"props":824,"children":825},{},[826,831],{"type":60,"tag":92,"props":827,"children":828},{},[829],{"type":66,"value":830},"Primary goal is patient subtyping (clustering), not factor discovery.",{"type":60,"tag":92,"props":832,"children":833},{},[834],{"type":66,"value":835},"Need sparse feature selection within the model.",{"type":60,"tag":611,"props":837,"children":839},{"id":838},"_3c-kernel-methods-snf-mkl",[840],{"type":66,"value":841},"3c. Kernel Methods (SNF, MKL)",{"type":60,"tag":88,"props":843,"children":844},{},[845,855],{"type":60,"tag":92,"props":846,"children":847},{},[848,853],{"type":60,"tag":442,"props":849,"children":850},{},[851],{"type":66,"value":852},"Similarity Network Fusion (SNF)",{"type":66,"value":854},": Build per-omic patient similarity networks, fuse them.\nGood for heterogeneous data types. Sensitive to hyperparameters (K neighbors, iterations).",{"type":60,"tag":92,"props":856,"children":857},{},[858,863],{"type":60,"tag":442,"props":859,"children":860},{},[861],{"type":66,"value":862},"Multiple Kernel Learning (MKL)",{"type":66,"value":864},": Combine per-omic kernels with learned weights.\nGood for classification tasks.",{"type":60,"tag":181,"props":866,"children":868},{"id":867},"decision-sub-tree-for-intermediate-methods",[869],{"type":66,"value":870},"Decision Sub-Tree for Intermediate Methods",{"type":60,"tag":168,"props":872,"children":875},{"className":873,"code":874,"language":66},[171],"Goal?\n ├─ Unsupervised factor discovery → MOFA+\n ├─ Patient subtyping with sparse features → iCluster+\n ├─ Patient subtyping, heterogeneous data → SNF\n └─ Supervised classification → MKL or DIABLO (mixOmics)\n",[876],{"type":60,"tag":175,"props":877,"children":878},{"__ignoreMap":177},[879],{"type":66,"value":874},{"type":60,"tag":108,"props":881,"children":882},{},[],{"type":60,"tag":69,"props":884,"children":886},{"id":885},"_4-late-integration",[887],{"type":66,"value":888},"4. Late Integration",{"type":60,"tag":181,"props":890,"children":892},{"id":891},"definition-2",[893],{"type":66,"value":398},{"type":60,"tag":76,"props":895,"children":896},{},[897],{"type":66,"value":898},"Build separate models per omic layer, then combine predictions via ensemble methods.",{"type":60,"tag":181,"props":900,"children":902},{"id":901},"when-to-use-1",[903],{"type":66,"value":409},{"type":60,"tag":88,"props":905,"children":906},{},[907,912,917],{"type":60,"tag":92,"props":908,"children":909},{},[910],{"type":66,"value":911},"Small sample size (n \u003C 50).",{"type":60,"tag":92,"props":913,"children":914},{},[915],{"type":66,"value":916},"Layers collected on different cohorts with minimal overlap.",{"type":60,"tag":92,"props":918,"children":919},{},[920],{"type":66,"value":921},"Need interpretable per-omic contributions.",{"type":60,"tag":181,"props":923,"children":925},{"id":924},"combination-strategies",[926],{"type":66,"value":927},"Combination Strategies",{"type":60,"tag":188,"props":929,"children":930},{},[931,951],{"type":60,"tag":192,"props":932,"children":933},{},[934],{"type":60,"tag":196,"props":935,"children":936},{},[937,942,947],{"type":60,"tag":200,"props":938,"children":939},{},[940],{"type":66,"value":941},"Strategy",{"type":60,"tag":200,"props":943,"children":944},{},[945],{"type":66,"value":946},"Description",{"type":60,"tag":200,"props":948,"children":949},{},[950],{"type":66,"value":409},{"type":60,"tag":221,"props":952,"children":953},{},[954,972,990,1008],{"type":60,"tag":196,"props":955,"children":956},{},[957,962,967],{"type":60,"tag":228,"props":958,"children":959},{},[960],{"type":66,"value":961},"Simple averaging",{"type":60,"tag":228,"props":963,"children":964},{},[965],{"type":66,"value":966},"Average predicted probabilities",{"type":60,"tag":228,"props":968,"children":969},{},[970],{"type":66,"value":971},"Baseline; all layers equally trusted",{"type":60,"tag":196,"props":973,"children":974},{},[975,980,985],{"type":60,"tag":228,"props":976,"children":977},{},[978],{"type":66,"value":979},"Weighted averaging",{"type":60,"tag":228,"props":981,"children":982},{},[983],{"type":66,"value":984},"Weight by per-omic cross-validated AUC",{"type":60,"tag":228,"props":986,"children":987},{},[988],{"type":66,"value":989},"Layers have different predictive power",{"type":60,"tag":196,"props":991,"children":992},{},[993,998,1003],{"type":60,"tag":228,"props":994,"children":995},{},[996],{"type":66,"value":997},"Stacking",{"type":60,"tag":228,"props":999,"children":1000},{},[1001],{"type":66,"value":1002},"Train meta-learner on per-omic predictions",{"type":60,"tag":228,"props":1004,"children":1005},{},[1006],{"type":66,"value":1007},"Enough samples for a held-out meta-training set",{"type":60,"tag":196,"props":1009,"children":1010},{},[1011,1016,1021],{"type":60,"tag":228,"props":1012,"children":1013},{},[1014],{"type":66,"value":1015},"Rank aggregation",{"type":60,"tag":228,"props":1017,"children":1018},{},[1019],{"type":66,"value":1020},"Combine ranked feature lists (RRA, Stuart method)",{"type":60,"tag":228,"props":1022,"children":1023},{},[1024],{"type":66,"value":1025},"Feature selection, not prediction",{"type":60,"tag":181,"props":1027,"children":1029},{"id":1028},"common-mistakes-1",[1030],{"type":66,"value":515},{"type":60,"tag":88,"props":1032,"children":1033},{},[1034,1055,1076],{"type":60,"tag":92,"props":1035,"children":1036},{},[1037,1041,1043,1047,1049,1053],{"type":60,"tag":442,"props":1038,"children":1039},{},[1040],{"type":66,"value":526},{"type":66,"value":1042}," Using the same samples for per-omic model training and meta-learner training\n",{"type":60,"tag":442,"props":1044,"children":1045},{},[1046],{"type":66,"value":533},{"type":66,"value":1048}," Hold out a separate set of samples for the meta-learner, or use nested cross-validation\n",{"type":60,"tag":442,"props":1050,"children":1051},{},[1052],{"type":66,"value":540},{"type":66,"value":1054}," Training the meta-learner on the same data used for per-omic models causes data leakage and inflated performance estimates",{"type":60,"tag":92,"props":1056,"children":1057},{},[1058,1062,1064,1068,1070,1074],{"type":60,"tag":442,"props":1059,"children":1060},{},[1061],{"type":66,"value":526},{"type":66,"value":1063}," Not calibrating per-omic probabilities before averaging\n",{"type":60,"tag":442,"props":1065,"children":1066},{},[1067],{"type":66,"value":533},{"type":66,"value":1069}," Apply Platt scaling or isotonic regression to each per-omic model's outputs before combining\n",{"type":60,"tag":442,"props":1071,"children":1072},{},[1073],{"type":66,"value":540},{"type":66,"value":1075}," Uncalibrated probabilities from different models are not on the same scale, making averages meaningless",{"type":60,"tag":92,"props":1077,"children":1078},{},[1079,1083,1085,1089,1091,1095],{"type":60,"tag":442,"props":1080,"children":1081},{},[1082],{"type":66,"value":526},{"type":66,"value":1084}," Ignoring that late integration cannot discover cross-omic interactions\n",{"type":60,"tag":442,"props":1086,"children":1087},{},[1088],{"type":66,"value":533},{"type":66,"value":1090}," Acknowledge this limitation and use intermediate integration (MOFA+, DIABLO) when cross-omic interactions are the scientific question\n",{"type":60,"tag":442,"props":1092,"children":1093},{},[1094],{"type":66,"value":540},{"type":66,"value":1096}," Late integration treats each layer independently, so synergistic effects between layers are invisible",{"type":60,"tag":108,"props":1098,"children":1099},{},[],{"type":60,"tag":69,"props":1101,"children":1103},{"id":1102},"_5-batch-correction-across-omics",[1104],{"type":66,"value":1105},"5. Batch Correction Across Omics",{"type":60,"tag":181,"props":1107,"children":1109},{"id":1108},"decision-framework",[1110],{"type":66,"value":1111},"Decision Framework",{"type":60,"tag":168,"props":1113,"children":1116},{"className":1114,"code":1115,"language":66},[171],"Is the batch variable confounded with biology (e.g., all cases from site A, all controls from site B)?\n ├─ YES → Batch correction WILL remove biology. Do NOT correct. Instead:\n │         - Include batch as covariate in downstream models.\n │         - Use mixed-effects models.\n │         - Report results stratified by batch.\n └─ NO → Proceed with correction.\n         ├─ Continuous data (expression, methylation M-values, protein intensity)?\n         │   ├─ Known batch variable → ComBat (parametric) or ComBat-seq (counts)\n         │   └─ Unknown batch variable → SVA (surrogate variable analysis)\n         └─ Count data (RNA-seq raw counts)?\n             └─ ComBat-seq (preserves count distribution)\n",[1117],{"type":60,"tag":175,"props":1118,"children":1119},{"__ignoreMap":177},[1120],{"type":66,"value":1115},{"type":60,"tag":181,"props":1122,"children":1124},{"id":1123},"combat-parameters",[1125],{"type":66,"value":1126},"ComBat Parameters",{"type":60,"tag":188,"props":1128,"children":1129},{},[1130,1144],{"type":60,"tag":192,"props":1131,"children":1132},{},[1133],{"type":60,"tag":196,"props":1134,"children":1135},{},[1136,1140],{"type":60,"tag":200,"props":1137,"children":1138},{},[1139],{"type":66,"value":630},{"type":60,"tag":200,"props":1141,"children":1142},{},[1143],{"type":66,"value":635},{"type":60,"tag":221,"props":1145,"children":1146},{},[1147,1160,1173],{"type":60,"tag":196,"props":1148,"children":1149},{},[1150,1155],{"type":60,"tag":228,"props":1151,"children":1152},{},[1153],{"type":66,"value":1154},"Parametric vs non-parametric",{"type":60,"tag":228,"props":1156,"children":1157},{},[1158],{"type":66,"value":1159},"Parametric is default and works well for most cases. Use non-parametric if batch effects are non-Gaussian (check with QQ plots).",{"type":60,"tag":196,"props":1161,"children":1162},{},[1163,1168],{"type":60,"tag":228,"props":1164,"children":1165},{},[1166],{"type":66,"value":1167},"Covariates to protect",{"type":60,"tag":228,"props":1169,"children":1170},{},[1171],{"type":66,"value":1172},"ALWAYS include biological variables of interest (e.g., disease status, sex) as covariates. Omitting them risks removing real biology.",{"type":60,"tag":196,"props":1174,"children":1175},{},[1176,1181],{"type":60,"tag":228,"props":1177,"children":1178},{},[1179],{"type":66,"value":1180},"Reference batch",{"type":60,"tag":228,"props":1182,"children":1183},{},[1184],{"type":66,"value":1185},"Optional. Set one batch as reference if it is the \"gold standard\" (e.g., largest site).",{"type":60,"tag":181,"props":1187,"children":1189},{"id":1188},"validation-after-batch-correction",[1190],{"type":66,"value":1191},"Validation After Batch Correction",{"type":60,"tag":435,"props":1193,"children":1194},{},[1195,1200,1205,1210],{"type":60,"tag":92,"props":1196,"children":1197},{},[1198],{"type":66,"value":1199},"PCA\u002FUMAP colored by batch — batches should intermix.",{"type":60,"tag":92,"props":1201,"children":1202},{},[1203],{"type":66,"value":1204},"PCA\u002FUMAP colored by biology — biological groups should still separate.",{"type":60,"tag":92,"props":1206,"children":1207},{},[1208],{"type":66,"value":1209},"Silhouette score by batch should decrease; by biology should remain stable or increase.",{"type":60,"tag":92,"props":1211,"children":1212},{},[1213],{"type":66,"value":1214},"Differential expression results should be qualitatively similar before and after correction.",{"type":60,"tag":181,"props":1216,"children":1218},{"id":1217},"common-mistakes-2",[1219],{"type":66,"value":515},{"type":60,"tag":88,"props":1221,"children":1222},{},[1223,1244,1265],{"type":60,"tag":92,"props":1224,"children":1225},{},[1226,1230,1232,1236,1238,1242],{"type":60,"tag":442,"props":1227,"children":1228},{},[1229],{"type":66,"value":526},{"type":66,"value":1231}," Applying ComBat to data that has already been batch-corrected by another method\n",{"type":60,"tag":442,"props":1233,"children":1234},{},[1235],{"type":66,"value":533},{"type":66,"value":1237}," Apply only one batch correction method per dataset; if switching methods, start from the uncorrected data\n",{"type":60,"tag":442,"props":1239,"children":1240},{},[1241],{"type":66,"value":540},{"type":66,"value":1243}," Double correction introduces artificial variance structure and can remove real biological signal",{"type":60,"tag":92,"props":1245,"children":1246},{},[1247,1251,1253,1257,1259,1263],{"type":60,"tag":442,"props":1248,"children":1249},{},[1250],{"type":66,"value":526},{"type":66,"value":1252}," Correcting each omic layer with different batch definitions\n",{"type":60,"tag":442,"props":1254,"children":1255},{},[1256],{"type":66,"value":533},{"type":66,"value":1258}," Use consistent batch labels across all omic layers (same batch variable for all)\n",{"type":60,"tag":442,"props":1260,"children":1261},{},[1262],{"type":66,"value":540},{"type":66,"value":1264}," Inconsistent batch definitions create misaligned corrections that introduce spurious cross-omic correlations",{"type":60,"tag":92,"props":1266,"children":1267},{},[1268,1272,1274,1278,1280,1284],{"type":60,"tag":442,"props":1269,"children":1270},{},[1271],{"type":66,"value":526},{"type":66,"value":1273}," Running ComBat on the full dataset including test samples\n",{"type":60,"tag":442,"props":1275,"children":1276},{},[1277],{"type":66,"value":533},{"type":66,"value":1279}," Fit ComBat parameters on training samples only, then apply the learned correction to test samples\n",{"type":60,"tag":442,"props":1281,"children":1282},{},[1283],{"type":66,"value":540},{"type":66,"value":1285}," Including test samples in batch correction leaks information and inflates ML performance estimates",{"type":60,"tag":108,"props":1287,"children":1288},{},[],{"type":60,"tag":69,"props":1290,"children":1292},{"id":1291},"_6-handling-partial-sample-overlap",[1293],{"type":66,"value":1294},"6. Handling Partial Sample Overlap",{"type":60,"tag":76,"props":1296,"children":1297},{},[1298],{"type":66,"value":1299},"When not all samples are measured across all omic layers:",{"type":60,"tag":181,"props":1301,"children":1303},{"id":1302},"decision-framework-1",[1304],{"type":66,"value":1111},{"type":60,"tag":188,"props":1306,"children":1307},{},[1308,1323],{"type":60,"tag":192,"props":1309,"children":1310},{},[1311],{"type":60,"tag":196,"props":1312,"children":1313},{},[1314,1319],{"type":60,"tag":200,"props":1315,"children":1316},{},[1317],{"type":66,"value":1318},"Overlap Level",{"type":60,"tag":200,"props":1320,"children":1321},{},[1322],{"type":66,"value":941},{"type":60,"tag":221,"props":1324,"children":1325},{},[1326,1339,1352,1365],{"type":60,"tag":196,"props":1327,"children":1328},{},[1329,1334],{"type":60,"tag":228,"props":1330,"children":1331},{},[1332],{"type":66,"value":1333},"≥90%",{"type":60,"tag":228,"props":1335,"children":1336},{},[1337],{"type":66,"value":1338},"Drop non-overlapping samples; proceed with complete cases",{"type":60,"tag":196,"props":1340,"children":1341},{},[1342,1347],{"type":60,"tag":228,"props":1343,"children":1344},{},[1345],{"type":66,"value":1346},"70–90%",{"type":60,"tag":228,"props":1348,"children":1349},{},[1350],{"type":66,"value":1351},"Use MOFA+ (handles missing views natively) or impute with KNN\u002FMICE",{"type":60,"tag":196,"props":1353,"children":1354},{},[1355,1360],{"type":60,"tag":228,"props":1356,"children":1357},{},[1358],{"type":66,"value":1359},"50–70%",{"type":60,"tag":228,"props":1361,"children":1362},{},[1363],{"type":66,"value":1364},"Late integration preferred; or MOFA+ with careful validation",{"type":60,"tag":196,"props":1366,"children":1367},{},[1368,1373],{"type":60,"tag":228,"props":1369,"children":1370},{},[1371],{"type":66,"value":1372},"\u003C50%",{"type":60,"tag":228,"props":1374,"children":1375},{},[1376],{"type":66,"value":1377},"Late integration only; do NOT attempt joint factorization",{"type":60,"tag":181,"props":1379,"children":1381},{"id":1380},"imputation-considerations",[1382],{"type":66,"value":1383},"Imputation Considerations",{"type":60,"tag":88,"props":1385,"children":1386},{},[1387,1392,1397],{"type":60,"tag":92,"props":1388,"children":1389},{},[1390],{"type":66,"value":1391},"KNN imputation across samples within a layer is acceptable for \u003C10% missingness.",{"type":60,"tag":92,"props":1393,"children":1394},{},[1395],{"type":66,"value":1396},"Cross-omic imputation (predicting one layer from another) is experimental — validate heavily.",{"type":60,"tag":92,"props":1398,"children":1399},{},[1400],{"type":66,"value":1401},"NEVER impute more than 30% of a layer's values; use late integration instead.",{"type":60,"tag":108,"props":1403,"children":1404},{},[],{"type":60,"tag":69,"props":1406,"children":1408},{"id":1407},"_7-enrichment-methods-for-multi-omic-signatures",[1409],{"type":66,"value":1410},"7. Enrichment Methods for Multi-Omic Signatures",{"type":60,"tag":76,"props":1412,"children":1413},{},[1414],{"type":66,"value":1415},"After identifying multi-omic factors or feature sets, interpret them biologically:",{"type":60,"tag":181,"props":1417,"children":1419},{"id":1418},"method-selection",[1420],{"type":66,"value":1421},"Method Selection",{"type":60,"tag":188,"props":1423,"children":1424},{},[1425,1446],{"type":60,"tag":192,"props":1426,"children":1427},{},[1428],{"type":60,"tag":196,"props":1429,"children":1430},{},[1431,1436,1441],{"type":60,"tag":200,"props":1432,"children":1433},{},[1434],{"type":66,"value":1435},"Method",{"type":60,"tag":200,"props":1437,"children":1438},{},[1439],{"type":66,"value":1440},"Input",{"type":60,"tag":200,"props":1442,"children":1443},{},[1444],{"type":66,"value":1445},"Best For",{"type":60,"tag":221,"props":1447,"children":1448},{},[1449,1467,1485,1503],{"type":60,"tag":196,"props":1450,"children":1451},{},[1452,1457,1462],{"type":60,"tag":228,"props":1453,"children":1454},{},[1455],{"type":66,"value":1456},"Over-representation analysis (ORA)",{"type":60,"tag":228,"props":1458,"children":1459},{},[1460],{"type":66,"value":1461},"Gene list (thresholded)",{"type":60,"tag":228,"props":1463,"children":1464},{},[1465],{"type":66,"value":1466},"Quick look; requires arbitrary cutoff",{"type":60,"tag":196,"props":1468,"children":1469},{},[1470,1475,1480],{"type":60,"tag":228,"props":1471,"children":1472},{},[1473],{"type":66,"value":1474},"Gene Set Enrichment Analysis (GSEA)",{"type":60,"tag":228,"props":1476,"children":1477},{},[1478],{"type":66,"value":1479},"Ranked gene list (all genes)",{"type":60,"tag":228,"props":1481,"children":1482},{},[1483],{"type":66,"value":1484},"No threshold needed; captures subtle shifts",{"type":60,"tag":196,"props":1486,"children":1487},{},[1488,1493,1498],{"type":60,"tag":228,"props":1489,"children":1490},{},[1491],{"type":66,"value":1492},"Multi-omic enrichment (ActivePathways)",{"type":60,"tag":228,"props":1494,"children":1495},{},[1496],{"type":66,"value":1497},"P-values from multiple omics",{"type":60,"tag":228,"props":1499,"children":1500},{},[1501],{"type":66,"value":1502},"Integrates evidence across layers",{"type":60,"tag":196,"props":1504,"children":1505},{},[1506,1511,1516],{"type":60,"tag":228,"props":1507,"children":1508},{},[1509],{"type":66,"value":1510},"Network-based (STRING, PCNA)",{"type":60,"tag":228,"props":1512,"children":1513},{},[1514],{"type":66,"value":1515},"Gene\u002Fprotein list",{"type":60,"tag":228,"props":1517,"children":1518},{},[1519],{"type":66,"value":1520},"Finding physical\u002Ffunctional interactions",{"type":60,"tag":181,"props":1522,"children":1524},{"id":1523},"gene-set-databases",[1525],{"type":66,"value":1526},"Gene Set Databases",{"type":60,"tag":188,"props":1528,"children":1529},{},[1530,1551],{"type":60,"tag":192,"props":1531,"children":1532},{},[1533],{"type":60,"tag":196,"props":1534,"children":1535},{},[1536,1541,1546],{"type":60,"tag":200,"props":1537,"children":1538},{},[1539],{"type":66,"value":1540},"Database",{"type":60,"tag":200,"props":1542,"children":1543},{},[1544],{"type":66,"value":1545},"Content",{"type":60,"tag":200,"props":1547,"children":1548},{},[1549],{"type":66,"value":1550},"Use Case",{"type":60,"tag":221,"props":1552,"children":1553},{},[1554,1572,1590,1608,1626],{"type":60,"tag":196,"props":1555,"children":1556},{},[1557,1562,1567],{"type":60,"tag":228,"props":1558,"children":1559},{},[1560],{"type":66,"value":1561},"MSigDB Hallmark (H)",{"type":60,"tag":228,"props":1563,"children":1564},{},[1565],{"type":66,"value":1566},"50 curated gene sets",{"type":60,"tag":228,"props":1568,"children":1569},{},[1570],{"type":66,"value":1571},"First pass; broad biological themes",{"type":60,"tag":196,"props":1573,"children":1574},{},[1575,1580,1585],{"type":60,"tag":228,"props":1576,"children":1577},{},[1578],{"type":66,"value":1579},"MSigDB C2:CP (canonical pathways)",{"type":60,"tag":228,"props":1581,"children":1582},{},[1583],{"type":66,"value":1584},"KEGG, Reactome, BioCarta",{"type":60,"tag":228,"props":1586,"children":1587},{},[1588],{"type":66,"value":1589},"Pathway-level interpretation",{"type":60,"tag":196,"props":1591,"children":1592},{},[1593,1598,1603],{"type":60,"tag":228,"props":1594,"children":1595},{},[1596],{"type":66,"value":1597},"MSigDB C5 (GO)",{"type":60,"tag":228,"props":1599,"children":1600},{},[1601],{"type":66,"value":1602},"Gene Ontology terms",{"type":60,"tag":228,"props":1604,"children":1605},{},[1606],{"type":66,"value":1607},"Biological process, molecular function",{"type":60,"tag":196,"props":1609,"children":1610},{},[1611,1616,1621],{"type":60,"tag":228,"props":1612,"children":1613},{},[1614],{"type":66,"value":1615},"MSigDB C6 (oncogenic)",{"type":60,"tag":228,"props":1617,"children":1618},{},[1619],{"type":66,"value":1620},"Oncogenic signatures",{"type":60,"tag":228,"props":1622,"children":1623},{},[1624],{"type":66,"value":1625},"Cancer studies",{"type":60,"tag":196,"props":1627,"children":1628},{},[1629,1634,1639],{"type":60,"tag":228,"props":1630,"children":1631},{},[1632],{"type":66,"value":1633},"Custom gene sets",{"type":60,"tag":228,"props":1635,"children":1636},{},[1637],{"type":66,"value":1638},"Disease-specific or tissue-specific",{"type":60,"tag":228,"props":1640,"children":1641},{},[1642],{"type":66,"value":1643},"When public sets are insufficient",{"type":60,"tag":181,"props":1645,"children":1647},{"id":1646},"common-mistakes-3",[1648],{"type":66,"value":515},{"type":60,"tag":88,"props":1650,"children":1651},{},[1652,1673,1694,1715],{"type":60,"tag":92,"props":1653,"children":1654},{},[1655,1659,1661,1665,1667,1671],{"type":60,"tag":442,"props":1656,"children":1657},{},[1658],{"type":66,"value":526},{"type":66,"value":1660}," Running ORA on a gene list from one omic layer and claiming \"multi-omic\" enrichment\n",{"type":60,"tag":442,"props":1662,"children":1663},{},[1664],{"type":66,"value":533},{"type":66,"value":1666}," Use multi-omic enrichment methods (ActivePathways) that integrate p-values across layers, or run enrichment on integrated factor loadings\n",{"type":60,"tag":442,"props":1668,"children":1669},{},[1670],{"type":66,"value":540},{"type":66,"value":1672}," Single-layer ORA does not leverage multi-omic evidence and misrepresents the analysis as integrated",{"type":60,"tag":92,"props":1674,"children":1675},{},[1676,1680,1682,1686,1688,1692],{"type":60,"tag":442,"props":1677,"children":1678},{},[1679],{"type":66,"value":526},{"type":66,"value":1681}," Not correcting for multiple testing in gene set enrichment (or using Bonferroni)\n",{"type":60,"tag":442,"props":1683,"children":1684},{},[1685],{"type":66,"value":533},{"type":66,"value":1687}," Apply Benjamini-Hochberg FDR correction for gene set tests\n",{"type":60,"tag":442,"props":1689,"children":1690},{},[1691],{"type":66,"value":540},{"type":66,"value":1693}," Bonferroni is overly conservative for correlated gene sets; no correction produces massive false positives",{"type":60,"tag":92,"props":1695,"children":1696},{},[1697,1701,1703,1707,1709,1713],{"type":60,"tag":442,"props":1698,"children":1699},{},[1700],{"type":66,"value":526},{"type":66,"value":1702}," Using KEGG pathways for non-model organisms without verifying pathway coverage\n",{"type":60,"tag":442,"props":1704,"children":1705},{},[1706],{"type":66,"value":533},{"type":66,"value":1708}," Check pathway annotation coverage for your species; use Reactome or custom gene sets if KEGG coverage is \u003C50%\n",{"type":60,"tag":442,"props":1710,"children":1711},{},[1712],{"type":66,"value":540},{"type":66,"value":1714}," Sparse pathway annotations produce misleading enrichment results — absence of annotation is not absence of biology",{"type":60,"tag":92,"props":1716,"children":1717},{},[1718,1722,1724,1728,1730,1734],{"type":60,"tag":442,"props":1719,"children":1720},{},[1721],{"type":66,"value":526},{"type":66,"value":1723}," Using the entire genome as the background set for over-representation analysis\n",{"type":60,"tag":442,"props":1725,"children":1726},{},[1727],{"type":66,"value":533},{"type":66,"value":1729}," Set the ORA background (universe) to all genes\u002Fproteins actually measured in the experiment\n",{"type":60,"tag":442,"props":1731,"children":1732},{},[1733],{"type":66,"value":540},{"type":66,"value":1735}," Using the full genome inflates significance by including thousands of genes that were never detectable in the assay",{"type":60,"tag":108,"props":1737,"children":1738},{},[],{"type":60,"tag":69,"props":1740,"children":1742},{"id":1741},"_8-reporting-checklist",[1743],{"type":66,"value":1744},"8. Reporting Checklist",{"type":60,"tag":76,"props":1746,"children":1747},{},[1748],{"type":66,"value":1749},"Every multi-omics integration analysis MUST report:",{"type":60,"tag":435,"props":1751,"children":1752},{},[1753,1763,1773,1783,1793,1803,1813,1823],{"type":60,"tag":92,"props":1754,"children":1755},{},[1756,1761],{"type":60,"tag":442,"props":1757,"children":1758},{},[1759],{"type":66,"value":1760},"Data description",{"type":66,"value":1762},": Number of samples per layer, overlap matrix, feature counts.",{"type":60,"tag":92,"props":1764,"children":1765},{},[1766,1771],{"type":60,"tag":442,"props":1767,"children":1768},{},[1769],{"type":66,"value":1770},"Normalization",{"type":66,"value":1772},": Method per layer, with justification.",{"type":60,"tag":92,"props":1774,"children":1775},{},[1776,1781],{"type":60,"tag":442,"props":1777,"children":1778},{},[1779],{"type":66,"value":1780},"Batch correction",{"type":66,"value":1782},": Method, covariates protected, validation plots.",{"type":60,"tag":92,"props":1784,"children":1785},{},[1786,1791],{"type":60,"tag":442,"props":1787,"children":1788},{},[1789],{"type":66,"value":1790},"Integration strategy",{"type":66,"value":1792},": Early\u002Fintermediate\u002Flate, with justification referencing sample size\nand overlap.",{"type":60,"tag":92,"props":1794,"children":1795},{},[1796,1801],{"type":60,"tag":442,"props":1797,"children":1798},{},[1799],{"type":66,"value":1800},"Method parameters",{"type":66,"value":1802},": All non-default parameters for MOFA+, iCluster, SNF, etc.",{"type":60,"tag":92,"props":1804,"children":1805},{},[1806,1811],{"type":60,"tag":442,"props":1807,"children":1808},{},[1809],{"type":66,"value":1810},"Validation",{"type":66,"value":1812},": Stability analysis (bootstrap or cross-validation), comparison to single-omic\nbaselines.",{"type":60,"tag":92,"props":1814,"children":1815},{},[1816,1821],{"type":60,"tag":442,"props":1817,"children":1818},{},[1819],{"type":66,"value":1820},"Enrichment",{"type":66,"value":1822},": Method, gene set database, FDR threshold, number of significant terms.",{"type":60,"tag":92,"props":1824,"children":1825},{},[1826,1831],{"type":60,"tag":442,"props":1827,"children":1828},{},[1829],{"type":66,"value":1830},"Reproducibility",{"type":66,"value":1832},": Software versions, random seeds, data availability.",{"type":60,"tag":108,"props":1834,"children":1835},{},[],{"type":60,"tag":69,"props":1837,"children":1839},{"id":1838},"when-not-to-use-this-skill",[1840],{"type":66,"value":1841},"When NOT to Use This Skill",{"type":60,"tag":88,"props":1843,"children":1844},{},[1845,1850,1855],{"type":60,"tag":92,"props":1846,"children":1847},{},[1848],{"type":66,"value":1849},"When only one omics layer is available (use single-omic analysis skills instead)",{"type":60,"tag":92,"props":1851,"children":1852},{},[1853],{"type":66,"value":1854},"Interpreting integrated results without domain context for the disease",{"type":60,"tag":92,"props":1856,"children":1857},{},[1858],{"type":66,"value":1859},"When sample sizes differ >10x between layers with no overlap strategy",{"type":60,"tag":69,"props":1861,"children":1863},{"id":1862},"when-to-escalate-to-a-human-expert",[1864],{"type":66,"value":1865},"When to Escalate to a Human Expert",{"type":60,"tag":88,"props":1867,"children":1868},{},[1869,1874,1879],{"type":60,"tag":92,"props":1870,"children":1871},{},[1872],{"type":66,"value":1873},"When integrated signatures will inform clinical trial stratification",{"type":60,"tag":92,"props":1875,"children":1876},{},[1877],{"type":66,"value":1878},"When batch effects cannot be distinguished from biological signal",{"type":60,"tag":92,"props":1880,"children":1881},{},[1882],{"type":66,"value":1883},"When results contradict established biology for the disease area",{"type":60,"tag":69,"props":1885,"children":1887},{"id":1886},"_9-anti-patterns-to-flag",[1888],{"type":66,"value":1889},"9. Anti-Patterns to Flag",{"type":60,"tag":435,"props":1891,"children":1892},{},[1893,1914,1935,1956,1977,1998,2019],{"type":60,"tag":92,"props":1894,"children":1895},{},[1896,1900,1902,1906,1908,1912],{"type":60,"tag":442,"props":1897,"children":1898},{},[1899],{"type":66,"value":526},{"type":66,"value":1901}," Concatenating omic layers without independent scaling\n",{"type":60,"tag":442,"props":1903,"children":1904},{},[1905],{"type":66,"value":533},{"type":66,"value":1907}," Scale each layer independently (e.g., z-score or variance-stabilize) before concatenation\n",{"type":60,"tag":442,"props":1909,"children":1910},{},[1911],{"type":66,"value":540},{"type":66,"value":1913}," The high-variance layer dominates all downstream analyses, masking signal from other layers",{"type":60,"tag":92,"props":1915,"children":1916},{},[1917,1921,1923,1927,1929,1933],{"type":60,"tag":442,"props":1918,"children":1919},{},[1920],{"type":66,"value":526},{"type":66,"value":1922}," Running ComBat without including biological covariates in the model\n",{"type":60,"tag":442,"props":1924,"children":1925},{},[1926],{"type":66,"value":533},{"type":66,"value":1928}," Always include biological variables of interest (disease status, sex) as covariates to protect\n",{"type":60,"tag":442,"props":1930,"children":1931},{},[1932],{"type":66,"value":540},{"type":66,"value":1934}," Without protected covariates, ComBat removes real biological signal along with batch effects",{"type":60,"tag":92,"props":1936,"children":1937},{},[1938,1942,1944,1948,1950,1954],{"type":60,"tag":442,"props":1939,"children":1940},{},[1941],{"type":66,"value":526},{"type":66,"value":1943}," Imputing more than 30% of missing values in an omic layer\n",{"type":60,"tag":442,"props":1945,"children":1946},{},[1947],{"type":66,"value":533},{"type":66,"value":1949}," Use late integration instead of imputation when missingness exceeds 30%\n",{"type":60,"tag":442,"props":1951,"children":1952},{},[1953],{"type":66,"value":540},{"type":66,"value":1955}," Heavy imputation introduces artificial structure that does not reflect biology and distorts factor analysis",{"type":60,"tag":92,"props":1957,"children":1958},{},[1959,1963,1965,1969,1971,1975],{"type":60,"tag":442,"props":1960,"children":1961},{},[1962],{"type":66,"value":526},{"type":66,"value":1964}," Running MOFA+ with fewer than 20 samples\n",{"type":60,"tag":442,"props":1966,"children":1967},{},[1968],{"type":66,"value":533},{"type":66,"value":1970}," Use late integration or simple correlation analysis for very small sample sizes\n",{"type":60,"tag":442,"props":1972,"children":1973},{},[1974],{"type":66,"value":540},{"type":66,"value":1976}," MOFA+ requires sufficient samples for stable factor estimation; with \u003C20 samples, factors are unreliable",{"type":60,"tag":92,"props":1978,"children":1979},{},[1980,1984,1986,1990,1992,1996],{"type":60,"tag":442,"props":1981,"children":1982},{},[1983],{"type":66,"value":526},{"type":66,"value":1985}," Reporting only the top factor from a multi-factor analysis\n",{"type":60,"tag":442,"props":1987,"children":1988},{},[1989],{"type":66,"value":533},{"type":66,"value":1991}," Report all factors explaining >5% variance in at least one view\n",{"type":60,"tag":442,"props":1993,"children":1994},{},[1995],{"type":66,"value":540},{"type":66,"value":1997}," Reporting only the top factor is cherry-picking; biologically important signals may appear in lower-ranked factors",{"type":60,"tag":92,"props":1999,"children":2000},{},[2001,2005,2007,2011,2013,2017],{"type":60,"tag":442,"props":2002,"children":2003},{},[2004],{"type":66,"value":526},{"type":66,"value":2006}," Not comparing multi-omic integration results to single-omic baselines\n",{"type":60,"tag":442,"props":2008,"children":2009},{},[2010],{"type":66,"value":533},{"type":66,"value":2012}," Always run single-omic analyses as baselines and demonstrate that integration adds value\n",{"type":60,"tag":442,"props":2014,"children":2015},{},[2016],{"type":66,"value":540},{"type":66,"value":2018}," Without a baseline comparison, you cannot assess whether integration actually improves over the best single-omic result",{"type":60,"tag":92,"props":2020,"children":2021},{},[2022,2026,2028,2032,2034,2038],{"type":60,"tag":442,"props":2023,"children":2024},{},[2025],{"type":66,"value":526},{"type":66,"value":2027}," Using gene symbols directly across species without ortholog mapping\n",{"type":60,"tag":442,"props":2029,"children":2030},{},[2031],{"type":66,"value":533},{"type":66,"value":2033}," Use proper ortholog databases (HGNC Comparison of Orthology Predictions, Ensembl Compara) for cross-species mapping\n",{"type":60,"tag":442,"props":2035,"children":2036},{},[2037],{"type":66,"value":540},{"type":66,"value":2039}," Ortholog mapping is non-trivial — many genes have no 1:1 ortholog, and symbol overlap does not guarantee functional equivalence",{"type":60,"tag":108,"props":2041,"children":2042},{},[],{"type":60,"tag":69,"props":2044,"children":2046},{"id":2045},"_10-glossary",[2047],{"type":66,"value":2048},"10. Glossary",{"type":60,"tag":188,"props":2050,"children":2051},{},[2052,2067],{"type":60,"tag":192,"props":2053,"children":2054},{},[2055],{"type":60,"tag":196,"props":2056,"children":2057},{},[2058,2063],{"type":60,"tag":200,"props":2059,"children":2060},{},[2061],{"type":66,"value":2062},"Term",{"type":60,"tag":200,"props":2064,"children":2065},{},[2066],{"type":66,"value":398},{"type":60,"tag":221,"props":2068,"children":2069},{},[2070,2083,2096,2109,2122,2135,2148],{"type":60,"tag":196,"props":2071,"children":2072},{},[2073,2078],{"type":60,"tag":228,"props":2074,"children":2075},{},[2076],{"type":66,"value":2077},"View",{"type":60,"tag":228,"props":2079,"children":2080},{},[2081],{"type":66,"value":2082},"A single omic layer (e.g., transcriptomics, proteomics) in MOFA+ terminology",{"type":60,"tag":196,"props":2084,"children":2085},{},[2086,2091],{"type":60,"tag":228,"props":2087,"children":2088},{},[2089],{"type":66,"value":2090},"Factor",{"type":60,"tag":228,"props":2092,"children":2093},{},[2094],{"type":66,"value":2095},"A latent variable capturing shared or omic-specific variation",{"type":60,"tag":196,"props":2097,"children":2098},{},[2099,2104],{"type":60,"tag":228,"props":2100,"children":2101},{},[2102],{"type":66,"value":2103},"Block",{"type":60,"tag":228,"props":2105,"children":2106},{},[2107],{"type":66,"value":2108},"A feature matrix from one omic layer in mixOmics\u002FDIABLO terminology",{"type":60,"tag":196,"props":2110,"children":2111},{},[2112,2117],{"type":60,"tag":228,"props":2113,"children":2114},{},[2115],{"type":66,"value":2116},"Kernel",{"type":60,"tag":228,"props":2118,"children":2119},{},[2120],{"type":66,"value":2121},"A similarity matrix computed from one omic layer",{"type":60,"tag":196,"props":2123,"children":2124},{},[2125,2130],{"type":60,"tag":228,"props":2126,"children":2127},{},[2128],{"type":66,"value":2129},"RAF",{"type":60,"tag":228,"props":2131,"children":2132},{},[2133],{"type":66,"value":2134},"Risk Adjustment Factor (unrelated — see risk-adjustment skill)",{"type":60,"tag":196,"props":2136,"children":2137},{},[2138,2143],{"type":60,"tag":228,"props":2139,"children":2140},{},[2141],{"type":66,"value":2142},"ELBO",{"type":60,"tag":228,"props":2144,"children":2145},{},[2146],{"type":66,"value":2147},"Evidence Lower Bound; MOFA+ convergence metric",{"type":60,"tag":196,"props":2149,"children":2150},{},[2151,2156],{"type":60,"tag":228,"props":2152,"children":2153},{},[2154],{"type":66,"value":2155},"BIC",{"type":60,"tag":228,"props":2157,"children":2158},{},[2159],{"type":66,"value":2160},"Bayesian Information Criterion; used for selecting k in iCluster",{"items":2162,"total":2261},[2163,2183,2196,2210,2225,2238,2251],{"slug":2164,"name":2164,"fn":2165,"description":2166,"org":2167,"tags":2168,"stars":23,"repoUrl":24,"updatedAt":2182},"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},[2169,2172,2175,2178,2179],{"name":2170,"slug":2171,"type":16},"Architecture","architecture",{"name":2173,"slug":2174,"type":16},"AWS","aws",{"name":2176,"slug":2177,"type":16},"Healthcare","healthcare",{"name":18,"slug":19,"type":16},{"name":2180,"slug":2181,"type":16},"LLM","llm","2026-07-12T08:38:07.975937",{"slug":2184,"name":2184,"fn":2185,"description":2186,"org":2187,"tags":2188,"stars":23,"repoUrl":24,"updatedAt":2195},"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},[2189,2190,2191,2192],{"name":2173,"slug":2174,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":2193,"slug":2194,"type":16},"Research","research","2026-07-12T08:37:49.295301",{"slug":2197,"name":2197,"fn":2198,"description":2199,"org":2200,"tags":2201,"stars":23,"repoUrl":24,"updatedAt":2209},"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},[2202,2205,2206],{"name":2203,"slug":2204,"type":16},"Clinical Trials","clinical-trials",{"name":18,"slug":19,"type":16},{"name":2207,"slug":2208,"type":16},"Regulatory Compliance","regulatory-compliance","2026-07-12T08:37:33.35594",{"slug":2211,"name":2211,"fn":2212,"description":2213,"org":2214,"tags":2215,"stars":23,"repoUrl":24,"updatedAt":2224},"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},[2216,2217,2220,2221],{"name":21,"slug":22,"type":16},{"name":2218,"slug":2219,"type":16},"Data Analysis","data-analysis",{"name":18,"slug":19,"type":16},{"name":2222,"slug":2223,"type":16},"RNA-seq","rna-seq","2026-07-12T08:38:05.443454",{"slug":2226,"name":2226,"fn":2227,"description":2228,"org":2229,"tags":2230,"stars":23,"repoUrl":24,"updatedAt":2237},"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},[2231,2232,2235,2236],{"name":21,"slug":22,"type":16},{"name":2233,"slug":2234,"type":16},"Chemistry","chemistry",{"name":2218,"slug":2219,"type":16},{"name":2193,"slug":2194,"type":16},"2026-07-12T08:37:28.334619",{"slug":2239,"name":2239,"fn":2240,"description":2241,"org":2242,"tags":2243,"stars":23,"repoUrl":24,"updatedAt":2250},"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},[2244,2245,2246,2249],{"name":2218,"slug":2219,"type":16},{"name":2176,"slug":2177,"type":16},{"name":2247,"slug":2248,"type":16},"Insurance","insurance",{"name":18,"slug":19,"type":16},"2026-07-12T08:37:34.815088",{"slug":2252,"name":2252,"fn":2253,"description":2254,"org":2255,"tags":2256,"stars":23,"repoUrl":24,"updatedAt":2260},"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},[2257,2258,2259],{"name":2176,"slug":2177,"type":16},{"name":2247,"slug":2248,"type":16},{"name":2207,"slug":2208,"type":16},"2026-07-12T08:38:28.210856",40,{"items":2263,"total":2438},[2264,2283,2303,2313,2326,2339,2349,2359,2380,2395,2410,2425],{"slug":2265,"name":2265,"fn":2266,"description":2267,"org":2268,"tags":2269,"stars":2280,"repoUrl":2281,"updatedAt":2282},"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},[2270,2271,2274,2277],{"name":2173,"slug":2174,"type":16},{"name":2272,"slug":2273,"type":16},"Debugging","debugging",{"name":2275,"slug":2276,"type":16},"Logs","logs",{"name":2278,"slug":2279,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":2284,"name":2285,"fn":2286,"description":2287,"org":2288,"tags":2289,"stars":2280,"repoUrl":2281,"updatedAt":2302},"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},[2290,2293,2294,2296,2299],{"name":2291,"slug":2292,"type":16},"Aurora","aurora",{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},"database",{"name":2297,"slug":2298,"type":16},"Serverless","serverless",{"name":2300,"slug":2301,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":2304,"name":2305,"fn":2286,"description":2287,"org":2306,"tags":2307,"stars":2280,"repoUrl":2281,"updatedAt":2312},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2308,2309,2310,2311],{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},{"name":2297,"slug":2298,"type":16},{"name":2300,"slug":2301,"type":16},"2026-07-12T08:36:42.694299",{"slug":2314,"name":2315,"fn":2286,"description":2287,"org":2316,"tags":2317,"stars":2280,"repoUrl":2281,"updatedAt":2325},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2318,2319,2320,2323,2324],{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},{"name":2321,"slug":2322,"type":16},"Migration","migration",{"name":2297,"slug":2298,"type":16},{"name":2300,"slug":2301,"type":16},"2026-07-12T08:36:38.584057",{"slug":2327,"name":2328,"fn":2286,"description":2287,"org":2329,"tags":2330,"stars":2280,"repoUrl":2281,"updatedAt":2338},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2331,2332,2333,2336,2337],{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},{"name":2334,"slug":2335,"type":16},"PostgreSQL","postgresql",{"name":2297,"slug":2298,"type":16},{"name":2300,"slug":2301,"type":16},"2026-07-12T08:36:46.530743",{"slug":2340,"name":2341,"fn":2286,"description":2287,"org":2342,"tags":2343,"stars":2280,"repoUrl":2281,"updatedAt":2348},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2344,2345,2346,2347],{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},{"name":2297,"slug":2298,"type":16},{"name":2300,"slug":2301,"type":16},"2026-07-12T08:36:48.104182",{"slug":2350,"name":2350,"fn":2286,"description":2287,"org":2351,"tags":2352,"stars":2280,"repoUrl":2281,"updatedAt":2358},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2353,2354,2355,2356,2357],{"name":2173,"slug":2174,"type":16},{"name":1540,"slug":2295,"type":16},{"name":2321,"slug":2322,"type":16},{"name":2297,"slug":2298,"type":16},{"name":2300,"slug":2301,"type":16},"2026-07-12T08:36:36.374512",{"slug":2360,"name":2360,"fn":2361,"description":2362,"org":2363,"tags":2364,"stars":2377,"repoUrl":2378,"updatedAt":2379},"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},[2365,2368,2371,2374],{"name":2366,"slug":2367,"type":16},"Accounting","accounting",{"name":2369,"slug":2370,"type":16},"Analytics","analytics",{"name":2372,"slug":2373,"type":16},"Cost Optimization","cost-optimization",{"name":2375,"slug":2376,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2381,"name":2381,"fn":2382,"description":2383,"org":2384,"tags":2385,"stars":2377,"repoUrl":2378,"updatedAt":2394},"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},[2386,2387,2388,2391],{"name":2173,"slug":2174,"type":16},{"name":2375,"slug":2376,"type":16},{"name":2389,"slug":2390,"type":16},"Management","management",{"name":2392,"slug":2393,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2396,"name":2396,"fn":2397,"description":2398,"org":2399,"tags":2400,"stars":2377,"repoUrl":2378,"updatedAt":2409},"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},[2401,2402,2403,2406],{"name":2369,"slug":2370,"type":16},{"name":2375,"slug":2376,"type":16},{"name":2404,"slug":2405,"type":16},"Financial Statements","financial-statements",{"name":2407,"slug":2408,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2411,"name":2411,"fn":2412,"description":2413,"org":2414,"tags":2415,"stars":2377,"repoUrl":2378,"updatedAt":2424},"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},[2416,2419,2422],{"name":2417,"slug":2418,"type":16},"Automation","automation",{"name":2420,"slug":2421,"type":16},"Documents","documents",{"name":2423,"slug":2411,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2426,"name":2426,"fn":2427,"description":2428,"org":2429,"tags":2430,"stars":2377,"repoUrl":2378,"updatedAt":2437},"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},[2431,2432,2433,2434],{"name":2366,"slug":2367,"type":16},{"name":2218,"slug":2219,"type":16},{"name":2375,"slug":2376,"type":16},{"name":2435,"slug":2436,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]