diff --git a/notebooks/Jungfrau/Jungfrau_gain_Spectra_Fit_Summary_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_gain_Spectra_Fit_Summary_NBC.ipynb index 49a5814a16d73372d62aa06fcb266e4782d20c86..8f932e8c4ffe58c8ab1e3911ee000a3323e060e5 100644 --- a/notebooks/Jungfrau/Jungfrau_gain_Spectra_Fit_Summary_NBC.ipynb +++ b/notebooks/Jungfrau/Jungfrau_gain_Spectra_Fit_Summary_NBC.ipynb @@ -46,13 +46,12 @@ "import matplotlib.gridspec as gridspec\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "import yaml\n", "from IPython.display import Markdown, display\n", "\n", "matplotlib.use(\"agg\")\n", "%matplotlib inline\n", "\n", - "from cal_tools.plotting import init_jungfrau_geom, show_processed_modules_jungfrau\n", + "from cal_tools.plotting import init_jungfrau_geom\n", "from cal_tools.tools import CalibrationMetadata\n", "from XFELDetAna.plotting.simpleplot import simplePlot\n", "from cal_tools.restful_config import calibration_client\n", @@ -82,26 +81,6 @@ "da_to_pdu = {k: v[\"physical_name\"] for k, v in da_mapping.items()}" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# display(Markdown('## Processed modules'))\n", - "\n", - "# processed_modules = list(da_to_pdu.values())\n", - "# processed_pdus = list(da_to_pdu.keys())\n", - "\n", - "# show_processed_modules_jungfrau(\n", - "# jungfrau_geom=geom,\n", - "# constants=[\"RelativeGain10Hz\", \"BadPixelsFF10Hz\"],\n", - "# processed_modules=processed_modules,\n", - "# expected_modules=expected_modules,\n", - "# display_module_names=processed_pdus,\n", - "# )" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/notebooks/Jungfrau/Jungfrau_gain_map_Summary_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_gain_map_Summary_NBC.ipynb index 6d9e6e09028950a7423f406848387790c9070cc9..9f1a6ae5e7f8298f14654c124341d6f1192a5b18 100644 --- a/notebooks/Jungfrau/Jungfrau_gain_map_Summary_NBC.ipynb +++ b/notebooks/Jungfrau/Jungfrau_gain_map_Summary_NBC.ipynb @@ -44,12 +44,14 @@ "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "from IPython.display import Markdown, display\n", + "import tabulate\n", + "from IPython.display import Latex, Markdown, display\n", "\n", "matplotlib.use(\"agg\")\n", "%matplotlib inline\n", "\n", - "from cal_tools.plotting import init_jungfrau_geom, show_processed_modules_jungfrau\n", + "from cal_tools.enums import BadPixels\n", + "from cal_tools.plotting import init_jungfrau_geom\n", "from cal_tools.restful_config import calibration_client\n", "from cal_tools.calcat_interface import CalCatApi" ] @@ -77,34 +79,41 @@ "da_to_pdu = {k: v[\"physical_name\"] for k, v in da_mapping.items()}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Created gain calibration constants" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# display(Markdown('## Processed modules'))\n", - "\n", - "# processed_modules = list(da_to_pdu.values())\n", - "# processed_pdus = list(da_to_pdu.keys())\n", "const_names_dict = {\n", " \"RelativeGain10Hz\": \"RelativeGain\", # TODO: This name is not relevant should we display gain instead of Relative??\n", " \"BadPixelsFF10Hz\": \"BadPixelsFF\",\n", "}\n", - "# show_processed_modules_jungfrau(\n", - "# jungfrau_geom=geom,\n", - "# constants=list(const_names_dict.keys()),\n", - "# processed_modules=processed_modules,\n", - "# expected_modules=expected_modules,\n", - "# display_module_names=processed_pdus,\n", - "# )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Created gain calibration constants" + "\n", + "gains = [\"High gain\", \"Medium gain\", \"Low gain\"]\n", + "stacked_constants = {g: np.full(geom.expected_data_shape, np.nan) for g in gains}\n", + "constants = dict()\n", + "\n", + "def badpx(constant_name):\n", + " return True if \"bad\" in constant_name.lower() else False\n", + "\n", + "\n", + "def bp_entry(bp):\n", + " return [f\"{bp.name:<30s}\", f\"{bp.value:032b}\", f\"{int(bp.value)}\"]\n", + "\n", + "\n", + "badpixels = [\n", + " BadPixels.FF_NO_ENTRIES,\n", + " BadPixels.FF_GAIN_EVAL_ERROR,\n", + " BadPixels.FF_GAIN_DEVIATION,\n", + "]" ] }, { @@ -113,12 +122,16 @@ "metadata": {}, "outputs": [], "source": [ - "gains = [\"High gain\", \"Medium gain\", \"Low gain\"]\n", - "stacked_constants = {g: np.full(geom.expected_data_shape, np.nan) for g in gains}\n", - "constants = dict()\n", - "\n", "for cname in const_names_dict.values():\n", - "\n", + " if badpx(cname):\n", + " table = [bp_entry(bp) for bp in badpixels]\n", + " display(Markdown(\"\"\"**The bad pixel** mask is encoded as a bit mask.\"\"\"))\n", + " display(Latex(\n", + " tabulate.tabulate(\n", + " table,\n", + " tablefmt='latex',\n", + " headers=[\"Name\", \"bit value\", \"integer value\"]\n", + " )))\n", " for i, (da, pdu) in enumerate(da_to_pdu.items()):\n", " with h5file(\n", " Path(out_folder) / f\"const_{cname}_{pdu}.h5\",\n", @@ -131,11 +144,15 @@ " f[\"data\"][..., j],\n", " axis=-1\n", " ), 0, 1).astype(np.float32 if cname == \"RelativeGain\" else np.uint32)\n", - "\n", + " \n", " display(Markdown(f\"### {cname} map per gain\"))\n", " for g in gains:\n", " fig, ax = plt.subplots(figsize=(18, 10))\n", - " vmin, vmax = np.percentile(stacked_constants[g], [5, 95])\n", + " if badpx(cname):\n", + " vmin, vmax = (0, sorted([bp.value for bp in badpixels])[-2])\n", + " else:\n", + " vmin, vmax = np.percentile(stacked_constants[g], [5, 95])\n", + "\n", " geom.plot_data_fast(\n", " stacked_constants[g],\n", " ax=ax,\n",