基于nextflow设计云流程
最后发布时间 : 2023-09-09 17:29:49
浏览量 :
需要考虑问题
- 如何检查process的状态是否已经缓存?
- 将process的id写入数据库,数据库设立字段判断文件是否缓存
- 在交互式报告中,如何单独运行一个process?
缓存
-cache: Enable/disable processes caching.
nextflow缓存的机制是为每一个任务分配一个唯一的id,这个任务id被用来创建一个隔离的执行目录,任务在这个目中执行并存储结果Execution cache and resume。
任务唯一的ID由128位哈希组成,其中包括任务出入文件和执行命令。
work/
├── 12
│ └── 1adacb582d2198cd32db0e6f808bce
│ ├── genome.fa -> /data/../genome.fa
│ └── index
│ ├── hash.bin
│ ├── header.json
│ ├── indexing.log
│ ├── quasi_index.log
│ ├── refInfo.json
│ ├── rsd.bin
│ ├── sa.bin
│ ├── txpInfo.bin
│ └── versionInfo.json
├── 19
│ └── 663679d1d87bfeafacf30c1deaf81b
│ ├── ggal_gut
│ │ ├── aux_info
│ │ │ ├── ambig_info.tsv
│ │ │ ├── expected_bias.gz
│ │ │ ├── fld.gz
│ │ │ ├── meta_info.json
│ │ │ ├── observed_bias.gz
│ │ │ └── observed_bias_3p.gz
│ │ ├── cmd_info.json
│ │ ├── libParams
│ │ │ └── flenDist.txt
│ │ ├── lib_format_counts.json
│ │ ├── logs
│ │ │ └── salmon_quant.log
│ │ └── quant.sf
│ ├── ggal_gut_1.fq -> /data/../ggal_gut_1.fq
│ ├── ggal_gut_2.fq -> /data/../ggal_gut_2.fq
│ └── index -> /data/../asciidocs/day2/work/12/1adacb582d2198cd32db0e6f808bce/index
-resume
命令行可以从上一个成功执行的命令继续运行。
nextflow run <script> -resume
实际上工作流是从一开始就执行的,但是,在启动进程执行之前,Nextflow 使用任务唯一 ID 检查工作目录是否已经存在,以及它是否包含带有预期输出文件的有效命令 exit 状态。
如果满足此条件,则跳过任务执行,并将以前计算的结果用作流程结果。
Work directory
使用参数-w
可以指定不同的work执行目录
nextflow run <script> -w /some/scratch/dir
注意:如果删除或移动工作流的work目录,-resume
参数将失效,因为任务目录名称的hash的计算规则如下:
- 完整的文件路径
- 文件大小
- 最后修改的时间戳
因此touch
文件将会使task之前执行的相关目录失效
nextflow run rnaseq-nf -resume mighty_boyd