From bc0dc3d1c61ddf27ffb9a7bdd85ac4e627432a8f Mon Sep 17 00:00:00 2001 From: Chaitanya Chintaluri Date: Mon, 10 Sep 2018 17:04:41 +0100 Subject: [PATCH] in preparation for the tutorial on the paper --- tutorials/config.py | 20 +- tutorials/tutorial_basic.ipynb | 378 ++++++++++++++++++++------------- 2 files changed, 242 insertions(+), 156 deletions(-) diff --git a/tutorials/config.py b/tutorials/config.py index 8fbf5b70..43d007fb 100644 --- a/tutorials/config.py +++ b/tutorials/config.py @@ -54,16 +54,16 @@ def initialize(value): 'sigma': 1.0, 'h': 1.0}, 'ValidateMoIKCSD': {'R_init': 0.08, - 'n_src_init': 1000, - 'gdx': 0.01, 'gdy': 0.01, - 'xmin': 0.0, 'xmax': 1.0, - 'ymin': 0.0, 'ymax': 1.0, - 'ext_x': 0.0, 'ext_y': 0.0, - 'sigma': 1.0, - 'h': 1.0, - 'lambd': 0.0, - 'MoI_iters': 20, - 'sigma_S': 5.0}, + 'n_src_init': 1000, + 'gdx': 0.01, 'gdy': 0.01, + 'xmin': 0.0, 'xmax': 1.0, + 'ymin': 0.0, 'ymax': 1.0, + 'ext_x': 0.0, 'ext_y': 0.0, + 'sigma': 1.0, + 'h': 1.0, + 'lambd': 0.0, + 'MoI_iters': 20, + 'sigma_S': 5.0}, 'ValidateKCSD3D': {'R_init': 0.31, 'n_src_init': 300, 'est_xres': 0.05, 'est_yres': 0.05, 'est_zres': 0.05, diff --git a/tutorials/tutorial_basic.ipynb b/tutorials/tutorial_basic.ipynb index 45b0c0e5..a8b1e594 100644 --- a/tutorials/tutorial_basic.ipynb +++ b/tutorials/tutorial_basic.ipynb @@ -4,88 +4,58 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Populating the interactive namespace from numpy and matplotlib\n" - ] - } - ], + "outputs": [], "source": [ - "%pylab inline\n", - "pylab.rcParams['figure.figsize'] = (10, 6)\n", + "%matplotlib inline\n", "import numpy as np\n", - "import config\n", - "\n", - "import plotting_helpers as plots\n", - "from kcsd import generate as utils\n", - "from widget_helpers import dim_select, csd_select, kcsd_select, accordion" + "# Region of interest where in the CSD lies\n", + "# It is not necessarily the same place where the electrodes are placed \n", + "# This can be a region of the brain or a slice area\n", + "csd_at = np.mgrid[0.:1.:100j, \n", + " 0.:1.:100j]\n", + "csd_x, csd_y = csd_at" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { - "scrolled": false + "collapsed": true }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "04ba5f47bbf942c98020bf60b5a45e17", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "A Jupyter Widget" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "#Select dimensions of your setup\n", - "dim_select" + "# Now lets place a CSD profile in this region\n", + "# Some default CSD profiles are already defined here\n", + "# We shall also plot to see how this looks like\n", + "from kcsd import csd_profile as CSD\n", + "\n", + "CSD_PROFILE = CSD.gauss_2d_small\n", + "true_csd = CSD_PROFILE(csd_at, seed=5) \n", + "# You can try a different seed - which will give you a different True CSD" ] }, { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "096cb4cb3ab443e7a3e57771593c9a50", - "version_major": 2, - "version_minor": 0 - }, "text/plain": [ - "A Jupyter Widget" + "" ] }, + "execution_count": 3, "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Select a type of CSD source\n", - "csd_select" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "output_type": "execute_result" + }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -93,57 +63,89 @@ } ], "source": [ - "csd_at, true_csd = utils.generate_csd(config.csd_profile, dim=config.dim, seed=10)\n", - "plots.show_csd(csd_at, true_csd)" + "# Lets try and see how this True CSD looks like\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "\n", + "\n", + "fig = plt.figure(figsize=(7, 7))\n", + "ax = plt.subplot(111)\n", + "ax.set_aspect('equal')\n", + "t_max = np.max(np.abs(true_csd))\n", + "levels = np.linspace(-1 * t_max, t_max, 16)\n", + "im = ax.contourf(csd_x, csd_y, true_csd, levels=levels, cmap=cm.bwr)\n", + "ax.set_xlabel('X [mm]')\n", + "ax.set_ylabel('Y [mm]')\n", + "ax.set_title('True CSD')\n", + "ticks = np.linspace(-1 * t_max, t_max, 7, endpoint=True)\n", + "plt.colorbar(im, orientation='horizontal', format='%.2f', ticks=ticks)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Shape of the ele_pos array: (30, 1)\n", - "Number of electrodes: 30\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVoAAAFACAYAAAD9HLSLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl0VWWa7/HvkwEIIRAmIRACYQqzDEEcwGYQZQ41dKtd\nVe3yVjdqoVV17+3VjdV9q+xq7yrrdpXd1Ve71GU79LpWqTUogzgxFEg5QLSYMSHMYSZMCYQh5Ll/\nnEM8QhIOIfuc5PD7rHUWe3jP3s9O9Mfm3Xu/29wdEREJTlK8CxARSXQKWhGRgCloRUQCpqAVEQmY\nglZEJGAKWhGRgCloRUQCpqAVEQmYglZEJGAp8S4gCJ06dfJevXrFuwwRSTCffvrpEXfvfLXfS8ig\n7dWrF4WFhfEuQ0QSjJntasj31HUgIhIwBa2ISMAUtCIiAUvIPlqRRHf+/HlKS0s5c+ZMvEtJSK1a\ntSI7O5vU1NRG2Z6CVqQZKi0tJSMjg169emFm8S4nobg7ZWVllJaWkpub2yjbVNeBSDN05swZOnbs\nqJANgJnRsWPHRv3XQlyD1symmFmRmZWY2bxa1heY2XozW2tmhWY2Nh51ijRFCtngNPbPNm5dB2aW\nDDwNTAZKgTVmtsDdN0c0WwoscHc3s2HA68CA2FcrItJw8TyjvQkocfft7n4OeBUoiGzg7hX+xUvN\n0gG94EykCTlw4AD33HMPffr0YdSoUUybNo3i4mK++93vMmTIEIYOHcro0aPZsWMHEHqYaOjQoQwd\nOpRBgwbxj//4j9fFBb14XgzrDuyJmC8FxlzayMy+AvwEuAGYXtfGzGwOMAcgJyenUQsVkcu5O1/5\nyle47777ePXVVwFYt24dr732Gvv27WP9+vUkJSVRWlpKenp6zfeWL19Op06dqKioYM6cOTzwwAO8\n/PLL8TqMmGjyF8Pc/Q13HwDMBv65nnbPuXu+u+d37nzVjyKLyFVavnw5qampPPjggzXLbrzxRtLT\n08nKyiIpKRQv2dnZtG/f/rLvt2nThmeeeYY333yTo0ePxqzueIjnGe1eoEfEfHZ4Wa3cfaWZ9Taz\nTu5+JPDqRJoJ+6fgLor5j+rurdu4cSOjRo26bPlf/MVfMHbsWD744AMmTZrEN7/5TUaMGFHrNtq2\nbUtubi5bt25lzJjL/kGbMOJ5RrsG6GdmuWbWArgHWBDZwMz6Wvjyn5mNBFoCZTGvVESilp2dTVFR\nET/5yU9ISkpi0qRJLF26tM72X1yGSVxxO6N19yozexh4F0gGXnD3TWb2YHj9M8DXgL8ys/NAJXC3\nXw+/FZFmYPDgwfz2t7+tdV3Lli2ZOnUqU6dOpUuXLrz55ptMmjTpsnbl5eXs3LmT/v37B11uXMX1\nyTB3XwwsvmTZMxHTPwV+Guu6RJqT+v55H6SJEyfygx/8gOeee445c+YAsH79eo4dO0a/fv3o1q0b\n1dXVrF+/nmHDhl32/YqKCr7zne8we/bsWvtwE0mTvxgmIk2TmfHGG2+wZMkS+vTpw+DBg3n00UdZ\nv349M2fOZMiQIQwbNoyUlBQefvjhmu9NmDCBIUOGcNNNN5GTk8Ozzz4bx6OIDY11ICIN1q1bN15/\n/fXLlj/yyCO1tt+5c2fAFTVNOqMVEQmYglZEJGAJ2XWw6fAmBj09iGqvxvEv3T5iZhhGclIySZZE\nSlIKKUkppCalkpqcSovkFqQmpdIypSWtUlqFPsmtSEtNo3Vqa1qntiY9NZ30FulktMigTYs2tG3Z\nloyWGbRt2ZZ2LdvRrlU7UpIS8kcrIg2QkGlw5vwZthzZEtca2rRoQ/tW7Wmf1p4OaR3okNaBjmkd\n6dS6U82nc+vO3JB+Q82nZUrLuNYsIsFIyKBtCirOVVBxroI9J/dcuXFY+1bt6dqmK13bdCUrI4tu\nbbrRLaMb3dt2p3tGd7LbZtMtoxupyY0z6ruIxEZCBu2gzoN4/aHXSbKkmq4CM6vpQqj2aqq9mgt+\ngarqKqqqqzh/4Tznq89z/sJ5zl44y7kL5zhTdYazVWeprKrk9PnTNZ9T505x6vwpKs5VUH6unPKz\n5Zw8e5ITZ09w4swJTp49iTdgoLFjZ45x7Myxes/GDaNrm67ktMuhR7se9GzXM/TJ7EmvzF7kZuaS\n0TKjwT87EWl8CRm0aalpDL5hcNz2X+3VnDx7kmOVoeA8WnmUo5VHKTtdRlllGYdPHebw6fDn1GEO\nnjrI4VOHueAXrrhtx9lfsZ/9Ffv5ZO8ntbbp1LoTvdv3Dn0ye9O3Q1/6dOhD3w59yWqTpQGjpVEk\nJyczdOjQmvl77rmHefPmMX78eH72s5+Rn59/Vdtbu3Yt+/btY9q0addUV0P3H6SEDNp4S7IkMltl\nktkqk1yie+dQtVdTdrqMAxUHQkFavp+95XvZV76PveV72XtyL6UnSzlQceCKZ8tHTh/hyOkjrN67\n+rJ16anp9O3Ql/4d+5PXMY+8TnkM6DSAvI55OhOWq5KWlsbatWsbbXtr166lsLCw1qCtqqoiJaX5\nxlXzrTzBJFkSndM70zm9M0O7DK2z3fkL59lXvo/dJ3az68Su0J/Hd7HzxE52Hg99zl04V+f3T50/\nxbqD61h3cN1l67pndGdg54EM7DSQQZ0HMajzIAZ3HkzH1h0b5Rjl+vPee+/xox/9iLNnz9KnTx9e\nfPFF2rRpw5o1a/je977HqVOnaNmyJe+//z4//OEPqaysZNWqVTz66KNs2bKFbdu2sX37dnJycnjx\nxRd56KGHKCwsJCUlhSeffJIJEyZQWVnJ/fffz7p16xgwYACVlZVX3P+8efNYsGABKSkp3Hnnnfzs\nZz8L9OegoG1mUpNT6ZkZ6pMdx7jL1ld7NfvK97Hj2A62H9tOydESth3bxtajWyk5WsLxM8fr3Pbe\n8r3sLd/Lku1LvrS8S3oXhtwwpOYzrMswBnceTHqL9Dq2JE3R3LlzefbZZ3nggQd4+umnr3l7lZWV\nDB8+vGb+0Ucf5e67766ZP3LkCI8//jhLliwhPT2dn/70pzz55JPMmzePu+++m9dee43Ro0dz8uRJ\nWrduzY9//GMKCwt56qmnAHjsscfYvHkzq1atIi0tjZ///OeYGRs2bODzzz/nzjvvpLi4mF/+8pe0\nbt2aLVu2sH79ekaOHFnv/ufOncsbb7zB559/jplx/Hjd/080FgVtgkmyJLLbZpPdNptxPb8cxO5O\nWWUZxWXFFJcVU3SkiKKy0Gdr2VbOV5+vdZsHTx3k4I6DLN3xxVB3htGnQx9u7HIjN3a5keFdhzO8\n63Cy22arD7iJevbZZ7lw4QLPPvtsowTtlboOPv74YzZv3sxtt90GwLlz57jlllsoKioiKyuL0aNH\nA6Exaesya9Ys0tLSAFi1alXNo70DBgygZ8+eFBcXs3LlSr773e8CMGzYsJoBbOraf7t27WjVqhXf\n/va3mTFjBjNmzLjGn8SVKWivI2ZWcw/vrT1u/dK6quoqdhzbwZYjW9h8eDObD29m0+FNbDm8hcqq\nysu25TglR0soOVrC77b8rmZ5h7QOjOg6ghFdRzAyayQjs0bSr2M/kkwPIcbbAw88UHNGGwvuzuTJ\nk/n1r3/9peUbNmyIehuRr8BprP0DrF69mqVLl/Lb3/6Wp556imXLljV4P9FQ0AoAKUkp9OvYj34d\n+zErb1bN8gvVF9h5fCcbD21kw6ENbDi0gfUH11NcVky1V1+2naOVR1m6Y+mXzn4zWmQwImsE+Vn5\n5HcLffp26Ksz3xh7+umnG+VMNlo333wzc+fOpaSkhL59+3Lq1Cn27t1LXl4e+/fvZ82aNYwePZry\n8nLS0tLIyMigvLy8zu2NGzeOV155hYkTJ1JcXMzu3bvJy8vj9ttv51e/+hUTJ05k48aNrF+/vt79\nd+vWjdOnTzNt2jRuu+02evfuHfjPQkEr9UpOSqZPhz706dCHggFfvKS48nwlmw9vZv3B9aw9sJZ1\nB9ex9sBaTpw9cdk2ys+Vs3LXSlbuWlmzLLNVJvnd8rmp203c1D30ycrIiskxSeO4tI92ypQpPPHE\nEzXznTt35qWXXuLee+/l7NmzADz++OP079+f1157jUceeYTKykrS0tJYsmQJEyZM4IknnmD48OE8\n+uijl+3vO9/5Dg899BBDhw4lJSWFl156iZYtW/LQQw9x//33M3DgQAYOHFjzep269p+RkUFBQQFn\nzpzB3XnyySeD/DEBYIn4woL8/HwvLCyMdxnXHXdn5/Gd/OnAn/hs/2d8tv8zPt3/KYdOHYrq+z3a\n9uDm7JtrPiOzRtIqpVXAVTdPW7ZsYeDAgfEuI6HV9jM2s0/d/apv0NUZrTQaMyO3fS657XP56sCv\nAqHw3Vu+l0/3fUrhvkIK9xeyZu8ayiovf/XbnpN72LN5D7/Z/BsAUpNSGZE1gluyb+HWHrdya49b\nyW6bHdNjEmkMCloJlJnV3AVxsevh4pnv6r2rWbNvDav3rqZwX+FlF93OV59n9d7VrN67ml988gsA\nctrlcGuPWxnbYyxjc8Yy5IYhJCclx/y4RK6GglZiLvLM9+4hofsuq6qr2HBwAx+Xfswnez/ho9KP\nKC4rvuy7u0/sZveJ3by68VUA2rZsyy3ZtzAuZxzjeo7jpu43XTfdDe6uC4oBaewuVfXRSpNVdrqM\nT/Z+wod7PuTDPR/yyd5POH3+dL3faZHcgjHdxzAuZxx/1uvPuLXHrbRp0SZGFcfOjh07yMjIoGPH\njgrbRubulJWVUV5eTm7ulx+hb2gfrYJWmo2q6irWHVjHH/f8kT/u+SMf7PqA/RX76/1OsiUzqtso\nxvccz/he4xmbMzYhxnQ4f/48paWlnDlzJt6lJKRWrVqRnZ1NauqXhyRV0EZQ0F4f3J0dx3ewavcq\nPtj1ASt3r6y1uyFSsiWT3y2f8b3GMzF3Irf1uE2PEkvUFLQRFLTXr4MVB/lg9wes2LmCFbtWsOFQ\n/U8hpSalMiZ7DBN7TWRS70mM6T5Gb7qQOiloIyho5aKy02U1wfuHXX9g3YF19Q4z2Tq1NWNzxjIp\ndxKTcicxImuEHh+WGgraCApaqcvRyqOs3LWSZTuWsXzncjYe2lhv+w5pHZiUO4k7et/B5N6TyW0f\n3fjCkpgUtBEUtBKtQ6cOsXzHcpbtWMbSHUvZdmxbve37tO/D5N6TmdxnMhNzJ5LZKjNGlUpToKCN\noKCVhtp1fFfNoDhLty/l4KmDdbZNsiTGdB/DnX3u5K4+dzG6+2i9Zj7BKWgjKGilMbg7mw5v4v1t\n7/P+9vdZsWtFvffxZrbKZFLuJO7qcxdT+k6hR7seMaxWYkFBG0FBK0E4W3WWj0o/qgnewn2F9V5Y\nG9R5EFP6TGFK3ymM6znuunliLZEpaCMoaCUWyk6XsWT7Et7d9i7vbXuPveV762zbOrU1E3pNYGrf\nqUztN5Xe7YMfA1Uan4I2goJWYs3d2Xx4M+9ue5d3t73Lip0rOHvhbJ3t+3fsz7S+05jabyq397xd\nZ7vNRLMMWjObAvwCSAaed/cnLln/DeDvAQPKgYfc/fLXt15CQSvxdvr8aVbsXME7Je/wdsnbbD26\ntc62rVNbMyl3EtP6TWNav2nktMuJYaVyNZpd0JpZMlAMTAZKgTXAve6+OaLNrcAWdz9mZlOBx9x9\nzJW2raCVpmbb0W01obtsx7Ja38N20ZAbhjCt7zSm95/OrT1u1Z0MTUhzDNpbCAXnXeH5RwHc/Sd1\ntG8PbHT37lfatoJWmrIzVWdYuWsli7cuZvHWxfWe7Wa2ymRK3ylM7zedqX2n0rF1xxhWKpdqjkH7\ndWCKu/91eP5bwBh3f7iO9n8LDLjYvj4KWmlOtpZtDYVuyWL+sPMPnLtwrtZ2SZbELdm3MKP/DGb0\nn8HgzoM1RGKMJXTQmtkE4D+Ase5++TtQQm3mAHMAcnJyRu3atSuw2kWCUnGugmU7lvFW8Vu8tfWt\neu9k6JXZixn9QqE7vtd4DYYTA80xaKPqOjCzYcAbwFR3r38MvDCd0UoicHfWH1zPW1vfYlHxIj4u\n/bjO+3bTU9O5s8+dzOw/k+n9p3ND+g0xrvb60ByDNoXQxbBJwF5CF8P+0t03RbTJAZYBf+XuH0a7\nbQWtJKLDpw7zTsk7LNq6iHdK3uHk2ZO1tjOMMdljmNl/JrPyZqmLoRE1u6AFMLNpwL8Rur3rBXf/\n32b2IIC7P2NmzwNfAy72A1RFc5AKWkl05y6cY9XuVSwsWsiirYsoOVpSZ9vczNya0L295+2kJqfW\n2Vbq1yyDNigKWrmeuDtFZUU1obtq9yqqvbrWtu1atmNqv6nM6j+Lqf2mavSxq6SgjaCgletZ2eky\nFm9dzMLihbxT8g7l58prbZeSlMLtPW9nVv9ZzMqbpbF2o6CgjaCgFQk5d+EcK3auYGHxQhYULWDX\nibrvxhl6w1Bm5c2iIK+AUd1G6c0StVDQRlDQilzu4l0MF0N3zb41dbbtltGNmf1nUpBXwMTcibp1\nLExBG0FBK3Jl+8r3sah4EfOL5rN0+9I6B8Fp06INd/W5i4K8Aqb3n06HtA4xrrTpUNBGUNCKXJ2K\ncxW8v+195hfNZ1HxIsoqa30uiGRLZlzPcczqP4uCAQXX3XCPCtoIClqRhquqruKjPR8xv2g+84vm\n13vr2NAbhlKQV0DBgAJGZY1K+Pt1FbQRFLQijcPd2XJkC/M/n8+C4gV8XPpxnW27Z3SvuZg2IXcC\nLZJbxLDS2FDQRlDQigTjQMUBFhYtZH7RfJZsX1Jnv25Giwym9pvK7LzZCXW/roI2goJWJHgV5yp4\nt+Rd5hfN562tb3G08mit7VKSUhjfa3yoiyGvoFm/tFJBG0FBKxJbVdVVrNq9ivmfh/p1dxzfUWfb\nEV1HUJBXwOwBsxnWZViz6tdV0EZQ0IrEj7uz8dBG5hfN583P3+TT/Z/W2bZnu541F9PG5Yxr8uMw\nKGgjKGhFmo7Sk6UsKFrA/KL5LN+xnPPV52ttl9kqk+n9plOQV8CUvlPIaJkR40qvTEEbQUEr0jSd\nOHOCd0reYX7RfBZvXcyJsydqbdciuQUTcyfWjMPQve0V32AVEwraCApakabv4jgMF+/XLT1ZWmfb\n/G75FOQVMCtvFkNvGBq3fl0FbQQFrUjz4u786cCfai6mrTu4rs62uZm5zMoLnenGul9XQRtBQSvS\nvO06vqumX3fFrhVUVVfV2i6zVSbT+k1jVv9ZTOk7hXat2gVal4I2goJWJHEcP3Oct7e+zfyi+bxd\n8nadr/C5eL/urP6zmJk3k16ZvRq9FgVtBAWtSGKK7NddULSAPSf31Nn24vi6s/Jmkd8tv1HG11XQ\nRlDQiiQ+d2fdwXXM/3w+C4sX1nu/btc2XZnRbwYz82ZyR+87aJ3aukH7VNBGUNCKXH9KT5aysGgh\nC4sXsnTHUs5dOFdru1YprZiUO4mZ/Wcyo/+Mq7p1TEEbQUErcn2rOFfBe9veY2HxQhYVL+LI6SN1\nth2ZNbImdEdmjay3i0FBG0FBKyIXXai+wMelH7OwOHS2u/nw5jrbZrXJYnq/6czMm8mk3Emkt0j/\n0noFbQQFrYjUZdvRbSwqXsTC4oX13jrWMrklE3InML3fdGb0n0GvzF4K2kgKWhGJxokzJ3h327ss\nLF7I21vfrvMVPgCDOw9m09xNCtqLFLQicrUiuxje2voWGw9tvLzRYyhoL1LQisi12nV8F4uKF/HW\n1rdYtmNZ6G0SCtovKGhFpDGdOneKZTuWMWvArAYF7bU/KiEikuDSW6QzM29mg7+voBURCZiCVkQk\nYApaEZGAKWhFRAKmoBURCVhcg9bMpphZkZmVmNm8WtYPMLOPzOysmf1tPGoUEblWKfHasZklA08D\nk4FSYI2ZLXD3yBEfjgLfBWbHoUQRkUYRzzPam4ASd9/u7ueAV4GCyAbufsjd1wC1vwheRKQZiGfQ\ndgci30NRGl7WIGY2x8wKzazw8OHD11yciEhjSZiLYe7+nLvnu3t+586d412OiEiNeAbtXqBHxHx2\neJmISEKJZ9CuAfqZWa6ZtQDuARbEsR4RkUDE7a4Dd68ys4eBd4Fk4AV332RmD4bXP2NmXYFCoC1Q\nbWbfBwa5e+0vdhcRaYLiFrQA7r4YWHzJsmcipg8Q6lIQEWm2EuZimIhIU6WgFREJmIJWRCRgCloR\nkYApaEVEAqagFREJWFS3d5nZMKBXZHt3/31ANYmIJJQrBq2ZvQAMAzYB1eHFDihoRUSiEM0Z7c3u\nPijwSkREElQ0fbQfmZmCVkSkgaI5o/0vQmF7ADgLGODuPizQykREEkQ0QfufwLeADXzRRysiIlGK\nJmgPu7uGLxQRaaBogvZPZvYrYCGhrgNAt3eJiEQrmqBNIxSwd0Ys0+1dIiJRumLQuvv9sShERCRR\nRfPAQi7wCJc/GTYruLJERBJHNF0HbxK682AhuutAROSqRRO0Z9z93wOvREQkQUUTtL8wsx8B7/Hl\nuw4+C6wqEZEEEk3QDiX0wMJEvjyozMSgihIRSSTRBO2fA73d/VzQxYiIJKJoBpXZCGQGXYiISKKK\n5ow2E/jczNbw5T5a3d4lIhKFaIL2R4FXISKSwOoMWjN7F3gHeNvdP49dSSIiiaW+Ptr7gGPAY2b2\nmZn90swKzCw9RrWJiCSEOs9o3f0A8BLwkpklAWOAqcDfmVkl8J67/5+YVCki0oxF9RZcd68GPgp/\nfmhmNwH9gixMRCRRRBW0AOH3ht0L3AOccPf8wKoSEUkg9QatmfUiFK73AueBnkC+u+8MujARkURR\n58UwM/sIeItQGH/N3UcB5QpZEZGrU99dBweBDKAL0Dm8zAOvSEQkwdQZtO4+m9CAMp8SusVrB9A+\nfCGsUZjZFDMrMrMSM5tXy3ozs38Pr19vZiMba98iIrFS71gH7n7C3V909zuBm4EfAv9qZnuudcdm\nlgw8TeiWsUHAveELbpGmErq7oR8wB/jlte5XRCTWohlUBgB3P+ju/9fdbwPGNsK+bwJK3H17eGSw\nV4GCS9oUAP/lIR8DmWaW1Qj7bhRz584lJSWFuXPnxny9tt209q1tN719NynuXu8HyAfeAD4D1l/8\nXOl7UWz368DzEfPfAp66pM0iYGzE/FJCdz3Utr05QCFQmJOT47GQnJzsgCcnJ8d8vbbdtPatbTe9\nfQcBKPQG5F00Z7SvAC8CXwNmRnyaFHd/zt3z3T2/c+fOV/5CI3jggQdITk7mgQceiPl6bbtp7Vvb\nbnr7bkosFNL1NDBb5e6N0VVw6XZvAR5z97vC848CuPtPIto8C/zB3X8dni8Cxrv7/vq2nZ+f74WF\nhY1dsohc58zsU2/Aw1pRDZNoZs8T+md75Hi0v7/anV1iDdAv/DrzvYSeOPvLS9osAB42s1cJjbVw\n4kohKyLS1EQTtPcDA4BUvvzOsGsKWnevMrOHgXeBZOAFd99kZg+G1z8DLAamASXA6XAtIiLNSjRB\nO9rd84LYubsvJhSmkcueiZh2oBlcUhQRqVs0F8M+rOX+VhERiVI0Z7Q3A2vDT4adBYzQyeawQCsT\nEUkQ0QTtlMCrEBFJYFcMWnffFYtCREQSVdSP4IqISMMoaEVEAnbFrgMzy+SL94MVu/uJYEsSEUks\ndQatmbUEngVmAzsI3W3Q08zeAB700IhbIiJyBfV1HfwDoafBerj7CHcfDuQQCuf/FYviREQSQX1B\n+1Xgb9y9/OKC8PR3gK8EXZiISKKoL2ir3f30pQvdvQK9O0xEJGr1XQxzM2tPqG/2UtW1LBMRkVrU\nF7TtCL2Ysbag1RmtiEiU6gxad+8VwzpERBJWnX20ZtbTzNpFzE8ws1+Y2X83sxaxKU9EpPmr72LY\n60A6gJkNB34D7AaGA/8RfGkiIomhvj7aNHffF57+JqE3IPzczJKAtcGXJiKSGOo7o428CDaR0DvD\ncHfdcSAichXqO6NdZmavA/uB9sAyADPLAvT4rYhIlOoL2u8DdwNZwFh3Px9e3pXQ47kiIhKF+oK2\nD7DH3V+9ZHk6obfSiohIFOrro/034GQty0+E14mISBTqC9ou7r7h0oXhZb0Cq0hEJMHUF7SZ9axL\na+xCREQSVX1BW2hmf3PpQjP7a0JjIIiISBSudNfBG2b2Db4I1nygBRqPVkQkavUNKnMQuNXMJgBD\nwovfcvdlMalMRCRBXPHljO6+HFgeg1pERBKSXjcuIhIwBa2ISMAUtCIiAVPQiogELC5Ba2YdzOx9\nM9sa/rN9He1eMLNDZrYx1jWKiDSWeJ3RzgOWuns/QuPczquj3UvAlFgVJSIShHgFbQHwcnj6ZWB2\nbY3cfSVwNFZFiYgEIV5B28Xd94enDwBd4lSHiEjgrvjAQkOZ2RJCg4Rf6kuDhru7m5k3wv7mAHMA\ncnJyrnVzIiKNJrCgdfc76lpnZgfNLMvd94dfjXOoEfb3HPAcQH5+/jUHt4hIY4lX18EC4L7w9H3A\n/DjVISISuHgF7RPAZDPbCtwRnsfMupnZ4ouNzOzXwEdAnpmVmtm341KtiMg1CKzroD7uXgZMqmX5\nPmBaxPy9saxLRCQIejJMRCRgCloRkYApaEVEAqagFREJmIJWRCRgCloRkYApaEVEAqagFREJmIJW\nRCRgCloRkYApaEVEAqagFREJmIJWRCRgCloRkYApaEVEAqagFREJmIJWRCRgCloRkYApaEVEAqag\nFREJmIJWRCRgCloRkYApaEVEAqagFREJmIJWRCRgCloRkYApaEVEAqagFREJmIJWRCRgCloRkYAp\naEVEAqagFREJmIJWRCRgcQlaM+tgZu+b2dbwn+1radPDzJab2WYz22Rm34tHrSIi1ypeZ7TzgKXu\n3g9YGp6/VBXwP919EHAzMNfMBsWwRhGRRhGvoC0AXg5PvwzMvrSBu+9398/C0+XAFqB7zCoUEWkk\n8QraLu6+Pzx9AOhSX2Mz6wWMAD6pp80cMys0s8LDhw83Vp0iItcsJagNm9kSoGstq/4hcsbd3cy8\nnu20AX4HfN/dT9bVzt2fA54DyM/Pr3N7IiKxFljQuvsdda0zs4NmluXu+80sCzhUR7tUQiH7irv/\nPqBSRUQ0F4J7AAAIUklEQVQCFa+ugwXAfeHp+4D5lzYwMwP+E9ji7k/GsDYRkUYVr6B9AphsZluB\nO8LzmFk3M1scbnMb8C1gopmtDX+mxadcEZGGC6zroD7uXgZMqmX5PmBaeHoVYDEuTUSk0enJMBGR\ngCloRUQCpqAVEQmYglZEJGAKWhGRgCloRUQCpqAVEQmYglZEJGAKWhGRgCloRUQCpqAVEQmYglZE\nJGAKWhGRgCloRUQCpqAVEQmYglZEJGAKWhGRgCloRUQCpqAVEQmYglZEJGAKWhGRgCloRUQCpqAV\nEQmYglZEJGAKWhGRgCloRUQCpqAVEQmYglZEJGAKWhGRgCloRUQCpqAVEQmYglZEJGAKWhGRgMUl\naM2sg5m9b2Zbw3+2r6VNKzNbbWbrzGyTmf1TPGoVEblW8TqjnQcsdfd+wNLw/KXOAhPd/UZgODDF\nzG6OYY0iIo0iXkFbALwcnn4ZmH1pAw+pCM+mhj8em/JERBpPvIK2i7vvD08fALrU1sjMks1sLXAI\neN/dP6lrg2Y2x8wKzazw8OHDjV+xiEgDpQS1YTNbAnStZdU/RM64u5tZrWeq7n4BGG5mmcAbZjbE\n3TfW0fY54DmA/Px8nfmKSJMRWNC6+x11rTOzg2aW5e77zSyL0Blrfds6bmbLgSlArUErItJUxavr\nYAFwX3j6PmD+pQ3MrHP4TBYzSwMmA5/HrEIRkUYSr6B9AphsZluBO8LzmFk3M1scbpMFLDez9cAa\nQn20i+JSrYjINQis66A+7l4GTKpl+T5gWnh6PTAixqWJiDQ6PRkmIhIwBa2ISMAUtCIiAVPQiogE\nTEErIhIwc0+8h6jMrBwoincdAekEHIl3EQHS8TVviX58ee6ecbVfisvtXTFQ5O758S4iCGZWmKjH\nBjq+5u56OL6GfE9dByIiAVPQiogELFGD9rl4FxCgRD420PE1dzq+WiTkxTARkaYkUc9oRUSaDAWt\niEjAmm3QmtkUMysysxIzu+zljhby7+H1681sZDzqbKgoju8b4ePaYGYfmtmN8aizoa50fBHtRptZ\nlZl9PZb1Xatojs/MxpvZ2vBbnlfEusaGiuK/zXZmtjDiDdb3x6POhjKzF8zskJnV+pKBBmWLuze7\nD5AMbAN6Ay2AdcCgS9pMA94GDLgZ+CTedTfy8d0KtA9PT02044totwxYDHw93nU38u8vE9gM5ITn\nb4h33Y14bD8Afhqe7gwcBVrEu/arOMbbgZHAxjrWX3W2NNcz2puAEnff7u7ngFcJvVk3UgHwXx7y\nMZAZfm1Oc3DF43P3D939WHj2YyA7xjVei2h+fwCPAL/jCq86aoKiOb6/BH7v7rsB3L25HGM0x+ZA\nhpkZ0IZQ0FbFtsyGc/eVhGquy1VnS3MN2u7Anoj50vCyq23TVF1t7d8m9Ddsc3HF4zOz7sBXgF/G\nsK7GEs3vrz/Q3sz+YGafmtlfxay6axPNsT0FDAT2ARuA77l7dWzKi4mrzpZEfQT3umFmEwgF7dh4\n19LI/g34e3evDp0YJZwUYBShN42kAR+Z2cfuXhzfshrFXcBaYCLQB3jfzD5w95PxLSt+mmvQ7gV6\nRMxnh5ddbZumKqrazWwY8Dww1UOvB2ouojm+fODVcMh2AqaZWZW7vxmbEq9JNMdXCpS5+ynglJmt\nBG4EmnrQRnNs9wNPeKhDs8TMdgADgNWxKTFwV58t8e54bmBndQqwHcjliw75wZe0mc6XO6xXx7vu\nRj6+HKAEuDXe9QZxfJe0f4nmdTEsmt/fQGBpuG1rYCMwJN61N9Kx/RJ4LDzdJRxCneJd+1UeZy/q\nvhh21dnSLM9o3b3KzB4G3iV0FfQFd99kZg+G1z9D6Er1NEJhdJrQ37LNQpTH90OgI/Af4bO+Km8m\noyZFeXzNVjTH5+5bzOwdYD1QDTzv7rXeTtSURPm7+2fgJTPbQCiM/t7dm83QiWb2a2A80MnMSoEf\nAanQ8GzRI7giIgFrrncdiIg0GwpaEZGAKWhFRAKmoBURCZiCVkQkYApaaRLM7EJ4JKuNZvYbM2vd\ngG08b2aDwtM/uGTdh41Vq8jV0u1d0iSYWYW7twlPvwJ86u5PNsb2ROJNZ7TSFH0A9AUws/8RPsvd\naGbfDy9LN7O3wuOdbjSzu8PL/2Bm+Wb2BJAWPkN+JbyuIvynmdm/hL+3IeK748Pf/62ZfW5mr1gt\ngyyE2/yrmRWa2ZbweLm/N7OtZvZ4uE2v8DZeMrPi8LbuMLM/htvdFIsfojQdzfLJMElcZpZCaHzd\nd8xsFKGnbsYQesLok/AA2b2Bfe4+PfyddpHbcPd5Zvawuw+vZRdfBYYTGlegE7AmPM4AwAhgMKFR\np/4I3AasqmUb59w938y+B8wnNDjMUWCbmf1ruE1f4M+B/wasITQs4lhgFqHxWmdf1Q9GmjWd0UpT\nkWZma4FCYDfwn4SC6Q13P+XuFcDvgXGEht6bbGY/NbNx7n7iKvYzFvi1u19w94PACmB0eN1qdy/1\n0JB+awk9716bBeE/NwCb3H2/u58lNAbAxcFGdrj7hvC2NgFLPdRPt6Ge7UqC0hmtNBWVl56B1jU8\norsXh18fMg143MyWuvuPG6GGsxHTF6j7/4+L7aov+U51xHcuXX62ljZyndAZrTRlHwCzzay1maUT\nGgj8AzPrBpx29/8H/Auh145c6ryZpdaxzbvNLNnMOhN6bUmiDN8nTZT+ZpUmy90/M7OX+CIIn3f3\nP5nZXcC/mFk1cB54qJavPwesN7PP3P0bEcvfAG4hNLyfA3/n7gfMbEBgByLXPd3eJSISMHUdiIgE\nTEErIhIwBa2ISMAUtCIiAVPQiogETEErIhIwBa2ISMD+P/EhsDr+Z5qQAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - " #Lets add some electrodes which span the CSD space \n", - "num_ele, ele_pos = utils.generate_electrodes(dim=config.dim)\n", - "plots.show_csd(csd_at, true_csd, show_ele=ele_pos)\n", - "print('Shape of the ele_pos array: ', ele_pos.shape)\n", - "print('Number of electrodes: ',ele_pos.shape[0])" + "# Now lets place some electrodes over this brain slice\n", + "ele_x, ele_y = np.mgrid[0.1: 0.9: 10j,\n", + " 0.1: 0.9: 10j]\n", + "ele_pos = np.vstack((ele_x.flatten(), ele_y.flatten())).T" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# Lets emulate the case when some of the electrodes are broken / used for stimulation\n", - "#ele_seed = np.random.RandomState(13)\n", - "#ele_fail = ele_seed.choice(num_ele, 3, replace=False)\n", - "#ele_pos_new = np.delete(ele_pos, ele_fail, axis=0)\n", - "#plots.show_csd(csd_at, true_csd, show_ele=ele_pos)\n", - "#print('Shape of the ele_pos array: ', ele_pos.shape)\n", - "#print('Number of electrodes: ',ele_pos.shape[0])" + "from scipy.integrate import simps\n", + "from scipy.interpolate import griddata\n", + "\n", + "def integrate_2d(csd_at, true_csd, ele_pos, h, csd_lims):\n", + " csd_x, csd_y = csd_at\n", + " xlin = csd_lims[0] \n", + " ylin = csd_lims[1] \n", + " Ny = ylin.shape[0] \n", + " m = np.sqrt((ele_pos[0] - csd_x)**2 + (ele_pos[1] - csd_y)**2) # construct 2-D integrand \n", + " m[m < 0.0000001] = 0.0000001\n", + " y = np.arcsinh(2 * h / m) * true_csd\n", + " integral_1D = np.zeros(Ny) \n", + " for i in range(Ny): \n", + " integral_1D[i] = simps(y[:, i], ylin)\n", + " integral = simps(integral_1D, xlin)\n", + " return integral\n", + "\n", + "def grid(x, y, z): \n", + " x = x.flatten() \n", + " y = y.flatten() \n", + " z = z.flatten() \n", + " xi, yi = np.mgrid[min(x):max(x):np.complex(0, 100), \n", + " min(y):max(y):np.complex(0, 100)] \n", + " zi = griddata((x, y), z, (xi, yi), method='linear') \n", + " return xi, yi, zi" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Lets compute the potentials generated at these electrode positions\n", + "pots = np.zeros(ele_pos.shape[0])\n", + "xlin = csd_at[0, :, 0]\n", + "ylin = csd_at[1, 0, :]\n", + "h = 50. # distance between the electrode plane and the CSD plane\n", + "sigma = 0.3 # S/m\n", + "for ii in range(ele_pos.shape[0]): \n", + " pots[ii] = integrate_2d(csd_at, true_csd, \n", + " [ele_pos[ii][0], ele_pos[ii][1]], h, \n", + " [xlin, ylin])\n", + "pots /= 2 * np.pi * sigma\n", + "pot_X, pot_Y, pot_Z = grid(ele_pos[:, 0], ele_pos[:, 1], pots)" ] }, { @@ -153,9 +155,19 @@ "outputs": [ { "data": { - "image/png": "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\n", "text/plain": [ - "" + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -163,27 +175,60 @@ } ], "source": [ - "# Lets compute the potential recorded by these electrodes due to the CSD\n", - "h = 10.\n", - "sigma = 1.\n", - "pots = utils.calculate_potential(csd_at, true_csd, ele_pos, h, sigma)\n", - "plots.show_pot(ele_pos, pots)" + "# The potentials for this configuration is now ploted in the same plane\n", + "fig = plt.figure(figsize=(7,7))\n", + "ax = plt.subplot(111)\n", + "ax.set_aspect('equal')\n", + "v_max = np.max(np.abs(pots))\n", + "levels_pot = np.linspace(-1 * v_max, v_max, 16)\n", + "im = ax.contourf(pot_X, pot_Y, pot_Z, levels=levels_pot, cmap=cm.PRGn) \n", + "ax.scatter(ele_pos[:, 0], ele_pos[:, 1], 10, c='k')\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.set_xlabel('X [mm]')\n", + "ax.set_ylabel('Y [mm]')\n", + "ax.set_title('Interpolated potentials')\n", + "ticks = np.linspace(-1 * v_max, v_max, 7, endpoint=True) \n", + "plt.colorbar(im, orientation='horizontal', format='%.2f', ticks=ticks)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, + "outputs": [], + "source": [ + "# Lets compute the KCSD using the method\n", + "from kcsd import KCSD2D\n", + "\n", + "pots = pots.reshape((len(ele_pos), 1)) # Time points\n", + "k = KCSD2D(ele_pos, pots, h=h, sigma=sigma, \n", + " xmin=0.0, xmax=1.0,\n", + " ymin=0.0, ymax=1.0,\n", + " n_src_init=1000, src_type='gauss') # rest of the parameters are set at default\n", + "est_csd = k.values('CSD')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "16f57b9bd61c4ff39da9e85a58da8fb5", - "version_major": 2, - "version_minor": 0 - }, "text/plain": [ - "A Jupyter Widget" + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAa0AAAGGCAYAAADIPd7CAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X34bGVd7/H3h715kEBAIZMNO/gBpqSh9gM9RmkPJqBF\ndmmhpldUEhVqmQnlSS2zS7MHj4F6iDgIeuBkEqEXoFYqFqJ7k8AGDNr8QNiI8iQqKBu3fM8fa/1g\nmD0Pa82sp3vN53Vdc+09M2vWutc9s+7P3Pe6Z/0UEZiZmaVgh7YLYGZmVpRDy8zMkuHQMjOzZDi0\nzMwsGQ4tMzNLhkPLzMyS4dCyxkj6cUnXt12OUSQ9T9KWtstRlqT1ku6TtGbCMiHp4CbLZVYXh5ZN\nJelmSd/JG8fV26kFXveoxjIiPhsRP1RTGc+S9Gd1rDtfvyS9VtI1ku6XtEXShyU9LX9+P0kfkXSX\npG/ky/1q/twBeV2s1t3XJH1M0vPnLVdE3BIRu0XE9/JtfVrSb8y73iIkvVXSBwss93JJG/N9v13S\nxZKOlHRc/tnS0PJrJd0h6UX1ld5S5dCyon4ubxxXbye1XaCG/S/gdcBrgccBTwIuAF6YP38OcCvw\ng8DjgVcCXxtax54RsRtwGPBJ4J9Wg62vJL0eeDfw58ATgPXAacDPk9XfnsBzh152FBDAJc2V1JIR\nEb75NvEG3Az8zJjnDgY+A3wDuAv4f/njl5I1PPcD9wG/DDwP2DK03j8Ars6X+3uyhu1i4FvAvwB7\nDSz/YeCr+bYuBX44f/wE4LvAg/m2Ppo/vi/wEeBO4CbgtQPregxwFvB14Lq8HFvG7OMhwPeAIybU\n0X3A08c8d0BeF2uHHn8DWbDtMOI1fwL8bf7/HfP6eddA2R8gC8+H1w28PS/nA3l5Ts2XD+BE4L+B\ne8lCQ/lzOwD/E/gycAdwNrBH/tyj3q/BzwJZsDyY1/t9wFUj9mGP/LmXTqi304Ezhx77B+Bv2v7c\n+9bNW+sF8K37NyaH1rnAm/LGbxfgyIHnAjh44P6o0Lo8D6p1eaP5n8Az8nX9G/CWgeV/Ddgd2Jns\n2/uVA8+dBfzZwP0dgCuANwM7AUvACvCC/Pl3AJ/NG/79gWsmhNaJwJen1NG/AP8BHAesH3puXGgt\n5Y8/ZcT6fgrYlP//OcCNwOcHnrtq1LqBTwO/MbSuAD5G1qtZTxbiRw3U6ea8LLsB5wPnjHq/hj8L\nwFuBD06ok6OAbcP7PbTMjwHfBB6T398D+A5jvgD45puHB62oCyTdO3B7df74d8mGxPaNiAci4t9L\nrvdvI+JrEXEbWYh8PiK+GBEPAP9EFmAARMSZEfGtiNhK1mAeJmmPMes9HNgnIv40Ih6MiBXg78hC\nBeCXgLdHxD0RcSvwngllfDxw+5T9eGle/j8GbpJ0paTDp7zmK/m/jxvx3OeAQyQ9HvgJsl7oOkm7\nkQ2nfWbKuoe9IyLujYhbgE8BT88ffwXw1xGxEhH3AX8IHCdpbcn1j/J44K6I2DZugYj4D7Le5ovz\nh34JuCEirqxg+9ZDDi0r6hciYs+B29/lj78REPAFSddK+rWS6x087/OdEfd3A5C0RtI7JN0o6Ztk\n3/gB9h6z3h8E9h0MWuCPyHp1kA0d3jqw/JcnlPFu4ImTdiIivh4Rp0TED+fbuJIs6DXhZevyf+8Z\nsb7vABvJAuonyELqMrKeySyh9dWB/3+bvF7J6mFw379MNtT4BOZ3N7B3gQA8G3hV/v9X5vfNRnJo\n2Vwi4qsR8eqI2Bf4TeC9NU2vfjlwLNn5lD3IhsUgC0zIhsAG3QrcNBS0u0fEMfnzt5MNC65aP2Hb\n/wrsJ2m5SEEj4i7gL8kCYVQvatWLyYZEx/0M4DNkQ4HPADbk918AHEF2Tm/k5ouUccBXyAJ+1Xqy\nIb2vkZ1H23X1iXxa/T4ltvU5YCvwC1OWOwf4aUn/A3g28KFCJbeF5NCyuUh6qaT98rtfJ2vIHsrv\nf43sXEkVdidrAO8ma0j/fOj54W19AfiWpJMlPSbvqT11YMjuH4A/lLRXXv7XjNtwRPw38F7g3Pz3\nXDtJ2iWfsn0KgKR35utfK2l34LeAzRFx9/D6JD1B0knAW4A/jIiHhpfJfYasB3JdRDxIfr6KLIzv\nHPOasnV+LvB7kg7Mhx7/nGwyzTbgBmAXSS+UtCPZhI2dh7Z1gKSR7UhEfIPsnOJpkn5B0q6SdpR0\ntKS/GFjuZuDf87J8MiK+Omp9ZuDQsuI+OvQ7rX/KHz8c+Lyk+4ALgdfl548gO+/0gXx47pfm3P7Z\nZENXt5HN9rt86Pm/Bw7Nt3VBZL9behHZuZubyGY2nkHWS4Nsdt6X8+c+QfZtf5LXAqeSzby7l2xi\nxIuBj+bP70p2Du5esgkfP0g2rXvQvZLuBzYBx5DNqjtzwjYvI5spuNqruo5sZuC4XhZkU/NfIunr\nkiadp1t1Jtm+X0pWFw+QB3geOr9NVm+3kfW8Bn+A/eH837sl/eeolUfEXwGvJwu8O8l6wCeRTXcf\n9AGyOvPQoE20Ou3VzMys89zTMjOzZCxcaEk6M79EzDVjnpek90jaLOlqSc9suoxmZjbawoUW2Y9Q\nj5rw/NFkV0A4hOxKC+9roExmZlbAwoVWRFzKiN/FDDgWODsylwN7Spr4Gx0zM2vGwoVWAet49I9O\nt/DIj0DNzKxFVVyqZWFJOoFsCJFdd/2+H11aevLI5XbeeeTDk23dOt/zZZcbZ1rhRz0/5jXzFqXo\n5kduqOhjVRdmXP3VWEczfd76oI4PGMxdocPFuuaaK+6KiH1GL23TOLS2dxuPvlLCfvlj24mI08mu\nUs3TnrYcF1ywceQKD1oq+bOClZXmliliacJvVcc9N+LxG1cmXdFoNiPrdni/R9VD0bpZWZm8/8NG\nLVv0Maqpo9Kftz6o6rM+TpnPwJDh9/TggzXpkmE2hUNrexcCJ0k6D3gW8I2ImHax1GZNO0CrPoAn\nNdxlG/UCmxpU4apnL0QnCtWgwf3t+75achYutCSdS/YnF/ZW9ufV30L294qIiPcDF5FdrWAz2YVF\nj2+npGM0HViD6625Aav7y/LUDZXpfcHo+mignmozrkea6v50QB2jC4tu4UIrIl425fkAfqeh4mxv\nnpa7sVa/OaXbzCJDg0VeV/Q1RQqXesOfevmtVzx7MCVth1Lb26/CPOe35tlG1zVc5htX9PDNrAyH\nVl+U6VFMus2ynRQb6VXzln3W16dWZxWWdzio5g6uJupyhm04kOvh0OqSSQfGrM8NLtPkjMOSGtls\nnef72tp2FRosmxtym5dDK3V1NJjTAi6VRrqKSStFw36WdZtZaQ6tPpu1wR18fR3Ldt2o4dIqgjx1\nNe6je2BWlEOrK2ZpEJtoRDvcGG/3I9oy9THrtPd5vwg0oFQAdHxfzIY5tPqooyemO2/enuWs0+0X\nxLQwdW/LinBo1WzuS+rM+0PYKqTY+JbthTrorUIO4Po4tPrGDeP26rqKyLzh5/fKrDSHVhfMMruv\nqvXUecWIIZ24kKt/SDyfRdtf6xyHVpfV0UDMMjNu0rom3W9SV3/k2+VGvstlMxvDoZWaOme9VT2t\nuw+NYtF6s4l8jseq4tBaBD0Mm4lDjcO9yCLLDT8+T290jvrrxBCqWYc5tGpUqAGq4vzUov/otagq\nruTh+qyVe2Q2jUMrJU32mBqcoLFQXF9mc3Fopa7pRrDh7dX2Z5zmma5e9rUOKrPKOLT6qoqGcpEa\n2x7tq8+LWZ85tNrUhatddMRcPapxEy+KTsiYd5uzPG9mM3Fo1aTyb7tlhqRS/L3UCI0ODbalS2Ux\nS4BDy5Lj4S+zxeXQssla6gnU1ssaZQH+jItZXzi0+qbjDeekXlKjQWVmSXJo1aCxHxX30NKSw8vD\nn2bjObRS0Nbff7LJ/B6YNc6hZfVa5Kuom1nlHFoV89BOvTpVv4s+jmnWAoeW9UedPyY2s05waFn/\nOcDMesOhVaHCQ1cpNaJ9GAJrah/6UFc1KXpsdGr41zrJoWXWI270re8cWta4WRvW2hrkDvaQHD5m\nozm0KrLzzg1vcFxDW2UD3MHGvDMWtW66uN9NlKmL+72gHFpWjg/eYnXgelpo7inXx6HVR1U0mKk3\nupPKP+q5efc39fpqgBtyq4JDy+Yz3Fg32XhXPQtz0XpQHdsXh5oV4dBKwSyNyzwNUscaM2iwQZt0\nrnDWemmoPt3o2yJwaKVsWmNYddh1MMxmNm0/h29l1lVRPXUuhCrYr3H7NPe+dvCz2bn3ryccWn1X\ntIfQ8N8EafyArmvfOthYmvXZ2rYLYHNaWip2bqeOiQapD3sVrbs+a+rzM+CgpeDGFT3qvllR7mml\nos1hu1TOj80yXFr1vlU8VNjXyx8dtBQP3zpvjvcwif1LjEPLZtNiz6uwouVpcqJL1+oI6jk32oZU\nymlzcWh1zaw9qgTP2RT5Ftr6rMFRyzVxNZISKqmjju1Tn7i3VS2f0+qT1QamivM0fZ1FOOkcTt1D\nhTMaPgdUm+HPT8rvs/WWe1qpaeIHsB1prGrrQXRk/6pQy7f4hmeSVqqj5XZvqzoLGVqSjpJ0vaTN\nkk4Z8fwekj4q6SpJ10o6vtECVnGOoehvjEa9ZpZtz9hYtHYwV9W4jauzisNyVD25IWxAxbMmbX4L\nNzwoaQ1wGvB8YAuwQdKFEXHdwGK/A1wXET8naR/gekkfiogHWyjyaGWma1fZQNdg1PDXzAf4qHoZ\nV1fzTnlv+Fv9YD25AZygwz9l8Ps2v0XsaR0BbI6IlTyEzgOOHVomgN0lCdgNuAfY1mgpuzbMUfM5\nrsGDudEDe9ahsKrqo+S2k5kmblaThetpAeuAWwfubwGeNbTMqcCFwFeA3YFfjoiHmileCVVOvCiy\nnZpfV7oxLtvbnLRskbqc53xi176EmCVqEXtaRbwAuBLYF3g6cKqkxw4vJOkESRslbbzzzjurL0Wd\nvzOqqgxdbIznCY5R1x0scyks64Yq3gu/n520iKF1G7D/wP398scGHQ+cH5nNwE3Ak4dXFBGnR8Ry\nRCzvs88+9ZS2it8PzbrdFANrmjZ+z5ZiPfWB672XFjG0NgCHSDpQ0k7AcWRDgYNuAX4aQNITgB8C\nqhuDK3swzTIDcNbzNH3pVUwLkbpnDxYth9WrT1cuMWABz2lFxDZJJwEfB9YAZ0bEtZJOzJ9/P/A2\n4CxJmwABJ0fEXa0VGmabEdXmVTK6cNAXOY9V5+zBLtSBlX+f/b512sKFFkBEXARcNPTY+wf+/xXg\nZ5su11RdmMrbtwN6eH/mnYhh3dSFY8cqsZCh1QmzHkRtHnxdmBgyaltV9qaaOoHvAGzetBmifk+S\n4NBKUVNT3Ye3l6om6yv1uloEfo+StogTMbqjimsE1nmduFnW3UaD0IUeYJm6cqNpNjP3tPqizLmZ\nouvoo6p7XYtQZ2Yd4tBqW13nqLrc46lr27Oeu2pyVqZDzmwuDq0u6MPMppQb46bKnnIdmXWEz2l1\nRaoNWp3n1MrqSjlG6XLZzBLi0OqSLgVAEV0sa9fKlNp7atZxHh7soqantJfV9Ua4K/XX9XoyS5BD\nq8vmmSxQVzlS0kZ4pVpXZolwaKViVGNYV2Pct4a37vDvW32ZdZhDK2VuLMubVmejQs31bNYZDi2z\nQQ4os07z7EEzM0uGQ8vMzJLh0DIzs2Q4tMzMLBkOLTMzS4ZDy8zMkuHQMjOzZDi0zMwsGQ4tMzNL\nhkPLzMyS4dAyM7NkOLTMzCwZDi0zM0uGQ8vMzJLh0DIzs2Q4tMzMLBkOLTMzS4ZDy8zMkuHQMjOz\nZDi0zMwsGQ4tMzNLhkPLzMyS4dAyM7NkOLTMzCwZDi0zM0uGQ8vMzJLh0DIzs2Q4tMzMLBkOLTMz\nS4ZDy8zMkuHQMjOzZDi0zMwsGQsZWpKOknS9pM2SThmzzPMkXSnpWkmfabqMZma2vbVtF6BpktYA\npwHPB7YAGyRdGBHXDSyzJ/Be4KiIuEXS97dTWjMzG7SIPa0jgM0RsRIRDwLnAccOLfNy4PyIuAUg\nIu5ouIxmZjbCIobWOuDWgftb8scGPQnYS9KnJV0h6VWjViTpBEkbJW288847ayqumZmtWsTQKmIt\n8KPAC4EXAH8s6UnDC0XE6RGxHBHL++yzT9NlNDNbOAt3Tgu4Ddh/4P5++WODtgB3R8T9wP2SLgUO\nA25opohmZjbKIva0NgCHSDpQ0k7AccCFQ8v8M3CkpLWSdgWeBXyp4XKamdmQhetpRcQ2SScBHwfW\nAGdGxLWSTsyff39EfEnSJcDVwEPAGRFxTXulNjMzAEVE22XoheXl5di4YUPbxTCzjtMOO1wREctt\nlyNVizg8aGZmiXJomZlZMhxaZmaWDIeWmZklw6FlZmbJSHLKu6TXF1js/oj437UXxszMGpNqT+sP\ngN2A3Sfcfr+10pmZWS2S7GkB50TEn05aQNL3NVUYMzNrRpI9rYh4YxXLmJlZWlLtaQEP/7HGVwEH\nMLAvEfHatspkZmb1STq0gIuAy4FNZNcINDOzHks9tHaJiCIzCc3MrAeSPKc14BxJr5b0REmPW721\nXSgzM6tH6j2tB4F3AW8CVi9XH8BSayUyM7PapB5avw8cHBF3tV0QMzOrX+rDg5uBb7ddCDMza0bq\nPa37gSslfQrYuvqgp7ybmfVT6qF1QX4zM7MFkHRoRcQH2i6DmZk1J+lzWpJeJOmLku6R9E1J35L0\nzbbLZWZm9Ui6pwW8G/hFYFNExLSFzcwsbUn3tIBbgWscWGZmiyH1ntYbgYskfYZHzx786/aKZGZm\ndUk9tN4O3AfsAuzUclnMzKxmqYfWvhHx1LYLYWZmzUj9nNZFkn627UKYmVkzUg+t3wIukfQdT3k3\nM+u/pIcHI2L3tstgZmbNSbKnJekHqljGzMzSkmRoARdVtIyZmSUk1eHBw6acuxLgc1tmZj2TZGhF\nxJq2y2BmZs1LdXjQzMwWkEPLzMySkWRoSbpI0gFtl8PMzJqVZGgB/wf4hKQ3Sdqx7cKYmVkzUp2I\n8WFJFwN/DGyUdA7w0MDzvsq7mVkPJRlauQeB+4Gdgd0ZCC0zM+unJENL0lHAXwMXAs+MiG+3XCQz\nM2tAkqEFvAl4aURc23ZBzMysOUmGVkT8eNtlMDOz5qU6e9DMzBaQQ8vMzJLh0DIzs2QsZGhJOkrS\n9ZI2SzplwnKHS9om6SVNls/MzEZbuNCStAY4DTgaOBR4maRDxyz3TuATzZbQzMzGWbjQAo4ANkfE\nSkQ8CJwHHDtiudcAHwHuaLJwZmY23iKG1jrg1oH7W/LHHiZpHfBi4H0NlsvMzKZI8ndaDXg3cHJE\nPCRp7EKSTgBOAFi/fn1DRbO63Lgy/r0edtBS1FgSMxtnEUPrNmD/gfv75Y8NWgbOywNrb+AYSdsi\n4oLBhSLidOB0gOXl5c60YmUa36L62EjPU0/Dr+1j/Zh10SKG1gbgEEkHkoXVccDLBxeIiANX/y/p\nLOBjw4HVBXWEU9FtpdpI11Vng+tNtW7MUrBwoRUR2ySdBHwcWAOcGRHXSjoxf/79rRZwiiaDapLV\ncqTSQLcR8KnUjVlKFOEDqwrLy8uxccOG2tbflbAap8sNdNt11+W6seZphx2uiIjltsuRqkWcPZiU\nG1fUeqNbRFfL2IVydaEMZn2xcMODKUmtsbtxRZ3qVcxSfysr05dZWpqtLF2qm0Xn9yNdDq2Oqjqw\nijTGq2ZplLumaP2VqZdxrylaX24o2zf4ufDkmTQ5tDpo3sCapSGe9PoyITZ3wzy48RnTs0j9zVtH\no9bVh7Dvq2mfCX+hSIfPaXXMrIG1svLIrWp1rXfqRmracF37UmS9qQ359kHROm/kvan9QOo/97QS\n1+QxULRHUfpb67SdWFkp3I2Z1PCUqatRyxYpQpE68rf65nTmS4LDqjIOrQ4pc4C1eQyUyJBiK2tg\no0Vysew6JhWn0jqymcwSWLV8oXBgVcqhlaCyx8Asx8y0BreSRrnig3lcIzVpM/MUYVqvqvZwdyp2\nnwOrcj6n1RFVz3ab9xxXkddOer6WYZkKG4AqT5dNWte4x0vVz6SVu1EcqRPDgn5vauGeVlW2bq19\nE1UMcc26zcp7Ew0d0KM2M089Nj4kWHTc0r0uWxDuaVWpxoa4jcBqcv3zGvXNukxgFe2ZTltulpC0\nbqmkl+Y3vTbuaVVthh/tTDtIqjgnU3S5WXoSqXzRrzpQxr3VRetj6kn/stMdK3gT+vCD29aHBh1Y\ntXJPq+PmCaxZzmvN0pMorYGDetRPvmYpxqzLFNl+5ebcyHBjX2vj7/NxNiOHVl1qPiCnhVkVm593\nCKzLkzGKDBOuLjPqsZqK1Tm1v4cOLyvJodVhZRvIOo7/cetMqZ0p2usqOzOz7Ha63NtqbEit5tT3\n0GD/+ZxWnWo42TPrMV/kWJp3Zlxb57aGG6qyQ6rz/Cxg1vNZKfEVPKxL3NNq2Sw/iC2zbBU9iFm2\n2xWzhvnwkGBdXxbG9gwarNzWe1lFn29Q6z02G8uhlZBZpnDPup3UhwRHmXeYcNZhwaLPdZkb8QJS\nfXMT49DqoaqOnc7Miith1p8AlO2Rltlu43XUtTeljJTLbo1waNVthoOwaKM4zzTuotPhK29DGmyU\nhiepFVlulnVXtU6bj3uDi8GhlahZvu1PGt6q8hxa19W1rynse2tcOVYRh1YC5j3eq57K3SeTQnz4\nd1pFXz/LNlPgnox1gUMrQWUnZNS5/lm30aRxw4Sz9lar2paZlefQ6oGaf6/Z+LqrUGcPyMOCth1/\nCBrj0GpR0SuTz6KpIUXrKL+B1lMOrY5z2zPZYPDPOnRX5LWT1mVmzXFoJaboD2Sb2pZlfP7KrBm+\n9uACGmxU+3advGFFf7dmZmlwT2vBuPfUrCL166nkZsU5tBbMcM+q7z0tM+sXh1bdFjwVKu9FLHh9\nmi06h9YCWlp65DZtuUVQ534uSh0uPL/RjXFoWWGVHJc9ObgnDbP2ZBfNOsmhlbhRDaQbzUcsbF0s\n7I5b3zm06lRDw9FUW1TV0GGX/kz7pN5QmXp1HszAlWYVcWj11DxtRNneW1/aoyL7UUfPdmSwd7BS\nu/QFxBaXQ6slRWfVzdqQFn1tFa9JVR3hPK43t0j1Opc5Ksqhuhh8RYy61NhKLS1t/6PVUY8NFmPa\nj1zLNNYpN8Dj6ml4mTLrM7PmuKfVI9OCZ9JtlnVWsXxdKy/ay6lyGLXoumoPupIbKNJDqaQX0/ff\nWKRe/kQ4tOpQ8Ye3zDBWlZsust0uHaezhkYVw6hdrhezPnFodUwVQ1NVNJi1TqVvoUUv8iW/6Dmr\nTvU+G1DpuaImvm1VwOfHusvntKpW08FX5FzMqGKUvSDuopzPmXYOsOy65l3H2BXX+QYOOGgpmrtw\n7/B+pfxBGjbLe2alOLSq1GIPYtxxMlykURM4im6jquVmMsPKR7WNo9rKWduYWYZPU2ufa+tx1FQR\njYavtcLDg1XZeefKVjXLCEqZYCkyAWOesnRZVcOeVZ3va2ToraDhsniIbEapHhyJWMjQknSUpOsl\nbZZ0yojnXyHpakmbJF0m6bA2yjlKkRmCVW2nTGCV3m6Nw6jTNjPusSIzKcctU2WPtU0HLcXDN7Mu\nWrjQkrQGOA04GjgUeJmkQ4cWuwl4bkQ8DXgbcHqzpZyvV1WmJzXutbNue1BlDd+crX3ZkKniZwGN\nT1pJIREb0onA9ftRm0U8p3UEsDkiVgAknQccC1y3ukBEXDaw/OXAfo2WsICi52PqngI/1zaKnLSu\n4FzWpMeg2nNa4x6f632YVk9uIG2BLFxPC1gH3Dpwf0v+2Di/Dlxca4nG6MqQU9mhwtIrn+W5XJlv\n1ZP2oeyU9yoCq1SPoG8nF2s2T2+rKyMENtoi9rQKk/STZKF15JjnTwBOAFi/fn0tZSjbGalqtu28\ngVm6QZ5lWmPJVU56fN7NNpIpbgTT4ynwlVvE0LoN2H/g/n75Y48i6UeAM4CjI+LuUSuKiNPJz3ct\nLy/XNpBe5nM/bYp70ddVvXzzK5wcXFBNWzJrR7ET5116rjPT3x1clVrE0NoAHCLpQLKwOg54+eAC\nktYD5wOvjIgbmi/i9mZtaKvOgsancc9pUnsxaw+10V6ozaVscNX+uzSH19wWLrQiYpukk4CPA2uA\nMyPiWkkn5s+/H3gz8HjgvZIAtkXEcltlHtTWZ7/LI1PTGqaa5nvUuh7rKX9A5qYIf+urwvLycmzc\nsKHw8lUPW1QdYrMeW231IorWZ11hX7S+3MtqR5HPR1PvjXbY4YqufAlO0cL1tLqi6vH2aY1mxfMc\nttN2Y1y0PquctNLKb9ZsJqv1P+4z4vcnHQ6tBVHnqERXDviyXwQm1cnKSnV11pX6Mb8XfeDQalFn\nZjfNoKsH/7Rv1EVVEVhdrSOzlDm0WlZVI1u31Brgtuo1tXoyS41DqyOGG7umGtu+N7KD+1d1nfa9\n7sy6yKHVUW4Qq+c6NUvfIl570MzMEuXQMjOzZDi0zMwsGQ4tMzNLhidiLKJZLgWxyNdMa/LSGWY2\nkUOrz6q80N6kv/GRsiauPFz3NbTMFohDq2+avPz74LZSaIi78mchVsuRQp2ZdYxDqy/abpC72hC3\nXS+TVHmBQ7MF4YkYqVtZ6VbD7LKYWY0cWinraqPcdrm6FuSTpFJOs45waKWq641dW+Xrer2Y2Vwc\nWtYfDiyz3nNopSiVxrmtmYypSbnsZg1zaJmZWTIcWlavNn68mxpPezcrzKFlaUs9sMysFIdWilL7\nZu5gMbOKOLRSlVpw1aEPYej30awUh1bKUmrwqg6YPgSWmZXm0Erd0lI64VVV0PQhsFJ638w6xBfM\n7YvhBrCrDfs8V4bv6j6V4aAym4tDq6/GNY5davi7VJa6OKTMKuXQWjTzNKKLEDKjOHjMOsOhZcUV\nbbzbDjeHjFlvObSsequh0WR4OajMFoJnD1p9mgoSB5bZwnBoWb3qDhQHltlCcWiZmVkyHFpWv7p6\nQ+5lmS0ch5aZmSXDswcXxI0retT9g5aipZKYmc3OoVWVrVsfmeLd4rDVcDiVXS6ZMKuxjovW4apk\n6sysBxw8+bgAAAAM5ElEQVRadVhZaTS4yjayRddVaWO8tNT+j44nmKcOa6szM9uOQ6suDfW6qgys\ncevuc0Ncdf0tQp2Ztcmhlag6w2rUtjrVCFfwRaDu+nN4mdXDswfrVsOQWJOBVek2OzJFvenAN7Pq\nOLQS02Yj2IcGONnANzPAoWUlpdwAO/DN0ufQakJFQ4RdafhaLceMQ4xdqbtadXh2pllVFjK0JB0l\n6XpJmyWdMuJ5SXpP/vzVkp7ZRjm7bOYQ6Mh5rTbUGpyrgeXgsp5buNCStAY4DTgaOBR4maRDhxY7\nGjgkv50AvK/RQo6wED2FmrjuzPpj4UILOALYHBErEfEgcB5w7NAyxwJnR+ZyYE9JT2y6oF3XeBj0\noJdWW52t1k0P6shskkX8ndY64NaB+1uAZxVYZh1w++BCkk4g64kBbNXBB19TbVE7YW/grrYLUTHv\nUxr6uE8AP9R2AVK2iKFVmYg4HTgdQNLGiFhuuUiV6+N+eZ/S0Md9gmy/2i5DyhZxePA2YP+B+/vl\nj5VdxszMGraIobUBOETSgZJ2Ao4DLhxa5kLgVfkswmcD34iI24dXZGZmzVq44cGI2CbpJODjwBrg\nzIi4VtKJ+fPvBy4CjgE2A98Gji+w6tNrKnLb+rhf3qc09HGfoL/71QhF+IKeZmaWhkUcHjQzs0Q5\ntMzMLBkOrZL6eAmoAvv0inxfNkm6TNJhbZSzjGn7NLDc4ZK2SXpJk+WbVZH9kvQ8SVdKulbSZ5ou\nY1kFPn97SPqopKvyfSpyjrlVks6UdIekkb/dTLGd6IyI8K3gjWzixo3AErATcBVw6NAyxwAXAwKe\nDXy+7XJXsE/PAfbK/390H/ZpYLl/I5t485K2y13Re7UncB2wPr///W2Xu4J9+iPgnfn/9wHuAXZq\nu+xT9usngGcC14x5Pql2oks397TK6eMloKbuU0RcFhFfz+9eTva7tS4r8j4BvAb4CHBHk4WbQ5H9\nejlwfkTcAhARXd+3IvsUwO6SBOxGFlrbmi1mORFxKVk5x0mtnegMh1Y54y7vVHaZLilb3l8n+4bY\nZVP3SdI64MV04GLIJRR5r54E7CXp05KukPSqxko3myL7dCrwFOArwCbgdRHxUDPFq01q7URnLNzv\ntGx2kn6SLLSObLssFXg3cHJEPJR9ge+NtcCPAj8NPAb4nKTLI+KGdos1lxcAVwI/BRwEfFLSZyPi\nm+0Wy9rg0Cqnj5eAKlReST8CnAEcHRF3N1S2WRXZp2XgvDyw9gaOkbQtIi5opogzKbJfW4C7I+J+\n4H5JlwKHAV0NrSL7dDzwjshOBm2WdBPwZOALzRSxFqm1E53h4cFy+ngJqKn7JGk9cD7wykS+sU/d\np4g4MCIOiIgDgH8EfrvjgQXFPn//DBwpaa2kXcn+gsGXGi5nGUX26RayniOSnkB2lfTU/9plau1E\nZ7inVULUdwmo1hTcpzcDjwfem/dMtkWHr75dcJ+SU2S/IuJLki4BrgYeAs6IiM7+yZyC79XbgLMk\nbSKbbXdyRHT6T5ZIOhd4HrC3pC3AW4AdIc12okt8GSczM0uGhwfNzCwZDi0zM0uGQ8vMzJLh0DIz\ns2Q4tMzMLBkOLbMhkvaXdJOkx+X398rvHzC03AGSviPpyprK8SFJ96RyBXqzJji0zIZExK1k1yR8\nR/7QO4DTI+LmEYvfGBFPr6kcr2D7H9qaLTSHltlofwM8W9Lvkl1r8S+nvSDvef2XpLMk3ZD3lH5G\n0n9I+m9JR+TLvVXSByR9VtKXJf2ipL9Q9vfKLpG0Y837ZpYsh5bZCBHxXeAPyMLrd/P7RRwM/BXZ\ntfGeTPanQo4E3kD2d6FWHUR2AdifBz4IfCoingZ8B3hhFftg1kcOLbPxjgZuB55a4jU3RcSm/E9n\nXAv8a36h103AAQPLXZwH4Sayyxddkj8+vJyZDXBomY0g6enA88n+quzvlfgDfVsH/v/QwP2HePS1\nPrcC5OH23XjkemrDy5nZAIeW2ZD8L+S+j2xY8BbgXRQ4p2Vm9XNomW3v1cAtEfHJ/P57gadIem6L\nZTIzfJV3s5nlv9v6WESUOedVdhtn5dv4x7q2YZYS97TMZvc9YI86f1wMPBd4oI71m6XIPS0zM0uG\ne1pmZpYMh5aZmSXDoWVmZslwaJmZWTIcWmZmlgyHlpmZJcOhZWZmyXBomZlZMhxaZmaWDIeWmZkl\nw6FlZmbJcGiZmVkyHFpmZpYMh5aZmSXDoWVmZslwaJmZWTIcWmZmlgyHlpmZJcOhZWZmyXBomZlZ\nMhxaZmaWDIeWmZklw6FlZmbJcGiZmVky1la9wh13PCoi7qp6tdvZeefaN9HodnbaqZnt9K3e+rYd\ntm71drq8nQcfbGY7fas34Irvfe/jEXHUvOupPLQi7mL33TdWvdrtLC3Vvglvx9t52EFL0cyGVla8\nHW+nf9sBdO+9e1exHg8PmplZMhxaZmaWDIeWmZklw6FlZmbJcGiZmVkyHFpmZpYMh5aZmSXDoWVm\nZslwaJmZWTIcWmZmlgyHlpmZJcOhZWZmyXBomZlZMhxaZmaWDIeWmZklw6FlZmbJcGiZmVkyHFpm\nZpYMRVT7Z8QlXQM8UOlK07M3cFfbhWiZ6yDjenAdgOsAYJeIeOq8K1lbRUmGPBARyzWsNxmSNroO\nXAfgegDXAbgOIKuDKtbj4UEzM0uGQ8vMzJJRR2idXsM6U+M6cB2scj24DsB1ABXVQeUTMczMzOri\n4UEzM0tGqdBS5j2SNku6WtIzpyz/Hkn3Ddx/Rf66TZIuk3TYrAVvS9E6kPQhSddLukbSmZJ2zB/f\nQ9JHJV0l6VpJxze7B/MrUQcn5cuEpL1HPH+4pG2SXlJ/qasl6aj8/d0s6ZQRz4+to2mvTUWBOniy\npM9J2irpDSOeXyPpi5I+1kyJq1egDsa2eZJ+L28DrpF0rqRdmi19NYp+noePd0n7S/qUpOvyenhd\noQ1GROEbcAxwMSDg2cDnJyy7DJwD3Dfw2HOAvfL/Hz3p9V29Fa2DfDnlt3OB38of/yPgnfn/9wHu\nAXZqe79qqoNnAAcANwN7Dz23Bvg34CLgJW3vU8n9XwPcCCwBOwFXAYcWqaMir03hVrAOvh84HHg7\n8IYR63g98H+Bj7W9PzXWwcg2D1gH3AQ8Jr//D8Cvtr1PddTBwHKPOt6BJwLPzP+/O3BDkWOh7PDg\nscDZkbkc2FPSE4cXkrQGeBfwxsHHI+KyiPh6fvdyYL+S2++CQnUQERflywTwBR7Z1wB2lyRgN7LQ\n2tZQ2atStA6+GBE3j1nHa4CPAHfUV8zaHAFsjoiViHgQOI+sTgaNq6Mir03B1P2IiDsiYgPw3eEX\nS9oPeCFwRhOFrUmROpjU5q0FHiNpLbAr8JUGyly1op/n7Y73iLg9Iv4z//+3gC+RhflEZUNrHXDr\nwP0tYzZyEnBhRNw+YV2/TvZNNDVF6wCAfFjwlcAl+UOnAk8h+4BuAl4XEQ/VU9TalKqDYZLWAS8G\n3ldxuZpSZP/HLTNX3XXIvPvxbrIvtal99geVrYOH27yIuA34S+AW4HbgGxHxiZrKWaepdVDkeJd0\nANnIzOenbbDyiRiS9gVeCvzthGV+kuwNPLnq7XfQe4FLI+Kz+f0XAFcC+wJPB06V9Ni2CteSdwMn\nJxjWVgFJLwLuiIgr2i5LU4bbPEl7kfVIDiRrC75P0q+0V8JaTTzeJe1G1gv73Yj45rSVTb2Mk6Tf\nAV6d390A7D/w9H7AbUMveQZwMLA5GwFjV0mbI+LgfH0/QjYkcHRE3D1t+10wQx2svu4tZOetfnPg\n4eOBd+TDhpsl3QQ8mWwIsbNmrYMxloHz8s/H3sAxkrZFxAVVlLUBtzF9/8cts2OB16agSB2M82PA\nz0s6BtgFeKykD0ZEao12oToY0+b9DHBTRNyZL3M+2fmvD9Za4uoVqYOxx3s+EvUR4EMRcX6hLZY8\n6fZCHn1y+QsFXjM4EWM9sBl4ThMnCeu4Fa0D4DeAy8hPtA48/j7grfn/n5C/wXvXWea26mBg+ZvH\n7SNwFulNxFgLrJB9S149+fzDReqoyGtTuJXZD+CtjJiIkT/3PNKdiFHkczCyzQOeBVxLdi5LwAeA\n17S9T3V+DvLlHz7e8/0+G3h3qW2WLKCA08hmi2wClgeeuwjYd8RrBkPrDODrZMNjVwIb2670Gd6k\nQnVANrnixoF9fXP++L7AJ/LXXgP8Stv7VGMdvJZsjHsb2Tm8M0asK7nQyst9DNlspxuBN+WPnQic\nWKCOtnttircCdfAD+fv/TeDe/P+PHVpHsqFVsA7GtnnAnwD/lbcD5wA7t70/ddTB0LIPH+/AkWQT\n064eqJ9jpm3PV8QwM7Nk+IoYZmaWDIeWmZklw6FlZmbJcGiZmVkyHFpmZpYMh5aZmSXDoWVmZslw\naJmZWTL+Pwb37Bz1RwIXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -191,69 +236,75 @@ } ], "source": [ - "#Select kCSD method\n", - "kcsd_select" + "# Lets make a plot of the estimated CSD\n", + "fig = plt.figure(figsize=(7,7))\n", + "ax = plt.subplot(111)\n", + "ax.set_aspect('equal')\n", + "t_max = np.max(np.abs(est_csd[:, :, 0]))\n", + "levels_kcsd = np.linspace(-1 * t_max, t_max, 16, endpoint=True)\n", + "im = ax.contourf(k.estm_x, k.estm_y, est_csd[:, :, 0], levels=levels_kcsd, cmap=cm.bwr) \n", + "ax.set_xlabel('X [mm]')\n", + "ax.set_ylabel('Y [mm]')\n", + "ax.set_title('Estimated CSD without CV')\n", + "ticks = np.linspace(-1 * t_max, t_max, 7, endpoint=True) \n", + "plt.colorbar(im, orientation='horizontal', format='%.2f', ticks=ticks)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No lambda given, using defaults\n", + "Cross validating R (all lambda) : 0.03\n", + "Cross validating R (all lambda) : 0.035\n", + "Cross validating R (all lambda) : 0.04\n", + "Cross validating R (all lambda) : 0.045\n", + "Cross validating R (all lambda) : 0.05\n", + "R, lambda : 0.05 6.81292069058e-22\n" + ] + }, { "data": { - "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "(0.049999999999999989, 6.812920690579594e-22)" ] }, + "execution_count": 10, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "####TODO temporal illustration here\n", - "#Lets do KCSD!\n", - "k = config.kCSD(ele_pos, pots, **config.defaults[config.kCSD.__name__]) \n", - "est_csd = k.values()[:,...,0]\n", - "est_pos = k.estm_pos\n", - "plots.show_csd(est_pos, est_csd, show_ele=ele_pos, show_kcsd=True)" + "k.cross_validate(lambdas=None, Rs=np.arange(0.03, 0.05, 0.005))" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cross validating R (all lambda) : 0.1\n", - "Cross validating R (all lambda) : 0.11\n", - "Cross validating R (all lambda) : 0.12\n", - "Cross validating R (all lambda) : 0.13\n", - "Cross validating R (all lambda) : 0.14\n", - "Cross validating R (all lambda) : 0.15\n", - "Cross validating R (all lambda) : 0.16\n", - "Cross validating R (all lambda) : 0.17\n", - "Cross validating R (all lambda) : 0.18\n", - "Cross validating R (all lambda) : 0.19\n", - "Cross validating R (all lambda) : 0.2\n", - "Cross validating R (all lambda) : 0.21\n", - "Cross validating R (all lambda) : 0.22\n", - "Cross validating R (all lambda) : 0.23\n", - "Cross validating R (all lambda) : 0.24\n", - "R, lambda : 0.16 1.71907220186e-17\n" - ] + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" }, { "data": { - "image/png": "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\n7tYBgSAAAAAASUVORK5CYII=\n", + "image/png": "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\ndQdW/7ZFtu/KKbCi5Shar6JSaiOzVDm0ElSm46uyY66yg69LmcCqQwptZJYyh1ZCys4OrKMDHReC\nKYwk6g6WcftPoY3MusrXtBLQ5KnAlBVpp6JtM269cdevFhd9jcusDg6tjpr03XiRTrloxz2q002x\nUy47O7DousPaIcU2Mus6h1YHVHG6qMqw6l+/1k65op59XBuOqvu0I9NJZll6+rvZZBxaLaj6mkaV\nI4hh29fSIS8VrMiwZQrD6j/JqcKyo0+Ptsyq5dBqSF0X3+sOrP79VNYpj0qSkjsc1baTBFaRZWVG\nnw4us+o4tGpU9yyxaU55TTrRoLJTguOWV9DLlw2sqq5pOaTM6uMp7zXpamAV/dzWqPX6X29ztmIV\nMyvHtckky4u0kae+m5Xn0KpBFwNr0g8ZtxZIUx64iqnt/W1W9R00zKw8h1bFuhhY0+572Oik0oM0\noEyQTTLyKlu1wpNV+h9mc8yhlZBpJw8MW9bbF1bVIVei5oNOW89x209V/DLnZ83miCdiVKjOUdak\n/dSk/d4knz2auDAVKxJGRQOr/7VGJl0Uvejo2R42hzzSqsimTfXte9KZgJNMOihznFl6w18mxCaZ\ndDHq9fIrmc0vh1bHVTnCKnOacNg2jZ+xGrHjSe/oXuR52TcKrZzJc8DZHHJoJW7aWXLTBFUpHe1g\niwZYI+3U0TYy6xKHVodVdVqwis8mVTbBoGbTBMsk7ea5EmbNcmjNGHeWxVXVVm5zs+Y4tDqqzo6w\nyn3PSodd1am+WWkPs65yaNlUPOvazJrk0JpDDpqt9bfJpG3ktjWrl0PLhnIHXIzbyaw5Dq05Vbaj\nncWOeVydhi2fxbYwS4VDa8YM6lA70cn6fNt481RXswk5tDqqif5r1DEmXZayIoFf9NrXrLaRWdsc\nWnNu1arJT5OlaJq6zFI7mKXKoZWwKt/l924zS51zFdfuhgV7VTMOzaw4h1aHVdkJFh1RpX46rKqQ\nquo4pdulKw1p1lEOrcSVDZEyfeKkAVZ4h1WvP+Fuy46uxgVdY8HugLM55NDquGne9Y96fdzIa5ZO\nfU1zaq+3rcqE2FRSbmyzmvmbixOwatXk97Qbt+2koZhav1qkDZfqVLStJx1xFd75tL84sxnkkVYi\nppnhN81ooLW+cYoDT3u9qcgotJEgb+xAZunwSKsi229f/zGKvPmeZvmg9Yu8XqoPLTPkqdigQ48q\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -261,15 +312,50 @@ } ], "source": [ - "k.cross_validate(Rs=np.arange(0.10, 0.25, 0.01), lambdas=np.logspace(15,-25, 35))\n", - "est_csd = k.values()[:,...,0]\n", - "plots.show_csd(est_pos, est_csd, show_ele=ele_pos, show_kcsd=True)" + "est_csd = k.values('CSD')\n", + "# Lets make a plot of the estimated CSD\n", + "fig = plt.figure(figsize=(7,7))\n", + "ax = plt.subplot(111)\n", + "ax.set_aspect('equal')\n", + "t_max = np.max(np.abs(est_csd[:, :, 0]))\n", + "levels_kcsd = np.linspace(-1 * t_max, t_max, 16, endpoint=True)\n", + "im = ax.contourf(k.estm_x, k.estm_y, est_csd[:, :, 0], levels=levels_kcsd, cmap=cm.bwr) \n", + "ax.set_xlabel('X [mm]')\n", + "ax.set_ylabel('Y [mm]')\n", + "ax.set_title('Estimated CSD with CV')\n", + "ticks = np.linspace(-1 * t_max, t_max, 7, endpoint=True) \n", + "plt.colorbar(im, orientation='horizontal', format='%.2f', ticks=ticks)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# In oder to simplify this we developed as validation class\n", + "# Which processes all these inputs in one go and gives output\n", + "from kcsd import ValidateKCSD2D\n", + "\n", + "params = {true_csd_xlims : [0., 1.],\n", + " true_csd_ylims : [0., 1.],\n", + " csd_xres : 100, csd_yres : 100, \n", + " h : 50., sigma=0.3, n_srcs_init=1000}\n", + "# csd_seed : 5,\n", + "# ele_xlims : [0.1, 0.9],\n", + "# ele_ylims : [0.1, 0.9],\n", + "# src_type='gauss', \n", + "# h =50., sigma=0.3, n_src_init=1000, }\n", + "\n", + "v = ValidateKCSD2D(CSD_SEED, h=50., sigma=0.3, n_src_init=1000)" ] } ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -283,7 +369,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.5.4" }, "varInspector": { "cols": {