Skip to content

Commit 4d88993

Browse files
committed
Add test on jnml -xpp
1 parent 1dcf15b commit 4d88993

File tree

5 files changed

+88
-0
lines changed

5 files changed

+88
-0
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ jobs:
4646
- jNeuroML_PyNN_NEURON
4747
- jNeuroML_validate
4848
- jNeuroML_validatev1
49+
- jNeuroML_XPP
4950
- Py_neuroConstruct
5051
- pyNeuroML
5152
- pyNeuroML_validate_sbml

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,4 @@ report*.txt
123123
/utilities/tests/*_eden.py
124124
arm64
125125
/*ken.sh
126+
/utilities/tests/LEMS_NML2_Ex9_FN.ode

omv/engines/__init__.py

Lines changed: 1 addition & 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

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
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Script for running automated tests on OSB using Travis-CI, see https://github.com/OpenSourceBrain/osb-model-validation
2+
3+
target: LEMS_NML2_Ex9_FN.xml
4+
engine: jNeuroML_XPP
5+
mep: .test.ex9.mep
6+
experiments:
7+
V:
8+
observables:
9+
spike times:
10+
file:
11+
path: output.dat
12+
columns: [0,1]
13+
scaling: [1000, 1000]
14+
spike detection:
15+
method: derivative
16+
tolerance: 0.004098360655737705
17+
W:
18+
observables:
19+
spike times:
20+
file:
21+
path: output.dat
22+
columns: [0,2]
23+
scaling: [1000, 1]
24+
spike detection:
25+
method: derivative
26+
tolerance: 0.00033585982982530405

0 commit comments

Comments
 (0)