{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fit a function to a signal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example can be referenced by [citing the package](https://github.com/neuropsychology/NeuroKit#citation).\n", "\n", "This small tutorial will show you how to use Python to estimate the best fitting line to some data. This can be used to find the optimal line passing through a signal." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Load packages\n", "import numpy as np\n", "import pandas as pd\n", "import scipy.optimize\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import neurokit2 as nk\n", "\n", "plt.rcParams['figure.figsize'] = [14, 8] # Increase plot size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fit a linear function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will start by generating some random data on a scale from 0 to 10 (the x-axis), and then pass them through a function to create its y values." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.random.uniform(0., 10., size=100)\n", "y = 3. * x + 2. + np.random.normal(0., 10., 100)\n", "plt.plot(x, y, '.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No in this case we **know** that the best fitting line will be a linear function (i.e., a straight line), and we want to find its parameters. A linear function has two parameters, the **intercept** and the **slope**.\n", "\n", "First, we need to create this function, that takes some **x** values, the parameters, and return the **y** value." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def function_linear(x, intercept, slope):\n", " y = intercept + slope * x\n", " return y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, using the power of **scipy**, we can optimize this function based on our data to find the parameters that minimize the least square error. It just needs the function and the data's x and y values." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.19966702, 2.12600208])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params, covariance = scipy.optimize.curve_fit(function_linear, x, y)\n", "params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So the optimal parameters (in our case, the **intercept** and the **slope**) are returned in the **params** object. We can unpack these parameters (using the star symbol \\*) into our linear function to use them, and create the predicted **y** values to our **x** axis." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fit = function_linear(x, *params)\n", "\n", "plt.plot(x, y, '.')\n", "plt.plot(x, fit, '-')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Non-linear curves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also use that to approximate non-linear curves." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzIAAAHgCAYAAAB+XFggAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3Sc5Zn38d89RTPqstUlW5ZtuXcw2EAwpixLCS2BEJYkm0IICSGbN/tusstmNz1vsiG7YTfJhhpCQkihhU4aYCCm2MbYxsYFV1kukmx1Tb/fPyTZhrjI1kjPPM98P+f4uMxo5jJzjnl+uq7rfoy1VgAAAADgJj6nCwAAAACA40WQAQAAAOA6BBkAAAAArkOQAQAAAOA6BBkAAAAArkOQAQAAAOA6AafeuKyszNbX1zv19gAAAAAy3PLly1usteWHe8yxIFNfX69ly5Y59fYAAAAAMpwxZtuRHmO0DAAAAIDrEGQAAAAAuA5BBgAAAIDrOLYjAwAAAECKx+NqbGxUJBJxuhTHhMNhjRkzRsFgcNBfQ5ABAAAAHNTY2KjCwkLV19fLGON0OSPOWqvW1lY1NjZq/Pjxg/46RssAAAAAB0UiEZWWlmZliJEkY4xKS0uPuyNFkAEAAAAclq0hZsCJ/P0JMgAAAECW+9a3vqUZM2Zo9uzZmjt3rl555RVdd911Wrt2bdrfq6CgIC2vw44MAAAAkMWWLl2qxx9/XCtWrFAoFFJLS4tisZjuvPNOp0s7KjoyAAAAQBbbtWuXysrKFAqFJEllZWWqqanR4sWLtWzZMknSXXfdpcmTJ2vx4sX65Cc/qc9+9rOSpI9+9KP63Oc+p9NPP10TJkzQAw88IEnq6urSueeeq5NOOkmzZs3S7373u7TXfcyOjDFmrKR7JVVJSkm63Vp767ueYyTdKukiST2SPmqtXZH2agEAAAAP+9pjb2ptU0daX3N6TZG+csmMIz5+/vnn6+tf/7omT56s8847T1dffbXOOuusA483NTXpG9/4hlasWKHCwkKdc845mjNnzoHHd+3apRdffFFvvfWWLr30Ul155ZUKh8N6+OGHVVRUpJaWFi1cuFCXXnppWneBBtORSUj6R2vtNEkLJd1ojJn+rudcKGlS/4/rJf1v2ioEAAAAMGwKCgq0fPly3X777SovL9fVV1+te+6558Djr776qs466yyNHj1awWBQV1111Tu+/vLLL5fP59P06dO1Z88eSX1HKt98882aPXu2zjvvPO3cufPAY+lyzI6MtXaXpF39v+40xqyTVCvp0M2fyyTda621kl42xpQYY6r7vxYAAADAIBytczKc/H6/Fi9erMWLF2vWrFn62c9+duCxvkv8IxsYSTv0uffdd5+am5u1fPlyBYNB1dfXp/2Gn8e1I2OMqZc0T9Ir73qoVtKOQ37f2P9n7/76640xy4wxy5qbm4+vUgAAAABpt379em3cuPHA71euXKlx48Yd+P2pp56q559/Xvv371cikdCDDz54zNdsb29XRUWFgsGgnn32WW3bti3tdQ/61DJjTIGkByV93lr77sG9ww27/VV0s9beLul2SZo/f/7Rox0AAACAYdfV1aWbbrpJbW1tCgQCamho0O23364rr7xSklRbW6ubb75ZCxYsUE1NjaZPn67i4uKjvua1116rSy65RPPnz9fcuXM1derUtNdtjtUqkiRjTFDS45Kesdb+52Eev03Sc9ba+/t/v17S4qONls2fP98OnIIAAAAAZKt169Zp2rRpTpdxVF1dXSooKFAikdAVV1yhj3/847riiivS+h6H++9gjFlurZ1/uOcfc7Ss/0SyuyStO1yI6feopI+YPgsltbMfk1lSKRpgAAAAODFf/epXNXfuXM2cOVPjx4/X5Zdf7nRJgxotO0PShyWtNsas7P+zmyXVSZK19ieSnlTf0cub1Hf88sfSXypOxGtb9+n7v1+vZVv36+efWKDTJpY6XRIAAABc5pZbbnG6hL8ymFPLXtThd2AOfY6VdGO6ikL6/Nsja9TSFVMo4NNvl+8gyAAAAMATBr3sD/eJxJPauLdLn1k8UbvaI3rmzd2KJpIKBfxOlwYAAIBDWGvTerNItxnM3v67Hdfxy3CXdbs6lExZzawt1sWzq9UZSejFjS1OlwUAAIBDhMNhtba2ntDFvBdYa9Xa2qpwOHxcX0dHxsPW7GyXJM2sLVZ5QUhF4YCeWLVL506rdLgyAAAADBgzZowaGxuVzfdZDIfDGjNmzHF9DUHGw1bvbNfo/BzVFIdljNF50yv13PrmrG9dAgAAZJJgMKjx48c7XYbrMFrmYWt2dmhGTdGB0DKvbpT2dcfU1B5xuDIAAABgaAgyHhWJJ7VhT6dm1R686+rMmiJJ0urGdqfKAgAAANKCIONR63d3KtG/6D9gWnWR/D5zYHcGAAAAcCuCjEdtaemWJE2uLDjwZ+GgX5MqCrSaIAMAAACXI8h4VEtXVJJUXvDOY+xm1hZrzc72rD3eDwAAAN5AkPGo5s6ocvw+FeW+82C6mTVFau2OaXcHC/8AAABwL4KMRzV3RVVWkPNXxyzPGtO3M8PCPwAAANyMIONRLV0xlReG/urPp1X3nVy2blfnSJcEAAAApA1BxqOaO6MqK/jrIJOXE1BtSa7ebu5yoCoAAAAgPQgyHtXSFT1sR0aSGioKtGkvQQYAAADuRZDxoGTKqrXr8B0ZSZpYXqDNLV1KpTi5DAAAAO5EkPGg/T0xpaxUVpBz2McnVuQrEk+pqb13hCsDAAAA0oMg40EH7iFTGD7s4w3lfTfJZLwMAAAAbkWQ8aDmzr4gc+SOTF+Qebu5e8RqAgAAANKJIONBBzsyh9+RKc3PUUlekJPLAAAA4FoEGQ860JE5QpAxxmhiOSeXAQAAwL0IMh7U0hVTKOBTYShwxOdMLM/XZjoyAAAAcCmCjAe19N8M0xhzxOc0VBSopSumtp7YCFYGAAAApAdBxoOau6JHHCsbMLF8YOGfrgwAAADchyDjQc2dUZUf4WaYAw4Emb2cXAYAAAD3Ich40L7umErzD3/08oCxo/OU4/dpEx0ZAAAAuBBBxoM6IwkVho+86C9Jfp/R+LJ8vc3JZQAAAHAhgozHxJMp9caTKgwHj/nchooCdmQAAADgSgQZj+mOJiTpmB0Zqe8I5u37ehSJJ4e7LAAAACCtCDIe0xk5jiBTUaCUlba19gx3WQAAAEBaEWQ8piMSlzTYjkzfyWWb2JMBAACAyxBkPOZgR+bYOzITyvMlcS8ZAAAAuA9BxmO6jmO0LC8noNqSXIIMAAAAXIcg4zGd0YHRsmN3ZKS+rszmZm6KCQAAAHchyHjMwGhZQejYHRmpb09mc3OXrLXDWRYAAACQVgQZjzmeU8ukvo5MdyypPR3R4SwLAAAASCuCjMd0ROLK8fsUDvoH9fyBk8s2sycDAAAAFyHIeExXJDHobox0yMllLezJAAAAwD0IMh7TGUmo4DiCTFVRWHk5fr3NvWQAAADgIgQZj+mMxI+rI2OM6Tu5jI4MAAAAXIQg4zGdkYQKQ4M7ennAhLICdmQAAADgKgQZj+mKHt+OjNS3J7OzrVeReHKYqgIAAADSiyDjMce7IyP1nVxmrbSF8TIAAAC4BEHGYzoicRWFj3O0rP/kss3NBBkAAAC4A0HGQ1Ipe0KjZePL+o9gZk8GAAAALkGQ8ZCeeFLW6riDTF5OQLUluSz8AwAAwDUIMh7SGYlLkgqO89QySRzBDAAAAFchyHhIZyQh6fg7MpI0oSxfb+/tkrU23WUBAAAAaUeQ8ZCBjsyJBJmJFQXqjiW1tzOa7rIAAACAtCPIeMjBjswJjJaVFUhi4R8AAADuQJDxkKGMlk2sGDi5jD0ZAAAAZD6CjIcMJchUFYWVl+Pn5DIAAAC4AkHGQ7qiA6eWHX+QMcZoQnk+HRkAAAC4AkHGQ3piSUl994U5EQ3lBdq0pzOdJQEAAADDgiDjIb2xpEIBn/w+c0JfP6myUE3tkQOnnwEAAACZiiDjIT2xpPJy/Cf89ZMqBk4uY7wMAAAAmY0g4yF9QebExsqkvo6MJG1gvAwAAAAZjiDjIb3xhHKH0JGpG52nnIBPm/ZychkAAAAyG0HGQ4Y6Wub3GU0sL9BGOjIAAADIcAQZD+mJJZUbPPEgI/XtyWzYQ0cGAAAAmY0g4yG9Q+zISNLkygLtbOtVdzSRpqoAAACA9CPIeEhPLDGkZX9JaqjoW/h/u5muDAAAADIXQcZDemPJIS37S9Kkyr4jmBkvAwAAQCYjyHhIT3zoo2XjRucpx+/Txr0s/AMAACBzHTPIGGPuNsbsNcasOcLjxcaYx4wxbxhj3jTGfCz9ZWIwetLQkQn4fZpQnq9NdGQAAACQwQbTkblH0gVHefxGSWuttXMkLZb0fWNMztBLw/FIpqxiiZTygkPbkZGkhooCbaAjAwAAgAx2zCBjrV0iad/RniKp0BhjJBX0P5cjr0ZYT6zvP/lQR8skaXJloRr39x54TQAAACDTpGNH5oeSpklqkrRa0j9Ya1NpeF0ch95YUpKGPFom9d1Lxlppc3P3kF8LAAAAGA7pCDJ/K2mlpBpJcyX90BhTdLgnGmOuN8YsM8Ysa25uTsNbY0BPf5BJR0fm4MlljJcBAAAgM6UjyHxM0kO2zyZJWyRNPdwTrbW3W2vnW2vnl5eXp+GtMSCdQWZcab6CfqONe1n4BwAAQGZKR5DZLulcSTLGVEqaImlzGl4Xx6E33rfPkjvEG2JKUtDv0/iyfG3k5DIAAABkqGNe9Rpj7lffaWRlxphGSV+RFJQka+1PJH1D0j3GmNWSjKQvWWtbhq1iHFY6OzKSNKmyUKsb29PyWgAAAEC6HTPIWGuvOcbjTZLOT1tFOCEDQSY3mJ4gM62qUE+s2qWuaEIFoaF3eQAAAIB0SsdoGTJAb5o7MlOr+s5rWL+bhX8AAABkHoKMRxwcLUtP92RqdaEkad2ujrS8HgAAAJBOBBmPGLh5ZTruIyNJtSW5KgwH9NZuggwAAAAyD0HGI9I9WmaM0bSqIq3bxWgZAAAAMg9BxiN64kkF/UZBf/o+0mnVhVq/u1OplE3bawIAAADpQJDxiN5YMm0nlg2YWl2krmhCO9t60/q6AAAAwFARZDyiJ5ZI26L/gKlVfQv/a1n4BwAAQIYhyHhETyyZtv2YAVOqCmWM9BZ7MgAAAMgwBBmP6I0l03Zi2YC8nIDqS/M5ghkAAAAZhyDjEcPRkZH6Fv45ghkAAACZhiDjET3xpHLTvCMjSVOrirRtX4+6o4m0vzYAAABwoggyHtEbSygvzaeWSdK06iJZK63fw54MAAAAMgdBxiOGa7Rs4OQyFv4BAACQSQgyHjEcy/6SNGZUrgpDARb+AQAAkFEIMh4xXB0ZY4ymsvAPAACADEOQ8YBUyqp3mJb9pb6F/7d2dSqVssPy+gAAAMDxIsh4QDSRkiTlDsOyvyTNqClSZzSh7ft6huX1AQAAgONFkPGASDwpSQoFhufjnFlbLElavbN9WF4fAAAAOF4EGQ+IJPqCTHiYOjKTKwuV4/dpDUEGAAAAGYIg4wGReN9oWTg4PB9nTsCnqdWFdGQAAACQMQgyHjAwWjZcHRmpb7xszc52WcvCPwAAAJxHkPGAg0Fm+D7OmTXF6oiw8A8AAIDMQJDxgIFTy8KB4evIzGLhHwAAABmEIOMBB04tG8bRsslVBQr6jdbs5MaYAAAAcB5BxgOGe9lfkkIBv6ZUFXJyGQAAADICQcYDosN8/PKAWbXFWs3CPwAAADIAQcYDRuLUMqnv5LL23rga9/cO6/sAAAAAx0KQ8YADo2WB4f04WfgHAABApiDIeMBIdWQmVxYq4DMEGQAAADiOIOMBAx2Z0DB3ZMJBvyZXsvAPAAAA5xFkPCCSSCrgMwr4h//jnFVbrDUs/AMAAMBhBBkPiMSTwz5WNmDWmGLt72HhHwAAAM4iyHhAJJ4a1nvIHGru2BJJ0sodbSPyfgAAAMDhEGQ8IBpPKhQYmY7MlKpChYM+vb6dIAMAAADnEGQ8IJJIjlhHJuj3aVZtsVbu2D8i7wcAAAAcDkHGA6Lx1IjtyEjSvLpRWtPUoVgiNWLvCQAAAByKIOMBfR2ZkQsyc8eWKJZIad2ujhF7TwAAAOBQBBkPGMllf0maV9e38P/6dsbLAAAA4AyCjAdE4kmFR2jZX5Kqi3NVWRTi5DIAAAA4hiDjASN5H5kB88aO0usEGQAAADiEIOMBkXhKoREcLZOkuXUl2tbao33dsRF9XwAAAEAiyHhCdISX/SVp3oEbY7InAwAAgJFHkPGASDylUGBkP8pZY4rl9xmt5MaYAAAAcABBxgOc2JHJywloSmUhezIAAABwBEHG5RLJlBIpO6Knlg2YW1eilTvalErZEX9vAAAAZDeCjMtFEilJGtH7yAyYN7ZEnZGENrd0jfh7AwAAILsRZFwuEk9K0oiPlknSSeNGSZKWbWXhHwAAACOLIONyUQc7MhPK8lWan6PXCDIAAAAYYQQZl3OyI2OM0fz6UVq2bd+IvzcAAACyG0HG5QaCTMiBZX9JOqV+tLa19mhvR8SR9wcAAEB2Isi4XCTu3GiZJM2vHy1JjJcBAABgRBFkXC7q4GiZJM2oKVJu0K/XtjJeBgAAgJFDkHG5SMLZIBP0+zSvroQ9GQAAAIwogozLOT1aJvWNl61t6lBnJO5YDQAAAMguBBmXc3rZX5JOqR+llJVe397mWA0AAADILgQZl8uEjsy8ulHy+4yWsScDAACAEUKQcbkD95FxsCNTEApoenWRXiXIAAAAYIQQZFzO6WX/AfPrR2nljjbFEilH6wAAAEB2IMi43MBoWSjg7Ed5Sv1oReIpvdnU7mgdAAAAyA4EGZeLJpLKCfjk8xlH6zil/8aYr2xhvAwAAADDjyDjctF4SmGHuzGSVF4YUkNFgZa+3ep0KQAAAMgCzl8BY0gi8aTj+zEDTptQqte27lM8yZ4MAAAAhhdBxuUyKcicPrFUPbGkVjVyPxkAAAAML4KMy0XiKUfvIXOoBRNKJYnxMgAAAAy7Y14BG2PuNsbsNcasOcpzFhtjVhpj3jTGPJ/eEnE0kUTmdGRG5+doalWh/kKQAQAAwDAbzLfy75F0wZEeNMaUSPqxpEuttTMkXZWe0jAYkXjS0ZthvtvpE8u0fNv+AzfqBAAAAIbDMYOMtXaJpKOdqft3kh6y1m7vf/7eNNWGQYjEUwplyGiZJJ02sVTRREqvb2dPBgAAAMMnHVfAkyWNMsY8Z4xZboz5SBpeE4MUiScVyqCOzKnjR8tnpKWbGS8DAADA8ElHkAlIOlnSxZL+VtK/GWMmH+6JxpjrjTHLjDHLmpub0/DWiCYyZ9lfkopzg5pZW6yX2ZMBAADAMErHFXCjpKettd3W2hZJSyTNOdwTrbW3W2vnW2vnl5eXp+GtkUnHLw84bUKpXt+xX70x9mQAAAAwPNIRZH4n6UxjTMAYkydpgaR1aXhdDEJfkMmcjowkLZxYqnjSatm2o61WAQAAACcucKwnGGPul7RYUpkxplHSVyQFJcla+xNr7TpjzNOSVklKSbrTWnvEo5qRXtFEKqNOLZOkU+tHK+AzemlTq86cROcNAAAA6XfMIGOtvWYQz/mepO+lpSIMmrU2I0fL8kMBnVQ3Si9sbNY/XzjV6XIAAADgQZk1k4TjEk9apawybrRMkhZNLtObTR1q7ow6XQoAAAA8KPOugDFokUTfMn2mdWQkadHkvpGylza1OFwJAAAAvIgg42KReF+QCWVgkJlRU6xReUEt2cAx2wAAAEg/goyLReMpSVI4kHkfo99n9J5J5VqysUWplHW6HAAAAHhM5l0BY9AGOjKZOFomSYsmlamlK6q3dnc6XQoAAAA8hiDjYpGBjkymBpn+PZklGxkvAwAAQHoRZFxsYNk/lIGjZZJUWRTWlMpCvUCQAQAAQJpl5hUwBiXTR8ukvmOYX9uyXz2xhNOlAAAAwEMIMi52cLQscz/GRZPLFUum9MrmfU6XAgAAAA/J3CtgHJMbOjKn1I9WKODT8xzDDAAAgDQiyLjYgSATyNwgEw76dfrEUj27fq+s5RhmAAAApAdBxsWiicwfLZOkc6ZValtrj95u7na6FAAAAHhEZl8B46gGOjKhDB4tk6RzplZIkv781h6HKwEAAIBXEGRczC0dmdqSXE2rLtKf1u11uhQAAAB4RGZfAeOoIvGkjJFy/Jn/MZ47tULLtu1Xe0/c6VIAAADgAZl/BYwjisSTCgf8MsY4XcoxnTOtQsmU1fPcHBMAAABpQJBxsUg8lfFjZQPmjClRaX6O/ryOPRkAAAAMnTuugnFYkXgyo+8hcyi/z+jsqRV6dn2zEsmU0+UAAADA5QgyLhZJpBQKuOcjPHdqhdp741qxvc3pUgAAAOBy7rkKxl9xU0dGkt4zqUxBv9GfOIYZAAAAQ0SQcbFIPJnx95A5VGE4qIUTSvWHtQQZAAAADA1BxsWi8ZTCLhotk6TzZ1Rpc3O3Nu7pdLoUAAAAuJi7roLxDpGEu0bLJOlvp1fKGOnpNbudLgUAAAAuRpBxsaiLjl8eUFEU1kl1o/T0mwQZAAAAnDh3XQXjHdzYkZGkC2ZU6c2mDu3Y1+N0KQAAAHApgoyLReJJhQPuCzJ/O6NKkvQMXRkAAACcIIKMi0VcOFomSXWleZpeXcSeDAAAAE6Y+66CcYDb7iNzqAtmVmn59v3a2xFxuhQAAAC4EEHGpay1iiZSrrqPzKEumFkla6VnuKcMAAAATgBBxqWiiZQkuXK0TJImVRRoQlm+nl6zy+lSAAAA4ELuvAqGIvGkJCnkwmV/STLG6IKZVXp58z61dEWdLgcAAAAuQ5BxqUjc3R0ZSbpkTo2SKaunWPoHAADAcXLvVXCWG+jIuPH45QFTqwrVUFGgx1Y2OV0KAAAAXIYg41KRRH+Qcemyv9Q3XnbpnBq9unWfdrX3Ol0OAAAAXIQg41JeGC2TpPfOrpYkPbGKpX8AAAAMnruvgrNYNO7+jowkTSgv0MzaIj36BuNlAAAAGDyCjEtFXH788qEunVOjVY3t2trS7XQpAAAAcAn3XwVnKbcfv3yoi2fXSJIeoysDAACAQSLIuFTEI6NlklRbkqtT6kfp0TeaZK11uhwAAAC4AEHGpaIeWfYfcOmcGm3c26U3mzqcLgUAAAAu4I2r4CzkheOXD3XJnBrl+H16cEWj06UAAADABQgyLuWl0TJJKsnL0XnTK/S7lU2K9R9kAAAAABwJQcalBu4jEwp45yO88uQx2tcd03Pr9zpdCgAAADKcd66Cs0wknpTfZxT0e+cjXDSpXGUFIT2wnPEyAAAAHJ13roKzTCSeUthD3RhJCvh9umJejf781l61dkWdLgcAAAAZzFtXwlkkkkh6Zj/mUO8/eYwSKatHuacMAAAAjoIg41KRuDeDzNSqIs2qLWa8DAAAAEdFkHGpaDylkEfuIfNu7z+pVm82dejNpnanSwEAAECG8uaVcBaIJpIKB7zXkZGkK+aNUSjg0y9f2e50KQAAAMhQBBmXisRTCnu0I1OcF9R7Z9fokdd3qiuacLocAAAAZCBvXglnAa/uyAy4dmGdumNJPbqSpX8AAAD8NYKMS3n11LIB88aWaGpVoe57ZZustU6XAwAAgAxDkHEpL4+WSZIxRtcuHKc3mzr0RiNL/wAAAHgn714Je1wk7t1l/wGXz61RXo5f9728zelSAAAAkGEIMi4ViacU8vBomSQVhoO6bG6tHlvVpPaeuNPlAAAAIIMQZFwqGk8qFPD+x3ftgjpF4in9dvkOp0sBAABABvH+lbBHeX3Zf8DM2mKdOn60fvrSViWSKafLAQAAQIYgyLhQMmUVT1pPL/sf6rr3jNfOtl498+Yep0sBAABAhsiOK2GPicSTkpQVHRlJOndapcaV5unOFzc7XQoAAAAyBEHGhQ4EmSzYkZEkv8/o42eM1+vb27R8236nywEAAEAGyI4rYY+JJvp2RbKlIyNJV548RkXhgO5+cYvTpQAAACADEGRcKNtGyyQpPxTQNQvq9NSaXdqxr8fpcgAAAOAwgowLReIDHZns+vg+enq9fMbozhfYlQEAAMh22XUl7BGRRF9Hxus3xHy36uJcve+kWt3/2g7t7Yw4XQ4AAAAcdMwgY4y52xiz1xiz5hjPO8UYkzTGXJm+8nA4B5f9syvISNJnFjcokUzpjiV0ZQAAALLZYDoy90i64GhPMMb4JX1X0jNpqAnHEM3S0TJJqi/L12Vza/WLl7ertSvqdDkAAABwyDGvhK21SyTtO8bTbpL0oKS96SgKR5eNy/6HuvHsBkUSSd3FCWYAAABZa8jf0jfG1Eq6QtJPBvHc640xy4wxy5qbm4f61lnrwI5MltxH5t0aKgp00axq3bt0m9p6Yk6XAwAAAAek40r4B5K+ZK1NHuuJ1trbrbXzrbXzy8vL0/DW2engqWXZ2ZGRpJvOaVBXNMF9ZQAAALJUOoLMfEm/MsZslXSlpB8bYy5Pw+viCLJ9tEySplYV6eJZ1brzxS1q7mRXBgAAINsMOchYa8dba+uttfWSHpD0GWvtI0OuDEeUrfeRebd/PH+yoomU/ufPG50uBQAAACNsMMcv3y9pqaQpxphGY8wnjDE3GGNuGP7ycDjZfPzyoSaUF+jqU8bql69s17bWbqfLAQAAwAgKHOsJ1tprBvti1tqPDqkaDEo0kVKO3yefzzhdiuP+4dxJemhFo77/+w3672vmOV0OAAAARkh2zya5VCSeVCjLx8oGVBaF9Yn3jNejbzRpzc52p8sBAADACOFq2IWiiWRWL/q/26fOmqiSvKC+/eQ6WWudLgcAAAAjgCDjQpF4KusX/Q9VFA7q8+dO0l/ebtXv1+5xuhwAAACMAK6GXSgST2b9ov+7fWjhOE2uLNA3n1h74DAEAAAAeBdBxoUicUbL3i3g9+krl8zQjn29uoubZAIAAHgeQcaFIvGUcgkyf+WMhjKdP71SP3p2k3a3R5wuBwAAAMOIIONCvfGkwjkEmcP58sXTlUhZfeepdU6XAgAAgGFEkHGhSDypXJb9D6uuNE+fWjRBj6xs0ldO/vcAACAASURBVEubWpwuBwAAAMOEq2EX6o0nGS07ihvPblB9aZ7+9eHVLP4DAAB4FEHGhXpjSeUyWnZE4aBf37x8lra29uhHz25yuhwAAAAMA4KMC/VyatkxvWdSma6YV6ufPP+2Nu7pdLocAAAApBlBxoUijJYNypcvnqb8UEA3P7xaqZR1uhwAAACkEUHGZeLJlOJJS5AZhNKCkG6+cJpe27pfv1m2w+lyAAAAkEYEGZcZWF5nR2Zwrpo/RqeOH61vP7lOzZ1Rp8sBAABAmhBkXKa3P8iwIzM4xhh9+4pZisRT+uqjbzpdDgAAANKEIOMykVhKkhgtOw4NFQX63LkNemL1Lj25epfT5QAAACANCDIu08to2Qn51FkTNbO2SP/2yBrt6445XQ4AAACGiCDjMgeCDB2Z4xL0+/S9K+eoIxLXVxgxAwAAcD2CjMv0xtiROVHTqot00zmT9NgbTXp6DSNmAAAAbkaQcRlOLRuaTy+eqOnVRfryI2u0nxEzAAAA1yLIuAyjZUMT9Pt0y1Vz1NYT11cfY8QMAADArQgyLjMwWkaQOXHTa4r02XMa9LuVTXrmzd1OlwMAAIATQJBxmQP3kcnhoxuKzyxu0LTqIv3rw2vU1sOIGQAAgNtwNewyEW6ImRY5AZ9uuWq22npi3CgTAADAhQgyLsNoWfrMqCnWZ89p0CMrm/T4qianywEAAMBxIMi4TG88qYDPKOjno0uHG89u0JyxJfrXh9dod3vE6XIAAAAwSFwNu0xvPEk3Jo2Cfp9+cPVcxRIp/d/fvqFUyjpdEgAAAAaBIOMykXhSYe4hk1bjy/L15fdO04ubWvSzpVudLgcAAACDQJBxmd4YHZnh8Hen1uncqRX6zlNvaeOeTqfLAQAAwDEQZFyG0bLhYYzRd94/WwWhgP7hVysVS6ScLgkAAABHQZBxmd54itGyYVJeGNJ33j9ba3d16Jbfr3e6HAAAABwFQcZlIrGkcoN8bMPlb6ZX6kML63T7ks3681t7nC4HAAAAR8AVscswWjb8vnzxdE2vLtIXfvOGmtp6nS4HAAAAh0GQcZneeFK5jJYNq3DQrx9de5LiiZQ+d//riifZlwEAAMg0BBmX6Y0lFaYjM+zGl+Xr2++bpWXb9uuWZ9iXAQAAyDQEGZeJMFo2Yi6bW6sPLazTbUs269E3mpwuBwAAAIcgyLgMOzIj69/fO0On1I/SFx94Q2t2tjtdDgAAAPoRZFzEWsuOzAjLCfj042tP1qi8HH3q58vV2hV1uiQAAACIIOMq0URK1oodmRFWXhjSbR8+WS1dUd3wi+WKxJNOlwQAAJD1CDIuMnABzWjZyJs9pkS3XDVHr23dr8//aqWSKet0SQAAAFmNIOMivQNBhtEyR1wyp0Zfvniann5zt7722JuyljADAADglIDTBWDwemN0ZJx23ZkTtKcjojte2KKKwpA+e84kp0sCAADISgQZFxnoyLAj46x/uXCamjujuuX3GxQK+PXJRROcLgkAACDrEGRcJMJoWUbw+YxuuWqO4kmrbz25Tsb0dWoAAAAwcggyLtIbS0mSwgFWm5wW8Pv0gw/OlZXVN59YJ4kwAwAAMJIIMi7SE0tIkvJDfGyZIOj36dYPzpO1r+ubT6xTTyypm85pkDHG6dIAAAA8j2/tu0hP/7I/QSZzBP0+/c818/S+k2r1n3/YoK8/vlYpjmYGAAAYdlwRu0hXtL8jw45MRgn4fbrlyjkqzg3qpy9tVUdvQt99/ywF/HyfAAAAYLgQZFxkYLQsj45MxvH5jP79vdM1Ki9H//mHDeqIxPU/18zjhDkAAIBhwreMXaQ7yn1kMpkxRp87d5K+dukM/WHtHn30p6+qMxJ3uiwAAABPIsi4SE8sodygX34fy+SZ7O9Pr9cPrp6rZVv365o7XlZLV9TpkgAAADyHIOMi3bEki/4ucfm8Wt3xkfnatLdLH/jJUjXu73G6JAAAAE8hyLhIdzSh/BBjZW5x9tQK/fwTC9TcFdWV/7tUG/d0Ol0SAACAZxBkXKQ7mlReDh0ZNzmlfrR+86nTlLRWV922VKsa25wuCQAAwBMIMi7SE0tw9LILTasu0gM3nKaCUEDX3vmKVu4gzAAAAAwVQcZF2JFxr3Gl+fr1p07TqLwcffjOV7Ri+36nSwIAAHA1goyL9LAj42q1Jbn61fULNbogRx+561XCDAAAwBAQZFykO5pgR8blakpy9evrT1NZQY4+everWrerw+mSAAAAXIkg4yLdsSQ7Mh5QVRzWL65boPxQQB++61Vtael2uiQAAADXIci4SE8soTx2ZDxhzKg8/fwTC2St1YfufEVNbb1OlwQAAOAqBBmXiCVSiietCggyntFQUaCfffxUdfTG9aG7XlFrV9TpkgAAAFyDIOMS3dGEJCmP0TJPmVlbrLs/doqa2nr1kbtfVUck7nRJAAAArkCQcYnuWF+QyWfZ33NOqR+tn3zoZG3Y06nr7lmmSDzpdEkAAAAZ75hBxhhztzFmrzFmzREev9YYs6r/x1+MMXPSXyZ6Yn0Xt3kcv+xJi6dU6D8/MFevbdunG+9boXgy5XRJAAAAGW0wHZl7JF1wlMe3SDrLWjtb0jck3Z6GuvAuA6Nl3BDTuy6ZU6NvXj5Tf3prr/7pt28olbJOlwQAAJCxjnlVbK1dYoypP8rjfznkty9LGjP0svBuAx0ZRsu87doF49TWE9f3nlmvkrwcfeWS6TLGOF0WAABAxkn3VfEnJD2V5teEpC6W/bPGZxZPVFtPTHe8sEUleUF9/rzJTpcEAACQcdIWZIwxZ6svyLznKM+5XtL1klRXV5eut84KPTFGy7KFMUY3XzRNbT1x/eCPG1WcG9THzhjvdFkAAAAZJS1XxcaY2ZLulHShtbb1SM+z1t6u/h2a+fPnswBwHLqjA6NldGSygTFG/+99s9QRietrj61VQSigq+aPdbosAACAjDHk45eNMXWSHpL0YWvthqGXhMOhI5N9An6fbv3gPJ05qUxffHCVfrtsh9MlAQAAZIxjXhUbY+6XtFhSmTGmUdJXJAUlyVr7E0n/LqlU0o/7l5IT1tr5w1VwthroyOQG6chkk3DQrzs+Ml+fvHeZvvjgKkmiMwMAAKDBnVp2zTEev07SdWmrCIfVHU0oL8cvn48TrLLNu8NMMmX1wVPZMQMAANltyKNlGBndsaTyOHo5aw2EmUWTyvXPD63W//xpo6xlzQwAAGQvgoxL9MQSKggxVpbNBsLMFfNq9f0/bNC//W6Nktw0EwAAZCm+xe8S3VE6MpByAj59/6o5qigK6bbnN2t3e1T/dfUcFYaDTpcGAAAwoujIuERPLKF8OjKQ5PMZ/cuF0/S1S2fo2fV7ddmPXtKmvZ1OlwUAADCiCDIu0bfsT0cGB/396fW677oF6uiN67IfvqSnVu9yuiQAAIARQ5Bxia4oHRn8tYUTSvXYTe9RQ2WhPn3fCv3zg6vUHU04XRYAAMCwI8i4RGckoSL2IHAY1cW5+u2nTtOnF0/Ur5ft0EX//YJWbN/vdFkAAADDiiDjEh2RuIpyCTI4vJyAT1+6YKp+9cmFSiStrvzfv+irj76pzkjc6dIAAACGBUHGBaKJpCLxlIoJMjiGBRNK9dTnz9SHFo7Tz5Zu1bnff15PrNrFPWcAAIDnEGRcoKO3b+ehKMyyP46tKBzU1y+bqYc/c4bKCkK68Zcr9IHblup1xs0AAICHEGRcoKN/PIjRMhyPuWNL9Ohnz9C3rpipLS3duuLHf9GNv1yhTXu7nC4NAABgyPgWvwu09xJkcGICfp+uXTBOl82t1e3Pv607XtiiJ1fv0kWzqvXZsxs0rbrI6RIBAABOCEHGBToGggynluEEFYQC+sL5U/T3p9frrhe36N6l2/TEql06b1qlbjqnQXPGljhdIgAAwHFhtMwFOiJ9OzLFueRODE1pQUhfvGCqXvrSOfo/503Wa1v36bIfvaRr73xZL2xs5lAAAADgGgQZF2C0DOlWnBfUP5w3SS9+6WzdfNFUbdzTpQ/f9aou+eGLemLVLiVTBBoAAJDZCDIuwGgZhkthOKjrF03UC186W9953yz1RJO68ZcrdO73n9MvX9muSDzpdIkAAACHRZBxgY5IXDkBn8JBv9OlwKNCAb8+eGqd/vCFs/S/156kotygbn54tc78j2d1x5LNBBoAAJBxCDIu0NEb52aYGBF+n9GFs6r1uxvP0C+vW6AplYX61pPrdPYtz+k3r+1QIplyukQAAABJBBlX6OhNcDNMjChjjE5vKNMvrlugX35ygSqKwvrig6t08X+/qFe37HO6PAAAAIKMG3RE4iz6wzGnTyzTI585XT++9iR1RRP6wG1L9cUH3tC+7pjTpQEAgCxGkHGBdkbL4DBjjC6aVa0/fGGRbjhroh5asVPnfv85Pb1ml9OlAQCALEWQcYGO3jgnliEj5OUE9M8XTtUTnztTY0bl6YZfrNA//uYNdUTiTpcGAACyDEHGBToiCRVxM0xkkClVhXroM6frc+c06JGVO3XhD17Q0rdbnS4LAABkEYJMhrPWMlqGjBT0+/SF86fogRtOU07Ap7+782V98/G1HNUMAABGBEEmw/XEkkqmLKNlyFjz6kbpic+9Rx9aME53vrhFl/7wRa3Z2e50WQAAwOMIMhluYPeAU8uQyfJyAvrG5TN1z8dOUVtPXFf8+CX96NlNSqas06UBAACPIshkuPbe/iBDRwYusHhKhZ75/CKdP6NK33tmvT5w21Jta+12uiwAAOBBBJkM19GbkCR2ZOAao/Jz9MNr5unWD87Vxj2duvDWF/SLl7cpRXcGAACkEUEmw3UMdGQ4tQwuYozRZXNr9cz/WaST6kbpy4+s0fv+9y9a3cjuDAAASA+CTIZjtAxuVl2cq59/4lR9/6o5atzfq0t/9KJufni19nREnC4NAAC4HN/mz3D7e2KSpJI8ggzcyRij9588Rn8zo1L/9YcNunfpNj2wvFHXnDJWn17coKrisNMlAgAAF6Ijk+FaumLK8fvYkYHrFYWD+solM/TsPy7WFXNrdd8r27XoP57VF369Uit3tDldHgAAcBk6MhmuuTOqsoIcGWOcLgVIi7rSPH33ytn67DkNuuOFzXpweaMeen2nZo8p1jWn1umSOTUqCPFPEwAAODo6MhmuuSuq8sKQ02UAaTd2dJ6+ftlMvXzzufr6ZTMUiSf1Lw+t1qnf+qO++MAbWr5tn6zlpDMAAHB4fNszwzV3RlVbwg4BvKswHNRHTqvXhxeO0+s72vTrV3fosVVN+s2yRjVUFOjq+WN1xUm1Kisg0AMAgIMIMhmupSuqOWOKnS4DGHbGGJ1UN0on1Y3Sv10yXU+satKvX9uhbz25Tt99+i39zfRKfeCUsVo0qVx+H6OWAABkO4JMBkumrFoZLUMWKggFdPUpdbr6lDpt3NOpX7+2Qw+9vlNPrdmtutF5+vTiiXrfSbUKBfxOlwoAABzCjkwG29cdU8qKIIOsNqmyUF9+73S9/C/n6kd/d5JK8oL6l4dWa/H3ntM9L21RJJ50ukQAAOAAgkwGa+mKSpLK2Q0AlBPw6eLZ1frdjWfo3o+fqjGjcvXVx9bqPd/9s+5Yslm9MQINAADZhCCTwZo7+4JMGR0Z4ABjjBZNLtdvbzhdv75+oaZWFelbT67Tmf/xrO56kQ4NAADZgiCTwQaCDB0Z4PAWTCjVL65boN986jRNqijQNx5fq0X/8SwjZwAAZAGCTAZrHhgtoyMDHNWp40fr/usX6v5PLlR9Wb6++thaLf7ec/rpS1vUFU04XR4AABgGBJkM1tIZVV6OX/nc5RwYlNMmlurX1y/Ufdct0JhRufraY2t12v/7k771xFptb+1xujwAAJBGXCFnsOauKDcBBI6TMUZnNJTpjIYyrdi+Xz99aavufmmr7nhhi+bVlei9s2t04cwq1ZTkOl0qAAAYAoJMBmvu5B4ywFAM3GDz5oum6pHXm/TYG036xuNr9Y3H16pudJ5OHT9a88eN0pSqQk2qLFQB3U8AAFyD/2tnsJauqCaUFThdBuB61cW5+vTiifr04ol6u7lLz761V69u2ac/v7VXDyxvPPC8muKwJlUWanJlgSZVFGpSZQEBBwCADMX/nTNYc2dUC8aXOl0G4CkTyws0sbxA1505QdZabWvt0YY9ndq4t0sb93Rqw54uLd3cqlgideBraktyNXtMsU6pH61Tx4/WtOoi+X3Gwb8FAAAgyGSo7mhC+3viqioOO10K4FnGGNWX5au+LF/nzzj458mU1Y59BwPO+t2dWrF9v55as1uSVJqfo/NnVOqCmdU6fWKpgn7OTQEAYKQRZDLUlpZuSdL4snyHKwGyj993+ICzq71Xr27Zpz+s3aNHVzbp/ld3qDQ/R+8/eYyuPmWsJpYzCgoAwEghyGSora0EGSDTVBfn6rK5tbpsbq0i8aSWbGjWgysadfeLW3T7ks1aMH60PnnmBJ0ztUI+Rs8AABhWBJkMtaW5L8jUlxJkgEwUDvp1/owqnT+jSns7I3pgeaPue3m7rrt3mSaU5+u690zQ+06qVTjod7pUAAA8icHuDLWltVvVxWHl5nARBGS6isKwPrO4Qc/902Ld+sG5ysvx6+aHV+uM7/xZt/5xo9p6Yk6XCACA59CRyVBbWrrpxgAuE/T7dNncWl06p0Yvb96nO17YrP/64wbdtuRtXXNqna47c7yqi7kRJwAA6UCQyVBbW7p14axqp8sAcAKMMTptYqlOm1iq9bs7ddvzb+uev2zVvUu36vK5tfrUWRPVUMHBAAAADAWjZRmorSem/T1xjacjA7jelKpC/efVc/Xc/12saxeM02OrmvQ3//W8PvXzZVq5o83p8gAAcC2CTAYaOHq5nhPLAM8YOzpPX710hl760jm66ewGvbx5ny7/0Uu65vaX9dz6vUqlrNMlAgDgKoyWZSDuIQN4V2lBSF84f4quP2uifvXqdt35whZ99KevaXxZvq5dUKerTh6r4ryg02UCAJDx6MhkoM3N3fIZqW50ntOlABgmBaGArjtzgpZ88Wzd+sG5Ks3P0TefWKdTv/1H/dNv39CK7ftlLV0aAACOhI5MBnpt6z5NrylSToCcCXhdTsB34Caba5s69ItXtumR13fqt8sbVTc6T5fNrdElc2o0qaJAxnCTTQAABhinvuM3f/58u2zZMkfeO5NF4knN/trv9fenjdO/Xjzd6XIAOKAzEtfTa3brdyub9Je3W5Sy0phRuTpnaoUWTynXyXWjGT8DAGQFY8xya+38wz1GRybDvL69TbFESgsnlDpdCgCHFIaDumr+WF01f6z2dET0x3V79Oxbe/WbZTt079JtkqTJlQU6edwozaot0azaYk2uKlAowA10AQDZgyCTYZZubpXPSKeMH+10KQAyQGVRWNcuGKdrF4xTJJ7Uim37taz/x+Ordun+V3dIkoJ+o8mVhZpZU6yZY4o1s6ZI06qLFA4SbgAA3kSQyTAvb27VzNpiFYUZGwHwTuGgX6c3lOn0hjJJkrVWO/b1avXOdq1pateane16Zu1u/XpZX7jx+4wmVRRoZm1fsJk1plgzaooJNwAATyDIZJCeWEIrt7fpY2fUO10KABcwxqiuNE91pXm6eHa1pL5ws7OtV2t2dmhNf8B5bv1ePbC8UZKUG/TrjIYynTutQudOrVBFUdjJvwIAACfsmEHGGHO3pPdK2mutnXmYx42kWyVdJKlH0kettSvSXWg2+NWrOxRLpnT+jCqnSwHgUsYYjRmVpzGj8nTBzL5/S6y12tMR1arGNr24qUV/WrdXf1y3R8ZI88eN0oUzq3XhrCpVF+c6XD0AAIN3zFPLjDGLJHVJuvcIQeYiSTepL8gskHSrtXbBsd6YU8veKZZI6azvPauxo/L0mxtOc7ocAB5mrdWGPV165s3denL1Lr21u1OSdFJdiS6aVa0LZlZpzCjuYwUAcN6QTi2z1i4xxtQf5SmXqS/kWEkvG2NKjDHV1tpdJ1Rtlnrk9Z3a1R7Rt983y+lSAHicMUZTqgo1papQnzt3kjY3d+mpNX2h5ptPrNM3n1inOWOKddGsal04s1p1pYQaAEDmGdR9ZPqDzONH6Mg8Luk71toX+3//J0lfstYetd2SXzvZzrzxxwr4fAr6jQJ+n/zGaOB+b77+Xxsz8GujcMCnglBABeGASvNDqikJq6YkV9XFYdWW5Kq8MOTKG8Yt37ZfH7nrFTVUFOiRG89w5d8BgDdsa+3WU2t266nVu/RGY7skaWZtkc6ZWqlT6kdpXt0oFYRYrwQAjIzhvo/M4a66D5uOjDHXS7pekkpqJmjx5ArFUyklklaJVErJlJW1fV9sbd/4Q9+vrZK272aRu9oj6tqbUHNnVL3x5DtePy/Hr3Gl+Rpflqf60nyNL+v7UV+Wr9L8nIwLCO29cf3mtR367z9vVHlhSHd8ZH7G1Qggu4wrzdcNZ03UDWdN1I59PXp6zW49uWaXfvjnjUpZyWekhooCTSwv0ITyfI0rzVd5YUjlBSGNzs9Rfk5A4Ryfcvw+/j0DAAyrdHRkbpP0nLX2/v7fr5e0+FijZUPdkbHWqr03rqa2iJraerWzrVdbW7u1taVbW1t7tGNfjxKpg3+3wlBA9f3BZlxpnkrzczQqP0dFuUGFAj4FfD75fUZBv5HPGEUTKcUSKcWS/T8nUoolk4rGD/5ZtP9H36+ThzyvL5zFkynFkyklUgO/tkr0/9wRiatxf68k6bQJpbrlA3NUW8KiLYDM1BmJa+WONr22db/WNnVoc0uXtre+89/ZQ/l9RrlBv8LBvlATDPT/7PcpJ9D/w3/w5+Ahvy8MB1QUDqgwHFRRbkBF4eCBXxfnBlVWEFLQ7xvh/wIAACccrSOTjiBzsaTP6uCy/39ba0891msO97J/PJlS4/5ebW3p1paWbm1tPfjzzv29OsL/e09Ijt+nUODg/5yD/r5xuaD/4K8Dh/xZwOdTXo5fkysLtGhyuWaPKUlfMQAwQuLJlHa1RdTcFVVLV1T7umPqjSXVG0+qJ5ZQbyylSP83eeL93wCKJw9+AyiePPiNoXjSHvimUFc0oUg8ddT3Ls3PUUVRWBWFIVUWhVRZFNbY0XmakMFdeADA8RvSaJkx5n5JiyWVGWMaJX1FUlCSrLU/kfSk+kLMJvUdv/yx9JQ9NEG/78Bo2dnveiyRTKm9N6623rjaeuJ9XZNDxtuSKXsglIQCPuX4/e/8/TseY3wCQHYK+n0H7mOTbrFESp2RuDoiCXX0xtUZSagj0vdvdnNnVHs6I9rbEdHezqje2t2h5s7oO75BVRgOaEJ5gWbUFGlWbbFm1RZrcmWhcgJ0cgDAKwbVkRkOHL8MAEiXRDKlnW292tzSfaATv3FPl95saldHJCGpr3s+vaZIp00s1WkTSjW/fpTycji4AAAy2ZBHy4YDQQYAMNystdq+r0erd7Zr9c52Ld+6Xyt3tCmRsgr6jeaMKdEZDWVaNLlcc8YUK8DuDQBkFIIMAAD9emIJLdu6X0s3t+ovb7dqdWObUlYqCgcOhJozJ5VxU1AAyADDffwyAACukZcT0KLJ5Vo0uVyS1NYT00ubWrVkQ7OWbGzWU2t2S5ImlOdr0aRyLZpcpoUTShlDA4AMQ0cGAIB+1lpt2tulJRtbtGRDs17Z0qpIPKUcv0/z60fpzP5gM62qSD4fB70AwHBjtAwAgBMQiSe1bOt+LdnYrCUbmvXW7k5JUllBSAvGj9a8uhLNqyvRjJpihYN+h6sFAO8hyAAAkAZ7OiJ6YWOLXtjYrGVb92tnW9+NjQM+o2nVRZpWXagpVUWaUlmoKVWFKi8MOVwxALgbQQYAgGGwtzOildvbtHJH348NezrV0hU78HhJXlB1o/M0ZlSuxo7K05jReRpTkqvKorCqi8MqyQtm7L3Ikimrt5u7tHJHm9bv7tSejoh6YkkZSaPzc1TRfyPSadVFmllTrNwcOlIA0o8gAwDACGnpimrD7k69tbtTbzd3acf+XjXu61Hj/l7Fkql3PDcU8Km6OPz/27vzGDnv+o7j7+8cOzO7c+w93rXXduIrPiBxEnKQUCC4kLaolJZKILUKUqVWKkjQolZQUA+JP/ijaiu1pS2iqBFUUE4lRVStSUgpISEBH8S3HSfZtfeYvWdmd+f+9Y/n8XpiHMdZe3d2dj8vafQ885vjeWx95d2PfxcbUlH6UpcDjvfcO3a3RVZsPs7I7AJPnsrw5MkMz56fZK5UBSAaDrAhGSUeDeEcTOZLjOeLVP1dSIMBY2c6wVu3dfHOXb3cc0unNh8VkZtCQUZERKTBajVHJlfk4swCY9kCI7MFRmcX/GOB0WyBsWyBcvXVP5dDASOdjLK1u5V9/Sn2bUzxpo0pNne23nDAcc5xYiTLwRNjHDwxxvHhLAADnTHesbOX/ZvbefOmdm7tbvuFa9VqjvF8kWMXZzk6NMOhwRmee3mKUqVGW0uQB3d089Btvbzztl56E9Ebuk8RWb8UZERERJpAreaYnCsxOltgZPZy4BmZLfDieJ5TI7nFXp1ENMSeviR7+1Ps7U+yd2OS7T3x193Ucyxb4PDgNM+en+LgiTEuzixgBndu7uDA7jQHdveyvTe+pCFv86UKPz43yZOnM/zgVIaR2QIAt29K8a7daQ7sTrO7L7Fqh9OJyOqjICMiIrIGlCo1zmZyHLs4ywsXZzk+nOXkSJZC2Qs34aAtDlPbkIwSCnqBwTkYzxU5P55n2A8XkVCAB7d38+69aR66LX3TFyZwznFqNMcTJ8f4/skMRy/M4Bz0p6K8a3eat+3o5t5bu0jFwjf1uiKytijIiIiIrFHVmuP8eJ7jw1lOjeYYmV1gZKbAWK6wOIfFDLraImzubOX2gUtLRieJhFZugv54rsgPTmX4/skx/u/sBAvlKmawrz/F/du6uH9bF2/Z2kk8e00j5QAADuRJREFUoo1HReQyBRkRERFZNYqVKkcGZ3jm/CQ/fnGSI4MzlKo1ggFjX3+S/Zs7uHNLB3dt6aA/FdVQNJF1TEFGREREVq2FUpWfvTLNM+cneP7laX5+YWZxuFw6GeHOzR3eY4s2HxVZb64VZNR/KyIiIg0V81c5e3BHNwDlao1TIzkODU4vPv7r2CjgzQPa059iX3+SfRu9hQ52phMKNyLrkHpkREREZNXL5AocHpzh0OA0RwZnODGcJVesAN4S1dt74+ztT7G9N84t3a1s7W5ja1ebAo5Ik9PQMhEREVlTajXH0PQ8x4ezHB/2VnA7MZwlkyu+6n3pZISeRITueISutgjdiRY6WltIxcIko2HvGAstnieiodddwlpEVo6GlomIiMiaEggYW7ra2NLVxq++qW+xPVco88rkPC9NzPHSxBxDU/NM5ItMzpU4M5pjIl9a3IvntcQjIZLREMlYmGQsTHsszNbuNrb3xNnWG2d7b3zZlo2enitxajTHmbEcQ1PzzJWqzJcqlKs12ltb6I57wWxHb5zdfUktXy3rmoKMiIiIrBmJaJh9G1Ps25i66uvOOeZLVbKFMrMLZbILFbIL/nl92+J5mZcm5njq9PirAlBvIsKuDQl2pRPs9I870nFaW67vV6u5YoWzmTxnRnOLweX0WI7xuh6lWDhIWyREWyRIKGBMz5eZni9RP5hmY3uM2wdS7B/o4I7N7bxpoxZDkPVDQUZERETWDTPzw0GIvlTsuj9XrTmGpuY5l8lzbjzPmbEcZ8fyfPnZVyhWav53w6aOGH3JGD0Jr+ckFDAcUHOOyXyJ4ZkF7+FvTAoQDQfYmU7w9p09i8Hotg0JehORX1h6ulKtMZ4vcno0x4kRbzjd0QszfO8FbzGEUMDY3Zdk/2Zvv6D9Ax1s6WrVEtayJmmOjIiIiMgSVWuOwal5Tvu9KmczeTLZAuO5IuP5IrXFTUmNrngLfako/akYt3S3LfbkDHS2EgzcWNAYzxU5MjTD4cFpjgzNcHRohrlSFYCO1jC7NiTYkIySTkXpamshFg4SCQeJhAIEA0bADO8WvGPAjEDAu+9LrwXMMINEJExXvIWueMuKbqoq65Mm+4uIiIisI9Wa42wmx+FBL9ycH59jNFsgky2+7hyhNyIRDfkLKVyev3Pp0Vt33tUWoSWkRRTkjVOQERERERGcc+SLFQrlGoVylWKlhnOOmvOGv9Wcwzlwdc9rjsX3VGuOXKHM5FyJyXyRiXyJybkSE7kiE3mvF2pmvnzVayf8IX3xaIh4JETCP8b9tkQkRCLqrSKXiHoryF06JqNhOlrDWlFuHdKqZSIiIiKCmfnhYPmuUaxUmcyXvOF1/hC7TLbI7EKZfLFMvlghV6iQL1YYnS2QL1bIFyrkSxWu9f/rAYPueITeZIR0IkpvMkpvIkK6/pj0eocUeNYHBRkRERERuWkioSD97TH6269/MQXw9gbKl7yQkyuUX3WcXSgznvMC0ViuwMhsgaMXZpjIl37hewIGnW0R0klveFtvIurtJ5SM0h4LL/b+xKMh2lq8nqFoOEjAzJ8v5AW+as0t9loVylUK5SoL/nG+VGWh5D1fKFUJBIxIKEAkFKCjtYWNHTE2JKMKVMtMQUZEREREGi4QMJJRb6NSuL4QVK7WmMgXGcsWyWQLZHJ1x1yRsWyBY8NZJvNFam9gNoUZ1+wduh7BgLGtp417b+ni3ls7uf/WLrrikRv7UnkVBRkRERERaUrhYIC+VOx1l9KuVGtMzZWYXSiT84eyzRUri+eFSpVazVGtXZ4bFAoEiIa9XpZoOEgkHCAWDhFrCdLaEiQWDhLzjzXnKFZqFMtesLo4s8CF6XleuJjlW4cu8OVnXyEYMB7Y3s37bu/n3XvTJKLazPRGKciIiIiIyJoWCga8OTXJZZwc9BrK1RrHLs5y8MQYjx8d5hPfOErkOwEe3reBD9y1ibdu677h5bfrZXIFfnxukp++MsWZ0TwXZxaYmithBkEzwqEA6WSUTR0xNnXE2NYT57YNCXakE6RizRWuFGRERERERJZJOBhg/+YO9m/u4E/es4tDgzN85/AFHj8yzGNHhulLRXn//o381l2b2NYTf8PfP1es8NxLU/zo3ARPn5vg1GgO8JbG3pVOcO+tnXS1tQBQqXk9R2OzBQYn53n63ATz/n5DAP2pqLe/kb/H0a4NCbb1xImGb85+Qc45soUKM/MlpufLTM+XvPO58mJbuVqj5rzesXDw2gFPyy+LiIiIiKywQrnKEyczfPNnQ/zvmXFqDu4YaOcdu3q479Yu7hhov2qAmMgXOXZxlqNDszz94gSHB6cpVx0toQD3bO3kge3dvG1HN3v6kgRep6fHOcfFmQXOjOU4NZrjzKh3fHE8T7nqZYRgwNja1crOdILeRIRULEwyFiZSvy+QGc455opV8sUyc8UquUKFbOFyQLl0rL7GZCUzSEbDr9qktVKr8dynf1n7yIiIiIiIrEaZbIHvHL7If/58mOPDWZyDlmCAgc4YPYkIoUCAfLHCyOwCY9ki4P3iv7c/6QWX7T3cvbXjpvWclKs1Xp6Y4/RYjtOj3uNcJs/kXIlsoXzNhRCCAVvcHygRDdHeGqazrYX21hY6WsN0tF4+r29LxsJXHWKnDTFFRERERJrA7EKZ51+a4vlXphicnGciX6RSc8QjIXoTUXb3Jdjbn2JPf7Ihc1qqNUe+UKFcqwGXV3czg7aWENFwALObN+dHG2KKiIiIiDSBVCzMgT1pDuxJN/pWrioYMFKtq2NRAO3SIyIiIiIiTUdBRkREREREmo6CjIiIiIiINB0FGRERERERaToKMiIiIiIi0nQUZEREREREpOkoyIiIiIiISNNRkBERERERkaajICMiIiIiIk1HQUZERERERJqOgoyIiIiIiDQdBRkREREREWk6CjIiIiIiItJ0FGRERERERKTpKMiIiIiIiEjTUZAREREREZGmoyAjIiIiIiJNR0FGRERERESajjnnGnNhsxxwuiEXl/WqG5ho9E3IuqF6k5WmmpOVpHqTlbLFOddztRdCK30ndU475+5u4PVlnTGzn6rmZKWo3mSlqeZkJaneZDXQ0DIREREREWk6CjIiIiIiItJ0GhlkvtDAa8v6pJqTlaR6k5WmmpOVpHqThmvYZH8REREREZGl0tAyERERERFpOg0JMmb2sJmdNrNzZvbJRtyDrC1m9iUzy5jZsbq2TjM7aGZn/WNH3Wuf8uvvtJm9pzF3Lc3KzAbM7AdmdtLMjpvZx/x21ZwsCzOLmtlzZnbUr7m/8ttVc7JszCxoZofN7Lv+c9WbrCorHmTMLAj8I/ArwB7gQ2a2Z6XvQ9acfwMevqLtk8ATzrkdwBP+c/x6+yCw1//M5/26FLleFeATzrndwH3AR/y6Us3JcikCDznnbgfuAB42s/tQzcny+hhwsu656k1WlUb0yNwDnHPOnXfOlYCvAe9rwH3IGuKc+yEwdUXz+4BH/fNHgd+oa/+ac67onHsJOIdXlyLXxTk34pw75J/n8H7Qb0Q1J8vEefL+07D/cKjmZJmY2Sbg14Av1jWr3mRVaUSQ2QgM1T2/4LeJ3Gxp59wIeL94Ar1+u2pQbhoz2wrsB36Cak6WkT/M5wiQAQ4651Rzspz+DvhToFbXpnqTVaURQcau0qal02QlqQblpjCzOPAt4OPOuey13nqVNtWcvCHOuapz7g5gE3CPme27xttVc7JkZvZeIOOc+9n1fuQqbao3WXaNCDIXgIG655uA4Qbch6x9Y2bWB+AfM367alBumJmF8ULMvzvnvu03q+Zk2TnnZoCn8OYiqOZkOTwA/LqZvYw3BeAhM/sKqjdZZRoRZJ4HdpjZLWbWgjc57PEG3IesfY8Dj/jnjwCP1bV/0MwiZnYLsAN4rgH3J03KzAz4V+Ckc+5v6l5SzcmyMLMeM2v3z2PAAeAUqjlZBs65TznnNjnntuL9nvakc+53UL3JKhNa6Qs65ypm9lHgv4Eg8CXn3PGVvg9ZW8zsq8A7gG4zuwD8BfA54Otm9nvAIPDbAM6542b2deAE3upTH3HOVRty49KsHgB+F3jBn7MA8Geo5mT59AGP+itBBYCvO+e+a2bPoJqTlaN/42RVMec0hFFERERERJpLQzbEFBERERERuREKMiIiIiIi0nQUZEREREREpOkoyIiIiIiISNNRkBERERERkaajICMiIktmZp82s+Nm9nMzO2Jm9y7jtZ4ys7uX6/tFRKS5rPg+MiIisjaY2f3Ae4E7nXNFM+sGWhp8WyIisk6oR0ZERJaqD5hwzhUBnHMTzrlhM/tzM3vezI6Z2RfMzGCxR+VvzeyHZnbSzN5iZt82s7Nm9ln/PVvN7JSZPer38nzTzFqvvLCZvdvMnjGzQ2b2DTOL++2fM7MT/mf/egX/LkREZIUpyIiIyFL9DzBgZmfM7PNm9na//R+cc29xzu0DYni9NpeUnHO/BPwz8BjwEWAf8GEz6/Lfswv4gnPuzUAW+MP6i/o9P58BDjjn7gR+CvyxmXUC7wf2+p/97DL8mUVEZJVQkBERkSVxzuWBu4DfB8aB/zCzDwPvNLOfmNkLwEPA3rqPPe4fXwCOO+dG/B6d88CA/9qQc+5p//wrwINXXPo+YA/wtJkdAR4BtuCFngLwRTP7TWD+pv1hRURk1dEcGRERWTLnXBV4CnjKDy5/ALwZuNs5N2RmfwlE6z5S9I+1uvNLzy/9THJXXuaK5wYcdM596Mr7MbN7gHcBHwQ+ihekRERkDVKPjIiILImZ7TKzHXVNdwCn/fMJf97KB5bw1Zv9hQQAPgT86IrXnwUeMLPt/n20mtlO/3op59z3gI/79yMiImuUemRERGSp4sDfm1k7UAHO4Q0zm8EbOvYy8PwSvvck8IiZ/QtwFvin+hedc+P+ELavmlnEb/4MkAMeM7MoXq/NHy3h2iIi0iTMuSt77EVERBrDzLYC3/UXChAREXlNGlomIiIiIiJNRz0yIiIiIiLSdNQjIyIiIiIiTUdBRkREREREmo6CjIiIiIiINB0FGRERERERaToKMiIiIiIi0nQUZEREREREpOn8P7uxrJE+Iin1AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "signal = nk.eda_simulate(sampling_rate=50)\n", "nk.signal_plot(signal)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we will try to approximate this Skin Conductance Response (SCR) using a [gamma distribution](https://github.com/neuropsychology/NeuroKit/pull/269), which is quite a flexible distribution defined by 3 parameters (**a**, **loc** and **scale**).\n", "\n", "On top of these 3 parameters, we will add 2 more, the **intercept** and a **size** parameter to give it more flexibility." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def function_gamma(x, intercept, size, a, loc, scale):\n", " gamma = scipy.stats.gamma.pdf(x, a=a, loc=loc, scale=scale)\n", " y = intercept + (size * gamma)\n", " return y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can start by visualizing the function with a \"arbitrary\" parameters:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 20, num=500)\n", "y = function_gamma(x, intercept=1, size=1, a=3, loc=0.5, scale=0.33)\n", "\n", "nk.signal_plot(y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Since these values are already a good start, we will use them as \"starting point\" (through the `p0` argument), to help the estimation algorithm converge (otherwise it could never find the right combination of parameters)." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.95075442, 2.23136452, 1.10417281, 2.04403253, 1.88667224])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params, covariance = scipy.optimize.curve_fit(function_gamma, x, signal, p0=[1, 1, 3, 0.5, 0.33])\n", "params" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fit = function_gamma(x, *params)\n", "\n", "plt.plot(x, signal, '.')\n", "plt.plot(x, fit, '-')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }