simulateMultiOmics {SUMO}R Documentation

Simulation of omics with predefined single or multiple latent factors in multi-omics

Description

Simulate multiple omics (>2) datasets with non-overlapping sample and feature signal blocks.

Usage

simulateMultiOmics(
  vector_features,
  n_samples,
  n_factors,
  snr = 2,
  signal.samples = c(5, 1),
  signal.features = NULL,
  factor_structure = "mixed",
  num.factor = "multiple",
  seed = NULL
)

Arguments

vector_features

Integer vector indicating number of features per omic (length k for k omics).

n_samples

Total number of samples across all omics.

n_factors

Number of latent factors.

snr

Signal-to-noise ratio.

signal.samples

Mean and SD for generating sample signal values (e.g., c(mean, sd)).

signal.features

List of vectors with mean and SD for features per omic (e.g., list(c(3,0.2), c(2.5,0.15))).

factor_structure

Character. "shared", "exclusive", "mixed", "partial", or "custom" factor distribution

num.factor

Character. "multiple" (default) or "single"

seed

Optional. Set random seed for reproducibility.

Details

This function generates synthetic omics data where each omic layer has its own feature space and noise characteristics. The sample signal blocks for each latent factor are non-overlapping and sequential with random gaps. Feature signal blocks are generated per omic with sequential non-overlapping segments.

Value

A list containing:

Examples

sim_object1 <- simulateMultiOmics(
  vector_features = c(3000, 2500, 2000),
  n_samples = 100,
  n_factors = 3,
  snr = 3,
  signal.samples = c(5, 1),
  signal.features = list(
    c(3, 0.3),   # omic1 signal mean/sd
    c(2.5, 0.25),# omic2 signal mean/sd
    c(2, 0.2)    # omic3 signal mean/sd
  ),
  factor_structure = "mixed",
  num.factor = "multiple",
  seed = 123
)

# View available elements
names(sim_object1)

# Visualize the simulated data
plot_simData(sim_object = sim_object1, data = "merged", type = "heatmap")

sim_object2 <- simulateMultiOmics(
  vector_features = c(3000, 2500),
  n_samples = 100,
  n_factors = 1,
  snr = 0.5,
  signal.samples = c(3, 1),
  signal.features = list(
    c(3.5, 0.3),   # omic1 signal mean/sd
    c(4, 0.2)    # omic3 signal mean/sd
  ),
  factor_structure = "shared",
  num.factor = "single",
  seed = NULL
)

# Visualize the simulated data
plot_simData(sim_object = sim_object2, data = "merged", type = "heatmap")


[Package SUMO version 1.2.0 Index]