Bioconda 入門 Anaconda、Minicondaとの違いと EC2 に実行環境をセットアップしてみた

入門してくるとは・・・・!!
2023.03.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Bioconda を利用しバイオインフォマティクスのツールをセットアップする機会がありました。そもそもなところで Anaconda, Miniconda, Bioconda これら Conda シリーズの違いを理解できていなかったため Bioconda を中心に整理してみました。

Bioconda とは

Bioconda とはの前に Conda とは何か?知っておく必要があります。

Conda とは

condaとはyum, aptの様なパッケージ管理システムです。パッケージ(ライブラリ)のバージョン管理するために仮想環境を作成する機能も持っています。そして、condaをラップしてより使いやすくした Anaconda と Miniconda が提供されています。

引用: GCB 2020 Tutorial — Bioconda documentation

Anaconda と Miniconda

Anaconda はデータサイエンスをはじめるために必要なもの一式が揃っている Python のディストリビューションです。一式揃っている反面、データーサイズが大きいです。

Miniconda はパッケージ管理システムのcondaと必要最低限のパッケージのみにとどめた Python のディストリビューションです。Anaconda の軽量版が文字通りの Miniconda です。

改めて Bioconda とは

Bioconda は Anaconda, Miniconda の横並びに位置する Python のディストリビューションかと思っていましたが違いました。その説明をするためにはまずチャンネルを知る必要があります。

condaにはチャンネルと呼ばれる外部リポジトリを登録してパッケージの追加を行える機能があります。yumaptのリポジトリと同じイメージです。

$ conda config --add channels [チャンネル名]

そのチャンネルの中にBioconda という名前のチャンネルがあります。Bioconda チャンネルを追加することで、いわゆる Bioconda を利用できる状態になります。一般的には最小構成の Miniconda をベースに Bioconda チャンネル+αを追加することで Bioconda の実行環境となります。

チャネル追加コマンド

$ conda config --add channels defaults
$ conda config --add channels bioconda
$ conda config --add channels conda-forge
$ conda config --set channel_priority strict

Usage — Bioconda documentation

Bioconda の実態は Miniconda + Bioconda チャンネル + α だったわけですが、Bioconda だと何が嬉しいのでしょうか?

それはバイオインフォマティクスの分野で利用されるゲノム解析のツール類のインストールを簡単にできる点が最大のメリットです。

バイオインフォマティクスのツールを個別にインストールした経験はないのですが、yumaptのパッケージ管理システムなしの状況と同じですので、各種ツールのインストール時の依存関係の解決が大変なのは容易に想像がつきます。

ここから先は実際に Bioconda の環境のセットアップと、ゲノム解析ツールのインストールを試してみます。

Bioconda 環境を作成してみた

OS は Ubuntu 22.04 LTS の AMI から起動した EC2 をベースに Bioconda をセットアップしてみます。

$ head -n 1 /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"

$ curl http://169.254.169.254/latest/meta-data/ami-id
ami-0d979355d03fa2522

$ python3 --version
Python 3.10.6

インスタンスタイプはt3.largeを使用しています。ゲノム解析ツールを実行するには非力なスペックです。EBS のディスクサイズは 20 GB を指定しました。Miniconda + Bioconda の環境に Samtools をインストールした状態で 3 GB しか使用しませんでした。

$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/root         20G  3.0G   17G  16% /
tmpfs            1.9G     0  1.9G   0% /dev/shm
tmpfs            773M  820K  772M   1% /run
tmpfs            5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p15  105M  6.1M   99M   6% /boot/efi
tmpfs            387M  4.0K  387M   1% /run/user/1000

Miniconda のインストール

今回の検証環境は Python 3.10 代がインストールされていたため、3.10 系のインストーラーをダウンロードし実行します。インストールは以下のリンクを参考にします。

wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh
bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p $HOME/miniconda
source ~/miniconda/bin/activate
conda init

conda initでシェルの初期化します。初期化を反映するには多くのシェルは再起動が必要とのことです。Bash も該当するかわかりませんが、exitlogoutでシェルを終了してから後続の作業を行います。

IMPORTANT: After running conda init, most shells will need to be closed and restarted for changes to take effect.

conda init — conda 23.3.0.post14+ed75abca3 documentation

EC2 インスタンスに SSH やセッションマネージャーで接続していると切断されます。接続し直しましょう。

exit

condaコマンドを使える Miniconda のセットアップが完了しました。プロンプトにbaseの文字が表示されるようになります。

(base) ubuntu@ip-10-0-1-230:~$ conda --version
conda 23.1.0

Bioconda のセットアップ

Bioconda チャンネルを追加します。インストールは以下のリンクを参考にします。

install conda

conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --set channel_priority strict

チャンネル追加だけでセットアップは完了です。設定されているチャンネルを確認するには以下のコマンドを入力すると確認できます。

$ conda config --get channels
--add channels 'defaults'   # lowest priority
--add channels 'bioconda'
--add channels 'conda-forge'   # highest priority

