| 1 | | from pyNN import common, cells |
| | 1 | import moose |
| | 2 | from pyNN import standardmodels, cells |
| | 3 | |
| | 4 | mV = 1e-3 |
| | 5 | ms = 1e-3 |
| | 6 | nA = 1e-9 |
| | 7 | |
| | 8 | class SingleCompHH(moose.Neutral): |
| | 9 | |
| | 10 | def __init__(self, path, GbarNa=0.0, GbarK=0.0, GLeak=0.0, Cm=1.0, |
| | 11 | ENa=40*mV, EK=-90*mV, VLeak=-65*mV, Voff=-63*mV, ESynE=0*mV, |
| | 12 | ESynI=-70*mV, tauE=2*ms, tauI=5*ms, inject=0*nA, initVm=-65*mV): |
| | 13 | moose.Neutral.__init__(self, path) |
| | 14 | self.comp = moose.Compartment("compartment", self) |
| | 15 | print "compartment is at %s" % self.comp.path |
| | 16 | print locals() |
| | 17 | self.comp.initVm = initVm |
| | 18 | self.comp.Rm = 1/GLeak |
| | 19 | self.comp.Cm = Cm |
| | 20 | self.comp.Em = VLeak |
| | 21 | self.comp.inject = inject |
| | 22 | self.na = moose.HHChannel("na", self.comp) |
| | 23 | self.na.Ek = ENa |
| | 24 | self.na.Gbar = GbarNa |
| | 25 | self.na.Xpower = 3 |
| | 26 | self.na.Ypower = 1 |
| | 27 | self.na.setupAlpha("X", 3.2e5 * (13*mV+Voff), -3.2e5, -1, -(13*mV+Voff), -4*mV, # alpha |
| | 28 | -2.8e5 * (40*mV+Voff), 2.8e5, -1, -(40*mV+Voff), 5*mV) # beta |
| | 29 | self.na.setupAlpha("Y", 128, 0, 0, -(17*mV+Voff), 18*mV, # alpha |
| | 30 | 4.0e3, 0, 1, -(40*mV+Voff), -5*mV) # beta |
| | 31 | |
| | 32 | self.k = moose.HHChannel("k", self.comp) |
| | 33 | self.k.Ek = EK |
| | 34 | self.k.Gbar = GbarK |
| | 35 | self.k.Xpower = 4 |
| | 36 | self.k.setupAlpha("X", 3.2e4 * (15*mV+Voff), -3.2e4, -1, -(15*mV+Voff), -5*mV, |
| | 37 | 500, 0, 0, -(10*mV+Voff), 40*mV) |
| | 38 | |
| | 39 | #self.synE = moose.SynChan("excitatory", self.comp) |
| | 40 | #self.synE.Ek = ESynE |
| | 41 | #self.synE.tau1 = 1e-6 |
| | 42 | #self.synE.tau2 = tauE |
| | 43 | #self.synE.Gbar = 1e-9 |
| | 44 | #self.synI = moose.SynChan("inhibitory", self.comp) |
| | 45 | #self.synI.Ek = ESynI |
| | 46 | #self.synI.tau1 = 1e-6 |
| | 47 | #self.synI.tau2 = tauI |
| | 48 | #self.synI.Gbar = 1e-9 |
| | 49 | |
| | 50 | #self.comp.connect("channel", self.synE, "channel") |
| | 51 | #self.comp.connect("channel", self.synI, "channel") |
| | 52 | self.comp.connect("channel", self.na, "channel") |
| | 53 | self.comp.connect("channel", self.k , "channel") |
| | 54 | |
| | 55 | self.comp.useClock(0) |
| | 56 | self.comp.useClock(1, "init") |
| | 57 | |
| | 58 | def record_v(self): |
| | 59 | self.vmTable = moose.Table("Vm", self) |
| | 60 | self.vmTable.stepMode = 3 |
| | 61 | self.vmTable.connect("inputRequest", self.comp, "Vm") |
| | 62 | self.vmTable.useClock(2) |
| | 63 | print "vmTable is at %s" % self.vmTable.path |
| | 64 | #moose.PyMooseBase.getContext().useClock(0, self.comp.path+"/##") |
| | 65 | |
| | 66 | #a = SingleCompHH("/comp", 1e-9, 1e-9, 1e-9, 1e-12, -0.06, 0.08, -0.06, 0.001, 0.05, -0.05, 1e-2, 2e-2, 1e-9, -0.06) |
| | 67 | #print "Successfully setup SingleCompHH" |
| | 68 | |
| | 69 | |