zoukankan      html  css  js  c++  java
  • 生物信息流程搭建方法


    先来看一则招聘信息:
    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	ID:{sample}	SM:{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

  • 相关阅读:
    P1019 单词接龙
    最小生成树模板题POJ
    区间DP
    牛客多校第三场-A-PACM Team-多维背包的01变种
    洛谷P1004 方格取数-四维DP
    牛客多校第二场A run(基础DP)
    P1494 [国家集训队]小Z的袜子(莫队)
    洛谷:过河卒
    Codeforces Round #486 (Div. 3)-B. Substrings Sort
    判断的值是否为空
  • 原文地址:https://www.cnblogs.com/jessepeng/p/13487262.html
Copyright © 2011-2022 走看看