You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#!/usr/bin/env python3"""Create a simple network with two populations."""importrandomimportnumpyasnpfromneuroml.utilsimportcomponent_factoryfrompyneuromlimportpynmlfrompyneuroml.lemsimportLEMSSimulationimportneuroml.writersaswritersnml_doc=component_factory("NeuroMLDocument", id="IzNet")
iz0=nml_doc.add(
"Izhikevich2007Cell",
id="iz2007RS0",
v0="-60mV",
C="100pF",
k="0.7nS_per_mV",
vr="-60mV",
vt="-40mV",
vpeak="35mV",
a="0.03per_ms",
b="-2nS",
c="-50.0mV",
d="100pA",
)
# Inspect the component, also show all members:iz0.info(True)
# Create a component of type ExpOneSynapse, and add it to the documentsyn0=nml_doc.add(
"ExpOneSynapse", id="syn0", gbase="65nS", erev="0mV", tau_decay="3ms"
)
# Check what we have so far:nml_doc.info(True)
# Also try:print(nml_doc.summary())
# create the network: turned of validation because we will add populations nextnet=nml_doc.add("Network", id="IzNet", validate=False)
# create the first populationsize0=5pop0=component_factory("Population", id="IzPop0", component=iz0.id, size=size0)
# Set optional color property. Note: used later when generating plotspop0.add("Property", tag="color", value="0 0 .8")
net.add(pop0)
# create the second populationsize1=5pop1=component_factory("Population", id="IzPop1", component=iz0.id, size=size1)
pop1.add("Property", tag="color", value=".8 0 0")
net.add(pop1)
# network should be valid now that it contains populationsnet.validate()
# create a projection from one population to anotherproj=net.add(
"Projection",
id="proj",
presynaptic_population=pop0.id,
postsynaptic_population=pop1.id,
synapse=syn0.id,
)
# We do two things in the loop:# - add pulse generator inputs to population 1 to make neurons spike# - create synapses between the two populations with a particular probabilityrandom.seed(123)
prob_connection=0.8count=0forpreinrange(0, size0):
# pulse generator as explicit stimuluspg=nml_doc.add(
"PulseGenerator",
id="pg_%i"%pre,
delay="0ms",
duration="10000ms",
amplitude="%f nA"% (0.1+0.1*random.random()),
)
exp_input=net.add(
"ExplicitInput", target="%s[%i]"% (pop0.id, pre), input=pg.id
)
# synapses between populationsforpostinrange(0, size1):
ifrandom.random() <=prob_connection:
syn=proj.add(
"Connection",
id=count,
pre_cell_id="../%s[%i]"% (pop0.id, pre),
post_cell_id="../%s[%i]"% (pop1.id, post),
)
count+=1nml_doc.info(True)
print(nml_doc.summary())
# write model to file and validatenml_file="izhikevich2007_network.nml"writers.NeuroMLWriter.write(nml_doc, nml_file)
print("Written network file to: "+nml_file)
pynml.validate_neuroml2(nml_file)
# Create simulation, and record datasimulation_id="example_izhikevich2007network_sim"simulation=LEMSSimulation(
sim_id=simulation_id, duration=1000, dt=0.1, simulation_seed=123
)
simulation.assign_simulation_target(net.id)
simulation.include_neuroml2_file(nml_file)
simulation.create_event_output_file(
"pop0", "%s.0.spikes.dat"%simulation_id, format="ID_TIME"
)
forpreinrange(0, size0):
simulation.add_selection_to_event_output_file(
"pop0", pre, "IzPop0[{}]".format(pre), "spike"
)
simulation.create_event_output_file(
"pop1", "%s.1.spikes.dat"%simulation_id, format="ID_TIME"
)
forpreinrange(0, size1):
simulation.add_selection_to_event_output_file(
"pop1", pre, "IzPop1[{}]".format(pre), "spike"
)
lems_simulation_file=simulation.save_to_file()
# Run the simulationpynml.run_lems_with_jneuroml(
lems_simulation_file, max_memory="2G", nogui=True, plot=False
)
# Load the data from the file and plot the spike times# using the pynml generate_plot utility function.data_array_0=np.loadtxt("%s.0.spikes.dat"%simulation_id)
data_array_1=np.loadtxt("%s.1.spikes.dat"%simulation_id)
times_0=data_array_0[:, 1]
times_1=data_array_1[:, 1]
ids_0=data_array_0[:, 0]
ids_1= [id+size0foridindata_array_1[:, 0]]
pynml.generate_plot(
[times_0, times_1],
[ids_0, ids_1],
"Spike times",
show_plot_already=False,
save_figure_to="%s-spikes.png"%simulation_id,
xaxis="time (s)",
yaxis="cell ID",
colors=["b", "r"],
linewidths=["0", "0"],
markers=[".", "."],
)
Output (failure):
pyNeuroML >>> INFO - Loading NeuroML2 file: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/izhikevich2007_network.nml
pyNeuroML >>> INFO - Loading LEMS file: LEMS_example_izhikevich2007network_sim.xml and running with jNeuroML
pyNeuroML >>> INFO - Executing: (java -Xmx2G -Djava.awt.headless=true -jar "/home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/.venv/lib/python3.10/site-packages/pyneuroml/lib/jNeuroML-0.12.0-jar-with-dependencies.jar" "LEMS_example_izhikevich2007network_sim.xml" -nogui -I '') in directory: .
pyNeuroML >>> CRITICAL - *** Problem running command:
Command 'java -Xmx2G -Djava.awt.headless=true -jar "/home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/.venv/lib/python3.10/site-packages/pyneuroml/lib/jNeuroML-0.12.0-jar-with-dependencies.jar" "LEMS_example_izhikevich2007network_sim.xml" -nogui -I ''' returned non-zero exit status 1.
pyNeuroML >>> CRITICAL - jNeuroML >> jNeuroML v0.12.0
jNeuroML >> Loading: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml with jLEMS, NO GUI mode...
jNeuroML >> org.lemsml.jlems.core.run.ConnectionError: Can't get predicate [0] from IzPop0[population], original path: ../IzPop0[0]
jNeuroML >> component has singeMI=false
jNeuroML >> at org.lemsml.jlems.core.sim.RunnableAccessor.getRelativeStateInstance(RunnableAccessor.java:140)
jNeuroML >> at org.lemsml.jlems.core.run.WithBuilder.postBuild(WithBuilder.java:37)
jNeuroML >> at org.lemsml.jlems.core.run.Builder.postBuild(Builder.java:25)
jNeuroML >> at org.lemsml.jlems.core.run.StateType.build(StateType.java:340)
jNeuroML >> at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1187)
jNeuroML >> at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1199)
jNeuroML >> at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1199)
jNeuroML >> at org.lemsml.jlems.core.type.Lems.build(Lems.java:359)
jNeuroML >> at org.lemsml.jlems.core.sim.Sim.run(Sim.java:232)
jNeuroML >> at org.lemsml.jlems.core.sim.Sim.run(Sim.java:154)
jNeuroML >> at org.lemsml.jlems.core.sim.Sim.run(Sim.java:145)
jNeuroML >> at org.neuroml.export.utils.Utils.loadLemsFile(Utils.java:527)
jNeuroML >> at org.neuroml.export.utils.Utils.runLemsFile(Utils.java:493)
jNeuroML >> at org.neuroml.JNeuroML.main(JNeuroML.java:606)
jNeuroML >> INFO Oct 19,2022 13:17 (INFO) Loading LEMS file from: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml
jNeuroML >> INFO Oct 19,2022 13:17 (INFO) Reading from: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml
jNeuroML >>
pyNeuroML >>> ERROR - execute_command_in_dir returned with output: jNeuroML v0.12.0
Loading: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml with jLEMS, NO GUI mode...
org.lemsml.jlems.core.run.ConnectionError: Can't get predicate [0] from IzPop0[population], original path: ../IzPop0[0]
component has singeMI=false
at org.lemsml.jlems.core.sim.RunnableAccessor.getRelativeStateInstance(RunnableAccessor.java:140)
at org.lemsml.jlems.core.run.WithBuilder.postBuild(WithBuilder.java:37)
at org.lemsml.jlems.core.run.Builder.postBuild(Builder.java:25)
at org.lemsml.jlems.core.run.StateType.build(StateType.java:340)
at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1187)
at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1199)
at org.lemsml.jlems.core.run.StateInstance.checkBuilt(StateInstance.java:1199)
at org.lemsml.jlems.core.type.Lems.build(Lems.java:359)
at org.lemsml.jlems.core.sim.Sim.run(Sim.java:232)
at org.lemsml.jlems.core.sim.Sim.run(Sim.java:154)
at org.lemsml.jlems.core.sim.Sim.run(Sim.java:145)
at org.neuroml.export.utils.Utils.loadLemsFile(Utils.java:527)
at org.neuroml.export.utils.Utils.runLemsFile(Utils.java:493)
at org.neuroml.JNeuroML.main(JNeuroML.java:606)
INFO Oct 19,2022 13:17 (INFO) Loading LEMS file from: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml
INFO Oct 19,2022 13:17 (INFO) Reading from: /home/asinha/Documents/02_Code/00_mine/NeuroML/documentation/source/Userdocs/NML2_examples/LEMS_example_izhikevich2007network_sim.xml
It runs fine if one uses the NEURON simulation backend. To make it run in jneuroml/jlems, one needs to remove the property tag for the two populations.
The addition of the property tag to the population makes seems to set singleAMI to false. I think this is being his is being set here in countMIs on the basis of the size of multiA:
Python script:
Output (failure):
It runs fine if one uses the NEURON simulation backend. To make it run in jneuroml/jlems, one needs to remove the
property
tag for the two populations.Analysis (short!)
This is where the error message is generated:
https://github.com/LEMS/jLEMS/blob/master/src/main/java/org/lemsml/jlems/core/sim/RunnableAccessor.java#L139
The addition of the
property
tag to the population makes seems to setsingleAMI
tofalse
. I think this is being his is being set here incountMIs
on the basis of the size ofmultiA
:https://github.com/LEMS/jLEMS/blob/master/src/main/java/org/lemsml/jlems/core/run/StateInstance.java#L788
The text was updated successfully, but these errors were encountered: