コンテンツにスキップ

Nextflow

最終更新日:2025年12月x日

概要

OSSとして開発されているNextflowを用いて計算ノードでワークフロージョブを実行することができます。 玄界以外のシステムと共通のワークフローを利用することができます。

なおNextflowからTechnical Computing Suite(TCS)を利用する機能は有志により開発されているものですので機能が不完全な可能性があります。 うまく利用できない場合は当センターの問い合わせ先までご連絡ください。

利用準備

Nextflowを利用するには各自でインストールする必要があります。 基本的な手順は以下の通りです。

  1. javaをインストール
  2. nextflowプログラムを入手
  3. 必要に応じてパスを設定する(入手したnextflowプログラムを環境変数PATHで設定されたいずれかの場所に置く、もしくは新たにPATH設定を追加する。)

1. javaのインストール

$ curl -s https://get.sdkman.io | bash
# ~/.bashrc の末尾に必要な設定が追記される。
# ターミナルを開き直す(ログインし直す)とsdkコマンドが利用可能になる。
$ sdk install java 17.0.10-tem
# 正しくインストールできていればjavaコマンドが利用可能になる

以下はインストール後の確認例。

[ku40000105@genkai0002 ~]$ sdk current java

Using java version 17.0.10-tem
[ku40000105@genkai0002 ~]$ java --version
openjdk 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)
[ku40000105@genkai0002 ~]$

2. nextflowプログラムの入手

公式Webサイトにて紹介されているように、1行のコマンドを実行するだけでカレントディレクトリにnextflowファイルが入手できます。

[ku40000105@genkai0002 tmp]$ curl -s https://get.nextflow.io | bash

      N E X T F L O W
      version 25.10.0 build 10289
      created 22-10-2025 16:26 UTC (23-10-2025 01:26 JDT)
      cite doi:10.1038/nbt.3820
      http://nextflow.io


Nextflow installation completed. Please note:
- the executable file `nextflow` has been created in the folder: /home/pj24001603/ku40000105/work/nextflow/tmp
- you may complete the installation by moving it to a directory in your $PATH

[ku40000105@genkai0002 tmp]$ ./nextflow -v
nextflow version 25.10.0.10289
[ku40000105@genkai0002 tmp]$

3. パスを設定する(生成された実行可能ファイルをパスが通った場所に置く)

入手したファイルを直接実行しても良いが、環境変数PATHに含まれるパスにnextflowという名前でコピーしておくと便利。例えば玄界では標準で~/bin/にパスが通っているが、このディレクトリは作られていないため、作成してコピーしておけばどこからでも利用可能になる。

[ku40000105@genkai0002 nextflow]$ mkdir ~/bin
[ku40000105@genkai0002 nextflow]$ cp ./nextflow ~/bin/
[ku40005108@genkai0002 nextflow]$ nextflow -v
nextflow version 25.10.0.10289
[ku40005108@genkai0002 nextflow]$

動作確認1

Nextflowの最低限の動作を確認する。

nextflow run helloを実行すると、その場で4つのいわゆる「Hello world」ジョブが実行される。 実際にこのコマンドを実行すると、計算ノードにジョブが投入されるわけではなく、その場で4つのジョブが実行される。

[ku40005108@genkai0002 ~]$ nextflow run hello

 N E X T F L O W   ~  version 25.07.0-edge

Pulling nextflow-io/hello ...
 downloaded from https://github.com/nextflow-io/hello.git
Launching `https://github.com/nextflow-io/hello` [festering_wozniak] DSL2 - revision: 2ce0b0e294 [master]

executor >  local (4)
[13/6c7ddb] sayHello (1) [100%] 4 of 4 ✔
Ciao world!

Hello world!

Hola world!

Bonjour world!


[ku40005108@genkai0002 ~]$

計算ノードでジョブを実行するには設定ファイルが必要である。 例えば以下のような設定ファイルnextflow.configを用意して再度コマンドを実行すると、各「Hello world」ジョブはノードグループAの計算ノードで実行される。 実行時に利用するリソース情報はclusterOptionsに記述する。

[ku40005108@genkai0002 ~]$ cat nextflow.config
process {
  executor = 'tcs'
  time = '00:03:00'
  clusterOptions = '-L rscgrp=a-batch -L vnode-core=1'
}

実行時の出力は以下の通りである。pjstat2などで監視すればジョブの実行状況をうかがい知ることができる。

以下はジョブが実行されるを待っている状態の例。

[ku40005108@genkai0002 ~]$ nextflow run hello

 N E X T F L O W   ~  version 25.10.0-edge

Launching `https://github.com/nextflow-io/hello` [big_visvesvaraya] DSL2 - revision: afff16a9b4 [master]

