65.9K
CodeProject 正在变化。 阅读更多。
Home

GENOME-IN-CODE 项目

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (15投票s)

2014年3月2日

GPL3

17分钟阅读

viewsIcon

34191

downloadIcon

289

介绍“GENOME-IN-CODE”项目,该项目旨在虚拟细胞模拟细菌 Xcc 8004。如需了解 GCModeller 的最新消息,请访问 GCModeller.org。

分子生物学研究的新时尚

近年来,分子生物学研究领域出现了一种新趋势:许多分子生物学研究者愿意在他们的研究文章中结合计算模型来解释他们的实验数据。这可以从细胞系统建模解释高通量实验数据的文章中得到体现,其中通量平衡分析 (FBA) 模型是最流行的代谢系统表示模型。这种现象的出现最初源于当今计算机技术的发展,越来越多的生物学研究者接受了 Perl、R、matlab、Linux shell 和 VisualBasic 6 的编程技能培训,以便使用一些程序工具或编写新工具来解释他们的实验数据。

还有一个现象:虽然基因工程程序是重编程细菌基因组的一种方式,但这并不是重点。重点是修改哪个基因会真正改变细胞表型或创造我们想要的表型?通常,创建一个突变体需要数周的实验室工作,而且可能突变体不是我们想要的。所以我们想要一个工具来预测如果我们创建一个突变体,会对它的细胞功能产生什么变化?

这是 Markus W. Covert 的个人观点,他创建了一个使用 matlab 模拟细胞的平台。

“理解复杂表型如何从单个分子及其相互作用中产生,是生物学面临的主要挑战,而计算方法有望解决这一问题。”[^]

这意味着生物学现在面临一个巨大的挑战:我们需要一个强大的工具来解释什么是生命?解决这个挑战的最佳方案是虚拟细胞技术。

[^] Karr, J. R., et al. (2012). "A whole-cell computational model predicts phenotype from genotype." Cell 150(2): 389-401.

 

我们能否重编程基因组?

GCModeller 目前提供了用于建模生物组分和模拟的工具。在 GCModeller 未来的开发工作中,我们将为合成生物学提供系统设计工具,以便我们能够真正实现细菌基因组重编程。

图 1. 细胞系统究竟是什么样的?

如果我们将细胞过程与 .NET 程序集及其运行方式进行比较,那么我们会发现
基因表达过程就像我们从特定类型信息中创建一个编程对象实例,而蛋白质酶是基因的类实例。然后,表达的蛋白质通过催化某些代谢途径来实现某些表型功能,这就像方法调用。
因此,如果一个细胞系统架构可以被视为一个程序集,细胞组分等于 .NET 程序中的对象类实例,那么这意味着我们可以通过修改基因组信息来修改细胞功能过程。实际上,传统的基因工程方法是基因组重编程方法的一种,通过修改基因组,然后创建突变体,然后其细胞功能发生改变。这就像修改源代码并编译新的程序集。因此,DNA 序列就像编译的程序集的二进制序列,而实验室中的分子实验则是反汇编工作。

关于细胞系统的一个结论:与程序运行方式相比,细胞系统的进程更像是程序中的线程。

那么,我们是否可以从编程的角度来解决生物学问题?例如,我现在正在实验室从事信号转导网络研究工作,并且我试图通过我的实验室研究工作回答 3 个问题:
  • 1. 例如一个反汇编式的问题:黄单胞杆菌中的 HrpG/HrpX 和 DSF/Rpf,这两个系统模块如何相互作用以表现致病表型?分子机制仍然不清楚,即使清楚,我们也无法描述它们,因为它们是两个复杂的网络。
  • 2. 例如一个程序调试式的问题:目标基因突变是否真的会影响细菌表型?如果确实有影响,它是如何影响表型的?
  • 3. 以及一个系统架构式的问题:其信号转导网络中有许多双组分系统 (TCS),那么为什么在进化过程中选择 TCS?这是一个有趣的问题,因为根据其基因组注释,Xcc8004 中只有一个 STK 蛋白(基因 ID:XC_3631),而有许多 HK。在进化过程中,真核生物选择 STK,而原核生物选择 HK,这很有趣!
 
 

图 2. TCS 的典型系统架构

