def loadGran98NeuroML_L123(filename):
    neuromlR = NeuroML()
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename)
    soma_path = populationDict['Gran'][1][0].path + '/Soma_0'
    somaVm = setupTable('somaVm', moose.Compartment(soma_path), 'Vm')
    somaCa = setupTable('somaCa', moose.CaConc(soma_path + '/Gran_CaPool_98'),
                        'Ca')
    somaIKCa = setupTable('somaIKCa',
                          moose.HHChannel(soma_path + '/Gran_KCa_98'), 'Gk')
    #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X')
    soma = moose.Compartment(soma_path)
    print("Reinit MOOSE ... ")
    resetSim(['/elec', '/cells'], simdt, plotdt,
             simmethod='ee')  # from moose.utils
    print("Running ... ")
    moose.start(runtime)
    tvec = arange(0.0, runtime, plotdt)
    plot(tvec, somaVm.vector[1:])
    title('Soma Vm')
    xlabel('time (s)')
    ylabel('Voltage (V)')
    figure()
    plot(tvec, somaCa.vector[1:])
    title('Soma Ca')
    xlabel('time (s)')
    ylabel('Ca conc (mol/m^3)')
    figure()
    plot(tvec, somaIKCa.vector[1:])
    title('KCa current (A)')
    xlabel('time (s)')
    ylabel('')
    print("Showing plots ...")
    show()
Exemple #2
0
    def _loadElec(self, efile, elecname):
        if (efile[len(efile) - 2:] == ".p"):
            self.elecid = moose.loadModel(efile, '/library/' + elecname)[0]
            print(self.elecid)
        elif (efile[len(efile) - 4:] == ".swc"):
            self.elecid = moose.loadModel(efile, '/library/' + elecname)[0]
        else:
            nm = NeuroML()
            print("in _loadElec, combineSegments = ", self.combineSegments)
            nm.readNeuroMLFromFile( efile, \
                    params = {'combineSegments': self.combineSegments, \
                    'createPotentialSynapses': True } )
            if moose.exists('/cells'):
                kids = moose.wildcardFind('/cells/#')
            else:
                kids = moose.wildcardFind(
                    '/library/#[ISA=Neuron],/library/#[TYPE=Neutral]')
                if (kids[0].name == 'spine'):
                    kids = kids[1:]

            assert (len(kids) > 0)
            self.elecid = kids[0]
            temp = moose.wildcardFind(self.elecid.path +
                                      '/#[ISA=CompartmentBase]')

        transformNMDAR(self.elecid.path)
        kids = moose.wildcardFind('/library/##[0]')
        for i in kids:
            i.tick = -1
def loadGran98NeuroML_L123(filename, params):
    neuromlR = NeuroML()
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename,params=params)
    print "Number of compartments =",\
        len(moose.Neuron(populationDict['CA1group'][1][0].path).children)
    soma_path = populationDict['CA1group'][1][0].path + '/Seg0_soma_0_0'
    somaVm = setupTable('somaVm', moose.Compartment(soma_path), 'Vm')
    #somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca')
    #somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk')
    #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X')
    soma = moose.Compartment(soma_path)

    print "Reinit MOOSE ... "
    resetSim(['/elec', '/cells'], simdt, plotdt,
             simmethod='hsolve')  # from moose.utils
    print "Running ... "
    moose.start(runtime)
    tvec = arange(0.0, runtime, simdt)
    plot(tvec, somaVm.vector[1:])
    title('Soma Vm')
    xlabel('time (s)')
    ylabel('Voltage (V)')
    print "Showing plots ..."
    show()
Exemple #4
0
    def _loadElec(self, efile, elecname, combineSegments):
        library = moose.Neutral('/library')
        if (efile[len(efile) - 2:] == ".p"):
            self.elecid = moose.loadModel(efile,
                                          self.model.path + '/' + elecname)
        else:
            nm = NeuroML()
            nm.readNeuroMLFromFile( efile, \
                    params = {'combineSegments': combineSegments, \
                    'createPotentialSynapses': True } )
            if moose.exists('/cells'):
                kids = moose.wildcardFind('/cells/#')
            else:
                kids = moose.wildcardFind(
                    '/library/#[ISA=Neuron],/library/#[TYPE=Neutral]')
                if (kids[0].name == 'spine'):
                    kids = kids[1:]

            assert (len(kids) > 0)
            self.elecid = kids[0]
            temp = moose.wildcardFind(self.elecid.path +
                                      '/#[ISA=CompartmentBase]')
            moose.move(self.elecid, self.model)
            self.elecid.name = elecname

        self._transformNMDAR(self.elecid.path)
        kids = moose.wildcardFind('/library/##[0]')
        for i in kids:
            i.tick = -1
