{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4642fa5d",
   "metadata": {},
   "source": [
    "# Fitting models to data\n",
    "\n",
    "This tutorial fits dynamical models to data with `braintools.fit`. The data are simulated from models with known parameters, so every fit can be checked against the truth:\n",
    "\n",
    "1. **Simulate** a Hopf (Stuart–Landau) oscillator with `braintools.quad.odeint` (fixed step) and `solve_ivp` (adaptive step).\n",
    "2. **Fit** its bifurcation parameter and frequency with a `Fitter` and a composed `Objective`, from 8 starting points minimised at once.\n",
    "3. **Check** the fit: the loss landscape with `fit.sweep`, and confidence intervals with `fit.hessian_ci`.\n",
    "4. **Fit a module**: recover the couplings of a Wilson–Cowan model written as a `brainstate` module with `brainstate.nn.Param` parameters.\n",
    "5. **Losses for spiking data**, and **saving** results to HDF5."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2006d666",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:02:58.309178Z",
     "iopub.status.busy": "2026-10-19T13:02:58.309045Z",
     "iopub.status.idle": "2026-10-19T13:02:59.427609Z",
     "shell.execute_reply": "2026-10-19T13:02:59.426738Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import tempfile\n",
    "\n",
    "import brainstate\n",
    "import jax\n",
    "import jax.numpy as jnp\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from braintools import fit, quad\n",
    "from braintools.fit import Fitter, Term, losses"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dcde9077",
   "metadata": {},
   "source": [
    "## 1. Simulating trajectories\n",
    "\n",
    "The Stuart–Landau oscillator is the normal form of a Hopf bifurcation:\n",
    "\n",
    "$$\\dot x = (a - x^2 - y^2)\\,x - \\omega y, \\qquad \\dot y = (a - x^2 - y^2)\\,y + \\omega x.$$\n",
    "\n",
    "For $a > 0$ the trajectory settles on a limit cycle of radius $\\sqrt a$ that rotates at angular frequency $\\omega$. `quad.odeint(f, y0, t0, t1, dt, *args)` integrates it with any registered stepper (`method='rk4'` by default) as one compiled `scan`, and returns the time grid and the stacked states. Extra positional arguments are passed through to `f`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "62be9e88",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:02:59.430596Z",
     "iopub.status.busy": "2026-10-19T13:02:59.430163Z",
     "iopub.status.idle": "2026-10-19T13:03:02.004439Z",
     "shell.execute_reply": "2026-10-19T13:03:02.003245Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(201,) (201,)\n"
     ]
    }
   ],
   "source": [
    "def hopf(y, t, a, omega):\n",
    "    x, v = y\n",
    "    r2 = x * x + v * v\n",
    "    return (a - r2) * x - omega * v, (a - r2) * v + omega * x\n",
    "\n",
    "y0 = (jnp.asarray(0.5), jnp.asarray(0.0))\n",
    "ts, (xs, vs) = quad.odeint(hopf, y0, 0.0, 10.0, 0.05, 0.8, 1.5)\n",
    "print(ts.shape, xs.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f833ceff",
   "metadata": {},
   "source": [
    "`quad.solve_ivp` integrates the same system with an adaptive step size (Dormand–Prince 5(4) with a PI step-size controller). With `t_eval` it returns the solution at the requested times; here the two solvers agree to within a few $10^{-6}$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ec62fddb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:02.006848Z",
     "iopub.status.busy": "2026-10-19T13:03:02.006486Z",
     "iopub.status.idle": "2026-10-19T13:03:03.641758Z",
     "shell.execute_reply": "2026-10-19T13:03:03.641091Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accepted steps: 295  rejected: 96  success: True\n",
      "max |odeint - solve_ivp| = 2.8461217880249023e-06\n"
     ]
    }
   ],
   "source": [
    "sol = quad.solve_ivp(hopf, (0.0, 10.0), y0, 0.8, 1.5, rtol=1e-8, atol=1e-10, t_eval=ts)\n",
    "print('accepted steps:', int(sol.n_steps), ' rejected:', int(sol.n_rejected), ' success:', bool(sol.success))\n",
    "print('max |odeint - solve_ivp| =', float(jnp.max(jnp.abs(sol.ys[0] - xs))))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e393bc8",
   "metadata": {},
   "source": [
    "The observed data are the $x$ trace with measurement noise. The truth is $a = 0.8$, $\\omega = 1.5$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "14910f06",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:03.643971Z",
     "iopub.status.busy": "2026-10-19T13:03:03.643748Z",
     "iopub.status.idle": "2026-10-19T13:03:04.004291Z",
     "shell.execute_reply": "2026-10-19T13:03:04.003405Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x250 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "truth = {'a': 0.8, 'omega': 1.5}\n",
    "\n",
    "def simulate(params):\n",
    "    _, (x, _) = quad.odeint(hopf, y0, 0.0, 10.0, 0.05, params['a'], params['omega'])\n",
    "    return x\n",
    "\n",
    "noise = 0.05 * jax.random.normal(jax.random.PRNGKey(1), xs.shape)\n",
    "data = simulate(truth) + noise\n",
    "\n",
    "plt.figure(figsize=(8, 2.5))\n",
    "plt.plot(ts, data, '.', ms=3, label='data')\n",
    "plt.plot(ts, simulate(truth), lw=1, label='truth')\n",
    "plt.xlabel('t'); plt.legend(); plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f97b83e0",
   "metadata": {},
   "source": [
    "## 2. Fitting with a `Fitter`\n",
    "\n",
    "A fit needs three things:\n",
    "\n",
    "- a pure `simulate(params)` function of a dict of parameters;\n",
    "- an objective `objective(prediction, target) -> scalar`;\n",
    "- a search space `{name: (low, high)}`.\n",
    "\n",
    "Objectives compose from `Term`s with `+` and scalar `*`. Here the loss is the mean squared error plus a small correlation term, which rewards getting the phase right even when the amplitude is off. `Objective.breakdown` reports each term:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ab568051",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:04.006524Z",
     "iopub.status.busy": "2026-10-19T13:03:04.006285Z",
     "iopub.status.idle": "2026-10-19T13:03:04.329144Z",
     "shell.execute_reply": "2026-10-19T13:03:04.328322Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Objective(1.0*mse + 0.1*corr)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'mse': 0.0029, 'corr': 0.0004}\n"
     ]
    }
   ],
   "source": [
    "objective = Term(losses.mse, name='mse') + 0.1 * Term(losses.correlation_loss, name='corr')\n",
    "print(objective)\n",
    "print({k: round(float(v), 4) for k, v in objective.breakdown(simulate(truth), data).items()})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2704d776",
   "metadata": {},
   "source": [
    "`Fitter.fit(target, n_starts=8, key=...)` draws 8 starting points uniformly inside the bounds and minimises all of them at once: the default `'grad'` backend runs L-BFGS on every start inside one compiled, vmapped loop. Each bounded parameter is optimised in an unconstrained space through a sigmoid, so the iterates always stay inside the box."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7cbcd7d3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:04.332042Z",
     "iopub.status.busy": "2026-10-19T13:03:04.331772Z",
     "iopub.status.idle": "2026-10-19T13:03:06.700008Z",
     "shell.execute_reply": "2026-10-19T13:03:06.699169Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FitResult(backend='grad', best_loss=0.00329198, n_starts=8, params=[a, omega])\n",
      "{'a': 0.7886, 'omega': 1.5008}  truth: {'a': 0.8, 'omega': 1.5}\n",
      "final loss per start: [0.5226 0.5167 0.0033 0.0033 0.0033 0.0033 0.5167 0.5109]\n"
     ]
    }
   ],
   "source": [
    "space = {'a': (0.2, 2.0), 'omega': (0.5, 3.0)}\n",
    "fitter = Fitter(simulate, objective, space)\n",
    "res = fitter.fit(data, n_starts=8, key=jax.random.PRNGKey(0), n_steps=200)\n",
    "\n",
    "print(res)\n",
    "print({k: round(float(v), 4) for k, v in res.best_params.items()}, ' truth:', truth)\n",
    "print('final loss per start:', np.round(np.asarray(res.losses), 4))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0bd5301",
   "metadata": {},
   "source": [
    "The final losses show why several starts are needed. Every start that ends at loss ≈ 0.003, the floor set by the measurement noise (variance $0.05^2 = 0.0025$), found the truth. The others end near 0.52: with the wrong frequency, the best they can do is shrink the oscillation, so they run to the lower bound of $a$. `res.history` holds the loss of every start at every iteration:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f5ee4b9b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:06.702350Z",
     "iopub.status.busy": "2026-10-19T13:03:06.702139Z",
     "iopub.status.idle": "2026-10-19T13:03:07.093092Z",
     "shell.execute_reply": "2026-10-19T13:03:07.092299Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAEiCAYAAAAPogpgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjHxJREFUeJzs3XdcU/f6wPHPSUIgyBIQEEXFheJCraWOWq22rtra2l7b21vt0tsWu+zt8N7f7b61t9MOanft1k57a6111FH3xC0u3IoKsgMhyfn9cUiEAooKnCQ879eLF+HkJHkySPKc7/N9voqqqipCCCGEEEIIIYSoEwa9AxBCCCGEEEIIIXyZJN5CCCGEEEIIIUQdksRbCCGEEEIIIYSoQ5J4CyGEEEIIIYQQdUgSbyGEEEIIIYQQog5J4i2EEEIIIYQQQtQhSbyFEEIIIYQQQog6JIm3EEIIIYQQQghRhyTxFkIIIYQQQggh6pAk3kIIIYQQQgghRB2SxFuIBmr37t3cfPPNNG/enMDAQDp06MCzzz5LUVFRrVz/Cy+8wKxZs2rluv5sxYoVPP300+Tk5NTJ9QshhBBCCFGbFFVVVb2DEELUr0OHDtG1a1dCQ0O55557CA8PZ+XKlUyfPp1rr72Wn3766aJvIygoiBtvvJHp06dffMB/8sorr/Doo4+SkZFBq1atav36hRBCCCGEqE0mvQMQQtS/zz//nJycHJYtW0anTp0AmDBhAk6nk88++4zTp0/TuHFjnaOsrLCwkEaNGukdhhBCCCGEEOdFSs2FaIDy8vIAiI6OrrC9adOmGAwGzGbzWS+/e/duRo8eTUxMDAEBATRv3pybb76Z3NxcABRFobCwkE8//RRFUVAUhdtvvx2AAwcOcN9995GQkIDFYiEiIoKbbrqJ/fv3V7iN6dOnoygKS5Ys4b777iMqKormzZvz9NNP8+ijjwIQHx/vvn7X5efPn0+/fv0ICwsjKCiIhIQE/vnPf17kIyaEEEIIIcSFkxFvIRqgAQMG8N///pe77rqLZ555hoiICFasWMG0adN44IEHzjqqbLPZGDJkCCUlJdx///3ExMRw5MgRZs+eTU5ODqGhoXz++efcfffdXHrppUyYMAGANm3aALB27VpWrFjhnl++f/9+pk2bxoABA9i+fTuBgYEVbu++++6jSZMmPPnkkxQWFjJs2DB27drF119/zeuvv05kZCQATZo0Ydu2bVxzzTV07dqVZ599Fn9/f/bs2cPy5cvr6JEUQgghhBDi3GSOtxAN1PPPP88LL7yA1Wp1b/vXv/7F888/f9bLpaWl0b17d7799ltuvPHGaverbo631WrFYrFU2LZq1Sp69+7NZ599xm233QZoI9533HEH/fr1Y/HixRiNRvf+1c3xnjp1Kg8//DAnT550J+RCCCGEEELoTUrNhWigWrVqRf/+/Xn//ff5/vvvufPOO3nhhRd4++23z3q50NBQAH777bcL6oBePukuLS0lKyuLtm3bEhYWxoYNGyrtP378+ApJ99mEhYUB8NNPP+F0Os87NiGEEEIIIeqCJN5CNEAzZsxgwoQJfPjhh4wfP54bbriBjz76iHHjxvH444+TlZVV7WXj4+OZNGkSH374IZGRkQwZMoTU1FT3/O5zsVqtPPnkk8TFxeHv709kZCRNmjQhJyenyuuIj4+v8f0aM2YMffv25e677yY6Opqbb76Zb775RpJwIYQQQgihK0m8hWiA3nnnHbp3707z5s0rbL/22mspKipi48aNZ738q6++yubNm/nnP/+J1WrlgQceoFOnThw+fPict33//ffzn//8h7/85S988803zJs3j/nz5xMREVFlgvznsvSzsVgsLF26lAULFnDbbbexefNmxowZw1VXXYXD4ajx9QghhBBCCFGbJPEWogHKzMysMhEtLS0FwG63n/M6unTpwv/93/+xdOlS/vjjD44cOcK7777rPl9RlCov99133zFu3DheffVVbrzxRq666ir69etHTk5OjeOv7roBDAYDgwYN4rXXXmP79u385z//4ffff2fRokU1vn4hhBBCCCFqkyTeQjRA7du3Z+PGjezatavC9q+//hqDwUDXrl2rvWxeXl6lxLxLly4YDAZKSkrc2xo1alRlMm00GvlzT8e33nrrvEakXV3X/3z92dnZlfZNSkoCqBCbEEIIIYQQ9UmWExOiAXr00Uf59ddfufzyy5k4cSIRERHMnj2bX3/9lbvvvpvY2NhqL/v7778zceJEbrrpJtq3b4/dbufzzz/HaDQyevRo9349e/ZkwYIFvPbaa8TGxhIfH09ycjLXXHMNn3/+OaGhoSQmJrJy5UoWLFhAREREjePv2bMnoHVhv/nmm/Hz82PkyJE8++yzLF26lBEjRtCy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WFhhv/Hjx3Ps2DH3z0svvaRTxJV16tSpQmzLli1zn/fwww/z888/8+2337JkyRKOHj3KDTfcoGO0la1du7ZC/PPnzwfgpptucu/jSY9/YWEh3bp1IzU1tcrzX3rpJd58803effddVq9eTaNGjRgyZAjFxcXufW699Va2bdvG/PnzmT17NkuXLmXChAn1dRfOeh+KiorYsGED//73v9mwYQM//PAD6enpXHvttZX2ffbZZys8L/fff399hH/O5wBg6NChFWL7+uuvK5zvyc8BUCH2Y8eO8fHHH6MoCqNHj66wn17PQU3eO8/1/uNwOBgxYgQ2m40VK1bw6aefMn36dJ588sl6uQ++zNs+i/VW0+8Compr167lvffeo2vXrnqH4vFOnz5N37598fPz49dff2X79u28+uqrNG7cWO/QPNZ///tfpk2bxttvv82OHTv473//y0svvcRbb72ld2geoza+m9Y6VdS5Sy+9VE1JSXH/7XA41NjYWHXKlCk6RlVzJ06cUAF1yZIl7m1XXHGF+uCDD+oX1Fk89dRTardu3ao8LycnR/Xz81O//fZb97YdO3aogLpy5cp6ivD8Pfjgg2qbNm1Up9OpqqpnP/6A+uOPP7r/djqdakxMjPryyy+7t+Xk5Kj+/v7q119/raqqqm7fvl0F1LVr17r3+fXXX1VFUdQjR47UW+wuf74PVVmzZo0KqAcOHHBva9mypfr666/XbXA1UFX848aNU6+77rpqL+ONz8F1112nXnnllRW2ecpzoKqV3ztr8v4zZ84c1WAwqMePH3fvM23aNDUkJEQtKSmp3zvgY7z9s1hvVX0XEFXLz89X27Vrp86fP9+jP689xeOPP67269dP7zC8yogRI9Q777yzwrYbbrhBvfXWW3WKyLNdyHfTuiAj3nXMZrOxfv16Bg8e7N5mMBgYPHgwK1eu1DGymsvNzQUgPDy8wvYvv/ySyMhIOnfuzOTJkykqKtIjvCrt3r2b2NhYWrduza233srBgwcBWL9+PaWlpRWejw4dOtCiRQuPfT5sNhtffPEFd955J4qiuLd78uNfXkZGBsePH6/wmIeGhpKcnOx+zFeuXElYWBiXXHKJe5/BgwdjMBhYvXp1vcdcE7m5uSiKQlhYWIXtL774IhEREXTv3p2XX37Zo0qEFy9eTFRUFAkJCdx7771kZWW5z/O25yAz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",
      "text/plain": [
       "<Figure size 1000x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(10, 3))\n",
    "axes[0].semilogy(np.asarray(res.history).T)\n",
    "axes[0].set_xlabel('iteration'); axes[0].set_ylabel('loss'); axes[0].set_title('8 starts')\n",
    "axes[1].plot(ts, data, '.', ms=3, label='data')\n",
    "axes[1].plot(ts, simulate(res.best_params), lw=1.5, label='best fit')\n",
    "axes[1].set_xlabel('t'); axes[1].legend()\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0827a13",
   "metadata": {},
   "source": [
    "## 3. Checking the fit\n",
    "\n",
    "### The loss landscape\n",
    "\n",
    "`fit.sweep(fn, grid)` evaluates a pure function over a parameter grid. `mode='product'` evaluates the cartesian product, and `batch_size` evaluates the points in vmapped chunks, so memory stays bounded. Here it maps the loss over 60 × 60 values of $(a, \\omega)$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "70ec09f7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:07.095051Z",
     "iopub.status.busy": "2026-10-19T13:03:07.094748Z",
     "iopub.status.idle": "2026-10-19T13:03:07.974228Z",
     "shell.execute_reply": "2026-10-19T13:03:07.973253Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60, 60)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x350 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "grid = {'a': jnp.linspace(0.2, 2.0, 60), 'omega': jnp.linspace(0.5, 3.0, 60)}\n",
    "landscape, table = fit.sweep(lambda p: objective(simulate(p), data), grid, batch_size=400)\n",
    "print(landscape.shape)\n",
    "\n",
    "plt.figure(figsize=(5, 3.5))\n",
    "plt.pcolormesh(grid['omega'], grid['a'], jnp.log10(landscape), shading='auto')\n",
    "plt.colorbar(label='log10 loss')\n",
    "starts = res.params\n",
    "plt.plot(starts['omega'], starts['a'], 'wo', ms=5, mec='k', label='end points of the 8 starts')\n",
    "plt.plot(truth['omega'], truth['a'], 'r*', ms=12, label='truth')\n",
    "plt.xlabel('omega'); plt.ylabel('a'); plt.legend(fontsize=7, loc='upper right'); plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50eff5a4",
   "metadata": {},
   "source": [
    "The loss has one narrow valley at the true frequency and is almost flat elsewhere. A start whose $\\omega$ lies outside the valley gets almost no gradient towards it, so it lowers the loss by shrinking the amplitude instead and ends at the lower bound of $a$ (the white dots). Several starts make it likely that at least one begins inside the valley.\n",
    "\n",
    "### Confidence intervals\n",
    "\n",
    "`fit.hessian_ci` turns the curvature of the loss at the optimum into confidence intervals. With `kind='sse'`, the loss is a sum of squared residuals over `n_data` points. For a linear model these are exactly the ordinary-least-squares intervals. Here the 95% intervals are narrow and contain the truth:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "78ecc3be",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:07.976746Z",
     "iopub.status.busy": "2026-10-19T13:03:07.976522Z",
     "iopub.status.idle": "2026-10-19T13:03:09.755199Z",
     "shell.execute_reply": "2026-10-19T13:03:09.754443Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a      0.7886 ± 0.0100   95% CI [0.7688, 0.8083]   truth 0.8\n",
      "omega  1.5008 ± 0.0010   95% CI [1.4988, 1.5027]   truth 1.5\n"
     ]
    }
   ],
   "source": [
    "sse = lambda p: jnp.sum((simulate(p) - data) ** 2)\n",
    "ci = fit.hessian_ci(sse, res.best_params, kind='sse', n_data=data.size)\n",
    "for name in ('a', 'omega'):\n",
    "    print(f\"{name:6s} {float(ci.estimate[name]):.4f} ± {float(ci.stderr[name]):.4f}   \"\n",
    "          f\"95% CI [{float(ci.low[name]):.4f}, {float(ci.high[name]):.4f}]   truth {truth[name]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60310824",
   "metadata": {},
   "source": [
    "## 4. Fitting a `brainstate` module\n",
    "\n",
    "Models are usually written as `brainstate` modules. `Fitter.from_module(model, predict, objective)` fits every `brainstate.nn.Param` with `fit=True` (the default). Each parameter's own transform, here `SigmoidT(5, 20)`, sets its bounds.\n",
    "\n",
    "During the fit the model is not modified. The best values are written back into the parameters only when `fit` returns.\n",
    "\n",
    "The model is a two-population Wilson–Cowan network driven by a slow sinusoid; we recover the excitatory-to-excitatory and inhibitory-to-excitatory couplings from the simulated rates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "fa8447c1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:09.757501Z",
     "iopub.status.busy": "2026-10-19T13:03:09.757266Z",
     "iopub.status.idle": "2026-10-19T13:03:12.031957Z",
     "shell.execute_reply": "2026-10-19T13:03:12.030940Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'w_ee': 16.0, 'w_ei': 12.0}  truth: w_ee=16, w_ei=12\n",
      "written back to the model: 16.0 12.0\n"
     ]
    }
   ],
   "source": [
    "def sigmoid(x, gain, theta):\n",
    "    return 1. / (1. + jnp.exp(-gain * (x - theta)))\n",
    "\n",
    "\n",
    "class WilsonCowan(brainstate.nn.Module):\n",
    "    def __init__(self, w_ee, w_ei):\n",
    "        super().__init__()\n",
    "        self.w_ee = brainstate.nn.Param(w_ee, t=brainstate.nn.SigmoidT(5., 20.))\n",
    "        self.w_ei = brainstate.nn.Param(w_ei, t=brainstate.nn.SigmoidT(5., 20.))\n",
    "        self.w_ie, self.w_ii = 13., 11.\n",
    "\n",
    "    def rhs(self, y, t, w_ee, w_ei):\n",
    "        e, i = y\n",
    "        drive = 1.5 + jnp.sin(0.5 * t)\n",
    "        de = -e + sigmoid(w_ee * e - w_ei * i + drive, 1.3, 4.)\n",
    "        di = (-i + sigmoid(self.w_ie * e - self.w_ii * i, 2., 3.7)) / 2.\n",
    "        return de, di\n",
    "\n",
    "    def rates(self):\n",
    "        y0 = (jnp.asarray(0.1), jnp.asarray(0.05))\n",
    "        _, (e, i) = quad.odeint(self.rhs, y0, 0.0, 40.0, 0.1, self.w_ee.value(), self.w_ei.value())\n",
    "        return jnp.stack([e, i], axis=-1)\n",
    "\n",
    "\n",
    "target = WilsonCowan(16., 12.).rates()\n",
    "model = WilsonCowan(10., 8.)          # wrong initial couplings\n",
    "res_wc = Fitter.from_module(model, lambda m: m.rates(), losses.mse).fit(\n",
    "    target, n_starts=8, key=jax.random.PRNGKey(0), n_steps=200)\n",
    "print({k: round(float(v), 3) for k, v in res_wc.best_params.items()}, ' truth: w_ee=16, w_ei=12')\n",
    "print('written back to the model:', round(float(model.w_ee.value()), 3), round(float(model.w_ei.value()), 3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60ba72de",
   "metadata": {},
   "source": [
    "The other backends take the same problem. `backend='scipy'` runs `scipy.optimize.minimize` from each start with jit-compiled gradients. `backend='nevergrad'` runs a gradient-free evolutionary search that evaluates each generation as one vmapped batch. Here is SciPy's L-BFGS-B on the Hopf fit:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "741118e7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:12.034526Z",
     "iopub.status.busy": "2026-10-19T13:03:12.034287Z",
     "iopub.status.idle": "2026-10-19T13:03:12.809965Z",
     "shell.execute_reply": "2026-10-19T13:03:12.809049Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "scipy {'a': 0.7886, 'omega': 1.5008}\n"
     ]
    }
   ],
   "source": [
    "res_scipy = Fitter(simulate, objective, space, backend='scipy').fit(\n",
    "    data, n_starts=8, key=jax.random.PRNGKey(0), n_steps=200)\n",
    "print(res_scipy.backend, {k: round(float(v), 4) for k, v in res_scipy.best_params.items()})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2acfc04",
   "metadata": {},
   "source": [
    "## 5. Losses for spiking data, and saving results\n",
    "\n",
    "`braintools.fit.losses` also compares spiking activity:\n",
    "\n",
    "- `rate_loss` compares mean firing rates;\n",
    "- `cv_loss` compares ISI irregularity;\n",
    "- `van_rossum_loss` gives the van Rossum distance between dense rasters. It is differentiable, so gradients flow through surrogate-gradient spikes.\n",
    "\n",
    "Each loss's docstring states whether it is differentiable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "1fab77d5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:12.812526Z",
     "iopub.status.busy": "2026-10-19T13:03:12.812315Z",
     "iopub.status.idle": "2026-10-19T13:03:14.391742Z",
     "shell.execute_reply": "2026-10-19T13:03:14.390766Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss at shift 0, 2 ms: 0.0 5.3243\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "d loss / d shift at 2 ms: 2.3121\n",
      "rate loss: 0.0\n"
     ]
    }
   ],
   "source": [
    "from braintools import surrogate\n",
    "\n",
    "dt = 0.1\n",
    "t = jnp.arange(2000) * dt                                          # 200 ms\n",
    "target_raster = (jnp.sin(2 * jnp.pi * t / 25.0)[:, None] > 0.995).astype(float) * jnp.ones((1, 3))\n",
    "\n",
    "def raster(shift):\n",
    "    # a surrogate spike: Heaviside forward, sigmoid gradient backward\n",
    "    return surrogate.sigmoid(jnp.sin(2 * jnp.pi * (t[:, None] - shift) / 25.0) - 0.995) * jnp.ones((1, 3))\n",
    "\n",
    "loss = lambda s: losses.van_rossum_loss(raster(s), target_raster, tau=5.0, dt=dt)\n",
    "print('loss at shift 0, 2 ms:', round(float(loss(0.0)), 4), round(float(loss(2.0)), 4))\n",
    "print('d loss / d shift at 2 ms:', round(float(jax.grad(loss)(2.0)), 4))\n",
    "print('rate loss:', float(losses.rate_loss(raster(2.0), target_raster, dt=dt)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a3a52895",
   "metadata": {},
   "source": [
    "`braintools.file.save_hdf5` stores nested dicts of arrays, `brainunit` quantities and `SpikeTrains` (with the `hdf5` extra, `pip install braintools[hdf5]`). It is a convenient format for fit results. NWB and NEO exporters for spike data are in the same module."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c4222423",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T13:03:14.394294Z",
     "iopub.status.busy": "2026-10-19T13:03:14.394054Z",
     "iopub.status.idle": "2026-10-19T13:03:14.443843Z",
     "shell.execute_reply": "2026-10-19T13:03:14.443093Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['best_params', 'ci_high', 'ci_low', 'history', 'losses'] {'a': 0.7886, 'omega': 1.5008}\n"
     ]
    }
   ],
   "source": [
    "from braintools.file import load_hdf5, save_hdf5\n",
    "\n",
    "path = os.path.join(tempfile.mkdtemp(), 'hopf_fit.h5')\n",
    "save_hdf5(path, {'best_params': res.best_params, 'losses': res.losses, 'history': res.history,\n",
    "                 'ci_low': ci.low, 'ci_high': ci.high})\n",
    "loaded = load_hdf5(path)\n",
    "print(sorted(loaded), {k: round(float(v), 4) for k, v in loaded['best_params'].items()})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16c77c3f",
   "metadata": {},
   "source": [
    "## Summary\n",
    "\n",
    "| Task | API |\n",
    "|---|---|\n",
    "| trajectories | `quad.odeint` (fixed step, `checkpoint=True` for long backprop), `quad.solve_ivp` (adaptive) |\n",
    "| objectives | `fit.Term`, `fit.Objective`, `fit.losses.*` |\n",
    "| fitting | `fit.Fitter` (functional) and `Fitter.from_module`; backends `'grad'`, `'scipy'`, `'nevergrad'` |\n",
    "| many starts of any pure function | `optim.multistart_minimize`, `optim.multistart_init` |\n",
    "| exploration and uncertainty | `fit.sweep`, `fit.hessian_ci` |\n",
    "| data formats | `file.save_hdf5`/`load_hdf5`, NWB (`save_nwb_units`, ...) and NEO (`to_neo`, `from_neo`) |\n",
    "\n",
    "See the {doc}`API reference <../apis/fit>` for every parameter."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.13.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
