GC-MS数据分析 R语言erah包调用

erah官方文档:https://cran.r-project.org/web/packages/erah/vignettes/eRahManual.pdf

erah包的输入格式必须是cdf或者mzXML,cdf都是仪器导出,mzXML可以通过转换工具得到。本次实验数据.D格式通过转换工具proteowizard的MSConvert转为mzXML格式,首次采用的默认参数。

image

下图截取mzXML格式数据一部分

image

mzXML包含了一次实验中所有的分子片段的质谱图,并且包含了一些实验的基本数据.其核心数据是峰谱图,标签内的一段很长的数据就是峰谱数据,其本身是荷质比与强度的Key-Value键值对,是经过压缩之后的数据。peaks标签里面会指定压缩的float数据精度是多少(32位或者64位),压缩方式是什么(一般是zlib).只要按照这种规格解码就可以查看到真实的离子质荷比与丰度的相关数据。

转换之后的数据每一类放在一个文件夹,按文档说明进行预处理。
以下是翻译的部分官方文档函数:

  1. 设置去卷积参数
    setDecPar(min.peak.width, min.peak.height=2500,
    noise.threshold=500,
    avoid.processing.mz=c(73:75,147:149),
    compression.coef=2, analysis.time=0)
    min.peak.width:最小峰宽度,通常为化合物峰宽度平均值的一半
    min.peak.height:最小化合物峰高度,低于该值忽略
    noise.threshold:此临界点之下认为是噪音
    avoid.processing.mz:不期望被处理的块,例如73,74,75,147,148,149,这些是普遍存在的质量碎片,由带有三甲基硅基的化合物组成,一般不处理
    compression.coef:采用正交信号反褶积(OSD)算法,对数据进行压缩的值,一般是2
    analysis.time:谱图保留时间的处理,如果是0,所有谱图都处理
    2、GC-MS数据去卷积,返回MetaboSet class
    deconvolveComp(Experiment, decParameters,
    samples.to.process=NULL, down.sample=FALSE,
    virtual.scans.ps=NULL)
    Experiment:newExp创建的实验数据
    decParameters:setDecPar 设置的去卷积参数
    samples.to.process:向量,表示需要处理的样品
    down.sample:if TRUE:则谱图向下采样,10个扫描点定义一个峰,用于处理较长的具有较宽峰的谱图(20s以上的峰宽度,每分钟具有较小的扫描值)
    virtual.scans.ps:手动校正每秒扫描次数。当谱图向下采样时(每秒扫描太少或太多),可以定义每秒虚拟扫描,数据进行插值,但还是建议重新分析
    3、设置对齐参数
    setAlPar(min.spectra.cor, max.time.dist,
    mz.range=c(70:600))
    min.spectra.cor:最小谱图相关值,(0-无相似度,1-非常相似),2个或更多成分的相似度达到该值才被认为是同一种化合物并进行对齐
    max.time.dist:最大保留时间的距离(秒),2个或更多成分保留时间的差小于多少才作为同一种化合物并进行对齐
    mz.range:比较谱图时块的范围
    实验样品超出100个(Windows)or 1000(mac or Linux) 对齐会出现错误或运行时间很长,这种情况下,需要分块处理,这个问题可以通过alignComp函数中的参数blocks.size解决
    通过这几个参数限制筛选,若有些化合物未被检测到,从缺失化合物恢复的步骤进行找回
    4、去卷积的化合物对齐
    alignComp(Experiment, alParameters, blocks.size=NULL)
    Experiment:去卷积之后的数据,deconvolveComp
    alParameters:setAlPar设置的参数
    blocks.size:实验样品超出100个(Windows)or 1000(mac or Linux) 对齐会出现错误或运行时间很长,这种情况下,需要分块处理
    5、缺失成分恢复
    recMissComp(Experiment, min.samples, free.model=F)
    Experiment:对齐处理后的数据,alignComp
    min.samples:恢复的缺失化合物。样品中出现该化合物的最小次数,一般设置比较大,若设置过小,会出现较多错误的信息,推荐执行alignList 或 idList函数,评估化合物出现的样本平均数量
    free.model:if TRUE,样品中发现的缺失光谱被用来计算最后的平均光谱
    free.model参数推荐设置为False(除非碳跟踪应用程序),因为成分缺失化合物的样品色谱通常被噪音影响,这会降低某个化合物的匹配值
    如果化合物之前已被识别,应用recMissComp函数后它们需要再次被识别,即identifyComp函数必须在recMissComp函数之后运行,即使identifyComp函数之前已经运行
    6、谱图成分识别
    identifyComp(Experiment, id.database=mslib, mz.range=NULL, n.putative=3)
    Experiment:去卷积及对齐处理后的数据,alignComp
    id.database:质谱库,用于与实验谱图比较,默认北美的MassBank
    mz.range:与alignComp相同,如果在alignComp的setAlPar参数中给定,没必要再次给出,否则需要给出
    n.putative:每个频谱对应返回化合物名称的个数
    最后一步是识别对齐后的化合物并给出推荐名称,erah依据参考数据库比较了所有的谱图,此包默认的数据库是MassBank MS library,然而我们强烈建议使用Golm Metabolome 数据库
    7、识别名称、匹配值、其他变量
    idList(object, id.database=mslib)
    object:经过去卷积、对齐及识别的数据
    id.database:质谱库
    返回识别化合物名称、匹配度、其他变量的表格
    8、保留指数误差
    erah 可以根据内标或外标计算保留指数误差。若是内标,需要将化合物的AlignID值作为参考,这样一旦识别出代谢物,应用idList函数的输出值可以找到该化合物的AlignID值。例如这个化合物是脂肪酸甲酯或其他代谢物,只要这个识别是正确的。正确识别的化合物可用于制作内标曲线。首先,定义一个参考列表,例如,我们取了6个已知代谢物的idList,手动定义RT和RI,此方法应用于外标。
    为了查看特殊代谢物的保留指数RI,可以用findComp和compInfo函数,例如想知道酚酸的保留指数(Golm数据库),
    findComp(name="phenol", id.database = golm.database)
    得到DB.id=23,再用compInfo函数检索
    compInfo(comp.id=23, id.database=golm.database)
    得到RI=1049.38,最后计算RI的误差
    computeRIerror(ex, id.database = golm.database,reference.list=reference.list, ri.error.type="relative")
    计算保留指数误差强烈建议使用Golm Metabolome数据库
    a.findComp(name = NULL, id.database = mslib, CAS = NULL,
    chem.form = NULL)
    name: 待查询的化合物名称
    id.database:质谱库
    CAS:CAS号
    chem.form :化学式
    b.compInfo(comp.id, id.database=mslib)
    comp.id: 化合物的DB.id
    id.database:质谱库
    c.computeRIerror(Experiment, id.database=mslib, reference.list,
    ri.error.type=c('relative','absolute'), plot.results=TRUE)
    通过内外标曲线计算保留指数误差
    Experiment:经过去卷积、对齐及识别的数据
    id.database:质谱库
    reference.list:参考数据创建标准曲线(内标或外标)
    ri.error.type:指定计算RI的绝对误差还是相对误差
    plot.results:展示RI/RT表格
    9、列表ID
    可以通过idList, alignList, dataList 分别得到识别列表、对齐列表、最终列表,
    a.alignList(object, by.area=TRUE)
    object: 去卷积、对齐和(可选)识别后的数据
    by.area: if TRUE: 按去卷积色谱峰的面积含量,if FALSE 输出去卷积峰强度
    返回:
    AlignID:ID
    Factor: 因子标签名称
    tmean: 保留时间的平均值
    FoundIn: 被检测到化合物的样品数量
    Quantification: 列是样品,行为代谢物,每列的名是样品名
    b.dataList(Experiment, id.database=mslib, by.area=TRUE)
    与alignList相似,返回DB.id.X
    10、结果及可视化
    若AlignID 是41
    a. plotProfile(Experiment,AlignId, per.class=T, xlim=NULL)
    Experiment: 去卷积、对齐和(可选)识别后的数据
    AlignId: 化合物识别ID
    per.class: if TRUE 每类一个颜色,if FALSE 每个样品一个颜色
    xlim: x轴(保留时间)范围
    b. plotSpectra(Experiment, AlignId, n.putative=1,
    compare=T, id.database=mslib, comp.db=NULL,
    return.spectra=F, draw.color="purple", xlim=NULL)
    Experiment:去卷积、对齐和(可选)识别后的数据
    AlignId:化合物识别ID
    n.putative: 当比较参考光谱和实验光谱,返回的命中个数
    compare: if TRUE 数据库的参考光谱进行比较
    id.database: 质谱库
    comp.db: 如果想比较实验图谱与数据库中的其他谱图,从数据库中选择comp.db数
    return.spectra: if TRUE,返回选出化合物的实验谱图
    draw.color: 颜色
    xlim: x轴范围(m/z)

你可能感兴趣的:(GC-MS数据分析 R语言erah包调用)