生物信息流程搭建方法

先来看一则招聘信息:


image.png

关于生物信息流程,不同的分类标准可能得到不一样的分类结果,比如:
A review of bioinformatic pipeline frameworks这篇综述中,按照隐式公约框架、明确框架、配置框架和基于类的框架等对现代的生物信息流程框架进行分类。

image.png

生信分析流程构建的几大流派按照脚本语言流、Common Workflow language 语言流、Makefile流、配置文件流、Jupyter notebook和R markdown流等分为不同流派。

依我看,生物信息流程无非分为旧方法和新方法两类(废话~~~),分别了解一下。

1. 脚本语言+配置文件

传统的方法,也是目前最常用的流程搭建方法,尤其是在工业界。

脚本语言

  • 数据处理:Python/Perl/Java
  • 模块实现:Shell
  • 统计绘图:R

配置文件

  • json
  • xml
  • yaml
  • 自定义文本文件,如config

缺点:

  • 不同的流程可能使用不同的脚本语言、对使用者的计算机技能要求较高
  • 脚本类的工作流执行,无专业的解析引擎,运行状态无法监控
  • 脚本健壮性要求高,如果错误处理没有做好,可能造成时间和资源的浪费

2. CWL/WDL

最新流行的流程工具,但实际上在工业界并没有普及。

CWL(Common Workflow Language)普通工作流语言和WDL(Workflow Description Language)工作流描述语言。定义每一个计算过程(脚本)的输入和输出,然后通过连接这些输入和输出,构成数据分析流程。

可以在多个平台执行,比如本地服务器、SGE 集群,云计算平台等,可以做到一次编写多处执行。Linux版本最有名的如snakemake, nextflow,bpipe等。图形界面版的如Galaxy,一些商业公司的云平台(拖拉图标即可)。

Cromwell 是 Broad Institute 开发的工作流管理引擎,支持 WDL 和 CWL 两种工作流描述语言。

CWL中snakemake的一个示例语法:

configfile: "config.yaml"


rule all:
    input:
        "report.html"


rule bwa_map:
    input:
        "data/genome.fa",
        lambda wildcards: config["samples"][wildcards.sample]
    output:
        temp("mapped_reads/{sample}.bam")
    params:
        rg="@RG\tID:{sample}\tSM:{sample}"
    log:
        "logs/bwa_mem/{sample}.log"
    threads: 8
    shell:
        "(bwa mem -R '{params.rg}' -t {threads} {input} | "
        "samtools view -Sb - > {output}) 2> {log}"

rule report:
    input:
        "calls/all.vcf"
    output:
        "report.html"
    run:
        from snakemake.utils import report
        with open(input[0]) as vcf:
            n_calls = sum(1 for l in vcf if not l.startswith("#"))

        report("""
        An example variant calling workflow
        """, output[0], T1=input[0])

可参考博文:
https://www.jianshu.com/p/8e57fd2b81b2

WDL语法结构:

  • workflow
  • task
  • call
  • command
  • output

示例:

workflow myWorkflow {
    call myTask
}
task myTask {
    command {
        echo "hello world"
    }
    output {
        String out = read_string(stdout())
    }
}

用法可参考博文:https://wenlongshen.github.io/2018/09/15/Pipelining-Solution-2/

3.docker

docker不是一个流程方法,只是个封装的容器工具而已,所以这个分类比较牵强,只是上面两种的延伸。我们把自己开发的流程做成Docker镜像,以便使用和分享。

以ChIP-seq等分析时常用的peak calling工具MACS2为例。

  • 下载官方的Ubuntu镜像作为起始镜像docker pull ubuntu,建立一个文件夹用于存放制作镜像过程中所用到的文件,下载MACS2的源码包并新建Dockerfile文件
  • 执行docker build -t macs2:ubuntu.v1 .(慢)
  • 构建成功后,查看并尝试使用该镜像
  • 将该镜像上传到自己的docker hub

具体可参考博文:
https://wenlongshen.github.io/2018/09/08/Pipelining-Solution-1/

Ref:https://www.jianshu.com/p/41f377e20ff7
https://developer.aliyun.com/article/716546
https://zhuanlan.zhihu.com/p/51699674

你可能感兴趣的:(生物信息流程搭建方法)