流程管理工具Snakemake用法总结

流程管理工具Snakemake用法总结

2023年7月10日发(作者:)

流程管理⼯具Snakemake⽤法总结介绍snakemake 原理image建议的框架├── ├── ├── scripts│ ├── │ └── script2.R└── SnakefileInstallconda create -n py35 python=3.5source activate py35conda install -c bioconda -c conda-forge snakemake⽤conda在python3环境⾥安装。之后,如果python3可以正常⽤。(which python3)可以被访问,那么snakemake可以直接运⾏。不需要source到py35环境。如果没有python3,那么需要source到py35环境才可以⽤snakemake。使⽤常⽤参数--snakefile, -s 指定Snakefile,否则是当前⽬录下的Snakefile--dryrun, -n 不真正执⾏,⼀般⽤来查看Snakefile是否有错--printshellcmds, -p 输出要执⾏的shell命令--reason, -r 输出每条rule执⾏的原因,默认FALSE--cores, --jobs, -j 指定运⾏的核数,若不指定,则使⽤最⼤的核数--force, -f 重新运⾏第⼀条rule或指定的rule。或指定输出结果(绝对路径)--forceall, -F 重新运⾏所有的rule,不管是否已经有输出结果。--forcerun, -R 执⾏指定的rule及下游所有任务.⽆需target。(但rule all中必须有rule的输出⽂件)--keep-going, -k Go on with independent jobs if a job fails.(某任务报错,其他不相关的任务可以继续运⾏)snakemake --dag | dot -Tpdf > 可视化关于f强制运⾏output没有wildcards的:

-f rulenameoutput有wildcards:-f outputfile多个output指定⼀个就可以。要是绝对路径。⽐如rule的output使⽤了wildcards,就像下⾯的join(outdir0, "{sample}_"), join(outdir0, "{sample}_")可以指定(target)即某个样本的输出⽂件snakemake -np -f projects/02snakeReq/e/B_集群投递snakemake --cluster "qsub -V -cwd -q v01" -j 10--cluster 集群运⾏指令qusb -V -cwd -q 表⽰输出当前环境变量(-V),在当前⽬录下运⾏(-cwd), 投递到指定的队列(-q), 如果不指定则使⽤任何可⽤队列--local-cores N: 在每个集群中最多并⾏N核--cluster-config/-u FILE: 集群配置⽂件snakemake -j 99 --debug --immediate-submit --cluster-config --cluster 'bsub_ {dependencies}'snakemake --cluster "qsub -q res -cwd -o logs -e logs" --jobs 32the maximum number of jobs to be queued or executed at the same time可最⼤提交32的jobs同时跑。在cpu允许范围内,jobs越⼤跑的越快使⽤例⼦常⽤# 查看全部流程snakemake -np# 指定snakefilesnakemake --snakemakefile # 重跑rule dedup_realn(dry run),注意如果snakemake认为需要跑的step(rull all输出⽂件推断)还是会跑的snakemake --snakefile -np -R dedup_realn

