diff --git a/tutorials/core/dp_augment.ipynb b/tutorials/core/dp_augment.ipynb index 07f82d7..3c2e7f2 100644 --- a/tutorials/core/dp_augment.ipynb +++ b/tutorials/core/dp_augment.ipynb @@ -4,51 +4,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# **this is an out of date tutorial and should be updated** \n", + "# DPAugmentor Tutorial\n", "\n", - "# Tutorial on diffraction pattern augmentation\n", - "Demonstration of the `DPAugmentor` class for augmenting 4DSTEM training data \n", + "`DPAugmentor` applies randomized augmentations to electron diffraction patterns for ML training data generation. Each call to `augment()` samples fresh parameter values and applies the full pipeline.\n", "\n", - "- TODO \n", - " - update to latest version of DPAugmentor (with features, fixes, etc.)\n", - " - add a demo with on-the-fly augmentation using a `torch DataLoader`\n", - " - potentially add the DP_augmentor to the `neural_networks_03_autencoder.ipynb` demo, and add references between the two notebooks\n", + "**Pipeline order (left → right):** \n", + "`flipshift` → `shift / ellipticity / scale` → `inelastic background` → `shot noise` → `Gaussian noise` → `blur` → `salt & pepper`\n", "\n", - "Arthur McCray \n", - "Aug 8, 2025\n" + "**Parameter ranges:** Every numeric parameter accepts a fixed value, a `[min, max]` range (uniform sampling), or a weighted mixture of ranges — see Section 4.\n", + "\n", + "Nicholas Marchese | Last updated: June 2026" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", - "%autoreload 2 " + "%autoreload 2" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/amccray/code/quantem/.venv/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cuda:0\n" - ] - } - ], + "outputs": [], "source": [ "from pathlib import Path\n", "\n", @@ -59,463 +41,294 @@ "from quantem.core.visualization import show_2d\n", "\n", "GPU_IND = 0\n", - "config.set({\"device\": f\"cuda:{GPU_IND}\"})\n", - "print(config.get(\"device\"))\n" + "config.set({\"device\": f\"cuda:{GPU_IND}\"})" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], + "outputs": [], "source": [ + "# Load real data if available; otherwise fall back to a synthetic ring pattern.\n", "f_data = Path(\"~/data/example_data/polycrystal_2D_WS2.h5\").expanduser()\n", - "print(f_data.exists())" + "\n", + "if f_data.exists():\n", + " dset = em.io.read_emdfile_to_4dstem(\n", + " str(f_data),\n", + " data_keys=[\"4DSTEM\", \"datacube\", \"data\"],\n", + " calibration_keys=[\"4DSTEM\", \"datacube\", \"calibration\"],\n", + " )\n", + " dset.units = [\"pixels\"] * 4\n", + " dset.sampling = [1] * 4\n", + " dp = dset[0, 0].array.astype(np.float32)\n", + " dp_stack = dset[::32, 64].array.astype(np.float32)\n", + " print(f\"Loaded real data — single dp: {dp.shape}, stack: {dp_stack.shape}\")\n", + "else:\n", + " H, W = 128, 128\n", + " yy, xx = np.mgrid[-H//2:H//2, -W//2:W//2].astype(np.float32)\n", + " r = np.sqrt(xx**2 + yy**2)\n", + " dp = np.zeros((H, W), dtype=np.float32)\n", + " for r0, width, amp in [(20, 3, 1.0), (38, 2.5, 0.6), (52, 2.0, 0.35)]:\n", + " dp += amp * np.exp(-0.5 * ((r - r0) / width) ** 2)\n", + " _rng0 = np.random.RandomState(42)\n", + " dp += _rng0.exponential(0.02, (H, W)).astype(np.float32)\n", + " dp = dp.clip(0)\n", + " dp_stack = np.stack([dp * _rng0.uniform(0.8, 1.2) for _ in range(8)])\n", + " print(f\"Using synthetic ring pattern — single dp: {dp.shape}, stack: {dp_stack.shape}\")\n", + "\n", + "# Gaussian approximation of a focused electron probe\n", + "H, W = dp.shape\n", + "yy, xx = np.mgrid[-H//2:H//2, -W//2:W//2].astype(np.float32)\n", + "probe = np.exp(-0.5 * (xx**2 + yy**2) / 8.0**2).astype(np.float32)\n", + "probe /= probe.sum()\n", + "\n", + "show_2d([dp, probe], title=[\"Input diffraction pattern\", \"Probe function\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Geometric Transforms\n", + "\n", + "Geometric augmentations warp the diffraction pattern in real space and are applied first in the pipeline, so all subsequent noise acts on the already-distorted pattern.\n", + "\n", + "### 1a. Flips & Rotation (`add_flipshift`)\n", + "\n", + "Randomly flips horizontally and/or vertically (each with 50% probability) and applies a rotation.\n", + "\n", + "- `free_rotation=False` (default): rotation locked to 0°, 90°, 180°, 270° \n", + "- `free_rotation=True`: rotation drawn uniformly from `rotation_range`" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "keys: ['4DSTEM', 'datacube', 'data']\n", - "(128, 128, 128, 128)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAGGCAYAAAC0dwBeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAa7ZJREFUeJztnXe4FdX1978XlSII0osgHaQpioUSREVEBHuIhMQCdqKxdyN2RY1giCg2jCi+BrtGQFEiBhCJqKAgItKL0hEFozDvH/7Wvt9z79p3zswp9w6sz/PwsO8+c2b27Nmzz15rr1IQBEEAwzAMI1GUK+0GGIZhGNGxydswDCOB2ORtGIaRQGzyNgzDSCA2eRuGYSQQm7wNwzASiE3ehmEYCcQmb8MwjARik7dhGEYCscnbyDu33norCgoKSrsZZZKnn34aBQUFWLJkSWk3xSjj2OQdgbvuugsFBQVo3759sc+aNGmCgoICFBQUoFy5cth3333RoUMHXHDBBZg5c2ak66xduxaXXXYZDjjgAFSqVAl16tTB4Ycfjuuuuw5bt27Fv//9b3etsH9A4YTg+/fhhx+6a0vdeeedp7btpptucsesW7cu0n1lg1GjRuHpp5/O+3U1Vq1ahVtvvRWffvppaTfF2A3Zs7QbkBRWrFiBu+++G5UrV/Ye07FjR1x11VUAgO+//x7z58/H+PHj8fjjj+OKK67Agw8+GHqdDRs24NBDD8WWLVswePBgHHDAAVi/fj3mzJmDRx55BBdffDHatGmDsWPHpnzvhhtuQJUqVXDTTTd5z3377bejadOmxepbtGiR8nfFihXx0ksvYdSoUShfvnzKZ88//zwqVqyI7du3h95LLhg1ahRq1aqFc845p1Suz6xatQq33XYbmjRpgo4dO5Z2c4zdDJu80+Tqq69G586dsWPHDu+Kc7/99sMf//jHlLphw4Zh4MCBGD58OFq2bImLL764xOs8+eSTWLZsGaZNm4auXbumfLZlyxaUL18eFStWLHade++9F7Vq1SpWz/Tp0weHHnpoidcHgOOPPx6vv/46JkyYgJNPPtnVT58+HYsXL8bpp5+Ol156KfQ8hmHkDlObpMHUqVPx4osvYsSIEZG/W6lSJYwdOxY1atTAXXfdhbAgjosWLcIee+yBzp07F/usatWqqFixYuQ2RGW//fbDkUceiXHjxqXUP/fcc+jQoYOqNvLxn//8B4cddhgqVqyI5s2bY/To0epxY8aMwTHHHIM6deqgQoUKaNu2LR555JGUY5o0aYIvvvgC77//vlPdHHXUUQB+lViuvvpqdOjQAVWqVEHVqlXRp08ffPbZZ8WuNXLkSLRr1w577703qlevjkMPPbTYva5cuRKDBw9G3bp1UaFCBbRr1w5PPfWU+/zf//43DjvsMADAoEGDXHuiqHS++OILHHPMMahUqRIaNmyIO++8Ezt37ix2XJMmTdCvXz+8/fbb6NixIypWrIi2bdvi5ZdfTvtaQkFBAS655BKMHz8ebdu2RaVKldClSxfMnTsXADB69Gi0aNECFStWxFFHHaXq3mfOnInjjz8e1apVw957740ePXpg2rRpKccsXboUQ4YMQevWrVGpUiXUrFkT/fv3L3Y+UelNmzYNV155JWrXro3KlSvj1FNPxdq1ayPf3+6ErbxD2LFjBy699FKcd9556NChQ6xzVKlSBaeeeiqefPJJzJs3D+3atfMe27hxY+zYsQNjx47F2WefHbfZKps3by4mNRQUFKBmzZrFjh04cCAuu+wybN26FVWqVMEvv/yC8ePH48orr0xbZTJ37lwcd9xxqF27Nm699Vb88ssvGDp0KOrWrVvs2EceeQTt2rXDSSedhD333BNvvPEGhgwZgp07d+JPf/oTAGDEiBG49NJLU9RDcq5vvvkGr776Kvr374+mTZvi22+/xejRo9GjRw/MmzcPDRo0AAA8/vjj+POf/4zf/va3uOyyy7B9+3bMmTMHM2fOxMCBAwEA3377LTp37uwmutq1a2PChAk499xzsWXLFlx++eVo06YNbr/9dtxyyy244IIL0L17dwAoJi35WLNmDY4++mj88ssvuP7661G5cmU89thjqFSpknr8woULccYZZ+Ciiy7C2WefjTFjxqB///6YOHEievXqldY1hQ8++ACvv/6669d77rkH/fr1w7XXXotRo0ZhyJAh2LhxI+677z4MHjwY7733nvvue++9hz59+qBTp04YOnQoypUr5354P/jgAxx++OEAgFmzZmH69OkYMGAAGjZsiCVLluCRRx7BUUcdhXnz5mHvvfdOadOll16K6tWrY+jQoViyZAlGjBiBSy65BC+88EKke9utCIwS+fvf/x5Uq1Yt+O6774IgCIIePXoE7dq1K3Zc48aNg759+3rPM3z48ABA8Nprr5V4vTVr1gS1a9cOAAQHHHBAcNFFFwXjxo0LNm3aVOL32rVrF/To0UP9bMyYMQEA9V+FChVSjgUQ/OlPfwo2bNgQlC9fPhg7dmwQBEHwr3/9KygoKAiWLFkSDB06NAAQrF27tsQ2nXLKKUHFihWDpUuXurp58+YFe+yxR1B06P3444/Fvt+7d++gWbNmad3n9u3bgx07dqTULV68OKhQoUJw++23u7qTTz5ZfX7MueeeG9SvXz9Yt25dSv2AAQOCatWqubbOmjUrABCMGTOmxPNpXH755QGAYObMma7uu+++C6pVqxYACBYvXuzqGzduHAAIXnrpJVe3efPmoH79+sHBBx8c6bryzPn8o0ePDgAE9erVC7Zs2eLqb7jhhpS27Ny5M2jZsmXQu3fvYOfOne64H3/8MWjatGnQq1evlLqizJgxIwAQPPPMM65Oxuaxxx6bcs4rrrgi2GOPPULH/e6MqU1KYP369bjlllvwl7/8BbVr187oXFWqVAHw60ZmSdStWxefffYZLrroImzcuBGPPvooBg4ciDp16uCOO+4IVbuUxMMPP4x33nkn5d+ECRPUY6tXr47jjz8ezz//PABg3Lhx6Nq1Kxo3bpzWtXbs2IFJkybhlFNOwf777+/q27Rpg969exc7nlecIiH06NED33zzDTZv3hx6vQoVKqBcuXLu2uvXr0eVKlXQunVrzJ492x237777YsWKFZg1a5Z6niAI8NJLL+HEE09EEARYt26d+9e7d29s3rw55Xxxeeutt9C5c2e3UgWA2rVr4w9/+IN6fIMGDXDqqae6v6tWrYqzzjoLn3zyCdasWRPp2j179kSTJk3c30cccQQA4PTTT8c+++xTrP6bb74BAHz66adYuHAhBg4ciPXr17t++eGHH9CzZ09MnTrVqX34ef78889Yv349WrRogX333VftvwsuuCDFfLR79+7YsWMHli5dGunedidMbVICN998M2rUqIFLL70043Nt3boVANzLsXbtWuzYscN9XqVKFTfB169fH4888ghGjRqFhQsXYtKkSRg2bBhuueUW1K9f32vGF8bhhx+e1oalMHDgQJx55plYtmwZXn31Vdx3331pf3ft2rXYtm0bWrZsWeyz1q1b46233kqpmzZtGoYOHYoZM2bgxx9/TPls8+bNqFatWonX27lzJx566CGMGjUKixcvTulbVgtdd911mDx5Mg4//HC0aNECxx13HAYOHIhu3bq5dm/atAmPPfYYHnvsMfVa3333Xck3nwZLly51kyPTunVr9fgWLVoUs41v1aoVAGDJkiWoV69e2tfmH1MArm8bNWqk1m/cuBHAr6obACWq8zZv3ozq1atj27ZtuOeeezBmzBisXLkyZdGh/RgXbVP16tVTrm0UxyZvDwsXLsRjjz2GESNGYNWqVa5++/bt+Pnnn7FkyRJUrVoVNWrUSOt8n3/+OYBCs7zDDjssZVUxdOhQ3HrrrSnfKSgoQKtWrdCqVSv07dsXLVu2xHPPPRd78o7KSSedhAoVKuDss8/GTz/9hN/97nc5uc6iRYvQs2dPHHDAAXjwwQfRqFEjlC9fHm+99RaGDx+ubuIV5e6778Zf/vIXDB48GHfccQdq1KiBcuXK4fLLL0/5fps2bbBgwQK8+eabmDhxojOJvOWWW3Dbbbe5Y//4xz96J6kDDzwwOzdeSuyxxx6R6mXilb65//77vaaRsgC59NJLMWbMGFx++eXo0qULqlWrhoKCAgwYMEB9nmHXNopjk7eHlStXYufOnfjzn/+MP//5z8U+b9q0KS677LK0LFC2bt2KV155BY0aNUKbNm0A/Gq5sW3bNndMs2bNSjxHs2bNUL16daxevTrajWRApUqVcMopp+DZZ59Fnz59UKtWrbS/W7t2bVSqVMmt1pgFCxak/P3GG2/gp59+wuuvv56yApsyZUqx7/o8M1988UUcffTRePLJJ1PqN23aVKzdlStXxhlnnIEzzjgD//vf/3Daaafhrrvuwg033IDatWtjn332wY4dO3DssceWeI+ZeIk2btw4rb4Rvv76awRBkHLNr776CgBSVCC5pHnz5gB+VdmE9c2LL76Is88+G3/9619d3fbt27Fp06ZcNnG3wiZvD+3bt8crr7xSrP7mm2/G999/j4ceesgN5pLYtm0bzjzzTGzYsAF33323e/lETC/KzJkz0b59+2LOQB999BHWr1/v/V6uuPrqq9G8eXNVT10Se+yxB3r37o1XX30Vy5Ytc5Py/PnzMWnSpGLHAigmWo8ZM6bYeStXrqxOAHvssUexVdr48eOxcuXKFCek9evXp6hRypcvj7Zt22LChAn4+eefUbFiRZx++ukYN24cPv/882JmkWvXrnX7H/KM4kxIJ5xwAkaMGIGPPvrI6b3Xrl2L5557Tj1+1apVeOWVV3DaaacB+NXm/5lnnkHHjh0jqUwyoVOnTmjevDkeeOABDBw40K2yBe4b7XmMHDkyRZ1lZIZN3h5q1aqFU045pVi9rLS1z1auXIlnn30WwK+r7Xnz5mH8+PFYs2YNrrrqKlx44YWh1x07diyee+45nHrqqejUqRPKly+P+fPn46mnnkLFihVx4403xr6nCRMm4MsvvyxW37VrV+/K/6CDDsJBBx0U63q33XYbJk6ciO7du2PIkCH45ZdfnI31nDlz3HHHHXccypcvjxNPPBEXXnghtm7discffxx16tQpJml06tQJjzzyCO688060aNECderUwTHHHIN+/frh9ttvx6BBg9C1a1fMnTsXzz33XLH7Ou6441CvXj1069YNdevWxfz58/H3v/8dffv2dfsR9957L6ZMmYIjjjgC559/Ptq2bYsNGzZg9uzZmDx5MjZs2ADg15Xovvvui0cffRT77LMPKleujCOOOEL1Yi3Ktddei7Fjx+L444/HZZdd5kwFGzdunNI3QqtWrXDuuedi1qxZqFu3Lp566il8++236g9crihXrhyeeOIJ9OnTB+3atcOgQYOw3377YeXKlZgyZQqqVq2KN954AwDQr18/jB07FtWqVUPbtm0xY8YMTJ48WTVLNWJSWmYuSaUkU0H8n/ldQUFBULVq1aBdu3bB+eefn2IOFsacOXOCa665JjjkkEOCGjVqBHvuuWdQv379oH///sHs2bO934trKogipm74P1PBkkjXVDAIguD9998POnXqFJQvXz5o1qxZ8Oijj7rvM6+//npw4IEHBhUrVgyaNGkSDBs2LHjqqaeKmc2tWbMm6Nu3b7DPPvsEANw9b9++PbjqqquC+vXrB5UqVQq6desWzJgxI+jRo0dKv4wePTo48sgjg5o1awYVKlQImjdvHlxzzTXB5s2bU9rz7bffBn/605+CRo0aBXvttVdQr169oGfPnsFjjz2Wctxrr70WtG3bNthzzz0jmw3OmTMn6NGjR1CxYsVgv/32C+64447gySefVE0F+/btG0yaNCk48MADgwoVKgQHHHBAMH78+LSvJWjPd/HixQGA4P7770+pnzJlSgCg2HU++eST4LTTTnN92Lhx4+B3v/td8O6777pjNm7cGAwaNCioVatWUKVK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N89txrdr1w7/+te/sGXLFqxZswbPPPMMatas6W3DxRdfjAULFuDHH3/E6tWrMX78+Nj9pBEre7yQ753rXFxPc4MH9Ahz/CvNu/qaWsW3k659rqkE8hHoXnOPZnWPFgWPVSGsDgoLgO97dqJu4f7gF0JeHHZ6WrdunXpdUU+waofbK8/PFzmP710SO/iykst1fVZF8n2G28XHils+X4stdbi9YrWTTgKFXOCzUJLn61vJapZamhqpatWqAIANGzYgCAIccsghKF++PCZPnuyOXbBgAZYuXYouXbpg5syZ3rZec801uPvuuzF06FD07t0bDz30EL766quUcwljx45Fv3798Nxzz6Fr167o3bs3zj33XHTp0gU//vgjqlWrhnfffRdPPPEErrjiClSqVAnDhg3DP//5T/Ts2TOlTwoKCtCpUyc89NBDOOusszB9+nTUqFED3bt3LzEia1R1dKnENjEMwyhKQUEB7r//fkybNg1ffPEFgF/10j/99FOKFynwq8qjXr16JZ5v2rRpGDZsGABg4cKF6NatG6644gp18gaACy+8EHPmzMHf/vY3nHbaabj11lsxe/ZsAMAll1yCTz75BDfddJM7fvDgwVixYgVatmyJhQsXppxr//33xw8//IA333wTW7duxbJly/Dpp59G6o8wIk3e8qsi5GPlHfYLlYvs9EXPq51Pczn3tUvLcK4FtuL6bGa1T4d0gxTxCphX2LziklWUtlItivQTr7x581LbpGZ9qOZKzyvcsABiXPZ9T+BNWbm3dPwE5BjfClk+Z7d+LU1a0XI+kRU3970W0sAXyEuT6Hg1vmPHDowcORJt2rTBb37zm6xs6M+YMaPY35dffnmx91T+3rx5M8477zxMmjQJ06ZNw7333uuOO+igg3D00UenSERC8+bNi03e77zzDpYuXYpFixZh4sSJmDRpEl555ZUUiV0IM57wYTpvwzBKnREjRqBPnz7o3bs3Vq5c6erXrFmDChUqoFq1ainH161bF2vWrMl6O4488kj88ssvqF+/fsqPdZUqVfDGG2+gY8eOKf9atGiBqVOnFjvP1q1b0alTJwwcOBBr1qzBbbfdhk8//bTYfWSCTd6GYZQqDz74IE466SQcf/zxWLJkScpnH3/8Mf73v/+l6JVbtWqFxo0bF1tZF6Vz587F/p4/f773+C5duuDaa6/FiSee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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "dset = em.io.read_emdfile_to_4dstem(str(f_data), data_keys=[\"4DSTEM\", \"datacube\", \"data\"], calibration_keys=[\"4DSTEM\", \"datacube\", \"calibration\"])\n", - "dset.units = ['pixels'] * 4 \n", - "dset.sampling = [1]*4\n", - "dset.get_dp_mean()\n", - "dset.get_dp_max()\n", - "dset.dp_mean.show()\n", - "print(dset.shape)" + "aug_90 = DPAugmentor(add_flipshift=True, free_rotation=False, rng=0)\n", + "dp_90 = aug_90.augment(dp)\n", + "aug_90.print_params()\n", + "\n", + "aug_free = DPAugmentor(add_flipshift=True, free_rotation=True,\n", + " rotation_range=[-180, 180], rng=1)\n", + "dp_free = aug_free.augment(dp)\n", + "print(f\"Free rotation drew: {aug_free.rotation_angle:.1f}°\")\n", + "\n", + "show_2d([dp, dp_90, dp_free],\n", + " title=[\"Original\", \"90° rotation\", \"Free rotation\"],\n", + " upper_quantile=0.99, cbar=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Hopefully this is pretty self explanatory. Each of the noise/augmentations can be enabled/disabled individually, and either a single value or range of values can be passed. E.g. if wanting to add random shifts, set `add_shift=True` and you could set `xshift=5` (each image will have a fixed shift of 5 pixels) and `yshift = [0,10]` (each image will have a randomly chosen y shift between 0 and 10 pixels, positive or negative). \n", + "### 1b. Shift (`add_shift`)\n", + "\n", + "Translates the pattern by a random amount. The magnitude is sampled from `[0, xshift]` / `[0, yshift]` and a random sign is applied independently to each axis.\n", "\n", - "Passing a filepath to `log_file` will record, for each image, each of the augmentation parameters used. \n", + "### 1c. Scale (`add_scale`)\n", "\n", - "For the elastic transformations, i.e. shifts, ellipticity and scaling, non-90 degree rotations, you can have regions of your augmented image that are not in the field of view of the input. Setting your scale_factor to be minimum of 1 will help this, but it can still happen at the corners due to elliptic distortions, and free rotations also will lead to this. Regions outside the fov are just set to 0. \n", + "Uniformly scales the pattern by `scale_factor`. Values > 1 zoom out; values < 1 zoom in. Set the minimum to 1.0 to only magnify.\n", "\n", - "Note that the default for `add_elipticity_to_label` is `True`, meaning that any elliptical distortions applied to the diffraction pattern will be applied to the label as well. I'm not sure if it will be possible for a NN to learn how to undo elliptical/scaling distortions, (probably not for scaling, hopefully for elliptical) hence why this is a flag. " + "> **Note:** Large shifts, free rotations, and scale < 1 leave zero-padded regions at the image edges. Use `scale_factor ≥ 1` and moderate ellipticity to minimise this." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "aug_shift = DPAugmentor(add_shift=True, xshift=[0, 20], yshift=[0, 20], rng=2)\n", + "dp_shift = aug_shift.augment(dp)\n", + "print(f\"Shift drawn: x={aug_shift.xshift:.1f}, y={aug_shift.yshift:.1f} px\")\n", + "\n", + "aug_scale = DPAugmentor(add_scale=True, scale_factor=[0.8, 1.2], rng=3)\n", + "dp_scale = aug_scale.augment(dp)\n", + "print(f\"Scale factor drawn: {aug_scale.scale_factor:.3f}\")\n", + "\n", + "aug_both = DPAugmentor(add_shift=True, xshift=[0, 15], yshift=[0, 15],\n", + " add_scale=True, scale_factor=[0.9, 1.1], rng=4)\n", + "dp_both = aug_both.augment(dp)\n", + "\n", + "show_2d([dp, dp_shift, dp_scale, dp_both],\n", + " title=[\"Original\", \"Shift only\", \"Scale only\", \"Shift + Scale\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[0;31mInit signature:\u001b[0m\n", - "\u001b[0mDPAugmentor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_bkg\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mbkg_weight\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.001\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.05\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mbkg_q\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.01\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_shot\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0me_dose\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m10000.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10000000.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_shift\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mxshift\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0myshift\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_ellipticity\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mellipticity_scale\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.15\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_ellipticity_to_label\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_salt_and_pepper\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0msalt_and_pepper\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0005\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_scale\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mscale_factor\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_blur\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mblur_sigma\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.5\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_flipshift\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mfree_rotation\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mrotation_range\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m180\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m180\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlog_file\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPathLike\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mrng\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_generator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGenerator\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mint\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'cpu'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mDocstring:\u001b[0m \n", - "Mixin class providing consistent RNG functionality with both numpy and torch generators.\n", - "If you do not provide a seed, the RNG will be initialized with a random seed, and subsequently\n", - "resetting the RNG will use a _new_ random seed. Setting with a fixed seed or generator and then\n", - "resetting the RNG will use the same seed.\n", - "\n", - "Provides:\n", - "- self.rng: np.random.Generator property\n", - "- self._rng_torch: torch.Generator for torch operations\n", - "- self._reset_rng(): reset the RNG to the current seed\n", - "\u001b[0;31mInit docstring:\u001b[0m\n", - "Initialize diffraction pattern augmentor with configurable transformations.\n", - "\n", - "Parameters\n", - "----------\n", - "add_bkg : bool, default=False\n", - " Enable inelastic plasmon background addition via convolution with probe.\n", - "bkg_weight : list[float] | float, default=[0.001, 0.05]\n", - " Range for background weight (fraction of total intensity).\n", - "bkg_q : list[float] | float, default=[0.01, 0.1]\n", - " Range for plasmon scattering parameter q₀ in 1/(q² + q₀²) form factor.\n", - "\n", - "add_shot : bool, default=False\n", - " Enable Poisson shot noise based on electron dose.\n", - "e_dose : list[float] | float, default=[1e4, 1e7]\n", - " Range for electron dose (electrons per image) for shot noise.\n", - "\n", - "add_shift : bool, default=False\n", - " Enable random translation of the diffraction pattern.\n", - "xshift : list[float] | float, default=[0, 10]\n", - " Range for horizontal shift in pixels (applied with random sign).\n", - "yshift : list[float] | float, default=[0, 10]\n", - " Range for vertical shift in pixels (applied with random sign).\n", - "\n", - "add_ellipticity : bool, default=False\n", - " Enable elliptical distortion of the diffraction pattern.\n", - "ellipticity_scale : list[float] | float, default=[0, 0.15]\n", - " Range for ellipticity strength parameter (std dev of Gaussian distortion).\n", - "add_ellipticity_to_label : bool, default=True\n", - " Whether to apply ellipticity transforms to labels. If False, labels get\n", - " shift/scale/flip/rotation but maintain exx=1, eyy=1, exy=0.\n", - "\n", - "add_salt_and_pepper : bool, default=False\n", - " Enable salt and pepper (impulse) noise.\n", - "salt_and_pepper : list[float] | float, default=[0, 5e-4]\n", - " Range for fraction of pixels affected by salt and pepper noise.\n", - "\n", - "add_scale : bool, default=False\n", - " Enable uniform scaling of the diffraction pattern.\n", - "scale_factor : list[float] | float, default=[0.9, 1.1]\n", - " Range for scaling factor. Use [1.0, max_val] for magnification only.\n", - "\n", - "add_blur : bool, default=False\n", - " Enable Gaussian blur.\n", - "blur_sigma : list[float] | float, default=[0.0, 1.5]\n", - " Range for Gaussian blur standard deviation in pixels.\n", - "\n", - "add_flipshift : bool, default=False\n", - " Enable random flips and rotations applied before other augmentations.\n", - "free_rotation : bool, default=False\n", - " If True, use continuous rotation within rotation_range.\n", - " If False, use only 90-degree rotations (0°, 90°, 180°, 270°).\n", - "rotation_range : list[float] | float, default=[-180, 180]\n", - " Range for rotation angles in degrees (only used if free_rotation=True).\n", - "\n", - "log_file : os.PathLike | None, default=None\n", - " Path to CSV file for logging augmentation parameters. If None, no logging.\n", - "rng : np.random.Generator | int | None, default=None\n", - " Random number generator or seed for reproducible augmentations.\n", - "device : str, default=\"cpu\"\n", - " Device for computations (\"cpu\", \"cuda\", \"cuda:0\", etc.).\n", - "\n", - "Notes\n", - "-----\n", - "- Augmentations are applied in order: flipshift → background → elastic →\n", - " shot noise → blur → salt & pepper\n", - "- For labels, only geometric transforms (flipshift, elastic) are applied\n", - "- Ellipticity creates anisotropic scaling via exx, eyy, exy parameters\n", - "- All ranges can be single values, val, or [min, max] for uniform sampling\n", - "\u001b[0;31mFile:\u001b[0m ~/code/quantem/src/quantem/core/utils/augment_dp.py\n", - "\u001b[0;31mType:\u001b[0m type\n", - "\u001b[0;31mSubclasses:\u001b[0m " - ] - } - ], "source": [ - "?DPAugmentor" + "### 1d. Ellipticity (`add_ellipticity`)\n", + "\n", + "Applies an anisotropic linear distortion parameterized by strain tensor components `exx`, `eyy`, `exy`. These are drawn from a normal distribution with `ellipticity_scale` as σ, then normalized so `(exx + eyy) / 2 = 1` (area-preserving on average).\n", + "\n", + "The same distortion is applied to the inelastic background (Section 2a): when `add_ellipticity=True`, the plasmon form factor `1/(q² + q₀²)` is evaluated in elliptically-transformed q-space so the background matches the distorted pattern geometry.\n", + "\n", + "- `add_ellipticity_to_label=True` (default): label is warped identically to the DP \n", + "- `add_ellipticity_to_label=False`: label only gets shift/scale/flip — useful when training a network to predict and correct ellipticity" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Augmentation summary:\n", - ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", - "Inelastic background: False\n", - "Shot noise: False\n", - "Image shift: True\n", - "\t(x,y): (-8.78, 2.22)\n", - "Elliptic scaling: True\n", - "\t(exx,eyy,exy): (1.05,0.95,-0.09)\n", - "Scaling: False\n", - "Flip/rotation: True\n", - "\tFlip: H=False, V=True, Rot: 170.4°\n", - "Salt & pepper: False\n", - "Gaussian blur: False\n", - "Random seed: None\n", - "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n" - ] - }, - { - "data": { - "text/plain": [ - "(
,\n", - " array([,\n", - " ], dtype=object))" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAFtCAYAAABx80ePAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPKVJREFUeJzt3X9UVPed//HXgGGICWAiv6SiqIlaNUKKkWPUqBHl0MRW21rW2gYxa6yBTdOpbU3PFrA/QtLtsnYDlcYtYptkRZto0sSlVWy0Rj1GjN248SfVqImA2AiBJGKB7x/5Ms2EHw53rsOPz/Nxzj3NfPjcez9DdV6+7+d+7jhaW1tbBQAAAAAWBfT0AAAAAAD0bRQVAAAAAHxCUQEAAADAJxQVAAAAAHxCUQEAAADAJxQVAAAAAHxCUQEAAADAJxQVAAAAAHxCUQEAAADAJxQV/VhJSYkcDofOnDnT00OxJDc3Vw6Ho6eHAQBGMzlL4uLidP/999s6HofDodzcXFuPCfQGFBXwm7feeku5ubl9NpgAAD2PLAF6J4qKfuwb3/iGPvzwQw0fPrynhyLp4yBYvXq110Hwr//6r/rwww+v76AAAF3q61kCwD8G9PQAcP0EBgYqMDCwp4dh2YABAzRgAH9EAaAn9fUsAeAfzFT0Yx3dB9t2f+iePXs0efJkBQcHa+TIkfrNb37T4b67d+/W8uXLNXjwYIWGhuqBBx7Qe++959G3s/tD4+LitGTJEvfxFi5cKEmaNWuWHA6HHA6HXn311U7H39F9sA6HQ1lZWdq8ebPGjRunG2+8UVOmTNGbb74pSfrVr36l2267TcHBwZo5c2a7K1l//vOftXDhQg0bNkxOp1OxsbH69re/3eGMSNs5goODNWHCBG3ZskVLlixRXFycR7+WlhatWbNG48ePV3BwsKKiorR8+fJ2vyeY5dy5c5o5c6bGjRuniRMnavPmzT09JMCSvp4lHVm/fr3uvfdeRUZGyul0aty4cVq7dm2n/f/4xz8qISFBwcHBGjdunF544YV2fS5fvqxHH31UsbGxcjqduu222/Tkk0+qpaWlW2MD+iouAxvo1KlT+spXvqIHH3xQ6enpKi4u1pIlS5SYmKjx48d79M3KytKgQYOUm5ur48ePa+3atXr77bf16quvdmvh2z333KNHHnlE//mf/6kf/OAH+uxnPytJ7v/tjj//+c966aWXlJmZKUnKy8vT/fffr+9973v65S9/qYcffljvvfeefvazn2np0qXauXOne9/Nmzfrgw8+0IoVKzR48GAdOHBATz31lM6fP+/xj75XXnlFaWlpuuOOO5SXl6f33ntPDz74oD7zmc+0G8/y5ctVUlKijIwMPfLIIzp9+rQKCgr0xhtv6LXXXtMNN9zQ7feIvm/AgAFas2aNEhISVFVVpcTERH3+85/XTTfd1NNDA2zRl7Nk7dq1Gj9+vL7whS9owIAB+v3vf6+HH35YLS0t7mxpc/LkSaWlpemb3/ym0tPTtX79ei1cuFBlZWWaM2eOJOmDDz7QjBkz9M4772j58uUaNmyY9u7dq8cee0wXLlzQmjVrujU+oE9qRb+1fv36Vkmtp0+fdrcNHz68VVLr7t273W01NTWtTqez9Tvf+U67fRMTE1ubmprc7T/72c9aJbW++OKL7jZJrTk5Oe3OP3z48Nb09HT3682bN7dKav3Tn/7k1fhzcnJaP/1HVFKr0+n0eE+/+tWvWiW1RkdHt9bX17vbH3vssXbv/4MPPmh3nry8vFaHw9H69ttvu9vuuOOO1qFDh7a+//777rZXX321VVLr8OHD3W1//vOfWyW1Pvvssx7HLCsr67Ad5po4cWLr2bNne3oYQLf1xyzpKAtSUlJaR44c2e7cklqff/55d1tdXV3rkCFDWu+88053249//OPWm266qfXEiRMe+69atao1MDDQ4+9+Z+8T6Ou4/clA48aN0/Tp092vIyIiNGbMGP31r39t1/ehhx7yuNK+YsUKDRgwQNu2bfPLWDsye/Zsj1uQkpKSJElf/vKXFRIS0q79k+/rxhtvdP93Y2Ojamtrdffdd6u1tVVvvPGGJOndd9/Vm2++qQceeEA333yzu/+MGTN0xx13eIxl8+bNCgsL05w5c1RbW+veEhMTdfPNN+tPf/qTfW8cttm9e7fmzZunmJgYORwObd26tcN+hYWFiouLU3BwsJKSknTgwAFL56uoqFBzc7NiY2N9GDXQu/TlLPlkFtTV1am2tlYzZszQX//6V9XV1Xn0jYmJ0YIFC9yv227feuONN1RVVSXp4yyYPn26brnlFo8sSE5OVnNzs3bv3u2fNwb0IG5/MtCwYcPatd1yyy0drgG4/fbbPV7ffPPNGjJkSI8+dePT4w8LC5Okdv9ga2v/5Ps6e/assrOz9dJLL7V7v21B8vbbb0uSbrvttnbnvu2223To0CH365MnT6qurk6RkZEdjrWmpsar9wR7vPbaa5o8eXK7W87eeustDR48WFFRUZI+Lijj4+O1dOlSfelLX+rwWKWlpXK5XCoqKlJSUpLWrFmjlJQUHT9+3P3/d0JCgv7+97+32/ePf/yjYmJiJEl/+9vf9MADD2jdunV2vlWgx/XlLHnttdeUk5Ojffv26YMPPvD4WV1dnTs/pI8/9z99i9bo0aMlSWfOnFF0dLROnjyp//3f/1VERESH5yMLYAKKCgN19hSP1tZWW8/T3Nxs6/HadDb+a72v5uZmzZkzR3/729/0/e9/X2PHjtVNN92kd955R0uWLLG0mK6lpUWRkZF69tlnO/x5ZwED+7XdC3377bdr48aN7j8Px48f17333iuXy6Xvfe97kqTU1FSlpqZ2ebz8/HwtW7ZMGRkZkqSioiK98sorKi4u1qpVqyRJhw8f7vIYV65c0fz587Vq1SrdfffdPr5DoHfpq1lSWVmp2bNna+zYscrPz1dsbKyCgoK0bds2/cd//IflLJgzZ477M+bT2ooQoD+jqECXTp48qVmzZrlfNzQ06MKFC/r85z/vbrvlllt0+fJlj/2ampp04cIFj7ae/nbsN998UydOnNCGDRv0wAMPuNu3b9/u0a/tWeynTp1qd4xPt40aNUo7duzQ1KlTPabT4X8BAQHatm2b7rnnHj3wwAP67W9/q9OnT+vee+/V/PnzOw37jjQ1NamiokKPPfaYx/GTk5O1b98+r47R2tqqJUuW6N5779U3vvGNbr8foD/pTVny+9//XleuXNFLL73kMdvS2e2qp06dUmtrq8d5T5w4IUnuW3FHjRqlhoYGJScn+zQ2oC9jTQW69PTTT+vq1avu12vXrtXf//53j6u8o0aNane/6NNPP93u6lLbU28+HRr+0nZV7ZNX0VpbW/WLX/zCo19MTIwmTJig3/zmN2poaHC379q1y/3o2jZf/epX1dzcrB//+Mftzvf3v/+9x96rqWJiYrRz507t2bNHX/va13TvvfcqOTm5y0dFdqS2tlbNzc3u26XaREVFue+hvpbXXntNpaWl2rp1qxISEpSQkNDuzw9git6UJR1lQV1dndavX99h/3fffVdbtmxxv66vr9dvfvMbJSQkKDo6WtLH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b731lv793/9dt9xyi9fnZU0FAFhgwv2xAAB7+DMz8vPztWzZMmVkZEiSioqK9Morr6i4uFirVq3qcJ8nn3xSsbGxWr9+vbttxIgR3TovMxUAYAEzFQAAb/krM5qamlRRUaHk5GR3W0BAgJKTk7Vv375O93vppZc0adIkLVy4UJGRkbrzzju1bt26bp2bogIAAADoxerr6z22K1eudNivtrZWzc3NioqK8miPiopSVVVVp8f/61//qrVr1+r222/XH/7wB61YsUKPPPKINmzY4PUYKSoAwAJmKgAA3vI1M2JjYxUWFube8vLybB1fS0uLPve5z+nxxx/XnXfeqYceekjLli1TUVGR18dgTQUAWMCaCgCAt3zNjHPnzik0NNTd7nQ6O+wfHh6uwMBAVVdXe7RXV1crOjq60/MMGTJE48aN82j77Gc/q+eff97rsTJTAQAW+HOmYvfu3Zo3b55iYmLkcDi0devWLvvn5eXprrvuUkhIiCIjIzV//nwdP37co09ubq4cDofHNnbs2G6PDQBwbb5mRmhoqMfWWVERFBSkxMRElZeXu9taWlpUXl6uKVOmdDq+qVOntsuJEydOaPjw4V6/R4oKALDAn0VFY2Oj4uPjVVhY6FX/Xbt2KTMzU/v379f27dt19epVzZ07V42NjR79xo8frwsXLri3PXv2dHtsAIBr82dmuFwurVu3Ths2bNDRo0e1YsUKNTY2up8GVVBQoNmzZ3vs8+1vf1v79+/X448/rlOnTum5557T008/rczMTK/Py+1PANDLpaamKjU11ev+ZWVlHq9LSkoUGRmpiooK3XPPPe72AQMGdDkdDgDoe9LS0nTx4kVlZ2erqqpKCQkJKisrcy/erq2tVWVlpcc+d911l7Zs2aLHHntMP/rRjzRixAitWbNGixcv9vq8FBUAYEFfWlNRV1cnSbr11ls92k+ePKmYmBgFBwdrypQpysvL07Bhw/w+PgDo7/ydGVlZWcrKyurwZ7m5ucrNzW3Xfv/99+v++++3dD6JogIALPE1IOrr6z3anU5np/fI+qKlpUWPPvqopk6dqgkTJrjbk5KSVFJSojFjxujChQtavXq1pk+friNHjigkJMT2cQCAyfrShSirKCoAwAJfAyI2NtajPScnp8MrR77KzMzUkSNH2q2X+OTtVBMnTlRSUpKGDx+uTZs26cEHH7R9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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAFzCAYAAABILyRkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQldJREFUeJzt3Xt0VeWd//FPLuSCJOGWC4FwVUCCEAXJQkBukUwqOFBFZJgagsM4GrQ0ox2ctYSwbE0dK6UVFlRGCPVSQCtolVIhKgwFigRjRUUhggRNAkGSkCgJ5OzfH/6y4ZgAJzk7J+cJ79dae/Xkyb48J6nnw/d59rMTYFmWJQAAAABopsDW7gAAAAAAs1FUAAAAAPAKRQUAAAAAr1BUAAAAAPAKRQUAAAAAr1BUAAAAAPAKRQUAAAAAr1BUAAAAAPAKRQUAAAAAr1BU4Koxe/Zs9e7d+4r7jRs3TuPGjWvx/gAA2o6WzpijR48qICBAv/71r5veuUt47733FBAQoPfee8+xc+LqRVEBv/LJJ58oOztbR48ebe2uAADaGDIGaDkUFfArn3zyiRYvXtyqH/hvv/223n777Va7PgCgZfhDxgBtVXBrdwDwNyEhIa3dBQAAAKMwU9HKvvzySz344IMaMGCAwsPD1aVLF02fPr3BKEp2drYCAgIaHJ+bm6uAgAC3/V0ul7KzsxUfH6/27dtr/Pjx+uSTT9S7d2/Nnj27wbE7d+7Uww8/rOjoaHXs2FH333+/amtrVV5ernvvvVedOnVSp06d9POf/1yWZbld3+VyaenSpUpMTFRYWJhiY2N1//336/Tp02779e7dW5MnT9bOnTs1YsQIhYWFqW/fvvrDH/7g1p/p06dLksaPH6+AgIAG93r+5S9/0ZgxY3TNNdcoIiJCt99+uz7++OMGP5dNmzZp8ODBCgsL0+DBg7Vx48Yr/SpsP7zftf6e0w0bNmjx4sXq3r27IiIidNddd6miokI1NTWaP3++YmJi1KFDB2VkZKimpsbtnGvWrNGECRMUExOj0NBQDRo0SCtWrGhwbU9/d5JUXl6u+fPnKyEhQaGhobr22mv11FNPyeVyefxe0TqKioo0btw4DRo0SEOGDNErr7zS2l1CG0XG+F/G/FBtba0WLlyoYcOGKSoqStdcc43GjBmjd99995LH/OY3v1GvXr0UHh6usWPH6sCBAw32OXjwoO666y517txZYWFhGj58uN54441m9xP+adq0aerUqZPuuuuu1u4KMxWt7f3339euXbt0zz33qEePHjp69KhWrFihcePG6ZNPPlH79u2bfM7HHntM//M//6MpU6YoNTVVH374oVJTU3X27NlG93/ooYcUFxenxYsXa8+ePXruuefUsWNH7dq1Sz179tSTTz6pzZs36+mnn9bgwYN177332sfef//9ys3NVUZGhh5++GEdOXJEy5Yt0wcffKC//e1vateunb3v4cOHddddd+m+++5Tenq6Vq9erdmzZ2vYsGFKTEzUrbfeqocffli/+93v9N///d+6/vrrJcn+3xdeeEHp6elKTU3VU089pW+//VYrVqzQ6NGj9cEHH9gL5N5++23deeedGjRokHJycnTq1CllZGSoR48eTf5ZXiwnJ0fh4eFasGCBDh8+rGeffVbt2rVTYGCgTp8+rezsbO3Zs0e5ubnq06ePFi5caB+7YsUKJSYm6o477lBwcLD+/Oc/68EHH5TL5VJmZmaTf3fffvutxo4dq6+++kr333+/evbsqV27dumxxx5TcXGxli5d6tV7RcsKDg7W0qVLlZSUpJKSEg0bNkw/+tGPdM0117R219DGkDH+nzGVlZX63//9X82cOVNz587VmTNn9Pzzzys1NVV79+5VUlKS2/5/+MMfdObMGWVmZurs2bP67W9/qwkTJuijjz5SbGysJOnjjz/WqFGj1L17dy1YsEDXXHONNmzYoKlTp+pPf/qTpk2b1qy+wv/89Kc/1Zw5c7R27drW7opkoVV9++23Ddp2795tSbL+8Ic/2G2LFi2yGvt1rVmzxpJkHTlyxLIsyyopKbGCg4OtqVOnuu2XnZ1tSbLS09MbHJuammq5XC67feTIkVZAQID1H//xH3bb+fPnrR49elhjx4612/7v//7PkmS99NJLbtfasmVLg/ZevXpZkqwdO3bYbSdOnLBCQ0Ot//zP/7TbXnnlFUuS9e6777qd88yZM1bHjh2tuXPnurWXlJRYUVFRbu1JSUlWt27drPLycrvt7bfftiRZvXr1sq5k7Nixbu/z3XfftSRZgwcPtmpra+32mTNnWgEBAVZaWprb8SNHjmxwncZ+z6mpqVbfvn3d3ounv7snnnjCuuaaa6zPP//cbd8FCxZYQUFB1rFjx674PuE/hgwZwu8MLYKM8f+MOX/+vFVTU+O2z+nTp63Y2Fhrzpw5dtuRI0csSVZ4eLh1/Phxu/3vf/+7Jcn62c9+ZrdNnDjRuuGGG6yzZ8/abS6Xy7rlllus6667zm6rz7cf/jxglnfffde68847W7sbFrc/tbLw8HD79blz53Tq1Clde+216tixo/bv39/k8+Xl5en8+fN68MEH3dofeuihSx5z3333uU17Jycny7Is3XfffXZbUFCQhg8fri+++MJue+WVVxQVFaXbbrtNZWVl9jZs2DB16NChwdTtoEGDNGbMGPvr6OhoDRgwwO2cl7J161aVl5dr5syZbtcKCgpScnKyfa3i4mIVFBQoPT1dUVFR9vG33XabBg0adMXrXM69997rNipW/3OaM2eO237JyckqKirS+fPn7baLf88VFRUqKyvT2LFj9cUXX6iiokJS0353r7zyisaMGaNOnTq5/TxSUlJUV1enHTt2ePVer2Y7duzQlClTFB8fr4CAAG3atKnR/ZYvX67evXsrLCxMycnJ2rt3b7Oul5+fr7q6OiUkJHjRa6BxZIz/Z0xQUJC9ls/lcumbb77R+fPnNXz48EZ/R1OnTlX37t3tr0eMGKHk5GRt3rxZkvTNN9/onXfe0d13360zZ87Y7+XUqVNKTU3VoUOH9NVXXzWrr/Ccr7PEH3D7Uyv77rvvlJOTozVr1uirr75yu5+0/h+bTfHll19Kkq699lq39s6dO6tTp06NHtOzZ0+3r+s/KH/4j5yoqCi3+1gPHTqkiooKxcTENHreEydOXPY6ktSpU6cG98Y25tChQ5KkCRMmNPr9yMhISRfe/3XXXddgnwEDBjQrROs15efkcrlUUVGhLl26SJL+9re/adGiRdq9e7e+/fZbt/0rKioUFRXVpN/doUOH9I9//EPR0dGN9vWHP3t8/zsYMWKEW2Eoff80mC5duti3DVRXV2vo0KGaM2eOfvzjHzd6rvXr1ysrK0srV65UcnKyli5dqtTUVH322Wf2fw9JSUluhWW9t99+W/Hx8ZK+D/97771Xq1atcvKtAjYyxoyMWbt2rZ555hkdPHhQ586ds9v79OnTYN/Grt2/f39t2LBB0ve3gVmWpccff1yPP/54o9c7ceKEW2ECz/ljlvgLiopW9tBDD2nNmjWaP3++Ro4cqaioKAUEBOiee+5xW3Db2AI6Saqrq/O6D0FBQR63XxxILpdLMTExeumllxo9/of/4L3UdawfLMxrTP3P4oUXXlBcXFyD7wcHt/z/lZvyc5IuvK/CwkJNnDhRAwcO1JIlS5SQkKCQkBBt3rxZv/nNb5q1sNrlcum2227Tz3/+80a/379//yafsy2rX7ty3XXXad26dfbv7LPPPtOECROUlZVl/yzT0tKUlpZ22fMtWbJEc+fOVUZGhiRp5cqVeuutt7R69WotWLBAklRQUHDZc9TU1Gjq1KlasGCBbrnlFi/fIdA4Msb/M+bFF1/U7NmzNXXqVD366KOKiYlRUFCQcnJyVFhY2OTz1b+XRx55RKmpqY3u88OiEJ7xxyzxJxQVrezVV19Venq6nnnmGbvt7NmzKi8vd9uvfgSovLxcHTt2tNvrR03q9erVS9L3IxUXj3CcOnXKo9GapujXr5+2bdumUaNGuU2xe+NSwdavXz9JUkxMjFJSUi55fP37rx91uthnn33mQA+b7s9//rNqamr0xhtvuI2k/XDqvim/u379+qmqquqyPwtcEBgYqM2bN+vWW2/VvffeqxdeeEFHjhzRhAkTNHXq1EsWZ42pra1Vfn6+HnvsMbfzp6SkaPfu3R6dw7IszZ49WxMmTNBPfvKTJr8fwFNkjDt/zJhXX31Vffv21WuvvebWv0WLFjW6f2PX/vzzz+2F5H379pUktWvXjoxwmL9lib9hTUUrCwoKajCK8uyzzzYYHar/wLv4Xvnq6uoGq/0nTpyo4ODgBo8rXbZsmZPdliTdfffdqqur0xNPPNHge+fPn28QWp6of/rND49NTU1VZGSknnzySbep4XonT56UJHXr1k1JSUlau3at29T+1q1b9cknnzS5P06oH8n44W0Ha9ascduvKb+7u+++W7t379Zf//rXBt8rLy9vdKr0ahcfH6933nlHO3fu1L/8y79owoQJSklJafTRvpdTVlamuro6e4q7XmxsrEpKSjw6x9/+9jetX79emzZtUlJSkpKSkvTRRx81qR+AJ8gYd/6YMY1lxN///vdL/sNy06ZNbmsi9u7dq7///e/2qHhMTIzGjRun3//+9youLr7ke0Hz+FOWSFJKSoqmT5+uzZs3q0ePHq1akDBT0comT56sF154QVFRURo0aJB2796tbdu22ffi15s0aZJ69uyp++67T48++qiCgoK0evVqRUdH69ixY/Z+sbGx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "params_augment = {\n", - " \"add_bkg\":False, \n", - " \"bkg_weight\":[0.01, 0.05], # background intensity scaling\n", - " \"bkg_q\":[0.01,0.1], # background cutoff offset\n", - " \"add_shot\":False, \n", - " \"e_dose\":[1e4, 1e5], # total electron dose __per diffraction pattern__\n", - " \"add_shift\":True,\n", - " \"xshift\":[0,10], \n", - " \"yshift\":[0,10], \n", - " \"add_ellipticity\":True,\n", - " \"ellipticity_scale\":[0., 0.15], # exx, eyy, and exy will be chosen from a normal distribution with this value as sigma\n", - " \"add_ellipticity_to_label\":True,\n", - " \"add_salt_and_pepper\":False,\n", - " \"salt_and_pepper\":[0, 5e-4], # fraction of image to be (randomly) salt/peppered. currently has salt_v_pepper ratio = 1\n", - " \"add_scale\": False,\n", - " \"scale_factor\": [0.9,1.1], # set scale factor min to be 1 for magnification only \n", - " \"add_blur\": False, \n", - " \"blur_sigma\": [0, 1.5], # blur sigma in pixels \n", - " \"add_flipshift\": True,\n", - " \"free_rotation\": True, # if False, will lock rotations to 90 degree increments\n", - " \"rotation_range\": [-180, 180],\n", - " \"log_file\":\"../data/dp_augment.log\",\n", - " # \"rng\":42, # None -> random 128 bit seed, either way will be recorded in the log\n", - "}\n", - "\n", - "dp_aug = DPAugmentor(**params_augment, device='gpu') # device = \"gpu\" or \"cpu\"\n", - "dp_aug.print_params()\n", - "\n", - "im = dset[0,0].array \n", - "im[:20,:20] = im.max()\n", - "im[-10:,-10:] = im.max()/2\n", - "label =( im > im.mean()/5).astype(np.float32) # example classification labels\n", - "\n", - "show_2d([im, label], cbar=True, upper_quantile=0.99, title=[\"input image\", \"input label\"])\n", - "\n", - "aug_im, aug_label = dp_aug.augment(im, label=label)\n", - "\n", - "show_2d([aug_im, aug_label], cbar=True, upper_quantile=0.99, title=[\"augmented image\", \"augmented label\"] )\n" + "label_1ch = (dp > dp.mean()).astype(np.float32)\n", + "\n", + "# Strong ellipticity so the effect is clearly visible\n", + "aug_ell_on = DPAugmentor(add_ellipticity=True, ellipticity_scale=0.12,\n", + " add_ellipticity_to_label=True, rng=5)\n", + "dp_ell_on, label_ell_on = aug_ell_on.augment(dp, label=label_1ch)\n", + "print(f\"exx={aug_ell_on.exx:.3f}, eyy={aug_ell_on.eyy:.3f}, exy={aug_ell_on.exy:.3f}\")\n", + "\n", + "aug_ell_off = DPAugmentor(add_ellipticity=True, ellipticity_scale=0.12,\n", + " add_ellipticity_to_label=False, rng=5)\n", + "dp_ell_off, label_ell_off = aug_ell_off.augment(dp, label=label_1ch)\n", + "\n", + "show_2d([dp_ell_on, label_ell_on, dp_ell_off, label_ell_off],\n", + " title=[\"DP (ell→label=True)\", \"Label (distorted)\",\n", + " \"DP (ell→label=False)\", \"Label (undistorted)\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Signal Degradation\n", + "\n", + "These augmentations simulate physical noise sources and detector artifacts. They are applied after the geometric transforms.\n", + "\n", + "### 2a. Inelastic Background (`add_bkg`)\n", + "\n", + "Adds a plasmon scattering background with form factor `1 / (q² + q₀²)`, optionally convolved with the probe function.\n", + "\n", + "- `bkg_weight`: fraction of total intensity contributed by the background \n", + "- `bkg_q`: `q₀` parameter controlling the fall-off; smaller → more peaked (centrally concentrated) \n", + "- `probe`: if provided, the background is convolved with the probe, spreading it with the probe shape \n", + "\n", + "When `add_ellipticity=True` the form factor is evaluated in elliptically-transformed q-space so the background matches the distorted pattern geometry." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "aug_bkg_np = DPAugmentor(add_bkg=True, bkg_weight=0.15, bkg_q=0.05, rng=7)\n", + "dp_bkg_np = aug_bkg_np.augment(dp) # no probe\n", + "\n", + "aug_bkg_p = DPAugmentor(add_bkg=True, bkg_weight=0.15, bkg_q=0.05, rng=7)\n", + "dp_bkg_p = aug_bkg_p.augment(dp, probe=probe) # with probe\n", + "\n", + "aug_bkg_ell = DPAugmentor(add_bkg=True, bkg_weight=0.15, bkg_q=0.05,\n", + " add_ellipticity=True, ellipticity_scale=0.12, rng=8)\n", + "dp_bkg_ell = aug_bkg_ell.augment(dp, probe=probe) # ellipticity-aware\n", + "print(f\"Ellipticity: exx={aug_bkg_ell.exx:.3f}, eyy={aug_bkg_ell.eyy:.3f}, exy={aug_bkg_ell.exy:.3f}\")\n", + "\n", + "show_2d([dp, dp_bkg_np, dp_bkg_p, dp_bkg_ell],\n", + " title=[\"Original\", \"Background (no probe)\", \"Background + probe\",\n", + " \"Background + probe + ellip.\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2b. Shot Noise (`add_shot`)\n", + "\n", + "Applies Poisson noise scaled by `e_dose` (electrons per diffraction pattern). The image is normalised to a probability distribution, sampled with `e_dose` electrons, and rescaled. Lower dose → more granular noise.\n", + "\n", + "Typical ranges: \n", + "- Fast scan / low dose: `1e3–1e4` \n", + "- Standard: `1e5–1e6` \n", + "- High dose: `1e7+`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Augmentation summary:\n", - ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", - "Inelastic background: False\n", - "Shot noise: False\n", - "Image shift: True\n", - "\t(x,y): (7.62, -2.35)\n", - "Elliptic scaling: True\n", - "\t(exx,eyy,exy): (0.96,1.04,0.13)\n", - "Scaling: False\n", - "Flip/rotation: True\n", - "\tFlip: H=True, V=True, Rot: -7.9°\n", - "Salt & pepper: False\n", - "Gaussian blur: False\n", - "Random seed: None\n", - "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n" - ] - }, - { - "data": { - "text/plain": [ - "(
,\n", - " array([,\n", - " ], dtype=object))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAFtCAYAAABx80ePAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPJpJREFUeJzt3X9UVPed//HXgGGICWAiv6SiqIlaNUKKkWPURCPKoYmttrUstQ1i1lgDm6ZT25qeLWJ/hKTbZe0GKo1bwDbJijbRpIlLq9hojXqMGLux8SfVqImg2AiB/MDCfP/Il9lM+OFw5zogn+fjnHua+fC5936G6rx838/93HG43W63AAAAAMCioN4eAAAAAIBrG0UFAAAAAL9QVAAAAADwC0UFAAAAAL9QVAAAAADwC0UFAAAAAL9QVAAAAADwC0UFAAAAAL9QVAAAAADwC0VFP1ZeXi6Hw6FTp0719lAsyc/Pl8Ph6O1hAIDRTM6ShIQE3XfffbaOx+FwKD8/39ZjAn0BRQUC5s0331R+fv41G0wAgN5HlgB9E0VFP/aNb3xDH3zwgYYPH97bQ5H0cRCsWrXK5yD413/9V33wwQdXd1AAgG5d61kCIDAG9PYAcPUEBwcrODi4t4dh2YABAzRgAH9EAaA3XetZAiAwmKnoxzq7D7b9/tBdu3Zp8uTJCg0N1ciRI/Wb3/ym03137typpUuXavDgwQoPD9f999+vd99916tvV/eHJiQkaNGiRZ7jLViwQJI0c+ZMORwOORwOvfLKK12Ov7P7YB0Oh3Jzc7Vx40aNGzdO119/vaZMmaI33nhDkvSrX/1Kt9xyi0JDQzVjxowOV7L+/Oc/a8GCBRo2bJicTqfi4+P17W9/u9MZkfZzhIaGasKECdq0aZMWLVqkhIQEr35tbW1avXq1xo8fr9DQUMXExGjp0qUdfk8wy5kzZzRjxgyNGzdOEydO1MaNG3t7SIAl13qWdKasrEz33HOPoqOj5XQ6NW7cOK1Zs6bL/n/84x+VlJSk0NBQjRs3Ts8//3yHPpcuXdIjjzyi+Ph4OZ1O3XLLLXriiSfU1tbWo7EB1youAxvoxIkT+spXvqIHHnhAWVlZKi0t1aJFi5ScnKzx48d79c3NzdWgQYOUn5+vo0ePas2aNXrrrbf0yiuv9Gjh21133aWHH35Y//mf/6kf/OAH+uxnPytJnv/tiT//+c968cUXlZOTI0kqKCjQfffdp+9973v65S9/qYceekjvvvuufvazn2nx4sXavn27Z9+NGzfq/fff17JlyzR48GDt27dPTz75pM6ePev1j76XX35ZGRkZuu2221RQUKB3331XDzzwgD7zmc90GM/SpUtVXl6u7OxsPfzwwzp58qSKior0+uuv69VXX9V1113X4/eIa9+AAQO0evVqJSUlqba2VsnJyfr85z+vG264obeHBtjiWs6SNWvWaPz48frCF76gAQMG6Pe//70eeughtbW1ebKl3fHjx5WRkaFvfvObysrKUllZmRYsWKDKykrNnj1bkvT+++/r7rvv1ttvv62lS5dq2LBh2r17tx599FGdO3dOq1ev7tH4gGuSG/1WWVmZW5L75MmTnrbhw4e7Jbl37tzpaTt//rzb6XS6v/Od73TYNzk52d3S0uJp/9nPfuaW5H7hhRc8bZLcK1eu7HD+4cOHu7OysjyvN27c6Jbk/tOf/uTT+FeuXOn+9B9RSW6n0+n1nn71q1+5JbljY2PdjY2NnvZHH320w/t///33O5ynoKDA7XA43G+99Zan7bbbbnMPHTrU/d5773naXnnlFbck9/Dhwz1tf/7zn92S3M8884zXMSsrKztth7kmTpzoPn36dG8PA+ix/pglnWVBWlqae+TIkR3OLcn93HPPedoaGhrcQ4YMcd9+++2eth//+MfuG264wX3s2DGv/VesWOEODg72+rvf1fsErnXc/mSgcePGafr06Z7XUVFRGjNmjP72t7916Pvggw96XWlftmyZBgwYoC1btgRkrJ2ZNWuW1y1IKSkpkqQvf/nLCgsL69D+yfd1/fXXe/67ublZ9fX1uvPOO+V2u/X6669Lkt555x298cYbuv/++3XjjTd6+t9999267bbbvMayceNGRUREaPbs2aqvr/dsycnJuvHGG/WnP/3JvjcO2+zcuVNz585VXFycHA6HNm/e3Gm/4uJiJSQkKDQ0VCkpKdq3b5+l81VXV6u1tVXx8fF+jBroW67lLPlkFjQ0NKi+vl533323/va3v6mhocGrb1xcnObPn+953X771uuvv67a2lpJH2fB9OnTddNNN3llQWpqqlpbW7Vz587AvDGgF3H7k4GGDRvWoe2mm27qdA3Arbfe6vX6xhtv1JAhQ3r1qRufHn9ERIQkdfgHW3v7J9/X6dOnlZeXpxdffLHD+20PkrfeekuSdMstt3Q49y233KIDBw54Xh8/flwNDQ2Kjo7udKznz5/36T3BHq+++qomT57c4ZazN998U4MHD1ZMTIykjwvKxMRELV68WF/60pc6PVZFRYVcLpdKSkqUkpKi1atXKy0tTUePHvX8/52UlKR//OMfHfb94x//qLi4OEnS3//+d91///1au3atnW8V6HXXcpa8+uqrWrlypfbs2aP333/f62cNDQ2e/JA+/tz/9C1ao0ePliSdOnVKsbGxOn78uP73f/9XUVFRnZ6PLIAJKCoM1NVTPNxut63naW1ttfV47boa/5XeV2trq2bPnq2///3v+v73v6+xY8fqhhtu0Ntvv61FixZZWkzX1tam6OhoPfPMM53+vKuAgf3a74W+9dZbtX79es+fh6NHj+qee+6Ry+XS9773PUlSenq60tPTuz1eYWGhlixZouzsbElSSUmJXn75ZZWWlmrFihWSpIMHD3Z7jI8++kjz5s3TihUrdOedd/r5DoG+5VrNkpqaGs2aNUtjx45VYWGh4uPjFRISoi1btug//uM/LGfB7NmzPZ8xn9ZehAD9GUUFunX8+HHNnDnT87qpqUnnzp3T5z//eU/bTTfdpEuXLnnt19LSonPnznm19fa3Y7/xxhs6duyY1q1bp/vvv9/TvnXrVq9+7c9iP3HiRIdjfLpt1KhR2rZtm6ZOneo1nY7ACwoK0pYtW3TXXXfp/vvv129/+1udPHlS99xzj+bNm9dl2HempaVF1dXVevTRR72On5qaqj179vh0DLfbrUWLFumee+7RN77xjR6/H6A/6UtZ8vvf/14fffSRXnzxRa/Zlq5uVz1x4oTcbrfXeY8dOyZJnltxR40apaamJqWmpvo1NuBaxpoKdOupp57S5cuXPa/XrFmjf/zjH15XeUeNGtXhftGnnnqqw9Wl9qfefDo0AqX9qtonr6K53W794he/8OoXFxenCRMm6De/+Y2ampo87Tt27PA8urbdV7/6VbW2turHP/5xh/P94x//6LX3aqq4uDht375du3bt0te+9jXdc889Sk1N7fZRkZ2pr69Xa2ur53apdjExMZ57qK/k1VdfVUVFhTZv3qykpCQlJSV1+PMDmKIvZUlnWdDQ0KCysrJO+7/zzjvatGmT53VjY6N+85vfKCkpSbGxsZI+zoI9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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAFtCAYAAABx80ePAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAARiNJREFUeJzt3Xt0FeW9//FPsiEJQhIuuREJBFSwgCRtkBQBQYikqdJiK0WOR0JwUQ8mWpujPfg7SxJOW1OPSmlNCpUjBG9H0Aq1XlCICgcJIsFYUVCIIKDsQBASCEoge35/uDKyyYWd2cPOZd6vtWaZPHlm5tmJ7o/feeaZHWQYhiEAAAAAsCi4rQcAAAAAoGOjqAAAAADgF4oKAAAAAH6hqAAAAADgF4oKAAAAAH6hqAAAAADgF4oKAAAAAH6hqAAAAADgF4oKAAAAAH6hqECnNmvWLCUmJl6w34QJEzRhwoSLPh4AQMdzsbNk3759CgoK0iOPPNL6wTXj7bffVlBQkN5++23bjgm0hKICbe7jjz9Wfn6+9u3b19ZDAQB0UGQJ0LYoKtDmPv74Yy1YsKBNg+CNN97QG2+80WbnBwD4pz1kCeBkXdp6AEB7EBIS0tZDAAAA6LCYqWgDn3/+ue68804NGTJE3bp1U58+fTRt2rRGV1fy8/MVFBTUaP/i4mIFBQV59fd4PMrPz1d8fLwuueQSXXfddfr444+VmJioWbNmNdp306ZNuvvuuxUdHa2ePXvqjjvuUF1dnY4fP66ZM2eqV69e6tWrl37zm9/IMAyv83s8Hi1atEjDhg1TWFiYYmNjdccdd+jYsWNe/RITE3XjjTdq06ZNGjVqlMLCwjRo0CA9+eSTXuOZNm2aJOm6665TUFBQo3tAX3vtNY0bN07du3dXeHi4brjhBn300UeNfi9r1qzR8OHDFRYWpuHDh2v16tUX+lOYzr8PtuFe1FWrVmnBggW69NJLFR4erptvvlnV1dU6ffq07rnnHsXExKhHjx7KysrS6dOnvY65fPlyTZw4UTExMQoNDdXQoUO1ePHiRuf29W8nScePH9c999yjhIQEhYaG6vLLL9dDDz0kj8fj82tFYBw4cEATJkzQ0KFDNWLECD3//PNtPSR0MmRJ+8uS89XV1Wn+/PlKSUlRZGSkunfvrnHjxumtt95qdp8//vGPGjBggLp166bx48drx44djfrs2rVLN998s3r37q2wsDCNHDlSL730kuVxAnZgpqINvPfee9q8ebNuueUW9evXT/v27dPixYs1YcIEffzxx7rkkktafcz7779f//3f/60pU6YoPT1dH3zwgdLT0/XNN9802f+uu+5SXFycFixYoC1btujxxx9Xz549tXnzZvXv318PPvigXn31VT388MMaPny4Zs6cae57xx13qLi4WFlZWbr77ru1d+9eFRYW6v3339c777yjrl27mn337Nmjm2++WbfffrsyMzO1bNkyzZo1SykpKRo2bJiuvfZa3X333frzn/+s//f//p++973vSZL5z6eeekqZmZlKT0/XQw89pFOnTmnx4sUaO3as3n//fXPh3BtvvKGf//znGjp0qAoKCnT06FFlZWWpX79+rf5dnqugoEDdunXTvHnztGfPHj322GPq2rWrgoODdezYMeXn52vLli0qLi7WwIEDNX/+fHPfxYsXa9iwYfrJT36iLl266B//+IfuvPNOeTweZWdnt/pvd+rUKY0fP15ffPGF7rjjDvXv31+bN2/W/fffr0OHDmnRokV+vVbYq0uXLlq0aJGSk5PldruVkpKiH//4x+revXtbDw2dBFnS/rOkpqZG//M//6MZM2Zozpw5OnHihJ544gmlp6dr69atSk5O9ur/5JNP6sSJE8rOztY333yjP/3pT5o4caI+/PBDxcbGSpI++ugjjRkzRpdeeqnmzZun7t27a9WqVZo6dar+9re/6aabbrI0VsBvBgLu1KlTjdpKS0sNScaTTz5ptuXl5RlN/YmWL19uSDL27t1rGIZhuN1uo0uXLsbUqVO9+uXn5xuSjMzMzEb7pqenGx6Px2wfPXq0ERQUZPzbv/2b2Xb27FmjX79+xvjx4822//u//zMkGc8884zXudauXduofcCAAYYkY+PGjWbb4cOHjdDQUOPf//3fzbbnn3/ekGS89dZbXsc8ceKE0bNnT2POnDle7W6324iMjPRqT05ONvr27WscP37cbHvjjTcMScaAAQOMCxk/frzX63zrrbcMScbw4cONuro6s33GjBlGUFCQkZGR4bX/6NGjG52nqb9zenq6MWjQIK/X4uvf7re//a3RvXt349NPP/XqO2/ePMPlchn79++/4OtE2xkxYgR/I9iKLGn/WXL27Fnj9OnTXn2OHTtmxMbGGrNnzzbb9u7da0gyunXrZhw8eNBsf/fddw1Jxq9//WuzbdKkScZVV11lfPPNN2abx+MxrrnmGuOKK64w2xpy7PzfB3CxcPtTG+jWrZv59ZkzZ3T06FFdfvnl6tmzp7Zv397q45WUlOjs2bO68847vdrvuuuuZve5/fbbvabDU1NTZRiGbr/9drPN5XJp5MiR+uyzz8y2559/XpGRkbr++utVVVVlbikpKerRo0ejKd2hQ4dq3Lhx5vfR0dEaMmSI1zGbs27dOh0/flwzZszwOpfL5VJqaqp5rkOHDqm8vFyZmZmKjIw097/++us1dOjQC56nJTNnzvS6Wtbwe5o9e7ZXv9TUVB04cEBnz5412879O1dXV6uqqkrjx4/XZ599purqakmt+9s9//zzGjdunHr16uX1+0hLS1N9fb02btzo12t1ko0bN2rKlCmKj49XUFCQ1qxZ02S/oqIiJSYmKiwsTKmpqdq6daul85WVlam+vl4JCQl+jBrwRpa0/yxxuVzmmj2Px6OvvvpKZ8+e1ciRI5v8G02dOlWXXnqp+f2oUaOUmpqqV199VZL01Vdf6c0339QvfvELnThxwnwtR48eVXp6unbv3q0vvvjC0lgBf3H7Uxv4+uuvVVBQoOXLl+uLL77wus+04X82W+Pzzz+XJF1++eVe7b1791avXr2a3Kd///5e3ze8gZ7/Pz2RkZFe97fu3r1b1dXViomJafK4hw8fbvE8ktSrV69G98w2Zffu3ZKkiRMnNvnziIgISd+9/iuuuKJRnyFDhlgK1wat+T15PB5VV1erT58+kqR33nlHeXl5Ki0t1alTp7z6V1dXKzIyslV/u927d+uf//ynoqOjmxzr+b97J3rnnXc0atQor0JQ+vapMH369DFvH6itrVVSUpJmz56tn/3sZ00ea+XKlcrNzdWSJUuUmpqqRYsWKT09XZ988on5739ycrJXIdngjTfeUHx8vKRv/ydg5syZWrp0qZ0vFSBLOkiWrFixQo8++qh27dqlM2fOmO0DBw5s1Lepcw8ePFirVq2S9O1tYIZh6IEHHtADDzzQ5PkOHz7sVZgAgUJR0QbuuusuLV++XPfcc49Gjx6tyMhIBQUF6ZZbbvFacNvUwjpJqq+v93sMLpfL5/Zzg8rj8SgmJkbPPPNMk/uf/z+8zZ3HOG/BXlMafhdPPfWU4uLiGv28S5eL/69va35P0nevq6KiQpMmTdKVV16phQsXKiEhQSEhIXr11Vf1xz/+0dLCao/Ho+uvv16/+c1vmvz54MGDW33MzqRhrcoVV1yh5557zvwbffLJJ5o4caJyc3PN311GRoYyMjJaPN7ChQs1Z84cZWVlSZKWLFmiV155RcuWLdO8efMkSeXl5S0e4/Tp05o6darmzZuna665xs9XCHgjS9p/ljz99NOaNWuWpk6dqvvuu08xMTFyuVwqKChQRUVFq4/X8FruvfdepaenN9nn/KIQCBSKijbwwgsvKDMzU48++qjZ9s033+j48eNe/RquDB0/flw9e/Y02xuupjQYMGCApG+vYJx75ePo0aM+XcVpjcsuu0zr16/XmDFjvKbe/dFc4F122WWSpJiYGKWlpTW7f8Prb7gada5PPvnEhhG23j/+8Q+dPn1aL730ktcVtvOn9Fvzt7vssst08uTJFn8XThYcHKxXX31V1157rWbOnKmnnnpKe/fu1cSJEzV16tRmi7Gm1NXVqaysTPfff7/X8dPS0lRaWurTMQzD0KxZszRx4kTddtttrX49wIWQJd7aY5a88MILGjRokF588UWv8eXl5TXZv6lzf/rpp+ZC8kGDBkmSunbtShag3WFNRRtwuVyNrq489thjja4aNbwRnnuvfG1trVasWOHVb9KkSerSpUujx5UWFhbaOWxJ0i9+8QvV19frt7/9baOfnT17tlGY+aLhaTjn75uenq6IiAg9+OCDXlPGDY4cOSJJ6tu3r5KTk7VixQqvKf9169bp448/bvV47NBwVe382xGWL1/u1a81f7tf/OIXKi0t1euvv97oZ8ePH2/yNhyniY+P15tvvqlNmzbpX/7lXzRx4kSlpaU1+SjfllRVVam+vt68XapBbGys3G63T8d45513tHLlSq1Zs0bJyclKTk7Whx9+2KpxAC0hS7y1xyxpKgvefffdZi9OrFmzxmtNxNatW/Xuu++aM6sxMTGaMGGC/vrXv+rQoUPNvhagLTBT0QZuvPFGPfXUU4qMjNTQoUNVWlqq9evXm/fiN5g8ebL69++v22+/Xffdd59cLpeWLVum6Oho7d+/3+wXGxurX/3qV3r00Uf1k5/8RD/60Y/0wQcf6LXXXlNUVFSzV2+sGD9+vO644w4VFBSovLxckydPVteuXbV79249//zz+tOf/qSbb765VcdM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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "params_augment = {\n", - " \"add_bkg\":False, \n", - " \"bkg_weight\":[0.01, 0.05], # background intensity scaling\n", - " \"bkg_q\":[0.01,0.1], # background cutoff offset\n", - " \"add_shot\":False, \n", - " \"e_dose\":[1e4, 1e5], # total electron dose __per diffraction pattern__\n", - " \"add_shift\":True,\n", - " \"xshift\":[0,10], \n", - " \"yshift\":[0,10], \n", - " \"add_ellipticity\":True,\n", - " \"ellipticity_scale\":[0., 0.15], # exx, eyy, and exy will be chosen from a normal distribution with this value as sigma\n", - " \"add_ellipticity_to_label\":False,\n", - " \"add_salt_and_pepper\":False,\n", - " \"salt_and_pepper\":[0, 5e-4], # fraction of image to be (randomly) salt/peppered. currently has salt_v_pepper ratio = 1\n", - " \"add_scale\": False,\n", - " \"scale_factor\": [0.9,1.1], # set scale factor min to be 1 for magnification only \n", - " \"add_blur\": False, \n", - " \"blur_sigma\": [0, 1.5], # blur sigma in pixels \n", - " \"add_flipshift\": True,\n", - " \"free_rotation\": True, # if False, will lock rotations to 90 degree increments\n", - " \"rotation_range\": [-180, 180],\n", - " \"log_file\":\"../data/dp_augment.log\",\n", - " # \"rng\":42, # None -> random 128 bit seed, either way will be recorded in the log\n", - "}\n", - "\n", - "dp_aug = DPAugmentor(**params_augment, device='gpu') # device = \"gpu\" or \"cpu\"\n", - "dp_aug.print_params()\n", - "\n", - "im = dset[0,0].array \n", - "im[:20,:20] = im.max()\n", - "label =( im > im.mean()/5).astype(np.float32) # example classification labels\n", - "\n", - "show_2d([im, label], cbar=True, upper_quantile=0.99, title=[\"input image\", \"input label\"])\n", - "\n", - "aug_im, aug_label = dp_aug.augment(im, label=label)\n", - "\n", - "show_2d([aug_im, aug_label], cbar=True, upper_quantile=0.99, title=[\"augmented image\", \"augmented label\"] )\n" + "aug_s1 = DPAugmentor(add_shot=True, e_dose=1e7, rng=9)\n", + "dp_s1 = aug_s1.augment(dp)\n", + "\n", + "aug_s2 = DPAugmentor(add_shot=True, e_dose=1e5, rng=9)\n", + "dp_s2 = aug_s2.augment(dp)\n", + "\n", + "aug_s3 = DPAugmentor(add_shot=True, e_dose=1e3, rng=9)\n", + "dp_s3 = aug_s3.augment(dp)\n", + "\n", + "show_2d([dp, dp_s1, dp_s2, dp_s3],\n", + " title=[\"Original\", \"e_dose=1e7\", \"e_dose=1e5\", \"e_dose=1e3\"],\n", + " upper_quantile=0.99, cbar=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You can also augment stacks of images at once (but really it's just for looping through them, so it's not any faster or anything, just maybe more convenient)" + "### 2c. Gaussian Noise (`add_gaussian_noise`)\n", + "\n", + "Adds clipped Gaussian noise (values clipped to ≥ 0), simulating detector readout or dark-current noise.\n", + "\n", + "- `gaussian_noise_mu`, `gaussian_noise_std`: when `add_shot=True`, these are multiplied by `e_dose` to scale with the signal level; otherwise they are absolute intensity values.\n", + "\n", + "**Coupled profiles via `gaussian_noise_profiles`:** For more realistic noise modeling, profiles allow correlated `(mu, std)` pairs drawn together with specified weights. Each profile is a dict with `\"weight\"`, `\"mu\"`, and `\"std\"` keys (values can be scalars or `[min, max]` ranges). This overrides `gaussian_noise_mu/std`." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(4, 128, 128)\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e02ccdae20544708ad72da86593cb0d5", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "augmenting: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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fPnyJh9/2GGHafjw4fa4/MY3vqHly5fTsQH8/xEnELaoxQnpYKyQpL59++ob3/iGli1blpMNEaAliBMIG3ECyC7ECYSNOJE5dGwgVK+99pq++OIL/eEPf9A555xjy9etW+d5/40bN6q+vj6u93z16tWSpIEDB0qSjjrqKL3//vs677zz1KZNm/RVHlmpbdu2+r//+z+dc845uuqqq/Too49q3bp1+vrXv65LL73UBpdE7Nu3TxUVFbrzzjvjnn/s2LF66623EnqOESNGaPPmzdq2bZtKSkq0ePHiuGmvQGtHnEDYohYn6uvrdeDAARUVFamurk6vvPKKLr/88qTfF5CriBMIG3ECyC7ECYSNOJE5rLGBUJley4aGBlu2b98+/fd//7fn/b/66is98MADcfd94IEH1LNnTw0bNkySdPnll2vDhg166KGHGj1+9+7dqq+vD/ItIAv169dPr7zyit58803927/9m77+9a9r7Nixmj9/flLPU1NTo/3799sphEbv3r1VVVWV0HO0a9dO9957r8455xydcsopOuaYY3TRRRclVQ8glxEnkAlRihPV1dU6++yzNWTIEJ1xxhm66qqrNGLEiKTqAeQy4gQygTgBZA/iBDKBOJEZzNhAqM466yx17dpVEydO1E033aQ2bdro0UcfjQs4rn79+mnmzJn69NNPNXjwYD355JNavny5HnzwQZu37t///d/11FNP6Xvf+55effVVjRo1Svv379fKlSv11FNP6c9//rOGDx8e5ttEBA0YMECPPvqozj33XB155JH69a9/nbGRFolMPQRaK+IEMiUqceLII4/U+++/H/rrAtmCOIFMIU4A2YE4gUwhToSPGRsIVffu3fXcc8+pb9+++vGPf6xf/OIXOv/88/Xzn//c8/5du3bV//3f/2np0qX6wQ9+oMrKSs2dO1fXXnutvU/btm31zDPP6L777tMHH3yg2267TT/96U+1ZMkS3XzzzXbRJ7Ru1dXVuu6663TxxRdr165duvXWW5N+jh49eigvL0/V1dWNnrtPnz5BVRVo1YgTyBTiBJAdiBPIFOIEkB2IE8gU4kT42jQ01WUJADmipqZGo0eP1jHHHKOnn35aq1ev1ujRo3XVVVfpF7/4hedj2rRpo7KyMl166aVx5aeffrpGjhypOXPmSDq4SNSAAQM0ZcoUu4gTACC7ECcAAH6IEwAAP8SJzCAVFYCcduDAAY0fP15HHHGEnnzySbVr104nnHCCXnrpJX3961/XYYcdZnvR6+rqtGbNGvvYdevWafny5erWrZsGDBggSSotLdXEiRM1fPhwjRw5UrNnz1Z9fb0mTZqUkfcHAEgNcQIA4Ic4AQDwQ5zIoAYAyHF/+ctfGnbv3t2ofNmyZQ2VlZX2/6+++mqDpEa3iRMnxj1uzpw5DQMGDGjIz89vGDlyZMPbb7+d7rcAAEijXI0Tr7/+esNFF13U0Ldv3wZJDWVlZQk9bv369Q0TJkxo6NatW0NhYWHDSSed1LBkyZL0VhYAIixX4wQAIBjEicwgFRUAAACQg1544QX99a9/1bBhw/Stb33Lc6r7obZt26ZTTz1VY8aM0fe//3317NlTH3/8sY466igdddRR4VQcAAAAQMYtXrxYs2bNUkVFhTZt2pRQe0KSNmzYoNtvv10vvPCCdu3apaOPPloLFy7U8OHDA60fqagAAACAHDR+/HiNHz8+qcfMnDlT/fv318KFC23ZoEGDgq4aAAAAgIirr6/XkCFDdM011+hb3/pWQo/Ztm2bRo0apTFjxuiFF16wA6W6du0aeP3o2AAAAAAgSfrjH/+ocePG6bLLLtPrr7+uww47TDfccIOuvfbaTFcNAAAAQIiiPlAqoY6NAwcOaOPGjSoqKlKbNm3SUhEAiLKGhgbt3LlT/fr1U9u2bT3vs2fPHu3bt6/Fr5Gfn6/CwsIWPz6TiBMAWrsw4kRDQ0Ojc2xBQYEKCgpa/JyH+uSTTzR//nyVlpbqRz/6kZYsWaKbbrpJ+fn5mjhxYouflzgBoLWjPeGPOAGgtcuVOBHqQKlEFuKorKz0XNiEGzdu3FrbzV30ybV79+6GPn36pPTcffr08VxsKhsQJ7hx48bt4C2dcaJz586NyqZNm5bQeVpKbPHw9u3bN5x55plxZTfeeGPDGWeckdDrNIU4wY0bN24Hb7QnvBEnuHHjxu3gLd1xorq6umHHjh32tmfPnoTO01Ji7YmCgoKGgoKChjvvvLNh2bJlDQ888EBDYWFhw6JFi5IJCwlJaMZGUVFRIncDgJzX1Plw3759qqqq0ueff67i4uKkn7e2tlYDBgzQvn37snKUVVTiRF5eniSpXbtYePMa8fXll19Kkvbv3x9OxXJEfn5+3L9SbF/u3bs3I3UCoibdcaKysjLu8UHO1pCkvn376oQTTogrO/744/X73/8+peeNSpxAdjGjFd2czJ06dZIk7d6925Zt27ZNkvTVV1+FWDsEyb1eO/jbSe6iPeGNOAEAB6U7TvTu3TuufNq0aZo+fXpLqurpwIEDGj58uO69915J0qmnnqoVK1ZowYIFKc0A95JQxwbTAAHgoObOh8XFxS0KMNkuKnHC1MOtj1fdolLfbOC1L5vbv0Brlu44ke44M2rUKK1atSqubPXq1TriiCNSel7OFWgJc9y46RjMtlvG8ZW9vK4tjFzt4KA94Y3vMYBske6Yle44ka0DpbyweDgABKihoaFFAS1XG25hM/vR3Z/mouDAgQON7ofmuRc5ZsRshw4dbNmePXskSVu3bm1UBqCxMONEXV2d1qxZY/+/bt06LV++XN26ddOAAQM0d+5clZWVqby83N7n1ltv1VlnnaV7771Xl19+ud599109+OCDevDBB5N+fSBVZsTiMcccY8tKSkokSTt27LBlZtagW2YQ86PN69otisysYCk2c9Wtc5CzgWlPoDVwf1Tt2LGjJO8fc902BjPEE+fuy6bWapDIYJAsv854V7rPx6nGiWwdKOWl6aMbAJA0E2BacgMA5L4w48TSpUt16qmn6tRTT5UklZaW6tRTT9XUqVMlSTU1NVq7dm3cY0aMGKGysjL97ne/00knnaSf/exnmj17tiZMmJD6mwcANIv2BADAT5hxoq6uTsuXL9fy5cslxQZKff7555KkuXPn6rzzzot7zK233qq3335b9957r9asWaPHH39cDz74oCZPnpzyez8UMzYAIECMsMosM+LEa8aGW+bO3oC/zp072+1u3bpJ8h61uG/fPlvGjA2gaWHGidGjR/s+bvr06Z75dC+66CJddNFFSb8eEAR3FKQZTWhmabjb7ghUd20tg2srBMldX8xse80GZsYGkBh3Brg517vndXM819bW2jJmbCTOPR8wKyM4UZllGGacWLp0qcaMGWP/X1paKkmaOHGiFi1a5DtQ6s4779Rdd92lQYMGpW2gFB0bABAgGiIAAD/ECQCAH+IEAMAPA6ViSEUFAAAAAAAAAACyBjM2ACBAjLCKBlJNpYc5Ttm/qTNpU9z0Kp06dZIUn8qrpqZGEvs8lxAnAH9uKpo+tbQAAJfOSURBVCqT5nDXrl22rKCgQJK0bds2W0Z6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xKEjqwsKCjzXdKipqdH+/fvVu3fvuPLevXtr5cqVnq9xxx13qLa2Vscdd5zy8vK0f/9+3XPPPZowYULS9QUAtAztCQCAH9oTMXRsRETQFyFeaZ2CksrzmXq5093NtltnM809qPeRjRd5zdU5G99Ta8Fn48/dP2a6q3tOMN97dyosixs3z6STuPbaa22Z19TQOXPmSJJ+/vOf27L169enuXYAXKnEif79+8f9f9q0aZo+fXqKNTroqaee0mOPPabHH39cJ554opYvX65bbrlF/fr108SJEwN5jVzlphrZtGmTJGnr1q2N/r53715blqnrBXeh2y5dukiSjj76aFtmFsRds2aNLfvss88kxaca5XonuhYtWiRJuvrqq33v5y5wjGjh+xUt5vPYtWuXLcvPz5cU344x50hS+uSWlnwfM51K2Y3XS5YskRSfnsq0rzlWsxftiYPo2ACAADHCCgDgJ9U4UVlZqeLiYlvuNbpKknr06KG8vDxVV1fHlVdXV6tPnz6ej/nBD36gO+64Q9/+9rclSSeffLI+++wzzZgxg44NAAgJ7QkAgB/aEzGssQEAAABkieLi4rhbUw2R/Px8DRs2TOXl5bbswIEDKi8v15lnnun5mF27djVagDgvL49ZcwAAAECOyKX2BDM2ckwY092S7RV062S23SnwZurmoQd+S6UzDRfQHEZYJWf37t2SpC+//NKWmX1hUtJJpKJKRI8ePSRJt912m+/9TFqKP/3pT7aMVFTN80ql6JU2rbV+l5G4MONEaWmpJk6cqOHDh2vkyJGaPXu26uvrNWnSJEnS3LlzVVZWZhsrF198se655x4NGDBAJ554ot577z3df//9uuaaa5J+7dbMpJty01NF4dxgzl9FRUW27KqrrpIkzZo1q9H9y8rK7PaNN94oSaqqqrJlbpxG5rnHmPm8Fi5caMs6deokSXE/TkThuDQ6dOhgt02KH3OdKMV/n3Id7YnoclMMmus/93eMnTt3Smpdxyu8me9jplNSSbG6cFzmDtoTMXRsAECAaIgAAPyEGSeuuOIKbdmyRVOnTlVVVZWGDh2qF1980S4AWFNTo7Vr19r7z5kzRz/5yU90ww03aPPmzerXr5+uv/56TZ06NenXBgC0TNjtiXnz5mnWrFmqqqrSkCFDNGfOHI0cOdL3MRs2bNDtt9+uF154Qbt27dLRRx+t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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "im = dset[::32, 64].array \n", - "print(im.shape)\n", - "label = im.copy() # example autoencoder labels \n", - "# label =( im > im.mean((-2,-1))[:,None,None]/10).astype(np.float32) # example classification labels\n", + "aug_gn = DPAugmentor(add_gaussian_noise=True,\n", + " gaussian_noise_mu=0.0,\n", + " gaussian_noise_std=[1e-3, 5e-3],\n", + " rng=10)\n", + "dp_gn = aug_gn.augment(dp)\n", + "print(f\"Gaussian noise: mu={aug_gn.gaussian_noise_mu:.2e}, std={aug_gn.gaussian_noise_std:.2e}\")\n", "\n", + "# Coupled profiles: 70% clean, 30% noisy\n", + "aug_prof = DPAugmentor(\n", + " add_gaussian_noise=True,\n", + " gaussian_noise_profiles=[\n", + " {\"weight\": 0.7, \"mu\": 0.0, \"std\": 1e-4},\n", + " {\"weight\": 0.3, \"mu\": [0.0, 5e-4], \"std\": [1e-3, 5e-3]},\n", + " ],\n", + " rng=11,\n", + ")\n", + "dp_prof = aug_prof.augment(dp)\n", + "print(f\"Profiles drew: mu={aug_prof.gaussian_noise_mu:.2e}, std={aug_prof.gaussian_noise_std:.2e}\")\n", + "\n", + "show_2d([dp, dp_gn, dp_prof],\n", + " title=[\"Original\", \"Gaussian noise (range)\", \"Gaussian noise (profiles)\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2d. Salt & Pepper Noise (`add_salt_and_pepper`)\n", "\n", - "show_2d([[i for i in im], [i for i in label]], cbar=True, upper_quantile=0.99, title=[[\"dp\" for _ in im ], [\"label\" for _ in label]])\n", + "Sets a random fraction `salt_and_pepper` of pixels to either the image maximum (salt) or zero (pepper), simulating dead or hot detector pixels.\n", "\n", - "aug_im, aug_label = dp_aug.augment(im, label=label)\n", + "### 2e. Gaussian Blur (`add_blur`)\n", "\n", - "show_2d([[i for i in aug_im], [i for i in aug_label]], cbar=True, upper_quantile=0.99, title=[[\"dp\" for _ in im ], [\"label\" for _ in label]]);\n" + "Applies isotropic Gaussian blur with standard deviation `blur_sigma` pixels. Simulates a defocused or aberrated detector point-spread function." ] }, { @@ -523,20 +336,290 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "aug_sp = DPAugmentor(add_salt_and_pepper=True, salt_and_pepper=5e-3, rng=12)\n", + "dp_sp = aug_sp.augment(dp)\n", + "\n", + "aug_blur = DPAugmentor(add_blur=True, blur_sigma=[0.5, 2.5], rng=13)\n", + "dp_blur = aug_blur.augment(dp)\n", + "print(f\"Blur sigma drawn: {aug_blur.blur_sigma:.2f} px\")\n", + "\n", + "aug_spblur = DPAugmentor(\n", + " add_salt_and_pepper=True, salt_and_pepper=[0, 3e-3],\n", + " add_blur=True, blur_sigma=[0, 1.5],\n", + " rng=14,\n", + ")\n", + "dp_spblur = aug_spblur.augment(dp)\n", + "\n", + "show_2d([dp, dp_sp, dp_blur, dp_spblur],\n", + " title=[\"Original\", \"Salt & pepper\", \"Blur\", \"Salt & pepper + blur\"],\n", + " upper_quantile=0.99, cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Labels\n", + "\n", + "Labels receive the same geometric transforms (flip/rotation, shift, scale, ellipticity) but **not** noise augmentations (shot noise, blur, etc.), since labels represent ground-truth geometry.\n", + "\n", + "Labels must be `float32` arrays. They can be single-channel `(H, W)` or multichannel `(C, H, W)`.\n", + "\n", + "### 3a. Single-channel label\n", + "\n", + "A single `(H, W)` label is warped identically to the DP. Toggle `add_ellipticity_to_label` to control whether the label also receives the elliptical warp (covered in Section 1d; see that section for a side-by-side comparison).\n", + "\n", + "### 3b. Multichannel labels & `apply_background_to_label`\n", + "\n", + "Pass a `(C, H, W)` label array to transform each channel independently. `apply_background_to_label` is a list of booleans (one per channel) that controls whether the inelastic background is also applied to that channel. This is useful when one channel is a copy of the DP itself (e.g. for autoencoder training) and should receive background degradation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Multichannel label: ch0 = DP copy (should get background), ch1 = binary mask\n", + "label_mc = np.stack([\n", + " dp.copy(),\n", + " (dp > dp.mean()).astype(np.float32),\n", + "]).astype(np.float32)\n", + "print(f\"Multichannel label shape: {label_mc.shape}\")\n", + "\n", + "aug_mc = DPAugmentor(\n", + " add_bkg=True, bkg_weight=0.15, bkg_q=0.05,\n", + " apply_background_to_label=[True, False], # background only on ch0\n", + " add_ellipticity=True, ellipticity_scale=0.1,\n", + " add_ellipticity_to_label=True,\n", + " add_flipshift=True, free_rotation=False,\n", + " rng=16,\n", + ")\n", + "dp_mc, label_mc_aug = aug_mc.augment(dp, probe=probe, label=label_mc)\n", + "\n", + "show_2d(\n", + " [dp_mc, label_mc_aug[0], label_mc_aug[1]],\n", + " title=[\"Augmented DP\", \"Label ch0 (bkg applied)\", \"Label ch1 (no bkg)\"],\n", + " upper_quantile=0.99, cbar=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Weighted Parameter Mixtures\n", + "\n", + "Every numeric parameter can be given as a weighted mixture of ranges instead of a single `[min, max]`. This allows sampling from non-uniform or multi-modal distributions.\n", + "\n", + "```python\n", + "# Syntax: list of dicts with \"weight\" and \"value\" keys\n", + "e_dose=[\n", + " {\"weight\": 0.7, \"value\": [1e5, 1e6]}, # 70%: moderate dose\n", + " {\"weight\": 0.3, \"value\": [1e3, 1e4]}, # 30%: low dose\n", + "]\n", + "```\n", + "\n", + "Weights are normalised automatically; only their ratios matter. For Gaussian noise the `gaussian_noise_profiles` parameter couples `mu` and `std` together (Section 2c)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "aug_mix = DPAugmentor(\n", + " add_shot=True,\n", + " e_dose=[\n", + " {\"weight\": 0.7, \"value\": [1e5, 1e6]},\n", + " {\"weight\": 0.3, \"value\": [1e3, 1e4]},\n", + " ],\n", + " add_bkg=True,\n", + " bkg_weight=[\n", + " {\"weight\": 0.5, \"value\": 0.0},\n", + " {\"weight\": 0.5, \"value\": [0.05, 0.2]},\n", + " ],\n", + " bkg_q=[0.03, 0.1],\n", + " rng=17,\n", + ")\n", + "\n", + "# Sample 500 parameter draws to visualise the distributions\n", + "doses, bkg_weights = [], []\n", + "for _ in range(500):\n", + " aug_mix.generate_params()\n", + " doses.append(aug_mix.e_dose)\n", + " bkg_weights.append(aug_mix.bkg_weight)\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(10, 3))\n", + "axes[0].hist(np.log10(doses), bins=30, edgecolor=\"k\", linewidth=0.5)\n", + "axes[0].set(xlabel=\"log10(e_dose)\", title=\"Sampled electron doses (n=500)\")\n", + "axes[1].hist(bkg_weights, bins=30, edgecolor=\"k\", linewidth=0.5)\n", + "axes[1].set(xlabel=\"bkg_weight\", title=\"Sampled background weights (n=500)\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Stack Augmentation\n", + "\n", + "`augment()` accepts an `(N, H, W)` stack and augments each image independently with freshly sampled parameters. The `probe` and `label` stacks must match the batch dimension `N`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "aug_stk = DPAugmentor(\n", + " add_flipshift=True, free_rotation=False,\n", + " add_shift=True, xshift=[0, 10], yshift=[0, 10],\n", + " add_ellipticity=True, ellipticity_scale=[0, 0.1],\n", + " add_shot=True, e_dose=[1e4, 1e6],\n", + " rng=18,\n", + ")\n", + "\n", + "label_stack = dp_stack.copy() # autoencoder-style: label = input\n", + "aug_out, label_out = aug_stk.augment(dp_stack, label=label_stack)\n", + "print(f\"Input: {dp_stack.shape} → Augmented: {aug_out.shape}\")\n", + "\n", + "n_show = min(4, len(dp_stack))\n", + "show_2d(\n", + " [[dp_stack[i] for i in range(n_show)], [aug_out[i] for i in range(n_show)]],\n", + " title=[[\"Original\" for _ in range(n_show)], [\"Augmented\" for _ in range(n_show)]],\n", + " upper_quantile=0.99, cbar=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Reproducibility & Logging\n", + "\n", + "### Reproducibility\n", + "\n", + "Pass `rng=` to fix the seed. The same seed produces byte-identical outputs across runs. The seed is stored in `augmentor._rng_seed`.\n", + "\n", + "### Logging\n", + "\n", + "Pass `log_file=\"path/to/log.csv\"` to record every augmented image's parameters in a CSV. One row per image; columns include all numeric parameters and the seed. Useful for debugging or auditing training data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import tempfile, os\n", + "\n", + "# Same seed → identical output\n", + "aug_a = DPAugmentor(add_shift=True, xshift=[0, 20], yshift=[0, 20], rng=42)\n", + "aug_b = DPAugmentor(add_shift=True, xshift=[0, 20], yshift=[0, 20], rng=42)\n", + "dp_a, dp_b = aug_a.augment(dp), aug_b.augment(dp)\n", + "print(f\"Identical outputs with same seed: {np.allclose(dp_a, dp_b)}\")\n", + "\n", + "# Logging\n", + "with tempfile.NamedTemporaryFile(suffix=\".csv\", delete=False, mode=\"w\") as f:\n", + " log_path = f.name\n", + "\n", + "aug_log = DPAugmentor(\n", + " add_shift=True, xshift=[0, 15], yshift=[0, 15],\n", + " add_ellipticity=True, ellipticity_scale=[0, 0.1],\n", + " add_shot=True, e_dose=[1e4, 1e6],\n", + " log_file=log_path, rng=99,\n", + ")\n", + "for _ in range(5):\n", + " aug_log.augment(dp)\n", + "\n", + "import pandas as pd\n", + "log_df = pd.read_csv(log_path)\n", + "print(f\"\\nLog ({log_path}):\")\n", + "print(log_df[[\"xshift\", \"yshift\", \"exx\", \"eyy\", \"exy\", \"e_dose\"]].to_string())\n", + "os.unlink(log_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7. Kitchen Sink — Full Augmentation Pipeline\n", + "\n", + "A realistic configuration combining all augmentations. Use this as a starting template and tune individual ranges for your dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "label_1ch = (dp > dp.mean()).astype(np.float32)\n", + "\n", + "aug_full = DPAugmentor(\n", + " # Geometric\n", + " add_flipshift=True, free_rotation=False, # 90° only: preserves 4-fold symmetry\n", + " add_shift=True, xshift=[0, 10], yshift=[0, 10],\n", + " add_scale=True, scale_factor=[0.95, 1.05],\n", + " add_ellipticity=True, ellipticity_scale=[0, 0.12],\n", + " add_ellipticity_to_label=True,\n", + " # Background\n", + " add_bkg=True,\n", + " bkg_weight=[0.01, 0.08],\n", + " bkg_q=[0.02, 0.08],\n", + " apply_background_to_label=None,\n", + " # Shot noise (bimodal dose: mostly high, occasionally low)\n", + " add_shot=True,\n", + " e_dose=[\n", + " {\"weight\": 0.6, \"value\": [1e5, 1e6]},\n", + " {\"weight\": 0.4, \"value\": [1e3, 1e5]},\n", + " ],\n", + " # Detector noise\n", + " add_gaussian_noise=True,\n", + " gaussian_noise_mu=0.0,\n", + " gaussian_noise_std=[1e-5, 1e-4],\n", + " add_blur=True, blur_sigma=[0, 1.0],\n", + " add_salt_and_pepper=True, salt_and_pepper=[0, 2e-4],\n", + " rng=0,\n", + ")\n", + "aug_full.print_params()\n", + "\n", + "dp_full, label_full = aug_full.augment(dp, probe=probe, label=label_1ch)\n", + "\n", + "show_2d([dp, dp_full, label_1ch, label_full],\n", + " title=[\"Original DP\", \"Fully augmented DP\",\n", + " \"Original label\", \"Augmented label\"],\n", + " upper_quantile=0.99, cbar=True)" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "quantem_gc_jupyter", "language": "python", - "name": "python3" + "name": "quantem_gc_jupyter" }, "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", "name": "python", - "version": "3.12.3" + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.11" } }, "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat_minor": 4 +} \ No newline at end of file