[返回科技频道首页]·[所有跟帖]·[ 回复本帖 ] ·[热门原创] ·[繁體閱讀]·[版主管理]
你用Python我用AWE,工作流程工具能让我们做回朋友吗?
送交者: 潜水人[♂★★★声望勋衔13★★★♂] 于 2019-10-18 1:39 已读 1098 次  

潜水人的个人频道

工作流程工具如何让你的计算机程序可移植、可维护、可重现、可共享。

虽然重新发明轮子毫无意义,但计算生物学家有时不得不这么做。所以当Rob Finn和Folker Meyer意识到他们的工作有多少重合部分的时候,就决定做一些新的尝试。

插图:The Project Twins

Finn是欧洲生物信息学研究所(EBI)序列簇团队的负责人,而Meyer是美国阿贡国家实验室的计算机科学家。两人的设备都能执行计算量很高的宏基因组分析,这种分析可以从DNA片段重构微生物群落。两人意识到,如果试着运行一下对方的程序,应该会很有帮助。但有一个问题:他们的分析“管线”使用的是不同的语言——这种经过精心设计的计算步骤可以将原始数据转换成科学知识。Meyer的团队使用的是一种叫做AWE的内部系统,而Finn则写了差不多9500行Python代码。



Finn说:“那些Python代码实在太糟糕了。”既复杂又难以维护。七年多来,至少有四个程序员各自往里加入了一些取巧用的比特运算,而且代码与“计算机架构密不可分”。也就是说,这些代码是为一台特定的超级计算机写成的,使用了一种特定的方式来组织输入输出文件,因此在他们的研究所之外基本不能用。同时,研究所并不用AWE,所以他们也跑不了Meyer的代码——直到Finn和Meyer听说了“通用工作流语言”(Common Workflow Language,CWL)。



CWL是一种描述分析管线和计算工具的方式——这类系统已经有超过250种了,其中比较流行的包括Snakemake、Nextflow和Galaxy。虽然它们使用了不同的语言,支持不同的特性,但这类系统有着共同的目标:让计算过程能够重现、移植、维护、共享。CWL本质上是一种让研究人员用来共享管线的交换语言。对于Finn来说,这门语言让他的代码库变得正常了,减少了大约73%的代码。更重要的是,这让代码更容易测试、执行和共享新的算法,以及在云上运行。



学习这种流程语言会有一个学习曲线。但正如新药研发公司Hexagon Bio的联合创始人、数据主管Brian Naughton所说,“掌握这门语言的价值远不止让你的代码实现重现这么简单。”

一步一步来

对计算生物学家来说,管线就是实验方法。和实验室里摆弄试剂的过程一样,必须记录在案。但是计算管线通常包含几十个步骤,记录工作量庞大。加州大学戴维斯分校的生物信息学家Titus Brown计算出,使用他的转录组从头组装的管线分析六个样本——其中包括数据下载,质量控制,归一化,组装,注释和分析——需要“100多个步骤”。科学家必须精确记录每一步的执行方式,才有可能在之后重现分析过程。



通常来说,研究者会使用通用脚本语言将工作流程写成代码,例如Python或者Bash。但是这些语言缺乏必须的自由度。工作流程可能会涉及到成百上千个数据文件;管线必须能够监督执行进度,并且当任何一个步骤失败的时候必须能妥善地收尾。而管线必须足够聪明,能够研究出哪些任务需要重新执行,哪些不需要。



澳大利亚圣文森特医学研究所的生物信息学家Davis McCarthy说,他读博士时只需要相对简单的工作流程,用Python和R完全够了。但是现在,McCarthy所使用的单细胞数据集有着多了几十倍的样本量。由于网络和内存等问题一定有些会失败。他说:“对于这种数据量的分析来说,从零开始搞明白这些实在是我力所难及的。”他改用了基于命令行的Snakemake(见“工作流程的解析”)。



  工作流程的解析

按照计算机科学的传统,我们在Snakemake的创造者,杜伊斯堡-埃森大学的Johannes K?ster的帮助下架设了一个简单的“Hello, world!”程序作为示例。给一个写了你名字的文本文件,工作流程就会生成一个欢迎信息,拆成几块,给每块首字母大写,再重新组合成文本(网址:https://github.com/jperkel/Snakemake_example)。



Snakemake是基于规则的。第一条规则(“all”)指明想要生成的文件;接下来软件会利用其他规则确定如何生成。加州大学戴维斯分校的生物信息学家Titus Brown解释说,这就好像先决定晚餐吃什么,然后往回思考一步一步该怎么做:想要吃番茄酱意面,就要先做蕃茄酱;要做蕃茄酱,就要烧番茄和洋葱,诸如此类。



这次的工作流程包含三个步骤:“helloworld”,“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。



近期有一篇预印本详细介绍了关于工作流程代码的指南。(M. van Vliet Preprint at https://arxiv.org/abs/1904.06163; 2019)



更麻烦的是可扩展性。在笔记本电脑上执行的脚本很少能不经改动就在计算机集群或云上执行。这些系统通常在输入格式、身份验证和配置上都要遵守特定的要求,才能让计算机理解你所需要的计算资源。除此之外,很多管线也都是为实验室特定的计算环境量身定做的。



工作流程系统可以简化这种复杂度。有些系统,例如Galaxy,允许用户在点击式的用户界面上构建管线。另外一些系统则使用了文字式的命令行。不过,所有系统通常都会支持一些核心函数,包括“可重入”(从上一次执行中断的地方继续流程),可扩展性,以及可以为每个步骤分别指定计算环境的能力。很多系统支持Conda等软件安装工具,以及Docker等容器化系统。这就意味着其他用户即使计算环境不同,仍然可以执行这些管线。此外,工作流程系统还可以就其执行历史生成详细的报告。



曼彻斯特大学的计算机科学家Carole Gobl说,容器是工作流程上特别有用的一类附加功能,因为它允许研究者将执行每个步骤所需的计算组件精准打包。其他用户可以下载这些容器,以使用他们自己的系统重现计算环境。它们甚至允许不同的步骤使用通常情况下不相容的组件,例如不同版本的Python。她说:“多亏了有容器,有了它真的改进很多。”



2018年,非洲生物信息网络H3ABioNet的研究者们构建了四条管线——两条使用了CWL,两条使用了Nextflow——并将它们存在了Docker容器中(S. Baichoo et al. BMC Bioinform. 19, 457; 2018)。这样,就能让计算结果可以重现,工作流程也可以在网上下载,尽管不同人用的计算资源各不相同。

黄金标准

麻省理工和哈佛大学的博德研究所的软件产品经理Ruchi Munshi说,他们那里的计算生物学家很有动力开发并使用Cromwell工作流程系统及其语言WDL(工作流程定义语言),这样可以让研究所内部共享工作流程变得更为标准化,并让非程序员出身的生物学家更容易使用,扩展性也更好。



Munshi认为,标准化是工作流程系统的特殊优势。使用脚本语言时,写管线并无一定之规。因此想要将不同步骤融合到新的管线中就会很困难。但是使用工作流程语言时,研究者就可以将相容的步骤组合成库,之后可以像积木一样组装起来。例如,博德研究所在GitHub、Terra和容器库dockstore.org上为他们的GATK软件发布了WDL管线(Dockstore还列出了使用Nextflow和CWL所写的工作流程)。



“nf-core”项目正在为Nextflow系统构建一批符合黄金标准的生物信息管线。在SciLifeLab创立了nf-core的Philip Ewels说,其目标是构造出可以稳定运行,并拥有一些标准特性(例如与Docker和Conda的兼容性)的一批管线。“如果你可以执行其中一条,就可以执行所有管线。”



至于CWL,其目标则是通过分离工作流程中的计算部分和执行用代码,来为不同工作流程系统间提供可移植性。Goble正在为CWL构建可搜索的工作流程仓库。他说:“CWL的任务真的就是成为一种所有人通用的工作流程语言。就这样。它正如其名。”



所以,你需要工作流程系统么?不是所有项目都需要的,并且它还有学习曲线。对一次性的计算或是还在思考管线该怎么写的情况下,脚本语言通常就够了。大多数人都认为,关键在于你是否需要不断重复执行同样的工作流程,或是数据是否可能被发表



Ewels说,幸好这些语言很容易学,例子也很多。“当你熟悉以后,就会习惯起用它了。然后你会想,没这东西的时候是怎么活过来的。

原文以Workflow systems turn raw data into scientific knowledge为标题

发表在2019年9月2日的《自然》工具箱

喜欢潜水人朋友的这个贴子的话, 请点这里投票,“赞”助支持!
[举报反馈]·[ 潜水人的个人频道 ]·[-->>参与评论回复]·[用户前期主贴]·[手机扫描浏览分享]·[返回科技频道首页]
帖子内容是网友自行贴上分享,如果您认为其中内容违规或者侵犯了您的权益,请与我们联系,我们核实后会第一时间删除。

所有跟帖:        ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )


    用户名:密码:[--注册ID--]

    标 题:

    粗体 斜体 下划线 居中 插入图片插入图片 插入Flash插入Flash动画


         图片上传  Youtube代码器  预览辅助

    打开微信,扫一扫[Scan QR Code]
    进入内容页点击屏幕右上分享按钮

    楼主本栏目热帖推荐:

    >>>>查看更多楼主社区动态...






    [ 留园条例 ] [ 广告服务 ] [ 联系我们 ] [ 个人帐户 ] [ 版主申请 ] [ Contact us ]