---
title: 'SimOmics: Synthetic Multi-Omics Data Generator'
url: https://www.emergentmind.com/topics/simomics
type: topic
---

# SimOmics: Synthetic Multi-Omics Data Generator

Searching arXiv for the specified SimOmics and related RITHMS papers to ground the article.
SimOmics is an R package for generating realistic, multivariate, and multi-omics synthetic datasets. It is designed for benchmarking, method development, and reproducibility in bioinformatics, especially for omics integration tasks such as those encountered in transcriptomics, proteomics, and metabolomics. The toolkit can simulate any number of omics blocks with user-specified feature dimensionality, while exposing explicit ground truth through latent factors, loadings, block labels, and related metadata. Within a broader simulation workflow, it also provides a natural setting for domain-specific extensions; in particular, the transgenerational hologenomic simulator RITHMS is described as sitting naturally within a SimOmics pipeline when benchmarking host-genome-plus-microbiome analyses [2507.09967, 2502.07366].

## 1. Scope, intended uses, and conceptual role

SimOmics is positioned as a general-purpose synthetic data generator for multivariate and multi-omics settings. Its stated applications are benchmarking new data-integration or machine-learning methods, validating complete analysis pipelines under known ground truth, stress-testing edge cases such as high noise, low correlation, and small $n$, and supporting reproducibility studies by shipping synthetic data with manuscripts [2507.09967]. Because the simulated objects include both observed data and the latent variables used to generate them, the package is oriented toward controlled evaluation rather than primary biological discovery.

A central feature of the package is its block-based view of omics integration. Features are partitioned into omics-specific blocks, such as transcriptomics, proteomics, and metabolomics, and these blocks can share signal through latent factors and through explicitly modeled cross-block covariance. This makes SimOmics suitable for methods that assume shared and block-specific structure, including tools named in the package description such as mixOmics, MOFA2, and iClusterPlus [2507.09967].

A common misconception is that SimOmics is restricted to a fixed set of omics modalities. The package description instead states that it can simulate any number of omics blocks, with named block sizes supplied by the user. Another potential misconception is that it is only a high-level wrapper. In fact, the package exposes both low-level building blocks and a high-level convenience function, allowing either component-wise control or end-to-end simulation [2507.09967].

## 2. Latent-factor generative model

The core simulation machinery is a latent factor model. Let $n$ denote the number of samples, $p$ the total number of features across all blocks, and $K$ the number of latent factors. Factor scores are generated as
$$
F \sim MN(0,\Sigma_F,I_n),
$$
so that each column $f_i \sim N(0,\Sigma_F)$, where $\Sigma_F \in \mathbb{R}^{K \times K}$ controls correlations among factors. A loading matrix $L \in \mathbb{R}^{p \times K}$ maps latent factors into observed feature space, producing the signal
$$
S = L\,F.
$$
Observed data are then formed by additive residual noise,
$$
X = S + E,
$$
with $E \sim MN(0,\Sigma_E,I_n)$. In compact form, the package describes the model as
$$
X = L\,F + E,\qquad F \sim N(0,\Sigma_F),\qquad E \sim N(0,\Sigma_E)
$$
[2507.09967].

This formulation gives SimOmics a standard but flexible multivariate backbone. The factor covariance $\Sigma_F$ governs dependencies among latent sources of variation, while the loading matrix $L$ determines which features respond to which factors and with what scale. A plausible implication is that the package can be used to separate questions about signal geometry from questions about residual structure, since these are parameterized independently.

The model is explicitly multiblock rather than merely high-dimensional. Total feature dimensionality $p$ is partitioned into block sizes $p_1,\dots,p_B$, making it possible to align simulation with common integrative analysis designs in which each block corresponds to an assay or molecular layer. This block structure is then used downstream in the residual covariance model and in the packaging of output objects [2507.09967].

## 3. Covariance structure, sparsity, and noise models