这些问题可以通过传统的分子实验方法和新出现的生物信息学计算方法来回答。我认为我可能在计算方面更好地回答这些问题。所以,我正在为我的科学研究构建一个新工具,GCModeller。
 
图 3. Xcc 8004 基因组圆形图
 
图 4. Xcc 8004 虚拟细胞通路网络实时可视化绘图,来自 GCModeller

如何将您的 VB/C# 技能应用于生物信息学

我的第一门生物信息学课程是使用 NCBI 的本地 blast 工具进行基本的蛋白质序列比对操作。我的编程技能在这种操作中的作用是,我可以编写代码来分析 blast 输出的文本文件,以解析比对结果。尽管已经有很多工具(如 bio-perl/biopython)可以分析此类数据,但我仍然坚持构建自己的工具来应用于研究,这不仅是因为我想深入了解工具的工作机制,而且更渴望用我喜欢的语言构建一些宏伟的东西。

实际上,VB/C# 不适合许多需要高计算性能的数学算法,这些算法需要处理大小超过 100GB 的数据,或者生物信息学分析中更大规模的数据。C++ 是处理如此庞大的数学分析任务的正确选择。但是,通过调用 C++ API 和使用一些 .NET 内置工具进行并行数据分析,VB/C# 仍然适合生物信息学。VB/C# 的语言结构比 C++ 更清晰,可以让我们轻松构建功能丰富的程序。

一个例子是 blastp 结果的分析。 .NET 正则表达式工具和 GDI+ 是分析数据并可视化它的最佳选择。

要回答如何将我们的编程技能应用于生物信息学,这是一个很难回答的大问题,因为生物信息学中的许多分析是细节特定的,而不是通用的。但我仍然试图提供一种通用方法,如果您对此也感兴趣,可以尝试按照我的工作步骤来进行生物信息学研究。

 

 

  • 当我对生物信息学中的某个问题感兴趣时,我首先开始从手册或论文中收集有关该问题的信息,这些信息可以通过 `Microsoft Search (http://academic.research.microsoft.com/) 或 NCBI PMC (http://www.ncbi.nlm.nih.gov/pmc/)` 获取。
  • 然后,我获得了足够的信息,就可以开始使用 VisualBasic 进行编程了。实际上,大多数生物信息学分析编程都来自生物学研究所的常见数据库(`例如 Genbank、KEGG、MetaCyc、Reactome、PDB`)或实验数据文件(如 fasta、fastaq、sam)。生物信息学中的所有这些数据文件都是格式良好的文本文件,因此文本解析操作和正则表达式是您 VB/C# 编程技能中最重要的技能。

  • 当我们获得来自通用数据库或实验室实验数据的数据后,我们就可以通过一些算法来分析数据。

  • 最后,并非所有代表您分析结果的图像都有通用工具可以可视化,因此您必须使用 GDI+ 在 VB/C# 中编写自己的程序,将结果呈现给他人。

以下是我实验室开发的一些用于辅助分析工作的通用库,这些库只是用于完成通用生物数据库读取工作的库,与 GCModeller 的核心逻辑关系不大。在我们的科学手册发表之前,整个 GCModeller 的源代码仍然不允许公开发布。

  1. 下载 Common_Libraries-noexe.zip
  2. 下载 tutorials.pptx.zip

GCModeller 的源代码发布将托管在 SourceForge 上。

http://sourceforge.net/projects/gcmodeller/

GCModeller 中的 Shoal 语言已在 SourceForge 发布。

http://sourceforge.net/projects/shoal/ 

 

介绍 GCModeller

受限于当今的技术,回答上述问题可能非常困难,并且需要大量时间,因为我们采用了传统的分子生物学研究程序。计算技术可能是回答通过模拟网络并从计算结果中获得答案的庞大相互作用网络问题的更好选择。

我创建了一个平台,为我的一生事业而奋斗。

2011 年,《Nature》发表了一篇文章:“Xanthomonas 的病原基因组学:理解细菌-植物相互作用”。然后,我在 2012 年大学毕业后继续深造。当我回到大学学习时,这个想法浮现在我的脑海中:我们是否应该开发一个模拟平台来应用于这些问题研究?然后,我花了近 1 年时间编码,从 2013 年到 2014 年构建了 GCModeller 平台。