Conda 仮想環境作成

ゲノム解析ツールはバージョンを指定してインストールすることが多いかと思います。もしバージョンによって出力結果に差異がでると困りますから。そのため、ツール毎のバージョンを管理するためプロジェクトなど単位で仮想環境を作成すると都合が良いかと思います。

初期状態はデフォルト Conda 環境のbaseのみ存在しています。

$ conda info -e
# conda environments:
#
base                  *  /home/ubuntu/miniconda

仮想環境を作成し、作成した環境に切り替えます。

conda create -n test-devio
conda activate test-devio

仮想環境名のtest-devioがプロンプトに表示されます。

(test-devio) ubuntu@ip-10-0-1-230:~$

仮想環境が作成されていることが確認できました。

$ conda info -e
# conda environments:
#
base                     /home/ubuntu/miniconda
test-devio            *  /home/ubuntu/miniconda/envs/test-devio

Conda を使用したゲノム解析ツールのインストール

SAMファイル、BAMファイルを解析するためのツールSamtoolsのインストールを例に進めていきます。

お目当てのツールがあり、バージョンを指定してインストールした場合はインストールできるバージョンはなにがあるのか確認したいと思います。conda searchコマンドで確認できます。

(test-devio) ubuntu@ip-10-0-1-230:~$ conda search samtools
Loading channels: done
# Name                       Version           Build  Channel
samtools                      0.1.12               0  bioconda
samtools                      0.1.12               1  bioconda
samtools                      0.1.12               2  bioconda
samtools                      0.1.13               0  bioconda
samtools                      0.1.13               1  bioconda
samtools                      0.1.14               0  bioconda
samtools                      0.1.14               1  bioconda
samtools                      0.1.15               0  bioconda
samtools                      0.1.16               0  bioconda
samtools                      0.1.17               0  bioconda
samtools                      0.1.18               0  bioconda
samtools                      0.1.18     h20b1175_12  bioconda
samtools                      0.1.18     h270b39a_11  bioconda
samtools                      0.1.18     hfb9b9cc_10  bioconda
samtools                      0.1.19               0  bioconda
samtools                      0.1.19               1  bioconda
samtools                      0.1.19               2  bioconda
samtools                      0.1.19               3  bioconda
samtools                      0.1.19     h20b1175_10  bioconda
samtools                      0.1.19      h270b39a_9  bioconda
samtools                      0.1.19      h94a8ba4_5  bioconda
samtools                      0.1.19      h94a8ba4_6  bioconda
samtools                      0.1.19      hf89b575_7  bioconda
samtools                      0.1.19      hfb9b9cc_8  bioconda
samtools                         1.0               0  bioconda
samtools                         1.0               1  bioconda
samtools                         1.0      hdd8ed8b_2  bioconda
samtools                         1.1               0  bioconda
samtools                         1.1      h20b1175_7  bioconda
samtools                         1.1      h270b39a_6  bioconda
samtools                         1.1      h94a8ba4_3  bioconda
samtools                         1.1      hf89b575_4  bioconda
samtools                         1.1      hfb9b9cc_5  bioconda
samtools                   1.2.rglab               0  bioconda
samtools                         1.2               0  bioconda
samtools                         1.2               1  bioconda
samtools                         1.2               2  bioconda
samtools                         1.3               0  bioconda
samtools                         1.3               1  bioconda
samtools                         1.3               2  bioconda
samtools                         1.3      h0592bc0_3  bioconda
samtools                         1.3      h1b8c3c0_5  bioconda
samtools                         1.3      h41a57b0_6  bioconda
samtools                         1.3      h80b0bb3_4  bioconda
samtools                         1.3      h9071d68_7  bioconda
samtools                       1.3.1               0  bioconda
samtools                       1.3.1               1  bioconda
samtools                       1.3.1               2  bioconda
samtools                       1.3.1               3  bioconda
samtools                       1.3.1               4  bioconda
samtools                       1.3.1               5  bioconda
samtools                       1.3.1      h0592bc0_6  bioconda
samtools                       1.3.1      h1b8c3c0_8  bioconda
samtools                       1.3.1      h41a57b0_9  bioconda
samtools                       1.3.1      h80b0bb3_7  bioconda
samtools                       1.3.1     h9071d68_10  bioconda
samtools                         1.4               0  bioconda
samtools                       1.4.1               0  bioconda
samtools                         1.5               0  bioconda
samtools                         1.5               1  bioconda
samtools                         1.5               2  bioconda
samtools                         1.6               0  bioconda
samtools                         1.6      h02bfda8_2  bioconda
samtools                         1.6      h244ad75_4  bioconda
samtools                         1.6      h244ad75_5  bioconda
samtools                         1.6      h3f2fef4_8  bioconda
samtools                         1.6      h4da6232_1  bioconda
samtools                         1.6      h9dace67_6  bioconda
samtools                         1.6      hb116620_7  bioconda
samtools                         1.6      hcd7b337_9  bioconda
samtools                         1.6      he673b24_3  bioconda
samtools                         1.7               0  bioconda
samtools                         1.7               1  bioconda
samtools                         1.7               2  bioconda
samtools                         1.8               2  bioconda
samtools                         1.8               3  bioconda
samtools                         1.8               4  bioconda
samtools                         1.8      h46bd0b3_5  bioconda
samtools                         1.9     h10a08f8_12  bioconda
samtools                         1.9      h43f6869_9  bioconda
samtools                         1.9      h46bd0b3_0  bioconda
samtools                         1.9      h57cc563_6  bioconda
samtools                         1.9      h57cc563_7  bioconda
samtools                         1.9     h8571acd_10  bioconda
samtools                         1.9     h8571acd_11  bioconda
samtools                         1.9      h8ee4bcc_1  bioconda
samtools                         1.9      h91753b0_2  bioconda
samtools                         1.9      h91753b0_3  bioconda
samtools                         1.9      h91753b0_4  bioconda
samtools                         1.9      h91753b0_5  bioconda
samtools                         1.9      h91753b0_8  bioconda
samtools                        1.10      h2e538c0_3  bioconda
samtools                        1.10      h9402c20_0  bioconda
samtools                        1.10      h9402c20_1  bioconda
samtools                        1.10      h9402c20_2  bioconda
samtools                        1.11      h6270b1f_0  bioconda
samtools                        1.12      h9aed4be_1  bioconda
samtools                        1.12      hd5e65b6_0  bioconda
samtools                        1.13      h8c37831_0  bioconda
samtools                        1.14      hb421002_0  bioconda
samtools                        1.15      h1170115_1  bioconda
samtools                        1.15      h3843a85_0  bioconda
samtools                      1.15.1      h1170115_0  bioconda
samtools                      1.15.1      h6899075_1  bioconda
samtools                      1.16.1      h00cdaf9_2  bioconda
samtools                      1.16.1      h6899075_0  bioconda
samtools                      1.16.1      h6899075_1  bioconda

