{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 他リポジトリから実験の入力データを用意する\n", "\n", "[データガバナンス機能](http://dg02.dg.rcos.nii.ac.jp/)に公開されているリポジトリやあなたのリポジトリのデータをこの実験の入力データとして用意します。 \n", "一括でファイルの実体をダウンロードするのではなく、必要なファイルのみファイルの実体をダウンロードするため、大容量データでも時間がかかりにくくなります。 \n", "上から順番に実行してください。\n", "\n", "※もし入力データとして利用したいファイルの実体が「git-annex」によってAWS S3準拠のオブジェクトストレージに保存されている場合、[こちら](util/operate_s3_annex.ipynb)を実行することで当該データを取得できます。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 入力データにするリポジトリのURLを入力する\n", "\n", "以下のセルを実行して、入力データにしたいリポジトリのURLを入力してください。 \n", "入力したURLの履歴をこのノートブックに保存したい場合は、実行後にセルの左側に表示されるピンマークをクリックしてください。 \n", "※入力に誤りがある場合は、再度このセルを実行して下さい。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from ipywidgets import Text, Button, Layout\n", "from IPython.display import clear_output\n", "import datetime\n", "\n", "def on_click_callback(clicked_button: Button) -> None:\n", " global input_repo\n", " input_repo = text.value\n", " clear_output()\n", " print(\"入力完了しました:\", input_repo)\n", "\n", "# テキストボックス\n", "text = Text(\n", " description='URL:',\n", " placeholder='http://dg02.dg.rcos.nii.ac.jp/user/repository_title.git',\n", " layout=Layout(width='500px')\n", ")\n", "button = Button(description='入力完了')\n", "button.on_click(on_click_callback)\n", "text.on_submit(on_click_callback)\n", "display(text, button)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. リポジトリのディレクトリ階層をダウンロードする" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# URLからリポジトリ名を抽出する\n", "input_repo_title = input_repo.split('/')[-1].replace('.git', '')\n", "\n", "# 入力データリポジトリをサブデータセットとしてクローンする\n", "%cd ~/\n", "!datalad clone -d . $input_repo \\input_data/$input_repo_title" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. ファイルの実体をダウンロードする\n", "\n", "出力データ(output_dataフォルダ配下)全ての実体をダウンロードしたい場合は`3.1`を、 \n", "特定のファイルを選んで実体をダウンロードしたい場合は`3.2`を実行してください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 出力データ(output_dataフォルダ配下)の実体をダウンロードする\n", "\n", "指定したリポジトリの出力データ(output_dataフォルダ配下)全ての実体をダウンロードしたい場合に実行してください。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%cd ~/input_data/$input_repo_title/output_data\n", "!datalad get . -r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 特定のファイルを指定して実体をダウンロードする\n", "\n", "出力データの特定のファイルや、出力データ以外のファイルをダウンロードしたい場合に、以下のセルの`\"ファイルパス\"`をダウンロードしたいファイルパスに書き換えてから実行してください。 \n", "※複数ファイルの実体をダウンロードしたい場合は、`!datalad get \"ファイルパス\"`の処理を必要な数だけコピーしてください。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%cd ~/input_data/$input_repo_title/output_data\n", "\n", "# (例)\n", "# !datalad get \"sample_a.csv\"\n", "# !datalad get \"b/sample_b.csv\"\n", "\n", "!datalad get \"ファイルパス\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. 実行結果をデータガバナンス機能に同期する\n", "\n", "ここまでの内容を保存し、データガバナンス機能に同期します。 \n", "以下のセルを実行してください。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from IPython.display import display, Javascript\n", "display(Javascript('IPython.notebook.save_checkpoint();'))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import papermill as pm\n", "\n", "%cd ~/\n", "save_path = [ '/home/jovyan/input_data/'+input_repo_title, '/home/jovyan/.gitmodules']\n", "pm.execute_notebook(\n", " 'EX-WORKFLOW/util/base_datalad_save_push.ipynb',\n", " '/home/jovyan/.local/push_log.ipynb',\n", " parameters = dict(SAVE_MESSAGE = '入力データの準備', PATH = save_path, IS_RECURSIVE = False)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. 実験中ワークフロー機能トップページに遷移する\n", "\n", "続けてワークフロー機能を実行する場合は、[こちら](../experiment.ipynb)からトップページに遷移できます。 " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.10" } }, "nbformat": 4, "nbformat_minor": 2 }