|
@@ -4,17 +4,86 @@
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {},
|
|
|
"source": [
|
|
|
- "# 実験パイプラインの構築支援(検討中)\n",
|
|
|
+ "# パイプラインを構築する\n",
|
|
|
"\n",
|
|
|
- "これはDMP情報に基づき、実験の依存関係を表すパイプラインの構築を支援するためのノートブックです。 \n",
|
|
|
- "システムによってパラメタライズされるため、手動での実行は非推奨です。"
|
|
|
+ "これは、実験パイプライン構築を支援するためのノートブックです。 \n",
|
|
|
+ "パイプラインを構築することで、定められた順に実験を実行して実験を再現することが出来ます。"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {},
|
|
|
"source": [
|
|
|
- "TBD"
|
|
|
+ "## ◆◆◆開発メモ◆◆◆\n",
|
|
|
+ "- 実験パイプラインの構築支援は、02_experimental_phaseとパッケージ内のコードipynbで行う\n",
|
|
|
+ " - 02_experimental_phaseではパイプラインの構築(pipeline.yaml作成)の支援と、パッケージのコードに依存関係を記述する支援の2つのセクションを用意する。\n",
|
|
|
+ " - また、パッケージ内のコードipynbでは、最上部に依存関係を記述するセクションを用意する。(Jupyterlab_templatesが使えれば、最上部にparametersタグをつきの依存関係記述用セルを設置したコード用jupyterlab_templatesを用意する)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## 1. 前準備\n",
|
|
|
+ "\n",
|
|
|
+ "パイプラインを構築するには、実行順を指定したい実験の全てのコードで依存関係を定義する必要があります。\n",
|
|
|
+ "コードに依存関係を定義していない場合は、02_experimental_phaseの[依存関係を定義する]()セクションで依存関係を定義してください。"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## 2. パイプライン設定ファイルを生成する\n",
|
|
|
+ "\n",
|
|
|
+ "このステップでは、パイプライン全体の実行に必要な設定ファイルをシステムが作成します。以下のセルを実行してください。"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "from ruamel.yaml import YAML\n",
|
|
|
+ "import os\n",
|
|
|
+ "import glob\n",
|
|
|
+ "\n",
|
|
|
+ "files = glob.glob(os.getcwd()+'/*')\n",
|
|
|
+ "code_dict = {}\n",
|
|
|
+ "\n",
|
|
|
+ "# YAMLのベースとなる辞書\n",
|
|
|
+ "yml = {'tasks': []}\n",
|
|
|
+ "\n",
|
|
|
+ "for file in files:\n",
|
|
|
+ " # ソースリストに載っている拡張子なら辞書作成する処理に修正したい\n",
|
|
|
+ " if os.path.splitext(file)[1] == '.ipynb':\n",
|
|
|
+ " code_dict['source'] = os.path.basename(file)\n",
|
|
|
+ " code_dict['product'] = 'output/log_' + os.path.basename(file)\n",
|
|
|
+ " yml['tasks'].append(code_dict)\n",
|
|
|
+ " code_dict = {}\n",
|
|
|
+ "\n",
|
|
|
+ "with open('pipeline.yaml', 'w') as file:\n",
|
|
|
+ " yaml = YAML()\n",
|
|
|
+ " yaml.default_flow_style = False\n",
|
|
|
+ " yaml.dump(yml, file)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## 3. 変更内容を書き戻す"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "%%sh\n",
|
|
|
+ "papermill ../util/datalad_save_push.ipynb - -f ../../params.yaml -p SAVE_MESSAGE = 'パイプライン構築'"
|
|
|
]
|
|
|
}
|
|
|
],
|