executor >  tcs (4)
[c8/935fd1] process > sayHello (3) [0%] 0 of 4
WARN: [INFO] PJM 0000 pjsub Job 4347504 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347505 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347506 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347507 submitted.

以下はジョブが終了した状態の例。

[ku40005108@genkai0002 ~]$ nextflow run hello

 N E X T F L O W   ~  version 25.10.0

Launching `https://github.com/nextflow-io/hello` [big_visvesvaraya] DSL2 - revision: afff16a9b4 [master]

executor >  tcs (4)
[30/33565f] process > sayHello (2) [100%] 4 of 4 ✔
Hola world!

Hello world!

Bonjour world!

Ciao world!

WARN: [INFO] PJM 0000 pjsub Job 4347504 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347505 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347506 submitted.
WARN: [INFO] PJM 0000 pjsub Job 4347507 submitted.

動作確認2

Nextflowのサンプルプログラムを用いて動作を確認する。

リポジトリのtestsディレクトリに多数のサンプルが格納されている。 今回は公式WebサイトでBasic pipelineとして紹介されている(サンプル)[https://www.nextflow.io/basic-pipeline.html]{target="_blank"}を実行する。

このサンプルは以下の処理を行う。

  1. 入力ファイル(sample.fa)の内容をawkコマンドで複数ファイルに分割する(1番目のジョブ)
  2. 1で生成した各ファイルの中身をrevコマンドで反転する(2番目のジョブ)
  3. 2の出力結果を標準出力に表示する

上述のnextflow.configファイルを用意しておけば、1番目のジョブと2番目のジョブが順番にバッチジョブ実行される。 TCSにおいて複数のジョブの実行順序を制御したい場合はステップジョブを利用するが、Nextflowを使うことで(ステップジョブを使わずに)ジョブの実行順序制御ができている。

以下は実際の実行例である。

[ku40000105@genkai0001 tests]$ cat data/sample.fa
>1aboA
NLFVALYDFVASGDNTLSITKGEKLRVLGYNHNGEWCEAQTKNGQGWVPS
NYITPVN
>1ycsB
KGVIYALWDYEPQNDDELPMKEGDCMTIIHREDEDEIEWWWARLNDKEGY
VPRNLLGLYP
>1pht
GYQYRALYDYKKEREEDIDLHLGDILTVNKGSLVALGFSDGQEARPEEIG
WLNGYNETTGERGDFPGTYVEYIGRKKISP
>1vie
DRVRKKSGAAWQGQIVGWYCTNLTPEGYAVESEAHPGSVQIYPVAALERI
N
>1ihvA
NFRVYYRDSRDPVWKGPAKLLWKGEGAVVIQDNSDIKVVPRRKAKIIRD
[ku40000105@genkai0001 tests]$ nextflow basic-dsl2.nf

 N E X T F L O W   ~  version 25.10.0

Launching `basic-dsl2.nf` [pensive_becquerel] DSL2 - revision: 30435009f5

executor >  tcs (2)
[a6/b0ad64] splitSequences [100%] 1 of 1 [2d/eed513] reverse        [100%] 1 of 1 ✔
Aoba1>
SPVWGQGNKTQAECWEGNHNYGLVRLKEGKTISLTNDGSAVFDYLAVFLN
NVPTIYN
Bscy1>
YGEKDNLRAWWWEIEDEDERHIITMCDGEKMPLEDDNQPEYDWLAYIVGK
PYLGLLNRPV
thp1>
GIEEPRAEQGDSFGLAVLSGKNVTLIDGLHLDIDEEREKKYDYLARYQYG
PSIKKRGIYEVYTGPFDGREGTTENYGNLW
eiv1>
IRELAAVPYIQVSGPHAESEVAYGEPTLNTCYWGVIQGQWAAGSKKRVRD
N
Avhi1>
DRIIKAKRRPVVKIDSNDQIVVAGEGKWLLKAPGKWVPDRSDRYYVRFN

WARN: [INFO] PJM 0000 pjsub Job 4346348 submitted.


[ku40000105@genkai0001 tests]$ pjstat2 -H -l
 JOB_ID   JOB_NAME           MD  STATUS  USER        RSCGROUP     START_DATE           ELAPSE    NODE  CORE  GPU  POINT
 4346347  nf-splitSequences  NM  EXT     ku40000105  a-batch-low  2025/11/27 18:16:09  00:00:04     -     1    -      1
 4346348  nf-reverse         NM  EXT     ku40000105  a-batch-low  2025/11/27 18:16:33  00:00:01     -     1    -      1
# START_DATEとELAPSEの列を見れば2つのジョブが直列に実行されたことが確認できる