文章阅读目录大纲
在代谢组学领域内,LCMS原始数据分析一般分为非靶向全扫原始数据,以及仅针对某些离子进行扫描的MRM靶向质谱数据。虽然二者都是基于LCMS方法进行实验,但是MRM靶向数据由于在事先已经通过实验确定,得到了Q1和Q3离子对信息,所以可以仅针对某一些特定代谢物进行检测。因为MRM数据是针对于某些代谢物检测的靶向数据,所以其XIC谱图在没有同分异构体存在的情况下,一般是很纯净的目标化合物的检测结果数据。所以在原始数据分离,定量计算方面都要比非靶向全扫结果数据要容易很多。
对于非靶向原始数据而言,相比较于较为干净的靶向检测数据,因为会同时检测非常多的代谢物,所以在原始数据之中会存在有很多混合数据,例如:
- 同分异构体信息
- 不同分子质量的化合物会因为电荷数量不同以及母离子加合物形式的不同可能产生相同的m/z检测值
- 不同元素组成的化学式可能会计算出相同的精确分子质量,从而产生相近的m/z检测值
- 背景噪声
上面所描述的非靶向混合数据,在每一个保留时间点上其各自的检测信号相互叠加在一起,产生了TIC色谱图。对于TIC色谱图的含义,我们大致可以理解为,每一个时间点上质谱仪所扫描到所有离子信息的信号总和对时间作图。我们可以首先在这里通过MZKit软件查看一个非靶向原始数据的TIC谱图,可以看得到其一般大致是一个波形非常复杂的信号图:
综合上面所列举出来的种种原因,在LCMS原始数据分析的最开始的第一步我们就会首先在代谢物的质谱检测信号分离方面遇到重重困难。但是好在我们目前的所有代谢组学的数据分析工作都可以站在巨人的肩膀上完成:经过前人在代谢组学数据分析领域内的大量工作,已经开发出了一些比较经典的质谱数据定量分析的软件包可以供我们使用。例如在目前主流的非靶向代谢组学自动化流程之中,一般是以R语言环境之中的xcms程序包作为质谱原始数据自动化处理的环境基础。
## loading required packages
library(xcms);
## Get the full path to the CDF files
cdfs <- list.dir(..., full.names = TRUE, recursive = TRUE);
## Peak detection & alignment
xset <- xcmsSet(cdfs, ppm = 20, snthresh = 10, method = 'centWave', peakwidth = c(30, 80), noise= 1000);
xset2 <- group(xset, minfrac = 0.5);
xset2 <- retcor(xset2, method = 'obiwarp', plottype = 'deviation');
xset2 <- group(xset2, bw = 20, minfrac =0.5);
## Filling gaps
xset3 <- fillPeaks(xset2);
peaktable <- xcms::groups(xset3);
上面的一段R脚本向我们展示了:基于XCMS程序包将CDF原始数据文件之中的质谱信息转换为代谢物的,在不同的样本原始数据之中的表达量结果表格信息的过程。虽然上面的代码流程使得最开始的原始数据质谱检测信号分离的过程看起来非常的简单,但是实际上在上面的脚本代码背后的数据处理过程却是复杂到我们比较难以想象的。在代谢组学领域内,进行上面的非靶向原始数据的检测信号分离的过程一般我们称作为解卷积过程。下面我就仅以我自己对质谱原始数据的认知来为大家讲解一下上面的解卷积过程之中到底发生了什么吧。
信号处理领域内的解卷积
在模拟信号处理领域内,我们可以将多个简单信号源所产生的信号进行相互叠加,合成为一个波形比较复杂的总信号。那反过来,如果我们现在手头上拥有一个比较复杂的波形信号,我们应该怎样做才可以将这个信号分解为许多个基本的简单信号数据的呢。如果是学习过信号处理的话,就会了解到进行上面描述的一个信号分解的过程,我们可以通过傅里叶变换来完成。
信号合成与信号分解示意
傅里叶变换示意图
对于上面所描述的信号正交分解的问题中,我们假设任意能量有限信号可以用正交函数集合中的函数的线性组合来近似表示。所以基于傅里叶变换操作,我们可以将一个复杂的合成信号,按照不同的频率分布,分解出对应的简单信号。在模拟信号处理过程之中,进行上面所描述的信号分解,我们可以得到一系列的简单信号。那现在我们将我们的LCMS原始数据中的一级TIC色谱峰拿出来通过傅里叶变换做信号分解,理论上可以将TIC色谱图分解为不同的基础信号,这些所分解出来的基础信号就是代谢物的表达量数据。讲到这里是不是可以就此结题了呢。
答案当然是NO。在线性代数里面,我们可以知道任意N维的矢量都可以由N维正交坐标系进行表示,这样子我们可以得到一个表达式
。从表达式可以看得到,系数ci的任意组合都有可能产生相同的V。所以直接通过传统意义上的反卷积进行信号分解操作,可能会出现这样的一个问题:假设我们有两个数字30和70,他们可以相加得到100;反过来,数字100进行分解并不一定会分解得到30和70,也有可能分解出55和45或者20和80等情况。V=c1V1 + c2V2 + ... + cnVn
质谱信号处理领域内的解卷积
在质谱信号数据处理领域内,我们将质谱仪所检测到的色谱峰信息分离出不同的代谢物自己的峰形数据的过程,就是质谱数据分析领域内的解卷积。虽然质谱数据的色谱峰分离与模拟信号处理领域内的信号分解过程都被称作为解卷积,但是二者却存在有本质上的不同之处。首先告诉大家一个比较好的消息就是:同样是进行信号分解,但是对于质谱信号处理中的解卷积而言是比模拟信号分解解卷积要容易非常的多的。这又是为什么呢?
这是因为呀,虽然上面所描述的二者都是做信号分解,但是在纯数学计算的模拟信号处理的过程之中,会存在有一个假设:被合成的复杂信号可以是由任意多个基础信号所叠加在一起产生的。所以我们做纯数学上的信号分解,理论上可以分解出无限个基础信号结果。也就是说,纯数学上的信号分解,我们是在一个完全不知道信号组成数量上的前提来完成的。
但是在质谱数据处理领域内做色谱峰信号分解,由于呀,原始数据色谱峰信号是来自于某一个所检测的样本。对于所检测的样本而言,由于其是由具体的物质所组成的。所以虽然我们并不知道目标生物样本内的所有物质都叫哪些名字,但是我们可以确定的是,目标生物样本并不是由无限多个种类的物质组成的,即组成生物学样本的物质种类是有限的。并且在质谱仪中进行全扫非靶向数据检测的时候,代谢物信号数据会因为色谱实验所能够分离的物质种类限制以及质谱仪本身的质荷比扫描分辨率的原因,最终所检测到的物质的数量,一般会低于10万种物质。所以与纯数学上的信号分解相比较,我们做质谱信号分解处理的是有限数量的信号分解。
在质谱信号数据处理工作之中,进行非靶向原始数据的解卷积操作,我们一般会经过两个维度的解卷积操作,才可以得到所检测得到的代谢物的表达结果信息:
- 首先,我们针对整个原始数据,在MZ坐标轴维度上进行切割,完成TIC色谱图的物质维度分离,得到XIC色谱图
- 接着,我们就可以在每一条XIC色谱图的基础上,针对保留时间维度进行峰查找操作,完成时间维度上的物质检测分离,得到ROI,即最终的物质相对定量检测结果
上面所提到的两个维度上的解卷积步骤,组合在一起构成了对二维的非靶向质谱原始数据完整的一个解卷积计算过程。下面我们就来针对这两个维度上的数据解卷积处理步骤来进行一些详细的原理讲解吧:
非靶向解卷积步骤一:物质信号分离
上面所展示的一张散点图之中,横坐标轴为所检测到的质谱信号的保留时间轴,纵坐标轴为所检测到的质谱信号的代谢物组成成分mz。从上面我们可以看得见,每一个纵坐标轴mz值所对应的横行就是代谢物的信号结果。偏红色的点表示高信号值的时间点(波峰),反之偏蓝色得点则是表示低信号的点(波谷)。不同的代谢物信号检测结果加和在一块,就在保留时间维度上产生了TIC色谱图。
所以,更进一步的,在质谱信号处理上面,相比较于纯数学的模拟信号分解,我们是在已经知道质谱信号组成的前提下来进行分解的。从这个角度来讲,我们在质谱信号处理上,其实与纯数学的模拟信号分析相比较下显得非常的简单。
通过从上面的散点图进行观察,可以发现其实就是对前面的傅里叶变换的示意图进行了俯视。如果我们从保留时间这个坐标轴维度进行观察,得到的就是不同的时间点上的信号累加结果图:TIC色谱图;反之如果我们从物质组成mz坐标轴这个维度上进行观察,得到的就是在不同的时间点下的质谱信号组成:一级质谱图。也就是说,如果仅从物质组成mz坐标轴维度上来说,其实我们就已经得到了类似于傅里叶变换的频域分析结果,即我们的生物样本检测信号结果其实是已经被在物质组成上完成了信号分离操作了的,只不过这个信号分离操作是由质谱仪对mz的检测过程产生的,并非基于数学计算分解来完成的。
在xcms程序包的
函数之中,存在由于一个ppm的参数,这个参数的作用就是能够让我们在所设定的质量误差下,将散点图上面的mz坐标轴进行切割,切割成有限的n个物质的mz值。这样子,基于这样的一个mz坐标轴切割的过程,我们就可以直接对原始信号值完成了组成成分的分离操作了。从这个角度上来讲,是不是要比傅里叶变换要容易很多的呢。xcmsSet
非靶向解卷积步骤二:XIC峰提取
那讲到现在,对于纯数学上的信号分解解卷积来说,整个计算过程步骤已经就结束了。但是对于质谱信号处理而言,解卷积这个概念还远远不止于此。如果我们基于上面的散点图,从物质组成mz维度,将某一个横行的信号数据提取出来,就是某一个物质的检测信号了。像这种单独对某一个物质的mz所对应的时间信号提取出来的一个结果就是XIC色谱图了。下面展示了在MZKit之中进行XIC色谱图的提取操作结果:
上面所展示的XIC谱图结果非常的简单,这是因为目标代谢物没有同分异构体或者其他的相同分子质量的代谢物所干扰,是一种比较理想的情况。如果看到这里,之前做过靶向数据处理的话,就会发现其实在非靶向原始数据中的XIC色谱图其实就是相当于MRM靶向数据之中的离子对所对应的色谱图。没错了,靶向数据的检测以及分析其实就是缩减版的非靶向数据检测与分析,只不过靶向数据的代谢物检测通量与非靶向相比比较低。
对于将上面所展示的XIC谱图里面所出现的峰的保留时间段位置给解析出来的操作,就是峰查找的操作了。进行峰查找操作,我们可以基于信号累加算法来实现:我们可以将时间信号逐步的进行时间维度上的累加,产生一个面积积分的过程。从原理示意图上我们可以看得到:在物质非出峰的低信号区域,面积积分几乎为零;当积分到物质峰位置处的时候,面积积分曲线会突然抬升,这个时候就会产生一个曲线切线斜率的变化;当积分到物质峰的结束位置的时候,面积积分曲线会逐步回归到与X坐标轴平行,这个时候同样也会产生一个曲线切线斜率的变化。我们按照一定的斜率阈值,将面积积分曲线上所有切线斜率变化的时间段拿出来,就可以完成峰查找操作了。
基于上面的原理,我们可以在MZKit软件之中进行特定的XIC峰提取操作:
经过峰提取操作之后,一条XIC谱图我们一般可能会提取到多个峰结果。之后呢,我们就可以根据信噪比,最小峰宽等参数对峰列表结果做一下过滤即可。相比较于靶向原始数据峰提取操作,因为靶向检测一般是针对某一个物质做的,所以某一个物质检测通道的峰提取操作在靶向之中应该是只有一个目标峰。但是对于非靶向数据而言,由于XIC谱图可能是多个不同物质的混合数据,所以在经过峰提取操作提取出来的所有物质峰都是我们的目标峰。从这个方面上来讲,非靶向的解卷积分析要比靶向数据的解卷积分析要简单上一些。
- 【MZKit】简单自动化组织分区 - 2023年11月5日
- 【MZKit教程】质谱成像原始数据文件查看 - 2023年6月29日
- 生物序列图嵌入算法 - 2023年6月29日
No responses yet