估计阅读时长: 2 分钟

https://github.com/xieguigang/mzkit



在BILIBILI上观看视频:《【BioNovoGene Mzkit教程】代谢组学原始数据处理基础》

哈喽,各位同学们好啊,你们的喜欢讲解各种科学计算原理的硬核小姐姐又回来了。

今天呢,我们准备开始进行新系列的课程学习啦。这个新的系列视频我就暂定名字为《代谢组学计算基础原理》吧。如名称所示,这系列的课程,是向各位同学讲解最基础的原理的。如果呀,大家想学习基础原理之上的代谢组学数据分析的应用部分,在这里,我推荐大家可以进入诺米代谢学院里面免费观看学习哟。

和大家比较常接触的转录组学类似,仪器分析的下机原始数据,是各位同学进行组学数据分析的最基础的实验数据。我们呀,只有从最原始的数据之中,提取出了有用的信息,才可以进行后续的生物信息学分析之类的计算了。

在今天的课程里面,首先我们来了解一下代谢组学领域内的一些,常用的原始数据文件格式作为这个系列视频的开始吧。

原始文件格式介绍

在代谢组学领域内,目前呢,我们比较常用的原始数据文件格式主要为两种:XML格式家族的原始数据文件以及并行文件家族的netCDF和HDF文件格式。

  • XML格式家族主要为三种文件格式:mzXML, mzML以及imzML这三种文件,这三种文件格式都是LCMS结果数据的常见数据保存格式。
  • 而netCDF以及HDF并行文件格式则比较常见于存储GC-MS的结果数据。

在今天的课程里面呢,我们主要是来学习XML家族的文件格式。

  • 在XML家族格式的文件之中,mzXML是非靶向数据的专用格式。mzXML相比较于mzML文件,文件结构格式更加紧凑,与质谱数据的耦合度很高。所以mzXML相对于mzML文件,在文件大小会更加小一些,数据读取的效率也更高效。但是呢,这个特点也限制了mzXML文件所能够存储的数据类型仅限于质谱数据。
  • 对于mzML文件格式而言,其文件结构格式比较松散,和质谱数据的耦合度很低。所以呢,mzML文件格式相比mzXML文件格式更加灵活,可以保存不限于质谱和色谱数据的其他数据类型。所以mzML相比较于mzXML可以保存质谱数据外,还可以保存靶向数据色谱数据,以及紫外数据等不限于质谱和色谱的原始数据。
  • imzML文件则是mzML文件的一个分支,其将数据部分完全放在了额外的一个ibd二进制文件之中,XML文件之中仅保存数据读取所需要的Meta信息。

那,我们如何读取这些原始数据呢?

原始数据文件读取

我们呀,在这里以mzXML文件格式为例来讲解原始数据的读取。

在mzXML文件之中呢,质谱数据都是保存在每一个scan之中的peak节点中;而mzML文件之中呢,质谱或者色谱数据是保存在binaryDataArray节点之中。那,现在我们通过记事本打开XML文件,来看看这些XML节点,会发现里面都存在一串类似于乱码的文本。但是这些可不是乱码哦,如果经过正确的解码,我们是可以得到一个质谱数据矩阵的。

那怎么来解码这些数据呢?

首先,这些文本都是base64字符串,所以我们第一步就是做base64解码这些字符串,得到最原始的二进制流数据。

如果呀,大家使用过ProteoWizard软件,将vendor格式的原始数据文件转换为开源的mzXML文件格式的话,应该会看见软件上存在一个zlib或者gzip的数据压缩选项。那进行zlib或者gzip解压缩,就是我们在得到二进制流数据之后所要做的第二步操作了。进行流的解压缩,一般而言会存在三种可能,zlib为zip流压缩,gzip为gzip流压缩,还有一个none就是无压缩。

然后接下来呢,因为里面的原始数据,是以network byte order存储的。所以假若我们的当前的系统是小端对齐的话,还需要将数据流进行颠倒。

