用途:在 Nextflow 25.10 / 26.04+ 上编写或修改 .nf 脚本时,引导生成类型化、严格语法(strict syntax + 静态类型)的代码。资料指出,预训练数据中多为旧式无类型 DSL2,若不显式提示,模型会回退到已弃用写法;除非项目明确锁定更早版本,否则应使用本技能。
主要能力与要点: 启用方式:脚本需含 nextflow.enable.types = true;26.04 默认启用严格语法,25.10 需 export NXF_SYNTAX_PARSER=v2。params {} 与 output {} 不依赖该开关,但类型化 process / workflow(take:/emit:)需要。 参数:用 params {} 块替代顶层 params.foo = ...;无默认值即必填,26.04 中无默认布尔默认 false;仅在入口 workflow 与 output {} 使用,子工作流应显式传参。 记录:用 record(...) 与 record Name { ... } 替代 tuple;字段按名访问;record 为鸭子类型,多余字段被忽略;不要嵌套 meta,应将 meta 字段展平到 record,下游连接用 by: 'id' 而非 by: 'meta.id'。 进程:输入写成 name: Type 或解构 record(...) / tuple(...);类型替代限定符(path → Path,val → 实际类型,集合用 Set<Path> / List<Path>);可选输入用 Path?;输出为值表达式,如 file()、files()、stdout()、env('VAR')、record(...)、tuple(...),不可只写裸变量名。进程段落顺序:input: → stage:(可选)→ output: → topic:(可选)→ script:/exec: → stub:(可选)。 stage: 段:承接原输入限定符的暂存逻辑,如 stageAs、env、stdin;26.04 中 stageAs 参数顺序为 (value, pattern)。 类型化 workflow:用 take:/main:/emit:,通道用 Channel<T>,单值用 Value<T> 或 T;禁用 Channel. 大写、隐式 it、set/tap、|/&、.out。 输出:用顶层 output {} 替代 publishDir;配置 workflow.output.mode = 'copy'、outputDir 或 -output-dir;26.04 弃用 manifest.defaultBranch。 操作符迁移:set→赋值;tap→前后赋值;branch/multiMap→多个 filter/map;groupTuple→groupBy(输入须为 (key, value) 二元组,无 key 闭包,先 map);cross/combine(by: 0)→join(other, by: 'id');concat→mix(单参数每次一调);merge→join;flatten→flatMap;transpose→flatMap+collect;splitCsv 等作操作符→flatMap { f -> f.splitCsv(...) };toList→collect;distinct→unique;dump→view;collectFile→输出索引文件或 exec: 进程。 严格语法禁用项:import 需全限定、脚本内 class 禁用(用 record/enum 或放 lib/)、顶层语句须进 workflow {}、禁用 for/while(用 each/collect 等)、switch 用 if/else、禁用 *list 展开、用 env('PWD') 替代 ${PWD}、用 def x: Map 替代 def Map x、env 'FOO' 需加引号。 注意:filter 需闭包;join 需 by:(元组用 int,record 用 string);flatMap 不自动展平;map 不丢弃 null;mix 每次单参数。
限制与缺失:资料未提供该技能的安装方式、收费信息、适用平台或其他未提及事实。