"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "aberrated_particle = fluorescence_microscope(particle, aberration=aberration) >> noise >> normalization\n",
+ "\n",
+ "for coefficient in range(-5, 5):\n",
+ " aberrated_particle.resolve(coefficient=coefficient)\n",
+ " \n",
+ " plt.title(\"Spherical aberration of strength {0}\".format(coefficient))\n",
+ " aberrated_particle.plot(cmap=\"gray\") "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4. Create the dataset"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class Aberration_dataset(torch.utils.data.Dataset):\n",
+ "\n",
+ " def __init__(self, data_generator, device=\"auto\", dataset_size=32):\n",
+ " self.device=device\n",
+ " self.generate_data = data_generator\n",
+ " dataset = []\n",
+ " for i in range(dataset_size):\n",
+ " coefficient = (2 * np.random.rand() - 1) * 4\n",
+ " data = self.generate_data.resolve(coefficient=coefficient).squeeze()\n",
+ " label = coefficient\n",
+ " dataset.append([torch.tensor(data, dtype=torch.float32).unsqueeze(0), torch.tensor(label, dtype=torch.float32).unsqueeze(0)]) \n",
+ " \n",
+ " self.dataset = dataset\n",
+ " self.dataset_size = dataset_size\n",
+ "\n",
+ " def __len__(self):\n",
+ " return self.dataset_size \n",
+ " \n",
+ " def __getitem__(self, idx):\n",
+ " return random.choice(self.dataset)\n",
+ "\n",
+ "dataset = Aberration_dataset(aberrated_particle, dataset_size=256)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. Create the model\n",
+ "\n",
+ "We will use a standard convolutional neural network (CNN) with a multilayer perceptron as the dense top for this task. Since this is a regression task, we will use Mean Squared Error (MSE) as the loss metric."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define CNN base.\n",
+ "cnn_base = dl.ConvolutionalNeuralNetwork(\n",
+ " in_channels=None,\n",
+ " hidden_channels=[32, 32, 32, 64],\n",
+ " out_channels=1,\n",
+ ")\n",
+ "\n",
+ "# Add maxpooling to convolutional base.\n",
+ "cnn_base.blocks[-1].pooled(dl.Layer(torch.nn.MaxPool2d, 2).new())\n",
+ "\n",
+ "# Define MLP dense top.\n",
+ "dense_top = dl.MultiLayerPerceptron(\n",
+ " in_features=None,\n",
+ " hidden_features=[64, 64,64 ],\n",
+ " out_features = 1,\n",
+ ")\n",
+ "\n",
+ "# Combine the CNN and MLP in a sequential block.\n",
+ "model = dl.Sequential()\n",
+ "model.append(cnn_base)\n",
+ "model.append(dense_top)\n",
+ "\n",
+ "aberration_regressor = dl.Regressor(\n",
+ " model=model,\n",
+ " loss=torch.nn.L1Loss(),\n",
+ " optimizer=dl.Adam(lr=1e-3),\n",
+ ").build()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 6. Train the model\n",
+ "This can take a few minutes depending on your hardware."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "┏━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓\n",
+ "┃ ┃ Name ┃ Type ┃ Params ┃ Mode ┃\n",
+ "┡━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩\n",
+ "│ 0 │ loss │ L1Loss │ 0 │ train │\n",
+ "│ 1 │ train_metrics │ MetricCollection │ 0 │ train │\n",
+ "│ 2 │ val_metrics │ MetricCollection │ 0 │ train │\n",
+ "│ 3 │ test_metrics │ MetricCollection │ 0 │ train │\n",
+ "│ 4 │ model │ Sequential │ 46.0 K │ train │\n",
+ "│ 5 │ optimizer │ Adam │ 0 │ train │\n",
+ "└───┴───────────────┴──────────────────┴────────┴───────┘\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "┏━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓\n",
+ "┃\u001b[1;35m \u001b[0m\u001b[1;35m \u001b[0m\u001b[1;35m \u001b[0m┃\u001b[1;35m \u001b[0m\u001b[1;35mName \u001b[0m\u001b[1;35m \u001b[0m┃\u001b[1;35m \u001b[0m\u001b[1;35mType \u001b[0m\u001b[1;35m \u001b[0m┃\u001b[1;35m \u001b[0m\u001b[1;35mParams\u001b[0m\u001b[1;35m \u001b[0m┃\u001b[1;35m \u001b[0m\u001b[1;35mMode \u001b[0m\u001b[1;35m \u001b[0m┃\n",
+ "┡━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩\n",
+ "│\u001b[2m \u001b[0m\u001b[2m0\u001b[0m\u001b[2m \u001b[0m│ loss │ L1Loss │ 0 │ train │\n",
+ "│\u001b[2m \u001b[0m\u001b[2m1\u001b[0m\u001b[2m \u001b[0m│ train_metrics │ MetricCollection │ 0 │ train │\n",
+ "│\u001b[2m \u001b[0m\u001b[2m2\u001b[0m\u001b[2m \u001b[0m│ val_metrics │ MetricCollection │ 0 │ train │\n",
+ "│\u001b[2m \u001b[0m\u001b[2m3\u001b[0m\u001b[2m \u001b[0m│ test_metrics │ MetricCollection │ 0 │ train │\n",
+ "│\u001b[2m \u001b[0m\u001b[2m4\u001b[0m\u001b[2m \u001b[0m│ model │ Sequential │ 46.0 K │ train │\n",
+ "│\u001b[2m \u001b[0m\u001b[2m5\u001b[0m\u001b[2m \u001b[0m│ optimizer │ Adam │ 0 │ train │\n",
+ "└───┴───────────────┴──────────────────┴────────┴───────┘\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Trainable params: 46.0 K \n",
+ "Non-trainable params: 0 \n",
+ "Total params: 46.0 K \n",
+ "Total estimated model params size (MB): 0 \n",
+ "Modules in train mode: 38 \n",
+ "Modules in eval mode: 0 \n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1mTrainable params\u001b[0m: 46.0 K \n",
+ "\u001b[1mNon-trainable params\u001b[0m: 0 \n",
+ "\u001b[1mTotal params\u001b[0m: 46.0 K \n",
+ "\u001b[1mTotal estimated model params size (MB)\u001b[0m: 0 \n",
+ "\u001b[1mModules in train mode\u001b[0m: 38 \n",
+ "\u001b[1mModules in eval mode\u001b[0m: 0 \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "cbbe1de4bf8141efab18855fe74b2a5b",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Output()"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n"
+ ],
+ "text/plain": []
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "(,\n",
+ " array([[]], dtype=object))"
+ ]
+ },
+ "execution_count": 64,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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EEIIIYQQQgiJ5CKDUDZkyBDp2LFjpYdDiPTp00cWLFggu3fvTiSSMXE/IYQQQgghhBBCItPYSEmBVAdpORl5RRNCCCGEEEIIIYSQFg9FMkIIIYQQQgghhBDS4qFIRgghhBBCCCGEEBKR4cOHy09/+tNU2nr22WedkMENGzak0h6JB0UyQgghhBBCCCGEtAhOPvlk+fKXv5xKW5MnT5bPfOYz0lK48cYbZdy4cVLPsLolIYQQQgghhBBCiIjkcjnZu3evtG7d2qqiIqkv6CQjxMuauSLrF1R6FIQQQgghhBBSezTtLf9PBD7+8Y/Lc889Jz/72c+c0Eb83HPPPc7vRx55RA4//HBp166dvPjiizJv3jy56KKLpF+/ftK5c2cZP368PPnkk4Hhlmjn7rvvlksuuUQ6duwoI0aMkPvvvz/2dP773/+WAw880BkT+rr99tuL3v/Vr37l9NG+fXtnnO973/ua3/vXv/4lBx98sHTo0EF69eolp59+umzdutUq7PPII4+UTp06Sffu3eW4446ThQsXOvN00003yRtvvFE0dwAhop/+9Kcd0bBr165y6qmnOtv5HWh33XWXDBkyxJmbSy+9VDZu3CjVRt04ySZMmOD8QPElJBa7t4tsXq4edx+GT7hKj4gQQgghhBBCagMIVgtfLn+/w44VaWxltSnEsdmzZ8tBBx0kN998s/Pa22+/7fy+/vrr5cc//rHsu+++0qNHD1m8eLGce+65cssttzgi1R//+Ee54IILZNasWTJ06FBjHxCSbr31VrntttvkF7/4hXz4wx92RKaePXtGOqzXXnvNEZIgMF122WXy8ssvy5VXXukIXhD7pkyZIl/84hflT3/6kxx77LGybt06eeGFF5x9ly9fLh/84AedcUCw27x5s/MeXHJB7NmzRy6++GK54oor5N5775Vdu3bJpEmTHEEMY5g+fbo8+uijzWJht27dnN/vf//7HTEOQiNegxh22mmnOXPtHvfcuXPlH//4hzzwwAOyadMm+dSnPuUcz1/+8hepJupGJLvqqqucH0y2e6IISfQB36pubg9CCCGEEEIIafFAK2jbtq3jZOrfv7/z2jvvvOP8hmh2xhlnNG8LceeQQw5pfv7d735X/vvf/zrOsKuvvtrYBwQsCFTg+9//vvz85z93hKazzz470ljvuOMOR2j61re+5TwfOXKk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jdfUx9p52eQn27NLZONSkY1L1LiK5jhjJ1nWfcVxgzXvk5KTbN08+1xj3nxm1UhLyglICCGEEEJICyaXy8mePXustu3Tp4907Ngx8zGR8lHlK1NidJLpqi/C9eIkW98jsnSqErxsFvfetiCsQZQKY9NyJW5BZHJFOxv849m8vDhZv5/t60U2LVOJ4NPGe9zOuHLlE0VyGfflFZ1sQgWXvymyZLJKth97bLlShyHcjvUgktVKIQeSHHx+rnpHZOvaSo+EEEIIIaS2wNoB5ody/0RYs3z84x+X5557Tn72s5854Xz4ueeee5zfjzzyiBx++OHSrl07efHFF2XevHly0UUXSb9+/aRz584yfvx4efLJJwPDLdHO3XffLZdccokjno0YMULuv//+2FP673//Ww488EBnTOjr9ttvL3r/V7/6ldNH+/btnXG+733va37vX//6lxx88MHSoUMH6dWrl5x++umydavBnOLj7rvvltGjRzvtHnDAAU4//lDIv/3tb3Lsscc62xx00EHOvHrB8yOPPNIZ+4ABA+T6668vEh+bmprk1ltvlf3339/ZZujQoXLLLbcUtfHuu+/KKaec4szlIYccIq+88opkDcMt67G65R6Pgwz7hYWy+QU3hJb5F40r3xLp2Euk+1D12tq5vjZM4/OLewbBxvR60sT2UahXtxAch2HhrDs2qt87N4m06RAsxkaZP/Rd7SIZjh2ORoTcduzZsq4NUsqGharoBH72OaHSoyGEEEIIqR12bxP5/sDy9/t/y0Ta2oU8QhybPXu2I+rcfPPNzmtvv/228xsizo9//GPZd999pUePHrJ48WI599xzHeEGIs4f//hHueCCC2TWrFmOoGPipptucsSf2267TX7xi1/Ihz/8YVm4cKH07GlYaxh47bXX5NJLL5Ubb7xRLrvsMnn55ZflyiuvdAQviH1TpkyRL37xi/KnP/3JEavWrVsnL7zwgrPv8uXL5YMf/KAzDgh2mzdvdt6DSy6Mv/zlL/Ltb39bfvnLX8qhhx4qr7/+ulxxxRVOWOnll1/evN1Xv/pVRyAcM2aM3HHHHc7czJ8/3xnf0qVLnbnDODFv77zzjtMGBDUcD7jhhhvkN7/5jfzkJz+R448/3hkztvPyjW98wzknEALxGMc0d+5cad06OymLIlnNOskCLu5l03wiR4gAEeY02rKikN/K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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "train_loader = torch.utils.data.DataLoader(\n",
+ " dataset,\n",
+ " batch_size=16,\n",
+ " shuffle=True,\n",
+ ")\n",
+ "trainer = dl.Trainer(max_epochs=100, accelerator=\"auto\")\n",
+ "trainer.fit(aberration_regressor, train_loader)\n",
+ "trainer.history.plot()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 7. Validate the result\n",
+ "\n",
+ "Finally, we validate the result by plotting the predicted value of the spherical aberration against the ground truth."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbcAAAHHCAYAAAA8tRYqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9dElEQVR4nO3dCXgTdf7H8W+5b5AboUI5BBE5/nIIyqUcrq5CEVkVV1BkF0EtIqfWW4RFFlEUkVURla6sCLKCrgJyeaMoyqkiRzkUVC5Brmb+z/dXEpM2bZM2aTIz79fzhJJJmvwyTeaT3zkJlmVZAgCAgxSJdQEAAIg0wg0A4DiEGwDAcQg3AIDjEG4AAMch3AAAjkO4AQAch3ADADgO4QYAcBzCDbl68MEHJSEhQX7++edCeb4uXbqYS7TUq1dPBg4cGLHH031z++23ixPoa9G/t1v89ttvcuutt0rNmjXNax8+fLjZ/tNPP0nfvn2lSpUqZvvUqVNlxYoV5v/6Mz+fHxQ+ws1hvvnmG/PBrFu3rpQqVUpq164t3bt3l2nTpsW6aIgDb7/9tqsCLDePPfaYvPTSS3LbbbfJK6+8In/961/N9rvuukveffddGTdunNl++eWXSzzbs2eP+Zt+9dVXsS5KXElgbUnn+Oijj6Rr165yzjnnyIABA8w30vT0dPnkk09k69at8v3334f9mPqheeihh2T//v1StWpVibaTJ0+anyVKlIhazU1rhnpQiwT9Vj5s2DB5+umnxQ60lvnMM89IsI/98ePHpVixYubiBhdddJF5rR988EHAdv3cdOvWTV599VXfNo/HY96b+r4sUiT0OsHp06fNRb9oRsvnn38ubdq0kVmzZkW0VcLu3PEudonx48dLxYoVZc2aNVKpUqWA2/bt2yfx7NixY1KmTJmohZqdaejkdFA9evSolC1bNiLPE80DcDzSz0TTpk2Dbs/6+dF9n5/946YvC/GGZkkH0drZ+eefn+2DqapXrx60r2jOnDnSuHFj88G98MILZdWqVUEf++DBg+ZboT62BujNN99sAikr/barj1O6dGmpXLmyXHfddab26E9rTs2aNZMvvvhCOnXqZELtnnvuybHPTQ/uWoM899xzTTlr1aolffr0Ma/Xa/LkydKhQwfTT6LPrWWYN2+e5Fe4jxfKfty9e7fccsstUqNGDSlZsqT5W7344osB9/H27bz22muSmppqmpV1/xw+fNjs/3LlypnXfcUVV0j58uWlf//+5vdWr14t1157ram162MnJiaa5rXff//d99j6+1prU/oc3ktufW5ffvml/OlPf5IKFSqY577ssstMS4A/rQXr73744YcyYsQIqVatmgnc5ORkU+MPxebNm6Vfv37md3V/67689957wy6L972q/We6D3RfNGzYUP7xj3+Y2pf/Pt62bZssXrzYtx+8r0Nrtbqf/PdPTn1un376qflbnHXWWeY1N2/eXJ588sk8+9zC+Zxs3LjRtMjo+0DfD5MmTfLdR8ujtTaln0n/1+J2fKVwEO1n+/jjj2X9+vXmQ5GXlStXyty5c+XOO+80B4Hp06eb/oXPPvss2+/rgScpKUkmTJgga9euleeff94Eph40/GuO9913n7mvdtTrgU37+jTA9MDkH7q//PKLOVDph/rGG280B/xgMjIy5M9//rMsW7bM3DclJUWOHDkiS5YsMa+zQYMG5n56QLn66qvNwV6bjzQc9GC/aNEiufLKK8Pel+E8Xij7UQcpaDOY90uFHsTfeecdGTRokAku72AGr0ceecTU1kaOHCknTpzw1Wi1iatnz55yySWXmADWA556/fXXzZcN7T/SQNbn1n2/a9cuc5v6+9//bvpndN9pX1JeNmzYIB07djRhMnr0aClevLg899xz5qCrr7ldu3YB97/jjjvMQf6BBx6Q7du3m4EY+lp13+Tm66+/Ns+jj/+3v/3NNB1rgL/11lvmPRVOWXQfdO7c2XyR0NerYa/N9dp/tnfvXlOm8847z7x+Df86derI3XffbX63VatWvr437ae+6aabci237kd9b+qXLX1fanPmpk2bzHtEr+cknM/JgQMHzHtJv8zp/fUL1pgxY+SCCy4wnx99LQ8//LDcf//9Zt/pPlIdOnTI8+/reNrnBmd47733rKJFi5pL+/btrdGjR1vvvvuudfLkyWz31T+9Xj7//HPfth07dlilSpWykpOTfdseeOABc79bbrkl4Pf1PlWqVPFd3759u3ne8ePHB9zvm2++sYoVKxawvXPnzuYxZ8yYka1ceptevF588UVz3ylTpmS7r8fj8f3/2LFjAbfpa27WrJl16aWXBmyvW7euNWDAACsvoT5eqPtx0KBBVq1atayff/454Pevu+46q2LFir7nW758uXm8+vXrZyuDlltvGzt2bJ7lVRMmTLASEhJMebyGDRtmHiMY3a5/b6/evXtbJUqUsLZu3erbtmfPHqt8+fJWp06dfNtmzZplfrdbt24Bf5O77rrLvCcOHjxo5UYfSx/Tv5zK/7FCLcsjjzxilS1b1vr2228DHkv3mZZl586dAe+FK6+8Muh+0P3kz/t30Z/q9OnTVlJSknmMAwcO5Fhu7+enIJ+Tl19+2bftxIkTVs2aNa1rrrnGt23NmjXmfvp3wB9olnQQ/bapNTetcaxbt840X+i3fG3K+O9//5vt/u3btzdNI176LbdXr15mpJjWmPwNGTIk4Lp+Q9Tal9Y61Pz5802zj3671GkD3ot+m23UqJEsX7484Pe1hqPNKHl54403zEAWrRVk5d/co807/t92Dx06ZMqotcz8COfx8tqPerzU13HVVVeZ//vvH/376GNnfVwdEORfBn9aO8utvNoPp4+t3971+bQ2EC4t93vvvSe9e/eW+vXr+7ZrLeWGG24wgzC8f3svrTn4/010f+nj7NixI8fn0VqLNuFqc63uN3/exwqnLFpL1efVGqT/ftYBIvo4OTW7h0v3qTZrao07azdAbkP/w/2caPOrtmx4aQ2+bdu28sMPP0TkdTgZzZIOo+3v+gHSpjQNuAULFsgTTzxhpgfoUGH/DnT9MGWl/VratKMHHf3AeWU98OjBw3vg16ai7777zhxIgz2m0mYkfxq4oQwe0eYp7X/Jq1Nem4IeffRR8xq1Gc8rv3OMwnm8vPajDkbQfqCZM2eaSzBZB/xoE3Awuh+0KS2rnTt3mqYp/RKjfxN/Gp7h0nJr+XXfZ6VNYXqA1j4i7TcM5T2SE+9BOrdm9HDKou9DbebUZt9gIjWwytvfG0rzv79wPyf6t876ntP9qq8RuSPcHEqDQ4NOL3qg1VqSfqvV/pD8KFq0aNDt3iHleoDRD6H2IwW7r34D9ZdTrSQ/dDCF1la1z0L7u/QbvR4kdGh0WlpazB/PO5BBv4FrjSwYHYgQyv7RGm/WUZNaI9Fa+6+//mr6Y5o0aWIGN2i/kw4i8T5/tOX1HikM+lp1X2i/XDD6WYilcD8n8bBP7Ypwc4HWrVubn9qhnvVbZFbffvutGaSQ0zffnOjADv3AaY0jkgcQfVwdkXbq1Kls32q9tMlPRylqM6Ae/L00jPIj3McLZT/qyEYNIW0ei8bEfX2+2bNnBwyC0AEPWYVak9Vya/m3bNkSdGSjBqyORiwobzOjDg6KRFn0/aIrj0RjP/vzDmTScofzXNH4nLACSnD0uTmIttcH+0anq1KorM062j/n39ejTTsLFy6UHj165PiNMSc6mkt/Ryd8Zy2DXtf+ufy45pprTJ9EsEnS3ufR59UPuH8/oY7We/PNN/P1nOE+Xl77US/6OjQ0gx3EQx0un1t5lf9+1//7D0n38s6J02bSvB5Ty6+vQ1+7l4761NqrjtbU5uiC0uDSGrJOidCm1Zz+vqGWRfuy9O+hX0yy0teso00j4f/+7/9MQOnoy6z7MrdaVTQ+J6H+Td2GmpuD6KAL7ZvQ+UXaNKX9bjoMWodi6/DqrAM4tL9ABzT4D2FX+sELl34j1T4qHXKtByDt/Nfaina6a7+fDjbQYe3h0prIyy+/bOZP6fB2HSygAyaWLl0qQ4cONQM3dGj+lClTzJBpHWCg/So6T0nnN+WnbyLcxwtlP06cONF8+dAh64MHDzZ9n9qMqKGor0X/n1/6t9b9r/tXmyL1QK9BGqyvyzvwRcuqZdYDrU6xCEb/nlr70/DQfa39fTr8Xvsg/edaFdRTTz1lnkMDQ98nGhr6HtI5aN4lpUIty6hRo0y/ow7R1yZZfb36ftHarQ6j18eNxEo7Wlt89tlnzSChli1bms+WNl9rTVKnLQQL12h9TvQxdVDLjBkzzGNp2LVr1y7HflvX8Bs5CZt75513zJD9Jk2aWOXKlTNDpxs2bGjdcccd1k8//RR0uPOrr75qNWrUyCpZsqTVqlUr31DnrEOZ9+/fH7DdO/x727ZtAdvfeOMN65JLLjHDsfWiZdHn2bJlS8AQ5/PPPz/oa8g6FcA7zP3ee+81Q6+LFy9uhkL37ds3YFj4Cy+84Hsd+pxavqzDsMOZChDq44W6H5X+DfS+iYmJvtdx2WWXWTNnzsw25Pz111/P9vtabt2nwWzcuNEMxde/e9WqVa3Bgwdb69atyzZEXIew6/uhWrVqZpqA/+vJOhVArV271urZs6d53DJlylhdu3a1Pvroo6DvBR2Sntvw+dysX7/eTJ2oVKmSmUbRuHFj67777gu7LOrIkSPWuHHjzHtfPwO6Pzp06GBNnjw5YFpMQaYCeH3wwQdW9+7dzZQE/ds0b97cmjZtmu/2YO+Zgn5O9H2gZfe3cOFCq2nTpmY6AdMCMrG2pEvZbU1EAAgHfW4AAMch3AAAjkO4AQAch9GSLkVXKwAno+YGAHAcwg0A4DiuapbUdd30fFY60ZElawDAft0pej7Hs88+O+iZ6V0bbhpskVgPDwAQO7rEXbCzY7g23LTG5t0xkVgXDwBQePS8fVpB8R7Lc+OqcPM2RWqwEW4AYE+hdCsxoAQA4DiEGwDAcQg3AIDjuKrPLdTpAnoeNNiTnq073BOtAnAews2PhpqeNFADDvalJ26sWbMmcxkBFyPc/CYH7t2713zr16GmeU0QRHz+DfVM5HrmbKVnRgbgToTbGadPnzYHRp35XqZMmVgXB/lUunRp81MDrnr16jRRAi5F9eSMjIwM87NEiRKxLgoKyPvl5NSpU7EuCoAYIdyyoJ/G/vgbAiDcAACOQ7ghJAMHDpTevXv7rnfp0kWGDx9e6OVYsWKFqZkdPHiw0J8bgH0Qbg4IHT3Y60X7Cxs2bCgPP/ywGSATTfPnz5dHHnkkpPsSSAAKG6MlI00HpqxeLbJ3r45FF+nYUSTKI/Yuv/xymTVrlpw4cULefvttGTZsmJnMPG7cuGzz+CI1YKZy5coReRwA7uDxWPL+5n1y2XnVC6VfnJpbJM2fL1KvnkjXriI33JD5U6/r9igqWbKkmbRct25due2226Rbt27y3//+19eUOH78eDPFoXHjxr5T/vTr189MdtaQ6tWrl2zfvj1g5OiIESPM7VWqVJHRo0ebOWT+sjZLarCOGTPGzBHU8mgN8oUXXjCP21X3g4icddZZ5k2t5VI6WX7ChAmSlJRkhvC3aNFC5s2bF/A8GtbnnnuuuV0fx7+cAOwTbKkL18utL38uU5d+VyjPSbhFigZY374iu3YFbt+9O3N7lAPOnwaBdwmxZcuWyZYtW2TJkiWyaNEiMzy+Z8+e5nxIq1evlg8//FDKlStnan/e3/nnP/8pL730krz44ovywQcfyK+//ioLFizI9Tlvuukm+fe//y1PPfWUbNq0SZ577jnzuBp2b7zxhrmPlkMnyj/55JPmugbbyy+/LDNmzJANGzbIXXfdJTfeeKOsXLnSF8J9+vSRq666Sr766iu59dZbZezYsVHeewCiEWxpn+4UrbDVq1pI84gtFzl06JBWP8zPrH7//Xdr48aN5mfYTp+2rDp1tG4T/JKQYFmJiZn3i7ABAwZYvXr1Mv/3eDzWkiVLrJIlS1ojR440t9WoUcM6ceKE7/6vvPKK1bhxY3NfL729dOnS1rvvvmuu16pVy5o0aZLv9lOnTll16tTxPY/q3LmzlZKSYv6/ZcsWs1/1uYNZvny5uf3AgQO+bcePH7fKlCljffTRRwH3HTRokHX99deb/48bN85q2rRpwO1jxozJ9lgR/VsCiJiMDI81bv7XVt0xi6x6YxdZ89emR+0YnhV9bpGgfWxZa2z+NOLS0zPv16VLxJ9ea2RaS9JamTb13XDDDfLggw+avrcLLrggoJ9t3bp18v3332c7k+3x48dl69atcujQIVO7ateune+2YsWKSevWrbM1TXpprUpXAuncuXPIZdYy6Iow3bt3D9iutcdWrVqZ/2sN0L8cqn379iE/B4D4qbFN6ddCklvVKbTnJ9wiQQePRPJ+YdK+qGeffdaEmPataRh5lS1bNuC+v/32m1x44YUyZ86cbI9TrVq1Ai15FQ4th1q8eLHUrl074DbtswNgX54YB5si3CIh1AV6o7SQrwaYDuAIxf/93//J3LlzzbqLFSpUCHofXXD4008/lU6dOpnrOq3giy++ML8bjNYOtcaofWU6mCUrb83Ru8SZatq0qQmxnTt35ljjO++888zAGH+ffPJJSK8TgHuDTTGgJBJ0uH+dOrruU/DbdXtiYub9Yqx///5StWpVM0JSB5ToKX50Htqdd94pu840raakpMjEiRPlzTfflM2bN8vQoUNznaNWr149GTBggNxyyy3md7yP+Z///MfcrqM4dZSkNp/u37/f1Nq0WXTkyJFmEMns2bNNk+jatWtl2rRp5roaMmSIfPfddzJq1CgzGCUtLc0MdAEQnzxxEmyKcIsEncd2ZgRgtoDzXp86Nerz3UJdVHjVqlVyzjnnmJGIWjsaNGiQ6XPz1uTuvvtu+etf/2oCS/u4NIiSk5NzfVxtFu3bt68JwiZNmsjgwYPl6NGj5jZtdnzooYfMSMcaNWrI7bffbrbrJPD77rvPjJrUcuiITW2m1KkBSsuoIy01MHWagI6qfOyxx6K+jwDYO9hUgo4qEZc4fPiwVKxY0QyayNokpwd3rXHogbVUqVL5ewId7p+SEji4RGtsGmx9+hSw9AhVRP6WAOIu2HI7hmdFn1skaYD16lXoK5QAQKx44qzG5kW4RZoGWRSG+wNAvPHEabAp+twAAI4KNkW4AQAcFWyKcMvCReNrHIu/IeDuYFOE2xm6fJTyLh4M+9JlvZSe9geA+4JNMaDkDF2ySueA6SRjPSgWKULu27HGpsG2b98+c7oe7xcWAO4KNkW4naEraOiyUzo/aseOHbEuDgpAg03PbwfAncGmCLcsayA2atSIpkkb01o3NTbA3cGmCLcstDmSVS0AQGwbbIqOJQCAo4JNEW4AAEcFmyLcAACOCjZFuAEAHBVsinADAIiTgk0RbgDgch6HBZsi3ADAxTwODDZFuAGAS3kcGmyKcAMAF/I4ONgU4QYALuNxeLApwg0AXMTjgmCzdbhNnDjRrOQ/fPjwWBcFAGzB45Jgs224rVmzRp577jlp3rx5rIsCALbgcVGw2TLcfvvtN+nfv7/861//krPOOivWxQGAuOdxWbDZMtyGDRsmV155pXTr1i3WRQGAuOdxYbDZ7nxur732mqxdu9Y0S4bixIkT5uJ1+PDhKJYOAOKLx6XBZquaW3p6uqSkpMicOXNCPpnohAkTpGLFir5LYmJi1MsJAPHA4+JgUwmWZVliA2+++aYkJydL0aJFfdsyMjLMiEk9e7bW0Pxvy6nmpgF36NAhqVChQqGWHwAKi8ehwabHcK2ohHIMt02z5GWXXSbffPNNwLabb75ZmjRpImPGjMkWbKpkyZLmAgBu4dRgC5dtwq18+fLSrFmzgG1ly5aVKlWqZNsOAG5EsNmwzw0AkDOCzaY1t2BWrFgR6yIAQMwRbNlRcwMAGyPYgiPcAMCmCLacEW4AYEMEW+4INwCwGYItb4QbANgIwRYawg0AbIJgCx3hBgA2QLCFh3ADgDhHsIWPcAOAOEaw5Q/hBgBximBz6fJbAOA4GRkiq1eLZ89eST1QWdLSTxNs+UDNDQDixfz5IvXqiafrpZI6+8PMYLM8MiXpFMEWJmpuABAvwda3r3gskdQeQyWt1Z8yg23xE5K8cYVI1XkiffrEupS2Qc0NAOKhKTIlJXuwLZoiyRuWZ95n+PDM+yEkhBsAxJr2se3anT3YtMamLEskPd3cD6Eh3AAgxszgkZyCzd/evbEoni0RbgAQ6+H+Oioyr2BTtWoVdvFsiwElABDreWzeUZHewSNZ6VyAOnVEOnaMRTFtiZobAMTDBO0GGZnBplf8ea9PnSpStGhMympHhBsAxMPKI3/rLTJvnkjt2oF31hqbbmcaQFholgSAeFlSSwOsV6/MUZE6eET72LQpkhpb2Ag3AIi2kydFpk8Xz9atklq1vaT9XjHnJbU0yLp0iVVJHYNmSQCIptGjRcqUEc9dIyT1Wysz2HTwSMYmltSKImpuABDNYHv8cfFIQg7z2PaJTJoU61I6UoJl6dR3dzh8+LBUrFhRDh06JBUqVIh1cQA4vSlSa2wZnpwnaGsT5LFjIiVKxLq0jjuG0ywJANGgfWy5BZvStSKnT49lKR2LcAOAKDCDR0JZUmvr1lgUz/HocwOAaAz311GRZSvmvaRWgwaFXTxXoOYGANGYx/Z7CMGmfW5DhxZ2EV2BcAOAaE3QtrbkHGxqxAgGk0QJzZIAELWVR67MHO4/ZUrgiUa1xqbBxjSAqGEqAABEc0ktvxVKzOAR7WPTpkhqbFE9hlNzA4BoBpvSIBs+PFZFdCX63AAgmsGGmCDcACAfCLb4RrgBQJgItvhHuAFAGAg2eyDcACBEBJt9EG4AEAKCzV4INwDIA8FmP4QbAOSCYLMnwg0AckCw2RfhBgBBEGz2RrgBQBYEm/0RbgDgh2BzBsINAM4g2JyDswIAcCc9v9rq1SJ794rUqiWeiy+R1EWbCDaHINwAuM/8+SIpKSK7dpmrHkmQ1D6jJK1RJ4LNIQg3AO4Ltr59Rc6cp9kEW4+hmcFmeWRK/QyCzQEINwDuaorUGlvWYGv1p8xgW/yEJB/+XmTQVSJFi8a6tCgABpQAcA/tY/NvivQPtkVTJHnDcpH09Mz7wdYINwDuoYNHcgq2jSuy3Q/2RbgBcA8dFZlXsJ25H+yNPjcArmGG+3tHRQYLNh0qWaeOSMeOsSwmIoCaGwD3TNDWeWzeYNPBI1mDTU2dymASByDcALhv5ZEGGZJ86LvAO2mNbd48kT59YlVMuDHcJkyYIG3atJHy5ctL9erVpXfv3rJly5ZYFwuAHZfU+ltvke3bRZYvF0lLy/y5bRvB5iC26XNbuXKlDBs2zATc6dOn5Z577pEePXrIxo0bpWzZsrEuHgC7rRWpTY9dusS6iIiSBMs6M5vRZvbv329qcBp6nTp1Cul3Dh8+LBUrVpRDhw5JhQoVol5GALHDIsjOE84x3DbNklnpi1OVK1eOdVEAxBmCDbZplvTn8Xhk+PDhcvHFF0uzZs1yvN+JEyfMxT/1ATgbwQbb1ty07239+vXy2muv5TkIRauw3ktiYmKhlRFA4SPYYNs+t9tvv10WLlwoq1atkqSkpFzvG6zmpgFHnxvgPASb8x0Oo8/NNs2SmsF33HGHLFiwQFasWJFnsKmSJUuaCwBnI9hg23DTpsi0tDRTa9O5bj/++KPZrileunTpWBcPQIwQbLB1s2SCd2mcLGbNmiUDBw4M6TGYCgA4C8HmLoed2iwJAF4EGxw3WhKAuxFsyAvhBsBWCDaEgnADYBsEG0JFuAGwBYIN4SDcAMQ9gg3hItwAxDWCDflBuAGIWwQb8otwAxCXCDbELNyOHz9eoCcHgGAINhR6uOm51B555BGpXbu2lCtXTn744Qez/b777pMXXnihwAUC4G4EG2ISbo8++qi89NJLMmnSJClRooRvu5409Pnnn49IoQC4E8GGmIXbyy+/LDNnzpT+/ftL0aJFfdtbtGghmzdvjljBALgLwYaYhtvu3bulYcOGQZsrT506FalyAXARgg0xD7emTZvK6tWrs22fN2+etGrVKlLlAuASBBuiIexT3tx///0yYMAAU4PT2tr8+fNly5Ytprly0aJFUSkkAGci2BA3NbdevXrJW2+9JUuXLpWyZcuasNu0aZPZ1r179+iUEoDjEGyIJtuciTsSOBM3EB8INkT7GM4KJQAKFcGGuOxzK1KkiCToOzIHGRkZBS0TAIci2BC34bZgwYKA6zr8/8svv5TZs2fLQw89FMmyAXAQgg227HNLS0uTuXPnysKFCyVe0ecGxAbBBtv2uV100UWybNmySD0cAIcg2BALEQm333//XZ566imzmDIAeBFssE2f21lnnRUwoERbNY8cOSJlypSRV199NdLlA2BTBBtsFW5PPPFEQLjp6Mlq1apJu3btTPABAMEG24XbwIEDo1MSAI5AsME24fb111+H/IDNmzcvSHkAxLuTJ0WmTxfZulWkQQORoUNFzpzbkWCDraYCeCdu53VXvU88T+JmKgBQQKNHi0yZoqs1/LFNz+s4YoR4Jv6DYEPcHMNDqrlt27YtUmUDYOdge/zx7NszMsTz+GRJTWgkaQlnE2yICyGFW926daNfEgDx3RSpNbYgPJIgqT2GEmyw94ASr40bN8rOnTvlpL7p/Vx99dWRKBeAeKJ9bEG6HHzB1upPkmB5ZErFfZLc6sqYFBEoULj98MMPkpycLN98801AP5x3ekA897kByCcdPJJXsC2aIsmXNotJ8YACr1CSkpIiSUlJsm/fPjNxe8OGDbJq1Spp3bq1rFixItyHA2AHOioyr2DbuCLb/QDbLJxctWpVef/9982Qfx218tlnn0njxo3NtrvvvtucISBeMVoSyCftfihTJnPwSE7BpqMmjx3zTQsAbLVwsjY7li9f3hd0e/bs8Q062bJlS37LDCCeaWDpcP+cgk2NGEGwwb59bs2aNZN169aZpkldcmvSpElSokQJmTlzptSvXz86pQQQc2Yem3e4f9YamwbbpEmxLiKQ/3BLTU2Vo0ePmv8//PDD8uc//1k6duwoVapUMedzA+A8vpVHvMP9dVSkDh4Z3CtghRLAUScr/fXXX7OdLSAe0ecGhI8lteCKPjc9rY235uZVuXLluA82AOEj2GBXYYfbXXfdJTVq1JAbbrhB3n77bea1AQ5FsMFV4bZ371557bXXTE2tX79+UqtWLRk2bJh89NFH0SkhgEJHsMHVfW7Hjh2TBQsWSFpamixdulTq1KkjW4OsZBAv6HMD8kawwTVnBciJrlDSs2dPOXDggOzYsUM2bdpUkIcDEGMEG1zbLOmtsc2ZM0euuOIKqV27tkydOtWsN6lLcQGwJ4INThJ2ze26666TRYsWmVqb9rndd9990r59++iUDkChINggbg+3okWLyn/+8x/THKn/B2BvBBucKOxw0+ZIAM5AsMGpCjSgBIAN6dzU1avFs2evpB6oLGnppwk2OE6+BpQAsKn580Xq1RNP10sldfaHmcGmiyAnnSLY4CjU3AA3BVvfvuKxJPC0NYufyFzdv+o8kT59Yl1KICKouQFuaYpMSckebHramg3LM+8zfHjm/QC31Nx0VnioWPkDiEPax7Zrd84nGtWFitLTzf2kS5dYlxYonHCrVKlSyKv+s5AyEH/M4JGcgs3f3r2xKB4Qm3BbvvxMs4WIbN++XcaOHSsDBw70Td7++OOPZfbs2TJhwoTIlxBAwYf766jIvIJN1apV2MUD4mPh5Msuu0xuvfVWuf766wO26+LJM2fOlBUrcvjQxAEWToar57F5B494+9j8actMnToi27bpSg2xKCoQ25OVai2tdevW2bbrts8++yzchwNQWBO0G2Rk1tiydjF4r0+dSrDBMcIOt8TERPnXv/6Vbfvzzz9vbgMQpyuP/K23yLx5IrVrB95Za2y6nWkAcPM8tyeeeEKuueYaeeedd6Rdu3Zmm9bYvvvuO3njjTck2p555hl5/PHH5ccff5QWLVrItGnTpG3btlF/XsARS2ppgPXqlTkqUgePaB9bx47U2OA4+TpZaXp6ujz77LOyefNmc/28886TIUOGRL3mNnfuXLnppptkxowZJlj1VDuvv/66bNmyRapXr57n79PnBqdjrUg42eEwjuEFOhN3YdNAa9OmjTz99NPmusfjMYF6xx13mBGceSHc4MQ1Ir01MM/Fl0jqok0EGxwrqgNK1OrVq+XGG2+UDh06yO7du822V155RT744AOJlpMnT8oXX3wh3bp1820rUqSIua6DXII5ceKE2Rn+F8BJa0RK164iN9yQuVbkdfcSbEB+w0371fRcbqVLl5a1a9eaAFGapI899phEy88//2wmiNeoUSNgu17X/rdgdN6dprz3woAXOGmNSNm1y1z1SELmBO1GnVgEGchvuD366KOmz0tHTBYvXty3/eKLLzZhF0/GjRtnQtd70b5CwAlrRJrlsvyDzX8R5EfvZI1IuF7YoyV18EanTp2ybdea0cGDByVaqlatas78/dNPPwVs1+s1a9YM+jslS5Y0F8AxtI8ta40t2MojrBEJlwu75qZB8v3332fbrv1t9evXl2gpUaKEXHjhhbJs2TLfNh1Qote9y4ABjndm7cdcg83vfoBbhR1ugwcPlpSUFPn000/NYsp79uyROXPmyMiRI+W2226TaBoxYoRpDtV1LDdt2mSe7+jRo3LzzTdH9XmBuKGjIvMKtjP3A9ws7GZJHXKvNSZdY/LYsWOmiVKb/jTcdEh+NP3lL3+R/fv3y/33328GkbRs2VL+97//ZRtkAjiVGe7fZ9Qfg0eyBpt3jUidmA24WL7nuenQfG2e/O2336Rp06ZSrlw5iXfMc4OjF0H2rhHJUlpwqKjOc7vlllvkyJEjpg9MQ02XvtJg0+ZBvQ1AAelIRz27xr//nfkzIyP4IsiHvgv8PdaIBPJfc9MRi3v37s223JXOQ9PBJqdPn5Z4Rc0NtpjDpkP9z4yIVJ46iZI6/GlJ2180cIJ2lhVKWCMSTnc4jGN4sXAeVHNQL1pzK1WqlO82nVz99ttvh7S+I4A8Jmf7fd80g0fOvzoz2MSSKf1a/jFBW4OM4f5AwcKtUqVKZnSkXs4999xst+v2hx56KNSHA5DL5GzlGxXZ8syoyI9nS/L4uTEtJuC4cFu+fLmptV166aVmCa7KlSv7btP+t7p168rZZ58drXICrpmcrXIc7s/kbCCy4da5c2fzc9u2bXLOOeeYmhqACPGbdJ3rPDYmZwMhCXu05Pvvvy/zdERWFnpeNZ1cDSAfzky6znOCNpOzgeiEm660r+s8ZqWDSaJ5VgDA0Tp2zBwV2TOHYNOWEj2rBZOzgeisULJz505JSkrKtl373PQ2AOHzJBT5Y7h/sGBTU6cy1B+IVs1Na2hff/11tu3r1q2TKlWqhPtwgOv5Jmh7h/t/9FJgUySTs4Ho19yuv/56ufPOO6V8+fK+U9+sXLnSLKZ83XXXhV8CwMWyrTyi89jG/4fJ2UBhh9sjjzwi27dvNwsnFyuW+eu6kPJNN91EnxtQoGA7s/KIYrg/EJuFk7/99lvTFFm6dGm54IILTJ9bvGP5Ldgi2AAU3vJbWekqJcFWKgGQO4INiL5ioZ4kVJsjy5Yta/6fmylTpkSqbIDjEGxAHIXbl19+KadOnfL9PyesWgLkjGADbNDnZkf0uSFWCDbAJn1uAII4eVJk+nSRrVtFGjQQGTpUPMWKE2xAIQsp3PqEMXl0vp6TCnCj0aO10znz9DVneEaOktS7p0tawtkEGxBvK5RoNdB70argsmXL5PPPP/fd/sUXX5htejvg2mB7/PHAYNNFkC/7e2awWXqiUYINiNs+tzFjxsivv/4qM2bMkKJnVk3QM3EPHTrUBN/j+gGPU/S5IWpNkWXKZA82/9X9354qyV+8oyc/jGlRATsL5xge9tqSL774oowcOdIXbEr/r1ME9DbAdaZNyz3YdBHk9e9n9sUBKBRhh9vp06dl8+bN2bbrNl2GC3AV7WN+4AHf1VzPx6aDTAAUirBHS958880yaNAg2bp1q7Rt29Zs+/TTT2XixInmNsBVwda3r8iZlv08TzSqoycBxGefm9bOJk+eLE8++aTsPXPK+1q1apmzAtx9990BzZXxhj43RIw2Q9arJ7JrV2jBpp+LY8focwMK6RheoEnc+kTKLkFBuCFiVqwQ6do1tGBTo0aJTJoUm7ICDhHVASXefrelS5fKv//9b9+SW3v27JHffvstfyUG7OZMq0WewVakCMEG2KHPbceOHXL55ZfLzp075cSJE9K9e3dz4tJ//OMf5rpOEQAcr1at0Gps77wj0qNHrEoJuFbYNTftW2vdurUcOHDAnMvNKzk52UzkBtzAc/ElktpnVM7Bpi0aiYkil10Wy2ICrhV2zW316tXy0UcfSYksHeP16tWT3bt3R7JsQHwMHFm9OrMZslYtkY4dxZNQRFIXbZK0Rp0yg23xE9mDTU2dmjmQBED8h5uOltQVSbLatWuXaZ4EHDXUPyXFNyJSeeokSurwpyVtf9HMtSLrZ0jyoe8Cf69OncxgC2NNVgAxDrcePXrI1KlTZebMmea6DijRgSQPPPCAXHHFFREuHhAfc9iU6WM7/+rMYBNdK7Jl5lqRg67KVrujxgbEVthTAdLT082AEv217777zvS/6c+qVavKqlWrpHr16hKvmAqA/MxhU9kGj3w8W5KXzyXEAKeczy0xMVHWrVsnc+fONT+11qYrlvTv3z9ggAlgW1oLyy3YvINH9H5dusS0qAAiEG6nTp2SJk2ayKJFi0yY6QVw6hw2letwf7/7AbBxuBUvXlyOHz8evdIA8TAycuNGczXPeWzavwbAGfPchg0bZiZs6yolgKMGkGg/my6p9eijuQebdw6bDhwBEJfC7nNbs2aNmaz93nvvyQUXXCBly5YNuH2+HiQAp67uzxw2wJnhVqlSJbnmmmuiUxogFk2ROpct1NPWMIcNcGa4zZo1KzolAWI8MjLXYEtNzVxKizlsgLP63HRlEu1ru/jii6VNmzYyduxY+f3336NbOiBeVvdv2jRz2D/BBjgr3MaPHy/33HOPlCtXTmrXrm1OVqqDSwBXrO7PyEjAmSuUNGrUSEaOHCl///vfzXU9n9uVV15pam9F9JxVNsAKJcjKc+q0pF537x+LIAdb3V/72bZto9YGOPFkpXr+Nv+1I7t162bWldSTlAJ25PFYrO4POFTI4abz2kqVKpVtUreuWgLYMtgWrpe0T3dmru7fIIfV/efNY2Qk4OTRktp6OXDgQClZsqRvm65WMmTIkIC5bsxzg+2CrV8LVvcH3BpuAwYMyLbtxhtvjHR5gNgEm9IgYyFkwF3hxvw2ODrYADiKPYY5AgVEsAHuQrjB8Qg2wH0INzgawQa4E+EGxyLYAPci3OBIBBvgboQbHIdgA0C4wVEINgCKcINjEGwAbBVu27dvl0GDBklSUpKULl1aGjRoIA888ICcPHky1kVDnCDYABToTNyxsHnzZnOy1Oeee04aNmwo69evl8GDB8vRo0dl8uTJsS4eYoxgA5Dv87nFm8cff1yeffZZ+eGHH0L+Hc7n5jwEG+Aeh8M4htui5haMvrjKlSvnep8TJ06Yi/+OgXMQbABs3eeW1ffffy/Tpk3znRU8JxMmTDAp770kJiYWWhkRXQQbgLgNt7Fjx5qzeed20f42f7t375bLL79crr32WtPvlptx48aZGp73kp6eHuVXhMJAsAGI6z63/fv3yy+//JLrferXry8lSpQw/9+zZ4906dJFLrroInnppZekSJHwspk+N/sj2AD3OmyXPrdq1aqZSyi0xta1a1e58MILzbnlwg022B/BBiBUthhQosGmNba6deuaof9a4/OqWbNmTMuGwkGwAXBcuC1ZssQMItFLnTqBBzSbzmRAGAg2AOGyRdvewIEDTYgFu8DZCDYAjg03uBPBBiC/CDfEJYINQEEQbog7BBuAgiLcEFcINgCRQLghbhBsACKFcENcINgARBLhhpgj2ABEGuGGmCLYAEQD4YaYIdgARAvhhpgg2ABEE+GGQkewAYg2wg2FimADUBgINxQagg1AYSHcUCgINgCFiXBD1BFsAAob4YaoItgAxALhhqgh2ADECuGGqCDYAMQS4YaII9gAxBrhhogi2ADEA8INEUOwAYgXhBsigmADEE8INxQYwQYg3hBuKBCCDUA8ItyQbwQbgHhFuCFfCDYA8YxwQ9gINgDxrlisCwAbyMgQWb1aZO9e8dSsKam/VpG0NekEG4C4Rbghd/Pni6SkiOzaJR5JkNQeQyWt1Z8kQSyZ0q8lwQYgLtEsidyDrW/f7MFmeWTKoimSvO2zWJcQAIIi3JBzU6TW2CwreLBtXCEyfHjm/QAgzhBuCE772HKqsWmwWZZIenrm/QAgzhBuCE4Hj+QUbFnuBwDxhnBDUGZUZF7BpmrVikXxACBXjJZE8HlsOtw/t2DTeQB16oh07BirYgJAjqi5IfgEbZ3HpsP9Fz8hyZtWZg82NXWqSNGiMSknAOSGcEPOK4/8paUkP3y7SO3agXfUGtu8eSJ9+sSqqACQK5olkfuSWnrp1cu3QonpY9OmSGpsAOIY4Ya814rUIOvSJZZFBICw0CzpciyCDMCJCDcXI9gAOBXh5lIEGwAnI9xciGAD4HSEm8sQbADcgHBzEYINgFsQbi5BsAFwE8LNBQg2AG7DJG670pOEhrBqCMEGwI0INzuaPz/zLNm7dgWu9/jkkwHrPRJsANyKZkk7BlvfvoHBpnbvztyutxNsAFyOcLNbU6TW2Cwr+23ebcOHi+fUaYINgKvRLGkn2seWtcbmz7LEk75LUmcuk7T00wQbANei5mYnOngkFx5JkNQeQwk2AK5HuNmJjorMK9ha/Un0PNkEGwA3I9zsRIf766hIrZblFGyWR6Zc25xgA+BqhJud6Dw2He6vzgRctmBrkCHJFybGtpwAEGO2C7cTJ05Iy5YtJSEhQb766itxHZ3HNm+eSO3awYPtb71jXUIAiDnbhdvo0aPl7LPPFlfr00c8P2yT1Kff8etja0mwAYAdw+2dd96R9957TyZPnixuZiZoL9r0x6jIv7SgKRIA7DjP7aeffpLBgwfLm2++KWXKlAm5CVMvXocPHxa7Y+URAHBIzc2yLBk4cKAMGTJEWrduHfLvTZgwQSpWrOi7JCbau3ZDsAGADcJt7NixZmBIbpfNmzfLtGnT5MiRIzJu3LiwHl/vf+jQId8lPT1d7IpgA4DQJVhaLYqR/fv3yy+//JLrferXry/9+vWTt956y4SdV0ZGhhQtWlT69+8vs2fPDun5tFlSa3AadBUqVBC7INgAQMI6hsc03EK1c+fOgP6yPXv2SM+ePWXevHnSrl07qaMTmx0abgQbAIR/DLfFgJJzzjkn4Hq5cuXMzwYNGoQcbHZEsAGAgweUuBHBBgD5Z4uaW1b16tUzIyidimADgIKh5hZnCDYAKDjCLY4QbAAQGYRbnCDYACByCLc4QLABQGQRbjFGsAFA5BFuMUSwAUB0EG4xQrABQPQQbjFAsAFAdBFuhYxgA4DoI9wKEcEGAIWDcCskBBsAFB7CrRAQbABQuAi3KCPYAKDwEW5RRLABQGwQblFCsAFA7BBuUUCwAUBsEW4RRrABQOwRbhFEsAFAfCDcIoRgA4D4QbhFAMEGAPGFcCsggg0A4g/hVgAEGwDEJ8Itnwg2AIhfhFs+EGwAEN8ItzARbAAQ/wi3MBBsAGAPhFuILItgAwC7INxClJCQIPWrlpUiBBsAxL1isS6Andzasb50aVxdGlYvF+uiAAByQc0tTAQbAMQ/wg0A4DiEGwDAcQg3AIDjEG4AAMch3AAAjkO4AQAch3ADADgO4QYAcBzCDQDgOIQbAMBxCDcAgOMQbgAAxyHcAACOU8xtJxxVhw8fjnVRAABh8h67vcfy3Lgq3I4cOWJ+JiYmxrooAIACHMsrVqyY630SrFAi0CE8Ho/s2bNHypcvb86sbedvLxrQ6enpUqFCBXEz9sUf2BeB2B/O2xcaVxpsZ599thQpknuvmqtqbroz6tSpI06hb1I7v1EjiX3xB/ZFIPaHs/ZFXjU2LwaUAAAch3ADADgO4WZDJUuWlAceeMD8dDv2xR/YF4HYH+7eF64aUAIAcAdqbgAAxyHcAACOQ7gBAByHcAMAOA7h5hAnTpyQli1bmpVXvvrqK3Gj7du3y6BBgyQpKUlKly4tDRo0MCPETp48KW7wzDPPSL169aRUqVLSrl07+eyzz8RtJkyYIG3atDGrEFWvXl169+4tW7ZsiXWx4sLEiRPN8WH48OHiBoSbQ4wePdosSeNmmzdvNkusPffcc7JhwwZ54oknZMaMGXLPPfeI082dO1dGjBhhwnzt2rXSokUL6dmzp+zbt0/cZOXKlTJs2DD55JNPZMmSJXLq1Cnp0aOHHD16VNxszZo15nPRvHlzcQ2dCgB7e/vtt60mTZpYGzZs0Gkd1pdffhnrIsWNSZMmWUlJSZbTtW3b1ho2bJjvekZGhnX22WdbEyZMsNxs37595jOxcuVKy62OHDliNWrUyFqyZInVuXNnKyUlxXIDam4299NPP8ngwYPllVdekTJlysS6OHHn0KFDUrlyZXEybXb94osvpFu3bgHrqOr1jz/+WNz+91dOfw/kZtiwYXLllVcGvD/cwFULJzuNzr8fOHCgDBkyRFq3bm36nPCH77//XqZNmyaTJ08WJ/v5558lIyNDatSoEbBdr2tTrVtpE7X2L1188cXSrFkzcaPXXnvNNFNrs6TbUHOLQ2PHjjUdv7ld9KClB249/cO4cePEyULdH/52794tl19+uVx77bWmZgt31ljWr19vDvBulJ6eLikpKTJnzhwzyMhtWH4rDu3fv19++eWXXO9Tv3596devn7z11lsB56bTb/BFixaV/v37y+zZs8VN+6NEiRLm/3rOvi5dushFF10kL730Up7nfXJCs6Q2Sc+bN8+MDvQaMGCAHDx4UBYuXChuc/vtt5vXvWrVKjN61o3efPNNSU5ONscD/+ODHi/0M6EjrP1vcxrCzcZ27tzpO+2696CuI+T0IKdDwZ107rpQaY2ta9eucuGFF8qrr77q6A+vP/17t23b1tTmvU1y55xzjjnIa83XLfRwdscdd8iCBQtkxYoV0qhRI3GrI0eOyI4dOwK23XzzzdKkSRMZM2aM45tq6XOzMT14+StXrpz5qfO73BpsWmOrW7eu6WfTGp9XzZo1xcl0GoDW1LTvVUNu6tSpZvi7Hszc1hSZlpZmam061+3HH3/0neBS5z66Sfny5bMFWNmyZaVKlSqODzZFuMExdF6TDiLRS9Zwd3oDxV/+8hcT5vfff785oOuE/v/973/ZBpk43bPPPmt+6pccf7NmzTKDr+AeNEsCABzH2T3tAABXItwAAI5DuAEAHIdwAwA4DuEGAHAcwg0A4DiEGwDAcQg3wMEefPBBM6E71nRStVvOAI34QLgBIdBVP3SF9YYNG5oV1nXlDz2Viq6IcezYMbErXX9RF9LVBZbj8fGA/GL5LSAPP/zwgwmySpUqyWOPPSYXXHCBlCxZUr755huZOXOm1K5dW66++uqgv3vq1CkpXry4OOHMA96zLgB2QM0NyMPQoUOlWLFi8vnnn5vTDJ133nnmFDu9evWSxYsXy1VXXeW7r9ZatDanYaeL1I4fP95s1226oLUGROPGjc2Z0730JLP6e1999ZVvm9Z8dJvWhPxrRMuWLTOLI+spbjp06CBbtmwJKOvEiRNNrVIXzR00aJAcP348x9elz6tnUFBnnXWWeXzv+ovajKhnFNCmxKpVq5qzTeRVztwez3umgtGjR5uzYutC1tpkCkSNri0JILiff/7ZSkhIsCZMmBDS/fUjVb16devFF1+0tm7dau3YscOaP3++Vbx4ceuZZ56xtmzZYv3zn/+0ihYtar3//vvmd7Zt22Z+78svv/Q9zoEDB8y25cuXm+v6U6+3a9fOWrFihbVhwwarY8eOVocOHXy/M3fuXKtkyZLW888/b23evNm69957rfLly1stWrQIWtbTp09bb7zxhnlcLdfevXutgwcPmts6d+5slStXzho1apR5LL3kVc68Hq9ChQrWgw8+aH377bfW7NmzzX5977338vV3AfJCuAG5+OSTT8zBWgPKX5UqVayyZcuay+jRo33b9b7Dhw8PuK8G0ODBgwO2XXvttdYVV1wRdrgtXbrUd5/Fixebbb///ru53r59e2vo0KEBz6NhmFO4+T+uPp8/DaNWrVoFbAunnMEe75JLLgnY1qZNG2vMmDE5lg0oCJolgXz47LPPTPPc+eefb85o7E+bDf1t2rTJ9Nn50+u6PVzNmzf3/b9WrVrm5759+3zPoyct9de+fXvJLz3hayT5l91bfm/ZgUhjQAmQCx0dqX1HWfu2tM9NBTsBpva1haNIkczvmP5nn9KBKMH4D07Rcnn7sqIh6+sIp5zBZB1Yo+WPVtkBam5ALvSsxd27d5enn37anNk6P3QAyocffhiwTa83bdrU/L9atWrm5969e323+w/aCOd5Pv3004Btn3zySa6/4x0BmZGRkefjh1LOcB4PiCZqbkAepk+fbpoRtblRR/hp85rWYtasWSObN2/Os/lu1KhRZpRlq1atpFu3bvLWW2/J/PnzZenSpb7a30UXXWRGOiYlJZmmutTU1LDLqfPwdHSillPLO2fOHNmwYYOvlhlM3bp1TQ1q0aJFcsUVV5iylCtXLuh9QylnOI8HRFWBeuwAl9izZ491++23W0lJSWbko44kbNu2rfX4449bR48e9d1PP1ILFizI9vvTp0+36tevb3733HPPtV5++eWA2zdu3GgGhJQuXdpq2bKlGUWY10ANHdih23Sgh9f48eOtqlWrmvINGDDADHbJbUCJevjhh62aNWua0Yv6O94BICkpKdnum1c5w3m8Xr16+W4HIi1B/4lufAIAULjocwMAOA7hBgBwHMINAOA4hBsAwHEINwCA4xBuAADHIdwAAI5DuAEAHIdwAwA4DuEGAHAcwg0A4DiEGwBAnOb/AbI/4G9dpsj6AAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "test_dataset_length = 16\n",
+ "test_dataset = Aberration_dataset(data_generator=aberrated_particle, dataset_size=16)\n",
+ "\n",
+ "labels = []\n",
+ "predictions = []\n",
+ "for i in range(test_dataset.__len__()):\n",
+ " image, label = test_dataset[i]\n",
+ " prediction = model.predict(image)\n",
+ " labels.append(label)\n",
+ " predictions.append(prediction)\n",
+ "\n",
+ "plt.scatter(labels, predictions, c=\"r\", label=\"Predicted\")\n",
+ "plt.plot([-5, 5], [-5, 5])\n",
+ "plt.gca().set_aspect('equal', adjustable='box')\n",
+ "plt.xlabel(\"Ground truth\")\n",
+ "plt.ylabel(\"Predicted value\")\n",
+ "plt.title(\"Spherical aberration coefficient\") \n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "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.9.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
From 2897c3cf319c046fce9600fe04b9efb4dd03aa84 Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Sun, 16 Mar 2025 10:44:23 +0100
Subject: [PATCH 2/7] linebreaks and style
---
...GS151_characterizing_aberrations_cnn.ipynb | 49 ++++++++++++++-----
1 file changed, 36 insertions(+), 13 deletions(-)
diff --git a/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb b/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
index b65612fdd..41f88ca9c 100644
--- a/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
+++ b/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
@@ -71,7 +71,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -89,7 +89,9 @@
" radius=np.random.rand() * 1e-6 + 0.5e-6\n",
")\n",
"\n",
- "aberration = dt.SphericalAberration(coefficient=lambda: (2 * np.random.rand() - 1) * 4)\n",
+ "aberration = dt.SphericalAberration(\n",
+ " coefficient=lambda: (2 * np.random.rand() - 1) * 4\n",
+ ")\n",
"fluorescence_microscope.pupil = aberration\n",
"noise = dt.Offset(offset=0.01) >> dt.Poisson(snr=100)\n",
"\n",
@@ -109,7 +111,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
"outputs": [
{
@@ -124,7 +126,11 @@
}
],
"source": [
- "aberrated_particle = fluorescence_microscope(particle, aberration=aberration) >> noise >> normalization\n",
+ "aberrated_particle = (\n",
+ " fluorescence_microscope(particle, aberration=aberration)\n",
+ " >> noise\n",
+ " >> normalization\n",
+ ")\n",
"\n",
"for coefficient in range(-5, 5):\n",
" aberrated_particle.resolve(coefficient=coefficient)\n",
@@ -151,12 +157,19 @@
" def __init__(self, data_generator, device=\"auto\", dataset_size=32):\n",
" self.device=device\n",
" self.generate_data = data_generator\n",
+ "\n",
" dataset = []\n",
" for i in range(dataset_size):\n",
" coefficient = (2 * np.random.rand() - 1) * 4\n",
- " data = self.generate_data.resolve(coefficient=coefficient).squeeze()\n",
+ " data = self.generate_data.resolve(\n",
+ " coefficient=coefficient\n",
+ " ).squeeze()\n",
+ "\n",
" label = coefficient\n",
- " dataset.append([torch.tensor(data, dtype=torch.float32).unsqueeze(0), torch.tensor(label, dtype=torch.float32).unsqueeze(0)]) \n",
+ " dataset.append(\n",
+ " [torch.tensor(data, dtype=torch.float32).unsqueeze(0),\n",
+ " torch.tensor(label, dtype=torch.float32).unsqueeze(0)]\n",
+ " ) \n",
" \n",
" self.dataset = dataset\n",
" self.dataset_size = dataset_size\n",
@@ -181,7 +194,7 @@
},
{
"cell_type": "code",
- "execution_count": 63,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -198,7 +211,7 @@
"# Define MLP dense top.\n",
"dense_top = dl.MultiLayerPerceptron(\n",
" in_features=None,\n",
- " hidden_features=[64, 64,64 ],\n",
+ " hidden_features=[64, 64, 64],\n",
" out_features = 1,\n",
")\n",
"\n",
@@ -349,7 +362,7 @@
},
{
"cell_type": "code",
- "execution_count": 65,
+ "execution_count": null,
"metadata": {},
"outputs": [
{
@@ -365,22 +378,32 @@
],
"source": [
"test_dataset_length = 16\n",
- "test_dataset = Aberration_dataset(data_generator=aberrated_particle, dataset_size=16)\n",
+ "test_dataset = Aberration_dataset(\n",
+ " data_generator=aberrated_particle,\n",
+ " dataset_size=test_dataset_length\n",
+ ")\n",
"\n",
"labels = []\n",
"predictions = []\n",
- "for i in range(test_dataset.__len__()):\n",
+ "for i in range(test_dataset_length):\n",
" image, label = test_dataset[i]\n",
" prediction = model.predict(image)\n",
" labels.append(label)\n",
" predictions.append(prediction)\n",
"\n",
- "plt.scatter(labels, predictions, c=\"r\", label=\"Predicted\")\n",
+ "plt.scatter(\n",
+ " labels,\n",
+ " predictions,\n",
+ " c=\"r\",\n",
+ " label=\"Predicted\"\n",
+ ")\n",
+ "\n",
"plt.plot([-5, 5], [-5, 5])\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
+ "\n",
+ "plt.title(\"Spherical aberration coefficient\") \n",
"plt.xlabel(\"Ground truth\")\n",
"plt.ylabel(\"Predicted value\")\n",
- "plt.title(\"Spherical aberration coefficient\") \n",
"plt.legend()\n",
"plt.show()"
]
From 41dd1105197cf6759e7c701ab9312fbc671bae6a Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Mon, 31 Mar 2025 16:20:45 +0200
Subject: [PATCH 3/7] Added comments and working links.
---
...GS151_characterizing_aberrations_cnn.ipynb | 51 ++++++++++++++-----
1 file changed, 39 insertions(+), 12 deletions(-)
diff --git a/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb b/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
index 41f88ca9c..bd3be0c15 100644
--- a/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
+++ b/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
@@ -14,7 +14,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "
"
+ "
"
]
},
{
@@ -25,7 +25,7 @@
"\n",
"This tutorial demonstrates how to characterize the aberrations of an optical device using the image of a particle. We will specifically look at spherical aberrations, though the example can straightforwardly be extended to other aberrations.\n",
"\n",
- "It is recommended to read both [deeptrack_introdution_tutorial](./deeptrack_introdution_tutorial.ipynb) and [tracking_particle_cnn_tutorial](./tracking_particle_cnn_tutorial.ipynb) before reading this tutorial."
+ "It is recommended to read both [deeptrack_introdution_tutorial](./DTGS101_intro.ipynb) and [tracking_particle_cnn_tutorial](./DTGS121_tracking_particle_cnn.ipynb) before reading this tutorial."
]
},
{
@@ -60,10 +60,10 @@
"\n",
"We define the features needed for this example. \n",
"\n",
- "* `fluorescence_microscope` - Flourescence microscope with a pixel size of 0.1 microns and a 128x128 camera (see also [optics_example](../module-examples/optics_example.ipynb))\n",
- "* `particle` - Spherical particle roughly centered in the image, a micron out of focus (see also [features_example](../module-examples/features_example.ipynb))\n",
- "* `aberration` - Spherical aberration with a coefficient between -4 and 4 (see also [aberrations_example](../module-examples/aberrations_example.ipynb))\n",
- "* `noise` - A constant background illumantion and a Poisson noise with SNR 100 (see also [noises_example](../module-examples/noises_example.ipynb))\n",
+ "* `fluorescence_microscope` - Flourescence microscope with a pixel size of 0.1 microns and a 128x128 camera (see also [optics_example](../3-advanced-topics/DTAT323_optics.ipynb))\n",
+ "* `particle` - Spherical particle roughly centered in the image, a micron out of focus (see also [features_example](../3-advanced-topics/DTAT301_features.ipynb))\n",
+ "* `aberration` - Spherical aberration with a coefficient between -4 and 4 (see also [aberrations_example](../3-advanced-topics/DTAT325_aberrations.ipynb))\n",
+ "* `noise` - A constant background illumantion and a Poisson noise with SNR 100 (see also [noises_example](../3-advanced-topics/DTAT327_noises.ipynb))\n",
"* `normalization` - Maps the image to values between 0 and 1\n",
"\n",
"In particular, `SphericalAberration` is a wrapper of the more general `Zernike` feature, which introduces a phase to the pupil function based on the normalized Zernike polynomials. The property `coefficient` is a multiplier for the respective poynomial in the set of Zernike polynomials."
@@ -143,7 +143,8 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. Create the dataset"
+ "## 4. Create the dataset\n",
+ "Using the Pytorch `Dataset` class, we will create a dataset to use for training."
]
},
{
@@ -155,17 +156,26 @@
"class Aberration_dataset(torch.utils.data.Dataset):\n",
"\n",
" def __init__(self, data_generator, device=\"auto\", dataset_size=32):\n",
+ " \"\"\"Creates a dataset of aberrated particles on initialization.\"\"\"\n",
+ "\n",
" self.device=device\n",
" self.generate_data = data_generator\n",
"\n",
" dataset = []\n",
- " for i in range(dataset_size):\n",
+ " for _ in range(dataset_size):\n",
+ "\n",
+ " # Get aberration coefficient.\n",
" coefficient = (2 * np.random.rand() - 1) * 4\n",
+ " \n",
+ " # Image the aberrated particle for the given coefficient.\n",
" data = self.generate_data.resolve(\n",
" coefficient=coefficient\n",
" ).squeeze()\n",
"\n",
+ " # Get label.\n",
" label = coefficient\n",
+ "\n",
+ " # Append image and label to dataset.\n",
" dataset.append(\n",
" [torch.tensor(data, dtype=torch.float32).unsqueeze(0),\n",
" torch.tensor(label, dtype=torch.float32).unsqueeze(0)]\n",
@@ -180,6 +190,7 @@
" def __getitem__(self, idx):\n",
" return random.choice(self.dataset)\n",
"\n",
+ "# Initialize the dataset.\n",
"dataset = Aberration_dataset(aberrated_particle, dataset_size=256)"
]
},
@@ -208,18 +219,25 @@
"# Add maxpooling to convolutional base.\n",
"cnn_base.blocks[-1].pooled(dl.Layer(torch.nn.MaxPool2d, 2).new())\n",
"\n",
- "# Define MLP dense top.\n",
+ "# Define a dense top as a MLP.\n",
"dense_top = dl.MultiLayerPerceptron(\n",
" in_features=None,\n",
" hidden_features=[64, 64, 64],\n",
" out_features = 1,\n",
")\n",
+ "# Define the model as a Deeplay sequential block. \n",
"\n",
- "# Combine the CNN and MLP in a sequential block.\n",
"model = dl.Sequential()\n",
+ "\n",
+ "# Append the CNN block to the sequential block.\n",
"model.append(cnn_base)\n",
+ "\n",
+ "# Append the MLP to the sequential block.\n",
"model.append(dense_top)\n",
"\n",
+ "# With the sequential block encompassing our desired architecture, we compile\n",
+ "# this as a Deeplay regressor application.\n",
+ "\n",
"aberration_regressor = dl.Regressor(\n",
" model=model,\n",
" loss=torch.nn.L1Loss(),\n",
@@ -237,7 +255,7 @@
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": null,
"metadata": {},
"outputs": [
{
@@ -341,13 +359,20 @@
}
],
"source": [
+ "# Define the data loader.\n",
"train_loader = torch.utils.data.DataLoader(\n",
" dataset,\n",
" batch_size=16,\n",
" shuffle=True,\n",
")\n",
+ "\n",
+ "# Define the trainer.\n",
"trainer = dl.Trainer(max_epochs=100, accelerator=\"auto\")\n",
+ "\n",
+ "# Start training.\n",
"trainer.fit(aberration_regressor, train_loader)\n",
+ "\n",
+ "# Display Loss.\n",
"trainer.history.plot()"
]
},
@@ -357,7 +382,7 @@
"source": [
"## 7. Validate the result\n",
"\n",
- "Finally, we validate the result by plotting the predicted value of the spherical aberration against the ground truth."
+ "Finally, we validate the result by generating a new dataset and plotting the predicted values of the spherical aberration coefficient against the ground truth."
]
},
{
@@ -385,6 +410,8 @@
"\n",
"labels = []\n",
"predictions = []\n",
+ "\n",
+ "# Iterate through the dataset.\n",
"for i in range(test_dataset_length):\n",
" image, label = test_dataset[i]\n",
" prediction = model.predict(image)\n",
From 489e8f1e8570a41a9ecb85511751d9f2b260529b Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Tue, 1 Apr 2025 18:06:35 +0200
Subject: [PATCH 4/7] Rename DTGS151_characterizing_aberrations_cnn.ipynb to
DTGS126_characterizing_aberrations_cnn.ipynb
---
...ons_cnn.ipynb => DTGS126_characterizing_aberrations_cnn.ipynb} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename tutorials/1-getting-started/{DTGS151_characterizing_aberrations_cnn.ipynb => DTGS126_characterizing_aberrations_cnn.ipynb} (100%)
diff --git a/tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb b/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb
similarity index 100%
rename from tutorials/1-getting-started/DTGS151_characterizing_aberrations_cnn.ipynb
rename to tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb
From 76608ab5448dd969eba3f8394d0c28b1960fd6e6 Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Tue, 1 Apr 2025 21:27:35 +0200
Subject: [PATCH 5/7] Update README.md
---
README.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1ad6bf944..ef7796618 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,11 @@ Here you find a series of notebooks that give you an overview of the core featur
- DTGS121 **[Tracking a Point Particle with a CNN](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS121_tracking_particle_cnn.ipynb)**
- Tracking a point particle with a convolutional neural network (CNN) using simulated images in the training process.
+ Tracking a point particle with a convolutional neural network (CNN) using simulated particles resolved through a microscope with aberrations.
+
+- DTGS126 **[Characterizing aberrations with a CNN](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb)**
+
+ Characterizing spherical aberrations of an optical device with a convolutional neural network (CNN) using simulated images in the training process
- DTGS131 **[Tracking Multiple Particles with a U-Net](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS131_tracking_multiple_particles_unet.ipynb)**
From 4aa72a3f89724b3bd256e9c5506082d9112be963 Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Tue, 29 Apr 2025 11:12:00 +0200
Subject: [PATCH 6/7] added optuna tutorial
---
README.md | 4 +
...GS126_characterizing_aberrations_cnn.ipynb | 2 +-
...27_characterizing_aberrations_optuna.ipynb | 473 ++++++++++++++++++
3 files changed, 478 insertions(+), 1 deletion(-)
create mode 100644 tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb
diff --git a/README.md b/README.md
index ef7796618..16731c7c6 100644
--- a/README.md
+++ b/README.md
@@ -73,6 +73,10 @@ Here you find a series of notebooks that give you an overview of the core featur
Characterizing spherical aberrations of an optical device with a convolutional neural network (CNN) using simulated images in the training process
+- DTGS127 **[Characterizing aberrations with Optuna](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb)**
+
+ Characterizing aberrations of an optical device with the optimization framework [`Optuna`](https://optuna.org/)
+
- DTGS131 **[Tracking Multiple Particles with a U-Net](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS131_tracking_multiple_particles_unet.ipynb)**
Tracking multiple particles using a U-net trained on simulated images.
diff --git a/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb b/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb
index bd3be0c15..dd73925e3 100644
--- a/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb
+++ b/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb
@@ -23,7 +23,7 @@
"source": [
"# DeepTrack 2.0 - Characterizing aberrations\n",
"\n",
- "This tutorial demonstrates how to characterize the aberrations of an optical device using the image of a particle. We will specifically look at spherical aberrations, though the example can straightforwardly be extended to other aberrations.\n",
+ "This tutorial demonstrates how to predict the aberration coefficient of an optical device using the image of a particle. We will specifically look at spherical aberrations, though the example can straightforwardly be extended to other aberrations.\n",
"\n",
"It is recommended to read both [deeptrack_introdution_tutorial](./DTGS101_intro.ipynb) and [tracking_particle_cnn_tutorial](./DTGS121_tracking_particle_cnn.ipynb) before reading this tutorial."
]
diff --git a/tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb b/tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb
new file mode 100644
index 000000000..c917d61a5
--- /dev/null
+++ b/tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb
@@ -0,0 +1,473 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "51c7fd8d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Uncomment if running on colab"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3f8be954",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import deeptrack as dt\n",
+ "import optuna # Install optuna beforehand\n",
+ "import numpy as np\n",
+ "import random\n",
+ "from matplotlib import pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5b6e4fa0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Aberration types that can be simulated in DeepTrack2.\n",
+ "aberration_types = [\n",
+ " dt.Piston,\n",
+ " dt.VerticalTilt,\n",
+ " dt.HorizontalTilt,\n",
+ " dt.ObliqueAstigmatism,\n",
+ " dt.Defocus,\n",
+ " dt.Astigmatism,\n",
+ " dt.ObliqueTrefoil,\n",
+ " dt.VerticalComa,\n",
+ " dt.HorizontalComa,\n",
+ " dt.Trefoil,\n",
+ " dt.SphericalAberration\n",
+ "]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "79467d93",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Coefficient: -1.8500331613112628\n",
+ "Radius: 1e-06\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAa4AAAGiCAYAAAC/NyLhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1bUlEQVR4nO3dfWxc1Z3/8Y/HDxM7ie2aJHZcSJoA5aEJ2d0AXost7W6sPGyESskfQCMtRQgETapCKNt1JaBhV5vddrW/FV0W/llBV+rSFqmAiChSNiGJWEyAlAgI1CJRWEOJk22i2HnyeMY+vz+25/bMzb3z5LHHZ/x+SVeeuffOnTO3YT79nnPunRpjjBEAAJ5IVLoBAAAUg+ACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4pWLB9cQTT+gLX/iCZs2apa6uLr355puVagoAwCMVCa6f//zn2rJlix599FH9+te/1ooVK7RmzRodP368Es0BAHikphI32e3q6tJ1112nf/3Xf5UkjY+P65JLLtG3v/1t/c3f/M1UNwcA4JG6qX7D0dFR7d+/X729vcG6RCKhnp4e9fX1Rb4mlUoplUoFz8fHx3Xy5ElddNFFqqmpmfQ2AwDKyxij06dPq7OzU4lEcZ1/Ux5cv/vd7zQ2Nqb29vas9e3t7frNb34T+Zpt27Zp69atU9E8AMAU+uSTT3TxxRcX9RovZhX29vZqaGgoWAYGBirdJABAGcydO7fo10x5xTVv3jzV1tbq2LFjWeuPHTumjo6OyNckk0klk8mpaB4AYAqVMtwz5RVXQ0ODVq5cqZ07dwbrxsfHtXPnTnV3d091cwAAnpnyikuStmzZojvuuEPXXnutrr/+ev3Lv/yLzp49qzvvvLMSzQEAeKQiwXXrrbfqf//3f/XII49ocHBQf/RHf6RXXnnlggkbAACEVeQ6rokaHh5WS0tLpZsBAJigoaEhNTc3F/UaL2YVAgBgEVwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvEFwAAK8QXAAArxBcAACvlD24fvCDH6impiZrufLKK4PtIyMj2rRpky666CLNmTNHGzZs0LFjx8rdDABAlZqUiutLX/qSjh49GiyvvfZasO2BBx7QSy+9pOeee0579uzRZ599pltuuWUymgEAqEJ1k3LQujp1dHRcsH5oaEj//u//rv/8z//UX/zFX0iSnn76aV111VV644039Kd/+qeT0RwAQBWZlIrro48+Umdnp5YuXaqNGzdqYGBAkrR//36l02n19PQE+1555ZVatGiR+vr6JqMpAIAqU/aKq6urS88884yuuOIKHT16VFu3btWXv/xlvf/++xocHFRDQ4NaW1uzXtPe3q7BwcHYY6ZSKaVSqeD58PBwuZsNAPBE2YNr3bp1weNrrrlGXV1dWrx4sX7xi1+osbGxpGNu27ZNW7duLVcTAQAem/Tp8K2trfriF7+oQ4cOqaOjQ6Ojozp16lTWPseOHYscE7N6e3s1NDQULJ988skktxoAMF1NenCdOXNGhw8f1sKFC7Vy5UrV19dr586dwfb+/n4NDAyou7s79hjJZFLNzc1ZCwBgZip7V+F3v/td3XTTTVq8eLE+++wzPfroo6qtrdXtt9+ulpYW3XXXXdqyZYva2trU3Nysb3/72+ru7mZGIQCgIGUPrk8//VS33367Tpw4ofnz5+vP/uzP9MYbb2j+/PmSpP/3//6fEomENmzYoFQqpTVr1ujf/u3fyt0MAECVqjHGmEo3oljDw8NqaWmpdDMAABM0NDRU9PAP9yoEAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXgAgB4heACAHiF4AIAeIXg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rNe0t7drcHCwMg2uMPu5o/792G2Dg4NasGBB1va6ujq1tbXNiPO2du1a3XLLLVqyZIkOHz6s73//+1q3bp36+vpUW1s7Y87P+Pi47r//ft1www1atmyZJBX039Tg4GDkvy+7rZpEnSNJ+sY3vqHFixers7NT7777rr73ve+pv79fv/zlLyWV5xx5FVzItm7duuDxNddco66uLi1evFi/+MUv1NjYWMGWwVe33XZb8Hj58uW65pprdOmll2r37t1atWpVBVs2tTZt2qT3338/a8wY2eLOkTveuXz5ci1cuFCrVq3S4cOHdemll5blvb3qKpw3b55qa2svmMVz7NgxdXR0VKhV00dra6u++MUv6tChQ+ro6NDo6KhOnTqVtc9MPlf2c+f699PR0XHBRJ9MJqOTJ0/OyPO2dOlSzZs3T4cOHZI0M87P5s2btX37dr366qu6+OKLg/WF/DfV0dER+e/LbqsWcecoSldXlyRl/Rua6DnyKrgaGhq0cuVK7dy5M1g3Pj6unTt3qru7u4Itmx7OnDmjw4cPa+HChVq5cqXq6+uzzlV/f78GBgZm7LlasmSJOjo6ss7J8PCw9u3bF5yT7u5unTp1Svv37w/22bVrl8bHx4P/AGeSTz/9VCdOnNDChQslVff5McZo8+bNev7557Vr1y4tWbIka3sh/011d3frvffeywr3HTt2qLm5WVdfffXUfJBJlO8cRTlw4IAkZf0bmvA5KnEyScX87Gc/M8lk0jzzzDPmgw8+MPfcc49pbW3NmqEyUzz44INm9+7d5siRI+a///u/TU9Pj5k3b545fvy4McaYe++91yxatMjs2rXLvP3226a7u9t0d3dXuNWT6/Tp0+add94x77zzjpFk/vmf/9m888475n/+53+MMcb8wz/8g2ltbTUvvviieffdd83XvvY1s2TJEnP+/PngGGvXrjV//Md/bPbt22dee+01c/nll5vbb7+9Uh+prHKdn9OnT5vvfve7pq+vzxw5csT813/9l/mTP/kTc/nll5uRkZHgGNV6fu677z7T0tJidu/ebY4ePRos586dC/bJ999UJpMxy5YtM6tXrzYHDhwwr7zyipk/f77p7e2txEcqu3zn6NChQ+axxx4zb7/9tjly5Ih58cUXzdKlS82NN94YHKMc58i74DLGmB//+Mdm0aJFpqGhwVx//fXmjTfeqHSTKuLWW281CxcuNA0NDebzn/+8ufXWW82hQ4eC7efPnzff+ta3zOc+9znT1NRkvv71r5ujR49WsMWT79VXXzWSLljuuOMOY8z/TYl/+OGHTXt7u0kmk2bVqlWmv78/6xgnTpwwt99+u5kzZ45pbm42d955pzl9+nQFPk355To/586dM6tXrzbz58839fX1ZvHixebuu+++4P8UVuv5iTovkszTTz8d7FPIf1Mff/yxWbdunWlsbDTz5s0zDz74oEmn01P8aSZHvnM0MDBgbrzxRtPW1maSyaS57LLLzEMPPWSGhoayjjPRc8TPmgAAvOLVGBcAAAQXAMArBBcAwCsEFwDAKwQXAMArBBcAwCsEFwDAKwQXAMArBBcAwCsEFwDAKwQXAMArBBcAwCv/H86M3IJmeyYiAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "IMAGE_SIZE=256\n",
+ "\n",
+ "optics = dt.Fluorescence(\n",
+ " output_region=(0, 0, IMAGE_SIZE, IMAGE_SIZE)\n",
+ ")\n",
+ "\n",
+ "# Pick a random aberration.\n",
+ "aberration = random.choice(aberration_types)\n",
+ "\n",
+ "# Randomize the aberration strength.\n",
+ "aberration = aberration(\n",
+ " coefficient=lambda: (2 * np.random.rand() - 1) * 8\n",
+ ")\n",
+ "\n",
+ "# Modify the pupil of the microscope.\n",
+ "optics.pupil = aberration\n",
+ "\n",
+ "# Define scatterer.\n",
+ "particle = dt.Sphere(\n",
+ " position=(IMAGE_SIZE//2, IMAGE_SIZE//2, 0 ),\n",
+ " radius=1e-6\n",
+ ")\n",
+ "\n",
+ "# Image the scatterer through the aberrated microscope.\n",
+ "experimental_image = optics(particle).resolve().squeeze()\n",
+ "\n",
+ "plt.imshow(experimental_image, cmap=\"gray\")\n",
+ "print(f\"{aberration}\")\n",
+ "print(f\"Coefficient: {aberration.coefficient()}\")\n",
+ "print(f\"Radius: {particle.radius()}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bb23a687",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2025-04-25 15:36:13,118] A new study created in memory with name: no-name-75ad74ed-fd7a-44dc-9356-f3675ea8bb7e\n",
+ "[I 2025-04-25 15:36:13,215] Trial 0 finished with value: 0.011924629097666494 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': -3.599555380328461, 'radius': 1.2293279626741794e-07, 'focal_distance': -0.6241153403385722}. Best is trial 0 with value: 0.011924629097666494.\n",
+ "[I 2025-04-25 15:36:13,774] Trial 1 finished with value: 0.008264094594325755 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': -9.729524622473193, 'radius': 1.4475929836328102e-06, 'focal_distance': 0.7500847206507499}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:14,064] Trial 2 finished with value: 0.010183985930607957 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 6.928997586137616, 'radius': 7.693772929962083e-07, 'focal_distance': -0.411821807566483}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:14,182] Trial 3 finished with value: 0.011900508988412967 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': -9.962018413925492, 'radius': 2.5895731274690373e-07, 'focal_distance': -0.718879545670668}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:14,874] Trial 4 finished with value: 0.03370207578052056 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': -8.398398841298276, 'radius': 1.992386251490544e-06, 'focal_distance': 0.29204820990428915}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:15,075] Trial 5 finished with value: 0.010870414888250718 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': -0.028288980214785653, 'radius': 5.637537939720527e-07, 'focal_distance': 0.07778752452692594}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:15,323] Trial 6 finished with value: 0.00941259509531408 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': -3.33760271057362, 'radius': 6.197226262908769e-07, 'focal_distance': -0.6051278175106964}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:15,493] Trial 7 finished with value: 0.011161584451778193 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': 4.241631690429127, 'radius': 4.837607395444663e-07, 'focal_distance': -0.5833706035452901}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:16,150] Trial 8 finished with value: 0.05039915532235815 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': 5.006565715077658, 'radius': 1.992398871518742e-06, 'focal_distance': -0.3191571489929548}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:16,768] Trial 9 finished with value: 0.031108269576786963 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': 7.550249000661001, 'radius': 1.8889631053246024e-06, 'focal_distance': -0.18807564320451364}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:17,283] Trial 10 finished with value: 0.0089646869822343 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': -6.218271285667457, 'radius': 1.4002868069425623e-06, 'focal_distance': 0.9760108049203757}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:17,801] Trial 11 finished with value: 0.008987715758397475 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': -6.1904226007522585, 'radius': 1.401451026474643e-06, 'focal_distance': 0.999381560322665}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:18,298] Trial 12 finished with value: 0.013271669321880421 and parameters: {'aberration_name': 'Defocus', 'coefficient': -5.674418724252254, 'radius': 1.4023771279646647e-06, 'focal_distance': 0.9655624424645384}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:18,757] Trial 13 finished with value: 0.02749906651525464 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': -0.8130707639541832, 'radius': 1.2239932949480766e-06, 'focal_distance': 0.6265717771529262}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:19,342] Trial 14 finished with value: 0.01807416393390598 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': -7.828230235398106, 'radius': 1.6470297431542382e-06, 'focal_distance': 0.603216122185086}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:19,709] Trial 15 finished with value: 0.02287310244697583 and parameters: {'aberration_name': 'Piston', 'coefficient': -9.774812189096625, 'radius': 1.0167976616157017e-06, 'focal_distance': 0.6726305163305203}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:20,274] Trial 16 finished with value: 0.024380477699889047 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': -4.0654565197657195, 'radius': 1.644392671261367e-06, 'focal_distance': -0.9610846135466615}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:20,633] Trial 17 finished with value: 0.008430818981287507 and parameters: {'aberration_name': 'Trefoil', 'coefficient': -6.6535477712700235, 'radius': 9.99821211163407e-07, 'focal_distance': 0.28696248446351486}. Best is trial 1 with value: 0.008264094594325755.\n",
+ "[I 2025-04-25 15:36:20,955] Trial 18 finished with value: 0.00626684625557067 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.7818453094984044, 'radius': 9.077694389647207e-07, 'focal_distance': 0.30429898602714467}. Best is trial 18 with value: 0.00626684625557067.\n",
+ "[I 2025-04-25 15:36:21,275] Trial 19 finished with value: 0.0060957505475993535 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.444412853975215, 'radius': 8.911385833708581e-07, 'focal_distance': 0.4478504788987705}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:21,599] Trial 20 finished with value: 0.006785904150483707 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.6536491303359933, 'radius': 8.4453041490911e-07, 'focal_distance': 0.34553601216381286}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:21,909] Trial 21 finished with value: 0.0066111694030528325 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.193237019420437, 'radius': 8.184569428875262e-07, 'focal_distance': 0.3430530196325346}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:22,241] Trial 22 finished with value: 0.006524861015899042 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.9119057768888872, 'radius': 8.300668258429413e-07, 'focal_distance': 0.08058262793131712}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:22,646] Trial 23 finished with value: 0.022075179047821896 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.1520244010182692, 'radius': 1.1628698531842643e-06, 'focal_distance': 0.009452105068205874}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:22,940] Trial 24 finished with value: 0.010940985494733636 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 9.997027009269008, 'radius': 7.124422240039038e-07, 'focal_distance': 0.15910297753110342}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:23,110] Trial 25 finished with value: 0.011023598211137606 and parameters: {'aberration_name': 'Trefoil', 'coefficient': -1.5080804465236908, 'radius': 3.844740907025986e-07, 'focal_distance': -0.11337121256060184}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:23,481] Trial 26 finished with value: 0.007244592999375481 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.216438273726638, 'radius': 9.505792544530005e-07, 'focal_distance': 0.49047195365571283}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:23,887] Trial 27 finished with value: 0.017541855768198892 and parameters: {'aberration_name': 'Defocus', 'coefficient': 1.5259879724164023, 'radius': 1.1827602525042427e-06, 'focal_distance': 0.5219356412404417}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:24,133] Trial 28 finished with value: 0.011356586164835555 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 5.5874043913461335, 'radius': 6.454922147562441e-07, 'focal_distance': 0.1529431060400951}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:24,216] Trial 29 finished with value: 0.011923676041727005 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 3.2131170107843134, 'radius': 1.305106243542303e-07, 'focal_distance': -0.15449220277608983}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:24,549] Trial 30 finished with value: 0.017232930235155108 and parameters: {'aberration_name': 'Piston', 'coefficient': -2.536224618467755, 'radius': 8.894374792514233e-07, 'focal_distance': 0.8104867673709182}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:24,858] Trial 31 finished with value: 0.010589028587587786 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 0.849018517578968, 'radius': 8.007287956838539e-07, 'focal_distance': 0.42354349402430025}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:25,241] Trial 32 finished with value: 0.007408810789310801 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.411944513584815, 'radius': 1.0688344858586687e-06, 'focal_distance': 0.19605691791866459}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:25,424] Trial 33 finished with value: 0.010821256309637964 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 0.15574331631610283, 'radius': 4.96510876383601e-07, 'focal_distance': 0.3745760932526383}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:25,727] Trial 34 finished with value: 0.011432208371988311 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': 6.922766870945598, 'radius': 7.204610743487158e-07, 'focal_distance': 0.2423382086823468}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:26,182] Trial 35 finished with value: 0.022298728605882858 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': 1.9612337370707607, 'radius': 1.251731429495163e-06, 'focal_distance': 0.03452107798390469}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:26,491] Trial 36 finished with value: 0.020026899799284462 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': 3.4157350261922073, 'radius': 8.955192664552036e-07, 'focal_distance': 0.7927796115757926}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:26,647] Trial 37 finished with value: 0.011236094833869368 and parameters: {'aberration_name': 'Trefoil', 'coefficient': -1.2119608290753718, 'radius': 3.549589126394021e-07, 'focal_distance': 0.45893260206226705}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:26,933] Trial 38 finished with value: 0.01825836005978634 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': 5.780455692801406, 'radius': 7.723802851110276e-07, 'focal_distance': -0.09823370893837582}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:27,357] Trial 39 finished with value: 0.027862107983264998 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 0.11037229163942408, 'radius': 1.111604493375592e-06, 'focal_distance': -0.3447508336990119}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:27,606] Trial 40 finished with value: 0.010401036632501099 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.057553620766834, 'radius': 6.151011183123116e-07, 'focal_distance': 0.10873354312114195}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:27,907] Trial 41 finished with value: 0.0067352940736992275 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.6128692913200555, 'radius': 8.458187800486258e-07, 'focal_distance': 0.33423547430946543}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:28,244] Trial 42 finished with value: 0.00615789799787966 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.903256142404807, 'radius': 9.390317663438377e-07, 'focal_distance': 0.31610066407651993}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:28,621] Trial 43 finished with value: 0.007242701576291441 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.802059366650264, 'radius': 1.0053268214093684e-06, 'focal_distance': 0.2134035662344687}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:29,047] Trial 44 finished with value: 0.03333194777736326 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 0.7940726570438819, 'radius': 1.2700231420670033e-06, 'focal_distance': 0.545637965465742}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:29,283] Trial 45 finished with value: 0.013766496057882154 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': 3.4218306622420402, 'radius': 6.870691448752845e-07, 'focal_distance': 0.7051370385270438}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:29,505] Trial 46 finished with value: 0.01181203999464866 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': 1.739661402101536, 'radius': 5.443596651916849e-07, 'focal_distance': -0.024156284679075754}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:29,833] Trial 47 finished with value: 0.010742248902417711 and parameters: {'aberration_name': 'Defocus', 'coefficient': 6.206283152503902, 'radius': 9.467443224167829e-07, 'focal_distance': 0.400845622620589}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:30,207] Trial 48 finished with value: 0.010660677186319089 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': 8.28818908353734, 'radius': 1.0974465524913483e-06, 'focal_distance': -0.2731887355472671}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:30,675] Trial 49 finished with value: 0.0422382160052764 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': -0.3906482726712863, 'radius': 1.332819124819642e-06, 'focal_distance': 0.27375937902811204}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:30,937] Trial 50 finished with value: 0.010628079380475977 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': 4.730471610863904, 'radius': 7.971778503502338e-07, 'focal_distance': 0.0860444093293451}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:31,241] Trial 51 finished with value: 0.006702231957803511 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.8480460420429927, 'radius': 8.704809288799353e-07, 'focal_distance': 0.3223210463243591}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:31,581] Trial 52 finished with value: 0.0064659079608639135 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.283810892969774, 'radius': 9.442526148054968e-07, 'focal_distance': 0.5780714379652543}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:31,910] Trial 53 finished with value: 0.006836510865625823 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.7798155524171175, 'radius': 9.605065738923517e-07, 'focal_distance': 0.6086582164187367}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:32,287] Trial 54 finished with value: 0.009726750087870809 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.876850538004019, 'radius': 1.058025807267728e-06, 'focal_distance': 0.557249728540401}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:32,586] Trial 55 finished with value: 0.010945020092832844 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 0.6001480616984429, 'radius': 7.631368756624061e-07, 'focal_distance': 0.7281010685163929}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:33,135] Trial 56 finished with value: 0.0642934437946593 and parameters: {'aberration_name': 'Piston', 'coefficient': 2.1801591040858646, 'radius': 1.5718737316163758e-06, 'focal_distance': 0.8699741924151138}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:33,542] Trial 57 finished with value: 0.014089184019640023 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': -1.8835740309476563, 'radius': 1.1588435014651799e-06, 'focal_distance': 0.45026257871441905}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:33,884] Trial 58 finished with value: 0.010951187118336822 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.3141497083248572, 'radius': 9.513909163258613e-07, 'focal_distance': 0.2741501185368491}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:34,143] Trial 59 finished with value: 0.01059481993652751 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 5.055593649892304, 'radius': 6.264525786774588e-07, 'focal_distance': 0.6564393499251087}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:34,463] Trial 60 finished with value: 0.015723096982607227 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': -0.5789343477016078, 'radius': 8.961019714278655e-07, 'focal_distance': -0.7053275340337652}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:34,775] Trial 61 finished with value: 0.00713623378443957 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.927480562927933, 'radius': 8.464878193738954e-07, 'focal_distance': 0.36863572729499255}. Best is trial 19 with value: 0.0060957505475993535.\n",
+ "[I 2025-04-25 15:36:35,142] Trial 62 finished with value: 0.0060433402210424685 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.0326619848644962, 'radius': 1.0319460308828274e-06, 'focal_distance': 0.3239384023853169}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:35,514] Trial 63 finished with value: 0.006910450918290627 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.201825182075886, 'radius': 1.0011207941371777e-06, 'focal_distance': 0.15645964676594099}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:35,807] Trial 64 finished with value: 0.009275357132081786 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.638858488707263, 'radius': 7.142998631871224e-07, 'focal_distance': 0.5126048001400816}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:36,191] Trial 65 finished with value: 0.006301179942595916 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 2.377400697517899, 'radius': 1.0549255934419378e-06, 'focal_distance': -0.05570652578292125}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:36,608] Trial 66 finished with value: 0.00782298409108329 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 1.5588295807920893, 'radius': 1.127277765959842e-06, 'focal_distance': -0.04466909682637793}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:37,007] Trial 67 finished with value: 0.009445726483505107 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 5.338204151719371, 'radius': 1.0618675121151294e-06, 'focal_distance': -0.22102258280500275}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:37,516] Trial 68 finished with value: 0.008539872480166018 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 2.9972792609628467, 'radius': 1.3174109496907843e-06, 'focal_distance': 0.08903961022225826}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:37,954] Trial 69 finished with value: 0.010996332523533473 and parameters: {'aberration_name': 'Defocus', 'coefficient': 6.194436567403015, 'radius': 1.1966617780445677e-06, 'focal_distance': 0.01468160694228221}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:38,307] Trial 70 finished with value: 0.01798912093310478 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': 0.5613771345105503, 'radius': 9.0775058170646e-07, 'focal_distance': 0.21087283455000203}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:38,629] Trial 71 finished with value: 0.007194034839812431 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.6130319899471655, 'radius': 8.088510891614614e-07, 'focal_distance': 0.4232034865682148}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:39,016] Trial 72 finished with value: 0.0069450442994966706 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.1942030496486558, 'radius': 1.0192142760693915e-06, 'focal_distance': -0.4949498067117596}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:39,753] Trial 73 finished with value: 0.046192169737881865 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 4.493704066480079, 'radius': 2.077456596900223e-06, 'focal_distance': 0.4757825964379241}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:40,119] Trial 74 finished with value: 0.01329966830299103 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.0898938503901767, 'radius': 9.683987273203483e-07, 'focal_distance': 0.5766896575009753}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:40,400] Trial 75 finished with value: 0.010313072672602196 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 3.6820175256325474, 'radius': 7.512800995803e-07, 'focal_distance': 0.3044952827393969}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:40,777] Trial 76 finished with value: 0.02757838442871702 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': 2.430606429875305, 'radius': 1.0456675787317343e-06, 'focal_distance': 0.3777417538430785}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:41,025] Trial 77 finished with value: 0.008851456115172317 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': 3.186230254281075, 'radius': 6.7478010926866e-07, 'focal_distance': 0.15585258567768812}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:41,349] Trial 78 finished with value: 0.015500826240152142 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 0.09255483153468935, 'radius': 8.400836317197108e-07, 'focal_distance': -0.07898669185197546}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:41,733] Trial 79 finished with value: 0.01855423526417475 and parameters: {'aberration_name': 'Piston', 'coefficient': 1.4521951005585532, 'radius': 9.254720584810402e-07, 'focal_distance': 0.22958369162749181}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:42,197] Trial 80 finished with value: 0.010237677212180642 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': 4.078020523822742, 'radius': 1.1179547539374334e-06, 'focal_distance': 0.11730254097042475}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:42,508] Trial 81 finished with value: 0.006492976669691502 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.624498184275166, 'radius': 8.647661775736472e-07, 'focal_distance': 0.34919768370234894}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:42,729] Trial 82 finished with value: 0.009590980446200754 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.04750803603413, 'radius': 5.755897073660187e-07, 'focal_distance': 0.34817577706426095}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:43,041] Trial 83 finished with value: 0.007825746898062695 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.348584277255751, 'radius': 8.27798282237555e-07, 'focal_distance': 0.055408094868270016}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:43,358] Trial 84 finished with value: 0.00624014574681007 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.610489554604751, 'radius': 8.875633508442697e-07, 'focal_distance': 0.49362267823318856}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:43,700] Trial 85 finished with value: 0.006720149237872233 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.014650479062201, 'radius': 8.871743186313147e-07, 'focal_distance': 0.4227837496552295}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:44,052] Trial 86 finished with value: 0.0144305044862169 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.0134404454412709, 'radius': 9.83077577050934e-07, 'focal_distance': 0.5105334361627587}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:44,713] Trial 87 finished with value: 0.017970873667473266 and parameters: {'aberration_name': 'Trefoil', 'coefficient': -8.757208966451413, 'radius': 1.8523164311383722e-06, 'focal_distance': 0.6231890379058538}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:45,001] Trial 88 finished with value: 0.009426181355674534 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.375731647867013, 'radius': 7.401030904417403e-07, 'focal_distance': 0.4766002417771423}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:45,361] Trial 89 finished with value: 0.00624882550478118 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.573541524227425, 'radius': 1.0260761482088191e-06, 'focal_distance': 0.2658527142161652}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:45,776] Trial 90 finished with value: 0.0072694391149632194 and parameters: {'aberration_name': 'Trefoil', 'coefficient': -4.9828938856920635, 'radius': 1.2260759960999435e-06, 'focal_distance': 0.6778938190289489}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:46,134] Trial 91 finished with value: 0.011825591949542087 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.7726400173812817, 'radius': 1.0888631381680397e-06, 'focal_distance': 0.2531475037171163}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:46,492] Trial 92 finished with value: 0.006380675122390396 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.5357562861812952, 'radius': 1.0328421139219097e-06, 'focal_distance': 0.3147409537420132}. Best is trial 62 with value: 0.0060433402210424685.\n",
+ "[I 2025-04-25 15:36:46,859] Trial 93 finished with value: 0.0060362960126108525 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.6081696541134742, 'radius': 1.0074595727882954e-06, 'focal_distance': 0.3150056137295342}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:47,211] Trial 94 finished with value: 0.007070842867089519 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': 3.7779677459463676, 'radius': 1.0317595857663446e-06, 'focal_distance': 0.31829211592593676}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:47,592] Trial 95 finished with value: 0.010284635023305913 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.4489150471220578, 'radius': 1.168287134178076e-06, 'focal_distance': 0.401769833112191}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:47,917] Trial 96 finished with value: 0.008826121436337835 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 3.3322234781457394, 'radius': 9.324867212594758e-07, 'focal_distance': 0.17794045186960478}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:48,300] Trial 97 finished with value: 0.006784382795387847 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.887433932207587, 'radius': 1.1435975793592794e-06, 'focal_distance': 0.2644950526918924}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:48,656] Trial 98 finished with value: 0.022086711966166194 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': 0.4761158994422039, 'radius': 1.0007462837743068e-06, 'focal_distance': 0.5798802005526574}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:49,009] Trial 99 finished with value: 0.00900513146617011 and parameters: {'aberration_name': 'Defocus', 'coefficient': 3.8978241945540977, 'radius': 1.066083989440014e-06, 'focal_distance': 0.4487841189999457}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:49,334] Trial 100 finished with value: 0.023157317918245508 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': 1.7610536629382274, 'radius': 9.73007803640919e-07, 'focal_distance': 0.2774877158329272}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:49,626] Trial 101 finished with value: 0.006337226155281492 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.6999470090314617, 'radius': 8.836313288998164e-07, 'focal_distance': 0.36698195375118847}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:49,978] Trial 102 finished with value: 0.006366765356152026 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.9241809492084743, 'radius': 9.122231317835748e-07, 'focal_distance': 0.39520167510609566}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:50,274] Trial 103 finished with value: 0.0076955100237356446 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.752999693953005, 'radius': 7.825206440272186e-07, 'focal_distance': 0.3900989744131818}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:50,677] Trial 104 finished with value: 0.009467946226180463 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.3565057091846013, 'radius': 9.209341472841774e-07, 'focal_distance': 0.5320252560771802}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:51,081] Trial 105 finished with value: 0.007704889210954499 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.1074195079037104, 'radius': 1.031535621680613e-06, 'focal_distance': 0.30781928964971667}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:51,495] Trial 106 finished with value: 0.008663538337137842 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': 4.558285593788699, 'radius': 1.109825102854974e-06, 'focal_distance': 0.20698390778080517}. Best is trial 93 with value: 0.0060362960126108525.\n",
+ "[I 2025-04-25 15:36:51,801] Trial 107 finished with value: 0.005893391160155069 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.8900884725125158, 'radius': 8.644690923423403e-07, 'focal_distance': 0.12747410042496454}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:52,109] Trial 108 finished with value: 0.008001963339380606 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 3.5715849501069883, 'radius': 8.633729394950468e-07, 'focal_distance': 0.23197286019353863}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:52,411] Trial 109 finished with value: 0.007219316259394995 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.939262708913993, 'radius': 7.985504456967229e-07, 'focal_distance': 0.1459092641865442}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:52,718] Trial 110 finished with value: 0.006976705538430901 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.2650937070627566, 'radius': 8.788095256542494e-07, 'focal_distance': 0.43057693349605813}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:53,068] Trial 111 finished with value: 0.00608778642107444 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.321028834961615, 'radius': 9.840132718127059e-07, 'focal_distance': 0.302085877494934}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:53,396] Trial 112 finished with value: 0.02117089515472972 and parameters: {'aberration_name': 'Piston', 'coefficient': 2.009827441980579, 'radius': 9.880062933475702e-07, 'focal_distance': -0.9687110800990861}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:53,717] Trial 113 finished with value: 0.0061265140908147156 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 2.3866503101740406, 'radius': 9.247320854812066e-07, 'focal_distance': 0.4761641774661508}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:54,045] Trial 114 finished with value: 0.006370091733132501 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 2.2473746658645575, 'radius': 9.672919447153585e-07, 'focal_distance': 0.3602642168108534}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:54,418] Trial 115 finished with value: 0.011945930568782138 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 1.6949978505421668, 'radius': 1.078928425911402e-06, 'focal_distance': 0.48436572979733356}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:54,789] Trial 116 finished with value: 0.013867185557028235 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 0.8308185028995854, 'radius': 9.224930128071505e-07, 'focal_distance': 0.04288640651411729}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:55,113] Trial 117 finished with value: 0.0093782822542119 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 4.0680779368279225, 'radius': 8.270182796521309e-07, 'focal_distance': -0.024088547894638768}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:55,393] Trial 118 finished with value: 0.009460514763588538 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': 2.46734001043653, 'radius': 7.002095407263413e-07, 'focal_distance': 0.1875251828746135}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:55,777] Trial 119 finished with value: 0.020570066069638564 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': -0.1921058880640243, 'radius': 9.892901901911984e-07, 'focal_distance': 0.24905953385051538}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:56,114] Trial 120 finished with value: 0.007385573744015816 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 3.4089652784237066, 'radius': 8.739602131846476e-07, 'focal_distance': -0.18233311384908985}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:56,462] Trial 121 finished with value: 0.006337291162183346 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.052893357433113, 'radius': 9.293954530691392e-07, 'focal_distance': 0.39849069724340214}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:56,844] Trial 122 finished with value: 0.006172193161574118 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.0737258748019367, 'radius': 9.493640433772741e-07, 'focal_distance': 0.29105288198180035}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:57,234] Trial 123 finished with value: 0.00636811933527713 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.7429322750444087, 'radius': 1.0352881092302052e-06, 'focal_distance': 0.28547175097546845}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:57,654] Trial 124 finished with value: 0.008738460798845198 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.156491235340532, 'radius': 1.077910406523757e-06, 'focal_distance': 0.34586134559466425}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:58,027] Trial 125 finished with value: 0.008025258753893098 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 5.387692791161114, 'radius': 9.55695196116182e-07, 'focal_distance': 0.12101958021953751}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:58,301] Trial 126 finished with value: 0.007572875066709334 and parameters: {'aberration_name': 'ObliqueAstigmatism', 'coefficient': 1.6372617481518184, 'radius': 7.760692115452961e-07, 'focal_distance': 0.4504133126787113}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:58,622] Trial 127 finished with value: 0.006183157289013502 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.5750293747767925, 'radius': 8.965429361579599e-07, 'focal_distance': 0.3124086539405967}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:58,997] Trial 128 finished with value: 0.008193004677391626 and parameters: {'aberration_name': 'SphericalAberration', 'coefficient': 3.2987200562439805, 'radius': 1.0104211666415665e-06, 'focal_distance': 0.28942551318705234}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:59,391] Trial 129 finished with value: 0.00668258729284354 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.441379361124071, 'radius': 1.1378181542919707e-06, 'focal_distance': 0.21777735347355226}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:36:59,731] Trial 130 finished with value: 0.017754577465247164 and parameters: {'aberration_name': 'HorizontalTilt', 'coefficient': 0.3770643670913496, 'radius': 9.033278595383818e-07, 'focal_distance': 0.5091923794033744}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:00,056] Trial 131 finished with value: 0.006960573805948325 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.7387201750642, 'radius': 8.331689636574168e-07, 'focal_distance': 0.33494767788361673}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:00,384] Trial 132 finished with value: 0.006041379249823702 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.338587304706394, 'radius': 8.895798975860345e-07, 'focal_distance': 0.361440237716806}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:00,726] Trial 133 finished with value: 0.00599459361936321 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.3138129030205437, 'radius': 9.577507038525952e-07, 'focal_distance': 0.31035902349165445}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:01,068] Trial 134 finished with value: 0.012875648472267664 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.1186970146384025, 'radius': 9.550827532828226e-07, 'focal_distance': 0.257954584183935}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:01,368] Trial 135 finished with value: 0.006389901009268892 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.9571969944170013, 'radius': 8.436376101613204e-07, 'focal_distance': 0.32614440121321253}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:01,692] Trial 136 finished with value: 0.0060898934203332524 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.1512625300475956, 'radius': 9.94143782223166e-07, 'focal_distance': 0.428507278138109}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:02,034] Trial 137 finished with value: 0.006124730802960439 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.194986584757021, 'radius': 9.94202590329618e-07, 'focal_distance': 0.43551997625317485}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:02,374] Trial 138 finished with value: 0.006829475605838383 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.9398015645059514, 'radius': 9.850696113697406e-07, 'focal_distance': 0.47097206734061275}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:02,633] Trial 139 finished with value: 0.00862223935614223 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.279925745255269, 'radius': 7.517423226036803e-07, 'focal_distance': 0.4132214437528485}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:02,967] Trial 140 finished with value: 0.0068927671121795835 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.5830079492631848, 'radius': 9.412790844718719e-07, 'focal_distance': -0.8731208156201893}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:03,326] Trial 141 finished with value: 0.005942946020843103 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.94175192773441, 'radius': 1.001742837518875e-06, 'focal_distance': 0.4439223115028339}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:03,618] Trial 142 finished with value: 0.006781138716456486 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.085254324244182, 'radius': 8.960146743827975e-07, 'focal_distance': 0.4433339964821486}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:03,984] Trial 143 finished with value: 0.006133943160722171 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.4188832723152336, 'radius': 1.000322021018667e-06, 'focal_distance': 0.3724269257150014}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:04,343] Trial 144 finished with value: 0.007711475831427344 and parameters: {'aberration_name': 'Defocus', 'coefficient': 2.264552173525698, 'radius': 1.0899980976500782e-06, 'focal_distance': 0.5329723522002812}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:04,692] Trial 145 finished with value: 0.011701147483891021 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.3785536435552623, 'radius': 1.0016967623481811e-06, 'focal_distance': 0.3759241256856529}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:05,051] Trial 146 finished with value: 0.028802174686185216 and parameters: {'aberration_name': 'VerticalTilt', 'coefficient': 3.0024353963886727, 'radius': 1.0557596775517667e-06, 'focal_distance': 0.4241102872893829}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:05,376] Trial 147 finished with value: 0.007272001646696751 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 4.250909478378036, 'radius': 9.503140055570344e-07, 'focal_distance': 0.3628368301650172}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:05,743] Trial 148 finished with value: 0.006923044402646085 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 3.5893280644687238, 'radius': 1.0134327210896647e-06, 'focal_distance': 0.30854198789399084}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:06,076] Trial 149 finished with value: 0.007212173750958781 and parameters: {'aberration_name': 'Astigmatism', 'coefficient': 2.249248122648443, 'radius': 9.668757608830382e-07, 'focal_distance': 0.5593395633671986}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:06,376] Trial 150 finished with value: 0.0068342562367680664 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.7354269990787314, 'radius': 8.063417925675678e-07, 'focal_distance': 0.39356189295446375}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:06,676] Trial 151 finished with value: 0.0064100627672335556 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.7204380299489146, 'radius': 8.776998522736799e-07, 'focal_distance': 0.48827448105777393}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:07,010] Trial 152 finished with value: 0.0059348980087656905 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.537232487039453, 'radius': 9.229028370919654e-07, 'focal_distance': 0.44244139274019645}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:07,334] Trial 153 finished with value: 0.0067415257380064085 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.242015572506859, 'radius': 9.112454995236634e-07, 'focal_distance': 0.4495781389869445}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:07,777] Trial 154 finished with value: 0.008768499342595305 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.9473223192472608, 'radius': 1.0440055597727863e-06, 'focal_distance': 0.33383220589048235}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:08,146] Trial 155 finished with value: 0.019115495392834737 and parameters: {'aberration_name': 'Piston', 'coefficient': 2.458181550228834, 'radius': 9.392555260546641e-07, 'focal_distance': 0.37417138799465044}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:08,569] Trial 156 finished with value: 0.00653103251705973 and parameters: {'aberration_name': 'ObliqueTrefoil', 'coefficient': 3.896318176014122, 'radius': 1.106863866209192e-06, 'focal_distance': 0.4193888730948478}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:08,903] Trial 157 finished with value: 0.008756956736138907 and parameters: {'aberration_name': 'HorizontalComa', 'coefficient': 2.827730855777549, 'radius': 8.526781228428553e-07, 'focal_distance': 0.2937177547589894}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:09,283] Trial 158 finished with value: 0.009502713334291162 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 9.91483179220255, 'radius': 9.926485252023223e-07, 'focal_distance': 0.5281586758770836}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:09,717] Trial 159 finished with value: 0.00870796067298374 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 3.092688396858672, 'radius': 1.1947056559606224e-06, 'focal_distance': 0.23180286448138016}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:10,082] Trial 160 finished with value: 0.0059467552024067465 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.2470296388505364, 'radius': 9.135950406409394e-07, 'focal_distance': 0.597921559077965}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:11,168] Trial 161 finished with value: 0.005967042736823145 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.213914608034765, 'radius': 9.27338262624597e-07, 'focal_distance': 0.620358939429325}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:11,540] Trial 162 finished with value: 0.008826994098222008 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.647805161610817, 'radius': 9.782358242710179e-07, 'focal_distance': 0.6251553291581203}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:11,899] Trial 163 finished with value: 0.006137248742225667 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.114180828105471, 'radius': 9.335934511631702e-07, 'focal_distance': 0.5745475218898208}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:12,292] Trial 164 finished with value: 0.01772482588085842 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 0.9532147372130311, 'radius': 1.0346415411194916e-06, 'focal_distance': 0.7411025849019764}. Best is trial 107 with value: 0.005893391160155069.\n",
+ "[I 2025-04-25 15:37:12,623] Trial 165 finished with value: 0.005892481726337134 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.393819688236908, 'radius': 9.22477416815019e-07, 'focal_distance': 0.6001430898102424}. Best is trial 165 with value: 0.005892481726337134.\n",
+ "[I 2025-04-25 15:37:12,920] Trial 166 finished with value: 0.006351301695406 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.023849778014478, 'radius': 8.409802073591653e-07, 'focal_distance': 0.5920321633146102}. Best is trial 165 with value: 0.005892481726337134.\n",
+ "[I 2025-04-25 15:37:13,251] Trial 167 finished with value: 0.008911642734714146 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 1.3985111484372075, 'radius': 9.090178992471653e-07, 'focal_distance': 0.6652071489497678}. Best is trial 165 with value: 0.005892481726337134.\n",
+ "[I 2025-04-25 15:37:13,547] Trial 168 finished with value: 0.006960019462134302 and parameters: {'aberration_name': 'Trefoil', 'coefficient': 2.26465482674235, 'radius': 7.955712090861588e-07, 'focal_distance': 0.8055098914804226}. Best is trial 165 with value: 0.005892481726337134.\n",
+ "[I 2025-04-25 15:37:13,914] Trial 169 finished with value: 0.0036340505807760074 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.8269390943282264, 'radius': 9.957019176913164e-07, 'focal_distance': 0.6566690237357956}. Best is trial 169 with value: 0.0036340505807760074.\n",
+ "[I 2025-04-25 15:37:14,290] Trial 170 finished with value: 0.007710995300043944 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.6473481053109058, 'radius': 1.075129002151606e-06, 'focal_distance': 0.7060518761856638}. Best is trial 169 with value: 0.0036340505807760074.\n",
+ "[I 2025-04-25 15:37:14,622] Trial 171 finished with value: 0.002668141321786725 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.622231113715967, 'radius': 9.71231233058907e-07, 'focal_distance': 0.6678968303692658}. Best is trial 171 with value: 0.002668141321786725.\n",
+ "[I 2025-04-25 15:37:14,977] Trial 172 finished with value: 0.006445628553267137 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 3.462552974835786, 'radius': 1.01304264799935e-06, 'focal_distance': 0.6378558459171861}. Best is trial 171 with value: 0.002668141321786725.\n",
+ "[I 2025-04-25 15:37:15,319] Trial 173 finished with value: 0.0021416291524758223 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.5518046080183736, 'radius': 9.854557858913137e-07, 'focal_distance': 0.847885851248093}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:15,669] Trial 174 finished with value: 0.0032510234937561857 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.7238190403446882, 'radius': 9.74852861469789e-07, 'focal_distance': 0.7689310253303521}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:15,995] Trial 175 finished with value: 0.004253672143757564 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.910445028668964, 'radius': 9.732735154578175e-07, 'focal_distance': 0.8590445832463749}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:16,302] Trial 176 finished with value: 0.0054743826315124386 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.802136325009621, 'radius': 8.681511218967805e-07, 'focal_distance': 0.9173592163181961}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:16,626] Trial 177 finished with value: 0.005458775383786801 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.7978378064765868, 'radius': 8.660787991976493e-07, 'focal_distance': 0.9143864272977322}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:16,927] Trial 178 finished with value: 0.005672696142218126 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.827321346039779, 'radius': 8.645076006568719e-07, 'focal_distance': 0.8696450928131564}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:17,231] Trial 179 finished with value: 0.006115880309422916 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.8407526063144255, 'radius': 8.466144431193151e-07, 'focal_distance': 0.8867123290052259}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:17,519] Trial 180 finished with value: 0.003540818103964805 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.889927788437199, 'radius': 8.764312280899574e-07, 'focal_distance': 0.92009004800817}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:17,871] Trial 181 finished with value: 0.0037154169885733244 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.887389803699259, 'radius': 8.640099834978378e-07, 'focal_distance': 0.9334831529658988}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:18,186] Trial 182 finished with value: 0.005801188088831397 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.4070742796991258, 'radius': 8.682448934457889e-07, 'focal_distance': 0.9464461442819286}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:18,474] Trial 183 finished with value: 0.0062202700245947385 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.3837820327095942, 'radius': 7.926874643102953e-07, 'focal_distance': 0.9381688335465966}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:18,793] Trial 184 finished with value: 0.011167897523907266 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 0.8200656721935886, 'radius': 8.752404436316099e-07, 'focal_distance': 0.88652991001855}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:19,119] Trial 185 finished with value: 0.0045892484450888536 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.8346406040491883, 'radius': 8.293028301365452e-07, 'focal_distance': 0.9951996310371812}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:19,403] Trial 186 finished with value: 0.006270039463574797 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.7994632736870848, 'radius': 7.479962176604993e-07, 'focal_distance': 0.9939181552866238}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:19,737] Trial 187 finished with value: 0.007311640937069457 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.1640199191808218, 'radius': 8.193141950673301e-07, 'focal_distance': 0.8401471454101419}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:20,051] Trial 188 finished with value: 0.0035546262182536864 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.909971172916405, 'radius': 8.69386304846006e-07, 'focal_distance': 0.9324991165586474}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:20,377] Trial 189 finished with value: 0.004138653702423506 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.8566132184584851, 'radius': 8.485912064441535e-07, 'focal_distance': 0.943626668243258}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:20,651] Trial 190 finished with value: 0.010772746571498121 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 0.5398538695648576, 'radius': 7.244036497718798e-07, 'focal_distance': 0.9407601633923262}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:20,960] Trial 191 finished with value: 0.004158932431320492 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.8434170373038368, 'radius': 8.540566782461865e-07, 'focal_distance': 0.7728758367303461}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:21,261] Trial 192 finished with value: 0.004126662000672047 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.8065006944107975, 'radius': 8.557148412834946e-07, 'focal_distance': 0.9269834916292665}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:21,551] Trial 193 finished with value: 0.004844574638200475 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.7686896090010458, 'radius': 8.128034067037374e-07, 'focal_distance': 0.7745869878518149}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:21,844] Trial 194 finished with value: 0.005358651504190482 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.5528104531813758, 'radius': 8.125599740972386e-07, 'focal_distance': 0.7696143576331899}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:22,111] Trial 195 finished with value: 0.00630357756274839 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.4298743932916627, 'radius': 7.729627865203198e-07, 'focal_distance': 0.7767007661316336}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:22,411] Trial 196 finished with value: 0.005377148235276727 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.7067703177832538, 'radius': 8.040001617928921e-07, 'focal_distance': 0.9434828633129007}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:22,677] Trial 197 finished with value: 0.007712619501498956 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.0881676906441835, 'radius': 7.838612422357911e-07, 'focal_distance': 0.9373092530852523}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:22,911] Trial 198 finished with value: 0.007395033826862598 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 1.7375364744863235, 'radius': 6.806667985494975e-07, 'focal_distance': 0.850202237451797}. Best is trial 173 with value: 0.0021416291524758223.\n",
+ "[I 2025-04-25 15:37:23,202] Trial 199 finished with value: 0.012133460245602024 and parameters: {'aberration_name': 'VerticalComa', 'coefficient': 0.5827125186631206, 'radius': 8.126350805268282e-07, 'focal_distance': 0.897758400323827}. Best is trial 173 with value: 0.0021416291524758223.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Best RSME: 0.0021416291524758223\n",
+ "Best parameters: {'aberration_name': 'VerticalComa', 'coefficient': 2.5518046080183736, 'radius': 9.854557858913137e-07, 'focal_distance': 0.847885851248093}\n"
+ ]
+ }
+ ],
+ "source": [
+ "IMAGE_SIZE = 256\n",
+ "\n",
+ "# Define microscope.\n",
+ "optics = dt.Fluorescence(\n",
+ " output_region=(0, 0, IMAGE_SIZE, IMAGE_SIZE)\n",
+ ")\n",
+ "\n",
+ "# Simulation function.\n",
+ "def simulate_aberrated_image(\n",
+ " aberration_class,\n",
+ " coefficient,\n",
+ " radius,\n",
+ " focal_distance\n",
+ "):\n",
+ " aberration = aberration_class\n",
+ " simulated_aberration = aberration(coefficient=coefficient)\n",
+ "\n",
+ " optics.pupil = simulated_aberration\n",
+ " particle = dt.Sphere(\n",
+ " radius=radius,\n",
+ " position=(IMAGE_SIZE // 2, IMAGE_SIZE // 2, focal_distance)\n",
+ " )\n",
+ " simulated_image = optics(particle).resolve().squeeze()\n",
+ " return simulated_image.astype(np.float32)\n",
+ "\n",
+ "# Objective function, this defines the search parameters and loss function.\n",
+ "def objective(trial):\n",
+ "\n",
+ " # Varies aberration type.\n",
+ " aberration_name = trial.suggest_categorical(\n",
+ " \"aberration_name\", [cls.__name__ for cls in aberration_types]\n",
+ " )\n",
+ " aberration_class = next(\n",
+ " cls for cls in aberration_types if cls.__name__ == aberration_name\n",
+ " )\n",
+ "\n",
+ " coefficient = trial.suggest_float(\"coefficient\", -10, 10) # Explores aberration strength.\n",
+ " radius = trial.suggest_float(\"radius\", 1e-7, 2.1e-6) # Explores particle radius.\n",
+ " focal_distance = trial.suggest_float(\"focal_distance\", -1, 1) # Explores focal distance (defocusing).\n",
+ "\n",
+ " simulated_image = simulate_aberrated_image(\n",
+ " aberration_class,\n",
+ " coefficient,\n",
+ " radius,\n",
+ " focal_distance,\n",
+ " )\n",
+ "\n",
+ " loss = np.sqrt(np.mean(np.square(simulated_image - experimental_image) ))\n",
+ " return loss\n",
+ "\n",
+ "# Run Optuna optimization\n",
+ "study = optuna.create_study(direction=\"minimize\")\n",
+ "study.optimize(objective, n_trials=200)\n",
+ "\n",
+ "print(\"Best RSME:\", study.best_value)\n",
+ "print(\"Best parameters:\", study.best_trial.params)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "07154378",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABdUAAAHqCAYAAADiTKcNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZCElEQVR4nO3dd5xU1f34//fszDaKrDRFiIhELKjRGDUaKWqUiIoNuxFLxCQa0aiYaFQENTFo0FiwYwOixpYQe41pJv40Riwfxdi7WELbfn5/8D2XM2fOvffcmTu7s7uv5+Oxj925c+eW2dnZ933P+7xPRimlBAAAAAAAAAAAxKrq7AMAAAAAAAAAAKCrIKkOAAAAAAAAAIAnkuoAAAAAAAAAAHgiqQ4AAAAAAAAAgCeS6gAAAAAAAAAAeCKpDgAAAAAAAACAJ5LqAAAAAAAAAAB4IqkOAAAAAAAAAIAnkuoAAAAAAAAAAHgiqW7JZDIyY8aMzj6MUBtssIHstddenX0YkW666SbJZDLy1ltvdfahVIQnn3xSMpmM/P73vy/bPt566y3JZDJy8cUXl20fHUWfy0033dTZh1Kxyv0c6dfsk08+WZbtdzX6Pe3ZZ5+NXXf8+PEyfvz48h8UACDSBhtsIEcddVRwuxL/t9nH2JmI3/MRvydD/B6P+L1jEb8D6AhFJdXffPNNOfHEE2XUqFHSq1cv6dWrl2y22WZywgknyH/+85+0j7HifPDBBzJjxgz597//XZbtv/zyyzJjxgyC2pRcddVVBHgVaMGCBXLppZd29mF4e+655ySTycgvfvGL0HVef/11yWQy8tOf/jSVfVbic/Tkk0/K/vvvL+uuu67U1NTI4MGDZe+995a77767sw+tRyjX+9mFF14o9957b6LH3HDDDbLppptKXV2dbLTRRnL55ZeXdAyvvPKKfO9735M+ffpI//795fvf/758+umnBeu1t7fLr3/9axkxYoTU1dXJlltuKQsXLqy4bV5wwQUyadIkWWeddbw+sL/99ttlhx12kN69e0tDQ4PsuOOO8vjjj+et89VXX8n06dNlo402kvr6ehk+fLgce+yx8s477xS1zXfffVfOO+882W677WTttdeWgQMHyvjx4+XRRx8t2NaMGTMkk8k4v66++upgPXN5LpeT/v37yzbbbCPTpk2Tl19+uWC7+qI37Gv+/Pl56z/66KOy8847y8CBA6WhoUG22247ufXWW/PW0YmLsK9f/epXeev7/k7hz/691tXVyahRo+TEE0+Ujz/+uLMPL5H777+/ogtuuivi98pUibFpFOL31YjfOxfxO/F7Z8XvtuOOO04ymYyzUDcsbl533XXz1vvyyy+lrq5OMpmMvPLKK8793H333XLwwQfLhhtuKL169ZKNN95YTj31VPnyyy8L1t1ggw2c+/3hD39YsO6XX34pU6dOlUGDBknv3r1l5513lueeey72vMspl/QBixYtkoMPPlhyuZwcfvjh8o1vfEOqqqrk1Vdflbvvvlvmzp0rb775pgwfPrwcx1sRPvjgAznvvPNkgw02kK222ir17b/88sty3nnnyfjx42WDDTZIffs9zVVXXSUDBw6smEogrLZgwQJZvHixnHzyyXnLhw8fLqtWrZLq6urOObAQ3/zmN2WTTTaRhQsXyvnnn+9cZ8GCBSIicsQRR6Syz0p7js4991yZOXOmbLTRRnL88cfL8OHDZenSpXL//ffLAQccIPPnz5fDDjusQ4+p0jz88MNl3X653s8uvPBCmTx5suy7775e619zzTXywx/+UA444AD56U9/Kk8//bScdNJJsnLlSjnjjDMS7/+9996TsWPHSr9+/eTCCy+U5cuXy8UXXywvvvii/POf/5Samppg3bPOOkt+9atfyXHHHSfbbrut3HfffXLYYYdJJpORQw45pGK2+Ytf/ELWXXdd2XrrreWhhx6KPP8ZM2bIzJkzZfLkyXLUUUdJS0uLLF68WN5///1gnfb2dtltt93k5Zdflh//+McyatQoWbJkiVx11VXy0EMPySuvvCJ9+/ZNtM377rtPLrroItl3331lypQp0traKrfccovstttucuONN8rRRx9dcKxz586VPn365C3bfvvt827vtttucuSRR4pSSr766it54YUX5Oabb5arrrpKLrroorzExdixYwuS4iIic+bMkRdeeEF23XXXYNkf/vAH2XfffWWHHXYIkvx33HGHHHnkkfLZZ5/JKaeckreNQw89VCZOnFiw7a233jr4OcnvFMnNnDlTRowYIY2NjfKXv/xF5s6dK/fff78sXrxYevXq1aHHMnbsWFm1alXi3+n9998vV155JYn1Dkb8XpkqLTaNQ/xO/O6D+J34Xeuu8buIyLPPPis33XST1NXVhZ6TjuFN9fX1ebfvvPPOINk+f/5853vr1KlTZb311pMjjjhC1l9/fXnxxRfliiuukPvvv1+ee+65gm1utdVWcuqpp+YtGzVqVN7t9vZ22XPPPeWFF16Q008/XQYOHChXXXWVjB8/Xv6//+//k4022ij0vMpKJbBkyRLVu3dvtemmm6oPPvig4P6WlhZ12WWXqXfeeSdyO8uXL0+y2w4lIurcc8+NXOdf//qXEhE1b948r22uWLEi0THceeedSkTUE088UXDf8OHD1Z577ploe2n55JNPnL9327x585SIqDfffLP8B+Vh9OjRaty4cV7rluO1+cQTTygRUXfeeWfq29befPNNJSJq9uzZZduHUtHPT9LX+Z577qmGDx9e4hF1rFmzZikRUX//+9+d92+88cZqk002KXk/+nnurOdIv2bN9yD9vjR58mTV3Nxc8JgHH3xQ/fGPf+zAo+w4+j3tX//6V2cfSqL3syR69+6tpkyZ4rXuypUr1YABAwr+Fx1++OGqd+/e6vPPP0+8/x/96Eeqvr5evf3228GyRx55RImIuuaaa4Jl7733nqqurlYnnHBCsKy9vV2NGTNGDRs2TLW2tlbENpVSwf/ATz/9NDK2+Pvf/64ymYz6zW9+E/kc/fWvf1Uioq644oq85TfeeKMSEXX33Xcn3ubixYvVp59+mressbFRbbLJJmrYsGF5y88991wlIgXr20Qk77nUPvvsM7XDDjsoEVF/+tOfIrexcuVK1bdvX7XbbrvlLd9tt93UeuutpxobG4NlLS0tauTIkWrLLbcMliX5n+j7O12+fLl64403YreH1cLeN3/6058qEVELFiwIfWxasdjw4cO939einHDCCSrhJZO3tI4xCvF7cYjf3YjfwxG/Vxbi93zE7z0zftfa29vVDjvsoI455pjQnGJYDG8bO3as2n///dUpp5yiRowY4VzHlcu8+eablYio6667Lm+5b47z9ttvL/i//Mknn6iGhgZ16KGH5q37n//8J3Z7aUkUIU6dOlWJiPrHP/7h/ZgpU6ao3r17qyVLlqg99thD9enTR+2zzz5KqdX/eH7605+qYcOGqZqaGjVq1Cg1e/Zs1d7eHjxeBxuuBLb9ItcXfK+//rqaMmWK6tevn1prrbXUUUcdVRAwNDY2qpNPPlkNHDhQ9enTR+29997q3XffjU2q639W9pc+vnHjxqnRo0erZ599Vo0ZM0bV19eradOmOY9XMwNq/eZvf+kXpX7BPf3002rbbbdVtbW1asSIEermm28u2O6SJUvUkiVLQs/FR1tbm3rggQfU5MmTVU1Njbrnnnvy7l+8eLHaeeedVV1dnRo6dKiaNWuWuuGGG5xB+f3336922mkn1atXL9WnTx81ceJEtXjx4oJ9vvLKK+qAAw5Qa6+9tqqtrVXbbLONuu+++/LW0c/TU089paZOnar69++v+vbtq77//e/n/UMYPnx4wXOp/6HpbTz55JPqRz/6kRo0aJBqaGhQSin11ltvqR/96Edq1KhRqq6uTvXv319NnjzZeaHxxRdfqJNPPlkNHz5c1dTUqKFDh6rvf//7wRudKyhvbGxUe+65p1prrbXUX//619Dnv6mpSZ199tnqm9/8plprrbVUr1691E477aQef/zxvPXMoPw3v/mNWn/99VVdXZ0aO3asevHFF0t6jl3PT9Tr/N5771UTJ05UQ4YMUTU1NWrDDTdUM2fOzPvHNm7cuILfiw4+w/7mH3vsseD1069fPzVp0iT18ssv562T5D3g4YcfVt/5zndUv379VO/evdWoUaPUz3/+89DfhVJK/fe//1Uion7yk58U3Pfss88qEVGzZs0Klvm85sPeI4t5jl555RV14IEHqoEDB6q6ujo1atQodeaZZwb3+76uXUH5Jptsovr376/+97//RT5H2scff6yOOeYYNXjwYFVbW6u23HJLddNNN+WtY75ur7jiCjVixAhVX1+vdtttN/XOO++o9vZ2NXPmTDV06FBVV1enJk2apJYuXZq3DZ/XW5TnnntOfe9731N9+/ZVvXv3VrvsskvBRZfv+41Sq1/bdtDc2NiozjnnHDVy5EhVU1Ojhg0bpk4//fS8xKB26623qm233VbV19erhoYGNWbMGPXQQw8ppaLfz8LMnj1b7bDDDqp///6qrq5OffOb3yxIELj+50QF6H/605+cidG//e1vSkTUrbfeqpRS6uWXX1Z1dXXq+9//ft56Tz/9tKqqqlLTp08Plg0ePFgdeOCBBfsaNWqU2nXXXYPbV155pRIR9dJLL+Wtt2DBAiUi6umnn66IbZrigvKDDz5YDRkyRLW1tan29na1bNky53oPPPCAM8Gjlz/wwAOJtxlGJz7Nv/dSk+pKKfX222+rXC6ndtxxx8ht6KDZfs/Yfvvt1ejRowvW33777dX2228f3E6SqPL9nb755psqk8monXfeWc2fP1+tWrUqdts9WVgyY9GiRUpE1AUXXKCUir5OaGtrU3PmzFGbbbaZqq2tVYMHD1ZTp04teN9tb29Xs2bNUkOHDlX19fVq/PjxavHixQUJa9f/NqWU+sc//qH22GMP1dDQoHr16qW22GILdemllwbH53qP1NI+RqWI35Uifid+J34nfo9G/E78TvxeyBW/azfffLPq27ev+vDDD0tKqr/99tsqk8moO+64Qz3zzDNKRCL/H5r+97//KRFRP/3pT/OW6+NpamqK/BD4wAMPVOuss45qa2vLWz516lTVq1evvL/N4cOHq0033VRdfPHF6uOPP/Y6vmIlav+yaNEi+frXv14wzDdOa2urTJgwQXbaaSe5+OKLpVevXqKUkkmTJskTTzwhxx57rGy11Vby0EMPyemnny7vv/++zJkzJ9E+TAcddJCMGDFCfvnLX8pzzz0n119/vQwePFguuuiiYJ0f/OAHctttt8lhhx0W9Cjac889Y7e96aabysyZM+Wcc86RqVOnypgxY0REZMcddwzWWbp0qeyxxx5yyCGHyBFHHCHrrLOO97GPHTtWTjrpJPntb38rZ555pmy66abBfrUlS5bI5MmT5dhjj5UpU6bIjTfeKEcddZRss802Mnr06GA9PWS6mN7sb731ltx4441y0003ybvvvitf+9rXZPr06fKd73wnWOejjz6SnXfeWVpbW+VnP/uZ9O7dW6699tqCoRwiIrfeeqtMmTJFJkyYIBdddJGsXLlS5s6dKzvttJM8//zzQZubl156Sb7zne/I0KFDg23ecccdsu+++8pdd90l++23X952TzzxRGloaJAZM2bI//3f/8ncuXPl7bffDiZqufTSS+UnP/mJ9OnTR8466ywRkYLfx49//GMZNGiQnHPOObJixQoREfnXv/4lf/vb3+SQQw6RYcOGyVtvvSVz586V8ePHy8svvxwMWV6+fLmMGTNGXnnlFTnmmGPkm9/8pnz22Wfyhz/8Qd577z0ZOHBgwXOxatUq2WeffeTZZ5+VRx99VLbddtvQ38P//vc/uf766+XQQw+V4447TpYtWyY33HCDTJgwQf75z38WtB+65ZZbZNmyZXLCCSdIY2OjXHbZZbLLLrvIiy++GJx30ufY9fyIhL/Ob7rpJunTp4/89Kc/lT59+sjjjz8u55xzjvzvf/+T2bNni8jqoVpfffWVvPfee8Hfut1OwPToo4/KHnvsIRtuuKHMmDFDVq1aJZdffrl85zvfkeeee66gTVLce8BLL70ke+21l2y55ZYyc+ZMqa2tlSVLlshf//rX0GMQERkxYoTsuOOOcscdd8icOXMkm80G9+mho3r4pO9rXsT9Hrnuuusmeo7+85//yJgxY6S6ulqmTp0qG2ywgbzxxhvyxz/+US644AIR8X9d215//XV59dVX5ZhjjskbnhZm1apVMn78eFmyZImceOKJMmLECLnzzjvlqKOOki+//FKmTZuWt/78+fOlublZfvKTn8jnn38uv/71r+Wggw6SXXbZRZ588kk544wzZMmSJXL55ZfLaaedJjfeeGPwWJ/XW5iXXnpJxowZI2uttZZMnz5dqqur5ZprrpHx48fLU089VfC/Lu79xqW9vV0mTZokf/nLX2Tq1Kmy6aabyosvvihz5syR1157La8P4nnnnSczZsyQHXfcUWbOnCk1NTXyzDPPyOOPPy6777671/uZ7bLLLpNJkybJ4YcfLs3NzfK73/1ODjzwQFm0aFHwP+/WW2+VH/zgB7LddtvJ1KlTRURk5MiRodt8/vnnRUTkW9/6Vt7ybbbZRqqqquT555+XI444QjbddFOZNWuWnH766TJ58mSZNGmSrFixQo466ijZZJNNZObMmSIi8v7778snn3xSsD0Rke22207uv//+vH337t0773+iXk/fv9NOO3X6NpN47LHHZMcdd5Tf/va3cv7558vSpUtl3XXXlbPOOktOPPHEYL1vfetb0rt3bzn77LOlf//+svHGG8uSJUtk+vTpsu2228p3v/vdxNsM89FHHwVz5tg+//zzvNvZbFbWXnttr3Ndf/31Zdy4cfLEE0/I//73P1lrrbWc682fP1/q6+tl//33z1s+fvx4ueiii+Tss8+WKVOmSCaTkQULFsizzz4rd9xxR8F2Vq5cKZ999lnB8oaGBsnlcol+p0OGDJGLL75Y5s2bJ4cffrg0NDTI4YcfLscee2xeOxlEe+ONN0REZMCAAcEy1/9AEZHjjz9ebrrpJjn66KPlpJNOkjfffFOuuOIKef755+Wvf/1r0ELhnHPOkfPPP18mTpwoEydOlOeee0523313aW5ujj2eRx55RPbaay8ZMmSITJs2TdZdd1155ZVXZNGiRTJt2jQ5/vjj5YMPPpBHHnnE2aaoHMdI/E78TvxO/E78Ho74nfi9XNtMoivF78uWLZMzzjhDzjzzzIL+6LbGxsaC2Llv375SW1srIiILFy6U3r17y1577SX19fUycuRImT9/fl4+NOr4RMT5P/bxxx+XXr16SVtbmwwfPlxOOeWUgvec559/Xr75zW9KVVX+1KDbbbedXHvttfLaa6/JFltsISIil1xyiVx99dUyffp0+fnPfy577723/OAHP5Ddd989739AKnyz71999ZUSEbXvvvsW3PfFF1+oTz/9NPhauXJlcJ+u8PjZz36W95h7771XiYg6//zz85ZPnjxZZTKZoEKjmEr1Y445Jm+9/fbbTw0YMCC4/e9//1uJiPrxj3+ct95hhx0W+WmUFtX+RX86ffXVV8cer2ZXqcS1fxER9ec//zlY9sknn6ja2lp16qmnFqybZOhZY2OjWrhwofrud7+rMpmMqq2tVQcffLB66KGHCj4NUkqpk08+WYmIeuaZZ/KOpV+/fnmVLsuWLVMNDQ3quOOOy3v8Rx99pPr165e3fNddd1VbbLFF3qdM7e3tascdd1QbbbRRsEx/8rzNNtvkDWX79a9/rUQkr2ojbLiV3sZOO+1U8Km4+RrW/v73vysRUbfcckuw7JxzzlEi+cN2zONWKr/SZdmyZWrcuHFq4MCB6vnnny94jK21tVU1NTXlLfviiy/UOuusk/c6138n9fX16r333guW608PTznllGBZ0ufY9fxEvc5dz93xxx9f8Olh2NBI19/8VlttpQYPHpxX5fDCCy+oqqoqdeSRRwbLfN8D5syZ41Vx6aI/FdfVB0qtrggbOnSo2mGHHZRSyV7zYe+RSiV7jsaOHav69u2bN6xNKZU38sf3dW1Xutx3331KRNScOXMKnxCHSy+9VImIuu2224Jlzc3NaocddlB9+vQJPj3X5zFo0CD15ZdfBuv+/Oc/VyKivvGNb6iWlpZg+aGHHqpqamryXke+rzeXfffdV9XU1OS1dPjggw9U37591dixY4NlSd5v7EqXW2+9VVVVVeVVSyil1NVXX533yf7rr7+uqqqq1H777Vfwfmv+DpMOH7Wfn+bmZrX55purXXbZJW95kuGjJ5xwgspms877Bg0apA455JDgdltbm9ppp53UOuusoz777DN1wgknqFwul1e9qv+nmq9B7fTTT1ciEvwu99xzT7XhhhsWrLdixYq8v6PO3qYpqtLl888/VyKiBgwYoPr06aNmz56tbr/9dvW9733P+R67aNEiNWTIkLyqpAkTJuRVsiTdpu311193Vijp91f7y36Pkpgql2nTpikRUS+88ILz/qVLl6qamhp10EEHFdy3fPlyddBBB6lMJhPsv1evXuree+/NW0+/t4R96Wq2Yn+n//znP9UPf/hD1dDQoEREbb311urKK69UX3zxReh59zT6ffPRRx9Vn376qXr33XfV7373OzVgwIC8WCXsf+DTTz+tRETNnz8/b/mDDz6Yt/yTTz5RNTU1as8998x7rzzzzDMLqvbs/22tra1qxIgRavjw4QW/O3NbYe1fynGMShG/a8TvxO/E76sRv+cjfl+D+J34XQuL35VS6rTTTlMjRowIzjOqUt31Zb5nbbHFFurwww8Pbp955plq4MCBeX/zYY499liVzWbVa6+9lrd87733VhdddJG699571Q033KDGjBmjRCRvVIRSq1/v9v8JpdaMwnjwwQcL7nv77bfVeeedp0aMGKFERA0bNkz94he/UP/9739jj9dXfoo/wv/+9z8RcX/SOn78eBk0aFDwdeWVVxas86Mf/Sjv9v333y/ZbFZOOumkvOWnnnqqKKXkgQce8D20AvYssWPGjJGlS5cG56A/jbL3bU8mUqza2trQyQHSsNlmmwUV8iIigwYNko033lj++9//5q331ltveVW5rFixQqZNmybrrbeeHHroofLFF1/I5ZdfLh9++KH87ne/k913373g0yCR1c/jt7/97eDTQH0shx9+eN56jzzyiHz55Zdy6KGHymeffRZ8ZbNZ2X777eWJJ54QkdXVb48//rgcdNBBsmzZsmC9pUuXyoQJE+T111/Pm6BBZPUECOZkLz/60Y8kl8sl+sTxuOOOK/i0yqzWaWlpkaVLl8rXv/51aWhoyJtd+K677pJvfOMbBdUhIlLwyfdXX30lu+++u7z66qvy5JNPek1ym81mg4kz2tvb5fPPP5fW1lb51re+5ZzleN9995WhQ4cGt7fbbjvZfvvtg+ejmOfY9fyIhL/OzedO72PMmDGycuVKefXVV2PP2fbhhx/Kv//9bznqqKOkf//+wfItt9xSdtttN+fvOu49oKGhQURWT/LR3t6e6HgOPvhgqa6uDipbRESeeuopef/994PXvu9r3mS/Rybx6aefyp///Gc55phjZP3118+7z3wd+r6ubfp586lyEVn93rDuuuvKoYceGiyrrq6Wk046SZYvXy5PPfVU3voHHnig9OvXL7itK0yOOOIIyeVyecubm5vzXqPFvt7a2trk4Ycfln333Vc23HDDYPmQIUPksMMOk7/85S/BeWvFvN/ceeedsummm8omm2yS91rYZZddRESC18K9994r7e3tcs455xS834ZV0fgwn58vvvhCvvrqKxkzZkxJs6RHTfRXV1cnq1atCm5XVVXJTTfdJMuXL5c99thDrrrqKvn5z3+eVy2i19cVEPb2zHVWrVrlvV5nbtPX8uXLRWR15eD1118vp512mhx00EHypz/9STbbbLOCiX8GDRokW2+9tVxwwQVy7733yowZM+Tpp5/Oey9Ouk3TypUr5cADD5T6+nr51a9+5VznrrvukkceeST4mj9/fqJz1nHksmXLnPf//ve/l+bm5oJYQmT1cz9q1CiZPHmyLFy4UG677Tb51re+JUcccYT84x//KFh/6tSpeceqvzbbbDMRKf53uu2228rcuXPlww8/lPnz50v//v3lxBNPlCFDhsgRRxwh77zzjuez0f1997vflUGDBsnXvvY1OeSQQ6RPnz5yzz335MUqIoX/A++8807p16+f7Lbbbnnvndtss4306dMneO989NFHg0pJ873SJ6Z//vnn5c0335STTz45iAs0n/fdch0j8bsf4nfi9ySI3+MRv69B/E78HqUrxe+vvfaaXHbZZTJ79mznc2DbZ599CuLmCRMmiMjqkTUvvvhi3nuEfr+Mm9R1wYIFcsMNN8ipp55aMKHoH/7wB5k+fbrss88+cswxx8hTTz0lEyZMkN/85jfy3nvvBev5/s5N66+/vpxzzjnyxhtvyGOPPSbjxo2TSy65REaOHCnf/e535c9//nPscxLHu/2LfjPWv2zTNddcI8uWLZOPP/7YOWt2LpeTYcOG5S17++23Zb311it4k9fDN95++23fQytg/1PSw5K/+OILWWutteTtt9+WqqqqguExG2+8cdH7NA0dOjT0DSsN9vmJrD7HL774oqjtffrpp/Lb3/5WREROO+00Oe+880KHkZnefvttZysg+3l8/fXXRUSCf0I2Pfx7yZIlopSSs88+W84++2znup988kle0Gn/Qfbp00eGDBmSaMjsiBEjCpatWrVKfvnLX8q8efPk/fffF6VUcN9XX30V/PzGG2/IAQcc4LWfk08+WRobG+X555/Pa9MT5+abb5ZLLrlEXn31VWlpaYk8bteMx6NGjQqGxRfzHLv2IxL+On/ppZfkF7/4hTz++OMFQY353PnS7wWuv89NN91UHnroIVmxYoX07t07WB73HnDwwQfL9ddfLz/4wQ/kZz/7mey6666y//77y+TJk50XoKYBAwbIhAkT5J577pGrr75a6urqZMGCBZLL5eSggw4SEf/XvOZ6j0xCf6C2+eabR67n+7oOO96wJJjt7bfflo022qjguQx7f7d/XzpA/9rXvuZcbr7XFft6+/TTT2XlypWhr6v29nZ599138/5Wi3m/ef311+WVV16RQYMGOe//5JNPRGT1e0lVVVWQ7EvLokWL5Pzzz5d///vf0tTUFCwvNdAPa6vQ2NhY0EJg5MiRMmPGDDn99NNl8803L3jv0eubx2duz1ynvr7ee73O3KYvvX51dbVMnjw5WF5VVSUHH3ywnHvuufLOO+/I+uuvL//9739l5513lltuuSX4v7PPPvvIBhtsIEcddZQ88MADssceeyTapqmtrU0OOeQQefnll+WBBx6Q9dZbz3nMY8eOdQ7b9KXjyLCLfJ2k3mOPPQruO/HEE+Uf//iHPPfcc8H7y0EHHSSjR4+WadOmyTPPPJO3/kYbbZQ3rNZW6u+0rq5ODjvsMDnooINk7ty5ctppp8n8+fNl8uTJzlitJ7ryyitl1KhRksvlZJ111pGNN9644H+D63/g66+/Ll999ZUMHjzYuV393qn/n9jvz4MGDYptS6Rb0cT97wzTEccYhfid+N1E/E78Hna8xO/E7yLE7z01fp82bZrsuOOO3v/zhg0bFho733bbbdK7d2/ZcMMNZcmSJSKyOhbeYIMNZP78+aHttJ9++mk59thjZcKECUFbqyiZTEZOOeUUeeihh+TJJ58Mcsy+v/Owbe6yyy6yyy67yGOPPSZHHnmkPPbYY7L55pvL2LFjY48pindSvV+/fjJkyBBZvHhxwX06MAt7Y6qtrY39Rxcm7I2jra0t9DFhPXLMf0DllPSPMupcXNI+v2HDhslNN90kN9xwg1x88cVyzTXXyMEHHyxHH320V2+kOLqS4NZbb3X2cNKfZOv1TjvttODTMNvXv/71ko/H5vp9/eQnP5F58+bJySefLDvssIP069dPMpmMHHLIIYkrI7R99tlHfve738mvfvUrueWWW7z+Jm677TY56qijZN9995XTTz9dBg8eLNlsVn75y18GF4NJFPMch72eXcu//PJLGTdunKy11loyc+ZMGTlypNTV1clzzz0nZ5xxRtHPXVJxfyP19fXy5z//WZ544gn505/+JA8++KDcfvvtsssuu8jDDz8c22friCOOkEWLFsmiRYtk0qRJctddd8nuu+8eBF6+r3mtlPfIJIp9XW+yySYiIvLiiy+W5bjCnu+432OlvN6itLe3yxZbbCG/+c1vnPfbFx5pevrpp2XSpEkyduxYueqqq2TIkCFSXV0t8+bNy6vUSmrIkCHS1tYmn3zySV4yqbm5WZYuXepMxj788MMiIvLBBx8E/QHN7Ymsrmqzffjhh9K/f/+gKmHIkCHyxBNPiFIqLz7Qj9X77uxt+urfv7/U1dVJQ0NDwetdP7dffPGFrL/++nLTTTdJY2Oj7LXXXnnrTZo0SURE/vrXv8oee+yRaJum4447ThYtWiTz588PTSikYfHixZLNZp0Jn3feeUeefvrpgqoykdWvrxtuuEGmT5+e935ZXV0te+yxh1xxxRXS3NycqKih1N/pK6+8IvPmzZNbb71VPvroIxk9erQce+yxsvPOO3sfQ3e33XbbOfuYmlz/A9vb22Xw4MGhIyHCEh0dqbOPkfid+N1E/E78biN+Lx7x+2rE725dJX5//PHH5cEHH5S77747L1fb2toqq1atkrfeekv69+8fOseRSSklCxculBUrVjg/RPrkk09k+fLlBZ1NXnjhBZk0aZJsvvnm8vvf/77gfTSM/hsz53IaMmRI6O9RREILgvTx3XbbbTJv3jxZvHixrLPOOnL66aeXNNpISzRR6Z577inXX3+9/POf/8wbMliM4cOHy6OPPirLli3Lq1bSw32GDx8uIms+of7yyy/zHl9KJfvw4cOlvb1d3njjjbxPOf/v//7P6/HFfkK49tprF5xHc3NzwQujlE8gi5HL5WTKlCkyZcoUee211+T666+XW265Ra6//noZNWqUHH300XLkkUcWvEiHDx8efKJvsp9HPSJg8ODBkRVjeghXdXV15Hqm119/Pe/idfny5fLhhx/KxIkTg2XFPJ+///3vZcqUKXLJJZcEyxobGwt+fyNHjnR+0OSy7777yu677y5HHXWU9O3bV+bOnet1HBtuuKHcfffdeedx7rnnOtd3/T5ee+21YFKdYp7jJJ588klZunSp3H333Xmf+L355psF6/r+XvR7gevv89VXX5WBAwfmVbn4qqqqkl133VV23XVX+c1vfiMXXnihnHXWWfLEE0/EPjeTJk2Svn37yoIFC6S6ulq++OKLvGHTvq/5OL7Pkf69xr0WfV/XtlGjRsnGG28s9913n1x22WWREy6JrP6d/ec//5H29va8iw37/b1USV5vtkGDBkmvXr1CX1dVVVUFAbPP+41t5MiR8sILL8iuu+4a+fscOXKktLe3y8svvxw5tDzJ+9ldd90ldXV18tBDD+UFi/PmzStpu/r4nn322bxzf/bZZ6W9vb3g+K+++mp55JFH5IILLpBf/vKXcvzxx8t9990X3D906FAZNGiQPPvsswX7sid022qrreT666+XV155JS+g0xXKet3O3qavqqoq2WqrreRf//pXQUL4gw8+EJE1ibmPP/5YlFIFH8TrCsjW1tbE29ROP/10mTdvnlx66aV5QzrT9s4778hTTz0lO+ywg7NSfeHChaKUcrZ+Wbp0qbS2tjoLEVpaWqS9vT1xkUIxv9OvvvpKbr/9drnxxhvlmWeekT59+sjBBx8sP/jBD+Tb3/52ov0j3MiRI+XRRx+V73znO5HFKvr/yeuvv57XCuDTTz+NHcGp/1cvXrw48n912PtjRxxjFOL3QsTvxSF+X434nfhdI34nfo/SVeJ33Y5w//33L7jv/ffflxEjRsicOXO8WuY99dRT8t5778nMmTMLJof94osvZOrUqXLvvffmdS5544035Hvf+54MHjxY7r///tj3IJMeyWOe81ZbbSVPP/10wXvUM888I7169ZJRo0blbaO1tVXuv/9+mTdvnvzpT3+S9vZ2mTBhgsycOVP22muvggKeYiX6aHX69OnSq1cvOeaYY+Tjjz8uuD9JpfTEiROlra1Nrrjiirzlc+bMkUwmEwz7XWuttWTgwIEFvW6uuuqqJIeeR29bD5nULr30Uq/H6wAg7h+ZbeTIkQXnce211xb8gRW7fdsbb7yRuBpi1KhR8utf/1ree+89ufvuu+XrX/+6/OIXv5D1119fJk6cmBf0TZw4Uf7xj3/IP//5z2DZp59+WlCxM2HCBFlrrbXkwgsvzBv+aD5GZHUAM378eLnmmmucn0Dp9UzXXntt3jbnzp0rra2tecPGe/funfi5zGazBa/nyy+/vOB3dcABB8gLL7wg99xzT8E2XH8PRx55pPz2t7+Vq6++Ws4444y8+3QPOXO2Zf0ppbmtZ555Rv7+9787j/vee+/N61f3z3/+U5555png+SjmOU7CdbzNzc3Ov9fevXt7DScdMmSIbLXVVnLzzTfn/R4XL14sDz/8cGRAFMb8xFPT/1DNIUWvvvqqszdufX297LfffnL//ffL3LlzpXfv3rLPPvsE9/u+5uP4PkeDBg2SsWPHyo033lhwvObvwvd17XLeeefJ0qVL5Qc/+EHwz9/08MMPy6JFi0Rk9XvDRx99JLfffntwf2trq1x++eXSp08fGTduXOz+fCR5vbkeu/vuu8t9992X98n9xx9/LAsWLJCddtqp4FN7n/cb20EHHSTvv/++XHfddQX3rVq1SlasWCEiqy/aq6qqZObMmQUVOub5JXk/y2azkslk8n6/b731ltx7770F6ybZ7i677CL9+/cvSCzMnTtXevXqlTf0780335TTTz9dDjjgADnzzDPl4osvlj/84Q9yyy235D32gAMOkEWLFsm7774bLHvsscfktddekwMPPDBYts8++0h1dXXe71gpJVdffbUMHTo0rzqzM7eZxMEHHyxtbW1y8803B8saGxtl/vz5stlmmwUJsVGjRolSKmgHoC1cuFBERLbeeuvE2xQRmT17tlx88cVy5plnyrRp04o6Bx+ff/65HHroodLW1iZnnXWWc50FCxbI+uuvLzvttFPBfYMHD5aGhga555578oYvL1++XP74xz/KJptsknikoIj/73TZsmVyxBFHyJAhQ+T444+XTCYj119/vXz44Ydy/fXXk1BP2UEHHSRtbW0ya9asgvtaW1uD96vvfve7Ul1dLZdffnnee6VPTP/Nb35TRowYIZdeemnB+5/9vitSGJeX6xiJ31cjfid+txG/r0H8TvyedLvE7z0vft9ll13knnvuKfgaNGiQfOtb35J77rlH9t57b6/z1a1fTj/9dJk8eXLe13HHHScbbbRRXhzx0UcfBXO7PPTQQ6Gj9z7//HPnBw6/+tWvpKamJu8DscmTJ8vHH38sd999d7Dss88+kzvvvFP23nvvvA+hZsyYIcOGDZN99tlHXnjhBTnnnHPk7bfflj/96U+y3377pZZQFxHHVPYx7r33XlVfX6/69eunfvzjH6trrrlGXX311eqMM85QX/va11RVVZVauHBhsP6UKVNU7969C7bT1tamdt55Z5XJZNTUqVPVlVdeqfbZZx8lIurkk0/OW/dnP/uZEhF17LHHqrlz56pDDz1UbbPNNgWz8eqZw+0ZwfXMz3o2e6VWz0ItIurwww9XV155pdp///3VlltuGTrDr6m5uVk1NDSojTfeWF1//fVq4cKFweyx48aNU6NHj3Y+Ts8Wvf/++6u5c+eqH/7wh2rEiBFq4MCBebM2f/jhhyqbzapvf/vb6qabblILFy5UH3/8sVIqfKZee8Zqva5r5vGk3nvvPTVr1iw1YsQIdc899wTLP/jgAzVgwAC19tprqxkzZqjZs2erjTbaKHgezed7/vz5qqqqSm2++ebq/PPPV9dcc40666yz1FZbbaVOOOGEYL2XXnpJrb322mrAgAHqZz/7mbr22mvVrFmz1MSJE9WWW24ZrKd/p1tssYUaM2aMuvzyy9WJJ56oqqqq1E477ZQ32/aPf/xjlclk1KxZs9TChQvVY489lrcNcxZr7cgjj1TZbFZNmzZNXXPNNeqoo45Sw4YNUwMGDMj7XS1btkxtttlmKpvNquOOO05dffXV6sILL1Tf/va31b///W+l1JqZ2O+8887gcRdccIESEXXBBRcEy/R65uvvxhtvVCKiJk2apK655hr1s5/9TDU0NKjRo0fn/W71LOxbbLGF2mCDDdRFF12kZs6cqfr3768GDBigPvjgg6KfY9fzE/Y6/+yzz9Taa6+thg8fri655BL1m9/8Rm299dbqG9/4Rt5s9EqtmXn9lFNOUQsWLFB/+MMf8s7FnGX6kUceUblcTm2yySZq9uzZaubMmWrQoEFq7bXXzpu52fc9YNq0aWrrrbdWv/jFL9R1112nLrjgAjV06FA1bNiwvFnsRSR0pvaHH344mBHbnAFb833Nh71HJn2O/v3vf6s+ffqoAQMGqJ///Ofq2muvVWeeeab6xje+Eazj+7rWr0Xz96WUUmeddZYSETVq1Ch17rnnqhtvvFHNnj1b7brrrkpE1IIFC5RSq2es33TTTVVNTY069dRT1eWXX67GjRunRERdeumlwfb0ecyePTtvP66/GaUKX5NJXm8uixcvVr1791ZDhw5VF1xwgbrooovUhhtuqGpra9U//vGPgv36vN/Y78VtbW1q4sSJKpPJqEMOOURdfvnl6tJLL1U//OEPVf/+/fP+vs4++2wlImrHHXdUF198sbr88svVkUceGcxer1T4+5nLY489pkREjRkzRs2dO1edd955avDgwcF7tGnixImqd+/e6pJLLlELFy7MO3+XK6+8UomImjx5srruuuvUkUceWfCe1t7ersaPH68GDRqkPvnkk2D5brvtphoaGtT7778fLHvnnXfUgAED1MiRI9Vvf/tbdeGFF6q1115bbbHFFsFM9drpp5+uRERNnTpVXXfddWrPPfdUIqLmz5+ft15nb/OWW25Rs2bNUj//+c+ViKidd95ZzZo1S82aNUu99dZbwXorV65Uo0ePVtXV1eq0005Tv/3tb9W2226rstmsuv/++4P1PvvsM7XuuuuqmpoaddJJJ6lrrrlGHX/88SqbzarRo0erpqamxNu8++67lYiojTbaSN16660FXx999FGwbtj7q01E1G677aZuvfVWdcstt6grrrhCHXfccaqhoUHlcjk1Z84c5+NefPFFJSJ5r3fb+eefr0REbb311mrOnDnq4osvVptuuqkSEXXbbbcF6+n3lkMPPdR5Xn/729+CdX1/p2+++aYaOHCgOuWUU9TixYsjnwNExxCmqP+Bxx9/vBIRtccee6g5c+aoK664Qk2bNk2tt956ef8f9N/YxIkT1RVXXKGOPfZYtd566xXE167/bQ8++KCqrq5Ww4cPVzNmzFDXXHONOuWUU9Tuu+8erHPHHXcoEVHf//731W233ZZ3nZP2MSpF/K4RvxO/E7+vRvyej/h9DeJ34ve4+N0lLKcoInnvc1pjY6NqaGhQ++67b+g2Tz31VJXL5YK8pf57nj59esHxPfzww8Hj5s2bp0aOHKnOOOOM4H/x5ptvrkREXXjhhXn7aG1tVd/+9rdVnz591HnnnaeuvPJKNXr0aNW3b1/16quv5q278cYbq0MOOUQ98sgjeX/r5ZA4qa6UUkuWLFE/+tGP1Ne//nVVV1en6uvr1SabbKJ++MMfBoGIFvUPZ9myZeqUU05R6623nqqurlYbbbSRmj17dsFJr1y5Uh177LGqX79+qm/fvuqggw5Sn3zySUlJ9VWrVqmTTjpJDRgwQPXu3Vvtvffe6t133/VKqiul1H333ac222wzlcvl8v45RiXV29ra1BlnnKEGDhyoevXqpSZMmKCWLFmihg8fXhBQX3fddWrDDTdU2Ww2759LZyTVtfb2drVixYq8Zf/5z3/UuHHjVF1dnRo6dKiaNWuWuuGGGwqeb6VW/6OdMGGC6tevn6qrq1MjR45URx11lHr22Wfz1nvjjTfUkUceqdZdd11VXV2thg4dqvbaay/1+9//PlhH/06feuopNXXqVLX22murPn36qMMPP1wtXbo0b3sfffSR2nPPPVXfvn3zgqyooPOLL75QRx99tBo4cKDq06ePmjBhgnr11Vedv6ulS5eqE088UQ0dOlTV1NSoYcOGqSlTpqjPPvssOG9XgDF9+nQlIuqKK67IW898/bW3t6sLL7xQDR8+XNXW1qqtt95aLVq0SE2ZMsUZlM+ePVtdcskl6mtf+5qqra1VY8aMUS+88ELB+SV5jpME5Uop9de//lV9+9vfVvX19Wq99dZT06dPVw899FBBkLR8+XJ12GGHqYaGBiUiwfm4Ak6llHr00UfVd77zHVVfX6/WWmsttffee6uXX345bx3f94DHHntM7bPPPmq99dZTNTU1ar311lOHHnqoeu211/IeFxWUt7a2qiFDhigRyfsnZ/J5zUe9RyZ9jhYvXqz2228/1dDQoOrq6tTGG2+szj777OB+39d1WFBuPneDBw9WuVxODRo0SO29997qvvvuy1vv448/DvZVU1Ojtthii4LjLTUoV8r/9RbmueeeUxMmTFB9+vRRvXr1UjvvvHNews3cr8/7jeu9uLm5WV100UVq9OjRqra2Vq299tpqm222Ueedd5766quv8ta98cYb1dZbbx2sN27cOPXII48E94e9n4W54YYb1EYbbaRqa2vVJptsoubNmxf8nZheffVVNXbsWFVfX69EpOB9zuXaa69VG2+8saqpqVEjR45Uc+bMyfv/fdlllykRUXfddVfe49555x211lprqYkTJ+YtX7x4sdp9991Vr169VENDgzr88MOdQWFbW1vwvlhTU6NGjx6dl1CtlG3qC1HXl/3a/Pjjj9WUKVNU//79VW1trdp+++3Vgw8+WLDN9957Tx1zzDFqxIgRqqamRg0ZMkQdd9xxzkS3zzb1a8HnOJMk1fVXVVWVamhoUFtvvbWaNm2aeumll0Ifpwso/vOf/0Ruf/78+Wq7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PJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPGWUUqqzDwIAAAAAAAAAgK6ASnUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPJFUBwAAAAAAAADAE0l1AAAAAAAAAAA8kVQHAAAAAAAAAMATSXUAAAAAAAAAADyRVAcAAAAAAAAAwBNJdQAAAAAAAAAAPP3/yHltdj52WeAAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{'aberration_name': 'VerticalComa', 'coefficient': 2.5518046080183736, 'radius': 9.854557858913137e-07, 'focal_distance': 0.847885851248093}\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Get best parameters from the study.\n",
+ "best_params = study.best_trial.params\n",
+ "coeff = best_params[\"coefficient\"]\n",
+ "\n",
+ "# Reconstruct the image which had the optimal parameters.\n",
+ "predicted_aberration = study.best_params[\"aberration_name\"]\n",
+ "\n",
+ "# Convert string back to class.\n",
+ "aberration_class = next(cls for cls in aberration_types if cls.__name__ == predicted_aberration)\n",
+ "\n",
+ "# Create aberration instance.\n",
+ "predicted_aberration = aberration_class(coefficient=coeff)\n",
+ "\n",
+ "optics.pupil = predicted_aberration\n",
+ "predicted_particle = dt.Sphere(\n",
+ " radius=best_params[\"radius\"],\n",
+ " position=(IMAGE_SIZE // 2, IMAGE_SIZE // 2, best_params[\"focal_distance\"])\n",
+ ")\n",
+ "\n",
+ "# Generate predicted image.\n",
+ "predicted_image = optics(predicted_particle).resolve().squeeze()\n",
+ "\n",
+ "fig, ax = plt.subplots(1, 2, figsize=(18, 5))\n",
+ "ax[0].imshow(experimental_image, cmap=\"gray\")\n",
+ "ax[0].set_title(f\"Ground truth: {aberration}\")\n",
+ "ax[0].axis(\"off\")\n",
+ "\n",
+ "ax[1].imshow(predicted_image, cmap=\"gray\")\n",
+ "ax[1].set_title(f\"Predicted: {predicted_aberration} \")\n",
+ "ax[1].axis(\"off\")\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n",
+ "print(best_params)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "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.9.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
From 727500ed50e59c049d009209bbb33913cbb442cd Mon Sep 17 00:00:00 2001
From: Alex <95913221+Pwhsky@users.noreply.github.com>
Date: Tue, 29 Apr 2025 11:13:19 +0200
Subject: [PATCH 7/7] added periods to readme.
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 16731c7c6..6c70d5a48 100644
--- a/README.md
+++ b/README.md
@@ -71,11 +71,11 @@ Here you find a series of notebooks that give you an overview of the core featur
- DTGS126 **[Characterizing aberrations with a CNN](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS126_characterizing_aberrations_cnn.ipynb)**
- Characterizing spherical aberrations of an optical device with a convolutional neural network (CNN) using simulated images in the training process
+ Characterizing spherical aberrations of an optical device with a convolutional neural network (CNN) using simulated images in the training process.
- DTGS127 **[Characterizing aberrations with Optuna](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS127_characterizing_aberrations_optuna.ipynb)**
- Characterizing aberrations of an optical device with the optimization framework [`Optuna`](https://optuna.org/)
+ Characterizing aberrations of an optical device with the optimization framework [`Optuna`](https://optuna.org/).
- DTGS131 **[Tracking Multiple Particles with a U-Net](https://github.com/DeepTrackAI/DeepTrack2/blob/develop/tutorials/1-getting-started/DTGS131_tracking_multiple_particles_unet.ipynb)**