データ解析になくてはならないJupyter Notebookは、今や生命医学研究にも大いに使われています。
この記事は、Dockerというコンテナ技術を使って、たった1行でJupyter Notebookを起動する方法を紹介します。
この記事の内容
Dockerのインストールと設定方法
Dockerとは
IT系の仕事をしている方や、計算系の生命科学者の方であればご存知でしょうが、実験系の生命科学者や医療従事者には馴染みがないので簡単にDockerを紹介します。
Dockerは、さまざまな計算環境を持ち運べるようにした、一種の「コンテナ」です。
ソフトウェアのバージョンが違うと同じように動くとは限らず、以前は他の人の解析を全く同じく再現するためには自分自身でもそのような環境を用意する必要がありました。
しかしDockerを使えば、そういった面倒な環境構築をすることなく、他の方が作ったパイプラインを自分のパソコンでも簡単に動かすことができます。
生命科学系の研究においても、解析が再現できないということがなくなりますし、論文で発表された便利なツールを簡単に自分のコンピューターで使えるようになります。
Dockerのインストール
Dockerにはいくつかのバージョンがありますが、あまりコマンドラインに馴染みのない方にとってはDocker Desktopを使うのがいいでしょう。
公式サイトから簡単にインストールできます (WindowsもMacもあります)。
Docker設定の変更方法
Docker Desktopを起動、右上にあるアイコンをクリックするとPreferencesメニューになります。
ここで各種設定ができます。例えば、「Resources」では、Dockerが使うCPUやメモリの調整を行うことができます。
よく分からない場合には初期設定で問題ありませんが、ここをカスタマイズすることで使いやすい環境にすることができます。
DockerでJupyter notebookを起動する
まず最初にやることは、Dockerコンテナの作成です。
Jupyter Docker Stacksには、すぐに実行可能なDockerイメージが用意されています。
いくつかのバージョンがありますが、今回はjupiter/minimalを使ってDockerの使い方を学んでいきます。
これはjupyter/base-notebookをベースにしていて、コマンドラインツール、TeX Live、git、emacs、vi、jedなどが入ったイメージです。
ターミナルを起動し
docker run -p 8888:8888 jupyter/minimal-notebook
を実行します。
そうすると最後の方にトークンつきURLがあるので、これをコピペしてブラウザで開きます。
たった1行でJupyterを起動できました。
使われているPythonやCondaのバージョンは、notebookを開いて
! Python -V
! Conda -V
とするだけです。
現時点の最新に近いものが入っていることが分かります。
今回使ったイメージは、必要最低限のものだけなので、NumPyやPandasは入っていません。でも必要に応じてコンテナに追加できます。
Docker経由で開いているノートブックで、
!pip install numpy pandas
とするだけです。
シャットダウンのやり方
Docker経由であっても、そのシャットダウン方法は通常のJupyternotebookと同じで、Command + Cでシャットダウンできます。
データサイエンス用のJupyter Notebookも用意されている
ここまで「最低限の」シンプルなJupyter Notebookを使う方法を紹介していましたが、実はデータサイエンスや深層学習用のNotebookイメージも公開されています。
こういったツールを使うことで、目的の計算環境を簡単につくることができます。
まとめに代えて
この記事では、Dockerというコンテナ技術について紹介しました。IT系のエンジニアにとっては当たり前の技術ですが、まだまだ生命科学者での認知は高いとはいえません。
研究の再現性を高めるツールでもあり、近年は作成したツールをDockerイメージとして配布する研究者も増え始めています。
今後は生命科学者・医学研究者にとっても不可欠なツールになるでしょう。入門書もいろいろあるので、勉強してみるのをおすすめします。
今回紹介したくらいのことは、実験系の研究者もできなくてはいけません。
ポスドクになってからバイオインフォを勉強し始めた時、「Bioinformatics Data Skills」という評判のよい英語の本にかなりお世話になったのですが、この本は「バイオインフォマティクスデータスキル」という名前の日本語訳が出ました。
実験系の方が、Linux・R・Pythonのバイオインフォに関する部分だけをしっかり学びたいという用途にぴったりです。
今日も【生命医学をハックする】 (@biomedicalhacks) をお読みいただきありがとうございました。当サイトの記事をもとに加筆した月2回のニュースレターも好評配信中ですので、よろしければこちらも合わせてどうぞ