Documentation: https://zaoqu-liu.github.io/MOFSR/
MOFSR is a comprehensive R package designed for integrative analysis of multi-omics data to identify disease subtypes and characterize molecular heterogeneity. The package implements 15 state-of-the-art multi-omics clustering algorithms with internal implementations to ensure maximum cross-platform compatibility and reproducibility.
future framework for large-scale analysesMOFSR provides a unified interface for multi-omics subtyping through three major analytical paradigms:
| Paradigm | Algorithms | Description |
|---|---|---|
| Early Fusion | CPCA, MCIA, RGCCA, SGCCA | Concatenate or jointly decompose data matrices before clustering |
| Late Fusion | BCC, Late Fusion, PINSPlus | Cluster each omics separately, then combine results |
| Intermediate Fusion | SNF, wSNF, CIMLR, NEMO | Construct similarity networks and fuse at the network level |
| Model-Based | MOFA, iClusterBayes, IntNMF, LRAcluster | Probabilistic or matrix factorization approaches |
install.packages("MOFSR", repos = "https://zaoqu-liu.r-universe.dev")
# install.packages("remotes")
remotes::install_github("Zaoqu-Liu/MOFSR")
library(MOFSR)
# Prepare multi-omics data (features × samples)
data_list <- list(
mRNA = mRNA_matrix,
miRNA = miRNA_matrix,
methylation = methylation_matrix
)
# Run SNF clustering
result <- run_snf(data_list, n_clusters = 3)
# Or use the unified interface
result <- run_integration(data_list, algorithm = "SNF", n_clusters = 3)
# Compare multiple algorithms
algorithms <- c("SNF", "RGCCA", "CIMLR", "MOFA")
results <- lapply(algorithms, function(alg) {
run_integration(data_list, algorithm = alg, n_clusters = 3)
})
names(results) <- algorithms
# Evaluate clustering consistency
ari_matrix <- compare_clusterings(results)
MOFSR does not read .svs, .ndpi, .scn, or .mrxs pixels directly. Extract
slide-level numeric measurements or embeddings first, then supply a
features × samples matrix as the pathology modality. The
WSI to MOFSR workflow gives a reproducible
QuPath export, aggregation, quality-control, and sample-alignment recipe.
| Algorithm | Reference | Year |
|---|---|---|
| SNF | Wang et al., Nature Methods | 2014 |
| CIMLR | Ramazzotti et al., Nature Communications | 2018 |
| iClusterBayes | Mo et al., Biostatistics | 2018 |
| IntNMF | Chalise & Fridley, PLoS ONE | 2017 |
| RGCCA/SGCCA | Tenenhaus & Tenenhaus, Psychometrika | 2011 |
| NEMO | Rappoport & Shamir, Bioinformatics | 2019 |
| PINSPlus | Nguyen et al., Genome Research | 2017 |
| MCIA | Meng et al., BMC Bioinformatics | 2014 |
| LRAcluster | Wu et al., Cancer Informatics | 2015 |
| BCC | Lock & Dunson, Bioinformatics | 2013 |
# Normalize data
data_norm <- normalize_omics(data_list, method = "zscore")
# Filter low-variance features
data_filtered <- filter_low_variance(data_list, min_var = 0.01)
# Handle missing values
data_imputed <- handle_missing(data_list, method = "knn", k = 5)
# Batch correction
data_corrected <- correct_batch(data_list, batch = batch_labels)
# Quality control summary
qc_report <- qc_summary(data_list)
# UMAP visualization
umap_coords <- compute_umap(data_list)
plot_umap(umap_coords, result$Cluster)
# Consensus matrix heatmap
cc_result <- RunCC(data_list[[1]], maxK = 6)
plot_consensus_heatmap(cc_result[[3]]$consensusMatrix)
# Silhouette analysis
plot_silhouette(result$Cluster, dist(t(data_list[[1]])))
# Survival analysis (requires survival data)
plot_survival(time, event, result$Cluster)
library(future)
plan(multisession, workers = 4)
# Parallel consensus clustering
result <- parallel_consensus_cluster(data, max_k = 6, n_reps = 1000)
# Parallel feature selection
features <- parallel_bootstrap_features(data, n_bootstrap = 100)
All 15 clustering algorithms are implemented internally without external dependencies, ensuring reproducibility across different computing environments.
If you use MOFSR in your research, please cite:
Liu Z (2024). MOFSR: Multi-Omics Fusion for Subtype Recognition.
R package version 2.3.0, https://github.com/Zaoqu-Liu/MOFSR
The algorithms implemented in MOFSR are based on peer-reviewed publications. Please also cite the original algorithm papers when using specific methods.
Zaoqu Liu
GPL-3.0