1简介

多样本归一化技术,如分位数归一化Bolstad等人(2003)Irizarry等人(2003)已成为高通量数据分析管道的标准和基本部分。虽然它最初是为基因表达微阵列开发的,但现在它被用于许多不同的高通量应用,包括基因分型阵列、DNA甲基化、RNA测序(RNA- seq)和染色质免疫沉淀测序(ChIP-Seq)。这些技术对原始数据进行转换,以消除不必要的技术变化。然而,分位数归一化和其他全局归一化方法依赖于对数据生成过程的假设,这些假设在某些上下文中并不合适。到目前为止,这些假设的适当性都是留给研究人员去检查的。

分位数归一化假设每个样本的统计分布是相同的。归一化是通过强迫观察到的分布相同来实现的,通过取样本中每个分位数的平均值得到的平均分布作为参考。这种方法在实践中效果非常好,但请注意,当假设不满足时,可能具有生物学意义的全球分布变化将被消除,而样本之间没有差异的特征可以被人为诱导。这些类型的假设在许多生物医学应用中都是合理的,例如在基因表达研究中,只有少数基因被预期会有差异表达。然而,例如,如果期望在一组样本中表达的基因比例高得多,那么使用全局调整方法可能就不合适了。

quantror包可用于检验组间分布的全局差异,从而评估是否应采用分位数归一化等全局归一化方法。我们的方法使用未经处理的原始高通量数据来测试在一组组之间分布的全局差异。主要功能quantro ()将执行两个测试:

  1. 方差分析以检验各组间分布的中位数是否不同。组间的差异可以归因于不必要的技术变异(如批处理效应)或真正的全球生物变异。这对于用户验证是否有任何未考虑的技术变化是很有帮助的步骤。

  2. 对组间分布的全局差异的测试,它返回一个名为quantroStat.这个检验统计量是两个方差的比值,类似于方差分析的思想。主要思想是比较组内分布的可变性与组间分布的可变性。如果组间的可变性远远大于组内的可变性,那么这表明全局调整方法可能不合适。默认情况下,我们对中值规范化数据执行此测试,但用户可以更改此选项。

2开始

2.1安装

的R-packagequantro可以从Bioconductor安装

