ANCOM-BC教程

林黄1 \ \ (^)

1 \ \ (^)Rockledge博士,贝塞斯达,马里兰州20892

2022年11月04日

1.简介

微生物组组成的偏置校正分析(ANCOM-BC)(Lin and pedada 2020)是微生物绝对丰度的差异丰度(DA)分析方法。ANCOM-BC估计未知的抽样分数,通过对数线性回归模型(包括估计的抽样分数作为偏移项)校正由其差异引起的偏差,并根据感兴趣的变量确定差异丰富的类群。有关详情,请参阅ANCOM-BC纸。

2.安装

下载包。

如果requireNamespace“BiocManager”静静地=真正的))install.packages“BiocManager”BiocManager::安装“ANCOMBC”

加载包。

图书馆(ANCOMBC)

3.示例数据

HITChip Atlas数据集包含用HITChip对1006名没有报告健康并发症的西方成年人进行属级微生物群分析(Lahti et al. 2014).该数据集也可通过微生物组R包获得(拉赫蒂等,2017)在phyloseq(McMurdie and Holmes 2013)格式。在本教程中,我们考虑以下协变量:

数据(atlas1006)#子集到基线谢霆锋=atlas1006 [, atlas1006时间= =0#重新编码bmi组谢霆锋体重指数=重新编码(谢霆锋bmi_group,肥胖的=“肥胖”severeobese =“肥胖”morbidobese =“肥胖”#偏瘦、超重和肥胖受试者的子集谢霆锋=谢霆锋[,谢霆锋身体质量指数%, %c“精益”“增持”“肥胖”)]#注意,默认情况下,R中分类变量的级别是排序的#按字母顺序。在这种情况下,“bmi”的参考水平将是#“精益”。手动更改参考级别,例如,设置' obesity '#作为参考级别,使用:谢霆锋体重指数=因素(谢霆锋身体质量指数,水平=c“肥胖”“增持”“精益”))#您可以通过检查来验证更改:#水平(sample_data (tse)美元bmi)#创建区域变量谢霆锋地区=重新编码as.character(谢霆锋国籍),斯堪的那维亚=“不”UKIE =“不”SouthEurope =“本身”表示敬意=“CE”东欧市场=“EE”.missing =“未知”#丢弃“EE”,因为它只包含一个主题#丢弃缺少region值的主题谢霆锋=谢霆锋(,谢霆锋地区%, %c“EE”“未知”)]打印(tse)
类:treesummarizeexperiment dim: 130 873元数据(0):assays(1):计数rownames(130):放线菌科氧球菌…Xanthomonadaceae Yersinia et reler . rowData name(3):门科属colnames(873): Sample-1 Sample-2…Sample-1005 Sample-1006 colData name(12):年龄性别…bmi region reducedDimNames(0): mainExpName: NULL altExpNames(0): rowLinks: NULL rowTree: NULL colLinks: NULL colTree: NULL

ANCOM-BC实施

4.1运行combc函数

了=ancombcdata =谢霆锋,assay_name =“计数”tax_level =“家庭”phyloseq =公式=“年龄+地区+ bmi”p_adj_method =“福尔摩斯”prv_cut =0.10lib_cut =1000组=“身体质量指数”struc_zero =真正的neg_lb =真正的托尔=1 e-5max_iter =One hundred.节约=真正的α=0.05全球=真正的n_cl =1verbose =真正的res =resres_global =res_global# ancombc还支持以phyloseq格式导入数据# tse_alt = agglomerateByRank(tse, "Family")# pseq = makephyloseqfromtreesummarizeexperiment (tse_alt)# out = ancombc(data = NULL, assay_name = NULL,# tax_level = "Family", phyloseq = pseq,#公式=“年龄+地区+ bmi”,# p_adj_method = "holm", prv_cut = 0.10, lib_cut = 1000,# group = "region", struc_zero = TRUE, neg_lb = TRUE, tol = 1e-5,# max_iter = 100,保存= TRUE, alpha = 0.05,全局= TRUE,# n_cl = 1, verbose = TRUE)

4.2 ANCOMBC主要结果

ANCOM-BC对数线性模型的结果,根据感兴趣的协变量确定差异丰度的类群。它包含:1)对数折叠变化;2)标准误差;3)检验统计;4)假定值;5)调整后的p值;6)指示分类单元是否差异丰富(TRUE) (FALSE)。

利物浦