SimOmics supports block-wise covariance modeling for the residual term. The residual covariance may be specified as block diagonal,
$$
\Sigma_E=\operatorname{diag}\bigl(\Sigma_E^{(1)},\Sigma_E^{(2)},\dots,\Sigma_E^{(B)}\bigr),
$$
where each within-block covariance matrix $\Sigma_E^{(b)} \in \mathbb{R}^{p_b \times p_b}$ can follow patterns such as constant correlation $\rho_w$ or AR-1. To inject inter-block correlation, off-diagonal blocks can be set to $\rho_{ab} \cdot I_{p_a \times p_b}$, yielding a covariance matrix with both within-block and between-block dependence [2507.09967]. This makes it possible to simulate moderate or strong cross-omics coupling without collapsing all blocks into a single homogeneous covariance model.

The package also supports sparsity in the loading matrix. Only a fraction $\pi_k$ of features may load on factor $k$, with two mechanisms specified. Under hard-thresholding, entries are drawn as $L_{jk} \sim N(0,\tau_k^2)$ and the smallest $(1-\pi_k)$ fraction is zeroed out. Under continuous shrinkage priors, the package description gives
$$
L_{jk}\mid \lambda_{jk},\tau \sim N(0,\lambda_{jk}^2\tau^2),\qquad \lambda_{jk}\sim C^+(0,1).
$$
The user controls $\pi_k$ through `loadingSparsity` and $\tau_k$ through `loadingScale` [2507.09967]. The immediate significance is that latent factors need not affect all features uniformly; instead, factor-specific sparsity can mimic pathway-like or module-like activation patterns.

Noise modeling is explicitly “biologically inspired” and spans continuous and count-valued data. For continuous noise, the package permits feature-specific Gaussian residuals $E_{ij} \sim N(0,\sigma_j^2)$ with user control over $\sigma_j$ or global SNR. For count data, two observation models are listed:

- **Poisson**:
  $$
  Y_{ij}\sim \operatorname{Poisson}(\lambda_{ij}),\qquad \lambda_{ij}=\exp\bigl((L\,F)_{ij}\bigr)
  $$
- **Negative binomial (NB)**:
  $$
  Y_{ij}\sim NB(\text{mean}=\mu_{ij},\ \text{dispersion}=\phi),\qquad \operatorname{Var}(Y_{ij})=\mu_{ij}+\phi\,\mu_{ij}^2
  $$
  where $\mu_{ij}=\exp\bigl((L\,F)_{ij}\bigr)$ or a user-supplied link [2507.09967].

These options are important because multi-omics integration often spans continuous intensities and overdispersed counts. SimOmics does not impose a single observation regime across all problems; rather, it exposes alternative noise distributions that can be tuned to reproduce empirical mean-variance behavior.

## 4. Software interface and workflow

The package offers a layered API. Low-level functions are listed as `simulateFactors(n, K, factorCov)`, `generateLoadings(p, K, sparsity, scale)`, `simulateResidual(blocks, blockCov, noiseDist, noiseParams)`, and `assembleData(L, F, E)`. The main high-level wrapper is `simMultiOmics()`, whose documented arguments include `n`, `blocks`, `latentFactors`, `factorCov`, `blockCov`, `loadingSparsity`, `noiseDist`, `noiseParams`, and `seed` [2507.09967].

| Component | Role |
|---|---|
| `simulateFactors()` | Simulate latent factor scores |
| `generateLoadings()` | Generate sparse loading matrix |
| `simulateResidual()` | Simulate residual structure by block and noise model |
| `assembleData()` | Combine $L$, $F$, and $E$ into observed data |
| `simMultiOmics()` | End-to-end convenience wrapper |

The canonical workflow begins by specifying sample size, block sizes, the number of latent factors, and covariance and sparsity controls. In the package example, the user simulates named blocks for transcriptome, proteome, and metabolome, chooses `latentFactors=3`, `factorCov=diag(3)`, `blockCov=0.4`, `loadingSparsity=0.15`, and `noiseDist="NB"` with `dispersion=10`, then retrieves simulated data through `sim$data` and ground truth through `sim$truth` [2507.09967]. The design emphasizes immediate compatibility with downstream R workflows, since the returned object is already partitioned by omics block.

A second example illustrates joint clustering with two omics blocks and `iClusterPlus`. The simulation first produces transcriptome and proteome matrices, then defines two true classes from the sign of the first latent factor, runs `iClusterPlus(dt1=X1, dt2=X2, k=2, lambda=c(0.1,0.1))`, and compares recovered clusters to the latent-factor-derived labels. The example then visualizes latent factor recovery by plotting the true first factor against the recovered iCluster score [2507.09967]. The example is didactic rather than inferential, but it clarifies the intended use of SimOmics as a benchmark substrate for integrative methods.

