LC-MASS,GC-MASS等简称对于药物研发的人应该相当不陌生,但是对于它们产生的数据的进一步分析,反而显得心有余而力不足。今天我们给大家介绍一下R语言中是如何把质谱数据进行提取的。
首先我们需要知道那些参与分析的包: IPO,XCMS,Rmpi。其中IPO主要是通过质控数据优化XCMS中的计算参数;XCMS主要进行质谱数据的获取、校正;Rmpi主要是并行运算的接口,支持多进程运算。为了进行实例演示还需要另外两个数据的包:msdata,faahKO。
首先我们说明今天的所有操作都是基于3.5.1版本的R,因为在3.5以后的版本bioconductor的安装包形式有所改变,它自己开发了R包管理的程序,并未R语言提供API。
接下来我们看下这几个包都在哪里:
Bioconductor:
http://www.bioconductor.org/packages/release/data/experiment/html/faahKO.html
http://www.bioconductor.org/packages/release/data/experiment/html/msdata.html
http://www.bioconductor.org/packages/release/bioc/html/IPO.html
http://www.bioconductor.org/packages/release/bioc/html/xcms.html
CRAN:
https://cran.r-project.org/web/packages/Rmpi/index.html
那么显而易见它们的安装过程有点区别,具体的安装过程我们就不再赘述了。
接下来,我们主要看下IPO参数优化:
library(IPO)
library(msdata)
library(faahKO)
#数据输入
datapath <- system.file("cdf",package = "faahKO")
datafiles <- list.files(datapath,recursive = TRUE, full.names = TRUE)
色谱峰寻找的参数优化:
peakpickingParameters<-getDefaultXcmsSetStartingParams('matchedFilter')
peakpickingParameters$step <- c(0.2,0.3)#设置参数范围
peakpickingParameters$fwhm <- c(40, 50) #设置参数范围
peakpickingParameters$steps <- 2#设置参数值
time.xcmsSet <- system.time({
resultPeakpicking <-optimizeXcmsSet(files = datafiles[1:2],
params =peakpickingParameters,
nSlaves = 1,
subdir = NULL,
plot = TRUE)
})
resultPeakpicking$best_settings$result
#> ExpId #peaks #NonRP #RP PPS
#> 0.000 3228.000 2264.000 569.000143.004
optimizedXcmsSetObject <-resultPeakpicking$best_settings$xset
色谱峰分组参数以及保留时间校正参数优化:
retcorGroupParameters <-getDefaultRetGroupStartingParams()
retcorGroupParameters$profStep <- 1
retcorGroupParameters$gapExtend <- 2.7
time.RetGroup <- system.time({ #measuring time
resultRetcorGroup <-
optimizeRetGroup(xset = optimizedXcmsSetObject,
params =retcorGroupParameters,
nSlaves = 1,
subdir = NULL,
plot = TRUE)
})
将优化后的代码写出:
writeRScript(resultPeakpicking$best_settings$parameters,
resultRetcorGroup$best_settings)
生成的代码如下:
library(xcms)
library(Rmpi)
xset <- xcmsSet(
method ="matchedFilter",
fwhm = 50,
snthresh = 3,
step = 0.26,
steps = 2,
sigma = 21.2332257516562,
max = 5,
mzdiff = 0.28,
index = FALSE)
xset <- retcor(
xset,
method ="obiwarp",
plottype = "none",
distFunc ="cor_opt",
profStep = 1,
center = 2,
response = 1,
gapInit = 0.64,
gapExtend = 2.7,
factorDiag = 2,
factorGap = 1,
localAlignment = 0)
xset <- group(
xset,
method = "density",
bw = 12.4,
mzwid = 0.047,
minfrac = 0.94,
minsamp = 1,
max = 50)
xset <- fillPeaks(xset)
以上便是XCMS的运算参数了。我们还需要自己加上另一个分析函数:
diffreport(xset,class1 =levels(sampclass(xset))[1], class2 = levels(sampclass(xset))[2],filebase="pos", metlin=0.15)
接下来就是运行以上程序进行质谱数据的分析了。最后得到我们想要的峰面积的数据:
同时对数据进行两组之间的差异分析(box)和离子图谱的提取(eic):
至此质谱数据进行了量化处理,接下来就是对数据进行进一步的分析。