最后,我们就可以对数据流解码为具体的数值了。

  • 如果是32位数据的话,我们需要将整个数据流以4个字节长度分段,得到单精度的数值。
  • 如果是64位数据的话,则以8个字节长度分段,得到双精度的数值。

这样呢,经过上面的几个步骤的操作,我们就可以从原始数据文件之中,读取出质谱碎片或者色谱的矩阵数据了。

代谢组学原始数据可视化

我们在简单的学习了一下文件数据格式之后呢,现在我们来了解一下,我们可以怎样从原始文件之中提取原始数据,做一些代谢组学数据分析领域内的简单的数据可视化分析把:

TIC图

首先呢,是最简单的TIC图。TIC图中文名是总离子流色谱图,即每一个时间点的离子响应的总和对时间作图。仔细观察XML文件,我们呀,可以发现,每一个scan之中会存在retentionTime和totIonCurrent这两个属性值。如果将totIonCurrent和TIC的英文名称联系起来呢?没错!将每一个scan的保留时间和totIonCurrent提取出来作图就得到TIC图了。

BPC图

相信细心的小伙伴,肯定还会在totIonCurrent的旁边发现了一个名字叫做basePeakIntensity的东西。没错,这个就是我们接下来进行BPC图绘制的数据了。BPC图中文名是基峰图,就是将每一个scan中响应度最高的值拿出来和时间作图。

XIC图

除了TIC和BPC,还有一个EIC图,或者也可以称作为XIC图。EIC图就是将每一个scan中,我们所设定的目标mz离子的响应度提取出来对时间作图。那么,如何得到这个数据呢?作图的数据啊,就藏在我们前面所学习的base64解码数据得到的质谱矩阵之中。按照前面的方法,对每一个时间点的scan数据解码,然后按照设定的ppm从矩阵中找出mz对应的响应度数据,对保留时间作图就可以啦!

ROI散点图

那,现在假若我们将所有的scan数据都解码出来了,那我们一般是可以得到一个【mz, rt以及响应度】这三维组成的数据。那,如果我们以rt为X坐标轴,mz为Y坐标轴,然后使用响应度值,为每一个mz rt二维坐标所确定的一个离子点,进行染色的话,我们又会得到什么图呢?好的,渲染完成了。我们得到的就是这样子的一张,显示离子分布的二维散点图了。

质谱图

那,现在如果我们对某一个特定的scan以mz为横坐标,响应度为纵坐标绘制对应的柱形图呢?没错,得到的就是一个质谱图了。如果scan是MS1 level的,我们得到的就是母离子的响应分布的质谱图;如果呢,scan是MS2 level的,那我们得到的就是,某一个特定代谢物的分子碎片的相应分布的二级质谱图了。

质谱图相似度计算

由于呀,二级质谱图之中的碎片分布是和代谢物分子的分子结构有关的。所以呢,只要我们以特定的条件,对某一种代谢物纯化的标准品打质谱,得到了对应的二级质谱图。就可以基于这个已知的标准品的二级质谱图,在我们的原始数据之中进行scan的相似度计算,基于此来进行代谢物的注释分析了。

Cos相似度

那么我们一般是如何计算两个质谱图的相似度的呢?

在机器学习领域内,有一个cos相似度。行了,我知道大家会说屏幕上的这个公式太复杂了。废话不多说,我们开始来手动计算两个质谱图的相似度把。

假若我们将未知scan的质谱图里面的碎片,通过一定的mz误差和标准品的质谱图做匹配对齐,那么我们就可以得到两个等长的响应度向量了。那现在我们把得到的这两个响应度向量带入cos相似度的计算公式之中。哒哒哒,出来了一个0到1之间的数值,两个质谱图的相似度就计算出来啦,很神奇吧。

Attachments

One response

Leave a Reply

Your email address will not be published.