{ "cells": [ { "cell_type": "markdown", "id": "5e30f59a", "metadata": {}, "source": [ "# Demo of PG-RAD\n", "\n", "This is a demo." ] }, { "cell_type": "code", "execution_count": null, "id": "415fdd25", "metadata": {}, "outputs": [ { "ename": "RuntimeError", "evalue": "super(): no arguments", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mRuntimeError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mdataloader\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m load_data\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpath\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m path_from_RT90\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mlandscape\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Landscape\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mobjects\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Source\n\u001b[32m 8\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01misotopes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Cs137\n", "\u001b[36mFile \u001b[39m\u001b[32m~/pg-rad/src/pg_rad/landscape.py:6\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnp\u001b[39;00m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpath\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mobjects\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Source\n\u001b[32m 8\u001b[39m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mLandscape\u001b[39;00m:\n\u001b[32m 9\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, size: \u001b[38;5;28mint\u001b[39m | \u001b[38;5;28mtuple\u001b[39m[\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mint\u001b[39m] = \u001b[32m500\u001b[39m, unit = \u001b[33m'\u001b[39m\u001b[33mmeters\u001b[39m\u001b[33m'\u001b[39m):\n", "\u001b[36mFile \u001b[39m\u001b[32m~/pg-rad/src/pg_rad/objects.py:4\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmath\u001b[39;00m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Self\n\u001b[32m----> \u001b[39m\u001b[32m4\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpg_rad\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01misotopes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Isotope\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mObject\u001b[39;00m:\n\u001b[32m 7\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__init__\u001b[39m(\n\u001b[32m 8\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 9\u001b[39m x: \u001b[38;5;28mfloat\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 12\u001b[39m name: \u001b[38;5;28mstr\u001b[39m = \u001b[33m\"\u001b[39m\u001b[33mUnnamed object\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 13\u001b[39m color: \u001b[38;5;28mstr\u001b[39m = \u001b[33m'\u001b[39m\u001b[33mgrey\u001b[39m\u001b[33m'\u001b[39m):\n", "\u001b[36mFile \u001b[39m\u001b[32m~/pg-rad/src/pg_rad/isotopes.py:29\u001b[39m\n\u001b[32m 26\u001b[39m \u001b[38;5;28mself\u001b[39m.E = E\n\u001b[32m 27\u001b[39m \u001b[38;5;28mself\u001b[39m.b = b\n\u001b[32m---> \u001b[39m\u001b[32m29\u001b[39m \u001b[38;5;28;43;01mclass\u001b[39;49;00m\u001b[38;5;250;43m \u001b[39;49m\u001b[34;43;01mCs137\u001b[39;49;00m\u001b[43m(\u001b[49m\u001b[43mIsotope\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 30\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[34;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[32m 31\u001b[39m \u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mCaesium-137\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 32\u001b[39m \u001b[43m \u001b[49m\u001b[43msymbol\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mCs137\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 33\u001b[39m \u001b[43m \u001b[49m\u001b[43mE\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m662.66\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 34\u001b[39m \u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0.851\u001b[39;49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/pg-rad/src/pg_rad/isotopes.py:30\u001b[39m, in \u001b[36mCs137\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m 29\u001b[39m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mCs137\u001b[39;00m(Isotope):\n\u001b[32m---> \u001b[39m\u001b[32m30\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m.\u001b[34m__init__\u001b[39m(\n\u001b[32m 31\u001b[39m name = \u001b[33m\"\u001b[39m\u001b[33mCaesium-137\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 32\u001b[39m symbol = \u001b[33m\"\u001b[39m\u001b[33mCs137\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 33\u001b[39m E = \u001b[32m662.66\u001b[39m,\n\u001b[32m 34\u001b[39m b = \u001b[32m0.851\u001b[39m)\n", "\u001b[31mRuntimeError\u001b[39m: super(): no arguments" ] } ], "source": [ "from matplotlib import pyplot as plt\n", "\n", "from pg_rad.dataloader import load_data\n", "from pg_rad.path import path_from_RT90\n", "from pg_rad.landscape import Landscape\n", "from pg_rad.objects import Source\n", "\n", "from pg_rad.isotopes import Isotope" ] }, { "cell_type": "markdown", "id": "8431d39b", "metadata": {}, "source": [ "## Loading a file" ] }, { "cell_type": "code", "execution_count": null, "id": "5a0e470a", "metadata": {}, "outputs": [], "source": [ "FILENAME = \"B10_NaIR_MGS_ROI_CPS_IPL.CSV\"\n", "df = load_data(FILENAME)" ] }, { "cell_type": "markdown", "id": "baa7aba8", "metadata": {}, "source": [ "## Demo: Path regression" ] }, { "cell_type": "code", "execution_count": null, "id": "2ec97553", "metadata": {}, "outputs": [], "source": [ "p1 = path_from_RT90(df, east_col = \"East\", north_col = \"North\", simplify_path = False)\n", "p2 = path_from_RT90(df, east_col = \"East\", north_col = \"North\", simplify_path = True)\n", "\n", "p1.plot(color='r', linestyle='-', linewidth = 10, label = \"Full path\")\n", "p2.plot(color='b', linestyle='-', marker = 'o', label = \"Reduced path\")\n", "\n", "plt.xlabel(\"X [m]\")\n", "plt.ylabel(\"Y [m]\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "da8620fa", "metadata": {}, "source": [ "## Making a landscape\n", "\n", "You can make a landscape with or without a path. Let's make an empty landscape." ] }, { "cell_type": "code", "execution_count": null, "id": "24f1159d", "metadata": {}, "outputs": [], "source": [ "landscape = Landscape()\n", "fig, ax = landscape.plot()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "035b4f42", "metadata": {}, "source": [ "## Adding a source" ] }, { "cell_type": "code", "execution_count": null, "id": "91019da5", "metadata": {}, "outputs": [], "source": [ "cs137 = Isotope(name = \"Cs137\", E = 662.66, b = 0.851)\n", "my_source = Source(x = 100, y = 100, z = 0, activity = 100, isotope = cs137)\n", "landscape.add_sources(my_source)\n", "\n", "landscape.sources" ] }, { "cell_type": "code", "execution_count": null, "id": "7913fe1e", "metadata": {}, "outputs": [], "source": [ "landscape.plot()" ] }, { "cell_type": "code", "execution_count": null, "id": "df4715c1", "metadata": {}, "outputs": [], "source": [ "landscape.set_path(p2)\n", "landscape.plot()" ] }, { "cell_type": "markdown", "id": "17fec32f", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }