macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

condaの代わりに高速なmambaを使う

2021 2/11 誤りを修正

 

Githubより

Mamba は C++ での conda パッケージマネージャの再実装です。マルチスレッドを使ったリポジトリデータとパッケージファイルの並列ダウンロード、依存関係の解決をより高速にするための libsolv、Red HatFedoraOpenSUSERPM パッケージマネージャで使用されている最先端のライブラリです。
mambaのコア部分はC++で実装されており、最大限の効率化が図られています。
同時に、mamba は可能な限り互換性を保つために、codaと同じコマンドラインパーサ、パッケージのインストールとデインストー ル、トランザクション検証ルーチンを利用しています。

 

開発の動機のブログ記事。condaの問題点についても言及されています。

mambaという名前は、その名前の通りマンバ属(wikipedia)に由来するようです。

 

mambaを導入してもcondaが消えるわけではなく、両者は両立して使えます。インストールしたツールが置かれるパスも同じです。また不要であれば簡単に消去することができます。気軽にテストしてみて下さい。

 

インストール

macos10.14(miniconda3.8)、win10pro-2020H2適用済みWSL2環境 (ubuntu20.04, miniconda3.8)、ubuntu18.04(anaconda3.7)で動作確認した。

mamba Github repository

#conda (anaconda)
conda install -c conda-forge mamba

#pip (pypi) (間違ってます。実行しないで下さい)
pip install mamba

> mamba

$ mamba

usage: mamba [-h] [-V] command ...

 

conda is a tool for managing and deploying applications, environments and packages.

 

Options:

 

positional arguments:

  command

    clean        Remove unused packages and caches.

    compare      Compare packages between conda environments.

    config       Modify configuration values in .condarc. This is modeled after the git config command. Writes to the user .condarc file (/Users/kazu/.condarc) by default.

    create       Create a new conda environment from a list of specified packages.

    help         Displays a list of available conda commands and their help strings.

    info         Display information about current conda install.

    init         Initialize conda for shell interaction. [Experimental]

    install      Installs a list of packages into a specified conda environment.

    list         List linked packages in a conda environment.

    package      Low-level conda package utility. (EXPERIMENTAL)

    remove       Remove a list of packages from a specified conda environment.

    uninstall    Alias for conda remove.

    run          Run an executable in a conda environment. [Experimental]

    search       Search for packages and display associated information. The input is a MatchSpec, a query language for conda packages. See examples below.

    update       Updates conda packages to the latest compatible version.

    upgrade      Alias for conda update.

    repoquery    Query repositories using mamba.

 

optional arguments:

  -h, --help     Show this help message and exit.

  -V, --version  Show the conda version number and exit.

 

conda commands available from other packages:

  env

 

 

使い方

condaの代わりにmambaを指定するだけで使えます。

mamba install hoge

 

biocondaチャネルを指定して、バイオインフォマティクスのツールを導入します。

#bwa mem2を導入。-yで確認メッセージをスキップできます。
mamba install -c bioconda bwa-mem2 -y

#bioconda 以外のチャネルからインストール可能なバイオインフォマティクスツールもあります。
mamba install -c bioconda samtools
mamba install -c bioconda/label/cf201901 samtools

#fastqcとartを同時に導入します。
mamba install -c bioconda fastqc art

 

導入したツールをアンインストールします。

#-yで確認メッセージをスキップできます。
mamba remove bwa-mem2 -y

 

仮想環境を作ってツールを導入することで、ほかのツールが使っているライブラリとのバージョン違いによるコンフリクトを防げます。インストールも早くなります。activate / deactivate だけはcondaを使います(以前はsource activateだったが最近ではconda activate推奨)。

#tensorflowのバージョン1.10.0をtensorflow1.10_testという環境に導入
mamba create -n tensorflow1.10_test tensorflow=1.10.0
conda activate tensorflow1.10_test

#使用後、環境を抜ける
conda deactivate

 

