BUSCO を ローカル PC の Docker コンテナで実行してみた

2022.03.07

BUSCOの実行環境構築にあたり手始めにローカルPCのDockerで実行してみた記録です。最終目標はクラウドHPCを駆使した Docker コンテナ実行環境を構築します。

  • ローカルPCの Docker で BUSCO コンテナを起動
  • テストデータを用いて BUSCO で解析処理
  • 実行結果のプロット

BUSCO とは

ゲノムアセンブリ、遺伝子セットの完全性を評価するためのルールで、バイオインフォマティクスで利用されているソフトウェアです。この分野のプロフェッショナルではない私にとっては以下の説明がわかりやすかったです。

BUSCOはCore gene setがアセンブルされた配列の中にどれだけあるか調べることで、ゲノムシーケンスやトランスクリプトームシーケンスがどれくらいの精度でできているかを調べるものである。例えば、とある菌にはCore gene setが400個あったとして実際には200個しか見つからなかったとしたら、「シーケンス段階としてはまだまだだね」という話になる。逆に99%以上あるとすれば、なかなか信頼できるシーケンスだなという一つの指標として利用できる。

引用: BUSCOの使い方がだいぶ変わってた話 - Qiita

ローカルPCで実行環境構築してみた

Docker コンテナを利用した解析の動作確認を行いたいため BUSCO コンテナを使用します。

検証環境

Product Version
BUSCO v5.2.2
Docker 20.10.12
macOS 11.6.3
CPU 2.4 GHz クアッドコアIntel Core i5
Memory 16 GB 2133 MHz LPDDR

Docker インストールの準備

Dockerは公式サイトを参考にインストールしてください。

Mac に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント

Docker Desktop は2022年2月1日から有料化されていますのでFreeの条件に該当しない場合はライセンス契約が必要です。条件については最新情報を公式サイトでご確認ください。

Docker Pricing & Monthly Plan Details | Docker

BUSCO で解析するインプットファイルの準備

BUSCO をテスト実行するためにはインプットファイルの指定が必要です。つまり、テストデータとしてなにかしらの FASTA形式のファイルが必要になります。

今回はショウジョウバエのリファレンスゲノムをテストデータにします。

Drosophila melanogaster (ID 47) - Genome - NCBI

ローカルPCにショウジョウバエのリファレンスゲノムのファイル(GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna)をダウンロードして保存します。後ほどこのディレクトリを BUSCO コンテナへマウントして BUSCO コンテナからファイルを利用します。

$ mkdir -p ~/work/busco/vol
$ cd ~/work/busco/vol
$ wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/001/215/GCF_000001215.4_Release_6_plus_ISO1_MT/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz
$ gunzip GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz

Docker で BUSCO コンテナ を起動

BUSCO のイメージは Docker Hub で公開されており、こちらを使用します。

コンテナイメージ補足

ベースイメージはbiocontainers/biocontainersを利用しており、biocontainers自体はubuntu:1604がベースイメージでした。この分野はUbuntuがよく使われていますね。

Image Layer Details - biocontainers/biocontainers:latest | Docker Hub

永続化ストレージ

コンテナで実行する BUSCO の実行結果は永続的なストレージに保存したいため、ローカルPCのvolディレクトリを BUSCO コンテナへマウントします。volディレクトリはテストデータを事前にダウンロードして保存していたディレクトリです。

  • ローカルの/Users/ohmura.yasutaka/work/busco/volディレクトリをコンテナ内の/mntディレクトリにマウント
  • BUSCO コンテナを起動しシェルで接続
$ docker run --rm -it -v /Users/ohmura.yasutaka/work/busco/vol/:/mnt ezlabgva/busco:v5.2.2_cv2 bash

初回は BUSCO のイメージのダウンロードからはじまるので多少時間かかります。コンテナ起動後、プロンプトがbusco_userになっていれば成功です。

解析処理開始

buscoコマンドを実行して解析処理を走らせます。

引数参考

  • -i: インプットファイルの指定
    • ローカルPCからマウントしたディレクトリにあるテストデータのパスを指定しています。
  • -l: データセットの指定
    • 最新バージョンを自動ダウンロードしてくれます。
  • -o: 実行結果が保存されるディレクトリ名
    • 実行結果のファイルが保存されるかと思って.outと付けたのですが成果物はディレクトリでした。
      • Output folders and files will be labelled with this name.とユーザーガイドで説明されていました、よく読まないと。
  • -m: モード選択
    • gnome指定しゲノムモードでゲノムアセンブリの評価を行います。
  • -c: CPUのコア数/スレッド数の指定

User guide BUSCO v5.3.0

