mirror of
https://github.com/pim-n/pg-rad
synced 2026-02-02 14:33:09 +01:00
186 lines
10 KiB
Plaintext
186 lines
10 KiB
Plaintext
{
|
|
"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
|
|
}
|