更新时间:2024-08-08 GMT+08:00
分享

约束限制

当前Nextflow相关特性仅为公测版本,部分功能暂不支持,因此存在如下限制约束。

  • 流程使用的镜像和数据需要按照医疗智能体(EIHealth)平台的规范进行上传

    推荐通过eihealth-toolkit进行上传。eihealth-toolkit介绍详见什么是医疗智能体eihealth-toolkit。数据上传可参考上传数据。。

    数据上传成功后可以在数据详情页面查询,创建Nextflow流程时可以通过设置参数指定对应数据。

    镜像上传可参考上传镜像。镜像上传成功后可以在镜像详情页面查询,复制其镜像地址填入Nextflow脚本中的container字段即可。

    process test {   container 'swr.${regionID}.myhuaweicloud.com/eihealth/admet:2.0.0' }

  • 暂不支持用户设置部分Nextflow配置项

    对于dag, timeline, report,,trace配置,医疗智能体(EIHealth)平台会默认开启并且指定相关路径,会覆盖用户侧配置,可以在作业详情页面查询和下载相关信息。相关信息可参考https://www.nextflow.io/docs/latest/tracing.html

    对于pod配置,暂不支持用户侧设置。若用户侧设置的情况下可能会导致对应Process执行失败。相关信息可参考https://www.nextflow.io/docs/latest/process.html#pod

    对于publishDir配置,用户侧设置时需要使用一定的技巧。目前测试结果表明下面两种写法是可行的, 供参考。

    写法1:

    写法2:

正向用例

如下所示为一个不带业务属性(仅执行基本数学运算)的正向用例,包含了输入输出,串并联场景,适用面较广。

process PROCESS_A {
   input:
   val x​
   output:
   val y​
   exec:
   y = x*10
 }
  process PROCESS_B {
   input:
   val x
   output:
   val y
   when:
   x <= 50
 ​
   exec:
   y = x*10
 }
 ​ process PROCESS_C {
   input:
   val x
 ​   output:
   val y
   when:
   x > 50
   exec:
   y = x*10
 }
 process PROCESS_D {
   debug true
   input:
   val x ​
   output:
   stdout
   script:
   """
   echo $x
   """
 }
 workflow {
   Channel
     .of(1..10)
   | PROCESS_A
   | PROCESS_B & PROCESS_C
   | mix
   | PROCESS_D
 }

基于Nextflow官方提供first script,预期输出会打印Hello world的日志。

https://www.nextflow.io/docs/latest/getstarted.html#your-first-script

#!/usr/bin/env nextflow
 nextflow.enable.dsl=2
 params.str = 'Hello world!' ​
 process splitLetters {
   // 替换为正确镜像
   container 'swr.XXX.myhuaweicloud.com/XXX/admet:2.0.0'
   output:
     path 'chunk_*'
    """
   printf '${params.str}' | split -b 6 - chunk_
   """
 } ​
 process convertToUpper {
   input:
     path x
   output:
     stdout
   """
   cat $x | tr '[a-z]' '[A-Z]'
   """
 }
 ​workflow {
   splitLetters | flatten | convertToUpper | view { it.trim() }
 }

相关文档