{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Extracting ellipse parameters from rings\n", "\n", "During a powder diffraction experiment, the scattering occurs along concentric cones, originating from the sample position and named after 2 famous scientists: Debye and Scherrer. \n", "\n", "![Debye-Scherrer rings](Debye-Scherrer_rings.png)\n", "\n", "Those cones are intersected by the detector and all the calibration step in pyFAI comes down to fitting the \"ring\" seen on the detector into a meaningful experimental geometry.\n", "\n", "In the most common case, a flat detector is mounted orthogonal to the incident beam and all pixels have the same size. \n", "The diffraction pattern is then a set of concentric circles.\n", "When the detector is still flat and all the pixels are the same but the mounting may be a bit *off*, or maybe for other technical reasons one gets a set of concentric ellipses. \n", "This procedure explains how to extract the center coordinates, axis lengths and orientation. \n", "\n", "The code in pyFAI is heavily inspired from:\n", "https://github.com/ndvanforeest/fit_ellipse\n", "It uses an SVD decomposition in a similar way to the Wolfgang Kabsch's algorithm (1976) to retrieve the best ellipse fitting all points without actually performing a fit." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:53.366997Z", "iopub.status.busy": "2026-09-15T08:08:53.366922Z", "iopub.status.idle": "2026-09-15T08:08:53.712323Z", "shell.execute_reply": "2026-09-15T08:08:53.711838Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "#For documentation purpose, `inline` is used to enforce the storage of the image in the notebook\n", "# %matplotlib widget" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:53.713577Z", "iopub.status.busy": "2026-09-15T08:08:53.713440Z", "iopub.status.idle": "2026-09-15T08:08:53.867815Z", "shell.execute_reply": "2026-09-15T08:08:53.867327Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "def fit_ellipse(pty, ptx, _allow_delta=True):\n", " \"\"\"Fit an ellipse\n", "\n", " Math from\n", " https://mathworld.wolfram.com/Ellipse.html #15\n", "\n", " inspired from\n", " http://nicky.vanforeest.com/misc/fitEllipse/fitEllipse.html\n", "\n", " :param pty: point coordinates in the slow dimension (y)\n", " :param ptx: point coordinates in the fast dimension (x)\n", " :raise ValueError: If the ellipse can't be fitted\n", " \"\"\"\n", " x = ptx[:, numpy.newaxis]\n", " y = pty[:, numpy.newaxis]\n", " D = numpy.hstack((x * x, x * y, y * y, x, y, numpy.ones_like(x)))\n", " S = numpy.dot(D.T, D)\n", " try:\n", " inv = numpy.linalg.inv(S)\n", " except numpy.linalg.LinAlgError:\n", " if not _allow_delta:\n", " raise ValueError(\"Ellipse can't be fitted: singular matrix\")\n", " # Try to do the same with a delta\n", " delta = 100\n", " ellipse = fit_ellipse(pty + delta, ptx + delta, _allow_delta=False)\n", " y0, x0, angle, wlong, wshort = ellipse\n", " return Ellipse(y0 - delta, x0 - delta, angle, wlong, wshort)\n", "\n", " C = numpy.zeros([6, 6], dtype=numpy.float64)\n", " C[0, 2] = C[2, 0] = 2.0\n", " C[1, 1] = -1.0\n", " E, V = numpy.linalg.eig(numpy.dot(inv, C))\n", "\n", " # First of all, sieve out all infinite and complex eigenvalues and come back to the Real world\n", " m = numpy.logical_and(numpy.isfinite(E), numpy.isreal(E))\n", " E, V = E[m].real, V[:, m].real\n", "\n", " # Ensures a>0, invert eigenvectors concerned\n", " V[:, V[0] < 0] = -V[:, V[0] < 0]\n", " # See https://mathworld.wolfram.com/Ellipse.html #15\n", " # Eigenvector must meet constraint (ac - b^2)>0 to be valid.\n", " A = V[0]\n", " B = V[1] / 2.0\n", " C = V[2]\n", " D = V[3] / 2.0\n", " F = V[4] / 2.0\n", " G = V[5]\n", "\n", " # Condition 1: Delta = det((a b d)(b c f)(d f g)) !=0\n", " Delta = A * (C * G - F * F) - G * B * B + D * (2 * B * F - C * D)\n", " # Condition 2: J>0\n", " J = (A * C - B * B)\n", "\n", " # Condition 3: Delta/(A+C)<0, replaces by Delta*(A+C)<0, less warnings\n", " m = numpy.logical_and(J > 0, Delta != 0)\n", " m = numpy.logical_and(m, Delta * (A + C) < 0)\n", "\n", " n = numpy.where(m)[0]\n", " if len(n) == 0:\n", " raise ValueError(\"Ellipse can't be fitted: No Eigenvalue match all 3 criteria\")\n", " else:\n", " n = n[0]\n", " a = A[n]\n", " b = B[n]\n", " c = C[n]\n", " d = D[n]\n", " f = F[n]\n", " g = G[n]\n", "\n", " # Calculation of the center:\n", " denom = b * b - a * c\n", " x0 = (c * d - b * f) / denom\n", " y0 = (a * f - b * d) / denom\n", "\n", " up = 2 * (a * f * f + c * d * d + g * b * b - 2 * b * d * f - a * c * g)\n", " down1 = (b * b - a * c) * ((c - a) * sqrt(1 + 4 * b * b / ((a - c) * (a - c))) - (c + a))\n", " down2 = (b * b - a * c) * ((a - c) * sqrt(1 + 4 * b * b / ((a - c) * (a - c))) - (c + a))\n", " a2 = up / down1\n", " b2 = up / down2\n", " if a2 <= 0 or b2 <= 0:\n", " raise ValueError(\"Ellipse can't be fitted, negative sqrt\")\n", "\n", " res1 = sqrt(a2)\n", " res2 = sqrt(b2)\n", "\n", " if a == c:\n", " angle = 0 # we have a circle\n", " elif res2 > res1:\n", " res1, res2 = res2, res1\n", " angle = 0.5 * (pi + atan2(2 * b, (a - c)))\n", " else:\n", " angle = 0.5 * (pi + atan2(2 * b, (a - c)))\n", " return Ellipse(y0, x0, angle, res1, res2)\n", "\n" ] } ], "source": [ "from matplotlib import pyplot\n", "from pyFAI.utils.ellipse import fit_ellipse\n", "import inspect\n", "print(inspect.getsource(fit_ellipse))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:53.892906Z", "iopub.status.busy": "2026-09-15T08:08:53.892719Z", "iopub.status.idle": "2026-09-15T08:08:53.896805Z", "shell.execute_reply": "2026-09-15T08:08:53.896396Z" } }, "outputs": [], "source": [ "from matplotlib import patches\n", "from numpy import rad2deg\n", "\n", "def display(ptx, pty, ellipse=None):\n", " \"\"\"A function to overlay a set of points and the calculated ellipse\n", " \"\"\"\n", " fig = pyplot.figure()\n", " ax = fig.add_subplot(111)\n", " if ellipse is not None:\n", " error = False\n", " y0, x0, angle, wlong, wshort = ellipse\n", " if wshort == 0:\n", " error = True\n", " wshort = 0.0001\n", " if wlong == 0:\n", " error = True\n", " wlong = 0.0001\n", " patch = patches.Arc((x0, y0), width=wlong*2, height=wshort*2, angle=rad2deg(angle))\n", " if error:\n", " patch.set_color(\"red\")\n", " else:\n", " patch.set_color(\"green\")\n", " ax.add_patch(patch)\n", "\n", " patch.get_window_extent()\n", " ylim = min(y0 - wlong, pty.min()), max(y0 + wlong, pty.max())\n", " xlim = min(x0 - wlong, ptx.min()), max(x0 - wlong, ptx.max())\n", " else:\n", " ylim = pty.min(), pty.max()\n", " xlim = ptx.min(), ptx.max()\n", " ax.plot(ptx, pty, \"o\", color=\"blue\")\n", " ax.set_xlim(*xlim)\n", " ax.set_ylim(*ylim)\n", " pyplot.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:53.898109Z", "iopub.status.busy": "2026-09-15T08:08:53.898000Z", "iopub.status.idle": "2026-09-15T08:08:53.983899Z", "shell.execute_reply": "2026-09-15T08:08:53.983401Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse(center_1=np.float64(1.3155730514748605), center_2=np.float64(2.1611048404414825), angle=2.9890385797157744, half_long_axis=1.3056492054218942, half_short_axis=0.6640164458925458)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAGdCAYAAADNHANuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVy1JREFUeJzt3Xd4U2XDBvA73XTTxWqhQEtlySoqisgGmQKyiqLyOgAH4B6o4HjB8ckSZb2CoGUXi0wRKDJE9iqzlNKW2UHTvZLz/XFM6Mg4SZPmpL1/15Urzck5ydM0zbnzTIUgCAKIiIiIbMzB1gUgIiIiAhhKiIiISCYYSoiIiEgWGEqIiIhIFhhKiIiISBYYSoiIiEgWGEqIiIhIFhhKiIiISBacbF0AKdRqNW7evAkvLy8oFApbF4eIiIgkEAQBOTk5aNiwIRwcjNeD2EUouXnzJkJCQmxdDCIiIjJDSkoKgoODje5nF6HEy8sLgPhLeXt727g0REREJEV2djZCQkK053Fj7CKUaJpsvL29GUqIiIjsjNSuF+zoSkRERLLAUEJERESywFBCREREssBQQkRERLLAUEJERESywFBCREREssBQQkRERLLAUEJERESywFBCREREsmDSjK65ublYunQp9u3bh5KSEnTu3BlTpkxB3bp19R6zYsUKLFq0qNw2Ly8v7Nq1y7wSExERUY1kUijp1q0bevTogeeffx6Ojo6YNWsW1q5diyNHjuid1z41NRW5ublYtmzZ/Sd1sovZ7YmIiKgamZQO/vrrL3h6empvd+nSBUFBQdi+fTtGjRql9zhPT0888sgj5peSiIiIajyTQknZQAIAderUgaOjI4qLiw0ed/XqVfTp0wdubm546KGHMG3atEqPRURERLVbldpRvv76a7i6uqJ3795693F2dkZUVBT69++PrKwsfPXVV/jll19w4sQJeHh46DymqKgIRUVF2tvZ2dlVKSYRERHZAYUgCII5B27YsAFjxozBypUrERUVpXe/oqIiuLq6am+np6cjLCwM06dPx9tvv63zmBkzZmDmzJmVtiuVSnh7e5tTXCIiIqpm2dnZ8PHxkXz+NmtI8ObNmzFu3Dh8//33BgMJgHKBBAACAgLQvn17nD59Wu8xH3zwAZRKpfaSkpJiTjGJiIjIjpjcfPP7779j1KhRmDNnDiZOnGjWk96+fRsPPPCA3vtdXV0rhRkiIiKq2UyqKdm6dStGjhyJ7777DpMnT9a5z7Jly9CnTx/t7a+++gq5ubkAAEEQ8O233+LSpUsYPXp0FYpNRERENY1JNSVjx46Fk5MTVq5ciZUrV2q3v/jii3jxxRcBiPOSHD16VHufm5sbwsPD4efnh8zMTCgUCvz666/o0aOHhX4FIiIiqglM6uh65MgRqNXqStuDg4MRHBwMQAwlt2/fRmRkpPZ+lUqFK1euwN3dHcHBwXBwMK0ri6kdZYiIiMj2TD1/mz36pjoxlBAREdmfahl9Q0RERGRpDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLTrYuABFVD5UK2L8fuHULaNAAePxxwNHR1qUiIrqPoYSoFoiJAaZMAVJT728LDgbmzQOGD7dduYiIymLzDZGJVCogLg5YvVq8VqlsXSLDYmKAp58uH0gA4MYNcXtMjG3KRURUEUMJkQliYoDQUKBHDyAqSrwODZXviV2lEmtIBKHyfZptU6daLljZW2AjInlhKCGSyFo1DtY8ke/fX7m8ZQkCkJIi7ldV9hbYiEh+GEqIJKhqjYO+4GHtE/mtW5bdTx82ERGRJTCUEElQlRoHfcHj3XetfyJv0MCy++lS3U1ERFRzMZQQSWBujYOhGoRvvrH+ifzxx8VRNgqF7vsVCiAkRNzPXNXZRERENRtDCZEE5tQ4SKlB0MdSJ3JHR3HYL1A5mGhuz51btflKrNlExI6zRLULQwmRBObUOBirQZCiqn09AHEekg0bgEaNym8P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2LNnD+7evYuzZ88iLy9PO+pg8ODB2g+MqKgozJ49GxEREQgODsa7776LV155BdeuXUNJSQlmzZqFzz77DL6+vjb8TeQrLy9P2+ySm5uLc+fOYc2aNQgKCtIGuf379+PZZ59FWloaAgICMHXqVLi4uODRRx9FYWEhli5dCjc3N0yfPt2Wv4ps3blzBz179oSPjw969uxZrq9Cjx49tCPMvvjiC7i5ueHxxx8HILYPDx48GC4uLmjevDnmzZuHgQMHol+/fjb5PeRu5cqVeOutt/Cf//wHmZmZ2s8Ld3d3DBkyBID4YT927FisX78eTz/9NDZs2IBNmzZhwIAB8PLyQmxsLA4cOICYmBhb/iqyNmLECLRv3x4dOnRAYWEh1q1bh1u3bpUbFRYTE4PZs2djxIgRAIDp06cjMjISQ4cOxaBBg7B+/Xo4ODjgrbfestWvIWsJCQmYOHEinnrqKTRp0gTXrl3DokWLMGTIEPTu3Vu735QpU9C/f3907NgRiYmJmDBhAoYPH46QkBAcPXoUy5cvx2effYaGDRtKfm6uEmzAZ599pnOI3oIFC7Q948eNG4exY8di0KBB2vs3bdqEbdu2wcHBAU899RSefPLJaiuzvUlLS8Prr79eaXurVq3wySefAAAOHDiA77//HkuXLoWXlxcEQUBMTAzi4uIAiH1Mxo8fz2XK9UhMTMSHH36o877p06drO699+eWXcHZ2xrvvvqu9//jx41i5ciWUSiW6dOmCCRMmaIcIU3nLly/Hzp07K2339/fHwoULAYjfJidPnoxp06bh4YcfBiB21N60aRMyMjIQHh6O5557zqSpCGqbkpISREdH4++//4aTkxNat26NZ599tlxH102bNiE2NhYrVqzQbrt58yYWLVqE69evo3nz5pg8eTICAgJs8BvYh+TkZKxatQoJCQmoV68eevbsib59+5bbZ+rUqWjXrh1eeOEFAEBKSgpWrlyJxMREBAcHY9iwYWjfvr1Jz8tQQkRERLLAPiVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQLDCVEREQkCwwlREREJAsMJURERCQL/w+vsPckGm/kzQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import sin, cos, random, pi, linspace\n", "arc = 0.8\n", "npt = 100\n", "R = linspace(0, arc * pi, npt)\n", "ptx = 1.5 * cos(R) + 2 + random.normal(scale=0.05, size=npt)\n", "pty = sin(R) + 1. + random.normal(scale=0.05, size=npt)\n", "\n", "ellipse = fit_ellipse(pty, ptx)\n", "print(ellipse)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:53.985408Z", "iopub.status.busy": "2026-09-15T08:08:53.985238Z", "iopub.status.idle": "2026-09-15T08:08:54.049709Z", "shell.execute_reply": "2026-09-15T08:08:54.049182Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse(center_1=np.float64(10.000000000332909), center_2=np.float64(10.000000000325038), angle=2.3689992424085746, half_long_axis=19.999999999804693, half_short_axis=19.999999999532037)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angles = linspace(0, pi / 2, 10)\n", "pty = sin(angles) * 20 + 10\n", "ptx = cos(angles) * 20 + 10\n", "ellipse = fit_ellipse(pty, ptx)\n", "print(ellipse)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:54.051304Z", "iopub.status.busy": "2026-09-15T08:08:54.051214Z", "iopub.status.idle": "2026-09-15T08:08:54.116022Z", "shell.execute_reply": "2026-09-15T08:08:54.115491Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse(center_1=np.float64(50.000000000000576), center_2=np.float64(100.0000000000018), angle=3.141592653589068, half_long_axis=19.999999999994646, half_short_axis=10.000000000002697)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAGiCAYAAAAr5/biAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAATmlJREFUeJzt3XlcVGXfBvBr2PcBEQUFQRRwQRRxwYXErVxxS9E0M5eWp8Ues/fJykx7y+d5NVt8Sq3UVNQy08TdXEDNpRQUFQU3EGSRRWZYB5g57x/E1CgkgwxnznB9P5/5DHPmPuf8bg4zc3GfZWSCIAggIiIiMnJmYhdAREREVBcMLURERCQJDC1EREQkCQwtREREJAkMLURERCQJDC1EREQkCQwtREREJAkMLURERCQJDC1EREQkCXqFll69esHZ2fmh29SpU3Xa7dq1C7169ULLli3Rv39/xMTENGTNRERE1ATpFVqOHDmClJQU7e3YsWNQKBQYOnSotk1sbCyefvppTJs2DWfOnMGgQYMwbNgwXL58ucGLJyIioqZD9jjfPbRw4UJ88cUXyMzMhJ2dHQBgxIgRMDMzw549e7TtgoODERwcjHXr1j1+xURERNQk1fuYFo1Gg++++w5Tp07VBhYAOHnyJAYPHqzTdujQoTh58mT9qyQiIqImz6K+Mx48eBDp6emYM2eOdppSqURhYSFatmyp07ZFixbIyMiodVkqlQoqlUr7WKPRID8/H66urpDJZPUtkYiIiBqRIAgoLCxEq1atYGbW8Of61Du0rF27FiEhIQgODn7ouQcLtbCwwN/thVq6dCkWL15c31KIiIjIiKSlpcHT07PBl1uv0JKTk4Po6GisXLlSZ7qjoyNsbW2Rm5urM/3evXto0aJFrctbsGAB5s2bp32sUCjQpk0bpKWlwcnJqT4lEhERUSNTKpXw8vKCo6OjQZZfr9CyadMmWFlZYcqUKTrTZTIZevbsiRMnTuDVV1/VTo+NjUXv3r1rXZ61tTWsra0fmu7k5MTQQkREJDGGOrSjXjuc1q5di8jIyBoDxdy5c/Hzzz8jOjoalZWVWL9+Pc6ePYvXXnvtsYslIiKipkvvkZYzZ84gMTERa9eurfH58ePHY/ny5Zg1axbu378Pd3d3bNiwAf369XvsYomIiKjp0vs6LeXl5SgpKYGzs/Mj25aWlsLW1lbvopRKJeRyORQKBXcPERERSYShP7/1HmmxsrKClZVVndrWJ7AQERER1YRfmEhERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSYKHvDBqNBlFRUdi3bx9kMhmeeeYZjB49Wvv85s2bsX79ep15HBwc8PPPPz92sURERNR06RVa1Go1xowZg8TERLzzzjtwc3PDd999B0EQEBERAQC4ffs2MjIy8MUXX2jns7S0bNiqiYiIqMnRK7SsWbMGR48eRWJiInx8fAAAY8aMQVFRkU47JycnDBkypMGKJCIiItIrtHz33XeIiIjQBpZqDg4OOo9TUlIwbtw42NjYoFevXnj55ZdhY2Pz2MUSERFR06XXgbiXL19GSEgIVqxYgdGjR2PWrFnYv3+/Thtzc3OMHDkSzzzzDAYNGoQ1a9agd+/eKCsrq3W5KpUKSqVS50ZERET0VzJBEIS6NBQEAebm5nB1dcW4ceMwcuRIJCYmYsmSJfj3v/+NuXPnAgCKi4thb2+vnS8rKwv+/v5YsmQJ3njjjRqX/cEHH2Dx4sUPTVcoFHBycqpHt4iIiKixKZVKyOVyg31+1zm0AECzZs0QEBCA06dPa6ctWLAAmzZtQnp6eq3zDRgwAN7e3ti4cWONz6tUKqhUKu1jpVIJLy8vhhYiIiIJMXRo0euYlu7du6N58+Y609q0aYO8vDwIggCZTFbjfLm5uQgICKh1udbW1rC2ttanFCIiImpi9DqmZdasWTh8+DDS0tIAAGVlZdi6dSueeOIJbWD573//qzNqsnr1aiQmJuLpp59uwLKJiIioqdFrpGXKlCmIj49H586dERgYiFu3bsHHxwdRUVHaNkqlEm3btoWXlxfy8vJw//59rFmzBk8++WSDF09ERERNh17HtFTLysrCjRs34OHhAV9f34d2C5WWluLKlSuws7NDu3bt9N71Y+h9YkRERNTwjOqYlmru7u5wd3ev9XlbW1v06NGj3kURERERPYhfmEhERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSwNBCREREksDQQkRERJLA0EJERESSYFGfmS5fvowDBw5AJpNh3Lhx8PX11Xm+qKgI27ZtQ2pqKvz8/DBp0iRYWVk1SMFERETUNOk90rJw4UKEhobixo0bKCgowIQJE3Dy5Ent83l5eejRowe++uorlJWV4eOPP0b//v1RUlLSoIUTERFR0yITBEGoa+Po6GiMGzcOsbGx6N+/PwCgrKwM2dnZ8Pb2BgDMmzcPu3fvxsWLF2FnZ4e8vDz4+/vj7bffxltvvVWn9SiVSsjlcigUCjg5OdWjW0RERNTYDP35rddIy8qVKzF06FBtYAEAGxsbbWABgB07dmDixImws7MDALi6umL06NHYsWNHA5VMRERETZFex7T89ttv+Ne//oXY2FjExMSgRYsWGDFihDa0qFQqpKamon379jrztW/fHrt37651uSqVCiqVSvtYqVTqUxYRNSBBEFCuLkdJRQlKK0ur7itKdX6ufq56ukbQQCNoIAhC1T2EWqdVD+6aycxgJjODTCaruoesxsdmMjNYmlvCztIOtha2VfeWtjo/P/icmYznGBCZojqHFkEQoFQqsX37duzatQtPPvkkDh8+jDfffBPbt2/HiBEjtMetPDgkJJfLUVxcXOuyly5disWLF9ezC0RNmyAIKKkoQV5pHvJK8h66Lygr+DNwPCKEVD8WUOe9xrCxsIGFmcVDoaO2ICKTybR1a4PNXwLNg6FHI2hQoa5AhaaizjVZmVvVKeRUT3OwcoCrnStcbV0fune2cYa5mbne24WIGl6dQ4tMJoO9vT1KSkpw+fJlWFhUzTpr1iy8+eabGDFiBOzt7SGTyaBQKHTm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angles = linspace(0, pi * 2, 6, endpoint=False)\n", "pty = sin(angles) * 10 + 50\n", "ptx = cos(angles) * 20 + 100\n", "ellipse = fit_ellipse(pty, ptx)\n", "print(ellipse)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:54.117515Z", "iopub.status.busy": "2026-09-15T08:08:54.117428Z", "iopub.status.idle": "2026-09-15T08:08:54.179090Z", "shell.execute_reply": "2026-09-15T08:08:54.178509Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse(center_1=np.float64(-5.030642569181509e-12), center_2=np.float64(-8.540723683836404e-12), angle=1.6532775148903056e-11, half_long_axis=19.999999999815742, half_short_axis=10.00000000009243)\n" ] }, { "data": { "image/png": "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CQ0NrdObUpuXl1ej59eyZUtYWVmhoKBAb3p+fj6cnJwafF1kZCRee+013WOlUnlPR0UR0f2ztrSGwlIBBRRilyK60FDt0Ux3uyxHaGjT10Zkbu4p0HTs2BEdO3Y03MKtrNCjRw/ExsbqTY+NjUWvXr0afJ1cLodczvN3EJG4LC21h2ZPmKANL/VdlmPFiqY9Hw2RuRJ95NnMmTPxyy+/IDk5GQBw9uxZHDhwoN5DvImImpvx47WHZrevNZzJw6Nx1xgjIsMw6mHbcXFxePPNNwEAhw8fRvfu3eHm5oYRI0bodhmp1WrMmjULW7ZsQZcuXXDlyhXMmzcPn332WaOXw8O2iUhsYp8pmEiKJHOm4IKCgjq7kwCgffv26Nq1q9601NRUpKWloWPHjmjXrt09LYeBhoiISHokE2iaCgMNERGR9Bhy+y36GBoiIiKiB8VAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREksdAQ0RERJLHQENERESSx0BDREREkmdl7AVUVVVh69atiI2NxeTJk9GrVy+9548ePYr9+/frTbOzs8OCBQuMXRoRERGZCKP20OzevRu+vr7YvHkzlixZgkuXLtVp89tvv+Gnn36Co6Oj7qZQKIxZFhEREZkYo/bQeHl54cyZM3Bzc4NMJmuwXbt27fD2228bsxQiIiIyYUYNNAEBAY1ql5ubi48++gi2trYICQlBaGioMcsiIiIiE9MsBgU7ODhAqVQiKSkJw4cPx9SpUyEIQoPtVSoVlEql3o2IiIjM1z310Bw4cABHjhy5Y5u5c+fC19e30fOcOnUq3n33Xd0uqXnz5iEkJAQjRozAtGnT6n3N4sWLsXDhwsYXTkRERCbtnnpo7Ozs9Abv1nezsrq3vVi+vr5642t69eqF3r1749ixYw2+JjIyEsXFxbpbenr6PS2TiIiITMs9pY/Q0NAmGd+iVqtRUVHR4PNyuRxyudzodRAREZE0iD6G5sSJE3qPf//9d8TFxWHw4MEiVURERERSY9SjnJKTk/HNN9/oHm/atAmXLl1CSEgIxo8fDwD4/PPP8dZbbyEoKAh5eXnYvn07Zs2ahenTpxuzNCIiIjIhRg001tbWcHR0BKAdyFvDzs5O9/PmzZsRFxeH06dPw97eHgsWLEC3bt2MWRYRERGZGJlwp+OjJUKpVEKhUKC4uBgODg5il0NERESNYMjtt+hjaIiIiIgeFAMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJHgMNERERSR4DDREREUkeAw0RERFJnpWxF3D79m3ExcWhqqoKAQEBcHFxqbddfHw8UlNT4efnhy5duhi7LCIiIjIhRu2hWbRoEfz9/fH222/jww8/hLe3N5YuXarXprKyEmPHjsWgQYOwYsUKhISEYPbs2RAEwZilERERkQkxag9NmzZtcPXqVbRq1QoAsG3bNowbNw7h4eHo27cvAGDFihX47bffcOHCBXh4eODy5cvo06cPwsPDMX36dGOWR0RERCbCqD00zz//vC7MAMDYsWNhY2ODuLg43bT169dj0qRJ8PDwAAB0794dw4cPx/r1641ZGhEREZkQo4+h+bsTJ06gsrIS3bt3BwBUV1cjISEBL730kl67wMBArF69usH5qFQqqFQq3ePi4mIAgFKpNELVREREZAw1221DDDO5p0Bz+fJlJCQk3LFNWFgYXF1d60wvLCzErFmzMHLkSDz88MMAgNLSUqjVajg5Oem1dXZ2RlFRUYPLWLx4MRYuXFhnuqenZyPWgoiIiJqT/Px8KBSKB5rHPQWaixcvYsuWLXds07Vr1zqBRqlUYvjw4XB0dMRPP/2kmy6XywEAZWVleu1LS0tha2vb4DIiIyPx2muv6R4XFRXB29sbaWlpD/wLkRKlUglPT0+kp6fDwcFB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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Center to zero\n", "angles = linspace(0, 2*pi, 9, endpoint=False)\n", "pty = sin(angles+0) * 10 + 0\n", "ptx = cos(angles+0) * 20 + 0\n", "ellipse = fit_ellipse(pty, ptx)\n", "print(ellipse)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:54.180534Z", "iopub.status.busy": "2026-09-15T08:08:54.180442Z", "iopub.status.idle": "2026-09-15T08:08:54.242131Z", "shell.execute_reply": "2026-09-15T08:08:54.241608Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse(center_1=np.float64(50.00000000000121), center_2=np.float64(100.00000000000088), angle=0.5535743588955828, half_long_axis=18.09016994372895, half_short_axis=6.909830056258535)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angles = linspace(0, 2 * pi, 9, endpoint=False)\n", "pty = 50 + 10 * cos(angles) + 5 * sin(angles)\n", "ptx = 100 + 5 * cos(angles) + 15 * sin(angles)\n", "ellipse = fit_ellipse(pty, ptx)\n", "print(ellipse)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:54.243760Z", "iopub.status.busy": "2026-09-15T08:08:54.243672Z", "iopub.status.idle": "2026-09-15T08:08:54.313482Z", "shell.execute_reply": "2026-09-15T08:08:54.312926Z" } }, "outputs": [ { "data": { "image/png": "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/f+1Z8lCDDVERERWUjvIRdK8gAArN1JBMNQQERFZSVgY4FwlGUUuqgGgUABqtWEeWY6hhoiIyEqUSqDx8AUADAHmnwp+njWL16spKww1REREVtS86xU0feM/CAw0HQ8KAjZsACIi5OnLEfGKwkRERFYU4BmAk43X48bsz3lFYStjqCEiIrIif09/JD9IhlIJdO0qdzeOjYefiIiIrCjAKwBanRZZuVlyt+LwGGqIiIisyN/THwBw+8FtmTtxfAw1REREVhTgabgIDUON9THUEBERWVGAlyHUJGfwssHWxlBDRERkRVUrV4WL0oV7amyAoYaIiMiKFAqF8Qwosi6GGiIiIivz9/TnnhobYKghIiKysgDPAO6psQGGGiIiIisL8AzArYxbcrfh8BhqiIiIrCy4ejAu372MfJEvdysOjaGGiIjIyprVaIas3CzE34+XuxWHxlBDRERkZc18mwEAzqeel7kTx8ZQQ0REZGWBXoHwdvXGX6l/yd2KQ2OoISIisjKFQoGmNZpyT42VMdQQERHZQFOfpjifwlBjTQw1RERENtDMtxkupF3gGVBWxFBDRERkA01rNOUZUFbGUENERGQDzWoYzoDiYmHrYaghIiKygSDvIHi5eHGxsBUx1BAREdlAwRlQ3FNjPQw1RERENtKsRjPuqbEihhoiIiIbaVqjKS6k8gwoa2GoISIispFmvs2QmZuJm5qbcrfikBhqiIiIbKTgDKgzd87I3IljYqghIiKykSDvIAR6BSI6PlruVhwSQw0REZGNKBQKdKnTBQfjD8rdikNiqCEiIrKhLrW74GTySWToMuRuxeEw1BAREdlQl9pdoBd6HEk4IncrDsfsULNlyxa0adMGfn5+6NSpE3777bcyqbl79y7efvttNGjQAMHBwZgyZQpycnKM91+5cgVjx45F48aNUb9+fQwZMgSXLl0yt30iIiJZNazeEH4efjh4g4egyppZoebgwYOIjIzE8OHDcezYMXTr1g29evXCuXPnLKrJyMhAp06dcP78eWzYsAG//fYbKleujK1btxrnvPLKK2jVqhU2b96MXbt2QQiBzp07486dO6XYbCIiInlwXY31KIQQQurk3r17w8nJCdu3bzeOPfHEE3jiiSewdOnSUtd88sknWLBgAa5fvw4vL68iH0cIAYVCYfw5KysLKpUKS5YswYgRIyT1r9Vq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Points from real peaking\n", "from numpy import array\n", "pty = array([0.06599215, 0.06105629, 0.06963708, 0.06900191, 0.06496001, 0.06352082, 0.05923421, 0.07080027, 0.07276284, 0.07170048])\n", "ptx = array([0.05836343, 0.05866434, 0.05883284, 0.05872581, 0.05823667, 0.05839846, 0.0591999, 0.05907079, 0.05945377, 0.05909428])\n", "try:\n", " ellipse = fit_ellipse(pty, ptx)\n", "except Exception as e:\n", " ellipse = None\n", " print(e)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2026-09-15T08:08:54.315123Z", "iopub.status.busy": "2026-09-15T08:08:54.315035Z", "iopub.status.idle": "2026-09-15T08:08:54.373840Z", "shell.execute_reply": "2026-09-15T08:08:54.373354Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ellipse can't be fitted: singular matrix\n" ] }, { "data": { "image/png": "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oG+wFTbuuusu1dbW6tprr9Vjjz2mGTNmqF+/fh0ukwAAABzNVtjIysrS5s2bddZZZ2ndunXyeDzatGmTTjnllG4/h8vl0t13393ppZV4x2uLT7y2+MRri0+J/NqkxH594bw2h9WTNSwAAADdxAexAQAAowgbAADAKMIGAAAwqtv32YiEjz/+WNu2bdOwYcM0YcKEHq3V7a28Xq9ee+01DR8+XJMmTYp1ORG1fft2/fvf/1ZmZqbOPffcWJcTUfX19dqyZYtSUlI0fvz4hFwXv23bNm3fvl0TJ07UqFGjYl1O2CorK1VXV9ehLS0tTZdeemmMKoq8hoYGbdiwQSkpKbr44ovVv3//WJcUthdffDF0u+ujJcrPrq2tTe+//7727dunIUOG6IILLtCAAQNiXVZEWJalrVu3as+ePRo1apTOO+88288RtbBx55136sEHH9TEiRNVXV2tkSNH6pVXXjnu9ufx5vPPP9ePf/xj/e1vf1NbW5smTJiQMGHjn//8pxYuXKiWlhadeuqp2rx5s9LT0/X8889r+PDhsS4vLK2trSosLNRbb72lnJwc7d+/X//617+0dOlSzZo1K9blRcz+/fs1ffp01dbWauXKlQkRNn7zm99o9+7dHf7gnXvuuQnxhiVJS5Ys0e23367x48crJSVFBw4c0DPPPKP09PRYlxaW119/vUNIbGtr05o1azR//vy4/9nV1tZq6tSpamxs1Hnnnafq6mo1NTXphRde0NixY2NdXlg+++wzXXXVVdq3b5/OPfdcVVVVKScnR08//bS+8pWvdP+JrCh48803LUnW+vXrLcuyLK/Xa5155pnWwoULo3F6oz799FNr2bJl1qFDh6xrr73WysvLi3VJEfPGG29YVVVVof3GxkYrJyfHmjVrVgyriozGxkZrzZo1VltbW6jtrrvuslJSUqzW1tYYVhY5gUDAuuyyy6z777/fkmStXLky1iVFxIwZM6yioqJYl2HEs88+ayUlJVkvvvhiqG379u3W7t27Y1iVGS+99JIlydqwYUOsSwnbTTfdZI0ePdpqbm62LCv4u+fxeKzp06fHuLLwzZkzx8rJybEaGxstywr+7TznnHOsX/7yl7aeJyrXMVasWKELLrhAnv//WNfU1FQVFhbqySefDN2NNF4NGzZMCxYs0MCBA2NdSsTl5uZq3Lhxof2UlBRdeeWV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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Line\n", "from numpy import arange\n", "pty = arange(10)\n", "ptx = arange(10)\n", "try:\n", " ellipse = fit_ellipse(pty, ptx)\n", "except Exception as e:\n", " ellipse = None\n", " print(e)\n", "display(ptx, pty, ellipse)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "Within pyFAI's calibration process, the parameters of the ellipse are used in first instance as input guess for starting the fit procedure, which uses *slsqp* from scipy.optimize." ] } ], "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.13.1" } }, "nbformat": 4, "nbformat_minor": 4 }