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:
-
omic.list
: List of simulated omic datasets. -
signal_annotation
: Signal sample indices per factor. -
list_alphas
,list_betas
: Latent factor loading vectors.
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")