Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
moose
Manage
Activity
Members
Labels
Plan
Issues
9
Issue boards
Milestones
Wiki
Code
Merge requests
2
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Sahil Moza
moose
Commits
7b389f6f
Commit
7b389f6f
authored
7 years ago
by
Dhruva Gowda Storz
Browse files
Options
Downloads
Patches
Plain Diff
uploaded fixed compartment_net.py without all my comments
parent
c519c825
No related branches found
Branches containing commit
No related tags found
Tags containing commit
2 merge requests
!233
Documentation update 2
,
!225
Documentation update #1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
moose-examples/snippets/compartment_net.py
+20
-22
20 additions, 22 deletions
moose-examples/snippets/compartment_net.py
with
20 additions
and
22 deletions
moose-examples/snippets/compartment_net.py
+
20
−
22
View file @
7b389f6f
...
...
@@ -65,23 +65,22 @@ 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
)
#creates population of 1comp_neurons as per ionchannel.py
synpath
=
path
+
'
/synchan
'
#path under container
comps
=
create_1comp_neuron
(
'
{}/neuron
'
.
format
(
path
),
number
=
size
)
synpath
=
path
+
'
/synchan
'
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
'
)
#connect neupop to channel with 1to1 connections
m
=
moose
.
connect
(
comps
,
'
channel
'
,
synchan
,
'
channel
'
,
'
OneToOne
'
)
synhandler
=
moose
.
vec
(
'
{}/synhandler
'
.
format
(
path
),
n
=
size
,
dtype
=
'
SimpleSynHandler
'
)
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?
moose
.
connect
(
synhandler
,
'
activationOut
'
,
synchan
,
'
activation
'
,
'
OneToOne
'
)
spikegen
=
moose
.
vec
(
'
{}/spikegen
'
.
format
(
path
),
n
=
size
,
dtype
=
'
SpikeGen
'
)
spikegen
.
threshold
=
0.0
m
=
moose
.
connect
(
comps
,
'
VmOut
'
,
spikegen
,
'
Vm
'
,
'
OneToOne
'
)
#connect neurons to spikegens.
m
=
moose
.
connect
(
comps
,
'
VmOut
'
,
spikegen
,
'
Vm
'
,
'
OneToOne
'
)
return
{
'
compartment
'
:
comps
,
'
spikegen
'
:
spikegen
,
'
synchan
'
:
synchan
,
'
synhandler
'
:
synhandler
}
...
...
@@ -105,12 +104,12 @@ delay: float (mean delay of synaptic transmission)
"""
for
sh
in
synhandler
:
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
#
scount
=
len
(
spikegen
)
sh
.
synapse
.
num
=
scount
sh
.
synapse
.
vec
.
delay
=
5e-3
for
ii
,
syn
in
enumerate
(
sh
.
synapse
):
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
msg
=
moose
.
connect
(
spikegen
[
ii
],
'
spikeOut
'
,
syn
,
'
addSpike
'
)
print
((
'
Connected
'
,
spikegen
[
ii
].
path
,
'
to
'
,
syn
.
path
,
'
on
'
,
sh
.
path
))
def
create_network
(
size
=
2
):
"""
...
...
@@ -118,10 +117,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
)
#calls previously defined method to create pop a
pop_a
=
create_population
(
moose
.
Neutral
(
'
/network/pop_A
'
),
size
)
print
(
pop_a
)
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
pop_b
=
create_population
(
moose
.
Neutral
(
'
/network/pop_B
'
),
size
)
make_synapses
(
pop_a
[
'
spikegen
'
],
pop_b
[
'
synhandler
'
])
pulse
=
moose
.
PulseGen
(
'
pulse
'
)
pulse
.
level
[
0
]
=
1e-9
pulse
.
delay
[
0
]
=
0.02
# disable the pulsegen
...
...
@@ -129,10 +128,9 @@ 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
'
)
#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
(
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
(
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
'
)
...
...
@@ -143,7 +141,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
():
"""
...
...
@@ -151,8 +149,6 @@ 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
...
...
@@ -180,6 +176,8 @@ def main():
plt
.
legend
()
plt
.
show
()
if
__name__
==
'
__main__
'
:
main
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment