はじめての環境DNA
研究室から現場まで、実践で使える知識を!
バイオインフォマティックス

aria2とpigzでNCBI ntのBlastDBを作成する

手元のPCでntデータベースを使用する機会があり、その際、時短に貢献してくれたツールについて備忘録を残しておきます。

第2世代シーケンサーやキャピラリーシーケンサー、Long readシーケンサーから得られたDNA配列の分類群を推定するとき、BLASTnによる相同性検索はメジャーな方法です。

BLASTnは誰でもweb上で行えるweb BLASTと、自身のPCに解析環境を用意して行うLocal Blast(BLAST+)があり、web BLASTはNCBIの配列データベースをそのまま使える利点がある一方で、カスタムやオートメーションには向かない印象。また、メンテナンスやサーバーダウンといった自身の管理下にないアクシデント時には、待つしか無いというデメリットがあります。

Local Blastはweb BLASTほど誰でも使えるといった簡便さは劣るものの、比較的、導入・使用までのハードルが低い相同性検索ツールです。

塩基配列に対してのBLAST検索はBLASTnを用い、その際必要となるのは以下の2点

  1. 系統推定したいDNA配列
  2. DNA配列データベース

BLAST検索したいと思うのであれば、なにかしら系統推定したいDNA配列は持っているでしょう。とすると、後はBLAST+の導入とDNA配列データベースが必要となります。

私の手元のPC環境はLinux PCとWindows PCだけなので、MaxOSで同様に動作するかは不明。

  1. Linux PC
    1. OS Ubuntu LTS 20.04
  2. Windows PC
    1. OS Windows 10
    2. WSL (Ubuntu LTS 20.04をインストール) 表現があっているかは不明

BLAST+の導入

windowsにおいても、WSLの実行環境を整えているのであれば.exeなどの実行ファイルを用意しなくてもいいみたいです。

下記コマンドで導入

確認

ここまでは、すでに整っている方が大体なのではないかと思います。

pigzの導入

マルチコアで.gz圧縮・解凍を行ってくれるツール。.xzや.bz2についてはpxz/pixzやpbzip2があります。

確認

aria2の導入

curlやwgetと比べて、複数コネクションによる並列ダウンロードに対応しているようで、大きなファイルを短時間でダウンロードしたい場合には強力なツールです。

確認

これで必要なツールの導入は完了

NBCI v5 blastdbの確認

NCBIのデータベースはいくつかの括りがある。対象分類群が決まっているのであればそれにあったデータベースをダウンロードするほうが良いようです。

v5 ftpサイトは下記

  • https://ftp.ncbi.nlm.nih.gov/blast/db/v5/

最も大きい区分の塩基配列データベースはntデータベースのよう。2022年3月現在で58個に分割されているのですべてダウンロードします。おおよそ138GB。

aria2でntデータベースのblastdbをダウンロードしてtarとpigzで解凍する

aria2での並列ダウンロード

同時接続コネクション数は5。サーバーに負荷がかかるので、コネクション数には注意しましょう。

例えば00番のデータベースをダウンロードするのであれば、

とします。

ただ、これを59回もするのは面倒なので、for文をつかって実行します

これでカレントディレクトリにnt.??.tar.gzファイルがダウンロードされました。

同時にチェックサムファイルもダウンロードしておきましょう

tarとpigzで並列解凍

tarはアーカイブ(複数のファイルやフォルダを1つにまとめる)ファイル(.tar)を作成したり、アーカイブされているものを分割できます。

pigzは解凍と圧縮はできる一方で、アーカーブやアーカイブされているものを分割したりはできません。

そのため、複数階層・ファイルをもつフォルダの場合には、tarと一緒に利用することでフォルダを圧縮・解凍する可能です。

aria2でダウンロードしたnt.??.tar.gzの並列解凍は以下のようにします(ダウンロード時と同じくfor文を使用)。

これでnt-databaseフォルダにblastnのデータベースファイルが用意できました。あとは好みの設定でblastnを実行して系統推定を進めてみてください。

感想

コアの多いPCの場合、並列実行や平行実行で作業・待ち時間を短縮できる可能性があるので、積極的に並列・並行化は進めていくといいと感じました。

xargsやGNU parallelも並列処理には有効だったのでぜひ使用してみてください。

Reference

  • aria2
    https://aria2.github.io/
  • curlやwgetの数倍速い 爆速ダウンローダー aria2を使う
    https://qiita.com/TokyoMickey/items/cb51805a19dcee416151#%E3%81%94%E6%B3%A8%E6%84%8F
  • マルチスレッドでのtar
    https://mickey-happygolucky.hatenablog.com/entry/2018/04/21/011811

各ツールのUSAGE

blastn

pigz

aria2

ABOUT ME
しばた
分析・データ解析なんでもします。環境DNA使って研究したい方、気軽に相談ください。