Files
aare/python/tests/GaussainErfcPlateau.ipynb
T
4aadb6f7f0
Build on RHEL9 / build (push) Successful in 3m13s
Build on RHEL8 / build (push) Successful in 3m52s
Run tests using data on local RHEL8 / build (push) Successful in 3m56s
Build on local RHEL8 / build (push) Successful in 2m45s
refactor: hide Minuit2 from aare's public API (#331)
- Move Chi2.hpp from include/aare/ to src/ (private)
- Pimpl on FitModel<Model>: MnUserParameters/MnStrategy behind opaque
src/FitModelImpl.hpp, no Minuit2 includes in public headers
- Move fit_pixel/fit_3d bodies to Fit.cpp with explicit instantiations
for all 8 models; drop FCN template param from public API
- CMake: aare::Minuit2 wrapped in $<BUILD_INTERFACE:...> (hidden from
exported targets, same pattern as lmfit), MINUIT2_INSTALL OFF, Chi2.hpp
removed from PUBLICHEADERS
- Update python bindings and benchmark callsites accordingly

---------

Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
Co-authored-by: Alice <alice.mazzoleni@psi.ch>
2026-07-02 16:04:22 +02:00

358 lines
99 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/aare/build\")\n",
"from aare import GaussianErfcPlateau"
]
},
{
"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":
"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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": 6,
"id": "3f1f13e0",
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"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2oDevXuXGA7wxIkTaN68OawFA14rExAQYPS4Tp066lbGc2WrhfWTHygDBgxQ9fjuu++qHuM6fn5+Fi0bmSY5n5MnT1ZXUXQt8jIkGfOubaej008//YQ//vhDjcWra6338vJSY2GT9ZN6K55z7eHhocZzZS62bXjyySfRq1cvldIwceJE7N69W/0ttaYrnAx4iarQmjVrcOrUKbUU/4EiLVFkfSZNmoQrV67glVdeQXx8vPoPdsWKFVbVMkGl0+UIyg9NQ3J1RToAE1H1k8lf5CqL9D+Sv6VypUWGlJNUTGvBcXiJiIiIqEZjciERERER1WgMeImIiIioRmPAS0REREQ1GgNeIiIiIqrRGPASERERUY3GgJeIiIiIajQGvERERERUozHgJSIiIqIajQEvEREREdVoDHiJiIiIqEZjwEtERERENRoDXiKiGiwxMRF+fn5444039Ot27doFZ2dnrFmzxqJlIyIyFzutVqs127sREZHZrVixArfeeiu2b9+O4OBgREREYNSoUZg7dy5rg4hqBQa8RES1wKOPPop169aha9euiIqKwp49e+Dq6mrpYhERmQUDXiKiWuDq1ato3749zp07h71796Jjx46WLhIRkdkwh5eIqBaIiYnBxYsXodFocPbsWUsXh4jIrNjCS0RUw+Xl5aFbt24IDw9XObzvv/8+Dh06hEaNGlm6aEREZsGAl4iohnvqqafw22+/qdzdOnXqYODAgahbty7++usvSxeNiMgsmNJARFSDbdy4UY3G8P3338PT0xP29vbq/tatW/Hpp59aunhERGbBFl4iIiIiqtHYwktERERENRoDXiIiIiKq0RjwEhEREVGNxoCXiIiIiGo0BrxEREREVKMx4CUiIiKiGo0BLxERERHVaAx4iYiIiKhGY8BLRERERDUaA14iIiIiqtEY8BIRERERarL/B4VE2/He3/TSAAAAAElFTkSuQmCC",
"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": 7,
"id": "1359c6b6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SciPy curve_fit : 1.273 ms\n",
"Aare Minuit2 : 0.159 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.11.15"
}
},
"nbformat": 4,
"nbformat_minor": 5
}