构建生物信息云平台

少于 1 分钟阅读

生物信息云平台存在的价值

  1. 由于国家政策(见下文)的支持,使得生物和医疗行业从2015年起就一下子火了起来,而且有越来越火的趋势,又因为互联网是最近十年在中国发展最迅速的行业,对社会和商业产生了重大影响,”互联网+X“的理念被行业提出来,要用互联网技术和思维去赋能其他产业。
  2. 行业起来了,生物和医疗行业的数据就开始爆发式增长,要获取这些数据中的价值就必须要获取、存储、计算分析这些数据,而海量的数据却不是该行业里传统的技术手段能解读的,所以云计算平台的海量存储和计算能力有了用武之地。
  3. 虽然都是大数据,但生物和医疗行业的数据却有各自的特点:
    1. 生物行业的数据尺寸非常大,都是按G为单位,一个人类基因组数据就是100G,一个新菌基因组就是10个G,一家公司随随便便就可以有TB/PB的数据存储量,像华大基因在运营的国家级的”国家基因库“应该是国内拥有最大数据量的单位,其数据量该用多少PB来计算。
    2. 医疗行业的数据非常杂乱,半结构化或者非结构化,数据的清洗和提炼是很大的问题,其数据类型和格式非常多,对数据工程师来说是个噩梦,但是对行业来说是个好事,数据维度多才能从多个角度来看一个事物,才更客观和准确。
  4. 上面是数据本身的特点,另外对于这个行业来说,IT技术并非他们的特长,对于IT从业者的我们来说,能够降低IT技术的使用门槛是我们能够做的事情,与其说手把手教或者各种培训,效率太低,所以做一个工具化/可视化的生物信息云计算平台产品更有意义。国内外提供云计算服务的大厂商有:GoogleAWS腾讯云阿里云百度云华为云

国家政策的支持

构建生物信息云平台的关键技术

生物信息和医疗行业里的现有技术有这么几个特点

  1. workflow 引擎。有很多软件工具,但都是学术圈的非软件工程师写的单机软件,从代码质量和性能来说都不太好,但因为这些工具都是发表过论文的,但由于具备开发软件能力的行内人不多,所以大家只能从这些软件里选,这使得某些相对好用一些的软件的受众就会比较大,且在学术圈都有论文佐证,这些软件也在事实上获得了行业的认可,称为了行业实际标准。如果你自己开发一个软件,代码质量和性能上都非常好,但是在通过学术手段获得大部分人认可之前,大家是不认可该软件的计算结果的。这使得现阶段大家在做科研工作时绝大多数就是在用这些软件串流程(workflow)来实现特定的目的。所以怎么让串流程串的好,管理的好,就是现阶段这个云平台的价值。
  2. 分布式文件系统。上面说过该行业数据的特点是”海量数据+大文件数据“,所以以文件为操作对象的分布式存储系统在使用便利上说更占优势,而且能够更好得跟现有行业软件结合。
  3. 任务管理系统。一个公司会有很多人使用workflow引擎的需求,这么多需求都需要在workflow引擎中启动任务,然后产生结果数据。这些任务是属于什么项目的,输入数据在哪里,输出数据放到哪里,任务运行失败怎么调试,等等,这些事情的管理肯定是在workflow引擎之外的,所以需要一个任务管理系统来实现这个目的。

Workflow

生信工程师串流程的方法很多,有的用shell、perl、python来串,有的用workflow语言来串,总体来讲,自己单机跑一跑就能解决问题,不需要跟其他人协作的,而且还不需要有积累的场景,用前面说的脚本串个流程跑个数据也就够了,反之,各种弊端就暴露出来,所以生产环境大家都用workflow。

workflow引擎是个调度执行系统,根据workflow语言定义的流程来调度和执行。目前行业里支持的workflow语言有:

  • CWL:一个公共的流程描述语言,很多引擎都支持,如Cromwell
  • WDL:一个比较流行的流程描述语言,有好几个引擎支持,如CromwellMiniWDL
  • Nextflow workflow:由nextflow引擎专用的流程描述语言;
  • Argo workflow:由argo引擎专用的流程描述语言;

可见,目前workflow的语言规范非常多,没有形成事实上的行业共识,就看哪几个用的最流行。

怎么选择?

  1. 站在使用者的角度,哪个workflow最简洁、描述性最强且灵活、文档齐全还容易上手,圈里流行度好,就用哪个。上面几个workflow语言从功能上说基本都符合要求,例如 串行、并发、嵌套等等,挑一个比较流行的,选择WDL或者CWL。
  2. 站在开发者/运维者的角度,首先得满足第一点,在此基础上,再选择自己有能力参与定制开发的、社区活跃的项目,因为很可能你公司的一些需求是该项目当前无法满足的,那就得你自己上手开发了。
    1. Cromwell是美国broad研究所开发的开源workflow引擎,是生物信息领域内比较权威的一家机构,该引擎是生信领域比较流行的一个引擎,目前Google、AWS、阿里云、华为云都提供技术支持,当然,对于不提供技术支持的云平台来说也无妨,只要是个IaaS平台就没有不能支持的理由,只是人家不提供技术支持罢了,你自己考官方文档也是可以搞定的。该引擎是用Scala开发的,是一个运行在JVM上的语言,算是一门小众语言,如果你想二次开发,那么你得学这门语言。
    2. Nextflow是西班牙巴塞罗那的生物医学和基因组学研究中心CRG开发的开源workflow引擎,也是专门为了运行生信分析workflow的初衷而开发的,该引擎用Groovy语言开发,也是个运行在JVM上的语言,但它是门解释型语言,所以,运行效率应该是不如Java和上面的Scala的。如果你想要二次开发,那么你也得学习这门语言。
    3. Argo是美国一家财税类软件开发公司intuit开发的开源workflow引擎,不是专门为生信分析所开发的,但是因为也是个workflow引擎,所以天然也支持生信流程。该引擎是用Golang开发的,运行在Kubernetes容器平台里,是IT界比较受欢迎的一种架构。如果你想二次开发,那么你也得学习这门语言。我所在的公司有这方面的专长,所以选择了这个方案,该方案可以无缝集成到现有的IT体系中,是集成度最好的一个选择。我们还给argo项目提交了 Argo Contribution

接下来聊一聊 Cromwell和Argo两个引擎。

Cromwell

集成Cromwell引擎的Workflow架构示意图如下,集成其他引擎的架构其实也是一样的。

官方文档:https://cromwell.readthedocs.io/en/stable/CommandLine/

这里专门说一下该引擎支持的backend,

分布式文件系统

待续

任务管理系统

待续

参考资料

contact me

如果有兴趣交流,看这里