From 477b41995b32959c59f711097f74050909ec213c Mon Sep 17 00:00:00 2001 From: pgleeson Date: Thu, 14 Sep 2023 18:21:03 +0100 Subject: [PATCH 1/3] Update to v0.5.7 --- docs/NeuroMLlite_specification.json | 2 +- docs/NeuroMLlite_specification.yaml | 2 +- docs/README.md | 2 +- examples/Example10_Lorenz.json | 2 +- examples/Example11_Synapses.json | 2 +- examples/Example11_Synapses.net.nml | 2 +- examples/Example12_MultiComp.json | 2 +- examples/Example1_TestNetwork.json | 2 +- examples/Example2_TestNetwork.json | 2 +- examples/Example2_TestNetwork.net.nml | 2 +- examples/Example3_Network.json | 2 +- examples/Example3_Network.net.nml | 2 +- examples/Example4_PyNN.json | 2 +- examples/Example4_PyNN.net.nml | 2 +- examples/Example4_PyNN.yaml | 2 +- examples/Example6_PyNN.json | 2 +- examples/Example6_PyNN.net.nml | 2 +- examples/Example6_PyNN_noinputs.json | 2 +- examples/Example6_PyNN_noinputs.net.nml | 2 +- examples/Example7_Brunel2000.json | 2 +- examples/Example7_Brunel2000.net.nml | 2 +- examples/Example8_Extension.json | 2 +- examples/Example9_HindmarshRose.json | 2 +- examples/SimExample10.json | 2 +- examples/SimExample11.json | 2 +- examples/SimExample12_MultiComp.json | 2 +- examples/SimExample3.json | 2 +- examples/SimExample4.json | 2 +- examples/SimExample4.yaml | 2 +- examples/SimExample6_PyNN.json | 2 +- examples/SimExample7.json | 2 +- examples/SimExample8.json | 2 +- examples/SimExample9.json | 2 +- examples/arbor/ArborExample.json | 2 +- examples/arbor/ArborExample.yaml | 2 +- examples/arbor/SimArborExample.json | 2 +- examples/arbor/SimArborExample.yaml | 2 +- examples/spikeratetest/SimSpikers.json | 2 +- examples/spikeratetest/Spikers.json | 2 +- neuromllite/__init__.py | 2 +- 40 files changed, 40 insertions(+), 40 deletions(-) diff --git a/docs/NeuroMLlite_specification.json b/docs/NeuroMLlite_specification.json index 97e83be..48f192e 100644 --- a/docs/NeuroMLlite_specification.json +++ b/docs/NeuroMLlite_specification.json @@ -1,5 +1,5 @@ { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "specification": { "Network": { "definition": "A Network containing multiple Population's, connected by Projection's and receiving Input's", diff --git a/docs/NeuroMLlite_specification.yaml b/docs/NeuroMLlite_specification.yaml index b06e069..c05d843 100644 --- a/docs/NeuroMLlite_specification.yaml +++ b/docs/NeuroMLlite_specification.yaml @@ -1,4 +1,4 @@ -version: NeuroMLlite v0.5.6 +version: NeuroMLlite v0.5.7 specification: Network: definition: A Network containing multiple Population's, connected by Projection's diff --git a/docs/README.md b/docs/README.md index 21c7b9d..1833050 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# Specification of NeuroMLlite v0.5.6 +# Specification of NeuroMLlite v0.5.7 **Note: the NeuroMLlite specification is still in development! Subject to change...** ## Network diff --git a/examples/Example10_Lorenz.json b/examples/Example10_Lorenz.json index cf08693..5380a74 100644 --- a/examples/Example10_Lorenz.json +++ b/examples/Example10_Lorenz.json @@ -1,6 +1,6 @@ { "Example10_Lorenz": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 10: Lorenz", "parameters": { "N": 1, diff --git a/examples/Example11_Synapses.json b/examples/Example11_Synapses.json index 38a13b2..e8a3ace 100644 --- a/examples/Example11_Synapses.json +++ b/examples/Example11_Synapses.json @@ -1,6 +1,6 @@ { "Example11_Synapses": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 11: synaptic properties", "parameters": { "input_amp": 0.23, diff --git a/examples/Example11_Synapses.net.nml b/examples/Example11_Synapses.net.nml index f0ba49c..34f2db2 100644 --- a/examples/Example11_Synapses.net.nml +++ b/examples/Example11_Synapses.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example11_Synapses Generation seed: 1234 NeuroMLlite parameters: diff --git a/examples/Example12_MultiComp.json b/examples/Example12_MultiComp.json index d3e8b64..899d352 100644 --- a/examples/Example12_MultiComp.json +++ b/examples/Example12_MultiComp.json @@ -1,6 +1,6 @@ { "Example12_MultiComp": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 12: Multicompartmental cells...", "parameters": { "N": 20, diff --git a/examples/Example1_TestNetwork.json b/examples/Example1_TestNetwork.json index 42b2e44..76a405a 100644 --- a/examples/Example1_TestNetwork.json +++ b/examples/Example1_TestNetwork.json @@ -1,6 +1,6 @@ { "TestNetwork": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "A simple network with 2 populations & projection between them. No info yet on what the cells are so network can't be simulated.", "populations": { "pop0": { diff --git a/examples/Example2_TestNetwork.json b/examples/Example2_TestNetwork.json index 1621a12..42e386d 100644 --- a/examples/Example2_TestNetwork.json +++ b/examples/Example2_TestNetwork.json @@ -1,6 +1,6 @@ { "Example2_TestNetwork": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "A simple network with 2 populations & projection between them. Cells are specified to be NeuroML 2 HH cell models & pre population is given a spiking input.", "cells": { "hhcell": { diff --git a/examples/Example2_TestNetwork.net.nml b/examples/Example2_TestNetwork.net.nml index 24ba6e2..e1de4e8 100644 --- a/examples/Example2_TestNetwork.net.nml +++ b/examples/Example2_TestNetwork.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example2_TestNetwork Generation seed: 1234 diff --git a/examples/Example3_Network.json b/examples/Example3_Network.json index a40d1c2..a323ac5 100644 --- a/examples/Example3_Network.json +++ b/examples/Example3_Network.json @@ -1,6 +1,6 @@ { "Example3_Network": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 3: simple network with 2 populations of NeuroML2 cells, a projection between them and spiking input.", "cells": { "hhcell": { diff --git a/examples/Example3_Network.net.nml b/examples/Example3_Network.net.nml index 72236a8..8993003 100644 --- a/examples/Example3_Network.net.nml +++ b/examples/Example3_Network.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example3_Network Generation seed: 1234 diff --git a/examples/Example4_PyNN.json b/examples/Example4_PyNN.json index 2c09034..69ae655 100644 --- a/examples/Example4_PyNN.json +++ b/examples/Example4_PyNN.json @@ -1,6 +1,6 @@ { "Example4_PyNN": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 4: a network with PyNN cells & inputs", "parameters": { "input_amp": 0.99 diff --git a/examples/Example4_PyNN.net.nml b/examples/Example4_PyNN.net.nml index 434c3c1..20d156f 100644 --- a/examples/Example4_PyNN.net.nml +++ b/examples/Example4_PyNN.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example4_PyNN Generation seed: 1234 NeuroMLlite parameters: diff --git a/examples/Example4_PyNN.yaml b/examples/Example4_PyNN.yaml index 200020e..b9895fb 100644 --- a/examples/Example4_PyNN.yaml +++ b/examples/Example4_PyNN.yaml @@ -1,5 +1,5 @@ Example4_PyNN: - version: NeuroMLlite v0.5.6 + version: NeuroMLlite v0.5.7 notes: 'Example 4: a network with PyNN cells & inputs' parameters: input_amp: 0.99 diff --git a/examples/Example6_PyNN.json b/examples/Example6_PyNN.json index 69a2c69..90719f4 100644 --- a/examples/Example6_PyNN.json +++ b/examples/Example6_PyNN.json @@ -1,6 +1,6 @@ { "Example6_PyNN": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Another network for PyNN - work in progress...", "parameters": { "N_scaling": 0.005, diff --git a/examples/Example6_PyNN.net.nml b/examples/Example6_PyNN.net.nml index 1baf9de..4fe9d45 100644 --- a/examples/Example6_PyNN.net.nml +++ b/examples/Example6_PyNN.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example6_PyNN Generation seed: 1234 NeuroMLlite parameters: diff --git a/examples/Example6_PyNN_noinputs.json b/examples/Example6_PyNN_noinputs.json index b1d1739..a141bf4 100644 --- a/examples/Example6_PyNN_noinputs.json +++ b/examples/Example6_PyNN_noinputs.json @@ -1,6 +1,6 @@ { "Example6_PyNN_noinputs": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Another network for PyNN - work in progress...", "parameters": { "N_scaling": 0.005, diff --git a/examples/Example6_PyNN_noinputs.net.nml b/examples/Example6_PyNN_noinputs.net.nml index 1532ac5..acc00d0 100644 --- a/examples/Example6_PyNN_noinputs.net.nml +++ b/examples/Example6_PyNN_noinputs.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example6_PyNN_noinputs Generation seed: 1234 NeuroMLlite parameters: diff --git a/examples/Example7_Brunel2000.json b/examples/Example7_Brunel2000.json index e4c6507..1876d95 100644 --- a/examples/Example7_Brunel2000.json +++ b/examples/Example7_Brunel2000.json @@ -1,6 +1,6 @@ { "Example7_Brunel2000": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 7: based on network of Brunel 2000", "parameters": { "g": 4, diff --git a/examples/Example7_Brunel2000.net.nml b/examples/Example7_Brunel2000.net.nml index 5a0fe13..767a913 100644 --- a/examples/Example7_Brunel2000.net.nml +++ b/examples/Example7_Brunel2000.net.nml @@ -1,5 +1,5 @@ - Generated by NeuroMLlite v0.5.6 + Generated by NeuroMLlite v0.5.7 Generated network: Example7_Brunel2000 Generation seed: 1234 NeuroMLlite parameters: diff --git a/examples/Example8_Extension.json b/examples/Example8_Extension.json index a8a8802..ca00411 100644 --- a/examples/Example8_Extension.json +++ b/examples/Example8_Extension.json @@ -1,6 +1,6 @@ { "Example8_Extension": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 8: general testing...", "parameters": { "N": 10, diff --git a/examples/Example9_HindmarshRose.json b/examples/Example9_HindmarshRose.json index 981d927..7792ec6 100644 --- a/examples/Example9_HindmarshRose.json +++ b/examples/Example9_HindmarshRose.json @@ -1,6 +1,6 @@ { "Example9_HindmarshRose": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example 9: HindmarshRose", "parameters": { "N": 1, diff --git a/examples/SimExample10.json b/examples/SimExample10.json index 9db7fb2..3326ea9 100644 --- a/examples/SimExample10.json +++ b/examples/SimExample10.json @@ -1,6 +1,6 @@ { "SimExample10": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example10_Lorenz.json", "duration": 10000.0, "dt": 1.0, diff --git a/examples/SimExample11.json b/examples/SimExample11.json index 9e0e83d..e816096 100644 --- a/examples/SimExample11.json +++ b/examples/SimExample11.json @@ -1,6 +1,6 @@ { "SimExample11": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example11_Synapses.json", "duration": 1000.0, "dt": 0.01, diff --git a/examples/SimExample12_MultiComp.json b/examples/SimExample12_MultiComp.json index b3d3027..7833778 100644 --- a/examples/SimExample12_MultiComp.json +++ b/examples/SimExample12_MultiComp.json @@ -1,6 +1,6 @@ { "SimExample12_MultiComp": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example12_MultiComp.json", "duration": 1000.0, "dt": 0.025, diff --git a/examples/SimExample3.json b/examples/SimExample3.json index 014f679..30e11d9 100644 --- a/examples/SimExample3.json +++ b/examples/SimExample3.json @@ -1,6 +1,6 @@ { "SimExample3": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example3_Network.json", "duration": 1000.0, "dt": 0.025, diff --git a/examples/SimExample4.json b/examples/SimExample4.json index b6c3b77..309083d 100644 --- a/examples/SimExample4.json +++ b/examples/SimExample4.json @@ -1,6 +1,6 @@ { "SimExample4": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example4_PyNN.json", "duration": 1000.0, "dt": 0.01, diff --git a/examples/SimExample4.yaml b/examples/SimExample4.yaml index cafde8c..875fcf9 100644 --- a/examples/SimExample4.yaml +++ b/examples/SimExample4.yaml @@ -1,5 +1,5 @@ SimExample4: - version: NeuroMLlite v0.5.6 + version: NeuroMLlite v0.5.7 network: Example4_PyNN.yaml duration: 1000.0 dt: 0.01 diff --git a/examples/SimExample6_PyNN.json b/examples/SimExample6_PyNN.json index dde062c..a0686d6 100644 --- a/examples/SimExample6_PyNN.json +++ b/examples/SimExample6_PyNN.json @@ -1,6 +1,6 @@ { "SimExample6_PyNN": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example6_PyNN.json", "duration": 100.0, "dt": 0.025, diff --git a/examples/SimExample7.json b/examples/SimExample7.json index 7b64fb2..b827ae4 100644 --- a/examples/SimExample7.json +++ b/examples/SimExample7.json @@ -1,6 +1,6 @@ { "SimExample7": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example7_Brunel2000.json", "duration": 1000.0, "dt": 0.025, diff --git a/examples/SimExample8.json b/examples/SimExample8.json index ee18df1..e7924ab 100644 --- a/examples/SimExample8.json +++ b/examples/SimExample8.json @@ -1,6 +1,6 @@ { "SimExample8": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example8_Extension.json", "duration": 1000.0, "dt": 0.025, diff --git a/examples/SimExample9.json b/examples/SimExample9.json index 76b663f..31eefa7 100644 --- a/examples/SimExample9.json +++ b/examples/SimExample9.json @@ -1,6 +1,6 @@ { "SimExample9": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Example9_HindmarshRose.json", "duration": 1000000.0, "dt": 25.0, diff --git a/examples/arbor/ArborExample.json b/examples/arbor/ArborExample.json index bd5482a..3b7acec 100644 --- a/examples/arbor/ArborExample.json +++ b/examples/arbor/ArborExample.json @@ -1,6 +1,6 @@ { "ArborExample": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example for testing Arbor", "parameters": { "v_init": -50, diff --git a/examples/arbor/ArborExample.yaml b/examples/arbor/ArborExample.yaml index 8eec8be..f3d8586 100644 --- a/examples/arbor/ArborExample.yaml +++ b/examples/arbor/ArborExample.yaml @@ -1,5 +1,5 @@ ArborExample: - version: NeuroMLlite v0.5.6 + version: NeuroMLlite v0.5.7 notes: Example for testing Arbor parameters: v_init: -50 diff --git a/examples/arbor/SimArborExample.json b/examples/arbor/SimArborExample.json index ed7049a..ca27e3b 100644 --- a/examples/arbor/SimArborExample.json +++ b/examples/arbor/SimArborExample.json @@ -1,6 +1,6 @@ { "SimArborExample": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "ArborExample.json", "duration": 100.0, "dt": 0.01, diff --git a/examples/arbor/SimArborExample.yaml b/examples/arbor/SimArborExample.yaml index 499e559..6951a5b 100644 --- a/examples/arbor/SimArborExample.yaml +++ b/examples/arbor/SimArborExample.yaml @@ -1,5 +1,5 @@ SimArborExample: - version: NeuroMLlite v0.5.6 + version: NeuroMLlite v0.5.7 network: ArborExample.yaml duration: 100.0 dt: 0.01 diff --git a/examples/spikeratetest/SimSpikers.json b/examples/spikeratetest/SimSpikers.json index 330a9ad..65b72b0 100644 --- a/examples/spikeratetest/SimSpikers.json +++ b/examples/spikeratetest/SimSpikers.json @@ -1,6 +1,6 @@ { "SimSpikers": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "network": "Spikers.json", "duration": 10000.0, "dt": 0.025, diff --git a/examples/spikeratetest/Spikers.json b/examples/spikeratetest/Spikers.json index 4f6f83e..9ce401e 100644 --- a/examples/spikeratetest/Spikers.json +++ b/examples/spikeratetest/Spikers.json @@ -1,6 +1,6 @@ { "Spikers": { - "version": "NeuroMLlite v0.5.6", + "version": "NeuroMLlite v0.5.7", "notes": "Example with spiking entities..", "parameters": { "N": 10, diff --git a/neuromllite/__init__.py b/neuromllite/__init__.py index 8e6cb7f..ca81abc 100644 --- a/neuromllite/__init__.py +++ b/neuromllite/__init__.py @@ -1,6 +1,6 @@ import collections -__version__ = "0.5.6" +__version__ = "0.5.7" # import pyNN # import nest From c87a2a4fd4f4279566764d7124deb6ded9286ea9 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Thu, 14 Sep 2023 18:21:20 +0100 Subject: [PATCH 2/3] Test validity of more nml files --- examples/test_files/.test.validate.omt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/test_files/.test.validate.omt b/examples/test_files/.test.validate.omt index 3f0f9e9..14ba677 100644 --- a/examples/test_files/.test.validate.omt +++ b/examples/test_files/.test.validate.omt @@ -1,5 +1,5 @@ # Script for running automated tests on OSB using Travis-CI, see https://github.com/OpenSourceBrain/osb-model-validation # This test will validate all of the NeuroML 2 files in the current directory using: jnml -validate *.nml -target: "*.nml" +target: "../Example2_TestNetwork.net.nml ../Example3_Network.net.nml ../Example4_PyNN.net.nml ../Example6_PyNN.net.nml ../Example7_Brunel2000.net.nml ../Example12_MultiComp.net.nml *.nml" engine: jNeuroML_validate From d192a5a18109f858d6dc79834429534bc1a6bc63 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Thu, 14 Sep 2023 18:50:40 +0100 Subject: [PATCH 3/3] Updates to MDF handler --- neuromllite/MDFHandler.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/neuromllite/MDFHandler.py b/neuromllite/MDFHandler.py index e30d3d7..b6bb48e 100644 --- a/neuromllite/MDFHandler.py +++ b/neuromllite/MDFHandler.py @@ -253,9 +253,13 @@ def _comp_to_mdf_node(self, nmllite_comp, lems_comp_id, size=1, properties=None) print_v( "All LEMS Components in known LEMS model: %s" - % list(model.components.keys()) + % sorted(list(model.components.keys())) ) - print_v("This comp: %s" % lems_comp) + print_v( + "All LEMS ComponentTypes in known LEMS model: %s" + % sorted(list(model.component_types.keys())) + ) + print_v("This LEMS comp: %s" % lems_comp) comp_type_name = lems_comp.type lems_comp_type = model.component_types.get(comp_type_name) print_v("lems_comp_type: %s" % lems_comp_type) @@ -405,6 +409,7 @@ def _comp_to_mdf_node(self, nmllite_comp, lems_comp_id, size=1, properties=None) # node["parameters"][sv.name]["value"] = [0]*size node["output_ports"][sv.name] = {"value": sv.name} + print_v("Adding %s as an output port"%sv.name) if sv.exposure: node["output_ports"][sv.exposure] = {"value": sv.name} @@ -515,21 +520,25 @@ def _replace_in_condition_test(self, test): def _get_all_elements_in_lems(cls, component_type, model, child_type): ee = [] if child_type == "exposure": - for e in component_type.exposures: - ee.append(e) + if hasattr(component_type, "exposures"): + for e in component_type.exposures: + ee.append(e) elif child_type == "constant": - for c in component_type.constants: - ee.append(c) + if hasattr(component_type, "constants"): + for c in component_type.constants: + ee.append(c) elif child_type == "event_port": - for e in component_type.event_ports: - ee.append(e) + if hasattr(component_type, "event_ports"): + for e in component_type.event_ports: + ee.append(e) elif child_type == "properties": - for p in component_type.properties: - ee.append(p) + if hasattr(component_type, "properties"): + for p in component_type.properties: + ee.append(p) else: raise Exception("Cannot get child of type: %s in LEMS model" % child_type) - if component_type.extends: + if hasattr(component_type, "extends") and component_type.extends: ect = model.component_types[component_type.extends] ee.extend(cls._get_all_elements_in_lems(ect, model, child_type))