Nanoporeのbasecallerであるdoradoを使ってみる。
https://github.com/nanoporetech/dorado
fast5ファイル形式の場合、pod5形式へ変換する
入力ファイルはfast5ではなく、pod5形式が推奨。
fast5からpod5への変換には、pytnonのパッケージであるpod5を使う。
https://github.com/nanoporetech/pod5-file-format
使い方: https://pod5-file-format.readthedocs.io/en/0.1.20/docs/tools.html#pod5-convert-fast5
↑のusageのコマンドはちょっと間違っているところもあるのでコピペせず、引数は自分の目で確認推奨。
# バラバラのfast5から、それぞれに対応したpod5に変換する場合
pod5 convert fast5 [fast5へのパス] --output [pod5を出力するディレクトリ名] --one-to-one [location]
# 具体例: fast5/ディレクトリに大量のfast5があり、それを同じprefix.pod5に変換して、pod5というディレクトリに出力する場合
pod5 convert fast5 fast5/*.fast5 --output pod5 --one-to-one ./
ナノポアが提供するwebツールもある(未使用)
https://pod5.nanoporetech.com/
doradoのインストール
基本的にgithubからバイナリ版をダウンロードして解凍・適当な場所におけばOK。
https://github.com/nanoporetech/dorado
遺伝研スパコンであれば、linux-arm64版をダウンロードする。
$ tar zxvf dorado-0.2.4-linux-arm64.tar.gz
$ mv dorado-0.2.4-linux-x64/ /home/hoge/opt/
# 普通のCPUノードで実行しようとするとちゃんとコケる
$ ./dorado-0.2.4-linux-x64/bin/dorado
./dorado-0.2.4-linux-x64/bin/dorado: error while loading shared libraries: libcublasLt-b6d14a74.so.11: failed to map segment from shared object: Cannot allocate memory
doradoをGPUノードで使う
UGEに投げたらcore dump吐いて失敗したので、とりあえずinteractive modeで実行するため、gpuノードにログインする。
遺伝研スパコンでのcudaの使い方に従って、
https://sc.ddbj.nig.ac.jp/software/cuda/
# cudaを1つ使用する場合
qlogin -l gpu -l cuda=1
でgpuノードにログインできる。
configファイルをダウンロードする
nanoporeのbasecallerは、シーケンシングのモードによってconfigファイルが異なる。そのため、callingしたいシーケンシングの設定と同じconfigファイル(モデル)をダウンロードする。モデルの一覧は、dradoのgithubのページから確認できる。
今回は、MinIONのフローセルR10.4.1を260bps(accuarcy mode)で読んだので、dna_r10.4.1_e8.2_260bpsを選んだ。Guppyのconfigとは異なるので注意。
# configファイルを入れるディレクトリを作っておく
$ mkdir /home/hoge/nanopore_model
# 特定のモデルだけをダウンロードする場合
$ /home/hoge/opt/dorado-0.2.4-linux-x64/bin/dorado download --model dna_r10.4.1_e8.2_260bps_sup@v4.1.0
mv dna_r10.4.1_e8.2_260bps_sup@v4.1.0 /home/hoge/nanopore_model/
[hoge@gwB1 opt]$ ls /home/hoge/nanopore_model/ -lh
drwxr-xr-x 2 hoge hoge 4.0K 5月 1 13:48 dna_r10.4.1_e8.2_260bps_sup@v4.1.0
全てのモデル一括DLも可能。
doradoのラン
基本のコマンドはguppyと同じ
dorado basecaller [configファイルのモデル] [入力ファイルのパス] [その他オプション]
テスト用の入力ファイルに、test/test.pod5を用意。
結果の出力はsam。
cudaは1つ使用。もしcudaを複数使用する場合は、qlogin時のquda=オプションの数に合わせる。qloginのqudaオプションは使用するcudaの数、basecallerのcudaオプションはどのcudaを使うかの番号指定なので、違いに注意する。
その他、引数やオプションに余計な空白があるとうまくいかないので注意。Macのメモでは、"--"が繋がった長い棒に勝手に変換されてしまうので、コマンドのコピペには気をつけよう。
# ベースコール
$ /home/hoge/opt/dorado-0.2.4-linux-x64/bin/dorado basecaller /home/hoge/nanopore_model/dna_r10.4.1_e8.2_260bps_sup@v4.1.0 /home/hoge/bascalling_dorado/test/ --device cuda:0> test.sam
[2023-05-01 14:41:05.891] [info] > Creating basecall pipeline
[2023-05-01 14:42:49.645] [info] > Reads basecalled: 12000
[2023-05-01 14:42:49.645] [info] > Samples/s: 1.959808e+06
[2023-05-01 14:42:49.645] [info] > Finished
# samをbamに変換
$ /home/hoge/opt/bin/samtools view -Sb test.sam > test.bam
$ ls -lh test/
-rw-r--r-- 1 hoge hoge 124M 5月 1 12:02 test.pod5
-rw-r--r-- 1 hoge hoge 18M 5月 1 14:42 test.sam
こんな感じでタイムスタンプの入ったログが見やすく出力されてありがたい。