如果(!install.packages("BiocManager") BiocManager::install("quantro")

2.2在R中加载包

安装完成后,即可将包装入R。

库(quantro)

3.数据

3.1flowSorted数据的例子

探索如何使用quantro (),我们使用FlowSorted.DLPFC.450kBioconductor的数据包贾菲和卡明斯基(2021年).这个包中的数据最初来自Guintivano, Aryee和Kaminsky (2013).这个数据集FlowSorted.DLPFC.450k包含58个Illumina 450K DNA甲基化微阵列的原始数据对象,格式为RGset对象。这些样本代表了同一29个人的两种不同的脑组织细胞群。有关此数据集的更多信息,请参阅FlowSorted.DLPFC.450k用户指南。对象中的MethylSet对象minfiBioconductor包阿尔耶等人(2014)是由原始的行组成的子集FlowSorted.DLPFC.450k数据集。这MethylSet对象可以在/data文件夹中找到,创建对象的脚本可以在/inst中找到。

在这里,我们将探讨这两种脑组织细胞群的分布(NeuN_posNeuN_neg),然后测试在组间的分布是否存在全局差异。首先,加载MethylSet对象(flowSorted),并使用函数计算Beta值getBeta ()minfiBioconductor包。我们使用100的偏移量,因为这是Illumina使用的默认值。

library(minfi) data(flowSorted) p <- getBeta(flowSorted, offset = 100) pd <- pData(flowSorted) dim(p)
## [1] 10000 58
头(pd)
6行11列的DataFrame条形码样品。Section ## <字符> <字符> <字符> <数字> <字符> ## 813_N 813_N 813 NeuN_pos 7766130090 R02C02 ## 1740_N 1740_N 1740_N 1740_N 1740 NeuN_pos 7766130090 R04C01 ## 1228_G 1228_G 1228 NeuN_neg 7766130090 R06C01 ## 1228_N 1228_N 1228 NeuN_pos 7766130090 R06C02 ## diag性别种族年龄PMI ## <字符> <字符> <字符> <整数> <整数> ## 813_N控制女性白种人30 14 ## 1740_N控制非洲女性13 17 ## 1740_G控制非洲女性13 17 ## 1228_G控制男性白人47 13 ## 813_G控制女性白人30 14 ## 1228_N控制男性白人47 13 ## BasePath ## <字符> ## 813_N /dcs01/lieber/ajaffe..# # 1740 _n”/ dcs01 /利/ ajaffe . .# # 1740 _g / dcs01 /利/ ajaffe . .# # 1228 _g / dcs01 /利/ ajaffe . .# # 813 _g / dcs01 /利/ ajaffe . .# # 1228 _n”/ dcs01 /利/ ajaffe . .

3.2图分布

quantro包含两个函数来查看感兴趣的样本的分布:matdensity ()matboxplot ().这个函数matdensity ()计算每个样本(列)的密度,并使用matplot ()函数来绘制所有密度。matboxplot ()通过组级别变量对样本进行排序和着色。这两个函数使用RColorBrewer可以使用参数更改包装和啤酒调色板brewer.nbrewer.name

两组细胞群的分布如图所示。的NeuN_neg样品用绿色和NeuN_pos都是红色的。

matdensity(p, groupFactor = pd$CellType, xlab = " ", ylab = "密度",main = "Beta值",brewer。n = 8, brewery .name = "Dark2") legend('top', c("NeuN_neg", "NeuN_pos"), col = c(1,2), lty = 1, lwd = 3)

matboxplot(p, groupFactor = pd$CellType, xaxt = "n", main = "Beta值")

4使用quantro ()函数

4.1输入quantro ()

quantro ()函数必须有两个对象作为输入:

  1. 一个对象它是一个数据框架或矩阵,在行上有观察(如探针或基因),列为样本。

  2. 一个groupFactor它表示关于每个样本的组级信息。例如,如果样本代表肿瘤和正常样本,请提供quantro ()中的哪些列对象正常和肿瘤样本。

4.2运行quantro ()

在本例中,我们感兴趣的组包含在CellTypepd数据集。运行quantro ()函数,输入数据对象和包含表型数据的对象。这里我们使用flowSorted以数据集为例。

qtest <- quantro(object = p, groupFactor = pd$CellType) qtest
## quantro:测试分布中的全局差异## nGroups: 2 ## nTotSamples: 58 ## nSamplesinGroups: 29 29 ## anovaPval: 0.01206 ## quantroStat: 8.80735 ## quantroPvalPerm:使用B > 0进行排列测试。

与实验相关的细节可以使用总结访问器功能:

总结(qt)
## nGroups ## [1] 2 ## ## $nTotSamples ## [1] 58 ## ## $nSamplesinGroups ## NeuN_neg NeuN_pos ## 29 29

为了评估组间分布的中位数是否不同,我们对样本的中位数进行方差分析。这些结果可以通过使用方差分析

方差分析(qt)
##方差分析表## ## Response: objectMedians ## Df Sum Sq Mean Sq F value Pr(>F) ## groupFactor 1 0.006919 0.0069194 6.7327 0.01206 * ##残差56 0.057553 0.0010277 ##——##符号。代码:0 '***' 0.001 '**' 0.01 '*' 0.05 '。' 0.1 ' ' 1

可以看到完整的输出quantro ()给出了对分布之间的全局差异的测试quantroStat

quantroStat (qt)
# # 8.807348 [1]

4.3eset

quantro ()也可以接受继承的对象eset比如一个ExpressionSetMethylSet.的groupFactor仍然必须提供。

(flowSorted,“MethylSet”)
# # [1]
qtest <- quantro(flowSorted, groupFactor = pData(flowSorted)$CellType) qtest
## quantro:测试分布中的全局差异## nGroups: 2 ## nTotSamples: 58 ## nSamplesinGroups: 29 29 ## anovaPval: 0.01206 ## quantroStat: 8.80735 ## quantroPvalPerm:使用B > 0进行排列测试。

4.4输出quantro ()

的S4对象中的元素quantro ()包括:

元素 描述
总结 包含(1)组数量(nGroups),(2)样本总数(nTotSamples(3)每组样本数量(nSamplesinGroups
方差分析 方差分析,以检验是否平均中位数的分布是不同的组
MSbetween 组间均方误差
MSwithin 组内均方误差
quantroStat 检验统计量,即组间分布的均方误差与组内分布的均方误差之比
quantroStatPerm 如果B不等于0,则进行排列检验,以评估quantroStat.这些是由排列样本得到的测试统计数据
quantroPvalPerm 如果B不等于0,那么这是\ (p \)-与测试统计信息的次数比例相关的值(quantroStatPerm)得到的结果大于quantroStat

5评估统计显著性

为了评估检验统计量的统计学意义,我们使用排列检验。我们使用foreach包,它将计算分布在单个机器中的多个交叉或集群中的多个机器之间。用户必须选择在哪里执行多少排列B是排列的个数。在每个排列的样本,计算一个检验统计量。测试统计信息占比(quantroStatPerm),它们比quantroStat据报道quantroPvalPerm.使用foreach包,我们首先注册一个后端,在本例中是一个具有1核的机器。

qtestPerm <- quatero (p, groupFactor = pd$CellType, B = 1000)
## quantro:测试分布的全局差异## nGroups: 2 ## nTotSamples: 58 ## nSamplesinGroups: 29 29 # anovaPval: 0.01206 ## quantroStat: 8.80735 ## quantroPvalPerm: 0.002

6排列检验的统计显著性可视化

如果使用排列检验(即指定B\ (> \)0),则包中有第二个函数称为quantroPlot ()这将绘制排列样本的测试统计量。该图是空测试统计数据的直方图quantroStatPermquantro ()红线是观察到的测试统计量quantroStatquantro ()

quantroPlot (qtestPerm)

的其他选项quantroPlot ()功能包括:

元素 描述
xLab x轴标签
yLab y轴标签
mainLab 直方图的标题
binWidth 改变binwidth

7SessionInfo

sessionInfo ()
## R版本4.2.0 RC (22-04-21 r82226) ##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.4 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bio /R/lib/libRblas. ##因此## LAPACK: /home/biocbuild/bbs-3.16-bio /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_TELEPHONE= c# [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]parallel stats4 stats graphics grDevices utils datasets ## [8] methods base ## ##其他附加的包:# # # # [1] doParallel_1.0.17 minfi_1.43.0 [3] bumphunter_1.39.0 locfit_1.5 - 9.5 # # [5] iterators_1.0.14 foreach_1.5.2 # # [7] Biostrings_2.65.0 XVector_0.37.0 # # [9] SummarizedExperiment_1.27.1 Biobase_2.57.0 # # [11] MatrixGenerics_1.9.0 matrixStats_0.62.0 # # [13] GenomicRanges_1.49.0 GenomeInfoDb_1.33.1 # # [15] IRanges_2.31.0 S4Vectors_0.35.0 # # [17] BiocGenerics_0.43.0 quantro_1.31.0 # # [19] knitr_1.39 BiocStyle_2.25.0 # # # #通过加载一个名称空间(而不是附加):# [1] BiocFileCache_2.5.0 plyr_1.8.7 ## [3] splines_4.2.0 BiocParallel_1.31.0 ## [5] ggplot_1 .3.5 digest_0.6.29 ## [5] htmltools_0.5.2 magick_2.7.3 ## [9] fansi_1.0.3 magrittr_2.0.3 ## [11] memoise_2.0.1 tzdb_0.3.0 ## [13] limma_3.53.0 readr_2.1.2 ## [15] annotate_1.75.0 askpass_1.1 ## [17] siggenes_1.71.0 prettyunits_1.1.1 ## [15] colorspace_2.0-3 blob_1.2.3 ## [25] rappdirs_0.3.3 xfun_0.30 ## [23] dplyr_1.0.9 crayon_1.5.1 ## [25] RCurl_1.98-1.6 jsonlite_1.8.0 ## [27] genefilter_1.79.0# [39] Rcpp_1.0.8.3 xtable_1.8-4 ## [41] progress_1.2.2 bit_4.0.4 ## [43] mclust_5.4.9 preprocessCore_1.59.0 ## [45] httr_1.4.2 RColorBrewer_1.1-3 ## [47] ellipsis_0.3.2 farver_2.1.0 ## [51] XML_3.99-0.9 sass_0.4.1 ## [53] dbplyr_2.1.1 utf8_1.2.2 ## [35] hdayedarray_0.23.0 Rhdf5lib_1.19.0 ## [37] hdf5array_1 .23.0 rngtools_1.5.2 ## [37] HDF5Array_1.25.0 rngtools_1.5.2 ## [37] HDF5Array_1.25.0 rngtools_1.5.2 ## [39] Rcpp_1.0.8.3 xtable_1.8-4 ## [41] progress_1.2.2 bit_4.0.4 ## [43] mclust_5.4.9 preprocessCore_1.59.0 ## [45] httr_1.4.2 RColorBrewer_1.1-3 ## [47]## [57] rlang_1. 4.2 tidyselect_1.1.2 ## [59] munsell_0.5.0 tools_4.2.0 ## [61] cachem_1.0.6 cli_3.3.0 ## [63] generics_0.1.2 RSQLite_2.2.13 ## [65] evaluate_0.15 string_1 .4.0 ## [67] fastmap_1.1.0 yaml_2.3.5 ## [69] bit64_1 .0.5 beanplot_1.3.1 ## [71] scrime_1.3.5 purrr_1 .3.4 ## [73] KEGGREST_1.37.0 nlme_1 . 157 ## [75] doRNG_1.8.2 sparseMatrixStats_1.9.0 ## [77] nor1mix_1.3-0 xml2_1.3.3 ## [79] biomaRt_2.53.0 compiler_4.2.0 ## [81] filelock_1.0.2 curl_4.3.2## [83] png_0.1-7 tibble_1 .1.6 ## [85] bslib_0.3.1 stringi_1.7.6 ## [87] highr_0.9基因组features_1 .49.1 ## [89] lattice_0.20-45 Matrix_1.4-1 ## [93] pillar_1.7.0 lifecycle_1.0.1 ## [95] rhdf5filters_1.9.0 BiocManager_1.30.17 ## [97] jquerylib_0.1.4 data.table_1.14.2 ## [99] bitops_1.0-7 rtracklayer_1.57.0 ## [101] R6_2.5.1 BiocIO_1.7.0 ## [103] bookdown_0.26 codetools_0.2-18 ## [105] MASS_7.3-57 assertthat_0.2.1 ## [107] rhdf5_2.41.0 openssl_2.0.0 ## [109] rjson_0.2.21 GenomicAlignments_1.33.0 ## [111] Rsamtools_2.13.0 GenomeInfoDbData_1.2.8 ## [113] hms_1.1.1 quadprog_1.5-8 ## [115] grid_4.2.0 tidyr_1.2.0 ## [117] base64_2.0 rmarkdown_2.14 ## [119] DelayedMatrixStats_1.19.0 illuminaio_0.39.0 ## [121] restfulr_0.0.13

Aryee, Martin J, Andrew E Jaffe, Hector Corrada-Bravo, Christine ladda - acosta, Andrew P Feinberg, Kasper D Hansen,和Rafael A Irizarry. 2014。Minfi:用于分析无限Dna甲基化微阵列的灵活而全面的生物导体包。生物信息学30(10): 1363 - 9。https://doi.org/10.1093/bioinformatics/btu049

布尔斯塔德,R A伊瑞扎里,M阿斯特兰德和T P速度。2003。基于方差和偏差的高密度寡核苷酸阵列数据归一化方法比较。生物信息学19(2): 185 - 93。

吉尼蒂瓦诺,杰瑞,马丁J阿尔耶,扎卡里A卡明斯基。2013。“纠正脑细胞异质性偏差的细胞表观基因型特异性模型及其在年龄、脑区和抑郁症中的应用。”表观遗传学8(3): 290 - 302。https://doi.org/10.4161/epi.23924

Irizarry, Rafael A, Bridget Hobbs, Francois Collin, Yasmin D Beazer-Barclay, Kristen J Antonellis, Uwe Scherf和Terence P Speed. 2003。高密度寡核苷酸阵列探针水平数据的探索、归一化和总结。生物统计学4(2): 249 - 64。https://doi.org/10.1093/biostatistics/4.2.249

贾菲,A J和Z A Kaminsky. 2021。FlowSorted.DLPFC.450k:Illumina Humanmethylation Data on Sorted Frontal Cortex Cell Populations.R包版本1.29.0。