司钤 2021-05-08 21:41 采纳率: 0%
浏览 373

求助,关于R包xcms处理二级质谱DDA数据的问题

在以三油酸甘油酯加铵峰(m/z 902.817 Da)为例子,学习R包xcms提取DDA二级质谱数据时,发现在用MSDIAL打开的原始数据中确实有902.8左右的母离子,也有产生这个母离子的二级谱,在用findChromPeaks函数检测MS1峰后也能看到有几个一级峰在902.8左右。但在用chromPeakSpectra函数提取了MS2图谱后,出现了两个问题:(1)后续用m/z 902.817找MS1时,有多个一级峰编号,而xcms说明包中的示例数据只有一个一级峰编号;(2)根据一级峰编号提取二级谱图的时候,发现并没有与902.817匹配的二级图谱,与原始数据不符。初步推测可能有两个原因:(1)文件是profile而不是centroid,影响了后续处理;(2)函数的一些参数没有优化。求大佬救命解答TOT

library(xcms)
library(faahKO)
library(RColorBrewer)
library(pander)
library(magrittr)
library(pheatmap)
library(SummarizedExperiment)
library(msdata)
#设置工作目录,方便进行复杂的反复读取文件
setwd("C:/Users/sx/Desktop/桌面/xcms学习/Data")
#获取文件名(实际数据)
dda_file<- list.files(path="C:/Users/sx/Desktop/桌面/xcms学习/Data",pattern = ".mzML")
#示例数据
#dda_file <- system.file("TripleTOF-SWATH/PestMix1_DDA.mzML",package = "msdata")
#读入数据
dda_data <- readMSData(dda_file,mode="onDisk")
dda_data <- filterRt(dda_data, rt = c(700, 1000))
#观察一级谱和二级谱数量
table(msLevel(dda_data))

#确定CentWave的关键参数:peakwidth和ppm
#挑选一个峰进行观察,确定提一级谱的peakwidth
rtr <- c(700,1000)
mzr <- c(902.7,902.9)
chr_raw <- chromatogram(dda_data, mz = mzr, rt = rtr)
plot(chr_raw, col = "green")
#挑选几个峰进行观察,确定一级谱的ppm
dda_data %>%
filterRt(rt = rtr) %>% #先按保留时间过滤原始对象,然后传递到下一步
filterMz(mz = mzr) %>% #然后按m/z过滤,然后传递到下一步
plot(type = "XIC")

#用findChromPeaks函数进行MS1的色谱峰检测
cwp <- CentWaveParam(snthresh = 5, noise = 100,ppm = 10,peakwidth = c(5, 50))
dda_data <- findChromPeaks(dda_data, param = cwp)
#peaks <- chromPeaks(dda_data)#已识别出的峰
nrow(chromPeaks(dda_data))

#提取已识别MS2的峰
dda_spectra <- chromPeakSpectra(dda_data)
length(dda_spectra)

#挑选一个质荷比的母离子,设置好ppm,选出已识别的MS1中可能是这个母离子的碎片的MS1,这步出现第一个问题
ex_mz <- 902.817
chromPeaks(dda_data, mz = ex_mz, ppm = 20)
ex_id <- rownames(chromPeaks(dda_data, mz = ex_mz, ppm = 20))
#按照MS2编号返回在dda_spectra的位置,这一步出现第二个问题
ex_spectra <- dda_spectra[mcols(dda_spectra)$peak_id == ex_id]
ex_spectra
#用combineSpectra缩减为单个质谱图,minProp确定在80%图谱中出现的峰被放入最终结果中
ex_spectrum <- combineSpectra(ex_spectra, method = consensusSpectrum, mzd = 0,
                              ppm = 20, minProp = 0.8, weighted = FALSE,
                              intensityFun = median, mzFun = median)
plot(ex_spectrum[[1]])
  • 写回答

5条回答 默认 最新

  • CSDN专家-黄老师 2021-05-10 10:01
    关注

    你可以按你推测可能进行检测,在相关代码添加数据输出功能,检测输出结果是否符合实际

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)