{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# deeptrack.scatterers\n",
    "\n",
    "<a href=\"https://colab.research.google.com/github/DeepTrackAI/DeepTrack2/blob/develop/tutorials/3-advanced-topics/DTAT321_scatterers.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !pip install deeptrack  # Uncomment if running on Colab/Kaggle."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This advanced tutorial introduces the module deeptrack.scatterers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. What is a Scatterer?\n",
    "\n",
    "Scatterers are implementations of the abstract class `Feature` that represent scattering objects (see also [features_example](DTAT301_features.ipynb)). When calculating the scattered field, they are discretized into voxels.\n",
    "\n",
    "All physcial properties of scatterers are given in SI units, unless otherwise stated. In particular, the position of a scatterer is measured from the top left corner of the image and can either be given in meters (default) or pixels by setting the property `position_unit` to `\"meter\"` or `\"pixel\"`. The z-position of the particle can either be set as the the third element of the property `position`, or as the property `z`. The calculation of a scatterer is automatically upsampled using the `upsample` property.\n",
    "\n",
    "All scatterers need a reference to the optical system through which they are viewed in order to calculate scale factors. This is achieved by calling an optical device from the `optics` module (see also [optics_example](DTAT323_optics.ipynb)) with the scatterer."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Setup the Optics Device \n",
    "\n",
    "Create an optical device `optics` through which to view scatterers, in this case a fluorescence microscope implemented by the `Fluorescence` class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-06-29T20:33:47.187180Z",
     "iopub.status.busy": "2022-06-29T20:33:47.186679Z",
     "iopub.status.idle": "2022-06-29T20:33:50.691576Z",
     "shell.execute_reply": "2022-06-29T20:33:50.691075Z"
    }
   },
   "outputs": [],
   "source": [
    "from deeptrack.optics import Fluorescence\n",
    "\n",
    "optics = Fluorescence(\n",
    "    NA=0.7,\n",
    "    wavelength=680e-9,\n",
    "    resolution=1e-6,\n",
    "    magnification=10,\n",
    "    output_region=(0, 0, 64, 64),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Point Particle\n",
    "\n",
    "The feature `PointParticle` resolves an object occupying a single voxel, which corresponds to a point (dipolar) scatterer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-06-29T20:33:50.697575Z",
     "iopub.status.busy": "2022-06-29T20:33:50.697075Z",
     "iopub.status.idle": "2022-06-29T20:33:51.422576Z",
     "shell.execute_reply": "2022-06-29T20:33:51.422075Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGfCAYAAAAZGgYhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgRUlEQVR4nO3df2xV9f3H8dcttJfyo7f8kHvb0bIa0YIIgyLlDs03gU5CjEFpDFkwI85owKIC/qH9A3TJtESiThwWdQxNFDtZgoqJMlKkRNciVIkgpoJ2a2d7b8dm7y2M/kjv5/vH4s2u3Auc9pZP7+X5SD6J/ZzTc9+f2+2+OD3vnuMyxhgBAHCFZdguAABwdSKAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWjByqA2/btk1btmxRIBDQ7Nmz9eKLL2r+/PmX/L5IJKK2tjaNGzdOLpdrqMoDAAwRY4y6urqUn5+vjIyLnOeYIVBTU2OysrLMH//4R/Pll1+a+++/3+Tm5ppgMHjJ721tbTWSGAwGg5Hio7W19aKf90MSQPPnzzcVFRXRr/v7+01+fr6pqqq65Pd2dnZaf9MYDAaDMfjR2dl50c/7pF8D6u3tVWNjo8rKyqJzGRkZKisrU319/QX79/T0KBwOR0dXV1eySwIAWHCpyyhJD6AzZ86ov79fXq83Zt7r9SoQCFywf1VVlTweT3QUFBQkuyQAwDBkvQuusrJSoVAoOlpbW22XBAC4ApLeBTdp0iSNGDFCwWAwZj4YDMrn812wv9vtltvtTnYZAIBhLulnQFlZWSopKVFtbW10LhKJqLa2Vn6/P9kvBwBIUUPyd0AbNmzQqlWrNG/ePM2fP1+/+93vdO7cOd17771D8XIAgBQ0JAG0YsUK/fOf/9SmTZsUCAT0s5/9TB9++OEFjQkAgKuXyxhjbBfxv8LhsDwej+0yAACDFAqFlJOTk3C79S44AMDViQACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKxwF06NAh3XHHHcrPz5fL5dI777wTs90Yo02bNikvL0/Z2dkqKyvTqVOnklUvACBNOA6gc+fOafbs2dq2bVvc7c8884y2bt2q7du36/DhwxozZoyWLFmi7u7uQRcLAEgjZhAkmT179kS/jkQixufzmS1btkTnOjs7jdvtNm+99VbcY3R3d5tQKBQdra2tRhKDwWAwUnyEQqGLZkhSrwE1NzcrEAiorKwsOufxeFRaWqr6+vq431NVVSWPxxMdBQUFySwJADBMJTWAAoGAJMnr9cbMe73e6LYfq6ysVCgUio7W1tZklgQAGKZG2i7A7XbL7XbbLgMAcIUl9QzI5/NJkoLBYMx8MBiMbgMAQEpyABUVFcnn86m2tjY6Fw6HdfjwYfn9/mS+FAAgxTn+FdzZs2d1+vTp6NfNzc06duyYJkyYoMLCQq1bt06//e1vNW3aNBUVFWnjxo3Kz8/XnXfemcy6AQCpzmnr9UcffRS33W7VqlXRVuyNGzcar9dr3G63Wbx4sWlqarrs44dCIeutgwwGg8EY/LhUG7bLGGM0jITDYXk8HttlAAAGKRQKKScnJ+F27gUHALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALBipO0CgCvF5XIN2bGNMUN27ETSbT24+nAGBACwggACAFhBAAEArCCAAABWOAqgqqoq3XzzzRo3bpwmT56sO++8U01NTTH7dHd3q6KiQhMnTtTYsWNVXl6uYDCY1KIBAKnPUQDV1dWpoqJCDQ0N2r9/v/r6+nTbbbfp3Llz0X3Wr1+vvXv3avfu3aqrq1NbW5uWL1+e9MKBi3G5XBcMXL547x/vIZLODEJHR4eRZOrq6owxxnR2dprMzEyze/fu6D5fffWVkWTq6+sv65ihUMhIYjAGNVwu1xUdV8Maba2TkbojFApd9PN+UNeAQqGQJGnChAmSpMbGRvX19amsrCy6T3FxsQoLC1VfXx/3GD09PQqHwzEDAJD+BhxAkUhE69at08KFCzVz5kxJUiAQUFZWlnJzc2P29Xq9CgQCcY9TVVUlj8cTHQUFBQMtCQCQQgYcQBUVFTpx4oRqamoGVUBlZaVCoVB0tLa2Dup4AIDUMKBb8axdu1bvv/++Dh06pClTpkTnfT6fent71dnZGXMWFAwG5fP54h7L7XbL7XYPpAwgKUyK3nYmWXXTXABbHJ0BGWO0du1a7dmzRwcOHFBRUVHM9pKSEmVmZqq2tjY619TUpJaWFvn9/uRUDABIC47OgCoqKrRr1y69++67GjduXPS6jsfjUXZ2tjwej+677z5t2LBBEyZMUE5Ojh566CH5/X4tWLBgSBYAAEhRTtqulaDVbufOndF9zp8/bx588EEzfvx4M3r0aHPXXXeZ9vb2y34N2rAZyRi0FvNeMeyPS7Vhu8ww+wV4OByWx+OxXQZSnJPrGsPs/wJXHO8VhkooFFJOTk7C7dwLDgBgBQ+kQ1oa7v9ST3TWYaPu4f5eIX1xBgQAsIIAAgBYQQABAKwggAAAVhBAAAAr6IIDHIrXwZaoqy1Z91mL16mWqHuNrjakCs6AAABWEEAAACsIIACAFQQQAMAKAggAYAVdcLjqJepUy8i4/H+fDfVTReMd32m3WyQSiTtP1xxs4QwIAGAFAQQAsIIAAgBYQQABAKwggAAAVtAFhyHnpEMsWR1ZybhfWzLqtrGeRBJ19dm4z5yN/01g+OEMCABgBQEEALCCAAIAWEEAAQCsoAkBSTPUt6NxIl4tTm6tIyW++B3vljY2LpQ7vYWQk2aL4XTbnkR105yQ+jgDAgBYQQABAKwggAAAVhBAAAArCCAAgBV0wcGKob6li5OOvEQdX4nm40nUeTZixIi48047u/r7+y+YS1RfvH2lxDXGm3f6vjr9ecbbfzh1UeLK4AwIAGAFAQQAsIIAAgBYQQABAKwggAAAVtAFh5Tm5L5nTu7tdjFZWVkXzI0dOzbuvonmMzMz48739fXFnT979uxlzUlSb29v3PlE63TysLtE73eizjvgYjgDAgBYQQABAKwggAAAVhBAAAArCCAAgBV0wSElJOM+YcnodpOkSZMmXTBXUFAQd9/8/Py484m64xJ1trW1tV0w19raGnffM2fOxJ130h2X6B52ifDUUgwEZ0AAACsIIACAFQQQAMAKAggAYIWjJoTq6mpVV1frb3/7myTpxhtv1KZNm7R06VJJUnd3tx599FHV1NSop6dHS5Ys0UsvvSSv15v0wjH8DOUF52Q8IC1RfYluL5OoUSBew8HcuXPj7jtz5sy48xMmTIg7/+9//zvu/IkTJ+LOx9Pd3R13vrOzM+58vCaERO/VUD6ojoaFq4+jM6ApU6Zo8+bNamxs1NGjR7Vo0SItW7ZMX375pSRp/fr12rt3r3bv3q26ujq1tbVp+fLlQ1I4ACC1OToDuuOOO2K+fuqpp1RdXa2GhgZNmTJFO3bs0K5du7Ro0SJJ0s6dOzV9+nQ1NDRowYIFyasaAJDyBnwNqL+/XzU1NTp37pz8fr8aGxvV19ensrKy6D7FxcUqLCxUfX19wuP09PQoHA7HDABA+nMcQMePH9fYsWPldru1evVq7dmzRzNmzFAgEFBWVpZyc3Nj9vd6vQoEAgmPV1VVJY/HEx2J/qAPAJBeHAfQDTfcoGPHjunw4cNas2aNVq1apZMnTw64gMrKSoVCoehI9NfdAID04vhWPFlZWbruuuskSSUlJTpy5IheeOEFrVixQr29vers7Iw5CwoGg/L5fAmP53a75Xa7nVeOq4rTW/E46ahKdNuZRF1w8W6vk6jb7ec//3nc+USdocFgMO58PIl+s9De3h53vqurK+78UHbBARcz6L8DikQi6unpUUlJiTIzM1VbWxvd1tTUpJaWFvn9/sG+DAAgzTg6A6qsrNTSpUtVWFiorq4u7dq1SwcPHtS+ffvk8Xh03333acOGDZowYYJycnL00EMPye/30wEHALiAowDq6OjQr371K7W3t8vj8WjWrFnat2+ffvGLX0iSnn/+eWVkZKi8vDzmD1EBAPgxRwG0Y8eOi24fNWqUtm3bpm3btg2qKABA+uNecAAAK3ggHYYVG91UiV4zMzMz7ny87rhE93ZL1O2Wl5d3mdUlPn6iLr1EdQ+n95b7vkHiDAgAYAkBBACwggACAFhBAAEArCCAAABW0AWHYcVGd1Si1+zr64s7f/bs2QvmEj3J1Mm93S62f7zjx6tDSlz3cHpvAYkzIACAJQQQAMAKAggAYAUBBACwggACAFhBFxxSwlA+obO/vz/ufKIus7a2tgvmTpw4cdmvJyW+d1yibrp4x49Xh5S47kTrjGcon0AL/IAzIACAFQQQAMAKAggAYAUBBACwgiYEJI2TC9dOL1on2t9Jc0Ki+iKRSNz5RBfzW1tb487HEwgE4s4nepick8aHRHUkOkaidTp5r5z+HJyg8eHqwxkQAMAKAggAYAUBBACwggACAFhBAAEArKALDikhGR1PGRnx/72V6BY1vb29cefPnDlzwVx3d3fcfdvb2+POZ2Zmxp138hC8RN1uiepOJNH74gQdaRgIzoAAAFYQQAAAKwggAIAVBBAAwAoCCABgBV1wSGmJ7m8Wr7Mr0b3GEnWBJTp2vC6zzs7OuPt2dXXFnXd6r7V4nXqJ6ksk0Trj1ZKoDqevCVwMZ0AAACsIIACAFQQQAMAKAggAYAUBBACwgi44WOG0CywRJ0/odNoF5+QJqom6w4ayayxZ64lnKJ986rQWpC/OgAAAVhBAAAArCCAAgBUEEADACpoQkDSJLlDbuOAcr5ZEDQGJ6ks0P2LEiMt6vYvNOxWvFqfvq5Mah9MD5oZTLUguzoAAAFYQQAAAKwggAIAVBBAAwAoCCABgxaACaPPmzXK5XFq3bl10rru7WxUVFZo4caLGjh2r8vJyBYPBwdaJFGaMuewxlK8ZiUQcDSd1u1yuuCMjIyMpI96xndTndP02fj5D/ZoYfgYcQEeOHNHLL7+sWbNmxcyvX79ee/fu1e7du1VXV6e2tjYtX7580IUCANLLgALo7NmzWrlypV599VWNHz8+Oh8KhbRjxw4999xzWrRokUpKSrRz50799a9/VUNDQ9KKBgCkvgEFUEVFhW6//XaVlZXFzDc2Nqqvry9mvri4WIWFhaqvr497rJ6eHoXD4ZgBAEh/ju+EUFNTo88++0xHjhy5YFsgEFBWVpZyc3Nj5r1erwKBQNzjVVVV6Te/+Y3TMgAAKc7RGVBra6seeeQRvfnmmxo1alRSCqisrFQoFIqO1tbWpBwXADC8OToDamxsVEdHh+bOnRud6+/v16FDh/T73/9e+/btU29vrzo7O2POgoLBoHw+X9xjut1uud3ugVUPJEGiTqv+/v64807uy5as++A5uV8bnWNIFY4CaPHixTp+/HjM3L333qvi4mI99thjKigoUGZmpmpra1VeXi5JampqUktLi/x+f/KqBgCkPEcBNG7cOM2cOTNmbsyYMZo4cWJ0/r777tOGDRs0YcIE5eTk6KGHHpLf79eCBQuSVzUAIOUl/XEMzz//vDIyMlReXq6enh4tWbJEL730UrJfBgCQ4lxmmP3COBwOy+Px2C4DSIhrQMDlCYVCysnJSbide8EBAKzgiaiAQ8l4gmiiMyPOXnA14QwIAGAFAQQAsIIAAgBYQQABAKwggAAAVtAFh7Tk5O9vbHSeDadut+H+XiF9cQYEALCCAAIAWEEAAQCsIIAAAFbQhICrXjJuGGrj4nyybnQK2MIZEADACgIIAGAFAQQAsIIAAgBYQQABAKygCw5pKV5XGl1jl49b7uBK4AwIAGAFAQQAsIIAAgBYQQABAKwggAAAVtAFh6tGunV2pdt6cPXhDAgAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACAFhBAAEArCCAAABWEEAAACscBdCTTz4pl8sVM4qLi6Pbu7u7VVFRoYkTJ2rs2LEqLy9XMBhMetEAgNTn+AzoxhtvVHt7e3R8/PHH0W3r16/X3r17tXv3btXV1amtrU3Lly9PasEAgPQw0vE3jBwpn893wXwoFNKOHTu0a9cuLVq0SJK0c+dOTZ8+XQ0NDVqwYEHc4/X09Kinpyf6dTgcdloSACAFOT4DOnXqlPLz83Xttddq5cqVamlpkSQ1Njaqr69PZWVl0X2Li4tVWFio+vr6hMerqqqSx+OJjoKCggEsAwCQahwFUGlpqV577TV9+OGHqq6uVnNzs2699VZ1dXUpEAgoKytLubm5Md/j9XoVCAQSHrOyslKhUCg6WltbB7QQAEBqcfQruKVLl0b/e9asWSotLdXUqVP19ttvKzs7e0AFuN1uud3uAX0vACB1DaoNOzc3V9dff71Onz4tn8+n3t5edXZ2xuwTDAbjXjMCAFzdBhVAZ8+e1TfffKO8vDyVlJQoMzNTtbW10e1NTU1qaWmR3+8fdKEAgDRjHHj00UfNwYMHTXNzs/nkk09MWVmZmTRpkuno6DDGGLN69WpTWFhoDhw4YI4ePWr8fr/x+/1OXsKEQiEjicFgMBgpPkKh0EU/7x1dA/rHP/6hX/7yl/rXv/6la665RrfccosaGhp0zTXXSJKef/55ZWRkqLy8XD09PVqyZIleeuklJy8BALhKuIwxxnYR/yscDsvj8dguAwAwSKFQSDk5OQm3cy84AIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCscBxA3333ne655x5NnDhR2dnZuummm3T06NHodmOMNm3apLy8PGVnZ6usrEynTp1KatEAgNTnKIC+//57LVy4UJmZmfrggw908uRJPfvssxo/fnx0n2eeeUZbt27V9u3bdfjwYY0ZM0ZLlixRd3d30osHAKQw48Bjjz1mbrnlloTbI5GI8fl8ZsuWLdG5zs5O43a7zVtvvXVZrxEKhYwkBoPBYKT4CIVCF/28d3QG9N5772nevHm6++67NXnyZM2ZM0evvvpqdHtzc7MCgYDKysqicx6PR6Wlpaqvr497zJ6eHoXD4ZgBAEh/jgLo22+/VXV1taZNm6Z9+/ZpzZo1evjhh/X6669LkgKBgCTJ6/XGfJ/X641u+7Gqqip5PJ7oKCgoGMg6AAApxlEARSIRzZ07V08//bTmzJmjBx54QPfff7+2b98+4AIqKysVCoWio7W1dcDHAgCkDkcBlJeXpxkzZsTMTZ8+XS0tLZIkn88nSQoGgzH7BIPB6LYfc7vdysnJiRkAgPTnKIAWLlyopqammLmvv/5aU6dOlSQVFRXJ5/OptrY2uj0cDuvw4cPy+/1JKBcAkDYur//tvz799FMzcuRI89RTT5lTp06ZN99804wePdq88cYb0X02b95scnNzzbvvvmu++OILs2zZMlNUVGTOnz9PFxyDwWBcReNSXXCOAsgYY/bu3Wtmzpxp3G63KS4uNq+88krM9kgkYjZu3Gi8Xq9xu91m8eLFpqmp6bKPTwAxGAxGeoxLBZDLGGM0jITDYXk8HttlAAAGKRQKXfS6PveCAwBYQQABAKwggAAAVhBAAAArCCAAgBUEEADACgIIAGAFAQQAsIIAAgBYQQABAKwggAAAVhBAAAArhl0ADbN7owIABuhSn+fDLoC6urpslwAASIJLfZ4Pu8cxRCIRtbW1ady4cerq6lJBQYFaW1vT+lHd4XCYdaaJq2GNEutMN8lepzFGXV1dys/PV0ZG4vOckYN+pSTLyMjQlClTJEkul0uSlJOTk9Y//B+wzvRxNaxRYp3pJpnrvJznug27X8EBAK4OBBAAwIphHUBut1tPPPGE3G637VKGFOtMH1fDGiXWmW5srXPYNSEAAK4Ow/oMCACQvgggAIAVBBAAwAoCCABgBQEEALBiWAfQtm3b9NOf/lSjRo1SaWmpPv30U9slDcqhQ4d0xx13KD8/Xy6XS++8807MdmOMNm3apLy8PGVnZ6usrEynTp2yU+wAVVVV6eabb9a4ceM0efJk3XnnnWpqaorZp7u7WxUVFZo4caLGjh2r8vJyBYNBSxUPTHV1tWbNmhX9y3G/368PPvgguj0d1vhjmzdvlsvl0rp166Jz6bDOJ598Ui6XK2YUFxdHt6fDGn/w3Xff6Z577tHEiROVnZ2tm266SUePHo1uv9KfQcM2gP70pz9pw4YNeuKJJ/TZZ59p9uzZWrJkiTo6OmyXNmDnzp3T7NmztW3btrjbn3nmGW3dulXbt2/X4cOHNWbMGC1ZskTd3d1XuNKBq6urU0VFhRoaGrR//3719fXptttu07lz56L7rF+/Xnv37tXu3btVV1entrY2LV++3GLVzk2ZMkWbN29WY2Ojjh49qkWLFmnZsmX68ssvJaXHGv/XkSNH9PLLL2vWrFkx8+myzhtvvFHt7e3R8fHHH0e3pcsav//+ey1cuFCZmZn64IMPdPLkST377LMaP358dJ8r/hlkhqn58+ebioqK6Nf9/f0mPz/fVFVVWawqeSSZPXv2RL+ORCLG5/OZLVu2ROc6OzuN2+02b731loUKk6Ojo8NIMnV1dcaY/64pMzPT7N69O7rPV199ZSSZ+vp6W2Umxfjx480f/vCHtFtjV1eXmTZtmtm/f7/5v//7P/PII48YY9LnZ/nEE0+Y2bNnx92WLms0xpjHHnvM3HLLLQm32/gMGpZnQL29vWpsbFRZWVl0LiMjQ2VlZaqvr7dY2dBpbm5WIBCIWbPH41FpaWlKrzkUCkmSJkyYIElqbGxUX19fzDqLi4tVWFiYsuvs7+9XTU2Nzp07J7/fn3ZrrKio0O233x6zHim9fpanTp1Sfn6+rr32Wq1cuVItLS2S0muN7733nubNm6e7775bkydP1pw5c/Tqq69Gt9v4DBqWAXTmzBn19/fL6/XGzHu9XgUCAUtVDa0f1pVOa45EIlq3bp0WLlyomTNnSvrvOrOyspSbmxuzbyqu8/jx4xo7dqzcbrdWr16tPXv2aMaMGWm1xpqaGn322Weqqqq6YFu6rLO0tFSvvfaaPvzwQ1VXV6u5uVm33nqrurq60maNkvTtt9+qurpa06ZN0759+7RmzRo9/PDDev311yXZ+Qwado9jQPqoqKjQiRMnYn6fnk5uuOEGHTt2TKFQSH/+85+1atUq1dXV2S4raVpbW/XII49o//79GjVqlO1yhszSpUuj/z1r1iyVlpZq6tSpevvtt5WdnW2xsuSKRCKaN2+enn76aUnSnDlzdOLECW3fvl2rVq2yUtOwPAOaNGmSRowYcUGnSTAYlM/ns1TV0PphXemy5rVr1+r999/XRx99FH2+k/Tfdfb29qqzszNm/1RcZ1ZWlq677jqVlJSoqqpKs2fP1gsvvJA2a2xsbFRHR4fmzp2rkSNHauTIkaqrq9PWrVs1cuRIeb3etFjnj+Xm5ur666/X6dOn0+ZnKUl5eXmaMWNGzNz06dOjv2608Rk0LAMoKytLJSUlqq2tjc5FIhHV1tbK7/dbrGzoFBUVyefzxaw5HA7r8OHDKbVmY4zWrl2rPXv26MCBAyoqKorZXlJSoszMzJh1NjU1qaWlJaXWGU8kElFPT0/arHHx4sU6fvy4jh07Fh3z5s3TypUro/+dDuv8sbNnz+qbb75RXl5e2vwsJWnhwoUX/EnE119/ralTp0qy9Bk0JK0NSVBTU2Pcbrd57bXXzMmTJ80DDzxgcnNzTSAQsF3agHV1dZnPP//cfP7550aSee6558znn39u/v73vxtjjNm8ebPJzc017777rvniiy/MsmXLTFFRkTl//rzlyi/fmjVrjMfjMQcPHjTt7e3R8Z///Ce6z+rVq01hYaE5cOCAOXr0qPH7/cbv91us2rnHH3/c1NXVmebmZvPFF1+Yxx9/3LhcLvOXv/zFGJMea4znf7vgjEmPdT766KPm4MGDprm52XzyySemrKzMTJo0yXR0dBhj0mONxhjz6aefmpEjR5qnnnrKnDp1yrz55ptm9OjR5o033ojuc6U/g4ZtABljzIsvvmgKCwtNVlaWmT9/vmloaLBd0qB89NFHRtIFY9WqVcaY/7ZBbty40Xi9XuN2u83ixYtNU1OT3aIdirc+SWbnzp3Rfc6fP28efPBBM378eDN69Ghz1113mfb2dntFD8Cvf/1rM3XqVJOVlWWuueYas3jx4mj4GJMea4znxwGUDutcsWKFycvLM1lZWeYnP/mJWbFihTl9+nR0ezqs8Qd79+41M2fONG632xQXF5tXXnklZvuV/gzieUAAACuG5TUgAED6I4AAAFYQQAAAKwggAIAVBBAAwAoCCABgBQEEALCCAAIAWEEAAQCsIIAAAFYQQAAAK/4fRTKlofbxCh4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from deeptrack.scatterers import PointParticle\n",
    "\n",
    "scatterer = PointParticle(\n",
    "    intensity=100,  # Squared magnitude of the electric field.\n",
    "    position_unit=\"pixel\",  # Units of position (default meter).\n",
    "    position=(32, 32),  # Position of the particle from the upper left corner.\n",
    ")\n",
    "\n",
    "imaged_scatterer = optics(scatterer)\n",
    "\n",
    "imaged_scatterer.plot(cmap=\"gray\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Ellipse \n",
    "\n",
    "The feature `Ellipse` resolves a 2-dimensional elliptical disk, whose principal axes are in the xy-plane."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-06-29T20:33:51.426576Z",
     "iopub.status.busy": "2022-06-29T20:33:51.426576Z",
     "iopub.status.idle": "2022-06-29T20:33:51.521076Z",
     "shell.execute_reply": "2022-06-29T20:33:51.521076Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/giovannivolpe/Documents/GitHub/DeepTrack2/deeptrack/scatterers.py:245: UserWarning: Setting upsample != 1 is deprecated. Please, instead use dt.Upscale(f, factor=4)\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "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AACOEEAAACcIIACAEwQQAMAJAggA4ARVcFkinfuvpYqLPeJsFV9e1WexWMzzXNt+ZTZe+7vZqt26u7s9+8PhsGf/uHHjPPu99o6z7e1m41UZKHlX5NkeAGjb28729fFTGZmKayC7sAICADhBAAEAnCCAAABOEEAAACcIIACAE1TBwXeVkd+qtlRUMdles7+/37Pfq1rLtv+aja3CzqtCzHbteDzu2e/1xFZJ+vzzzz37y8rKBvTZnlpq23/NNsZoNHrS4zh69Khnv61qzvb1ybXKtlybz+nCCggA4AQBBABwggACADhBAAEAnKAIIctl8xY96eR189v20Djbdjm2IgSv69i24rEVIXzxxRee/V4FAZK/IgTbw+FshQJeBQft7e2e59rGbStwsL3nqfg7wdY92Y8VEADACQIIAOAEAQQAcIIAAgA4QQABAJw4pSq4NWvWqK6uTsuXL9fDDz8s6dtqoNtuu00NDQ3q7e3V/PnztW7dOoVCoVSMFyfJxcPh0nltv7yq4PxWTfnZ5sdWYWbbuqazs9Oz3+vBc5JUUlIyoG/EiBGe59qq4GwPk/Mao63a7dNPPz3pa0j2Kjg/X59UoDIuMw16BfT222/rscce07Rp05L6V65cqW3btmnLli1qampSe3u7FixYcMoDBQDklkEF0NGjR7Vo0SI98cQTGjNmTKI/Fotp48aNevDBBzV37lxVV1dr06ZN+sc//qGdO3embNAAgOw3qACqra3VFVdcoZqamqT+lpYWHTt2LKm/qqpKlZWVam5u9rxWb2+v4vF4UgMA5D7f94AaGhr0zjvv6O233x5wLBqNqqioSKWlpUn9oVDI+hPe9fX1+v3vf+93GACALOdrBdTW1qbly5frmWee0fDhw1MygLq6OsVisURra2tLyXUBAJnN1wqopaVFR44c0YUXXpjoO378uN544w393//9n7Zv366+vj51dnYmrYI6OjoUDoc9rxkIBBQIBAY3emQtv5V06axisu35ZquC8+q3VZjZquNs+8/ZHlTn9R++wsJCz3NtVXC299DPA/Zs1W5+94KzvbdeqGDLXb4CaN68edq7d29S3w033KCqqirdfvvtqqioUGFhoRobG7Vw4UJJUmtrqw4dOqRIJJK6UQMAsp6vABo9erSmTp2a1Ddy5EiNHTs20X/jjTdq1apVKisrU0lJiZYtW6ZI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IBAwTz75pNm3b5+5+eabTWlpqYlGo66HNmhdXV3m3XffNe+++66RZB588EHz7rvvmv/85z/GGGPWrFljSktLzQsvvGDee+89c9VVV5nJkyebr7/+2vHIT96SJUtMMBg0r7/+ujl8+HCiffXVV4lzbrnlFlNZWWleffVVs3v3bhOJREwkEnE4av/uuOMO09TUZA4ePGjee+89c8cdd5i8vDzzt7/9zRiTG3P08r9VcMbkxjxvu+028/rrr5uDBw+av//976ampsacccYZ5siRI8aY3JijMca89dZbpqCgwNxzzz1m//795plnnjEjRowwTz/9dOKc0/0ZlLEBZIwxf/zjH01lZaUpKioys2bNMjt37nQ9pFPy2muvGUkD2uLFi40x35ZB3nnnnSYUCplAIGDmzZtnWltb3Q7aJ6/5STKbNm1KnPP111+b3/72t2bMmDFmxIgR5he/+IU5fPiwu0EPwm9+8xszadIkU1RUZMaNG2fmzZuXCB9jcmOOXr4fQLkwz2uvvdZMmDDBFBUVmR/96Efm2muvNQcOHEgcz4U5fmfbtm1m6tSpJhAImKqqKvP4448nHT/dn0E8DwgA4ERG3gMCAOQ+AggA4AQBBABwggACADhBAAEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABw4v8B4T4HIJ9LUhIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from deeptrack.scatterers import Ellipse\n",
    "\n",
    "scatterer = Ellipse(\n",
    "    intensity=100,  # Squared magnitude of the electric field.\n",
    "    position_unit=\"pixel\",  # Units of position (default meter).\n",
    "    position=(32, 32),  # Position of the particle.\n",
    "    radius=(1e-6, 0.5e-6),  # Dimensions of the principal axes of the ellipse.\n",
    "    rotation=np.pi / 4,  # Amount the ellipse is rotated by in radians.\n",
    "    upsample=4,  # Amount the resolution is upsampled for accuracy.\n",
    ")\n",
    "\n",
    "imaged_scatterer = optics(scatterer)\n",
    "\n",
    "imaged_scatterer.plot(cmap=\"gray\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Sphere\n",
    "\n",
    "The feature `Sphere` resolves a 3-dimensional sphere."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-06-29T20:33:51.525076Z",
     "iopub.status.busy": "2022-06-29T20:33:51.525076Z",
     "iopub.status.idle": "2022-06-29T20:33:51.634075Z",
     "shell.execute_reply": "2022-06-29T20:33:51.633575Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Pb2UfOxjH9NLL72kVCql//qv/9LGjRvV1dXlu1uh6evr080336wnn3xS06dP992dvLnyyiuz/718+XKtXr1aixcv1s9//nNVV1d77Fm4xsbGtHLlSn3729+WJF1yySV69dVXtWPHDm3cuNFLnwpyBnTBBRdo2rRp4ypN+vv7FY/HPfUqv94fV6mMefPmzfrVr36lp59+Oru/k/TeOEdGRjQwMJBzfjGOs6qqSh/5yEfU1NSktrY2rVixQt///vdLZow9PT06ceKELr30UlVUVKiiokJdXV267777VFFRoVgsVhLj/KDa2lp99KMf1euvv14yn6Uk1dXV6aKLLsppW7p0afafG338DCrIAKqqqlJTU5M6OzuzbWNjY+rs7FQikfDYs/xZsmSJ4vF4zpjT6bQOHDhQVGM2xmjz5s3as2ePnnrqKS1ZsiTn9aamJlVWVuaMs7e3V0ePHi2qcdqMjY0pk8mUzBjXrVunV155RS+99FL2WLlypa6//vrsf5fCOD/o5MmT+uMf/6i6urqS+Swlac2aNeO+EvGHP/xBixcvluTpZ1BeShtC0NHRYSKRiHn44YfNoUOHzFe/+lVTW1trksmk765N2ODgoHnxxRfNiy++aCSZ7373u+bFF180f/7zn40xxmzbts3U1taaxx57zLz88svm6quvNkuWLDGnTp3y3PNzt2nTJhONRs0zzzxjjh8/nj3eeeed7Dk33nijaWhoME899ZQ5ePCgSSQSJpFIeOx1cF//+tdNV1eXOXLkiHn55ZfN17/+dVNWVmZ+/etfG2NKY4w2f1sFZ0xpjPO2224zzzzzjDly5Ij57W9/a5qbm80FF1xgTpw4YYwpjTEaY8xzzz1nKioqzF133WUOHz5sHnnkETNjxgzzs5/9LHvO+f4ZVLABZIwx999/v2loaDBVVVVm1apVZv/+/b67NClPP/20kTTu2LhxozHmvTLIO+64w8RiMROJRMy6detMb2+v304HZBufJLNz587sOadOnTL/9m//ZubMmWNmzJhh/vmf/9kcP37cX6cn4Mtf/rJZvHixqaqqMvPnzzfr1q3Lho8xpTFGmw8GUCmM87rrrjN1dXWmqqrKfOhDHzLXXXedef3117Ovl8IY37d3716zbNkyE4lETGNjo/nRj36U8/r5/hnEfkAAAC8K8hkQAKD0EUAAAC8IIACAFwQQAMALAggA4AUBBADwggACAHhBAAEAvCCAAABeEEAAAC8IIACAF/8He0vyaRmhJt8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from deeptrack.scatterers import Sphere\n",
    "\n",
    "scatterer = Sphere(\n",
    "    intensity=100,  # Squared magnitude of the electric field.\n",
    "    position_unit=\"pixel\",  # Units of position (default meter).\n",
    "    position=(32, 32),  # Position of the particle.\n",
    "    radius=1e-6,  # Radius of the sphere.\n",
    "    upsample=4,  # Amount the resolution is upsampled for accuracy.\n",
    ")\n",
    "\n",
    "imaged_scatterer = optics(scatterer)\n",
    "\n",
    "imaged_scatterer.plot(cmap=\"gray\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. Ellipsoid\n",
    "\n",
    "The feature `Ellipsoid` resolves a 3-dimensional ellipsoid."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-06-29T20:33:51.638076Z",
     "iopub.status.busy": "2022-06-29T20:33:51.638076Z",
     "iopub.status.idle": "2022-06-29T20:33:51.733075Z",
     "shell.execute_reply": "2022-06-29T20:33:51.732575Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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bDkmzT4cjsViCgaDrocBWKXLc4XS7H9doI9oNKrCwkLrcfaCAwA4wRNRAZ9cPIWV1Q6yESsgAIATBBAAwAkCCADgBAEEAHCCIgQghSgeAOxYAQEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABwggACADhBAAEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABwggACADhBAAEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABwggACADhBAAEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABwggACADhBAAEAnCCAAABOEEAAACcIIACAEwQQAMAJAggA4AQBBABwwncAff7557ruuutUUlKigoICXXzxxdq7d2/8uDFGq1atUllZmQoKClRdXa39+/cnddAAgMznK4C+/vprzZo1S3l5eXrllVf00Ucf6cEHH9SoUaPi5zzwwAN67LHHtGHDBu3Zs0fDhw/X3Llz1dXVlfTBAwAymPHhzjvvNJdffrn1eG9vryktLTVr1qyJ97W3t5tAIGC2bNlyWq8RjUaNJBqNRqNleItGo6d8v/e1AnrppZc0ffp0XXPNNRozZoymTZump556Kn78wIEDikQiqq6ujvcFg0HNnDlTTU1Nntfs7u5WLBZLaACA7OcrgD777DOtX79eEydO1I4dO3TzzTfrtttu0zPPPCNJikQikqRQKJTw90KhUPzY99XV1SkYDMbbuHHj+jMPAECG8RVAvb29uuSSS3T//fdr2rRpuvHGG3XDDTdow4YN/R5AbW2totFovLW2tvb7WgCAzOErgMrKynThhRcm9E2aNEkHDx6UJJWWlkqS2traEs5pa2uLH/u+QCCgwsLChAYAyH6+AmjWrFlqaWlJ6Pv44481fvx4SdKECRNUWlqqhoaG+PFYLKY9e/YoHA4nYbgAgKxxevVv33rrrbfM0KFDzX333Wf2799vnnvuOXPWWWeZZ599Nn7O6tWrTVFRkXnxxRfNe++9ZxYsWGAmTJhgjh8/ThUcjUajDaL2Q1VwvgLIGGO2b99uJk+ebAKBgKmsrDRPPvlkwvHe3l5z9913m1AoZAKBgJkzZ45paWk57esTQDQajZYd7YcCKMcYY5RGYrGYgsGg62EAAAYoGo2e8r4+e8EBAJwggAAAThBAAAAnCCAAgBMEEADACQIIAOAEAQQAcIIAAgA4QQABAJwggAAAThBAAAAnCCAAgBNpF0BptjcqAKCffuj9PO0CqKOjw/UQAABJ8EPv52n3OIbe3l4dOnRII0eOVEdHh8aNG6fW1tasflR3LBZjnlliMMxRYp7ZJtnzNMaoo6ND5eXlys21r3OGDviVkiw3N1djx46VJOXk5EiSCgsLs/qb/x3mmT0Gwxwl5pltkjnP03muW9p9BAcAGBwIIACAE2kdQIFAQPfcc48CgYDroaQU88weg2GOEvPMNq7mmXZFCACAwSGtV0AAgOxFAAEAnCCAAABOEEAAACcIIACAE2kdQGvXrtWPfvQjDRs2TDNnztRbb73lekgDsmvXLs2fP1/l5eXKycnRCy+8kHDcGKNVq1aprKxMBQUFqq6u1v79+90Mtp/q6up06aWXauTIkRozZoyuvvpqtbS0JJzT1dWlmpoalZSUaMSIEVq0aJHa2tocjbh/1q9frylTpsR/czwcDuuVV16JH8+GOX7f6tWrlZOTo+XLl8f7smGe9957r3JychJaZWVl/Hg2zPE7n3/+ua677jqVlJSooKBAF198sfbu3Rs/fqbfg9I2gP785z9r5cqVuueee/TOO+9o6tSpmjt3ro4cOeJ6aP3W2dmpqVOnau3atZ7HH3jgAT322GPasGGD9uzZo+HDh2vu3Lnq6uo6wyPtv8bGRtXU1Gj37t3auXOnenp6dOWVV6qzszN+zooVK7R9+3Zt3bpVjY2NOnTokBYuXOhw1P6NHTtWq1evVnNzs/bu3avZs2drwYIF+vDDDyVlxxz/19tvv60nnnhCU6ZMSejPlnledNFFOnz4cLy9+eab8WPZMsevv/5as2bNUl5enl555RV99NFHevDBBzVq1Kj4OWf8PcikqRkzZpiampr4n0+ePGnKy8tNXV2dw1EljySzbdu2+J97e3tNaWmpWbNmTbyvvb3dBAIBs2XLFgcjTI4jR44YSaaxsdEY8+2c8vLyzNatW+Pn/OMf/zCSTFNTk6thJsWoUaPMH//4x6ybY0dHh5k4caLZuXOn+elPf2puv/12Y0z2fC/vueceM3XqVM9j2TJHY4y58847zeWXX2497uI9KC1XQCdOnFBzc7Oqq6vjfbm5uaqurlZTU5PDkaXOgQMHFIlEEuYcDAY1c+bMjJ5zNBqVJBUXF0uSmpub1dPTkzDPyspKVVRUZOw8T548qfr6enV2diocDmfdHGtqanTVVVclzEfKru/l/v37VV5ernPPPVdLlizRwYMHJWXXHF966SVNnz5d11xzjcaMGaNp06bpqaeeih938R6UlgH0xRdf6OTJkwqFQgn9oVBIkUjE0ahS67t5ZdOce3t7tXz5cs2aNUuTJ0+W9O088/PzVVRUlHBuJs7z/fff14gRIxQIBHTTTTdp27ZtuvDCC7NqjvX19XrnnXdUV1fX51i2zHPmzJl6+umn9eqrr2r9+vU6cOCArrjiCnV0dGTNHCXps88+0/r16zVx4kTt2LFDN998s2677TY988wzkty8B6Xd4xiQPWpqavTBBx8kfJ6eTS644ALt27dP0WhUf/nLX7R06VI1Nja6HlbStLa26vbbb9fOnTs1bNgw18NJmXnz5sX/e8qUKZo5c6bGjx+v559/XgUFBQ5Hlly9vb2aPn267r//fknStGnT9MEHH2jDhg1aunSpkzGl5Qro7LPP1pAhQ/pUmrS1tam0tNTRqFLru3lly5xvueUWvfzyy3r99dfjz3eSvp3niRMn1N7ennB+Js4zPz9f5513nqqqqlRXV6epU6fq0UcfzZo5Njc368iRI7rkkks0dOhQDR06VI2NjXrsscc0dOhQhUKhrJjn9xUVFen888/XJ598kjXfS0kqKyvThRdemNA3adKk+MeNLt6D0jKA8vPzVVVVpYaGhnhfb2+vGhoaFA6HHY4sdSZMmKDS0tKEOcdiMe3Zsyej5myM0S233KJt27bptdde04QJExKOV1VVKS8vL2GeLS0tOnjwYEbN00tvb6+6u7uzZo5z5szR+++/r3379sXb9OnTtWTJkvh/Z8M8v+/YsWP69NNPVVZWljXfS0maNWtWn1+J+PjjjzV+/HhJjt6DUlLakAT19fUmEAiYp59+2nz00UfmxhtvNEVFRSYSibgeWr91dHSYd99917z77rtGknnooYfMu+++a/79738bY4xZvXq1KSoqMi+++KJ57733zIIFC8yECRPM8ePHHY/89N18880mGAyaN954wxw+fDjevvnmm/g5N910k6moqDCvvfaa2bt3rwmHwyYcDjsctX933XWXaWxsNAcOHDDvvfeeueuuu0xOTo7561//aozJjjl6+d8qOGOyY5533HGHeeONN8yBAwfM3/72N1NdXW3OPvtsc+TIEWNMdszRGGPeeustM3ToUHPfffeZ/fv3m+eee86cddZZ5tlnn42fc6bfg9I2gIwx5vHHHzcVFRUmPz/fzJgxw+zevdv1kAbk9ddfN5L6tKVLlxpjvi2DvPvuu00oFDKBQMDMmTPHtLS0uB20T17zk2Q2bdoUP+f48ePmN7/5jRk1apQ566yzzM9//nNz+PBhd4Puh1//+tdm/PjxJj8/34wePdrMmTMnHj7GZMccvXw/gLJhnosXLzZlZWUmPz/fnHPOOWbx4sXmk08+iR/Phjl+Z/v27Wby5MkmEAiYyspK8+STTyYcP9PvQTwPCADgRFreAwIAZD8CCADgBAEEAHCCAAIAOEEAAQCcIIAAAE4QQAAAJwggAIATBBAAwAkCCADgBAEEAHDi/wC8tzT2vACzfwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from deeptrack.scatterers import Ellipsoid\n",
    "\n",
    "scatterer = Ellipsoid(\n",
    "    intensity=100,  # Squared magnitude of the electric field.\n",
    "    position_unit=\"pixel\",  # Units of position (default meter).\n",
    "    position=(32, 32),  # Position of the particle.\n",
    "    radius=(1e-6, 0.5e-6, 0.25e-6),  # Principal axes dimensions.\n",
    "    rotation=(np.pi/4, 0, 0),  # Rotation in radians.\n",
    "    upsample=4,  # Resolution upsampling for accuracy.\n",
    ")\n",
    "\n",
    "imaged_scatterer = optics(scatterer)\n",
    "\n",
    "imaged_scatterer.plot(cmap=\"gray\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py_env_book",
   "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.10.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}