一步到位-生信分析流程构建框架介绍

我们都知道生物信息学(Bioinfomatics)包含两个部分:bioinformatics,即利用生物数据通过计算机学或统计学或数学的方法发现这些数据背后所具有的生物学意义。而随着高通量测序技术的不断发展,各种组学大数据正形成井喷的局面,我们越来越多地将目光聚焦在怎么才能准确、高效、低耗利用好这些数据。好在时至今日,已经有很多科学家开发了非常多优秀的算法及软件,很多时候我们要做的是怎么将这些软件串联起来并构建成生信分析流程,而这项技能通常是各大公司考核应聘者的项目之一。一个好的分析流程在减轻使用者负担的同时,还能够让别人也能够重复你的分析过程,从而保证结论可靠性。

bioinfoPipeline

一切都要从Scripts以及Make说起

生物信息学分析流程可以根据其设计理念的不同分为多个框架,但是追本溯源他们都源于Scripts以及Make的使用[1]。

Scripts即脚本语言,就是利用Unix shell语言或者其他的编程语言如Python、Perl等,将所需要的分析各部分串联起来,最后达到自己想要的结果。这种理念是我们最直观的分析逻辑,也是最常用的流程框架。通常,生信刚入门的同学们会选择这种方式,简单而暴力;段位较高的同学,则会选择将分析内容进行包装,然后提供多个参数选择,增加流程灵活性。大部分时候,这样都会满足我们分析需求,但是其作为一个生信流程有着严重的缺点就是缺乏重入性(reentrancy),即当流程在运行过程中,很容易因为某些不知名的原因而发生中断,而普通的脚本流程只能是从头来过了,就造成了运行时间和运算资源的浪费。

你可能不知道Make是干嘛的,但是聪明的你们如果编译过软件,那么你应该见过Makefile这个文件吧。是的,现在我们就来说它。Make是最常用的软件编译器,作为一个1977年诞生的工具,其存在的年代确实有点久远了,但是其依然在科学计算流程管理文件转化中焕发了新生。这是因为Make引入了“隐式通配符规则”(implicit wildcard rules)的概念,通过文件的后缀以及特定的符号(<,@,$.等)对输入和输出文件进行描述,从而对其进行特定的转换,解决了编译是存在的各种依赖关系,尤其是部分文件更新后,Make依然能够对下游的文件进行更新。如下利用bwa mem进行序列比对的Make规则:


REF:=GRCh38.fa

%.sam : %_1.fq %_2.fq

    bwa mem $(REF) $^ > $@

由于Make原本就不是为科学流程而设计的,自然也会有它的缺点:

  • Make不能够在集群上的多个节点上分派任务进行平行话的运算,这就对于大型任务而言增加了用户的等待时间;

  • Make的语法是限制一个通配符只能在一个规则里面使用,不同规则里面通配符不能互相识别,不然就只能直接输入文件名进行匹配;

  • 尽管Make能够使用简单的Shell脚本,却难以实现更加复杂的逻辑。

虽然Scripts和Make流程满足了我们的基本需求,但是他们都缺乏可扩展性,多任务平行化处理等能力,导致它们都难以面对现在大数据量的分析需求。

现代的流程框架

既然说完了“流程奠基者”的缺点,那么相应会有很多流程框架的出现来克服以上出现的局限性。

  1. Implicit convention frameworks(基于Make的框架):这类框架最典型的例子是NextflowSnakemake,它们在保留了make一贯的隐式通配符的风格(即用rule中定义的通配符来实现上下游文件的依赖关系)的基础上扩展了断点重入、平行化处理、文件名管理等功能,突破了Make的限制,使得他们的使用更加灵活且可控。下面是Snakemake的例子:

    
    rule align_with_bwa:
    
        input:
    
            pair1 = "{sample}_1.fq",
    
            pair2 = "{sample}_2.fq",
    
            bwa = config["bwa"]["path"],
    
            ref = config["references"]["human"]
    
        output:
    
            temp("{sample}.sam")
    
        threads:
    
            config["bwa"]["threads"]
    
        shell:
    
        "{input.bwa} -t {threads} {input.ref} {input.pair1} {input.pair2} > {output}"
    
    

    然后通过执行snakemake -np {A,B,C}.bam就可以依次比对带有A、B、C的A_{1,2}.fq、B_{1,2}.fq、C_{1,2}.fq,这样是不是很方便呢?

  1. Explicit framworks:这一类代表的流程有Ruffusbpipe,它们的特点与Implicit convention frameworks不同的是,它们的执行不依赖于文件名规则,而是类似Scripts依赖于别的任务是否完成。以bpipe进行比对(align)和排序(sort)为例:

    
    align = {
    
        exec "bwa aln -I -t 8 reference.fa s_1.fq > out.sai"
    
        exec "bwa samse reference.fa out.sai s_1.fq > out.sam"
    
    }
    
    sort = {
    
        exec "samtools view -bSu out.sam  | samtools sort -  out.sorted"
    
    }
    
    Bpipe.run {
    
        align + sort
    
    }
    
    

    这样只需在原有的shell脚本的基础上,将每个分析部分进行包装,然后利用Bpipe的语法进行串联,就能高效地利用计算机资源以及进行断点重新运行。(对Shell高度依赖的童鞋们可以值得一试)

  1. Configuration-based frameworks:在这个框架中,任务之间的连接既不依赖于上下游的代码,也不依赖于文件命名规则,只仅仅需要配置文件的输入,通常这个配置文件的格式是XMLYAMLTOML等,然后用对应的格式解释器以及执行步骤就能完成流程的分析。常见的流程有Galaxy等。这种基于配置的流程通常也以在线网站的形式提供服务,它们能够让用户以简单的拖拽、连接的方法构建流程,极大减轻了研究者的负担。下面是Galaxy在线编辑WES分析流程界面:
Galaxy

此外,有些功能较多的生物信息学工具(如:SpliceGrapher)也会提供一个配置文件来管理参数,这样的好处是使得参数的浏览和修改更加直观,减少命令行参数的动态修改,增加流程可重复性!

  1. Class-based frameworks: 前面说到的流程基本上都是将多种软件进行组合,说到底就是用别人的软件来做自己的东西,但是要实现高性能就要用自己的代码来进行特定的分析需求,在小编看来就是在“造轮子”,但是“轮子”造的好能够极大提高数据的处理速度。这一类的典型代表是GATK,其利用JAVA实现了基因检测、SNP calling,用其高性能、高准确性赢得了大家的认可。(PS:Broad Institute是真厉害啊)
GATK

选择适合你的流程

说了那么多流程,你可能要问,到底哪个适合我呢?小编认为:

  1. 如果是完全湿实验且没有时间去学习编程语言的生物研究者,那么我建议可以使用Galaxy这类纯图形界面操作的框架,在完成分析的逻辑构建后就可以高效地进行分析了;

  2. 如果实验室要的是概念证明类的工作,那么就可以使用Implicit/Explicit类的流程,如:Snakemake、Nextflow等,而这一类的流程也比较适合刚入门生信的小伙伴们去尝试;

  3. 如果是需要进行高性能流程开发,致力于解决特定的生物学问题,且有一定的计算机编程基础的话,那么我建议使用Class-based流程。

当然,小编罗列这些框架和流程都只是现阶段比较完善的几种类型。科学是不断发展和变化的,不断会有新的理念来打破原有的思想惯性,希望大家保持一颗不断学习、进取的心,在生信学习的道路上越走越远!!

Reference

[1]Jeremy Leipzig, A review of bioinformatic pipeline frameworks, Briefings in Bioinformatics, Volume 18, Issue 3, May 2017, Pages 530–536, https://doi.org/10.1093/bib/bbw020

欢迎关注公众号:"生物信息学"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容