def loadGran98NeuroML_L123(filename):
    neuromlR = NeuroML()
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename)
    soma_path = populationDict['Gran'][1][0].path+'/Soma_0'
    somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm')
    somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca')
    somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk')
    ## Am not able to plot KDr gating variable X when running under hsolve
    #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X')

    print "Reinit MOOSE ... "
    resetSim(['/elec',cells_path], simdt, plotdt, simmethod='hsolve')

    print "Running ... "
    moose.start(runtime)
    tvec = arange(0.0,runtime*2.0,plotdt)
    tvec = tvec[ : somaVm.vector.size ]
    plot(tvec,somaVm.vector)
    title('Soma Vm')
    xlabel('time (s)')
    ylabel('Voltage (V)')
    figure()
    plot(tvec,somaCa.vector)
    title('Soma Ca')
    xlabel('time (s)')
    ylabel('Ca conc (mol/m^3)')
    figure()
    plot(tvec,somaIKCa.vector)
    title('soma KCa current')
    xlabel('time (s)')
    ylabel('KCa current (A)')
    print "Showing plots ..."
    show()
Exemple #6
0
def loadGran98NeuroML_L123(filename):
    neuromlR = NeuroML()
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename)
    soma_path = populationDict['CA1group'][1][0].path + '/Seg0_soma_0_0'
    somaVm = setupTable('somaVm', moose.Compartment(soma_path), 'Vm')
    soma = moose.Compartment(soma_path)
    moose.reinit()
    moose.start(runtime)
    tvec = np.arange(0.0, runtime, simdt)
    res = count.spike_train_simple_stat(somaVm.vector)
    return res['number of spikes']
Exemple #7
0
def loadModel(filename):
    global soma_, cellSpikeTable_
    neuromlR = NeuroML()
    neuromlR.readNeuroMLFromFile(filename)
    libcell = moose.Neuron('/library/CA1soma')
    CA1Cellid = moose.copy(libcell,moose.Neutral('/cells'),'CA1')
    CA1Cell = moose.Neuron(CA1Cellid)

    spikeGen = moose.SpikeGen(CA1Cell.path+'/spikeGen')
    spikeGen.threshold = -30e-3 # V
    soma_ = moose.Compartment(CA1Cell.path+'/Seg0_soma_0_0')
    soma_.inject = 0 # by default the cell has a current injection
    moose.connect(soma_,'VmOut',spikeGen,'Vm')
    table_path = moose.Neutral(CA1Cell.path+'/data').path
    cellSpikeTable_ = moose.Table(table_path+'/spikesTable')
    moose.connect(spikeGen,'spikeOut', cellSpikeTable_,'input')
Exemple #8
0
def loadGran98NeuroML_L123(filename):
    neuromlR = NeuroML()
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename)
    soma_path = populationDict['Gran'][1][0].path + '/Soma_0'
    somaVm = setupTable('somaVm', moose.Compartment(soma_path), 'Vm')
    somaCa = setupTable('somaCa', moose.CaConc(soma_path + '/Gran_CaPool_98'),
                        'Ca')
    somaIKCa = setupTable('somaIKCa',
                          moose.HHChannel(soma_path + '/Gran_KCa_98'), 'Gk')
    #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X')
    soma = moose.Compartment(soma_path)
    print "Reinit MOOSE ... "
    resetSim(['/elec', '/cells'], simdt, plotdt,
             simmethod='ee')  # from moose.utils
    print "Running ... "
    moose.start(runtime)
    print 'Finished simulation for', runtime, 'seconds'
Exemple #9
0
import sys
sys.path.append('.')
import moose
from moose.utils import *

from moose.neuroml.NeuroML import NeuroML

from pylab import *

SIMDT = 25e-6 # s
PLOTDT = 25e-6 # s
RUNTIME = 1.0 # s

injectmax = 2e-12 # Amperes

neuromlR = NeuroML()
neuromlR.readNeuroMLFromFile('cells_channels/CA1soma.morph.xml')
libcell = moose.Neuron('/library/CA1soma')
CA1Cellid = moose.copy(libcell,moose.Neutral('/cells'),'CA1')
CA1Cell = moose.Neuron(CA1Cellid)
#printCellTree(CA1Cell)

