LoginSignup
4
2

遺伝研スパコン上でdoradoのbasecallingをしてみる

Last updated at Posted at 2023-05-02

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

こんな感じでタイムスタンプの入ったログが見やすく出力されてありがたい。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2