前回、QIIME2をjupyterhub上で動かす記事を書いてから早いもので約10ヶ月が経過しました。QIIME2の更新も(そして我々の解析も)順調に進んでおり、前回の記事のバージョンも古くなっています。今回、2つのサンプルグループの違いを検出する解析が必要になったため、LEfSeの作業環境を追加することにしました。この件に触れた記事も見当たらないので、記事化しておきます。誰かの役に立つといいのですが、主に自分へのメモ書きです。
インストールで問題だった点
LEfSeについては公式サイトをご覧ください。GUIで利用するのであればGalaxyでネット越しに利用すれば、なんの問題もありません。統合TVやyoutube等が参考になるのではないでしょうか。自分は前述のように開設したjupyterhub上で実行したいので、ローカルに実行環境を作ることにしました。公式にもgithubにも
$ conda install -c bioconda lefse
とだけ書かれています。しかしこれだけでは上手くインストール出来ませんでした。
上記の環境で試しても、新規に作成したconda環境でも、仮想マシンに新規インストールしたOS環境でも、さらっとエラーになりますので、conda環境の中の問題と推定しました。しばらく悩みましたが、以下のようにすると解消します。
まずLEfSeが要求するパッケージの準備
$ conda search -c bioconda lefse --info
で表示される依存するパッケージのうち、biom-formatとrpy2の2つ以外はmainチャンネルのもので構いませんが、biom-formatとrpy2の2つはconda-forgeチャンネルのものを指定する必要がありました。
$ conda install -c conda-forge biom-format rpy2
$ conda install -c bioconda lefse==1.1.2
これで最新のLEfSe 1.1.2となります。
注意点としては、LEfSe 1.1.2のpython要求性が >=3.7 のため、QIIME2-2021.2以前ではLEfSeのバージョンを下げる必要があります。
QIIME2のアップデート
~~仕方ないので、~~せっかくなのでQIIME2をアップデートします。conda環境を新たに作ってサービスの設定を修正するだけの簡単(?)な作業です。
まずSSH等でサーバにログインし、rootに権限昇格したところから始めます。
(base) # wget https://data.qiime2.org/distro/core/qiime2-2021.8-py38-linux-conda.yml
(base) # conda env create -n qiime2-2021.8 --file ./qiime2-2021.8-py38-linux-conda.yml
(base) # conda activate qiime2-2021.8
(qiime2-2021.8) # conda install -c conda-forge jupyterhub jupyterlab biom-format rpy2
(qiime2-2021.8) # conda install -c bioconda lefse==1.1.2
(qiime2-2021.8) # vim /usr/local/sbin/jupyterhub-startup.sh
#!/bin/bash
QIIME=qiime2-2021.8
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/miniconda3/etc/profile.d/conda.sh" ]; then
. "/opt/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/opt/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
cd /var/local/jupyterhub
conda activate $QIIME
/opt/miniconda3/envs/$QIIME/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
(qiime2-2021.8) # systemctl restart jupyterhub.service
これで終了となります。
終わりに
今回はLEfSeの導入とQIIME2の更新を行いました。教訓としてエラーの内容はよく読む必要があるということです。特にスクロールで流れてしまうようなエラーは注意深く最初の方の出力まで確認しないと、今回のようにしばらく悩むハメになります。