OSBModelValidation 0.2.18__py3-none-any.whl
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.2.18.dist-info/METADATA +184 -0
- OSBModelValidation-0.2.18.dist-info/RECORD +98 -0
- OSBModelValidation-0.2.18.dist-info/WHEEL +5 -0
- OSBModelValidation-0.2.18.dist-info/entry_points.txt +2 -0
- OSBModelValidation-0.2.18.dist-info/top_level.txt +1 -0
- omv/__init__.py +8 -0
- omv/analyzers/__init__.py +21 -0
- omv/analyzers/activation.py +24 -0
- omv/analyzers/analyzer.py +80 -0
- omv/analyzers/dryrun.py +13 -0
- omv/analyzers/input_resistance.py +47 -0
- omv/analyzers/morphology.py +16 -0
- omv/analyzers/rates.py +97 -0
- omv/analyzers/resting.py +37 -0
- omv/analyzers/spikes.py +113 -0
- omv/analyzers/temperature.py +12 -0
- omv/analyzers/timeseries.py +57 -0
- omv/analyzers/utils/__init__.py +0 -0
- omv/analyzers/utils/filenode.py +73 -0
- omv/analyzers/utils/timeseries.py +293 -0
- omv/autogen.py +106 -0
- omv/common/__init__.py +0 -0
- omv/common/inout.py +154 -0
- omv/engines/__init__.py +53 -0
- omv/engines/arbor_.py +57 -0
- omv/engines/brian1.py +59 -0
- omv/engines/brian2_.py +57 -0
- omv/engines/eden_.py +63 -0
- omv/engines/engine.py +111 -0
- omv/engines/genesis.py +86 -0
- omv/engines/getarbor.py +15 -0
- omv/engines/getbrian1.py +42 -0
- omv/engines/getbrian2.py +17 -0
- omv/engines/geteden.py +17 -0
- omv/engines/getgenesis.py +56 -0
- omv/engines/getjlems.py +20 -0
- omv/engines/getjnml.py +48 -0
- omv/engines/getlibsbml.py +13 -0
- omv/engines/getmoose.py +15 -0
- omv/engines/getnest.py +62 -0
- omv/engines/getnetpyne.py +52 -0
- omv/engines/getneuroconstruct.py +31 -0
- omv/engines/getnml2.py +26 -0
- omv/engines/getnrn.py +60 -0
- omv/engines/getoctave.py +11 -0
- omv/engines/getpylems.py +13 -0
- omv/engines/getpyneuroml.py +14 -0
- omv/engines/getpynn.py +40 -0
- omv/engines/jlems.py +48 -0
- omv/engines/jneuroml.py +101 -0
- omv/engines/jneuromlbrian.py +65 -0
- omv/engines/jneuromlbrian2.py +61 -0
- omv/engines/jneuromleden.py +61 -0
- omv/engines/jneuromlmoose.py +63 -0
- omv/engines/jneuromlnetpyne.py +73 -0
- omv/engines/jneuromlnetpyne_np2.py +45 -0
- omv/engines/jneuromlnetpyne_np4.py +45 -0
- omv/engines/jneuromlnrn.py +78 -0
- omv/engines/jneuromlpynnnrn.py +75 -0
- omv/engines/jneuromlvalidate.py +62 -0
- omv/engines/jneuromlvalidatev1.py +58 -0
- omv/engines/moose_.py +86 -0
- omv/engines/nestsli.py +84 -0
- omv/engines/netpyne_.py +120 -0
- omv/engines/netpyne__np2.py +47 -0
- omv/engines/netpyne__np4.py +47 -0
- omv/engines/neuron_.py +205 -0
- omv/engines/octave.py +51 -0
- omv/engines/pylems.py +57 -0
- omv/engines/pylemsnml2.py +59 -0
- omv/engines/pynest.py +111 -0
- omv/engines/pyneuroconstruct.py +67 -0
- omv/engines/pyneuroml_.py +55 -0
- omv/engines/pyneuromlvalidatesbml.py +83 -0
- omv/engines/pyneuron.py +94 -0
- omv/engines/pynn.py +63 -0
- omv/engines/pynnbrian1.py +59 -0
- omv/engines/pynnbrian2.py +60 -0
- omv/engines/pynnnest.py +56 -0
- omv/engines/pynnneuroml.py +57 -0
- omv/engines/pynnneuron.py +94 -0
- omv/engines/utils/__init__.py +21 -0
- omv/engines/utils/genesis_utils.g +26 -0
- omv/engines/utils/wdir.py +15 -0
- omv/experiment.py +18 -0
- omv/find_tests.py +126 -0
- omv/omt_mep_parser.py +59 -0
- omv/omv_util.py +439 -0
- omv/parse_omt.py +118 -0
- omv/tally.py +112 -0
- omv/test/__init__.py +0 -0
- omv/test/test_rates.py +38 -0
- omv/test/test_types.py +29 -0
- omv/validation/__init__.py +0 -0
- omv/validation/rx_validator.py +35 -0
- omv/validation/utils.py +51 -0
- omv/validation/validate.py +53 -0
- omv/validation/validate_mep.py +15 -0
omv/find_tests.py
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
from os import environ, getcwd
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from omv.parse_omt import parse_omt
|
|
4
|
+
from omv.common.inout import load_yaml, inform, trim_path, is_verbose
|
|
5
|
+
from omv.tally import TallyHolder
|
|
6
|
+
from omv.engines import OMVEngines
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_all(
|
|
10
|
+
do_not_run=False,
|
|
11
|
+
only_this_engine=None,
|
|
12
|
+
include_temp_tests=False,
|
|
13
|
+
ignore_non_py3=False,
|
|
14
|
+
):
|
|
15
|
+
cwd = Path(getcwd())
|
|
16
|
+
all_omts = [p.as_posix() for p in cwd.glob("**/*.omt")]
|
|
17
|
+
if include_temp_tests:
|
|
18
|
+
all_omts += [p.as_posix() for p in cwd.glob("**/*.omt_")]
|
|
19
|
+
|
|
20
|
+
th = TallyHolder()
|
|
21
|
+
if environ.get("TRAVIS"):
|
|
22
|
+
if not environ.get("OMV_ENGINE"):
|
|
23
|
+
tallies = [parse_omt(t, ignore_non_py3=ignore_non_py3) for t in all_omts]
|
|
24
|
+
else:
|
|
25
|
+
engine = environ.get("OMV_ENGINE").lower()
|
|
26
|
+
engine_version = None
|
|
27
|
+
if ":" in engine:
|
|
28
|
+
ee = engine.split(":")
|
|
29
|
+
engine = ee[0]
|
|
30
|
+
engine_version = ee[1]
|
|
31
|
+
tallies = [
|
|
32
|
+
parse_omt(
|
|
33
|
+
t, engine_version=engine_version, ignore_non_py3=ignore_non_py3
|
|
34
|
+
)
|
|
35
|
+
for t in all_omts
|
|
36
|
+
if load_yaml(t)["engine"].lower() == engine
|
|
37
|
+
]
|
|
38
|
+
elif only_this_engine:
|
|
39
|
+
inform("Only running tests for engine: %s" % only_this_engine)
|
|
40
|
+
tallies = [
|
|
41
|
+
parse_omt(t, ignore_non_py3=ignore_non_py3)
|
|
42
|
+
for t in all_omts
|
|
43
|
+
if load_yaml(t)["engine"].lower() == only_this_engine.lower()
|
|
44
|
+
]
|
|
45
|
+
else:
|
|
46
|
+
tallies = []
|
|
47
|
+
failed = 0
|
|
48
|
+
for i in range(len(all_omts)):
|
|
49
|
+
t = all_omts[i]
|
|
50
|
+
inform("")
|
|
51
|
+
tally = parse_omt(t, do_not_run, ignore_non_py3=ignore_non_py3)
|
|
52
|
+
if not tally.all_passed():
|
|
53
|
+
failed += 1
|
|
54
|
+
if not do_not_run:
|
|
55
|
+
inform("")
|
|
56
|
+
inform("")
|
|
57
|
+
inform(
|
|
58
|
+
" [ Test %i of %i complete - failed so far: %s ]"
|
|
59
|
+
% (i + 1, len(all_omts), failed)
|
|
60
|
+
)
|
|
61
|
+
tallies.append(tally)
|
|
62
|
+
|
|
63
|
+
tallies.sort()
|
|
64
|
+
|
|
65
|
+
if not do_not_run:
|
|
66
|
+
for t in tallies:
|
|
67
|
+
th.add(t)
|
|
68
|
+
|
|
69
|
+
results = []
|
|
70
|
+
for i in range(len(tallies)):
|
|
71
|
+
t = tallies[i]
|
|
72
|
+
results.append(t.all_passed())
|
|
73
|
+
inform("")
|
|
74
|
+
inform(
|
|
75
|
+
"%i test(s) run" % len(tallies), overline="-", underline="-", center=True
|
|
76
|
+
)
|
|
77
|
+
inform("")
|
|
78
|
+
if len(results) == 0:
|
|
79
|
+
inform("No tests found!", underline="=", center=True)
|
|
80
|
+
elif all(results):
|
|
81
|
+
inform("All tests passing!", underline="=", center=True)
|
|
82
|
+
else:
|
|
83
|
+
failed = [trim_path(t.omt) for t in tallies if not t.all_passed()]
|
|
84
|
+
inform("Some test(s) failed: ", failed, underline="=")
|
|
85
|
+
|
|
86
|
+
if is_verbose():
|
|
87
|
+
print("\n" + th.summary() + "\n")
|
|
88
|
+
|
|
89
|
+
assert len(results) > 0
|
|
90
|
+
assert all(results)
|
|
91
|
+
|
|
92
|
+
else:
|
|
93
|
+
engs = {}
|
|
94
|
+
tot_tests = 0
|
|
95
|
+
for t in tallies:
|
|
96
|
+
if not t.engine in engs:
|
|
97
|
+
engs[t.engine] = 0
|
|
98
|
+
engs[t.engine] += 1
|
|
99
|
+
tot_tests += 1
|
|
100
|
+
inform("")
|
|
101
|
+
|
|
102
|
+
for e in sorted(engs):
|
|
103
|
+
inform(
|
|
104
|
+
" Engine %s %s tests\t(installed: %s)"
|
|
105
|
+
% (e + ":" + " " * (21 - len(e)), engs[e], OMVEngines[e].is_installed())
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
inform("")
|
|
109
|
+
inform(" %s OMV tests in total" % (tot_tests))
|
|
110
|
+
inform("")
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_one(omt_fname):
|
|
114
|
+
tally = parse_omt(omt_fname)
|
|
115
|
+
inform("")
|
|
116
|
+
if tally.all_passed():
|
|
117
|
+
inform("Test passed: %s" % omt_fname, overline="=", center=True)
|
|
118
|
+
else:
|
|
119
|
+
inform("Test failed: %s" % (omt_fname), underline="=", center=True)
|
|
120
|
+
|
|
121
|
+
if is_verbose():
|
|
122
|
+
th = TallyHolder()
|
|
123
|
+
th.add(tally)
|
|
124
|
+
print("\n" + th.summary() + "\n")
|
|
125
|
+
|
|
126
|
+
assert tally.all_passed()
|
omv/omt_mep_parser.py
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from omv.experiment import OMVExperiment
|
|
2
|
+
from os.path import join, dirname
|
|
3
|
+
from omv.common.inout import load_yaml
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class OMVParseError(BaseException):
|
|
7
|
+
pass
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class OMVTestParser(object):
|
|
11
|
+
def __init__(self, omt_path):
|
|
12
|
+
self.omt_path = omt_path
|
|
13
|
+
self.omt_root = dirname(omt_path)
|
|
14
|
+
self.omt = load_yaml(omt_path)
|
|
15
|
+
if "mep" in self.omt:
|
|
16
|
+
self.mep_path = join(self.omt_root, self.omt["mep"])
|
|
17
|
+
self.mep_root = dirname(self.mep_path)
|
|
18
|
+
self.mep = load_yaml(self.mep_path)
|
|
19
|
+
else:
|
|
20
|
+
self.mep_root = None
|
|
21
|
+
self.mep_path = None
|
|
22
|
+
self.mep = None
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def modelpath(self):
|
|
26
|
+
# print('Interpreting %s'%self.omt['target'])
|
|
27
|
+
if " " in self.omt["target"]: # e.g. target: "*.cell.nml *.channel.nml"
|
|
28
|
+
all = ""
|
|
29
|
+
for part in self.omt["target"].split(" "):
|
|
30
|
+
all += join(self.omt_root, part.strip()) + " "
|
|
31
|
+
return all[:-1]
|
|
32
|
+
return join(self.omt_root, self.omt["target"])
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def engine(self):
|
|
36
|
+
return self.omt["engine"]
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def mep_experiments(self):
|
|
40
|
+
return self.mep["experiments"]
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def omt_experiments(self):
|
|
44
|
+
return self.omt["experiments"]
|
|
45
|
+
|
|
46
|
+
def generate_exps(self, engine):
|
|
47
|
+
if self.mep:
|
|
48
|
+
for expname, exp in self.omt_experiments.items():
|
|
49
|
+
expmep = self.mep_experiments[expname]
|
|
50
|
+
obs = exp["observables"]
|
|
51
|
+
yield OMVExperiment(
|
|
52
|
+
expname, expmep, obs, engine, self.omt_root, self.mep_root
|
|
53
|
+
)
|
|
54
|
+
else:
|
|
55
|
+
exp = {"expected": {"dry": None}}
|
|
56
|
+
obs = {"dry": None}
|
|
57
|
+
yield OMVExperiment(
|
|
58
|
+
"Dry run", exp, obs, engine, self.omt_root, self.mep_root
|
|
59
|
+
)
|
omv/omv_util.py
ADDED
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
"""OpenSourceBrain Model Validation and Testing
|
|
2
|
+
============================================
|
|
3
|
+
|
|
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]
|
|
8
|
+
omv autogen [options]
|
|
9
|
+
omv install <engine>
|
|
10
|
+
omv find
|
|
11
|
+
omv (list-engines | list) [-V | --verbose]
|
|
12
|
+
omv validate-mep <mepfile>
|
|
13
|
+
omv validate-omt <omtfile>
|
|
14
|
+
omv (-h | --help)
|
|
15
|
+
omv --version
|
|
16
|
+
|
|
17
|
+
Options:
|
|
18
|
+
-h --help Show this screen.
|
|
19
|
+
-d --dryrun Generate dry-run tests only [default: False].
|
|
20
|
+
-V --verbose Display additional diagnosis messages [default: False].
|
|
21
|
+
--version Show version.
|
|
22
|
+
--ignore-non-py3 If Python 3, ignore tests on non Py3 compatible engines [default: False]
|
|
23
|
+
-y Auto-select default options (non-interactive mode)
|
|
24
|
+
"""
|
|
25
|
+
from docopt import docopt
|
|
26
|
+
from omv.find_tests import test_all, test_one
|
|
27
|
+
from omv.validation import validate_mep
|
|
28
|
+
from omv.autogen import autogen
|
|
29
|
+
from omv.engines import OMVEngines
|
|
30
|
+
from omv.common.inout import inform
|
|
31
|
+
import os
|
|
32
|
+
import platform
|
|
33
|
+
|
|
34
|
+
from omv.common.inout import set_verbosity
|
|
35
|
+
|
|
36
|
+
from omv import __version__ as omv_version
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def main():
|
|
40
|
+
arguments = docopt(
|
|
41
|
+
__doc__, version="OpenSourceBrain Model Validation %s" % omv_version
|
|
42
|
+
)
|
|
43
|
+
set_env_vars()
|
|
44
|
+
|
|
45
|
+
if arguments["--verbose"]:
|
|
46
|
+
set_verbosity(1)
|
|
47
|
+
|
|
48
|
+
if arguments["test"]:
|
|
49
|
+
try:
|
|
50
|
+
test_one(arguments["<testMe.omt>"])
|
|
51
|
+
except AssertionError:
|
|
52
|
+
inform("Failed due to non passing tests")
|
|
53
|
+
exit(1)
|
|
54
|
+
|
|
55
|
+
elif arguments["all"]:
|
|
56
|
+
try:
|
|
57
|
+
if platform.python_version_tuple()[0] == "3":
|
|
58
|
+
inform(
|
|
59
|
+
"Python 3. Ignoring tests for non Py3 compatible engines: %s"
|
|
60
|
+
% arguments["--ignore-non-py3"]
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
if arguments["--engine"] is not None:
|
|
64
|
+
if ":" in arguments["--engine"]:
|
|
65
|
+
_install_engine(arguments["--engine"])
|
|
66
|
+
only_this_engine = arguments["--engine"].split(":")[0]
|
|
67
|
+
else:
|
|
68
|
+
only_this_engine = None
|
|
69
|
+
|
|
70
|
+
test_all(
|
|
71
|
+
only_this_engine=only_this_engine,
|
|
72
|
+
ignore_non_py3=arguments["--ignore-non-py3"],
|
|
73
|
+
)
|
|
74
|
+
except AssertionError:
|
|
75
|
+
inform("Failed due to non passing tests")
|
|
76
|
+
exit(1)
|
|
77
|
+
|
|
78
|
+
# Includes *.omt_, i.e. temporary test files
|
|
79
|
+
elif arguments["all_"]:
|
|
80
|
+
try:
|
|
81
|
+
test_all(
|
|
82
|
+
only_this_engine=arguments["--engine"],
|
|
83
|
+
include_temp_tests=True,
|
|
84
|
+
ignore_non_py3=arguments["--ignore-non-py3"],
|
|
85
|
+
)
|
|
86
|
+
except AssertionError:
|
|
87
|
+
inform("Failed due to non passing tests")
|
|
88
|
+
exit(1)
|
|
89
|
+
|
|
90
|
+
elif arguments["find"]:
|
|
91
|
+
try:
|
|
92
|
+
test_all(do_not_run=True)
|
|
93
|
+
except AssertionError:
|
|
94
|
+
inform("Failed due to non passing tests")
|
|
95
|
+
exit(1)
|
|
96
|
+
|
|
97
|
+
elif arguments["validate-mep"]:
|
|
98
|
+
validate_mep.validate(arguments["<mepfile>"])
|
|
99
|
+
|
|
100
|
+
elif arguments["validate-omt"]:
|
|
101
|
+
inform("OMT validation not implemented yet!")
|
|
102
|
+
exit(1)
|
|
103
|
+
|
|
104
|
+
elif arguments["install"]:
|
|
105
|
+
set_verbosity(1)
|
|
106
|
+
eng = arguments["<engine>"]
|
|
107
|
+
|
|
108
|
+
_install_engine(eng)
|
|
109
|
+
|
|
110
|
+
elif arguments["list-engines"] or arguments["list"]:
|
|
111
|
+
inform("OMV is checking which engines are currently installed...")
|
|
112
|
+
set_verbosity(0) # No need to report failures
|
|
113
|
+
engines = sorted(OMVEngines.keys())
|
|
114
|
+
|
|
115
|
+
installed = {}
|
|
116
|
+
for engine in engines:
|
|
117
|
+
installed[engine] = OMVEngines[engine].is_installed()
|
|
118
|
+
|
|
119
|
+
inform("")
|
|
120
|
+
inform(
|
|
121
|
+
"The following engines are currently supported by OMV (v%s):" % omv_version
|
|
122
|
+
)
|
|
123
|
+
inform("")
|
|
124
|
+
for engine in engines:
|
|
125
|
+
py3_info = (
|
|
126
|
+
"" if OMVEngines[engine].python3_compatible else "; non Py3 compatible"
|
|
127
|
+
)
|
|
128
|
+
inform(
|
|
129
|
+
" %s%s(installed: %s%s)"
|
|
130
|
+
% (engine, " " * (30 - len(engine)), installed[engine], py3_info)
|
|
131
|
+
)
|
|
132
|
+
inform("")
|
|
133
|
+
if arguments["--verbose"]:
|
|
134
|
+
inform("Additional Python (v%s) packages:" % platform.python_version())
|
|
135
|
+
inform("")
|
|
136
|
+
for m in [
|
|
137
|
+
"matplotlib",
|
|
138
|
+
"numpy",
|
|
139
|
+
"pandas",
|
|
140
|
+
"scipy",
|
|
141
|
+
"sympy",
|
|
142
|
+
"tables",
|
|
143
|
+
"h5py",
|
|
144
|
+
"neo",
|
|
145
|
+
"lazyarray",
|
|
146
|
+
"pyelectro",
|
|
147
|
+
"neurotune",
|
|
148
|
+
"lems",
|
|
149
|
+
"pyneuroml",
|
|
150
|
+
"neuroml",
|
|
151
|
+
"neuromllite",
|
|
152
|
+
"libsbml",
|
|
153
|
+
]:
|
|
154
|
+
installed_ver = False
|
|
155
|
+
try:
|
|
156
|
+
exec("import %s" % m)
|
|
157
|
+
installed_ver = "v%s" % eval("%s.__version__" % m)
|
|
158
|
+
except:
|
|
159
|
+
pass
|
|
160
|
+
inform(
|
|
161
|
+
" %s%s(installed: %s)" % (m, " " * (30 - len(m)), installed_ver)
|
|
162
|
+
)
|
|
163
|
+
inform("")
|
|
164
|
+
|
|
165
|
+
elif arguments["autogen"]:
|
|
166
|
+
inform("Automatically generating model validation files")
|
|
167
|
+
dry = arguments["--dryrun"]
|
|
168
|
+
auto = arguments["-y"]
|
|
169
|
+
autogen(auto, dry)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def _install_engine(eng):
|
|
173
|
+
engine_version = None
|
|
174
|
+
|
|
175
|
+
if ":" in eng:
|
|
176
|
+
ee = eng.split(":")
|
|
177
|
+
eng = ee[0]
|
|
178
|
+
engine_version = ee[1]
|
|
179
|
+
inform("Engine %s version %s will be used..." % (eng, engine_version))
|
|
180
|
+
else:
|
|
181
|
+
inform("Engine %s, default version will be used..." % (eng))
|
|
182
|
+
|
|
183
|
+
if eng.lower() not in [e.lower() for e in OMVEngines]:
|
|
184
|
+
inform("Engine " + eng + " unknown!")
|
|
185
|
+
else:
|
|
186
|
+
inform("Trying to install: %s" % eng)
|
|
187
|
+
already_installed = False
|
|
188
|
+
|
|
189
|
+
if eng.lower() == "NEURON".lower():
|
|
190
|
+
from omv.engines.neuron_ import NeuronEngine
|
|
191
|
+
|
|
192
|
+
if not NeuronEngine.is_installed():
|
|
193
|
+
from omv.engines.getnrn import install_neuron
|
|
194
|
+
|
|
195
|
+
install_neuron(engine_version)
|
|
196
|
+
else:
|
|
197
|
+
already_installed = True
|
|
198
|
+
|
|
199
|
+
elif eng.lower() == "PyNEURON".lower():
|
|
200
|
+
from omv.engines.pyneuron import PyNRNEngine
|
|
201
|
+
|
|
202
|
+
if not PyNRNEngine.is_installed():
|
|
203
|
+
from omv.engines.getnrn import install_neuron
|
|
204
|
+
|
|
205
|
+
install_neuron(engine_version)
|
|
206
|
+
else:
|
|
207
|
+
already_installed = True
|
|
208
|
+
|
|
209
|
+
elif eng.lower() == "jLEMS".lower():
|
|
210
|
+
from omv.engines.jlems import JLemsEngine as ee
|
|
211
|
+
|
|
212
|
+
if ee.is_installed():
|
|
213
|
+
already_installed = True
|
|
214
|
+
else:
|
|
215
|
+
if engine_version is not None:
|
|
216
|
+
raise Exception(
|
|
217
|
+
"Currently, cannot install a specific version of engine %s"
|
|
218
|
+
% eng
|
|
219
|
+
)
|
|
220
|
+
from omv.engines.getjlems import install_jlems
|
|
221
|
+
|
|
222
|
+
install_jlems()
|
|
223
|
+
|
|
224
|
+
elif eng.lower() == "jNeuroML".lower():
|
|
225
|
+
from omv.engines.jneuroml import JNeuroMLEngine as ee
|
|
226
|
+
|
|
227
|
+
if ee.is_installed():
|
|
228
|
+
already_installed = True
|
|
229
|
+
else:
|
|
230
|
+
from omv.engines.getjnml import install_jnml
|
|
231
|
+
|
|
232
|
+
install_jnml(engine_version)
|
|
233
|
+
|
|
234
|
+
elif eng.lower() == "neuroConstruct" or eng == "Py_neuroConstruct".lower():
|
|
235
|
+
from omv.engines.pyneuroconstruct import PyneuroConstructEngine as ee
|
|
236
|
+
|
|
237
|
+
if ee.is_installed():
|
|
238
|
+
already_installed = True
|
|
239
|
+
else:
|
|
240
|
+
if engine_version is not None:
|
|
241
|
+
raise Exception(
|
|
242
|
+
"Currently, cannot install a specific version of engine %s"
|
|
243
|
+
% eng
|
|
244
|
+
)
|
|
245
|
+
from omv.engines.getneuroconstruct import install_neuroconstruct
|
|
246
|
+
|
|
247
|
+
install_neuroconstruct()
|
|
248
|
+
|
|
249
|
+
elif eng.lower() == "pyNeuroML".lower():
|
|
250
|
+
from omv.engines.pyneuroml_ import PyNeuroMLEngine as ee
|
|
251
|
+
|
|
252
|
+
if ee.is_installed():
|
|
253
|
+
already_installed = True
|
|
254
|
+
else:
|
|
255
|
+
ee.install(engine_version)
|
|
256
|
+
|
|
257
|
+
elif eng.lower() == "PyLEMS".lower():
|
|
258
|
+
from omv.engines.pylems import PyLemsEngine as ee
|
|
259
|
+
|
|
260
|
+
if ee.is_installed():
|
|
261
|
+
already_installed = True
|
|
262
|
+
else:
|
|
263
|
+
if engine_version is not None:
|
|
264
|
+
raise Exception(
|
|
265
|
+
"Currently, cannot install a specific version of engine %s"
|
|
266
|
+
% eng
|
|
267
|
+
)
|
|
268
|
+
from omv.engines.getpylems import install_pylems
|
|
269
|
+
|
|
270
|
+
install_pylems()
|
|
271
|
+
|
|
272
|
+
elif eng.lower() == "Arbor".lower():
|
|
273
|
+
from omv.engines.arbor_ import ArborEngine as ee
|
|
274
|
+
|
|
275
|
+
if ee.is_installed():
|
|
276
|
+
already_installed = True
|
|
277
|
+
else:
|
|
278
|
+
from omv.engines.getarbor import install_arbor
|
|
279
|
+
|
|
280
|
+
install_arbor(engine_version)
|
|
281
|
+
|
|
282
|
+
elif eng.lower() == "EDEN".lower():
|
|
283
|
+
from omv.engines.eden_ import EdenEngine as ee
|
|
284
|
+
|
|
285
|
+
if ee.is_installed():
|
|
286
|
+
already_installed = True
|
|
287
|
+
else:
|
|
288
|
+
from omv.engines.geteden import install_eden
|
|
289
|
+
|
|
290
|
+
install_eden(engine_version)
|
|
291
|
+
|
|
292
|
+
elif eng.lower() == "PyLEMS_NeuroML2".lower():
|
|
293
|
+
pylems_already_installed = False
|
|
294
|
+
nml2_already_installed = False
|
|
295
|
+
|
|
296
|
+
from omv.engines.pylems import PyLemsEngine as ee
|
|
297
|
+
|
|
298
|
+
if ee.is_installed():
|
|
299
|
+
pylems_already_installed = True
|
|
300
|
+
else:
|
|
301
|
+
from omv.engines.getpylems import install_pylems
|
|
302
|
+
|
|
303
|
+
install_pylems()
|
|
304
|
+
|
|
305
|
+
from omv.engines.getnml2 import install_nml2, is_nml2_installed
|
|
306
|
+
|
|
307
|
+
if is_nml2_installed():
|
|
308
|
+
nml2_already_installed = True
|
|
309
|
+
else:
|
|
310
|
+
if engine_version is not None:
|
|
311
|
+
raise Exception(
|
|
312
|
+
"Currently, cannot install a specific version of engine %s"
|
|
313
|
+
% eng
|
|
314
|
+
)
|
|
315
|
+
install_nml2()
|
|
316
|
+
|
|
317
|
+
already_installed = nml2_already_installed and pylems_already_installed
|
|
318
|
+
|
|
319
|
+
elif eng.lower() == "Py_neuroConstruct".lower():
|
|
320
|
+
from omv.engines.pyneuroconstruct import PyneuroConstructEngine as ee
|
|
321
|
+
|
|
322
|
+
if ee.is_installed():
|
|
323
|
+
already_installed = True
|
|
324
|
+
else:
|
|
325
|
+
if engine_version is not None:
|
|
326
|
+
raise Exception(
|
|
327
|
+
"Currently, cannot install a specific version of engine %s"
|
|
328
|
+
% eng
|
|
329
|
+
)
|
|
330
|
+
from omv.engines.getneuroconstruct import install_neuroconstruct
|
|
331
|
+
|
|
332
|
+
install_neuroconstruct()
|
|
333
|
+
|
|
334
|
+
elif eng.lower() == "genesis".lower():
|
|
335
|
+
if engine_version is not None:
|
|
336
|
+
raise Exception(
|
|
337
|
+
"Currently, cannot install a specific version of engine %s" % eng
|
|
338
|
+
)
|
|
339
|
+
from omv.engines.getgenesis import install_genesis
|
|
340
|
+
|
|
341
|
+
install_genesis()
|
|
342
|
+
elif eng.lower() == "Moose".lower():
|
|
343
|
+
if engine_version is not None:
|
|
344
|
+
raise Exception(
|
|
345
|
+
"Currently, cannot install a specific version of engine %s" % eng
|
|
346
|
+
)
|
|
347
|
+
from omv.engines.getmoose import install_moose
|
|
348
|
+
|
|
349
|
+
install_moose(engine_version)
|
|
350
|
+
elif eng.lower() == "NetPyNE".lower():
|
|
351
|
+
from omv.engines.getnetpyne import install_netpyne
|
|
352
|
+
|
|
353
|
+
install_netpyne(engine_version)
|
|
354
|
+
elif eng.lower() == "Brian".lower():
|
|
355
|
+
if engine_version is not None:
|
|
356
|
+
raise Exception(
|
|
357
|
+
"Currently, cannot install a specific version of engine %s" % eng
|
|
358
|
+
)
|
|
359
|
+
from omv.engines.getbrian1 import install_brian
|
|
360
|
+
|
|
361
|
+
install_brian()
|
|
362
|
+
elif eng.lower() == "Brian2".lower():
|
|
363
|
+
from omv.engines.getbrian2 import install_brian2
|
|
364
|
+
|
|
365
|
+
install_brian2(engine_version)
|
|
366
|
+
elif eng.lower() == "NEST".lower():
|
|
367
|
+
from omv.engines.nestsli import NestEngine as ee
|
|
368
|
+
|
|
369
|
+
if ee.is_installed():
|
|
370
|
+
already_installed = True
|
|
371
|
+
else:
|
|
372
|
+
from omv.engines.getnest import install_nest
|
|
373
|
+
|
|
374
|
+
install_nest(engine_version)
|
|
375
|
+
elif eng.lower() == "PyNEST".lower():
|
|
376
|
+
from omv.engines.pynest import PyNestEngine as ee
|
|
377
|
+
|
|
378
|
+
if ee.is_installed():
|
|
379
|
+
already_installed = True
|
|
380
|
+
else:
|
|
381
|
+
from omv.engines.getnest import install_nest
|
|
382
|
+
|
|
383
|
+
install_nest(engine_version)
|
|
384
|
+
elif eng.lower() == "PyNN".lower():
|
|
385
|
+
from omv.engines.getpynn import install_pynn
|
|
386
|
+
|
|
387
|
+
install_pynn(engine_version)
|
|
388
|
+
|
|
389
|
+
elif eng.lower() == "PyNN_NEURON".lower():
|
|
390
|
+
if engine_version is not None:
|
|
391
|
+
raise Exception(
|
|
392
|
+
"Currently, cannot install a specific version of engine %s" % eng
|
|
393
|
+
)
|
|
394
|
+
from omv.engines.pynnneuron import PyNNNRNEngine
|
|
395
|
+
|
|
396
|
+
PyNNNRNEngine.install()
|
|
397
|
+
|
|
398
|
+
elif eng.lower() == "jNeuroML_Brian2".lower():
|
|
399
|
+
from omv.engines.jneuromlbrian2 import JNeuroMLBrian2Engine as ee
|
|
400
|
+
|
|
401
|
+
if ee.is_installed():
|
|
402
|
+
already_installed = True
|
|
403
|
+
else:
|
|
404
|
+
ee.install(engine_version)
|
|
405
|
+
|
|
406
|
+
elif eng.lower() == "jNeuroML_NEURON".lower():
|
|
407
|
+
from omv.engines.jneuromlnrn import JNeuroMLNRNEngine as ee
|
|
408
|
+
|
|
409
|
+
if ee.is_installed():
|
|
410
|
+
already_installed = True
|
|
411
|
+
else:
|
|
412
|
+
ee.install(engine_version)
|
|
413
|
+
|
|
414
|
+
elif eng.lower() == "jNeuroML_EDEN".lower():
|
|
415
|
+
from omv.engines.jneuromleden import JNeuroMLEdenEngine as ee
|
|
416
|
+
|
|
417
|
+
if ee.is_installed():
|
|
418
|
+
already_installed = True
|
|
419
|
+
else:
|
|
420
|
+
ee.install(engine_version)
|
|
421
|
+
|
|
422
|
+
else:
|
|
423
|
+
inform(
|
|
424
|
+
"Code not implemented yet for installing %s using: omv install! Try running a test using this engine."
|
|
425
|
+
% eng
|
|
426
|
+
)
|
|
427
|
+
exit(1)
|
|
428
|
+
if already_installed:
|
|
429
|
+
inform("Engine %s was already installed" % eng)
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
def set_env_vars():
|
|
433
|
+
if os.name == "nt":
|
|
434
|
+
# Windows does not have a HOME var defined by default
|
|
435
|
+
os.environ["HOME"] = os.environ["USERPROFILE"]
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
if __name__ == "__main__":
|
|
439
|
+
main()
|