估计阅读时长: 5 分钟



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

最近我在B站的视频页面下发现了这样的一条评论,面对质谱数据分析领域内的初学者的求教,其实自己也是非常的诚惶诚恐的。因为在视频中所使用的脚本语言是自己开发的一门新语言,所以可能给一些初学者造成了一部分的困扰哈哈😅😄😅😅。首先先对这个粉丝说一声抱歉哈。

针对上述的提问,我的回答大概是有以下的几点:

  1. 在B站的教程视频《【BioNovoGene Mzkit教程】代谢组学原始数据处理基础》中,所提到的脚本语言其实并不是真正的R语言,而是基于R语言的向量化编程特性而仿照着开发出来的一门国产编程语言R#。所以有一些视频中所提到的软件包在真正的R语言环境之中是无法找到的。
  2. 所以netCDF.utils程序包模块其实是R#编程语言的环境库之中自带的一个用于读写CDF文件的模块,在真正的R语言环境之中是找不到的哈哈😁
  3. 因为R#语言的开发结合了多种语言的特性,所以看起来可能会有一些四不像。但是脚本中所展示的imports之类的语句,其实并不是来自于python,而是来自于javascript语言。代码中using相关的代码语法其实是来自于C#语言或者VB.NET语言之中的using。

那说完了上面的针对评论回复的几点,下面我们开始进行一些拓展性的知识讲解吧:关于如何使用上R#语言进行质谱数据分析。

首先,先向大伙简单介绍一下MZKit桌面工作站软件的一些背景信息。在视频中所介绍的MZKit软件,其实是帕诺米克从2017年启动的一个质谱原始数据开源项目,相关的项目源代码大家可以从Github上下载得到:https://github.com/xieguigang/mzkit

目前呢,经过多年的发展,MZKit开源项目目前在质谱原始数据处理相关领域内的应用其实已经比较广泛了:就帕诺米克而言,MZKit软件以及R#脚本编程语言已经非常广泛的应用于各种商业项目中的质谱原始数据处理的自动化流程搭建之中。那现在废话不多说,回到我们的正题:我们该如何通过R#编程语言脚本调用MZKit进行质谱数据的一些处理操作呢?假若读者已经安装有MZKit桌面工作站软件的话,实际上你已经获取得到了一个R#编程语言的运行环境:因为MZKit的一些数据分析功能和数据可视化功能是基于R#脚本语言编写的,R#语言编程环境已经集成在了MZKit桌面工作站软件之中了。

既然R#编程语言环境已经集成在了视频中所提到的MZKit桌面工作站软件之中,那么我们怎么打开它呢?其实这个非常的简单,我们只需要按照下面的操作步骤就可以进入R#编程环境之中:

首先,通过软件左上角的【File】菜单入口打开软件的主菜单;接着可以在主菜单之中看见有【MZKit Data Toolkit】菜单栏;就是在这个菜单栏之中,展开后可以发现有一个命令行图标的东西【Developer CommandLine Tools】;对,就是它了,点击这个东西我们就可以进入到R#编程语言环境之中了。假设点击这个菜单之后,跳出来了下面所示的这样的一个命令行界面,那么就说明你已经成功打算开了质谱数据分析的开发工具环境:

那现在我们来编写一个进行CDF数据可视化的脚本来初步讲解MZKit软件自带的质谱数据处理函数库的使用吧。

像传统的R语言编程一样,一般编程语言环境之中是不包含有针对具体的实际问题解决工具的。所以在进行相关的实际问题处理之前,我们需要导入面向具体实际问题进行数据处理的相关的软件包。在这里我们先进行接下来所需要解决的具体问题的描述:通过读取CDF文件之中的色谱图数据,然后分别通过ggplot软件包或者mzkit软件包绘制出来。

那根据上面的问题描述,实际上我们就可以分解出三个脚本操作相关的模块:CDF文件数据读取模块,ggplot绘图模块或者mzkit质谱数据可视化模块。那么首先,我们向脚本执行环境之中导入CDF文件数据读取模块netCDF.utils进行数据读取操作:

CDF文件数据读取

imports "netCDF.utils" from "base";

具体的来讲,上面的语句其实就是从base.dll这个程序模块文件之中导入了CDF文件读取相关的函数内容,这样子我们就可以在R#脚本之中打开并且读取CDF文件之中的数据啦。接下来我们就可以通过下面所列举的几个函数来从我们的目标CDF文件之中读取数据了:

  • open.netCDF: 按照一个所设定的文件路径,打开CDF文件流
  • var: 从CDF文件流之中获取得到指定名称的变量信息
  • getValue: 基于特定的变量信息读取CDF文件之中所存储的向量数据

