首页  >  热点  >  新闻特写  >  文章正文
shRNA表达克隆

工作流系统推动生信数据共享

Sep 10, 2019 No Comments

工作流系统推动生信数据共享

工作流工具让计算方法更便携、可维护、可复制和可共享。

尽管重新构建基础工具是毫无意义的,但对计算生物学家来说,有时候这是不可避免的。所以当Rob Finn和Folker Meyer意识到他们的工作有很多重叠时,决定尝试一些不同的东西。

Finn是位于英国辛克斯顿欧洲生物信息学研究所(European Bioinformatics Institute)测序团队的负责人,Meyer是伊利诺斯州勒蒙特阿尔贡国家实验室(Argonne National Laboratory)的计算机科学家。他们都有自己的设备,可以让研究人员进行一种叫做宏基因组分析(metagenomic analysis)的计算密集型过程。这种过程可以从DNA碎片中重建微生物群落。他们意识到,如果能互相使用对方的代码,会省很多事情。问题在于,他们的分析“管道”——将原始数据转化为科学知识所需的精心设计的计算步骤——是用不同的语言编写的。Meyer的团队使用的是一种名为AWE的内部系统,而Finn使用的是近9500行的Python代码。

Finn认为这么多行Python非常可怕,这些数据复杂且难以维护。7年多来,至少有4名不同的开发人员以一种特别的方式将代码固定在了一起。Finn表示,这种方式“与计算基础设施紧密相连”——这些代码是为特定的计算资源和特定的文件组织方式编写的,因此在EBI之外的设施上基本无法使用。由于EBI没有使用AWE,因此无法利用Meyer的代码,反之亦然。然后Finn和Meyer学习了通用工作流语言(Common Workflow Language, CWL)。

CWL是描述分析管道和计算工具的一种方式——目前已有250多个可用的类似系统,包括Snakemake、Nextflow和Galaxy等流行选项。尽管它们使用不同的编程语言,支持不同的特性,但这些系统有一个共同的目标:使计算方法可复制、可移植、可维护和可共享。CWL本质上是一种交换语言,研究人员可以使用它为任何系统共享代码。对于Finn来说,这种语言给他的代码库减了负,减少了73%左右的维护测试工作。重要的是,它使测试、执行和共享新方法以及在云中运行变得更加容易。

采用工作流语言有一个学习曲线。但是,位于加州门洛帕克的药物研发公司Hexagon Bio的数据主管和联合创始人Brian Naughton指出,你花在学习工作流语言的精力远小于你浪费在测试代码可复制性上的精力。

 

一步一步来

对于计算生物学家来说,管道是一种方法;就像湿实验室协议(wet-lab protocols)一样,它们必须被记录下来。但是管道通常包含几十个步骤,所以这不是一件容易的事。加州大学戴维斯分校(University of California, Davis)的生物信息学家Titus Brown计算出,使用他的转录组装配流程(包括数据下载、质量控制、标准化、装配、注释和分析)处理6个样本需要“远远超过100个步骤”。如果研究人员希望在以后的某个日期重复这些步骤的话,他们就必须精确地记录每一步是如何执行的。

通常,研究人员使用Python或Bash等通用脚本语言编写工作流。但它们往往缺乏必要的灵活性。工作流可能涉及数百到数千个数据文件;管道必须能够监视它们的进程,并在任何步骤失败时可靠地退出。管道必须足够聪明,能够计算出哪些任务需要重新执行,哪些不需要。

澳大利亚圣文森特医学研究所(St Vincent’s Institute of Medical Research)的生物信息学家David McCarthy表示,在他读博士期间,Python和R语言对于处理简单的工作流是足够的。但是,现在正在研究单细胞数据集的McCarthy需要处理更多的样本,其中一些样本不可避免地会因网络问题和内存不足等问题而失败。McCarthy表示,他完全没有能力为这么大规模的分析从零开始找出答案。相反,他采用了命令行驱动的Snakemake工具(参见文末“工作流剖析”)。

更有问题的是可伸缩性:在笔记本电脑上运行的脚本很少能不经修改而直接在计算集群或云上运行。这些系统通常由特定的格式、身份验证和配置需求来描述,例如,必要的计算资源。还有一个事实是,许多管道都是严格按照实验室特定的计算环境而定制的。

工作流系统可以减轻这种复杂性。某些系统,如Galaxy,允许用户在一个点击鼠标的用户界面中构建管道;其他的操作则基于文本的命令行。然而,所有这些系统通常都支持一些核心功能,包括“可重入性”(从上一次工作流停止的地方开始)、可伸缩性和为每个步骤指定计算环境的能力。许多工作流系统支持Conda等软件安装工具,以及Docker等容器化系统,这意味着其他用户可以运行这些管道,即使他们自己的计算基础设施不同。工作流系统还可以生成详细的流程报告。