実行時間はローカルPCの性能に依存しますのでResults from datasetのメッセージが表示されるまで待ちます。私の環境では7039秒( = 1時間57分)かかりましたとメッセージに載っていました。

# 実行コマンド
busco_user@ea2752416b82:/mnt$ busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o test.out -m genome -c 6

# 実行開始
2022-02-23 08:23:03 INFO:	***** Start a BUSCO v5.2.2 analysis, current time: 02/23/2022 08:23:03 *****
2022-02-23 08:23:03 INFO:	Configuring BUSCO with local environment
2022-02-23 08:23:03 INFO:	Mode is genome
2022-02-23 08:23:03 INFO:	Downloading information on latest versions of BUSCO data...
2022-02-23 08:23:05 INFO:	Input file is /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna
2022-02-23 08:23:06 INFO:	Running BUSCO using lineage dataset eukaryota_odb10 (eukaryota, 2020-09-10)
2022-02-23 08:23:06 INFO:	Running 1 job(s) on metaeuk, starting at 02/23/2022 08:23:06
2022-02-23 09:50:00 INFO:	[metaeuk]	1 of 1 task(s) completed
2022-02-23 09:50:04 INFO:	***** Run HMMER on gene sequences *****
2022-02-23 09:50:04 INFO:	Running 255 job(s) on hmmsearch, starting at 02/23/2022 09:50:04
2022-02-23 09:50:06 INFO:	[hmmsearch]	26 of 255 task(s) completed
2022-02-23 09:50:07 INFO:	[hmmsearch]	51 of 255 task(s) completed
2022-02-23 09:50:08 INFO:	[hmmsearch]	77 of 255 task(s) completed
2022-02-23 09:50:09 INFO:	[hmmsearch]	102 of 255 task(s) completed
2022-02-23 09:50:09 INFO:	[hmmsearch]	128 of 255 task(s) completed
2022-02-23 09:50:11 INFO:	[hmmsearch]	153 of 255 task(s) completed
2022-02-23 09:50:12 INFO:	[hmmsearch]	179 of 255 task(s) completed
2022-02-23 09:50:14 INFO:	[hmmsearch]	204 of 255 task(s) completed
2022-02-23 09:50:15 INFO:	[hmmsearch]	230 of 255 task(s) completed
2022-02-23 09:50:17 INFO:	[hmmsearch]	255 of 255 task(s) completed
2022-02-23 09:50:18 INFO:	Extracting missing and fragmented buscos from the file refseq_db.faa...
2022-02-23 09:50:21 INFO:	Running 1 job(s) on metaeuk, starting at 02/23/2022 09:50:21
2022-02-23 10:20:16 INFO:	[metaeuk]	1 of 1 task(s) completed
2022-02-23 10:20:18 INFO:	***** Run HMMER on gene sequences *****
2022-02-23 10:20:18 INFO:	Running 1 job(s) on hmmsearch, starting at 02/23/2022 10:20:18
2022-02-23 10:20:19 INFO:	[hmmsearch]	1 of 1 task(s) completed
2022-02-23 10:20:21 INFO:	Validating exons and removing overlapping matches
2022-02-23 10:20:22 INFO:	Results:	C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255

2022-02-23 10:20:24 INFO:

	--------------------------------------------------
	|Results from dataset eukaryota_odb10             |
	--------------------------------------------------
	|C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255      |
	|254	Complete BUSCOs (C)                       |
	|254	Complete and single-copy BUSCOs (S)       |
	|0	Complete and duplicated BUSCOs (D)        |
	|1	Fragmented BUSCOs (F)                     |
	|0	Missing BUSCOs (M)                        |
	|255	Total BUSCO groups searched               |
	--------------------------------------------------
2022-02-23 10:20:24 INFO:	BUSCO analysis done. Total running time: 7039 seconds
2022-02-23 10:20:24 INFO:	Results written in /mnt/test.out
2022-02-23 10:20:24 INFO:	For assistance with interpreting the results, please consult the userguide: https://busco.ezlab.org/busco_userguide.html

2022-02-23 10:20:24 INFO:	Visit this page https://gitlab.com/ezlab/busco#how-to-cite-busco to see how to cite BUSCO

解析終了です。

実行失敗アレコレ

buscoコマンドのフラグをいろいろ試していときに-oで指定する実行結果を保存するディレクトリ名が重複してエラーになりました。-fで上書きオプションも用意されていたのですが数時間かけて実行した結果を消してしまったとならないように注意してください。-oのディレクトリ指定は名前を変更して実行した方が安全かなと思います。

