这篇短文包含了一个关于如何使用r训练一个MOFA模型的详细教程在这里.更多关于MOFA应用于各种多组学数据集的例子可以找到在这里.
库(data.table)库(MOFA2)
MOFA(以及一般的因子分析模型)有助于揭示包含多个异质性来源的复杂数据集的变化。这需要一个样本量较大(至少15个样本量).此外,MOFA还需要得到多模态测量值同样的样本.如果您的样本缺少一些数据模态,这是没问题的,但必须有相当程度的匹配测量。
对数据进行适当的标准化是至关重要的。模型可以处理三种类型的数据:连续(用高斯似然建模),小计数(用泊松似然建模)和二进制测量(用伯努利似然建模)。非高斯似然给出非最优结果,我们建议用户应用数据转换来获得连续测量。例如,对于基于计数的数据,如RNA-seq或ATAC-seq,我们建议大小因子归一化+方差稳定(即对数转换)。
强烈建议您选择每个试验的高可变特征(hvg)在拟合模型之前。这确保了更快的训练和更健壮的推理过程。此外,对于维度差异很大的数据形式,我们建议在更大的视图中进行更强的特征选择,以减少数据形式之间的特征不平衡。
要创建一个MOFA对象,你需要指定三个维度:样本、特征和视图。还可以为每个示例指定一个组(默认情况下没有组结构)。MOFA对象可以从广泛的输入格式创建,包括:
矩阵列表,其中每个条目对应一个视图。样本存储在列中,特征存储在行中。
让我们先模拟一些数据
Data <- make_example_data(n_views = 2, n_samples = 200, n_features = 1000, n_factors = 10)[[1]] lapply(Data,dim)
view_1美元# # # # # # # # 200 [1]1000 view_2 # # 200年[1]1000
创建MOFA对象:
MOFAobject <- create_mofa(data)
绘制数据概览
plot_data_overview (MOFAobject)
如果使用多组功能,则可以使用组
参数作为每个样本的组ID的向量。请记住,多组功能是一个相当高级的选项,我们不鼓励初学者使用。有关多组推断如何工作的详细信息,请阅读FAQ部分而且检查这个小插图.
N = ncol(data[[1]]) groups= c(rep("A",N/2), rep("B",N/2)) MOFAobject <- create_mofa(data, groups=groups)
绘制数据概览
plot_data_overview (MOFAobject)
一个带列的长数据框架样本
,功能
,视图
,集团
(可选),价值
可能是具有多个组学和潜在的多组数据的复杂数据集的最佳格式。同样,不需要添加与缺失数据对应的行:
Filepath <- system. sh。文件(“extdata”、“test_data。RData", package = "MOFA2") load(filepath) head(dt)
##采样特征视图值## 1:sample_0_group_1 feature_0_view_0 view_0 2.08 ## 2: sample_1_group_1 feature_0_view_0 view_0 0.01 ## 3: sample_2_group_1 feature_0_view_0 view_0 -0.11 ## 4: sample_3_group_1 feature_0_view_0 view_0 -0.82 ## 5: sample_4_group_1 feature_0_view_0 view_0 -1.13 ## 6: sample_5_group_1 feature_0_view_0 view_0 -0.25
创建MOFA对象
MOFAobject <- create_mofa(dt)
##从data.frame创建MOFA对象…
打印(MOFAobject)
##未经训练的MOFA模型,具有以下特征:##视图数量:2 ##视图名称:view_0 view_1 ##特征数量(每个视图):1000 1000 ##组数量:1 ##组名称:single_group ##样本数量(每组):100 ##
地块数据概述
plot_data_overview (MOFAobject)
假
假
data_opts <- get_default_data_options(MOFAobject) head(data_opts)
scale_views美元# # # # scale_groups美元[1]假# # # # # # [1]center_groups美元假# # # # # # [1]use_float32美元真正的# # # # # #美元[1]假# # # # # #观点[1]“view_0”“view_1”# # # #元组# #[1]“single_group”
假
.真正的
.真正的
如果使用多个组。真正的
如果使用多个视图。如果您熟悉底层数学模型,则只更改默认模型选项。
model_opts <- get_default_model_options(MOFAobject)
## $可能性## view_0 view_1 ##“gaussian”“gaussian”## ## $num_factors ## [1] 10 ## ## $spikeslab_factors ## [1] FALSE ## ## $spikeslab_weights ## [1] TRUE ## ## $ard_factors ## [1] FALSE ## ## $ard_weights ## [1] TRUE
train_opts <- get_default_training_options(MOFAobject) head(train_opts)
# # $麦克斯特# # # # # # 1000 [1]convergence_mode # # [1] drop_factor_threshold美元“快速”的# # # # # # [1]1 # # # # $ verbose # # startELBO美元[1]假# # # # # # [1]freqELBO美元1 # # # # # # 5 [1]
准备MOFA对象
MOFAobject <- prepare_mofa(object = MOFAobject, data_options = data_opts, model_options = model_opts, training_options = train_opts)
训练MOFA模型。记住,在这一步MOFA2
R包与mofapy2
使用Python包网状
.这是外交部运行过程中出现的大部分问题的根源。看到我们的FAQ部分如果你有问题。输出保存在指定为的文件中输出文件
.如果没有指定,输出将保存在一个临时位置。
outfile = file.path(tempdir(),"model.hdf5")训练<- run_mofa(MOFAobject, outfile)
##警告:输出文件/tmp/RtmpQqPucF/model. txtHdf5已经存在,将被替换
##使用reticulate连接到mofapy2 python包(use_basilisk = FALSE)…##请确保在使用reticulate::use_python加载R时手动指定正确的python二进制(…, force=TRUE)或使用reticulate::use_condaenv(…,force=TRUE) ## If you prefer to let us automatically install a conda environment with 'mofapy2' installed using the 'basilisk' package, please use the argument 'use_basilisk = TRUE'
##在run_mofa(MOFAobject, outfile)中警告:最新的mofapy2版本是0.6.4,##您使用的是0.5.6。请使用“pip install mofapy2”进行升级
## run_mofa(MOFAobject, outfile)中的警告:使用reticulate连接到最新的mofapy2 ## python包(use_basilisk = FALSE)
##在run_mofa(MOFAobject, outfile)中警告:最新的mofapy2版本是0.6.4,##您使用的是0.5.6。请使用“pip install mofapy2”进行升级
## run_mofa(MOFAobject, outfile)中的警告:在##指定的python二进制文件中未检测到mofapy2_0.6.4,请参阅reticulate::py_config()。设置use_basilisk = ## TRUE…
##使用basilisk连接到mofapy2包##设置'use_basilisk'为FALSE,如果您喜欢使用'reticulate'手动设置python二进制。
如果一切都成功,您应该观察到类似于下面的输出:
###################################### ## 训练模型与种子1 ## ###################################### 迭代1:时间= 0.03,ELBO = -52650.68, deltaELBO = 837116.802(94.082647669%)、因素= 10(…)迭代9:时间= 0.04,ELBO = -50114.43, deltaELBO = 23.907(0.002686924%)、因素= 10 ####################### ## 培训完成 ## ####################### 保存模型在/ var /文件夹/…/ model.hdf5…/ tmp / RtmpQqPucF / model.hdf5。
这就完成了关于如何从r中训练MOFA对象的教程本教程
sessionInfo ()
## R版本4.2.0 RC (2022-04-19 r82224) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.4 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.15-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.15-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB 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_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基础包:## [1]stats graphics grDevices utils datasets methods base ## ##其他附加包:## [1]data.table_1.14.2 pheatmap_1.0.12 forcats_0.5.1 string_1 .4.0 ## [5] dplyr_1.0.8 purrr_0.3.4 readr_2.1.2 tidyr_1.2.0 ## [9] tibble_1 .1.6 ggplot2_3.3.5 tidyverse_1.3.1 MOFA2_1.6.0 ## [13] BiocStyle_2.24.0 ## ##通过命名空间加载(且未附加):## [1] Rtsne_0.16 colorspace_2.0-3 rprojroot_2.0.3 fs_1.5.2 ## [7] rstudioapi_0.13 ggpubr_0.4.0 farver_2.1.0 ## [10] ggrepel_0.9.1 RSpectra_0.16-1 fansi_1.0.3 ## [13] mvtnorm_1.1-3 lubridate_1.8.0 xml2_1.3.3 ## [19] jsonlite_1.8.0 broom_0.8.0 dbplyr_2.1.1 ## [22] png_0.1-7 uwot_0.1.11 HDF5Array_1.24.0 ## [25] BiocManager_1.30.17 compiler_4.2.0 httr_1.4.2 ## [28] basilisk_1.8.0 backports_1.4.1 assertthat_0.2.1[43] rcppylib_0.1.4 vctrs_0.4.1 rhdf5filters_1.8.0 ## [46] nlme3.1 -157 xfun_0.30 rvest_1.0.2 ## [49] lifecycle_1.0.1 rstatix_0.7.0 scales_1.2.0 ## [55] parallel_4.2.0 rhdf5_2.40.0 RColorBrewer_1.1-3 ## [58] yaml_2.3.5 reticulate_1.24sass_0.4.1 ## [61] reshape_0.8.9 stringi_1.7.6 highr_0.9 ## [64] S4Vectors_0.34.0 corrplot_0.92 BiocGenerics_0.42.0 ## [67] filelock_1.0.2 rlang_1.0.2 pkgconfig_2.0.3 ## [70] matrixStats_0.62.0 evaluate_0.15 lattice_0.20-45 ## [73] Rhdf5lib_1.18.0 labeling_0.4.2 cowplot_1.1.1 ## [76] tidyselect_1.1.2 RcppAnnoy_0.0.19 here_1.0.1 ## [79] GGally_2.1.2 plyr_1.8.7 magrittr_2.0.3 ## [82] bookdown_0.26 R6_2.5.1 IRanges_2.30.0 ## [85] magick_2.7.3 generics_0.1.2 DelayedArray_0.22.0 ## [88] DBI_1.1.2Pillar_1.7.0 haven_2.5.0 ## [91] withr_2.5.0 mgcv_1. 8.0 -40 abind_1.4-5 ## [94] dir.expiry_1.4.0 modelr_0.1.8 crayon_1.5.1 ## [97] car_3.0-12 utf8_1.2.2 tzdb_0.3.0 ## [100] rmarkdown_2.14 grid_4.2.0 readxl_1.4.0 ## [103] reprex_2.0.1 digest_0.6.29 stats4_4.2.0 ## [106] munsell_0.5.0 bslib_0.3.1