Skip to content

Instantly share code, notes, and snippets.

@huangziwei
Last active March 18, 2020 19:11
Show Gist options
  • Save huangziwei/de026bbc2fbe3535a14cf3444e909df3 to your computer and use it in GitHub Desktop.
Save huangziwei/de026bbc2fbe3535a14cf3444e909df3 to your computer and use it in GitHub Desktop.
Simulation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from rfest import splineLG, splineLNP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# True RF: Gabor"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def gaussian(dims, sigma):\n",
" \n",
" import numpy as onp\n",
" \n",
" if len(dims) == 1:\n",
" \n",
" x = dims[0]\n",
" mu = 0.5 * (x - 1)\n",
" xx = onp.arange(x)\n",
" \n",
" gaussian_filter = 1/(sigma*onp.sqrt(2*onp.pi))*onp.exp(-1*(xx-mu)**2/ (2*sigma**2) )\n",
" gaussian_filter = gaussian_filter.reshape(*dims, 1)\n",
" \n",
" else:\n",
" \n",
" if 1 < len(dims) < 3:\n",
" \n",
" x = dims[0]\n",
" y = dims[1]\n",
" \n",
" elif len(dims) > 2:\n",
" \n",
" y = dims[1]\n",
" x = dims[2]\n",
" \n",
" sigx = sigma[0]\n",
" sigy = sigma[1]\n",
" \n",
" xx, yy = onp.meshgrid(onp.arange(0, y), onp.arange(0, x))\n",
" mu = [0.5 * (y - 1), 0.5 * (x - 1)]\n",
" \n",
" gaussian_window = onp.exp(-0.5 * (((xx - mu[0]) / sigx)**2 + ((yy - mu[1]) / sigy)**2))\n",
" gaussian_filter = 0.5 * gaussian_window / (0.5 * onp.pi * (sigx + sigy) ** 2)\n",
" gaussian_filter = 0.25 * gaussian_filter / gaussian_filter.max()\n",
" gaussian_filter = gaussian_filter.T\n",
" \n",
" return gaussian_filter.T\n",
"\n",
"def gabor(dims, sigma, theta=np.pi/4, phi=np.pi/2, sf=1/3):\n",
" \n",
" import numpy as onp\n",
" \n",
" if len(dims) == 1:\n",
" \n",
" x = dims[0]\n",
" xx = onp.arange(x)\n",
" guassian_window = gaussian(dims, sigma)\n",
" sinusoidal_wave = onp.sin(2 * onp.pi * sf * xx - phi)\n",
" gabor_filter = guassian_window * sinusoidal_wave\n",
" gabor_filter = gabor_filter.reshape(*dims, 1)\n",
"\n",
" elif len(dims) > 1:\n",
" \n",
" x = dims[0]\n",
" y = dims[1]\n",
" \n",
" sigx = sigma[0]\n",
" sigy = sigma[1]\n",
" xx, yy = onp.meshgrid(onp.arange(0, x), onp.arange(0, y))\n",
" mu = [0.5 * (x - 1), 0.5 * (y - 1)]\n",
" \n",
" gaussian_window = gaussian(dims, sigma).T\n",
" sinusoidal_wave = onp.sin(2 * onp.pi * sf * yy - phi)\n",
" gabor_filter = (gaussian_window * sinusoidal_wave).T\n",
" \n",
" gabor_filter = gabor_filter / onp.sqrt(onp.sum(gabor_filter**2))\n",
" \n",
" return gabor_filter"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# white noise"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/jax/lib/xla_bridge.py:119: UserWarning: No GPU/TPU found, falling back to CPU.\n",
" warnings.warn('No GPU/TPU found, falling back to CPU.')\n"
]
}
],
"source": [
"dims = [45, 60]\n",
"k = gabor(dims, [5, 5], sf=1/12).flatten()\n",
"n = np.prod(dims) * 5\n",
"X_white = np.random.randn(n, 45, 60).reshape(n, np.prod(dims))\n",
"y = X_white @ k + np.random.randn(X_white.shape[0])\n",
"\n",
"spl_white = splineLG(X_white, y, dims, df=20)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,3, figsize=(12,5))\n",
"ax = ax.flatten()\n",
"ax[0].imshow(k.reshape(dims))\n",
"ax[1].imshow(spl_white.w_sta.reshape(dims))\n",
"ax[2].imshow(spl_white.w_spl.reshape(dims))\n",
"\n",
"ax[0].set_title('True')\n",
"ax[1].set_title('STA')\n",
"ax[2].set_title('SPL')\n",
"\n",
"for i in range(3):\n",
" ax[i].axis('off')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# pink noise"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from colorednoise import powerlaw_psd_gaussian as colornoise"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dims = [45, 60]\n",
"n = np.prod(dims) * 5\n",
"X_pink = colornoise(1, [n, 45, 60]).reshape(n, np.prod(dims))\n",
"y = X_pink @ k + np.random.randn(X_pink.shape[0])\n",
"\n",
"spl_pink = splineLG(X_pink, y, dims, df=20)\n",
"fig, ax = plt.subplots(1,3, figsize=(12,5))\n",
"ax = ax.flatten()\n",
"ax[0].imshow(k.reshape(dims))\n",
"ax[1].imshow(spl_pink.w_sta.reshape(dims))\n",
"ax[2].imshow(spl_pink.w_spl.reshape(dims))\n",
"\n",
"\n",
"ax[0].set_title('True')\n",
"ax[1].set_title('STA')\n",
"ax[2].set_title('SPL')\n",
"\n",
"\n",
"for i in range(3):\n",
" ax[i].axis('off')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# brown noise"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAACyCAYAAACHgZ3yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2dW6gn23bWx6yq/2Vd+rLPPTk7niRqjjEGBckxQhBRI2j0IepDROXkQVAQhCToawyIrxEEUYISwRgTkOAVDT6qOVGUXMz9dm45nuzeZ+++rLX+t6qaPqzea35jVI2xa6/dq7tW9/eDhlr/qpo1a9acVdU1vvmNlHMWQgghhBBC5kr1oitACCGEEEJIBF9YCSGEEELIrOELKyGEEEIImTV8YSWEEEIIIbOGL6yEEEIIIWTW8IWVEEIIIYTMGr6wEkIIIYSQWcMX1udMSukM/vUppQ38/VdedP0IIT4ppW9LKf2PlNKjlNJbKaX/nlL6fhjD25RSB3//AuybUkq/mVL6xRd5DoS8Sjhj9ltSSt8NY/VxSulnUkp/7uk+fzyl9MUXXXei4QvrcybnfPrOPxH5vIj8efjtR+z2KaXm+deSEGJJKd0Vkf8gIv9IRD4gIh8XkR8QkZ+AMf03ReSnYEx/ExTxx0TkIyLy9Smlb3nO1SfklSMYs7unm/zU03F7X0T+mYj8eErptRdRV/Lu8IV1ZqSU/n5K6cdSSj+aUnoiIn81pfQvU0p/D7b5Uymlz8Lfr6eUfiKl9CCl9Fsppb/1AqpOyMvON4iI5Jx/NOfc5Zw3OeefzDn/3MT9Py0i/1ZE/tPTZULIzTJpzOacexH55yJyJCK/+wXUk0yAL6zz5DtF5F+JyD0R+bFow5RSJZf/g/xfcvm/x28Xkb+TUvqTN11JQl4xflVEupTSv0gp/Zn38iUmpXQsIn9JRH7k6b/vSiktb6iehJBLJo3Zp5HMvy4iZyLya8+zgmQ6fGGdJ/8t5/zvc859znnzLtv+URG5m3P+Bznnfc751+UytPFdN19NQl4dcs6PReTbRCSLyA+JyIOU0r9LKX10wu5/QS7DkD8pIv9RRBYi8h03VVdCyKQx+60ppYci8mUR+csi8p0550cvprbk3eAL6zz5wnvY9hMi8rtSSg/f+Scif1dEPnYzVSPk1SXn/Es55+/OOb8uIn9ARL5aRP7hhF0/LSI/nnNuc85bEfk3QlkAITfOu4zZz+Sc7+ecP5Rz/tac8399cTUl7wYn9MyTbP4+F5Fj+BtfRr8gIr+Wc/7GG68VIeSKnPMvp5R+WET+RrRdSul1EfkTIvKplNJffPrzsYisU0ofyjm/ebM1JYSIDMbsf3nB1SHvEX5hvR38jIh8R0rptZTSV4nI34Z1PyUi+5TS96WU1imlOqX0zSmlP/xiqkrIy0lK6fc9HWevP/37a+QyjPiZd9n1r8mllu6TIvKHnv77BhH54tP9CSE3wPsYs+/svzb/0k3Wl8TwhfV28MMi8ksi8jkR+c8i8q/fWZFzbkXkz4rIp0TksyLypoj8UxG5+7wrSchLzhMR+SMi8tMppXO5fOj9XxH5vnfZ79Mi8o9zzl/GfyLyT4SyAEJukuuOWZHLScwb848OAi+QlLONPhNCCCGEEDIf+IWVEEIIIYTMGr6wEkIIIYSQWcMXVkIIIYQQMmv4wkoIIYQQQmYNX1gJIYQQQsisCRMHfPP3/CAtBAgBfv4Hv2fWPnx/+lM/cDVmc2P+P9rDcK7KaWS0FqzM6cE+1bYtP6/9W0fK4/vY+uDfqYO6tb3eblWX5RrKgOOo30WkX+J28PtCn197XMsosFlvNulW0Ha2vUaOebldWa7asrI+2P3wnPAajR9mAF7Kg65Es4Hrciht3Gw7t7jDcbnOuSmF23a0x7qqDl5Xcw5e27Vr/XuC7lDvoO32ZcXi8V7vA33oJ//n9892zH7z95ZnbL/U63oYYhn7IDapuXQpj2+X7acpr0WwbD0M1bEqPK7t61DXDs4p4y3DlF3D5au3Tt1EpFuX5fYIiltA3+5M39zBMo43aJPe3M7wb2zT1OrtVDuYcxo7joi+n6jrYq6Jau92/Hd7XfvF+PKgStAONbQPXnO7f7dy1iXdAVJbTsQ7Di6LiNTbUsb/+aHvdccrv7ASQgghhJBZwxdWQgghhBAya0JJACHkdnG4t3LXdRAmx/Auhm0xDH35NyynEo/DcKyISIIwtwrHO2VdlgfHwsXOhJjgUBiOx9BYvdX1wZC3CumZ8OXiCcgcFqXeuL9tE9zOC632jd0HZQRw/HMT01VhXNgHQ5Rml8NxKRBDme2Rvg77UzjuRVnX7suFSb1uIDwPJWXYePFPkQr7UxCMb/bjUoTl27rsegfb9WVdd1Tikv1Kd64cSFbmhArpBiF4HAOqTa3MAv8OBH22D41vZMqGJu6x3oH8xT1mUDcdbjbrmvF1qR+/L4josL1qR9zI1EfJISbKJFRxKDew9z1PEjAoZHyf8LpC/VBGEI1DvLdk75i27D3+biQYjkwCz/UA9yIRkd39aaodfmElhBBCCCGzhi+shBBCCCFk1vCFlRBCCCGEzJrbIfS5hVit3DtMtqch5Bp0K7CKMnor1BaiBg23azbatwX1mqhTtdqyztOtBlq3Du2L0HEr+G801hX1lt3a7IRFgwYVNbD2uKgz7RvUdepd0FoJx/nUsY37t0G98bgtWmkZbRlq1SIt8ALtfRy7qW6pT2JxhsK1stibdkS7n64Zbwir18PronTUa32C7Ul5TKGOFtvb6qat7dZsCaqp9JHo0uY4sYnoNlFSV6u9dOyv1LgZ2JCN7zKZQEuujouayqAOnrZ0oCt1jqtO29ZnoobVbbtqfFnEXL9Ic+xcixTcUwf1e+f3QOtsNbYueI9GXbC1VnPqgNrkzky16I6n9Sh+YSWEEEIIIbOGL6yEEEIIIWTWUBLwDPFkANE2NykRmFIfCyULt5vDSfk/qA3vKlsSzJaC4aaB9xRmZYJsMnvfeqq+KIVjqDeZDFYrDAlDqLczFkVVV/brnexYnQkjY0gYpQM2wwqWUT0qx6nRFuug692BZZLKYNX5A67CbFIq7K/36Y5K2aod8EBmjKJcoMfsWOZzhMo6VI8P9Mpk3lISCmV540srsAthBqxmp88V7biwroN+i6HIA/ZHPL6Njd6OG5myWTJP4yisPKW8iMga6z1j93eGQVQ3rz72eaSeaZ3zexBa92yxhhWCzaJ643Xxrpe9dl7ZkWzDOwdzrlGoXoG3FmVd6NRNfLsqi5J0OG1i303qLW2tCCGEEELISwBfWAkhhBBCyKyhJOB9cJ2Q+9y5zqxnMh8W5yVW02z8rFUYWlVhyWjGqJOF6bKQsvKAoWwMMWkDAumX4+FrrNslpTybQWrsOCI6NI6hehtuxhn21aFUQkXGTdkqzG0zVT0lm5A0ZmJS52DaUc3edbJM2Wt0/EY5CZQYKFcHEUkdXujx33Ojv2GgRCErucG0mwOeT2WkFcq1YoFSFl0HPHc8P6yDdQWonCxas0ONKb0KZ1V74VQ7ptRs+aDsKRKD0FlgXCkyLMOboW+7jzPDfoA3Uz0oW4WlvdtHMNveO+9B2ROdHLwMZpVNeudky8KyBxJDr33Mteyd9lbKjMg5AY9p3iJVv8W6Qn0wU5aISLMZL9vCL6yEEEIIIWTW8IWVEEIIIYTMGkoCCHmJsGbxel1ZRqN9DKeGobogbFeZ0OTVdhgSsrNOIbSOZQ/C9lDvGtwJFmfloDYE783etzP+K3AuOJxCLAvDzUaGgO21v49TYmEbc2f1ZtvbMGDvmIqjxAFDbiIi+SOQ5ADdH+zdHY7bbOHnwIi82UJ7X4DcxEghVB9CB4HI3B8Pi8kdln57KzkGuFHUxoEAJQZzpndmVIuIic/CchCDv5ZMzSnb1keNX+zDkTOBV5/AyD5yMEieMwCG8O2xJoTqo/ueOoep7RtdI5QBwH1zMKsfQ/We9MDs0nsJFOyGzj1IyQPsdXXu/zbxgOs6oNw+9D7NhokDCCGEEELISwBfWAkhhBBCyKzhCyshhBBCCJk11LAS8hJx9nH0FNHrUC/lWbBEOlPMVGT1Vq71UEJto95ncVYKqfa+EK46QOYsXN7Bssl01GM2qgUc2GSWQkun5dulvH7ZjG5zWdeyHdpAYQasfmkyb6F+02ZlAtCqSds++ZZSqI/FdVaXp8pDTazSUeqdDieoLS3n1Bz53zpQ04b6X5vVCzNVqSxc9vygSyv7orqGbazY0a3erGiPy/LARgr1mo5GfGDn5mRBGtg2ObrMyMpQ68LH6yniZ4ayWke9EyxHNlRYVydjVNiOsIxacKs597ScVquP18WzB5yapcziXSOlUw/0o3h+yeqRnb6FUwFs2W6WMDv00CrQ09QarG7dg19YCSGEEELIrOELKyGEEEIImTWUBDwPgkwZLlO3ewmzbZHrs3wCWYtq3YnQ8kpZmWA2IpMdCUPRKlOJzUY1ob9aKyQlHcDQsbGeak9KbKtvIHacMKw9zQrJoqQMYHFVb7GuJvvTcfm72pT4V705jC5fbgg2YiAjQFstEZG092K/sM1Bt2OuMFZbFvvjpdoOj5udzFLWFg37kFpnM3TB38rCS1Xc/A3FLc5QbuLXAe3YlDWP6bdTQ4wvmn5Z6l1v/SxsygMMmqCzFmdeFiTTrTwbOolC2d4wCiyT3PtCYGsVgpcfw80YwrcSBfwb93Es5EREcgMn0fppvawt3dVhPJsuQ2QphyiZA147u49nPRhIQq7zCqHsqqwEY4K1lu1b7dG04/ILKyGEEEIImTV8YSWEEEIIIbOGkoBnyZRv68EnfG/ZhhTcbCZRaMbjdkTOyEQwFGrDVS2GU70MVnbWaRD6QTADFaJCT/f0/49VeXgcU+9mh9NvyyKGgSubwQoi8ig3qLd6OyUlwOxWq9IQA2lF68TT1Pi1Mcbxulo3gaQyWsEs+COojw3HYxgY6paNTEKH53DaMZ633gf7TJRFqXdC0V52pMv6leXDCRwnCDF68pV+YdvkdtzYKgg3h6HsIJyqdxrdJbzNe+MwDGXjOjv73wlL52D2v7pPYEg5kJF49QmlDN752ZB5h+4W4/UM6xDVZ2LXdI8bOCJ4x7Ht7WZY88aumOcJyhLsrQ5lSc4bZuTkEMEvrIQQQgghZNbwhZUQQgghhMwavrASQgghhJBZQw3rM2SSttTqPWR8XaT3cXUmkS2Gp/0ZbOiXQebPGrI1WZ0Qah2tlvNqH2Mp5Gk8bcaofjGuddRZr7xaixKroZ5RRGcxqsGi6nCCHjwmixJoalHz2ZoMTWh5VcE+qfIrm0En3B6v4BxgG/MpAMtW1lNGZ4oaZKw36nh7o89UWk5HpywiUm/Hb0R4jVLrt6NaZ8uect8Y6AQhixq2g9W6orbYZrRyqHeRuG8+VDtYjnR8jh7R3teVNDl67nifqjCr0+A6jO8SZkSaSpCVC3GzP6HO2dTT1dEGn+umWDOJ+FpVVfZEzfHg2eu5wzltIOJrQbO5Jh3ctjqwVsOyBzZrMC8As1n1xlqtX8MyOuth2dDvRUTq/UilR+AXVkIIIYQQMmv4wkoIIYQQQmbNSyMJcEPeNxnijmykVIhjPDw5KA5DClHGESfaFdnBeLKE0DWE8oBbjc04pKx+MPQHodn2SMf3VMYoCAnbTELNBjJsOce0YVosG8fp6m2dhgfHD4avu0VkhQRhcsjkZMPp4oRXu7Xf+dsVZq0qv0djG4+jZAgmBK/kFLBOWZIZlKwAL7EJ1R4gQ5dnV9YYqQiuq/CelGzfgmVsh+De592zO52gS4U5VV0duzO7z5zxLLtEhmHcshNuZFZ5IWHbNZ0sT15bD46Fspaptk3XSKkUZlFynm8DSQCcqxqvnrWT+DZSg/oF4fl3/d2sS0GSO7euNvOWZw9o2xGOVanxCtvY83baIZKE9A3e64KMYY4tooVfWAkhhBBCyKzhCyshhBBCCJk1t1YSEM0kvF6BE7cLZjOq2bbu7H0/1ZWXIWIQrnBmcg5OwZmtrTaxYUybteSGmJoxhLw3qn3pHM3mvQ+SYdtD2B2kA3Uw41tJD2C79th0LidMbmeCq9AWyADqXVlhQ9RIvSnbVWZWPvZ/NWv9HNwI7ujbZA2dt4aZsx3Olg2dPXB/MysfpBWqvXf4uw3bw33n4MfC+2U5j+6oLGNGLOtaoNwkJmZBasG9QWUj2/lyA5uVC8FrhOHHDqQeAylDeztcAsKsVRMY3Ee9rFU2bOuEjtXzxHSlCspWh7EheKeuyMDd4DrZnyCsrTJlmXPt8G98xsLs+IGzAc5oh3sLjncRP+xe4XGCewHOvK+MJCA7ZeDM+2ysHPIBJFww896WrY7r3DIG8hLn/WTQdo7cSMlNbFa3icOVX1gJIYQQQsis4QsrIYQQQgiZNbdWEnCjhFPn/d9VaMWZ8Rd9+cZP62jsaz/7Vx2afvvl4exv9QleTRb3pxlOdgx41vIM8kxAM//LH8ZnziODWbkY6g/CthgGVvKTqG+oPAQYR/Kza6jZ/00ZMFZG4LkbRPXBmaq9Y+AvIrK7V9quBZNslEJYM20VDlPm3LpCi/NSNobqqoNfcdXe3ixhGYZKr8oOZugqhwVo0+VjHRtNIEVZPC6xSDzXvjFJGzBsH7gJtHcgBgphTpRP2L75zCVjN0SPeSfMM8ObsR+em5NwZhByn2BKHx4nKBtD2TqJCG7kVydKjKDkcCgJwPuCqVCCsagcA+D3bm2zrIw/Y630SM22V1kbxqV+l+tgcWobYzi+Hh/vl/VzyrLt6N0Sg+QnquzIEEVdZ5RcOduMHMuDX1gJIYQQQsis4QsrIYQQQgiZNXxhJYQQQgghs+ZWaVhv1Moq0OSoPwOrKKVhBYkXZuqJxB9ZaVhB07Ww1hVQGmSPsBI1rz6oF7H/Y+mm2lo9w2wmg6JRX0OLq/fE/j7oOk1WJ7RQ0jZJZRvbpxuwjhKlZ9U9B+2QUPeINls2qxOi9Z/+/6OVJRTUra+NPnIP9cZ26Pw6qH2A/kjfJqtDEb/t75TjHk5gn6V/E8EMVtfJyGSvEbYr6kytRRVq5FEf25vMUqrsHdhSwbXc39Ei3cH5vkNwv4yszLztlO65GdfH2e3mTAfWSk2nK10592/EWgplR4MY2V8pPWGgM3UzMdo64FDE6zJVH6sK038mR9etr7/eqYNGQf2nesaufA1r3voPRW+eiGdRKaLbC9cN7MGcbGQ4h8VOiql348u2HXHMY2Y5PObACgs1w8F8HVUlJyvXQB8bzI/wiiOEEEIIIWR28IWVEEIIIYTMmlslCbhJIssGL6BvrRkwC0YDoTQMhUUZeTA81J2CZctCH6jfQch1F4QroD41WNfg5/jO2nT0ztlGX+xvUB5A3hvrN8tFrw6+5xmGYLKyYNEXE0O/GLat97pszGK0OC8xItXfBxYs4zKAbmVCoxg6BikCSh5siLE7wvglVMFIAnRWLjhXqMP2nh5jHVhZ7V4r2x1OoJ4rfZy+wSxaZZ/FmT7X1cOyvHwynjnP3ndUaFzZ7OgNM6TfUXIBZT1l7gcrGaUxWat6DBE7mc66pbW1yqPLQ8ubcYuy5hwymNnrajP4zRRl+2Sz/ziZgUILIO+0rV0d2kM5lmuDsG09vu46sq3J52CVNdC/MeSN/aINnrEZLa5ABlAd67h27mCsbFBb4Wfh07I76NtG7tJ57RjYX6mfndC8rUPUZ1SmKiUJ8OWL2kZsvG4i0yyz7KfSfqIUkV9YCSGEEELIrOELKyGEEEIImTWvtiRgokuAlz1mIAmAsHtzAbOwMQtH7ReOWU/ktHx/X6x0uOKwgdDlBf6fw58VjhIFHYawGYJklCjsc1uyyrwKLN68cNcpt4o96lf8eMxyWW4RGFLWzhc+7Z3Sqe3s/249HravtybcvPTkAn6n1CF033bCy4KlXA/MXfJwWtbt75edDnfRmcBOsS77dD1mszISDJydDKvqXfmjMdmxKi/0Z6qA9ye8fouzUsDi4U7tU21LP0kHdIwwcoN1uXGki1JG2kE/a03Y9YCaJciUVul+kns4FpSR7t0t26z0jSvXU+1OXiz1he90gNcf78vebH1LJCPxsk55YX9bH2SQ1XHKrcGUpcZYkK0Nx+sCnrH4rMuV3ygou6tOS/87Od2q7dq2lLHZlOWcrKylLOP4QumAdeHwruWA7CxHu2AmL/w9OI6WnqD8xq+P50Yx+Bv76kS5SQS/sBJCCCGEkFnDF1ZCCCGEEDJr+MJKCCGEEEJmzaunYXW0qjmwXPD0I1ZfU4NOFK19lIZ1kBEG9Hnrojo5ube5Wr57pPU1by+Or5Z3jxzxj/iaWqVzMTY2Xe95aYz/LGJsv56xnpVZr94b3V3QjC61MAhtrrrV6dVyVrZIJnsb9N1uXcqz1lPYj1QmNdBB2WxGaGWiNGjmOtduRhvYxthsabsZsK/Z+34s3WpcfFXv9XZKG4j1Ad3qwCYHNaxw223O9c2mOSvLq8fjej2V+UlEidWwHWxmKZ1pBi3BwBLojhbcpZPF6D4Wff8sfQvbe5B5a4GaaDhmayzTMJMX9lU8753pGPbcZ8oCJOeDjEh4n576aUllFhtfHuziWCuF+lgcX3ZMOk2P52fLzs34jd4+T9DKanEOGlawWWtXprFQT3pUtrt/pzxjP3J6pnbZtKXff+EJTi6xWe/gGYvacujqRrqtdaLB3BkvU1mkH1V9CLNo2YxhOGfA3N+utrF9xtM622vpWJ7h6Q3OlRpWQgghhBDyMsAXVkIIIYQQMmtePUmAR5RxYqokAOx4mrNxO5h27X/7zhCu+Oq7j8vyySO13W9VH7xa/tzRMazRFUeJQgMSBQzFVWsbUxgP+4VWX/3478x09QJIGN63KZHKBVEhVBXKMrZPu9JvMFydG91vEpanIuuOr4k5Vrcut6LeZETCUH1oAwNgiGl/XMq2ma4QlCzsT8qBNh/RbbL5aGnX1dc9uVr+2vtlnK4aHQd8si9hxS8/LHZMu/ZYbVdD5jq0skoQE64D3c3h1M/Kg6jse04mKREd8sS2G4YLx7fDrFc2G1VzXmKR2J+yzbYF/bjGGxEex+zj3cfmRmgP5FlMOWF/EROe9+7L5m9V9jXu39GzwZMYRCFglBFV2mVNFhuQyTwZl90lo63owEYqnZR9PnqnjN2vv/MVtc+bu5Or5S8t75f9TZuo+pyjP1Q5wcOxzSZZlvO4iuDpSliMJIvju4QyEDd9J25if4drptrBtInO+OWUbX7H7IER/MJKCCGEEEJmDV9YCSGEEELIrJm9JOBGsyhNcQwQ94v5IHzWbEtIoHpcZiCmA4RV76zEozoq230thCg+efw7arsOKvj59Qdhjb6cOHOyvijhtwTZi+pjHZtxwwhR2MeZCUiePyg/qezYyeNhYO1ioftDd+SkPrNASNeWcXUcIwnIabzj2LD98hHIayDDUr/AGKPep96WsVRB3882ixJIEXYfOrpa7hYYJjez21flWCfrUvYn75Vx+rHlY7XPo66U/TPV61fLv/pY3w8w+1d7Mj6aKuvQgJcIVlVm9i9m3OlAdoFuItXez5aHoVrrQID3DZQRoEuAygQkWgaA1zUF4fzqwqbfeacwv+w5g9ckzBgEqLY2sjTPRWMwm9wLyUMzVpGzAN7/7SxxR8qgpQe2/8B4g5Dy4kJvh1nZ6jPo4GpGvR5T2MbHp0VjgDKA33P0htpnWX3gavlnm3JM277ovoMyQMxoWR2MfMpp18HM+UAuUlboPz1nCPse5TpDBJnyPHcUmxFLtRFma4PXk85k/8IMZBG3Y1QTQgghhJBXFr6wEkIIIYSQWTN7ScBNoj7BR5/fnU/4NhxTgSQgnRVH6LwvoYJ6e8etz2pdtkMZwB88+pza7glMqfvM6uuwBLUdzgSvzkooJEGCguquDvkmL1YUhCuSJw+wkT26Btw4Ncy87tdmeKODAM5OBRlBc2Fd8iEhAITgbdn9qqxThtcwdvZ39T5qBjmEkQcG82g4DlIGnaDAhA4vSr+ut2VcWLkBzkBXM+dhGLRmBmteQoKPZWmvFcTG7tQ62QdKAlqsuAl/Y2i0BveG1eNyTDRMFzHG+tCmCxM+TxCer+C8u5U/ZVuFElEGYGVTUF61RQkH7LPTfUvJCuAeObhxoPN6UzpDXkNcsdHnkOuJTuQvGDccKzJtxn5wTw1Dyl5+mKnJBjwHAwnO6Tr6PlMHdOKpzorsDvtMdTjBXSSDNup0XZ6DX3f04Gr5969/W+1TwcmvVqVvDpKawDMW772LBUpurOxu/B4WGfC7fSFq0igpQbDufeOVF7lbtNMqwS+shBBCCCFk1vCFlRBCCCGEzBq+sBJCCCGEkFnzSmtYEU/POvr3Oz9bHca+aK3y+XlZBn1W2ju2LCKyWpR1n1i+ebX8exc609UXVmXdYumXh5q1tN2NboPaQZHplhv0r5onSltq+yf2AbR3Am1hXmsdNFpRpR1osc+1RrM6KnrCag26aNCcquxaorWzqI8NNVWow0WLK6PDRC2n0k7Z7F8OaLmVrRR4Bfq2uoy/j4CV1SeWD9Q+x5Cy5zdWH4KydJv0CzgY6sHhHDDzl4jOEoO6t4Ox0EM9KdrxRKBVH7apzUamsmDlceu+6mCOiRZKqLc/mMkBWHYH65Rtj7G1svrtmRLqRL3PSYGl1OT7sqN9DJ+DXnWCc1BZnVB/XusK9A1c40Uw9jCjFc4TaUu/WJzdV/tUXSlkWZftvnrx8Gr56xdvqX06OPm7oHt927S3qg9ot6sNWEfujYeTk4Gstw6C2P6elZm9jliep4E1+3n2V8Nsds5xzDVy7dhwvJvXlkY/Tlz4hZUQQgghhMwavrASQgghhJBZczviJs+SKSGPwAJCrzDhdAxxQvi135Xl2oa7AJQEfLgp4cWP1jrEhuua2o/HoHUN2sYksHwZZKzJznf/CMoDZoMKeZv+2Z+UfqQyXUHms9Sb/rSH/nrw5SfVk2IxUz2GUB3aDZksU2hFhJmJUB4gorNtqfODftc8MXZcCIb3g76KdVieQYamna5PtSjrMFvOt5/84tXyN5qQ+YOuZNJZQyqfbTUwj2IAAB5ISURBVKfjgL9w8TVl3Xm5LpjVy8p4MDMQLtux3Z2UOu3uYZapss3SWGZ1R2DPs/PvNRmsyBLUr95AqH+n+0+uS9l4r+pX+rFUQR/0MlhlI/WoNofR7eZGgibJNiSMl29iNiLx1tmsRU59JmVXGuxkyvYecWhPZy2cMAsS3LesxR1KT/J5uc/0mxJTrq2dW1fuewuQBHy4Ls/R12vd+Bd9keHdXZWy3wosLzGjJfZZa7mnx6WfJhLtuNJ1vKewz1gbOmcoq9/NNhjSj2zNBtKGd6oDQ7K2koBzZroihBBCCCEvAXxhJYQQQgghs+bVkwQ8QwaJO1Q0Fr+fO8u2PChwncr381XS39gXAuEG2GfwlX9CHezsWjdzRpTpytmFPH/6n/2l8scg1VihOj4umy3LLNZ091RviBmDoK9gOFdEZx3KK+ivuI8J9eswN8QRbb0xpL/ELDFluT01GdsgDIchuOFMdRg/EMY/HEPZx2oPqapSxh2Y3noMU19XSWfbESmyoM/tikvAG+emvZ1MQ/UOwuxmRm0FYVLljmCaEWUOen9YNnIDlbUM2rQ5t2FXnMnfjy4PwvSwTkCKUlmpVTcubcpbaAgjV+kvLuTW42UQDKKnKqQ7NQvSTX62cm5BkyPcA7kBSEdAapcP+9FtLOjqcbfCsatn8h9XxeWnihp8yjPWhtadMT6UUoyPZSWniMqGITFobkcaiYku08SMn4OiHReEeKdpm/ELKyGEEEIImTV8YSWEEEIIIbOGL6yEEEIIIWTWUMP6PhjocFDvpax0UIviizUyFLgFj5Nd1tqvg5TUNn0kBvKO69VNJPA7mbYZebHU3/TJq+XBtcX+iZpR0HiiLlREZ7cSyCaTWiO4QquWflzzZTWs2InQuirXug6Y2albj9sxWQunWmkqYdnYyqHerQZdbn0ot8bKJIlrYcztIM3LhU35AoAEVdlaHS/02E5dKbsCp64a6tBsjYWTynzj6+1q2E9Z1OCtwbRjczGegSrtfHs+ZY2GGmZra2b7g7MdZhCUI7D4uwf6X9Mfq8UtebRN/GTkZSAa6COdy2J1qjmwPBo75mA7R19r103W4aKOuoUxEFpCAdW4RZ6IzsTUgP4cs1nZZ+wT8GY6dOP9VERE4F6VPZs+0/bqWnbjy4P9HM1xJK+12aRU2XBKqFtVVlj2me9cv+haqv1V1jO9rl1Pe6PgF1ZCCCGEEDJr+MJKCCGEEEJmzS2JmzxDguwf3u/uZ3cTcsWQZ7UuoasKQlyDsCiwgzDkg/bu1fLvNF9S2z1oP3613HalbHsxewhL1EsIuUK4zIaAB2HkKUxLUkGeA4fXjq6Wbb+tz0uMGe2hRIXPdTxH2VXdBSssm7HNs3eBvm9tjVTWKgwjmz7YVCgDgLD0JrCywTqgBMZKHlQo+c7V0uKsjJHFuf5//cXj0iZf3pZx+r+3n7hafti/ofb57bas+5WLj14tP3hi7K/6Ur8enHbaI9jEWIph6E9loDFDuV9gLLEsotxgaMEz/oioTWIxtMNKSgZQDtSc+zKCZgvX1ViP9UcTHlODjE+3Q7Q0NUzuSgJskzrZiOxlVNZIU+UGsIxh5GwvD27ohY47e33wHuTsI9pOrz4q0jhZlQ13a12h3JR1bV/2f9CVsfvrhwdqn1/ev361/Gi3Fo92XRqiOS7P/H7pP2M9QquviTICtYtzje3fSjowUeqRnWssYq6Z824wuK042bEs/MJKCCGEEEJmDV9YCSGEEELIrHn1JAEOyYloXv4wvo+d6YZhgPoEQn0wExi3saAk4HP7kg3nfn2utsNMOYd92ceWnCFzTwaJQl6X7+/9wkgCnP/CDEIz45uRF8zyi29dLeeVzt4iGErGUHgws1xlbIGwO/YhET0r1uvjNmyP+3RB2BdD2e7MWSMjwNnEGNpsNnrqLIbrDqelDpsPlHja9kO6fRb3Sgz9TlOWP754+2r5frVR+7yRitzgLmTHWjY6prfD8D6cEhgLSLPT9clqBjHIH4z6aPkEsmXtIWvVhZ/CRrWjCksaV4aLUvEapR8g9ci2X0AZyglgkH1vXN6hlntzDtbFYqao+6oNwXvh9GCGtpr9j5IAE3LFddptY/z3Adi3bBZEVJ5gGVj24JaDnRh2MX24W5UfFnfKmMI+0h2ZLHzw56YtDfGbu49cLZ/3K9xFfu7ia66Wn2xgnTnX9qTUp70Dz1jvnmVQ18vKNmAdhu2962X3UVmrTHtjeXhvUW1v6oN9SNXV3j686+xk1BIRyZQEEEIIIYSQlwG+sBJCCCGEkFnDF1ZCCCGEEDJrXmkNq6dbHdh5eNYMRofRg8VFPkULoCIY6daBhnVbhBxofWP5jYuiYW13fnmo96lPxy03lNWNBHqbKNPVBK0VeT50r4GuK/jvaGpL3+ghy1S/0p26W6A2FZaN9tmzskG7I5vBSmu0gmxb7bgeVdliWesY0F4252X8Ka2kiJv1rT4tlVs80Q159nYZSz//la+CQ37L1fKdxVbt8+auZGX6lbeKdu7hm6dqu+W21GFxVn5fPS7nunyoz6FCPamyNbKWdWUZ27FCbbHVxEEZ9Rba0VqUgc1ZfwJavrrcawbZsVBvh/dFa63XOTeS2tGzioi0vi53TqB+cLKNUGApNCWDlYivj40yJ7kEtkauTVage1X9wtxn2mN4xt6FeSKgYe6W5sYH9Tnblb752e0Hr5YfdUe4h3zh4rWr5d2u3B+X5lz7ptSvW49nusJtRMx7g3ddRVRD4j0Ru3qkjw2fxe/3OX2NfZTW3mqTbcM68AsrIYQQQgiZNXxhJYQQQgghs2b2koAwE8j7Ltwpe6Ktlf3Ur7Je3IWMQxAuw5DGoLxNuRyffVLCFXvjL/H5Jx8oVdv65XUrsA06LhZHKAPoVtNsraIQwDO/LuTabD927K6rIIOQDtuVP3obRoa/MaRXb3XIFft1D1m09jrircBwn2uFIyKLDYTGVFgJxtvWWD1BeYc7YDe30/VGe6YM47mCOiwf6bJXb5bjvnFSsuUkaNRVrU/ifF/G31tvl1Bm9USP7eas1AFtqPC6bD6sPWDwWqJd1cB2rx6PEeP1X1iLKygb7yfpVNehxuxUTgg/mbA9yjMwgxGGUweg5AG2s/KH3oaFZ0oNfbtb63PowE3Js3MbhOMdS6FKKzj8MrB9bRM6EoPB/d+zYBpXrjyt4Pi63jjztcfw7AIbKXzG2nrX+1LxM7Co+tLm3tXyptMHergvz+/+AP3eDg+0alLyKZAKLP17qnoHMWolgftRrqGfgDygsgontKuCbHS23spiCu2qgkx5uE9kreVJPyJJgP3b43aMakIIIYQQ8srCF1ZCCCGEEDJrZi8JeG5gKMWu8zJd2Zlu6/L+30LILEFI32bhQNKmrPvS4xJqPDvocMXbZyXsW2388jDc356UOugMKOZsJ2a6cmcZUh4wGwbhb7DCUNmjMKOSCeeie0aGTmD7w/qtEn/qIVSLIffKzBJPToat3oaEMZSMzgJQnt2nX2KaF1gxmNEMbQKxRMz+lO7ogV7tICT3oIzNL/f3r5brlT7Xbguz5UEG0Fzo8bd8AstnpQ6LM3/Wu5ImBeda1Xl8O9zFZgyD9jmclnawYUCVLAflHf347yK6r1UgZRhk0dqPzwC/LWH/iLokShuEv1XWIlyHl8hcBwz9V1HYdkL2xkHYthpfDmUJjkQhCgHnCu9TVnaHz7TyjK32IEkyUj0Mk28vyj7/7xyfsTrT1Vub8ozNO+j3A5eAsozPf3z2drpofe4o2zDhfbxkGa4/ygN6M5BrlGMEWctU6B/fB6I3QqxrULY75lXWK/Ocqae9ONz+EU8IIYQQQl5q+MJKCCGEEEJmzasnCZjgDJAnek4PJAEQBjhACB5n4bYr//8I9basO39UZiliQgERkcOm/L3YObE90bMTE8yuxM/0nQm5zM0lIDK/JkMwzNrZvgZteTgZn/lqryXKCtDAv9rrQdLX4zIAlWygsfITCO+BVMY6EKhQIs40PfFvX1nNpMXEA/oEVWIENAGHsZPNYWqYfVvBDGT5CiZg0DvhTOXFo3LMowe6PscPSnxt+bgs1yB/qDY6dqiuWWCY3x9jCLWUl3C2/kLf1HAm/grazvaTtCuxaOW8gIkZjvR9DGUbapa3lXdAMguVYCKQONSbW5I44Bph+x7O2zov4LMLl2sbtoUupEL9i/HfRUy42ElCcbkjrFNT/uF3e19XM8sxmYfeDMPrB5DqVHsIx5tZ+erZDk48Dx4WC5OHC504YLctMfi0gYQANj/FMc7kL8tKKmBdAry2M5IA1fzZuR8FiSNw9n+KHB/wekE/iZISqHOwOWS88iIZyMQ3UX5hJYQQQgghs4YvrIQQQgghZNbwhZUQQgghhMyaV0/Dijga1sm2VuZ139OMom5uoK8BKrA46c7KpTns9IES/F1FGlbUpzoZTHotK3N1K8xmdTtA/aDVFmE2KtTOYT+x1zlX4ylo8tbXiWEd6r2vJUSN3fIx6Cgrv0/3oMtVOlqzD2rI0BoH7ZNERJoL0IZCee0RtpW+TS4gG1UNY/Fwgno2U3GVjQp+NvXen45ralNXCqwPdtCWxerg20Nhh+jWRaOn9L57f6BjO1otcNWuS3lwHGVLZCXMWFfMtma0zqhbRX0zLqOlkMjtsbzqUDNqu73KRleWq87XeKo2vo7+38lMdHlgZ53tZjK+zsuAJKItnSL1Md6r9qDDr0r3k1bLUfVxwAbykFawrLdLoImtN+MZ+UREDqeoe8cCyuLgmTr1GQv36Bq1yYHO1NWwmvuRZ3mlLKnMPj1aYXkWZ+JrdLW21VqP0daKEEIIIYS8BPCFlRBCCCGEzJpXWxIAKOucYB0ykARgpA6+i+P+NgSPoPVNfwY2VMZ6qoL4BWY2sehjjYc1htlMvBQ45m8vJETpwAtl8XDrrlt5K1A7YHQEmBFLhW1XuuO0a8g0A+FYzOzWmTCtDh1B2Pdgws07DB3D763f8XBc7O9iljd9fmg/19+fZkujJAYHlD+ATdda7aLGWQfrOpPdqD0qZTQgu8BQ/fLMZImZEIITEWnBdk9nI4INj/S5qvtBlEULs1Y5lkkR9RbO77H298GMZvUFXNg+8km6HezvBTISbHq0pQqyMvpWWGY7Rzqg6hBJFMYPM1zpLA8svNS49ovGjF8owcH90V7SUu+ck7WSgBbGHrb9QAYIxeH5Bc9BL5wejRXPKmrwvHWkf6F0BDPTRfaVjqRjIAmAe6eTzFCqvf578XjajYJfWAkhhBBCyKzhCyshhBBCCJk1t0oSMPWT+/QCx3+e7hJgwmeQgcQLx/dBi2P2EQxdZBP2x1miUfgEIx4qAgPVtqGiyTNLb1AGwOxW1+fsa0v2lji8AxmDsB/bGb8Q06kOfoFYhup3mP3F9LUawtyYeWt315QN+y3Oyz4NzNCvd7puXtaqZHQRWCfcB495ONYdEsOSuKwkQcHMYHRHqOyUaNgOZQU1xHC3RiKk5BRb/F0XXSv5wrjMYpCVB64/hiKtbEPvBNvBTP6BA4UzztHNQsRkNPtguYAYirTnGrmxzIn9fRxfduY0LAdSD70TLGN42Eq/nNB/dO8dZLQaOc7guE7oeXCf6cfXDfoM1BuzTKljmmcslqFcdZzw+Vj9vO28kH4ymcXUPvj8xfB54CziSSbscbxZ/va6uvUOnutuZlBTtveOg3WrrSTgbHwfC7+wEkIIIYSQWcMXVkIIIYQQMmv4wkoIIYQQQmbNrdKwPjemajKtLgT1cBO1RIjSo0LWK6uV9bJUWFA/mBzh00CH62mYaFd1K1h/pQieh/0GdKvQNyJtuLKiwsWBhhG1eP3Yz1Ltg84KGs1BvdtSHtppYTaqZtuZfeBclZ7VZI2D+uE6HKfLJ7o+aJuD+lbUbrUn/riqHIuiywqVRdTl1nA/sGNRufPAumarN5yi+18+Nu2IujOwl4r61tR7Beqj+zry9HF+xv5sbK0WZ7fjhoUWZ7bdatQq4rPBs6ESo7HEsWeHnmdRNPWNQNmi6VWqnzl6TcuUzEuD8hbjv0d6VLS7SxnHrrGKwzIcfe1lGU5do3Rdjm7VWl6qsmH8q/ax1xUzXQXX1bUvg/Ls/BilqQ6sOr2MWKrtTb2bDTNdEUIIIYSQlwC+sBJCCCGEkFlzayUBNnT9vm2urrH/IHxeeWFWx0LI4FlX2BBHCsIxekMsw8lY84LcX2hddTO0JyUeczjx9SeYJQqth6JxoCyKOn9DDOEj/VLXB8dFfeH7s6F8oXlSYmOLt0pcqV/ruBQeS9nFZX/A4DmhxVXV6M6KlnOrR+P7DAsvi9E9QEsHwFIK7wc2axGGCLNfH9wOZRuh/Rn0E5RM9DZrGYb+WqdAmx2rHa/rVClL8o5zS7FhUnwGYEgfQ7CDcCw80ZX9kbERQomJuhdjFjYbRnZsxAZyAwwXY/g7kgRguDiSvDlZGgf2jN5xHFVSZR5I3rlGNlJemwyedY5kAm0xRUQE7CuVNVdga4X9Ac/ByjE8GZFbT/Gt1QZtMuUzaGCzFcEvrIQQQgghZNbwhZUQQgghhMyaWysJsLyQELM9phNqz9kJx9vdvWhlMAszkgS4GSxwm+gcyK1j8ajE1pZv6ThgvQEHgaYaX45mawN2xn+CsgXK645LjKofOFLALN07kDLK9MFuDaFoDNWDU4EdBzqTC7gErEwdnExcKsyZ9eBpj6A+TmhtGDoEFwUI6S3O/QHcbDCuiIXp7dQ5QPs0G102htAxpJ9AHhA5OdToOmBm5aMTg55BjpmyTH3AdaDal0bB87lcCf0Tj4vbmfpY+clcSdGsbNUHx/cfZDCCsHKGkPLgPo/XCI8ZzIhXdYvUGE6mqhzsg/WLnltTQ8ceqrzItMQZllOzjF3rfWRiZqlnkWVyUtmDnSZuNiFrmZVwdOtpDcYvrIQQQgghZNbwhZUQQgghhMyal0YSMAfcMMDU8IAX6o8cESaGBN533citoD0pQ3ow2/peCbsrM/6l//9WNZNbhWAXZruVs52ML4sO76pkA7YOGPpvx8PS1d7fHw3vu7WORR1OIfmAE8rqF7riypDfiXMOQ5lKIwT10WVjex/ulLphm7qz8A32+tcQB/baOy/M7P/k3CAG17Ist4E7hQfWVSUhGDnWO6D8wYZwh4kt5olKCGCr7N2bHTcZu5MKx5snfXc0flwVjg9mxKvqWNcKHP6YeMI4FSBqRnvggqCOEyVGmHAcvWLi/uaaqHPH+kwsW0tC7KDCDeHnZvx3+7fnOiQyTVpht8FrgWVHLgjJ+d1+Ku2WMgl+YSWEEEIIIbOGL6yEEEIIIWTW8IWVEEIIIYTMGmpYnyWe5iiwpHG3w10mWohMrg95aYm0gJ6uT2W6shqtxfj/aa2uE62IMIsK1qfa6+OrDHBRlih0d4KyMfOSHPn/9851uc11g3rDMojvamgraz2lNKS4CGXVO2OFdTxev+ZCl+1mE4KbQL/U59DB3ypjlNUW9mBlNVHzh+2AdbPn59ouRZn9MNMZaJBt31L7QL0b2CeyNZszA90ioLSBXr8AN7nLnWAZncbMk17ZsTkZmgb6WCwPx42VLKOOEuqn6mr6S78cX7baW3WdMeNTNK8jOetUNkq9i/ozygypMlWVZbz1DrS/Tn2iMZmdaxlmlYrKnvBOMhhDeK+L7DknzLGxZQ/6kMMtGdaEEEIIIeRVhS+shBBCCCFk1lAS8Dx4BlkvCJlCD5mcbLiwhRC6Z18TWiZBP7bhfZQEoPQgCh15od9kLVjQ2gYOW+/60d9FRDpHIqAsqQwqSxCEsgfyB0y2BKFxXLYhr+VDyOQUyB8wfJg6R8Jh7IE85x+bMSo7IVA8zsBSCv5sj0vcrltNzIgG/am12WwgnnkAm6XOSB4qqN8gBP5OUbaporRKMwLPJ8paOEluZsoIZRG4zpOiTZRZDH7HMLkT5rbXS/V7PO7ENsmOvVS0T9TeKmpfOSsManxFMoIpB70mOsPf+PJwJ6iCZ0kl07N35SnnHtjiRfALKyGEEEIImTV8YSWEEEIIIbOGkgBCXiLqDcbWTKYryG5VqxnWmNZJl5e68oNyIDDh6n49npWpOR+k4ilAeZPDTeBakA7OOYhI+gpkddqXuGS/1rc8PA90RFCSgJWewuo6JwQz9Ptl+SGcDeyEH5XDg43aY+gfL6UJrbcgF2nsLP+ruvnOEiiNsNIRz0EA26HZ2GM57hRBRjS1P4T9q51xW2hux7cYFQoPQtlemHUw29o57UH42wkDhzPBJ4a5s1M/nN0+yEyFWaLglmGVHSrM7UkCDF4bq/OO5AEoszDHUTIApwzbjpPD9lMyRtldsLx6/HcRfQ/SMiS/7OT1u6nh/RRsM3G43o5RTQghhBBCXln4wkoIIYQQQmYNX1gJIYQQQsisoYaVkJeIbh1lM0KrJtjOWhkBKlMV6BZ7Y82kM1CVdfv75RZjdUuoIVMZkYxwDfVumJWrDjS1Cc6vOynGT54eUkSkR9svpY8zWmBoL699qgsrBobyggw7iMpuA+cz0KbCNcfrYK8/6lab87JStf1A61b2WV74Ard6W4SHqJWuHoNwtdECQNSZ5ho00Ef6sZRruJZHsB1oag93zD635FMMZowK3KH8zEQTtd+hhtXTb5oK9YEmUh3L69ORhtGp20Cv6WlQo/LGJd46e9jEOtgxlZw/pmo81TkYub+rt0VdcKBhnjoGPD1rpI+efP3VPR62Mfv0tLUihBBCCCEvA3xhJYQQQgghs4aSgPdBFOK8rUy1FyLzZHcP7aX0OrSLaSC0vrjAzFS6A6gsT7hobI0wVF/ty/+DMUuR3UdnzgL7LCs3cEL/1WHcukrE78d5YcPSZcP6STf6u20TlAgoKytYtpm20HapxnpvdBwQw99o+9QdF1lDutDtuIT6odWTterBcDq2T3sCIXeT1asGW6sdyjusdKBflsOq1Fun5XcjrYBdVOjQZiNTYUpHqmFlLfZYc6VfQb33RnqCGeg8NYY/pOLtnHC6Z0k1+DuStThZq1To2eyj5AbwVhJaPTmh+shGCuutwunmXon1xrYfyKww5F07y/Yty7HwqgIHQCwP7cGm2mzZemOGtcppu4E1H56HkynR/u1dl95Lz/cu8AsrIYQQQgiZNXxhJYQQQgghs4aSgGfIlNm/zzPkzvD+q8f6bQhrD8JF45mY2iP//6048x23G2ZOGc8S1UF2pWhmKWZUsmNHhynHszXZzEsYqlcZdg5+uBn3QSnDILOUyiYzfn7Dc8VwvJ8xCkPwuC7MQINlOG11WVfYDM57+bgUbmUb3rliprTL8mA/aDt0AmhPbMaw8enbA1eGbvxmWu3xONP2mRteGFkkuOZeBiQxXXViNip9UH8f5eoRNG/yJAHRJcGZ7xPbJGEI3UmaZo+rZFJRdjXs90FGrCkuAQPpoBOqH0gCYL9uoiRAtbEz+3/s77FjDu5h3v0tyBLmSTisxGWqowG/sBJCCCGEkFnDF1ZCCCGEEDJrKAm4IRiOJy+CzQdLjMiGfTAc7s0MbXZ+fKcO1ikDfZgFv3yMx/TD9ipM1tqK4/TS8bhiFG7sVjALfq3/j46hY3ROUK4Hpj49zOTHsLYKS1sZAYS5tUzCzJxHKYNyI4A6B+eqwoombtstx29KaNpvJQpqlm+QlEDNIFazzoOZ/M71781TCc8JXRCw7cIZ7TMmteiAcY0CbF/w3DEmGr1HIXxVhmMIb+sw1Ww+e+F5ez4TyotmrVc4lB0ZQlS3bGa3K5mEN0PfhuMnGOvbv6/l0OAlHrDlTTgHEdGJDdAlIHB8SF55Zp96J5O4JcOaEEIIIYS8qvCFlRBCCCGEzBq+sBJCCCGEkFlDDSshLxGv/eLZ1XK/1MIs1Gu6WsCF/j9sewTZjULLm3HPG20pY/1dYBe0bTHZqLTWEcrGDEhGg9aCbhW1qc25Frgp+yMno5a1ban3RcxVb6AsbNNat+PhtLQj6hYtnj4V2yDyMopsxJStDOiZI5scZUujMi8ZO6497IL6tj6P/i6itcHWbkyV7WinVX82OuN6dx1B6PNHafdsNqpA8zeFKGuRwrE/ijIvYaYiqzlW17ka327Qz7FPOxpPW3aGTGmqb5qiK+ib3jlVNqvTwlm2b0wq+19ZrjGTFCyLiJsdS2V+E6OrdTSnA31sN75daFGF+0fZseD8VN8ybYJthG2nsnrBNRERaS5kEvzCSgghhBBCZg1fWAkhhBBCyKxJOUpZQQghhBBCyAuGX1gJIYQQQsis4QsrIYQQQgiZNXxhJYQQQgghs4YvrIQQQgghZNbwhZUQQgghhMwavrASQgghhJBZ8/8BpyBeOTSx/jwAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 864x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dims = [45, 60]\n",
"n = np.prod(dims) * 5\n",
"X_brown = colornoise(2, [n, 45, 60]).reshape(n, np.prod(dims))\n",
"y = X_brown @ k + np.random.randn(X_brown.shape[0])\n",
"\n",
"X_brown = splineLG(X_brown, y, dims, df=20)\n",
"X_brown.fit(num_iters=1500, verbal=0, alpha=1, lambd=0.05)\n",
"fig, ax = plt.subplots(1,3, figsize=(12,5))\n",
"ax = ax.flatten()\n",
"ax[0].imshow(k.reshape(dims))\n",
"ax[1].imshow(X_brown.w_sta.reshape(dims))\n",
"ax[2].imshow(X_brown.w_spl.reshape(dims))\n",
"\n",
"\n",
"ax[0].set_title('True')\n",
"ax[1].set_title('STA')\n",
"ax[2].set_title('SPL')\n",
"\n",
"\n",
"for i in range(3):\n",
" ax[i].axis('off')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# natural image sequence"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"stimpath = 'path/to/stim'"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"import skvideo.io\n",
"stim = skvideo.io.vread(stimpath) "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"dims = [90, 160]\n",
"k = gabor(dims, [10, 10], sf=1/24).flatten()\n",
"X_natimg = stim[:,:,:, 0].reshape(87114, np.prod(dims))\n",
"\n",
"y = X_natimg @ k + np.random.randn(X_natimg.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"spl_natimg = splineLG(X_natimg, y, dims, df=24)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,3, figsize=(12,5))\n",
"ax = ax.flatten()\n",
"ax[0].imshow(k.reshape(dims))\n",
"ax[1].imshow(spl_natimg.w_sta.reshape(dims))\n",
"ax[2].imshow(spl_natimg.w_spl.reshape(dims))\n",
"\n",
"\n",
"ax[0].set_title('True')\n",
"ax[1].set_title('STA')\n",
"ax[2].set_title('SPL')\n",
"\n",
"\n",
"for i in range(3):\n",
" ax[i].axis('off')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# natural movie"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"stimpath_qiu = 'path/to/stim'\n",
"from skimage import io\n",
"stim = io.imread(stimpath_qiu)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"dims = stim.shape[1:3]\n",
"X_natmov = stim[:, :, :, 1].reshape(16200, np.prod(dims))\n",
"k = gabor(dims, [10, 10], sf=1/24).flatten()\n",
"y = X_natmov @ k + np.random.randn(X_natmov.shape[0])\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"spl_natmov = splineLG(X_natmov, y, dims, df=21)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,3, figsize=(12,5))\n",
"ax = ax.flatten()\n",
"ax[0].imshow(k.reshape(dims))\n",
"ax[1].imshow(spl_natmov.w_sta.reshape(dims))\n",
"ax[2].imshow(spl_natmov.w_spl.reshape(dims))\n",
"\n",
"\n",
"ax[0].set_title('True')\n",
"ax[1].set_title('STA')\n",
"ax[2].set_title('SPL')\n",
"\n",
"\n",
"for i in range(3):\n",
" ax[i].axis('off')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.9"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment