Skip to content

Commit 843199a

Browse files
authored
Merge pull request #122 from OpenSourceBrain/test_xpp
XPP updates: Add JNeuroMLXppEngine and pyNEURON_XPP_LEMS
2 parents 991f7cd + 159a08f commit 843199a

18 files changed

+177
-10
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ jobs:
4646
- jNeuroML_PyNN_NEURON
4747
- jNeuroML_validate
4848
- jNeuroML_validatev1
49+
- jNeuroML_XPP
4950
- Py_neuroConstruct
5051
- pyNeuroML
5152
- pyNeuroML_validate_sbml
53+
- pyNEURON_XPP_LEMS
5254
- jNeuroML_Moose
5355
- MOOSE:3.1.5
5456
- XPP

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,8 @@ report*.txt
123123
/utilities/tests/*_eden.py
124124
arm64
125125
/*ken.sh
126+
/utilities/tests/LEMS_NML2_Ex9_FN.ode
127+
/utilities/tests/LEMS_nca.xml
128+
/utilities/tests/nca.model.xml
129+
/utilities/tests/NML2_SingleCompHHCell.nml__flattened.xml
130+
/utilities/tests/lems/simp2.dat

omv/engines/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# from omv.engines.jneuromlbrian import JNeuroMLBrianEngine
1313
from omv.engines.jneuromleden import JNeuroMLEdenEngine
1414
from omv.engines.jneuromlbrian2 import JNeuroMLBrian2Engine
15+
from omv.engines.jneuromlxpp import JNeuroMLXppEngine
1516
from omv.engines.jneuromlmoose import JNeuroMLMooseEngine
1617
from omv.engines.jneuromlvalidate import JNeuroMLValidateEngine
1718
from omv.engines.jneuromlvalidatev1 import JNeuroMLValidateV1Engine
@@ -43,6 +44,7 @@
4344
from omv.engines.pyneuroconstruct import PyneuroConstructEngine
4445
from omv.engines.pyneuroml_ import PyNeuroMLEngine
4546
from omv.engines.pyneuromlvalidatesbml import PyNeuroMLValidateSBMLEngine
47+
from omv.engines.pyneuromlxpp import PyNeuroMLXppEngine
4648

4749

4850
OMVEngines = {

omv/engines/jneuromlbrian.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def install(version):
2626
if not JNeuroMLEngine.is_installed():
2727
JNeuroMLEngine.install(None)
2828
if not Brian1Engine.is_installed():
29-
Brian1Engine.install(None)
29+
Brian1Engine.install(version)
3030

3131
JNeuroMLBrianEngine.path = JNeuroMLEngine.path + ":" + Brian1Engine.path
3232
JNeuroMLBrianEngine.environment_vars = {}

omv/engines/jneuromlnetpyne.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def install(version):
3131
verbosity=1,
3232
)
3333
if not NetPyNEEngine.is_installed():
34-
NetPyNEEngine.install(None)
34+
NetPyNEEngine.install(version)
3535
inform(
3636
"%s installed NetPyNE (& NEURON)..." % JNeuroMLNetPyNEEngine.name,
3737
indent=2,

omv/engines/jneuromlpynnnrn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def install(version):
3232
verbosity=1,
3333
)
3434
if not PyNNNRNEngine.is_installed():
35-
PyNNNRNEngine.install(None)
35+
PyNNNRNEngine.install(version)
3636
inform(
3737
"%s installed PyNN & NRN..." % JNeuroMLPyNNNRNEngine.name,
3838
indent=2,

omv/engines/jneuromlvalidate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def is_installed():
1616
@staticmethod
1717
def install(version):
1818
if not JNeuroMLEngine.is_installed():
19-
JNeuroMLEngine.install(None)
19+
JNeuroMLEngine.install(version)
2020

2121
JNeuroMLValidateEngine.path = JNeuroMLEngine.path
2222
JNeuroMLValidateEngine.environment_vars = {}

omv/engines/jneuromlvalidatev1.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def is_installed():
1717
@staticmethod
1818
def install(version):
1919
if not JNeuroMLEngine.is_installed():
20-
JNeuroMLEngine.install(None)
20+
JNeuroMLEngine.install(version)
2121

2222
JNeuroMLValidateV1Engine.path = JNeuroMLEngine.path
2323
JNeuroMLValidateV1Engine.environment_vars = {}

omv/engines/jneuromlxpp.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

omv/engines/netpyne_.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def install(version):
7373

7474
home = os.environ["HOME"]
7575
inform("Will fetch and install the latest NetPyNE..", indent=2)
76-
install_netpyne()
76+
install_netpyne(version)
7777
inform("Done, NetPyNE is correctly installed...", indent=2)
7878

7979
NetPyNEEngine.path = PyNRNEngine.path

0 commit comments

Comments
 (0)