pythonのバージョンも指定して仮想環境を作り、その仮想環境にツールを導入します。"tested with python3.6"のように、特定のpythonバージョンだけで開発・検証されているツールを導入したい時や、使ったことのないツールをまとめてテストする環境を作りたい時に便利です。

#cutadaptをpython3.6に導入
mamba create -n hoge python==3.6 -y
conda activate hoge
mamba install -c bioconda cutadapt -y

#使用後、環境を抜ける
conda deactivate

# 〇〇先生との共同研究のデータ解析環境を作る
mamba create -n ○○experiment python==3.9 -y
conda activate ○○experiment
mamba install -c bioconda star samtools rsem -y
#使用後、環境を抜ける
conda deactivate

 

conda(mamba含む)で導入したツール一覧を確認します。

mamba list

 

conda(mamba含む)で作成した環境一覧を確認します。

mamba info -e

#もしくは
mamba env list

 

導入したツールをアンインストールします。

#-yで確認メッセージをスキップ
mamba remove bwa-mem2

 

作った環境を消します。

#○○experimentという環境を削除
mamba remove --all -n ○○experiment

 

不要なツールやキャッシュを消して空き容量を増やします。必要なライブラリが消えたという話もあるようなので、自己責任で行って下さい。

#remove index cashe
mamba clean -i

#remove unused packages
mamba clean -p

#all
mamba clean -a

 

conda環境で使用するpythonのバージョンを変更することもできます。python3.9からpython3.8に変更します。

#-yで確認メッセージをスキップ
mamba install python=3.8

 

今のところ、環境のexportと再構築のコマンドはないようで、これはcondaコマンドで行う必要があります。

間違ってました。mamba envコマンドが用意されています。

$ mamba env -h

usage: conda-env [-h] {create,export,list,remove,update,config} ...

 

positional arguments:

  {create,export,list,remove,update,config}

    create              Create an environment based on an environment file

    export              Export a given environment

    list                List the Conda environments

    remove              Remove an environment

    update              Update the current environment based on environment file

    config              Configure a conda environment

 

optional arguments:

  -h, --help            Show this help message and exit.

 

conda commands available from other packages:

  env

 

環境をエキスポートして、他のマシンや他のユーザーが環境を再現できるようにします。

#環境をエキスポートする
conda activate ○○experiment
mamba env export > env.yaml

> cat  env.yaml

name: "\u25CB\u25CBexperiment"

channels:

  - bioconda

  - conda-forge

  - defaults

  - au-eoed

  - ursky

dependencies:

  - ca-certificates=2021.1.19=hecd8cb5_0

  - certifi=2020.12.5=py39h6e9494a_1

  - libcxx=11.0.1=habf9029_0

  - libffi=3.3=h046ec9c_2

  - ncurses=6.2=h2e338ed_4

  - openssl=1.1.1i=h35c211d_0

  - pip=21.0.1=pyhd8ed1ab_0

  - python=3.9.0=h4f09611_5_cpython

  - python_abi=3.9=1_cp39

  - readline=8.1=h9ed2024_0

  - setuptools=52.0.0=py39hecd8cb5_0

  - sqlite=3.34.0=h17101e1_0

  - tk=8.6.10=hb0a8c7a_1

  - tzdata=2021a=he74cb21_0

  - wheel=0.36.2=pyhd3deb0d_0

  - xz=5.2.5=haf1e3a3_1

  - zlib=1.2.11=h7795811_1010

prefix: "/Users/kazu/miniconda3/envs/\u25CB\u25CBexperiment"

 

作った環境を取り込みます。

mamba env create --file env.yaml
#activateすれば使えます。
conda activate ○○experiment

 

同名のmambaというフレームワークもあるようですが、このmambaとは別物です。

関連ツール

The Fast Conda and Mamba Package Builder

The R package manager that is blazingly fast. 

 

引用

GitHub - mamba-org/mamba: The Fast Cross-Platform Package Manager

 

参考にしたサイト

 

関連