Files
aare/python/tests/GaussainErfcPlateau.ipynb
T
Khalil Ferjaoui 52b5cf6b9f
Build on RHEL9 / build (push) Successful in 2m27s
Build on RHEL8 / build (push) Successful in 3m1s
Run tests using data on local RHEL8 / build (push) Successful in 3m54s
Build on local RHEL8 / build (push) Successful in 2m36s
Feature/gauss+plateau (#312)
Adds three Minuit2-backed spectrum models to the Python-exposed fitting
API:

- `GaussianErfcPlateau`
- `GaussianChargeSharing`
- `GaussianChargeSharingKb`

Closes #297
2026-05-21 08:33:02 +02:00

368 lines
108 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "fbdc2fb9",
"metadata": {},
"source": [
"# Test `GaussianErfcPlateau` Python bindings\n",
"\n",
"Minimal check for the Aare Minuit2 object API against a SciPy `curve_fit` reference.\n",
"\n",
"Model:\n",
"\n",
"\\[\n",
"f(x) =\n",
"A \\exp\\left[-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2\\right]\n",
"+\n",
"\\frac{S}{2}\\left[\n",
"1 - \\operatorname{erf}\\left(\n",
"\\frac{x-\\mu}{\\sqrt{2}\\sigma}\n",
"\\right)\n",
"\\right]\n",
"\\]\n",
"\n",
"Parameter order:\n",
"\n",
"```text\n",
"[A, S, mu, sigma]\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2835b05b",
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import numpy as np\n",
"np.set_printoptions(suppress=True, precision=6)\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from scipy.special import erf\n",
"from scipy.optimize import curve_fit\n",
"from pprint import pprint\n",
"\n",
"import sys\n",
"sys.path.insert(0, \"/home/ferjao_k/sw/aare/build\")\n",
"\n",
"try:\n",
" from aare import GaussianErfcPlateau\n",
"except ImportError:\n",
" import aare\n",
" print(\"Could not import GaussianErfcPlateau directly.\")\n",
" print(\"Available Gaussian/Erf/Plateau-like names:\")\n",
" pprint([name for name in dir(aare)\n",
" if any(token.lower() in name.lower()\n",
" for token in (\"gauss\", \"erf\", \"plateau\"))])\n",
" raise"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "feb3872d",
"metadata": {},
"outputs": [],
"source": [
"def gaussian_erfc_plateau(x, p):\n",
" A, S, mu, sigma = p\n",
" z = (x - mu) / (np.sqrt(2.0) * sigma)\n",
" return A * np.exp(-0.5 * ((x - mu) / sigma)**2) + 0.5 * S * (1.0 - erf(z))\n",
"\n",
"def gaussian_erfc_plateau_curve_fit(x, A, S, mu, sigma):\n",
" return gaussian_erfc_plateau(x, np.array([A, S, mu, sigma], dtype=float))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4e10fc29",
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAArwAAAGHCAYAAABS74GwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB7kElEQVR4nO3dd3gU1foH8O+kk94bpBNJ6KEnCAFpBvQCimC5KAoigorkegUsV8ACYgOUIvciUfwJqBRRQYpIQInUJEpvgYSQkEKSTQKpO78/wi7Z7OxmNyTb8v08Dz7u2TMz7+yZhXfPnDlHEEVRBBERERGRhbIydgBERERERC2JCS8RERERWTQmvERERERk0ZjwEhEREZFFY8JLRERERBaNCS8RERERWTQmvERERERk0ZjwEhEREZFFY8JLRERERBaNCS+RARw6dAhjx45FcHAw7O3t4efnh9jYWPzrX/9q0eMePHgQ8+bNQ3Fxsdp7oaGheOCBB5rtWDdv3sS8efOwb98+tfeSkpIgCAIuX77cbMfLyMjASy+9hOjoaDg5OcHBwQGhoaH45z//id9++w3msIjk5cuXIQgCkpKSjB2KSUhNTUV8fDzc3NwgCAKWLFlikOPu27cPgiBIXruNOXXqFObNm9es17ahzZs3D4IgNGnbb775xmDtRHQ3mPAStbCff/4ZcXFxkMlkWLx4MXbt2oWlS5eif//+2LhxY4se++DBg5g/f75kwtvcbt68ifnz50smDaNGjUJKSgoCAgKa5Vjbtm1Dly5dsG3bNjz11FPYsmULdu7ciTfffBOFhYW47777sHfv3mY5VksKCAhASkoKRo0aZexQTMIzzzyDnJwcbNiwASkpKXj00UeNHVKjTp06hfnz55t1wns3mPCSubAxdgBElm7x4sUICwvDzp07YWNz5yv36KOPYvHixUaMzHB8fHzg4+PTLPu6ePEiHnvsMXTq1Al79uyBq6ur8r34+HhMnjwZ+/btg4eHR7McryXZ29ujX79+xg5DadCgQQgNDTVoj3NtbS1qampgb2+PEydO4Nlnn0VCQoLBjk9ErQN7eIlaWGFhIby9vVWSXQUrqztfwcmTJ8PT0xM3b95Uq3ffffehU6dOyteCIOCFF17AunXrEB0dDUdHR3Tr1g0//fSTss68efPw73//GwAQFhYGQRAkb9v+8ssv6NGjB9q0aYOoqCh88cUXasfPzc3Fc889h3bt2sHOzg5hYWGYP38+ampqANTdmlcktPPnz1cea9KkSQA0D2n45ZdfMGTIELi5ucHR0RHR0dFYuHChlk8T+Pjjj3Hz5k2sWLFCJdmtb9CgQejWrZvy9YULF/D0008jMjISjo6OaNu2LR588EH8/fffKttpilPqlndqaioeeOAB+Pr6wt7eHoGBgRg1ahSuXr2qrPPdd9+hb9++yvMLDw/HM888o3xfakiDrrEqYlq/fj1ef/11BAYGwtXVFUOHDsXZs2e1foYtobFrBLhzvosXL8Y777yDsLAw2NvbY+3atRAEATU1NVi5cqXy+lHIzs7G1KlTERQUBDs7OwQGBmLcuHG4fv261pgU35PPP/8c99xzD+zt7dGxY0ds2LCh0fM5evQoHn30UYSGhqJNmzYIDQ3FY489hitXrijrJCUl4ZFHHgEADB48WBl3/fbcs2cPhgwZAldXVzg6OqJ///749ddfVY7VEtenJj///DO6d+8Oe3t7hIWF4cMPP5Sst3z5cgwcOBC+vr5wcnJCly5dsHjxYlRXVyvrDBo0CD///DOuXLmiPPf67TZ//nz07dsXnp6ecHV1RY8ePbBmzRqzGG5Eloc9vEQtLDY2Fv/73//w0ksv4YknnkCPHj1ga2urVm/mzJn44osv8M0332DKlCnK8lOnTuG3337D8uXLVer//PPPOHLkCBYsWABnZ2csXrwYY8eOxdmzZxEeHo4pU6bgxo0b+PTTT7F582blcIKOHTsq95Geno5//etfmDNnDvz8/PC///0PkydPRvv27TFw4EAAdYlMnz59YGVlhf/85z+IiIhASkoK3nnnHVy+fBlr165FQEAAfvnlF9x///2YPHmyMn5tvbpr1qzBs88+i/j4eKxatQq+vr44d+4cTpw4ofXz3L17NwICAtCrV69GPvk7rl27Bi8vLyxatAg+Pj64ceMGvvzyS/Tt2xepqano0KGDzvsCgPLycgwbNgxhYWFYvnw5/Pz8kJubi99++w2lpaUAgJSUFEyYMAETJkzAvHnz4ODggCtXrjQ61ELfWF977TX0798f//vf/yCTyTB79mw8+OCDOH36NKytrfU6r6bS5Rqpb9myZbjnnnvw4YcfwtXVFe7u7khJSUFsbCzGjRunMrY9OzsbvXv3RnV1NV577TV07doVhYWF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trYW77//PpycnFR6rocNGwY7Ozs89thjePXVV1FRUYGVK1eiqKhIbZ9dunTB5s2bsXLlSvTs2RNWVlbo1asXRo0ahY8//hiPP/44pk6disLCQnz44YdqiT2RwRj1kTmiVmDjxo3i448/LkZGRorOzs6ira2tGBwcLE6cOFHjk+f79u0TAYiLFi2SfB8ST7OLYt3MC0899ZRK2dy5c8XAwEDRyspK5UnukJAQcdSoUWr7iI+PF+Pj41XK8vPzxZdeekkMCwsTbW1tRU9PT7Fnz57i66+/LpaVlSnr7dmzR4yJiRHt7e1FAMpYND1dvn37djE+Pl50cnISHR0dxY4dO4rvv/++5Dk3dPHiRfHFF18UO3ToILZp00a0t7cXQ0JCxEceeUTcsmWLylPgRUVF4uTJk0VfX1/R0dFRvPfee8UDBw5Inuu5c+fE4cOHi66urqKPj4/44osvij///LPKZ3fmzBnxscceEyMiIsQ2bdqIbm5uYp8+fcSkpCTlfn766ScxISFBbNu2rWhnZyf6+vqKI0eOFA8cOKCsIzVLg66xKp7M/+6771Ti12XmB03i4+PVrh9d6XKNKGL74IMPJPeh6brOysoSn3nmGdHf31+0tbUVAwMDxfHjx4vXr1/XGpNifytWrBAjIiJEW1tbMSoqSvy///s/lXpSsxxcvXpVfPjhh0UPDw/RxcVFvP/++8UTJ05IfseWLFkihoWFidbW1mqffXJysjhq1CjR09NTtLW1Fdu2bSuOGjVKpd2a+/rUZtu2bWLXrl1FOzs7MTg4WFy0aJH41ltvqc3S8OOPP4rdunUTHRwcxLZt24r//ve/xR07dqgd58aNG+K4ceNEd3d3URAElf188cUXYocOHUR7e3sxPDxcXLhwobhmzRqNM8cQtSRBFDkDNJGp+de//oWVK1ciKytL4zhDItJOEATMmDFD6x0DImodOKSByIT8+eefOHfuHFasWIHnnnuOyS4REVEzYMJLZEJiY2Ph6OiIBx54AO+8846xwyEiIrIIHNJARERERBaN05IRERERkUVjwktEREREFo0JLxERERFZND60JkEul+PatWtwcXHRawlMIiIiIjIMURRRWlqKwMBAWFlp78Nlwivh2rVrCAoKMnYYRERERNSIrKysRldzZMIrQbHsalZWlsrypC1FLpcjPz8fPj4+jf5CIdPENjR/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",
"text/plain": [
"<Figure size 800x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Synthetic data\n",
"rng = np.random.default_rng(42)\n",
"\n",
"x = np.linspace(-4.0, 6.0, 251)\n",
"\n",
"p_true = np.array([\n",
" 1.20, # A: Gaussian amplitude\n",
" 1.00, # S: left plateau height\n",
" 1.00, # mu: shared center / step position\n",
" 0.65, # sigma: shared width\n",
"])\n",
"\n",
"noise_sigma = 0.035\n",
"\n",
"y_true = gaussian_erfc_plateau(x, p_true)\n",
"y = y_true + rng.normal(0.0, noise_sigma, size=x.shape)\n",
"y_err = np.full_like(x, noise_sigma)\n",
"\n",
"plt.figure(figsize=(8, 4))\n",
"plt.plot(x, y_true, label=\"true\")\n",
"plt.scatter(x, y, s=10, label=\"noisy data\")\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.title(\"Synthetic Gaussian + erfc plateau data\")\n",
"plt.legend()\n",
"plt.grid(True, alpha=0.3)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "20571047",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True params : [1.2 1. 1. 0.65]\n",
"SciPy params: [1.19916 1.000479 1.005638 0.64249 ]\n",
"SciPy abs error: [0.00084 0.000479 0.005638 0.00751 ]\n"
]
}
],
"source": [
"# SciPy reference fit\n",
"p0_ref = np.array([1.0, 0.8, 0.5, 0.8])\n",
"\n",
"bounds_ref = (\n",
" [-np.inf, -np.inf, -np.inf, 1e-12],\n",
" [ np.inf, np.inf, np.inf, np.inf],\n",
")\n",
"\n",
"p_scipy, cov_scipy = curve_fit(\n",
" gaussian_erfc_plateau_curve_fit,\n",
" x,\n",
" y,\n",
" p0=p0_ref,\n",
" sigma=y_err,\n",
" absolute_sigma=True,\n",
" bounds=bounds_ref,\n",
" maxfev=20_000,\n",
")\n",
"\n",
"print(\"True params : \", p_true)\n",
"print(\"SciPy params: \", p_scipy)\n",
"print(\"SciPy abs error:\", np.abs(p_scipy - p_true))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "60ae684f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameter list:\n",
"['A', 'S', 'mu', 'sigma']\n",
"n_par: 4\n",
"\n",
"== Tuned fit settings ==\n",
"max_calls : 1000\n",
"tolerance : 0.01\n",
"compute_errors : True\n",
"\n",
"== Aare / Minuit2 result ==\n",
"{'par': array([1.199158, 1.000478, 1.00564 , 0.642494]),\n",
" 'par_err': array([0.008525, 0.003768, 0.005623, 0.005163]),\n",
" 'chi2': array([218.22232])}\n",
"\n",
"True params : [1.2 1. 1. 0.65]\n",
"SciPy params : [1.19916 1.000479 1.005638 0.64249 ]\n",
"Aare params : [1.199158 1.000478 1.00564 0.642494]\n",
"SciPy abs error : [0.00084 0.000479 0.005638 0.00751 ]\n",
"Aare abs error : [0.000842 0.000478 0.00564 0.007506]\n"
]
}
],
"source": [
"# Aare / Minuit2 object API fit\n",
"model = GaussianErfcPlateau()\n",
"\n",
"print(\"Parameter list:\")\n",
"print(model.par_names)\n",
"print(\"n_par:\", model.n_par)\n",
"print()\n",
"\n",
"# Optional: provide explicit starts close enough to avoid relying only on estimate_par().\n",
"model.SetParameter(\"A\", 1.0)\n",
"model.SetParameter(\"S\", 0.8)\n",
"model.SetParameter(\"mu\", 0.5)\n",
"model.SetParameter(\"sigma\", 0.8)\n",
"\n",
"# Optional fit settings\n",
"model.compute_errors = True\n",
"model.max_calls = 1000\n",
"model.tolerance = 0.01\n",
"\n",
"print(\"== Tuned fit settings ==\")\n",
"print(f\"max_calls : {model.max_calls}\")\n",
"print(f\"tolerance : {model.tolerance}\")\n",
"print(f\"compute_errors : {model.compute_errors}\")\n",
"print()\n",
"\n",
"res_aare = model.fit(x, y, y_err)\n",
"\n",
"print(\"== Aare / Minuit2 result ==\")\n",
"pprint(res_aare, sort_dicts=False)\n",
"\n",
"p_aare = np.array(res_aare[\"par\"], dtype=float)\n",
"\n",
"print()\n",
"print(\"True params : \", p_true)\n",
"print(\"SciPy params : \", p_scipy)\n",
"print(\"Aare params : \", p_aare)\n",
"print(\"SciPy abs error : \", np.abs(p_scipy - p_true))\n",
"print(\"Aare abs error : \", np.abs(p_aare - p_true))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "3f1f13e0",
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"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",
"text/plain": [
"<Figure size 800x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8, 4))\n",
"\n",
"# plt.plot(x, y_true, label=\"true\")\n",
"plt.scatter(x, y, s=10, label=\"data\", color=\"tab:blue\")\n",
"plt.plot(x, gaussian_erfc_plateau(x, p_scipy), linewidth=4.0, label=\"SciPy curve_fit\", color=\"tab:red\")\n",
"plt.plot(x, model(x, p_aare), linewidth=1.0, label=\"Aare Minuit2\", color=\"tab:cyan\")\n",
"\n",
"plt.xlabel(\"x\")\n",
"plt.ylabel(\"y\")\n",
"plt.title(\"Gaussian + erfc plateau fit comparison\")\n",
"plt.legend()\n",
"plt.grid(True, alpha=0.3)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "1359c6b6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SciPy curve_fit : 3.746 ms\n",
"Aare Minuit2 : 0.355 ms\n",
"\n",
"SciPy bench params: [1.19916 1.000479 1.005638 0.64249 ]\n",
"Aare bench params : [1.199158 1.000478 1.00564 0.642494]\n"
]
}
],
"source": [
"def bench(fn, n_repeats=200):\n",
" for _ in range(3):\n",
" fn()\n",
"\n",
" t0 = time.perf_counter()\n",
" for _ in range(n_repeats):\n",
" res = fn()\n",
" t1 = time.perf_counter()\n",
"\n",
" return res, (t1 - t0) / n_repeats\n",
"\n",
"def fit_scipy_once():\n",
" return curve_fit(\n",
" gaussian_erfc_plateau_curve_fit,\n",
" x,\n",
" y,\n",
" p0=p0_ref,\n",
" sigma=y_err,\n",
" absolute_sigma=True,\n",
" bounds=bounds_ref,\n",
" maxfev=20_000,\n",
" )[0]\n",
"\n",
"def fit_aare_once():\n",
" m = GaussianErfcPlateau()\n",
" m.SetParameter(\"A\", 1.0)\n",
" m.SetParameter(\"S\", 0.8)\n",
" m.SetParameter(\"mu\", 0.5)\n",
" m.SetParameter(\"sigma\", 0.8)\n",
" m.max_calls = 1000\n",
" m.tolerance = 0.01\n",
" return m.fit(x, y, y_err)[\"par\"]\n",
"\n",
"p_scipy_bench, t_scipy = bench(fit_scipy_once, n_repeats=200)\n",
"p_aare_bench, t_aare = bench(fit_aare_once, n_repeats=200)\n",
"\n",
"print(f\"SciPy curve_fit : {1e3*t_scipy:.3f} ms\")\n",
"print(f\"Aare Minuit2 : {1e3*t_aare:.3f} ms\")\n",
"print()\n",
"print(\"SciPy bench params:\", p_scipy_bench)\n",
"print(\"Aare bench params :\", p_aare_bench)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f6c02fe0-c642-470b-965a-f6931ac74726",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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": 5
}