tab_lfc =res利物浦col_name =c“分类”“拦截”“年龄”" ne - ce "" se - ce "us - ce "“超重-肥胖”“瘦-胖”colnames(tab_lfc) =col_nametab_lfc% > %数据表标题=“从主要结果开始的对数折叠变化”% > %formatRound(col_name [-1],数字=2

SE

tab_se =ressecolnames(tab_se) =col_nametab_se% > %数据表标题=“来自主要结果的SEs”% > %formatRound(col_name [-1],数字=2

检验统计量

tab_w =resWcolnames(tab_w) =col_nametab_w% > %数据表标题=“来自主要结果的测试统计数据”% > %formatRound(col_name [-1],数字=2

假定值

tab_p =resp_valcolnames(tab_p) =col_nametab_p% > %数据表标题=“主要结果的p值”% > %formatRound(col_name [-1],数字=2

假定值调整

tab_q =rescolnames(tab_q) =col_nametab_q% > %数据表标题=“从主要结果调整的p值”% > %formatRound(col_name [-1],数字=2

差异丰富的分类群

tab_diff =resdiff_abncolnames(tab_diff) =col_nametab_diff% > %数据表标题=从主要结果看差异丰度分类群

Bias-corrected丰度

步骤1:获得估计的样本特定抽样分数(对数尺度)。

步骤2:修正日志观测丰度,从每个样本的日志观测丰度中减去估计的采样分数。

请注意,我们只能估计抽样分数到一个相加常数。因此,只有偏差校正丰度之间的差异是有意义的。

samp_frac =samp_frac#将NA替换为0samp_frac [is.na(samp_frac)] =0#添加pseudo -count(1)以避免取0的对数log_obs_abn =日志(feature_table+1#调整观察到的丰度日志log_corr_abn =tt(log_obs_abn)-samp_frac)#显示前6个样本(log_corr_abn [,16],2% > %数据表标题=“经偏差校正的观测丰度测井”

年龄可视化

df_lfc =data.frame(res利物浦(,-1resdiff_abn (,-1],check.names =% > %变异taxon_id =resdiff_abn分类单元)% > %dplyr::选择(taxon_id一切())df_se =data.frame(resse (,-1resdiff_abn (,-1],check.names =% > %变异taxon_id =resdiff_abn分类单元)% > %dplyr::选择(taxon_id一切())colnames(df_se) [-1] =paste0colnames(df_se) [-1],“本身”df_fig_age =df_lfc% > %dplyr::left_join(df_se通过=“taxon_id”% > %dplyr::转化(taxon_id, age, ageSE)% > %dplyr::过滤器(年龄! =0% > %dplyr::安排desc(年龄)% > %dplyr::变异直接=ifelse(年龄>0“积极的利物浦”“负利物浦”))df_fig_agetaxon_id =因素(df_fig_agetaxon_id,水平=df_fig_agetaxon_id)df_fig_age直接=因素(df_fig_age直接,水平=c“积极的利物浦”“负利物浦”))p_age =ggplotdata =df_fig_age,aesx =taxon_id,y =的年龄,填补=直接,颜色=直接))+geom_bar统计=“身份”宽度=0.7位置=position_dodge宽度=0.4))+geom_errorbaraesymin =年龄-ageSE,ymax =年龄+ageSE),宽度=0.2位置=position_dodge0.05),颜色=“黑色”+实验室x =y =“对数折叠变化”title =“对数折线随年龄增加的单位变化”+scale_fill_discretename =+scale_color_discretename =+theme_bw()+主题情节。title =element_texthjust =0.5),panel.grid.minor.y =element_blank(),axis.text.x =element_text角=60hjust =1))p_age

BMI的可视化

df_fig_bmi =df_lfc% > %过滤器(bmioverweight! =0|bmilean! =0% > %转化(taxon_id超重与肥胖(bmioverweight2),精益vs.肥胖(bmilean2))% > %pivot_longer关口=超重与肥胖精益vs.肥胖names_to =“集团”values_to =“价值”% > %安排(taxon_id)lo =地板上最小值(df_fig_bmi值))了=天花板马克斯(df_fig_bmi值))中期=(罗+)/2p_bmi =df_fig_bmi% > %ggplotaesx =组,y =taxon_id,填补=值))+geom_tile颜色=“黑色”+scale_fill_gradient2低=“蓝色”高=“红色”中期=“白色”na。值=“白色”中点=中期,限制=c(lo),name =+geom_textaes(集团、taxon_id标签=值),颜色=“黑色”大小=4+实验室x =y =title =“与肥胖受试者相比,对数倍的变化”+theme_minimal()+主题情节。title =element_texthjust =0.5))p_bmi

4.3 ANCOMBC全局测试结果