我的意思是,我可能会也愿意将我的一生奉献于细菌 Xcc8004 的研究及其与植物宿主相互作用的计算分析的职业生涯。GCModeller 是这项科学研究事业的第一步。

作为一种植物病原体,植物宿主拟南芥或萝卜如何与 Xcc8004 相互作用,整个事件过程将通过我构建的这个模拟平台来呈现。目前,我只能在 GCModeller 上模拟原核生物,因为构建真核细胞模型非常困难,因为真核细胞的结构和遗传密码比原核生物更复杂。也许我可以在未来的几年里完成这项工作,以获得博士学位。
尽管这样一个庞大的项目需要我数年才能完成,但它值得我付出努力。因为我们都希望有一种简单的方法通过编程来建模一个细胞,而细胞系统就像一个 .NET 程序集。所以,也许将来我们可以通过 GCModeller 将类似 VisualBasic 语法的编程语言引入遗传学研究人员,以构建细胞模型。这真是太棒了!

 

当前可用的虚拟细胞模拟平台

此表列出了我所知的虚拟细胞模拟平台。

虚拟细胞平台
平台 细菌 语言  首页
vcell   C++ & Java http://vcell.org/
simtk 泌尿生殖道支原体 Matlab http://simtk.org/home/wholecell
E-Cell 大肠杆菌 C++ http://www.e-cell.org/
GCModeller 甘蓝上黄单胞杆菌 pv. campestris str. 8004 VisualBasic (未发布)http://GCModeller.org/

 

  • vcell:   Moraru, II, et al. (2002). "The virtual cell: an integrated modeling environment for experimental and computational cell biology." Ann N Y Acad Sci 971(1): 595-596.

  • E-Cell:   Tomita, M., et al. (1999). "E-CELL: software environment for whole-cell simulation." Bioinformatics 15(1): 72-84.

  • simtk:   Karr, J. R., et al. (2012). "A whole-cell computational model predicts phenotype from genotype." Cell 150(2): 389-401.

 

“GCModeller”是 genome-in-code modeller 或 genetic clock modeller 的缩写。 “genome-in-code”项目的目标是在您的桌面或服务器上创建一个虚拟细胞模拟平台,GCModeller 目前仅支持细菌模拟。

GCModeller 中的所有组件均在 visual studio 2013 中使用 VisualBasic.NET 语言开发,但所有组件的源代码都可以使用 sharp develop 轻松转换为 C# 语言。
为什么选择 VisualBasic 语言,原因如下:

 

  1. 由于其类似英语的语法和关键字,VisualBasic 的开发 IDE 对生物学研究者更友好。我是一个 BASIC 系列语言的忠实粉丝:QBASIC、VisualBasic 6 和 VisualBasic.NET。我已有近 7 年的 Basic 语言编程经验。
  2. 因为它完全支持面向对象编程特性,所以我们能够对整个细胞进行建模。
  3. VisualBasic 中的 LINQ 语法使得对象查询更加容易,而不是在代码中使用大量的 For 循环使我们的代码变得庞大。
  4. VisualBasic 支持 MySQL 免费数据库服务器。
  5. VisualBasic 是一种跨平台语言,可以使用 mono 运行时(而非 wine)在 Windows/LINUX/MAC 上运行。
  6. 使用 VisualBasic 创建 GUI 界面既简单又美观。
  7. 使用反射操作可以轻松扩展程序,并进行动态编码。
  8. 在 VisualBasic 中轻松进行并行计算。
  9. 使用 VisualBasic 进行开发非常智能且快速。

 

GCModeller 虚拟细胞系统

我们的组织主页 `GCModeller.org` 现已上线,但仍在建设中,我尚未完成。

封面图片 - GCModeller 官方网站截图: GCModeller.org

GCModeller.org 上显示的網絡圖像,是植物病原体细菌Xanthomonas oryzae pv.oryzicola BLS256 的代谢通路可视化图像。代谢通路的原可视化数据可以从 MetaCyc 数据库(`http://www.metacyc.org/`)下载,或从 KEGG 数据库(`http://www.genome.jp/kegg/pathway.html`)组装。当我们下载了 Xoc BLS256 MetaCyc 数据库后,就可以使用 GCModeller 从 **pathways.dat** 数据库表文件中导出组分元素相互作用关系,然后 GCModeller 可以与 cytoscape 软件(`http://cytoscape.org/`)交互以绘制网络图像。

 