# busco5.out ディレクトリが存在している状態で実行したコマンド
busco_user@ea2752416b82:/mnt$ busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o busco5.out -m genome -c 6

2022-02-23 08:22:43 INFO:	***** Start a BUSCO v5.2.2 analysis, current time: 02/23/2022 08:22:43 *****
2022-02-23 08:22:43 INFO:	Configuring BUSCO with local environment
2022-02-23 08:22:43 INFO:	Mode is genome
2022-02-23 08:22:43 ERROR:	A run with the name /mnt/busco5.out already exists...
	If you are sure you wish to overwrite existing files, please use the -f (force) option
2022-02-23 08:22:43 ERROR:	BUSCO analysis failed !
2022-02-23 08:22:43 ERROR:	Check the logs, read the user guide (https://busco.ezlab.org/busco_userguide.html), and check the BUSCO issue board on https://gitlab.com/ezlab/busco/issues

実行結果

-oで指定したtest.outディレクトリの中身です。

$ tree -L 1
.
├── logs
├── run_eukaryota_odb10
└── short_summary.specific.eukaryota_odb10.test.out.txt

解釈

解析結果のサマリを確認してみます。実行結果の解釈についてはユーザーガイドのInterpreting the resultsを参考にしたのですが、素人には用語がまず理解できず専門の勉強しないと厳しいです。

User guide BUSCO v5.3.0

short_summary.specific.eukaryota_odb10.test.out.txt

# BUSCO version is: 5.2.2
# The lineage dataset is: eukaryota_odb10 (Creation date: 2020-09-10, number of genomes: 70, number of BUSCOs: 255)
# Summarized benchmarking in BUSCO notation for file /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna
# BUSCO was run in mode: genome
# Gene predictor used: metaeuk

	***** Results: *****

	C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255
	254	Complete BUSCOs (C)
	254	Complete and single-copy BUSCOs (S)
	0	Complete and duplicated BUSCOs (D)
	1	Fragmented BUSCOs (F)
	0	Missing BUSCOs (M)
	255	Total BUSCO groups searched

Dependencies and versions:
	hmmsearch: 3.1
	metaeuk: 4.a0f584d

インプットで指定したテストデータはリファレンスゲノムを使ったので完全一致するものと予想していました。しかし、Fragmentedが1つあり100%一致にはならないんだと思いました。

プロット

実行結果をグラフにして可視化もできるのでやってみました。

busco_user@30c9081b2a6b:/mnt$ generate_plot.py -wd /mnt/test.out
2022-03-06 02:13:57 INFO:	****************** Start plot generation at 03/06/2022 02:13:57 ******************
2022-03-06 02:13:57 INFO:	Load data ...
2022-03-06 02:13:57 INFO:	Loaded /mnt/test.out/short_summary.specific.eukaryota_odb10.test.out.txt successfully
2022-03-06 02:13:57 INFO:	Generate the R code ...
2022-03-06 02:13:57 INFO:	Run the R code ...
2022-03-06 02:13:59 INFO:
[1] "Plotting the figure ..."
[1] "Done"

2022-03-06 02:13:59 INFO:	Plot generation done. Total running time: 1.967320442199707 seconds
2022-03-06 02:13:59 INFO:	Results written in /mnt/test.out/
cd ~/work/busco/vol/test.out
open .

busco_figure.Rと、busco_figure.pngが追加されています。

busoco_figure.pngを開いてみた結果。

以上、ユーザーガイドに沿って実行まで試してみたでした。

おわりに

「FASTAファイルのテストデータをどう入手したらいいんだ...」とユーザーガイドを読んで早々に行き詰まりました。お仕事でお付き合いのある某研究所の先生に相談させていただき解決しました。 というわけで、プロフェッショナルの方のアドバイスありきで BUSCO 実行までなんとかたどり着けました。ローカルPCでの実行でしたので解析に時間がかかりました。次回は解析時間短縮を狙って AWS を利用してクラウドのコンピュートリソースで実行したいと思います。

本屋さんで以下の書籍が医学書のコーナーにあって手にとってみたら AWS が取り上げられていて IT本コーナー以外でも AWS を見かける時代なんだ!とおもしろい発見がありました。 2021年12月発売の書籍でしてゲノム解析の実行環境として EC2インスタンスを利用する方法を紹介されていました。とくに AWS 初学者の方には EC2 の作成方法がカラー印刷のキャプチャで見やすかったのでよいかなと。

メタゲノムデータ解析 16Sも! ショットガンも! ロングリードも! 菌叢解析が得意になる凄技レシピ (実験医学別冊) | 坊農 秀雅 |本 | 通販 | Amazon

参考