来自ANCOM-BC全局测试的结果,以确定在三个或更多不同类群中至少两个类群之间差异丰富的分类群。在本例中,我们想要确定在CE、NE、SE和US的至少两个区域之间差异丰富的分类群。结果包含:1)测试统计量;2)假定值;3)调整后的p值;4)指示分类单元是否差异丰富(TRUE) (FALSE)。

测试统计数据

tab_w =res_global (,c“分类”“W”)]tab_w% > %数据表标题=“测试数据来自全局测试结果”% > %formatRoundc“W”),数字=2

假定值

tab_p =res_global (,c“分类”“p_val”)]tab_p% > %数据表标题=“假定值来自全局测试结果”% > %formatRoundc“p_val”),数字=2

假定值调整

tab_q =res_global (,c“分类”“q_val”)]tab_q% > %数据表标题=“假定值调整来自全局测试结果”% > %formatRoundc“q_val”),数字=2

差异丰富的分类群

tab_diff =res_global (,c“分类”“diff_abn”)]tab_diff% > %数据表标题=“差异丰富类群来自全局测试结果”

可视化

sig_taxa =res_global% > %dplyr::过滤器(diff_abn= =真正的% > %分类单元df_bmi =tab_lfc% > %dplyr::选择(分类单元,超重-肥胖瘦-肥胖% > %过滤器(分类单元%, %sig_taxa)df_heat =df_bmi% > %pivot_longer关口=-one_of“分类”),names_to =“地区”values_to =“价值”% > %变异值=(价值,2))df_heat分类单元=因素(df_heat分类单元,水平=排序(sig_taxa))lo =地板上最小值(df_heat值))了=天花板马克斯(df_heat值))中期=(罗+)/2p_heat =df_heat% > %ggplotaesx =地区,y =分类单元,填补=值))+geom_tile颜色=“黑色”+scale_fill_gradient2低=“蓝色”高=“红色”中期=“白色”na。值=“白色”中点=中期,限制=c(lo),name =+geom_textaes(地区、分类单元标签=值),颜色=“黑色”大小=4+实验室x =y =title =“全球显著类群的对数折叠变化”+theme_minimal()+主题情节。title =element_texthjust =0.5))p_heat

会话信息

