{ "cells": [ { "cell_type": "markdown", "id": "intro", "metadata": {}, "source": [ "# 05 - Uncertainty quantification\n", "\n", "Three drop-in estimators in `maldideepkit.uncertainty` wrap a fitted classifier and report per-sample uncertainty alongside the usual predictions:\n", "\n", "1. **Monte Carlo Dropout** - stochastic forward passes with dropout layers active. Decomposes total uncertainty into *epistemic* (model disagreement) and *aleatoric* (data noise) components (Gal & Ghahramani, 2016; Kendall & Gal, 2017).\n", "2. **Laplace approximation** - last-layer or full-network Gaussian posterior over the weights, via [`laplace-torch`](https://github.com/aleximmer/Laplace). Requires the optional `uncertainty` extra: `pip install \"maldideepkit[uncertainty]\"`.\n", "3. **Split conformal prediction** - distribution-free prediction *sets* with a coverage guarantee. Pure NumPy, no extra deps.\n", "\n", "All three return a common `UncertaintyResult` dataclass, so call sites stay the same when you swap methods.\n", "\n", "Uses the **MALDI-Kleb-AI** dataset cached by `notebooks/_demo.py` (see notebook 01)." ] }, { "cell_type": "markdown", "id": "load-md", "metadata": {}, "source": [ "## 1. Load the demo dataset" ] }, { "cell_type": "code", "execution_count": 1, "id": "load", "metadata": { "execution": { "iopub.execute_input": "2026-05-12T08:46:28.436736Z", "iopub.status.busy": "2026-05-12T08:46:28.436628Z", "iopub.status.idle": "2026-05-12T08:46:46.132104Z", "shell.execute_reply": "2026-05-12T08:46:46.131340Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "349dbac404fd4f17bad367f673f70488", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing spectra: 0%| | 0/743 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x_max = float(np.maximum(mc_result.epistemic.max(), mc_result.aleatoric.max()))\n", "bins = np.linspace(0.0, x_max, 31)\n", "\n", "fig, axes = plt.subplots(1, 2, figsize=(10, 3.5), sharex=True, sharey=True)\n", "axes[0].hist(mc_result.epistemic, bins=bins, color='C0', alpha=0.85)\n", "axes[0].set_title('Epistemic (model disagreement)')\n", "axes[0].set_xlabel('uncertainty')\n", "axes[0].set_ylabel('test spectra')\n", "axes[1].hist(mc_result.aleatoric, bins=bins, color='C1', alpha=0.85)\n", "axes[1].set_title('Aleatoric (data noise)')\n", "axes[1].set_xlabel('uncertainty')\n", "axes[0].set_xlim(0.0, x_max)\n", "fig.suptitle('MC Dropout decomposition on the test split')\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "conformal-md", "metadata": {}, "source": [ "## 5. Split conformal prediction\n", "\n", "`ConformalPredictor` learns a single quantile on the calibration split, then returns a *prediction set* per test spectrum that contains the true class with marginal probability $\\geq 1 - \\alpha$. With `alpha=0.1` we target 90 % coverage.\n", "\n", "Per-sample uncertainty is the prediction set size normalised by `n_classes`: `1 / n_classes` for a confident singleton, `1.0` when every class is included." ] }, { "cell_type": "code", "execution_count": 6, "id": "conformal", "metadata": { "execution": { "iopub.execute_input": "2026-05-12T08:46:48.871345Z", "iopub.status.busy": "2026-05-12T08:46:48.871107Z", "iopub.status.idle": "2026-05-12T08:46:48.879635Z", "shell.execute_reply": "2026-05-12T08:46:48.879050Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "target coverage: 0.90\n", "empirical coverage: 0.960\n", "mean set size: 1.62 (singleton fraction: 0.38)\n", "calibration n: 148\n" ] } ], "source": [ "from maldideepkit.uncertainty import ConformalPredictor\n", "\n", "cp = ConformalPredictor(clf, alpha=0.10).calibrate(X_cal, y_cal)\n", "cp_result = cp.predict_with_uncertainty(X_te)\n", "\n", "sets = cp_result.metadata['prediction_sets'] # (n_test, n_classes) bool\n", "set_sizes = cp_result.metadata['set_sizes'] # (n_test,) int\n", "covered = sets[np.arange(len(y_te)), np.asarray(y_te)]\n", "\n", "print(f'target coverage: {1 - cp.alpha:.2f}')\n", "print(f'empirical coverage: {covered.mean():.3f}')\n", "print(f'mean set size: {set_sizes.mean():.2f} '\n", " f'(singleton fraction: {(set_sizes == 1).mean():.2f})')\n", "print(f'calibration n: {cp_result.metadata[\"n_calibration\"]}')" ] }, { "cell_type": "markdown", "id": "conformal-md2", "metadata": {}, "source": [ "Conformal prediction *sets* are most useful when the model is uncertain: a singleton means the model is confident, a full set means \"could be either\". Inspect a few examples on the test split." ] }, { "cell_type": "code", "execution_count": 7, "id": "conformal-show", "metadata": { "execution": { "iopub.execute_input": "2026-05-12T08:46:48.880866Z", "iopub.status.busy": "2026-05-12T08:46:48.880764Z", "iopub.status.idle": "2026-05-12T08:46:48.889020Z", "shell.execute_reply": "2026-05-12T08:46:48.888580Z" } }, "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", "
true_yargmax_yp(argmax)setset_sizecovered
0110.768[0, 1]2True
1110.997[1]1True
2100.532[0, 1]2True
3111.000[1]1True
4000.931[0, 1]2True
5000.977[0]1True
6110.731[0, 1]2True
7000.759[0, 1]2True
\n", "
" ], "text/plain": [ " true_y argmax_y p(argmax) set set_size covered\n", "0 1 1 0.768 [0, 1] 2 True\n", "1 1 1 0.997 [1] 1 True\n", "2 1 0 0.532 [0, 1] 2 True\n", "3 1 1 1.000 [1] 1 True\n", "4 0 0 0.931 [0, 1] 2 True\n", "5 0 0 0.977 [0] 1 True\n", "6 1 1 0.731 [0, 1] 2 True\n", "7 0 0 0.759 [0, 1] 2 True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "classes = np.asarray(clf.classes_)\n", "rng = np.random.default_rng(0)\n", "rows = []\n", "for i in rng.choice(len(y_te), size=8, replace=False):\n", " members = classes[sets[i]].tolist()\n", " rows.append({\n", " 'true_y': int(np.asarray(y_te)[i]),\n", " 'argmax_y': int(cp_result.predictions[i]),\n", " 'p(argmax)': float(cp_result.proba_mean[i].max().round(3)),\n", " 'set': members,\n", " 'set_size': int(set_sizes[i]),\n", " 'covered': bool(covered[i]),\n", " })\n", "pd.DataFrame(rows)" ] }, { "cell_type": "markdown", "id": "laplace-md", "metadata": {}, "source": [ "## 6. Laplace approximation\n", "\n", "`LaplaceEstimator` fits a Gaussian approximation of the posterior over the weights and turns the predictive variance into a per-sample uncertainty estimate. We use the cheap `subset_of_weights=\"last_layer\"` + `hessian_structure=\"diag\"` defaults; bump them up to `\"all\"` / `\"kron\"` for slower but more expressive posteriors.\n", "\n", "Requires the optional `uncertainty` extra:\n", "\n", "```bash\n", "pip install \"maldideepkit[uncertainty]\"\n", "```" ] }, { "cell_type": "code", "execution_count": 8, "id": "laplace", "metadata": { "execution": { "iopub.execute_input": "2026-05-12T08:46:48.890364Z", "iopub.status.busy": "2026-05-12T08:46:48.890257Z", "iopub.status.idle": "2026-05-12T08:46:49.416513Z", "shell.execute_reply": "2026-05-12T08:46:49.415856Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: laplace\n", "total H: mean=0.442\n", "epistemic: mean=0.022\n", "aleatoric: mean=0.419\n", "predictive variance (per-sample mean): 0.0224\n" ] } ], "source": [ "try:\n", " from maldideepkit.uncertainty import LaplaceEstimator\n", " la = LaplaceEstimator(\n", " clf,\n", " subset_of_weights='last_layer',\n", " hessian_structure='diag',\n", " ).calibrate(X_cal, y_cal)\n", " la_result = la.predict_with_uncertainty(X_te)\n", " print(f'method: {la_result.method}')\n", " print(f'total H: mean={la_result.uncertainty.mean():.3f}')\n", " print(f'epistemic: mean={la_result.epistemic.mean():.3f}')\n", " print(f'aleatoric: mean={la_result.aleatoric.mean():.3f}')\n", " print(f'predictive variance (per-sample mean): '\n", " f'{la_result.metadata[\"predictive_variance\"].mean():.4f}')\n", " have_laplace = True\n", "except ImportError as exc:\n", " print(f'LaplaceEstimator unavailable - install with `pip install \"maldideepkit[uncertainty]\"`.')\n", " print(f' ({exc})')\n", " have_laplace = False" ] }, { "cell_type": "markdown", "id": "selective-md", "metadata": {}, "source": [ "## 7. Selective prediction with the uncertainty signal\n", "\n", "A practical use of any of these scalar uncertainties is **selective prediction**: refuse to answer when the model is unsure. Sweep a coverage threshold (\"only answer on the most-confident X % of the test set\") and watch accuracy improve as we abstain on the noisy tail." ] }, { "cell_type": "code", "execution_count": 9, "id": "selective", "metadata": { "execution": { "iopub.execute_input": "2026-05-12T08:46:49.418072Z", "iopub.status.busy": "2026-05-12T08:46:49.417946Z", "iopub.status.idle": "2026-05-12T08:46:49.487710Z", "shell.execute_reply": "2026-05-12T08:46:49.487118Z" } }, "outputs": [ { "data": { "image/png": "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YmKi/sA6dOgQbdu2LfFafvnll8hkMj788EPi4+NZuHAhQUFBhIaGaoySJCUl0adPH4YOHcorr7yCm5sbSqWSZ599lsOHD/P666/TsGFDLly4wHfffcfVq1c11leNGzeOdevWMXz4cDp06MD+/fvp169fifYZ+voC7N27lz59+uDr68usWbPIyspiyZIldOzYkZCQkELOQEOGDMHHx4e5c+cSEhLCzz//jKurK/PmzVOX+f7775k9ezYHDhzQ+gFeHHFxcXTo0IHMzEwmTZpE9erVWb16Nc8++yybNm3i+eefRyaT0bFjR/777z/1cefPnyclJQUTExOOHDmivp6HDh2iRYsW6mtw6dIlOnbsiKenJ9OmTcPGxoYNGzYwcOBANm/ezPPPP69hz/jx43FxceHTTz8lIyNDr3Mpjvv379O7d29eeOEFhgwZwqZNm/jwww9p0qQJffr0AUChUNC/f3/27dvH0KFDeeedd0hLS2PPnj1cvHgRPz8/QPdnE1TTkMOGDeONN97gtddeo379+qxdu5Zx48bRtm1bXn/9dQB13adOneLo0aMMHTqUmjVrEhkZybJly+jatSthYWEljqKVdJ4NGzbks88+49NPP+X1118nMDAQgA4dOtCpUyc+++wz1q9fz4QJE9R15ubmsmnTJgYNGlSqUcfhw4cTHx/PH3/8wYoVK2jSpAljx47llVdeoXr16nrXB7o9F49z584dunXrhkwmY/r06djY2PDzzz8XOVJ4/fp1Bg8ezNixYxk5ciS//voro0aNolWrVvj7+wOq2YguXbpw584d3njjDWrVqsXRo0eZPn06MTExhdYGr1y5kuzsbF5//XUsLCxwcnIq0t5ly5bh7+/Ps88+i6mpKdu2bWP8+PEolUrefvttdbmSPqMA9uzZQ//+/fHw8OCdd97B3d2d8PBwtm/fzjvvvKPrZS/xXFJTU/n5558ZNmwYr732Gmlpafzyyy/06tWLkydPaiw5GDt2LKtWraJPnz6MGzeO/Px8Dh06xPHjx2ndujWvvvoqr732WqHv2lOnTnH16lU++eSTUtldpZEEVZrdu3dLcrlcksvlUkBAgDR16lRp165dUm5urka5yMhISS6XS19++aXG9gsXLkimpqYa20eOHCl5e3ur3x86dEgCpN9++03j2J07d2psT05Oluzs7KR27dpJWVlZGmWV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woiIiIiobqi+CjgxMRHdu3dHWloa1q9fj4qKCpw4cQI7duyAm5tbXdRIRERERGakOgDOnTsXixcvxnfffQetVot///vfSE9Px7PPPovWrVvXRY1EREREZEaqA2B2djYiIiIAAFqtFqWlpdBoNJg0aRI++eQTsxdIREREROalOgA2adIEV69eBQC0bNkSx48fBwAUFRXh2rVr5q2OiIiIiMxO9UUgjz/+OLZt24agoCA888wzmDhxInbs2IFt27bhySefrIsaiYiIiMiMVAfADz/8EH/88QcAYNq0abCzs8OePXvw97//HdOnTzd7gURERERkXqoC4I0bN/D9999Dr9cDAGxsbPDmm2/WSWFEREREVDdUnQPYqFEjvPLKK8oRQCIiIiKyPKovAgkJCUFqamodlEJERERE9UH1OYDjxo1DdHQ0zpw5g+DgYDg5ORlN79ixo9mKIyIiIiLzUx0An3vuOQBAVFSUMqbRaCAi0Gg0qKysNF91RERERGR2qgNgbm5uXdRBRERERPVEdQD09fWtizqIiIiIqJ6oDoCff/75XaePGDGi1sUQERERUd1THQAnTpxo9LyiogLXrl2DVquFo6MjAyARERHRfU71bWAuX75s9CgpKUFGRgYee+wxrF69ui5qJCIiIiIzUh0Aq/LQQw9h3rx5JkcHiYiIiOj+Y5YACNz8lpDff//dXKsjIiIiojqi+hzAjRs3Gj0XEeTn5+PDDz9Ejx49zFYYEREREdUN1QFw0KBBRs81Gg08PDzQp08fvPfee+aqi4iIiIjqiOoAaDAY6qIOIiIiIqonZjsHkIiIiIgsg+oA+Pe//x3z5883GV+wYAGeeeYZsxRFRERERHVHdQD88ccf8dRTT5mM//Wvf8WPP/5olqKIiIiIqO6oDoAlJSXQarUm43Z2diguLjZLUURERERUd1QHwKCgIKxZs8ZkPDExEe3btzdLUURERERUd1RfBfyvf/0LTz/9NLKzs9GnTx8AQFJSElavXo2vvvrK7AUSERERkXmpDoD9+/fHt99+i7lz5+Lrr7+Gg4MDOnbsiO3bt6NXr151USMRERERmZHqAAgAERERiIiIMHctRERERFQPVJ8DeODAAezbt89kfN++ffjll19UF7B06VL4+fnB3t4eoaGh2L9//13nLyoqwvjx4+Ht7Q2dToe2bdti8+bNqrdLREREZK1UB8Dx48fjzJkzJuNnz57F+PHjVa1rzZo1iI6ORmxsLA4dOoROnTpBr9fj3LlzVc5fXl6Ovn374tSpU/j666+RkZGB5cuXo2XLlmpfBhEREZHVUv0R8MmTJ9G1a1eT8S5duuDkyZOq1rVo0SKMHTsWo0aNAgAsW7YMmzZtQnx8PN58802T+ePj43Hp0iXs2bMHdnZ2AAA/Pz+1L4GIiIjIqqkOgDqdDoWFhXjwwQeNxvPz89GoUc1XV15ejoMHDyImJkYZs7GxQXh4OPbu3VvlMhs3bkRYWBjGjx+PDRs2wMPDA0OHDsXUqVNha2tb5TJlZWUoKytTnt+6V6HBYOD3GlsQg8EAEWHPLAz7ZpnYN8vEvlkuc/VOzfKqA+Bf/vIXxMTEYMOGDXBzcwNw87y8t956C3379q3xei5cuIDKykp4enoajXt6eiI9Pb3KZXJycrBjxw4MGzYMmzdvRlZWFsaNG4eKigrExsZWuUxcXBxmzJhhMn7+/HmUl5fXuF5qWAaDAVeuXIGIwMaGX2FtKdg3y8S+WSb2zXKZq3dXr16t8byqA+DChQvx+OOPw9fXF126dAEApKamwtPTE//5z3/Urk4Vg8GA5s2b45NPPoGtrS2Cg4Nx9uxZvPvuu9UGwJiYGERHRyvPi4uL4ePjAw8PDzRu3LhO6yXzMRgM0Gg08PDw4C82C8K+WSb2zTKxb5bLXL2zt7ev8byqA2DLli1x9OhRrFq1CkeOHIGDgwNGjRqF559/Xjkvrybc3d1ha2uLwsJCo/HCwkJ4eXlVuYy3tzfs7OyMPu4NDAxEQUEBysvLq/yKOp1OB51OZzJuY2PDN4iF0Wg07JsFYt8sE/tmmdg3y2WO3qlZtlb3AXRycsLLL79cm0UVWq0WwcHBSEpKwqBBgwDcTMBJSUmIjIyscpkePXrgyy+/hMFgUF5kZmYmvL29qwx/RERERGSqVgEQuHk1cF5ensl5dAMGDKjxOqKjozFy5Eh069YNISEhWLJkCUpLS5WrgkeMGIGWLVsiLi4OAPDqq6/iww8/xMSJEzFhwgT8+uuvmDt3LqKiomr7MoiIiIisjuoAmJOTg8GDB+PYsWPQaDQQEQA3D10CQGVlZY3XNWTIEJw/fx5vv/02CgoK0LlzZ2zZskW5MCQvL8/ocKaPjw+2bt2KSZMmoWPHjmjZsiUmTpyIqVOnqn0ZRERERFZLI7cSXA31798ftra2+PTTT/HAAw9g//79uHjxIiZPnoyFCxeiZ8+edVWrWRQXF8PNzQ2XL1/mRSAWxGAw4Ny5c2jevDnPbbEg7JtlYt8sE/tmuczVu1sZ58qVK3B1db3rvKqPAO7duxc7duyAu7u7crLiY489hri4OERFReHw4cO1LpyIiIiI6p7qmFlZWQkXFxcAN6/k/f333wEAvr6+yMjIMG91RERERGR2qo8APvzwwzhy5AgeeOABhIaGYsGCBdBqtfjkk09Mvh2EiIiIiO4/qgPg9OnTUVpaCgCYOXMm/va3v6Fnz55o1qwZ1qxZY/YCiYiIiMi8VAdAvV6v/LtNmzZIT0/HpUuX0KRJE+VKYCIiIiK6f9X6PoC3a9q0qTlWQ0RERET1gNeJExEREVkZBkAiIiIiK8MASERERGRlGACJiIiIrAwDIBEREZGVYQAkIiIisjIMgERERERWhgGQiIiIyMowABIRERFZGQZAIiIiIivDAEhERERkZRgAiYiIiKwMAyARERGRlWEAJCIiIrIyDIBEREREVoYBkIiIiMjKMAASERERWRkGQCIiIiIrwwBIREREZGUYAImIiIisDAMgERERkZVhACQiIiKyMgyARERERFaGAZCIiIjIyjAAEhEREVkZBkAiIiIiK8MASERERGRlGACJiIiIrAwDIBEREZGVYQAkIiIisjIMgERERERWhgGQiIiIyMowABIRERFZGQZAIiIiIivDAEhERERkZRgAiYiIiKwMAyARERGRlWEAJCIiIrIyDIBEREREVoYBkIiIiMjKMAASERERWRkGQCIiIiIrc18EwKVLl8LPzw/29vYIDQ3F/v37q503ISEBGo3G6GFvb1+P1RIRERFZtgYPgGvWrEF0dDRiY2Nx6NAhdOrUCXq9HufOnat2GVdXV+Tn5yuP06dP12PFRERERJatwQPgokWLMHbsWIwaNQrt27fHsmXL4OjoiPj4+GqX0Wg08PLyUh6enp71WDERERGRZWvQAFheXo6DBw8iPDxcGbOxsUF4eDj27t1b7XIlJSXw9fWFj48PBg4ciBMnTtRHuURERER/Co0acuMXLlxAZWWlyRE8T09PpKenV7lMQEAA4uPj0bFjR1y5cgULFy5E9+7dceLECbRq1cpk/rKyMpSVlSnPr1y5AgAoKioy3wuhOmcw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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def selective_curve(uncertainty, predictions, y_true):\n", " \"\"\"Return (coverage, accuracy) pairs as we abstain on the most-uncertain samples.\"\"\"\n", " order = np.argsort(uncertainty) # most certain first\n", " y_arr = np.asarray(y_true)\n", " n = len(order)\n", " coverages, accuracies = [], []\n", " for k in range(max(1, n // 20), n + 1, max(1, n // 20)):\n", " kept = order[:k]\n", " coverages.append(k / n)\n", " accuracies.append(float((predictions[kept] == y_arr[kept]).mean()))\n", " return np.asarray(coverages), np.asarray(accuracies)\n", "\n", "fig, ax = plt.subplots(figsize=(6.5, 4))\n", "for label, result in [\n", " ('MC Dropout', mc_result),\n", " ('Conformal (set size)', cp_result),\n", "] + ([('Laplace', la_result)] if have_laplace else []):\n", " cov, acc = selective_curve(result.uncertainty, result.predictions, y_te)\n", " ax.plot(cov, acc, marker='o', linewidth=1.5, label=label)\n", "ax.set_xlabel('coverage (fraction of test set answered)')\n", "ax.set_ylabel('accuracy on answered subset')\n", "ax.set_title('Selective prediction: lower uncertainty -> higher accuracy')\n", "ax.set_ylim(0.5, 1.01)\n", "ax.legend()\n", "ax.grid(alpha=0.3)\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "recap", "metadata": {}, "source": [ "## Recap\n", "\n", "All three estimators expose the same `predict_with_uncertainty(X)` interface and return an `UncertaintyResult` with `predictions`, `proba_mean`, `uncertainty`, optional `epistemic` / `aleatoric`, and method-specific extras under `metadata`.\n", "\n", "| Method | Decomposes? | Calibration set? | Extra dependency | Best for |\n", "|---|---|---|---|---|\n", "| `MCDropoutEstimator` | epistemic + aleatoric | no | none | Quick uncertainty on a model with dropout. |\n", "| `ConformalPredictor` | no | yes | none | Distribution-free coverage guarantees, prediction sets. |\n", "| `LaplaceEstimator` | epistemic + aleatoric | yes | `laplace-torch` | Posterior-based uncertainty without retraining. |\n", "\n", "See `docs/source/api/uncertainty.rst` for the full API reference." ] } ], "metadata": { "kernelspec": { "display_name": "maldideepkit (3.10.12)", "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.10.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "2d5369ddbc134e3e9eac55aca8a86ac0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "349dbac404fd4f17bad367f673f70488": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c2f4a5ca744f4f4abcdeb51b6c7f5456", "IPY_MODEL_ad76809834bd4fc9a8bcfea6a0315522", "IPY_MODEL_9e827b81787f48bda6fd8c907007fe27" ], "layout": "IPY_MODEL_72530f4ed87e4040b310f211426d3d87", "tabbable": null, "tooltip": null } }, "7169b9a38afa412c8722a2289cb670fa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "72530f4ed87e4040b310f211426d3d87": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9e827b81787f48bda6fd8c907007fe27": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_c3163134b3404985bf0fb568c0ae6d78", "placeholder": "​", "style": "IPY_MODEL_d0dea636b6274122a1cae2b38fb69317", "tabbable": null, "tooltip": null, "value": " 743/743 [00:00<00:00, 3920.63spectrum/s]" } }, "9ed74e99d284490f9baf4e57fbab974a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ad76809834bd4fc9a8bcfea6a0315522": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_f00b500cc9554c34ad65747362ca032b", "max": 743.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_2d5369ddbc134e3e9eac55aca8a86ac0", "tabbable": null, "tooltip": null, "value": 743.0 } }, "c2f4a5ca744f4f4abcdeb51b6c7f5456": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_9ed74e99d284490f9baf4e57fbab974a", "placeholder": "​", "style": "IPY_MODEL_7169b9a38afa412c8722a2289cb670fa", "tabbable": null, "tooltip": null, "value": "Processing spectra: 100%" } }, "c3163134b3404985bf0fb568c0ae6d78": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d0dea636b6274122a1cae2b38fb69317": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "f00b500cc9554c34ad65747362ca032b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }