#' Integration Multi-omics
#'
#' @param data List of matrices.
#' @param method A character value specifying the method to run (See Details).
#' @param ... Additionnal parameters for each methods
#'
#' @examples
#' set.seed(34)
#' c_1 <- simulateY(J=100, prop=0.1, noise=1)
#' c_2 <- simulateY(J=200, prop=0.1, noise=0.1)
#' data <- list(c_1$data, c_2$data)
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="RGCCA") # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="SGCCA") # ok
#' \dontrun{res <- CrIMMix::IntMultiOmics(data, K=4, method="MOFA") # ok}
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="SNF", K_n=10, sigma=0.5) # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="intNMF") # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="MixKernel") # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="Mocluster") # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="iCluster") # ok
#' res <- CrIMMix::IntMultiOmics(data, K=4, method="MCIA") # ok
#' @details We run the method according to the value of argument 'method':
#'
#' If \code{method=="SGCCA"}, Variable selection for generalized
#' canonical correlation analysis
#' If \code{method=="RGCCA"}, Regularized generalized canonical correlation analysis.
#' If \code{method=="iCluster"}, Integrative subtype discovery
#' If \code{method=="intNMF"},I ntegrative clustering methods using
#' Non-Negative Matrix Factorization
#' If \code{method=="Mocluster"}, Identifying joint patterns across
#' multiple omics data sets.
#' If \code{method=="MOFA"} Multi-omics factor analysis
#' If \code{method=="MixKernel"}, Unsupervised multiple kernel
#' learning
#' If \code{method=="SNF"} Run Similarity network fusion
#' If \code{method=="MCIA"} Run Multiple Co-inertia Aalysis
#' @references
#' Tenenhaus, A., Philippe, C., Guillemot, V., et al.
#' Variable selection for generalized canonical correlation analysis.
#' Biostatistics, 15(3):569–583, 2014.
#'
#' Tenenhaus, A. and Tenenhaus, M.
#' Regularized generalized canonical correlation analysis.
#' Psychometrika, 76(2):257–284, 2011.
#'
#' Shen, R., Mo, Q., Schultz, N., et al.
#' Integrative subtype discovery in glioblastoma using icluster.
#' PloS one, 7(4):e35236, 2012.
#'
#' Chalise, P., Koestler, D. C., Bimali, M., et al.
#' Integrative clustering methods for high-dimensional molecular data.
#' Translational cancer research, 3(3):202, 2014.
#'
#' Meng, C., Helm, D., Frejno, M., et al. mocluster:
#' Identifying joint patterns across multiple omics data sets.
#' Journal of proteome research, 15(3):755–765,2015.
#'
#' Argelaguet, R., Velten, B., Arnol, D., et al.
#' Multi-omics factor analysis - a framework for unsupervised integration
#' of multi-omics data sets. Molecular systems biology, 14(6):e8124, 2018.
#'
#' Mariette, J. and Villa-Vialaneix, N. Unsupervised multiple kernel
#' learning for heterogeneous data integration. Bioinformatics, 34(6):1009–1015, 2017.
#'
#' Wang, B., Mezlini, A. M., Demir, F., et al.
#' Similarity network fusion for aggregating data types on a genomic scale.
#' Nature methods, 11(3):333, 2014.
#'
#' Meng, C., Kuster, B., Culhane, A. C., & Gholami, A. M. (2014).
#' A multivariate approach to the integration of multi-omics datasets.
#' BMC bioinformatics, 15(1), 162
#'
#' Nguyen H, Shrestha S, Draghici S, Nguyen T.
#' PINSPlus: A tool for tumor subtype discovery in integrated genomic data.
#' Bioinformatics, 2018
#'
#' Wilkerson, M.D., Hayes, D.N.
#' ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking
#' Bioinformatics, 2010 Jun 15;26(12):1572-3.
#'
#' Wu, D., Wang, D., Zhang, M. Q., & Gu, J.
#' Fast dimension reduction and integrative clustering of multi-omics
#' data using low-rank approximation: application to cancer molecular
#' classification.
#' BMC genomics, 16(1), 1022.
#'
#' Ramazzotti, D., Lal, A., Wang, B., Batzoglou, S., & Sidow, A. (2018).
#' Multi-omic tumor data reveal diversity of molecular mechanisms that
#' correlate with survival.
#' Nature communications, 9(1), 4453.
#'
#'
#' @export
IntMultiOmics <- function(data, method,...){
## Argument
if (!is.list(data)) {
stop("data is not a list")
}
## Check dimension
if(max(sapply(data, dim)[1,]) != min(sapply(data, dim)[1,])){
message(sprintf("Number of samples in dat %s is %s\n", 1:length(data), sapply(data, dim)[1,]))
stop("data do not contains the same number of samples")
}
doInt <- switch(method,
"intNMF"=doIntNMF,
"iCluster"=doiCluster,
"MixKernel"=doMixKernel,
"MOFA"=doMOFA,
"RGCCA"= doRGCCA,
"SGCCA"= doSGCCA,
"SNF"= doSNF,
"Mocluster"=doMoa,
"MCIA"=doMCIA,
"LRAcluster"=doLRAcluster,
"CIMLR"=doCIMLR,
"PINSPlus"=doPINSPlus,
"ConsensusClustering"=doConsensusClustering
)
res <- doInt(data,...)
return(res)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.