This package implements a novel data integration model for sample-wise integration of different views. It accounts for compositionality and employs a non-parametric mean-variance trend for sequence count data. The resulting model can be conveniently plotted to allow for explorative visualization of variability shared over different views.
The package can be installed and loaded using the following commands:
suppressPackageStartupMessages(library(combi))
cat("combi package version", as.character(packageVersion("combi")), "\n")
## combi package version 1.2.0
For an unconstrained ordination, a named list of datasets with overlapping samples must be supplied. The datasets can currently be supplied as a raw data matrix (with features in the columns), or as a phyloseq, SummarizedExperiment or ExpressionSet object. In addition, information on the required distribution (“quasi” for quasi-likelihood fitting, “gaussian” for normal data) and compositional nature (TRUE/FALSE) should be supplied
microMetaboInt = combi(list(microbiome = zhangMicrobio, metabolomics = zhangMetabo),
distributions = c("quasi", "gaussian"), compositional = c(TRUE, FALSE), logTransformGaussian = FALSE)
One can print basic infor about the ordination
## Unconstrained combi ordination of 2 dimensions on 2 views with 42 samples.
## Views and number of features were:
## microbiome: 130
## metabolomics: 174
## Importance parameters of dimensions 1 to 2 are 117 and 44.9
A simple plot function is available for the result, for samples and shapes, a data frame should also be supplied
By default, only the most important features (furthest away from the origin) are shown. To show all features, one can resort to point cloud plots or density plots as follows:
The drawback is that now no feature labels are shown.
As an aid to interpretation of compositional views, links between features can be plotted and projected onto samples by providing their names or approximate coordinates
# First define the plot, and return the coordinates
mmPlot = plot(microMetaboInt, samDf = zhangMetavars, samCol = "ABX", returnCoords = TRUE,
featNum = 10)
# Providing feature names, and sample coordinates, but any combination is allowed
addLink(mmPlot, links = cbind("Staphylococcus_819c11", "OTU929ffc"), Views = 1, samples = c(0,
1))
Finally, one can extract the coordinates for use in third-party software
For a constrained ordination also a data frame of sample variables should be supplied
microMetaboIntConstr = combi(list(microbiome = zhangMicrobio, metabolomics = zhangMetabo),
distributions = c("quasi", "gaussian"), compositional = c(TRUE, FALSE), logTransformGaussian = FALSE,
covariates = zhangMetavars)
Also here we can get a quick overview
## Constrained combi ordination of 2 dimensions on 2 views with 42 samples.
## Views and number of features were:
## microbiome: 130
## metabolomics: 174
## Number of sample variables included was 4,
## for which 6 parameters were estimated per dimension.
## Importance parameters of dimensions 1 to 2 are 34.2 and 21.4
and plot the ordination
Convergence of the iterative algorithm can be assessed as follows:
Influence of the different views can be investigated through
This vignette was generated with following version of R:
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.5 LTS
##
## Matrix products: default
## BLAS: /home/biocbuild/bbs-3.12-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.12-bioc/R/lib/libRlapack.so
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=C
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] combi_1.2.0
##
## loaded via a namespace (and not attached):
## [1] MatrixGenerics_1.2.0 Biobase_2.50.0
## [3] jsonlite_1.7.1 splines_4.0.3
## [5] foreach_1.5.1 stats4_4.0.3
## [7] phyloseq_1.34.0 GenomeInfoDbData_1.2.4
## [9] yaml_2.2.1 numDeriv_2016.8-1.1
## [11] pillar_1.4.6 lattice_0.20-41
## [13] quantreg_5.75 glue_1.4.2
## [15] limma_3.46.0 quadprog_1.5-8
## [17] alabama_2015.3-1 digest_0.6.27
## [19] GenomicRanges_1.42.0 XVector_0.30.0
## [21] colorspace_1.4-1 htmltools_0.5.0
## [23] Matrix_1.2-18 plyr_1.8.6
## [25] conquer_1.0.2 pkgconfig_2.0.3
## [27] SparseM_1.78 zlibbioc_1.36.0
## [29] purrr_0.3.4 scales_1.1.1
## [31] tensor_1.5 MatrixModels_0.4-1
## [33] tibble_3.0.4 nleqslv_3.3.2
## [35] mgcv_1.8-33 farver_2.0.3
## [37] generics_0.0.2 IRanges_2.24.0
## [39] ggplot2_3.3.2 ellipsis_0.3.1
## [41] SummarizedExperiment_1.20.0 BiocGenerics_0.36.0
## [43] survival_3.2-7 magrittr_1.5
## [45] crayon_1.3.4 evaluate_0.14
## [47] nlme_3.1-150 MASS_7.3-53
## [49] vegan_2.5-6 data.table_1.13.2
## [51] tools_4.0.3 formatR_1.7
## [53] lifecycle_0.2.0 matrixStats_0.57.0
## [55] stringr_1.4.0 Rhdf5lib_1.12.0
## [57] S4Vectors_0.28.0 munsell_0.5.0
## [59] cluster_2.1.0 DelayedArray_0.16.0
## [61] Biostrings_2.58.0 isoband_0.2.2
## [63] ade4_1.7-15 compiler_4.0.3
## [65] GenomeInfoDb_1.26.0 rlang_0.4.8
## [67] rhdf5_2.34.0 grid_4.0.3
## [69] RCurl_1.98-1.2 rhdf5filters_1.2.0
## [71] iterators_1.0.13 biomformat_1.18.0
## [73] igraph_1.2.6 labeling_0.4.2
## [75] cobs_1.3-4 bitops_1.0-6
## [77] rmarkdown_2.5 multtest_2.46.0
## [79] gtable_0.3.0 codetools_0.2-16
## [81] BB_2019.10-1 reshape2_1.4.4
## [83] R6_2.4.1 knitr_1.30
## [85] dplyr_1.0.2 permute_0.9-5
## [87] ape_5.4-1 stringi_1.5.3
## [89] parallel_4.0.3 Rcpp_1.0.5
## [91] vctrs_0.3.4 tidyselect_1.1.0
## [93] xfun_0.18