R语言实现质谱数据的离子峰获取

2020-11-03 11:00:32 浏览数 (1)

做代谢研究的朋友们应该都很熟悉一个R包xcms,此包功能很强大,可以直接获得对应的离子峰数据。并且也提供了一个离子在metLin数据库的匹配功能。我们今天就介绍其依赖的一个确定离子峰的R包CAMERA。此包主要用来识别样本的离子峰,从而获得一个样本中所具有的离子峰总数,以及对应的每个离子峰的核质比和保留时间。首先我们看下包的安装:
代码语言:javascript复制

BiocManager::install("CAMERA")###R3.6以后版本
BiocManager::install("multtest")
BiocManager::install("faahKO")

接下来我们直接通过实例看下包中的各个功能:

1. annotate 用于同位素峰、加合物和片段的自动注释。

代码语言:javascript复制
library(CAMERA)
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))#参数列表,此处的参数参见annotate中的参数
xsa <- annotate(xs)
代码语言:javascript复制
#可视化结果
plotPsSpectrum(xsa,maxlabel=12, pspec=1:5)#maxlabel展示离子的标签数量,pspec展示峰的数量。

2. annotateDiffreport 多样本注释离子峰。此部分利用了xcms中的获取峰面积的函数。最后获得和xcms一样的一个差异分析报告,但是多了对离子的分组。

代码语言:javascript复制
library(CAMERA)
library(faahKO)
xs.grp <- group(faahko)
xs.fill <- fillPeaks(xs.grp)
diffreport <-annotateDiffreport(xs.fill)
write.csv(diffreport, file="diffreport.csv")

3. findAdducts 在上面获得离子峰后,由于不同的电离模式样本所带的标准离子H, Na, K, NH4和CL都可能的结合。根据四个预先计算的规则表: primary_adducts_pos, primary_adducts_neg, extended_adducts_pos,extended_adducts_neg。

代码语言:javascript复制
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))
an <- xsAnnotate(xs)
an <- groupFWHM(an)
an <- findIsotopes(an) # optional butrecommended. 获取同位素标记
an <- findAdducts(an,polarity="positive")
peaklist <- getPeaklist(an)
write.csv(peaklist, file='xsannotated.csv')
代码语言:javascript复制
#增加自己设计好的规则
file <-system.file('rules/primary_adducts_pos.csv', package = "CAMERA")
rules <- read.csv(file)
代码语言:javascript复制
an <- findAdducts(an,polarity="positive", rules=rules)
peaklist <- getPeaklist(an)
write.csv(peaklist, file='xsannotated_rules.csv')

其中的主要的参数:

4. findNeutralLoss 扫描丢失的中性离子。例如水的丢失。在经过groupCorr or groupFWHM处理后才可以此过程。

代码语言:javascript复制
library(CAMERA)
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))
an <- xsAnnotate(xs)
an <- groupFWHM(an)
xs.pseudo <-findNeutralLoss(an,mzdiff=18.01,mzabs=0.01)
xs.pseudo@peaks###输出得到的丢失中性离子峰数据。

5. getIsotopeCluster获取同位素为基础的聚类结果

代码语言:javascript复制
library(CAMERA)
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))
an <- xsAnnotate(xs)
an <- groupFWHM(an)
an <- findIsotopes(an)##必须步骤
isolist <- getIsotopeCluster(an)
isolist[[10]] #get IsotopeCluster 10

6. getpspectra 获取以同位素分类的各类离子峰数据

代码语言:javascript复制
library(CAMERA)
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))
xsa <- xsAnnotate(xs)
xsa <- groupFWHM(xsa)
psp.peaks <- getpspectra(xsa, 1)##获取几类同位素的离子峰数据
psp.peaks

7. groupFWHM 获取样本的伪谱信息,将数据基于保留时间进行分组。然后基于groupCorr对各离子之间行进基于离子峰面积的离子归类。至此获得校正后的各离子数据。

代码语言:javascript复制
library(CAMERA)
file <-system.file('mzdata/MM14.mzdata', package = "CAMERA")
xs <- xcmsSet(file,method="centWave", ppm=30, peakwidth=c(5,10))
xsa <- xsAnnotate(xs)
xsa <- groupFWHM(xsa)
xsa <- groupCorr(xsa)
plotEICs(xsa,1)

最后就是构建规则表,这一部分需要实现对自己的仪器以及数据相当的熟悉才会有的操作。

na

0 人点赞