LoginSignup
3
5

More than 3 years have passed since last update.

papermill × Jupyter Notebookでドキュメント化された解析ワークフローを作る

Last updated at Posted at 2019-12-01

昨日の記事でも書いたように、ワークフローに文章や画像を関連づけさせたいのだが、PapermillというJupyter Notebookをバッチ実行するためのPythonパッケージがあったので、これを使ってワークフローを構築した。

ここでは1細胞RNA-Seqのデータdata/input.csvと、ラベル情報data/label.csvというファイルに対して、複数の次元圧縮を試すというタスクを一度に行った。

なお、RをJupyter notebookで使えるようにするために、IRkernelのインストールと、.ipynbファイルのkernelspecのところを以下のように書き換えた。

  "kernelspec": {
   "display_name": "R",
   "language": "R",
   "name": "ir"
  },

あとは、

jupyter notebook workflow.ipynb

で、ノートブックを起動して、上から順にひたすら次元圧縮を試すノートブックを作り込んだ後に、入力、出力ファイルの場所や、圧縮次元数を後からPapermillの引数として渡せるように書いたら、以下のようにPapermillを実行した。

papermill workflow.ipynb output/papermill/output.ipynb \
-p infile data/input.csv -p infile2 data/label.csv -p  \
outdir output/papermill -p pca_ndim 3 -p nmf_ndim 4  \
-p mds_ndim 4 -p lda_ndim 3 -p som_ndim 2 -p isomap_ndim 2 \
-p lle_ndim 2 -p dmap_ndim 4 -p tsne_ndim 2 -p umap_ndim 2 \
-p tumap_ndim 2 -p fatlas2_ndim 2

これにより、output/papermillのところに、次元圧縮の結果ファイルやoutput.ipynbというノートブックが出力されるようになる。papermillで指定されたパラメーターはノートブックに埋め込まれているのがわかる。

https://github.com/kokitsuyuzaki/workflow_benchmark/blob/master/output/papermill/output.ipynb
https://colab.research.google.com/github/kokitsuyuzaki/workflow_benchmark/blob/master/output/papermill/output.ipynb

スクリーンショット 2019-11-25 11.59.29.png

スクリーンショット 2019-11-25 11.59.45.png

スクリーンショット 2019-11-25 12.00.02.png

以下のように出力されたほうのノートブックを起動しておくと、実行途中の様子を確認できるのも便利。

jupyter notebook output/papermill/output.ipynb

ただし、昨日の記事でも書いたように、実データではパラメーターチューニングしたいのと、パラメーターの値次第ではコケるため、この書き方だと全計算をやり直す必要が出てくるので、各次元圧縮手法ごとにノートブック化&Dockerコンテナ化して、複数のパラメーターごとに分散処理するような使い方のほうがいいかもしれない。

参考

https://qiita.com/hrappuccino/items/d4961e1e42c82c52ef64
https://qiita.com/noko_qii/items/62a7f70fceb6153620f4

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5