{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Activation foil analysis" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from libra_toolbox.neutron_detection.activation_foils import *\n", "from data import foil_data\n", "import pandas as pd\n", "import pint_pandas" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rungeneratorfluxerror
unitNo UnitNo Unit1 / secondNo Unit
04P3832.61e+088.81e-02
14P3832.67e+088.81e-02
24A3259.84e+078.82e-02
34A3251.06e+088.82e-02
45A3251.15e+088.82e-02
55A3251.17e+088.82e-02
65P3832.68e+088.81e-02
75P3832.74e+088.81e-02
86A3251.06e+088.82e-02
96A3251.07e+088.82e-02
106P3832.49e+088.81e-02
116P3832.46e+088.81e-02
\n", "
" ], "text/plain": [ " run generator flux error\n", "unit No Unit No Unit 1 / second No Unit\n", "0 4 P383 2.61e+08 8.81e-02\n", "1 4 P383 2.67e+08 8.81e-02\n", "2 4 A325 9.84e+07 8.82e-02\n", "3 4 A325 1.06e+08 8.82e-02\n", "4 5 A325 1.15e+08 8.82e-02\n", "5 5 A325 1.17e+08 8.82e-02\n", "6 5 P383 2.68e+08 8.81e-02\n", "7 5 P383 2.74e+08 8.81e-02\n", "8 6 A325 1.06e+08 8.82e-02\n", "9 6 A325 1.07e+08 8.82e-02\n", "10 6 P383 2.49e+08 8.81e-02\n", "11 6 P383 2.46e+08 8.81e-02" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a pandas dataframe based on the foil data with columns for run, generator, flux and error\n", "\n", "irradiations = [\n", " {\"t_on\": 0, \"t_off\": 12 * settings.ureg.h},\n", " {\"t_on\": 24 * settings.ureg.h, \"t_off\": 36 * settings.ureg.h},\n", "]\n", "\n", "data = {\n", " \"run\": [],\n", " \"generator\": [],\n", " \"flux\": [],\n", " \"error\": [],\n", "}\n", "\n", "for name, foil in foil_data.items():\n", " flux = explicit.get_neutron_flux(foil, irradiations)\n", " error = explicit.get_neutron_flux_error(foil)\n", " data[\"run\"].append(foil[\"run\"])\n", " data[\"generator\"].append(foil[\"generator\"])\n", " data[\"flux\"].append(flux.to(settings.ureg.s**-1))\n", " data[\"error\"].append(error)\n", "data[\"flux\"] = pd.Series(data[\"flux\"], dtype=\"pint[s**-1]\")\n", "pd.options.display.float_format = '{:,.2e}'.format\n", "df = pd.DataFrame(data)\n", "df.pint.dequantify()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rungeneratorflux_meanflux_minflux_max
unitNo UnitNo Unit1 / second1 / second1 / second
04A3251.02e+089.84e+071.06e+08
14P3832.64e+082.61e+082.67e+08
25A3251.16e+081.15e+081.17e+08
35P3832.71e+082.68e+082.74e+08
46A3251.06e+081.06e+081.07e+08
56P3832.48e+082.46e+082.49e+08
\n", "
" ], "text/plain": [ " run generator flux_mean flux_min flux_max\n", "unit No Unit No Unit 1 / second 1 / second 1 / second\n", "0 4 A325 1.02e+08 9.84e+07 1.06e+08\n", "1 4 P383 2.64e+08 2.61e+08 2.67e+08\n", "2 5 A325 1.16e+08 1.15e+08 1.17e+08\n", "3 5 P383 2.71e+08 2.68e+08 2.74e+08\n", "4 6 A325 1.06e+08 1.06e+08 1.07e+08\n", "5 6 P383 2.48e+08 2.46e+08 2.49e+08" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#for each run number compute the average per generator\n", "grouped_multiple = df.groupby(['run', 'generator']).agg({'flux': ['mean', 'min', 'max']})\n", "grouped_multiple.columns = ['flux_mean', 'flux_min', 'flux_max']\n", "grouped_multiple = grouped_multiple.reset_index()\n", "grouped_multiple.pint.dequantify()\n" ] } ], "metadata": { "kernelspec": { "display_name": "baby-paper-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.12.5" } }, "nbformat": 4, "nbformat_minor": 2 }