扳手是宏基因组计数数据的归一化技术。虽然主要是为宏基因组实验中的稀疏16S计数数据开发的,但它也可以应用于其他稀疏技术的归一化计数数据,如单细胞RNAseq,功能性微生物组等。
给定(a)组织为特征(OTUs,基因等)x样本的计数数据,以及(b)与样本相关的实验组标签,Wrench为每个样本输出一个归一化因子。通过将每个样本的计数除以其归一化因子,对数据进行归一化。
手稿可以在这里访问:https://www.biorxiv.org/content/early/2018/01/31/142851
DNA测序的一个不必要的副作用是观察到的计数只保留相对丰度/表达信息。在实验条件/组之间比较这种相对丰度(例如,用差异丰度分析)可能会导致问题。具体来说,当存在绝对丰度差异丰富的特征时,真正未受扰动的特征可以被识别为差异丰富。常用的技术,如稀疏/子抽样/除以总计数和这些方法的其他变体,不适合这个问题。扳手的开发是为了解决这个问题,从相对丰度重建基于一些常用的假设在基因组学。
在这里提出的手稿的介绍部分:https://www.biorxiv.org/content/early/2018/01/31/142851从上面的观点提供了一些关于各种常用归一化技术的观点,我们建议通读它。
下载包。
如果(!requireNamespace("BiocManager", quiet = TRUE)) install.packages("BiocManager") BiocManager::install("扳手")
或者从Github安装开发版本的包。
BiocManager:安装(“HCBravoLab /扳手”)
加载包。
库(扳手)
下面,我们将提供一个快速教程,其中传递计数数据和分组信息以生成组合因子和归一化因子。任何可选参数的详细信息都可以通过输入“?”扳手”在R端子窗口。
#从metagenomeSeq包data(mouseData)中的小鼠微生物组数据中提取计数和分组信息
## mreexperiment (storageMode: environment) ## assayData: 10172个特征,139个样本##元素名称:计数## protocolData: none ##表型数据## sampleNames: PM1:20080107 PM1:20080108…PM9:20080303 (139 total) ## varLabels: mouseID date…status (5 total) ## varMetadata: labelDescription ## featureData ## featureNames: Prevotellaceae:1 Lachnospiraceae:1…##副弧菌:956(共10172)## fvarLabels:超级王国门…OTU (7 total) ## fvarMetadata: labelDescription ##实验数据:使用'实验数据(对象)' ##注释:
计数<- MRcounts(mouseData, norm=FALSE) #获取计数计数[1:10,1:2]
## PM1:20080107 PM1:20080108普雷votellaceae:1 00 ## Lachnospiraceae:1 00 ##未分类筛选:1 00 ## Clostridiales:1 00 ## Clostridiales:2 00 ##厚壁菌门:1 00 ## PeptostreptococcaceaeIncertaeSedis:1 00 ## Clostridiales:3 00 ## Lachnospiraceae:7 00 ## Lachnospiraceae:8 00 0
group <- pData(mouseData)$diet #获取组/条件矢量头(组)
##[1]“bk”“bk”“bk”“bk”“bk”“bk”“bk”“bk”“bk”
#运行扳手默认W <-扳手(计数,条件=组)comtionalfactors <- W$ccf normalizationFactors <- W$nf head(comtionalfactors) #每个样本一个因素
## pm1:20071211 pm1:20071217 ## 0.7540966 0.8186825 1.0423187 1.2690286 0.7860119 1.3059309
head(normalizationFactors) #每个样本一个因子
## pm1:2008011 pm1:20080121 pm1:20071217 ## 0.3364660 0.7051424 1.3295084 0.8530978 0.7545386 2.1273695
下面介绍了最常用工具的上述标准化因素。
#——如果使用metagenomeSeq normalizedObject <- mouseData #mouseData已经是一个metagenomeSeq对象normFactors(normalizedObject) <- normalizationFactors #——如果使用edgeR,我们必须传入组成因子edgerobj <- edgeR::DGEList(counts=counts, group = as.matrix(group), norm。——如果使用DESeq/DESeq2 DESeq . factors= comtionalfactors) #obj <- DESeq2::DESeqDataSetFromMatrix(countData = counts, DataFrame(group), ~ group)
##将计数转换为整数模式
deseq.obj
##类:DESeqDataSet ## dim: 10172 139 ##元数据(1):版本## assays(1):计数## rownames(10172): Prevotellaceae:1 Lachnospiraceae:1…布兰蒂拉:103 ##副弧菌:956 ##行数据名称(0):## colnames(139): PM1:20080107 PM1:20080108…PM9:20080225 PM9:20080303 ## colData名称(1):组
sizeFactors(deseq.obj) <- normalizationFactors
扳手目前仅为分类组标签实现策略。虽然对连续协变量的扩展仍在开发中,但您可以通过离散化/分割它们来从连续协变量中创建因子/水平(无论您认为如何合理)。
time <- as.numeric(as.character(pData(mouseData)$relativeTime))Levs <- cut(time, breaks = c(0,6,28,42,56,70)) overall_group <- paste(group, time.)levs) #合并时间信息和组信息在一起W <-扳手(计数,条件= overall_group)
在非常低的样本深度和高稀疏性的情况下,人们可能会发现重构的组成因子(扳手返回的列表对象中的“ccf”条目)和每个实验组中的样本深度(样本的总计数)之间大致呈线性趋势。这可能是由于大量的零影响了向下方向的抽样比例的平均估计。现有的在估计过程中利用零的方法也会受到这个问题的困扰(例如,通过改变“min.mean”参数来改变Scran的丰度过滤也会揭示同样的问题,尽管总的来说,我们发现他们的池化方法对默认的丰度过滤略不敏感)。
如果你发现这种情况发生在扳手重构的组成因素中,如果你可以假设这样做是合理的,你可以使用扳手中的dettrend =T选项(正在进行的工作)来删除组内的这种线性趋势。值得一提的是,即使低样本深度样本的成分因子可以显示这种行为,根据我们的经验,我们经常发现成分因子的群体平均仍然是稳健的。
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_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:## [7] IRanges_2.33.0 S4Vectors_0.37.0 ## [9] Wrench_1.17.0 edgeR_3.41.0 ## [11] metagenomeSeq_1.41.0 RColorBrewer_1.1-3 ## bbbglmnet_4 .1-4 Matrix_1.5-1 ## [17] limma_3.55.0 Biobase_2.59.0 ## [17] BiocGenerics_0.45.0 ## ##通过命名空间加载(并且没有附加):## [4] Biostrings_2.67.0 bitops_1.0-7 fastmap_1. 2.3 ## [7] RCurl_1.98-1.9 XML_3.99-0.12 digest_0.6.30 ## [10] lifecycle_1.0.3 survival_3.4-0 KEGGREST_1.39.0 ## [13] RSQLite_2.2.18 magrittr_2.0.3 genefilter_1.81.0 ## [19] tools_4.3.0 rlang_1.0.6 sass_0.4.2 ## [19] tools_4.3.0 utf8_1.2.2 yaml_2.3.6 ## [25] knitr_1.40 bit_4.0.4 DelayedArray_0.25.0 ## [28] fansi_1.0.3 caTools_1.18.2[40] httr_1.4.4 DBI_1.1.3 cachem_1.0.6 ## [43] string_1 .4.1 zlibbioc_1.45.0 splines_4.3.0 ## [49] XVector_0.39.0 vctrs_0.5.0 jsonlite_1.8.3 ## [52] geneplotter_1.77.0 bit64_4.0.5 locfit_1.5-9.6 ## [58] foreach_1.5.2 jquerylib_0.1.4 glue_1.6.2 ## [58] annotate_1.77.0 ## [40] httr_1.4.4 DBI_1.1.3 cachem_1.0.6 ## [43] string_1 .4.1 zlibbioc_1.45.0 splines_4.3.0codetools_0.2-18 stringi_1.7.8 ## [61] shape_1.4.6 gtable_0.3.1 munsell_0.5.0 ## [64] tibble_3.1.8 pillar_1.8.1 htmltools_0.5.3 ## [67] gplots_3.1.3 GenomeInfoDbData_1.2.9 R6_2.5.1 ## [70] evaluate_0.17 lattice_0.20-45 png_0.1-7 ## [73] memoise_2.0.1 bslib_0.4.0 Rcpp_1.0.9 ## [76] xfun_0.34 pkgconfig_2.0.3