英国曼彻斯特大学(University of Manchester)计算机科学家Carole Goble表示,容器对工作流的补充作用尤其强大,因为容器允许研究人员打包执行每一步所需的精确计算组件;然后,其他用户可以下载这些容器,在自己的系统上重新创建该运行环境。它们甚至允许使用不同的步骤来使用互不兼容的组件,例如不同版本的Python编程语言。

2018年,非洲生物信息学网络H3ABioNet的研究人员在CWL和Nextflow中各建造了两条管道,并将它们嵌入Docker容器中(参见https://doi.org/10.1186/s12859-018-2446-1)。尽管计算资源不同,但这样操作的结果可重复,并且可以跨网络访问工作流。

 

黄金标准

麻省理工-哈佛博德研究所的软件产品经理Ruchi Munshi指出,博德研究所内的计算生物学家对开发和采用Cromwell工作流系统及其语言WDL(Workflow Definition Language,工作流定义语言)很感兴趣,因为这可提供更好的标准化和共享工作流,为非程序员生物学家创造更大的可访问性和可伸缩性。

Munshi指出,标准化是工作流系统的一个特殊优势。使用脚本语言的问题是,没有单一的方法来编写管道,因此很难将不同的步骤拼凑到一个新的管道中。但是使用工作流语言,研究人员可以创建兼容部件的库,这些部件可以像积木一样组装起来。例如,博德研究所在GitHub和Terra以及containers registry dockstore.org上为其GATK软件发布基于WDL的管道。(Dockstore还列出了用Nextflow和CWL编写的工作流。)

“nf-core”项目正在为Nextflow系统创建一套金标准的生物信息学管道。Philip Ewels是斯德哥尔摩SciLifeLab公司nf-core的创始人,他指出,公司的目标是创建工作方式一致的管道,并支持一组统一的特性,比如Docker和Conda兼容性。如果你能使用这些管道中的一条,那么你就能使用所有的管道。

相反,CWL的目标是跨工作流系统的可移植性,它将工作流的计算部分与执行它们所需的代码分离。Goble正在为CWL工作流构建一个可搜索的注册表,他指出,CWL的目标就是成为通用的工作流语言,毕竟名字就叫通用工作流言语。

那么,你需要工作流系统吗?并不是每个任务都需要一个工作流,而且学习工作流系统需要花费一定时间和精力。对于一次性任务和处理管道本身,脚本通常就足够了,不需要去学工作流系统。但正如大多数人都同意的是:当你需要反复运行相同的工作流,或者数据可能会被发布时,学习工作流系统就很有意义了。

幸运的是,Ewels表示,这些语言很容易掌握,而且示例很多。一旦你熟悉了它,你就会养成使用它的习惯,然后你就难以想象,以前没有这样的工具,你是怎么过的。

 

 

更多阅读——工作流简介

遵循计算机科学的传统,德国杜伊斯堡-埃森大学(University of Duisburg-Essen)的教授、Snakemake的制造者Johannes Köster建立了一个简单的“hello world”式范例。给定一个带有你名字的文本文件,工作流将创建一条欢迎消息,将其分成块,将其大写并重新组合文本。

Snakemake是基于规则的。第一条规则(' all ')指定要创建的文件;该软件使用其它规则来计算如何构建它。据加州大学戴维斯分校的生物信息学家Titus Brown解释,这就像决定晚餐想吃什么一样,然后再回过头来想办法做:要做意大利面和酱汁,你必须做酱汁;要做酱汁,你必须煮西红柿和洋葱;等等。

工作流程包括三个步骤:“hello world”、“split”和“toupper”;一个额外的规则“clean”能删除所有生成的文件。一小段Python代码决定“split”规则将创建多少个文件及其名称。

要查看该范例的动态演示,可通过go.nature.com/2p8yhv0安装Snakemake,然后执行“Snakemake -s hello_world.smk”;您应该看到一个名为“hello-world.txt”的新文件。要删除创建的文件,键入:' snakemake -s hello_world.smk clean”,导出到CWL: ' snakemake -s hello_world.smk–export-cwl hello_world.cwl”。

最近的预印本为工作流创建提供了有用的指南(https://arxiv.org/abs/1904.06163;2019)。

 


原文检索:
Jeffrey M. Perkel (2019). Workflow systems turn raw data into scientific knowledge. Nature.573:149-150张洁编译

新闻特写, 热点
No Responses to “工作流系统推动生信数据共享”

Leave a Reply


× nine = 81