前言
Hello大家好!我们又见面了!
大家在学习生信分析的时候往往会遇到这样的问题,面对成百上千的样本,跑着同样的流程,如果使用Linux shell或者Python写个分析的pipeline吧,开发时间太长,不灵活,等下一次稍微改变一些参数,或者是要对已有流程进行修改的时候,往往就会又变成了和bug的一场恶战。我们今天就是要给大家介绍一下Snakemake,在Snakemake的帮助下,我们可以快速搭建生物信息学分析流程。
举个例子
我们都知道ATAC-seq是探索染色体开放程度的一项非常重要的技术,比如我们要分析ATAC-seq的数据(注:ATAC-seq的原理请移步 ATAC-seq - Wikipedia),根据ENCODE的建议,ATAT-seq数据分析往往会分成下面几个步骤:
raw FASTQ cut adapter
mapping to the reference with aligner like bowtie2
sort alignment result (BAM files)
remove BAM file duplications
peak-calling with MACS2
如果有50个样品需要跑这样重复的流程,使用shell去写循环提交任务当然可以。但是在提交的时候,我们需要考虑前后生成文件的逻辑,需要考虑整体使用的CPU核心数目,需要考虑如果任务从中间断掉之后怎么去恢复之前的文件状态。还需要考虑,如果生成的文件不完整怎么办等等。此外,除去这些问题,下次我们再跑一个ChIP-seq的数据,虽然也是类似的流程,就需要再次重新构建一个pipeline,费事费力。
那么这个时候就需要请出我们今天的主角——Snakemake!
什么是Snakemake?
Snakemake是一款基于Python3的软件,在它的帮助下,我们不但可以快速搭建流程,还可以实现包括并不限于下列功能的流程控制:
1支持并行运算;
2支持断点运行;
3支持流程控制;
4支持内存控制;
5支持CPU核心控制;
6支持运行时间控制;
7支持向大型计算机集群提交任务;
8…… ……
同时,在Snakemake的帮助下,我们可以生成数据运行的网络拓扑图,就比如我们前文提到的ATAC-seq的数据分析。假设我们有2个重复的ATAC-seq的数据需要分析,那么使用Snakemake搭建出的流程就类似于:
在运行的时候,我们还可以自动生成运行逻辑拓扑图,如下图所示:
国内第2个Snakemake教学视频
为了方便大家的学习,我们为大家录制了Snakemake教学视频。必须要强调的是,国内第1个Snakemake教学视频是2017年由四川大学生物防治实验室的周冉老师录制的(https://www.bilibili.com/video/av15908415)我们这次重新录制主要是因为当时录制的时候,视频不是很清晰,有一些录制方面的问题。同时,当时的视频是以转录组分析为例子进行讲解的,我们这次是以ATAC-seq分析进行示范的。因此,两个视频配合使用,可以达到更好的效果。
此外,本次Snakemake教学内容,还包括了对conda环境创建及使用的简单介绍。
原创: MENG Howard 高通量测序技术
网友评论