|
| 1 | +COMMENT |
| 2 | +/** |
| 3 | + * @file DetAMPANMDA.mod |
| 4 | + * @brief Adapted from ProbAMPANMDA_EMS.mod by Eilif, Michael and Srikanth |
| 5 | + * @author chindemi |
| 6 | + * @date 2014-05-25 |
| 7 | + * @remark Copyright © BBP/EPFL 2005-2014; All rights reserved. Do not distribute without further notice. |
| 8 | + */ |
| 9 | +ENDCOMMENT |
| 10 | + |
| 11 | + |
| 12 | +TITLE AMPA and NMDA receptor with presynaptic short-term plasticity |
| 13 | + |
| 14 | + |
| 15 | +COMMENT |
| 16 | +AMPA and NMDA receptor conductance using a dual-exponential profile |
| 17 | +presynaptic short-term plasticity based on Fuhrmann et al. 2002, deterministic |
| 18 | +version. |
| 19 | +ENDCOMMENT |
| 20 | + |
| 21 | + |
| 22 | +NEURON { |
| 23 | + THREADSAFE |
| 24 | + |
| 25 | + POINT_PROCESS DetAMPANMDA |
| 26 | + RANGE tau_r_AMPA, tau_d_AMPA, tau_r_NMDA, tau_d_NMDA |
| 27 | + RANGE Use, u, Dep, Fac, u0, mg, NMDA_ratio |
| 28 | + RANGE i, i_AMPA, i_NMDA, g_AMPA, g_NMDA, g, e |
| 29 | + NONSPECIFIC_CURRENT i |
| 30 | + RANGE synapseID, verboseLevel |
| 31 | +} |
| 32 | + |
| 33 | + |
| 34 | +PARAMETER { |
| 35 | + tau_r_AMPA = 0.2 (ms) : Dual-exponential conductance profile |
| 36 | + tau_d_AMPA = 1.7 (ms) : IMPORTANT: tau_r < tau_d |
| 37 | + tau_r_NMDA = 9.0 (ms) : Dual-exponential conductance profile (from Andrasfalvy and Magee 2001) |
| 38 | + tau_d_NMDA = 61.0 (ms) : IMPORTANT: tau_r < tau_d (from Andrasfalvy and Magee 2001) |
| 39 | + Use = 1.0 (1) : Utilization of synaptic efficacy (just initial values! Use, Dep and Fac are overwritten by BlueBuilder assigned values) |
| 40 | + Dep = 100 (ms) : Relaxation time constant from depression |
| 41 | + Fac = 10 (ms) : Relaxation time constant from facilitation |
| 42 | + e = 0 (mV) : AMPA and NMDA reversal potential |
| 43 | + mg = 1 (mM) : Initial concentration of mg2+ |
| 44 | + mggate |
| 45 | + gmax = .001 (uS) : Weight conversion factor (from nS to uS) |
| 46 | + u0 = 0 : Initial value of u, which is the running value of Use |
| 47 | + NMDA_ratio = 1.22 (1) : The peak ratio of NMDA to AMPA (from Myme et al. 2003) |
| 48 | + synapseID = 0 |
| 49 | + verboseLevel = 0 |
| 50 | +} |
| 51 | + |
| 52 | + |
| 53 | +ASSIGNED { |
| 54 | + v (mV) |
| 55 | + i (nA) |
| 56 | + i_AMPA (nA) |
| 57 | + i_NMDA (nA) |
| 58 | + g_AMPA (uS) |
| 59 | + g_NMDA (uS) |
| 60 | + g (uS) |
| 61 | + factor_AMPA |
| 62 | + factor_NMDA |
| 63 | +} |
| 64 | + |
| 65 | +STATE { |
| 66 | + A_AMPA : AMPA state variable to construct the dual-exponential profile - decays with conductance tau_r_AMPA |
| 67 | + B_AMPA : AMPA state variable to construct the dual-exponential profile - decays with conductance tau_d_AMPA |
| 68 | + A_NMDA : NMDA state variable to construct the dual-exponential profile - decays with conductance tau_r_NMDA |
| 69 | + B_NMDA : NMDA state variable to construct the dual-exponential profile - decays with conductance tau_d_NMDA |
| 70 | +} |
| 71 | + |
| 72 | + |
| 73 | +INITIAL{ |
| 74 | + LOCAL tp_AMPA, tp_NMDA |
| 75 | + |
| 76 | + A_AMPA = 0 |
| 77 | + B_AMPA = 0 |
| 78 | + |
| 79 | + A_NMDA = 0 |
| 80 | + B_NMDA = 0 |
| 81 | + |
| 82 | + tp_AMPA = (tau_r_AMPA*tau_d_AMPA)/(tau_d_AMPA-tau_r_AMPA)*log(tau_d_AMPA/tau_r_AMPA) :time to peak of the conductance |
| 83 | + tp_NMDA = (tau_r_NMDA*tau_d_NMDA)/(tau_d_NMDA-tau_r_NMDA)*log(tau_d_NMDA/tau_r_NMDA) :time to peak of the conductance |
| 84 | + |
| 85 | + factor_AMPA = -exp(-tp_AMPA/tau_r_AMPA)+exp(-tp_AMPA/tau_d_AMPA) :AMPA Normalization factor - so that when t = tp_AMPA, gsyn = gpeak |
| 86 | + factor_AMPA = 1/factor_AMPA |
| 87 | + |
| 88 | + factor_NMDA = -exp(-tp_NMDA/tau_r_NMDA)+exp(-tp_NMDA/tau_d_NMDA) :NMDA Normalization factor - so that when t = tp_NMDA, gsyn = gpeak |
| 89 | + factor_NMDA = 1/factor_NMDA |
| 90 | +} |
| 91 | + |
| 92 | + |
| 93 | +BREAKPOINT { |
| 94 | + SOLVE state METHOD cnexp |
| 95 | + mggate = 1 / (1 + exp(0.062 (/mV) * -(v)) * (mg / 2.62 (mM))) :mggate kinetics - Jahr & Stevens 1990 (LJP corrected) |
| 96 | + g_AMPA = gmax*(B_AMPA-A_AMPA) :compute time varying conductance as the difference of state variables B_AMPA and A_AMPA |
| 97 | + g_NMDA = gmax*(B_NMDA-A_NMDA) * mggate :compute time varying conductance as the difference of state variables B_NMDA and A_NMDA and mggate kinetics |
| 98 | + g = g_AMPA + g_NMDA |
| 99 | + i_AMPA = g_AMPA*(v-e) :compute the AMPA driving force based on the time varying conductance, membrane potential, and AMPA reversal |
| 100 | + i_NMDA = g_NMDA*(v-e) :compute the NMDA driving force based on the time varying conductance, membrane potential, and NMDA reversal |
| 101 | + i = i_AMPA + i_NMDA |
| 102 | +} |
| 103 | + |
| 104 | + |
| 105 | +DERIVATIVE state{ |
| 106 | + A_AMPA' = -A_AMPA/tau_r_AMPA |
| 107 | + B_AMPA' = -B_AMPA/tau_d_AMPA |
| 108 | + A_NMDA' = -A_NMDA/tau_r_NMDA |
| 109 | + B_NMDA' = -B_NMDA/tau_d_NMDA |
| 110 | +} |
| 111 | + |
| 112 | + |
| 113 | +NET_RECEIVE (weight,weight_AMPA, weight_NMDA, R, Pr, u, tsyn (ms)){ |
| 114 | + LOCAL result |
| 115 | + weight_AMPA = weight |
| 116 | + weight_NMDA = weight * NMDA_ratio |
| 117 | + |
| 118 | + INITIAL{ |
| 119 | + R=1 |
| 120 | + u=u0 |
| 121 | + tsyn=t |
| 122 | + } |
| 123 | + |
| 124 | + : calc u at event- |
| 125 | + if (Fac > 0) { |
| 126 | + u = u*exp(-(t - tsyn)/Fac) :update facilitation variable if Fac>0 Eq. 2 in Fuhrmann et al. |
| 127 | + } else { |
| 128 | + u = Use |
| 129 | + } |
| 130 | + if(Fac > 0){ |
| 131 | + u = u + Use*(1-u) :update facilitation variable if Fac>0 Eq. 2 in Fuhrmann et al. |
| 132 | + } |
| 133 | + |
| 134 | + R = 1 - (1-R) * exp(-(t-tsyn)/Dep) :Probability R for a vesicle to be available for release, analogous to the pool of synaptic |
| 135 | + :resources available for release in the deterministic model. Eq. 3 in Fuhrmann et al. |
| 136 | + Pr = u * R :Pr is calculated as R * u (running value of Use) |
| 137 | + R = R - u * R :update R as per Eq. 3 in Fuhrmann et al. |
| 138 | + |
| 139 | + if( verboseLevel > 0 ) { |
| 140 | + printf("Synapse %f at time %g: R = %g Pr = %g erand = %g\n", synapseID, t, R, Pr, result ) |
| 141 | + } |
| 142 | + |
| 143 | + tsyn = t |
| 144 | + |
| 145 | + A_AMPA = A_AMPA + Pr*weight_AMPA*factor_AMPA |
| 146 | + B_AMPA = B_AMPA + Pr*weight_AMPA*factor_AMPA |
| 147 | + A_NMDA = A_NMDA + Pr*weight_NMDA*factor_NMDA |
| 148 | + B_NMDA = B_NMDA + Pr*weight_NMDA*factor_NMDA |
| 149 | + |
| 150 | + if( verboseLevel > 0 ) { |
| 151 | + printf( " vals %g %g %g %g\n", A_AMPA, weight_AMPA, factor_AMPA, weight ) |
| 152 | + } |
| 153 | +} |
| 154 | + |
| 155 | + |
| 156 | +FUNCTION toggleVerbose() { |
| 157 | + verboseLevel = 1-verboseLevel |
| 158 | +} |
0 commit comments