biocondaからの環境構築[備忘録]

# イントロ
bio系のツールは多くがgithubなどでOSSとして配布されていますが、依存するライブラリが多かったり、環境が違ったり、ツールによって依存するライブラリのバージョンが違ったりして環境構築に苦労することも少なくありません。

そういう時の対処法として、仮想環境を使うというものがあります。

必要なツールごとに専用の仮想環境を作って、その中に必要なパッケージをインストールするとことで解決する方法です。

その他のメリットとして、自分で１から依存ライブラリをインストールするのはしんどいものですが、仮想環境を使うと基本的には環境に左右されないため他の方が作った環境をそのままダウンロードすることができます。

仮想環境を作るツールとして、Dockerやcondaがありますが、bio系だとそれぞれbiocontainer,biocondaというサイトがあり、そこでいろんなツールのための仮想環境が用意されているので、そこから環境をダウンロードすることができます。

今回はcondaを使って、ツールの仮想環境を作って、それを使うまでを示したいと思います。
試したい方は自分の環境でcondaが使えることを確認してください。

# よく使うコマンド

```
conda create -c CHANNEL名 -n 環境名 # 仮想環境名は自分がつける。
conda install (-c CHANNEL) -n 環境名 # 現在のcondaの環境にinstall
conda -e info # 現在所有している仮想環境の一覧を取得
conda activate 仮想環境名　# 仮想環境の起動
conda deactivate # 現在の仮想環境から出る
conda list -n 環境名 # その環境中に入っているpackageの一覧を出す
conda env remove --name 環境名 #環境の破棄
```

# 実演
metagenomeの系統分類を可視化するkronaを入れてみたいと思います。

kronaのbioconda(https://anaconda.org/bioconda/krona)

```
$ conda info -e # 現在の入っている仮想環境と自分が今いる仮想環境の確認(
*が現在いる仮想環境)
# conda environments:
#
base                  *  /usr/local/Caskroom/miniconda/base
env-test                 /usr/local/Caskroom/miniconda/base/envs/env-test
qiime2-2020.8            /usr/local/Caskroom/miniconda/base/envs/qi

$ conda create -c bioconda/label/cf201901 -n krona #仮想環境の取得
Collecting package metadata (current_repodata.json): done
Solving environment: done

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate krona
#
# To deactivate an active environment, use
#
#     $ conda deactivate


 
$ conda info -e # kronaの仮想環境が取得できたことを確認
# conda environments:
#
base                  *  /usr/local/Caskroom/miniconda/base
env-test                 /usr/local/Caskroom/miniconda/base/envs/env-test
krona                    /usr/local/Caskroom/miniconda/base/envs/krona
qiime2-2020.8            /usr/local/Caskroom/miniconda/base/envs/qiime2-2020.8

$ conda activate krona # kronaの仮想環境に入る

$ conda info --envs # kronaの仮想環境に入れたことを確認
# conda environments:
#
base                     /usr/local/Caskroom/miniconda/base
env-test                 /usr/local/Caskroom/miniconda/base/envs/env-test
krona                 *  /usr/local/Caskroom/miniconda/base/envs/krona
qiime2-2020.8            /usr/local/Caskroom/miniconda/base/envs/qiime2-2020.8

$ conda deactivate # 仮想環境から出る

$ conda env remove --name krona # 仮想環境の削除

Remove all packages in environment /usr/local/Caskroom/miniconda/base/envs/krona:

$ conda info -e # 消えています
# conda environments:
#
base                  *  /usr/local/Caskroom/miniconda/base
env-test                 /usr/local/Caskroom/miniconda/base/envs/env-test
qiime2-2020.8            /usr/local/Caskroom/miniconda/base/envs/qiime2-2020.8
```

# 注意
ツールの作成者が管理しているものもあるが、大抵は第三者が善意で作っているのでバージョンなどは最新版でないこともあるので確認する。


# 参考
[bioconda](https://anaconda.org/bioconda)
[biocontainersのdockerhub](https://hub.docker.com/u/biocontainers)
biocontainerというグループが様々なbio系のツールに関してdocker　containerを作ってあげています
[biocontainersHP](https://biocontainers.pro/#/)
biocontainersの構成や理念など
[Anacondaを使った仮想環境を保存・再構築、複製](https://qiita.com/ozaki_physics/items/13466d6d1954a0afeb3b)
commandなど参考にしました
[conda 公式マニュアル](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html)
[condaとpip: ver. 2020](http://onoz000.hatenablog.com/entry/2020/10/24/conda%E3%81%A8pip%3A_ver__2020)
以前はpipとcondaを併用するとまずかったらしいですが、ある程度改善されたそうです。