{ "cells": [ { "cell_type": "markdown", "id": "e14673fa", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "# Supervised behaviors in DeepOF - using predefined behaviors" ] }, { "cell_type": "markdown", "id": "e3044fb9", "metadata": {}, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lucasmiranda42/deepof/blob/master/docs/source/tutorial_notebooks/deepof_supervised_tutorial.ipynb)" ] }, { "cell_type": "markdown", "id": "8a0170cc", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "##### What we'll cover:\n", " \n", "* Which behaviors are detected during supervised annotations\n", "* How are these behaviors defined\n", "* How do detected behaviors look in practise\n", "* What are the limitations of the supervised behaviors" ] }, { "cell_type": "code", "execution_count": 1, "id": "764990b0", "metadata": {}, "outputs": [], "source": [ "# # If using Google colab, uncomment and run this cell and the one below to set up the environment\n", "# # Note: because of how colab handles the installation of local packages, this cell will kill your runtime.\n", "# # This is not an error! Just continue with the cells below.\n", "# import os\n", "# !git clone -q https://github.com/mlfpm/deepof.git\n", "# !pip install -q -e deepof --progress-bar off\n", "# os.chdir(\"deepof\")\n", "# !curl --output tutorial_files.zip https://datashare.mpcdf.mpg.de/s/Hu1XjZkY9zml0mm/download\n", "# !unzip tutorial_files.zip" ] }, { "cell_type": "code", "execution_count": 2, "id": "50799c68", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# os.chdir(\"deepof\")\n", "# import os, warnings\n", "# warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "id": "6048415d", "metadata": {}, "source": [ "The main focus on this tutorial is on explaining the supervised behaviors. For this we will first use some functionality that is explained in more detail in the supervised tutorial to create a Gantt plot. Respectively, if you want to learn more about what deepof can do in terms of the visualization of these behaviors, you can have a look at the [supervised tutorial](https://deepof.readthedocs.io/en/latest/tutorial_notebooks/deepof_supervised_tutorial.html)." ] }, { "cell_type": "markdown", "id": "d3e0b481", "metadata": {}, "source": [ "### Behavior overview" ] }, { "cell_type": "markdown", "id": "f9cf150b", "metadata": {}, "source": [ "Anyways, as usual we will first import some packages:" ] }, { "cell_type": "code", "execution_count": 3, "id": "8cb5f99e", "metadata": {}, "outputs": [], "source": [ "import os\n", "import deepof.data\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "id": "b08fb761", "metadata": {}, "source": [ "Then load an existing project" ] }, { "cell_type": "code", "execution_count": 4, "id": "002a7158", "metadata": {}, "outputs": [], "source": [ "# Load a previously saved project\n", "my_deepof_project = deepof.data.load_project(\"./tutorial_files/tutorial_project\")" ] }, { "cell_type": "markdown", "id": "d6fa3a9c", "metadata": {}, "source": [ "Calculate the supervised annotations" ] }, { "cell_type": "code", "execution_count": 5, "id": "d9900dc7", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "data preprocessing : 100%|██████████| 4/4 [00:54<00:00, 13.67s/step, step=Loading kinematics]\n", "supervised annotations : 100%|██████████| 53/53 [01:29<00:00, 1.68s/table, step=post processing] \n" ] } ], "source": [ "supervised_annotation = my_deepof_project.supervised_annotation()" ] }, { "cell_type": "markdown", "id": "f06d7915", "metadata": {}, "source": [ "And create an initial Gantt plot as an overview for one of the videos (20191204_Day2_SI_JB08_Test_54) in this batch of supervised_annotations" ] }, { "cell_type": "code", "execution_count": 6, "id": "409b08ea", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9CbyN9f7//7925pltZouKpI6SiJQMDewilJT6VErJKclp5JzKVDRIKqfRiYomDZJkSKQ0kEKdJEfG4nAMiTaR/b8939//tX5rL2u41t5rr7329rjfbtfNXtf4vt7rWtfa++X1fl1p2dnZ2QYAAAAAAAAk0VHJPBgAAAAAAAAgBKUAAAAAAACQdASlAAAAAAAAkHQEpQAAAAAAAJB0BKUAAAAAAACQdASlAAAAAAAAkHQEpQAAAAAAAJB0BKUAAAAAAACQdASlAAAAAAAAkHQEpQAAAAAAAJB0BKUAAIVGtWrVbN26dfm2/19//dVuvPFGO/bYY+2EE06wli1b2syZMwPLFyxYYGXKlLFmzZoFpunTp8d9nAMHDtjw4cPdMU466SQ79dRTrXv37rZs2bI8tV/bv/baaznmDRs2zPbt2xf3vtLS0mzXrl15ak+kNvm1Zs0aa968ueufiRMnWmHw1Vdf2WWXXZaw/Y0fP9769OkTdlmDBg1ydc0k6r316DPwt7/9zQrCL7/8Yp06dbLGjRvbySefbJdccolt27YtsHz16tXWpk0bO/74493n+d///ndg2cCBA10fqj9C+3HWrFnWokULt8/WrVvb8uXLA8tGjRrljnfUUUfZtGnTcmx37bXXumOdcsopduaZZ9qSJUsCy37//Xfr3bu3NWzY0K3z5ptvHnY+K1eutLJly9qgQYNinrvarnboWNpnt27d7LPPPrO80L1C9yLvHM477zz7z3/+E3O7ESNG2F/+8he3je5rd955p+/rTff0ypUrH3Zeur82adLErrjiCtu7d29g+b/+9S9r1KiRHXfccXbDDTe4+6kcOnTIbrvtNjvxxBPd+9ahQ4eobb/vvvsC9/Hy5cvbMcccE3i9atUq80vn9uCDD/paV33RtGnTwHE++eSTw9YZOnRo2GsSAIqsbAAAComqVatmr127Nl/2fejQoew2bdpk33zzzdkHDhxw87755pvsOnXqZM+ZM8e9nj9/fvYpp5yS52NdeeWV2d26dcvesWNHYN7cuXOzX3vttTztd+LEiW6/wfRVv3Pnzrj3ldvtgqkfw7XJrwcffDC7X79+2ankzz//dFOyPPnkk9nXXHNN2GX169d312hBvLep0o9btmzJ/uSTTwKv77jjjhz91aFDB3cNytSpU7NbtGgRWPbxxx9nb9y48bB+1OcyPT09+7vvvnOvFy5cmH3SSScFln/55ZfZa9asyW7Xrl32O++8k6M97777buD+8d5777l9e4YPHx5o208//ZRdvXr17P/973+B5X/88Uf2WWedlX3FFVdk33rrrTHPPbTdb731VnalSpWyv/jii+zcysrKyn7//ffd/dC7/nSe0ahfW7dunf3777+71zr/ZcuW+b7edE9Xu8Odl66RCy64IHv8+PGBfqtdu3b25s2bXRu7du0aWKb34vTTT3f9KCNHjsy+9NJLfZ13uPfSr9D2RxOrL3RtZWZm5vqzDQCFEZlSAICUpQwM/U+5/tf7rrvuyrFMGRAXXnihy37QcmWUeJSd0LFjR5fpoCybqVOn5vgf+TvuuMNtoyylDz/80C2bN2+erV+/3saOHWvFixd38/Q/2f/4xz9s5MiRCTsntfudd96xF154wapUqRKYf+655wYybL799ls766yzXJaQ/tf//vvvz5H5pPW6du3qluk8d+zYYVu3bnX/8z9//nzX7v79+7tJ2rZt6+ZpnVDvv/++60NlOGidL7/8MrDsqaeestNPP91lEARnKqn/tI3WP/vss3NkFeh/+PU//VquLIbQNoXas2ePXXfddS7LQpMyyOSll16yxx57zN5++2237ffff39YPyoTRe1W5sE999wT6J/gLJPgTKNJkya5/rroootc36ntwZl3Y8aMceerfu/cubO7Hrx9KgNHGTlq46uvvmpdunQJbKe/NZVdp2waZdOpvaKMnfPPP9+1T9ebsmhiHeu3335z768yRXQN6FqIZsqUKXbaaae5TJlHHnnE1+cjN+/tAw88YAMGDMjxvqWnp7tzVL8qu8ajduizpfO+8sorXQZiuH7cvHmz26c+43ofdR7xZvXVrFnT9ZOnVatWgfdU17sy1/7v//7PvdaxN27cGMie0fllZGSEzdCrWrWqOwfv87Nhwwb7+uuv3Wv1m97vcHRtefcPZVj9/PPPdvDgQff69ddfD3wG1O/t27d394LgbKNLL73UZQHl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F5SaOXOme3KdzrNr1672zTffFHTTAAAAAAAAik5QqlSpUlarVi03NWvWzAYPHmwbN260bdu2Rd1OwZpVq1bZli1bAvM+/vhjt31wUGrt2rW2fv16t34syrCqXLmyy0xq0qSJlS9fPhA08xw6dMhGjBjhHquotqvNs2bNCiz/448/bMCAAVa7dm0rXbq01a9f30aPHh1YvmvXLrv++usDmVAKli1fvjywfNy4cXbXXXdZy5YtrVGjRjZq1Cj373vvvRdYp3379jZw4EC3Xnp6uuu7YcOG5TiXDRs2WLdu3dw56Di9evWy//73v4HlOqb6pEKFCm75aaedZl999VVg+aeffuqyy8qUKeMCfTre3r17Y/YhAAAAAABAoasptWfPHps8ebI1bNjQDeWL5swzz7QSJUq47Cj5/vvvLSsry/r27Wvbt293wSjRcgWHNAzOj99//93GjBljL7/8sstaUnDnjjvuCCx//PHH7dFHH3XraJhhp06d7KKLLrLVq1e75U888YRNnz7d3njjDRc0mzJlijVo0CCw/aWXXmpbt261Dz74wGVCNW/e3M455xzbsWNH2PYoCPbbb7+54FOwF1980cqVK2dffvmlPfzwwy5QNnfu3MA2CkhpnwrUaf5PP/1kl112WWD7K6+80gXWlixZ4tqhYJ76U9asWeOCcZdccok7x9dff90FqRRsAwAAAAAASJTiVoBmzJjhsnlEmTjKMNK8o46KHitTQOb00093WVG9e/d2/5511lkue6lNmzbu9THHHOP+VUBK8/04cOCAq0113HHHudcKxCjg41Ew6u6777bLL7/cvX7ooYdc4EsZTv/85z9dEEuZTWqL6lspU8qjwM7ixYtdUMprj/Y3bdo0e/PNN61fv36HtUfLFaxTplOwk08+2YYOHep+1vHGjx/vhj9q6J/+/fbbb11gTllO8tJLL9lJJ53kglDKwlI777zzTjvhhBMC+/Aos0tBq0GDBgWWKdjWrl07e/rpp12QDwAAAAAAoFBnSmkI2bJly9ykgI0yjzIzM92Qu1g0jM0bqqd/9VoUPAme72fonqds2bKBgJQoSKYgkuzevdt++eUXl6UVTK9XrlwZKKquc2ncuLEb8jZnzpwcQ+YUYFIWmAJx3qTgkbKTQr3yyis2fPhwl3VVo0aNw4JSwYLbqbYoGOUFpOTEE090QxO9dt52221uGOG5555rDz74YI7jq50ayhjcRr0vysDyMtBC7d+/3/VP8AQAAAAAAJCyQSllPGm4niZl8EyYMMFlTD3//PMxt1Ww6ccff7Sff/7ZBZ8UjAoOSinQovpU8RQ594aweZTtlJ2d7Xt7DcdT4GbkyJFuOKEynHr27OmWKSCl4JEXhPMmDfNT1lKw1157zQWNFJBS4MhPOxU08ks1qP7973/bhRdeaB999JELWr3zzjuBdt5444052qhAlYYoBgfsgim7qlKlSjkmAAAAAACAlB2+F0rBFQ3dU0AnFg3TK1mypD311FO2b98+V6xbFNxSofQXXnghMMwvEVQQvE6dOrZo0aJAAEz0OvgYWk/1mzQpIKX6TKrvpICVCrPrCYPBdaZCvfrqq3bddde5wJSCRvFSkXYF4zR52VKquaUi6wo+eY4//ng3/e1vf3NDICdOnGg9evRw7dT6ChT6NWTIEJd9FYzAFAAAAAAASNmglIZ9eU/Q27lzp6uNpEydrl27xtxWT4Zr3bq1Pfnkk24IXbFixdx8BaqC54dmFeWFMppUy0kZQ3ryngI5yiRSQXMZO3asy4Y69dRTXXBt6tSp7ul4GjqnjCfVt+revbsrTq6AkIYDvv/++y4Y1KJFCzdk75prrnEF1Vu1ahXoG52r3yCPjtO0aVNXF0q1rg4ePGg33XSTC6TpGAr46TwUMFPdrU2bNrlaUypsLqqZpf5TPS1laymwpyCVCqbr/QlHNbL81u0CAAAAAAAo8KDUrFmzXBBHKlSo4ApvK5Dj1YfyM4RPT8kLXV8BGBUgj6eelB+qE/Xrr7/a7bff7mo4KfNIT9vzCoXrHBRw0lA3BcmUtTVz5sxA4Xb9/I9//MOuvfZal82lgNXZZ59tNWvWdMufe+45F0S6+eab3eRRoEp1nvxmm7377rt2yy23uH3r2MrWUpBO1C49ofDqq6+2//73v1atWjW7+OKLXf0qr16VntqndrZt29YNX1QQLvjpfQAAAAAAAHmVlh1P0STA74WVlmZLly51wwELizL1fw78nLW+rnvt/evNw//XV4nqj6LUv7npl0T2ZV4lqy3hjuN3XkFKZnuC70cSfFw/7Ui1vkNiv5/iWT+conJtJOM657NE/yRDUfpdqLDhM37kKOy/p+dWRkaGGx2Vygq00DkAAAAAAACOTCkZlBo1apSVL18+7JSZmZmrfWq7SPvU8QAAAAAAAHCEPn3P079/f+vVq1fYZSr6nRsTJkyI+FS/9PT0XO0TAAAAAAAARSgopSBRogNFdesW7rGgAAAAAAAARUlKDt8DAAAAAABA0UZQCgAAAAAAAElHUAoAAAAAAABJR1AKAAAAAAAASUdQCgAAAAAAAEmXlp2dnZ38w6KoS0tLs7Zt21rlypULuikACqFfFnzh/q3TvnVBNwUAAAAolObOnWtZWVmWyghKIX8urLQ0W7p0qTVv3pweBhC3qad0dv9eunwWvQcAAADkQkZGhm3atMlSGcP3AAAAAAAAkHQEpQAAAAAAAJB0BKUAAAAAAACQdASlAAAAAAAAkHQEpXxYsGCBK9y9a9euiOtMmjQp7ifNaZ/Tpk2z/NK+fXsbNGhQ1HUaNGhg48aNy7c2AAAAAAAApFRQqk+fPi4o401Vq1a1zp0724oVK2Ju27p1a+vfv3+Oec8884zbj4JDocdp27Ztntrapk0b27x5s1WqVMkKk7fffttGjhxZ0M0AAAAAAABIrUwpBaEU7NE0b948K168uHXp0iXmdh06dHDZS8Hmz59v9erVO2y+Xnfs2DFP7SxZsqTVqlXLBb0Kk/T0dKtQoUJBNwMAAAAAACC1glKlSpVywR5NzZo1s8GDB9vGjRtt27ZtMYNSq1atsi1btgTmffzxx2774KDU2rVrbf369W79WLRe165drUqVKlauXDk76aSTbObMmRGH7ykj6+ijj7ayZctajx49bPv27Yft891337XmzZtb6dKl7dhjj7Xhw4fbwYMHc6yjgFxmZqaVKVPGrfPmm28GlimYNmDAgBzrq28UJFMQT5566ilr1KiRO0bNmjWtZ8+eEYfvbd261Z2jjnXMMcfYlClTDmuzzvH666+36tWrW8WKFV0bli9fHrP/AAAAAAAACmVNqT179tjkyZOtYcOGbihfNGeeeaaVKFHCZUfJ999/b1lZWda3b18XHFIwSrRcwZozzjgj5vFvvvlm279/vy1cuNC+/fZbe+ihh6x8+fJh1/3yyy/dsRQwWrZsmQt63X///TnW+eSTT+zqq6+2W2+91bXv2WefdYGsBx54IMd69957r11yySUu8HPllVfa5ZdfbitXrnTLFBx65ZVXXLs86qO6deu6YNFXX31lAwcOtBEjRrgg3axZs+zss8+OeI4ayqign/pFwS8FtBSoCnbppZe6eR988IEtXbrUBdXOOecc27FjR8w+BAAAAAAAKBRBqRkzZrjAjyYNM5s+fbq9/vrrdtRR0ZulTKbTTz89kBWlf8866yyXeaX6T8HzFZDS/Fg2bNjggl1NmzZ1GUsaRhgpwPP444+7oYd33XWXHX/88S4w1KlTpxzrKCtKmVvXXHON2995553n6jspOBUaBFLwSfvR8hYtWtiTTz7pll188cWBjCuPAltePS61WX2httavX99OPfVU15ZwfvzxRxdoev75511NrtNOO83+9a9/uWCe59NPP7XFixfb1KlTXTuUgTVmzBhXwD04gwsAAAAAAKBQB6WUYaRMI00Khiiwo6FsGkoXi4amBQef9FratWuXY76foXuiYI6ynRSYGjp0aNSC68pkatWqVY55odlYynxSBpMXdNN0ww03uOF6v//+e8Tt9NrLlFKW11VXXWUvvPCCe/3111/bd99954JSokCXglEKemk9DccL3ndom1WzS8EozwknnJDjiYFqszLWlKkW3G5lnq1ZsyZifyiTa/fu3TkmAAAAAACAlA1KKctHw/U0tWzZ0iZMmGB79+512TyxKNik7J+ff/7ZBZ8UjAoOSimIoqFqfoucK1vpp59+csEdDd8LzljKDQV3lC3lBd00ab+rV692wSa/1K65c+fapk2bbOLEie58FIgSZZcpUPXqq69a7dq17b777rNTTjklR+2reNus/QS3WZOGBt55550Rtxs9erR7MmHwBAAAAAAAUChqSomGpGnoXvCQskg0TE8Fv1UXad++fYEMIAW3VAxc2UXeMD+/9PS+/v3729tvv2233357xOBYkyZNXF2pYF988UWO16rFpGCOF3QLnoKHJ4Zup9fav0fDCRUgU1tUX+q6667Lsb6yn84991x7+OGHXXbXunXr7KOPPjqszcqKUpF11YnyqH3BASy1WcXjtc/QNlerVi1ivw0ZMsR+/fXXHBMAAAAAAEA0xa0AadiX9wS9nTt32vjx4122jp4QF4ueIKfaSMpm0pC7YsWKufkKVAXPV0F0P/SUOg0dVG0ntUXFwIODQ6FD/bRv1Vvq1q2bzZ492xUZD6asJdV60hP69EQ8BaI0PE7D74KLonv1m1QTS8PvNIxRtZ5Cs6VUVF1BNj3pL7gml7K7VPtKTw3U0wIPHTpkjRs3PqzNmqc6WDfeeKM9/fTTLvCkc1Y/ehTc0vDB7t27uyCX+uKXX36x999/3x1X7QxHNbv81O0CAAAAAABIiUwpBXI0XEyTajQtWbLEBWm8+lB+hvD99ttvh62vIXya77eelPz555/uCXwKRCl4o4CMsrDCUdBLmUsqeK7hcnPmzLF77rknxzqqj6WgkZYpe0vbPPbYY4Ghdx4N8Xvttdfs5JNPtpdeeskNxTvxxBNzrNO7d28XRNK/wUP/VA9KWV0a0qd2P/PMM277k046KWy7NfyvTp06rn9URL1fv35Wo0aNHJlqCmwpyHXttde6PtDTAFXjq2bNmr77EgAAAAAAIJa07Ozs7JhroUBpSN5xxx3ngnYaYlcYKMCloYKFpb0AUsvUUzq7fy9dnjMLFQAAAIA/GRkZrj51KivQ4XuI7sCBA7Z9+3aXhaVMKwI8AAAAAACgqEipQueeUaNGWfny5cNOqvuUG9ou0j51vFS0aNEiN7RRGVIamgcAAAAAAFBUpGSmlJ6A16tXr7DLggtzx2PChAkRn+qXnp5uqUi1shhdCQAAAAAAiqKUDEopSJToQFHdunUTuj8AAAAAAAAUseF7AAAAAAAAKNoISgEAAAAAACDpCEoBAAAAAAAg6QhKAQAAAAAAIOnSsnm8G/LjwkpLs7Zt21rlypXp30Joz7wvrPw5rVPumFrH461bEG0FACAvitp3l/f9XJTOqaAUtWvjSO5z3svE9VWi+jK3+ynM7+XcuXMtKyvLUhlBKeTPhZWWZkuXLrXmzZvTw4XQyuM6WZM1s1PumFrH461bEG0FACAvitp3l/f9XJTOqaAUtWvjSO5z3svE9VWi+jK3+ynM72VGRoZt2rTJUhnD9wAAAAAAAJB0BKUAAAAAAACQdASlAAAAAAAAkHQEpQAAAAAAAJB0BKXitGDBAlfEe9euXRHXmTRpUko8da5BgwY2bty4qOvoXKZNm5a0NgEAAAAAAKRMUKpPnz4uOOJNVatWtc6dO9uKFStibtu6dWvr379/jnnPPPOM24+CQ6HHadu2bZ7a2qZNG9u8ebNVqlTJUt2SJUusX79+Bd0MAAAAAACA1AxKiYJQCvZomjdvnhUvXty6dOkSc7sOHTq47KVg8+fPt3r16h02X687duyYp3aWLFnSatWq5YJe+enAgQN53kf16tWtbNmyCWkPAAAAAABAkQxKlSpVygV7NDVr1swGDx5sGzdutG3btsUMSq1atcq2bNkSmPfxxx+77YODUmvXrrX169e79WPRel27drUqVapYuXLl7KSTTrKZM2dGHL6njKyjjz7aBYB69Ohh27dvP2yf7777rjVv3txKly5txx57rA0fPtwOHjwYWK59Pv3003bRRRe5Yz7wwAMxt8vOzrZhw4a5Y6v/6tSpYwMHDow4fG/16tV29tlnu32deOKJNnfu3MPaqT7v1auXG36Ynp5u3bp1s3Xr1sXsMwAAAAAAgEIZlAq2Z88emzx5sjVs2NAN5YvmzDPPtBIlSrjsKPn+++8tKyvL+vbt64JDCkaJlisYc8YZZ8Q8/s0332z79++3hQsX2rfffmsPPfSQlS9fPuy6X375pTvWgAEDbNmyZS7odf/99+dY55NPPrGrr77abr31Vte+Z5991gWyvMCTRwEmBbV0zOuuuy7mdm+99ZY99thjbr4CTqoN1bRp07DtPHTokF188cUu00tt1hDHu++++7DsrE6dOlmFChXcsRctWuTOW1lsf/zxR8x+AwAAAAAA8Ku4pYgZM2YEAj979+612rVru3lHHRU9bqasotNPP91lMPXu3dv9e9ZZZ7nMIdV/0utjjjnG/auAlObHsmHDBrvkkksCAR5lKEXy+OOPu6DNXXfd5V4ff/zx9tlnn9msWbMC6yi7SZlb11xzTWB/I0eOdNsMHTo0sN4VV1xh1157beC1AlPRtlM7lVl27rnnusCcMqbUF+F8+OGH9sMPP9js2bNdRpWMGjXKMjMzA+u8/vrrLng1YcKEwPDEiRMnuqwp9d/5558fs+8AAAAAAAAKVaaUMoyUaaRp8eLFLmNHARMNpYulffv2gaF6+levpV27djnm+xm6JxoCp2wnZWEp+BOt4PrKlSutVatWOeaFZmMtX77cRowY4YJu3nTDDTe4+lm///57YL0WLVrEtd2ll17qssIUrNL8d955J8eQwNB2qs6WF5CK1M7//Oc/LlPKO56G8O3bt8/WrFkTsQ+UVbZ79+4cEwAAAAAAQKEISinjScP1NLVs2dJl6yhj6vnnn4+5rYJNP/74o/38888u+KRgVHBQSgEV1UryW+T8+uuvt59++smuuuoqN5ROwaInn3wyT8MRlS3lBd00ab8acqchhcF9EM92CjKpntZTTz1lZcqUsZtuusnVjMptkXQd77TT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8P1OmjQppZ+QBwAAAAAAiqakBqWeeeYZq1Chgh08eDAwb8+ePVaiRAkXdAm2YMEC9wS3NWvWRN1ngwYN3HqaihUrZnXq1LG+ffvazp07rbB4++237bzzzrPq1atbxYoV7YwzzrDZs2cXdLMAAAAAAACKRlCqQ4cOLgj11VdfBeZ98sknVqtWLfvyyy9t3759gfnz58+3o48+2o477riY+x0xYoRt3rzZNmzYYFOmTLGFCxfawIEDrbBQexWUmjlzpi1dutT1U9euXe2bb74p6KYBAAAAAAAU/qBU48aNrXbt2i4LyqOfu3XrZsccc4x98cUXOeYrOOOHsq8U2Kpbt67b5pprrrGvv/46ruFrykxq0qSJlS9f3jp37uyCXJ5Dhw65wFdGRoaVKlXKmjVrZrNmzQos/+OPP2zAgAHu3EqXLm3169e30aNHB5bv2rXLrr/++kAmVMeOHW358uWB5ePGjbO77rrLWrZsaY0aNbJRo0a5f997770cbVWGmY5TqVIlq1atmt17772WnZ0dWK7ssKuvvtqqVKliZcuWtczMTFu9evVh56tgn5b36NHDtm/fHli2bt06O+qoo3IEDb326ZzUDwAAAAAAAIWyppSCRsqC8uhnDd1r165dYH5WVpbLnPIblAr2888/u2BOq1atfG/z+++/25gxY+zll192WUvKuLrjjjsCyx9//HF79NFH3TorVqywTp062UUXXRQI+DzxxBM2ffp0e+ONN2zVqlUuW0vDCj2XXnqpbd261T744AOXCdW8eXM755xzbMeOHWHbo+DPb7/9Zunp6Tnmv/jii1a8eHFbvHixa9PYsWNtwoQJgeV9+vRxASW15fPPP3cBqwsuuMAOHDjglqtPNbRRga1ly5a5/r3//vsD26vN5557rk2cODHHcfVa+1bACgAAAAAAoNAGpRYtWuSyfhR40RA1BaTOPvvsQAaVAir79+/3HZS6++67XYZTmTJlXDaT6kspYOOXgjaqd9WiRQsXMFLQZt68eYHlCkbpGJdffrnL9nrooYdctpQyiERBLGU2nXXWWS6jSP/27t3bLfv0009dEGnq1Klu/1pP+1N21ptvvhm2PVquYY69evXKMb9evXr22GOPuTZceeWVdsstt7jXogCZglEKUrVt29ZOOeUUFxxTkG7atGluHQWylAWmrKzjjz/eDXFUgC2YMrpeffVV1/+ijLNvv/3Wrr32Wt/9CQAAAAAAkHJBKWVF7d2715YsWeLqSSk4omFtCkx5daUUnDr22GPdMDM/7rzzTpf5oywmL5h04YUX2p9//ulrew1lC65dpWF4ymyS3bt32y+//GJnnnlmjm30euXKle5nZRHp+AoWKdAzZ86cwHoapqcAU9WqVV3gzJvWrl0btoj7K6+8YsOHD3dZVzVq1MixrHXr1i7g5lFBdAWjdJ5qi7KogjPEdEy1yWun/g3NINM+gnXv3t0VjH/nnXcCw/0UHAzO/AqlAJb6KXgCAAAAAACIprglWcOGDV02k4bqqQaSglGip+YpE+izzz5zy1R3yS/VV9J+RZlIymBSsEX70XC0WPT0v2AK/ATXaopF2VUKMml43ocffugynHRcZUIpIBVaR8ujbKlgr732mstUUlaVn3bnh5IlS7q6VBqyd/HFF7sgmTKsolH9LAXSAAAAAAAA/CqQIkHKvFGQRpMypzwawqfAjoa75aaelEeZPl5tqrxSYXIFzDTkMJhen3jiiTnWu+yyy+z555+3119/3d566y1XM0oBqy1btrgsJgXOgicF0zwaMqchcvpXWV7hKJMsmArDKwin81WRdg2JDF5HRcxV48prp9YJt49QCowpuPbUU0+5fSo4Fc2QIUPs119/zTEBAAAAAACkVKaUKOB08803u1pOXqaU6GfVc9LT7OIJSqk2lQI/ym7auHGjq5mkIYFt2rRJSHs1PHDo0KFuiJ9qSSmLSMP1VLNJVL9K2VCnnnqqKwauTCc9DVCZUMp4UtaWhsU9/PDDbriihgO+//777ul3qjOlbCQ9MVAZSRpep3MR1cjSk/Y8ql1122232Y033uhqPT355JOuALsoOKWnGN5www327LPPuicSDh482D2RUPNFQws17FA1qzRPTxwMfoqgR8ErDRVUHa3rrrvOtSMaPZFQEwAAAAAAQMpnSimLSdlCNWvWzBGUUoBJdZAU5PHrvvvuc+sro6lLly5Wrlw5V9dJNZUSQcEcBYNuv/12a9q0qQvkqKi4AkGiAJACTgowtWzZ0tatW2czZ850ASoNBdTPygJTJpSCUiqYvn79+sC5P/fccy4jSYE6nYc33XrrrTnaoWF16rfTTz/dravl/fr1CyxXsOy0005zfaBAmIJ0OrY3PFGBJmVyKfilQujqo3vuuSfsOespfQoOKigFAAAAAABQJDKlVDQ7XM0mPbkunlpOogBQXqhIuaZgymoKboeCS8qU0hSOspM0RaKg1RNPPOGmcMLVm4q2ztNPPx12nSpVqthLL70UdT8KMoUGmhRsC6Wn9ikApyAbAAAAAABAkciUQupSYfbvvvvOxo8fb7fccktBNwcAAAAAABRRKR2UUs2m8uXLh51OOukkX/vIzMyMuI9Ro0bl+zkUNqrppSGAKkDP0D0AAAAAAFCkhu/5ddFFF7nC3+F4dZJimTBhQsSn8KWnp+epfUXRpEmT3AQAAAAAAHDEBqVUi0lTXujpcwAAAAAAAEgtKT18DwAAAAAAAEUTQSkAAAAAAAAkHUEpAAAAAAAAJB1BKQAAAAAAACQdQSkAAAAAAAAkXVp2dnZ28g+Loi4tLc3atm1rlStXjnvbHZs+DPycnnFu4HWkn2PRusH79V7nFx0nt8cId07B7Q/3c7RjRmuLtyy0vxNxHvklXFtD39dIfRjuuop2ftHei3DHTYR439f8eo8K+r3PzfWcTPnZjlQ5x6Ii9L4p+fnZCXf8SEKPH0+bwt0rwu2zIIR+t6RCm1JRoq5B+jlxfZrb7cN9J0f73STRnwm+Nwpefv4+VpD30Uh/g+W2bXk5n4K+zpP5e0N6go8zd+5cy8rKslRGUAr5c2GlpdnSpUutefPmcW+7aHL9wM9n/t/6wOtIP8eidYP3673OLzpObo8R7pyC2x/u52jHjNYWb1lofyfiPPJLuLaGvq+R+jDcdRXt/KK9F+GOmwjxvq/59R4V9Hufm+s5mfKzHalyjkVF6H1T8vOzE+74kYQeP542hbtXhNtnQQj9bkmFNqWiRF2D9HPi+jS324f7To72u0miPxN8bxS8/Px9rCDvo5H+Bstt2/JyPgV9nSfz94YzE3ycjIwM27Rpk6Uyhu8BAAAAAAAg6QhKAQAAAAAAIOkISgEAAAAAACDpCEoBAAAAAAAg6QhK5cG0adOsYcOGVqxYMRs0aJCvbRo0aGDjxo3LURBc+8kPCxYscPvftWtXvuwfAAAAAACgyAel+vTp4wIs3lS1alXr3LmzrVixIua2rVu3tv79++eY98wzz7j9TJo06bDjtG3b1lebbrzxRuvZs6dt3LjRRo4caammTZs2tnnzZqtUqVJBNwUAAAAAAKBwBqVEQSgFWTTNmzfPihcvbl26dIm5XYcOHVzWULD58+dbvXr1Dpuv1x07doy5zz179tjWrVutU6dOVqdOHatQoYKlmpIlS1qtWrVc8A0AAAAAACCVFKqgVKlSpVyQRVOzZs1s8ODBLktp27ZtMYNSq1atsi1btgTmffzxx2774KDU2rVrbf369W79aLSNF4RSAEtBH28/b731lp100kmurRqq9+ijj8Z1jt9++63bZ5kyZVw2WL9+/VwATL777js76qijAue7Y8cO9/ryyy8PbH///ffbWWedFXb4nrLCKleubLNnz7YmTZpY+fLlA4E+z8GDB23gwIFuPR3/7rvvtmuuuca6d+8e13kAAAAAAAAUmaBUMAVqJk+e7Go6KXgSzZlnnmklSpRw2VHy/fffW1ZWlvXt29e2b9/uglGi5aVLl7Yzzjgj5rA4Bbm8IJSCOpq3dOlS69WrlwsSKbg0bNgwu/feew8bIhjJ3r17XeZVlSpVbMmSJTZ16lT78MMPbcCAAW65gl06VwXU5JNPPsnxWvRz+/btIx7j999/tzFjxtjLL79sCxcutA0bNtgdd9wRWP7QQw/ZlClTbOLEibZo0SLbvXt3vtW8AgAAAAAAR65CFZSaMWOGy+7RpEyl6dOn2+uvv+6yhaIpV66cnX766YFsJv2rbCJlMymYFDxfASnNjzUsrkaNGu7n9PR0l7mleWPHjrVzzjnHBaKOP/54V59KAaVHHnnE1/m98sortm/fPnvppZfsL3/5i8uYGj9+vAsg/fe//3VZT2effXaO9l577bW2f/9+++GHH+zAgQP22WefWbt27SIeQ+uonlaLFi2sefPmrn0aCul58sknbciQIdajRw874YQT3PGVNQUAAAAAAHDEBqU0rG7ZsmVuWrx4scsqyszMdEPuYlH2UHAwx8smUgAneH6soXvRrFy50mVlBdPr1atX259//ulr+1NOOcUF0YK3P3ToUCAzK7i9yopS4MoLVCm7SkGn0DYEK1u2rB133HGB17Vr13a1seTXX391wS8F8Dx6suBpp50Wtd0KiimjKngCAAAAAAAoMkEpBWs0XE9Ty5YtbcKECW7I2/PPPx9zWwWbfvzxR/v5559dAMfLJvKCPGvWrHH1qfwUOS9ICqZp+KECXfpXGV9ewE1BKmVAKfAUiYYxBlP2VXZ2dp7aNHr0aPeEv+AJAAAAAACgyASlQimgoqF7qg8Vi4bpaYjdU0895YbIedk/Cm6pcPgLL7wQGOaXWyoerjpMwfRaQ/mUceRn++XLl7tAW/D2OsfGjRu7102bNnU1p1TQXMXeNZRRQSkFpIIzwHJDwaSaNWu6jCuPMry+/vrrqNtpuJ+yrIInAAAAAACAIhOU0jAxPUFPk4a63XLLLa7gedeuXWNuq6fZtW7d2tVM0vA2L0ikQFXw/NBMonjcfvvtrj7TyJEjXVbWiy++6GoyBRcSj+bKK690hdb1tDs9aU+F13WOV111lQsWiVdXSsXIvQDUySef7PpGx45WT8oPHU+ZT++++64bMnjrrbfazp073XEjUQ2uihUr5pgAAAAAAACKTFBq1qxZrgaSplatWgWeUOc3O0hD+H777bfD1lcgR/PzUk9KVDj8jTfesNdee80VKr/vvvtsxIgRruC5Hxp2N3v2bNuxY4fL4OrZs6crnK7AVmh7lcHknYcyqRSoUuAoWj0pP+6++27r3bu3XX311a7ouzKxVLtLwTIAAAAAAIBEKW6FxKRJk9yUF8OGDXNTqKFDh7opHnoiXbhaTJdccombIlm3bl2O16H70PC8jz76KOqxBw0a5KZg06ZNO2w9Ba2C96/gWGiArHv37jnWKV68uMsa0yQqsq5hhb169YraJgAAAAAAgCIZlEJy6EmGc+bMcdlYGhKoLK21a9faFVdcwVsAAAAAAACOzOF7kYwaNcoNMws3ZWZm5mqf2i7SPnW8okpDAZWRpuGDGgr47bff2ocffuiypQAAAAAAABKlSGRK9e/fP+LwMhU4z40JEyZEfKpfenq6FVX16tU77AmCAAAAAAAAiVYkglIKEiU6UFS3bt2E7g8AAAAAAABFbPgeAAAAAAAACheCUgAAAAAAAEg6glIAAAAAAABIOoJSAAAAAAAASLq07Ozs7OQfFkVdWlqatW3b1ipXrlzQTUE+ObjjAyuenpnwfQYL3X/w8kQfuyjLj/cqmW0Kt26kecFi7T8V+8Uvv2331gvtm2hC1492nGT2odemRB4v2nXk9UO44xX2e1Fe+jLez1myJONaTOQxCvP9J1mfz2RLlfck0n07FdqWSNHOL9HXU7Lf2+D3sKDeNz/fZaki9P0Od23E+3tjpO0i/T6UyH5Ktf6eO3euZWVlWSojKIX8ubDS0mzp0qXWvHlzeriI2r2oslU8c1fC9xksdP/ByxN97KIsP96rZLYp3LqR5gWLtf9U7Be//LbdWy+0b6IJXT/acZLZh16bEnm8aNeR1w/hjlfY70V56ct4P2fJkoxrMZHHKMz3n2R9PpMtVd6TSPftVGhbIkU7v0RfT8l+b4Pfw4J63/x8l6WK0Pc73LUR7++NkbaL9PtQIvsp1fo7IyPDNm3aZKmM4XsAAAAAAABIOoJSAAAAAAAASDqCUgAAAAAAAEg6glIAAAAAAABIOoJSeTBt2jRr2LChFStWzAYNGuRrmwYNGti4ceNyFATXfvLDggUL3P537UqdQmsAAAAAAACFJij1zDPPWIUKFezgwYOBeXv27LESJUpY+/btwwZi1qxZEzM4pPU0KahUp04d69u3r+3cudN3u2688Ubr2bOnbdy40UaOHGmppk2bNrZ582arVKlSQTcFAAAAAACg8AWlOnTo4IJQX331VWDeJ598YrVq1bIvv/zS9u3bF5g/f/58O/roo+24446Lud8RI0a4oM2GDRtsypQptnDhQhs4cKCvNqk9W7dutU6dOrmAloJmqaZkyZKujxR4AwAAAAAASCWFIijVuHFjq127tsuC8ujnbt262THHHGNffPFFjvkKYvmhQJKCNnXr1nXbXHPNNfb111/H3E7H8IJQHTt2dEEfr21vvfWWnXTSSVaqVCmXjfXoo4/Gda7ffvut22eZMmWsatWq1q9fPxcAk++++86OOuoo27Ztm3u9Y8cO9/ryyy8PbH///ffbWWedFXb43qRJk6xy5co2e/Zsa9KkiZUvX946d+7sAnMeZaMpMKf1dPy7777b9Uv37t3jOg8AAAAAAIBCH5QSBY2UBeXRzxq6165du8D8rKwslznlNygV7Oeff7b33nvPWrVq5WtY3KpVqwJBKAV1NG/p0qXWq1cvFyRScGnYsGF27733umCQH3v37nWZV1WqVLElS5bY1KlT7cMPP7QBAwa45Qp2KVD08ccfB7LFgl+Lfg4d0hjs999/tzFjxtjLL7/sMsOUJXbHHXcElj/00EMua2zixIm2aNEi2717d77VvAIAAAAAAEeuQhWUUpBEmTy//fabffPNNy4gdfbZZweylD7//HPbv3+/76CUsoCULaSspIyMDJdVNHbsWF/D4mrUqOF+Tk9Pd9lWmqdtzznnHBeIOv74461Pnz4uoPTII4/4as8rr7zihiK+9NJL9pe//MVlTI0fP94FkP773/+69gWfr/699tpr3Tn/8MMPduDAAfvss89cv0SidVSjq0WLFta8eXPXvnnz5gWWP/nkkzZkyBDr0aOHnXDCCe74ypoCAAAAAAA4IoNSyv5RJpEyiJQhpKBP9erVXQDGqyulIM2xxx7rakr5ceedd9qyZctsxYoVgcDMhRdeaH/++Weu2rhy5Uo788wzc8zT69WrV/vap7Y/5ZRTrFy5cjm2P3ToUCAzS+frBaWUFaXAlReoUt8o6BTahmBly5bNUW9LwyJVG0t+/fVXF/w6/fTTA8tVBP60006L2m4FxZRRFTwBAAAAAAAUiaBUw4YNXTaThupp8rKBVGS8Xr16LkNI8xWk8atatWpuv40aNXLbjRs3LrCfVA7Off/99y7QpX9VP0rzFJRSkEoZUAo8RaInFgZT9lV2dnae2jR69Gj3hL/gCQAAAAAAoEgEpUTD8hR80RRcN0mZQh988IEtXrw4V/WkgrOCvNpUuaHi4RpiGEyvldXl7TvW9suXL3cZYcHbq5i5ir1L06ZNXc0pFTRv1qyZG36ovlBAKrRf4qVgUs2aNV3GlUcZXrGKv2u4n7KsgicAAAAAAIAiFZT69NNP3ZC74LpJ+vnZZ5+1P/74I66glGpTbdmyxRUqV0BLw/k0JFBFy3Pj9ttvd8MAR44caT/++KO9+OKLriZTcCHxaK688korXbq0e9qdnrSnjK1bbrnFrrrqKhcsEq+ulIqRewGok08+2Q2h07Gj1ZPyQ8dT5tO7777rhgzeeuuttnPnTnfcSPSkwYoVK+aYAAAAAAAAilRQSllMGnLnBWlEgRgFmJRNpBpJft13331ufQ0B7NKli6vlNGfOHPdEu9xQ4fA33njDXnvtNVeoXPsfMWKEK3juh4bdzZ4923bs2GEtW7a0nj17usLpCmwF0/kqg8kLSimTSoEqBY6i1ZPyW/y9d+/edvXVV9sZZ5zhMrH0REAFywAAAAAAABKluBUiDRo0CFv/qH79+nHXRVq3bl2e2qIn0oU75iWXXOImv8cN3YeG53300UdRjz1o0CA3BZs2bdph6yloFbx/BcdCA2Tdu3fPsU7x4sXdE/g0iYqsa1hhr169orYJAAAAAACgyAalkP/Wr1/vssWUjaUhgcrSWrt2rV1xxRV0PwAAAAAAODKH7/mleksadhZuOumkk3ztIzMzM+I+Ro0aZUWVhgJOmjTJDR/UUMBvv/3WPvzwQ5ctBQAAAAAAkChFMlPqoosuslatWoVdVqJECV/7mDBhQsSn8KWnp1tRVa9evcOeIAgAAAAAAJBoRTIoVaFCBTflRd26dRPWHgAAAAAAABwBw/cAAAAAAACQ2ghKAQAAAAAAIOkISgEAAAAAACDpCEoBAAAAAAAg6dKys7Ozk39YFHVpaWnWtm1bq1y5ckE3BQAAFGIfrvxv4Odzm9Qs0LYAAFCYzJ0717KysiyVEZRC/lxYaWm2dOlSa968OT0MAAByrcHg9wM/r3vwQnoSAACfMjIybNOmTZbKGL4HAAAAAACApCMoBQAAAAAAgKQjKAUAAAAAAICkIygFAAAAAACApCMoZWbDhg2zZs2aBTqlT58+1r179zx17IIFC1yx7127duX9XQIAAAAAAChiCk1QSoEiBXm8qWrVqta5c2dbsWJFwo/1+OOP26RJkxK+XwAAAAAAABSyoJQoCLV582Y3zZs3z4oXL25dunRJ+HEqVapklStXtsLijz/+KOgmAAAAAAAAFN2gVKlSpaxWrVpu0nC7wYMH28aNG23btm0xt920aZP17t3b0tPTrVy5ctaiRQv78ssvw64bOnyvffv2dsstt9igQYOsSpUqVrNmTXv++edt7969du2111qFChWsYcOG9sEHHxy2r0WLFtnJJ59spUuXttatW9t3330XtZ1r1qyxbt26uWOUL1/eWrZsaR9++GGOdRo0aGAjR460q6++2ipWrGj9+vVz8z/99FNr27atlSlTxurVq2cDBw50bQzebtSoUXbddde5Nh999NH23HPP5dj33Xffbccff7yVLVvWjj32WLv33nvtwIEDMfsXAAAAAACgyAalgu3Zs8cmT57sgkEayhdr3Xbt2tnPP/9s06dPt+XLl9tdd91lhw4d8n28F1980apVq2aLFy92Aaq//vWvdumll1qbNm3s66+/tvPPP9+uuuoq+/3333Nsd+edd9qjjz5qS5YsserVq1vXrl2jBnnU1gsuuMBlgn3zzTcuO0zbbNiwIcd6Y8aMsVNOOcWto8CRglla95JLLnFDGl9//XUXpBowYECO7dQWBeS03U033eTOY9WqVYHlClZp6OL333/vhjEq+PbYY4/57icAAAAAAAA/0rKzs7OtEFD2koJQyjgSZQDVrl3bZsyYYc2bN4+6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GTPGnacyyW6++WY7cOBAYJ2XX37ZWrRo4dqqPrziiitcIA0AAAAAACCRilxQKpgykyZPnuxqOCkAE80TTzzhgkxvvPGGrVq1yqZMmWINGjTIsc7w4cNd0EfDAS+44AK78sorbceOHWGH8mkf8tZbb7msrUjzQh06dMgyMjJs6tSp9v3339t9991nf//73127gikLTPubO3euzZgxwwWWlIGlYNInn3xiixYtsvLly7vMseBMqvnz59uaNWvcvy+++KJNmjTJTR7tR8MKly9f7upfKailYBYAAAAAAEAiFbciRgEaBWNk7969LiNI8446Knr8bcOGDS776ayzznJZTMqUCqXgTO/evd3Po0aNcoGsxYsXu8BP6FC+GjVquJ+VsaSMIwk3L1SJEiVc8MujjKnPP//cBaUUEPOUK1fOZW7pWKLgmwJamucNIZw4caLLmlJG1vnnn+/mValSxcaPH+8KrZ9wwgl24YUXugDXDTfc4JZfd911gWMce+yx7hxbtmzpAnxevwIAAAAAAORVkcuU6tChgy1btsxNChgpeygzM9PWr18fdTsFnLSNhsINHDjQ5syZc9g6J598co6gUMWKFfM0tE3tUqBH00knnRSY/89//tNOO+00q169ulv23HPPuaBZsKZNmwYCUqLMpv/85z8uU8rbp4Jf+/btc5lRHh1HASmPgnbB57B06VLr2rWrHX300W5f7dq1c/NDjx9s//79tnv37hwTAAAAAADAEZUppWCRhut5lDmkJ+I9//zzdv/990fcrnnz5rZ27Vr74IMP7MMPP3RZSeeee669+eabObKYgikjSdlJuaW2ZWVl5dj3a6+9ZnfccYc9+uijdsYZZ7jA0COPPGJffvnlYecZTJlMCmRp2GEoBbf8nIMyyxTE06T9aDsFo/Q6WjF11d4Kzu4CAAAAAAA44oJSoRR00dA9L/gTjTKfLrvsMjf17NnTDctTzShlHOWHunXrHjZPtaBUa+qmm24KzAvOdIoWVHv99dfdEEGdR2788MMPtn37dnvwwQetXr16bt5XX30Vc7shQ4bYbbfdlmOeAoEAAAAAAABHzPA9DSXbsmWLm1auXGm33HKLyyLSkLRoxo4da6+++qoLzPz444+u0LjqPqkmUzKprpUCQbNnz3btuPfee23JkiUxt1PR9WrVqrkn7qnQubK+VEtKQxE3bdrk69gasqchgU8++aT99NNPrvC7ip77eeKhAmHBEwAAAAAAwBEVlJo1a5ark6SpVatWLqCjAFP79u2jbqdhcg8//LC1aNHCFfbWU+dmzpwZs0B6ot1444128cUXu2wttV+ZS8FZU5GULVvWFi5c6AJL2r5JkybWt29fV1PKb5BIw/X0JD7114knnugypsaMGZOAswIAAAAAACjCw/cUUNGUG3r6nPcEunCys7MPm7dr167Azwp6Ba+jDKvQbcLNC5d1pKfmaQqt2+SJdI7K7HrxxRcj7jvcduPGjcvxWk8X9J4w6InVZgAAAAAAADvSM6UAAAAAAACQ+o6YoNSoUaOsfPnyYafMzMyCbh4AAAAAAMARpUgN34umf//+1qtXr7DLypQpk/T2AAAAAAAAHMmOmKBUenq6mwAAAAAAAFDwjpjhewAAAAAAAEgdBKUAAAAAAACQdASlAAAAAAAAkHQEpQAAAAAAAJB0adnZ2dnJPyyKurS0NGvbtq1VrlzZUtnaFf/L8fqYk6vl2zHyY9+Fgc6ffi0afY4jW6LvZeH2F3pPjud4R/q9tjCK5z0r6u9vpM9Dqp6vn7YFf54L6jzy47pJhWsxUhsK4ppJ5eu0qAv3nelJ1nuSCp+HVDmneLdLVt/NnTvXsrKyLJURlEL+XFhpabZ06VJr3rx5SvfwP/t/lOP1zc90zLdj5Me+CwOdP/1aNPocR7ZE38vC7S/0nhzP8Y70e21hFM97VtTf30ifh1Q9Xz9tC/48F9R55Md1kwrXYqQ2FMQ1k8rXaVEX7jvTk6z3JBU+D6lyTvFul6y+y8jIsE2bNlkqY/geAAAAAAAAko6gFAAAAAAAAJKOoBQAAAAAAACSjqAUAAAAAAAAko6g1P/funXrXHHuZcuWWSpq3769DRo0KOo6DRo0sHHjxgVe63ymTZtWKM4PAAAAAAAcWYpUUKpPnz4u8OJNVatWtc6dO9uKFStibluvXj3bvHmz/eUvf7HCasmSJdavXz9f57dgwQLXR7t27UpyKwEAAAAAAIpYUEoUhFLwRdO8efOsePHi1qVLl5jbFStWzGrVquXWL6yqV69uZcuWLbLnBwAAAAAAio4iF5QqVaqUC75oatasmQ0ePNg2btxo27Zti7pd6PA2L5No9uzZduqpp1qZMmWsY8eOtnXrVvvggw+sSZMmVrFiRbviiivs999/zzHM7pZbbnFD7apUqWI1a9a0559/3vbu3WvXXnutVahQwRo2bOj2Eezjjz+2008/3bW/du3art0HDx7MsY5eDxgwwCpVqmTVqlWze++917KzsyMO34t0fvq5Q4cObr7aqPnKMnvppZdcdtn+/ftzbNu9e3e76qqrfL8HAAAAAAAAR1xQKtiePXts8uTJLgikYEtuDBs2zMaPH2+fffaZC2716tXLBX5eeeUVe//9923OnDn25JNP5tjmxRdfdEGjxYsXuwDVX//6V7v00kutTZs29vXXX9v555/vgjxeMOvnn3+2Cy64wFq2bGnLly+3p59+2v71r3/Z/ffff9h+lemk/T7++OM2duxYmzBhQtznpKF8b731lvt51apVLqtM+1Mb//zzT5s+fXpgXQXhdJ7XXXddrvoPAAAAAADgiAhKzZgxw8qXL+8mZSUpwPL666/bUUfl7lQVGDrzzDNdtlTfvn1dRpOCRnrdtm1b69mzp82fPz/HNqeccordc8891qhRIxsyZIiVLl3aBaluuOEGN+++++6z7du3B2pdPfXUUy5QpODXCSec4DKThg8fbo8++qgdOnQosF+t89hjj1njxo3tyiuvdAEvvY6XhvKlp6e7n2vUqOGyypR9pWwwZX5NnDgxsK6CekcffbTLAAMAAAAAAEiUIheU0rA0DVHTpIyiTp06WWZmpq1fvz5X+zv55JMDP2sonmo2HXvssTnmKZso0jYKAClLq2nTpjm2EW+7lStX2hlnnOGG0XkUCFOm16ZNmwLzWrdunWMdbbN69WqX3ZQoCpwp+0vZWzJp0qRAAflINNxv9+7dOSYAAAAAAIAjKihVrlw5N1xPk4bDaXib6jmprlNulChRIvCzAjPBr715wdlModuE284L8IRulwqUAaZML9WXWrp0qf373/92QaloRo8e7TKtgicAAAAAAIAjKigVSgEgDd3LysqyVKWi6Z9//nmOouWLFi1yww8zMjIC87788ssc233xxRduOKCyseJVsmRJ92+4LKvrr7/eZUhpGN+5557rhg1GoyGKv/76a44JAAAAAADgiApKaSjZli1b3KRhcaq7pGFwXbt2tVR10003uSLqausPP/xg7777rg0dOtRuu+22HLWwNmzY4OapOPmrr77qCqzfeuutuTpm/fr1XcBONbj0ZEL1kUd1pTRsUNllfgqc64mBehJh8AQAAAAAAHBEBaVmzZpltWvXdlOrVq1syZIlNnXq1JQu1F23bl2bOXOmq4GloXP9+/d3RdVVLD3Y1Vdf7TK+Tj/9dLv55ptdQKpfv365PqaKqQ8ePNjVuBowYEBgmYbfXXLJJa5YvIquAwAAAAAAJFpxK0I05ExTbjRo0CDH8DkFsYJfi2orhdZXGjZsmJs8CxYsOGzf69atO2xe6L7btWvnglKRBO9XT/8LJ/Q4wccIPT+599573RSOCp3rCX/KggIAAAAAAEi0IhWUQt7t3LnTBcA0PfXUU3QpAAAAAADIF0Vu+F4ko0aNcsPRwk2ZmZkF3byUevqessEeeugha9y4cUE3BwAAAAAAFFFHTKaU6jT16tUr7LIyZcokvT2pKtxQQwAAAAAAgEQ7YoJS6enpbgIAAAAAAEDBO2KG7wEAAAAAACB1EJQCAAAAAABA0hGUAgAAAAAAQNIRlAIAAAAAAEDSpWVnZ2cn/7Ao6tLS0qxt27ZWuXJlK8r+9795Vq3aOfm+Tbz7l/w8RlFqW1F5P7zj5Mex8ruP8kte2u1tG+39C17HWx7umMm4xqIdH9H7ThLVZ6l4j/N735Dga957HbxeXq8zv/0Ta/9+loceJ9znJD/um6n0GcyPtiTj/Py+vxLufhtufiKPX1D8fB9F2y6ScN9jkY6TV6HtDHdvCfc6v9pzJEjWe1vY5OV7zO92efnO+18C70Nz5861rKwsS2UEpZA/F1Zami1dutSaN29epHt43kfH2Tkd1+T7NvHuX/LzGEWpbUXl/fCOkx/Hyu8+yi95abe3bbT3L3gdb3m4YybjGot2fETvO0lUn6XiPc7vfUOCr3nvdfB6eb3O/PZPrP37WR56nHCfk/y4b6bSZzA/2pKM8/P7/kq4+224+Yk8fkHx830UbbtIwn2PRTpOXoW2M9y9Jdzr/GrPkSBZ721hk5fvMb/b5eU7b14C70MZGRm2adMmS2UM3wMAAAAAAEDSEZQCAAAAAABA0hGUAgAAAAAAQNIRlAIAAAAAAEDSHdFBqWHDhlmzZs0Sus8+ffpY9+7drSgpiucEAAAAAAAKeVBKAQs9ac2bqlatap07d7YVK1bkuXHa37Rp0+LerkGDBjZu3Lg8Hx8AAAAAAAApnCmlINTmzZvdNG/ePCtevLh16dIlEbuGmR04cIB+AAAAAAAARUpCglKlSpWyWrVquUnD4QYPHmwbN260bdu2Rd3ujz/+sAEDBljt2rWtdOnSVr9+fRs9enQg20l69OjhMqa812vWrLFu3bpZzZo1rXz58tayZUv78MMPA/ts3769rV+/3v72t78Fsrf8OnTokI0YMcIyMjLcOelcZs2alWOdb7/91jp27GhlypRxWWH9+vWzPXv2RNznkiVLrHr16vbQQw+519rfWWedZZUrV3bbK3inc/KsW7fOtfn111+3du3auX6ZMmVKzLYtWLDAbbdr167AvGXLlrl52qdMmjTJHXf27NnWpEkT139eQNHz559/2m233RZo31133WXZ2dm++xAAAAAAAKBAakopQDN58mRr2LChC2pE88QTT9j06dPtjTfesFWrVrngixd8UjBHJk6c6IIm3mvt/4ILLnAZWd98840LqnTt2tU2bNjglr/99tsucKMAjpe95dfjjz9ujz76qI0ZM8YNP+zUqZNddNFFtnr1ard87969bl6VKlVce6ZOneoCYgqshfPRRx/ZeeedZw888IDdfffdgX0o6PPVV1+5czjqqKNc4E1Bp2AK7N166622cuVKd8xYbfPr999/d/t4+eWXbeHCha7f7rjjjsByHUPBqxdeeME+/fRT27Fjh73zzjtxHQMAAAAAACCW4pYAM2bMcFk3XtBFmU+ap4BLNAqINGrUyGUOKaNHmVIeZReJMnaUgeU55ZRT3OQZOXKkC5oouKXgUHp6uhUrVswqVKiQYzs/FKxR8Ojyyy93r5XdNH/+fFef6p///Ke98sortm/fPnvppZesXLlybp3x48e7oJjWVfaWR226+uqrbcKECXbZZZcF5l9yySU5jqngj871+++/t7/85S+B+YMGDbKLL77Yd9viGQr4zDPP2HHHHedeq88UwPNof0OGDAkcW+sqswoAAAAAACDlMqU6dOjghoppWrx4scviyczMdMPoYhVJ1zaNGze2gQMH2pw5c2IeS5lSyuzR8DMFrBQMUzaRlykVidbzpv79+x+2fPfu3fbLL7/YmWeemWO+Xmv/on8VEPMCUt5yZTkp08vz5Zdf2qWXXuqykYIDUqLMpt69e9uxxx5rFStWDGSGhba/RYsWcbXNr7JlywYCUqIA4tatW93Pv/76q8ssa9WqVWC56oMFtyWc/fv3uzYGTwAAAAAAAPmeKaUgjYbreZQdVKlSJXv+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oEEF3QwAAAAAAICiG5Tq06ePpaWlBaaqVata586dbcWKFXnet/Y3bdq0uLdr0KCBjRs3zvLbggULXBt37dqVY/7bb79tI0eOzPfjAwAAAAAAHLFBKVEQavPmzW6aN2+eFS9e3Lp06WJHqvT0dKtQoUJBNwMAAAAAAKBoB6VKlSpltWrVclOzZs1s8ODBtnHjRtu2bVvU7f744w8bMGCA1a5d20qXLm3169e30aNHB7KdpEePHi4byXu9Zs0a69atm9WsWdPKly9vLVu2tA8//DDH0Ln169fb3/72t0D2ViSx9iX79++3u+++2+rVq+fOs2HDhvavf/3L1q1bZx06dHDrVKlSxR1HWWOhw/f+/ve/W6tWrQ479imnnGIjRowIvJ4wYYI1adLE9cMJJ5xgTz31lI+eBwAAAAAAOIKDUsH27NljkydPdsEbDeWL5oknnrDp06fbG2+8YatWrbIpU6YEgk9Llixx/06cONFlYHmvtf8LLrjAZWR98803Lkura9eutmHDhsDQuYyMDBfw8bK3orU12r7k6quvtldffdW1deXKlfbss8+6AJaCVG+99ZZbR23XcR5//PHDjnHllVfa4sWLXQDM8+9//9sNb7ziiivca533fffdZw888IA7xqhRo+zee++1F198Ma6+BwAAAAAAiKa4FTEzZsxwgRrZu3evy3zSvKOOih5/U/CnUaNGdtZZZ7lMI2VKeapXr+7+rVy5ssvACs4w0uRR7aZ33nnHBbeUdaWhc8WKFXPD54K3CyfWvn788UcXMJs7d66de+65bp1jjz02sL6OJTVq1HDtDOekk05yx3jllVdcoMkLQil7SoE7GTp0qD366KN28cUXu9fHHHOMff/99y4Ads0110Q9BwAAAAAAgCM2U0rD2JYtW+YmZQV16tTJMjMz3TC6aDTcTds0btzYBg4caHPmzIl5LGU33XHHHW6omwJBCoYpuyg4uykcredN/fv397UvtU0Brnbt2lleKFtKQSnJzs52mVea5wXxlEXVt2/fHG28//77c2RXhdKwwt27d+eYAAAAAAAAjqhMqXLlygWyfrz6SJUqVbLnn3/eBVciad68ua1du9Y++OADV8upV69eLiPpzTffjLiNgkjKXBozZow7ZpkyZaxnz56uPlU0CjB5Klas6Gtfep0IvXv3dnWpvv76a8vKynL1ti677LJA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XMaVBtm4caOdf/75dvjhh1vZsmWtVatW9vrrr4fLHDBggH366ac2cuTI8HKrV68OvDOef/55F0grWbKk295XXnklavpPP/3ktrd8+fJWsWJF69evn61fvz5uecoUa9iwoV177bVuexcuXGgnn3yyHXrooVapUiXr0qWLff7551HLqM6qR+/eva1cuXL20EMPJa2btlHLLV26NDzut99+c+O84+Vlr02fPt2OPfZYt/9OOOEEW7FiRdT6H3nkEatevbrLirv88sujgo0AAAAAAAAF0qeUAk3KgvLoswJICq5443fu3Okyp5IFpd5++217+umnbfTo0fbdd9/ZpEmTXJBJJkyYYLVr17b777/f1q1b5wZRgOSYY46xDz74wL788ksbNGiQXXzxxbZgwQI3XcGo448/3q644orwcnXq1Am0bRMnTrQbbrjBbr75Zlf2lVdeaZdddll4u/bv3+8CUps2bXKBr6lTp9qPP/5o/fv39y3viy++sBNPPNEuuOACe+6551xAaNu2bXbppZfav//9bxfEa9KkiZ1++ulufCQF68466yxbvny5DRw4MGndUvGXv/zFnnzySZfxVrx4cVe+580333Trfvjhh910BSH/9re/pbwOAAAAAACAZIpbChRoUn9N6ldKwaclS5a4gJSamKnPKZk7d67t3r07aVBKWUdq+tejRw/XL5Uyptq3b++mValSxQ455BCXraN5PMqQuuWWW8Lfr7vuOpsyZYoLpmhZZR8pk0hZQJHLBfHEE0+4TKtrrrnGfR8yZIgLHGm8tkUZRgoSrVq1Khzoevnll61ly5YuA6pdu3bhsubMmWNnnnmmCwApkOTp3r171DrHjBnjOltXkEvzexTIUtDJo+ywRHVLhTKvdMzkjjvusDPOOMMF+0qXLu368FJ2lAZ58MEHbdq0aWRLAQAAAACAgs2UUlbUjh07XBBG/Uk1bdrUqlWr5oIcXr9SaiamJmsKMiVy7rnnusCW5lVmk7KBIjtR97Nv3z574IEHXEaVAldqRqeglAJciShwpHk1nHbaab7zfPPNN9axY8eocfqu8d50BaMiM69atGjhgkrePKK6qInePffcExWQEjX107YqQ0oBNDUBVD9dsfVX87pU6paK1q1bhz8rE0o2bNgQXk+HDh2i5lfmWTIKQm7dujVqAAAAAAAAyLNMqcaNG7tmdWo2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AAAAAJB2WaFQKJT+1SLTZWVlWadOnSw7O7ugq2KbflplVeo2iPqeSOS8KFixx8rvOObkeMWeE8i9yH2a6LgVZZHblWybgswb5DwsLOdq7Pbk5vrLb7nZZ7nd33lxvBKVkUr5uTlm8c7fvDofk9UlL8/7wnINpXoPyet9l5NzJ9E6Ek1PVm4s7/yM/A2J/T2JPIdzsu6DWbzjFW8/J1qmoOTlsc/pPSEndSis959IhaV+hVFhOn7xJLrnexZ+/a3t3rPXCjOCUsifEysryxYvXmxt27Yt8D08+x9/tY6XD476nkjkvChYscfK7zjm5HjFnhPIvch9mui4FWWR25Vsm4LMG+Q8LCznauz25Ob6y2+52We53d95cbwSlZFK+bk5ZvHO37w6H5PVJS/P+8JyDaV6D8nrfZeTcyfROhJNT1ZuLO/8jPwNif09iTyHc7Lug1m84xVvPydapqDk5bHP6T0hJ3UorPefSIWlfoVRYTp+8SS653vOuvUu27BpsxVmNN8DAAAAAABA2hGUAgAAAAAAQNoRlAIAAAAAAEDaEZQCAAAAAABA2hGUynADBgywvn37FnQ1AAAAAAAACndQatSoUVahQgX7448/wuO2b99uJUqUsK5du0bNO3PmTPeWtx9++CHH66tfv76NGDEi5eVUlxtvvNEKu5EjR9q4ceMKuhoAAAAAAACFOyjVrVs3F4RatGhReNysWbOsRo0aNn/+fNu1a1d4/IwZM6xu3brWqFGjAqpt4VepUiXLzs4u6GoAAAAAAAAU7qBUs2bNrGbNmi4LyqPPffr0sQYNGti8efOixiuIlUgoFLJhw4a54FWpUqWsVq1adv3114ezndasWWM33XSTy7jSIBs3brTzzz/fDj/8cCtbtqy1atXKXn/99agmcZ9++qnLQvKWW716te/6laWkoNCkSZOsSZMmVrp0aevZs6f9/PPP4XmU6aXtq169upUvX97atWtn06ZNiyrnb3/7W3h5zXfOOeeEp7311luujmXKlLGqVatajx49bMeOHQc03xszZozb/v3790eVrXUPHDgw/P2dd96xtm3bunU1bNjQ7rvvvqjMNQAAAAAAgIwLSokCTcqC8uizAkhdunQJj9+5c6fLnEoWlHr77bft6aefttGjR9t3333ngkMK4MiECROsdu3adv/999u6devcIMrGOuaYY+yDDz6wL7/80gYNGmQXX3yxLViwwE1XMOr444+3K664IrxcnTp14tbh999/t4ceeshefvllmz17tv3222923nnnhacrM+z000+36dOn25IlS+zUU0+1Xr162U8//eSmK2tMgTTVc8WKFfbRRx9Z586d3TStWwE0BZW++eYbF6g7++yzXTAu1rnnnusCbpH7dtOmTa68Cy+8MJyVdskll9gNN9xgX3/9tdtvCqyp/gAAAAAAAHmluBVCCjSpvyZl5yj4pECNAlJ79+51fU7J3Llzbffu3UmDUgrsqOmfsofUL5Uyptq3b++mValSxQ455BDXh5Xm8ShD6pZbbgl/v+6662zKlCn25ptvumXVJK5kyZIuiypyuXhU7+eee846dOjgvr/00kvWvHlzF+RSeUcddZQbPA888IBNnDjR3n33Xbv22mvdNpQrV87OPPNMV9d69erZ0UcfHQ5KaT8pEKXx4gXdYlWuXNlOO+00e+211+ykk04KZ1kdeuih4f2orKg77rjDLr30UvddmVKqz2233Wb33ntv0m0FAAAAAAAosplSyopS87OFCxe6zJ2mTZtatWrVXGDK61dKGUEKmCjIlIiygxTY0rzKbFKwJ1lTtH379rlAjII7ClypSZ2CUl7mUjwtW7Z082pQ8MdTvHhx1yTPc8QRR7gmfcps8jKlFARToErjtbymees7+eSTXcBJ26CMrfHjx7vsK1EwSwEm1VXb+sILL9jmzZvj1lEZUcoeU0BPVJaytooV+79TYdmyZS4jy9sODV5GmLfOWCpr69atUQMAAAAAAECRC0o1btzYNatTMzMNCkaJ+kNSM7k5c+a48d27d09aluZXkzf1yaQ+l6655hrX9E3ZS/E8/vjjrone7bff7tazdOlS1w/Unj17Eq7rww8/dPNq+Pvf/x54exWQUrDs4YcfdkE4La8gk7c+ZUd9/vnnrl8r9bd1zz33uGCUmgEq02vq1Kk2efJka9GihT377LOuX65Vq1b5rkvNAtW0T00T1a+V1uc13fMCZMqW8rZDw/Lly13TR/Ux5Wf48OEueyxyAAAAAAAAKHJBKVFzMmVDaVDmlEcBJQVg1PQtWdM9j4JRCsY888wzrjw1/VOgRdQMT5lRkdTvkzr/vuiii1zwRxlKK1eujJrHbzllMymgpkFNAD3KzIp8m6CCZAooKTPKW586JD/rrLNcMEpN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7du326uvvmqNGzcOnIV07733uqBO3bp1beDAgXbBBRdYhQoVXDO9smXLWr9+/eyee+6x559//oBlFSQ6//zz7bHHHrOzzjrLtm3bZrNmzbJQKGR//PGHCzJdccUV9vrrr9uePXtswYIFLhAWz4wZM1xASv///vvvrX///i5wpTLkkksusf/9738u2FWiRAkbMmSIbdiwgRMBAAAAAADkKYJSAbz//vsuo0mUoaSgjsYVK1YscN9OPXv2dJ9vuOEGF2RSM0BlNcnll18etw8pBaUUfDr77LOtXr16bpyypmTTpk22ZcsW15SwUaNGblzz5s0T1qVy5cr23HPP2SGHHGJHHHGEy4pSXRSU+vbbb23atGnhLC75+9//bk2aNAm0nQAAAAAAAEHRfC+Abt262dKlS92gTCQFmNTkzmsml0zr1q3Dn6tXrx4VWPLGxctGOuqoo+ykk05y85977rn2wgsv2ObNm920KlWquCZ5qk+vXr1c5pWCWIm0bNnSBaQ8CrB5616xYoXrL6tt27bh6coIUyArkd27d9vWrVujBgAAAAAAgEQISgWg/poUnNGgPqGUPaSMKQWIglAzOI/XtC523P79+32XVQBp6tSpNnnyZGvRooU9++yz1qxZM1u1apWbPnbsWJs7d66dcMIJ9sYbb1jTpk1t3rx5geqSbN1BDR8+3HXOHjkAAAAAAAAkQlAqBxTIUdO9nTt3pm19aup333332ZIlS6xkyZI2ceLE8PSjjz7ahg4danPmzLEjjzzSdU6eEwp2qamg1uFRv1NeZlY8WreaEUYOAAAAAAAAidCnVABqnvbrr7+6zwrQqE8mdXiuJnP5bf78+a7Pp1NOOcUOO+ww911v6lPfUcqWGjNmjPXu3dtq1arlmt999913rrPynFAfU3qz36BBg1yn68qquvnmm92b+BJ1nq63E2oAAAAAAAAIiqBUAB999JHre0n01jwFb/71r39Z165dLb9VrFjRPvvsM/f2PvXVpM7On3zySden1fr1613n5C+99JJt3LjR1XHw4MF25ZVX5nh9L7/8sut4vXPnzlajRg3XNO+rr76y0qVL5+l2AQAAAACAg1tWKBQKFXQlUHitXbvW6tSp497Kpw7Xg1Jm1eLFi6M6Tc8Ew4YNcwMAAAAAgL+1CvPfn7Vr13Z/0xdmZEohyieffOKaJuptf3qT3223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Q4daqVKl2MNFCMeu6OLYFV0cu6KLY1d0ceyKLo5d0cWxK7o4dkXX7iLwtzlBKeS5rVu3WqVKlWzLli1WsWJF9nARwrErujh2RRfHruji2BVdHLuii2NXdHHsii6OXdG1tQj8bU6fUgAAAAAAAEg7glIAAAAAAABIO4JSAAAAAAAASDuCUshz6kDt3nvvLbQdqSE+jl3RxbErujh2RRfHruji2BVdHLuii2NXdHHsiq5SReBvczo6BwAAAAAAQNqRKQUAAAAAAIC0IygFAAAAAACAtCMoBQAAAAAAgLQjKHWQ+Otf/2r169e30qVLW4cOHWzBggXhabt27bLBgwdb1apVrXz58vanP/3J1q9fn7TMf/3rX3bEEUe4Mlu1amUffvhh1PRQKGT33HOP1axZ08qUKWM9evSw7777Lmm5M2fOtLZt27rO2Bo3bmzjxo1LaXsyTUEcuwkTJtgpp5ziys3KyrKlS5cGqusXX3xhnTp1cuXWqVPHHnvssajpXbt2deXFDmeccYZlonQfu71799rtt9/uxpcrV85q1apll1xyif3yyy8Jy1y3bp1dcMEF1rRpUytWrJjdeOONB8yjc+LYY4+17OxsV3abNm3slVdesUxVENfdsGHD3HTt38qVK7t75vz58xOWqeNy8sknW7Vq1axixYp2/PHH25QpU1LankxTEMcu0lVXXeXuayNGjMj1sdN2+N0ztQ2ZqCCO3YABAw7Yv6eeemrCMv/9739bx44dXV30fKPyn3766ah5nn/+eWvdurU7tt7xnTx5smWqgrruvvnmG+vdu7dVqlTJ3TvbtWtnP/30U6A6f//991ahQgX3u5aTdWeKgjh2fvc1DY8//nigOs+ePduKFy/unkUicc/M/2O3fft2u/baa6127dru/teiRQsbNWpUwjJXr17te7znzZsXnofnzAW5OnZfffWVm8+7BuI9g+TkeTDZ33d5cs8MIeP985//DJUsWTL04osvhr766qvQFVdcEcrOzg6tX7/eTb/qqqtCderUCU2fPj20aNGi0HHHHRc64YQTEpY5e/bs0CGHHBJ67LHHQl9//XXorrvuCpUoUSK0fPny8DyPPPJIqFKlSqFJkyaFli1bFurdu3eoQYMGoZ07d8Yt98cffwyVLVs2NGTIEFfus88+69bz0UcfBd6eTFJQx+7ll18O3XfffaEXXnghpNvEkiVLktZ1y5YtoerVq4cuvPDC0Jdffhl6/fXXQ2XKlAmNHj06PM/GjRtD69atCw+aT3UZO3ZsKNMUxLH77bffQj169Ai98cYboW+//TY0d+7cUPv27UPHHHNMwnJXrVoVuv7660MvvfRSqE2bNqEbbrjhgHlmzJgRmjBhglvv999/HxoxYsQB12amKKjrbvz48aGpU6eGfvjhB3dtXH755aGKFSuGNmzYELdcHatHH300tGDBgtDKlStDQ4cOdeV+/vnngbcnkxTUsfPoGjnqqKNCtWrVCj399NMJyw1y7HTsI++ZOj90T9b1mGkK6thdeumloVNPPTVqP2/atClhuTpGr732mrtOdf985ZVX3LNL5O/du+++G/rggw/csV2xYkXozjvvdOvWMpmmoI6dfouqVKkSuvXWW90x0fd33nkn0L1tz549oWOPPTZ02mmnuWfVVNedKQrq2EVebxq0/qysLPf7l8zmzZtDDRs2DJ1yyinufhuJe2b+HzudI40aNXK/Q7r/6b6nZXTtxaP59Ns1bdq0qOOu69DDc2Z2ro6dniVuueUW9/dXjRo1fJ9BcvI8GOTvu7y4ZxKUOgjoj9LBgweHv+/bt889MA8fPtz9EauT5l//+ld4+jfffONuHPqDNp5+/fqFzjjjjKhxHTp0CF155ZXu8/79+90F8fjjj4ena12lSpVyJ3M8t912W6hly5ZR4/r37x/q2bNnoO3JNAVx7Px+RIIEpf72t7+FKleuHNq9e3d43O233x5q1qxZ3GV0w6xQoUJo+/btoUxT0Mcu8kdK5a5ZsyZQvbt06eIblPJz9NFHux+eTFNYjp0eBLyHuFS0aNHCBZWDbE+mKchjt3bt2tDhhx/uHtrq1auXNCgV5NjF0rWpPwb0G5tpCurYKSjVp0+fXNf/rLPOCl100UUJ59Fv5N///vdQpimoY6fnw2T7PNHzppbVP4rFBqVycr8uqgrL752uwe7duweqs467nj3uvffeA4JSsbhn5v2x099p999/f9Q8bdu2Df3lL3+JW24qf09E4jkz+LGLFO8ZJCfPg0H+vsuLeybN9zLcnj17bPHixa4ZiEfNc/R97ty5bpqa/EROV+pd3bp13XSP0vzUtMSjaZHLSM+ePcPLrFq1yn799deoxm2SLQAAEM9JREFUeZRarTTByHLVnEup80HLTbY9maSgjl1QOm46fpHldu7c2UqWLBlV7ooVK2zz5s2+ZfzjH/+w8847z6XcZ5LCdOy2bNni0ngjmyfEXnep0j9oTJ8+3R1bHfNMUliOneoxZswYd9886qijAh+7/fv327Zt26xKlSqBtieTFOSx036/+OKL7dZbb7WWLVv61i/VY+e3fa+++qoNHDjQXdOZpKCvO3UbcNhhh1mzZs3s6quvto0bN6Z07JYsWWJz5syxLl26+E7ft2+f/fOf/7QdO3a4ZnyZpKCOna6XDz74wDU713gdPz1jTpo0KeGzinzyySeuqYmasfjJq+ekwq6grzuPmiXpWF5++eVJr7uxY8fajz/+aPfee2+g7eOemffH7oQTTrB3333X/vOf/7jnwRkzZtjKlStdtx+JrjtRU1tdqyeeeKIrIx6eM/emfN0FuR6CPA/m5O+7vLhnEpTKcP/73//cw1D16tWjxuu7gkYadJLFtqf3pnsaNWpkhx56aPi7psUr05vujUtUri4w9TmVrNytW7fazp07k25PJimoYxeUjpuOX7JyvWmx1Ib5yy+/tD//+c+WaQrLsVObdPUxdf7557s+TeJdd0EpwKW27aq7+gF79tlnXZ84maSgj93777/v9rHa5KuPmqlTp0aVk+zYPfHEE66/h379+gXankxSkMfu0Ucfdf2bXH/99XHrl+qxi6U/tn/77bdcBZQLq4I8duo/6uWXX3aBdh3HTz/91E477TRXn2THTn2qqP9L9ben/j9if8+WL1/urmfNo77GJk6c6PpfySQFdew2bNjgrpdHHnnEHcOPP/7YzjrrLDv77LPdMYz3rKKAo64h9Vca+bsYKa+ekwq7gv6987z00kuuby8du0ix1536pb3jjjtcoEn322S4Z+bPsdOzn+5juv/p/ND1pwBv5D9Sxl53ug8++eSTLhisAKSCUn379j0gMMVz5q85vu6SCfo8mJO/7/Linpn8igbM3MNaftCDIIrmsRs+fHiulleWlDrCa9++fZ7VKdPk5tjpXzf1x63+tUkd7ubFdaeHRnV6rz8EVLchQ4ZYw4YNff817GCX02PXrVs3t4/18PDCCy+4Y6jOzvUvi8mO3WuvvWb33XefvfPOO+H5kf/HTv/yOHLkSPv8888TZjDl9tjpnqlgiV5ggLw5dqJsXY9+k9Q5uR72lT110kknJTx2s2bNcvdDddarP5b1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AKQdQSkAAAAAAACkHUEpAACAXBgwYID17ds37ftw3Lhxlp2dnfb1AgAA5BWCUgAAAHFkZWUlHIYNG2YjR450AaJ069+/v61cuTJXZcycOdNtx2+//XbAtPr169uIESPifvdoH7Rp0ybherSs1vPPf/7zgGktW7Z00yL3Yarz+3nhhRfsqKOOsvLly7vg3dFHH23Dhw8PT//9999t6NCh1qhRIytdurRVq1bNunTpYu+8807CcgEAQN4pnodlAQAAZJR169aFP7/xxht2zz332IoVK8LjFPDQUBDKlCnjhqKiTp06NnbsWDvvvPPC4+bNm2e//vqrlStXLtfzR3rxxRftxhtvtGeeecYFmnbv3m1ffPGFffnll+F5rrrqKps/f749++yz1qJFC9u4caPNmTPH/R8AAKQHmVIAAABx1KhRIzxUqlTJZehEjlNAKrb5XteuXe26665zQZHKlStb9erVXdbOjh077LLLLrMKFSpY48aNbfLkyVHrUsDktNNOc2VqmYsvvtj+97//BW6+52UsvfLKKy7TSPVVQGfbtm2F4vheeOGF9umnn9rPP/8cFTzS+OLFi+d6/kjvvvuu9evXzy6//HK3r5Vddf7559tDDz0UNc+dd95pp59+uttfxxxzjDtuAwcOzLNtBgAAiRGUAgAAyGMvvfSSHXroobZgwQIX6Lj66qvt3HPPtRNOOME+//xzO+WUU1zQSU3IRM3nunfv7pqYLVq0yD766CNbv369C6yk4ocffrBJkybZ+++/7wYFdR555JG0Hl+vSeDq1aujxivQ1rNnT7dvRNuu7LN4QaBU5ldgUMFAjwKGyqpas2ZN3Hpqng8//LDQBO0AADgYEZQCAADIY+rL6K677rImTZq4fovUZ5GCVFdccYUbp2aAaiamJmXy3HPPuYDUww8/bEcccYT7rKygGTNmpNRv1P79+10G1ZFHHmmdOnVyga/p06cnXa527drhpoje8NNPPx0w3+23337AfKpzpLJly1qzZs2sRIkSByyvgJLqFwqF7K233nL9OSXqjyro/DVr1rS6deuGv997770ui0wZUKqLglZvvvmm2z+eMWPGuOZ6VatWtXbt2tlNN91ks2fPTrqvAABA3iEoBQAAkMdat24d/nzIIYe4wEerVq2isoBkw4YN7v/Lli1zAajIYI+CU172U1AKwqh5YGSwxltHIrNmzbKlS5dGDbVq1TpgvltvvfWA+dQ3U6T27dvbt99+a4cffvgBy59xxhm2fft2++yzz1zQLVlTuaDzqwPzl19+OWq7586da8uXL7cbbrjB/vjjD7v00kvt1FNPDQemOnfubD/++KML2p1zzjn21VdfuUDeAw88kHR/AQCAvEFH5wAAAHksNktIzdkix+m7eAESBV569epljz766AFlKcCSm/VGZgfF06BBg6j+qcSv3yZle6mPpkhVqlQJXD+VqewtZTKpk/GJEyfm6fyxlDGm4ZprrnHBMwWd1KSxW7du4f2lcRqUBfbggw/a/fff7z6XLFkypXUBAIDUkSkFAABQwNq2besydZTppKBP5JDsTXNFjbKdFBjq06eP6wg+r+ePR2/YE3U4n2geZVXt2rUrx+sBAADBEZQCAAAoYIMHD7ZNmza5N8QtXLjQNdmbMmWKe1vfvn37rChR5+5qevif//zHd3rz5s3dWwXHjh0bqLwg86vfrksuuST8XR3Lqxme+ohSZ+fq9FzTq1WrZscff7ybRx2jjx492hYvXuw6ZVen53obn7KoKlasmPJ2AwCA1BGUAgAAKGDqv0kBFAWg9GY+9T914403uiZ1xYoVrcc1vSVvxYoVtnfv3rjzqI+tMmXKBC4z2fzr1q2L6pi9R48eLhClNx42bdrU/vSnP7nO5tV/lMoS781+2t8KfOktiRqnDtEBAEB6ZIX0OhMAAAAAAAAgjYrWP70BAAAAAAAgIxCUAgAAAAAAQNoRlAIAAAAAAEDaEZQCAAAAAABA2hGUAgAAAAAAQNoRlAIAAAAAAEDaEZQCAAAAAABA2hGUAgAAAAAAQNoRlAIAAAAAAEDaEZQCAAAAAABA2hGUAgAAAAAAQNoRlAIAAAAAAICl2/8DPC83xumFPzwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 8))\n", "\n", "deepof.visuals.plot_gantt(\n", " my_deepof_project,\n", " \"20191204_Day2_SI_JB08_Test_54\",\n", " supervised_annotations=supervised_annotation,\n", ")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "85ac0256", "metadata": {}, "source": [ "As we can see in the plot, there are quite a lot of predefined behaviors (named on the left side of the plot) that deepof detects. In general, there are two types of behaviors: Solitary and social behaviors. For each frame of the video, the presence or absence of each behavior is detected. The colored bars indicate the presence of a behavior, white background indicates its absence.\n", "\n", "In the given video we have two mice, a white and a black one, respectively indicated by \"W\" and \"B\". A solitary behavior like e.g. \"moving\" is measured for each mouse individually. Respectively \"B_moving\" indicates that the black mouse is moving, \"W_moving\" indicates that the white mouse is moving. \n", "\n", "Analogously social behaviors have indicators for both involved mice. \"B_W_nose2nose\" indicates that there is nose-nose contact between teh black and the white mouse. Some of the social behaviors are additionally directional, like \"following\". Since it matters which mouse follows which, there are two versions of this behavior. \"B_W_following\" indicates that the black mouse follows the white one and respectively \"W_B_following\" indictaes that the white mouse is following the black one." ] }, { "cell_type": "markdown", "id": "4bc92eda", "metadata": {}, "source": [ "Most behaviors can be modulated with different supervised parameters. These parameters are" ] }, { "cell_type": "code", "execution_count": 7, "id": "ede822f9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'close_contact_tol': 25,\n", " 'side_contact_tol': 50,\n", " 'median_filter_width': 12,\n", " 'follow_frames': 12,\n", " 'min_follow_frames': 6,\n", " 'follow_tol': 25,\n", " 'climb_tol': 0.15,\n", " 'sniff_arena_tol': 12.5,\n", " 'min_immobility': 24,\n", " 'stationary_threshold': 40,\n", " 'nose_likelihood': 0.85}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params=my_deepof_project.get_supervised_parameters()\n", "params" ] }, { "cell_type": "markdown", "id": "292078c1", "metadata": {}, "source": [ "What they represent will be explained during the explanation of the behaviors." ] }, { "cell_type": "markdown", "id": "60b9158e", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "### Solitary behaviors" ] }, { "cell_type": "markdown", "id": "c348771f", "metadata": {}, "source": [ "Currently, deepof features nine different solitary behaviors: \n", "\n", "* climb_arena\n", "* sniff_arena\n", "* immobility\n", "* stat_lookaround\n", "* stat_active \n", "* stat_passive\n", "* moving\n", "* sniffing\n", "* missing" ] }, { "cell_type": "markdown", "id": "07ecd780", "metadata": {}, "source": [ "#### Climb_arena" ] }, { "cell_type": "markdown", "id": "be3efc14", "metadata": {}, "source": [ "**The climb_arena behavior is measuring if a mouse inside of the arena is trying to climb it.** This is done by measuring if the nose the mouse is more than a given value beyond the edge of the arena (the one that you can either auto-detect or mark manually during project creation). It is calculated as follows:\n", "\n", "- For each frame: Get an estimation of the body lenght of the mouse (without tail) by summing up the distances between all (available) backbone bodyparts \n", "\n", "[\"Nose\", \"Spine_1\", \"Center\", \"Spine_2\", \"Tailbase\"]\n", "- Take the 80% percentile of these distances as a length estimation\n", "- Calculate tol = mouse length * ***params[\"climb_tol\"]***\n", "- For each frame: interpolate nans in mouse Nose positions linearly\n", "- For each frame: Check if the nose o the mouse is further outside of the arena border (the line that is drawn during project creation) than tol\n", "- Median filter the resulting binary array with filter width ***params[\"median_filter_width\"]***\n" ] }, { "cell_type": "markdown", "id": "48754c2f", "metadata": {}, "source": [ "![W_climb_arena](./Assets/Behaviors/W_climb-arena.gif)" ] }, { "cell_type": "markdown", "id": "8d7fce40", "metadata": {}, "source": [ "The video above shows one instance of detected climbing behavior for the white mouse. Note how the behavior is only triggered once, as the second time the white mouse looks up (around 8:37) its nose is not far enough outside of the bounds of the arena." ] }, { "cell_type": "markdown", "id": "b26592ca", "metadata": {}, "source": [ "#### Sniff_arena" ] }, { "cell_type": "markdown", "id": "154a5d65", "metadata": {}, "source": [ "**The sniff_arena behavior is measuring if a mouse inside of the arena is sniffing the arena edge.** This is done by first determining if the mouse is currently relatively immobile, then secondly measuring if the nose the mouse is closer than a threshold to the edge of the arena (the one that you can either auto-detect or mark manually during project creation). It is calculated as follows:\n", "\n", "\n", "- For each frame: Check if the nose of the mouse is closer than ***params[\"sniff_arena_tol\"]*** to the arena edge\n", "- For each frame: Check if the speed of the center the mouse (e.g. bodypart \"Center\" in deepof_14) is smaller than ***params[\"stationary_threshold\"]*** \n", "- If both conditions are fulfilled, the frame is counted as arena sniffing\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***\n" ] }, { "cell_type": "markdown", "id": "37c959d5", "metadata": {}, "source": [ "![B_sniff_arena](./Assets/Behaviors/B_sniff-arena.gif)" ] }, { "cell_type": "markdown", "id": "c0726e8a", "metadata": {}, "source": [ "The video above shows multiple instances of detected arena sniffing behavior for the black mouse. Note how the behavior is still triggered at 9:20 despite short climbing attempt of the black mouse. This is due to a short tracking error (black mosue in front of black arena) that detects the nose lower than it actually is. Always keep in mind that deepof is not working with the videos directly but with the tracked data. Respectively make sure to properly track your mosues, as errors in tracking can translate to errors in behavior detection." ] }, { "cell_type": "markdown", "id": "26db379a", "metadata": {}, "source": [ "#### Immobility" ] }, { "cell_type": "markdown", "id": "19c70e24", "metadata": {}, "source": [ "**The immobility behavior is measuring if a mouse stops moving for at least 1 second (default).** This is done by applying a XGBoost classifier and some post processing steps. It is calculated as follows:\n", "\n", "\n", "- Check if all main body bodyparts of the mouse are detected (labelling schema deepof_11 or deepof_14 is used)\n", "- Save indices of all frames in which more than 10% of the data are nans\n", "- Impute missing data\n", "- Apply immobility classifier\n", "\n", "[Labelling criteria for classifier: Mouse stops whatever it is doing suddenly, like it's frozen in place. State needs to persist for min. 0.5 seconds]\n", "\n", "- Set corresponding entries of the resulting boolean array for all frames that previously had more than 10% Nans to 0\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***\n", "- Remove all segments of 1s of the resulting boolean array that are shorter than ***params[\"min_immobility\"]***" ] }, { "cell_type": "markdown", "id": "382dec44", "metadata": {}, "source": [ "![B_immobility](./Assets/Behaviors/B_immobility.gif)" ] }, { "cell_type": "markdown", "id": "ef5711e7", "metadata": {}, "source": [ "As shown in the video above, the black mouse is labeled with \"immobility\" when it stops and stays relatively motionless for a short while. " ] }, { "cell_type": "markdown", "id": "f5900c93", "metadata": {}, "source": [ "#### Stat_lookaround" ] }, { "cell_type": "markdown", "id": "c736e0e9", "metadata": {}, "source": [ "**The stat_lookaround behavior is measuring if a mouse stands still and is looking around.** This is done by determining frames of relative immobility, then detrmining in which of these frames the mouse is moving its nose, has a relatively normal frontal head tilt and is not too close with its nose to anotehr mouse, if there are any. It is calculated as follows:\n", "\n", "\n", "- Save indices of all frames with undefined center speed\n", "- Interpolate missing center speeds linearily\n", "- Get \"immobile\" frames:\n", "\n", " - Detect all frames with Tail base speed <= 2* ***params[\"stationary_threshold\"]*** and save as a binary array\n", " - Moving average filter this array with a window length of ***params[\"min_follow_frames\"]***\n", " - Remove all segments of 1s in the resulting boolean array that are shorter than ***params[\"min_follow_frames\"]***\n", "\n", "- Get \"nose_activity\" frames:\n", "\n", " - Detect all frames in which Nose speed > ***params[\"stationary_threshold\"]***\n", " - And in which additionally nose likelihood > ***params[\"nose_likelihood\"]***\n", "\n", "- Get \"lower_body_inactivity\" frames:\n", "\n", " - Detect all frames for which speed of [\"Left_bhip\", \"Right_bhip\"] =< 2* ***params[\"stationary_threshold\"]*** and likelihood > ***params[\"nose_likelihood\"]***\n", "\n", "- Get \"head_orientation\" frames:\n", "\n", " - For all frames: Get the distance between the nose and the left ear and the nose and the right ear of the mouse\n", " - Determine all distances that are larger than 0.9 * the median distance for both distance types (Nose-Left_ear and Nose-Right_ear)\n", " - Determine all frames in which the above is true for both distance types\n", "\n", "- Get \"not_close_range\" frames:\n", "\n", " - Determine all frames in which the nose of the mouse is farther away than ***params[\"side_contact_tol\"]*** to any other mouse (if there are any) \n", "\n", "- For each frame: raw_lookaround = \"immobile\" and \"nose_activity\" and \"lower_body_inactivity\" and \"head_orientation\" and \"not_close_range\"\n", "- For each frame: nonlookaround = immobile is true and the other conditions are False\n", "- Apply multi_step_paired_smoothing on both\n", "- Set all frames with previously undefined center speed in raw_lookaround to False\n", "- stationary_lookaround = raw_lookaround" ] }, { "cell_type": "markdown", "id": "61461575", "metadata": {}, "source": [ "![B_stat_lookaround](./Assets/Behaviors/B_stat-lookaround.gif)" ] }, { "cell_type": "markdown", "id": "86d740ca", "metadata": {}, "source": [ "The video above shows two instances of detected stationary lookaround behavior for the black mouse. Note how the behavior does not require the mouse to stand on its hind legs. It is just a combination of active nose movement and some conditions (like a lowered head) that get excluded." ] }, { "cell_type": "markdown", "id": "266415bc", "metadata": {}, "source": [ "#### Stat_active, Stat_passive and Moving" ] }, { "cell_type": "markdown", "id": "c47d5d88", "metadata": {}, "source": [ "**The stat_active and stat_passive behaviors are measuring if the mouse is standing still and either actively doing something or not. Moving covers (almost) all remaining frames in which the mouse is moving** These three behaviors are exclusive, meaning that the mouse can only ever be in one of these three states. First frames of relative immobility are determined, then these frames are subdivided via bodypart movement in active and passive instances. Only frames with undefined center speeds are excluded. It is calculated as follows:\n", "\n", "\n", "- Save indices of all frames with undefined center speed\n", "- Interpolate missing center speeds linearily\n", "- Get \"immobile\" frames:\n", "\n", " - Detect all frames with center speed <= 2* ***params[\"stationary_threshold\"]*** and save as a binary array\n", " - Moving average filter this array with a window length of ***params[\"min_follow_frames\"]***\n", " - Remove all segments of 1s in the resulting boolean array that are shorter than ***params[\"min_follow_frames\"]***\n", "\n", "- Get \"activity\" frames:\n", "\n", " - Detect all frames for which the speed of any of \n", " \n", " [\"Nose\", \"Left_fhip\", \"Right_fhip\", \"Left_bhip\", \"Right_bhip\"] \n", " \n", " is greater than ***params[\"stationary_threshold\"]***\n", " \n", " - And in which additionally the respective bodypart likelihood > ***params[\"nose_likelihood\"]***\n", "\n", "- For each frame: raw_stat_active = \"immobile\" and \"activity\"\n", "- For each frame: raw_stat_passive = \"immobile\" and not \"activity\"\n", "- Apply multi_step_paired_smoothing on both\n", "- raw_mobile = not raw_stat_active and not raw_stat_passive\n", "- Set all frames with previously undefined center speed in raw_stat_active, raw_stat_passive and raw_mobile to False\n", "- stat_active = raw_stat_active, stat_passive = raw_stat_passive, mobile = raw_mobile" ] }, { "cell_type": "markdown", "id": "6afaf8dc", "metadata": {}, "source": [ "![B_stat_passive](./Assets/Behaviors/B_stat-passive.gif)" ] }, { "cell_type": "markdown", "id": "06be2a8d", "metadata": {}, "source": [ "The video above shows the alternating three behaviors for the black mouse. As almost always one of the three states applies (except for frames with tracking errors in which it cannot be determined if the mouse if moving or not) this can result in occasional fast fluctuations between states. Further, as all behaviors only the skeleton data of teh mouse is used. This means if the mouse is just standing standing in a way that the skeleton does not move significantly but is still doing \"something\" (like sniffing the ground) respective frames will still be labeled as stat_passive. " ] }, { "cell_type": "markdown", "id": "95a7caaf", "metadata": {}, "source": [ "#### Sniffing" ] }, { "cell_type": "markdown", "id": "2b02ec55", "metadata": {}, "source": [ "**The sniffing behavior is measuring if a mouse is stationary and moving its nose.** This behavior is a slightly modified version of the previous implementation of lookaround and relatively simplistic. It is calculated as follows:\n", "\n", "\n", "- For each frame:\n", "\n", " - Check if Center speed is < ***params[\"stationary_threshold\"]***\n", " - Check if Nose speed > ***params[\"stationary_threshold\"]***\n", " - Check if Nose likelihood > ***params[\"nose_likelihood\"]*** (certainty of nose detection)\n", "\n", "- A frame is labeled as lookaround if all of the above apply,\n", "- No further filtering" ] }, { "cell_type": "markdown", "id": "3ae1c663", "metadata": {}, "source": [ "![B_sniffing](./Assets/Behaviors/B_sniffing.gif)" ] }, { "cell_type": "markdown", "id": "c617be6b", "metadata": {}, "source": [ "The video above shows the black mouse sniffing around. This behavior is mostly implemented for legacy reasons and can give information about the general activity of the mouse. A slight fix now prevents excessive \"sniffing\" (or former \"lookaround\") detection in an edge case. " ] }, { "cell_type": "markdown", "id": "ca20b553", "metadata": {}, "source": [ "#### Missing" ] }, { "cell_type": "markdown", "id": "10d9a494", "metadata": {}, "source": [ "**The missing \"behavior\" is measuring if the mouse could be detected.** This \"behavior\" only serves control purposes. It is calculated as follows:\n", "\n", "\n", "- For each frame: Check if the median prediction confidence score of all bodyparts is less or equal than 0.5\n", "- Set all frames for which this is the case to \"missing\"" ] }, { "cell_type": "markdown", "id": "deb2b406", "metadata": {}, "source": [ "![B_missing](./Assets/Behaviors/B_missing.gif)" ] }, { "cell_type": "markdown", "id": "069827be", "metadata": {}, "source": [ "As can be seen in the video above, the black mouse is briefly marked as \"missing\", since most of its bodyparts could not be accurately predicted whilst it was passing the white mouse." ] }, { "cell_type": "markdown", "id": "1ab81988", "metadata": {}, "source": [ "### Social Behaviors" ] }, { "cell_type": "markdown", "id": "42c03b28", "metadata": {}, "source": [ "Currently, deepof features six different social behaviors: \n", "\n", "* nose2nose\n", "* sidebyside\n", "* sidereside\n", "* nose2tail\n", "* nose2body \n", "* following\n", "\n", "The first three of which are non-directional, the remaining three are directional" ] }, { "cell_type": "markdown", "id": "f765341e", "metadata": {}, "source": [ "#### Nose2nose" ] }, { "cell_type": "markdown", "id": "7b7b29de", "metadata": {}, "source": [ "**The nose2nose behavior is measuring if the noses of both mice get closer than a threshold.** This is done by simply determining all nose-nose distances of two mice for all frames. It is calculated as follows:\n", "\n", "- For each frame: Check if the noses of both mice are closer than ***params[\"close_contact_tol\"]*** to each other\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***" ] }, { "cell_type": "markdown", "id": "b86e5acd", "metadata": {}, "source": [ "![B_W_nose2nose](./Assets/Behaviors/B_W_nose2nose.gif)" ] }, { "cell_type": "markdown", "id": "75765af1", "metadata": {}, "source": [ "The video above illustrates a brief nose2nose contact between the two mice. The default width of the median filter is 0.5 seconds (in frames). This means that with default settings events shorter than ca. 0.25 seconds (in frames) won't be detected." ] }, { "cell_type": "markdown", "id": "fe20180b", "metadata": {}, "source": [ "#### Sidebyside" ] }, { "cell_type": "markdown", "id": "2573df2e", "metadata": {}, "source": [ "**The sidebyside behavior is measuring if two mice are aligned closely side by side.** This is done by determining the nose-nose and tailbase-tailbase distances of both mice for all frames. It is calculated as follows:\n", "\n", "\n", "- For each frame: Check if the nose of mouse A is closer than ***params[\"side_contact_tol\"]*** to the nose of mouse B AND the tail base of mouse A is closer than ***params[\"side_contact_tol\"]*** to the tail base of mouse B\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***" ] }, { "cell_type": "markdown", "id": "15e33ffc", "metadata": {}, "source": [ "The video above shows a short sidebyside contact between the two mice. As shown, the side-side contact does not need to be very long by default. The side_contact_tol parameter can be set seperately from close_contact_tol and is per default twice as wide (50 mm instead of 25 mm). " ] }, { "cell_type": "markdown", "id": "8a9cc533", "metadata": {}, "source": [ "![B_W_sidebyside](./Assets/Behaviors/B_W_sidebyside.gif)" ] }, { "cell_type": "markdown", "id": "c7e34245", "metadata": {}, "source": [ "#### Sidereside" ] }, { "cell_type": "markdown", "id": "9414e6ad", "metadata": {}, "source": [ "**The sidereside behavior is measuring if two mice are aligned closely side by side, but in reverse.** This is done by determining the nose-tailbase distances of both mice for all frames. It is calculated as follows:\n", "\n", "\n", "- For each frame: The nose of mouse A is closer than ***params[\"side_contact_tol\"]*** to the tail base of mouse B AND the tail base of mouse A is closer than ***params[\"side_contact_tol\"]*** to the nose of mouse B\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***" ] }, { "cell_type": "markdown", "id": "f46da7cc", "metadata": {}, "source": [ "![B_W_sidereside](./Assets/Behaviors/B_W_sidereside.gif)" ] }, { "cell_type": "markdown", "id": "e706c3bf", "metadata": {}, "source": [ "The video above shows a prolonged sidereside contact between the two mice. The detection already starts slightly before the nose of the black mouse fully reaches the tailbase of the white mouse, as it is at that point in time \"close enough\" to it to trigger the detection. " ] }, { "cell_type": "markdown", "id": "0822c349", "metadata": {}, "source": [ "#### Nose2tail" ] }, { "cell_type": "markdown", "id": "964cd6d1", "metadata": {}, "source": [ "**The nose2tail behavior is measuring if the nose of one mosue is closer than a threshold to the tail base of another mouse.** This is done by simply determining all nose-tail_base distances of two mice for all frames. It is calculated as follows:\n", "\n", "- For each frame: Check if the nose of mouse A is closer than ***params[\"close_contact_tol\"]*** to the tail base of mouse B\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***" ] }, { "cell_type": "markdown", "id": "c7a25447", "metadata": {}, "source": [ "![B_W_nose2tail](./Assets/Behaviors/B_W_nose2tail.gif)" ] }, { "cell_type": "markdown", "id": "2c364e97", "metadata": {}, "source": [ "The video above illustrates multiple B_W_nose2tail contacts between the black and the white mouse. Note that nose2tail is specifically measuring the distance between nose and tail base and not all of the tail (the behavior does not trigger at e.g. 4:36 when then nose of the black mouse is close to the tail (but not the tail base) of the white mouse). Further this behavior is directional, which means that the order of the animal ids denots which mouse sniffs on whichs tail base." ] }, { "cell_type": "markdown", "id": "519130b8", "metadata": {}, "source": [ "#### Nose2body" ] }, { "cell_type": "markdown", "id": "e50ea1b8", "metadata": {}, "source": [ "**The nose2body behavior is measuring if the nose of one mosue is closer than a threshold to any body part of another mouse.** This is done by simply determining all nose-body part distances of two mice for all frames. It is calculated as follows:\n", "\n", "- For each frame: Check if the nose of mouse A is closer than ***params[\"close_contact_tol\"]*** to any body part of mouse B\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***" ] }, { "cell_type": "markdown", "id": "4641696c", "metadata": {}, "source": [ "![B_W_nose2body](./Assets/Behaviors/B_W_nose2body.gif)" ] }, { "cell_type": "markdown", "id": "6b559e6f", "metadata": {}, "source": [ "In the video above it can be seen how the black mouse first approaches the white mouse from behind, then has an extended nose2nose interaction with it. Both instances trigger the nose2body behavior detection. This behavior is directional." ] }, { "cell_type": "markdown", "id": "e041042f", "metadata": {}, "source": [ "#### Following" ] }, { "cell_type": "markdown", "id": "ff7c8dc9", "metadata": {}, "source": [ "**The following behavior is determining if one mouse is following another mouse.** This is done by determining the distances between nose and tail base of two mice over multiple frames in teh past. I.e. is the Nose of mouse A close to the position where the tail base of mouse B has been a few frames before for multiple frames?\n", "\n", "\n", "- For each Frame: \n", " - Calculate distances between the nose of mouse A and the tail base of mouse B for up to ***params[\"follow_frames\"]*** delay (i.e. how close is the nose of mouse A to the tail base of mouse B at the current frame and up to ***params[\"follow_frames\"]*** in the past)\n", " - This results in an array of length ***params[\"follow_frames\"]*** containing distances from the tail base of mouse B to the current and past nose positions of mouse A\n", " - Check if the distance between the nose of mouse A and the tailbase of mouse B is smaller than the distance between the noses or tail bases of both mice (i.e. are the animals oriented the right way)\n", " - A frame is labeled as A_B_following if all of the following (pun not intended) apply:\n", "\n", " - The shortest nose-tailbase distance in the array for this frame is smaller than ***params[\"follow_tol\"]***\n", " - The mice are oriented the right way\n", " - The speed of the mice is > ***params[\"stationary_threshold\"]***\n", "\n", "- Median filter the resulting boolean array with filter width ***params[\"median_filter_width\"]***\n", "- Remove all instances of following that are shorter than ***params[\"min_follow_frames\"]***" ] }, { "cell_type": "markdown", "id": "f3c3dfbd", "metadata": {}, "source": [ "![B_W_following](./Assets/Behaviors/B_W_following.gif)" ] }, { "cell_type": "markdown", "id": "578c590f", "metadata": {}, "source": [ "In the video above the black mouse is following the white mouse along the arena. As one can see, the detection of following stops when either the black mouse stops (0:14) or it's nose deviates too much from the path the tail base of the white mosue has taken (0:19). Unsurprisingly, this behavior is directional." ] }, { "cell_type": "markdown", "id": "e95197c2", "metadata": {}, "source": [ "### Limitations and Trouble Shooting" ] }, { "cell_type": "markdown", "id": "78c00c7a", "metadata": {}, "source": [ "One of the very first steps in conducting valid science is to actually understand the tools one is working with. In this sense, congratulations for reading this tutorial. Because fully automatized behavior detection can never be perfect and there might be setups where certain things work better and other things work worse, we offer various tools to inspect detected behaviors and make it possible to adjust parameters. These tools are explained in our [Deepof utilities tutorial](https://deepof.readthedocs.io/en/latest/tutorial_notebooks/deepof_unsupervised_tutorial.html). To conclude this tutorial, let's list a few points to consider in this regard when working with supervised behaviors:\n", "\n", "1. The supervised behaviors in deepof are all based on the tracked bodypart markers of the mice. This means that tracking errors can translate to errors in behavior detection. If there are minor issues with your tracked data (like missing markers in some frames etc.), deepof can deal with them automatically. However, if there are major issues that lead to the overall reliability of the tracked data being low, this will negatively affect the reliability of the detected behaviors.\n", "2. The supervised behaviors in deepof are mostly based on traditional algorithms and they will detect exactly what is described in this tutorial. I.e. if you label the left hind-leg of a mouse as \"nose\", nose2nose interactions will respectively be detected when the left hind legs of the mice come close. The algorithms are designed to extract useful behaviors, but special cases that lead to unexpected detections may arise in your data. I.e. if you see something surprising, verify it by further investigation.\n", "3. If you have questions that go beyond these tutorials, feel always free to contact us on githup and open an issue (https://github.com/mlfpm/deepof/issues). \n", "\n", "This was all for this tutorial. Have fun using DeepOF!" ] } ], "metadata": { "kernelspec": { "display_name": "dof", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 5 }