Changeset 29326 in project


Ignore:
Timestamp:
07/08/13 08:56:53 (8 years ago)
Author:
Ivan Raikov
Message:

nemo: added vclamp specification to CA3 example

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/nemo/trunk/examples/CA3/CA3_Hemond08.nemo

    r29311 r29326  
    88
    99(nemo-model CA3
    10 
    11   (
    12    (input v celsius)
    13 
    14    (const  F = 96485.3)
    15    (const  R = 8.313424)
    16    (const  KTOMV = .0853); (mV/degC)
    17 
    18    (const ek    = -90)   
    19    (const ena   = 55)   
    20    (const ki    = 0.001)
    21 
    22    (defun h2 (cai) (ki / (ki + cai)))
    23 
    24    (defun KTF (celsius)
    25      ((25.0 / 293.15) * (celsius + 273.15))
    26      )
    27    
    28    (defun efun (z)
    29      (if (abs (z) < 1e-4)
    30          then (1 - z / 2)
    31          else (z / (exp (z) - 1)))
    32      )
    33    
    34    (defun ghk  (v ci co celsius)
    35      (let ((f (KTF (celsius) / 2))
    36            (nu (v / f)))
    37        (neg (f) * (1.0 - (ci / co) * exp (nu)) * efun (nu))
    38        ))
    39 
    40    (component (type defaults)
    41       (const V_t = -35)
    42       (const celsius = 35.0)
    43       (output celsius V_t)
    44       )
    45 
    46 
    47    (component (type membrane-capacitance)
    48          (const cm = 1)
    49          (output cm  ))
    50 
    51 
    52    (component (type decaying-pool) (name ca)
    53 
    54       (input (ica from ion-currents))
    55 
    56               (const  d       = 0.1)
    57               (const  cao     = 2.0)
    58               (const  cai0    = 50e-6)
    59               (const  tau     = 100.0)
    60 
    61               (const irest    = 0)
    62 
    63               (d (ca) =  (((irest - ica) / (2 * F * d)) * 1e4 + ((cai0 - ca) / tau))
    64                          (initial cai0))
    65              
    66               (output ca cao)
    67               )
    68 
    69    
    70    (component (type ionic-current) (name CaGK )
    71 
    72       (input
    73        (cai from ion-pools))
    74              
    75       (component (type gate)
    76 
    77 
    78                  (const d1 = 0.84)
    79                  (const d2 = 1.0)
    80                  (const k1 = 0.48e-3)
    81                  (const k2 = 0.13e-6)
    82                  (const abar = 0.28)
    83                  (const bbar = 0.48)
    84 
    85                  ;; rate functions
    86                  (defun exp1 (k d v)
    87                    (k * exp ((-2e-3 * F * d * v) / R / (273.15 + celsius)))
    88                    )
    89 
    90                  (defun alpha_c (v c)
    91                    (c * abar / (c + exp1 (k1 d1 v))))
    92                  
    93                  (defun beta_c (v c)
    94                    (bbar / (1 + c / exp1 (k2 d2 v))))
    95 
    96                  (am  = (alpha_c (v cai)))
    97                  (mtau = (1 / (am + beta_c (v cai))))
    98                  (minf = (am * mtau))
    99              
    100                  (hh-ionic-gate
    101                   (CaGK  ;; ion name: exported variables will be of the form {ion}_{id}
    102                    (initial-m  (minf))
    103                    (m-power    1)
    104                    (h-power    0)
    105                    (m-inf      (minf))
    106                    (m-tau      (mtau))
    107                    ))
    108                  
    109                  )
    110      
    111       (component (type pore)
    112                  (const  gbar  = 0.01)
    113                  (output gbar ))
    114      
    115      
    116       (component (type permeating-ion) (name k)
    117                  (e = ek)
    118                  (output e ))
    119      
    120       (component (type modulating-ion) (name ca) )
    121      
    122       ) ;; end KCa current
    123 
    124    
    125    (component (type voltage-clamp) (name CaGK)
    126              
    127               (const vchold   = -71)
    128               (const vcbase   = -69)
    129               (const vcinc    = 10)
    130               (const vcsteps  = 8)
    131               (const vchdur   = 30)
    132               (const vcbdur   = 100)
    133              
    134               (output vchold vcbase vcinc vcsteps vchdur vcbdur)
    135               )
    136 
    137 
    138 
    139    (component (type ionic-current) (name CaL )
    140              
    141               (input
    142                (cai from ion-pools)
    143                (cao from ion-pools))
    144              
    145               (component (type gate)
    146                          
    147                          (const q10    = 5)
    148                          (const mmin   = 0.2)
    149                          (const tfa    = 1)
    150                          (const a0m    = 0.1)
    151                          (const zetam  = 2)
    152                          (const vhalfm = 4)
    153                          (const gmm    = 0.1)
    154                          
    155                          (defun alpha (v)
    156                            (15.69 * (neg (v) + 81.5) / (exp ((neg (v) + 81.5) / 10.0) - 1.0)))
    157                          
    158                          (defun beta (v)
    159                            (0.29 * exp (neg (v) / 10.86)))
    160                          
    161                          (defun alphamt (v)
    162                            (exp (0.0378 * zetam * (v - vhalfm)))
    163                            )
    164                          
    165                          (defun betamt (v)
    166                            (exp (0.0378 * zetam * gmm * (v - vhalfm))))
    167                          
    168                          (qt = (pow (q10 ~ ((celsius - 25) / 10))))
    169                          
    170                          (a    = (alpha (v)))
    171                          (b    = (1 / ((a + beta (v)))))
    172                          (minf = (a * b))
    173                          
    174                          (tau0  = (betamt (v) / (qt * a0m * (1 + alphamt (v)))))
    175                          (mtau  = (if (tau0 < mmin / qt) then (mmin / qt) else tau0))
    176                          
    177                          (hh-ionic-gate
    178                           (CaL  ;; ion name: exported variables will be of the form {ion}_{id}
    179                            (initial-m  (minf))
    180                            (m-power    2)
    181                            (h-power    0)
    182                            (m-inf      (minf))
    183                            (m-tau      (mtau))
    184                            ))
    185                          
    186                          )
    187              
    188              
    189               (component (type permeability)
    190                          
    191                          (const gcalbar = 0.003)
    192 
    193                          (p   = (gcalbar * ghk (v cai cao celsius) * h2 (cai)))
    194                          
    195                          (output p gcalbar)
    196                          )
    197              
    198              
    199               (component (type permeating-ion) (name ca)
    200                          )
    201              
    202               ) ;; end CaL current
    203    
    204 
    205    ;; N-type calcium current
    206    (component (type ionic-current) (name CaN )
    207 
    208       (input
    209        (cai from ion-pools)
    210        (cao from ion-pools))
    211 
    212       (component (type gate)
    213 
    214                  (const q10    = 5)
    215                  (const mmin   = 0.2)
    216                  (const hmin   = 3)
    217                  (const a0m    = 0.03)
    218                  (const zetam  = 2)
    219                  (const vhalfm = -14)
    220                  (const gmm    =  0.1)
    221 
    222                  (defun alpha_h (v)
    223                    (1.6e-4 * exp ( neg (v) / 48.4)))
    224 
    225                  (defun beta_h (v)
    226                    (1 / (exp ((neg (v) + 39.0) / 10.0) + 1.0)))
    227 
    228                  (defun alpha_m (v)
    229                    (0.1967 * (-1.0 * v + 19.88) / (exp((-1.0 * v + 19.88) / 10.0) - 1.0)))
    230 
    231                  (defun beta_m (v)
    232                    (0.046 * exp (neg (v) / 20.73)))
    233 
    234                  (defun alphamt (v)
    235                    (exp (0.0378 * zetam * (v - vhalfm))))
    236 
    237                  (defun betamt (v)
    238                    (exp (0.0378 * zetam * gmm * (v - vhalfm))))
    239 
    240 
    241                  (qt = (pow (q10 ~ ((celsius - 25) / 10))))
    242 
    243                  (am  = (alpha_m (v)))
    244                  (bm  = (1 / (am + beta_m (v))))
    245 
    246                  (minf = (am * bm))
    247                  (mtau = (let ((u (betamt (v) / (qt * a0m * (1 + alphamt (v))))))
    248                            (if (u < (mmin / qt)) then (mmin / qt) else u)))
    249                  
    250                  (ah = (alpha_h (v)))
    251                  (bh = (1 / (ah + beta_h (v))))
    252 
    253                  (hinf = (ah * bh))
    254                  ;; htau=b/qt
    255                  ;; if (htau < hmin) then hmin else htau
    256                  
    257                  (const htau = 80)
    258 
    259                  (hh-ionic-gate
    260                   (CaN  ;; ion name: exported variables will be of the form {ion}_{id}
    261                    (initial-m  (minf))
    262                    (initial-h  (hinf))
    263                    (m-power    2)
    264                    (h-power    1)
    265                    (m-inf      (minf))
    266                    (m-tau      (mtau))
    267                    (h-inf      (hinf))
    268                    (h-tau      (htau))
    269                    ))
    270 
    271                  )
    272 
    273       (component (type permeability)
    274                  
    275                  (const gcanbar = .0003)
    276                  (p = (gcanbar * ghk (v cai cao celsius) * h2 (cai)))
    277                  
    278                  (output p gcanbar)
    279                  )
    280              
    281              
    282       (component (type permeating-ion) (name ca)
    283                  )
    284 
    285       ) ;; end CaN current
    286 
    287 
    288       ;; T-type calcium current
    289       (component (type ionic-current) (name CaT )
    290                  
    291                  (input
    292                   (cai from ion-pools)
    293                   (cao from ion-pools))
    294                  
    295                  (component (type gate)
    296 
    297                             (const q10  = 5)
    298                             (const mmin = 0.2)
    299                             (const hmin = 10)
    300                             (const a0h  = 0.015)
    301                             (const zetah  = 3.5)
    302                             (const vhalfh = -75)
    303                             (const gmh    = 0.6)
    304                             (const a0m    = 0.04)
    305                             (const zetam  = 2)
    306                             (const vhalfm = -28)
    307                             (const gmm    = 0.1)
    308 
    309 
    310                             (defun alpha_h (v)
    311                               (exp (0.0378 * zetah * (v - vhalfh))))
    312 
    313                             (defun beta_h (v)
    314                               (exp (0.0378 * zetah * gmh * (v - vhalfh))))
    315                            
    316                             (defun alpha_mt (v)
    317                               (exp (0.0378 * zetam * (v - vhalfm))))
    318 
    319                             (defun beta_mt (v)
    320                               (exp (0.0378 * zetam * gmm * (v - vhalfm))))
    321 
    322                             (qt = (pow (q10 ~ ((celsius - 25) / 10))))
    323 
    324                             (am = (0.2 * (-1.0 * v + 19.26) / (exp ((-1.0 * v + 19.26) / 10.0) - 1.0)))
    325                             (bm = (0.009 * exp (neg (v) / 22.03)))
    326                            
    327                             (minf = (am / (am + bm)))
    328                             (mtau = (let ((u (beta_mt(v) / (qt * a0m * (1 + alpha_mt (v))))))
    329                                       if (u < mmin) then mmin else u))
    330 
    331 
    332                             (ah = (1e-6 * exp (neg (v) / 16.26)))
    333                             (bh = (1 / (exp ((neg (v) + 29.79) / 10.) + 1.)))
    334 
    335                             (hinf = (ah / (ah + bh)))
    336                             (htau = (let ((u (beta_h (v) / (a0h * (1 + alpha_h (v))))))
    337                                       (if (u < hmin) then hmin else u)))
    338 
    339 
    340                             (hh-ionic-gate
    341                              (CaT  ;; ion name: exported variables will be of the form {ion}_{id}
    342                               (initial-m  (minf))
    343                               (initial-h  (hinf))
    344                               (m-power    2)
    345                               (h-power    1)
    346                               (m-inf      (minf))
    347                               (m-tau      (mtau))
    348                               (h-inf      (hinf))
    349                               (h-tau      (htau))
    350                               ))
    351 
    352                             )
    353 
    354                  
    355                  (component (type permeability)
    356                            
    357                             (const gcatbar = 0.003)
    358                            
    359                             (p = (gcatbar * ghk (v cai cao celsius) * h2 (cai)))
    360                            
    361                             (output p gcatbar)
    362                             )
    363              
    364                  
    365                  (component (type permeating-ion) (name ca)
    366                             )
    367                  
    368                  ) ;; end CaT current
    369 
    370      
    371       ;; I-h channel from Magee 1998 for distal dendrites
    372 
    373       (component (type ionic-current) (name Ih )
    374 
    375                  (component (type gate)
    376                            
    377                             (const vhalfl = -73)
    378                             (const kl     = -8)
    379                             (const vhalft = -75)
    380                             (const a0t    = 0.011)
    381                             (const zetat  = 2.2)
    382                             (const gmt    = 0.4)
    383                             (const q10    = 4.5)
    384                             (const qtl    = 1)
    385 
    386                             (defun alpha_t (v)
    387                               (exp (0.0378 * zetat * (v - vhalft))))
    388 
    389                             (defun beta_t (v)
    390                               (exp (0.0378 * zetat * gmt * (v - vhalft))))
    391 
    392                             (qt = (pow (q10 ~ ((celsius - 33) / 10))))
    393                            
    394                             (a    = (alpha_t (v)))
    395                             (linf = (1 / (1 + exp (neg (v - vhalfl) / kl))))
    396                             (ltau = (beta_t (v) / (qtl * qt * a0t * (1 + a))))
    397 
    398                             (hh-ionic-gate
    399                              (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
    400                               (initial-m (linf))
    401                               (m-power   1)
    402                               (h-power   0)
    403                               (m-inf     (linf))
    404                               (m-tau     (ltau))))
    405                             )
    406 
    407 
    408               (component (type pore)
    409                          (const ghdbar = .0001)
    410                          (output ghdbar))
    411 
    412              
    413               (component (type permeating-ion) (name non-specific)
    414                          (const ehd = -30)
    415                          (output ehd))
    416              
    417               ;; end Ih current
    418               )
    419 
    420 
    421       ;; Borg-Graham type generic K-AHP channel
    422      
    423       (component (type ionic-current) (name KAHP )
    424                  
    425                  (input
    426                   (cai from ion-pools))
    427                  
    428                  (component (type gate)
    429                            
    430                            
    431                             (const a0 = 1e8) ;; (/ms-mM-mM-mM-mM)
    432                             (const b0 = .5e-2) ;;  (/ms)
    433 
    434                             (const q10 = 3)
    435                            
    436                             (defun alpha (cai)
    437                               (a0 * pow (cai ~ 4)))
    438                            
    439                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    440                            
    441                             (a    = (alpha (cai)))
    442                             (atau = (1 / (qt * (a + b0))))
    443                             (ainf = (a * atau * qt))
    444                            
    445                             (hh-ionic-gate
    446                              (KAHP  ;; ion name: exported variables will be of the form {ion}_{id}
    447                               (initial-m  (ainf))
    448                               (m-power    1)
    449                               (h-power    0)
    450                               (m-inf      (ainf))
    451                               (m-tau      (atau))
    452                               ))
    453                            
    454                             )
    455                  
    456                  (component (type pore)
    457                             (const  gbar  = 0.003)
    458                             (output gbar ))
    459                  
    460                  
    461                  (component (type permeating-ion) (name k)
    462                             (e = ek)
    463                             (output e ))
    464                  
    465                  (component (type modulating-ion) (name ca) )
    466                  
    467                  ) ;; end KAHP current
    468 
    469 
    470 
    471       ;; K-A channel from Klee Ficker and Heinemann
    472       ;; modified to account for Dax A Current --- M.Migliore Jun 1997
    473       ;; modified to be used with cvode  M.Migliore 2001
    474 
    475       (component (type ionic-current) (name KA )
    476 
    477                  
    478                  (component (type gate)
    479 
    480                             (const sh = 24)
    481 
    482                             (const vhalfn = 11)
    483                             (const vhalfl = -56)
    484                             (const a0l    = 0.05)
    485                             (const a0n    = 0.05)
    486                             (const zetan  = -1.5)
    487                             (const zetal  = 3)
    488                             (const gmn    = 0.55)
    489                             (const gml    = 1)
    490                             (const lmin   = 2)
    491                             (const nmin   = 0.1)
    492                             (const pw     = -1)
    493                             (const tq     = -40)
    494                             (const qq     = 5)
    495                             (const q10    = 5)
    496                             (const qtl    = 1)
    497 
    498 
    499                             (defun alpha_n (v)
    500                               (let ((zeta (zetan + pw / (1 + exp ( (v - tq - sh) / qq)))))
    501                                 (exp (1e-3 * zeta * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius))))))
    502 
    503                             (defun beta_n (v)
    504                               (let ((zeta (zetan + pw / (1 + exp((v - tq - sh) / qq)))))
    505                                 (exp (1e-3 * zeta * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius))))))
    506 
    507 
    508                             (defun alpha_l (v)
    509                               (exp (1e-3 * zetal * (v - vhalfl - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    510 
    511                             (defun beta_l (v)
    512                               (exp (1e-3 * zetal * gml * (v - vhalfl - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    513 
    514                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    515 
    516                             (an   = (alpha_n (v)))
    517                             (ninf = (1 / (1 + an)))
    518                             (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + an)))))
    519                                       (if (u < nmin) then nmin else u)))
    520 
    521                             (a_l  = (alpha_l (v)))
    522                             (linf = (1 / (1 + a_l)))
    523                             (ltau = (let ((u (0.26 * (v + 50 - sh) / qtl)))
    524                                       (if (u < (lmin / qtl)) then  (lmin / qtl) else u)))
    525                            
    526 
    527                             (hh-ionic-gate
    528                              (KA  ;; ion name: exported variables will be of the form {ion}_{id}
    529                               (initial-m  (ninf))
    530                               (initial-h  (linf))
    531                               (m-power    1)
    532                               (h-power    1)
    533                               (m-inf      (ninf))
    534                               (m-tau      (ntau))
    535                               (h-inf      (linf))
    536                               (h-tau      (ltau))
    537                               ))
    538                            
    539                             )
    540                  
    541                  (component (type pore)
    542                             (const  gbar  = 0.008)
    543                             (output gbar ))
    544                  
    545                  
    546                  (component (type permeating-ion) (name k)
    547                             (e = ek)
    548                             (output e ))
    549                  
    550                  
    551                  ) ;; end KA current
    552 
    553 
    554 
    555       (component (type ionic-current) (name KD )
    556 
    557                  
    558                  (component (type gate)
    559 
    560                             (const sh = 0)
    561 
    562                             (const vhalfn = -33)
    563                             (const a0n    = 0.01)
    564                             (const zetan  = 3)
    565                             (const gmn    = 0.7)
    566                             (const nmax   = 2)
    567                             (const q10    = 1)
    568 
    569                             (defun alpha_n (v)
    570                               (exp (1e-3 * zetan * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    571 
    572                             (defun beta_n (v)
    573                               (exp (1e-3 * zetan * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    574 
    575                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    576 
    577                             (a    = (alpha_n (v)))
    578                             (ninf = (1 / (1 + a)))
    579                             (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + a)))))
    580                                       (if (u < nmax) then  (nmax / qt) else u)))
    581 
    582 
    583                             (hh-ionic-gate
    584                              (KD  ;; ion name: exported variables will be of the form {ion}_{id}
    585                               (initial-m  (ninf))
    586                               (m-power    1)
    587                               (h-power    0)
    588                               (m-inf      (ninf))
    589                               (m-tau      (ntau))
    590                               ))
    591                            
    592                             )
    593                  
    594                  (component (type pore)
    595                             (const  gbar  = 0.0)
    596                             (output gbar ))
    597                  
    598                  
    599                  (component (type permeating-ion) (name k)
    600                             (e = ek)
    601                             (output e ))
    602                  
    603                  
    604                  ) ;; end KD current
    605      
    606 
    607 
    608       ;; K-DR channel from Klee Ficker and Heinemann modified to account for Dax et al.
    609       (component (type ionic-current) (name KDR )
    610 
    611                  
    612                  (component (type gate)
    613 
    614                             (const sh = 24)
    615 
    616                             (const vhalfn = 13)
    617                             (const a0n    = 0.02)
    618                             (const zetan  = -3)
    619                             (const gmn    = 0.7)
    620                             (const nmax   = 2)
    621                             (const q10    = 1)
    622 
    623                             (defun alpha_n (v)
    624                               (exp (1e-3 * zetan * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    625 
    626                             (defun beta_n (v)
    627                               (exp (1e-3 * zetan * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    628 
    629                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    630 
    631                             (a    = (alpha_n (v)))
    632                             (ninf = (1 / (1 + a)))
    633                             (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + a)))))
    634                                       (if (u < nmax) then  (nmax / qt) else u)))
    635 
    636 
    637                             (hh-ionic-gate
    638                              (KDR  ;; ion name: exported variables will be of the form {ion}_{id}
    639                               (initial-m  (ninf))
    640                               (m-power    1)
    641                               (h-power    0)
    642                               (m-inf      (ninf))
    643                               (m-tau      (ntau))
    644                               ))
    645                            
    646                             )
    647                  
    648                  (component (type pore)
    649                             (const  gbar  = 0.003)
    650                             (output gbar ))
    651                  
    652                  
    653                  (component (type permeating-ion) (name k)
    654                             (e = ek)
    655                             (output e ))
    656                  
    657                  
    658                  ) ;; end KD current
    659      
    660      
    661      
    662       ;; KM channel from Magee 1998 for distal dendrites
    663 
    664       (component (type ionic-current) (name KM )
    665 
    666                  (component (type gate)
    667                            
    668                             (const sh = 24)
    669 
    670                             (const vhalfl = -40)
    671                             (const kl     = -10)
    672                             (const vhalft = -42)
    673                             (const a0t    = 0.003)
    674                             (const zetat  = 7)
    675                             (const gmt    = 0.4)
    676                             (const q10    = 5)
    677                             (const b0     = 60)
    678 
    679                             (defun alpha_t (v)
    680                               (exp (0.0378 * zetat * (v - vhalft - sh))))
    681 
    682                             (defun beta_t (v)
    683                               (exp (0.0378 * zetat * gmt * (v - vhalft - sh))))
    684 
    685                             (qt = (pow (q10 ~ ((celsius - 35) / 10))))
    686 
    687                             (inf = (1 / (1 + exp ((v - vhalfl - sh) / kl))))
    688                             (a   = (alpha_t (v)))
    689                             (tau = (b0 + beta_t(v) / (a0t * (1 + a))))
    690 
    691                             (hh-ionic-gate
    692                              (KM  ;; ion name: exported variables will be of the form {ion}_{id}
    693                               (initial-m (inf))
    694                               (m-power   1)
    695                               (h-power   0)
    696                               (m-inf     (inf))
    697                               (m-tau     (tau))))
    698 
    699                             )
    700 
    701 
    702               (component (type pore)
    703                          (const gbar = .0001)
    704                          (output gbar))
    705 
    706              
    707               (component (type permeating-ion) (name k)
    708                          (const e = ek)
    709                          (output e))
    710              
    711               ;; end KM current
    712               )
    713 
    714 
    715       ;; Na current for axon. No slow inact.
    716       (component (type ionic-current) (name Nax )
    717 
    718                  (component (type gate)
    719                            
    720                             (const sh   = 8)
    721 
    722                             (const tha  = -30)
    723                             (const qa   = 7.2)
    724                             (const Ra   = 0.4)
    725                             (const Rb   = 0.124)
    726 
    727                             (const thi1  = -45)
    728                             (const thi2  = -45)
    729                             (const qd    = 1.5)
    730                             (const qg    = 1.5)
    731                             (const mmin  = 0.02)
    732                             (const hmin  = 0.5)
    733                             (const q10   = 2)
    734 
    735                             (const  Rg   = 0.01)
    736                             (const  Rd   = .03)
    737 
    738                             (const  thinf  = -50)
    739                             (const  qinf  = 4)
    740 
    741 
    742                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    743 
    744 
    745                             (defun trap0 (v th a q)
    746                               (if (abs (v - th) > 1e-6)
    747                                   then (a * (v - th) / (1 - exp (neg (v - th) / q)))
    748                                   else (a * q)))
    749 
    750                             (am = (trap0 (v ~ (tha + sh) ~ Ra ~ qa)))
    751                             (bm = (trap0 ((neg (v)) ~ (neg (tha) - sh) ~ Rb ~ qa)))
    752 
    753                             (mtau = (let ((u (1 / ((am + bm) / qt))))
    754                                       (if (u < mmin) then mmin else u)))
    755                             (minf = (am / (am + bm)))
    756 
    757                             (ah = (trap0 (v ~ (thi1 + sh) ~ Rd ~ qd)))
    758                             (bh = (trap0 ((neg (v)) ~ (neg (thi2) - sh) ~ Rg qg)))
    759 
    760                             (htau =  (let ((u (1 / (ah + bh) / qt)))
    761                                        (if (u < hmin) then hmin else u)))
    762                             (hinf = (1 / (1 + exp ((v - thinf - sh) / qinf))))
    763 
    764 
    765                             (hh-ionic-gate
    766                              (Nax  ;; ion name: exported variables will be of the form {ion}_{id}
    767                               (initial-m (minf))
    768                               (initial-h (hinf))
    769                               (m-power   3)
    770                               (h-power   1)
    771                               (m-inf     (minf))
    772                               (m-tau     (mtau))
    773                               (h-inf     (hinf))
    774                               (h-tau     (htau))
    775                               ))
    776 
    777                             )
    778 
    779 
    780               (component (type pore)
    781                          (const gbar = 0.01)
    782                          (output gbar))
    783 
    784              
    785               (component (type permeating-ion) (name na)
    786                          (const e = ena)
    787                          (output e))
    788              
    789               ;; end Nax current
    790               )
    791 
    792 
    793 
    794       ;; Na current
    795       (component (type ionic-current) (name Na )
    796 
    797                  (component (type gate)
    798                            
    799 
    800                             (const sh = 24)
    801 
    802                             (const tha  =  -30)
    803                             (const  qa  = 7.2) ;; act slope (4.5)
    804                             (const  Ra  = 0.4)
    805                             (const  Rb  = 0.124)
    806 
    807                             (const thi1  = -45)
    808                             (const thi2  = -45)
    809                             (const qd    = 1.5) ;; inact tau slope
    810                             (const qg    = 1.5)
    811                             (const mmin  = 0.02)
    812                             (const hmin  = 0.5)
    813                            
    814                             (const q10   = 2)
    815 
    816                             (const Rg    = 0.01) ;; inact recov (v)
    817                             (const Rd    = .03)  ;; inact (v)   
    818                             (const qq    = 10)
    819                             (const tq    = -55)
    820 
    821                             (const thinf  = -50) ;; inact inf slope     
    822                             (const qinf   = 4) ;;  inact inf slope
    823 
    824                             (const vhalfs = -60) ;; slow inact.
    825                             (const a0s    = 0.0003) ;; a0s=b0s
    826                             (const zetas  = 12)
    827                             (const gms    = 0.2)
    828                             (const smax   = 10)
    829                             (const vvh    = -58)
    830                             (const vvs    = 2)
    831                             (const ar     = 1)
    832 
    833                             (defun alpha_v (v)
    834                               (1 / (1 + exp ((v - vvh - sh) / vvs))))
    835        
    836                             (defun alpha_s (v)
    837                               (exp (1e-3 * zetas * (v - vhalfs - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    838 
    839                             (defun beta_s (v)
    840                               (exp (1e-3 * zetas * gms * (v - vhalfs - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
    841 
    842                             (qt = (pow (q10 ~ ((celsius - 24) / 10))))
    843 
    844                             (defun trap0 (v th a q)
    845                               (if (abs (v - th) > 1e-6)
    846                                   then (a * (v - th) / (1 - exp (neg (v - th) / q)))
    847                                   else (a * q)))
    848 
    849                             (am = (trap0 (v ~ (tha + sh) ~ Ra ~ qa)))
    850                             (bm = (trap0 ((neg (v)) ~ (neg (tha) - sh) ~ Rb ~ qa)))
    851 
    852                             (mtau = (let ((u (1 / (am + bm) / qt)))
    853                                       (if (u < mmin) then mmin else u)))
    854 
    855                             (minf = (am / (am + bm)))
    856 
    857                             (ah = (trap0 (v ~ (thi1 + sh) ~ Rd ~ qd)))
    858                             (bh = (trap0 ((neg (v)) ~ (neg (thi2) - sh) ~ Rg ~ qg)))
    859 
    860                             (htau =  (let ((u (1 / (ah + bh) / qt)))
    861                                        (if (u < hmin) then hmin else u)))
    862 
    863                             (hinf = (1 / (1 + exp ((v - thinf - sh) / qinf))))
    864 
    865                             (c    = (alpha_v (v)))
    866                             (sinf = (c + ar * (1 - c)))
    867                             (stau = (let ((u (beta_s (v) / (a0s * (1 + alpha_s (v))))))
    868                                       (if (u < smax) then smax else u)))
    869 
    870                            
    871                             (hh-ionic-gate
    872                              (Na  ;; ion name: exported variables will be of the form {ion}_{id}
    873                               (initial-m  (minf))
    874                               (initial-h  (hinf))
    875                               (m-power    3)
    876                               (h-power    1)
    877                               (m-inf      (minf))
    878                               (m-tau      (mtau))
    879                               (h-inf      (hinf))
    880                               (h-tau      (htau))
    881                               ))
    882                            
    883 
    884                             (d (s) = ((sinf - s) / stau) (initial sinf))
    885                            
    886                             (output s)
    887                            
    888                             )
    889 
    890 
    891               (component (type pore)
    892                          (const gbar = .01)
    893                          (output gbar))
    894 
    895              
    896               (component (type permeating-ion) (name na)
    897                          (const e = ena)
    898                          (output e))
    899              
    900               ;; end Na current
    901               )
     10           
     11            (
     12             (input v celsius)
     13             
     14             (const  F = 96485.3)
     15             (const  R = 8.313424)
     16             (const  KTOMV = .0853); (mV/degC)
     17             
     18             (const ek    = -90)   
     19             (const ena   = 55)   
     20             (const ki    = 0.001)
     21             
     22             (defun h2 (cai) (ki / (ki + cai)))
     23             
     24             (defun KTF (celsius)
     25               ((25.0 / 293.15) * (celsius + 273.15))
     26               )
     27             
     28             (defun efun (z)
     29               (if (abs (z) < 1e-4)
     30                   then (1 - z / 2)
     31                   else (z / (exp (z) - 1)))
     32               )
     33             
     34
     35             (defun ghk  (v ci co celsius)
     36               (let ((f (KTF (celsius) / 2))
     37                     (nu (v / f)))
     38                 (neg (f) * (1.0 - (ci / co) * exp (nu)) * efun (nu))
     39                 ))
     40             
     41             (component (type defaults)
     42                        (const V_t = -35)
     43                        (const celsius = 35.0)
     44                        (output celsius V_t)
     45                        )
     46             
     47             
     48             (component (type membrane-capacitance)
     49                        (const cm = 1)
     50                        (output cm  ))
     51             
     52             
     53             (component (type decaying-pool) (name ca)
     54                       
     55                        (input (ica from ion-currents))
     56                       
     57                        (const  d       = 0.1)
     58                        (const  cao     = 2.0)
     59                        (const  cai0    = 50e-6)
     60                        (const  tau     = 100.0)
     61                       
     62                        (const irest    = 0)
     63                       
     64                        (d (ca) =  (((irest - ica) / (2 * F * d)) * 1e4 + ((cai0 - ca) / tau))
     65                           (initial cai0))
     66                       
     67                        (output ca cao)
     68                        )
     69             
     70             
     71             (component (type ionic-current) (name CaGK )
     72                       
     73                        (input
     74                         (cai from ion-pools))
     75                       
     76                        (component (type gate)
     77                                   
     78                                   
     79                                   (const d1 = 0.84)
     80                                   (const d2 = 1.0)
     81                                   (const k1 = 0.48e-3)
     82                                   (const k2 = 0.13e-6)
     83                                   (const abar = 0.28)
     84                                   (const bbar = 0.48)
     85                                   
     86                                   ;; rate functions
     87                                   (defun exp1 (k d v)
     88                                     (k * exp ((-2e-3 * F * d * v) / R / (273.15 + celsius)))
     89                                     )
     90                                   
     91                                   (defun alpha_c (v c)
     92                                     (c * abar / (c + exp1 (k1 d1 v))))
     93                                   
     94                                   (defun beta_c (v c)
     95                                     (bbar / (1 + c / exp1 (k2 d2 v))))
     96                                   
     97                                   (am  = (alpha_c (v cai)))
     98                                   (mtau = (1 / (am + beta_c (v cai))))
     99                                   (minf = (am * mtau))
     100                                   
     101                                   (hh-ionic-gate
     102                                    (CaGK  ;; ion name: exported variables will be of the form {ion}_{id}
     103                                     (initial-m  (minf))
     104                                     (m-power    1)
     105                                     (h-power    0)
     106                                     (m-inf      (minf))
     107                                     (m-tau      (mtau))
     108                                     ))
     109                                   
     110                                   )
     111                       
     112                        (component (type pore)
     113                                   (const  gbar  = 0.01)
     114                                   (output gbar ))
     115                       
     116                       
     117                        (component (type permeating-ion) (name k)
     118                                   (e = ek)
     119                                   (output e ))
     120                       
     121                        (component (type modulating-ion) (name ca) )
     122                       
     123                        ) ;; end KCa current
     124
     125             
     126             (component (type voltage-clamp) (name CaGK)
     127                       
     128                        (const vchold   = -71)
     129                        (const vcbase   = -69)
     130                        (const vcinc    = 10)
     131                        (const vcsteps  = 8)
     132                        (const vchdur   = 30)
     133                        (const vcbdur   = 100)
     134                       
     135                        (const cnhold   = 5e-5)
     136                        (const cnbase   = 5e-5)
     137                        (const cninc    = 1e3)
     138                        (const cnsteps  = 1)
     139                        (const cnout    = 2)
     140                       
     141                        (output vchold vcbase vcinc vcsteps vchdur vcbdur
     142                                cnhold cnbase cninc cnsteps cnout)
     143                        )
     144
     145
     146
     147             (component (type ionic-current) (name CaL )
     148                       
     149                        (input
     150                         (cai from ion-pools)
     151                         (cao from ion-pools))
     152                       
     153                        (component (type gate)
     154                                   
     155                                   (const q10    = 5)
     156                                   (const mmin   = 0.2)
     157                                   (const tfa    = 1)
     158                                   (const a0m    = 0.1)
     159                                   (const zetam  = 2)
     160                                   (const vhalfm = 4)
     161                                   (const gmm    = 0.1)
     162                                   
     163                                   (defun alpha (v)
     164                                     (15.69 * (neg (v) + 81.5) / (exp ((neg (v) + 81.5) / 10.0) - 1.0)))
     165                                   
     166                                   (defun beta (v)
     167                                     (0.29 * exp (neg (v) / 10.86)))
     168                                   
     169                                   (defun alphamt (v)
     170                                     (exp (0.0378 * zetam * (v - vhalfm)))
     171                                     )
     172                                   
     173                                   (defun betamt (v)
     174                                     (exp (0.0378 * zetam * gmm * (v - vhalfm))))
     175                                   
     176                                   (qt = (pow (q10 ~ ((celsius - 25) / 10))))
     177                                   
     178                                   (a    = (alpha (v)))
     179                                   (b    = (1 / ((a + beta (v)))))
     180                                   (minf = (a * b))
     181                                   
     182                                   (tau0  = (betamt (v) / (qt * a0m * (1 + alphamt (v)))))
     183                                   (mtau  = (if (tau0 < mmin / qt) then (mmin / qt) else tau0))
     184                                   
     185                                   (hh-ionic-gate
     186                                    (CaL  ;; ion name: exported variables will be of the form {ion}_{id}
     187                                     (initial-m  (minf))
     188                                     (m-power    2)
     189                                     (h-power    0)
     190                                     (m-inf      (minf))
     191                                     (m-tau      (mtau))
     192                                     ))
     193                                   
     194                                   )
     195                       
     196                       
     197                        (component (type permeability)
     198                                   
     199                                   (const gcalbar = 0.003)
     200
     201                                   (p   = (gcalbar * ghk (v cai cao celsius) * h2 (cai)))
     202                                   
     203                                   (output p gcalbar)
     204                                   )
     205                       
     206                       
     207                        (component (type permeating-ion) (name ca)
     208                                   )
     209                       
     210                        ) ;; end CaL current
     211
     212
     213
     214             (component (type voltage-clamp) (name CaL)
     215                       
     216                        (const vchold   = -71)
     217                        (const vcbase   = -69)
     218                        (const vcinc    = 10)
     219                        (const vcsteps  = 8)
     220                        (const vchdur   = 30)
     221                        (const vcbdur   = 100)
     222                       
     223                        (component (type default-concentration) (name ca)
     224                                   (const cn       = 5e-5)
     225                                   (const cnout    = 2)
     226                                   (output cn cnout))
     227                       
     228                        (output vchold vcbase vcinc vcsteps vchdur vcbdur )
     229
     230                        )
     231
     232
     233             ;; N-type calcium current
     234             (component (type ionic-current) (name CaN )
     235
     236                        (input
     237                         (cai from ion-pools)
     238                         (cao from ion-pools))
     239
     240                        (component (type gate)
     241
     242                                   (const q10    = 5)
     243                                   (const mmin   = 0.2)
     244                                   (const hmin   = 3)
     245                                   (const a0m    = 0.03)
     246                                   (const zetam  = 2)
     247                                   (const vhalfm = -14)
     248                                   (const gmm    =  0.1)
     249
     250                                   (defun alpha_h (v)
     251                                     (1.6e-4 * exp ( neg (v) / 48.4)))
     252
     253                                   (defun beta_h (v)
     254                                     (1 / (exp ((neg (v) + 39.0) / 10.0) + 1.0)))
     255
     256                                   (defun alpha_m (v)
     257                                     (0.1967 * (-1.0 * v + 19.88) / (exp((-1.0 * v + 19.88) / 10.0) - 1.0)))
     258
     259                                   (defun beta_m (v)
     260                                     (0.046 * exp (neg (v) / 20.73)))
     261
     262                                   (defun alphamt (v)
     263                                     (exp (0.0378 * zetam * (v - vhalfm))))
     264
     265                                   (defun betamt (v)
     266                                     (exp (0.0378 * zetam * gmm * (v - vhalfm))))
     267
     268
     269                                   (qt = (pow (q10 ~ ((celsius - 25) / 10))))
     270
     271                                   (am  = (alpha_m (v)))
     272                                   (bm  = (1 / (am + beta_m (v))))
     273
     274                                   (minf = (am * bm))
     275                                   (mtau = (let ((u (betamt (v) / (qt * a0m * (1 + alphamt (v))))))
     276                                             (if (u < (mmin / qt)) then (mmin / qt) else u)))
     277                                   
     278                                   (ah = (alpha_h (v)))
     279                                   (bh = (1 / (ah + beta_h (v))))
     280
     281                                   (hinf = (ah * bh))
     282                                   ;; htau=b/qt
     283                                   ;; if (htau < hmin) then hmin else htau
     284                                   
     285                                   (const htau = 80)
     286
     287                                   (hh-ionic-gate
     288                                    (CaN  ;; ion name: exported variables will be of the form {ion}_{id}
     289                                     (initial-m  (minf))
     290                                     (initial-h  (hinf))
     291                                     (m-power    2)
     292                                     (h-power    1)
     293                                     (m-inf      (minf))
     294                                     (m-tau      (mtau))
     295                                     (h-inf      (hinf))
     296                                     (h-tau      (htau))
     297                                     ))
     298
     299                                   )
     300
     301                        (component (type permeability)
     302                                   
     303                                   (const gcanbar = .0003)
     304                                   (p = (gcanbar * ghk (v cai cao celsius) * h2 (cai)))
     305                                   
     306                                   (output p gcanbar)
     307                                   )
     308                       
     309                       
     310                        (component (type permeating-ion) (name ca)
     311                                   )
     312
     313                        ) ;; end CaN current
     314
     315
     316             (component (type voltage-clamp) (name CaN)
     317                       
     318                        (const vchold   = -71)
     319                        (const vcbase   = -69)
     320                        (const vcinc    = 10)
     321                        (const vcsteps  = 8)
     322                        (const vchdur   = 30)
     323                        (const vcbdur   = 100)
     324                       
     325                        (component (type default-concentration) (name ca)
     326                                   (const cn       = 5e-5)
     327                                   (const cnout    = 2)
     328                                   (output cn cnout))
     329                       
     330                        (output vchold vcbase vcinc vcsteps vchdur vcbdur )
     331
     332                        )
     333
     334             ;; T-type calcium current
     335             (component (type ionic-current) (name CaT )
     336                       
     337                        (input
     338                         (cai from ion-pools)
     339                         (cao from ion-pools))
     340                       
     341                        (component (type gate)
     342
     343                                   (const q10  = 5)
     344                                   (const mmin = 0.2)
     345                                   (const hmin = 10)
     346                                   (const a0h  = 0.015)
     347                                   (const zetah  = 3.5)
     348                                   (const vhalfh = -75)
     349                                   (const gmh    = 0.6)
     350                                   (const a0m    = 0.04)
     351                                   (const zetam  = 2)
     352                                   (const vhalfm = -28)
     353                                   (const gmm    = 0.1)
     354
     355
     356                                   (defun alpha_h (v)
     357                                     (exp (0.0378 * zetah * (v - vhalfh))))
     358
     359                                   (defun beta_h (v)
     360                                     (exp (0.0378 * zetah * gmh * (v - vhalfh))))
     361                                   
     362                                   (defun alpha_mt (v)
     363                                     (exp (0.0378 * zetam * (v - vhalfm))))
     364
     365                                   (defun beta_mt (v)
     366                                     (exp (0.0378 * zetam * gmm * (v - vhalfm))))
     367
     368                                   (qt = (pow (q10 ~ ((celsius - 25) / 10))))
     369
     370                                   (am = (0.2 * (-1.0 * v + 19.26) / (exp ((-1.0 * v + 19.26) / 10.0) - 1.0)))
     371                                   (bm = (0.009 * exp (neg (v) / 22.03)))
     372                                   
     373                                   (minf = (am / (am + bm)))
     374                                   (mtau = (let ((u (beta_mt(v) / (qt * a0m * (1 + alpha_mt (v))))))
     375                                             if (u < mmin) then mmin else u))
     376
     377
     378                                   (ah = (1e-6 * exp (neg (v) / 16.26)))
     379                                   (bh = (1 / (exp ((neg (v) + 29.79) / 10.) + 1.)))
     380
     381                                   (hinf = (ah / (ah + bh)))
     382                                   (htau = (let ((u (beta_h (v) / (a0h * (1 + alpha_h (v))))))
     383                                             (if (u < hmin) then hmin else u)))
     384
     385
     386                                   (hh-ionic-gate
     387                                    (CaT  ;; ion name: exported variables will be of the form {ion}_{id}
     388                                     (initial-m  (minf))
     389                                     (initial-h  (hinf))
     390                                     (m-power    2)
     391                                     (h-power    1)
     392                                     (m-inf      (minf))
     393                                     (m-tau      (mtau))
     394                                     (h-inf      (hinf))
     395                                     (h-tau      (htau))
     396                                     ))
     397
     398                                   )
     399
     400                       
     401                        (component (type permeability)
     402                                   
     403                                   (const gcatbar = 0.003)
     404                                   
     405                                   (p = (gcatbar * ghk (v cai cao celsius) * h2 (cai)))
     406                                   
     407                                   (output p gcatbar)
     408                                   )
     409                       
     410                       
     411                        (component (type permeating-ion) (name ca)
     412                                   )
     413                       
     414                        ) ;; end CaT current
     415
     416             (component (type voltage-clamp) (name CaT)
     417                       
     418                        (const vchold   = -71)
     419                        (const vcbase   = -69)
     420                        (const vcinc    = 10)
     421                        (const vcsteps  = 8)
     422                        (const vchdur   = 30)
     423                        (const vcbdur   = 100)
     424                       
     425                        (component (type default-concentration) (name ca)
     426                                   (const cn       = 5e-5)
     427                                   (const cnout    = 2)
     428                                   (output cn cnout))
     429                       
     430                        (output vchold vcbase vcinc vcsteps vchdur vcbdur )
     431
     432                        )
     433
     434
     435             
     436             ;; I-h channel from Magee 1998 for distal dendrites
     437
     438             (component (type ionic-current) (name Ih )
     439
     440                        (component (type gate)
     441                                   
     442                                   (const vhalfl = -73)
     443                                   (const kl     = -8)
     444                                   (const vhalft = -75)
     445                                   (const a0t    = 0.011)
     446                                   (const zetat  = 2.2)
     447                                   (const gmt    = 0.4)
     448                                   (const q10    = 4.5)
     449                                   (const qtl    = 1)
     450
     451                                   (defun alpha_t (v)
     452                                     (exp (0.0378 * zetat * (v - vhalft))))
     453
     454                                   (defun beta_t (v)
     455                                     (exp (0.0378 * zetat * gmt * (v - vhalft))))
     456
     457                                   (qt = (pow (q10 ~ ((celsius - 33) / 10))))
     458                                   
     459                                   (a    = (alpha_t (v)))
     460                                   (linf = (1 / (1 + exp (neg (v - vhalfl) / kl))))
     461                                   (ltau = (beta_t (v) / (qtl * qt * a0t * (1 + a))))
     462
     463                                   (hh-ionic-gate
     464                                    (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
     465                                     (initial-m (linf))
     466                                     (m-power   1)
     467                                     (h-power   0)
     468                                     (m-inf     (linf))
     469                                     (m-tau     (ltau))))
     470                                   )
     471
     472
     473                        (component (type pore)
     474                                   (const ghdbar = .0001)
     475                                   (output ghdbar))
     476
     477                       
     478                        (component (type permeating-ion) (name non-specific)
     479                                   (const ehd = -30)
     480                                   (output ehd))
     481                       
     482                        ;; end Ih current
     483                        )
     484
     485
     486             (component (type voltage-clamp) (name Ih)
     487                       
     488                        (const vchold   = -71)
     489                        (const vcbase   = -70)
     490                        (const vcinc    = 20)
     491                        (const vcsteps  = 8)
     492                        (const vchdur   = 30)
     493                        (const vcbdur   = 100)
     494                       
     495                        (output vchold vcbase vcinc vcsteps vchdur vcbdur)
     496                        )
     497
     498
     499             ;; Borg-Graham type generic K-AHP channel
     500             
     501             (component (type ionic-current) (name KAHP )
     502                       
     503                        (input
     504                         (cai from ion-pools))
     505                       
     506                        (component (type gate)
     507                                   
     508                                   
     509                                   (const a0 = 1e8) ;; (/ms-mM-mM-mM-mM)
     510                                   (const b0 = .5e-2) ;;  (/ms)
     511
     512                                   (const q10 = 3)
     513                                   
     514                                   (defun alpha (cai)
     515                                     (a0 * pow (cai ~ 4)))
     516                                   
     517                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     518                                   
     519                                   (a    = (alpha (cai)))
     520                                   (atau = (1 / (qt * (a + b0))))
     521                                   (ainf = (a * atau * qt))
     522                                   
     523                                   (hh-ionic-gate
     524                                    (KAHP  ;; ion name: exported variables will be of the form {ion}_{id}
     525                                     (initial-m  (ainf))
     526                                     (m-power    1)
     527                                     (h-power    0)
     528                                     (m-inf      (ainf))
     529                                     (m-tau      (atau))
     530                                     ))
     531                                   
     532                                   )
     533                       
     534                        (component (type pore)
     535                                   (const  gbar  = 0.003)
     536                                   (output gbar ))
     537                       
     538                       
     539                        (component (type permeating-ion) (name k)
     540                                   (e = ek)
     541                                   (output e ))
     542                       
     543                        (component (type modulating-ion) (name ca) )
     544                       
     545                        ) ;; end KAHP current
     546
     547
     548             (component (type voltage-clamp) (name KAHP)
     549                       
     550                        (const vchold   = -71)
     551                        (const vcbase   = -70)
     552                        (const vcinc    = 10)
     553                        (const vcsteps  = 8)
     554                        (const vchdur   = 30)
     555                        (const vcbdur   = 100)
     556
     557                        (const cnhold   = 5e-5)
     558                        (const cnbase   = 5e-5)
     559                        (const cninc    = 1e3)
     560                        (const cnsteps  = 1)
     561                        (const cnout    = 2)
     562                       
     563                        (output vchold vcbase vcinc vcsteps vchdur vcbdur
     564                                cnhold cnbase cninc cnsteps cnout)
     565                        )
     566
     567
     568             ;; K-A channel from Klee Ficker and Heinemann
     569             ;; modified to account for Dax A Current --- M.Migliore Jun 1997
     570             ;; modified to be used with cvode  M.Migliore 2001
     571
     572             (component (type ionic-current) (name KA )
     573
     574                       
     575                        (component (type gate)
     576
     577                                   (const sh = 24)
     578
     579                                   (const vhalfn = 11)
     580                                   (const vhalfl = -56)
     581                                   (const a0l    = 0.05)
     582                                   (const a0n    = 0.05)
     583                                   (const zetan  = -1.5)
     584                                   (const zetal  = 3)
     585                                   (const gmn    = 0.55)
     586                                   (const gml    = 1)
     587                                   (const lmin   = 2)
     588                                   (const nmin   = 0.1)
     589                                   (const pw     = -1)
     590                                   (const tq     = -40)
     591                                   (const qq     = 5)
     592                                   (const q10    = 5)
     593                                   (const qtl    = 1)
     594
     595
     596                                   (defun alpha_n (v)
     597                                     (let ((zeta (zetan + pw / (1 + exp ( (v - tq - sh) / qq)))))
     598                                       (exp (1e-3 * zeta * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius))))))
     599
     600                                   (defun beta_n (v)
     601                                     (let ((zeta (zetan + pw / (1 + exp((v - tq - sh) / qq)))))
     602                                       (exp (1e-3 * zeta * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius))))))
     603
     604
     605                                   (defun alpha_l (v)
     606                                     (exp (1e-3 * zetal * (v - vhalfl - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     607
     608                                   (defun beta_l (v)
     609                                     (exp (1e-3 * zetal * gml * (v - vhalfl - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     610
     611                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     612
     613                                   (an   = (alpha_n (v)))
     614                                   (ninf = (1 / (1 + an)))
     615                                   (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + an)))))
     616                                             (if (u < nmin) then nmin else u)))
     617
     618                                   (a_l  = (alpha_l (v)))
     619                                   (linf = (1 / (1 + a_l)))
     620                                   (ltau = (let ((u (0.26 * (v + 50 - sh) / qtl)))
     621                                             (if (u < (lmin / qtl)) then  (lmin / qtl) else u)))
     622                                   
     623
     624                                   (hh-ionic-gate
     625                                    (KA  ;; ion name: exported variables will be of the form {ion}_{id}
     626                                     (initial-m  (ninf))
     627                                     (initial-h  (linf))
     628                                     (m-power    1)
     629                                     (h-power    1)
     630                                     (m-inf      (ninf))
     631                                     (m-tau      (ntau))
     632                                     (h-inf      (linf))
     633                                     (h-tau      (ltau))
     634                                     ))
     635                                   
     636                                   )
     637                       
     638                        (component (type pore)
     639                                   (const  gbar  = 0.008)
     640                                   (output gbar ))
     641                       
     642                       
     643                        (component (type permeating-ion) (name k)
     644                                   (e = ek)
     645                                   (output e ))
     646                       
     647                       
     648                        ) ;; end KA current
     649
     650
     651             (component (type voltage-clamp) (name KA)
     652                       
     653                        (const vchold   = -71)
     654                        (const vcbase   = -70)
     655                        (const vcinc    = 10)
     656                        (const vcsteps  = 8)
     657                        (const vchdur   = 30)
     658                        (const vcbdur   = 100)
     659
     660                        (output vchold vcbase vcinc vcsteps vchdur vcbdur)
     661                        )
     662
     663
     664             (component (type ionic-current) (name KD )
     665
     666                       
     667                        (component (type gate)
     668
     669                                   (const sh = 0)
     670
     671                                   (const vhalfn = -33)
     672                                   (const a0n    = 0.01)
     673                                   (const zetan  = 3)
     674                                   (const gmn    = 0.7)
     675                                   (const nmax   = 2)
     676                                   (const q10    = 1)
     677
     678                                   (defun alpha_n (v)
     679                                     (exp (1e-3 * zetan * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     680
     681                                   (defun beta_n (v)
     682                                     (exp (1e-3 * zetan * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     683
     684                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     685
     686                                   (a    = (alpha_n (v)))
     687                                   (ninf = (1 / (1 + a)))
     688                                   (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + a)))))
     689                                             (if (u < nmax) then  (nmax / qt) else u)))
     690
     691
     692                                   (hh-ionic-gate
     693                                    (KD  ;; ion name: exported variables will be of the form {ion}_{id}
     694                                     (initial-m  (ninf))
     695                                     (m-power    1)
     696                                     (h-power    0)
     697                                     (m-inf      (ninf))
     698                                     (m-tau      (ntau))
     699                                     ))
     700                                   
     701                                   )
     702                       
     703                        (component (type pore)
     704                                   (const  gbar  = 0.0)
     705                                   (output gbar ))
     706                       
     707                       
     708                        (component (type permeating-ion) (name k)
     709                                   (e = ek)
     710                                   (output e ))
     711                       
     712                       
     713                        ) ;; end KD current
     714
     715
     716             (component (type voltage-clamp) (name KD)
     717                       
     718                        (const vchold   = -71)
     719                        (const vcbase   = -70)
     720                        (const vcinc    = 10)
     721                        (const vcsteps  = 8)
     722                        (const vchdur   = 30)
     723                        (const vcbdur   = 100)
     724
     725                        (output vchold vcbase vcinc vcsteps vchdur vcbdur)
     726                        )
     727             
     728
     729
     730             ;; K-DR channel from Klee Ficker and Heinemann modified to account for Dax et al.
     731             (component (type ionic-current) (name KDR )
     732
     733                       
     734                        (component (type gate)
     735
     736                                   (const sh = 24)
     737
     738                                   (const vhalfn = 13)
     739                                   (const a0n    = 0.02)
     740                                   (const zetan  = -3)
     741                                   (const gmn    = 0.7)
     742                                   (const nmax   = 2)
     743                                   (const q10    = 1)
     744
     745                                   (defun alpha_n (v)
     746                                     (exp (1e-3 * zetan * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     747
     748                                   (defun beta_n (v)
     749                                     (exp (1e-3 * zetan * gmn * (v - vhalfn - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     750
     751                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     752
     753                                   (a    = (alpha_n (v)))
     754                                   (ninf = (1 / (1 + a)))
     755                                   (ntau = (let ((u (beta_n (v) / (qt * a0n * (1 + a)))))
     756                                             (if (u < nmax) then  (nmax / qt) else u)))
     757
     758
     759                                   (hh-ionic-gate
     760                                    (KDR  ;; ion name: exported variables will be of the form {ion}_{id}
     761                                     (initial-m  (ninf))
     762                                     (m-power    1)
     763                                     (h-power    0)
     764                                     (m-inf      (ninf))
     765                                     (m-tau      (ntau))
     766                                     ))
     767                                   
     768                                   )
     769                       
     770                        (component (type pore)
     771                                   (const  gbar  = 0.003)
     772                                   (output gbar ))
     773                       
     774                       
     775                        (component (type permeating-ion) (name k)
     776                                   (e = ek)
     777                                   (output e ))
     778                       
     779                       
     780                        ) ;; end KDR current
     781
     782
     783             (component (type voltage-clamp) (name KDR)
     784                       
     785                        (const vchold   = -71)
     786                        (const vcbase   = -70)
     787                        (const vcinc    = 10)
     788                        (const vcsteps  = 8)
     789                        (const vchdur   = 30)
     790                        (const vcbdur   = 100)
     791
     792                        (output vchold vcbase vcinc vcsteps vchdur vcbdur)
     793                        )
     794             
     795             
     796             
     797             ;; KM channel from Magee 1998 for distal dendrites
     798
     799             (component (type ionic-current) (name KM )
     800
     801                        (component (type gate)
     802                                   
     803                                   (const sh = 24)
     804
     805                                   (const vhalfl = -40)
     806                                   (const kl     = -10)
     807                                   (const vhalft = -42)
     808                                   (const a0t    = 0.003)
     809                                   (const zetat  = 7)
     810                                   (const gmt    = 0.4)
     811                                   (const q10    = 5)
     812                                   (const b0     = 60)
     813
     814                                   (defun alpha_t (v)
     815                                     (exp (0.0378 * zetat * (v - vhalft - sh))))
     816
     817                                   (defun beta_t (v)
     818                                     (exp (0.0378 * zetat * gmt * (v - vhalft - sh))))
     819
     820                                   (qt = (pow (q10 ~ ((celsius - 35) / 10))))
     821
     822                                   (inf = (1 / (1 + exp ((v - vhalfl - sh) / kl))))
     823                                   (a   = (alpha_t (v)))
     824                                   (tau = (b0 + beta_t(v) / (a0t * (1 + a))))
     825
     826                                   (hh-ionic-gate
     827                                    (KM  ;; ion name: exported variables will be of the form {ion}_{id}
     828                                     (initial-m (inf))
     829                                     (m-power   1)
     830                                     (h-power   0)
     831                                     (m-inf     (inf))
     832                                     (m-tau     (tau))))
     833
     834                                   )
     835
     836
     837                        (component (type pore)
     838                                   (const gbar = .0001)
     839                                   (output gbar))
     840
     841                       
     842                        (component (type permeating-ion) (name k)
     843                                   (const e = ek)
     844                                   (output e))
     845                       
     846                        ;; end KM current
     847                        )
     848
     849
     850             (component (type voltage-clamp) (name KM)
     851                       
     852                        (const vchold   = -71)
     853                        (const vcbase   = -70)
     854                        (const vcinc    = 10)
     855                        (const vcsteps  = 8)
     856                        (const vchdur   = 30)
     857                        (const vcbdur   = 100)
     858
     859                        (output vchold vcbase vcinc vcsteps vchdur vcbdur)
     860                        )
     861             
     862
     863
     864             ;; Na current for axon. No slow inact.
     865             (component (type ionic-current) (name Nax )
     866
     867                        (component (type gate)
     868                                   
     869                                   (const sh   = 8)
     870
     871                                   (const tha  = -30)
     872                                   (const qa   = 7.2)
     873                                   (const Ra   = 0.4)
     874                                   (const Rb   = 0.124)
     875
     876                                   (const thi1  = -45)
     877                                   (const thi2  = -45)
     878                                   (const qd    = 1.5)
     879                                   (const qg    = 1.5)
     880                                   (const mmin  = 0.02)
     881                                   (const hmin  = 0.5)
     882                                   (const q10   = 2)
     883
     884                                   (const  Rg   = 0.01)
     885                                   (const  Rd   = .03)
     886
     887                                   (const  thinf  = -50)
     888                                   (const  qinf  = 4)
     889
     890
     891                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     892
     893
     894                                   (defun trap0 (v th a q)
     895                                     (if (abs (v - th) > 1e-6)
     896                                         then (a * (v - th) / (1 - exp (neg (v - th) / q)))
     897                                         else (a * q)))
     898
     899                                   (am = (trap0 (v ~ (tha + sh) ~ Ra ~ qa)))
     900                                   (bm = (trap0 ((neg (v)) ~ (neg (tha) - sh) ~ Rb ~ qa)))
     901
     902                                   (mtau = (let ((u (1 / ((am + bm) / qt))))
     903                                             (if (u < mmin) then mmin else u)))
     904                                   (minf = (am / (am + bm)))
     905
     906                                   (ah = (trap0 (v ~ (thi1 + sh) ~ Rd ~ qd)))
     907                                   (bh = (trap0 ((neg (v)) ~ (neg (thi2) - sh) ~ Rg qg)))
     908
     909                                   (htau =  (let ((u (1 / (ah + bh) / qt)))
     910                                              (if (u < hmin) then hmin else u)))
     911                                   (hinf = (1 / (1 + exp ((v - thinf - sh) / qinf))))
     912
     913
     914                                   (hh-ionic-gate
     915                                    (Nax  ;; ion name: exported variables will be of the form {ion}_{id}
     916                                     (initial-m (minf))
     917                                     (initial-h (hinf))
     918                                     (m-power   3)
     919                                     (h-power   1)
     920                                     (m-inf     (minf))
     921                                     (m-tau     (mtau))
     922                                     (h-inf     (hinf))
     923                                     (h-tau     (htau))
     924                                     ))
     925
     926                                   )
     927
     928
     929                        (component (type pore)
     930                                   (const gbar = 0.01)
     931                                   (output gbar))
     932
     933                       
     934                        (component (type permeating-ion) (name na)
     935                                   (const e = ena)
     936                                   (output e))
     937                       
     938                        ;; end Nax current
     939                        )
     940
     941
     942
     943             (component (type voltage-clamp) (name Nax)
     944                       
     945                        (const vchold   = -71)
     946                        (const vcbase   = -60)
     947                        (const vcinc    = 10)
     948                        (const vcsteps  = 9)
     949                        (const vchdur   = 30)
     950                        (const vcbdur   = 100)
     951                       
     952                        (output vchold vcbase vcinc vcsteps vchdur vcbdur))
     953
     954
     955
     956             ;; Na current
     957             (component (type ionic-current) (name Na )
     958
     959                        (component (type gate)
     960                                   
     961
     962                                   (const sh = 24)
     963
     964                                   (const tha  =  -30)
     965                                   (const  qa  = 7.2) ;; act slope (4.5)
     966                                   (const  Ra  = 0.4)
     967                                   (const  Rb  = 0.124)
     968
     969                                   (const thi1  = -45)
     970                                   (const thi2  = -45)
     971                                   (const qd    = 1.5) ;; inact tau slope
     972                                   (const qg    = 1.5)
     973                                   (const mmin  = 0.02)
     974                                   (const hmin  = 0.5)
     975                                   
     976                                   (const q10   = 2)
     977
     978                                   (const Rg    = 0.01) ;; inact recov (v)
     979                                   (const Rd    = .03)  ;; inact (v)   
     980                                   (const qq    = 10)
     981                                   (const tq    = -55)
     982
     983                                   (const thinf  = -50) ;; inact inf slope     
     984                                   (const qinf   = 4) ;;  inact inf slope
     985
     986                                   (const vhalfs = -60) ;; slow inact.
     987                                   (const a0s    = 0.0003) ;; a0s=b0s
     988                                   (const zetas  = 12)
     989                                   (const gms    = 0.2)
     990                                   (const smax   = 10)
     991                                   (const vvh    = -58)
     992                                   (const vvs    = 2)
     993                                   (const ar     = 1)
     994
     995                                   (defun alpha_v (v)
     996                                     (1 / (1 + exp ((v - vvh - sh) / vvs))))
     997                                   
     998                                   (defun alpha_s (v)
     999                                     (exp (1e-3 * zetas * (v - vhalfs - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     1000
     1001                                   (defun beta_s (v)
     1002                                     (exp (1e-3 * zetas * gms * (v - vhalfs - sh) * 9.648e4 / (8.315 * (273.16 + celsius)))))
     1003
     1004                                   (qt = (pow (q10 ~ ((celsius - 24) / 10))))
     1005
     1006                                   (defun trap0 (v th a q)
     1007                                     (if (abs (v - th) > 1e-6)
     1008                                         then (a * (v - th) / (1 - exp (neg (v - th) / q)))
     1009                                         else (a * q)))
     1010
     1011                                   (am = (trap0 (v ~ (tha + sh) ~ Ra ~ qa)))
     1012                                   (bm = (trap0 ((neg (v)) ~ (neg (tha) - sh) ~ Rb ~ qa)))
     1013
     1014                                   (mtau = (let ((u (1 / (am + bm) / qt)))
     1015                                             (if (u < mmin) then mmin else u)))
     1016
     1017                                   (minf = (am / (am + bm)))
     1018
     1019                                   (ah = (trap0 (v ~ (thi1 + sh) ~ Rd ~ qd)))
     1020                                   (bh = (trap0 ((neg (v)) ~ (neg (thi2) - sh) ~ Rg ~ qg)))
     1021
     1022                                   (htau =  (let ((u (1 / (ah + bh) / qt)))
     1023                                              (if (u < hmin) then hmin else u)))
     1024
     1025                                   (hinf = (1 / (1 + exp ((v - thinf - sh) / qinf))))
     1026
     1027                                   (c    = (alpha_v (v)))
     1028                                   (sinf = (c + ar * (1 - c)))
     1029                                   (stau = (let ((u (beta_s (v) / (a0s * (1 + alpha_s (v))))))
     1030                                             (if (u < smax) then smax else u)))
     1031
     1032                                   
     1033                                   (hh-ionic-gate
     1034                                    (Na  ;; ion name: exported variables will be of the form {ion}_{id}
     1035                                     (initial-m  (minf))
     1036                                     (initial-h  (hinf))
     1037                                     (m-power    3)
     1038                                     (h-power    1)
     1039                                     (m-inf      (minf))
     1040                                     (m-tau      (mtau))
     1041                                     (h-inf      (hinf))
     1042                                     (h-tau      (htau))
     1043                                     ))
     1044                                   
     1045
     1046                                   (d (s) = ((sinf - s) / stau) (initial sinf))
     1047                                   
     1048                                   (output s)
     1049                                   
     1050                                   )
     1051
     1052
     1053                        (component (type pore)
     1054                                   (const gbar = .01)
     1055                                   (output gbar))
     1056
     1057                       
     1058                        (component (type permeating-ion) (name na)
     1059                                   (const e = ena)
     1060                                   (output e))
     1061                       
     1062                        ;; end Na current
     1063                        )
     1064               
     1065
     1066             
     1067             (component (type voltage-clamp) (name Na)
     1068                       
     1069                        (const vchold   = -71)
     1070                        (const vcbase   = -60)
     1071                        (const vcinc    = 10)
     1072                        (const vcsteps  = 9)
     1073                        (const vchdur   = 30)
     1074                        (const vcbdur   = 100)
     1075                       
     1076                        (output vchold vcbase vcinc vcsteps vchdur vcbdur))
     1077
     1078
     1079   )             
     1080
     1081   ;; Following are templates for various driver scripts used to run this model
     1082   (
     1083
     1084
     1085    (".hoc" () 
     1086#<<EOF
     1087
     1088create soma
     1089access soma
     1090
     1091insert {{model_name}}
     1092
     1093soma {
     1094        nseg = 1
     1095
     1096{% with diam = default(diam, 13), L = default(L, 11), celsius = default(celsius, 35) %}
     1097        diam = {{diam}}
     1098        L = {{L}}
     1099        celsius = {{celsius}}
     1100{% endwith %}
     1101
     1102        cm = 1
     1103
     1104        Ra = 100
     1105    }
     1106
     1107EOF
     1108)
     1109
    9021110
    9031111))
Note: See TracChangeset for help on using the changeset viewer.