snakemake分享ppt
Snakemake介绍
官方文档
其他材料:
blog: snakemake-vs-nextflow
article: Sustainable data analysis with Snakemake
任务投递
示例:
1 | snakemake -s LowFreqConsencus.Pipeline.split.smk -p \ |
常用参数:
- -C
向流程传递参数
例如 -C S=”string” 则在smk中可以通过使用 config[‘S’] 调用相关参数完成参数传递。 -C 传递的值统一保存在字典 “config” 中。 - –jobs
设置并行的最大任务数目。 - –config
向snakemake传递参数(字典形式),会保存在 config 中 - –configfile
指定配置文件路径(可以支持多个) - –cores
设置任务最多使用的核数 - –resources
设置任务最多使用的内存 - –forceall
强制执行某条Rule及它的依赖。 - –list
展示smk脚本中所能获得的所有Rule - –dag
1 | 生成流程逻辑框架图: |
- –touch
更新文件的时间戳(不会重新跑) - –force, -f
重新运行第一条或指定的某条Rule - –forcerun, -R
强制执行snakefile,更新rule时,使用此命令。会同步更新后续的所有结果 - –dry-run, -n
生成相关分析路径的shell脚本,但是不进行实际的执行。 - –keep-going,
在某个任务失败后,继续运行其他的独立任务; - –cluster
针对集群投递到计算节点的参数设置;1
--cluster "qsub -clear -cwd -P P18Z11900N0299 -l num_proc={threads} -l vf={params.resources} -binding linear:{threads}"
- –restart-times
任务失败后,重投的次数1
--restart-times 5
- –rerun-incomplete,
针对结果不完整的数据,重跑所有的rules; - –unlock
解锁被异常锁定的目录 - –stats
记录任务的执行状态,输出到指定文件 - –nocolor
不输出彩色的结果 - –drmaa-log-dir
仅限使用 -drmaa 进行任务调度时有效。 指定shell的log(.e 和 .o)输出目录.
资源配置
SGE
以SGE为例,可以通过设置配置文件,调整每个任务运行时所需要的资源
1 | qsub -clear -cwd -l vf=${mem}g,num_proc=${cpu} -P ${Project_ID} -binding linear:${cpu} -q ${Queue_ID} work.sh -o work.sh.o -e work.sh.e |
创建资源配置文件 cluster.yaml 编辑各个任务资源的相关资源需求。
1 | localrules: all |
为任务单独设置运行环境
通过conda
为计算规则设置单独的计算环境
不同的计算规则中依赖的软件之间可能有冲突,无法在同一个环境中配置好。
使用conda指令,smk可以为每个计算规则新建conda环境,并在其中运行计算。
为rmhost规则新建一个环境:
1 | mkdir envs |
运行smk时,加上–use-conda参数即可为每个规则建立conda的独立环境。
1 | snakemake --use-conda |
rule内的函数
- protected
1
在文件生成后,将文件权限改为 只读文件。
- priority
设置任务优先级,从而一定调整各个rule的运行的顺序。