R package:xcms(二):MSnbase将质谱数据由profile模式转化为centroid模式

在profile 模式下产生的质谱数据,特定离子的信号通常分布在离子真实m/z值周围。这种信号的准确性依赖于仪器的分辨率和设置。profile模式数据可以处理成centroid数据,只保留一个单一的、有代表性的值,通常是数据点分布的局部最大值。某些算法,如LC-MS实验xcms包中用于色谱峰检测的centWave函数或蛋白质组学匹配MS2光谱和多肽的搜索引擎,要求数据为centroid模式。

可以使用MSconvert在将数据转化为centroid模式

MSConvert.jpg

不同版本的MSconvert转换结果会略有差异。
但是MSconvert软件转换往往存在耗时特别长,转换不成功等问题。此外,也可以通过MSnbase包的pickPeaks函数实现转换,该方法对单个光谱(Spectrum实例)或整个实验(MSnExp实例)进行峰挑选,以创建中心光谱。
质谱的centroid 模式会使得检出来的二级质谱更多。

library(xcms)
library(magrittr)

1 载入数据

data_raw <- readMSData("pos_20211-fa-51.mzML",  mode = "onDisk")

判断数据是否已是centroid模式

dda_data@featureData@data$centroided
dda_data@featureData@data$smoothed
#[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#[8] FALSE FALSE FALSE FALSE FALSE FALSE FALSE

2 转化为centroid模式

主要通过pickPeaks函数完成。
参数refineMz有"kNeighbors","descendPeak","none"(默认)3个选项。
kNeighbors通过加权平均计算最接近真实m/z;
descendPeak峰值区域通过从两侧确定的质心/峰值下降,直到测量信号再次增加来定义。在该定义区域内,强度至少为质心强度百分比的所有测量值用于计算精确的m/z。

2.1 分别使用3种方式

data_cent <- data_raw %>%
  pickPeaks(refineMz = "descendPeak") 
data_sc<- data_raw %>% 
  smooth(method = "SavitzkyGolay", halfWindowSize = 4L) %>% 
  pickPeaks(refineMz = "descendPeak") 
data_cs<- data_raw %>% 
  pickPeaks(refineMz = "descendPeak")  %>% 
  smooth(method = "SavitzkyGolay", halfWindowSize = 4L)

3 提取XIC图

设定保留时间和质荷比的范围

##尿素
#rtr <- c(250, 290)
rtr <- c(570, 590)
#mzr <- c(60.5, 61.5)
mzr <- c(118.0, 118.2)

可视化

data_raw |>
  filterRt(rt = rtr) |>
  filterMz(mz = mzr) |>
  plot(type = "XIC")

data_cent %>%
  filterRt(rt = rtr) %>%
  filterMz(mz = mzr) %>%
  plot(type = "XIC")

data_sc %>%
  filterRt(rt = rtr) %>%
  filterMz(mz = mzr) %>%
  plot(type = "XIC")

data_cs %>%
  filterRt(rt = rtr) %>%
  filterMz(mz = mzr) %>%
  plot(type = "XIC")
XIC.png

发现centroid化后,背景噪音大大减少。

4 检测峰(features)

cwp <- CentWaveParam(snthresh = 5, noise = 100, ppm = 14,
                     peakwidth = c(1, 30))
peak1 <- findChromPeaks(data_raw, param = cwp)
#Detecting mass traces at 14 ppm ... OK
#Detecting chromatographic peaks in 13498 regions of interest ... OK: 4124 found.

peak2 <- findChromPeaks(data_cent, param = cwp)
#Detecting mass traces at 14 ppm ... OK
#Detecting chromatographic peaks in 1996 regions of interest ... OK: 298 found.

peak3 <- findChromPeaks(data_sc, param = cwp)
#Detecting mass traces at 14 ppm ... OK
#Detecting chromatographic peaks in 1412 regions of interest ... OK: 364 found.

peak4 <- findChromPeaks(data_cs, param = cwp)
#Detecting mass traces at 14 ppm ... OK
#Detecting chromatographic peaks in 1828 regions of interest ... OK: 202 found.

可见centroid化后,检测出的杂峰大大减少,减少了91%。
比较对一级谱图的影响

par(mar=c(6,3,6,3))
plot(data_raw[[3737]],data_cent[[3737]])
MS.png

比较对二级谱图的影响

plot(data_raw[[3739]],data_cent[[3739]])
MS/MS.png

转化为centroid模式后,无论是一级质谱还是二级质谱,杂峰明显减少。centroid化,其实是将质谱数据“减肥”的过程。转化后的数据可以用于后续分析,也可以保存。

writeMSData(dda_data, file = "dda_data.mzML")

如果不知道质谱数据是否为centroid模式可以通过featureData@data[["centroided"]]查看。

多个样本

data_cent <- data_raw %>% 
  pickPeaks(refineMz = "descendPeak") 

data_cent <- data_raw %>% 
  smooth(method = "MovingAverage", halfWindowSize = 2L) %>% 
  pickPeaks(refineMz = "descendPeak") 

参考资料:

Bioconductor - MSnbase
MSnbase: centroiding of profile-mode MS data (bioconductor.org)
MSnbase: MS data processing, visualisation and quantification • MSnbase (lgatto.github.io)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 安装 查看MALDIquant包带的数据 共有16个样本 标准化 减少峰的波动,克服方差均值的相互影响
    佳名阅读 5,829评论 0 1
  • 导入所需要的包 1.单个样本 导入 提取基峰色谱图 2.多组数据 导入 提取基峰色谱图 参考资料: LCMS da...
    佳名阅读 8,536评论 5 3
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,310评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 11,820评论 0 2
  • 今天上午陪老妈看病,下午健身房跑步,晚上想想今天还没有断舍离,马上做,衣架和旁边的的布衣架,一看乱乱,又想想自己是...
    影子3623253阅读 7,982评论 3 8

友情链接更多精彩内容