OSBModelValidation 0.3.11__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0/OSBModelValidation.egg-info}/PKG-INFO +4 -4
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/SOURCES.txt +1 -3
- {osbmodelvalidation-0.3.11/OSBModelValidation.egg-info → osbmodelvalidation-0.4.0}/PKG-INFO +4 -4
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/README.md +3 -3
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/autogen.py +1 -1
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/__init__.py +0 -2
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getbrian2.py +0 -2
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getnetpyne.py +0 -14
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getnrn.py +9 -11
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/neuron_.py +1 -5
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pyneuron.py +1 -5
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/omv_util.py +12 -15
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/parse_omt.py +1 -5
- osbmodelvalidation-0.4.0/omv/test/test_drop_py2_bits.py +57 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/setup.cfg +1 -1
- osbmodelvalidation-0.3.11/omv/engines/brian1.py +0 -59
- osbmodelvalidation-0.3.11/omv/engines/jneuromlbrian.py +0 -65
- osbmodelvalidation-0.3.11/omv/engines/pynnbrian1.py +0 -59
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/LICENSE.lesser +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/MANIFEST.in +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/dependency_links.txt +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/entry_points.txt +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/requires.txt +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/top_level.txt +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/activation.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/analyzer.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/dryrun.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/input_resistance.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/morphology.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/rates.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/resting.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/spikes.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/temperature.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/timeseries.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/utils/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/utils/filenode.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/analyzers/utils/timeseries.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/common/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/common/inout.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/arbor_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/brian2_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/eden_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/engine.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/genesis.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getarbor.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getbrian1.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/geteden.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getgenesis.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getjlems.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getjnml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getlibsbml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getmoose.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getnest.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getneuroconstruct.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getnml2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getoctave.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getpylems.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getpyneuroml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getpynn.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/getxpp.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jlems.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuroml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlbrian2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromleden.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlmoose.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlnetpyne.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlnetpyne_np2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlnetpyne_np4.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlnrn.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlpynnnrn.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlvalidate.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlvalidatev1.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/jneuromlxpp.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/moose_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/nestsli.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/netpyne_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/netpyne__np2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/netpyne__np4.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/octave.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pylems.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pylemsnml2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynest.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pyneuroconstruct.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pyneuroml_.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pyneuromlvalidatesbml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pyneuromlxpp.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynn.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynnbrian2.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynnnest.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynnneuroml.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/pynnneuron.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/utils/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/utils/genesis_utils.g +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/utils/wdir.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/engines/xpp.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/experiment.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/find_tests.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/omt_mep_parser.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/mep.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/observable_datafile.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/observable_literal.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/observables.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/test/observable_datafile.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/test/observable_literal.1.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/test/observable_literal.3.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/expected.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/experiment.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/observable.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/protocol.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/protocol_properties.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.1.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.2.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.3.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.4.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/experiment.1.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/experiment.2.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/observable.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/protocol.1.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/protocol.2.yaml +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/tally.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/test/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/test/test_rates.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/test/test_types.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/validation/__init__.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/validation/rx_validator.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/validation/utils.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/validation/validate.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/validation/validate_mep.py +0 -0
- {osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OSBModelValidation
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Open Source Brain Model validation
|
|
5
5
|
Home-page: https://github.com/OpenSourceBrain/osb-model-validation
|
|
6
6
|
Author: Boris Marin, Padraig Gleeson
|
|
@@ -37,14 +37,14 @@ Dynamic: license-file
|
|
|
37
37
|
|
|
38
38
|
# OSB Model Validation
|
|
39
39
|
|
|
40
|
-
Tools for automated model validation in [Open Source Brain](
|
|
40
|
+
Tools for automated model validation in [Open Source Brain](https://www.opensourcebrain.org) projects, which can also be used for testing model behaviour on many [simulation engines](https://github.com/OpenSourceBrain/osb-model-validation/tree/master/omv/engines) both:
|
|
41
41
|
|
|
42
42
|
- on your local machine when developing models
|
|
43
43
|
- on [GitHub Actions](https://github.com/features/actions), to ensure tests pass on every commit.
|
|
44
44
|
|
|
45
45
|
To see this framework in action, click on some of the green buttons below:
|
|
46
46
|
|
|
47
|
-
|
|
|
47
|
+
| OSBv1 project | Tests on GitHub Actions | Test workflow script |
|
|
48
48
|
|----------|:-------------:|:------:|
|
|
49
49
|
|[FitzHugh Nagumo](http://www.opensourcebrain.org/projects/fitzhugh-nagumo-fitzhugh-1969) | [](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/.github/workflows/omv-ci.yml) |
|
|
50
50
|
|[Auditory cortex network](http://www.opensourcebrain.org/projects/acnet2)| [](https://github.com/OpenSourceBrain/ACnet2/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/ACnet2/blob/master/.github/workflows/omv-ci.yml) |
|
|
@@ -82,7 +82,7 @@ Setting up validation for a model and simulation written in NeuroML2/LEMS requir
|
|
|
82
82
|
### Write MEP files
|
|
83
83
|
|
|
84
84
|
Depending on the size of your model, you can run validation on the full fledged model, or you can create smaller stripped down versions that test particular aspects of the model.
|
|
85
|
-
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [
|
|
85
|
+
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [LEMS_FitzHughNagumo.xml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/NeuroML2/LEMS_FitzHughNagumo.xml).
|
|
86
86
|
|
|
87
87
|
``` yaml
|
|
88
88
|
# Script for running automated tests on OSBrain, see https://github.com/OpenSourceBrain/osb-model-validation
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/SOURCES.txt
RENAMED
|
@@ -35,7 +35,6 @@ omv/common/__init__.py
|
|
|
35
35
|
omv/common/inout.py
|
|
36
36
|
omv/engines/__init__.py
|
|
37
37
|
omv/engines/arbor_.py
|
|
38
|
-
omv/engines/brian1.py
|
|
39
38
|
omv/engines/brian2_.py
|
|
40
39
|
omv/engines/eden_.py
|
|
41
40
|
omv/engines/engine.py
|
|
@@ -61,7 +60,6 @@ omv/engines/getpynn.py
|
|
|
61
60
|
omv/engines/getxpp.py
|
|
62
61
|
omv/engines/jlems.py
|
|
63
62
|
omv/engines/jneuroml.py
|
|
64
|
-
omv/engines/jneuromlbrian.py
|
|
65
63
|
omv/engines/jneuromlbrian2.py
|
|
66
64
|
omv/engines/jneuromleden.py
|
|
67
65
|
omv/engines/jneuromlmoose.py
|
|
@@ -89,7 +87,6 @@ omv/engines/pyneuromlvalidatesbml.py
|
|
|
89
87
|
omv/engines/pyneuromlxpp.py
|
|
90
88
|
omv/engines/pyneuron.py
|
|
91
89
|
omv/engines/pynn.py
|
|
92
|
-
omv/engines/pynnbrian1.py
|
|
93
90
|
omv/engines/pynnbrian2.py
|
|
94
91
|
omv/engines/pynnnest.py
|
|
95
92
|
omv/engines/pynnneuroml.py
|
|
@@ -120,6 +117,7 @@ omv/schemata/types/test/observable.yaml
|
|
|
120
117
|
omv/schemata/types/test/protocol.1.yaml
|
|
121
118
|
omv/schemata/types/test/protocol.2.yaml
|
|
122
119
|
omv/test/__init__.py
|
|
120
|
+
omv/test/test_drop_py2_bits.py
|
|
123
121
|
omv/test/test_rates.py
|
|
124
122
|
omv/test/test_types.py
|
|
125
123
|
omv/validation/__init__.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OSBModelValidation
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Open Source Brain Model validation
|
|
5
5
|
Home-page: https://github.com/OpenSourceBrain/osb-model-validation
|
|
6
6
|
Author: Boris Marin, Padraig Gleeson
|
|
@@ -37,14 +37,14 @@ Dynamic: license-file
|
|
|
37
37
|
|
|
38
38
|
# OSB Model Validation
|
|
39
39
|
|
|
40
|
-
Tools for automated model validation in [Open Source Brain](
|
|
40
|
+
Tools for automated model validation in [Open Source Brain](https://www.opensourcebrain.org) projects, which can also be used for testing model behaviour on many [simulation engines](https://github.com/OpenSourceBrain/osb-model-validation/tree/master/omv/engines) both:
|
|
41
41
|
|
|
42
42
|
- on your local machine when developing models
|
|
43
43
|
- on [GitHub Actions](https://github.com/features/actions), to ensure tests pass on every commit.
|
|
44
44
|
|
|
45
45
|
To see this framework in action, click on some of the green buttons below:
|
|
46
46
|
|
|
47
|
-
|
|
|
47
|
+
| OSBv1 project | Tests on GitHub Actions | Test workflow script |
|
|
48
48
|
|----------|:-------------:|:------:|
|
|
49
49
|
|[FitzHugh Nagumo](http://www.opensourcebrain.org/projects/fitzhugh-nagumo-fitzhugh-1969) | [](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/.github/workflows/omv-ci.yml) |
|
|
50
50
|
|[Auditory cortex network](http://www.opensourcebrain.org/projects/acnet2)| [](https://github.com/OpenSourceBrain/ACnet2/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/ACnet2/blob/master/.github/workflows/omv-ci.yml) |
|
|
@@ -82,7 +82,7 @@ Setting up validation for a model and simulation written in NeuroML2/LEMS requir
|
|
|
82
82
|
### Write MEP files
|
|
83
83
|
|
|
84
84
|
Depending on the size of your model, you can run validation on the full fledged model, or you can create smaller stripped down versions that test particular aspects of the model.
|
|
85
|
-
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [
|
|
85
|
+
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [LEMS_FitzHughNagumo.xml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/NeuroML2/LEMS_FitzHughNagumo.xml).
|
|
86
86
|
|
|
87
87
|
``` yaml
|
|
88
88
|
# Script for running automated tests on OSBrain, see https://github.com/OpenSourceBrain/osb-model-validation
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
|
|
10
10
|
# OSB Model Validation
|
|
11
11
|
|
|
12
|
-
Tools for automated model validation in [Open Source Brain](
|
|
12
|
+
Tools for automated model validation in [Open Source Brain](https://www.opensourcebrain.org) projects, which can also be used for testing model behaviour on many [simulation engines](https://github.com/OpenSourceBrain/osb-model-validation/tree/master/omv/engines) both:
|
|
13
13
|
|
|
14
14
|
- on your local machine when developing models
|
|
15
15
|
- on [GitHub Actions](https://github.com/features/actions), to ensure tests pass on every commit.
|
|
16
16
|
|
|
17
17
|
To see this framework in action, click on some of the green buttons below:
|
|
18
18
|
|
|
19
|
-
|
|
|
19
|
+
| OSBv1 project | Tests on GitHub Actions | Test workflow script |
|
|
20
20
|
|----------|:-------------:|:------:|
|
|
21
21
|
|[FitzHugh Nagumo](http://www.opensourcebrain.org/projects/fitzhugh-nagumo-fitzhugh-1969) | [](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/.github/workflows/omv-ci.yml) |
|
|
22
22
|
|[Auditory cortex network](http://www.opensourcebrain.org/projects/acnet2)| [](https://github.com/OpenSourceBrain/ACnet2/actions/workflows/omv-ci.yml) | [omv-ci.yml](https://github.com/OpenSourceBrain/ACnet2/blob/master/.github/workflows/omv-ci.yml) |
|
|
@@ -54,7 +54,7 @@ Setting up validation for a model and simulation written in NeuroML2/LEMS requir
|
|
|
54
54
|
### Write MEP files
|
|
55
55
|
|
|
56
56
|
Depending on the size of your model, you can run validation on the full fledged model, or you can create smaller stripped down versions that test particular aspects of the model.
|
|
57
|
-
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [
|
|
57
|
+
Here is an example LEMS file for the FitzHugh-Nagumo model on Open Source Brain: [LEMS_FitzHughNagumo.xml](https://github.com/OpenSourceBrain/FitzHugh-Nagumo/blob/master/NeuroML2/LEMS_FitzHughNagumo.xml).
|
|
58
58
|
|
|
59
59
|
``` yaml
|
|
60
60
|
# Script for running automated tests on OSBrain, see https://github.com/OpenSourceBrain/osb-model-validation
|
|
@@ -21,7 +21,6 @@ from omv.engines.pylems import PyLemsEngine
|
|
|
21
21
|
from omv.engines.pylemsnml2 import PyLemsNeuroML2Engine
|
|
22
22
|
from omv.engines.genesis import GenesisEngine
|
|
23
23
|
|
|
24
|
-
# from omv.engines.brian1 import Brian1Engine
|
|
25
24
|
from omv.engines.brian2_ import Brian2Engine
|
|
26
25
|
from omv.engines.arbor_ import ArborEngine
|
|
27
26
|
from omv.engines.xpp import XppEngine
|
|
@@ -33,7 +32,6 @@ from omv.engines.pynn import PyNNEngine
|
|
|
33
32
|
from omv.engines.pynnneuron import PyNNNRNEngine
|
|
34
33
|
from omv.engines.pyneuron import PyNRNEngine
|
|
35
34
|
|
|
36
|
-
# from omv.engines.pynnbrian1 import PyNNBrian1Engine
|
|
37
35
|
from omv.engines.pynnbrian2 import PyNNBrian2Engine
|
|
38
36
|
from omv.engines.pynnnest import PyNNNestEngine
|
|
39
37
|
from omv.engines.pynnneuroml import PyNNNeuroMLEngine
|
|
@@ -2,7 +2,6 @@ from omv.common.inout import check_output
|
|
|
2
2
|
from omv.engines.utils.wdir import working_dir
|
|
3
3
|
from omv.common.inout import pip_install
|
|
4
4
|
import os
|
|
5
|
-
import sys
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
def install_netpyne(version=None):
|
|
@@ -33,19 +32,6 @@ def install_netpyne(version=None):
|
|
|
33
32
|
print(check_output(["pwd"]))
|
|
34
33
|
|
|
35
34
|
with working_dir(path):
|
|
36
|
-
if sys.version_info.major == 2:
|
|
37
|
-
pip_install(
|
|
38
|
-
[
|
|
39
|
-
"kiwisolver==1.0.1",
|
|
40
|
-
"matplotlib==2.2.4",
|
|
41
|
-
"pandas==0.23.4",
|
|
42
|
-
"bokeh==1.4.0",
|
|
43
|
-
"Pillow==5.4.1",
|
|
44
|
-
"matplotlib-scalebar==0.5.1",
|
|
45
|
-
"scipy==1.2.2",
|
|
46
|
-
"python-dateutil==2.8.0",
|
|
47
|
-
]
|
|
48
|
-
)
|
|
49
35
|
pip_install(".")
|
|
50
36
|
|
|
51
37
|
m = "Successfully installed NetPyNE..."
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
|
+
import re
|
|
3
4
|
from subprocess import check_output as co
|
|
4
5
|
from omv.common.inout import inform
|
|
5
6
|
from omv.common.inout import pip_install
|
|
6
7
|
|
|
7
8
|
from omv.engines.utils.wdir import working_dir
|
|
8
9
|
|
|
10
|
+
DEFAULT_NEURON_VERSION = "8.2.7"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _supports_pip_install(version):
|
|
14
|
+
return bool(re.match(r"^7\.8($|\.)|^8\.", version))
|
|
15
|
+
|
|
9
16
|
|
|
10
17
|
def install_neuron(version):
|
|
11
18
|
if not version:
|
|
12
|
-
|
|
13
|
-
version = "8.2.7"
|
|
14
|
-
else:
|
|
15
|
-
version = "7.6"
|
|
19
|
+
version = DEFAULT_NEURON_VERSION
|
|
16
20
|
|
|
17
|
-
if
|
|
21
|
+
if _supports_pip_install(version):
|
|
18
22
|
pip_install("neuron==%s" % version)
|
|
19
23
|
import neuron
|
|
20
24
|
|
|
@@ -31,12 +35,6 @@ def install_neuron(version):
|
|
|
31
35
|
)
|
|
32
36
|
dl_file = "nrn-%s.tar.gz" % version
|
|
33
37
|
|
|
34
|
-
# See below re 7.8 on py2...
|
|
35
|
-
if "7.8" in version or "8.0" in version:
|
|
36
|
-
nrn_url = "https://github.com/neuronsimulator/nrn/archive/%s.tar.gz" % (
|
|
37
|
-
version
|
|
38
|
-
)
|
|
39
|
-
dl_file = "%s.tar.gz" % version
|
|
40
38
|
print(co(["wget", "-nv", nrn_url]))
|
|
41
39
|
print(co(["tar", "xzvf", dl_file]))
|
|
42
40
|
print(co(["mv", "nrn-%s" % version, "nrn"]))
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
2
|
from glob import glob
|
|
4
3
|
import platform
|
|
5
4
|
import subprocess as sp
|
|
@@ -175,10 +174,7 @@ class NeuronEngine(OMVEngine):
|
|
|
175
174
|
self.modelpath,
|
|
176
175
|
"\n".join(self.extra_pars),
|
|
177
176
|
)
|
|
178
|
-
|
|
179
|
-
c = dedent(cmd).encode()
|
|
180
|
-
else:
|
|
181
|
-
c = dedent(cmd)
|
|
177
|
+
c = dedent(cmd).encode()
|
|
182
178
|
stdout, stderr = p.communicate(c)
|
|
183
179
|
# with open('/tmp/omv_test.nrn.stdout', 'w') as f:
|
|
184
180
|
# f.write(stdout)
|
|
@@ -2,7 +2,6 @@ import subprocess as sp
|
|
|
2
2
|
from textwrap import dedent
|
|
3
3
|
from omv.engines.utils.wdir import working_dir
|
|
4
4
|
from os.path import dirname
|
|
5
|
-
import sys
|
|
6
5
|
|
|
7
6
|
from omv.engines.neuron_ import NeuronEngine
|
|
8
7
|
|
|
@@ -73,10 +72,7 @@ class PyNRNEngine(NeuronEngine):
|
|
|
73
72
|
cmd = """\
|
|
74
73
|
%s
|
|
75
74
|
""" % ("\n".join(self.extra_pars))
|
|
76
|
-
|
|
77
|
-
c = dedent(cmd).encode()
|
|
78
|
-
else:
|
|
79
|
-
c = dedent(cmd)
|
|
75
|
+
c = dedent(cmd).encode()
|
|
80
76
|
stdout, stderr = p.communicate(c)
|
|
81
77
|
# with open('/tmp/omv_test.nrn.stdout', 'w') as f:
|
|
82
78
|
# f.write(stdout)
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
============================================
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
omv all [-V | --verbose] [--engine=engine] [--ignore-non-py3]
|
|
6
|
-
omv all_ [-V | --verbose] [--engine=engine]
|
|
7
|
-
omv test <testMe.omt> [-V | --verbose]
|
|
5
|
+
omv all [-V | --verbose] [--engine=engine] [--ignore-non-py3] [--exit-zero]
|
|
6
|
+
omv all_ [-V | --verbose] [--engine=engine] [--ignore-non-py3] [--exit-zero]
|
|
7
|
+
omv test <testMe.omt> [-V | --verbose] [--exit-zero]
|
|
8
8
|
omv autogen [options]
|
|
9
9
|
omv install <engine>
|
|
10
10
|
omv find
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
-V --verbose Display additional diagnosis messages [default: False].
|
|
21
21
|
--version Show version.
|
|
22
22
|
--ignore-non-py3 If Python 3, ignore tests on non Py3 compatible engines [default: False]
|
|
23
|
+
--exit-zero Run tests as normal and report failures, but always exit with code 0 [default: False]
|
|
23
24
|
-y Auto-select default options (non-interactive mode)
|
|
24
25
|
"""
|
|
25
26
|
|
|
@@ -46,12 +47,15 @@ def main():
|
|
|
46
47
|
if arguments["--verbose"]:
|
|
47
48
|
set_verbosity(1)
|
|
48
49
|
|
|
50
|
+
exit_zero = arguments["--exit-zero"]
|
|
51
|
+
|
|
49
52
|
if arguments["test"]:
|
|
50
53
|
try:
|
|
51
54
|
test_one(arguments["<testMe.omt>"])
|
|
52
55
|
except AssertionError:
|
|
53
56
|
inform("Failed due to non passing tests")
|
|
54
|
-
|
|
57
|
+
if not exit_zero:
|
|
58
|
+
exit(1)
|
|
55
59
|
|
|
56
60
|
elif arguments["all"]:
|
|
57
61
|
try:
|
|
@@ -74,7 +78,8 @@ def main():
|
|
|
74
78
|
)
|
|
75
79
|
except AssertionError:
|
|
76
80
|
inform("Failed due to non passing tests")
|
|
77
|
-
|
|
81
|
+
if not exit_zero:
|
|
82
|
+
exit(1)
|
|
78
83
|
|
|
79
84
|
# Includes *.omt_, i.e. temporary test files
|
|
80
85
|
elif arguments["all_"]:
|
|
@@ -86,7 +91,8 @@ def main():
|
|
|
86
91
|
)
|
|
87
92
|
except AssertionError:
|
|
88
93
|
inform("Failed due to non passing tests")
|
|
89
|
-
|
|
94
|
+
if not exit_zero:
|
|
95
|
+
exit(1)
|
|
90
96
|
|
|
91
97
|
elif arguments["find"]:
|
|
92
98
|
try:
|
|
@@ -364,15 +370,6 @@ def _install_engine(eng):
|
|
|
364
370
|
|
|
365
371
|
install_netpyne(engine_version)
|
|
366
372
|
|
|
367
|
-
elif eng.lower() == "Brian".lower():
|
|
368
|
-
if engine_version is not None:
|
|
369
|
-
raise Exception(
|
|
370
|
-
"Currently, cannot install a specific version of engine %s" % eng
|
|
371
|
-
)
|
|
372
|
-
from omv.engines.getbrian1 import install_brian
|
|
373
|
-
|
|
374
|
-
install_brian()
|
|
375
|
-
|
|
376
373
|
elif eng.lower() == "Brian2".lower():
|
|
377
374
|
from omv.engines.brian2_ import Brian2Engine as ee
|
|
378
375
|
|
|
@@ -3,7 +3,6 @@ from omv.engines.engine import EngineInstallationError, EngineExecutionError
|
|
|
3
3
|
from omv.omt_mep_parser import OMVTestParser
|
|
4
4
|
from omv.common.inout import inform, check, trim_path
|
|
5
5
|
from omv.tally import Tallyman
|
|
6
|
-
import sys
|
|
7
6
|
import platform
|
|
8
7
|
|
|
9
8
|
|
|
@@ -67,10 +66,7 @@ def parse_omt(omt_path, do_not_run=False, engine_version=None, ignore_non_py3=Fa
|
|
|
67
66
|
indent=3,
|
|
68
67
|
)
|
|
69
68
|
for rn, rv in results.items():
|
|
70
|
-
|
|
71
|
-
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
|
|
72
|
-
else:
|
|
73
|
-
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
|
|
69
|
+
inform("{:<30}{:^20}".format(rn, check(rv)), indent=3)
|
|
74
70
|
if not rv:
|
|
75
71
|
some_failed = True
|
|
76
72
|
tally.add_experiment(exp, results)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from contextlib import contextmanager
|
|
2
|
+
import sys
|
|
3
|
+
import types
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from omv.engines import getnetpyne, getnrn
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_install_neuron_defaults_to_modern_version(monkeypatch):
|
|
11
|
+
pip_calls = []
|
|
12
|
+
|
|
13
|
+
monkeypatch.setattr(getnrn, "pip_install", lambda spec: pip_calls.append(spec))
|
|
14
|
+
monkeypatch.setattr(getnrn, "inform", lambda *args, **kwargs: None)
|
|
15
|
+
monkeypatch.setitem(sys.modules, "neuron", types.SimpleNamespace())
|
|
16
|
+
|
|
17
|
+
getnrn.install_neuron(None)
|
|
18
|
+
|
|
19
|
+
assert pip_calls == [f"neuron=={getnrn.DEFAULT_NEURON_VERSION}"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.parametrize("version", ["7.8.1", "8.2.7"])
|
|
23
|
+
def test_install_neuron_supported_versions_use_pip(monkeypatch, version):
|
|
24
|
+
pip_calls = []
|
|
25
|
+
|
|
26
|
+
monkeypatch.setattr(getnrn, "pip_install", lambda spec: pip_calls.append(spec))
|
|
27
|
+
monkeypatch.setattr(getnrn, "inform", lambda *args, **kwargs: None)
|
|
28
|
+
monkeypatch.setitem(sys.modules, "neuron", types.SimpleNamespace())
|
|
29
|
+
|
|
30
|
+
getnrn.install_neuron(version)
|
|
31
|
+
|
|
32
|
+
assert pip_calls == [f"neuron=={version}"]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.mark.parametrize(
|
|
36
|
+
"version,expected",
|
|
37
|
+
[("7.8", True), ("7.8.1", True), ("8.2.7", True), ("7.80", False), ("7.7.2", False)],
|
|
38
|
+
)
|
|
39
|
+
def test_supports_pip_install_matches_supported_families(version, expected):
|
|
40
|
+
assert getnrn._supports_pip_install(version) is expected
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_install_netpyne_without_version_only_installs_package(monkeypatch):
|
|
44
|
+
pip_calls = []
|
|
45
|
+
|
|
46
|
+
@contextmanager
|
|
47
|
+
def no_op_working_dir(_):
|
|
48
|
+
yield
|
|
49
|
+
|
|
50
|
+
monkeypatch.setattr(getnetpyne.os.path, "isdir", lambda _: True)
|
|
51
|
+
monkeypatch.setattr(getnetpyne, "working_dir", no_op_working_dir)
|
|
52
|
+
monkeypatch.setattr(getnetpyne, "check_output", lambda *_: "")
|
|
53
|
+
monkeypatch.setattr(getnetpyne, "pip_install", lambda spec: pip_calls.append(spec))
|
|
54
|
+
|
|
55
|
+
getnetpyne.install_netpyne()
|
|
56
|
+
|
|
57
|
+
assert pip_calls == ["."]
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import subprocess as sp
|
|
3
|
-
|
|
4
|
-
from omv.common.inout import inform, trim_path, check_output, is_verbose
|
|
5
|
-
from omv.engines.engine import OMVEngine, EngineExecutionError
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Brian1Engine(OMVEngine):
|
|
9
|
-
name = "Brian"
|
|
10
|
-
|
|
11
|
-
python3_compatible = False
|
|
12
|
-
|
|
13
|
-
@staticmethod
|
|
14
|
-
def is_installed():
|
|
15
|
-
ret = False
|
|
16
|
-
try:
|
|
17
|
-
import brian
|
|
18
|
-
|
|
19
|
-
if is_verbose():
|
|
20
|
-
inform(
|
|
21
|
-
"Brian version %s is correctly installed..." % brian.__version__,
|
|
22
|
-
indent=2,
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
ret = "v%s" % brian.__version__
|
|
26
|
-
|
|
27
|
-
except Exception as err:
|
|
28
|
-
inform("Couldn't import Brian into Python: ", err, indent=1)
|
|
29
|
-
ret = False
|
|
30
|
-
return ret
|
|
31
|
-
|
|
32
|
-
@staticmethod
|
|
33
|
-
def install(version):
|
|
34
|
-
from omv.engines.getbrian1 import install_brian
|
|
35
|
-
|
|
36
|
-
home = os.environ["HOME"]
|
|
37
|
-
inform("Will fetch and install the latest Brian (version 1.x)", indent=2)
|
|
38
|
-
install_brian()
|
|
39
|
-
inform("Done...", indent=2)
|
|
40
|
-
|
|
41
|
-
def run(self):
|
|
42
|
-
try:
|
|
43
|
-
inform(
|
|
44
|
-
"Running file %s with %s" % (trim_path(self.modelpath), self.name),
|
|
45
|
-
indent=1,
|
|
46
|
-
)
|
|
47
|
-
self.stdout = check_output(
|
|
48
|
-
["python", self.modelpath, "-nogui"],
|
|
49
|
-
cwd=os.path.dirname(self.modelpath),
|
|
50
|
-
)
|
|
51
|
-
self.returncode = 0
|
|
52
|
-
except sp.CalledProcessError as err:
|
|
53
|
-
self.returncode = err.returncode
|
|
54
|
-
self.stdout = err.output
|
|
55
|
-
raise EngineExecutionError
|
|
56
|
-
except Exception as err:
|
|
57
|
-
inform("Another error with running %s: " % self.name, err, indent=1)
|
|
58
|
-
self.returncode = -1
|
|
59
|
-
self.stdout = "???"
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import subprocess as sp
|
|
3
|
-
|
|
4
|
-
from omv.engines.jneuroml import JNeuroMLEngine
|
|
5
|
-
from omv.engines.brian1 import Brian1Engine
|
|
6
|
-
from omv.common.inout import inform, trim_path, check_output, is_verbose
|
|
7
|
-
from omv.engines.engine import EngineExecutionError
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class JNeuroMLBrianEngine(JNeuroMLEngine):
|
|
11
|
-
name = "jNeuroML_Brian"
|
|
12
|
-
|
|
13
|
-
python3_compatible = Brian1Engine.python3_compatible
|
|
14
|
-
|
|
15
|
-
@staticmethod
|
|
16
|
-
def is_installed():
|
|
17
|
-
if is_verbose():
|
|
18
|
-
inform(
|
|
19
|
-
"Checking whether %s is installed..." % JNeuroMLBrianEngine.name,
|
|
20
|
-
indent=1,
|
|
21
|
-
)
|
|
22
|
-
return JNeuroMLEngine.is_installed() and Brian1Engine.is_installed()
|
|
23
|
-
|
|
24
|
-
@staticmethod
|
|
25
|
-
def install(version):
|
|
26
|
-
if not JNeuroMLEngine.is_installed():
|
|
27
|
-
JNeuroMLEngine.install(None)
|
|
28
|
-
if not Brian1Engine.is_installed():
|
|
29
|
-
Brian1Engine.install(version)
|
|
30
|
-
|
|
31
|
-
JNeuroMLBrianEngine.path = JNeuroMLEngine.path + ":" + Brian1Engine.path
|
|
32
|
-
JNeuroMLBrianEngine.environment_vars = {}
|
|
33
|
-
JNeuroMLBrianEngine.environment_vars.update(JNeuroMLEngine.environment_vars)
|
|
34
|
-
JNeuroMLBrianEngine.environment_vars.update(Brian1Engine.environment_vars)
|
|
35
|
-
inform("PATH: " + JNeuroMLBrianEngine.path)
|
|
36
|
-
inform("Env vars: %s" % JNeuroMLBrianEngine.environment_vars)
|
|
37
|
-
|
|
38
|
-
def run(self):
|
|
39
|
-
try:
|
|
40
|
-
inform(
|
|
41
|
-
"Running file %s with %s"
|
|
42
|
-
% (trim_path(self.modelpath), JNeuroMLBrianEngine.name),
|
|
43
|
-
indent=1,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
from omv.engines.jneuroml import JNeuroMLEngine
|
|
47
|
-
|
|
48
|
-
jnml = JNeuroMLEngine.get_executable()
|
|
49
|
-
|
|
50
|
-
self.stdout = check_output(
|
|
51
|
-
[jnml, self.modelpath, "-brian"],
|
|
52
|
-
cwd=os.path.dirname(self.modelpath),
|
|
53
|
-
env=JNeuroMLEngine.get_environment(),
|
|
54
|
-
)
|
|
55
|
-
self.stdout += check_output(
|
|
56
|
-
["python", self.modelpath.replace(".xml", "_brian.py"), "-nogui"],
|
|
57
|
-
cwd=os.path.dirname(self.modelpath),
|
|
58
|
-
)
|
|
59
|
-
inform("Success with running ", JNeuroMLBrianEngine.name, indent=1)
|
|
60
|
-
self.returncode = 0
|
|
61
|
-
except sp.CalledProcessError as err:
|
|
62
|
-
inform("Error with ", JNeuroMLBrianEngine.name, indent=1)
|
|
63
|
-
self.returncode = err.returncode
|
|
64
|
-
self.stdout = err.output
|
|
65
|
-
raise EngineExecutionError
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import subprocess as sp
|
|
3
|
-
|
|
4
|
-
from omv.engines.brian1 import Brian1Engine
|
|
5
|
-
from omv.engines.pynn import PyNNEngine
|
|
6
|
-
|
|
7
|
-
from omv.common.inout import inform, trim_path, check_output, is_verbose
|
|
8
|
-
from omv.engines.engine import EngineExecutionError
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class PyNNBrian1Engine(PyNNEngine):
|
|
12
|
-
name = "PyNN_Brian1"
|
|
13
|
-
python3_compatible = Brian1Engine.python3_compatible
|
|
14
|
-
|
|
15
|
-
@staticmethod
|
|
16
|
-
def is_installed():
|
|
17
|
-
if is_verbose():
|
|
18
|
-
inform(
|
|
19
|
-
"Checking whether %s is installed..." % PyNNBrian1Engine.name, indent=1
|
|
20
|
-
)
|
|
21
|
-
return PyNNEngine.is_installed() and Brian1Engine.is_installed()
|
|
22
|
-
|
|
23
|
-
@staticmethod
|
|
24
|
-
def install(version):
|
|
25
|
-
if not Brian1Engine.is_installed():
|
|
26
|
-
Brian1Engine.install(version) # interpret version as version of Brian!
|
|
27
|
-
inform(
|
|
28
|
-
"%s installed Brian..." % PyNNBrian1Engine.name, indent=2, verbosity=1
|
|
29
|
-
)
|
|
30
|
-
if not PyNNEngine.is_installed():
|
|
31
|
-
PyNNEngine.install(None)
|
|
32
|
-
inform(
|
|
33
|
-
"%s installed PyNN..." % PyNNBrian1Engine.name, indent=2, verbosity=1
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
PyNNBrian1Engine.path = PyNNEngine.path + ":" + Brian1Engine.path
|
|
37
|
-
PyNNBrian1Engine.environment_vars = {}
|
|
38
|
-
PyNNBrian1Engine.environment_vars.update(PyNNEngine.environment_vars)
|
|
39
|
-
PyNNBrian1Engine.environment_vars.update(Brian1Engine.environment_vars)
|
|
40
|
-
inform("PATH: " + PyNNBrian1Engine.path)
|
|
41
|
-
|
|
42
|
-
def run(self):
|
|
43
|
-
try:
|
|
44
|
-
inform(
|
|
45
|
-
"Running file %s with %s" % (trim_path(self.modelpath), self.name),
|
|
46
|
-
indent=1,
|
|
47
|
-
)
|
|
48
|
-
self.stdout = check_output(
|
|
49
|
-
["python", self.modelpath, "brian"], cwd=os.path.dirname(self.modelpath)
|
|
50
|
-
)
|
|
51
|
-
self.returncode = 0
|
|
52
|
-
except sp.CalledProcessError as err:
|
|
53
|
-
self.returncode = err.returncode
|
|
54
|
-
self.stdout = err.output
|
|
55
|
-
raise EngineExecutionError
|
|
56
|
-
except Exception as err:
|
|
57
|
-
inform("Another error with running %s: " % self.name, err, indent=1)
|
|
58
|
-
self.returncode = -1
|
|
59
|
-
self.stdout = "???"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/requires.txt
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/OSBModelValidation.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/base/observables.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/protocol_properties.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.1.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.2.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.3.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/expected.4.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/experiment.1.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/experiment.2.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/observable.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/protocol.1.yaml
RENAMED
|
File without changes
|
{osbmodelvalidation-0.3.11 → osbmodelvalidation-0.4.0}/omv/schemata/types/test/protocol.2.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|