Xiaotao Shen

代谢组数据标准化包MetNormalizer介绍

2018/05/16 Share

为什么要做标准化

基于质谱的代谢组学数据由于各种因素,比如质谱信号漂移,色谱柱污染,等等,会导致采集的数据有很多的系统误差存在,这些系统误差如果不去除掉,会严重影响数据质量,并进而影响从数据中挖掘有效信息的能力。比如下面图就分别显示了批次内(intra-batch)以及批次间(inter-batch)的系统误差,可以看到系统误差还是非常严重和明显的。因此对于质谱代谢组学数据来说,数据的标准化(data normalization)是必不可少的一步。

批次内和批次间误差

代谢组学数据标准化的方法

代谢组学数据进行标准化的方法大致可以分为三种。

  • 内标标准化:在样品中加入内标,然后对所有的峰都使用该内标进行校正。但是这种方法使用一个或者几个内标对所有的峰进行标准哈,并不可靠,因此用的不多。
  • 基于样品本身:比如使用样品中所有峰的平均值、中位值或者总和对所有峰进行校正。另外还有比如PQN等等方法。
  • 第三种在代谢组学数据中最为常见的标准化方法是基于QC(质量控制)样本的数据标准化。简单来说,就是将所要采集的所有样本取等量混合起来,组成QC样本,然后在采集数据的时候,每隔一定数量的样品,插入一针QC样本。因为QC样本都是一样的,因此可以用QC样本来模拟数据采集过程中信号的变化。得到数据之后,对每一个峰(peak),都将QC作为训练集,然后建立预测模型,预测信号变化,从而对样品中的信号进行校正。

QC样品

QC normalization workflow

基于QC和支持向量机的数据标准化R包:MetNormalizer

我再读博期间的第一个项目就是建立一个基于QC样品的数据标准化方法,我们最后选择了一个非常有用并且常用的机器学习方法,SVR(支持向量机回归),最后的方法我们做成了一个R包,MetNormalizer。具体的内容可以参考我的文章,Normalization and Integration of Large-Scale Metabolomics Data Using Support Vector Regression。下面就用MetNormalizer自带的示例数据示范如何使用。

  • 安装MetNormalizer
    MetNormalizer的源代码托管在github上,可以直接从github安装。在R控制台中输入下列代码,进行安装。

    1
    2
    3
    4
    if(!require(devtools)){
    install.packages("devtools")
    }
    devtools::install_github("jaspershen/MetNormalizer")
  • 准备数据
    以MetNormalizer自带数据为例。

1
2
3
4
5
6
7
8
#首先加载MetNormalizer包
library(MetNormalizer)
#设置工作路径
setwd("F:/test")#根据自己实际情况设置路径
data(DemoData, package = "MetNormalizer")
#输出数据为csv格式
write.csv(data, "data.csv", row.names = FALSE)
write.csv(sample.info, "sample.info.csv", row.names = FALSE)

其中data为MS1 peak table,可以来源于任何的处理软件,如XCMS,MS-DIAL等。注意前三列必须为name(峰的名字),m/z和RT。然后其他列为样本的intensity。

data

sample.info为样品信息,用来提供样品的信息。一共三列,第一列sample.name(样品名字),然后依次是injection.order和class。class用来指明样品的种类,”Subject”说明该样品为生物样品,注意S要大写;QC是指样品为QC样品。

data

  • 开始处理数据
    然后开始运行函数。
1
2
3
4
MetNormalizer(minfrac.qc = 0,
minfrac.sample = 0,
threads = 3,
peakplot = TRUE)
  • 处理结果

最后所有的处理结果都存放在svr normalization result文件夹中。

result

CATALOG
  1. 1. 为什么要做标准化
  2. 2. 代谢组学数据标准化的方法
  3. 3. 基于QC和支持向量机的数据标准化R包:MetNormalizer