对于气质色谱数据分析而言,CDF文件是一种比较通用的标准格式,CDF文件里面主要是存储很多个向量数据,而气质色谱的总离子流相关的向量变量信息在CDF文件中分别为:

  • scan_acquisition_time 向量即为总离子流图的保留时间向量信息
  • total_intensity 顾名思义就是总离子流图的每一个保留时间点上所对应的总离子信号响应强度信息

那,现在了解到了上面的主要相关信息之后,我们就可以写出如下脚本进行数据的读取了:

using cdf as open.netCDF(file = "C:\\Program Files\\BioNovoGene\\mzkit_win32\\demo\\200ppm-scan.CDF") {

   const readVector = function(name) {
      const varinfo = var(cdf, name = name);
      const vector = getValue(varinfo);

      vector;
   }

   const scan_time = readVector("scan_acquisition_time");
   const totalIons = readVector("total_intensity");
   const TIC = data.frame(scan_time, totalIons);

   print(TIC, max.print = 13);
}

现在保存一下我们的脚本文件,在命令行窗口中输入R#;接着呢,复制文件路径,然后粘贴我们的文件路径在命令行输出窗口中,例如像下面这样子:

R# C:\Users\Administrator\Desktop\plot_cdf_tic.R

最起始的R#就是代表我们所使用的R#脚本的解释器程序,后面的路径就是我们上面所保存的R脚本了。现在在命令行上按下回车执行我们的脚本,经过一会儿之后,在我们的命令行窗口上应该会出现和下图类似的dataframe打印结果,出现这个就说明我们通过脚本从CDF文件之中读取总离子流色谱图相关的向量数据成功了!

ggplot绘制总离子流色谱图

现在,我们已经拥有了绘图相关的数据,那现在我们可以做绘图操作了。首先我们祭出R语言的绘图利器,首先展示一下在R#编程语言环境之中通过ggplot进行总离子流色谱图的绘制:

require(ggplot);

bitmap(file = `${@dir}/tic_ggplot.png`, width = 2400, height = 1440) {
    ggplot(TIC, aes(x = "scan_time", y = "totalIons"), padding = "padding: 200px 150px 200px 300px;")
    + geom_line(width = 7)
    + ggtitle("Total Ions Chromatographic(TIC)")
    + scale_x_continuous(labels = "F2")
    + scale_y_continuous(labels = "G2")
    ;
}

通过执行上面的一段ggplot的绘图脚本代码,我们得到了如下所示的TIC图数据可视化输出结果:

MZKit程序包绘制总离子流色谱图

上面我们展示的是基于ggplot程序包按照一般的数据绘制流程做的一个数据可视化,那现在假若我们想要基于MZKit程序包进行上面所展示的类似的TIC色谱图的绘制操作呢?当然也是没问题的了,因为MZKit软件包就是专门进行质谱数据处理操作的工作,绘制这种基础原始数据图当然不在话下了,首先来看绘图代码:

require(mzkit);

#' A chromatogram is the trace generated by the detector
imports "chromatogram" from "mzkit";
imports "visual" from "mzplot";

tic = toChromatogram(as.chromatogram(TIC$scan_time, TIC$totalIons));

bitmap(file = `${@dir}/tic_mzkit.png`, width = 2400, height = 1440) {
    plot(chromatogram::overlaps(list(demo_data = tic)), show.labels = FALSE);
}

从上面的绘图代码可以看见,相关的绘图操作和ggplot相比较,自定义方面的内容(例如坐标轴,标题之类的信息)会较少一些,但是相关的绘图操作却简化了一些:我们只需要通过chromatogram对象相关的操作函数,将读取出来的原始数据转换为chromatogram对象,接下来就可以直接通过plot函数绘制出来了!除了操作简单这个特点,默认输出的图形样式也要漂亮了许多。

下面截图的是在这篇文章中所展示的基础数据作图功能的全部代码了:

上面的所有代码都是基于MZKit桌面工作站软件最新发布的版本所完成的,如果各位读者需要更新或者安装最新版本的MZKit桌面工作站软件,可以访问BioDeep网站进行下载:http://www.biodeep.cn/downloads?lang=zh-CN

希望这篇评论回复文章可以解开上面的粉丝的一部分疑惑

谢桂纲
Latest posts by 谢桂纲 (see all)

Attachments

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *

博客文章
December 2024
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031  
  1. 在mysql之中,针对24小时内的数据按照半个小时进行一次统计数量: ```sql SELECT DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(add_time) / 1800) * 1800), '%Y-%m-%d %H:%i') AS half_hour, COUNT(*) AS count FROM user_track.page_view WHERE add_time >=…

  2. 针对图对象进行向量化表示嵌入: 首先,通过node2vec方法,将node表示为向量 第二步,针对node向量矩阵,进行umap降维计算,对node进行排序,生成node排序序列 第三步,针对node排序序列进行SGT序列图嵌入,实现将网络图对象嵌入为一维向量