今回は最新の1.16.1を採用することにします。パッケージの名前の後ろに=[version]を指定すると任意のバージョン指定ができます。

conda install samtools=1.16.1 -y

インストールの過程で表示されたメッセージの抜粋です。Samtools一つとってもこれだけのパッケージが必要だったため、パッケージ管理システム様様です。

インストール時の表示メッセージ抜粋

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu
  bzip2              conda-forge/linux-64::bzip2-1.0.8-h7f98852_4
  c-ares             conda-forge/linux-64::c-ares-1.18.1-h7f98852_0
  ca-certificates    conda-forge/linux-64::ca-certificates-2022.12.7-ha878542_0
  htslib             bioconda/linux-64::htslib-1.17-h6bc39ce_0
  keyutils           conda-forge/linux-64::keyutils-1.6.1-h166bdaf_0
  krb5               conda-forge/linux-64::krb5-1.20.1-hf9c8cef_0
  libcurl            conda-forge/linux-64::libcurl-7.87.0-h6312ad2_0
  libdeflate         conda-forge/linux-64::libdeflate-1.13-h166bdaf_0
  libedit            conda-forge/linux-64::libedit-3.1.20191231-he28a2e2_2
  libev              conda-forge/linux-64::libev-4.33-h516909a_1
  libgcc-ng          conda-forge/linux-64::libgcc-ng-12.2.0-h65d4601_19
  libgomp            conda-forge/linux-64::libgomp-12.2.0-h65d4601_19
  libnghttp2         conda-forge/linux-64::libnghttp2-1.51.0-hdcd2b5c_0
  libssh2            conda-forge/linux-64::libssh2-1.10.0-haa6b8db_3
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-12.2.0-h46fd767_19
  libzlib            conda-forge/linux-64::libzlib-1.2.13-h166bdaf_4
  ncurses            conda-forge/linux-64::ncurses-6.3-h27087fc_1
  openssl            conda-forge/linux-64::openssl-1.1.1t-h0b41bf4_0
  samtools           bioconda/linux-64::samtools-1.16.1-h00cdaf9_2
  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0
  zlib               conda-forge/linux-64::zlib-1.2.13-h166bdaf_4

指定したバージョン(1.6.1)がインストールされていることが確認できました。

(test-devio) ubuntu@ip-10-0-1-230:~$ samtools version | head -n 1
samtools 1.16.1

以上で、Miniconda + Bioconda の環境構築と、ツールのインストールまで試してみました。

おわりに

普及している実行環境を学ぶという意味で Bioconda を調べて実行環境を作成してみました。かつて Bioconda が解決したゲノム解析ツールのインストールを手軽にしたは、昨今ではバイオインフォマティクス分野にもコンテナ化の波が来て Docker や Apptinaer で計算処理を実行する機会も増えてきたのではないでしょうか。Web 界隈のモダンな技術や、エコシステムをゲノムの研究現場に取り入れて、研究スピードを加速できるように引き続き双方を学んでいきたいと思います。

参考