MSPrep 1.8.0
MSPrep
提供了一套方便的功能,用于基于代谢组学数据的质谱分析前处理管道。在分析这些数据之前,通常执行以下过程的函数包括:
中包含的每个函数的解释MSPrep
,这些函数的各自选项,以及使用中提供的两个数据集的预分析管道的示例MSPrep
包,MSQuant
而且COPD_131
.
如需进一步信息,请参阅msprep -基于质谱的代谢组学数据处理的总结、归一化和诊断(Hughes et al., 2014)和基于质谱的非靶向代谢组学数据的分析前考虑(Reinhold等人,2019)。
数据可以输入为数据帧或SummarizedExperiment
.
提供的函数时MSPrep
在数据帧上,在整个管道中期望使用以下格式。
大多数情况下,数据帧的两列或多列将标识唯一的化合物。这可能包括列,指定质量-电荷比,保留时间,或每个化合物的名称。使用参数compVars
,这些列的名称应该作为字符串向量提供给每个函数。
数据框中的其余列应指定每个样品中每种化合物的各自丰度。期望每个样本的一个或多个标识变量由列名指定(例如样本ID、批号或复制)。列名中包含的每条信息都必须用一个一致的字符分隔,该字符在列名中其他任何地方都不存在。使用参数sampleVars
,列名中出现的样例变量应该作为字符串向量提供给每个函数,指定变量出现的顺序和参数分隔符
应确定将每个样本变量分开的字符。每个列名还可以在每个列名的开头包含一致的非识别文本。属性将此文本提供给每个函数colExtraText
参数。
作为示例,请参阅提供的数据集msquant
以及它在下面管道中的用途。
提供的函数时MSPrep
在一个SummarizedExperiment
,预计该数据将包括单一分析
的丰度,rowData
识别每种代谢物的特征,以及colData
指定每个样品的特征。前一节中讨论的参数可以忽略。
## [1] "Neutral_Operator_Dif_Pos_1x_O1_A_01"
中的第三个列名msquant
.第一部分“Neutral_Operator_Dif_Pos_”在本分析中不使用,因此我们将它分配给colExtraText
参数。下一个值“1x”是峰值值。下面的值“O1”指定样本的批。其余“A”和“01”分别为复制id和主题id。函数将这些样例变量传递给每个函数sampleVars
参数。最后,请注意msquant
包含两列,mz
而且rt
分别确定了每种化合物的质荷比和保留时间。类将这些列名传递给每个函数compVars
参数。
有了这种格式的数据,就可以启动管道了。
该步骤对每批中的每种化合物使用以下程序进行技术重复总结。
如果指定复制的变量名sampleVars
的数据帧或列数据SummarizedExperiment
属性指定变量的名称复制
参数。
技术复制于MSQuant
CV最大值为0.50,最小重复出现率为1 / 3。注意,在MSQuant
数据集中,缺失的值表示为“1”,该值在missingValue
下面的参数。msSummarize ()
在汇总算法确定值确实缺失的所有实例中,将这些缺失值替换为' 0 '。
summarizedDF < -msSummarize(msquantcvMax =0.50,minPropPresent =1/3.,compVars =c(“mz”,“rt”),sampleVars =c(“高峰”,“批”,“复制”,“subject_id”),colExtraText =“Neutral_Operator_Dif_Pos_”,分隔符=“_”,missingValue =1)
## #一个tibble: 10 × 6 ## mz rt ' 1x_O1_01 ' ' 1x_O2_01 ' ' 1x_O2_02 ' ' ## ## 1 78.0 21.362432 120937。121018.118425.118527.## 2 80.0 9.772964 63334。63415.69530年69631年。## 3 80.1 0.6517916 78601 78668。154636年154737年。## 4 83.1 1.3226668 58473。 58554. 298703. 298804. ## 5 84.1 7.864 0 0 0 0 ## 6 85.1 22.307388 348686 348753. 342413 342420. ## 7 85.1 0.7104762 0 0 0 0 ## 8 85.1 1.3228333 335092. 335172. 1753681 1753782. ## 9 86.0 22.587963 226792. 226872. 240137 240238. ## 10 87.0 1.702 0 0 674771. 674872.
在对技术重复进行总结之后,可以对数据进行过滤,使其仅包含在指定比例的样品中存在的化合物。为了做到这一点,msFilter ()
函数。默认情况下,msFilter ()
使用80%规则过滤数据集中的化合物,只留下80%样本中存在的化合物。
filteredDF < -msFilter(summarizedDFfilterPercent =0.8,compVars =c(“mz”,“rt”),sampleVars =c(“高峰”,“批”,“subject_id”),分隔符=“_”)
## #一个tibble: 10 × 6 ## mz rt ' 1x_O1_01 ' ' 1x_O2_01 ' ' 1x_O2_02 ' ' ## ## 1 78.0 21.362432 120937。121018.118425.118527.## 2 80.0 9.772964 63334。63415.69530年69631年。## 3 80.1 0.6517916 78601 78668。154636年154737年。## 4 86.0 22.587963 226792。 226872. 240137 240238. ## 5 90.0 3.0758798 0 0 148358. 148460. ## 6 99.1 22.379221 6216101 6216182. 6137392 6137493. ## 7 99.9 21.431955 117396 117477. 110735 110836. ## 8 102. 3.076125 92308 92389. 0 0 ## 9 104. 9.770778 78100 78181. 61308 61409. ## 10 107. 22.5569 134960 135039. 83090. 83281.
接下来,根据下游分析,您可能需要归因缺失的数据。提供了三种imputation方法:
half -min将每个缺失值计算为该化合物最小观测值的一半。半分钟imputation比其他方法执行更快,但可能会引入偏差。类提供的BPCA算法pcaMethods
包,通过主轴向量的线性组合估计缺失值,与用户指定的主成分的数量npc
论点。KNN使用K-Nearest Neighbors算法VIM
包中。用户可以使用kKnn
论点。缺省情况下,KNN使用样本作为邻居,但是通过指定compoundsAsNeighbors = TRUE
,化合物将被用作近邻。注意,这比使用样本作为邻居要慢得多,根据数据集的大小,可能需要几分钟或更长的时间才能运行。
imputedDF < -msImpute(filteredDFimputeMethod =“资讯”,compVars =c(“mz”,“rt”),sampleVars =c(“高峰”,“批”,“subject_id”),分隔符=“_”,returnToSE =假,missingValue =0)
## #一个tibble: 10 × 6 ## mz rt ' 1x_O1_01 ' ' 1x_O2_01 ' ' 1x_O2_02 ' ' ## ## 1 78.0 21.362432 120937。121018.118425.118527.## 2 80.0 9.772964 63334。63415.69530年69631年。## 3 80.1 0.6517916 78601 78668。154636年154737年。## 4 86.0 22.587963 226792。 226872. 240137 240238. ## 5 90.0 3.0758798 121246 116549. 148358. 148460. ## 6 99.1 22.379221 6216101 6216182. 6137392 6137493. ## 7 99.9 21.431955 117396 117477. 110735 110836. ## 8 102. 3.076125 92308 92389. 1215434. 908742. ## 9 104. 9.770778 78100 78181. 61308 61409. ## 10 107. 22.5569 134960 135039. 83090. 83281.
为了在样本之间进行比较,数据可能需要转换和归一化。此步骤转换数据并执行以下八种归一化策略之一:
msNormalize ()
还提供了使用以10为底的对数(默认值)、以2为底的对数或自然对数转换数据的选项。要选择任一选项或放弃转换,请使用变换
参数。“log10”
,“log2”
,“ln”
,或“没有”
分别。
分位数归一化,由preprocessCore
包,确保提供的样本具有相同的分位数。中值归一化从样本中的每个化合物中减去每个样本的中值丰度,从而使每个样本的中值丰度对齐为0。
战斗,由股东价值分析
包,是一种经验贝叶斯批效应校正算法,可以去除不需要的批效应,可以单独使用,也可以与分位数或中位数归一化结合使用。使用ComBat时,asampleVar
所谓的“批处理”必须用于数据帧,或用于SummarizedExperiment
的列名中必须出现" batch "colData
.或者,如果对应于batch的样例变量与“batch”不同,则可以使用批处理
参数。
RUV和SVA归一化各自估计一个矩阵的未观察到的重要因素使用不同的方法监督因素分析。对于这两种方法,已知的协变量(例如性别,年龄)应该使用covariatesOfInterest
参数指定的样例变量,且必须对应于sampleVars
对于数据帧或colData
在a的情况下SummarizedExperiment
.对于RUV的规范化kRUV
参数指定数据规范化的因子数。
交叉贡献补偿多标准规范化(CRMN),由crmn
包,基于内部标准进行规范化。标识内部标准的样例变量必须使用covariatesOfInterest
参数。对于有对照化合物的实验,应在控制变量中提供包含对照化合物的行号向量。如果没有提供控制化合物的矢量,则将生成数据驱动的控件。
下面,我们应用以10为基底的对数转换、分位数归一化和ComBat批校正。
normalizedDF < -msNormalize(imputedDFnormalizeMethod =“分位数+战斗”,变换=“log10”,compVars =c(“mz”,“rt”),sampleVars =c(“高峰”,“批”,“subject_id”),covariatesOfInterest =c(“高峰”),分隔符=“_”)
## A tibble: 10 × 6 ## mz rt ' 1x_O1_01 ' ' 1x_O2_01 ' ' 1x_O2_02 ' ## ## 1 78.0 21.362432 5.07 5.08 5.03 5.04 ## 2 80.0 9.772964 4.80 4.80 4.82 4.83 ## 3 80.1 0.6517916 4.97 4.97 5.08 5.09 ## 4 86.0 22.587963 5.39 5.39 5.29 5.31 ## 5 90.0 3.0758798 5.12 5.10 5.11 5.12 ## 6 99.1 22.379221 6.82 5.06 5.01 5.03 ## 8 102。3.076125 5.05 5.05 5.68 5.63 ## 9 104。9.770778 4.90 4.90 4.82 4.83 ## 10 107。22.5569 5.09 5.09 4.95 4.96
通常,需要执行以上所有步骤。方法可以在一条语句中完成这一点msPrepare ()
函数。只需向函数提供与提供给单个函数相同的参数。
preparedDF < -msPrepare(msquantminPropPresent =1/3.,missingValue =1,filterPercent =0.8,imputeMethod =“资讯”,normalizeMethod =“分位数+战斗”,变换=“log10”,covariatesOfInterest =c(“高峰”),compVars =c(“mz”,“rt”),sampleVars =c(“高峰”,“批”,“复制”,“subject_id”),colExtraText =“Neutral_Operator_Dif_Pos_”,分隔符=“_”)
## A tibble: 10 × 6 ## mz rt ' 1x_O1_01 ' ' 1x_O2_01 ' ' 1x_O2_02 ' ## ## 1 78.0 21.362432 5.07 5.08 5.03 5.04 ## 2 80.0 9.772964 4.80 4.80 4.82 4.83 ## 3 80.1 0.6517916 4.97 4.97 5.08 5.09 ## 4 86.0 22.587963 5.39 5.39 5.29 5.31 ## 5 90.0 3.0758798 5.12 5.10 5.11 5.12 ## 6 99.1 22.379221 6.82 5.06 5.01 5.03 ## 8 102。3.076125 5.05 5.05 5.68 5.63 ## 9 104。9.770778 4.90 4.90 4.82 4.83 ## 10 107。22.5569 5.09 5.09 4.95 4.96
的功能MSPrep
将使用所包含的数据进行演示COPD_131
.原始数据集可以找到在代谢组学工作台。注意,原来只有一部分化合物COPD_131
数据集包含在这个包中,以限制文件大小和示例运行时间。一般情况下,一个数据集中化合物的数量会大大超过样本的数量,这个包中包含的函数将需要更多的时间来处理数据。
这个数据集不同于msquant
在几个方面。首先,它有一列化合物。的名字
它指定复合名称,并命名质量电荷比和保留时间列质量
而且保留。时间
分别。其次,该数据集没有插入或批量(但它有技术复制)。最后,数据已经转换,因此管道的这一步将被排除。
接下来,技术复制进来COPD_131
需要总结。这个过程与以前大致相同,只是传递给的列名不同compVars
,所以msSummarize ()
调用如下:
同样,这个过程与之前大致相同,选择0.8的过滤器百分比。因此,我们调用msFilter ()
如下:
在这个例子中,msImpute ()
将使用贝叶斯PCA调用,使用三个主成分来为数据计算缺失值。
在这个例子中,msNormalize ()
将在不应用转换的情况下使用中值归一化调用。
与前面的示例一样,可以在管道中使用msPrepare ()
函数。要跳过管道的转换步骤,请设置变换
参数设置为“none”(注意,对于imputationMethod
而且normalizationMethod
).
preparedSE < -msPrepare(COPD_131,cvMax =0.5,minPropPresent =1/3.,compVars =c(“质量”,“保留。时间”,“复合。名称”),sampleVars =c(“subject_id”,“复制”),colExtraText =“X”,分隔符=“_”,filterPercent =0.8,imputeMethod =“bpca”,normalizeMethod =“中值”,变换=“没有”,npc =3.,missingValue =0,returnToSE =真正的)
##总结##过滤##输入##规范化
## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-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基础## ##其他附加包:## [1]MSPrep_1.8.0 BiocStyle_2.26.0 ## ##通过命名空间加载(且未附加):# # # # [1] colorspace_2.0-3 ellipsis_0.3.2 [3] class_7.3-20 XVector_0.38.0 # # [5] GenomicRanges_1.50.0 proxy_0.4-27 # # [7] bit64_4.0.5 AnnotationDbi_1.60.0 # # [9] fansi_1.0.3 ranger_0.14.1 # # [11] codetools_0.2-18 splines_4.2.1 # # [13] cachem_1.0.6 robustbase_0.95-0 # # [15] knitr_1.40 itertools_0.1-3 # # [17] jsonlite_1.8.3 annotate_1.76.0 # # [19] png_0.1-7 missForest_1.5 # # [21] BiocManager_1.30.19 compiler_4.2.1 # # [23] httr_1.4.4 assertthat_0.2.1 # # [25] Matrix_1.5-1 fastmap_1.1.0 # # [27][37] carData_3.0-5 Biobase_2.58.0 ## [39] jquerylib_0.1.4 vctrs_0.5.0 ## [41] Biostrings_2.66.0 preprocessCore_1.60.0 ## [43] nlme_1 . 3.1-160 iterators_1.0.14 ## [45] lmtest_0.9-40 xfun_0.34 ## [47] laeken_0.5.2 string_1 .4.1 ## [49] lifecycle_1.0.3 rngtools_1.5.2 ## [53] deoptimr_1 .0.10 ## [49] tools_0.0.1zlibbioc_1.44.0 # # [55] mass_7.3 - 58.1 zoo_1.8-11 # # [57] VIM_6.2.2 pcaMethods_1.90.0 # # [59] MatrixGenerics_1.10.0 parallel_4.2.1 # # [61] SummarizedExperiment_1.28.0 yaml_2.3.6 # # [63] memoise_2.0.1 sass_0.4.2 # # [65] stringi_1.7.8 RSQLite_2.2.18 # # [67] genefilter_1.80.0 S4Vectors_0.36.0 # # [69] foreach_1.5.2 randomforest_4.7 - 1.1 # # [71] e1071_1.7-12 BiocGenerics_0.44.0 # # [73] boot_1.3-28 BiocParallel_1.32.0 # # [75] GenomeInfoDb_1.34.0 rlang_1.0.6 # # [77] pkgconfig_2.0.3 matrixStats_0.62.0 # #[79] bitops_1.0-7 evaluate_0.17 ## [81] lattice_0.20-45 purrr_0.3.5 ## [83] bit_4.0.4 tidyselect_1.2.0 ## [87] R6_2.5.1 IRanges_2.32.0 ## [89] generics_0.1.3 DelayedArray_0.24.0 ## [91] DBI_1.1.3 withr_2.5.0 ## [93] pillar_1.8.1 mgcv_1. 1.8-41 ##[95]幸存者3.4-0 KEGGREST_1.38.0 ## [97] abind_1.4-5 RCurl_1.98-1.9 ## [101] tibble_3.1.8 crayon_1.5.2 ## [103] car_3.1-1 utf8_1.2.2 ## [105] rmarkdown_2.17 locfit_1. 9.6 ## [107]Grid_4.2.1 sva_3.46.0 ## [109] data.table_1.14.4 blob_1.2.3 ## [111] vcd_1.4-10 digest_0.6.30 ## [113] xtable_1.8-4 tidyr_1.2.1 ## [115] stats4_4.2.1 bslib_0.4.0