--- name: bio-multi-omics-integration-design description: Chooses a bulk multi-omics integration strategy before any tool runs by mapping the biological question (subtype discovery, shared axis of variation, predictive signature, pairwise correlation) to a method class, naming the sample correspondence (paired-vertical, horizontal, mosaic, diagonal), enforcing the n<
')` then `?function_name` to verify parameters If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying. The tool versions that matter most are MOFA2 and mixOmics, whose APIs have moved across releases; this skill routes to those tool skills rather than calling them, so the binding version here is MultiAssayExperiment (the container in which the paired-vs-mosaic decision is made). # Multi-Omics Integration Design **"How should I integrate these omics?"** -> Map the biological question and the sample correspondence to a method class BEFORE running a tool - because at tens of samples and 10^5-10^6 features a spurious cross-omic signal is the default outcome, not the surprise. - R: assemble a `MultiAssayExperiment`, then choose MOFA2 (shared factors) / mixOmics (signature) / SNF (subtypes) by question Scope: the integration decision itself - method selection, correspondence (paired/horizontal/mosaic/diagonal), supervised-vs-unsupervised mapping, the n<
mofa-integration, mixomics-analysis, similarity-network. Cross-omic preprocessing -> data-harmonization. Single-cell multimodal -> single-cell/multimodal-integration. Horizontal same-feature meta-analysis -> differential-expression/batch-correction. ## The Single Most Important Modern Insight -- Bulk Multi-Omics Is a Small-n, Huge-p Discovery Problem Where a Spurious Cross-Omic Signal Is the Default A typical bulk cohort has n = 30-300 samples and 10^4-10^6 features per omic, so after stacking blocks n is smaller than p by three to four orders of magnitude. In that regime an integrated signature that has not been validated out-of-sample is overwhelmingly noise that fit the training samples. The deliverable is never "the integrated signature" - it is question-matched structure that survives three gates, each of which a common failure violates: 1. **The correspondence gate.** Vertical integration (different omics, SAME samples) and horizontal integration (same features, different cohorts) are different problems. The bulk joint-latent tools are indexed by sample; feed them unpaired same-feature data and they still run but emit factors that are pure batch. Name the correspondence first. 2. **The variance gate.** Total variance scales with feature count and feature scale, so a 850k-CpG block out-votes a 100-metabolite block and the shared factors become methylation PCs. Inspect the per-factor, per-view variance-explained table every time; if one view dominates every shared factor, the integration re-discovered the biggest omic. 3. **The validation gate.** With n = 40 and 5-fold CV each fold tests 8 samples, so in-cohort cross-validation is optimistically biased to the point of fiction. An integrated subtype or signature is not credible until it reproduces in an INDEPENDENT cohort. The held-out cohort is the finding. Organize the analysis around defending these three gates, not around picking a favorite tool. ## The Integration Taxonomy -- Three Orthogonal Axes, Not One Label A method is a point in a 3D space, not a single name. Stating where a method sits on each axis prevents the category's two deepest errors (horizontal/vertical confusion and concatenation at n<
mofa-integration | | mixOmics DIABLO (`block.splsda`) | Singh 2019 *Bioinformatics* 35:3055; Rohart 2017 *PLoS Comput Biol* 13:e1005752 | intermediate, supervised | sparse cross-omic signature that DISCRIMINATES known groups -> mixomics-analysis | | mixOmics sPLS (`spls`) | Rohart 2017 *PLoS Comput Biol* 13:e1005752 | intermediate, unsupervised | covariance-maximizing feature pairs between TWO blocks -> mixomics-analysis | | mixOmics MINT (`mint.splsda`) | Rohart 2017 *BMC Bioinformatics* 18:128 | horizontal | SAME omic across multiple STUDIES (study as a known effect) - not cross-omic | | SNF (SNFtool) | Wang 2014 *Nat Methods* 11:333 | mixed/transformation, unsupervised | patient stratification; feature count buys no votes; robust as complexity grows -> similarity-network | | iCluster / iClusterPlus / moCluster | Shen 2009 *Bioinformatics* 25:2906; Meng 2016 *J Proteome Res* 15:755 | intermediate, unsupervised | ONE joint-latent clustering (vs reconciling K separate clusterings); subtype discovery | | JIVE | Lock 2013 *Ann Appl Stat* 7:523 | intermediate, unsupervised | explicit joint + individual + noise decomposition (how much signal is cross-omic) | | MFA / mixKernel | Mariette 2018 *Bioinformatics* 34:1009 | mixed | block weighting / kernel fusion to stop one omic dominating | ## Decision Tree by Scenario | Scenario | Recommended | Why | |----------|-------------|-----| | Different omics on the SAME samples, no phenotype, find shared axes | MOFA2 | unsupervised factor model; variance decomposition; native missing-block handling -> mofa-integration | | Different omics on the same samples, want patient SUBTYPES | SNF + spectral clustering (or iCluster) | transformation-stage; robust to high p and a noisy omic -> similarity-network | | Have a class label, want a cross-omic signature that discriminates it | mixOmics DIABLO + held-out cohort | supervised sparse multi-block PLS-DA -> mixomics-analysis | | Just two omics, want correlated feature pairs | mixOmics sPLS | sparse PLS for a block pair -> mixomics-analysis | | Quantify how much variation is joint vs omic-specific | JIVE (or the MOFA variance table) | explicit joint/individual split | | SAME omic across multiple studies/cohorts | -> differential-expression/batch-correction or mixOmics MINT | horizontal integration / meta-analysis, NOT cross-omic | | Mosaic cohort (some samples missing an omic) | MOFA2 (models the missingness) | intersecting to complete cases wastes scarce n -> data-harmonization | | Single-cell CITE-seq / 10x Multiome / unpaired diagonal | -> single-cell/multimodal-integration | per-cell generative models; n is large; different paradigm | | Per-omic DE then overlap the hit lists | -> differential-expression, methylation-analysis, proteomics | that is late integration by intersection, not joint modeling | | Validate a discovered subtype against outcome | -> clinical-biostatistics/survival-analysis | survival / KM / Cox lives there | Default when uncertain: assemble a `MultiAssayExperiment`, confirm vertical paired (or mosaic) correspondence, run MOFA2 for an unsupervised map and read its per-view variance-explained table, then escalate to a supervised (DIABLO) or stratification (SNF) tool only if the question demands it. ## Name the Correspondence First **Goal:** Decide whether the data is a job for this category at all, and whether to model the missingness or intersect to complete cases. **Approach:** Assemble the blocks into a `MultiAssayExperiment` (it coordinates assays, a sample map, and colData), then read off whether samples are fully paired, mosaic, or actually horizontal. Only vertical-paired and mosaic belong here. ```r library(MultiAssayExperiment) mae <- MultiAssayExperiment(experiments=ExperimentList(rna=rna_mat, prot=prot_mat, methyl=methyl_mat), colData=clinical) upsetSamples(mae) # visualize which samples have which omics (mosaic structure) table(complete.cases(mae)) # how many samples have EVERY omic paired <- intersectColumns(mae) # complete-case fallback - counts the n it would cost ``` If `complete.cases` keeps most samples, complete-case methods (mixOmics, SNF) are fine. If a large fraction is mosaic, prefer MOFA2 (it models missing-view samples in its likelihood) over intersecting, because at n<
> others = imbalance risk ``` A block holding most of the stacked variance is a red flag that concatenation-style integration will re-discover it. This is the single best honesty check in the category; never skip the post-fit per-view variance read-out. ## The n<
n, achieves correlation 1 trivially by overfitting; sparse PLS (covariance plus an L1 penalty) and sparse factor models stay identifiable, so the regularization is what makes the fit real, not a stylistic choice. ## Per-Method Failure Modes ### Horizontal data fed to a vertical method **Trigger:** running MOFA/DIABLO/SNF on same-feature, multi-cohort data ("integrate my three RNA-seq studies"). **Mechanism:** the shared latent is indexed by sample and has nothing to align across feature-identical cohorts. **Symptom:** the tool runs and the top factors track cohort/run, not biology. **Fix:** recognize this as horizontal integration; use MINT, ComBat/sva, or differential-expression/batch-correction. ### Unvalidated in-cohort signature reported as a result **Trigger:** reporting a DIABLO panel or a MOFA-factor-vs-outcome correlation from one cohort. **Mechanism:** at n<
class first (decision tree); do post-hoc per-omic differential analysis to find SNF subtype drivers. ### Cross-omic batch masquerading as shared biology **Trigger:** omics generated on different platforms/labs/dates, interpreted without a technical check. **Mechanism:** the samples that ran together in every assay form a shared technical axis. **Symptom:** the top shared factor tracks run date / plate / site better than phenotype. **Fix:** correlate top factors against technical covariates before interpreting; correct per omic or model batch as a covariate (data-harmonization), watching for over-correction. ### Mosaic cohort forced to complete cases **Trigger:** `intersectColumns` on a mosaic cohort before integrating. **Mechanism:** complete-case intersection drops every sample missing any omic. **Symptom:** n halves and power collapses. **Fix:** prefer MOFA2's native missing-view handling; reserve intersection for when mosaicism is minor. ## Quantitative Thresholds | Threshold | Source | Rationale | |-----------|--------|-----------| | n<
~80% of every shared factor | Argelaguet 2018 *Mol Syst Biol* 14:e8124 (per-view variance decomposition) | a factor dominated by one view is view-specific structure, not integration | | Drop MOFA factors below ~1-2% variance explained in every view | Argelaguet 2018 *Mol Syst Biol* 14:e8124 | low-variance factors are noise/over-parameterization | | Held-out independent cohort for any reported biomarker/subtype | Subramanian 2020 *Bioinform Biol Insights* 14 | in-cohort CV at n<