什么生信流程语言让你极度爽?

生信流程搭建有多难?行业为解决这一问题提出了各种各样的配方,有你熟悉的吗?

一、困境 - 乱

无数机构投入大量人力物力,以期获得一条条可用的生信流程。而有些流程,由于种种原因,存在着巨大的缺陷:

  1. 没有标准,不同的人设计出来的流程,开发、使用方法都不一样。

  2. 将软件/脚本、计算资源以及业务逻辑混在一起,导致代码结构混乱。

由于上述原因,导致非常严重的后果:

  1. 开发周期无限拉上,成本被无限放大。这是由于流程本身的缺陷,导致既难开发,也难维护。代码永远都存在 Bug,一直在修复的路上。

  2. 由于流程的结构不合理,导致想升级、优化某些步骤,或者增加新功能,难如登天。

  3. 君不见有些公司的内部数据库或软件 5、6 年不更新,甚至接近 10 年不更新也不鲜见。

  4. 比如 Python 还停留在 Python2.x 时代,R 还停留在 3.x 甚至 2.x时代,GATK 是 3.x 甚至 2.x,数据库落后官方好几年等等不一而足。主打的就是能跑就行,流程能跑就跑,不能跑我跑。

  5. 有一些软件/数据库,官方都停止维护了,甚至在其网站明确声明不再维护,建议换其他软件/数据库。而有的企业内部却一直不更新,为什么?因为原来流程能跑得通,没人愿意去更新,也怕更新了出错,于是干脆就维持现状。

  6. 由于没有标准,导致每一条流程的使用都得有一个SOP,新人入手极其困难。

困境是:乱,很乱,怎一个乱字了得。f180194f10e980f719c3420adcc5dc06.png

二、传统 - 串

传统的生信流程搭建,关键词就是:串。

用 Shell script / Perl / Python 等脚本语言将需要跑的命令串起来。比如这个基因家族分析:A pipeline for identification of olfactory receptor(OR) gene family

https://github.com/jianzuoyi/orfam

该流程仿的是发了 Nature method 的 Speedseq4a96e4b78a256a61475308438cba0560.png

这种最原始的流程搭建方式,其特点是将流程中要运行的命令、计算资源和业务逻辑绑定在一起。针对一些业务逻辑简单的任务没什么问题,但是对于比较复杂的情况就无能为力了。

三、标准 - 理想丰满

为了解决搭流程的问题,生物信息学领域是很拼的。不少机构都下场,誓要将这一问题彻底给解决。

都号称自己能将生信流程轻松拿捏。 由此多家单位都推出了自己的标准。

fe90e3657eee981357a883457d811505.png

下面仅列举常见的四个:

  • CWL,全称是通用流程语言(Common Workflow Language)。

  • WDL,全称是流程描述语言(Workflow Description Language)。

  • Nextflow,专注于开发生信流程的社区,其 nf-core 有一些现成可用的流程。

  • Snakemake,make 风格的流程搭建。

这是目前大浪淘沙之下剩余下来有一定影响力的。我对这些标准的评价是:浓浓的学院风,非常不接地气。大白话讲就是:难用。

大家有没有见到过一种现象,就是网上有很多介绍各种流程框架的使用教程,大多都虎头蛇尾。一开始雄心壮志,说要掌握某某流程框架,写了几篇之后,发现没法继续了,大都停留在 Helllo World 阶段,然后就没有然后了。

或者最后说一句:遇到了点问题。哈哈哈。。。仅仅是一点问题么。。。

6fdddd28d97d1c38e6c92c2647433c16.png写写 Hello world,各种框架还是很丝滑的。遗憾的是,仅此而已。

四、现实 - 却很骨感

我曾重度使用过 WDL,尝试把公司内自己负责的所有生信流程都用 WDL 重写。因为当年博德研究所联合华大等单位一起在国内大力推广 WDL,当年还成立了所谓的“生物信息协作组”,大概叫这么一个名字,其目的是制定流程搭建标准,大家如果都按照统一标准来,就可以方便流程共享,减少重复工作。多美好的愿望啊。

所以我就躬身入局了。后来发现,这玩意不仅开发麻烦,运行过程中还经常报莫名其妙的错误,根本排查不出原因。这是生产环境的大忌,忍无可忍之后,遗憾放弃。

客观来说,所有标准的出发点都是好的,它们最终的目标都是天下一统,就像秦统一六国:

六王毕,四海一。

遗憾的是,各种标准的提出,本身又成了一个又一个的小王国。所有标准都希望开发者尽入吾彀中,现实却是很骨感的。

这个标准不好,于是又提出一个新的标准。标准之争,最终演变成了标准泛滥。6fcb0f551bee367003317a4c90742fd0.png

五、破局 - 返璞归真

