snakemake分享ppt
其他材料:
blog: snakemake-vs-nextflow
article: Sustainable data analysis with Snakemake
任务投递
示例:1
2
3
4
5
6
7snakemake -s LowFreqConsencus.Pipeline.split.smk -p \
向流程传递参数
-C S=/ifstj2/B2C_RD_H1/Project/Halos_VersionUpdate_test/v1.4.4.2/InterTest/4Pipe.path O=/ifstj2/B2C_RD_H1/Project/Halos_VersionUpdate_test/v1.4.4.2/InterTest \
设置任务投递方式(使用集群sge示例)
--cluster "qsub -clear -V -cwd -P P18Z11900N0299 -q bc_b2c.q,b2c_rd.q -l num_proc={threads} -l vf={resources.mem_mb}M -binding linear:{threads}"
设置snakemake调度任务的指标
--rerun-incomplete --jobs 1000 --restart-times 5 --keep-going --rerun-incomplete --latency-wait 60 --stats runtime.json
常用参数:
-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
2
3
4
5
6
7
8
9
10
11
12
13
14
15localrules: all
__default__: # 默认标准
queue: "Queue_ID"
project: "Project_ID"
workdir: "./"
mem: "1G"
cores: 1
trim: ...
rmhost:
mem: "4G"
cores: 4
output: "cluster_logs/{rule}.{wildcards}.o"
error: "cluster_logs/{rule}.{wildcards}.e"
为任务单独设置运行环境
通过conda
为计算规则设置单独的计算环境
不同的计算规则中依赖的软件之间可能有冲突,无法在同一个环境中配置好。
使用conda指令,smk可以为每个计算规则新建conda环境,并在其中运行计算。
为rmhost规则新建一个环境:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16mkdir envs
cat > envs/rmhost.yaml
channels:
- bioconda
dependencies:
- bowtie2=2.3.5.1
- samtools=1.10
修改Snakefile文件:
rule rmhost:
input: ...
output: ...
conda:
"envs/rmhost.yaml"
shell: ...
运行smk时,加上–use-conda参数即可为每个规则建立conda的独立环境。1
snakemake --use-conda
rule内的函数
protected
1
在文件生成后,将文件权限改为 只读文件。
priority
设置任务优先级,从而一定调整各个rule的运行的顺序。