在 GCModeller.org 下载完整尺寸的网络可视化图像。

 

使用 VisualBasic 代码可视化细菌基因组。

GCModeller 中的所有核心逻辑组件均使用 VisualBasic 语言编写。GCModeller 主要由两部分组成:

1. 一套生物信息学/系统生物学数据分析工具库

这些库工具包括:

  • 高通量 RNA-seq 数据分析(主要包括序列组装,以及基于 RNA-seq 数据分析的遗传结构分析);
  • 细菌基因组注释工具(基因组注释基于本地 blastp 分析(**https://www.ncbi.nlm.nih.gov/**)以及许多生物数据库,如:**COG、Pfam、GO、KEGG、Regprecise、CDD**)
  • 序列模式搜索工具和一些序列特征搜索工具,如 TF 调控基序位点、CRISPR 位点等……
  • 整个细胞计算分析或基因表达调控网络/代谢网络的局部细胞网络分析的模拟库。(实际上,当您完成细菌基因组注释的步骤后,您就可以将注释的组分组装成网络模型,或虚拟细胞计算模型)。
  • 用于基因组注释/细胞网络模拟数据的数据可视化库(基于 genbank 数据库的大规模 blast 结果可视化,MEME 程序(**http://meme-suite.org/**)分析的序列图谱可视化,基于 GDI+ 库的 3D 蛋白质结构可视化引擎,通过编程与 cytoscape 交互的细胞网络可视化)。

2. 新型脚本语言运行时库

GCModeller 具有 3 种用户界面(ShoalShell API 面向生物信息学研究者,.NET 类库面向 GCModeller 开发人员,GCModeller IDE 面向生物学研究者;目前 ShoalShell API 和 .NET 类 API 接近完成,IDE GUI 在 Linux 上不稳定,仍在开发中)。鼓励用户使用 shoal shell 语言执行 GCModeller 分析。由于它最初是用 .NET、R/VisualBasic/CMD 混合语言语法开发的,与任何 .NET 语言完全兼容 DataType,因此可以轻松地嵌入到任何 .NET 程序中。最近 shoal shell 脚本语言成功应用于 `Mipaimai (http://mipaimai.com/)` 实时域名实例拍卖服务器管理员控制台。shoal shell 语言为拍卖服务器提供了整个业务逻辑,为 PC 客户端和 Android 手机移动客户端提供服务。

 

我们希望将“genome-in-code”项目发展成为一个全球性的协作项目,就像 Linux 系统一样,专注于计算生物学研究。因此,我们选择完全开源整个 GCModeller。GCModeller 的开发得益于 `codeproject.com` 和 codeplex.com 这两个最活跃的 .NET 开源社区。大部分系统架构和编程设计模式的代码都来自这两个社区优秀文章和项目的想法。非常感谢你们,我也尝试在 codeproject 上发布关于构建 GCModeller 组件的文章,以帮助其他有相同想法的人。

GCModeller 组件列表

这里是一份关于 GCModeller 组件详细代码实现信息的文章列表,这些文章已在 codeproject 上发布,并且随着 GCModeller 的发展,该列表将持续更新。

 

  • MYSQL 数据库服务器适配器包装器

该项目实现了 MySQL 数据库服务器上的模型数据读写操作,并使模型编译器开发更加容易。

https://codeproject.org.cn/Articles/638976/Visual-Basic-Using-Reflection-to-Map-DataTable-in

  • 用于查询生物数据库的 LINQ 脚本

此查询脚本最初来自 VisualBasic 语言中的 LINQ 语法,您可以使用此脚本语言查询 GCModeller IDE 中的本地生物数据库。

https://codeproject.org.cn/Articles/721827/LINQ-Script-A-Universal-Object-Oriented-Database-Q

 

 
  • * PLAS 代谢模拟系统核心

尽管我们最终使用了一种基于流行 FBA 模型修改的模拟算法,而不是 PLAS 模型,但我仍然想向您介绍这个模型,因为 EO Voit 撰写的《Computational analysis of chemical system》一书是第一个将 PLAS 模型引入科学研究领域的,所有 genome-in-code 项目中的想法都来源于这本书,这是我最喜欢的书。

https://codeproject.org.cn/Articles/664153/Modeling-the-Biochemical-System-Using-VB

 

[^] http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2291792/

 

 

 

  • PLAS 脚本的数学计算引擎

此模块支持 PLAS 模型中复杂的数学表达式计算。

https://codeproject.org.cn/Articles/646391/A-complex-Mathematics-expression-evaluation-module

 

  • GCModeller IDE 插件系统

这是 GCModeller IDE 的一个插件系统;它基于反射技术,可以动态加载命令到 IDE 菜单。

https://codeproject.org.cn/Articles/703590/Develop-a-Plugin-extension-for-your-VisualBasic-ap

  • 数据交换库

CSV 文件格式是 R 语言在生物信息学编程中最常用、最通用的格式。这是我的项目中用于交换 genome-in-code 程序和 R 服务器之间数据的 CSV 文件格式包装器。此库中的扩展方法使我的编码工作更加轻松!

https://codeproject.org.cn/Articles/788006/A-powerful-CSV-document-wrapper-library

如前所述,VisualBasic 在数学算法方面并不擅长,因此大多数大型且需要精确计算的任务都在 R 语言中执行。因此,GCModeller 混合编程(VB/R)的能力很重要。这两个库提供了混合编程的能力。

https://codeproject.org.cn/Articles/832975/Guide-line-of-integrated-ShellScript-with-R-Hybrid

https://codeproject.org.cn/Articles/890099/R-language-S-Object-Serialization-to-NET-Object

 

  • 用于系统生物学的 VisualBasic ShellScript

这是一种新型脚本语言,最初在 VisualBasic.NET 中开发,用于系统生物学研究。“genome-in-code”项目 API 库中包含大量函数:实验数据分析和数据可视化。

https://codeproject.org.cn/Articles/820854/Powerful-ShellScript-for-bioinformatics-researcher

您现在可以从 SourceForge (http://sourceforge.net/projects/shoal/) 下载这种新脚本语言的源代码。

 

Xcc8004 遗传时钟图

遗传时钟是细菌基因组广泛调控中最有趣的

现象,GCModeller 是 Genetic Clock Modeller 或 Genome-in-Code Modeller 的简称,这个虚拟细胞平台最初就是为了研究这种现象而设计的。

 

 

 

关于遗传时钟研究的 Nature 文章

[^] http://www.nature.com/nature/journal/v463/n7279/abs/nature08753.html

GCModeller IDE

我们已经完成了 GCModeller 模拟引擎内核的开发工作,该引擎目前正在实验室测试中。在我们的科学研究文章发表之前,整个项目编译的程序集将从 SourceForge 和 codeproject 上发布。GCModeller 为遗传学或分子生物学研究者提供了出色的 GUI 界面;我刚刚在今年 2 月完成了 GUI 框架开发,并在此分享给大家。

图 6. GCModeller IDE 截图

该 IDE 具有类似 visual studio 2010 的 GUI 界面,并且基于 WinForm 技术而非 WPF,以便 GUI IDE 可以在 Linux 平台上运行,因为根据我的测试,WinForm 比 WPF 在 mono 运行时环境中与 LINUX 桌面环境的兼容性更好。虽然 IDE 可以在 LINUX 平台上运行,但 mono WinForm 中存在许多 bug 问题,目前不稳定,您在 Linux 上使用此 IDE 的体验并不佳。可能在 mono 运行时下一个更新版本中会解决这些问题。

特别感谢

GCModeller IDE 的 Form 基类来自这里。

https://codeproject.org.cn/Articles/138661/Metro-UI-Zune-like-Interface-form

genome-in-code 程序和 R 服务器之间的交互是通过 RDotNET 进行的。

https://rdotnet.codeplex.com/

GCModeller 数据分析的数学库

http://www.alglib.net/

GCModeller 中的 RNA-seq 数据由从 BOW 项目封装的高性能库进行分析。

http://bow.codeplex.com/

© . All rights reserved.