Spaces:
Sleeping
Sleeping
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Ralstonia Annotation Tool" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Imports" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%load_ext autoreload\n", | |
"%autoreload 2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from pathlib import Path\n", | |
"from io import StringIO\n", | |
"\n", | |
"import pandas as pd\n", | |
"import panel as pn\n", | |
"\n", | |
"import scripts.tap_const as tc" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Setup" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"pn.extension(\"plotly\", \"tabulator\")\n", | |
"\n", | |
"template = pn.template.BootstrapTemplate(title=\"Ralstonia Annotation Tool\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Constants" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"EXPERIMENT = \"72AC_PhD_2404\"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Setup Paths\n", | |
"if tc.phenopsis.joinpath(EXPERIMENT).is_dir() is True:\n", | |
" pt_data = tc.data\n", | |
" pt_images = tc.phenopsis.joinpath(EXPERIMENT)\n", | |
" pt_rotations = tc.dataout.joinpath(\"rotation_angles\").joinpath(f\"{EXPERIMENT}\")\n", | |
"else:\n", | |
" here = Path(\".\").parent\n", | |
" pt_data = here.joinpath(\"data\")\n", | |
" pt_images = here.joinpath(\"images\").joinpath(EXPERIMENT)\n", | |
" pt_rotations = here.joinpath(\"rotation_angles\").joinpath(f\"{EXPERIMENT}\")\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Functions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def to_dataframe(value):\n", | |
" if not value or not isinstance(value, bytes):\n", | |
" return pd.DataFrame()\n", | |
"\n", | |
" string_io = StringIO(value.decode(\"utf8\"))\n", | |
" return pd.read_csv(string_io, sep=\";\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Source Selection" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Download Template" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"template_download = pn.widgets.FileDownload(\n", | |
" file=pt_data.joinpath(f\"{EXPERIMENT}_raw.csv\"),\n", | |
" filename=f\"{EXPERIMENT}_raw.csv\",\n", | |
" button_type=\"success\",\n", | |
" label=\"Download template annotation file\",\n", | |
")\n", | |
"template_download" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Upload existing file" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"file_input = pn.widgets.FileInput(accept=\".csv,.json\")\n", | |
"table = pn.widgets.Tabulator(\n", | |
" pn.bind(to_dataframe, file_input),\n", | |
" pagination=\"local\",\n", | |
" page_size=20,\n", | |
" sizing_mode=\"stretch_width\",\n", | |
")\n", | |
"layout = pn.Column(file_input, table)\n", | |
"layout" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Annotation Tools" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sl_plant = pn.widgets.Select(name=\"Plant\", options=[])\n", | |
"@pn.depends(table.param.value, watch=True)\n", | |
"def on_file_loaded(file):\n", | |
" sl_plant.options = list(table.value.plant.unique())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Render" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"template.sidebar.append(\n", | |
" pn.Card(pn.Column(template_download, file_input), title=\"File Manager\"),\n", | |
")\n", | |
"template.sidebar.append(sl_plant)\n", | |
"\n", | |
"template.main.append(table)\n", | |
"\n", | |
"template.servable()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "env", | |
"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.11.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} | |