OSBModelValidation 0.2.19__tar.gz → 0.2.21__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.
Files changed (130) hide show
  1. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21/OSBModelValidation.egg-info}/PKG-INFO +3 -1
  2. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/OSBModelValidation.egg-info/SOURCES.txt +4 -0
  3. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/OSBModelValidation.egg-info/requires.txt +1 -0
  4. {OSBModelValidation-0.2.19/OSBModelValidation.egg-info → osbmodelvalidation-0.2.21}/PKG-INFO +3 -1
  5. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/common/inout.py +2 -2
  6. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/__init__.py +3 -0
  7. osbmodelvalidation-0.2.21/omv/engines/getxpp.py +83 -0
  8. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuroml.py +4 -0
  9. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlbrian.py +1 -1
  10. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlnetpyne.py +1 -1
  11. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlpynnnrn.py +1 -1
  12. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlvalidate.py +1 -1
  13. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlvalidatev1.py +1 -1
  14. osbmodelvalidation-0.2.21/omv/engines/jneuromlxpp.py +59 -0
  15. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/netpyne_.py +1 -1
  16. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pylemsnml2.py +1 -1
  17. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pyneuroml_.py +5 -0
  18. osbmodelvalidation-0.2.21/omv/engines/pyneuromlxpp.py +56 -0
  19. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynnneuroml.py +1 -1
  20. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynnneuron.py +1 -1
  21. osbmodelvalidation-0.2.21/omv/engines/xpp.py +82 -0
  22. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/omv_util.py +10 -0
  23. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/setup.cfg +3 -1
  24. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/LICENSE.lesser +0 -0
  25. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/MANIFEST.in +0 -0
  26. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/OSBModelValidation.egg-info/dependency_links.txt +0 -0
  27. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/OSBModelValidation.egg-info/entry_points.txt +0 -0
  28. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/OSBModelValidation.egg-info/top_level.txt +0 -0
  29. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/README.md +0 -0
  30. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/__init__.py +0 -0
  31. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/__init__.py +0 -0
  32. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/activation.py +0 -0
  33. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/analyzer.py +0 -0
  34. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/dryrun.py +0 -0
  35. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/input_resistance.py +0 -0
  36. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/morphology.py +0 -0
  37. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/rates.py +0 -0
  38. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/resting.py +0 -0
  39. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/spikes.py +0 -0
  40. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/temperature.py +0 -0
  41. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/timeseries.py +0 -0
  42. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/utils/__init__.py +0 -0
  43. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/utils/filenode.py +0 -0
  44. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/analyzers/utils/timeseries.py +0 -0
  45. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/autogen.py +0 -0
  46. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/common/__init__.py +0 -0
  47. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/arbor_.py +0 -0
  48. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/brian1.py +0 -0
  49. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/brian2_.py +0 -0
  50. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/eden_.py +0 -0
  51. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/engine.py +0 -0
  52. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/genesis.py +0 -0
  53. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getarbor.py +0 -0
  54. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getbrian1.py +0 -0
  55. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getbrian2.py +0 -0
  56. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/geteden.py +0 -0
  57. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getgenesis.py +0 -0
  58. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getjlems.py +0 -0
  59. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getjnml.py +0 -0
  60. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getlibsbml.py +0 -0
  61. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getmoose.py +0 -0
  62. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getnest.py +0 -0
  63. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getnetpyne.py +0 -0
  64. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getneuroconstruct.py +0 -0
  65. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getnml2.py +0 -0
  66. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getnrn.py +0 -0
  67. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getoctave.py +0 -0
  68. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getpylems.py +0 -0
  69. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getpyneuroml.py +0 -0
  70. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/getpynn.py +0 -0
  71. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jlems.py +0 -0
  72. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlbrian2.py +0 -0
  73. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromleden.py +0 -0
  74. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlmoose.py +0 -0
  75. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlnetpyne_np2.py +0 -0
  76. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlnetpyne_np4.py +0 -0
  77. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/jneuromlnrn.py +0 -0
  78. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/moose_.py +0 -0
  79. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/nestsli.py +0 -0
  80. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/netpyne__np2.py +0 -0
  81. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/netpyne__np4.py +0 -0
  82. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/neuron_.py +0 -0
  83. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/octave.py +0 -0
  84. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pylems.py +0 -0
  85. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynest.py +0 -0
  86. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pyneuroconstruct.py +0 -0
  87. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pyneuromlvalidatesbml.py +0 -0
  88. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pyneuron.py +0 -0
  89. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynn.py +0 -0
  90. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynnbrian1.py +0 -0
  91. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynnbrian2.py +0 -0
  92. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/pynnnest.py +0 -0
  93. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/utils/__init__.py +0 -0
  94. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/utils/genesis_utils.g +0 -0
  95. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/engines/utils/wdir.py +0 -0
  96. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/experiment.py +0 -0
  97. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/find_tests.py +0 -0
  98. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/omt_mep_parser.py +0 -0
  99. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/parse_omt.py +0 -0
  100. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/mep.yaml +0 -0
  101. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/observable_datafile.yaml +0 -0
  102. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/observable_literal.yaml +0 -0
  103. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/observables.yaml +0 -0
  104. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/test/observable_datafile.yaml +0 -0
  105. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/test/observable_literal.1.yaml +0 -0
  106. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/base/test/observable_literal.3.yaml +0 -0
  107. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/expected.yaml +0 -0
  108. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/experiment.yaml +0 -0
  109. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/observable.yaml +0 -0
  110. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/protocol.yaml +0 -0
  111. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/protocol_properties.yaml +0 -0
  112. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/expected.1.yaml +0 -0
  113. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/expected.2.yaml +0 -0
  114. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/expected.3.yaml +0 -0
  115. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/expected.4.yaml +0 -0
  116. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/experiment.1.yaml +0 -0
  117. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/experiment.2.yaml +0 -0
  118. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/observable.yaml +0 -0
  119. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/protocol.1.yaml +0 -0
  120. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/schemata/types/test/protocol.2.yaml +0 -0
  121. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/tally.py +0 -0
  122. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/test/__init__.py +0 -0
  123. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/test/test_rates.py +0 -0
  124. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/test/test_types.py +0 -0
  125. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/validation/__init__.py +0 -0
  126. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/validation/rx_validator.py +0 -0
  127. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/validation/utils.py +0 -0
  128. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/validation/validate.py +0 -0
  129. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/omv/validation/validate_mep.py +0 -0
  130. {OSBModelValidation-0.2.19 → osbmodelvalidation-0.2.21}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OSBModelValidation
3
- Version: 0.2.19
3
+ Version: 0.2.21
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
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.8
15
15
  Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
18
19
  Classifier: Topic :: Scientific/Engineering
19
20
  Description-Content-Type: text/markdown
20
21
  License-File: LICENSE.lesser
@@ -24,6 +25,7 @@ Requires-Dist: pyrx
24
25
  Requires-Dist: pathlib; python_version < "3.4"
25
26
  Requires-Dist: docopt
26
27
  Requires-Dist: importlib-metadata; python_version < "3.8"
28
+ Requires-Dist: setuptools
27
29
 
28
30
  [![Continuous builds](https://github.com/OpenSourceBrain/osb-model-validation/actions/workflows/ci.yml/badge.svg)](https://github.com/OpenSourceBrain/osb-model-validation/actions/workflows/ci.yml)
29
31
  [![PyPI](https://img.shields.io/pypi/v/OSBModelValidation)](https://pypi.org/project/OSBModelValidation/)
@@ -58,6 +58,7 @@ omv/engines/getoctave.py
58
58
  omv/engines/getpylems.py
59
59
  omv/engines/getpyneuroml.py
60
60
  omv/engines/getpynn.py
61
+ omv/engines/getxpp.py
61
62
  omv/engines/jlems.py
62
63
  omv/engines/jneuroml.py
63
64
  omv/engines/jneuromlbrian.py
@@ -71,6 +72,7 @@ omv/engines/jneuromlnrn.py
71
72
  omv/engines/jneuromlpynnnrn.py
72
73
  omv/engines/jneuromlvalidate.py
73
74
  omv/engines/jneuromlvalidatev1.py
75
+ omv/engines/jneuromlxpp.py
74
76
  omv/engines/moose_.py
75
77
  omv/engines/nestsli.py
76
78
  omv/engines/netpyne_.py
@@ -84,6 +86,7 @@ omv/engines/pynest.py
84
86
  omv/engines/pyneuroconstruct.py
85
87
  omv/engines/pyneuroml_.py
86
88
  omv/engines/pyneuromlvalidatesbml.py
89
+ omv/engines/pyneuromlxpp.py
87
90
  omv/engines/pyneuron.py
88
91
  omv/engines/pynn.py
89
92
  omv/engines/pynnbrian1.py
@@ -91,6 +94,7 @@ omv/engines/pynnbrian2.py
91
94
  omv/engines/pynnnest.py
92
95
  omv/engines/pynnneuroml.py
93
96
  omv/engines/pynnneuron.py
97
+ omv/engines/xpp.py
94
98
  omv/engines/utils/__init__.py
95
99
  omv/engines/utils/genesis_utils.g
96
100
  omv/engines/utils/wdir.py
@@ -2,6 +2,7 @@ PyYAML
2
2
  numpy
3
3
  pyrx
4
4
  docopt
5
+ setuptools
5
6
 
6
7
  [:python_version < "3.4"]
7
8
  pathlib
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OSBModelValidation
3
- Version: 0.2.19
3
+ Version: 0.2.21
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
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.8
15
15
  Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
18
19
  Classifier: Topic :: Scientific/Engineering
19
20
  Description-Content-Type: text/markdown
20
21
  License-File: LICENSE.lesser
@@ -24,6 +25,7 @@ Requires-Dist: pyrx
24
25
  Requires-Dist: pathlib; python_version < "3.4"
25
26
  Requires-Dist: docopt
26
27
  Requires-Dist: importlib-metadata; python_version < "3.8"
28
+ Requires-Dist: setuptools
27
29
 
28
30
  [![Continuous builds](https://github.com/OpenSourceBrain/osb-model-validation/actions/workflows/ci.yml/badge.svg)](https://github.com/OpenSourceBrain/osb-model-validation/actions/workflows/ci.yml)
29
31
  [![PyPI](https://img.shields.io/pypi/v/OSBModelValidation)](https://pypi.org/project/OSBModelValidation/)
@@ -121,8 +121,8 @@ def check_output(cmds, cwd=".", shell=False, verbosity=0, env=None):
121
121
 
122
122
  except sp.CalledProcessError as err:
123
123
  inform(
124
- "Error running commands: %s in %s (return code: %s)"
125
- % (cmds, cwd, err.returncode),
124
+ "CalledProcessError running commands: %s in %s (return code: %s), output:\n%s"
125
+ % (cmds, cwd, err.returncode, err.output),
126
126
  indent=2,
127
127
  verbosity=verbosity,
128
128
  )
@@ -12,6 +12,7 @@ from omv.engines.jneuromlnetpyne_np2 import JNeuroMLNetPyNENP2Engine
12
12
  # from omv.engines.jneuromlbrian import JNeuroMLBrianEngine
13
13
  from omv.engines.jneuromleden import JNeuroMLEdenEngine
14
14
  from omv.engines.jneuromlbrian2 import JNeuroMLBrian2Engine
15
+ from omv.engines.jneuromlxpp import JNeuroMLXppEngine
15
16
  from omv.engines.jneuromlmoose import JNeuroMLMooseEngine
16
17
  from omv.engines.jneuromlvalidate import JNeuroMLValidateEngine
17
18
  from omv.engines.jneuromlvalidatev1 import JNeuroMLValidateV1Engine
@@ -23,6 +24,7 @@ from omv.engines.genesis import GenesisEngine
23
24
  # from omv.engines.brian1 import Brian1Engine
24
25
  from omv.engines.brian2_ import Brian2Engine
25
26
  from omv.engines.arbor_ import ArborEngine
27
+ from omv.engines.xpp import XppEngine
26
28
  from omv.engines.eden_ import EdenEngine
27
29
  from omv.engines.nestsli import NestEngine
28
30
  from omv.engines.pynest import PyNestEngine
@@ -42,6 +44,7 @@ from omv.engines.netpyne__np2 import NetPyNENP2Engine
42
44
  from omv.engines.pyneuroconstruct import PyneuroConstructEngine
43
45
  from omv.engines.pyneuroml_ import PyNeuroMLEngine
44
46
  from omv.engines.pyneuromlvalidatesbml import PyNeuroMLValidateSBMLEngine
47
+ from omv.engines.pyneuromlxpp import PyNeuroMLXppEngine
45
48
 
46
49
 
47
50
  OMVEngines = {
@@ -0,0 +1,83 @@
1
+ import os
2
+ from omv.common.inout import inform, check_output
3
+
4
+ from omv.engines.utils.wdir import working_dir
5
+ from sysconfig import get_paths
6
+ import sys
7
+
8
+ import fileinput
9
+
10
+
11
+ def install_xpp(version='latest'):
12
+
13
+ if version is None:
14
+ version='latest'
15
+ elif not version=='latest':
16
+ raise Exception('Can currently only install the latest XPP version')
17
+
18
+ inform("Installing XPP", indent=2, verbosity=1)
19
+ xppinstallpath = os.path.join(os.environ["HOME"])
20
+ xpphomepath = os.path.join(xppinstallpath, 'xppaut')
21
+
22
+ inform(
23
+ "Installing XPP to: %s" % (xpphomepath),
24
+ indent=2,
25
+ verbosity=1,
26
+ )
27
+ pypaths = get_paths()
28
+ inform("Python lib info: %s" % (pypaths), indent=2, verbosity=1)
29
+
30
+
31
+ with working_dir(xppinstallpath):
32
+ print(
33
+ check_output(
34
+ [
35
+ "git",
36
+ "clone",
37
+ "https://github.com/NeuroML/xppaut"
38
+ ]
39
+ )
40
+ )
41
+
42
+ with working_dir(xpphomepath):
43
+ print(
44
+ check_output(
45
+ [
46
+ "ls",
47
+ "-alth"
48
+ ]
49
+ )
50
+ )
51
+
52
+ makefile = os.path.join(xpphomepath, 'Makefile')
53
+
54
+ print(' - Replacing text in %s'%makefile)
55
+ with open(makefile, 'r') as file:
56
+ filedata = file.read()
57
+
58
+ # Replace the target string
59
+ filedata = filedata.replace("/usr/local/", "%s/"%xpphomepath)
60
+
61
+ # Write the file out again
62
+ with open(makefile, 'w') as file:
63
+ file.write(filedata)
64
+
65
+ print(
66
+ check_output(
67
+ [
68
+ "make", "-j4"
69
+ ]
70
+ )
71
+ )
72
+ print(
73
+ check_output(
74
+ [
75
+ "make", "install"
76
+ ]
77
+ )
78
+ )
79
+
80
+
81
+
82
+ if __name__ == "__main__":
83
+ install_nest()
@@ -81,6 +81,10 @@ class JNeuroMLEngine(OMVEngine):
81
81
  inform("Will fetch and install jNeuroML jar", indent=2)
82
82
  install_jnml(version)
83
83
 
84
+ if not JNeuroMLEngine.is_installed():
85
+ inform("Failure to install, exiting", indent=1)
86
+ exit(1)
87
+
84
88
  def run(self):
85
89
  try:
86
90
  inform(
@@ -26,7 +26,7 @@ class JNeuroMLBrianEngine(JNeuroMLEngine):
26
26
  if not JNeuroMLEngine.is_installed():
27
27
  JNeuroMLEngine.install(None)
28
28
  if not Brian1Engine.is_installed():
29
- Brian1Engine.install(None)
29
+ Brian1Engine.install(version)
30
30
 
31
31
  JNeuroMLBrianEngine.path = JNeuroMLEngine.path + ":" + Brian1Engine.path
32
32
  JNeuroMLBrianEngine.environment_vars = {}
@@ -31,7 +31,7 @@ class JNeuroMLNetPyNEEngine(JNeuroMLEngine):
31
31
  verbosity=1,
32
32
  )
33
33
  if not NetPyNEEngine.is_installed():
34
- NetPyNEEngine.install(None)
34
+ NetPyNEEngine.install(version)
35
35
  inform(
36
36
  "%s installed NetPyNE (& NEURON)..." % JNeuroMLNetPyNEEngine.name,
37
37
  indent=2,
@@ -32,7 +32,7 @@ class JNeuroMLPyNNNRNEngine(JNeuroMLEngine):
32
32
  verbosity=1,
33
33
  )
34
34
  if not PyNNNRNEngine.is_installed():
35
- PyNNNRNEngine.install(None)
35
+ PyNNNRNEngine.install(version)
36
36
  inform(
37
37
  "%s installed PyNN & NRN..." % JNeuroMLPyNNNRNEngine.name,
38
38
  indent=2,
@@ -16,7 +16,7 @@ class JNeuroMLValidateEngine(JNeuroMLEngine):
16
16
  @staticmethod
17
17
  def install(version):
18
18
  if not JNeuroMLEngine.is_installed():
19
- JNeuroMLEngine.install(None)
19
+ JNeuroMLEngine.install(version)
20
20
 
21
21
  JNeuroMLValidateEngine.path = JNeuroMLEngine.path
22
22
  JNeuroMLValidateEngine.environment_vars = {}
@@ -17,7 +17,7 @@ class JNeuroMLValidateV1Engine(JNeuroMLEngine):
17
17
  @staticmethod
18
18
  def install(version):
19
19
  if not JNeuroMLEngine.is_installed():
20
- JNeuroMLEngine.install(None)
20
+ JNeuroMLEngine.install(version)
21
21
 
22
22
  JNeuroMLValidateV1Engine.path = JNeuroMLEngine.path
23
23
  JNeuroMLValidateV1Engine.environment_vars = {}
@@ -0,0 +1,59 @@
1
+ import os
2
+ import subprocess as sp
3
+
4
+ from omv.engines.jneuroml import JNeuroMLEngine
5
+ from omv.engines.xpp import XppEngine
6
+ from omv.common.inout import inform, trim_path, check_output, is_verbose
7
+ from omv.engines.engine import EngineExecutionError
8
+
9
+
10
+ class JNeuroMLXppEngine(JNeuroMLEngine):
11
+ name = "jNeuroML_XPP"
12
+
13
+ @staticmethod
14
+ def is_installed():
15
+ if is_verbose():
16
+ inform(
17
+ "Checking whether %s is installed..." % JNeuroMLXppEngine.name,
18
+ indent=1,
19
+ )
20
+ return JNeuroMLEngine.is_installed() and XppEngine.is_installed()
21
+
22
+ @staticmethod
23
+ def install(xpp_version):
24
+ if not JNeuroMLEngine.is_installed():
25
+ JNeuroMLEngine.install(None)
26
+ if not XppEngine.is_installed():
27
+ XppEngine.install(xpp_version)
28
+
29
+
30
+ def run(self):
31
+ self.environment_vars = XppEngine.get_xpp_environment()
32
+ self.set_environment()
33
+ try:
34
+ inform(
35
+ "Running file %s with %s"
36
+ % (trim_path(self.modelpath), JNeuroMLXppEngine.name),
37
+ indent=1,
38
+ )
39
+ from omv.engines.jneuroml import JNeuroMLEngine
40
+
41
+ jnml = JNeuroMLEngine.get_executable()
42
+ self.stdout = check_output(
43
+ [jnml, self.modelpath, "-xpp"],
44
+ cwd=os.path.dirname(self.modelpath),
45
+ env=JNeuroMLEngine.get_environment(),
46
+ )
47
+
48
+ self.stdout = check_output(
49
+ [self.environment_vars["XPP_HOME"] + "/xppaut", self.modelpath.replace('.xml','.ode'), '-silent'],
50
+ cwd=os.path.dirname(self.modelpath),
51
+ )
52
+
53
+ inform("Success with running ", JNeuroMLXppEngine.name, indent=1)
54
+ self.returncode = 0
55
+ except sp.CalledProcessError as err:
56
+ inform("Error with ", JNeuroMLXppEngine.name, indent=1)
57
+ self.returncode = err.returncode
58
+ self.stdout = err.output
59
+ raise EngineExecutionError
@@ -73,7 +73,7 @@ class NetPyNEEngine(OMVEngine):
73
73
 
74
74
  home = os.environ["HOME"]
75
75
  inform("Will fetch and install the latest NetPyNE..", indent=2)
76
- install_netpyne()
76
+ install_netpyne(version)
77
77
  inform("Done, NetPyNE is correctly installed...", indent=2)
78
78
 
79
79
  NetPyNEEngine.path = PyNRNEngine.path
@@ -28,7 +28,7 @@ class PyLemsNeuroML2Engine(OMVEngine):
28
28
 
29
29
  def install(self, version):
30
30
  if not PyLemsEngine.is_installed():
31
- PyLemsEngine.install(None)
31
+ PyLemsEngine.install(version)
32
32
  if not os.path.isdir(default_nml2_dir):
33
33
  install_nml2()
34
34
 
@@ -38,6 +38,11 @@ class PyNeuroMLEngine(OMVEngine):
38
38
  inform("Will fetch and install the latest pyNeuroML", indent=2)
39
39
  install_pynml(version)
40
40
 
41
+ if not PyNeuroMLEngine.is_installed():
42
+ inform("Failure to install, exiting", indent=1)
43
+ exit(1)
44
+
45
+
41
46
  def run(self):
42
47
  try:
43
48
  inform(
@@ -0,0 +1,56 @@
1
+ import os
2
+ import subprocess as sp
3
+
4
+ from omv.common.inout import inform, trim_path, check_output
5
+ from omv.engines.engine import EngineExecutionError
6
+ from omv.engines.pyneuroml_ import PyNeuroMLEngine
7
+ from omv.engines.engine import PATH_DELIMITER
8
+ from omv.engines.utils import resolve_paths
9
+
10
+ class PyNeuroMLXppEngine(PyNeuroMLEngine):
11
+ name = "pyNEURON_XPP_LEMS"
12
+
13
+ @staticmethod
14
+ def is_installed():
15
+ pynml_ver = PyNeuroMLEngine.is_installed()
16
+ if not pynml_ver:
17
+ return False
18
+ else:
19
+ return pynml_ver
20
+
21
+
22
+ @staticmethod
23
+ def install(version):
24
+ if not PyNeuroMLEngine.is_installed(): PyNeuroMLEngine.install(version)
25
+
26
+
27
+ def run(self):
28
+ try:
29
+
30
+ #pynml = PyNeuroMLEngine.get_executable() #could implement more flexible way to find the executeable
31
+ cmds = ["pynml-xpp"]
32
+ cmds.append(self.modelpath)
33
+ cmds.append('-lems')
34
+ cmds.append('-run')
35
+
36
+ inform(
37
+ "Running with %s, using: %s..." % (PyNeuroMLXppEngine.name, cmds),
38
+ indent=1,
39
+ )
40
+ self.stdout = check_output(
41
+ cmds,
42
+ cwd=os.path.dirname(self.modelpath)
43
+ )
44
+ inform(
45
+ "Success with running ",
46
+ PyNeuroMLXppEngine.name,
47
+ indent=1,
48
+ verbosity=1,
49
+ )
50
+ self.returncode = 0
51
+ except sp.CalledProcessError as err:
52
+ inform("Error with ", PyNeuroMLXppEngine.name, indent=1, verbosity=1)
53
+ self.returncode = err.returncode
54
+ self.stdout = err.output
55
+ raise EngineExecutionError
56
+
@@ -22,7 +22,7 @@ class PyNNNeuroMLEngine(PyNNEngine):
22
22
  @staticmethod
23
23
  def install(version):
24
24
  if not PyNeuroMLEngine.is_installed():
25
- PyNeuroMLEngine.install(None)
25
+ PyNeuroMLEngine.install(version)
26
26
  inform(
27
27
  "%s installed PyNeuroML..." % PyNNNeuroMLEngine.name,
28
28
  indent=2,
@@ -25,7 +25,7 @@ class PyNNNRNEngine(PyNNEngine):
25
25
  @staticmethod
26
26
  def install(version=None):
27
27
  if not NeuronEngine.is_installed():
28
- NeuronEngine.install(None)
28
+ NeuronEngine.install(version)
29
29
  inform("%s installed NEURON..." % PyNNNRNEngine.name, indent=2, verbosity=1)
30
30
  if not PyNNEngine.is_installed():
31
31
  PyNNEngine.install(None)
@@ -0,0 +1,82 @@
1
+ import os
2
+ import sys
3
+
4
+ import subprocess as sp
5
+
6
+ from omv.common.inout import inform, trim_path, check_output, is_verbose
7
+ from omv.engines.engine import OMVEngine, EngineExecutionError
8
+
9
+
10
+ class XppEngine(OMVEngine):
11
+ name = "XPP"
12
+
13
+ @staticmethod
14
+ def get_xpp_environment():
15
+
16
+ # Default, if it was installed by omv...
17
+ xpppath = os.path.join(os.environ["HOME"], "xppaut/bin")
18
+
19
+ if "XPP_HOME" in os.environ:
20
+ xpppath = os.environ["XPP_HOME"] + "/"
21
+
22
+ environment_vars = {
23
+ "XPP_HOME": xpppath,
24
+ }
25
+
26
+ return environment_vars
27
+
28
+ @staticmethod
29
+ def is_installed():
30
+ ret = True
31
+ environment_vars = XppEngine.get_xpp_environment()
32
+ try:
33
+ FNULL = open(os.devnull, "w")
34
+
35
+ r = check_output(
36
+ [environment_vars["XPP_HOME"] + "/xppaut", "-version"], verbosity=2
37
+ )
38
+ if "Problem" in r:
39
+ ret = 'v???'
40
+
41
+ else:
42
+ ret = "%s" % r.split()[2]
43
+ if not "v" in ret:
44
+ ret = "v%s" % ret
45
+
46
+ inform("XPP %s is correctly installed..." % ret, indent=2, verbosity=1)
47
+
48
+ except OSError as err:
49
+ if is_verbose():
50
+ inform("Couldn't execute XPP: ", err, indent=1)
51
+ ret = False
52
+ return ret
53
+
54
+ @staticmethod
55
+ def install(version):
56
+ from omv.engines.getxpp import install_xpp
57
+
58
+ install_xpp(version)
59
+ inform("Done...", indent=2)
60
+
61
+ def run(self):
62
+ self.environment_vars = XppEngine.get_xpp_environment()
63
+ self.set_environment()
64
+
65
+ try:
66
+ inform(
67
+ "Running file %s with %s" % (trim_path(self.modelpath), self.name),
68
+ indent=1,
69
+ )
70
+ self.stdout = check_output(
71
+ [self.environment_vars["XPP_HOME"] + "/xppaut", self.modelpath, '-silent'],
72
+ cwd=os.path.dirname(self.modelpath),
73
+ )
74
+ self.returncode = 0
75
+ except sp.CalledProcessError as err:
76
+ self.returncode = err.returncode
77
+ self.stdout = err.output
78
+ raise EngineExecutionError
79
+ except Exception as err:
80
+ inform("Another error with running %s: " % self.name, err, indent=1)
81
+ self.returncode = -1
82
+ self.stdout = "???"
@@ -279,6 +279,16 @@ def _install_engine(eng):
279
279
 
280
280
  install_arbor(engine_version)
281
281
 
282
+ elif eng.lower() == "XPP".lower():
283
+ from omv.engines.xpp import XppEngine as ee
284
+
285
+ if ee.is_installed():
286
+ already_installed = True
287
+ else:
288
+ from omv.engines.getxpp import install_xpp
289
+
290
+ install_xpp(engine_version)
291
+
282
292
  elif eng.lower() == "EDEN".lower():
283
293
  from omv.engines.eden_ import EdenEngine as ee
284
294
 
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = OSBModelValidation
3
- version = 0.2.19
3
+ version = 0.2.21
4
4
  author = Boris Marin, Padraig Gleeson
5
5
  author_email = borismarin@gmail.com
6
6
  url = https://github.com/OpenSourceBrain/osb-model-validation
@@ -18,6 +18,7 @@ classifiers =
18
18
  Programming Language :: Python :: 3.9
19
19
  Programming Language :: Python :: 3.10
20
20
  Programming Language :: Python :: 3.11
21
+ Programming Language :: Python :: 3.12
21
22
  Topic :: Scientific/Engineering
22
23
 
23
24
  [options]
@@ -28,6 +29,7 @@ install_requires =
28
29
  pathlib; python_version<'3.4'
29
30
  docopt
30
31
  importlib-metadata; python_version<'3.8'
32
+ setuptools
31
33
  packages = find:
32
34
 
33
35
  [options.packages.find]