美文网首页
R package:xcms(三):Chromatographi

R package:xcms(三):Chromatographi

作者: 佳名 | 来源:发表于2021-11-29 16:36 被阅读0次

    导入数据

    library(xcms)
    library(faahKO)
    library(RColorBrewer)
    library(pander)
    library(magrittr)
    library(pheatmap)
    library(SummarizedExperiment)
    

    1.单个样本

    dda_file <- system.file("TripleTOF-SWATH/PestMix1_DDA.mzML",package = "msdata")
    dda_data <- readMSData(dda_file, mode = "onDisk")
    table(msLevel(dda_data))
    

    3 色谱峰检测

    3.1 设置参数

    使用centWave算法对centroid模式的高分辨LC-MS进行色谱峰检测。centWave算法最适用于高分辨率 centroid模式 的LC/{TOF、OrbiTrap、FTICR}-MS数据。在第一阶段,该方法确定了感兴趣区域(ROI),这些区域代表了LC/MS连续扫描时小于ppm m/z偏差的质量轨迹。 详细地说,从单个m/z开始,如果在下一次扫描(频谱)中发现的m/z,其与平均m/z的差异小于用户定义的m/z的ppm,则合并为一个ROI。 考虑到新加入的m/z值,ROI的平均m/z值也随之更新。

    cwp <- CentWaveParam(snthresh = 5, noise = 100, ppm = 14,
                         peakwidth = c(1, 30))
    

    参数说明

    snthresh -- 定义峰检测时信噪比阈值
    prefilter,c(k,I)-- 在第一步(ROI检测)指定预过滤步骤。 只有当它们包含至少k个强度值>= I的峰时,质量才会被保留。
    noise --设置在第一个分析步骤中考虑的质心所需的最小强度(强度<噪声的将从ROI检测中忽略)
    ppm -- 定义峰检测时连续扫描的m/z最大允许偏差,以ppm(parts per million)为单位
    peakwidth -- 定义峰检测时峰宽范围,类似色谱峰的峰宽,该参数指定每个峰峰宽的最大值和最小值,以秒为单位。

    centWave两个最关键参数是peakwidth (色谱峰宽的预期范围)和ppm(对应于一个色谱峰的质心 m/z 值的最大预期偏差;通常远大于制造商指定的 ppm)。

    3.2 检测一级质谱

    dda_data <- findChromPeaks(dda_data, param = cwp)
    
    dda_data.png

    此时dda_data多了msFeatureData属性,检测到的色谱峰信息储存在
    dda_data@msFeatureData[["chromPeaks"]]

    dda_data@msFeatureData[["chromPeaks"]]%>% head()
    
    #         mz    mzmin    mzmax      rt   rtmin   rtmax       into       intb      maxo  sn sample
    #CP001 142.0084 142.0082 142.0085 100.967  98.508 102.562   288.7129   285.3309  125.2583  16      1
    #CP002 142.9926 142.9922 142.9931 130.205 126.506 132.984  1148.2069  1141.9128  346.7006  88      1
    #CP003 221.0918 221.0906 221.0925 239.257 236.657 240.897   459.3357   455.0957  189.3477  66      1
    #CP004 221.0920 221.0916 221.0923 241.847 236.657 254.562   367.0682   357.8542  212.5239  15      1
    #CP005 220.0985 220.0978 220.0988 241.018 237.187 247.874  1835.6351  1827.5389  585.3036  84      1
    #CP006 219.0957 219.0950 219.0962 241.018 236.253 246.863 14940.2013 14880.2656 4877.1162 132      1
    
    dda_data@msFeatureData[["chromPeaks"]]%>% nrow()
    [1] 111
    

    共检测到111个一级质谱,将检测到的离子可视化

    plotChromPeaks(dda_data, xlim = c(80, 900), ylim = c(130, 650))
    
    plotChromPeaks.png

    上图中一条线代表一个离子,线的长度代表峰宽,宽度代表质荷比m/z的范围。
    也可以画成散点图

    data=dda_data@msFeatureData[["chromPeaks"]]%>% data.frame()
    plot(data$mz,data$rt)
    
    plot.png

    或者ggplot2出图

    p1=ggplot(data,aes(mz,rt))+geom_point(alpha=0.2)+theme_bw()
    p1
    
    ggplot.png

    途中可以看到许多重叠的点,说明这些离子具有相似甚至相同的保留时间和质荷比。

    合并

    合并伪峰和重叠峰

    设置合并参数

    mpp <- MergeNeighboringPeaksParam(expandRt = 2,expandMz = 0.45)
    xdata_pp <- refineChromPeaks(dda_data, mpp)
    #Merging reduced 111 chromPeaks to 55.
    

    expandRt将保留时间窗口向两边扩展多少秒,
    expandMz,将每个色谱峰的m/z范围扩大(两边)。
    minProp, 数值在0-1之间,表示峰连接所需的强度比例。 默认(minProp = 0.75)表示只有当信号的中间部分大于两个峰值的“maxo”(峰值顶点的最大强度)中最小值的75%时,峰值才会连接。
    111个峰合并为55个。
    合并前后对比

    data=xdata_pp@msFeatureData[["chromPeaks"]]%>% data.frame()
    p2=ggplot(data,aes(mz,rt))+geom_point(alpha=0.2)+theme_bw()
    p1|p2
    
    对比.png
    提取上述色谱峰的二级质谱
    dda_spectra <- chromPeakSpectra(dda_data)
    mcols(dda_spectra) %>% nrow()
    #[1] 122
    

    共检测到122个二级质谱,有些色谱峰没有二级质谱,如CP001,有些色谱峰又有好几个二级质谱,如CP002。

    ex_spectra <- dda_spectra[mcols(dda_spectra)$peak_id == "CP002"]
    plot(ex_spectra[[1]])+theme_bw()
    
    MS2.png

    整合多个图谱

    ex_spectrum <- combineSpectra(ex_spectra, method = consensusSpectrum, mzd = 0,
                                  ppm = 20, minProp = 0.8, weighted = FALSE,
                                  intensityFun = median, mzFun = median)
    ex_spectrum
    plot(ex_spectrum[[1]])
    

    将整合后的碎片信息光谱与整合前做对比

    par(mfrow = c(1, 3))
    plot(ex_spectrum[[1]],ex_spectra[[1]])
    plot(ex_spectrum[[1]],ex_spectra[[2]])
    plot(ex_spectrum[[1]],ex_spectra[[3]])
    
    质谱比对.png

    比对评分

    compareSpectra(ex_spectrum[[1]],ex_spectra[[1]], binSize = 0.02,
                   fun = "dotproduct")
    compareSpectra(ex_spectrum[[1]],ex_spectra[[2]], binSize = 0.02,
                   fun = "dotproduct")
    compareSpectra(ex_spectrum[[1]],ex_spectra[[3]], binSize = 0.02,
                   fun = "dotproduct")
    

    参考资料:
    https://bioconductor.org/packages/release/bioc/html/xcms.html
    LCMS data preprocessing and analysis with xcms (bioconductor.org)

    相关文章

      网友评论

          本文标题:R package:xcms(三):Chromatographi

          本文链接:https://www.haomeiwen.com/subject/onjlxrtx.html