什么是snakemake?
snakemake 是一個流程搭建的工具,這里主要用來記錄一些snakemake的使用方法
- 對於run或者shell部分的需要使用sample變量可以使用wildcards.sample來獲取
- 對於寫好的模塊可以使用include來載入,然后使用rule all定義所有的輸出,這樣運行一個總的模塊就可以直接開啟整個流程
rule all
expand()
include:Filter.snakemake.py
- 指定一個config文件可以使用--configfile 參數來進行傳入
- 如果只控制運行某一個rule,可以加上參數--forcerun rulex
- 做出流程圖
snakemake --dag -s RNAseq.snakemake.py --configfile test.yaml |dot -Tpdf > dag.pdf
snakemake --dag -s RNAseq.snakemake.py --configfile test.yaml |dot -Tsvg > dag.svg
- rule 流程圖
snakemake --rulegraph -s RNAseq.snakemake.py --configfile test.yaml |dot -Tpdf > rule.pdf
- 強制去重新運行一遍rule
snakemake -s RNAseq.snakemake.py --configfile test.yaml --forcerun filter_stat
- 指定運行的cpu數,使用-j參數
- 只打印不運行使用-n參數
- 在使用一個總的模塊來將所有的模塊串起來的過程中,rule all聲明只能寫在這個總的模塊里面
- 如下報錯的原因是因為rule all里面的輸出在其他的子rule里面沒有做為輸出
使用snakemake投遞任務時
snakemake --cluster 'qsub -l vf=15G,num_proc=12 -cwd -q st.q -P P18Z10200N0170 -binding linear:12' --configfile test.yaml --snakefile Denovo.stLFR.snakemake.py --jobs 6
-
--jobs 能設置並行投遞的任務
-
投遞的命令需要加引號
-
當投遞到集群,殺掉snakemake進程時,任務也會殺掉,而wdl是不會出現這種情況的
-
shell里面的命令{}需要用{{}}的方式來寫,與python有點類似