sessionInfo()
R开发中(不稳定)(2022-10-25 r83175)平台:x86_64-pc-linux-gnu(64位)运行环境:Ubuntu 22.04.1 LTS矩阵产品:默认BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 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_TELEPHONE=C [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C附加的基本包:[1]stats graphics grDevices utils datasets methods基础其他附加包:[1]DT_0.26 forcats_0.5.2 string_1 .4.1 dplyr_1.0.10 [5] purrr_0.3.5 readr_2.1.3 tidyr_1.2.1 tibble_3.1.8 [9] ggplot2_3.4.0 tidyverse_1.3.2 ANCOMBC_2.1.1通过命名空间加载(且未附加):[1] splines_4.3.0 bitops_1.0-7 [3] cellranger_1.1.0 reprex_2.0.2 [29] . dirichletmultiomial_1.41.0 rpart_4.1.19 [7] lifecycle_1.0.3 Rdpack_2.4 [9] doParallel_1.0.17 lattice_0.20-45 [11] MASS_7.3-58.1 crosstalk_1.2.0 [13] MultiAssayExperiment_1.25.1 backports_1.4.1 [15] magrittr_2.0.3 Hmisc_4.7-1 [17] sass_0.4.2 rmarkdown_2.17 [19] jquerylib_0.1.4 yaml_2.3.6 [21] doRNG_1.8.2 gld_2.6.6 [23] DBI_1.1.3 [25] rcolorbrewer_1 .3 lubridate_1.8.0 [29]rvest_1.0.3 expm_0.999-6 [31] genomicranges_1.1.0 BiocGenerics_0.45.0 [33] RCurl_1.98-1.9 yulab.utils_0.0.5 [35] nnet_7.3-18 TH.data_1.1-1 [37] sandwich_3 -2 GenomeInfoDbData_1.2.9 [39] IRanges_2.33.0 S4Vectors_0.37.0 [41] ggrepel_0.9.1 irlba_2.3.5.1 [43] tidytree_0.4.1 vegan_2.6-4 [45] permute_0.9-7 DelayedMatrixStats_1.21.0 [47] codetools_0.2-18 DelayedArray_0.25.0 [49] xml2_1.3.3 sccuttle_1 .9.0 [51] energy_1.7-10 tidyselect_1.2.0 [53] farver_2.1.1 lme4_1. 31 [55] gmp_0.6-7ScaledMatrix_1.7.0 [57] viridis_0.6.2 matrixstats_0.2.0 [59] stats4_4.3.0 base64enc_0.1-3 [61] googledrive_2.0.0 jsonlite_1.8.3 [63] BiocNeighbors_1.17.0 e1071_1.7-12 [65] ellipsis_0.3.2 decontam_1.19.0 [67] mia_1.7.0 Formula_1.2-4 -0 scater_1.27.0 [71] iterators_1.0.14 emmeans_1.8.2 [73] foreach_1.5.2 tools_4.3.0 [75] treeio_1.23.0 DescTools_0.99.47 [77] Rcpp_1.0.9 glue_1.6.2 [79] gridExtra_2.3 mgcv_1.8-41 [81] MatrixGenerics_1.11.0 GenomeInfoDb_1.35.2TreeSummarizedExperiment_2.7.0 [85] withr_2.5.0 num德里_2016.8-1.1 [87]fastmap_1.1.0 latticeExtra_0.6-30 [89] boot_1.3-28 fansi_1.0.3 [91] digest_0.6.30 rsvd_1.0.5 [93] R6_2.5.1 estimability_1.4.1 [95] colorspace_2.0-3 jpeg_0.1-9 [97] RSQLite_2.2.18 googlesheets4_1.0.1 [99] utf8_1.2.2 generics_0.1.3 [101] data.table_1.14.4 DECIPHER_2.27.0 [103] class_7.3-20.1 cvxr_1 . 11 [105] httr_1.4.4 htmlwidgets_1.5.4 [107] pkgconfig_2. 3.1 [109] Exact_3.2 Rmpfr_0.8-9 [111] blob_1.2.3SingleCellExperiment_1.21.0 [113] XVector_0.39.0 htmltools_0.5.3 [115] scales_1.2.1 Biobase_2.59.0 [117] lmom_2.9 png_0.1-7 [119] knitr_1.40 rstudioapi_0.14 [121] tzdb_0.3.0 reshape2_1.4.4 [123] coda_0.19-4 checkmate_2.1.0 [125] nlme_1 .1-160 nloptr_2.0.3 [129] proxy_0.1 -160 nloptr_2. 0.6 [129] zoo1.8 -11 rootSolve_1.8.2.3 [131] parallel_8.1 [135] grid_4.3.0 vctrs_0.5.0 [137] BiocSingular_1.15.0 dbplyr_2.2.1 [139] beachmat_2.15.0 xtable_1. 4- 4 [141]cluster_2.1.4 beeswarm_0.4.0 [143] htmlTable_2.4.1 evaluate_0.17 [145] mvtnorm_1.1-3 cli_3.4.1 [147] compiler_4.3.0 rlang_1.0.6 [149] crayon_1.5.2 rngtools_1.5.2 [151] labeling_0.4.2 modelr_0.1.9 [153] interp_1.1-3 fs_1.5.2 [155] plyr_1.8.7 ggbeeswarm_0.6.0 [157] stringi_1.7.8 viridisLite_0.4.1 [159] deldir_1.0-6 BiocParallel_1.33.2 [161] assertthat_0.2.1 lmertest_3 . 3.1-3 [163] munsell_0.5.0 Biostrings_2.67.0 [165] gsl_1 .2.1 -7.1 lazyeval_0.2.2 [167] Matrix_1.5-1 hms_1.1.2 [169] sparseMatrixStats_1.11.0 bit64_4.0.5 [171] highr_0.9 haven_2.5.1 [173] SummarizedExperiment_1.29.1 rbibutils_2.2.9 [175] gargle_1.2.1 broom_1.0.1 [177] memoise_2.0.1 bslib_0.4.1 [179] bit_4.0.4 readxl_1.4.1 [181] ape_5.6-2

参考文献

拉赫蒂,里奥,贾科Salojärvi,安妮·萨洛宁,马丁·谢弗,威廉·M·德沃斯。2014。"人体肠道生态系统中的引爆元素"自然通讯5(1): 1 - 10。

Lahti, Leo, Sudarshan Shetty, T Blake, J Salojarvi等人。2017.R.微生物组分析工具版本1: 10013。

林,黄,Shyamal Das pedada, 2020。用偏差校正分析微生物组的组成自然通讯11(1): 1 - 11。

麦克默迪,保罗·J,苏珊·霍姆斯,2013。“Phyloseq:微生物组普查数据可重复交互分析和图形的R包。”《公共科学图书馆•综合》8 (4): e61217。