我正在开发一个使用自定义模块的 Nextflow 管道。该模块包含一个script_1.py
位于嵌套文件夹 中的 Python 脚本 ( ) <module-dir>/resources/usr/bin
。script_1.py
已设置为可执行文件,并且已在文件中nextflow.enable.moduleBinaries
设置为。但是,当我尝试运行该管道时,出现找不到 Python 脚本的错误。true
./nextflow.config
模块目录结构
modules/
└── local/
└── mymodule/
├── environment.yml
├── main.nf
├── resources/
│ └── usr/
│ └── bin/
│ └── script_1.py
└── work/
错误信息
这是我在运行管道时遇到的错误:
Caused by:
Process `MyProcess (1)` terminated with an error exit status (2)
Command executed:
python script_1.py
cat <<-END_VERSIONS > versions.yml
"MyProcess":
python: $(python --version 2>&1 | sed 's/Python //g')
END_VERSIONS
Command exit status:
2
Command output:
(empty)
Command error:
python: can't open file 'script_1.py': [Errno 2] No such file or directory
我尝试过
在我的 中main.nf
,我有以下内容:
#!/usr/bin/env nextflow
include { MyProcess } from './modules/local/mymodule/main.nf'
在我的 中./modules/local/mymodule/main.nf
,我有以下内容:
#!/usr/bin/env nextflow
process MyProcess{
conda "${moduleDir}/environment.yml"
input:
path(input_folder)
output:
path("data.csv")
path "versions.yml" , emit: versions
script:
"""
python script_1.py ${input_folder}
cat <<-END_VERSIONS > versions.yml
"${task.process}":
python: \$(python --version 2>&1 | sed 's/Python //g')
END_VERSIONS
"""
}
但script_1.py
始终找不到,并且过程失败。
我的问题
这是在 Nextflow 管道中的模块中引用此类脚本的正确方法吗?