修改代码后,重跑改变的rulesnakemake -n -R `snakemake --list-input-changes`snakemake -n -R `snakemake --list-params-changes`snakemake -n -R `snakemake --list-code-changes`删除snamake 输出的⽂件 。仅删除rule在output中写的⽂件。最好先和--dry-run跑确认⼀下。同样的还有--delete-temp-output snakemake some_target --delete-all-outputsnakemake index --delete-all-output -np --snakefile ding DAG Would delete /02snakeReq/e/ref/uld delete /02snakeReq/e/ref/flow太⼤了,不看output,只看最终结果snakemake -n --quiet打开zsh关于snakemake的⾃动完成:将以下代码放在~/.zshrc中compdef _gnu_generic snakemake部分运⾏## 所有和这个rule相关的file都会rerun./pyflow-ChIPseq -R call_peaks_macs2## 重跑⼀个样本,只要指定target file./pyflow-ATACseq -R 04aln/##只重跑align rule。./pyflow-ATACseq -f align-f强制跑:依赖的前⾯没有重跑的⽂件亦可以跳过,只要旧⽂件存在就可以跑。有wildcards的rule不能-f来跑。因为没有跑rule all,⽆法推断sample。但可以指定输出⽂件来跑-f查看结果snakemake --summary | sort -k1,1 | less -S# or detailed summary will give you the commands used to generated the output and what input is usedsnakemake --detailed-summary | sort -k1,1 > snakemake_run_put_file date rule version log-file(s) status plan其他功能访问其他rule中的参数rule salmon_quant: input: r1 = lambda wildcards: FILES[]['R1'], r2 = lambda wildcards: FILES[]['R2'], index = _rotected⽤来指定某些中间⽂件是需要保留的,: protected(“”)。expand :相当于列表推导式image邮件通知linkconfig可在snakemake命令时设置。会覆盖中的相同参数。优先认为是number。如果必须识别为string,可以加引号。snakemake mytarget --config foo=barsnakemake --config 'version="2018_1"'prioritestemptemp: 通过temp⽅法可以在所有rule运⾏完后删除指定的中间⽂件,: temp(“”)。Further, an output file marked as temp is deleted after all rules that use it as an input are completed:rule NAME: input: "path/to/inputfile" output: temp("path/to/outputfile") shell: "somecommand {input} {output}"报错和解决反义在rule的shell使⽤awk注意:⼤括号要变成双括号;tab要再次反义grep -v "#" ${{smp}}_|awk ' BEGIN{{FS=OFS="t"}} $10!~/NaN/{{$10=NR}} ...output为⽂件夹Outputs of incorrect type (directories when expecting files or vice versa). Output directories must be flagged with directory().ref_split = directory(join(outdir0, "ref/ref_split"))当output是⼀个⽂件夹?关于snakemake⾃动建⽂件夹好像不⾏。output只能是⽂件 才会建⽂件夹Unable to set utime on symlink /projects/02snakeReq/e/ref/. Your Python builddoes not support it.设置output⽂件来让snakemake了解分析顺序。output⽂件必须是⽂件⽽不是⽂件夹。后rule的input,必须承接前rule的output。⽬前不知道是否也要写在rule all中snp_filter的output,和 snp_indel_anno来衔接annovar_db的output,he snp_indel_anno来衔接报错检查rule的output和rule all的input是否⼀⼀对应imagewildcardsshell中{sample}要写成{}imageMissingOutputExceptionWaiting at most 50 seconds for missing gOutputException in line 525 of projects/02snakeReq/:Missing files after 50 seconds:projects/03svTest//D-korps6_svaba/e的output⽂件必须在输出结果⽂件中。KeyError不同的结果⽂件名不能⼀模⼀样。(写在input,output中的⽂件)举例:下有lumpy和manta⽂件夹,都有⽂件。后⾯在⽂件夹下也有⽂件。⽽且这三个⽂件分属不同的rule。sample会识别错误KeyError: 'A-korps6_pindel/A-korps6'Wildcards:sample=A-korps6_pindel/A-korps6重跑流程重跑流程,当原来产⽣的⽂件要被覆盖时,可能会出现ProtectedOutputException。要⽤protected()ProtectedOutputException in line 114 of Resequencing/_INDEL_detection_v2/snakefile_:Write-protected output files for rule index:/projects/04liver_cancer/e/ref/参考1. ⽣信分析流程构建的⼏⼤流派2. snakemake框架3. snakemake pyflow-ATACseq流程4. /AAFC-BICoE/snakemake-mothur5. 使⽤GATK和snakemake框架的总结6. yaml语⾔教程7. snakemake 官⽅⽂档8. /inodb/snakemake-parallel-bwa/blob/master/Snakefile9. mutect流程

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688985974a191774.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信