ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生物信息流程搭建方法

2020-08-11 23:02:10  阅读:419  来源: 互联网

标签:脚本语言 流程 生物 https input output docker 搭建


目录


先来看一则招聘信息:
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

标签:脚本语言,流程,生物,https,input,output,docker,搭建
来源: https://www.cnblogs.com/jessepeng/p/13487262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有