docker + JupyterNotebook + バイオインフォマティクス
Jupyter Notebook (以下Jupyter)でblastとかbowtieとかバイオインフォマティクスのツールを使えるようにします。
Jupyterのインストール
pip3 install jupyterとかanacondaとかやりだすと、CentOSで対応していないとか、Pythonのバージョンアップとかが必要になって面倒なので、dockerでjupyterのコンテナをつくります。
docker search jupyterとすると、docker.io/jupyter/datascience-notebookというのが一番上にくるので、これを使ってみます。
# docker pull docker.io/jupyter/datascience-notebook
jupyterのコンテナを作成する前に決めておかないといけないのが、jupyterを動かすポートとデータの置き場所です。
ポートはJupyterとブラウザーが通信するために必要で、dockerのホストの空きポートが必要です。ここでは8000を使うことにします。
データの置き場所はコンテナの外から触れるほうが便利ですが、パーミッションに気を付ける必要があります。ダウンロードしたイメージではJupyterはjovyan.users (ユーザーID:1000、グループID: 100)が実行者になっていて、このユーザーがファイルをつくったり、読んだりします。通常このユーザーはホスト側には存在していないので、Jupyterのホームとして使うディレクトリ(ここではdataとする)は777としておきます。
$ mkdir data $ chmod 777 data
作成したdataディレクトリをホームとして、dockerのコンテナを作成します。8888はJupyterが使用するデフォルトのポートです。
# docker run -d --name myjupyter \ --volume data:/home/jovyan \ --publish 8000:8888 \ docker.io/jupyter/datascience-notebook
起動したJupyterに接続するにはtoken (パスワードのようなもの)が必要です。通常はJupyterが起動時に標準出力に出すのですが、dockerを使っているので見えません。docker logsで調べます。
# docker logs myjupter To access the notebook, open this file in a browser: file:///home/jovyan/.local/share/jupyter/runtime/nbserver-8-open.html Or copy and paste one of these URLs: http://e66ec9ebc930:8888/?token=24631bee91de9734ea81b166864dc7d4f5926d52a33e8f92 or http://127.0.0.1:8888/?token=24631bee91de9734ea81b166864dc7d4f5926d52a33e8f92
?token以降をコピーして接続します。ブラウザーでhttp://localhost:8000/(?token=以降を貼り付け) にアクセスするか、curlで動作を確認します。
$ curl "http://localhost:8000/tree(?token=以降を貼り付け)" | head <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Home Page - Select or create a notebook</title>
一度Jupyterを停止します。
# docker stop myjupter
Jupyterへのアクセス制限を解除する
Jupyterのトークンは起動するたびに変わります。都度URLを調べるのは面倒なのでトークンを使用しないようにします(Jupyterに使用するポートが外から接続できないことを確認してから)。
dataディレクトリに.jupyter/jupyter_notebook_config.pyを作成し、c.NotebookApp.token = "の一行をいれます。
$ mkdir data/.jupyter $ echo "c.NotebookApp.token = ''" >data/.jupyter/jupyter_notebook_config.py
Jupyterを起動して、トークンなしで接続できることを確認します。
# docker stop myjupter # curl "http://localhost:10080/tree?" | head <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Home Page - Select or create a notebook</title>
blastを使えるようにする
バイオインフォマティクスの最も重要なツールを使えるようにします。コンテナ内に入ってblastをダウンロード&インストールします。
# docker exec -it -u root myjupyter /bin/bash root@e66ec9ebc930:~# apt-get update root@e66ec9ebc930:~# apt-get install -y ncbi-blast+ root@e66ec9ebc930:~# exit
Jupyterに接続して、Terminalを開いてblastnなどのコマンドが使えるようになっていることを確認します。
exonerateでもbowtieでもapt-get installでインストールできます。