From c519c825924412d870943f8d6f93b0d3e7b45a53 Mon Sep 17 00:00:00 2001 From: Dhruva Gowda Storz <dhruvastorz@gmail.com> Date: Wed, 20 Dec 2017 17:12:56 +0530 Subject: [PATCH] Added autorun statement to Compartment_net.py. removed pyrun1.py documentation as it is exactly the same as pyrun.py. updated vec information in quickstart to reflect actual ouput. --- docs/source/user/py/quickstart/demos.rst | 4 +- .../user/py/quickstart/moose_quickstart.rst | 6 +-- moose-examples/snippets/compartment_net.py | 43 +++++++++++-------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/docs/source/user/py/quickstart/demos.rst b/docs/source/user/py/quickstart/demos.rst index 390d05fb..6614ac95 100644 --- a/docs/source/user/py/quickstart/demos.rst +++ b/docs/source/user/py/quickstart/demos.rst @@ -45,7 +45,7 @@ Run Python from MOOSE .. automodule:: pyrun :members: -.. automodule:: pyrun1 - :members: +.. automodule: pyrun1 +.. :members: .. _quickstart-classes: diff --git a/docs/source/user/py/quickstart/moose_quickstart.rst b/docs/source/user/py/quickstart/moose_quickstart.rst index 0663c443..1df78de7 100644 --- a/docs/source/user/py/quickstart/moose_quickstart.rst +++ b/docs/source/user/py/quickstart/moose_quickstart.rst @@ -641,9 +641,9 @@ loop through the elements in an ``vec`` like a Python list :: shows :: - /model/comp[0] <type 'moose.melement'> - /model/comp[1] <type 'moose.melement'> - /model/comp[2] <type 'moose.melement'> + /model[0]/comp[0] <type 'moose.Compartment'> + /model[0]/comp[1] <type 'moose.Compartment'> + /model[0]/comp[2] <type 'moose.Compartment'> Thus elements are instances of class ``melement``. All elements in an ``vec`` share the ``id_`` of the ``vec`` which can retrieved by diff --git a/moose-examples/snippets/compartment_net.py b/moose-examples/snippets/compartment_net.py index 55b95f54..9bb1c5bf 100644 --- a/moose-examples/snippets/compartment_net.py +++ b/moose-examples/snippets/compartment_net.py @@ -65,22 +65,23 @@ def create_population(container, size): This uses **ionchannel.create_1comp_neuron**. """ + #I imagine that layers in a network will consist of such populations path = container.path print((path, size, type(path))) - comps = create_1comp_neuron('{}/neuron'.format(path), number=size) - synpath = path+'/synchan' + comps = create_1comp_neuron('{}/neuron'.format(path), number=size) #creates population of 1comp_neurons as per ionchannel.py + synpath = path+'/synchan' #path under container print((synpath, size, type(size))) synchan = moose.vec(synpath, n=size, dtype='SynChan') synchan.Gbar = 1e-8 synchan.tau1 = 2e-3 synchan.tau2 = 2e-3 - m = moose.connect(comps, 'channel', synchan, 'channel', 'OneToOne') + m = moose.connect(comps, 'channel', synchan, 'channel', 'OneToOne') #connect neupop to channel with 1to1 connections synhandler = moose.vec('{}/synhandler'.format(path), n=size, dtype='SimpleSynHandler') - moose.connect(synhandler, 'activationOut', synchan, 'activation', 'OneToOne') - spikegen = moose.vec('{}/spikegen'.format(path), n=size, dtype='SpikeGen') + moose.connect(synhandler, 'activationOut', synchan, 'activation', 'OneToOne') #connect handler - channel + spikegen = moose.vec('{}/spikegen'.format(path), n=size, dtype='SpikeGen') #create spikegen through vec. Bu why? spikegen.threshold = 0.0 - m = moose.connect(comps, 'VmOut', spikegen, 'Vm', 'OneToOne') + m = moose.connect(comps, 'VmOut', spikegen, 'Vm', 'OneToOne') #connect neurons to spikegens. return {'compartment': comps, 'spikegen': spikegen, 'synchan': synchan, 'synhandler': synhandler} @@ -104,12 +105,12 @@ delay: float (mean delay of synaptic transmission) """ for sh in synhandler: - scount = len(spikegen) - sh.synapse.num = scount - sh.synapse.vec.delay = 5e-3 + scount = len(spikegen)#len(spikegen) = number of spikegens? AKA no. of vecs? + sh.synapse.num = scount #sets number of synapses equal to number of spikegens. Only need one synhandler then? + sh.synapse.vec.delay = 5e-3 # for ii, syn in enumerate(sh.synapse): - msg = moose.connect(spikegen[ii], 'spikeOut', syn, 'addSpike') - print(('Connected', spikegen[ii].path, 'to', syn.path, 'on', sh.path)) + msg = moose.connect(spikegen[ii], 'spikeOut', syn, 'addSpike') #for each synapse, connect each spikegen to each synapse one to one + print(('Connected', spikegen[ii].path, 'to', syn.path, 'on', sh.path)) #flavour text def create_network(size=2): """ @@ -117,10 +118,10 @@ def create_network(size=2): pop_B and connect them up. """ net = moose.Neutral('network') - pop_a = create_population(moose.Neutral('/network/pop_A'), size) + pop_a = create_population(moose.Neutral('/network/pop_A'), size) #calls previously defined method to create pop a print(pop_a) - pop_b = create_population(moose.Neutral('/network/pop_B'), size) - make_synapses(pop_a['spikegen'], pop_b['synhandler']) + pop_b = create_population(moose.Neutral('/network/pop_B'), size) #create second population (like a layer I guess?) + make_synapses(pop_a['spikegen'], pop_b['synhandler']) #connects spikegens of population a to new synapses connected to synhandler of population b pulse = moose.PulseGen('pulse') pulse.level[0] = 1e-9 pulse.delay[0] = 0.02 # disable the pulsegen @@ -128,9 +129,10 @@ def create_network(size=2): pulse.delay[1] = 1e9 data = moose.Neutral('/data') vm_a = moose.Table('/data/Vm_A', n=size) - moose.connect(pulse, 'output', pop_a['compartment'], 'injectMsg', 'OneToAll') - moose.connect(vm_a, 'requestOut', pop_a['compartment'], 'getVm', 'OneToOne') - vm_b = moose.Table('/data/Vm_B', size) + moose.connect(pulse, 'output', pop_a['compartment'], 'injectMsg', 'OneToAll') #connects pulsegen to pop a) #1 to all here means it connect + # s the single pulsegen to all neurons in pop a + moose.connect(vm_a, 'requestOut', pop_a['compartment'], 'getVm', 'OneToOne') #connects table to pop a + vm_b = moose.Table('/data/Vm_B', size) # moose.connect(vm_b, 'requestOut', pop_b['compartment'], 'getVm', 'OneToOne') gksyn_b = moose.Table('/data/Gk_syn_b', n=size) moose.connect(gksyn_b, 'requestOut', pop_b['synchan'], 'getGk', 'OneToOne') @@ -141,7 +143,7 @@ def create_network(size=2): 'Vm_A': vm_a, 'Vm_B': vm_b, 'Gsyn_B': gksyn_b - } + } #return dict object with all the created objects within. def main(): """ @@ -149,6 +151,8 @@ def main(): connected via alpha synapses. It also shows the use of SynChan class to create a network of single-compartment neurons connected by synapse. """ + + ##main is mostly clocksetting, method calling and plotting simtime = 0.1 simdt = 0.25e-5 plotdt = 0.25e-3 @@ -176,6 +180,9 @@ def main(): plt.legend() plt.show() +if __name__ == '__main__': + main() + # # compartment_net.py ends here -- GitLab