|
@@ -1,129 +0,0 @@
|
|
|
-{
|
|
|
- "cells": [
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "id": "37902e8d",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "# (実装案)実験パイプライン作成支援\n",
|
|
|
- "\n",
|
|
|
- "本セクションでは、実験の再現をするにあたって、コードの実行順(および入出力データ)を保持し、その順で実行する「実験パイプライン」の作成を支援します。\n",
|
|
|
- "\n",
|
|
|
- "### ◆◆◆開発メモ◆◆◆\n",
|
|
|
- "\n",
|
|
|
- "- 現在は最低限pipeline.yamlに必要な`tasks`以下のパラメータのみを書き出す実装。 \n",
|
|
|
- "入出力データの定義は、キー名だけ書き出してユーザに埋めてもらうような方式が良いかも?\n",
|
|
|
- "- また、実行されるコード側に定義しなければいけない実装はMarkdownによる手順だけの用意としている。(わかりにくいかも・・)"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "id": "a105665d",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "<!-- APIを利用したparameterセルの追加処理\n",
|
|
|
- " →書こうと思えば書けるが、ここまでする必要はある?\n",
|
|
|
- " refs: https://ohke.hateblo.jp/entry/2019/05/25/180000 -->\n",
|
|
|
- "\n",
|
|
|
- "## 1. 作成準備\n",
|
|
|
- "\n",
|
|
|
- "パイプラインの生成のため、まずはシステムにそれぞれのコードの関係を知らせるパラメータを定義します。 \n",
|
|
|
- "以下の手順に沿って、それぞれのコードの関係を定義してください。\n",
|
|
|
- "\n",
|
|
|
- "1. 該当するコードを開きます。\n",
|
|
|
- "2. 上部ツールバーから「View→Cell Toolbar→Tags」を選択します。 \n",
|
|
|
- "これにより、各セルの上部にタグを追加するフォームが表示されます。\n",
|
|
|
- "3. 1番目の実行箇所になる最上部にセルを1つ挿入します。\n",
|
|
|
- "4. 3.で挿入したセルのタグ定義フォームに、`parameters`と入力し、`Add tag`ボタンを押下します。 \n",
|
|
|
- "これにより、`parameters`タグが挿入されます。\n",
|
|
|
- "5. 3.で挿入したセルに、以下の通りコードを記述します。そのファイルよりも前に実行されるべきコードがある場合、そのファイル名を配列で`upstream = ['{前に実行するファイル名}']`のように定義してください。\n",
|
|
|
- "```py\n",
|
|
|
- "upstream = None\n",
|
|
|
- "product = None\n",
|
|
|
- "```"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "id": "7ed2a8e9",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "## 2. パイプライン設定ファイルの生成\n",
|
|
|
- "\n",
|
|
|
- "このステップでは、パイプライン全体の実行に必要な設定ファイルをシステムが作成します。以下に挿入されている`from ruamel.yaml import YAML`で始まるセルを実行してください。コードファイルを読み取り、設定ファイル`pipeline.yaml`を生成します。"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": null,
|
|
|
- "id": "9604790d",
|
|
|
- "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",
|
|
|
- "id": "bcb09102",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "## 3. データガバナンス機能へ書き戻し\n",
|
|
|
- "\n",
|
|
|
- "以上の変更をデータガバナンス機能の研究リポジトリにも反映させます。以下のセルを実行してください。"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": null,
|
|
|
- "id": "b4c9d9b1",
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "# datalad save & push と同等の処理を行うセル"
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
- "metadata": {
|
|
|
- "kernelspec": {
|
|
|
- "display_name": "Python 3",
|
|
|
- "language": "python",
|
|
|
- "name": "python3"
|
|
|
- },
|
|
|
- "language_info": {
|
|
|
- "codemirror_mode": {
|
|
|
- "name": "ipython",
|
|
|
- "version": 3
|
|
|
- },
|
|
|
- "file_extension": ".py",
|
|
|
- "mimetype": "text/x-python",
|
|
|
- "name": "python",
|
|
|
- "nbconvert_exporter": "python",
|
|
|
- "pygments_lexer": "ipython3",
|
|
|
- "version": "3.8.12"
|
|
|
- }
|
|
|
- },
|
|
|
- "nbformat": 4,
|
|
|
- "nbformat_minor": 5
|
|
|
-}
|