前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Snakemake入门

Snakemake入门

作者头像
小汪Waud
发布2023-09-18 12:40:57
2170
发布2023-09-18 12:40:57
举报
文章被收录于专栏:小汪Waud小汪Waud

本期内容主要以整理Snakemake的简单介绍[1]视频为主。

1啥是Snakemake

Snakemake 是一个基于Python3用于构建和管理数据分析工作流程免费工具。

通过 Snakemake,我们可以定义一系列任务以及这些任务之间的依赖关系,从而构建一个可重复、可维护和可扩展的工作流程。

结合conda/mamba,它们很容易被扩展到服务器、集群、网格和云环境。当你整理好流程以后,只需简单替换几个参数,就能快速开始分析一个新的数据。

Snakemake 的另一个强大特性是它的并行处理能力。它可以根据任务之间的依赖关系,智能地并行执行可以并行执行的任务,从而加快整个工作流程的运行速度。

简单来说,它有以下优点:

  • 可读性强
  • 易移植
  • 模块化管理
  • 透明

能生成流程图,看到每个过程

  • 可扩展

可拓展的平台

2如何使用

在 Snakemake 中,可以使用类似于 Python 的语法来描述任务和规则。每个规则定义了一个任务,规定了输入输出以及执行任务所需的命令。Snakemake 可以根据这些规则自动解析依赖关系,确保任务按照正确的顺序执行,以及仅在需要时执行,从而最大程度地提高效率。

因此,想要正确使用Snakemake你需要一个写好了rule的Snakefile,其中rule包含input、output和action(有时也会包含一些参数eg. threads)。

下图是一个示例。

Snakefile示例

入门演示

现在工作路径有以下4个文件,其中.csv为数据,myplotter为绘图脚本,Snakefile为定义好规则的文件。

通过运行以下命令可以生成对应PDF。

代码语言:javascript
复制
./myplotter -o test.pdf ds1.csv

如果通过Snakemake则需要输入以下命令

代码语言:javascript
复制
snakemake ds1_plot.pdf

Snakefile内容如下

代码语言:javascript
复制
rule plot:
    output:  "{dataset}_plot.pdf"
    input:  "{dataset}.csv"
    shell:  "./myplotter -o {output} {input}"
      
rule filter:
    output:  "{csvdata}_filtered.csv"
    input:  "{csvdata}.csv"
    shell:  "egrep -v ^boring {input} > {output}"

它一共8行,定义了2个规则,在rule的后面是规则的名称,输入输出和要运行的命令。大括号为通配符,可以为任意字符串。

当我们运行snakemake ds1_plot.pdf时,它会从规则的output中找到能与ds1_plot.pdf匹配的。当{dataset}ds1时,二者成功匹配。

接下来,把ds1作为匹配项插入input中,即想要生成ds1_plot.pdf,需要ds1.csv,而ds1.csv已经存在于工作目录下了。接下来程序直接读取input和output,执行shell中的命令并获得输出ds1_plot.pdf

进阶演示

接下来加点难度,运行下列代码会发生什么?

代码语言:javascript
复制
snakemake ds1_filtered_plot.pdf

按照入门演示的内容,它首先会从Snakefile中定义的规则中自上而下的进行匹配,这个时候将{dataset}匹配为ds1_filtered;进一步,程序就需要名为ds1_filtered.csv的input。

而工作目录下并没有这个文件,它就会继续往下匹配新的规则。接下来,程序发现只要将{csvdata}匹配为ds1就可以实现rule plot中所需的输入文件ds1_filtered.csv

再把{csvdata}=ds1带入rule filter的input和shell中就会生成所需内容,完成绘图,输出ds1_filtered_plot.pdf

另外,在此基础上,如果我们重新运行snakemake ds1_filtered_plot.pdf会显示命令已经完成,这即是前面提到的“仅在需要时执行,从而最大程度地提高效率”。

如果我们修改了数据,程序会识别文件的修改时间判定其为一个新文件,进而重新运行命令。

3Snakemake 参数

Snakemake的参数非常多,常用的有以下几个:

  • -p:打印运行的shell命令。
  • -n:只展示需要完成的步骤,不运行。
  • -F:强制运行所有步骤。
  • -j:并行运行多个任务。

4最后

视频源自Edinburgh Genomics Training[2],官方也提供很多其他的线上线下课程,感兴趣的可以自行了解。

其他Snakemake教程推荐:

  • 使用SnakeMake搭建生信流程[3]
  • Snakemake Workflow Management! [4]

参考资料

[1]

Snakemake的简单介绍: https://www.bilibili.com/video/BV1nR4y1t7bz

[2]

Edinburgh Genomics Training: https://genomics.ed.ac.uk/services/training

[3]

使用SnakeMake搭建生信流程: https://www.bilibili.com/video/BV1jb411i76T

[4]

Snakemake Workflow Management! : https://www.youtube.com/watch?v=_wUGzqEjg6A&t=1060s

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-01 08:51,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小汪Waud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1啥是Snakemake
  • 2如何使用
    • 入门演示
      • 进阶演示
      • 3Snakemake 参数
      • 4最后
        • 参考资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档