## 5. Parameterization, diagnostics, and output objects

The package description provides explicit parameter-selection guidance. It recommends choosing $K$ between 3 and 10 to mirror typical pathway dimensionality, setting sparsity $\pi_k$ so that 5–20% of loadings are non-zero per factor, matching block sizes $p_b$ to real data while ensuring $p_b \gg K$, and setting block correlation $\rho$ in the range 0.3–0.7 to model moderate sharing of signal across omics. Noise parameters such as $\sigma$ and $\phi$ are to be calibrated by matching mean-variance trends or overall SNR from a pilot dataset. The stated strategy is to compute summary statistics on a small real dataset—feature variances, pairwise correlations, and mean-variance curves—and choose `noiseParams` and `blockCov` to reproduce them [2507.09967].

This calibration guidance is methodologically significant because it frames realism as empirical matching rather than as a fixed built-in default. SimOmics provides mechanisms for realism, but it expects users to tune them against external reference data. A plausible implication is that the package is best used when a target application domain is already characterized by at least a pilot dataset.

The outputs are divided into observed data and truth objects. `sim$data` is a named list of matrices of dimension features by samples, ready for downstream analysis. `sim$truth` contains the latent factors $F$, loading matrix $L$, and any simulated class labels or block assignments [2507.09967]. This separation is central to benchmark design: the data matrices mimic real analysis inputs, while the truth object preserves the exact generative quantities needed for quantitative evaluation.

SimOmics also includes diagnostic plotting functions. `plotMeanVariance()` checks whether the variance-mean relationship matches the target, `plotCorrHeatmap()` visualizes within- and between-block correlations, and `plotPCA()` verifies latent factor recovery and noise levels [2507.09967]. These diagnostics do not constitute external validation, but they provide internal checks that the requested simulation regime has actually been realized.

## 6. Relationship to hologenomic simulation and broader SimOmics pipelines

SimOmics is a general multi-omics toolkit, whereas RITHMS is an “R Implementation of a Transgenerational Hologenomic Model-based Simulator” focused on host genomes, microbiota, and environment across generations. The connection between the two is stated explicitly: RITHMS “sits naturally within a SimOmics pipeline” when the goal is to benchmark hologenomic prediction models, explore selection schemes combining host genetics and microbiota, or study the eco-evolutionary dynamics of holobionts [2502.07366]. This indicates complementarity rather than identity: SimOmics provides a broad synthetic-data framework, and RITHMS specializes it toward transgenerational hologenomic structure.

RITHMS extends beyond the latent-factor abstraction by modeling microbiota composition, vertical and horizontal transmission, environmental filtering, host genetic filtering, and phenotype formation. Its microbiota model uses raw taxa abundances $M_i^{(t)}$, centered-log-ratio transformed abundances $B_i^{(t)}$, and host genotypes $G_i^{(t)}$, with transmission governed by a parameter $\lambda \in [0,1]$ that balances maternal and ambient inheritance. The phenotype is then generated from a direct genetic component $\alpha^T G$, a microbiota-mediated component $\omega^T B$, and Gaussian noise, with calibration to direct heritability, microbiability, and total heritability [2502.07366]. In this sense, RITHMS represents a domain-specific simulator that adds mechanistic structure not described in the core SimOmics package.

The reported extensions named for SimOmics pipelines include integrating RITHMS outputs into downstream genomic–microbiome GWAS, joint-prediction models, and Bayesian neural nets with host–microbiome interaction priors; extending to longitudinal microbiota by repeating the microbial-composition model at multiple ages; incorporating non-Gaussian noise covariance among taxa for explicit microbe–microbe interaction networks; and allowing semi-paired base populations by probabilistic data-augmentation steps [2502.07366]. These are presented as extensions and therefore should not be conflated with the baseline capabilities of SimOmics itself.

An objective way to view the relationship is that SimOmics defines a general synthetic benchmarking environment for multiblock omics integration, while RITHMS demonstrates how specialized biological processes can be embedded into that environment when the target problem involves transgenerational hologenomic data rather than generic multivariate multi-omics measurements.

Source: https://www.emergentmind.com/topics/simomics