Skip to content

Instantly share code, notes, and snippets.

@bage79
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bage79/68b7ce98574c0857e9b1 to your computer and use it in GitHub Desktop.
Save bage79/68b7ce98574c0857e9b1 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#연습문제 3\n",
"\n",
"###본 연습문제는 1주차 Neural Simulation 복습 및 function와 class 를 정의해보고 이를 활용해 보는 것을 목표으로 합니다.\n",
"\n",
"Neural simulation 중에서 가장 널리 활용되는 Hodkins-Huxly(HH) 모델을 이용해 실습을 수행할 것입니다. function 생성에 집중하기 위해 1주차때 수행되었던 소스코드는 간단한 해설과 같이 제공됩니다. "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: pylab import has clobbered these variables: ['pylab']\n",
"`%matplotlib` prevents importing * from pylab and numpy\n"
]
}
],
"source": [
"%pylab inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"위 명령어는 시각화모듈인 matplotlib에서 제공하는 함수를 빌트인 함수처럼 호출이 가능하도록 해주며 출력되는 그래프를 output 란에 출력이 가능하도록 해주는 명령어입니다."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from numpy import * # numpy 모듈을 불러오기\n",
"from __future__ import division, print_function, absolute_import, unicode_literals"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# import numpy\n",
"# print(numpy.__version__)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- numpy는 numerical python 이라는 모듈로 python 내에서 다양한 수학적 연산처리를 수행하는데 편리한 함수들을 제공하는 모듈입니다.\n",
"- 일반적으로 numpy 모듈을 import 하는 경우 다음과 같은 2가지 방법 중에 1가지를 사용합니다.\n",
"\n",
">import numpy as np\n",
"\n",
">from numpy import *\n",
"\n",
"- 위의 방법은 모듈을 np라는 약어로 호출해오는 경우로 numpy 모듈 내 함수를 불러오기 위해선 np.[function name]의 형태를 사용합니다\n",
"- 아래의 방법은 numpy 모듈의 모든함수(*)를 직접 불러오기 때문에 빌트인 함수처럼 사용할 수 있는 장점이 있지만, 너무 많은 모듈을 위와 같은 형태로 불러들이면 함수명이 중첩되는 경우 처리가 곤란해집니다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 아래는 1주차 수업때 수행했던 신경세포의 HH 모델을 시뮬레이션 하기 위한 파이썬 코드입니다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\\frac{dV}{dt} = \\frac{1}{C_m}(I_m - g_{Na}m^3h(V-E_{Na})-g_Kn^4(V-E_K)-g_l(V-E_l))$$"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# K channel\n",
"alpha_n = vectorize(lambda v: 0.01*(-v + 10)/(exp((-v + 10)/10) - 1) if v != 10 else 0.1)\n",
"beta_n = lambda v: 0.125*exp(-v/80)\n",
"n_inf = lambda v: alpha_n(v)/(alpha_n(v) + beta_n(v))\n",
"\n",
"# Na channel (activating)\n",
"alpha_m = vectorize(lambda v: 0.1*(-v + 25)/(exp((-v + 25)/10) - 1) if v != 25 else 1)\n",
"beta_m = lambda v: 4*exp(-v/18)\n",
"m_inf = lambda v: alpha_m(v)/(alpha_m(v) + beta_m(v))\n",
"\n",
"# Na channel (inactivating)\n",
"alpha_h = lambda v: 0.07*exp(-v/20)\n",
"beta_h = lambda v: 1/(exp((-v + 30)/10) + 1)\n",
"h_inf = lambda v: alpha_h(v)/(alpha_h(v) + beta_h(v))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10d5f6390>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": [
"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\n",
"PgAAAABJRU5ErkJggg==\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x10d7e7410>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"### Channel Activity ###\n",
"v = arange(-50,151) # mV\n",
"figure()\n",
"plot(v, m_inf(v), v, h_inf(v), v, n_inf(v))\n",
"legend(('Na','Na (Inactivating)','K'))\n",
"title('Steady state values of ion channel gating variables')\n",
"ylabel('Magnitude')\n",
"xlabel('Voltage (mV)')"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## setup parameters and state variables\n",
"T = 55 # ms\n",
"dt = 0.025 # ms\n",
"time = arange(0,T+dt,dt)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## HH Parameters\n",
"V_rest = 0 # mV\n",
"Cm = 1 # uF/cm2\n",
"gbar_Na = 120 # mS/cm2\n",
"gbar_K = 36 # mS/cm2\n",
"gbar_l = 0.3 # mS/cm2\n",
"E_Na = 115 # mV\n",
"E_K = -12 # mV\n",
"E_l = 10.613 # mV\n",
"\n",
"Vm = zeros(len(time)) # mV\n",
"Vm[0] = V_rest\n",
"m = m_inf(V_rest) \n",
"h = h_inf(V_rest)\n",
"n = n_inf(V_rest)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## Stimulus\n",
"I = zeros(len(time))\n",
"for i, t in enumerate(time):\n",
" if 5 <= t <= 30: I[i] = 10 # uA/cm2 (stimulus_onset <= t <= stimulus_end 를 의미하는 부분)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0., 0., 0., ..., 0., 0., 0.])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Vm"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Simulate Model\n",
"for i in range(1,len(time)):\n",
" g_Na = gbar_Na*(m**3)*h\n",
" g_K = gbar_K*(n**4)\n",
" g_l = gbar_l\n",
"\n",
" m += (alpha_m(Vm[i-1])*(1 - m) - beta_m(Vm[i-1])*m) * dt\n",
" h += (alpha_h(Vm[i-1])*(1 - h) - beta_h(Vm[i-1])*h) * dt\n",
" n += (alpha_n(Vm[i-1])*(1 - n) - beta_n(Vm[i-1])*n) * dt\n",
"\n",
" Vm[i] = Vm[i-1] + (I[i-1] - g_Na*(Vm[i-1] - E_Na) - g_K*(Vm[i-1] - E_K) - g_l*(Vm[i-1] - E_l)) / Cm * dt\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.00000000e+00, 2.50000000e-02, 5.00000000e-02, ...,\n",
" 5.49500000e+01, 5.49750000e+01, 5.50000000e+01])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-30., -30., -30., ..., -30., -30., -30.])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"-30+I"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10d7e7a50>"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": [
"iVBORw0KGgoAAAANSUhEUgAAAYkAAAEZCAYAAABiu9n+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
"AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XncVHX5//HXm0VUQBQ3QEXUpMR9TyvF0rI07NuiZhli\n",
"tvy0bPtWWBbY4lJqVn6tzDW3tDKXUhOt29xyC3fNBVFQQRFR1FSQ6/fH5zPc5x5mOXPPOXPumft6\n",
"Ph7zYObMmXOuM8C55rPLzHDOOecqGVB0AM455/ouTxLOOeeq8iThnHOuKk8SzjnnqvIk4ZxzripP\n",
"Es4556ryJOEKIekQSTc2u6+kT0n6W7bRZUPSRElzio6jKJKWSdq46DhcczxJuFQkzZb0vrJtqW/0\n",
"eTGzC8zsA739fKUbmaTpks5rPrp8xPiWSFqceCwsOi7XmTxJuLQsPvqDvn6dBlxkZsMTj5FFB+U6\n",
"kycJ14weN1NJm0nqkvSipPslfTjx3pqSrpD0kqTbgE3KPvt+Sf+RtEjS/0m6QdJnK51U0k8l3Shp\n",
"tfLSTCwZfEHSIzGOU5u5QEnj4jEHJLZ1lWKT9CtJf0y8d4Kk66oca4ykP0l6TtIsSV+O20dJelXS\n",
"yMS+28X9BlY6VHxUOseukp6XtH58vbWkhZLGx9dTJT0m6WVJD0j6SOKzh0i6WdLJ8bt7LB5viqSn\n",
"JM2X9JnE/udI+rWka+PxuiSNrRLXEEknSnpS0rz4va1caV/Xt3iScI0ovzEtfy1pMHAlcA2wNvBl\n",
"4ILSzQn4P+A1YBRwKDCFmGQkrQX8Afg2MBL4D7ALKyYhSfotsAWwl5m9XCXOfYAdgK2A/SXVq46q\n",
"el1VJEtVXwe2lDRZ0nvitX2m/AMxyVwJzATGAO8Dvirp/WY2D+gC9k985GBCaeGtOrH0DMzsFuA3\n",
"wLmSVgHOB442s0fiLo8B7zaz1YBjgPMlrZs4xE7APYS/h4uAS4DtCEn908CpklZN7H8Q8ANgLeBu\n",
"4IIqoR0PvA3YOv65HvD9Rq7NFcTM/OGPug9gNrAYeDHxeBX4Z3z/PcCzZZ+5EJgGDATeBMYn3vsx\n",
"cGN8/hng5rLPPgUcGp8fAvwLuJiQTAYl9jukdJz4ehmwa+L1xcC3a1zXMuClsuv6L/C7+P64uM+A\n",
"xGf+UYotvt4JWBi/owMS2ycCc+LznYEny859FHBWfH4AcFN8PhB4FtihSszTgTfKYr4+8f4g4E7g\n",
"PuCqOn+vM4FJie/ykcR7W8ZrXzuxbQGwVXx+DnBh4r2hwFJgvcR3uzEh6b4CbJzYdxdgVtH/rv1R\n",
"/zEI59IxYD8z+3tpg6TJwGHx5RigvCfPk3H7WoQbV/L9pxLPxwBzyz5b/vpthJLBzma2tE6s8xLP\n",
"XyPcvJD0AFCqDtnbzG6Oz7c1s1mlD0iaFs+XipndLmkW4Tr/UGW3DYExkl5MbBsI/DM+vxz4laRx\n",
"wDuAl8zszhqnvdjMViixxHiWSjoX+Dnw1eR7sbroa4TkBzAMWDOxy/zE8//G4z1ftm1Y6VQk/p7M\n",
"7NXYgD4GeDrxmbWBVYG7pO7CJ16T0Rb8L8k1I1kt8wywgRJ3AcKN8WngecIvzGR99diyz66//KDh\n",
"GOvT00OEqpyrE1VYDcVpZptbd0PvzfX2j16NfyarWEb12Fk6AliJcB3fqnLMOcATZrZG4rGame0b\n",
"Y3udkGA+HR+/qxGfUaNKTFKpKucs4GRJK8XtGwKnA0cAI81sDeD+WseqQ8AGifMOI1RTPVO23wJC\n",
"cpmQuPbVLVR5uT7Ok4TLym2EX+3fkjRY0kRgX+D3ZrYMuBSYLmkVSROAyXTX619FqNffT9Igwk1s\n",
"VPkJzOz3wHeA65S+/31vb4Clcz5PSHQHSxoo6VASje4xYf0Q+BSh2uxbkraucKjbgcWSvhW/g4GS\n",
"tpC0Q2Kf3xHaaiYBtbrg1koQIlQDnWFmhxGqrX4Y3x5K+M4XAAMkTSG07zTjQ5LeFRPRD4FbzSxZ\n",
"iiD+/f8WOEXS2jHO9SS9v8lzuxbwJOGasbwB18zeBD4MfJBQcjgVONi6G0y/RKimmEf4hXvW8oOY\n",
"LQA+AfyEcAPbjFCn/kaF8/yO0FD69/jLuLxrbnn31Xpddyu9V/6ZzwHfjLFNAG4GiD2PzgOON7P7\n",
"zOwxQhI7LzbkLz++hQbofYFtgFmE7+h0YPmv6Vi6WQbcZWa1BuEZcIB6jpN4Od6AjyRUe30v7jsF\n",
"mCLpXWb2IHAScCvh72EL4KYa113t+0m+V2p3egHYllAKqvTZbxMazf8l6SVgBtBoidAVQGb5dgmX\n",
"dBaht8lzZrZl3PZTwn+YN4HHgSlm9lJ87yhCtcJbwJFmdm2uAbo+J/YEmgMcZGY3FB1PK8Xusxea\n",
"2Vl1dy6YpLOBuWb2vbo7u7bVipLE2cDeZduuBTY3s62BRwi9PIjVEAcQfq3tDZymRP9017kUxkms\n",
"LmkI4dc4hB5N/YakHQndTS8uOpaUmqrKc+0h9xuwmd1I6KKX3DYj1lNCqMsuNVLuR+gbvsTMZhOK\n",
"pzvlHaPrE3Yh/H0/Tyh5fsTM3qj9kc4ReyPNAL5qZq/W27+P6E+j8PutvtAF9lDCoB0IXeeSvx7n\n",
"EgbduA5nZscQBnf1S2Y2uegYGmVmU4qOweWv0KocSd8F3jSzC2vs5r9UnHOuIIWVJCQdAnyIMD1B\n",
"ydMk+l0TqqF6dKeLn/XE4ZxzvWBmDbUlFZIkJO1N6FK4exxEVHIFcKGkkwnVTJsS+pevoNELbSeS\n",
"ppvZ9KLjyItfX3vr5Ovr5GuD3v3Azj1JSLoI2B1YS2EBlmmE3kwrATPiAN1bzexwM3tQ0iXAg4QR\n",
"uodb3n10nXPOVZV7kjCzT1bYXLUPuJkdCxybX0TOOefS8jEIfVNX0QHkrKvoAHLWVXQAOesqOoAc\n",
"dRUdQF+T+4jrPEiyTm6TcM65PPTm3tkXxkk45xrkPfxcPVn9kPYk4Vyb8tK0qybLHxHeJuGcc64q\n",
"TxLOOeeq8iThnHOuKk8Szrk+SdLYuKBSv2p7kfQrSUen3LdL0mfzjMeThHOuT5A0W9J7S6/N7Km4\n",
"Hnmf6cklaZykZVmtcyPpEEk3JreZ2f8zsx+lPETu07V7knDO9RVG+yxk1C5xNs2ThHMuU5KmSnos\n",
"rrv9gKSPlL3/OUkPJt7fVtJ5wFjgyljF9L/lv9oljZF0haQXJD0q6bDEMadLukTSufG490vavkaM\n",
"yyR9WdLjkp6X9JNStZaCo2PJZn48Zmkt8n/GPxfFOHeOnzk0XtNCSddIGlt2ri9IekTSi5JOjds3\n",
"A34F7BKPtTBuP0fSD+PzNST9RdJz8dhXSmrpGjueJJxzWXsMeLeZrUZYSOp8SesCSPoEYZLPg+P7\n",
"k4AXzOxg4Clg31jFdGKF4/4+7jMa+DhwrKQ9Eu9/mLCA2QjCjNKn1onzI8D2hCVj9yMsgAYwBZgM\n",
"TAQ2BoYljvWe+OeIGOdtkvYjTFr6P8BawI10L6RWsg+wA7AVsL+kD5jZQ8AXCROcDjezkXHfZBWS\n",
"gDMJCXQs8N8U15UpTxLOdSAJy+LRm3Ob2R/NbF58fgnwKN3LEB8GnGBmd8X3Hzezp+pfjzYAdgW+\n",
"bWZvmtk9wBnAZxK73Whm18Q2jPOBresc9gQzW2Rmc4BTgNJkpJ8CTjKz2XEp2aOAA2OJplI10xeB\n",
"48zsP3FZ5uOAbWLMJceb2cvxXP8AtildWrVLBjCzhWb2ZzN73cxeIUx+unud68qUJwnnOpAZyuLR\n",
"m3NL+oykmbFq5UVgC8IvbAgLiT3ei8OOARaWrf/9FD2XN56feP4asHKdBuY5ZccaE5+PBp4se28Q\n",
"sG6V42wI/DxxvS/E7cnY5pXFNrRGXMtJWlXSb2LV10vADcCIVvb48iSRA4l3FB2Dc0WQtCFwOnAE\n",
"MNLM1gDup/sX8xzgbVU+Xqvk8gwwUtKwxLaxwNwmwh1b9ry0CuYzwLiy95YSklClGJ8CPm9mayQe\n",
"Q83sXyliqHbNpe3fAMYDO5nZCEIpQrSw4dyTRMYktgQekpb/KnGuPxlKuMEtAAZImkIoSZScAfyv\n",
"pO1iA/HbEo2884FNKh00VtPcAhwnaYikrQhtCOc3Eev/Slo9VgsdCVwct18EfC02nA8jVPH8PlYl\n",
"PQ8sK4vz18B3JE0AkDQitr1Uk7zJzwfWlzS4yvvDCO0QL0kaSWjPqXS83HiSyN64+OeuRQbhXBHM\n",
"7EHgJOBWQhXLFsBNiff/CPwYuBB4GbgUWCO+fRxwdKy2+XrpI4nDf5Lw/+uZ+Lnvm9nfE/uV/yqv\n",
"16ZyOXAXMBP4C92LoZ0FnEfoyTSLUD305Rj/azH+m2OcO5nZZcAJwO9jldB9wAdqxJGM9XrgAWCe\n",
"pOcqvH8KsAoh6d4CXN2L62yKryeRMYkDCb9Ejjbjx0XH4zpTX/4/0A4kLQPeZmazio4lD9X+ffTm\n",
"342XJLJXKm5vVnQgzjnXrNyThKSz4oCU+xLbRkqaEQeXXCtp9cR7R8WBMg9Len/e8eVgKKG4uWHR\n",
"gTjnqmq/KpSCtKIkcTawd9m2qcAMMxtPqJObChAbfg4AJsTPnFanC1tfNBT4D6Grn3OuDzKzgZ1a\n",
"1ZS13G/AZnYj8GLZ5knAufH5uYSRjxBGPV5kZkvMbDZh5OZOtJdhwCPAGMmr85xz7a2om9i6ZlYa\n",
"+DKf7kEqY+jZ73kuPQektINVCEnxZWDtgmNxzrmmFP5LNw6hr1U/2G51h4OBJYQE51VOzrm2Nqig\n",
"886XNMrM5kkaDZT6Bz8NJOc7WZ/uUZA9SJqeeNllZl15BNoLAwmjM0tJ4q5iw3HO9VeSJhImKuy1\n",
"opLEFYRZFk+If16W2H6hpJMJ1UybArdXOoCZTc8/zF4ZREgST9N+VWXOuQ4Sfzx3lV5LqjRiu6ZW\n",
"dIG9iDBS8O2S5sRh+scDe0l6BHhvfF0arXkJ8CBhZOHhfWlVqpRKSeI5YJ2CY3Gu5eJaDrsVHUez\n",
"1IKlQdtB7iUJM/tklbf2rLL/sYS5UtpVKUnMBzYvOJa2J7EN8IgZrxUdi0vHzLaov1fzJJ0DzDGz\n",
"7+V0ityXBm0HhTdcdyAvSWRrJvClooNwrr/yJJG9QcBbeJJomsSQ+HTTQgNxDYlrH7w3Pq+5rGjc\n",
"d6rCMqYL4wwNQ+J7h0i6sezYyyRtIunzwEHAt+LSn5dXiaXWMqXTFZZNLe3bY7nUsuO8TdINkhbF\n",
"4/w+8d474gwSL8SZImrNANt2PElkr9S7yZNE80bEP6utP+D6pvIqmnrLih4EvJ8w/fZ44Oh6xzez\n",
"04ELCKvLDTez/WrsX22Z0kaqkn4IXGNmqxM6pPwCQNJQYAZhyvK1gQMJM0V0zNxtRfVu6mRe3ZSd\n",
"UpLwXmIN0jHKpC7dpmUy0+yNZnYNgKTzga8mTwGcamZPx/d/DPwSSNvOkCa+E8xsEbBIUmmZ0jNT\n",
"frbkTWCcpPVirLfE7fsCT5hZaQaJuyVdCnwC+EEDx++zPElkr5QkXgSGS6xkxpsFx9SuViesj7ye\n",
"hMy8ETGtjG7uWam4rGhcxAeqLyOalSyO/y1CaeL2uETpSWZ2NmEiz53jtpJBwO96G2xf40kie4OA\n",
"pWYsk1hAWNv3mYJjalerEQYljiaUKhYVG47LSfkyoqX/L68Cq5bekDSq7HNpfzSMBR5KPC8N0O1x\n",
"fKD8+N0nCtMIfT7G8S7gOkn/JCSdG8ysHWesTsXbJLJXKkmAVzk1a2XgdXxgYicTcLik9eLynN8F\n",
"So3C9wCbS9pa0srA9LLPzgc2TnGOasuUzgR2k7SBpBHAUVWDlD4hqTTNziJCgnqLsKLdeEmfljQ4\n",
"PnaU1DHr3HuSyF6pdxN4kmjWYEJd8DOE0oRrP/WWFTXCUqbXAo8Tqhd/BGBmjxDq9a8jTL9/Y9ln\n",
"zwQmxGVEL60RQ8VlSs3sOkLCuBe4A7iyQqwlOwD/krQ4Hu9IM5ttZq8QGt0PJPyYeZawDOtKNeJp\n",
"K758acYkbgKmmnGTxAXANWacV+9zbkUS+xMaAN8CLjfjooJD6jP68v+BRkh6AvhsYq3qrI/f0cuU\n",
"VpPl8qXeJpG9ZHXT8/h04c0ozai7EP8enSuEVzdlrzxJrFVgLO1uJUJ1k3+Prrfar6qkj/GSRPaS\n",
"SWIBMK64UNpeqSSxAGjJfECutcxso5yPPzDP4/cHXpLIXrLh2qubmlNKEl6ScK4gniSy59VN2SlV\n",
"Ny3Ak61zhfAkkb3S3E3gJYlmeUnCuYJ5m0T2ytskPEn0XmmchH+PFUjZzM/kXC2eJLKXTBILgdUk\n",
"BpuxpMCY2tVKdDdcj5QYYMayOp/pFzphjIRrDzWThKR1CIOZdiP00jHgSeCfwB/M7Lm8A2xDy5NE\n",
"nL9pITCSnpOcuXQGA6+asUTiFcKEfwsLjsm5fqVqkpB0JmF+96uBXxOGm4swPcJOwCWSHjOzw1oR\n",
"aBtJ9m6C7nYJTxKNK1U3AcsnS/Qk4VwL1SpJ/NzM7q2w/SHg78DxkrZq5uSSjgI+DSwD7gOmAEMJ\n",
"86lsCMwG9o9zwbeLZHUTeH16M0rVTdCdbB8pLhzn+p9avZv2jrMmVlUliaQiaRzwOWA7M9uS0Cvo\n",
"QGAqMMPMxgPXx9ftJNm7CbxnTjNKvZsAXgDWLDAW5/qlWkliDHCLpJskHS4p61/DLxNuAKtKGkSY\n",
"1/0ZYBJQWuXpXMLSg+2kvCTh3WB7rzROArqrm5xzLVQ1SZjZVwlVPkcDWwH3SvqbpMmShjd7YjNb\n",
"CJxEWLTjGWCRmc0A1o0LfECox1+32XO1mFc3Zae8JOFJwrkWq9m7KS4v2AV0SToC2BM4HvgVPVd0\n",
"apikTQhr3Y4DXgL+IOnTZee3an3BJU1PvOwys65m4slQpZLE+IJiaXfJJLEAr25yriGSJgITmzlG\n",
"qnESsYH6QGB/wn/Wqis4NWAH4BYzeyGe41JgF2CepFFmNk/SaMLCPSsws+kZxJApiQGAyvryPw/s\n",
"WlBI7S5Z3fQCsGmBsTjXduKP567Sa0nTGj1GrS6w4wmJ4QBC76OLgPdnuHjHw8D3JK1CWKJyT+B2\n",
"wrqzk4ET4p+XZXS+VigvRYC3STTDSxLOFaxWSeJqwlqzB5jZ/Vmf2MzukfQ74E5CEvo3cDownDAG\n",
"47PELrBZnztH5T2bwNskmlFpnIRzroWqJgkz2yT5WtJqyf1jw3NTzOwnwE/KNi8klCraUbWShN/c\n",
"eic5TsK7wDpXgLptEpK+ABwDvAHL69oN2DjHuNpVpSSxAFhLQma+SlaDyqubPNk612JpGq6/CWxh\n",
"ZgvyDqYDrJAkzHhD4nVgBNBOI8f7gmR100JgDZ/kz7nWSrOexCzgv3kH0iHK520q8cbr3lle3WTG\n",
"UmAxYZI/51yLpClJTAVulXQr3b/qzMyOzC+stlWpugm62yUebW04bS9Z3QTd7RI+yZ9zLZImSZwO\n",
"XEeYgG8ZYSZYr1uvrFLvJvCSRG8lx0lAd7uEJ1vnWiRNkhhoZl/PPZLOUK0k4d1ge6daScI51yJp\n",
"2iSulvQFSaMljSw9co+sPdWrbnKNKU8S3sPJuRZLU5I4iFC9lJyy27vAVlYrSbTbRIV9QXl1k0/y\n",
"51yL1U0SZjauBXF0imq9mxYAW7Q4lk5QqSTh1U3OtVDV6qY4e2BNkvbINJr25w3X2UqOkwAvSTjX\n",
"crVKEvtK+gmhZ9OdhDWuBwCjCDO47gn8Iz5c4G0S2UpOywFeknCu5WrN3fS/cXGh/YC9CAsQATwJ\n",
"3AT82MxeyT/EtlIrSXhJonGVejd5snWuheotOrQYOD8+XH3eBTYjcW2O8uo7L0k412JpusC69Ko1\n",
"XC8GBkus0uJ42tlgYEnZpIheknCuxTxJZGsQPatHAIg3Om+XaEx5VROEJDFSQgXE41y/5EkiW9Wq\n",
"m8CrnBpVPkYCM94kTDY5opCInOuHai1f+jHCoLlKv9rMzC7NLar2VStJeON1YyqVJKC7XcKnXXeu\n",
"BWo1XH+Y2hP5eZJY0WBqJwmvbkqvWpIotUs83tpwnOufanWBPaSFcXSKim0SkZckGrNCdVPkPZyc\n",
"a6E0czchaV9gArByaZuZ/aDZk0taHTgD2JxQaplCmAb6YsK4jNnA/mbWLlUL3iaRnXolCedcC9Rt\n",
"uJb0G2B/4EhC+8T+dA+sa9bPgavMbDNgK+BhwkSCM8xsPHA9PScW7OvqtUn4zS298ik5SnwmWOda\n",
"KE3vpl3N7DPAQjM7Bngn8PZmTyxpBPAeMzsLwMyWmtlLwCTg3LjbucBHmj1XC3nDdXbKp+Qo8TUl\n",
"nGuhNEmitL71a5LWI9wER2Vw7o2A5yWdLenfkn4raSiwrpnNj/vMp72m2K7VcO3VTY2p1bvJSxLO\n",
"tUiaNom/SFoD+ClwV9z224zOvR3wJTO7Q9IplFUtmZlJqtjDStL0xMsuM+vKIKZmecN1dqpVN3lJ\n",
"wrmU4mzeE5s5Rpr1JEoN1H+S9Fdg5YwakucCc83sjvj6j8BRwDxJo8xsnqTRwHNV4pqeQQxZ8zaJ\n",
"7FSrbvKShHMpxR/PXaXXkqY1eoxag+neZ2bXJwbVJd+j2cF0MQnMkTTezB4hTD3+QHxMBk6If17W\n",
"zHlarFaSWAisLjHQrOL8Tq6nlYA3Kmz3koRzLVSrJLEboXdRtUF1WQym+zJwgaSVCIOjphBm/rxE\n",
"0meJXWAzOE+rVE0SZrwlsYhwg6tYOnI91Bon4SUJ51qk1mC6UrHkB2Y2K/mepEzWtzaze4AdK7y1\n",
"ZxbHL0CthmvornLyJFFftSTxArCmhMpmiHXO5SBN76Y/Vtj2h6wD6RC1qpvAG68bUTFJmPF63D68\n",
"5RE51w/VapPYjDDKenVJHyUMpDNgNRIjr10Pg4DXa7zv3WDTq1aSgO6pOV5uXTjO9U+12iTGE9oj\n",
"RsQ/SxYDn8szqDbmJYns1EoSpak5nmhdOM71T7XaJC4HLpe0q5nd0sKY2lmaJOGNrukMoX5JwjmX\n",
"szSD6R6T9F1gXGJ/M7NDc4uqfaVJEpu0KJZ2l6Yk4ZzLWZokcTnwT2AGsCxu814lldXr3bSAMPeV\n",
"q6/aOAnwbrDOtUyaJLGKmX0790g6Q61pOcCrmxpRryTh1U3OtUCaLrB/kbRP7pF0Bm+4zk693k2e\n",
"bJ1rgTRJ4qvAlZJel7Q4PrzrYWX1koR3gU3PSxLO9QFpJvgb1opAOkSq3k0+WjgVL0k41wekWZlu\n",
"gKSDJX0/vh4raaf8Q2tLNRuufbRwQ7wk4VwfkKa66TRgF+Cg+PqVuM2tqNoaCEneLpFOvXES/h06\n",
"1wJpksTOZnY4cYU6M1tIuBm6FdW6sZX4DS6dWiWJ5dV2LYzHuX4pTZJ4U9LA0gtJa9M9XsL1VKtv\n",
"f4l3g02n6ncZq+1eJ0wZ45zLUZok8Uvgz8A6ko4FbgaOyzWq9pWmJOHVTenUKkmAf4/OtUSa3k3n\n",
"S7oLeF/ctJ+ZPZRvWG2r3o0NvLoprbRJ4tHWhONc/1Q3SUg6z8wOBh6qsM31lLa6yZNEfWmSxDot\n",
"isW5fitNddMWyReSBgHb5xNO20tb3eRtEvV5dZNzfUDVJCHpO5IWA1smRlovJiy9eUXLImwvXpLI\n",
"Tr0k8Rz+PTqXu6pJwsyONbPhwIlmNjzxGGlmU7MKQNJASTMlXRlfj5Q0Q9Ijkq6VtHpW52oB7wKb\n",
"nXrfpSdb51qgbnWTmU2VtJ+kkySdKOnD9T7ToK8AD9I9/fhUYIaZjQeuj6/bRZqGa69uSmcV4tic\n",
"KjxJONcCaablOB44EniA0Hh9pKRMusBKWh/4EHAGLB8YNQk4Nz4/F/hIFudqEa9uyk6aJOEN187l\n",
"LM16EvsA25jZWwCSzgHuBo7K4Pw/A74JrJbYtq6ZzY/P5wPrZnCeVklT3fQysLLEELO6CaU/q5ck\n",
"vE3CuRZIkyQMWJ0wqRrxedMzmEraF3jOzGZKmljxxGYmqeK5JE1PvOwys65mY2pGnCKibnWTGSYt\n",
"/xU8pxWxtSmvbnKuSfHeOrGZY6RJEscB/5bUFV/vTjbtBLsCkyR9CFgZWE3SecB8SaPMbJ6k0YRf\n",
"jCsws+kZxJClgcAyM95KsW/pV7AniQpiwl2VFEnCp113rrr447mr9FrStEaPkWacxAzCLLCXAn8C\n",
"djGz3zd6onJm9h0z28DMNgIOBP4eB+hdAUyOu00GLmv2XC2Spqqp5Dm8Pr2WwYSEW3UpWDP+S1gq\n",
"1qdddy5HtcZJfFjS88B9wO3AAjO7wsyezSmW0q/B44G9JD0CvDe+bgdpGq1L2q2tpdXqVTWVeLJ1\n",
"Lme1qpuOBd5jZg9L2hn4CaGqKXNmdgNwQ3y+ENgzj/PkzEsS2UmbJErtEo/lG45z/Vet6qalZvYw\n",
"gJndRs8eSG5FqwCvpdzXk0Rtq5Luu/TGa+dyVqsksbakr9M9fiH52szs5Nyjay9pb2wQksQWdffq\n",
"vxotSTjnclIrSZxBz0bB8teup0aSxHy8JFGLJwnn+oiqSaIPdjHt6+p12Uzy6qbahpIu4T4HjMk5\n",
"Fuf6tTRdYF06jVY3eZKobjhhZHo9XpJwLmeeJLLTcJKIg8bcioYDi1Ps50nCuZx5kshO6iQR52x6\n",
"jTDFiVvRanhJwrk+Ic0ssKMknSnpmvh6gqTP5h9a22mkJAFe5VRL2pKET/LnXM7SlCTOAa6lu4Hw\n",
"UeBreQXUxnqTJHzUdWWNtEl4tZ1zOUqTJNYys4shTFxnZkuApblG1Z4aGUwH3g22ltVIUZIw4zXC\n",
"v8thuUfkXD+VJkm8ImnN0gtJ7wReyi+ktjUMr27KStqSBHi7hHO5SjNV+DeAK4GNJd1C+A/58Vyj\n",
"ak8jgEYmP/QkUd0IGk8Ss/ILx7n+q26SMLO7JO0OvD1u+k+scnI9rUZjJaz5wJY5xdLu1gIWpNzX\n",
"G6+dy1GakgTATsC4uP92kjCz3+UWVXsaQWNJwksS1TWSJHyta+dyVDdJSDof2JiwrnVy1TVPEj15\n",
"kshOo0nCSxLO5SRNSWJ7YIKZ+RKRtfUmSXgX2DKxO+uadK+pXo+XJJzLUZreTfcDo/MOpAM0miS8\n",
"C2xlqwGvx1HpaXibhHM5SlOSWBt4UNLtdC/PaWY2Kb+w2lKjSWIRsKrEkAZuiP1BI1VN4NVNzuUq\n",
"TZKYnneCwDqWAAAWDklEQVQQ7U5iMKFv/4tpP2OGSctvcHPziq0NrU3jScJLZM7lJE0X2K48Tixp\n",
"A0Lj9zqAAaeb2S8kjQQuBjYEZgP7m9miPGLI0NrAAjOWNfi5+YR2CU8S3TYA5jSwv5cknMtRmgn+\n",
"dpF0h6RXJC2RtExS2oFOtSwBvmZmmwPvBI6QtBkwFZhhZuOB6+Prvm4dQt14o7zxekVjgaca2N+T\n",
"hHM5StNwfSpwEGFiv5WBzwKnNXtiM5tnZnfH568ADwHrAZOAc+Nu5wIfafZcLbAuvUsSCwg9eVy3\n",
"RpPEqwASQ/MJx7n+LdV6Emb2KDDQzN4ys7OBvbMMQtI4YFvgNmBdM5sf3ypVx/R16xBibdRCYGTG\n",
"sbS7sTRQ3WSG4aUJ53KTpuH6VUlDgHsk/QSYB9lNzSxpGPAn4CtmtljqPrSZmaSK4zMkTU+87Mqr\n",
"7SSl3lY3eZJY0caEtqhGlBqvG/2ccx1N0kRgYjPHSJMkDiaUOL5EWEdifeBjzZy0RNJgQoI4z8wu\n",
"i5vnSxplZvMkjabKzdfMpmcRQ0Y2oHeNzwuBTTOOpW1JDALGE6oeG+ElCecqiD+eu0qvJU1r9Bg1\n",
"q5skDQKONbP/mtlLZjbdzL5uZo81eqIKxxZwJvCgmZ2SeOsKYHJ8Phm4rPyzfdBGwBO9+JyXJHra\n",
"CJhnFtoZGuAD6pzLSc2ShJktlbShpCFmlvWAr3cBnwbulTQzbjsKOB64JC6ROhvYP+Pz5mEcniSy\n",
"sCXwQC8+5yUJ53KSprrpCeAmSVfQvaiOmdnJzZzYzG6ieklmz2aO3UpxrqFmShJrZBtRW9sF+Fcv\n",
"PudJwrmcpOnd9Djw17jvMMLI4uF5BtVm1gaWmqUfbZ3gJYme3g3c1IvP+ahr53KSZsT1dABJI8JL\n",
"y2IgXSfZCri3l5/1JBFJDCdUN93ei497ScK5nKQZcb2jpPsIN8L7JN0jaYf8Q2sbzSSJRcDqUrrx\n",
"Kh3uQ8CNZg2tE17iDdfO5STNzeks4HAz29DMNgSOiNtcsDW9TBJmLAVeIUyP3d99Ari0l5/1koRz\n",
"OUmTJJaa2Y2lF7HBeWl+IbWdHYF/N/H5fl/lJLE+8F7gkl4ewpOEczmp2iYhafv49AZJvwEuiq8P\n",
"AG7IO7B2ILEOMAa4p4nDlJLErEyCak9fBc43a2g9jqRXgEESq/ayuso5V0WthuuTCFN4Q5iGY1ri\n",
"uS9lGuwG3GzWY+3vRi2kH0/yJ7EJcAihbadX4tocLxC6E3uScC5DVZOEmU1sYRzt6kPAtU0e40X6\n",
"6ViJOA3HucBxZjzT5OFKJbKnmw7MObdc3S6wktYAPkMYVVza38zsyBzj6vPiDW4Sza/c1y+TRByE\n",
"+AtCVdHPMjjki/Tzth3n8pBmxPVVwK2EHjzL8Oqmkt2BJ8waWvugkn6XJGKX3xOBnYD39mJFv0p8\n",
"9LpzOUiTJIaY2ddzj6T9fB64IIPjvEg/6pkjMQI4h/Cr/wNmZDU4s9/3EnMuD2m6wF4o6fOSRksa\n",
"WXrkHlkfJjGOML9UFuNF+k1JQmJPQon0WWAvM17I8PBe3eRcDtKUJF4Hfgp8F5ZXCxhhcZj+6kjg\n",
"rIx+BXd8kohJ9TjCzL+fM+NvOZzGq5ucy0GaJPENYBMzW5B3MO0gVpccAmyT0SE7NknEcSTfAA4j\n",
"NFIf1ou1ItJaSFgQyzmXoTTVTY8C/807kDZyGHBNBg3WJR2XJCTGSvwCeBgYAWxlxjE5Jgjw6ibn\n",
"cpGmJPEacLekfwClhYf6ZRdYicHAV4CPZnjYjkkSEu8Avg3sR1h1cIsMxj+k5dVNzuUgTZK4LD6S\n",
"o6/7axfYjxO6vd6Z4THbPklIbE9YVXA34JfAJr1cX6MZ3rvJuRykWU/iHEmrAmPN7OEWxNQnxcFf\n",
"Xwd+mPGhXwaGSgyKs8K2hfh97E5IDhMI07hMzrlKqRavbnIuB2nWk5gEzASuia+3jUuZ9jfvIdSv\n",
"/yXLg8aBZC8Dq2d53LxIDJD4MHALcDph5tZNzDilwAQBXt3kXC7SNFxPB3Ym/FLDzGaSc/dXSXtL\n",
"eljSo5K+nee5GvA14JSMRgeX6/NVThKDJA4izHj7A+BkYDMzzjTjzWKjA+AlYLjEwKIDca6TpGmT\n",
"WGJmiyQlt+VxowRA0kDgVMJgtaeBOyRdYWYP5XXO+jGxEaG+/dM5naLPJgmJlYHJwLeAucA3gb+Z\n",
"9a12KTOWSctLZFkO0nOuX0uTJB6Q9ClgkKRNCQPJbskxpp2Ax8xsNoCk3xN6yxSWJIDDgbNzrE7p\n",
"c0ki9uQ6FDiaMEr6M2bcXGxUdZWqnDxJFCjOzTUkPmqV7IywgNmbwJs5ldJdk9IkiS8TRlu/QVh4\n",
"6G9k33ibtB4wJ/F6LqG6qweJY3pxbNXfpaIphBXo8tJnkkSsrjmIUM34OPAxM24vNKj0vIdTBmKn\n",
"hOHA6LLHmoSSWvljOLByfAwBViLcL96g9iqWAwj3oMHAShLLgCXEpBEfSyo8b+TPStuWERJUvQcV\n",
"tg0g3EfKH5W2p9m2yIz/q/EdFS5N76ZXge/ERyukrMb4xG7dz/ecDV+Yne3xe/iSGU/04nNpFZ4k\n",
"4q+/jxLaGxYCh5q13QqEhX6PMcEeADzZ10tdEmsQ2hbLH+MIqy0aYY6t5GNB/HNR2WMxYcDtG4Rp\n",
"fN5stDoyJqaBhAQzOP65UuL1kPjn4LJ90v45BBgWn1e70ScfVNleKcE0s+31Rr6nRkmaCExs5hi1\n",
"li+9knARlX59m5lNaubENTwNbJB4vQGhNFEWwB/2yOn8RSjs5hb/c34Q+BHh7/sbhBHlfarNIaVC\n",
"ShLxO9yP8B0uBUZIbGaW7w0gZVzrAJvHx4TE88GEkuKs+LgbuBSYDTxjxuJWxhr/vS2ldsnDNcjM\n",
"uoCu0mtJ06ruXEWtksQ7CTfni4DbSuconbvREzXgTmBTSeOAZwi/zD6Z4/n6gheBtVp9UomJwI8J\n",
"Cep7wKVtmhxKWp4kJN4LHAusQhhtfhXhZvtdwnfaqjgEbATskHhsRfg/+0B8PAj8If45v83/rl2L\n",
"1EoSo4G9CDfoTwJ/BS4yswfyDMjMlkr6EqHtYyBwZpE9m1rkRWDTVp1MYmfCr96NCW0PFza5Tndf\n",
"0bISmcROhOQwjpAMLi41vEocDtwlcasZV+VwbgFj6U4G28c/XyH8yLoTOIFQOnjOk4FrRq01rpcC\n",
"VwNXSxpCSBQ3SJpuZqfmGZSZXR3P3V+05OYmsQ2hzWFbQueDs81Ykvd5Wyj3mWAltiJ8d9sREu1Z\n",
"5d+hGc9KfBy4TOKLZlzaxPlEaCMoJYMd4/O3gDsICeHnwF1mzOvteZyrpmbDtaSVgX2AAwm/mH4O\n",
"/Dn/sPqdXJOExGbAMYRR48cD+xddX56ThYQqlsxJvJ3wHU4k/Eo/oNZ3aMYtEvsAl0j8D3CsWe1u\n",
"3LHzwFhgS7pLB9sT/p/eCdwF/Do+f8ZLCK4VajVcn0do4LoK+IGZ3deyqPqfXJKExCbANGBvwtxK\n",
"UwqeOiNvmc/fFBdM+j4wCfgZYU2MV9J81ow7JLYmzBz8D4kXCTf4OYTumAMJbVHrEKr+xhMS3YNx\n",
"v7MIY3TmeEJwRZFZ5X97kpZB1RuKmdlquUVVhyQzs96OeehzJNYD7jRjdEbHm0AYIb0vYbGfUzJc\n",
"S7rPiu0Ep5mxQwbH2ozQED0JOA04qZmZbWMpYVtgC0KV2GBCB5Dn42MW8EirexW5/qU3985abRJp\n",
"5nVy2ZgHjJQYYrZ8zY6GSbwTmArsQpiye9MCpuwu0pOEatFek9iBMLPte8hw2vPYqH1XfDjXNtKM\n",
"uHY5M+MtiWcJo81nNfJZiSGEQXCHE36hnggcZMZrmQfa9z0HrCoxLG2VEIDESsD/AEcQupGeRJiG\n",
"pJOr5pxLxZNE3/Ek4QaVKklIbExYSvWzwP2ETgWXtdOaFFkzwyRmEer2/11v//gdTgY+B/yHUDV3\n",
"eYf1+HKuKV6l1HfcTehWWZXEaImvSPyLMMBxVWB3M95nxh/7c4JIuBOqt0lIrC1xhMQtwL8IDd17\n",
"mbFH/A49QTiXULXhui/rtIZrgLhWwyfN+HBi2wBgG8K0GR8k9Da7gjAK/nq/oa1IYgrwETP2i69F\n",
"6Ba7T3xsQVg46gJghn+Hrj/pzb3Tk0QfITEMeIIwjmEQYebbdxEmUCsNLryhQ8c3ZEZiKKEL6a2E\n",
"Cd3eSViQ6K/x4d+h67c8SbS52IXzMML0CncAt5jxZLFRtR+JUYSS10vAbWY8XXBIzvUJniScc85V\n",
"1Zt7pzdcO+ecq8qThHPOuao8STjnnKvKk4RzzrmqPEk455yrypOEc865qjxJOOecq6qQJCHpp5Ie\n",
"knSPpEsljUi8d5SkRyU9LOn9RcTnnHMuKKokcS2wuZltDTxCmL8fSROAA4AJhNXUTpPkpR3nnCtI\n",
"ITdgM5thZsviy9voXrx+P+AiM1tiZrOBx4CdCgjROeccfaNN4lDCOtoAY4C5iffmEhbicc45V4Dc\n",
"Fh2SNAMYVeGt75jZlXGf7wJvmtmFNQ5V6ORSOkarAicAQ4qMw7WVk2ya/afoIJzLQm5Jwsz2qvW+\n",
"pEOADwHvS2x+Gtgg8Xr9uK3S56cnXnaZWVdv4kxhDKGd5Oicju86yxTC9OSeJFzhJE0EJjZzjEKW\n",
"L5W0N/BNYHczS87tfwVwoaSTCdVMmwK3VzqGmU3PO85oIPCiTbPTW3Q+18Z0jHYh/JtxrnDxx3NX\n",
"6bWkaY0eo6g1rn8JrATMkARwq5kdbmYPSrqEsGjMUuBwK34u84HAWwXH4NrHW/SNtj7nMlFIkjCz\n",
"TWu8dyxwbAvDqWcAsKzuXs4Fy/CShOsg/ounPi9JuEZ4ScJ1FP/HXJ+XJFwjvCThOoonifq8JOEa\n",
"4SUJ11H8H3N9A/GShEvPSxKuo3iSqG8AXpJw6b2FJwnXQTxJ1OclCdeIZfj/K9dB/B9zfV6ScI3w\n",
"koTrKJ4k6vOShGuElyRcR/F/zPV57ybXCC9JuI5S1LQcTdMxqjVzbJZGA0tadC7X/t4CPqFj9I6i\n",
"A3Ft4TmbZl8tOoha2jZJAH9p4bkebOG5XHs7g7DaonNpvFp0APWo+PnzGifJzExFx+Gcc+2kN/dO\n",
"b5NwzjlXlScJ55xzVXmScM45V5UnCeecc1V5knDOOVeVJwnnnHNVeZJwzjlXVaFJQtI3JC2TNDKx\n",
"7ShJj0p6WNL7i4zPOef6u8KShKQNgL2AJxPbJgAHABOAvYHTJPW70o6kiUXHkCe/vvbWydfXydfW\n",
"W0XegE8GvlW2bT/gIjNbYmazgceAnVodWB8wsegAcjax6AByNrHoAHI2segAcjSx6AD6mkKShKT9\n",
"gLlmdm/ZW2OAuYnXc4H1WhaYc865HnKb4E/SDGBUhbe+CxwFJNsbas0l0n6TSznnXIdo+QR/krYA\n",
"rgdei5vWB54GdgamAJjZ8XHfa4BpZnZb2TE8cTjnXC80OsFf4bPASnoC2N7MFsaG6wsJ7RDrAdcB\n",
"b7Oig3TOuX6qL6wnsTwBmNmDki4hrN+wFDjcE4RzzhWn8JKEc865vqvtxiBI2jsOtHtU0reLjqdZ\n",
"ks6SNF/SfYltIyXNkPSIpGslrV5kjL0laQNJ/5D0gKT7JR0Zt3fK9a0s6TZJd0t6UNJxcXtHXF+J\n",
"pIGSZkq6Mr7umOuTNFvSvfH6bo/bOun6Vpf0R0kPxX+jOzd6fW2VJCQNBE4lDLSbAHxS0mbFRtW0\n",
"swnXkzQVmGFm4wmN/FNbHlU2lgBfM7PNgXcCR8S/r464PjN7HdjDzLYBtgL2kPRuOuT6Er5CqAIu\n",
"VTt00vUZMNHMtjWz0pisTrq+nwNXmdlmhH+jD9Po9ZlZ2zyAXYBrEq+nAlOLjiuD6xoH3Jd4/TCw\n",
"bnw+Cni46Bgzus7LgD078fqAVYE7gM076foIvQ+vA/YArozbOun6ngDWLNvWEdcHjABmVdje0PW1\n",
"VUmC0ONpTuJ1pw62W9fM5sfn84F1iwwmC5LGAdsCt9FB1ydpgKS7CdfxDzN7gA66PuBnwDeBZYlt\n",
"nXR9Blwn6U5Jn4vbOuX6NgKel3S2pH9L+q2koTR4fe2WJPpdK7uFdN/W1y1pGPAn4Ctmtjj5Xrtf\n",
"n5kts1DdtD6wm6Q9yt5v2+uTtC/wnJnNpMqA13a+vuhdZrYt8EFCdeh7km+2+fUNArYDTjOz7YBX\n",
"KataSnN97ZYkngY2SLzegJ7TeHSK+ZJGAUgaDTxXcDy9JmkwIUGcZ2aXxc0dc30lZvYS8Fdgezrn\n",
"+nYFJsWxTBcB75V0Hp1zfZjZs/HP54E/E8Zodcr1zSVMf3RHfP1HQtKY18j1tVuSuBPYVNI4SSsR\n",
"Zoy9ouCY8nAFMDk+n0yoy287kgScCTxoZqck3uqU61ur1DNE0iqEWY1n0iHXZ2bfMbMNzGwj4EDg\n",
"72Z2MB1yfZJWlTQ8Ph9KmCroPjrk+sxsHjBH0vi4aU/gAeBKGri+thsnIemDwCnAQOBMMzuu4JCa\n",
"IukiYHdgLUL94PeBy4FLgLHAbGB/M1tUVIy9FXv6/BO4l+4i7VHA7XTG9W0JnEv4sTWAUFr6aVwf\n",
"pe2vL0nS7sA3zGxSp1yfpI0IpQcIVTMXmNlxnXJ9AJK2Bs4AVgIeJ0x9NJAGrq/tkoRzzrnWabfq\n",
"Jueccy3kScI551xVniScc85V5UnCOedcVZ4knHPOVeVJwjnnXFWeJFxHkrRmnP55pqRnJc2NzxdL\n",
"OjWnc35J0iF5HLvGOdeVdFUrz+n6Fx8n4TqepGnAYjM7OcdzCPg3sKOZLc3rPFXOfQFwkpn9u5Xn\n",
"df2DlyRcfyEASRMTi+dMl3SupH/GxWc+KunEuAjN1ZIGxf22l9QVZwq9pjTvTZl3EaZcXho/0yXp\n",
"ZEl3xAVfdpT057jQyw/jPkMl/VVh0aL7JO1f63yS3ibpurj/XXHEMIRpJD6Z55fn+i9PEq6/24iw\n",
"VsIk4HzCYixbAf8F9okTFP4S+JiZ7UBYJOrHFY7zbsLcYiUGvGFmOwK/Iky18kVgC+CQOPXD3sDT\n",
"ZraNmW0JXFPnfBcAv4yzzu4CzIvbbwd2a/6rcG5Fg4oOwLkCGXC1mb0l6X5ggJn9Lb53H2ExqPGE\n",
"hYSuCzVKDASeqXCsscBNZdtKk0/eD9xfmsNf0izC1OL3AidKOh74i5ndJGmLSueL062PMbPLAczs\n",
"zcR5no2xOpc5TxKuv3sTwroQkpYkti8j/P8Q8ICZ7ZriWOVrLryRONYbie3LgEFm9qikbYF9gB9J\n",
"up4w4dwK5yvNVlrjvN646HLh1U2uP6u4kE6Z/wBrS3onhPUxJE2osN+ThKUgU587zuX/upldAJxI\n",
"WLmv4vniYk1zJe0Xtw+J05MDjI7ndy5zniRcf2GJPys9hxV/jZuZLQE+DpwQlymdSWgPKHcTsEON\n",
"c69wbGBL4DZJMwlTxP+ozvkOBo6UdA9wM93LTu5EmJLducx5F1jnMpDoArtzWXtBK859AXBiXGbU\n",
"uUx5ScK5DMS1gn8LfKqV55W0DrC6JwiXFy9JOOecq8pLEs4556ryJOGcc64qTxLOOeeq8iThnHOu\n",
"Kk8SzjnnqvIk4Zxzrqr/D9tTqZJAzxYbAAAAAElFTkSuQmCC\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x10d852950>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## plot membrane potential trace\n",
"figure()\n",
"plot(time, Vm, time, -30+I)\n",
"legend(('action potential', 'input pulse'))\n",
"title('Hodgkin-Huxley Example')\n",
"ylabel('Membrane Potential (mV)')\n",
"xlabel('Time (msec)')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## 연습문제 3-1. 위의 코드를 이용해 다음 함수를 작성하시오.\n",
"- T, dt, stimulus_onset, stimulus_end 를 input 으로 받아 [time, Vm, I] 을 리턴해주는 hh_simulate 함수\n",
"- time, Vm, I 를 input 으로 받아 상기 Hodgkin-Huxley Example 그래프를 출력해주는 hh_plot 함수"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: pylab import has clobbered these variables: ['pylab']\n",
"`%matplotlib` prevents importing * from pylab and numpy\n"
]
}
],
"source": [
"%pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import, unicode_literals\n",
"import numpy as np \n",
"import pylab\n",
"\n",
"# K channel\n",
"alpha_n = np.vectorize(lambda v: 0.01 * (-v + 10) / (np.exp((-v + 10) / 10) - 1) if v != 10 else 0.1)\n",
"beta_n = lambda v: 0.125 * np.exp(-v / 80)\n",
"n_inf = lambda v: alpha_n(v) / (alpha_n(v) + beta_n(v))\n",
"\n",
"# Na channel (activating)\n",
"alpha_m = np.vectorize(lambda v: 0.1 * (-v + 25) / (np.exp((-v + 25) / 10) - 1) if v != 25 else 1)\n",
"beta_m = lambda v: 4 * np.exp(-v / 18)\n",
"m_inf = lambda v: alpha_m(v) / (alpha_m(v) + beta_m(v))\n",
"\n",
"# Na channel (inactivating)\n",
"alpha_h = lambda v: 0.07 * np.exp(-v / 20)\n",
"beta_h = lambda v: 1 / (np.exp((-v + 30) / 10) + 1)\n",
"h_inf = lambda v: alpha_h(v) / (alpha_h(v) + beta_h(v))\n",
"\n",
"\n",
"def hh_simulate(T, dt):\n",
" time = np.arange(0, T + dt, dt)\n",
"\n",
" # HH Parameters\n",
" V_rest = 0 # mV\n",
" Vm = np.zeros(len(time)) # mV\n",
" Vm[0] = V_rest\n",
"\n",
" ## Stimulus\n",
" I = np.zeros(len(time))\n",
" for i, t in enumerate(time):\n",
" if 5 <= t <= 30:\n",
" I[i] = 10 # uA/cm2 (stimulus_onset <= t <= stimulus_end 를 의미하는 부분)\n",
" return time, Vm, I\n",
"\n",
"\n",
"def hh_plot(time, Vm, I):\n",
" Cm = 1 # uF/cm2\n",
" gbar_Na = 120 # mS/cm2\n",
" gbar_K = 36 # mS/cm2\n",
" gbar_l = 0.3 # mS/cm2\n",
" E_Na = 115 # mV\n",
" E_K = -12 # mV\n",
" E_l = 10.613 # mV\n",
"\n",
" V_rest = 0 # mV\n",
" m = m_inf(V_rest)\n",
" h = h_inf(V_rest)\n",
" n = n_inf(V_rest)\n",
"\n",
" # Simulate Model\n",
" for i in range(1, len(time)):\n",
" g_Na = gbar_Na * (m ** 3) * h\n",
" g_K = gbar_K * (n ** 4)\n",
" g_l = gbar_l\n",
"\n",
" m += (alpha_m(Vm[i - 1]) * (1 - m) - beta_m(Vm[i - 1]) * m) * dt\n",
" h += (alpha_h(Vm[i - 1]) * (1 - h) - beta_h(Vm[i - 1]) * h) * dt\n",
" n += (alpha_n(Vm[i - 1]) * (1 - n) - beta_n(Vm[i - 1]) * n) * dt\n",
"\n",
" Vm[i] = Vm[i - 1] + (I[i - 1] - g_Na * (Vm[i - 1] - E_Na) - g_K * (Vm[i - 1] - E_K) - g_l * (Vm[i - 1] - E_l)) / Cm * dt\n",
" pylab.figure()\n",
" pylab.plot(time, Vm, time, -30 + I)\n",
" pylab.legend(('action potential', 'input pulse'))\n",
" pylab.title('Hodgkin-Huxley Example')\n",
" pylab.ylabel('Membrane Potential (mV)')\n",
" pylab.xlabel('Time (msec)')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": [
"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\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x10d7989d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"T = 55 # ms\n",
"dt = 0.025 # ms\n",
"\n",
"time, Vm, I = hh_simulate(T, dt)\n",
"hh_plot(time, Vm, I)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 연습문제 3-2. 위의 코드를 이용해 다음 조건을 만족하는 Class 를 작성하시오.\n",
"\n",
"class HH_method:\n",
"\n",
" def __init__(self):\n",
" pass\n",
" \n",
" def setup(self, T, dt):\n",
" pass\n",
" \n",
" def stimulus(self, onset, end):\n",
" pass\n",
" \n",
" def plot(self):\n",
" pass\n",
"\n",
"- 위의 구조를 이용해 다음 명령어를 수행하였을때 상기 그래프와 동일한 그래프가 출력되는 클래스를 작성하시오\n",
"\n",
">model = HH_method() # model 이라는 object 생성\n",
"\n",
">model.setup(55, 0.025)\n",
"\n",
">model.stumulus(5, 30)\n",
"\n",
">model.plot()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import, unicode_literals\n",
"import numpy as np\n",
"import pylab\n",
"\n",
"\n",
"class HH_method(object):\n",
" def __init__(self):\n",
" self.alpha_n = np.vectorize(lambda v: 0.01 * (-v + 10) / (np.exp((-v + 10) / 10) - 1) if v != 10 else 0.1)\n",
" self.beta_n = lambda v: 0.125 * np.exp(-v / 80)\n",
" self.n_inf = lambda v: self.alpha_n(v) / (self.alpha_n(v) + self.beta_n(v))\n",
"\n",
" # Na channel (activating)\n",
" self.alpha_m = np.vectorize(lambda v: 0.1 * (-v + 25) / (np.exp((-v + 25) / 10) - 1) if v != 25 else 1)\n",
" self.beta_m = lambda v: 4 * np.exp(-v / 18)\n",
" self.m_inf = lambda v: self.alpha_m(v) / (self.alpha_m(v) + self.beta_m(v))\n",
"\n",
" # Na channel (inactivating)\n",
" self.alpha_h = lambda v: 0.07 * np.exp(-v / 20)\n",
" self.beta_h = lambda v: 1 / (np.exp((-v + 30) / 10) + 1)\n",
" self.h_inf = lambda v: self.alpha_h(v) / (self.alpha_h(v) + self.beta_h(v))\n",
"\n",
" def setup(self, T, dt):\n",
" self.dt = dt\n",
" self.time = np.arange(0, T + dt, dt)\n",
"\n",
" # HH Parameters\n",
" V_rest = 0 # mV\n",
" self.Vm = np.zeros(len(self.time)) # mV\n",
" self.Vm[0] = V_rest\n",
"\n",
"\n",
" def stumulus(self, onset, end):\n",
" # Stimulus\n",
" self.I = np.zeros(len(self.time))\n",
" for i, t in enumerate(self.time):\n",
" if onset <= t <= end:\n",
" self.I[i] = 10 # uA/cm2 (stimulus_onset <= t <= stimulus_end 를 의미하는 부분)\n",
"\n",
" Cm = 1 # uF/cm2\n",
" gbar_Na = 120 # mS/cm2\n",
" gbar_K = 36 # mS/cm2\n",
" gbar_l = 0.3 # mS/cm2\n",
" E_Na = 115 # mV\n",
" E_K = -12 # mV\n",
" E_l = 10.613 # mV\n",
"\n",
" V_rest = 0 # mV\n",
" m = self.m_inf(V_rest)\n",
" h = self.h_inf(V_rest)\n",
" n = self.n_inf(V_rest)\n",
"\n",
" # Simulate Model\n",
" for i in range(1, len(self.time)):\n",
" g_Na = gbar_Na * (m ** 3) * h\n",
" g_K = gbar_K * (n ** 4)\n",
" g_l = gbar_l\n",
"\n",
" m += (self.alpha_m(self.Vm[i - 1]) * (1 - m) - self.beta_m(self.Vm[i - 1]) * m) * self.dt\n",
" h += (self.alpha_h(self.Vm[i - 1]) * (1 - h) - self.beta_h(self.Vm[i - 1]) * h) * self.dt\n",
" n += (self.alpha_n(self.Vm[i - 1]) * (1 - n) - self.beta_n(self.Vm[i - 1]) * n) * self.dt\n",
"\n",
" self.Vm[i] = self.Vm[i - 1] + (self.I[i - 1] - g_Na * (self.Vm[i - 1] - E_Na) - g_K * (self.Vm[i - 1] - E_K) - g_l * (\n",
" self.Vm[i - 1] - E_l)) / Cm * self.dt\n",
"\n",
" def plot(self):\n",
" pylab.figure()\n",
" pylab.plot(self.time, self.Vm, self.time, -30 + self.I)\n",
" pylab.legend(('action potential', 'input pulse'))\n",
" pylab.title('Hodgkin-Huxley Example')\n",
" pylab.ylabel('Membrane Potential (mV)')\n",
" pylab.xlabel('self.time (msec)')\n",
" pylab.show()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": [
"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\n",
"D/pUwWFrgG+FAAAAAElFTkSuQmCC\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x10ccdb8d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if __name__ == '__main__':\n",
" model = HH_method() # model 이라는 object 생성\n",
" model.setup(55, 0.025)\n",
" model.stumulus(5, 30)\n",
" model.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment