{ "cells": [ { "cell_type": "markdown", "id": "388df18a", "metadata": {}, "source": [ "# Methods and Parameters for Feature Detection: Part 2\n", "\n", "In this notebook, we will contninue to look in detail at tobac's feature detection and examine the remaining parameters.\n", "\n", "We will treat:\n", "\n", "- [Object Erosion Parameter](#Object-Erosion-Parameter-n_erosion_threshold)\n", "- [Minimum Object Pair Distance](#Minimum-Object-Pair-Distance-min_distance)\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "7451e92f", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:54:56.535615Z", "iopub.status.busy": "2024-03-22T16:54:56.534786Z", "iopub.status.idle": "2024-03-22T16:54:58.364046Z", "shell.execute_reply": "2024-03-22T16:54:58.363016Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:58.475113Z", "start_time": "2024-10-18T14:10:58.425475Z" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import xarray as xr\n", "\n", "%matplotlib inline\n", "\n", "import seaborn as sns\n", "\n", "sns.set_context(\"talk\")\n", "\n", "\n", "import warnings\n", "\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "da405db0", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:54:58.367956Z", "iopub.status.busy": "2024-03-22T16:54:58.367478Z", "iopub.status.idle": "2024-03-22T16:54:59.844752Z", "shell.execute_reply": "2024-03-22T16:54:59.834540Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:58.964942Z", "start_time": "2024-10-18T14:10:58.475236Z" } }, "outputs": [], "source": [ "import tobac\n", "import tobac.testing" ] }, { "cell_type": "markdown", "id": "58300a2b", "metadata": {}, "source": [ "## Object Erosion Parameter `n_erosion_threshold`" ] }, { "cell_type": "markdown", "id": "e25104dc", "metadata": {}, "source": [ "To understand this parameter we have to look at one varibale of the feature-Datasets we did not mention so far: *num*\n", "\n", "The value of *num* for a specific feature tells us the number of datapoints exceeding the threshold. *n_erosion_threshold* reduces this number by [eroding](https://en.wikipedia.org/wiki/Erosion_%28morphology%29) the mask of the feature on its boundary. Supose we are looking at the gaussian data again and we set a treshold of 0.5. The resulting mask of our feature will look like this:" ] }, { "cell_type": "code", "execution_count": 3, "id": "7cb13774", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:54:59.862083Z", "iopub.status.busy": "2024-03-22T16:54:59.856195Z", "iopub.status.idle": "2024-03-22T16:55:00.159739Z", "shell.execute_reply": "2024-03-22T16:55:00.156927Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.042502Z", "start_time": "2024-10-18T14:10:58.967079Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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2bJlS6688spcfvnlx3L3AABUkJ5H+4lPPPFEvvCFL2Tbtm2HXfP0009nwYIF6devX5YuXZpRo0YlSbZv354ZM2bkrrvuSmNjY84+++yj3QYAABWiw2dM9+zZk2984xv55Cc/mW3btuXUU0897NrFixenpaUls2bNaovSJBk2bFjmzZvXtgYAADocprfccksWL16ck08+OQsXLswnPvGJw65dsWJFkuSss8465NiZZ56Zk046KY899lh27NjR0W0AAFBhOhymQ4YMyZe+9KXce++9+dCHPnTYdbt27cru3bvTq1evDB8+/JDjtbW1bbdv3ry5o9sAAKDCdPga06lTpx7Rup07dyZJBg4cmB492u/fQYMGHbS2M/Xo0SN9+vROkrb//+XHVB6zrh5mXV3Mu3qYdWU6XAv+paN+8dPraWpqSpLU1dUdds2JJ5540NrONG7s6Ly4Z8sht+947vFOvy/KZNbVw6yri3lXD7OuPl32BvsHyrimpuZ113o/UwAAuuyMad++fZMkzc3Nh13z0ksvJUn69OnT6fe/dt3j+WDjOf/75/du+6lr8NDRaWo6/Puu0r2ZdfUw6+pi3tXDrCvTLx+4O+PGjn7ddV0WpoMHD07y6ougWltb2z1zeuDa0gPXmnam/fv3t/tgbmra60FeJcy6eph1dTHv6mHWlWP//v1HtK7LnsofMGBABg8enH379rX7JvwtLS3ZunVrkmTkyJFdtQ0AALqJLgvTJGlsbEyS3HfffYccW7VqVV588cU0NDRkyJAhXbkNAAC6gS4N0+nTp6e2tjaLFi3KunXr2m7fvn17FixYkCSZM2dOV24BAIBuosuuMU2ShoaGzJ07N9dff30uvPDCnHHGGamrq8uaNWvS1NSUqVOnZvLkyV25BQAAuokuDdMkmT17durr67NkyZJs2LAhNTU1qa+vz7Rp03Luued29d0DANBNHHOYfv7zn8/nP//511wzceLETJw48VjvCgCACtal15gCAMCREqYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQpAABFEKYAABRBmAIAUARhCgBAEYQp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ts8x6+7r29/+dm688cbU1tbmr/7qr9KvX79s2LAhu3btyjve8Y7ceuutedOb3tS23qwrx/Lly3PllVcmSa6++uqcd955Bx036yrUWqFefvnl1okTJ7aOGDGidfny5W237927t/Wiiy5qHTFiROtXv/rV47hDjsVvfvOb1kmTJrWOGDHisLPcunVr6zvf+c7W008/vXXjxo1ttz/77LOtf/u3f9s6YsSI1nvuueeN3DZH6Ic//GHriBEjWt///ve3PvHEE223v/LKK63/+q//2jpixIjWCRMmtP73f/93a2urWXdnDz/8cOuIESNa3/Oe9xw06//5n/9pnTVrVuuIESNar7rqqrbbzbpybN26tXXs2LFt38fvvPPOQ46bdfWp2Kfyf/rTn+Z3v/tdJkyYkClTprTdXldXl6997Wvp06dP7rjjjuzZs+c47pKO2rNnT77xjW/kk5/8ZLZt25ZTTz31sGsXL16clpaWzJo1K6NGjWq7fdiwYW1nVxcvXtzle6bjvv/97ydJLrnkkjQ0NLTdXltbm7lz5+Yd73hHdu/enVWrViUx6+7sBz/4QZLkM5/5zEGz7tOnTy6++OIkyS9+8Yu22826Muzbty+XXHJJevTocdAc/5xZV6eKDdP7778/STJp0qRDjr35zW/O+PHj8/LLL+fBBx98o7fGMbjllluyePHinHzyyVm4cGE+8YlPHHbtihUrkiRnnXXWIcfOPPPMnHTSSXnssceyY8eOrtouR6l///6pr6/Pe97znkOO1dTU5O1vf3uStM3OrLuvr371q/nZz36WT33qU4cca2lpSfLqDyQHmHVl+OY3v5mNGzdm3rx5GTp0aLtrzLo6VWyYPvnkk0mSkSNHtnv8tNNOS5Js2rTpDdsTx27IkCH50pe+lHvvvTcf+tCHDrtu165d2b17d3r16pXhw4cfcry2trbt9s2bN3fZfjk6N910U372s5/lrW996yHHWlpasnHjxiTJ0KFDzbqb69mzZ+rr69O/f/+Dbn/uuefy9a9/PUnarjs068qwevXqfPe7381HP/rRnHPOOe2uMevq1fN4b6Cr7Ny5M0kyePDgdo8PGjTooHV0D1OnTj2idQfmOnDgwPTo0f7PXx4D3dNtt92WZ599NgMGDMiECROybdu2JGZdKa655pqsX78+69evT01NTT796U/noosuSuLvdSV44YUXctlll2XIkCG56qqrDrvOrKtXxYbpgbeDqqura/f4gdu9bVRler35J8mJJ5540FrK96tf/SrXXnttkuTSSy9N3759zbrC3HnnnfnTn/6UJDnhhBPy/PPPZ9euXRk0aJBZV4Arrrgiu3fvzpIlSw45S/7nzLp6VexT+QeuSaqpqXnNda2V+25ZVe3AT9ivN//EY6C7WLFiRS666KLs27cv06ZNazt7btaV5Uc/+lHWr1+f5cuX5/TTT8+Pf/zjTJs2LU1NTWbdzd166625//77M2vWrIwfP/4115p19arYMO3bt2+SZO/eve0eP/Cmzb17937D9sQb58D8D/fm3Eny0ksvJXn11b+UbenSpfnc5z6X5ubmTJ8+PV/5ylfajpl1ZRk6dGjq6uoyZsyY3HzzzRkxYkT+67/+K3fccYdZd2O//e1vc+211+Zd73pXvvCFL7zuerOuXhX7VP6gQYPyxz/+Mc8//3y7L6A4cE3KgWtUqCwHri3etWtXWltb2/2p22OgfK+88krmz5+f22+/PTU1NfniF7/Ydr3hAWZduU444YR85CMfyZNPPpnf/OY3be/CYdbdz3XXXZfm5ubU1dXly1/+8kHHDryY8Y477sjq1avz3ve+Nx/+8IeTmHU1qtgwHTlyZJ588sk89dRTOf300w85/tRTT7Wto/IMGDAggwcPzo4dO7Jt27a87W1vO+h4S0tLtm7dmsRjoFTNzc353Oc+l5UrV6Z379655pprcvbZZx+yzqy7txtuuCFbt27NP/3TP2XIkCGHHD/hhBOSvPpDill3XweuA33kkUfyyCOPtLtm7dq1Wbt2bXr27JkLLrjArKtUxT6V39jYmCS59957Dzn2hz/8IWvWrEmvXr3y/ve//43eGm+QA4+B++6775Bjq1atyosvvpiGhoZ2/zHk+GppaWmL0lNOOSW33HJLu1F6gFl3X6tWrco999yTn/70p+0ef+CBB5Ik7373u5OYdXe1dOnSbN68ud3/Jk6cmOTVX0m6efPmXHPNNUnMulpVbJhOmjQpw4YNy8qVK3Prrbe23d7c3JwrrrgiTU1NmTJlSgYOHHgcd0lXmj59empra7No0aKsW7eu7fbt27dnwYIFSZI5c+Ycp93xWhYuXJiVK1emT58++d73vpcxY8a85nqz7r6mT5+eJLnxxhuzYcOGtttffvnlXHfddXnooYdyyimn5Pzzz29bb9bVwayrU8U+lV9XV5drrrkms2fPzvz583PnnXfm1FNPzdq1a7Nz586MGjUql1566fHeJl2ooaEhc+fOzfXXX58LL7wwZ5xxRurq6rJmzZo0NTVl6tSpmTx58vHeJn9hz549+c53vpPk1WvHFi1adNi1H/vYx9LY2GjW3djHP/7x/PrXv87tt9+eCy64IOPGjUv//v3zxBNP5Pe//30GDBiQhQsXtr21kFlXD7OuThUbpkkyfvz4LF++PDfeeGMeeuihPPXUUzn11FMzZcqUzJo1K/369TveW6SLzZ49O/X19VmyZEk2bNiQmpqa1NfXZ9q0aTn33HOP9/Zox0MPPdR2PdozzzyTZ5555rBr3/nOd7Y93WfW3df8+fPzvve9L8uWLcvGjRuzb9++DBs2LDNmzMisWbMO+UUpZl09zLr61LR6AzAAAApQsdeYAgDQvQhTAACKIEwBACiCMAUAoAjCFACAIghTAACKIEwBACiCMAUAoAjCFACAIghTAACKIEwBACiCMAUAoAjCFACAIvx/N0C8RtU/vm4AAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-2, 2)\n", "y = np.linspace(-2, 2)\n", "xx, yy = np.meshgrid(x, y)\n", "\n", "exp = np.exp(-(xx**2 + yy**2))\n", "\n", "gaussian_data = np.expand_dims(exp, axis=0)\n", "threshold = 0.5\n", "\n", "mask = gaussian_data > threshold\n", "mask = mask[0]\n", "\n", "plt.figure(figsize=(8, 8))\n", "plt.imshow(mask)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d7e0e85a", "metadata": {}, "source": [ "The erosion algorithm used by tobac is imported from *skimage.morphology*:" ] }, { "cell_type": "code", "execution_count": 4, "id": "ae4d979f", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:00.166570Z", "iopub.status.busy": "2024-03-22T16:55:00.165805Z", "iopub.status.idle": "2024-03-22T16:55:00.234363Z", "shell.execute_reply": "2024-03-22T16:55:00.228350Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.109089Z", "start_time": "2024-10-18T14:10:59.043400Z" } }, "outputs": [], "source": [ "from skimage.morphology import binary_erosion" ] }, { "cell_type": "markdown", "id": "09500e57", "metadata": {}, "source": [ "Applying this algorithm requires a quadratic matrix. The size of this matrix is provided by the *n_erosion_threshold* parameter. For a quick demonstration we can create the matrix by hand and apply the erosion for different values:" ] }, { "cell_type": "code", "execution_count": 5, "id": "43921591", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:00.241743Z", "iopub.status.busy": "2024-03-22T16:55:00.240784Z", "iopub.status.idle": "2024-03-22T16:55:01.174928Z", "shell.execute_reply": "2024-03-22T16:55:01.173471Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.377069Z", "start_time": "2024-10-18T14:10:59.081046Z" } }, "outputs": [ { "data": { "text/plain": "Text(0.5, 1.0, '$\\\\mathtt{n\\\\_erosion\\\\_threshold} = 10$')" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAABHsAAAGRCAYAAAD1tr+tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA370lEQVR4nO3dfZSWdYE38O/wogMCi0mAqE8F7oCoqKUg2kZJomm1ibKl1rLKE/roWnj01K4am+Jmtbm1avWw+aTFqqsYrbu5Hq00FSkwfEHZgARlDQoVlXCHER3u5w/OjCIzODPM63V9Pudwznhdv7nv38zvvr/jfOd6qapUKpUAAAAAUAi9unoCAAAAALQfZQ8AAABAgSh7AAAAAApE2QMAAABQIMoeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACkTZQ5f5zGc+k9GjR3f1NNrd7373u4wePTp/8zd/09VTabWOnvu//Mu/ZPTo0Tv8+93vftfqxznuuONy3HHHdcAMgY4m+7sf2Q+0B/ne/cj3cuvT1ROAnqYhiO69994unknPM27cuPz1X/91kuRnP/tZVqxY0cUzar1ly5bl2muvzWOPPZbXXnstBx54YKZPn56PfexjXT01oAPJ/rbr6dl/3HHHZd26dU3u++QnP5krrriik2cEtCf53nY9Pd/vuOOOLF26NE8++WRWrVqV1157LVdddVWmTp3a7Of0pN8FlD10ma997WvZsmVLV0+DTjRu3LiMGzcuSbJu3boe9wNh8eLFmTFjRvr27ZuTTz45AwcOzD333JOLL74469aty7nnntvVU4RuT/aXT0/P/iQZOHBgpk+fvtP2Qw45pAtmA92TfC+fnp7v//RP/5R169Zl7733ztChQ5st9hv0tN8FlD10mREjRnT1FKDFXn/99Vx22WWpqqrKTTfdlLFjxyZJzj///HzqU5/KtddemxNPPDHvfve7u3ai0M3JfnqiQYMG5YILLujqaUC3Jt/paa688sq8613vyn777Zd//ud/ztVXX93s2J74u4Br9nSAN58b+etf/zqnn356DjvssBx77LH5x3/8x2zbtm23n+O+++7LX/7lX+Z973tfDjvssPzFX/xFfvaznzU7/m/+5m8az6GcP39+PvrRj2bcuHE55phjMnv27MZx27Ztyw033JCPfvSjOfTQQ3PUUUdl5syZWbZsWbOPfdddd+X000/P0UcfncMPPzwnnHBCLr300qxdu3ansddee+1O53U2pzVz6ejvecM5yKNHj866deuybt26Hb6Gz3zmM01+Xmvm0tI1atCa10Br1qi1c2/La6alXnnllVx55ZV5//vfn8MOOyxnnnlmli9fvtuP2xa/+tWv8t///d/56Ec/2hjuSTJgwICcd955ef3117NgwYIumRvdg+yX/Q1k/+7pTtkPiXyX72+Q77unu+X7Mccck/32269FY3vi7wKO7OlAa9asyTnnnJMPfehDOfjgg3P33Xdn7ty5GTJkSP7yL/+yzY/b0Drus88++chHPpLq6uo88MADOf/889/2HMN58+bl1ltvzZQpU/LBD34wa9euzcMPP9y4/0tf+lJuv/32jBw5Mp/5zGfy8ssv584778yvfvWr3HDDDXnf+963w+PdfPPNufzyy7Pffvvl5JNPzp577pn//u//zn/+53/mmGOOybve9a4dxo8fP77xvM4f//jHuzxUrrVzSTrue37KKadk/PjxSZIf/OAHSbLD4dxNhURb5/J2a5S07jXQ2jVq7dzbsk4tsW3btvyf//N/smTJkhx11FE54ogjsnz58px99tmpVCoZMGBAmx63rZYsWZIkef/737/TvmOPPXaHMZSb7Jf9sr842d9g69at+fGPf5wNGzZk0KBBee9735sxY8Z0yVzoOvJdvsv34uV7S/XI3wUqtLtnn322UlNTU6mpqan84he/aNz+zDPPVMaMGVOZOnVqmx97+fLllTFjxlROPPHEyksvvdS4fcuWLZVPfOITlfe9732VV155ZafP++IXv1ipqampjB8/vrJmzZod9j3//POVSqVSefzxxys1NTWVj33sY5W6urrG/b/85S8rNTU1lU984hM7Pe4pp5xSOfTQQyubNm3aYfvmzZsrzz333C6/lk9/+tOVmpqaJve1di4d+T1/qw996EOVD33oQ83ub+tcWrJGlUrrXwOtWaPWzr0tr5m3fr3PPvtsk/vvvPPOSk1NTeW8887bYfsll1xSqamp2eUaNLjmmmta9e+t36M3u+CCCyo1NTWVJ554osn9EyZMqBx99NFvOyeKS/bLftlfvOyvVLavfcP3583/ZsyYUdm4cePbzoeeT77Ld/lezHx/s7lz51ZqamoqP/rRj5rc3xN/F3BkTweqqanJpEmTGv/7Xe96V0aOHJk1a9a0+TFvvfXWbNu2LRdddFEGDx7cuL26ujpnnHFGLrvssvzyl7/Mhz/84SY//4wzzsh73vOeHbYNGTIkSfLTn/40yfbDGvfcc8/G/UcffXQOPfTQPPHEE3n22WdzwAEHNO7btm1bevfunT59dnwpDRgwYLfa2bbMJemY73lbtXUuu1qjpPWvgbasUUvn3tZ1aomGx37rXxvOPvvs3H777S16jOuuu65Vz3nKKadk0KBBTe575ZVXkmy/SGdTBgwYkD/84Q+tej6KSfbLftlfnOxPkqlTp2b8+PE58MADs8cee2T16tW57rrr8sADD+S8887LLbfckqqqqlY9Jz2TfJfv8r1Y+d4aPfF3AWVPB3rrmzpJ9t577zz11FNtfswnnngiSfLwww/nN7/5zQ77Gs7R3NW5mhMmTGh23+rVq5OkycOSx44dmyeeeCKrV6/e4c09ZcqU/NM//VNOO+20nHzyyTn88MNz6KGH7vabqi1zSTrme95WbZ3LrtYoaf1roC1r1NK5t3WdWqLhsWtqanbYPmrUqOyxxx4teoyVK1e2+nlhd8n+tpP9zZP9XZf9DaeoNDjssMMyd+7cfPrTn87SpUtz//3354Mf/GC7Pifdk3xvO/nePPnu/+07irKnA/Xv33+nbbv7l5/NmzcnSW688cZmx+zqlofDhw9vdl9tbW2S7NAoN2jY9j//8z87bD/33HMzaNCg3H777bn22mtTqVTSt2/fnHDCCbn88svb/BeAtswl6ZjveVu1dS67WqOk9a+BtqxRS+fe1nVqiYav4U/+5E922tfUto7W8H1q+P6/1SuvvNJs00+5yH7Z/1ayv+W6W/Y3p1evXpk6dWqWLl2aRx55RNlTEvJdvr+VfG+5npLvzemJvwsoe3qYhhfQ0qVL2xS2bz3c780aQuDll1/eqa19+eWXkyR77bXXDtt79eqVT3/60/n0pz+dzZs3Z8mSJfn+97+fn/zkJxk8eHC+9KUvtXqObZ1LUexqjZLWvwY6ao2Sjl2nhsfetGlT9t577x32bdq0Ke985zvf9jGuvfbaVj3n9OnTm/2rSMNtFNeuXZtDDjlkp/m89NJLOeKII1r1fNBSsl/2y/6uyf5daZjfrn4Rh7cj3+W7fO9++d6Unvi7gLKnhznkkEOyfPnyPPnkkzn66KPb9bFHjhyZn//851mxYkUOPfTQHfY1HFI4cuTIZj9/4MCBmTx5cv7sz/4sRx99dBYvXtxlc+lIvXr1ytatW7vkuZPdew205xolu7dODYFfV1fX5P4DDzwwK1asyKpVq3Y4/HX16tUt/v6353m9Rx11VObOnZuFCxfm5JNP3mHfQw89lCSNd3WA9ib7Zb/s75rs35WG2xC39La90BT5Lt/le/fL96b0xN8FenX1BGidadOmpaqqKl/72tfy4osv7rR/yZIljYfftdbxxx+fZPvtARsuQJUkCxcuzLJlyzJmzJj8r//1v3b4nAcffDD19fU7bNuwYUPq6up2643Vlrl0lr333jsbN27MH//4xy55/ta+BjpqjZLdW6eG7Y899liT+6dMmZIkueGGG7Jt27bG7d///vdbPL+VK1e26t/+++/f7GNNnDgxBxxwQH7yk5/scD71K6+8ku985zvp06dPTjnllBbPDVpD9st+2d812f/UU081uea//vWvc8MNN2SPPfZonDO0hXyX7/K9a/K9tXri7wKO7OlhDj300MyaNSvf/OY385GPfCQf+MAHMnTo0Pz+97/PsmXL8uyzz2bhwoVNnpf5dg477LBMnTo1CxYsyNSpU/OBD3wgL730Uu65557sscceueyyy3b6nAsvvDD9+vXLkUcemREjRuSPf/xj7rnnnmzbti1nn332DmN/97vf5cc//nHjf69bty7JjofjffjDH85BBx3Uprl0lkmTJmXZsmWZOXNmpkyZkn79+mXo0KGZPHlypzx/a18DrVmj1tqddfr4xz+ea665Jn//93+fFStW5E/+5E8ycODA/NVf/VWS7T8QJkyYkPvuuy+f+tSncuSRR2blypV58sknu+S83j59+uTKK6/M//7f/ztnnHFGPvrRj2bAgAG555578rvf/S6zZs1q8uJ30B5kv+yX/V2T/XfddVeuv/76TJw4Mfvtt1/22GOPrFq1Kg899FB69eqVyy+/PCNGjOj0eVEc8l2+y/euyfckmT9/fpYuXZokWbVqVeO2JUuWJNn++m24C1pP/F1A2dMDnXvuuRk7dmx++MMf5oEHHsj//M//ZOjQoRkzZkz++q//eqdzIFvjyiuvzIEHHpgFCxbkX//1X1NdXZ0JEybkggsuyGGHHbbT+AsvvDD3339/HnnkkfzsZz/L3nvvncMPPzyf/exnc+SRR+4wdt26dU0eevfmbfvtt18OOuigNs2ls8ycOTObNm3K3XffnX/4h3/Itm3bMn78+E77gZC07jXQmjVqi7au0zve8Y7ccMMNueqqqzJ//vzU1dVlv/32a/yBUFVVle985zv51re+lbvuuisrVqzIwQcfnO9///u54IILdnvebXH00Ufn5ptvzjXXXJO77rorr732Wg488MB8/vOfz8c//vEumRPlIftlv+zv/OyfMGFCVq9enf/6r//KkiVLsnXr1uyzzz456aST8ld/9VcZN25cp8+J4pHv8l2+d83/2y9dunSHwjJJHnnkkTzyyCNJtr9+G8qepOf9LlBVqVQqXT0JAAAAANqHa/YAAAAAFIiyBwAAAKBAOu2aPU8//XS+/e1vZ+nSpdm4cWOGDx+ej3zkIznnnHPadMExALo/2Q9QPrIfoOt1yjV7li1blunTp6e2tjbjxo3Lvvvum0ceeSTPP/98Ro8enZtvvjkDBgzo6Gl0O8cdd1yLxx599NH5yle+0oGzKQ/fd+gcsr9pMqhr+L5D5yhz9suZruH7Dk3r8LLn9ddfz4knnphnn302f//3f5/TTjstSVJXV5cLL7ww9957b84888zMnj27I6cBQCeS/QDlI/sBuo8Ov2bPnXfemWeffTYTJ05sDPwkqa6uzle+8pX0798/t912WzZt2tTRUwGgk8h+gPKR/QDdR4eXPffee2+S5Pjjj99p3957750JEybktddey4MPPtjRUwGgk8h+gPKR/QDdR4eXPatWrUqSjB49usn9Bx54YJJkxYoVHT0VADqJ7AcoH9kP0H10+N24nnvuuSTJsGHDmtw/dOjQHca1l9raLenfv1+S5PFly7NtW4dfh5pupFevqhw27uAk1r9syrr2o2tGNWZedyD76Qplff9T3rWX/dvJ/nIr6/uf8q59S7O/w8ue2traJNvP1W1Kw/aGce3lzV98wwuAcrL+5WXtu47sp6tZ//Ky9l1H9tPVrH95WfuddfhpXL17906SVFVV7XJcJ9wBHoBOIvsBykf2A3QfHX5kz1577ZWXX345W7ZsaXJ/XV1dkqRfv/Y9BPXxZcsb271h+x6S2tqmn59i6t+/Xzb8/skk1r9syrr2D9x/R444/JCunkYj2U9XKOv7n/KuvezfTvaXW1nf/5R37Vua/R1e9gwdOjQvv/xynn/++RxwwAE77W84Z7fhHN728ubz9Wprt5Rm4dmZ9S+vMq39tm3bunoKO5D9dDXrX15lWnvZv53sp4H1L68yrX1Ls7/DT+NquBr/U0891eT+hu3NXbUfgJ5H9gOUj+wH6D46vOyZNGlSkuTuu+/ead9LL72UxYsXp2/fvjn22GM7eioAdBLZD1A+sh+g++jwsuf444/PiBEjsnDhwtx0002N2+vq6nLppZemtrY2p512WoYMGdLRUwGgk8h+gPKR/QDdR4dfs6e6ujpf/epXM3PmzFxxxRX50Y9+lP333z+PPvponnvuuYwdOzYXX3xxR08DgE4k+wHKR/YDdB8dfmRPkkyYMCHz58/PCSeckPXr1+cXv/hFBg4cmPPOOy/z5s3LgAEDOmMaAHQi2Q9QPrIfoHvo8CN7GtTU1OSaa67prKcDoBuQ/QDlI/sBul6nHNkDAAAAQOdQ9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACkTZAwAAAFAgyh4AAACAAlH2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACUfYAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgSh7AAAAAApE2QMAAABQIMoeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACkTZAwAAAFAgyh4AAACAAlH2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACUfYAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgSh7AAAAAApkt8ueZ555JocffniuuOKKZscsWrQoZ511ViZOnJgjjjgip556aubPn59KpbK7Tw9AF5D9AOUj+wF6jt0qe1544YWcd9552bJlS7Njbrnllpx11ll5+OGHM3bs2EyYMCGrV6/OZZddlksuuWR3nh6ALiD7AcpH9gP0LH3a+om/+c1v8vnPfz5r165tdszTTz+dOXPmZMCAAZk3b17Gjh2bJFm/fn2mT5+eBQsWZNKkSTnxxBPbOg0AOpHsBygf2Q/Q87T6yJ5NmzblH/7hH/IXf/EXWbt2bfbff/9mx15//fWpr6/PjBkzGgM/SUaMGJHZs2c3jgGge5P9AOUj+wF6rlaXPT/84Q9z/fXX5x3veEe++93v5hOf+ESzY++7774kyZQpU3bad8wxx2TgwIF54oknsmHDhtZOA4BOJPsBykf2A/RcrS57hg8fni9+8Yu5++67c9xxxzU77oUXXsjGjRvTt2/fjBw5cqf9vXv3bty+cuXK1k4DgE4k+wHKR/YD9FytvmbPtGnTWjTuueeeS5IMGTIkvXo13SkNHTp0h7HtqVevqsaP+/fv1+6PT/f25jW3/uVS1rVvLmfbi+ynJyjr+5/yrr3s3072l1tZ3/+Ud+1bmv1tvkDz26mtrU2SVFdXNztmzz333GFsezps3MGNH2/4/ZPt/vj0HNa/vKx955P9dBfWv7ysfeeT/XQX1r+8rP3OOuzPAQ1tU1VV1duMTCqVSkdNA4BOJPsBykf2A3Q/HXZkz1577ZUkqaura3bMq6++miTp379/uz//48uWN7b8w/Y9JLW1W9r9Oei++vfv19juWv9yKevaP3D/HTni8EO6ehqyny5V1vc/5V172b+d7C+3sr7/Ke/atzT7O6zsGTZsWJLtF2yrVCpNNv0N5+w2nMPbnrZte+OvBrW1W0qz8OzM+pdXmdZ+27ZtXT2FJLKf7sP6l1eZ1l72byf7aWD9y6tMa9/S7O+w07gGDx6cYcOGZevWrVm7du1O++vr67NmzZokyejRoztqGgB0ItkPUD6yH6D76dBL+E+aNClJcs899+y076GHHsrmzZszZsyYDB8+vCOnAUAnkv0A5SP7AbqXDi17zjzzzPTu3Ttz587NY4891rh9/fr1mTNnTpLknHPO6cgpANDJZD9A+ch+gO6lw67ZkyRjxozJrFmzcvXVV+eMM87I+PHjU11dncWLF6e2tjbTpk3LSSed1JFTAKCTyX6A8pH9AN1Lh5Y9STJz5syMGjUqN954Y5YtW5aqqqqMGjUqp59+ek455ZSOfnoAuoDsBygf2Q/Qfex22XPBBRfkggsu2OWYyZMnZ/Lkybv7VAB0E7IfoHxkP0DP0aHX7AEAAACgcyl7AAAAAApE2QMAAABQIMoeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACkTZAwAAAFAgyh4AAACAAlH2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCB9unoC0Fnq1j/Y1VNoV9Uj/qyrpwAAAEA35MgeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBB346LH2vXdtaoaP3rxqZ8mqXT4fDpba+8u5u5dAAAA5eDIHgAAAIACUfYAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgbj1Ot1aa28vTvN29b10W3aAN3TWzx7ZCwB0FEf2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIG4Gxfdgrtuda3mvv/uFAP0dN3550tb5iaXAYCWcGQPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACUfYAAAAAFIiyBwAAAKBA3HqdTtOdb39L03a1Zm7/C3Qn2/OqqvG/X3zqp0kqXTafjtJcLstkAODNHNkDAAAAUCBtPrLnjjvuyO23354VK1Zky5Yt2WeffXL00Udn5syZGTVq1E7jFy1alO9973tZsWJF6urqMnLkyHzqU5/KaaedlqqqqiaeAYDuRvYDlI/sB+h5Wn1kT6VSyUUXXZQvfOELeeSRRzJq1Kh84AMfSO/evfNv//ZvmTp1ahYuXLjD59xyyy0566yz8vDDD2fs2LGZMGFCVq9encsuuyyXXHJJu30xAHQM2Q9QPrIfoOdq9ZE9//7v/56f/OQneec735nrr78+Y8aMSZLU19fnmmuuyf/9v/83X/jCF/LTn/40e+21V55++unMmTMnAwYMyLx58zJ27Ngkyfr16zN9+vQsWLAgkyZNyoknnti+XxkA7Ub2A5SP7AfouVp9ZM/tt9+eJLnooosaAz9JevfunVmzZuVP//RPs3Hjxjz00ENJkuuvvz719fWZMWNGY+AnyYgRIzJ79uzGMQB0X7IfoHxkP0DP1eojewYNGpRRo0blyCOP3GlfVVVV3vOe9+S3v/1tNmzYkCS57777kiRTpkzZafwxxxyTgQMH5oknnsiGDRsybNiw1k4HgE4g++ku3Nmxae7SRUeQ/QA9V6vLnm9/+9vN7quvr8/y5cuTJPvuu29eeOGFbNy4MX379s3IkSN3Gt+7d++MHDkyjz/+eFauXNmuod+r1xsXf+vfv1+7PS67ozMvyFfVzMe0l+76vnrzvLrrHDtCr14de3NF2U/3satMl/1vVZb3gezvGLKfnqCs73/Ku/Ytzf42342rKTfffHPWrVuXwYMHZ+LEiVm7dm2SZMiQIc1OaOjQoUmS5557rj2nksPGHdz48YbfP9muj03P0ved7+nqKRTS5k2ru3oKb8t7v3PIfroj2b9dT8jq9ua93zlkP92R9S8va7+zdvtzwC9/+ct8/etfT5JcfPHF2WuvvVJbW5skqa6ubvbz9txzzyRpHAtAzyH7AcpH9gN0f+1yZM99992XWbNmZevWrTn99NMzbdq0JG8cXlRV9faHUlcqlfaYSqPHly1vbPmH7XtIamu3tOvj03ovPvXTTny2qsa/6r72/NNJ2vf1RfKOA4/v6ik0qX//fo3Nfpne+w/cf0eOOPyQTn1O2U9X2PXPEtn/Vt01q9ub7O88sp/upqzvf8q79i3N/t0ue+bNm5errroq9fX1OfPMM/OlL32pcd9ee+2VJKmrq2v281999dUkSf/+/Xd3KjvYtu2NHyK1tVtKs/DdW1f9T3elC5+7uHrCe6pM7/1t27Z16vPJfrpOS/Nc9ic9I6vbW5ne+7J/O9lPA+tfXmVa+5Zmf5vLntdffz1XXHFFbr311lRVVeXCCy/Mueeeu8OYhguvvfDCC6lUKk02/Q3n7Dacw0vP504p5eDOL+Uk++kMfo60n119L+U1LSX7Kbv2/Lkke+ksbbpmT11dXc4555zceuut6devX771rW/tFPhJMnjw4AwbNixbt25tvGjbm9XX12fNmjVJktGjR7dlKgB0EtkPUD6yH6BnanXZU19fn/PPPz8LFy7MPvvskx/+8Ic58cQTmx0/adKkJMk999yz076HHnoomzdvzpgxYzJ8+PDWTgWATiL7AcpH9gP0XK0ue7773e9m4cKF6d+/f37wgx9k3Lhxuxx/5plnpnfv3pk7d24ee+yxxu3r16/PnDlzkiTnnHNOa6cBQCeS/QDlI/sBeq5WXbNn06ZN+X//7/8l2X6u7dy5c5sd+7GPfSyTJk3KmDFjMmvWrFx99dU544wzMn78+FRXV2fx4sWpra3NtGnTctJJJ+3eVwFAh5H9AOUj+wF6tlaVPUuWLEltbW2S5JlnnskzzzzT7NiDDjqo8VDOmTNnZtSoUbnxxhuzbNmyVFVVZdSoUTn99NNzyimntH32AHQ42Q9QPrIfoGdrVdlz/PHHZ+XKlW16osmTJ2fy5Mlt+lwAuo7sBygf2Q/Qs7X51usAAABQBO15e/W2PI9bstPe2nTrdQAAAAC6J2UPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACcTcuAKBLdNadT2iaO8IAZdRdf/bsal5ymbZwZA8AAABAgSh7AAAAAApE2QMAAABQIMoeAAAAgAJR9gAAAAAUiLIHAAAAoEDceh0AAIDC6K63V2+r5r4et2RnVxzZAwAAAFAgyh4AAACAAlH2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACUfYAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgSh7AAAAAApE2QMAAABQIMoeAAAAgALp09UTAADKqXrEnzW5vW79g508k3Jq7vsP0NPtKt964s8YeU1bOLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACsTduAAAACiF7nonSHfcor05sgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCBuvU676663M6R9uT0k0FF2lS9+lrSOrAZomc762SOX6SyO7AEAAAAokDYd2XPXXXflpptuyvLly1OpVHLAAQfkpJNOyllnnZXq6uqdxi9atCjf+973smLFitTV1WXkyJH51Kc+ldNOOy1VVVW7/UUA0PFkP0D5yH6AnqnVR/Zce+21mTVrVh555JEccsghmThxYl588cV861vfymmnnZZNmzbtMP6WW27JWWedlYcffjhjx47NhAkTsnr16lx22WW55JJL2u0LAaDjyH6A8pH9AD1Xq47s+fWvf53rrrsugwYNyrx58zJmzJgkSW1tbT73uc/lwQcfzLe+9a383d/9XZLk6aefzpw5czJgwIDMmzcvY8eOTZKsX78+06dPz4IFCzJp0qSceOKJ7fxlAdBeZD9A+ch+gJ6tVUf2/PjHP06SfPazn20M/CTp379/Pve5zyVJfvGLXzRuv/7661NfX58ZM2Y0Bn6SjBgxIrNnz24cA0D3JfsBykf2A/RsrTqy5/LLL8/ZZ5+dd77znTvtq6+vT5L07t27cdt9992XJJkyZcpO44855pgMHDgwTzzxRDZs2JBhw4a1auIAdA7ZT3fijo9Nc3cX2pvshzfIWHqiVpU9ffr0yahRo3ba/vvf/z5f+9rXkiRTp05NkrzwwgvZuHFj+vbtm5EjR+70Ob17987IkSPz+OOPZ+XKle0e+r16vXEBuP79+7XrY9NWnXlRvqpmPqa9dNf31Zvn1V3n2BF69eq4myvKfnqGqpQ5+8v+epf97U/201OU9f1Pede+pdnfprtxNfjqV7+axx9/PI8//niqqqpy9tln59xzz02SPPfcc0mSIUOGNDuZoUOH7jC2PR027uDGjzf8/sl2f3x6jr7vfE9XT6GQNm9a3dVTeFve+x1D9tMTlC37e0Imdxbv/Y4h++kJrH95Wfud7VbZ86Mf/Sh//OMfkyR77LFHnn/++bzwwgsZOnRoamtrk6TJWzI22HPPPZOkcSwA3Z/sBygf2Q/Qs+xW2fPv//7v2XvvvbNq1apcffXV+Y//+I88+uij+Y//+I/GVr+q6u0Po65UKrszjSY9vmx5Y8s/bN9DUlu7pd2fg9Z58amfduKzVTX+Vfe1559O0v6vsbJ7x4HHd/UUmtS/f7/GZr9M7/0H7r8jRxx+SKc8l+ynO9r+M6a82d9dM7mzyP6OJ/vprsr6/qe8a9/S7N+tsmffffdNkowbNy7f+973cuqpp2bVqlW57bbbMnHixCRJXV1ds5//6quvJtl+Vf/2tm3bGz9Iamu3lGbhu7eu+p/uShc+d3H1hPdUmd7727Zt67Tnkv10T2/N+XJlv9f6G8r03pf928l+Glj/8irT2rc0+3er7HmzPfbYIx/5yEeyatWq/Nd//Vc+8YlPJNl+wbZKpdJk099wzm7DObwU266uYl/2u6h0V+48wNuR/XQX1SP+LP3792u8ds07Djw+tbVbCvfzRS7THch+gO6vVZfwv+aaazJr1qz84Q9/aHL/HnvskSR5/fXXM3jw4AwbNixbt27N2rVrdxpbX1+fNWvWJElGjx7d2nkD0ElkP0D5yH6Anq1VZc9DDz2Uu+66K3feeWeT+++///4kyaGHHpokmTRpUpLknnvuafKxNm/enDFjxmT48OGtmjQAnUf2A5SP7Afo2VpV9px55plJkuuuuy7Lli1r3P7aa6/lG9/4RpYsWZJ99tknp556auP43r17Z+7cuXnssccax69fvz5z5sxJkpxzzjm7+zUA0IFkP0D5yH6Anq1V1+z5+Mc/nl//+te59dZb88lPfjJHHHFEBg0alN/85jf5wx/+kMGDB+e73/1uBg0alCQZM2ZMZs2alauvvjpnnHFGxo8fn+rq6ixevDi1tbWZNm1aTjrppA75wgBoH7IfoHxkP0DP1uoLNF9xxRU5+uijc8stt2T58uXZunVrRowYkenTp2fGjBkZNmzYDuNnzpyZUaNG5cYbb8yyZctSVVWVUaNG5fTTT88pp5zSbl8IAB1H9gOUj+wH6LnadDeuk046qVXN/OTJkzN58uS2PBUA3YTsBygf2Q/QM7XbrddhdzR3K9mi3TK3u3IrX6Co2pJvnfWzR/YCAB2lVRdoBgAAAKB7U/YAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQd+OiW9vVnUrcqat13PUFoGXkJQDQ0zmyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgSh7AAAAAApE2QMAAABQIG69To+1q1vj9u/fL5s3rU6SvOPA41Nbu6Vwt2p3a2AAAACa4sgeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBB346I03L0KAACAMnBkDwAAAECBKHsAAAAACkTZAwAAAFAgyh4AAACAAlH2AAAAABSIsgcAAACgQJQ9AAAAAAWi7AEAAAAoEGUPAAAAQIEoewAAAAAKRNkDAAAAUCDKHgAAAIACUfYAAAAAFIiyBwAAAKBAlD0AAAAABaLsAQAAACgQZQ8AAABAgSh7AAAAAApE2QMAAABQIMoeAAAAgAJR9gAAAAAUiLIHAAAAoECUPQAAAAAFouwBAAAAKBBlDwAAAECBKHsAAAAACkTZAwAAAFAg7VL2fO5zn8vo0aOzYMGCJvcvWrQoZ511ViZOnJgjjjgip556aubPn59KpdIeTw9AF5D9AOUj+wF6ht0ue+bPn5+777672f233HJLzjrrrDz88MMZO3ZsJkyYkNWrV+eyyy7LJZdcsrtPD0AXkP0A5SP7AXqOPrvzyU8//XS+8pWv7HL/nDlzMmDAgMybNy9jx45Nkqxfvz7Tp0/PggULMmnSpJx44om7Mw0AOpHsBygf2Q/Qs7T5yJ6tW7fmoosuSq9evRrD/K2uv/761NfXZ8aMGTuMGTFiRGbPnt04BoCeQfYDlI/sB+h52lz2fPOb38zy5csze/bs7Lvvvk2Oue+++5IkU6ZM2WnfMccck4EDB+aJJ57Ihg0b2joNADqR7AcoH9kP0PO06TSuRYsW5YYbbsjJJ5+cP//zP2/y3N0XXnghGzduTN++fTNy5Mid9vfu3TsjR47M448/npUrV2bYsGFtmUqzevWqavy4f/9+7frYdH9vXnPrXy5lXftevTr+5oqyn+6urO9/yrv2sn872V9uZX3/U961b2n2t7rsefHFF/OFL3whw4cPz5e//OVmxz333HNJkiFDhjQ7maFDh+4wtj0dNu7gxo83/P7Jdn98eg7rX17Wvv3Ifnoa619e1r79yH56GutfXtZ+Z60uey699NJs3LgxN954YwYNGtTsuNra2iRJdXV1s2P23HPPHcYC0D3JfoDykf0APVeryp6bbrop9957bz772c9mwoQJuxzb0OpXVVXtclySVCqV1kyjRR5ftryx5R+27yGprd3S7s9B99W/f7/Gdtf6l0tZ1/6B++/IEYcf0iGPLfvpKcr6/qe8ay/7t5P95VbW9z/lXfuWZn+Ly57f/va3+frXv56DDz44n//85992/F577ZUkqaura3bMq6++miTp379/S6fRYtu2vfGDpLZ2S2kWnp1Z//Iq09pv27atQx5X9tNTWf/yKtPay/7tZD8NrH95lWntW5r9LS57vvGNb6Suri7V1dX527/92x32LV++PEly2223ZdGiRTnqqKNywgknJNl+wbZKpdJk099wzm7DObwAdC+yH6B8ZD9Az9fisqfh/NqlS5dm6dKlTY559NFH8+ijj6ZPnz755Cc/mWHDhmXDhg1Zu3Zt3v3ud+8wtr6+PmvWrEmSjB49uo3TB6AjyX6A8pH9AD1fi8ueefPmNbvvvPPOy89//vNcddVVmTp1auP2SZMm5bbbbss999yTmTNn7vA5Dz30UDZv3pwxY8Zk+PDhbZg6AB1N9gOUj+wH6PladoP2NjrzzDPTu3fvzJ07N4899ljj9vXr12fOnDlJknPOOacjpwBAJ5P9AOUj+wG6l1bfer01xowZk1mzZuXqq6/OGWeckfHjx6e6ujqLFy9ObW1tpk2blpNOOqkjpwBAJ5P9AOUj+wG6lw4te5Jk5syZGTVqVG688cYsW7YsVVVVGTVqVE4//fSccsopHf30AHQB2Q9QPrIfoPtol7LnO9/5zi73T548OZMnT26PpwKgm5D9AOUj+wF6hg69Zg8AAAAA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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(ncols=3, figsize=(14, 10))\n", "\n", "im0 = axes[0].imshow(mask)\n", "axes[0].set_title(r\"$\\mathtt{n\\_erosion\\_threshold} = 0$\", fontsize=14)\n", "\n", "n_erosion_threshold = 5\n", "selem = np.ones((n_erosion_threshold, n_erosion_threshold))\n", "mask_er = binary_erosion(mask, selem).astype(np.int64)\n", "\n", "im1 = axes[1].imshow(mask_er)\n", "axes[1].set_title(r\"$\\mathtt{n\\_erosion\\_threshold} = 5$\", fontsize=14)\n", "\n", "n_erosion_threshold = 10\n", "selem = np.ones((n_erosion_threshold, n_erosion_threshold))\n", "mask_er_more = binary_erosion(mask, selem).astype(np.int64)\n", "\n", "im2 = axes[2].imshow(mask_er_more)\n", "axes[2].set_title(r\"$\\mathtt{n\\_erosion\\_threshold} = 10$\", fontsize=14)" ] }, { "cell_type": "markdown", "id": "dd64d324", "metadata": {}, "source": [ "This means by using increasing values of *n_erosion_threshold* for a feature detection we will get lower values of *num*, which will match the number of **True**-values in the masks above:" ] }, { "cell_type": "code", "execution_count": 6, "id": "2e7bdf61", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.180453Z", "iopub.status.busy": "2024-03-22T16:55:01.179825Z", "iopub.status.idle": "2024-03-22T16:55:01.542857Z", "shell.execute_reply": "2024-03-22T16:55:01.537817Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.431878Z", "start_time": "2024-10-18T14:10:59.378417Z" } }, "outputs": [], "source": [ "%%capture\n", "\n", "date = np.datetime64(\"2022-04-01T00:00\")\n", "input_data = xr.DataArray(\n", " data=gaussian_data, coords={\"time\": np.expand_dims(date, axis=0), \"y\": y, \"x\": x}\n", ")\n", "dxy = input_data[\"x\"][1] - input_data[\"x\"][0]\n", "\n", "features = tobac.feature_detection_multithreshold(\n", " input_data, dxy, threshold, n_erosion_threshold=0\n", ")\n", "features_eroded = tobac.feature_detection_multithreshold(\n", " input_data, dxy, threshold, n_erosion_threshold=5\n", ")\n", "features_eroded_more = tobac.feature_detection_multithreshold(\n", " input_data, dxy, threshold, n_erosion_threshold=10\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "id": "ddefe3e3", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.549585Z", "iopub.status.busy": "2024-03-22T16:55:01.549017Z", "iopub.status.idle": "2024-03-22T16:55:01.562935Z", "shell.execute_reply": "2024-03-22T16:55:01.557360Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.434523Z", "start_time": "2024-10-18T14:10:59.432735Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(332)" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features[\"num\"][0]" ] }, { "cell_type": "code", "execution_count": 8, "id": "c8c0733d", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.572046Z", "iopub.status.busy": "2024-03-22T16:55:01.571553Z", "iopub.status.idle": "2024-03-22T16:55:01.588361Z", "shell.execute_reply": "2024-03-22T16:55:01.585129Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.437705Z", "start_time": "2024-10-18T14:10:59.435365Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(332)" }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask.sum()" ] }, { "cell_type": "code", "execution_count": 9, "id": "5909a742", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.593836Z", "iopub.status.busy": "2024-03-22T16:55:01.593318Z", "iopub.status.idle": "2024-03-22T16:55:01.609919Z", "shell.execute_reply": "2024-03-22T16:55:01.606348Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.439619Z", "start_time": "2024-10-18T14:10:59.437951Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(188)" }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features_eroded[\"num\"][0]" ] }, { "cell_type": "code", "execution_count": 10, "id": "33683d04", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.622234Z", "iopub.status.busy": "2024-03-22T16:55:01.621229Z", "iopub.status.idle": "2024-03-22T16:55:01.630706Z", "shell.execute_reply": "2024-03-22T16:55:01.629249Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.442114Z", "start_time": "2024-10-18T14:10:59.440072Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(188)" }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask_er.sum()" ] }, { "cell_type": "code", "execution_count": 11, "id": "2cb7802e", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.636549Z", "iopub.status.busy": "2024-03-22T16:55:01.635704Z", "iopub.status.idle": "2024-03-22T16:55:01.646007Z", "shell.execute_reply": "2024-03-22T16:55:01.644717Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.444452Z", "start_time": "2024-10-18T14:10:59.442512Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(57)" }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features_eroded_more[\"num\"][0]" ] }, { "cell_type": "code", "execution_count": 12, "id": "98b07f0f", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.657935Z", "iopub.status.busy": "2024-03-22T16:55:01.656127Z", "iopub.status.idle": "2024-03-22T16:55:01.680652Z", "shell.execute_reply": "2024-03-22T16:55:01.672978Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.449442Z", "start_time": "2024-10-18T14:10:59.447152Z" } }, "outputs": [ { "data": { "text/plain": "np.int64(57)" }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask_er_more.sum()" ] }, { "cell_type": "markdown", "id": "a953d755", "metadata": {}, "source": [ "This can be used to simplify the geometry of complex features." ] }, { "cell_type": "markdown", "id": "b16cfa52", "metadata": {}, "source": [ "## Minimum Object Size Parameter `n_min_threshold`" ] }, { "cell_type": "markdown", "id": "efda10e4", "metadata": {}, "source": [ "With *n_min_threshold* parameter we can exclude smaller features by setting a minimum of datapoints that have to exceed the threshold for one feature. If we again detect the three blobs and check their *num* value at frame 50, we can see that one of them contains fewer pixels." ] }, { "cell_type": "code", "execution_count": 13, "id": "1ca6e991", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:01.706645Z", "iopub.status.busy": "2024-03-22T16:55:01.702635Z", "iopub.status.idle": "2024-03-22T16:55:02.286117Z", "shell.execute_reply": "2024-03-22T16:55:02.253797Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.559025Z", "start_time": "2024-10-18T14:10:59.449552Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAKnCAYAAABuwU24AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABu/klEQVR4nO29fZQU1bnv/63q7umeZgYQlAGViCjgC+DrFcGs4BWNxlw9xMA5UX7Xl2jAZaJo4tXj0aDGI2rO0ZxkaXzjLhWOL+RolhrIkXgN8V1QgwFBRCMgCoKgDMN09/RL1e+Pme56dk3tnuqZ6Zlh9vfjYrl7166qXbtrnt71red5tuW6rgtCCCFGYfd2BwghhPQ8NP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIg0d7ugI6NGzfivvvuw7vvvotdu3Zh+PDh+M53voM5c+YgmUz2dvcIIWSfxuqL6R1Wr16Niy66CKlUChMnTsSIESPw17/+FV9++SXGjRuHJ554AnV1db3dTUII2Wfpc8Y/n8/jrLPOwpYtW3D77bdjxowZAIBMJoNrrrkGf/7znzFr1izMmzevl3tKCCH7Ln1O81+6dCm2bNmCyZMnlww/ACQSCcyfPx/JZBK/+93v0NjY2Iu9JISQfZs+Z/z//Oc/AwDOOOOMdtv2228/TJo0CblcDq+++mpPd40QQvoNfc74b9iwAQAwbty4wO2HH344AGD9+vU91idCCOlv9Dnjv2PHDgBAQ0ND4PZhw4Yp7QghhFROnzP+qVQKQKvGH0SxvtiOEEJI5fQ5P/9IJALHcWBZVtl21XJSahgxHul0JnCbheA+yb7avn7LfWS7iO397kYsTVm2sSOBbWpEfdTyyjFRH7PUrzkKb1uNHRXtxLFEv5Xjtp07XhvHoveeAABcfOws5NO5Uhs5Av7xKOKI78//TTqipiDKObdQKufheGVxrLxo0+LmA+tzmvqsI+od7/j+cztiW97x6guuE1gu3qvJZC02ffouAGDkwcehWUxgHM397CrjFO6e72MOfF0imazF9m3vA2j920yl0r3co77PKy8/h+OOHd9huz5n/AcMGIDdu3cjnQ7+kjOZVsNcW1tblfOn0xntDaYz5NLA+X8gumLwo4oB98oQ9QXb+0OPiFO7tvhgqYZM7Ye3TRr8GsXge+eItRmguKhLZFwUMt5xIsoYdGyI/C3y0uBDHtcjJ3ayRBtHGN2IMILSGMOR7aVRFz8u4oegdX+5TfyQOMH1QT8E8l5oybQgnfImGdKwKz+Muh+FMuPan4y/JJVK0/iHwPFNXHT0OdmnqOl/+eWXgduLWn+xHSGEkMrpc8a/6OXz8ccfB24v1uu8gQghhHRMn5N9pk6dij/84Q9YtmwZ/vEf/1HZ9vXXX2PFihWIxWI45ZRTeqQ/OqlH297XRkpCNoKlojBSj6yXOn2N0PPjdiywTcKn+cet4G0Jcb64mBfUiHK8TaKqsbxzDbFiijYvZR/d7EI+mPolDCm45IS8lBV7tYhyVghCGQgN3/LKGVdIXaJXlhv8/ZTtsC2rNZp8wJO3lPcsy1LvFbGrVOyUcQop58jj9lcJiHSdPjfzP+OMM3DggQfitddew+OPP16qz2QyuPHGG5FKpTBjxgzsv//+vdhLQgjZt+lzM/9EIoE777wTs2fPxi9+8Qs888wzOPjgg7Fq1Srs2LEDRx11FK699tre7iYhhOzT9DnjDwCTJk3Cf/3Xf+Hee+/FypUr8fHHH+Pggw/GjBkzcOmll1Y9o6fOpVOi8/Bp5+pZqbePFSwBSRlHkXeEbFNr15TKCdG+Vkg0gCrvJIVkIusT4qEwISSTeJtMEnO94w91IoArXFGlhIFgpJxR8A23lJCyoj4jjtYi2mSEx1JKtJHtpRQlvwdbyD6ZEN87AKXzrtXxxbpOaxu/BCg/Vyrv+O/RsG6ghBTpk8YfAMaOHYvf/OY3vd0NQgjpl/Q5zZ8QQkj16bMz/75CmGAu2cbv7aN4eCjykEbqsYIjdqW8o5N6aoUclJRtfN4+dZDbvHPUCXknKeSQWlFOtKkLUaHVHFCwYOU92SGqBGB52DKQSWzxyz45GQwltqVFfUbILSlxrLhok9LJPro5T5mpkKORVZTgLEd4/ljty+W8feSpXemBRM8fUiU48yeEEAOh8SeEEAOh7OMjjKePH10gl3+bmqhNE9il8fCJyaAtIe/opJ4BwsOn3if7DHCDpZ46ITfUCY0hKeSMYjlS8BocUMgjWvBCs2JCoLC0col3rrxvzHLSY8eSZa9ds9BD9opyjSjHpNRT5jsKxDctUoK5ZM4g4WnkBEg9st4v9cl+SA+nzkg18r6l5w8JA2f+hBBiIDT+hBBiIJR9AtDl8Anj4VPO20cbzKXz8NFIPbrcPDqpp96VyZCBevGbP9jx+juw4MkFA4TUUyfSGSfb8uVIyaIhkkEk4eWmj0aF7GNpZB8hMRV87j65vNffFlFOOd41JR2vvjbSPggNAGrsYG+fMKqP37tHSjoF2wls52rKxTa2DC6zLEX6k55ClXr+tLYLERhGzx8i4MyfEEIMhMafEEIMhMafEEIMhJp/B+jWoA2Tpx/wJXbT6PzqmrzBkbyynBT6/wCp+YskbVLnH+Sqv/GDhM4/WGjNgwqetj/I8lw3kzFvfd7aRGvZqvXaDh6SRsxt9q4nJtwWxTKTUmt3hc7v5H2af8bre7ZFJKFLe9HMyax471HwxiMmrjsqrtsSa1xKvVxq+eraweqfhnTpzIkxd0R9QVMufr/ye7YtW434ptsn6WE48yeEEAOh8SeEEAOh7FMBYdw7/RHC/mReQfUyqleXzE26dMYRnI+/zpKyj3d8KfMAwBDh0jnYEfKN7WXPr69tKZUH1Hn18bpWOchKeMeoH55BJOIdx4qJ8Yhq/CqF9uJkC+qmtCc55faKdQX2evJTotmTgKJ7hcRS8OptV97e3nHciJRFvDGTckve56Kak5KOLeUhUe965bxYQjJQ9rFtNVGg7h4SUo96b6n9oxsnqRTO/AkhxEBo/AkhxEAo+/iwLEubt1+HLnlb8XilbSEifGNKWXgBWcHLLSZFeYBM0iYjdx1VBpBSz5CIJ+/UJ71y3SCvnBjiyS2xQW3niHvHrDkwDjsqbqW4531jRdXo4hKOJ5G42byyyU1754vu8SSnWKOo/9rb3xYyTGSvuFavORwRHZwX45oV0cEtYixzrl/28fbPCaknK/fRfKdFzx9/cjlb8f4R4yGiel2xT0H0ye9V5lDqIRXCmT8hhBgIjT8hhBgIZZ8K0AV2WZoyEC6xm+L5o/X2EYnMhIdKQkg9A1wp9Xh9GFRQ04ANsoRXj5B66vfLeOfY35NiokO9fkSG1LZ1Lu7VjRgMZcmA2kSpaEWCZR9XBJRZ2Zy6LZX2tg0Q5aQo13jXYNneNUgKe7zxyBWkvGMFljO2bKPOizJinhRzg78vNXBPXF/bPSHvjYhlh1oWVDr1dKdHD72DCGf+hBBiIDT+hBBiIJR9OkCb2z9Ezh9AlYcqzeevePuI3+mEqE9K2Ud4+NQJb5qBUL1pBsQ9mWVAvfTqEUsxHuB57NgH1HnlwfVtDTzZx95/PyDhBVdJSQjS20cGvIllH9GiyjZWylsbwE16OYOsRJM4VJPYw9vfdbxyPi+8evZ6/cg4wUtDpqQE5JN90gj2vJL5g3T5moKCvCzLUu4hW/HqgdLOuzhdwBfgD/oKasc8P0TCmT8hhBgIjT8hhBgIZZ8KCCP1+NvocrYosoD0JFGkHiEBSdlBSA214klelpNC9klGVG+a5ADPUyYxWEg9Q73z2UMHeOUhA71r2G9wayEqZJ6hQ2Elar3PcSn7iLKkIPqUVWUfN7XXO588llwGUQSuRfPetdZkvGtLinKmxbvV60Q66JTwkKqVS0D60mDXaL4j1dunvDeXIvvA5zEWQgIqh9xH+nbRk4fo4MyfEEIMhMafEEIMhLJPAJXm87E0wV/+Y9maPD9RjQQkc8HERZu4Ik8I2UJIIUl4QUaJGtXbJzFA5MjxFB3YgxOi7Hn4lKQeANhvv7bOifw9g4cACU8mkmVLykMCV3r7ZNPKNkt4C7kR7xZVRlYEidlC3ommvOPGm8VqZCnvmlM5r+8JRwTM2WK8fd+jHH8Z5BUJIeUVv3fbJ+3oJEHdCl+6PD+EdAbO/AkhxEBo/AkhxEAo+/hoF6RVRtKp9Hi6R3vFCyhEOSbKIrMyaoQUUCNSBMfjquwTTYiVrwYIeWKA8KypFzJOnZCA6ga17ShunQH7wRpQ732OC9lHyEMyyAtKkJcXyAXopR43L/L5ZLw8RFa9JxvZTZ7nUHSAV47FPZmoxvbKcZH3SMnZ41NVpASnlXqEBBck6ZTLAUVIT8OZPyGEGAiNPyGEGAhln06ilXD8QV4abx9dzh9bJy8oZY+okCdiUvYRC6pHompK52hSrIKV9Dx8UOvJPlZC1gsJKNkm79hCmhkwEEh4so8VwttHkX0i+tvQzUmpx5N33KSX/8cS/baTIidRQqwCViNkHzEeMRFFJWWzmE+WkZKO7nvReekUy7bvXvB/DkKX3pmQrsKZPyGEGAiNPyGEGAhlnx4kjIeHXjrwkFKPIgEJXSAiFjWPxlTZR1l1q8Y7ghUTnjkip44Vk+ma2+QgIfsgVgurRqzeJcoyt49lB3v7tFMz8iLXT1yTM0jpq+hfzOuXHRPjFxGLn9vC20mOmeiCf1YU1WzTSTeBUqBG2vETJrePX15kDh9SKZz5E0KIgdD4E0KIgVD26SXUfECoqAxNvRQCLMsNLANqrJUl8tmoq26JerkIe9Ezx/at0CWDuWTeH50nj0xv7G8j9nfVzgb3ScpJ8nqUXaXsI8oaFxrbX60ctusBWhYsbYpwQnoCzvwJIcRAaPwJIcRAKPv0AZwQ5TD7SqXCdcNJCq5IAw2x+pdcLFwpl9r4ju+KfZ1CcL0VPNdwXfVKXSfElev6rbTRVIuF7p1OSDhON0Vb0UOH9Cac+RNCiIHQ+BNCiIHQ+BNCiIFQ8+9BXKEVV6r3hnkvoOj/QvN3CupvvCvT++fFXnmh1edFBK6IxrWKOfVlhG8+DeS8KFu3TKK2EjKxW65F3SYjfOU2keRNKct+52S/vTGWYyDHxoXU/8Uhfa8CdG8hpP7viO808LvWbG93zBD3Bt8XkK7CmT8hhBgIjT8hhBgIZZ9Oonts9z+O69pJuUC2KQi3x4KIzC3INkKSkOWccKXMOaKclSnLgEJGyB4ZIZO0BC+TiExKlNuWXBTSjptphpxHKEsvRoRsI6OCCznf/mKfdJP3oSUl2nn5/JHNivoWUfaux8mIMct5/csLCSgnepuTCdV835vyXejkHSkB0R2U9HE48yeEEAOh8SeEEAOh7OPD72khP8sEaVJICeu5ofMGkVKPo5F68qKck2VLyhbeebNS9smpsk8+7W1zUp6njN3sST1uypNYrL17vfpirn6ZyK25Ca6M6nU8SQe2aKfL59+iyj5ICdmnabdyntI+ok9o9vrqpLxz51PegGQz3q2eLXjjoco+3iH93j6KgxSCvyPV20q2cZT/A633gs5TiJBydFdCQM78CSHEQGj8CSHEQCj7dBJFwnH1Xh46bxDdPorUI+QgnezTIp4AM+JxMCW+2kyL+jVnU97nmibPU8Zu9GQfKylkFbE0olXMox8VOfcbd8HKetKNK72DZMCXRvZBVngWAXCb93gfmhq9cqNXdvd4/XOavP0Ljd5xc+I6M0L2STue7JMWfZJjmfV9jzkEfxfyO1LkuwBJxy/7uSG8hkj/o6+s48CZPyGEGAiNPyGEGEiPyT7PPfccnn76aaxfvx7pdBpDhw7FySefjNmzZ+Owww5T2i5evBjz5s3THmvMmDFYsmRJ1foqH7utCvO9twvycoO9enTlvOt5zeQtr75FyA4twiMoLfqaFksYpoS3TyovPG4A1Ka8zzVCJrETnqeMVePJKnbQY2rMy+WDr3fBTYvPNZ5XjiXbCdwysg9SIrBrjycBuY3C2+crr1z4yts/u9u77nSTd+501rvmlPDVSokxy4hxbfFJL1nxHeUUOU58j4o3j1cu3k+uTwoKEwgW1iNIJ0OSnqWvSDphqLrxd10X1157LZYsWYJoNIoJEyZgyJAhWL9+PZ599lm88MILuO+++/DNb36ztM/atWsBAJMmTcKwYcPaHXPEiBHV7jYhhPRrqm78n3/+eSxZsgQHHHAAFixYgCOOOAIAUCgU8Jvf/AYPPPAArrvuOrz44osYMGAAAM/433rrrTj00EOr3UVCCDGOqhv/p59+GgDws5/9rGT4ASASieDqq6/GSy+9hI8++givv/46vv3tbyOXy2HDhg2or6/HqFGjqt29DnE1j9P+R/igMqB/bJcSQU5IPVJSaBH1WSEBZSDLQt6R3j5CzthbUL/meMqTQ6K7vWPZUeHtE/HKcm+70NY+Fi/Vubu+AmIit09cbIuIADPF20cEhbWoKZ3dtAg2E1497h5PDirs9AK7cru8cc00eteWEtfZVPBkn722lH2886YVzyk1iXOLlH0QLNnJ7zFI1lO8gVxXe2+FSulMj6BepVryTqUyc/AxwlH1F74DBw7EYYcdhhNPPLHdNsuySjP77du3AwA+/vhjZLNZjB8/fp/SzwghZF+i6jP/++67T7utUCiUJJ6ijl/83NDQgLvuugvLly/H1q1bsd9+++HUU0/FFVdcgYaGhqr1N5msVV5wyl/iiJi5RkQGzaiYScoyAMSEn3tcLICSEOkR4pY3Q03YcdFetBH1NZZXH3O9Y0bFS96oWMgkIlMvALBt8UK7VpQTolFczCxrvHOXZvwxWVcDRMU8Iipe8upm/pboU8E3i42JWbc8T43YR/Yv4bW3ar1z2y3evnbEK0fE+EWj3vcbE+NSY6nfY43r9T0uynmxGHxOlC3xXaCtXFvrDXBtbQJZx3vpXRDfUc7RPEE4wS+UWz93/MI3bCbavkQyWRtY7m368szftsPN6S23F7/5RYsW4V//9V8xePBg/PnPf8aAAQNw66234oknngAA1NXV4cQTT0Q2m8XatWvR2NiIoUOH4pFHHsG4ceN6q9uEELLP02sRvm+++SZ++ctfAgCuvfba0svedevWAQDOPPNMzJ8/H3V1dQCApqYm3HjjjVi2bBmuuuoqLF26FNEoA5QJIaQz9MrMf/ny5bj66quRyWRw/vnn45Zbbilty2Qy2LJlCw455BDU1Kg+4s3NzTjrrLOwY8cO3H///TjttNO6vW8HHnQMMuKFYxjZR9a3k32E1BMT26Tsk7CF7CMkoLqIKIv6gUK2GCzK+7ne8YeIVV6GFFSJYD+xiO+QmHet9QO9F68DBnuLpcSGeLdIdGDb9dTEMei3vwcANP3zD2AJ+QRxr09WRB2PIsptJxaRAQA37fXDafK2FRq9cm631z7ztXe+PY2evLM748ksX4vx+0p8X19HvH7sEi95G5U8nsAeeDEQexyvH82inBLlFtcrpwut5draBN7+cDkA4Jgx38IekZk0L6SefAjZxy/h6GSfMC+G+7rss33b+wCAhhHjkRLZZnuCrsg73SHhdKYff1n+exx77PgO2/X41HnRokW44447UCgUMGvWLPz85z9XticSCYwZMyZw3wEDBuDkk0/G888/jzVr1lTF+Dc3p5AWxl8aefkF6H4IYj7jL38MasQPQV4Y/5wt0hCLshsRaY8tYYxs+aMoArPE12m50rPGd+PIHwORhqcgUiAXRGqf5B7vHDWD2v74REBYbtPXsKMyQMy7Ziuq0R8dYaCy6jsJmWa60Oz1NdsocvI0Ce+dPV6/94gEPV8Lw/mV6N/Xoktf28Lgi/cQja5ISw1gj/i81/F+nKTxTzvtDT4AtLSluJYrgO1NpdAsgtnyOs1fGvwyRr1S49+XDb6OVCpdNePfk0a+M+cKDLTU4DjhvtseM/75fB6/+MUvsHjxYliWhWuuuQaXX355xccpvhhOp3t2BkAIIf2JHjH+mUwGP/7xj/Haa6+htrYWd955J84666x27bZv347/+I//QHNzM371q18hEiAZbNu2DQAwfPjwqvebEEL6K1U3/oVCoWT4hw4digceeAATJ04MbFtfX4+lS5eipaUFK1euxOTJk5Xtu3fvxvLly2FZFr71rW9Vu+sAfI/Nshgi4Mv/OVQ+H1FuEa6AUSEzxYSkExWPgzH5HkI8iloR9ZHRkuEdIvjJEUtZFYSUIlcCS6RbJQyrNoFi4o301ggilieV2TUiX5DmDpOeik5W7Z9caSyX8SSujMhJ1CwDuHJeuVHc0o0R7zgi5Q/2CJfOPULnbxbvQtKuKkVlxLasEpQX/N11FOTl+oK8Kg3s8rffF2Wc3qZS+SWMvBPmmJVIOJWcu1KqHuR1//3347XXXkMymcRjjz2mNfwAkEwmMX36dADALbfcgs8//7y0rbGxEXPnzkVTUxPOPfdcjB49utpdJ4SQfktVZ/6NjY34v//3/wIAhg0bhgcffFDb9pxzzsHUqVNx3XXX4YMPPsDq1atx9tln4/jjj0cikcDbb7+NpqYmnHDCCbj55pur2W1CCOn3VNX4r1y5Eqk2j4ZNmzZh06ZN2rZHHnkkpk6dirq6Ojz++ON47LHHsGTJErz77ruIRCI49NBDce6552LWrFmIxWLa4/QUuoXd23thyMd/79FNendIbyEpI9hCaogJN86UqI+Ih7eoeDQUqX3aP94JOcQVW3OON67ZgkiNvNe7TQZkWtvYtZ5L5Vdf1qJGeKVEoiLiVvNsqcg+BbWRlJlasuK6c0L2EZHNe0U0rpR69ojDNgqpp0l49UipJwWvPuXz9mkR7WQ558hyeQlIze3jtJOBOiqHhXl/gumMl41ObumKvFNOwqm0j0HnCHuIqhr/M844Ax9++GHF+9XU1OBHP/oRfvSjH1WhV4QQQriSFyGEGAjzIwSgLq7uIaUU+eimrNblqNG0lthJ5/kj5QJ5XFuUM0I/sYV8pHj1tL+UwA2yhwXhCZS1ZFnILSJJWXO+9ZaJFDzZZ1emFlERdhETgVOWLshIdKrgqB3MComrRUlZLfok+r1Xpq+WXj3Ck6dJloVs0yyknrRG2gFUzytF6gnh7VO8P/xyjpIKPMSKXWE8gsphikdQd8o7YY4bRt6pdN9y++go2ouwnkGc+RNCiIHQ+BNCiIFQ9vER1lNCJw1Jzx9AffyXco30/LEUDx8RXCWCuSJCasjIx0m78kfcvOhjTixmnhOeMhlx3KSQZWrb+hQV6xTssGoQEaMg1xLQ9U6OUt73eJuzpfzk1csF6uWqWylxPXtFudmS3jvCwwfS28fz6kk5Xjnjl31Eu6zYpgTo6RKytZUdX10YD5/+lJunmvSEJ093yTvl+mqHOFaYPoWBM39CCDEQGn9CCDEQyj4d0BXPH0B9bJdSgKXIPsHBX4rnj3y8Ex1RHl11AVW+z3nZJ1FuEd40aellIzxriqsnxkQe/B1RS0ndrCz4rlEnnODLAQCIFENoUcpioXbRb7nYekocTUo9KSVvj5DQlHoh+zhqkJdcclFX1uXeL5bVZRjdbvXwMVEe6s7cPKHkmi7IOzo5p6y3j+7vX9e+rU3YceHMnxBCDITGnxBCDITGnxBCDISafwBSPw0TLad7LwCorp+WJhJY0fZs+S7A06yzjkbbFyeU/XbtYF0fAHLia5dun1mhWWfESRLiXUCsra8xobPvsh04EeHqGSLqWPaoneYvtipl0dcWsVdG6XdB1MuyRvN3gl04W8po/jnNeruy3u/WKf9fLNO9s/qE1fkrdePsirZfTsu3QrYL7GtR8++wZbGvhBBCjIPGnxBCDISyTwWEcfv0P7ErSd/aCRwBB6sUjQQk3QgLlnoC+TknomAzQt6pkWUhn8TbTlgjTrwLObjiOLJLusduZUlC3zYpU+VkAjxXykFevSJXyeUWpQQk3TNdTVnjwun/rEvgFiT1AOESu+mWaNRJPeUi0fuzPBTGjTFs5G5XpB65BkcYeScilmENK/toJaQOhB0mdiOEEKKFxp8QQgyEsk8HhPH8kY/p/jxryjbNcaUcpCR2CyEHKTnhpYePlCBs9UB5Ifvkbe8WyAo5Q8o+McXbp/Uq4iLpXCNyyLtZ7xoq9vbxR0V7SNlHjpOsl/KOUq+TdDSJ2XQePf52eY23jzbCN3AZR7diecb05RnLST5hpJ52EotmH0WiCSHDSAnIVs4XXK+TjNpt08hDun7bjPAlhBDSETT+hBBiIJR9fJR7FFceu0Wx3GOWPgDM+xQRv8FSGpDkNJ48rhXsMSI9evxeRo6UfYScERXyjlzGUT6Kxqyi7OMdb4+TRdZpKX22KwxO8ScvK2gkMWXpS60cJIOuOl5uUQnY0kg7/nOHkXqCkrb5vXgq9fApR3/z8AmTpKwzUo+OMFKPzmNH1su/FV1ZJxm1axdC9gmq78gbqLRvqFaEEEL6FTT+hBBiIJR9ApCP0GHenJfL7aMLANNJQEpRSDoRjbwjf74dR/TDCvb8AVTvn6hG3tHVFyWqXMG7sCanBTlHePvIMQuhRvhlH3l9eY28owuuymkCsHRSj3Zfx/cNaQK4dFKPrA8M8oLb5WAuE6l06cVy+1Yq9ahePXaHbSott9uGcFJRqQ3o7UMIIaQDaPwJIcRAKPt0El3wl//xPUwOoFBeQBppSOmTlIYsKQGpv/FStoiInDyVPKY6Ihgt5bSgRXj7KN4IusC4crlpNEtf6vIk+VMld1TWeuto5Jx2fQoI4AL0HjvFff3ePV2Revqbdw9Q+bKMOsIuvdhdUo8MgpRtYnZlkqr/s/z7D+MFZNPbhxBCSEfQ+BNCiIFQ9umAMJ4/5fL/VJoGWicBaVMjO8FSjwzyKvdoKSWhvMajIPCRs+DVZZwsMgWNt08Iynn7hEl7rPP8cTTykeKho5Ft/B5SrvZ8Ha/GFRTk5cdUqacS/H8DYVIplwv4qlTq0co4ol5KOjFNvU4CAlQJSSf7yL/mIM8fyj6EEEK00PgTQoiBUPapgEolIEDvCRRGAiqI9vKxVHq6uMLrRg0K89pLOQjQS0LaNLUBj9G24906mUIO6S7IPn50Uo86fsH1OklGJ+/ovHjapZl2NVJUBatx+VfyotRTuYdPqGCuEKtv+dupHjQdB3DppJ4akSJdSjhRTTluqyY4IvqhSEVKvcbzp9R/yj6EEEI00PgTQoiBUPbpJGHz/4QJBtNKQAIpScjzuZpH13L9s5X9g9spq4tZ7WWfiEiX3OLklfTJEq08FlLO0Mk7oaShCuUd3b7+bTq5ppK0zKYuwB6WUp6aMp4rYVa3sgLu3SIRnbyjCeAKI/XIsiLvWKKNRgJqbSe2SW8fjewj64slevsQQgjRQuNPCCEGQtmnG6iWBCQJ4xEURg5qPV+wh1Ali0THCp7MU3AKyuLnEm1wWshUxToJJEzwVxjvIO0xQwaehelrUG6fsPv2Rzqbw6fsql4aD59yq8rpPIF0QV5hpJ4aS1eOBJbjPtlHbouJuXlMBqRpysXriVD2IYQQooPGnxBCDISyTzfjf3yvNB+QVpIQZZ1HkDZHkF/C0Mg7BWWBsGAviWIbZeFzp9BuwfPuolKJJaz3TlCbcrJMZ6Wecpgk9YShnGdPka54+Pjb2xqpJ6LJ56OUNR47UupJSDkIXpuEIgep8++4mI/XSNnH0khAQsK1226nsDN6zvwJIcRAaPwJIcRAKPtUmc7kAyq174JHkHJe3+OuzkNI6ZNmEfZie5lDJ+cUFBkobJBJkXKreil9CiGTdGVR9LIpl0Ocu5LF1in5dJ1KPXxk8Fa7bSEkIG1+Hp1Xj0bqqZX7+ubfCWWb17+YkHf0nj/t68rBmT8hhBgIjT8hhBgIjT8hhBgINf8eJGwkcKl9F9xBJVrXUH+fFLdPTV/b6mVytILjqJ+VcwefvJy+HoauuFhW6rbZmXMEHddknb+zefv9un5X3Dv9+4ZZyyLM8ou66F2dzl+rvAvwaf6u9zmBYJ2/RtxG8l1AKbFbyNuMM39CCDEQGn9CCDEQyj69hE4C6C53UIlODvKjk4eCjiuXRXRdV3vuQlflnQolljByUne7bVZyXNJ96CRFW+cC6muvk3rCuHrGtXn7pQTk7StdOqXUk3R9so9oVytupxrp6qnUi+sp9hnh4MyfEEIMhMafEEIMhLJPH6MrHkGSMHKQn7DyEKDKKwXXUSJ+JbpHc92xukql0ktn5J2unI+ohEnmprTXST1dXcYxTJI36fkjzhfX5epXpB7h4aN49Kjz76SQd6TsExd/XnFxz0mJJ8LEboQQQjqCxp8QQgyEsk8fplKPIGXfkHJGZ+Qhf9ty3j46Kakn5JKuSjrKsSjv9DkqDezyS0O6dhExJ9aVlSRvynKLwfn4ZZI2GbxV67ut5OeEI+u9DXFHJ/u01tsh71XO/AkhxEBo/AkhxEB6RPbZuHEjzjrrrLJt3nzzTQwZMqT0+Y033sDDDz+M9evXI5PJYPTo0fjBD36AGTNmVJwnpL/RFTmo3bEqlEYq9c7oTrmkO2WcwONT2ulVgvLzh1m20Y8usMv/9xGmndYLSJNTX+bgUZZe1OTjl8FbgOrVI6WehJB64sKzTso+0ba/j7Az+h4x/uvWrQMAHH744TjyyCMD28Tj8VL5ySefxC233IJYLIZJkyYhFovhrbfewk033YS//vWvuOOOO3qi24QQ0m/pEeP//vvvAwAuvPBC/NM//VPZths3bsRtt92Guro6LFq0CEcddRQAYOvWrbjooovw+9//HlOnTu3wSYIQQoieHtH8izP/CRMmdNh2wYIFKBQKuPTSS0uGHwAOPPBAzJs3r9SGtKfoddPRvy6dQ/wXVFfN/6o9NqR7sSyr9K8vYMNS/un+i1h26Z+st4HSv6hlB/6LwCr9i2n+1bgo/Yv5/sVd1/vniH+u4/2DW/pXi0LpX03bPyvk30qPGf94PI4xY8Z02Hb58uUAgG9/+9vttk2ZMgX19fVYs2YNtm/f3u39JIQQU6i67LNlyxbs2bMH48aNw5NPPolnn30WGzduRE1NDU444QRcfvnlmDhxIgBg586d2LVrF2KxGEaPHt3uWJFIBKNHj8bf/vY3fPjhh2hoaOj2/iaTtd1+zL5Gd8zE5DjtC2PWF2b2+9qYdZUw95niax/wAtY/ZsrLWFuThsEWaRhEucZWzV1Msy1h15TKcSsm6r1yXJZFG7loe41YzCXmBr/8jTrqGEWlD79M4yBe8tpiZm+LSJrSjN8ON6evuvEv6v0ffvgh7rrrLhx//PE4+eSTsX79erz00kt4+eWXcccdd+Dcc8/Fjh07AAD7778/bM0FDBs2DABKbbub7dver8px+zNfbF3T213Y5+B9VjlbPlvV213oV1Td+EtPn9/+9rc45JBDAACO4+Dhhx/GPffcgxtvvBHHHHMMUqkUACCRSGiPV/QKKrYlhBBSOVU3/nPnzsXMmTNRV1en+PHbto05c+Zg1apVWL58OZ588smSzh8qfUGVHuMbRoxHKpWuyrH3VYK+j2SytjTjH37ghB4fs74g41RKMllbmvGbcJ91l+zz2WfvAQBGHnwcWjItge0VqUf644eUfRIRId0IGadWSEBJIfXUijb1opwUsk+dMK914vVqvZB66nz5T6Rvf1L6+QvZJyFWyY5a7eWg8c/djroJ7WVzP1U3/tFoFN/4xje026dNm4bly5djzZo1+N73vgcAyGQy2vYtLa1ffjKZ7N6OtpFKpfv9H2V3II1vc3OKY1YhJtxn3WH8JalUWjH+0sjnhEwcFUZdlguWusaVIww+bLEynShHxGroEVEvjW5WlKXOX3A9I+0I418Qxr/gT34lNH84Us8X/RPGH+LcVltfrX0lt8+IESMAAOl0uvQCd+fOndqZXVHrL2r/hBBCKqfqxv/222/HT37yE3z00UeB27dt2wYAGD58OAYPHoyGhgZks1ls3ry5XdtCoYBPPvkEADBu3LjqdZoQQvo5VTf+a9euxYsvvog//vGPgdufe+45AMCpp54KAJg6dSoA4E9/+lO7tq+//jqamppwxBFHYPjw4dXpMCGkXyKDzjrj7qwLCqsUu+w/N/CfJf7ZFkr/LPmvbXsl/agqs2bNAtAalfvWW2+V6guFAn75y1/i7bffxqhRo/AP//APpfaRSAQPPvgg3nvvvVL7rVu34rbbbgMAzJkzp9rdJoSQfk3VX/h+97vfxcqVK/HUU0/h4osvxjHHHIOGhga8//77+Pzzz3HAAQfgt7/9bcmF84gjjsDVV1+Nu+++GxdccAFOOukkJBIJrFixAqlUCjNnzsTZZ59d7W4TQki/pkcSu9166604+eST8cQTT2DdunVYt24dRowYgUsuuQSzZ89WXEABYPbs2TjssMPw6KOPYvXq1bAsC4cddhjOP//8kkcQIYRUQnfktQoqV4qjKbd+tgLLrqwXp5a9cCuUsnpsGcfvfOc7+M53vhO6/bRp0zBt2rQq9ogQQsyl1109CSGE9DxcwJ0Qsk/iCNFDhm9JeUeRenyqiOMGyziy7GjkHSnXyBbymLKNCMtSpRrfcQuWLHsf8pqVwKQ0VDxhWHWLM39CCDEQGn9CCDEQyj6EkH0GKatELEtT37Xj6uoLIrmaa4l6aMqyjThOTvQv6/PQiYtuSKlIlnNyzq6oWq6/qiyc+RNCiIHQ+BNCiIFQ9iGEVAXpadMXFnH3e+7oPHx08o703smLNnmxpSDTTItjyrKUemp8w9KiLFPp1VuOlHrkuUX66pLsE26sOfMnhBADofEnhBADofEnhBADoeZPCOkTuAHRsboo3HIoUba6aN+Q7aT+r5Q1rp6Kzi/a54SWn3Ol/q/2PWqLZS3Fco+Kd6fQ/2Vkc6TtuP5kcTo48yeEEAOh8SeEEAOh7EMI2SdxdYnZrOD60K6e0nVTU867Xsxt3vLEl5xokxUuly2QUo13LtvnAqt8UqQeb0tB1KuyT2sbJ6RbLWf+hBBiIDT+hBBiIJR9CCG9hpRbrBCRqWp+fpnXvsLc/ijjyaMp54TUExNST4uoj4hrkInnIqKNLZ14/A5MIkJYbsqLnbIit39NwHDQ24cQQogWGn9CCDEQyj6EkH2SMLn9LQQHcgEhg7ncYA+fFifvnduWXj1C6pEePqJ/tpBt2i8tKcpiHxkMJqUeKQEVSzL3fzk48yeEEAOh8SeEEAOh7EMIqTqV5vYvtnd9+Xd03kGVBnwBqqQTce3Aein1yDZ5Ia5kRb3sk63zXhLVfilKpvMpiIYxV0pA0qPIa1/0P3LCxXhx5k8IISZC408IIQZC2YcQsk8SlAIaACwh9VjSo8dRw58s4aUjpR7LDa6XEpCUdFoUjxsh+0h5S5ONWqaGbj2fTA/tzc1jIvgrJj2KXCkztR0jZOprzvwJIcRAaPwJIcRAKPsQQvoEYfL8SO8YW4mVqszzp/VYMphLSDeinHM8qUeeQ0pGsn1WceURRUtKVDJ9tMxEBBSU9NBeu5j0TFICydrLTMztQwghRAuNPyGEGAhlH0JIj1JpwFfQfuW2hfH8AdS8PzpvH+nVI719tNqKLZto5CdF9vF5+yDY20fKO1EruL54qfT2IYQQooXGnxBCDISyDyGkz1GURvz5eCRd8fwB1AXZZVHxNJLTYyn16OoFSl4hUc5b3g5x31JeUlqKCs8fRfaBLpdQsTuUfQghhGig8SeEEAOh7EMI6TU6m+q5XHud54//k1xpS8oyMvhL7mLbwQFcOgnItXWBXSK4zJdvSC4MH5GBXcLDRypFst7rP2UfQgghGmj8CSHEQCj7EEL2CfzeOjp5R6ozche/U44MAIOUXzRT4pxUg+zgAzualcMKwsNHevHIegDIW2LlMGUBeI2Hj9U+II3ePoQQQrTQ+BNCiIFQ9iGE9Ak6m/PHjy74y6+GKLKRbBdCAtJ5+0RkDh/HK0vZRko9fm+diJK3R0g9yqLtYh9xTRZlH0IIIR1B408IIQZC408IIQZCzZ8Qss+gW+oxVOSvP7Gb0PYjtjcPDqP/OyGWitSVw2r+OpfOjurLrXsg4cyfEEIMhMafEEIMhLIPIaTPUZQuyi7dGEICUiN/9e6jinuorNdIQIq0JJO5yQRxIaQef4RvpbKPpNiGrp6EEEK00PgTQoiBUPYhhOzzVCoBAfro34LGc8iVUbZi3izz87vi3FJKUryJlAhkVcKRMpAtjmUFJHDTQW8fQgghWmj8CSHEQCj7EEL2CcLKGWH3164BoOwU3F5+UmWmYKlGJnnTefH49ynXLojivv5gNh2c+RNCiIHQ+BNCiIFUXfY57bTT8Pnnn3fY7qSTTsKiRYsAAIsXL8a8efO0bceMGYMlS5Z0Wx8JIfsGlebw0QVE+Y+lCwZTJBSdBCTz/GhkG60c5O9fQH5+f590eLJPOKpu/E8//XR89dVXgdtc18ULL7yAfD6Po48+ulS/du1aAMCkSZMwbNiwdvuNGDGiOp0lhBBDqLrx/5d/+Rfttvvuuw/5fB7/43/8D1x77bWl+qLxv/XWW3HooYdWu4uEEGIcvebts2LFCtx7770YOHAg7r77bkSjrV3J5XLYsGED6uvrMWrUqN7qHiGkH9BVCUgiPYIU+UkGdqkH9YoaOajg02h0gV3+dl6fZKfa960cvfLCN5vNYt68eXAcB9dddx0aGhpK2z7++GNks1mMHz++S+t4EkII0dMrM/9HH30UmzZtwoQJEzBjxgxlW1HyaWhowF133YXly5dj69at2G+//XDqqafiiiuuUH4suptksrZqx+5PyHHimIWDY1Y55cas0slhuZl/mOPqXrpamtm6bt9y/dbN/LXtA9rYdrg5veV2NXKiQvbu3YtTTz0VTU1NePjhh/Gtb31L2X7rrbfiiSeeAADU1dXhxBNPRDabxdq1a9HY2IihQ4fikUcewbhx43qy24QQ0q/o8Zn/U089haamJhx99NHtDD8ArFu3DgBw5plnYv78+airqwMANDU14cYbb8SyZctw1VVXYenSpaX3BIQQQiqjR2f+hUIB//N//k9s374dv/71r3HWWWe1a5PJZLBlyxYccsghqKmpUbY1NzfjrLPOwo4dO3D//ffjtNNO6/Y+NowYj1Qq3e3H7W8kk7XYvu19AByzsHDMKifsmHXm/WAYGagrElBXjlNuHx1FyWjZ/1uMiccc3UHrHp75r1y5Etu3b8egQYO0hjuRSGDMmDGB2wYMGICTTz4Zzz//PNasWVMV459KpflHWSEcs8rhmFVOuTHrTueQavwohD1+xQY/oL1cmL7svhWdqYssW7YMQKuk45/Vh6UY4JVO8w+HEEI6S48a/5dffhkAAuUeANi+fTtuuOEGXHXVVSgUCoFttm3bBgAYPnx4dTpJCCEG0GOyz5dffomtW7ciGo3iuOOOC2xTX1+PpUuXoqWlBStXrsTkyZOV7bt378by5cthWVbgy2JCSP+mJ2J/wgSG6V6VhhFctOmjoQ8e01EI6EfYt7g9NvNfvXo1AGDs2LFIJpOBbZLJJKZPnw4AuOWWW5SEcI2NjZg7dy6amppw7rnnYvTo0VXvMyGE9Fd6bOa/ZcsWAMDIkSPLtrvuuuvwwQcfYPXq1Tj77LNx/PHHI5FI4O2330ZTUxNOOOEE3HzzzT3RZUII6bf0mPH/+uuvAXSckbOurg6PP/44HnvsMSxZsgTvvvsuIpEIDj30UJx77rmYNWsWYrFYT3SZENJGb6VasUJGxlYL3apYlcpBsu9OaO96/ULv3UGPR/j2deoHHUYXvBAkk7Voavw7AI5ZWPblMest459M1mLP7o8BAAMHH95nxixsqohS+y6OXyXG/403luL44yd0fMyudIgQQsi+CfMjEGIgzJjbNbpLDipH56QiIOxaXpz5E0KIgdD4E0KIgVD2IaSf0ZOSTqUvPvva8bsbnRwkCXtN1fbF4cyfEEIMhMafEEIMhLIPIfsgPZ3CuC9gtf1XCWFkmJ6m2n0Ke3TO/AkhxEBo/AkhxEBo/AkhxECo+RPSh+mqtt8VPb8vRAH7E7vp+qRNqBbWrbIPvhuoNpz5E0KIgdD4E0KIgVD2IaSP0Rm5JYy8Uelxu5pDPkyfOpJbZB9sy9L2KczyieUiZrUJ2fqxHMSZPyGEGAiNPyGEGAhlH0J6iUplmLCeK2GOq5NPqiEflT1WB+ezLW9+Wi7C1w7RpXLSUKXeQj0hBzGxGyGEkG6Hxp8QQgyEsg8hvUBY6UQnO5Tbv1JJR3esMN4+1QoEK0oesg8R20bE9uarcmlDeW06uaScNKSThMLIQd0pAVVb6pFw5k8IIQZC408IIQZC2YeQKlOURspJJJV62ZSTZMLIO1ppSLbpYc8fSVFKiQhvn4hlK58ty5NIFLlE9ElKQ+XUGZ0kFEYOqpYEVG048yeEEAOh8SeEEAOh7ENIFQgjh3TF+6acTKSTd8JIOtp9tcFV1ZF9inJN1I6U6qJ2RPH2sYT0opNbtNIQwklCUg5SvIusYO+irgaF6Y5bDTjzJ4QQA6HxJ4QQA6HsQ0g3UYnni18eCOWJg2AJx7+PTt4JI+nojtMZ2SfMeOikDZ3sIz/LfR2NBFROGtJJQjo5KIxHUE8HhXUFzvwJIcRAaPwJIcRAKPsQ0gUq8erpTqnH314NfupY3lG8ZkLIPlr5KKTXkQ6t7NMmjcQinonqjOxTcDxRxrV8so9WEnICSgjnESSbd9Fbp9qeP5z5E0KIgdD4E0KIgVD2IaRCuhLAJY+hk2Q6E6Slk3HC1Mtj6eQjS9NGEjbfkM7bxQmQNuK2Z6JidgQ14rOUQgqulGrC5d3RSkJCu+mKR5BOAuornj+c+RNCiIHQ+BNCiIFQ9iEkBN2Rq8cv51Qq9Ui5pZy3j1z0XMo7/vTIQf3WtbE1/Sgnb4VJCe1oZI+iHJKIxEp1iUgMBTtf+iylHluUFW8fywlsD6h9d+Q2MSWWHkEFIeTIWbPOI6hSCcjfd6WvVfD84cyfEEIMhMafEEIMhLIPIV2gklWz/N49lUo9EY2cU7adKMsAqTDtI9BJQMGeQmUXlZcSi07qkd40bW3iVk2pLmHXqLIPgiUdXTnvFNQ+CV2m4IrrEGXpESSphgQEhPME6i4JiDN/QggxEBp/QggxEMo+hATQmYXJwy6wXmzbFalHSjj+dlErWN6JyfTImja6eikBRUN4DQHhZpaKBIL2QVsJW8g+Vg0KkWBvn7xb6LC+Xf9EO0u2czXfnWY19+6SgICeDQbjzJ8QQgyExp8QQgyExp8QQgyEmj8hbYTV+TtK2qZr78+b3xWdP2apmr90v6zxJUMr7W8Fl2OastpG4wKqWQsACDdOUsuWydIKbQnV4kLzr4vUALanzUs9P6cpR9zgcQWAnHT9VAJ8LfkhmAr1/0JIl8xK3Ti74vbJmT8hhBgIjT8hhBgIZR9CQlBJJK+/fVBiN8uyuiT1+F09pUQjZR9Zlm3ilmijkXrisl4j9Shun/5lKtExUqgoiNz5+TY3zLjlJXars2pgCdmnxQ2WgLKubOO5hkoJqLV/wT2Ux1LknS5IQIqkqHH7BILXNACq4/bJmT8hhBgIjT8hhBgIZR9iNN0ZydtRfn7Z1oYa4Vup1CPlHMAn19ieVFIj5B25JKKUfaS8UwNRltHBkGXRb2UtAH+Er7xeD0cpy6je9t4+NYrsE4NleTKO7GvW8qSaqMbbp8Xx9gUAy6+5FPsaJsJXM212Hbnso5BqxNjoIn+B8Anggqj0XubMnxBCDITGnxBCDISyDyEBVBrI5Sdo2UO/R0+YnPq2Jula1BfkJaWehCxbwVJPQiP7JMR8sEaU4zKITEgp0oBEfHKJ2sNgCkpZePu0/T8G71oGWVHY4oxZsURjRiae03gmRXwyTxh5xxEeSLIcEX11reCyPsubXG+gcs+d7vL84cyfEEIMhMafEEIMpMuyz6ZNmzB9+nScd955mDdvXmCbN954Aw8//DDWr1+PTCaD0aNH4wc/+AFmzJgR+IY6n8/jmWeeweLFi7Fp0yZEo1FMmDABs2fPxqRJk7raZWI4PeHhE1S2fPvZuuUWQwRsSZkH0Es9tZau3jtHrRBolHohi9SIclyUpedP1KdAVCr75MXXkmuTM2JCYhrkRhAVJistJJaY8PCJ+ryqgsrtqHQaLGQcVyMNyYAt/3cfVN96MNGlLnj+hKFLM/+dO3fiiiuuQDqd1rZ58skncckll+Dtt9/GUUcdhUmTJuHvf/87brrpJvzLv/xLu/au6+L666/HvHnz8Nlnn2HKlCkYO3Ys3njjDVx00UV45plnutJlQggh6MLM/4MPPsDcuXOxefNmbZuNGzfitttuQ11dHRYtWoSjjjoKALB161ZcdNFF+P3vf4+pU6firLPOKu3zzDPPYMmSJTjyyCPx6KOPYvDgwQCAN998E3PmzMGtt96KKVOmYMSIEZ3tOiGEGE/Fxr+xsREPPfQQFi5ciGw2i4MPPhifffZZYNsFCxagUCjg0ksvLRl+ADjwwAMxb948XHbZZViwYIFi/B988EEAwE033VQy/AAwefJkXHTRRXjooYewaNEiXHfddZV2nZCydKeHjyI3BAR5RWxbCezSefvENIFdMngL0Es9taI+qZS94w5wvXJSSDpS9kkosg8Cy1GfHFG57OOdo6WtHHW8usGOjagrvZGE7KMJNpPfQ9hvV0o3ri3KActMtrb3+uRo2ocJ/mo9bmWSTlc8fyqWfRYuXIgFCxZgyJAhuP/++zF9+nRt2+XLlwMAvv3tb7fbNmXKFNTX12PNmjXYvn07AODjjz/Gp59+iqFDh+KEE05ot8+ZZ54JAHjppZcq7TYhhBBBxTP/4cOH4/rrr8cFF1yARCKBtWvXBrbbuXMndu3ahVgshtGjR7fbHolEMHr0aPztb3/Dhx9+iIaGBmzYsAEAMGbMmMCXcsX6Tz/9FOl0GrW1tZV2v0OSye4/Zn9EjtO+Nma6F77lZv5hXvhqZ/Jt9bVinGprE4ho0jjI2X4iIlM1eGWZ7RJQX/jGNb79NZpMnjEx85cz6JiYoUaVMjRldeYZZmapjLgY10JbMVrrLeYSra1BTGb+lC98xay3xgrO9llw1WcRR3x2RdlxvLIl6m1Rtgoi5sIJTi1REPV5R9ZLP381JajcplvoRvfCt9jetsPN6Ss2/jNnzgzVbseOHQCA/fffX9uZYcOGKW2L/29oaAhsH4/HMXDgQDQ2NmLnzp0YOXJkRX0Pw/Zt73f7Mfs7HLPK+eCTN3u7C/scl//t/t7uQr+ian7+qVQKAJBIJLRt4vG40ra5uTn0PsW2hBBCKqdq6R2Ks/0wPtXFx5hIJBJ6n2rRMGI8Uim96yppJZmsLc3497UxCyP7lLsHpaRjWSFkH8uTfTZsfAsAcNToKchnRYZK3YtdO1jqSYq1bQH/i13RTtQP0LzkrRNzwAHiBWtSqAu14oVl3A0ux3wvHOUI2lLCUF5SeuTQ/oVvpLYG09e2OoEsHn859rbkSm1S4gTN4kXrXuEV3ywkoGa5SAuAlFjoJeV6x03Leifr9Um0yTqynBdlsZZwwatXZB83pOzjBr9glsg2Rdnn5b88i+OOHR/YXlI14z9gwAAAQCaT0bZpaWkBACSTyYr3qYbeDwCpVHqfMmR9gX1hzMJMKMoZ/87q/ICXilnWtbRkUch4BgTC4FvCkEnFtEZE/bg+KVX3TiIqLqNGGIqEMJBJYfAHCBtT58g2XlnuGxf5daKWaqAi4rMSsCQsfkF47+Rl+uW2si0M8cDmNCwxZpYYA7lIV16MX070tcVSjb88tiV+GFxR7zrSgHvnzjlhfgiCjb9O/wd8PwwV6v/FNo4T/EPhp2qyT1G337lzp/YFRVHjL2r/xX2+/PLLwPYtLS3Ys2cPLMvCAQcc0N1dJoQQY6ia8R88eDAaGhqQzWYDA8EKhQI++eQTAMC4ceOU/3/00UeBx/zoo4/gui5GjhxZeloghBBSOVVN6Tx16lT87ne/w5/+9CfMnj1b2fb666+jqakJRxxxBIYPHw4AOOSQQzBq1Chs2rQJ7733Ho499lhlnxdeeAEAcOqpp1az28QgOhPYVbGE1FaWdTYsRfvWBnnJPD+axdX9n2WuHp22P1BIPQOFSlBf8D7UCSlkgFhBKxHx6mtiXn006pN9InIBc69eCgGFgpB98l45m2s1TXbE23GQlYPtyFW6vOPYyjw2WB5zfAKEkkJaupAKqSgvxjUnynkhISnvgDS5hILuh46Q91molbxK91k4qprVc9asWYhEInjwwQfx3nvvleq3bt2K2267DQAwZ84cZZ8LL7wQAPDzn/8cO3fuLNW/+eabWLhwIWKxGH74wx9Ws9uEENLvqerM/4gjjsDVV1+Nu+++GxdccAFOOukkJBIJrFixAqlUCjNnzsTZZ5+t7HP++efjlVdewV/+8heceeaZmDRpEpqamvDOO+/AdV3ceeedzOtDCCFdpOorec2ePRuHHXYYHn30UaxevRqWZeGwww7D+eefj+9973vt2tu2jXvvvRf/+Z//id///vd47bXXUFdXhylTpmDOnDk46aSTqt1lQtqhe1TXpXG2A8qKW6hlww2R0jmmWb2rxpc5R67AJdMyy1w9dY4se/tKqWegkHrqbM+LJVnjlRMJr1wTF9GtcZ83jdBlxOVBei06Ba9P+RaxIHtLq5xk1XrHqK/JwkoLDyKpMolTO2IsCuJ7y/tW8pIyTk50KifGtkXzXYSRgGTOn4Li+aT3KlPuM5kSWrn/uielc5eN/5VXXokrr7yybJtp06Zh2rRpoY8Zi8VwySWX4JJLLulq9wghhATAlbwIIcRAuIA7IW3oZBs/HaVu9h8rcCUvy1I9fNCxBBRXPH/UeZtcbL1Wk5ZZRuzKAK46jdRTX9tSKidqhewzQHj41ArJI+GL8BXWRSf7iHgqFDLesWLptmj/hLdjsi4LKyv0HRFXKOOahIqFnCUDx9TvNCu+O7kAvBzbuJCAsmL8w3x3+Q7uB6D9faZL9yxTPct9urLCF2f+hBBiIDT+hBBiIJR9SL+lpxME6gJ5itKQf1Up2+f9UyqLOVlMSkCy3jdvi4t2NZoVuGRyNpmrRwZwKV49QuqprffKsXrh4VMnrjPuW7tLJBayZF4iGW2V98qRFuERs7etTwmvb7V1ObhpkRdHBIgVWrzj54RXU0aMcdp3P8jPcvwyrmbMQ0g9uhxQXQ34qgac+RNCiIHQ+BNCiIFQ9iEkBF2RkIK8fVqDvKQHh/Tw0cgLcolFn1xQI6SKuGax9YQmpbPM1SMDuKRXjyL11IvrqBOpqBOqObFqhAykyensCu8dKyNcf4pSVFykp64vIJHy2hRELqBcXix9KcuacfF/rlEkNXF9Sjn4O7I1wXo6z5/OUGmenzBw5k8IIQZC408IIQZC408IIQZCzZ8YR1fd6ypJ5gYEu3r6+yG3qW6fcknG4HpA/UOWmrXU/ONyHV6RaEzm5FcStdUGu3QqOn+dt5awVauuK2xFO9b8IZPBRb31ckt71njnig6w4Ig+1YiI4JoW7xriBW8f5Zp9U105TnL8tGPuBn9HOjdOiS4S3B/ha2lcRdFNOr/aJ0IIIcZB408IIQZC2YeQXsC2LCUpl+5xX4kCVqQhVS6QkkRUKARRIRfERB74qJB95PKLMie/TNQmo3elS6eUeqx4TOkTarzPOldFK5tDIPm2Pgl3UTtuK32SfVWuQVxbTJwr6pNOom7weCplN/i7sES9zg24XHLAvgBn/oQQYiA0/oQQYiCUfQipAh3l8wfae/949eI4vmRwun0jIcpyj4iQRiIRkVBNLr0orYNM0iakGMWjp0aVfayYOIDtXZUlkspJIcaSifiL55BRwlFL6ZPsq7wGeW3KNUNFN07+BHxeWXpnBaP7TnUeYr0JZ/6EEGIgNP6EEGIglH0ICaDaedYtWIrkoZMLdHRm1mZDJpITfZFlW1cWjTTldnKGLQ9gBdYrXkBBx/UdX9s/XfdQeXBUpWOrlXqqdA+px+188Bdn/oQQYiA0/oQQYiCUfQgJwPU9Tnf3I7z/+E6Fj+9Ox00C9vGuQabXkbFPrqMri0aasj/PvPTqUSQg6e3jdnBc3/G1/dMdphPfW6Vjq/vu/N9xd9Fdx+XMnxBCDITGnxBCDISyDyFVQMoZxbJfFtHJBVJ2kI/4rtJG3bcQoiz3KIjlDQsFr+wUhPeNWFUR+eClF2VKZn+eHiWAS7cModjHzXvH8s4hzpV3lT7JvsprkNemXDNUdOPkaMZcfhc6aUgrAQXcD70NZ/6EEGIgNP6EEGIglH0I6QUc36O/IgtIeUHUFyxRdv2yj/c5Lxxc8kJuyQnPl7yQRvJ5UW7xstwUxEpZkRaRLycjtBex+pYfmavH1azkpUg9ae9YbvEcjmeinBYHhYy4BtFX5RrEtSnX7AtCk+Mkx0+ObUHzXShynEbG8X/HfQ3O/AkhxEBo/AkhxEAo+xDjkI/snQneCiPRKOW2Nn5PENV7RMoOnlwipZ68ph4ApGNOThyrRUgdLUJ6aXG8eV8255mBrFgIPZYWq2jtFWewvLKSJjnv84Gp6XgBd+k55Ao5qVA8X9yryze7yIs+ZYXsI6+hRcg+yjX7vmo5TnL8FAlNjrnmO1K9g3QeXB3fJ0DPegVx5k8IIQZC408IIQZC2YeQECiP4BWuxBQU5FVwHbhSOhBlVWoIlh1yPnkhK1avaoGUOrxyRpbFvC9T8OSTWMZbjSsiFkW3bE24lIi6srM+2Ueu/iXkFyVPkAgec4RHUX5vW31OSDBNEWSavV0zoq/yGpRrs/SyT4uQzuT45TTePvK7yGu+u4Km3FUJpxoSEGf+hBBiIDT+hBBiIJR9SL9FPir3xKLZrsbrI8jbx4UvgEsj9eSkHCSlCV92mRbRLqvIHt450kJ6SQmPmJgIpIpkxaLo6eAMNq4jUkMLb51IQs2eIxdbl6tuKamYhZuNEsCVbt3ZavEOkt4bQybtHSiV9WSfZtdrlxLpo+U1Z3weUlnpFeUGj21e810ocpwiAZW/B/z11Ur7HAbO/AkhxEBo/AkhxEAo+xDShqsEZqlELLkKlpSTRFkToBPk7eO6rlbqKSieP56U0iLKNWp4leKtkhZ9qhGyQlxcQ0xIIxGhPNjywtNeUUmZLPLo1Ij8P9G4KvvY4sA62UemZZa5eooBXJaQdlJ7a7BXSFF7HW/bXsvbd6+4tpRQ+9I+2Ud+zkrZTJTlmMvvIsx3pwvYcssEeemCwZQ23RQIxpk/IYQYCI0/IYQYCGUfQkKgywdUSZ4ff5CXLiBIygs5jeyQtVSJRQY2xUS7mOhrVARqRUS9LeeA4rBy/fWCiJDK5T2JpUbkAopGVbEsEhFBYkJ+kUqFlJNkWuZirh67EC/VNWVr0OR4HZRST1PE23evuJy94ppTPs+atBinDKS3VPCY674L3feo8wIqJ9voZJxqeAVx5k8IIQZC408IIQZC408IIQZCzZ8YTWdy+4dJ8hYUxemP+JSfdVqx1Jmzohx1Vc0/KuZxUdEn6aIqc7NZtpz3CTdWcRyxCiNyIqo3ITT/eMEzIVHLp/mLz5p0/ijI5SRlHv62sl2oKdU1ujE0KXp+sM6/R1zoXqHlN/vek6Q1brQtmjHPhdD5uzOqt1I3Tu8+Cwdn/oQQYiA0/oQQYiCUfYgRdDXJm3TPqzTat9DmM1kQvpOOE87VM6JIIfnAesDvuhlcVi5baAOukE8Kon1OhOXKvPgJce640HBiPplCns5W5BDhKiva5OQ6BG06UURkh/vajqAp4o2NjN7dq5F69gqpJ+XqZZ+MGNsWTTlfqaunE1wOWuIzaFuY+q7AmT8hhBgIjT8hhBgIZR9CAvB7WkipSPHWkEVNtK9rtff2caEmdsuLyFXpdRQR0osiATkiET6AiK2RehCMq/G+yYvjtIhGaXH9cVEfF9PHqG/M1NRzwUghJh+w5GJURO5+FbEUeUcmZpPRu80aqSflqmOmlXqcjqWenPi+5Hen8/xRyiEjfHVeQd21pCNn/oQQYiA0/oQQYiCUfQhpozMBX5KOPH8cnweQ9ACxpWwjg7w0cpBlq/2z3Y77K8UC6WVSEOWcSJaWRceyj5I4zteHymUfr5xr61NMyDy7bQfNmnULpOeOrpzxyT5pNxe4LSvLQgLKaeSdrnj4dNWLpysJ3zjzJ4QQA6HxJ4QQA+my7LNp0yZMnz4d5513HubNm9duezqdxiOPPIJly5Zh8+bNcBwHBx10EKZNm4bLLrsMgwcPbrfPz372MyxZskR7zlmzZgWei5AwdCbgS7fEo60LnArw2vDXOYp0ICQdGYzkX08yDJopnSI3iHJeyCc50Se5RkBceB3VyDxC4vgRq2uyj5SfimJLTMg8jVYBTZDyjOxr8NKLOo8e/7aM40lALaIsZZ+sxgtIzduv8fYJsaSjf5/uWq5RR5eM/86dO3HFFVcgnU4Hbt+9ezf+9//+39iwYQPq6+tx3HHHIRKJYM2aNXj44Yfxxz/+EU888QSGDx+u7Ld27VoAwHe/+13Ydvs7eeLEiV3pNiGEGE+njf8HH3yAuXPnYvPmzdo2//Zv/4YNGzbgpJNOwq9//WsMGTIEALBnzx789Kc/xauvvoqf//znePjhh0v7NDc3Y/PmzTjggANwzz33dLZ7hBBCylCx8W9sbMRDDz2EhQsXIpvN4uCDD8Znn33Wrl0mkylJN3feeWfJ8APAwIEDcdddd+GUU07Bq6++iq+//hr77bcfgNYfFcdxMGHChM5eEyFdxu9FUan3j+rF0Zbbx+cVIj9biuwTHLAlpYZ23j0aecgRkk7BDvbwyYudc0KsqZG5fUSAmfTwiSgBaT4PJCXHUHBXFa8jt33/pMTU6ObRrJF95NKLanrm4OCt1v3lNk/q0QV2OSGWa9R6/miWdOwM3bWkY8UvfBcuXIgFCxZgyJAhuP/++zF9+vTAdrt27cLRRx+N448/HgcddFC77UOHDsWgQYPgui527NhRqn///fcBgMafEEKqSMUz/+HDh+P666/HBRdcgEQiUdLn/Rx00EF44okntMfZvHkzdu/eDdu20dDQUKpft24dACASieCnP/0pVq1ahV27dmHkyJE455xzcMkllyAej+sO22WSydqqHbs/IcdpXx6zsC98FR97uUCKKHfURo5TbbIWEfE+K2p7M+6IKMeE331UtK+x1T/dqCVn7DFR9trFxT41on1c7quZ+cvFYnp05l/r/a3X1MaVpxRLPjnJV8ditm653jVbvpm/LWb+tutdt5JVVb7kFTN5uZhOQZfqIcTMvzMvfDua+Qe9Jw2iYuM/c+bMSncJ5N///d8BAFOmTFE8foo/Jvfccw8OPPBAHH300di5cyfWrl2LX/3qV3jppZfwyCOPoK6urlv64Wf7tverctz+DMescj7Z/HZvd2Gf495Vj/R2F/oVvRLh+8ADD+BPf/oTEokErrvuulJ9Op3Gxo0bAbS6e1522WWlX7FPPvkEV155JVavXo358+dj/vz5vdF1QgjpF/S48f/Nb36D++67D7ZtY/78+Rg3blxpW21tLd544w3s3LkThx9+uLLf6NGjcdddd+H73/8+nn32WVx//fUYNGhQt/evYcR4pFLBrqvEI5msLc34+8uYlZOAdC98K5GAkslafLrlrwCAQw85ES3pllIbJXunLcsdS0CAT/YR8k7Miga2iVvBEpDsh5SDpOwjpZ6oFVzfGZSX0G0ySbw2jgXvLQIAXHLs/4dm4VbeovG1z2pe+OZ9i7nkNGkclBe+QrrJaaQenbyje/lbTsIJ49vfUbbPV15+DscdOz6wjaTHjH82m8VNN92E5557DtFoFHfccQe++93vtms3ePDgwMAvABg/fjyGDx+OL774AuvWrcPkyZO7vZ+pVLpfGLKepL+MWWf0f93+QT8E8o+5uTmFdDpT+qwYf80PQVTzQ9B6vuD3ATGxjzT+shzTlNU20sgHG3zbN35hPKR0GnfxhyAu8u/sSjVhr7jP8prF1XMab512xl8YcGn8pVePcqwKDb7ry+VUqi+T26dSgx+0r+NoXL989Ijx37VrF3784x9j1apVqKurw69//Wt885vf7NSxRowYgS+++EIbWEYIIaRjqm78P/30U1x88cX4/PPPcfDBB+OBBx7AmDFjAtu+9dZbePrpp3HQQQfhmmuuCWyzbds2AK0/AoQQQjpHVY3/9u3bceGFF2Lbtm2YOHEiHnjgAQwdOlTb3nVd/OEPf0AymcSPfvSjdh49b775Jr744gsMHz5ceVdASHcQNudPpamfS7l9fI/7iiygjdLSHNTnzReRsoDYR8oQMVvIEyJnTl6sfJXT6P9S6olqJCrL9bt6doy8PFdx+2zdkne8Y+4tZNHstLRrA+hz7ehW3wq9fxekHqcC98wgKpF6OkNVs3r+n//zf7Bt2zaMGzcOjz76aFnDDwCTJk3C4YcfjlQqhX/+539GKpUqbfvoo49www03AACuvPLK0L6shBBC2lO1mf/rr7+OFStWAADq6+tx8803a9vOnTsXI0eOhG3buOeee3DxxRfjxRdfxOmnn45jjjkGqVQK77zzDvL5PC688ELMmDGjWt0mhBAjqJrxX758ean8zjvvlG170UUXYeTIkQCAcePG4bnnnsODDz6Iv/zlL3j11VeRTCYxadIkzJo1C9OmTatWlwkpUW4B9zD7qGmf2+/ruq4iC8jn2IolIHiLxPvLjpBlFFlFyD5SupESkOLVI9pIzyJbE9XsR7ZzOnBVlG0cR+YXyiJTyHrXgBAulhoJJ+w+XZJ6NJJMV1M1d1d6Z8utRqLofZj6QYf1C7fFapNM1qKp8e8AzBgznWGrxO0zmazFV199CAAYOuQIxdVTcQ0V5TAuoGXbWcGuomHa9wXjn6hN4LVPXgQATBk9Dc3NnhS8Lxn/zuTp78ifX8fKFS/ghOM7TntP4ZwQQgyEC7gT0gV0nj9BEpDf+0MrE4myTgJyHV9wkCL1iLJI4+yIfRQvHXT8pGFrnkbKeTvZITyhtE8BbfWWSCWdcbLKilvamXiA15C/DPgXWO84CVtvzvarAWf+hBBiIDT+hBBiIJR9CAlBmACwjiQgv1SgPOIHx2hpJSDXv5KXaKgLLpL7yxfGystYxfMnOFGdlH2ULoRMjKeTNoJWuLIK3kvqTCGnrLjlaiQZZY0ATU6dctsUOUizCHt3ST1hZZ5q+OVw5k8IIQZC408IIQZC2YeQCumKBCSPoQR5Weo2rxzsR+/6zyu0IqWdo5GiNP2TwV9KrIJcSF5T76fSwDhJUW6xHc9E5ZyCkno5TB6dcrKPTpYJs+RiGOmqL0o9Es78CSHEQGj8CSHEQGj8CSHEQKj5E9IFKtH//VpvmERwYdxB/TWqm6nmnYHmXYAux5Aukrese2dXNP+2+mhBrK3rFJT8PGE0/3IafFfcOIP6GnSOjvZt164HU61x5k8IIQZC408IIQZC2YeQbiLsMpBAeAlIIt1B/SpCQXNuVyPdtIsQDtjX7qLs0xWKUoqUefyyT6jc+RppJ+z+OglJadMFqac3M+pz5k8IIQZC408IIQZC2YeQKtAdieD8qB5B5U7uFcPIQZIw0pDSvkqyj6uRfcIkXZN0NY9+pUsu9nWpR8KZPyGEGAiNPyGEGAhlH0KqTFA+/3ZtNHJBR0tDBqGVhELIQZAyRwhJp9wyjl2heK3+ZRh1SdeC9m1XX0aSqYYnT5jj9Cac+RNCiIHQ+BNCiIFQ9iGkFwgrA1TqEQSUk4Tk+gHBx1Jy+2vOoZOJqoGUYwqOo3j7SCpZGjJw/27y5Kn0mL0JZ/6EEGIgNP6EEGIglH0I6SV0skCYoLB2+4SQhORx9XJIsDSktOiEnKFbQrIjHFddhjFMrh0dnZHauvO4fQ3O/AkhxEBo/AkhxEAo+xDSx6gkNXRpnwqDxMJQLpCscjonjUhpx3HdinPtlO9R5/ffV6UeCWf+hBBiIDT+hBBiIJR9COnDVOoR1G7/ENKGLj9PX5A2XJ/MU41grLDn729w5k8IIQZC408IIQZC2YeQfZByckSlq2t1RSapWkrntj7JvvmDvLr1fP1Y3tHBmT8hhBgIjT8hhBgIZR9C+hlhJIzuWni9WjJMd2GinBMWzvwJIcRAaPwJIcRAKPsQYiCVyiHdJRN1Fco43Qdn/oQQYiA0/oQQYiCUfQghHdJbcos/tw/pPjjzJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA6HxJ4QQA+lyPv9NmzZh+vTpOO+88zBv3rx22xcvXhxYX2TMmDFYsmSJUpfP5/HMM89g8eLF2LRpE6LRKCZMmIDZs2dj0qRJXe0yIYQYT5eM/86dO3HFFVcgnU5r26xduxYAMGnSJAwbNqzd9hEjRiifXdfF9ddfjyVLlmDQoEGYMmUKdu/ejTfeeAOvv/46br/9dnz/+9/vSrcJIcR4Om38P/jgA8ydOxebN28u265o/G+99VYceuihHR73mWeewZIlS3DkkUfi0UcfxeDBgwEAb775JubMmYNbb70VU6ZMafejQQghJDwVa/6NjY34t3/7N/zjP/4jNm/ejIMPPljbNpfLYcOGDaivr8eoUaNCHf/BBx8EANx0000lww8AkydPxkUXXYSWlhYsWrSo0m4TQggRVGz8Fy5ciAULFmDIkCG4//77MX36dG3bjz/+GNlsFuPHj4dlWR0e++OPP8ann36KoUOH4oQTTmi3/cwzzwQAvPTSS5V2mxBCiKBi2Wf48OG4/vrrccEFFyCRSJRknSCK2xoaGnDXXXdh+fLl2Lp1K/bbbz+ceuqpuOKKK9DQ0FBqv2HDBgCtL4GDfiyK9Z9++inS6TRqa2sr7X6HJJPdf8z+iBwnjlk4OGaVwzGrHNsON6ev2PjPnDkzdNui8X/22WdRV1eHE088ESNGjMDatWvx1FNP4cUXX8QjjzyCcePGAQB27NgBAMoPgiQej2PgwIFobGzEzp07MXLkyEq73yHbt73f7cfs73DMKodjVjkcs+6ly66e5Vi3bh2AVrlm/vz5qKurAwA0NTXhxhtvxLJly3DVVVdh6dKliEajaG5uBgAkEgntMePxOACU2hJCCKmcqhr/xx57DFu2bMEhhxyCmpqaUn19fT3uuOMOrFq1Cps2bcIrr7yC0047DZFIBABCvR+oFg0jxiOV0ruuklaSydrSTIxjFg6OWeVwzCrnlZefw3HHju+wXVWNfyKRwJgxYwK3DRgwACeffDKef/55rFmzBqeddhoGDBgAAMhkMtpjtrS0AEBV9H4ASKXSvMEqhGNWORyzyuGYhcNxnFDtejW9Q9FXvxgkVtT6v/zyy8D2LS0t2LNnDyzLwgEHHNAznSSEkH5I1Yz/9u3bccMNN+Cqq65CoVAIbLNt2zYArR5EAEovfj/66KPA9h999BFc18XIkSORTCar0GtCCDGDqhn/+vp6LF26FMuWLcPKlSvbbd+9ezeWL18Oy7LwrW99CwBwyCGHYNSoUdixYwfee++9dvu88MILAIBTTz21Wt0mhBAjqJrxTyaTpQCwW265BZ9//nlpW2NjI+bOnYumpiace+65GD16dGnbhRdeCAD4+c9/jp07d5bq33zzTSxcuBCxWAw//OEPq9VtQggxgqq+8L3uuuvwwQcfYPXq1Tj77LNx/PHHI5FI4O2330ZTUxNOOOEE3Hzzzco+559/Pl555RX85S9/wZlnnolJkyahqakJ77zzDlzXxZ133sm8PoQQ0kWqavzr6urw+OOP47HHHsOSJUvw7rvvIhKJ4NBDD8W5556LWbNmIRaLKfvYto17770X//mf/4nf//73eO2111BXV4cpU6Zgzpw5OOmkk6rZZUIIMQLLdV23tzvRl6gfdBjdyUKQTNaiqfHvADhmYeGYVQ7HrHJWrngBJxw/scN2XMmLEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMhMafEEIMJNrVA2zatAnTp0/Heeedh3nz5pXqP/vsM0ybNi3UMX7yk5/gyiuvLH3+2c9+hiVLlmjbz5o1SzkXIYSQyuiS8d+5cyeuuOIKpNPpdtuSySTOOecc7b67d+/Gq6++CgA48sgjlW1r164FAHz3u9+Fbbd/OJk4cWJXuk0IIcbTaeP/wQcfYO7cudi8eXPg9iFDhuDf//3fA7c5joPLLrsMAHD55Zfj9NNPL21rbm7G5s2bccABB+Cee+7pbPcIIYSUoWLj39jYiIceeggLFy5ENpvFwQcfjM8++6yiY/z2t7/F66+/jmOPPRZXXXWVsu2DDz6A4ziYMGFCpV0jhBASkopf+C5cuBALFizAkCFDcP/992P69OkV7b9p0yY88MADiMViuP322xGJRJTt77//PgDQ+BNCSBWpeOY/fPhwXH/99bjggguQSCRK+nxYbrvtNuRyOfzwhz/E4Ycf3m77unXrAACRSAQ//elPsWrVKuzatQsjR47EOeecg0suuQTxeLzSbocmmayt2rH7E3KcOGbh4JhVDsescoLekwZRsfGfOXNmxZ0psnLlSrz22mtIJpP40Y9+FNim+GNyzz334MADD8TRRx+NnTt3Yu3atfjVr36Fl156CY888gjq6uo63Y9ybN/2flWO25/hmFUOx6xyOGbdS5ddPSthwYIFAIB/+qd/wpAhQ9ptT6fT2LhxI4BWd8/LLrus9Cv2ySef4Morr8Tq1asxf/58zJ8/v+c6Tggh/YweM/5///vf8corryAWi+GHP/xhYJva2lq88cYb2LlzZztJaPTo0bjrrrvw/e9/H88++yyuv/56DBo0qNv72TBiPFKp9q6rRCWZrC3NxDhm4eCYVQ7HrHJeefk5HHfs+A7b9ZjxX7JkCVzXxSmnnIJhw4Zp2w0ePBiDBw8O3DZ+/HgMHz4cX3zxBdatW4fJkyd3ez9TqTRvsArhmFUOx6xyOGbhcBwnVLseS++wbNkyAMD/+l//q0vHGTFiBAAEBpYRQggJR4/M/Lds2YK///3viMViZVM+vPXWW3j66adx0EEH4Zprrglss23bNgDejwAhhJDK6ZGZ/9/+9jcAwNFHH41kMqlt57ou/vCHP2DhwoXYu3dvu+1vvvkmvvjiCwwfPhzjxo2rWn8JIaS/0yPGf82aNQCAY489tmy7SZMm4fDDD0cqlcI///M/I5VKlbZ99NFHuOGGGwAAV155ZWhfVkIIIe3pMdkHAL7xjW+UbWfbNu655x5cfPHFePHFF3H66afjmGOOQSqVwjvvvIN8Po8LL7wQM2bM6IluE0JIv6VHjP9XX30FoDU6uCPGjRuH5557Dg8++CD+8pe/4NVXX0UymcSkSZMwa9as0GmiCSGE6LFc13V7uxN9ifpBh9GdLATJZC2aGv8OgGMWFo5Z5XDMKmflihdwwvEdp72ncE4IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQZC408IIQYS7e0O9DVeefk5OI7T293o89i2N2/gmIWDY1Y5HLPKOeKIw0O1s1zXdavcF0IIIX0Myj6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgNP6EEGIgxi/juHHjRtx333149913sWvXLgwfPhzf+c53MGfOHCSTyd7uXq/y3HPP4emnn8b69euRTqcxdOhQnHzyyZg9ezYOO+wwpe3ixYsxb9487bHGjBmDJUuWVLvLvcbGjRtx1llnlW3z5ptvYsiQIaXPb7zxBh5++GGsX78emUwGo0ePxg9+8APMmDEDlmVVu8u9zmmnnYbPP/+8w3YnnXQSFi1aBID3WXditPFfvXo1LrroIqRSKUycOBETJkzAX//6VzzwwANYvnw5nnjiCdTV1fV2N3sc13Vx7bXXYsmSJYhGo5gwYQKGDBmC9evX49lnn8ULL7yA++67D9/85jdL+6xduxYAMGnSJAwbNqzdMUeMGNFj/e8N1q1bBwA4/PDDceSRRwa2icfjpfKTTz6JW265BbFYDJMmTUIsFsNbb72Fm266CX/9619xxx139Ei/e5PTTz8dX331VeA213XxwgsvIJ/P4+ijjy7Vm36fdSuuoeRyOXfatGnu2LFj3f/6r/8q1afTaffyyy93x44d695666292MPe49lnn3XHjh3rnnLKKe4HH3xQqs/n8+4999zjjh071p08ebK7d+/e0rbzzjvPHTt2rPvJJ5/0Rpd7nTvvvNMdO3as+9RTT3XY9pNPPnGPPPJI9/jjj3fXrl1bqv/888/d008/3R07dqz73//939Xsbp/n3nvvdceOHevOmjXLzeVypXrT77PuxFjNf+nSpdiyZQsmT56MGTNmlOoTiQTmz5+PZDKJ3/3ud2hsbOzFXvYOTz/9NADgZz/7GY444ohSfSQSwdVXX40xY8Zg165deP311wEAuVwOGzZsQH19PUaNGtUbXe51ijP/CRMmdNh2wYIFKBQKuPTSS3HUUUeV6g888MCSpLFgwYLqdHQfYMWKFbj33nsxcOBA3H333YhGWwUK3mfdi7HG/89//jMA4Iwzzmi3bb/99sOkSZOQy+Xw6quv9nTXep2BAwfisMMOw4knnthum2VZOPTQQwEA27dvBwB8/PHHyGazGD9+vBFadRDr1q1DPB7HmDFjOmy7fPlyAMC3v/3tdtumTJmC+vp6rFmzpjS+JpHNZjFv3jw4joPrrrsODQ0NpW28z7oXY43/hg0bAADjxo0L3H744YcDANavX99jfeor3HffffjjH/+IkSNHtttWKBRKumtRXy1+bmhowF133YWzzjoLEydOxNSpU3HzzTf3eyO2ZcsW7NmzB6NGjcKTTz6J8847D8cddxwmTZqEK664AqtXry613blzJ3bt2oVYLIbRo0e3O1YkEinVf/jhhz12DX2FRx99FJs2bcKE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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = tobac.testing.make_sample_data_2D_3blobs(data_type=\"xarray\")\n", "\n", "plt.figure(figsize=(8, 8))\n", "plt.imshow(data[50])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "id": "ba44cd13", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:02.295460Z", "iopub.status.busy": "2024-03-22T16:55:02.294410Z", "iopub.status.idle": "2024-03-22T16:55:03.183800Z", "shell.execute_reply": "2024-03-22T16:55:03.180198Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.680613Z", "start_time": "2024-10-18T14:10:59.561511Z" } }, "outputs": [], "source": [ "%%capture\n", "threshold = 9\n", "dxy, dt = tobac.utils.get_spacings(data)\n", "features = tobac.feature_detection_multithreshold(data, dxy, threshold)" ] }, { "cell_type": "code", "execution_count": 15, "id": "91ed6612", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:03.189365Z", "iopub.status.busy": "2024-03-22T16:55:03.188845Z", "iopub.status.idle": "2024-03-22T16:55:03.217928Z", "shell.execute_reply": "2024-03-22T16:55:03.215566Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.686121Z", "start_time": "2024-10-18T14:10:59.683650Z" } }, "outputs": [ { "data": { "text/plain": "60 501.0\n61 30.0\n62 325.0\nName: num, dtype: float64" }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features.where(features[\"frame\"] == 50)[\"num\"].dropna()" ] }, { "cell_type": "markdown", "id": "68e3b85d", "metadata": {}, "source": [ "Obviously, the feature with only 30 datapoints is the rightmost feature that has almost left the imaging area. If we now use an *n_min-threshold* above or equal to 30, we will not detect this small feature:" ] }, { "cell_type": "code", "execution_count": 16, "id": "95284244", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:03.228087Z", "iopub.status.busy": "2024-03-22T16:55:03.227617Z", "iopub.status.idle": "2024-03-22T16:55:04.047854Z", "shell.execute_reply": "2024-03-22T16:55:04.045703Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.798893Z", "start_time": "2024-10-18T14:10:59.687135Z" } }, "outputs": [], "source": [ "%%capture\n", "features = tobac.feature_detection_multithreshold(\n", " data, dxy, threshold, n_min_threshold=30\n", ")" ] }, { "cell_type": "code", "execution_count": 17, "id": "caeea658", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.056065Z", "iopub.status.busy": "2024-03-22T16:55:04.054400Z", "iopub.status.idle": "2024-03-22T16:55:04.081407Z", "shell.execute_reply": "2024-03-22T16:55:04.073872Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.803974Z", "start_time": "2024-10-18T14:10:59.801330Z" } }, "outputs": [ { "data": { "text/plain": "60 501.0\n61 325.0\nName: num, dtype: float64" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features.where(features[\"frame\"] == 50)[\"num\"].dropna()" ] }, { "cell_type": "markdown", "id": "72563272", "metadata": {}, "source": [ "Noisy data can be cleaned using this method by ignoring smaller features of no significance or, as here, features that leave the detection range." ] }, { "cell_type": "markdown", "id": "31c70494", "metadata": {}, "source": [ "## Minimum Object Pair Distance `min_distance`" ] }, { "cell_type": "markdown", "id": "7bf8c298", "metadata": {}, "source": [ "Another way of getting rid of this specific feature is the *min_distance* parameter. It sets a minimal distance of our features. Lets detect the features as before:" ] }, { "cell_type": "code", "execution_count": 18, "id": "b2a7de25", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.092583Z", "iopub.status.busy": "2024-03-22T16:55:04.089770Z", "iopub.status.idle": "2024-03-22T16:55:04.910201Z", "shell.execute_reply": "2024-03-22T16:55:04.909339Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.971014Z", "start_time": "2024-10-18T14:10:59.804204Z" } }, "outputs": [], "source": [ "%%capture\n", "\n", "data = tobac.testing.make_sample_data_2D_3blobs(data_type=\"xarray\")\n", "\n", "threshold = 9\n", "dxy, dt = tobac.utils.get_spacings(data)\n", "features = tobac.feature_detection_multithreshold(data, dxy, threshold)" ] }, { "cell_type": "markdown", "id": "e6fd198e", "metadata": {}, "source": [ "A quick look at frame 50 tells us the found features and their indices:" ] }, { "cell_type": "code", "execution_count": 19, "id": "f7db8149", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.913300Z", "iopub.status.busy": "2024-03-22T16:55:04.913061Z", "iopub.status.idle": "2024-03-22T16:55:04.922234Z", "shell.execute_reply": "2024-03-22T16:55:04.921616Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.976555Z", "start_time": "2024-10-18T14:10:59.973755Z" } }, "outputs": [ { "data": { "text/plain": "array([60, 61, 62])" }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 50\n", "mask = features[\"frame\"] == n\n", "features_frame = features.where(mask).dropna()\n", "features_frame.index.values" ] }, { "cell_type": "markdown", "id": "6a24c009", "metadata": {}, "source": [ "Notice that *to_dataframe()* was used to convert the Dataset to a pandas dataframe, which is required to use the *calculate_distance* function of the analysis module. The distances bewteen our features are:" ] }, { "cell_type": "code", "execution_count": 20, "id": "b15da9d2", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.925181Z", "iopub.status.busy": "2024-03-22T16:55:04.924939Z", "iopub.status.idle": "2024-03-22T16:55:04.930199Z", "shell.execute_reply": "2024-03-22T16:55:04.929225Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.978901Z", "start_time": "2024-10-18T14:10:59.976663Z" } }, "outputs": [ { "data": { "text/plain": "np.float64(77307.67873610597)" }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tobac.analysis.calculate_distance(\n", " features_frame.loc[60], features_frame.loc[61], method_distance=\"xy\"\n", ")" ] }, { "cell_type": "code", "execution_count": 21, "id": "4afc4eb3", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.933065Z", "iopub.status.busy": "2024-03-22T16:55:04.932825Z", "iopub.status.idle": "2024-03-22T16:55:04.937407Z", "shell.execute_reply": "2024-03-22T16:55:04.936656Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.981345Z", "start_time": "2024-10-18T14:10:59.979545Z" } }, "outputs": [ { "data": { "text/plain": "np.float64(64289.48419281164)" }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tobac.analysis.calculate_distance(\n", " features_frame.loc[62], features_frame.loc[61], method_distance=\"xy\"\n", ")" ] }, { "cell_type": "code", "execution_count": 22, "id": "9a5ff68a", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.940394Z", "iopub.status.busy": "2024-03-22T16:55:04.940104Z", "iopub.status.idle": "2024-03-22T16:55:04.945107Z", "shell.execute_reply": "2024-03-22T16:55:04.944530Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.985181Z", "start_time": "2024-10-18T14:10:59.982374Z" } }, "outputs": [ { "data": { "text/plain": "np.float64(101607.57596570993)" }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tobac.analysis.calculate_distance(\n", " features_frame.loc[62], features_frame.loc[60], method_distance=\"xy\"\n", ")" ] }, { "cell_type": "markdown", "id": "3ee0e593", "metadata": {}, "source": [ "With this knowledge we can set reasonable values for *min_distance* to exclude the small feature:" ] }, { "cell_type": "code", "execution_count": 23, "id": "50dd4ad8", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.948186Z", "iopub.status.busy": "2024-03-22T16:55:04.947936Z", "iopub.status.idle": "2024-03-22T16:55:04.950684Z", "shell.execute_reply": "2024-03-22T16:55:04.950055Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:10:59.986864Z", "start_time": "2024-10-18T14:10:59.984832Z" } }, "outputs": [], "source": [ "min_distance = 70000" ] }, { "cell_type": "markdown", "id": "15c4336f", "metadata": {}, "source": [ "and perform the feature detection as usual:" ] }, { "cell_type": "code", "execution_count": 24, "id": "ffc101e8", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:04.954781Z", "iopub.status.busy": "2024-03-22T16:55:04.954262Z", "iopub.status.idle": "2024-03-22T16:55:05.429831Z", "shell.execute_reply": "2024-03-22T16:55:05.429049Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:11:00.155220Z", "start_time": "2024-10-18T14:10:59.987393Z" } }, "outputs": [], "source": [ "%%capture\n", "\n", "data = tobac.testing.make_sample_data_2D_3blobs(data_type=\"xarray\")\n", "\n", "thresholds = [10]\n", "dxy, dt = tobac.utils.get_spacings(data)\n", "features = tobac.feature_detection_multithreshold(\n", " data, dxy, thresholds, min_distance=min_distance\n", ")\n", "\n", "n = 50\n", "mask = features[\"frame\"] == n" ] }, { "cell_type": "markdown", "id": "3e0d7a87", "metadata": {}, "source": [ "Plotting the result shows us that we now exclude the expected feature." ] }, { "cell_type": "code", "execution_count": 25, "id": "1d1d0131", "metadata": { "execution": { "iopub.execute_input": "2024-03-22T16:55:05.433074Z", "iopub.status.busy": "2024-03-22T16:55:05.432759Z", "iopub.status.idle": "2024-03-22T16:55:05.585659Z", "shell.execute_reply": "2024-03-22T16:55:05.585011Z" }, "ExecuteTime": { "end_time": "2024-10-18T14:11:00.223476Z", "start_time": "2024-10-18T14:11:00.159293Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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u3bV6aefrvPOO6/ZtlAoFD2z37dvnyTp888/V319vc4++2ze4AAQkMDP/B9//HHrtqampmjEE8nxI4+Li4s1d+5clZeXa8+ePTr55JM1duxY3XLLLSouLg66222C3y+IvXxZLNln9bR9eWx+uoh8Ioj/lGGeQZv98HLmH3+WbftC1st0DV6mbkjlS1pm70R7Ewq34ueXJUuW6L/+67/UrVs3vfnmm+rcubMeeOABLV26VNLxi3rOO+881dfXq6KiQlVVVerRo4eeffZZDR06tLW6DQAnvFa7wnf16tV69NFHJUl33HFHNMPduHGjJGn8+PGaM2dO9KrO6upq3X333VqxYoVmzJih5cuXNztjBAB40ypn/uXl5brttttUV1enq666Svfff390W11dnXbt2qV+/fo1G/995MgRTZgwQfv379eTTz6pcePGZbxv8V90mj8ev8vxx7Mtexkjb36Jak6fUFdXF12ura2NLtfU1ESXDx8+HNOn6urq6PLXX38dXT5y5EjCZfNYkefr0KFD9I/3jBkzYtqb/bZ9cWzGJcnG1Pv98tdc7tq1a3TZnKLCXLZdLxB/bYQtfvIbM0X6V1tbG8hMoS1ty0R7l7SVL3b99CMUCnn6N836qfOSJUv08MMPq6mpSVOnTtW9994bs72goECDBw9OuG/nzp11wQUX6De/+Y02bNgQSPEPhULWH7SXH2iy0T5elm3TIadz9674Qmb+ITELqvl8tlFAkddnHr9Tp04x7dMt/rbvHszXYRvV43fOHy93+5L83/Tey2ifVG/+ngkU/FjZLPJt5Q9K1op/Y2Oj/vM//1PLli1TKBTS7bffrptvvtn3cSJfDJtnuQAAf7JS/Ovq6vSjH/1Iq1atUqdOnfTII49owoQJzdrt27dPv/zlL3XkyBH94he/aHb2JUl79+6VJJWUlATebwBorwIv/k1NTdHC36NHDz311FMaMWJEwrZdunTR8uXLdfToUa1du1ajRo2K2X7o0CGVl5crFArpoosuCrrrkvzP8xP/cdo23bMt77UNhzTjEzOqsH13YJtKOX6bre9mnxJl8GY007Vr15g2fmOf+D/ytkzdFvvYMn/bhWBehpIm+x7C71DRTF20lcmcH8HEL0FFOn4zfy8Cv8jrySef1KpVq1RYWKhFixZZC790/Bd00qRJkqT7779fu3fvjm6rqqrS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Z+SP7SO/GTUExUvsY8Y7ttjHjHaSXXhm09J8+fGxj+0CLC8XbKVyG8d05vNPRdAjfExpFf/Kykrdcsstqq2tTbj90KFD+td//Vdt2bJFXbp00be+9S3l5uZqw4YNmj9/vn73u99p6dKlKikpidmvoqJCkvTd73434S/CiBEj0uk2ADgv5eK/adMmzZw5Uzt37rS2+dnPfqYtW7bo/PPP169+9St1795dkvT111/rJz/5id59913de++9mj9/fnSfI0eOaOfOnerZs6fmzZuXavcAAEn4Lv5VVVV65plntHjxYtXX16tPnz768ssvm7Wrq6uLRjePPPJItPBLx+fomDt3ri688EK9++67+uqrr3TyySdLOv5H5dixYxo+fHiqrwlodS19TPf6Md4Wz6TbJy9xhhnvmBGJLeqJj3n8zu2TqB/m9oKCAk/TQXtZTrYtUxd2tcURPibf76bFixdrwYIF6t69u5588klNmjQpYbuDBw9q2LBhOvfcc3Xaaac1296jRw+ddNJJCofD2r9/f3T9p59+KkkUfwAIkO8z/5KSEt155526+uqrVVBQEM3n45122mlaunSp9Tg7d+7UoUOHlJOTo+Li4uj6jRs3Sjr+l/gnP/mJ1q1bp4MHD6pv3766/PLLdf3118dcXg7AmyDOXFM5o/VzrPh1J+pZdlvku/hPmTIlI0/83//935Kk0aNHx4z4ifwxmTdvnk499VQNGzZMlZWVqqio0C9+8QutXLlSzz77rIqKijLSD7gtleKQiYISP70wWjZo0KDW7kK70ipX+D711FP6wx/+oIKCAs2aNSu6vra2Vtu3b5d0fLjnTTfdFM3ctm3bpltvvVXr16/XnDlzNGfOnNboOgC0C1kv/r/+9a/1+OOPKycnR3PmzNHQoUOj2zp16qT3339flZWVzf7KDxw4UHPnztX3v/99vfrqq7rzzjt10kknZbv7aMdSmaHT72yakS8WGxsbPd10xVy23bAlfpuXZS9j9b20sfUvFYm+XA2FQurfv78k6YsvvrB+4Wv7ktbWJtk+ti95g7iHb7JPkX4/Yfptn7XiX19fr3vuuUevvfaa8vLy9PDDD+u73/1us3bdunVLeOGXJJ199tkqKSnRX/7yF23cuFGjRo0KuNdAculc/OX3l9UsPvGF1jYSyEsxshV22/N5uWtYosep9M9cl5+f73vE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+Q8fPrzFtgsWLFBTU5NuvPFGnXXWWdH1p556ajTSWLBgQTAdPQGsWbNGjz32mLp27aqf//znyss7HlDwPsssZ4v/m2++KUm69NJLm207+eSTVVpaqoaGBr377rvZ7lqr69q1q04//XSdd955zbaFQiENGDBAkrRv3z5J0ueff676+nqdffbZTmTViWzcuFEdO3bU4MGDW2xbXl4uSfrOd77TbNvo0aPVpUsXbdiwIfrzdUl9fb1mz56tY8eOadasWSouLo5u432WWc4W/y1btkiShg4dmnD7oEGDJEmbN2/OWp/aiscff1y/+93v1Ldv32bbmpqaorlrJF+NPC4uLtbcuXM1YcIEjRgxQmPGjNF9993X7ovYrl279PXXX6t///56/vnndeWVV+pb3/qWSktLdcstt2j9+vXRtpWVlTp48KDy8/M1cODAZsfKzc2Nrv/ss8+y9hraioULF2rHjh0aPnx4zCdyifdZpjlb/Pfv3y9JMWcWpsiXSZF2OG7p0qXavXu3unXrplGjRkn6+y/lq6++qhdffFH9+vXTyJEjVVtbqxdeeEFXXHFFuy5kn376qaTjxXru3Lnq3LmzLrjgAhUWFmrlypW66qqr9Jvf/EbS399Pp5xyinJyEv/6ufreO3z4sJ555hlJ0owZM5qd3bv+Pss0Z0f71NTUSDqe8ScSWR9ph+NDFR999FFJ0h133KHOnTtL+nvePX78eM2ZMyc6Qqq6ulp33323VqxYoRkzZmj58uXR/LY9MUf6PPHEE+rXr58k6dixY5o/f77mzZunu+++W+ecc06L7zvp76OCXHvvvfDCC6qurtawYcN00UUXNdvu+vss05z9CeXm5urYsWMtZofhcDhLPWrbysvLddttt6m+vl5XXXWVpkyZEt22aNEi7dq1S/369VOHDh2i67t06aKHH35Y69at044dO/TOO+9o3LhxrdH9QM2cOVNTpkxRUVFRzDj+nJwcTZ8+XevWrVN5ebmef/75aM7vJbN26b3X1NSkxYsXS5KmTZuWsI3r77NMczb2iZy11tbWJtxeV1cnSerUqVPW+tRWLVmyRD/60Y9UV1enqVOn6r777ovZXlBQoMGDB8f8QkZEIhBJ2rBhQ1b6m215eXn6xje+EVP4TRdffLGk468/8r6LvL8SOXr0qCQ5dZHh2rVrtW/fPp100knWwu36+yzTnD3z79Wrlw4dOqQDBw4k/GIzkrcmupDEFY2NjfrP//xPLVu2TKFQSLfffrtuvvlm38eJfDFs+0Pb3pmvP/IdU2VlpcLhcMJPAC6+91asWCHpeKSTqLh74fr7zC9nz/wjo3w+//zzhNsj622jgdq7uro6TZ8+XcuWLVOnTp30y1/+MmHh37dvn+666y7NmDFDTU1NCY+1d+9eSVJJSUmgfW4tDz30kH784x9r69atCbebr79bt24qLi5WfX29du7c2axtU1OTtm3bJsmt997bb78tSdYpMnifZZ6zxX/MmDGS/n7GYfrqq6+0Zs0a5efn68ILL8x211pdU1OTfvSjH2nVqlXq0aOHFi9ebP2l7NKli5YvX64VK1Zo7dq1zbYfOnRI5eXlCoVCCb/Eaw8qKir0xhtv6He/+13C7a+99pokaezYsZL+/t77wx/+0Kzte++9p+rqap1xxhnOFLEDBw5oz549ysvL07e+9a2EbXifZZ6zxf/SSy/VqaeeqlWrVum5556Lrq+rq9Pdd9+tmpoaTZ48Waecckor9rJ1PPnkk1q1apUKCwu1aNEijRgxwtq2sLBQkyZNkiTdf//9MRN1VVVVaebMmaqurtbEiRMTjmtvD6ZOnSrp+FW5H3zwQXR9U1OTHn30UX344Yfq37+/vve970Xb5+bm6umnn9Ynn3wSbb9nzx49+OCDkqTp06dn7wW0ssh1EEOGDLF+z8H7LPNCYZeGFMRZs2aNpk2bprq6Og0bNkx9+vTRunXrtH//fp111llasmSJcxO7VVVVaezYsaqpqVH//v2TTldw+eWXa8yYMTp8+LCuv/56rV+/XgUFBTr33HNVUFCgDz/8UNXV1Ro5cqTmz58f/bKzPbrvvvv0wgsvKBQK6ZxzzlFxcbE+/fRT7d69Wz179tSiRYtiZkJ95pln9POf/1y5ubk6//zzVVBQoDVr1qimpkZTpkzRf/3Xf7Xiq8muhQsX6uGHH9b48eP161//2tqO91lmOV38peNX+j722GNau3atampq1KdPH40fP1433nijc4Vfkt544w39+Mc/9tR21qxZuvHGGyUdvyx/0aJFKisr0/bt25Wbm6sBAwZo4sSJmjp1qvLz84Psdpvw+9//XkuXLtXGjRtVX1+v3r17a9y4cZo2bVrCkUArV67UwoULVVFREZ0246qrrtIVV1xhvQCsPfrFL36hp556Stddd53uuuuupG15n2WO88UfAFzkzukFACCK4g8ADqL4A4CDKP4A4CCKPwA4iOIPAA6i+AOAgyj+AOAgij8AOIjiDwAOovgDgIMo/gDgoP8fcU37mzkFCCcAAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax1 = plt.subplots(ncols=1, figsize=(8, 8))\n", "ax1.imshow(data.data[50], cmap=\"Greys\")\n", "\n", "im1 = ax1.scatter(\n", " features.where(mask)[\"hdim_2\"], features.where(mask)[\"hdim_1\"], color=\"red\"\n", ")" ] }, { "cell_type": "markdown", "id": "163a7045", "metadata": {}, "source": [ "If the features have the same threshold, tobac keeps the feature with the larger area. Otherwise the feature with the higher treshold is kept." ] } ], "metadata": { "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.11.8" }, "kernelspec": { "name": "python3", "language": "python", "display_name": "Python 3 (ipykernel)" } }, "nbformat": 4, "nbformat_minor": 5 }