snakemake–最好用的流程管理工具之一,你值得拥有

snakemake–最好用的流程管理工具之一,你值得拥有

还在对着实验室上古大佬留下脚本发愁吗?还在头疼大shell套小shell的屎山吗?还在为找不到问题步骤的shell而烦恼吗?快跟着小果把snakemake学起来吧。

1-Snakemake的安装

首先当然是创建一个snakemake的文件夹啦,文件管理还是很重要滴。

$ mkdir snakemake

$ cd snakemake

然后下载解压官方的示例文档

$ curl -L https://api.github.com/repos/snakemake/snakemake-tutorial-data/tarball -o snakemake-tutorial-data.tar.gz

$ tar –wildcards -xf snakemake-tutorial-data.tar.gz

看到那个environment.yaml了吗,那就是教员佛祖真主赐予我等菜鸡救赎,

电脑屏幕截图

低可信度描述已自动生成

Snakemake连运行环境都帮我们配置好了,github下载的大神pipeline直接运行mamba(不要慌,mamba是conda的强力替代品)

$ mamba env create –name snakemake –file environment.yaml

$ conda activate snakemake

官方示例文件结构如下图所示

img

接下来就到了激动人心的流程搭建了

rule bwa_map: #定义第一条规则,命名为bwa_map

input: #input :输入文件

“data/genome.fa”,

“data/samples/A.fastq”

output: #output:输出文件

“mapped_reads/A.bam”

shell: #shell:运行的shell脚本,也可用run:运行python脚本

“bwa mem {input} | samtools view -Sb – > {output}”

当然,实际项目怎么可能只有一个样本,我们就不能直接写样本名了,snakemake支持使用通配符来批量运行命令,修改一下上面的代码,当然,sample可以做个yaml文件,或者在shell里写个for,这里容小果偷个懒

rule bwa_map: #定义第一条规则,命名为bwa_map

input: #input :输入文件

“data/genome.fa”,

“data/samples/{sample}.fastq”

output: #output:输出文件

“mapped_reads/{sample}.bam”

shell: #shell:运行的shell脚本,也可用run:运行python脚本

“bwa mem {input} | samtools view -Sb – > {output}”

img

流程流程,当然不能只有一个规则啦。接下来再写个sort规则,在头文件把sample定义了,小样本测试可以这样偷懒,大样本还是要yaml文件哦

sample = [“A”, “B”, “C”]

rule bwa_map: #定义第一条规则,命名为bwa_map

input: #input :输入文件

“data/genome.fa”,

“data/samples/{sample}.fastq”

output: #output:输出文件

“mapped_reads/{sample}.bam”

shell: #shell:运行的shell脚本,也可用run:运行python脚本

“bwa mem {input} | samtools view -Sb – > {output}”

rule samtools_sort:

input:

“mapped_reads/{sample}.bam”

output:

“sorted_reads/{sample}.bam”

shell:

“samtools sort -T sorted_reads/{wildcards.sample} ”

“-O bam {input} > {output}”

rule samtools_index:

input:

“sorted_reads/{sample}.bam”

output:

“sorted_reads/{sample}.bam.bai”

shell:

“samtools index {input}”

现在,见证奇迹的时刻

$ snakemake –dag sorted_reads/{A,B}.bam.bai | dot -Tsvg > dag.svg

图示

描述已自动生成

这才是snakemake的精髓有木有,直接生成可视化的流程图,妈妈再也不怕小果看流程shell一脸懵了,天下就没有我小果看不懂的流程。

穿着蓝色衣服的熊

描述已自动生成