基于质谱技术的非靶向代谢组学数据处理基础之xcms2

基于质谱技术的非靶向代谢组学数据处理基础xcms2

Posted by omicsPie on 2018-06-15

之前我们介绍了代谢组学中基于xcms的峰检测技术(参见相关文章),在代谢组学数据,每一组代谢物峰(一般称之为feature)表征在该组数据中某一个代谢物(或其不通加合物或同位素),在数据分析过程中,我们需要获取每一组峰在每一个样品中的含量高低,一般我们采用峰检测结果中的峰面积来表征该代谢物在样品中的相对含量。为了方便跟代谢组学中用来注释同位素峰和加合物峰CAMERA包进行结合,我们在此仅以xcmsSet对象为处理对象来说明代谢物信息的获取和进一步处理(CAMERA包仅以xcmsSet数据作为输入数据)

知识回顾:峰检测

上文已经介绍了利用xcms进行峰检测,为方便进一步处理,在此将利用R中示例数据进行峰检测的代码罗列如下

1
2
3
4
5
6
7
8
9
10
11
12
13
## loading required packages
library(xcms)
library(faahKO)
## Get the full path to the CDF files
cdfs <- dir(system.file("cdf", package = "faahKO"), full.names = TRUE,
recursive = TRUE)
## Peak detection & alignment
xset <- xcmsSet(cdfs, ppm = 20, snthresh = 10, method = 'centWave', peakwidth = c(30, 80), noise= 1000)
xset2 <- group(xset, minfrac = 0.5)
xset2<- retcor(xset2, method = 'obiwarp', plottype = 'deviation')
xset2<- group(xset2, bw = 20, minfrac =0.5)
## Filling gaps
xset3<-fillPeaks(xset2)

至此, 峰检测已经完成,xset3为记录了峰检测最终结果的xcmsSet类对象,此为S4对象,所以其中的具体内容(slots)需要以‘@’操作符来调取,具体每个slot的含义以及该类可使用的方法请参见xcms官方文档中的xcmsSet-class内容(参见https://bioconductor.org/packages/release/bioc/manuals/xcms/man/xcms.pdf,Bioconductor v3.7 相关内容在193-195页)

信息提取

接下来我们介绍如何将xcmsSet对象中的重要信息转换为可见的数据表格

获取峰检测得到的featuren信息

1
2
3
4
5
6
7
8
9
10
feature.info <- xcms::groups(xset3)
head(feature.info)
# result:
# mzmed mzmin mzmax rtmed rtmin rtmax npeaks KO WT
# [1,] 205.0 205.0 205.0 2789.360 2784.214 2795.550 12 6 6
# [2,] 206.0 206.0 206.0 2788.930 2782.761 2793.925 11 4 6
# [3,] 207.1 207.1 207.1 2719.001 2718.682 2723.886 8 4 4
# [4,] 236.1 236.1 236.1 2524.852 2521.138 2529.229 5 2 3
# [5,] 241.1 241.1 241.2 3654.038 3634.363 3690.673 9 4 2
# [6,] 244.1 244.1 244.2 2831.686 2828.244 2841.118 8 4 4

说明:

  • mzmed, mzmin, mzmax – 该feature所包含的峰的质荷比的中位值,最小值和最大值

  • rtmed, rtmin, rtmax – 该feature所包含的峰峰顶点所对应的保留时间(rt)的中位值,最小值和最大值

  • npeaks – 该feature所包含的样品中检测到的峰的数量

  • KO, WT – 该feature在每组样品中有检出峰的样品数量 注:xcms可以根据数据组织自动生成数据分组信息,在示例文件中,所有数据被分成了KO和WT两组。

获取定量信息

1
feature.quant <- groupval(xset3, method = "medret", value = 'into'))

说明: groupval方法可以获取可以用来定量的信息,返回结果每一行对应一个feature,每一列对应一个样品

  • method – 一般使用medret方法,该方法该feature在每个样品所包含的峰中rt最接近rtmed的峰的结果作为返回结果

  • value – 选择哪种定量信息用来输出,对于基于centWave算法进行峰检测的结果来说,可以选用’into’, 'intb, 'maxo’三个内容(分别代表原始峰面积,基线校正之后的峰面积和峰高)(参见文档124-125页,Bioconductor v3.7)

合并信息

对于上面获取的两个信息事实上是行与行之间一一对应的,所以可以借助cbind方法进行合并

1
feature.table <- cbind(feature.info, feature.quant)

如此,我们已经得到了代谢物峰检测结果的转化,得到了可以用来进行进一步分析的表格,此表格可以利用write.csv等方法保存为csv文件。如果想好获取分组信息,可以利用sampclass方法或者调用xcmsSet中的phenoData slot:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
smpclass <- sampclass(xset3)
# result:
# [1] KO KO KO KO KO KO WT WT WT WT WT WT
# Levels: KO WT
xset3@phenoData
# class
# ko15 KO
# ko16 KO
# ko18 KO
# ko19 KO
# ko21 KO
# ko22 KO
# wt15 WT
# wt16 WT
# wt18 WT
# wt19 WT
# wt21 WT
# wt22 WT

预告

接下来我们会介绍如何利用CAMERA对峰检测结果进行注释,从而标注同位素峰和加合物峰以作简单参考。 对于之后的内容,欢迎大家根据自己在代谢组学基础数据处理中遇到的问题提出相应的建议,我们会根据大家的需要,总结整理最实用的方法以供大家参考。