展开

基于nextflow设计云流程

最后发布时间 : 2023-09-09 17:29:49 浏览量 :

需要考虑问题

  • 如何检查process的状态是否已经缓存?
    • 将process的id写入数据库,数据库设立字段判断文件是否缓存
  • 在交互式报告中,如何单独运行一个process?

缓存

-cache: Enable/disable processes caching.
nextflow缓存的机制是为每一个任务分配一个唯一的id,这个任务id被用来创建一个隔离的执行目录,任务在这个目中执行并存储结果Execution cache and resume
任务唯一的ID128位哈希组成,其中包括任务出入文件和执行命令。

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