## edge-detect the spikes using spike-gen (table does not have edge detect)
spikeGen = moose.SpikeGen(CA1Cell.path+'/spikeGen')
spikeGen.threshold = -30e-3 # V
CA1CellSoma = moose.Compartment(CA1Cell.path+'/Seg0_soma_0_0')
CA1CellSoma.inject = 0 # by default the cell has a current injection
moose.connect(CA1CellSoma,'VmOut',spikeGen,'Vm')
## save spikes in table
table_path = moose.Neutral(CA1Cell.path+'/data').path
CA1CellSpikesTable = moose.Table(table_path+'/spikesTable')
Exemple #10
0
def loadRunSTGNeuroML_L123(filename):
    'Loads and runs the pyloric rhythm generator from NeuroML files.'
    # for graded synapses, else NeuroML event-based are used
    from load_synapses import load_synapses
    moose.Neutral('/library')
    # set graded to False to use event based synapses
    #  if False, neuroml event-based synapses get searched for and loaded
    # True to load graded synapses
    graded_syn = True
    #graded_syn = False
    if graded_syn:
        load_synapses()

    neuromlR = NeuroML()
    ## readNeuroMLFromFile below returns:
    # This returns
    # populationDict = {
    #     'populationname1':('cellName',{('instanceid1'):moosecell, ... })
    #     , ...
    #     }
    # (cellName and instanceid are strings, mooosecell is a moose.Neuron object instance)
    # and
    # projectionDict = {
    #     'projName1':('source','target',[('syn_name1','pre_seg_path','post_seg_path')
    #     ,...])
    #     , ...
    #     }
    populationDict, projectionDict = \
        neuromlR.readNeuroMLFromFile(filename)
    soma1_path = populationDict['AB_PD'][1][0].path + '/Soma_0'
    soma1Vm = setupTable('somaVm', moose.Compartment(soma1_path), 'Vm')
    soma2_path = populationDict['LP'][1][0].path + '/Soma_0'
    soma2Vm = setupTable('somaVm', moose.Compartment(soma2_path), 'Vm')
    soma3_path = populationDict['PY'][1][0].path + '/Soma_0'
    soma3Vm = setupTable('somaVm', moose.Compartment(soma3_path), 'Vm')

    # monitor channel current
    channel_path = soma1_path + '/KCa_STG'
    channel_Ik = setupTable('KCa_Ik', moose.element(channel_path), 'Ik')
    # monitor Ca
    capool_path = soma1_path + '/CaPool_STG'
    capool_Ca = setupTable('CaPool_Ca', moose.element(capool_path), 'Ca')

    # monitor synaptic current
    soma2 = moose.element(soma2_path)
    print "Children of", soma2_path, "are:"
    for child in soma2.children:
        print child.className, child.path
    if graded_syn:
        syn_path = soma2_path + '/DoubExpSyn_Ach__cells-0-_AB_PD_0-0-_Soma_0'
        syn = moose.element(syn_path)
    else:
        syn_path = soma2_path + '/DoubExpSyn_Ach'
        syn = moose.element(syn_path)
    syn_Ik = setupTable('DoubExpSyn_Ach_Ik', syn, 'Ik')

    print "Reinit MOOSE ... "
    resetSim(['/elec', cells_path], simdt, plotdt, simmethod='hsolve')

    print "Using graded synapses? = ", graded_syn
    print "Running model filename = ", filename, " ... "
    moose.start(runtime)
    tvec = np.arange(0.0, runtime + 2 * plotdt, plotdt)
    tvec = tvec[:soma1Vm.vector.size]

    fig = plt.figure(facecolor='w', figsize=(10, 6))
    axA = plt.subplot2grid((3, 2), (0, 0), rowspan=3, colspan=1, frameon=False)
    img = plt.imread('STG.png')
    imgplot = axA.imshow(img)
    for tick in axA.get_xticklines():
        tick.set_visible(False)
    for tick in axA.get_yticklines():
        tick.set_visible(False)
    axA.set_xticklabels([])
    axA.set_yticklabels([])
    ax = plt.subplot2grid((3, 2), (0, 1), rowspan=1, colspan=1)
    ax.plot(tvec,
            soma1Vm.vector * 1000,
            label='AB_PD',
            color='g',
            linestyle='solid')
    ax.set_xticklabels([])
    ax.set_ylabel('AB_PD (mV)')
    ax = plt.subplot2grid((3, 2), (1, 1), rowspan=1, colspan=1)
    ax.plot(tvec,
            soma2Vm.vector * 1000,
            label='LP',
            color='r',
            linestyle='solid')
    ax.set_xticklabels([])
    ax.set_ylabel('LP (mV)')
    ax = plt.subplot2grid((3, 2), (2, 1), rowspan=1, colspan=1)
    ax.plot(tvec,
            soma3Vm.vector * 1000,
            label='PY',
            color='b',
            linestyle='solid')
    ax.set_ylabel('PY (mV)')
    ax.set_xlabel('time (s)')
    fig.tight_layout()

    fig = plt.figure(facecolor='w')
    plt.plot(tvec,
             soma2Vm.vector * 1000,
             label='LP',
             color='r',
             linestyle='solid')
    plt.plot(tvec,
             soma3Vm.vector * 1000,
             label='PY',
             color='b',
             linestyle='solid')
    plt.legend()
    plt.xlabel('time (s)')
    plt.ylabel('Soma Vm (mV)')

    plt.figure(facecolor='w')
    plt.plot(tvec, channel_Ik.vector, color='b', linestyle='solid')
    plt.title('KCa current; Ca conc')
    plt.xlabel('time (s)')
    plt.ylabel('Ik (Amp)')
    plt.twinx()
    plt.plot(tvec, capool_Ca.vector, color='r', linestyle='solid')
    plt.ylabel('Ca (mol/m^3)')

    plt.figure(facecolor='w')
    plt.plot(tvec, syn_Ik.vector, color='b', linestyle='solid')
    plt.title('Ach syn current in ' + soma2_path)
    plt.xlabel('time (s)')
    plt.ylabel('Isyn (S)')
    print "Showing plots ..."

    plt.show()