File: channel.g

package info (click to toggle)
genesis 2.1-1.1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 14,288 kB
  • ctags: 10,667
  • sloc: ansic: 111,959; makefile: 2,240; yacc: 1,797; lex: 976; csh: 54; sh: 13
file content (96 lines) | stat: -rw-r--r-- 2,878 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//genesis
/* 
	functions defined in this script
=============================================================================
	FUNCTION NAME		ARGUMENTS
=============================================================================
	makechannel		(compartment,channel,Ek,tau1,tau2,gmax)
	make_hhNa		(compartment,channel,activearea,ENa,Erest)
	make_hhK		(compartment,channel,activearea,EK,Erest)
=============================================================================
*/

// different forms for the HH rate coefficients 
int EXPONENTIAL = 1
int SIGMOID = 2
int LINOID = 3

//=================================================
//       BASIC TRANSMITTER ACTIVATED CHANNEL
//=================================================
function makechannel(compartment, channel, Ek, tau1, tau2, gmax)
    str compartment
    str channel
    // mV
    float Ek
    // msec
    float tau1, tau2
    // mS
    float gmax

    create channelC2 {compartment}/{channel}
    setfield ^ Ek {Ek} tau1 {tau1} tau2 {tau2} gmax {gmax}
    link_channel2 {compartment}/{channel} {compartment}
end

//=================================================
//                 HH NA CHANNEL
//=================================================
function make_hhNa(compartment, channel, activearea, ENa, Erest)
    str compartment
    str channel
    // cm^2
    float activearea
    // mV
    float ENa, Erest

    create hh_channel {compartment}/{channel}
    // mV
    // mmhos/cm^2
    // 1/mV-msec
    // mV
    // mV
    // 1/msec
    // mV
    // mV
    // 1/msec
    // mV
    // mV
    // 1/msec
    // mV
    // mV
    setfield {compartment}/{channel} Ek {ENa} Gbar {120.0*activearea}  \
        Xpower 3.0 Ypower 1.0 X_alpha_FORM {LINOID} X_alpha_A -0.1  \
        X_alpha_B -10.0 X_alpha_V0 {25.0 + Erest}  \
        X_beta_FORM {EXPONENTIAL} X_beta_A 4.0 X_beta_B -18.0  \
        X_beta_V0 {0.0 + Erest} Y_alpha_FORM {EXPONENTIAL}  \
        Y_alpha_A 0.07 Y_alpha_B -20.0 Y_alpha_V0 {0.0 + Erest}  \
        Y_beta_FORM {SIGMOID} Y_beta_A 1.0 Y_beta_B -10.0  \
        Y_beta_V0 {30.0 + Erest}
    link_channel2 {compartment}/{channel} {compartment}
end

//=================================================
//                  HH K CHANNEL
//=================================================
function make_hhK(compartment, channel, activearea, EK, Erest)
    str compartment
    str channel
    float activearea
    float EK, Erest

    create hh_channel {compartment}/{channel}
    // mV
    // mmhos/cm^2 
    // 1/mV-msec
    // mV
    // mV
    // 1/msec
    // mV
    // mV
    setfield ^ Ek {EK} Gbar {36.0*activearea} Xpower 4.0 Ypower 0.0  \
        X_alpha_FORM {LINOID} X_alpha_A -0.01 X_alpha_B -10.0  \
        X_alpha_V0 {10.0 + Erest} X_beta_FORM {EXPONENTIAL}  \
        X_beta_A 0.125 X_beta_B -80.0 X_beta_V0 {0.0 + Erest}
    link_channel2 {compartment}/{channel} {compartment}
end