什么才是真正通用的生信流程语言?其实不是别的,正是 Linux,准确地说是 Linux shell,更具体点,可以说是 Bash 脚本语言。

为什么?因为我们是通过 Shell 去调用 Linux 服务器上的生信软件的,Shell 是调用 Linux 命令通用的语言,自然也是通用的生信流程语言了。明白了这一点,就清楚我们搭建生信流程需要坚持的原则了:

  1. 尽量直接使用 Shell 脚本

  2. 如果流程复杂度上升,可以借助胶水语言如 Python / Perl,但是第一步也是要先生成 Shell 脚本

这两个原则,还可以用来判断一个流程框架是否合理。为什么流程框架的第一步必须先生成 Shell 脚本?原因如下:

  1. 灵活性。生成 Shell 脚本,可以向任何后端集群投任务。而向集群投任务,IT 行业已经解决得非常好了,任何集群,都有成熟的任务投递工具。反观一些流程框架,负责任务生成和投递,除了徒增复杂性和向外行表示自己的强大之外,没有任何好处。

  2. 问题排查。如果任务执行失败,直接查看相应 Shell 脚本是否正确就行了,非常方便。有的流程框架不生成 Shell 脚本,有的生成了 Shell 脚本但是放在非常混乱的文件夹下,不利于排查问题。

  3. 结果复现/溯源。Shell 脚本与分析结果放在一起,方便未来复现结果,或者追溯当时生成结果的相关软件及其参数设定。

六、zflow - 让你极度爽

现有标准都不好,于是又提出一个新的+1。

基于一个理念:Linux 才是通用的生信流程语言。zflow 是流程中的一个核心组件,负责生成 Shell 脚本,其支持:

  1. 单样本流程搭建:如转录组标准分析、WGS、WES 重测序等。

  2. 配对样本流程搭建:如肿瘤 NGS 变异检测等。

  3. 支持加测:即支持一个样本多个文库,一个文库多条Lane的实验设计。

  4. 凡是任务之间有复杂依赖关系的流程,都可以通过 zflow 简单实现。

zflow 生成 Shell 脚本后,可以通过插件向不同集群投递任务。如何做到这一点?这得益于 zflow 生成的 Shell 脚本有以下几个特点:

  1. 一个脚本是一个任务。

  2. 纯的 Shell 脚本,可以直接运行。

  3. 附带 Cpu 和 内存需求说明。

  4. 附带任务之间的依赖关系。

因此,zflow 生成的脚本,可以被后续的插件纳入 DAG (有向无环图)中,从而向任意集群投递任务。

最后顺便解释一下 zflow 的命名:z,是字母 a-z 的最后一个,暗含终极之意,zflow,可以称之为:终极 flow。

c58b58385e6721238f4a498d37b32f33.png

七、许可证 - 学术免费

zflow 支持学术免费使用,官网地址为:

https://github.com/jianzuoyi/zflow

欢迎 Fork、加星和下载。

如需商用,请联系【简说基因】团队获得授权。商用权利:

  1. 获取程序所有源码。

  2. 可协助适配任意集群的任务投递,保证真正落地可用。

  3. 赠送两条成熟的生信流程:转录组 Hisat2 + Stringtie 定量(Galaxy 平台同款)、肿瘤 WES 变异检测。可直接用于生产,也是单样本和配对样本流程搭建的范例。

  4. 一年内使用 zflow 流程搭建相关的问题咨询。

很多生信流程,值得用 zflow 重写一遍。

云上转录组分析流程(点击图片跳转

cb1764b351d4568104d9f131a2cd1811.png

一文读懂scRNA-seq数据分析(点击图片跳转)

de9b9694083e90bada9f327f9e933c1c.png

如何自学生物信息学:从菜鸟到专家(点击图片跳转)

6544df82dc53894d23698c6a67b75819.png


往期精彩:

生信人的自我修养:Linux 命令速查手册

经典教程:全转录数据分析实战

网上最全的 R 语言图库(建议收藏)| 简说基因 Recommend

清华大学生物信息学课件资料分享

生物信息学软件:两种风格

新年第一课:从零开始入门Galaxy生信云平台

生物信息学必备的R语言相关参考书 | 简说基因 Recommand

从单细胞数据分析的最佳实践看R与Python两个阵营的博弈

涉嫌侵权,容我解(jiao)释(bian)一下

生物信息学中的可重复性研究

关于简说基因

  • 生信平台

    Galaxy中国(UseGalaxy.cn)致力于打造中国人的云上生物信息基础设施。大量在线工具免费使用。无需安装,用完即走。活跃的用户社区,随时交流使用心得。

  • 联系方式

    QQ交流群(免费):925694514

    微信交流群(免费):加微信好友,注明“Galaxy交流群”

    客服微信:usegalaxy

a7272e9cd19a2fbd436755882b208f16.png

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值