macでインフォマティクス

macでインフォマティクス

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

Jupiter notebookの使い方其の4 まとめ

2020 5/11 誤字修正

 

 3回にわたってjupyter notebookの簡単な使い方を説明してきました。 これまでの説明でjupyter notebookはどうやって使うのか、ある程度は伝えられたかと思います。ここで改めてJupiter notebookの特徴を書き出してみます。間違いがあれば教えて下さい。

  • コードを実行し、その場で出力を得るwebベースの対話式ノートブックである。
  • markdown記法を使って構造化された文章や数式を表現できるため、マニュアルとコードを一体化できる(*1、2)。
  • わかりやすく言えば、テストランができてしまうコマンド環境の"説明書"である。 わかりにくい。
  • 時系列はあるが各々のコードセルはその場でいつでも再実行できる。また、使用したコードと手順は全て表現できるので、再現性のある解析を簡単に行う事ができる。
  • ノート自体は軽量なjsonファイルである。Githubなどを介した共有・配布が容易にできる(サイズが大きなオミクスデータはノート上でダウンロードする。またはリンクを張る)
  • IpythonカーネルPythonとJupiter notebookの橋渡しを行なっている。Ipythonカーネル以外にIjuliaカーネル、IRubyカーネルBashカーネルなど様々存在する(link)。
  • Jupiter notebook自体はIPythonカーネルによって提供されるwebインターフェイスを提供しているに過ぎない。
  • オープンソースOSS)の成果物であり、maclinuxwindows問わず無料で利用できる。
  • 数式だけでなく動画リンクも埋め込めたりする(HP)。

このように、Jupiter notebookというのは、コードから出力まで、全てが表現できる研究・実験ノートというわけです。ノート1つで完結し、コードはいつでも再実行できるため、論文のsupplementary documentとして提供すればデータ分析プロセスに透明性が出るでしょう。Jupiter notebook相当の実験ノートを要求する生物系のジャーナルも今後出てくるかもしれません。

 

それでは皆様はJupiter notebookをどのように使われているのでしょうか?公開されているレポジトリを少し覗いてみましょう。

講習会に使う。

書籍の補足資料として使う。

コマンドの使用手順をまとめる。

ツールのチュートリアル(2020 5/24追記)

 project jupyterオフィシャル - 興味深いノートブックへのリンク

 

 

Jupiter notebookでHTSのデータ分析環境を提供するツールの論文も出てきています。

TGSのデータ解析環境

ゲノミクス可視化ツール

 Jupyter notebook based genomic data visualization toolkit. (Preprint)

 igv-jupyter - igv.js をラップする Jupyter Notebook 用の拡張機能

#igv-jupyter(python >= 3.6.4, jupyter >= 4.2.0)を導入後ノートブックを起動
git clone https://github.com/igvteam/igv-jupyter.git
cd igv-jupyter/examples
#launch
jupyter notebook

操作可能です。コードを見て下さい。呼び出す方法がシンプルなので、いつでもjupyter notebookで使えそうです。素晴らしいですね。

f:id:kazumaxneo:20200507203105p:plain

今後、時間を見つけてこれらのツールも紹介していきます。


このブログの説明より動画の方が理解しやすいかもしれません。 動画を3つ埋め込んでおきます。

Jupyter Notebook の基本的な使い方

Python講座】第11回 Jupyter Notebook の使い方について【独り言】

 

こちらはVSCode内でのJupiter notebook環境を説明した動画です。すごく聴きやすいです。

 株式会社キカガク - VSCodeにJupyter Notebookの環境が! | お役立ち情報シリーズ

VSCode内でのJupiter notebook環境はJupiter labに近い感じです。こちらの拡張機能をインストールすると使えるようになります。実際に使う際は、コマンドパレットからPython: Create Blank New Jupyter Notebookを選択するか、新規書類のセーブ時にjupyter notebookを選択してjupyter notebookモードにします。(*8)

 

3つ目はGoogle Colaboratory(以下、Google Colab)の解説動画です。事前に構築したJupyter notebookのノートを、Google Colaboratory Notebook Style Transferという機能を使ってワンクリックでGoogle Colabに移して実行しています。Google ColabはGoogleが提供するクラウドのJupiter notebook環境で、Googleのアカウントをもっていれば誰でも使う事が出来ます。

Google Colabでは、GPUやTPU(深層学習に特化した行列演算専用プロセッサ。汎用プロセッサであるGPU・CPUより効率的)が使えるのが大きなメリットです。無料版では13 GB 近いRAMも利用できます。深層学習向けのライブラリはすでにインストールされているため、すぐに使い始める事ができます。

クラウドなので、データは前もってアップロードか(参考サイト)、レポジトリに置いたデータにリンク読み込めるようにするなど工夫する必要があります。この動画のノートは以下のレポジトリで管理されています。よかったら試してみて下さい。

 

こちらは、統合TVから公開されているBioJupiesというRNA seq分析ツールについて説明した動画です。BioJupiesは分析結果をJupiter notebook形式で出力します。

6:00ごろからです。

 

まとめ

 要点だけですが、4回にわたってJupiter notebookの使い方を紹介してきました。使えそうでしょうか?メリットばかり強調して書いてきましたので、いざ使い出してみると細かいところで使い難さを感じるかもしれませんね*5。しかしそれもそのはずで、"Jupiter notebook"という存在はまだまだ新しく、成熟しきっていないのです。これは、新機能を導入した言わば第3世代notebook*7であるjupyter labの開発が積極的に続いている事からも示唆されます。公開されているノートブックが少ない事もその証左かもしれません。 しかしながら、Jupiter notebookは使わない・使えないと判断したとしても、学んだ時間は無駄ではないと考えます。新しい環境・道具は自分の文脈で使う事で本当の価値が理解できます(=あなたは不満を口にする権利を手に入れた!)。そして、その瞬間では価値がないように思える物事も、将来的には学んでおいてよかった、またはその経験がアンカーとなって次に繋がる事はザラにあるからです。現在のJupiter notebookはそうゆう微妙な立ち位置にいる感じがします。自分のペースで使い方を学び、機会があれば自身の研究に取り入れていただければと思います*6。

 最後に蛇足ですが、バイオインフォマイクスは情報学と生物学の学際的な研究分野であるため、現在はプレイヤーの絶対数はまだまだ多くありません。Jupiter notebookのような研究の再現性を担保する環境が整うことで、バイオインフォマイクスは面白い研究分野だと感じてくれる若い人が増えてくれれば素晴らしいですね。

 

*最終回みたいな内容ですが、これからも継続していきます。応援よろしくお願いします。次はJupyter labかGoogle Colabあたりについて説明します。

引用

Jupyter Notebooks – a publishing format for reproducible computational workflows

Kluyver, Thomas, Ragan-Kelley, Benjamin, Pérez, Fernando, Granger, Brian, Bussonnier, Matthias, Frederic, Jonathan, Kelley, Kyle, Hamrick, Jessica, Grout, Jason, Corlay, Sylvain, Ivanov, Paul, Avila, Damián, Abdalla, Safia, Willing, Carol and Jupyter development team, (2016) Jupyter Notebooks – a publishing format for reproducible computational workflows. Loizides, Fernando and Scmidt, Birgit (eds.)

In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press. pp. 87-90 . (doi:10.3233/978-1-61499-649-1-87)

 

 参考

 *1

LaTeXで論文を書くというのは情報系の分野で時々耳にします。markdownでなんとか論文を書こうとしている方もいらっしゃるようです。

 

*2

技術系資料作成時にwordの代わり使っている方もいるようです(参考)。

 

*3

少し前の動画のため、おそらく依存ライブラリの関係でpython2のコードになっています。python2のサポートが終わったため、Google colabでもpython2のコードのサポートは終了しています。正常に動作しないかもしれませんがコードのバグではありません。注意して下さい。

 

*4

Google colabプロ版ではより長い接続時間(無料版の最大12時間 => 最大24時間)、より大きなメモリ、より高速なGPU、CPUなどを使用できるようになります。月単位のSubscriptionサービスです。

 

*5

1つデメリットを挙げるとすれば、Jupiter notebookのコードセルは逐次実行するようになっているため、長い計算を複数のセルで同時実行することはできない事でしょうか。これは当然の仕様ですが、HTSのデータ解析ではそれなりに時間がかかる長いジョブを並行して複数走らせる事もままあります。そのため、時間のかかるジョブをJupiter notebookで実行すると使いにくくなります(前もって計算中に次のコードセルを実行しておくか、Run allすれば、並列化できなくてもオーバーナイトで全コードセルのランは進められる)。そのためか、ターミナルの劣化版という意見もあります。

 

 

*7 

Ipythonが初代

 

*8

jupyter notebookは同一LAN内にある計算サーバーで動かして、そこにローカルマシンからアクセスして使うこともできます。VScodeでJupyter notebookを使うときも同じ事ができるようになっています。

 

1−3回目のリンクです。 

1、Jupiter notebookのインストールと操作方法

2、Markdown

3、数式とマジックコマンド

 

 

補足

1、defaultのconfigファイルを書き出す。環境設定などを変更するときに使う。例えば計算機サーバーに入れてリモートログインする場合のパスワード設定などを書き込むなど。

jupyter notebook --generate-config

 

2、nbextensionsのインストール(*10)

Jupiter notebookの拡張機能。コード補完やコードの整形、出力非表示など様々なことができるようになる。

GIthub

#anaconda (link)前回作成した仮想環境に導入
conda activate jupyter
conda install -c conda-forge jupyter_contrib_nbextensions -y

#condaを使ってないならpipで導入する
pip install jupyter_contrib_nbextensions

jupyter notebookを起動すると、右端にNbextensionsタブができる。

f:id:kazumaxneo:20200503013109p:plain
Notify

しばらく操作が止まっている場合が通知してくれるようになります。ONにしておけば、長い計算をする時、計算が終わったら教えてくれます(*5)。

 例えばジョブ環境後5秒間操作がない時に通知。

f:id:kazumaxneo:20200506165122p:plain

通知が来ます。音が鳴るようにもできます。

f:id:kazumaxneo:20200506164834p:plain

(コントロールパネル => safari => バナー通知ON、にしておく)

 

nbextensionsについてはこのページに詳しくまとめられています。