使用Nextflow#
Nextflow 是一个用于创建可扩展、可移植且可重复的工作流系统。它采用数据流编程模型, 让您能够专注于数据流和计算,从而简化并行和分布式流水线的编写。
本节介绍如何在AIP环境中使用Nextflow。
在用户环境中安装Nextflow#
检查和安装Java版本:
java -version
如果Java版本是17或以上,跳到第2步。
如果系统的Java版本低于17,或者Java没有安装,运行以下命令在用户环境中安装Java 17:
curl -s https://get.sdkman.io | bash source ~/.sdkman/bin/sdkman-init.sh sdk install java 17.0.10-tem java -version
上面最后命令的输出:
openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing)
安装Nextflow
安装Nextflow,把可执行文件移到$HOME/.local/bin里,确保PATH环境变量里带有$HOME/.local/bin。 以下的代码假设您用的是bash,若使用csh或tcsh,请按做相应修改。
curl -s https://get.nextflow.io | bash mkdir -p $HOME/.local/bin/ mv nextflow $HOME/.local/bin/ echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc source ~/.bashrc nextflow info
上面最后一条命令应该有类似这样的输出:
Version: 25.04.0 build 5944 Created: 08-05-2025 16:41 UTC (12:41 EDT) System: Linux 3.10.0-1160.119.1.el7.x86_64 Runtime: Groovy 4.0.26 on OpenJDK 64-Bit Server VM 17.0.10+7 Encoding: UTF-8 (UTF-8)
Nextflow利用AIP跑任务的例子#
从git上下载一个例子:
git clone https://github.com/nextflow-io/training.git
cd training/hello-nextflow
修改nextflow.config#
docker.enabled = false
process {
executor = 'lsf' // 利用Nextflow与LSF的集成和AIP与LSF的兼容性
queue = 'medium' // 定义AIP的队列
// memory = '4 GB' **注意** 这个内存参数集成目前在LSF和AIP中都不工作!!
cpus = 2 // 每个任务的核数
time = '1h' // 任务运行时间限制
}
工作流文件#
这里的例子中,我们使用hello-world.nf,里面有3个子任务。
运行工作流#
执行命令:
nextflow run hello-workflow.nf \
-with-report my_report.html \
-with-timeline my_timeline.html
输出:

可以运行AIP cjobs命令查看作业(Nextflow任务)运行状态:
cjobs -a
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
1277 cadmin DONE medium dev 2*dev *Hello_(2) May 9 16:40
1279 cadmin DONE medium dev 2*dev *Hello_(1) May 9 16:40
1278 cadmin DONE medium dev 2*dev *Hello_(3) May 9 16:40
生成的my_report.html文件:

生成的my_timeline.html文件:
