From c67468c46072a851a48db7ae2230ee026dfa95ab Mon Sep 17 00:00:00 2001
From: Padraig Gleeson
Date: Tue, 23 Apr 2024 15:03:14 +0100
Subject: [PATCH 1/6] Update README.md
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index e5ec478..ef5ca41 100644
--- a/README.md
+++ b/README.md
@@ -7,3 +7,4 @@ See also info about [NetPyNE on OSBv2](https://docs.opensourcebrain.org/OSBv2/Ne
[![Continuous builds](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/omv-ci.yml/badge.svg)](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/omv-ci.yml) [![Regenerate files](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/non-omv.yml/badge.svg)](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/non-omv.yml)
+
From 5f8251d50b7f5be9e43d8340dda5ae012e85d21a Mon Sep 17 00:00:00 2001
From: Padraig Gleeson
Date: Thu, 2 May 2024 11:26:44 +0100
Subject: [PATCH 2/6] Update non-omv.yml
---
.github/workflows/non-omv.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/non-omv.yml b/.github/workflows/non-omv.yml
index 54f597a..160708f 100644
--- a/.github/workflows/non-omv.yml
+++ b/.github/workflows/non-omv.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: [ 3.8, 3.9, "3.10" ]
+ python-version: [ 3.8, 3.9, "3.10", "3.11" ]
runs-on: [ ubuntu-latest, macos-latest ]
steps:
From 0026943c432abc88ccdeaf5b61378e7e68e655b6 Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Thu, 2 May 2024 12:04:10 +0100
Subject: [PATCH 3/6] Update eden spiketime checks
---
.github/workflows/non-omv.yml | 11 ++++++++---
.github/workflows/omv-ci.yml | 6 ++++--
NeuroML2/.test.exGJ.jnmleden.omt | 2 +-
NeuroML2/.test.exIzh.jnmleden.omt | 2 +-
NeuroML2/.test.hh.jnmleden.omt | 4 ++--
NeuroML2/.test.hhsim.jnmleden.omt | 2 +-
NeuroML2/.test.hyizh.jnmleden.omt | 2 +-
NeuroML2/TwoCells/.test.two.jnmleden.omt | 4 ++--
8 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/non-omv.yml b/.github/workflows/non-omv.yml
index 160708f..cc7e5da 100644
--- a/.github/workflows/non-omv.yml
+++ b/.github/workflows/non-omv.yml
@@ -13,17 +13,22 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: [ 3.8, 3.9, "3.10", "3.11" ]
+ python-version: [ 3.9, "3.10", "3.11" ]
runs-on: [ ubuntu-latest, macos-latest ]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
+ - name: Install HDF5 for pytables on macos-latest
+ if: ${{ matrix.runs-on == 'macos-latest' }}
+ run: |
+ brew install hdf5
+
- name: Install OMV
run: |
pip install git+https://github.com/OpenSourceBrain/osb-model-validation
diff --git a/.github/workflows/omv-ci.yml b/.github/workflows/omv-ci.yml
index 4b44459..78ad014 100644
--- a/.github/workflows/omv-ci.yml
+++ b/.github/workflows/omv-ci.yml
@@ -17,11 +17,12 @@ jobs:
engine: [ NetPyNE, jNeuroML, jNeuroML_NEURON, jNeuroML_NetPyNE, jNeuroML_EDEN, jNeuroML_validate ]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
+
- name: Install OMV
run: |
pip install git+https://github.com/OpenSourceBrain/osb-model-validation
@@ -32,6 +33,7 @@ jobs:
- name: Run OMV tests on engine ${{ matrix.engine }}
run: |
omv all -V --engine=${{ matrix.engine }}
+
- name: OMV final version info
run: |
omv list -V # list installed engines
diff --git a/NeuroML2/.test.exGJ.jnmleden.omt b/NeuroML2/.test.exGJ.jnmleden.omt
index 3f2f7d6..416d979 100644
--- a/NeuroML2/.test.exGJ.jnmleden.omt
+++ b/NeuroML2/.test.exGJ.jnmleden.omt
@@ -14,7 +14,7 @@ experiments:
spike detection:
method: threshold
threshold: -69.5
- tolerance: 0.00034498419085947374
+ tolerance: 0.0003449267030756095
cell1:
observables:
spike times:
diff --git a/NeuroML2/.test.exIzh.jnmleden.omt b/NeuroML2/.test.exIzh.jnmleden.omt
index 0d32d25..59ed240 100644
--- a/NeuroML2/.test.exIzh.jnmleden.omt
+++ b/NeuroML2/.test.exIzh.jnmleden.omt
@@ -13,4 +13,4 @@ experiments:
scaling: [1000, 1000]
spike detection:
method: threshold
- tolerance: 0.00014888369126089628
+ tolerance: 0.00014884116521364865
diff --git a/NeuroML2/.test.hh.jnmleden.omt b/NeuroML2/.test.hh.jnmleden.omt
index 4ae30b4..93ae7f8 100644
--- a/NeuroML2/.test.hh.jnmleden.omt
+++ b/NeuroML2/.test.hh.jnmleden.omt
@@ -13,7 +13,7 @@ experiments:
scaling: [1000, 1000]
spike detection:
method: threshold
- tolerance: 0.00011745994437245375
+ tolerance: 0.0001175226231050635
v1:
observables:
spike times:
@@ -23,7 +23,7 @@ experiments:
scaling: [1000, 1000]
spike detection:
method: threshold
- tolerance: 0.0001244750601708972
+ tolerance: 0.00012449165905872983
v2:
observables:
spike times:
diff --git a/NeuroML2/.test.hhsim.jnmleden.omt b/NeuroML2/.test.hhsim.jnmleden.omt
index a560cc2..c0af8e0 100644
--- a/NeuroML2/.test.hhsim.jnmleden.omt
+++ b/NeuroML2/.test.hhsim.jnmleden.omt
@@ -13,4 +13,4 @@ experiments:
scaling: [1000, 1000]
spike detection:
method: threshold
- tolerance: 0.0007232195903184108
+ tolerance: 0.0007232712525507523
diff --git a/NeuroML2/.test.hyizh.jnmleden.omt b/NeuroML2/.test.hyizh.jnmleden.omt
index f504ff8..8d068e3 100644
--- a/NeuroML2/.test.hyizh.jnmleden.omt
+++ b/NeuroML2/.test.hyizh.jnmleden.omt
@@ -13,4 +13,4 @@ experiments:
scaling: [1000, 1000]
spike detection:
method: threshold
- tolerance: 3.66282906798275e-05
+ tolerance: 3.6664955635370336e-05
diff --git a/NeuroML2/TwoCells/.test.two.jnmleden.omt b/NeuroML2/TwoCells/.test.two.jnmleden.omt
index 4f5776b..3ecaf90 100644
--- a/NeuroML2/TwoCells/.test.two.jnmleden.omt
+++ b/NeuroML2/TwoCells/.test.two.jnmleden.omt
@@ -15,7 +15,7 @@ experiments:
spike detection:
method: threshold
threshold: 0
- tolerance: 0.017343922603342065
+ tolerance: 0.01734388742304312
bask0:
observables:
spike times:
@@ -26,4 +26,4 @@ experiments:
spike detection:
method: threshold
threshold: 0
- tolerance: 0.0017869092394359062
+ tolerance: 0.001786960295444412
From fca9b9d64613dccfe89361f96de28632c95a985e Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Thu, 2 May 2024 12:15:26 +0100
Subject: [PATCH 4/6] Not yet 3.11 - wait for neuron update on omv...
---
.github/workflows/non-omv.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/non-omv.yml b/.github/workflows/non-omv.yml
index cc7e5da..a70d6f3 100644
--- a/.github/workflows/non-omv.yml
+++ b/.github/workflows/non-omv.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: [ 3.9, "3.10", "3.11" ]
+ python-version: [ 3.9, "3.10" ]
runs-on: [ ubuntu-latest, macos-latest ]
steps:
From 4e448196d9e0e1dac2c6c8c241c93ecabdbd4379 Mon Sep 17 00:00:00 2001
From: Padraig Gleeson
Date: Thu, 2 May 2024 14:21:20 +0100
Subject: [PATCH 5/6] Update README.md
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index e5ec478..6055578 100644
--- a/README.md
+++ b/README.md
@@ -7,3 +7,5 @@ See also info about [NetPyNE on OSBv2](https://docs.opensourcebrain.org/OSBv2/Ne
[![Continuous builds](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/omv-ci.yml/badge.svg)](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/omv-ci.yml) [![Regenerate files](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/non-omv.yml/badge.svg)](https://github.com/OpenSourceBrain/NetPyNEShowcase/actions/workflows/non-omv.yml)
+
+
From 3090f5bbca768db743521c732d57d38e4ec0c080 Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Thu, 2 May 2024 17:34:17 +0100
Subject: [PATCH 6/6] Regenerated
---
NetPyNE/ACnet/LEMS_MediumNet_netpyne.py | 11 +++++++++--
NetPyNE/GapJunctions/LEMS_GJ_netpyne.py | 11 +++++++++--
NetPyNE/LEMS_2007One_netpyne.py | 11 +++++++++--
NetPyNE/TwoCells/LEMS_TwoCell_netpyne.py | 11 +++++++++--
NetPyNE/UI/LEMS_HHSimple_netpyne.py | 11 +++++++++--
NeuroML2/LEMS_HHSmall.xml | 2 +-
NeuroML2/LEMS_HybridSmall.xml | 2 +-
NeuroML2/LEMS_HybridTut.xml | 2 +-
NeuroML2/LEMS_M1.xml | 2 +-
9 files changed, 49 insertions(+), 14 deletions(-)
diff --git a/NetPyNE/ACnet/LEMS_MediumNet_netpyne.py b/NetPyNE/ACnet/LEMS_MediumNet_netpyne.py
index 8dd9511..b3579da 100644
--- a/NetPyNE/ACnet/LEMS_MediumNet_netpyne.py
+++ b/NetPyNE/ACnet/LEMS_MediumNet_netpyne.py
@@ -58,7 +58,7 @@
class NetPyNESimulation():
- def __init__(self, tstop=500.0, dt=0.01, seed=123456789, save_json=False):
+ def __init__(self, tstop=500.0, dt=0.01, seed=123456789, save_json=False, abs_tol=None):
self.setup_start = time.time()
@@ -89,6 +89,13 @@ def __init__(self, tstop=500.0, dt=0.01, seed=123456789, save_json=False):
self.simConfig.duration = self.simConfig.tstop = tstop # Duration of the simulation, in ms
self.simConfig.dt = dt # Internal integration timestep to use
+ # cvode
+ if abs_tol is not None:
+ self.simConfig.cvode_active = True
+ self.simConfig.cvode_atol = abs_tol
+ else:
+ self.simConfig.cvode_active = False
+
# Seeds for randomizers (connectivity, input stimulation and cell locations)
# Note: locations and connections should be fully specified by the structure of the NeuroML,
# so seeds for conn & loc shouldn't affect networks structure/behaviour
@@ -1402,7 +1409,7 @@ def save_results(self):
save_json = '-json' in sys.argv
no_run = '-norun' in sys.argv
- ns = NetPyNESimulation(tstop=500.0, dt=0.01, seed=123456789, save_json=save_json)
+ ns = NetPyNESimulation(tstop=500.0, dt=0.01, seed=123456789, save_json=save_json, abs_tol=None)
if not no_run:
ns.run()
diff --git a/NetPyNE/GapJunctions/LEMS_GJ_netpyne.py b/NetPyNE/GapJunctions/LEMS_GJ_netpyne.py
index d3b2311..bfe24ea 100644
--- a/NetPyNE/GapJunctions/LEMS_GJ_netpyne.py
+++ b/NetPyNE/GapJunctions/LEMS_GJ_netpyne.py
@@ -32,7 +32,7 @@
class NetPyNESimulation():
- def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False):
+ def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False, abs_tol=None):
self.setup_start = time.time()
@@ -63,6 +63,13 @@ def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False):
self.simConfig.duration = self.simConfig.tstop = tstop # Duration of the simulation, in ms
self.simConfig.dt = dt # Internal integration timestep to use
+ # cvode
+ if abs_tol is not None:
+ self.simConfig.cvode_active = True
+ self.simConfig.cvode_atol = abs_tol
+ else:
+ self.simConfig.cvode_active = False
+
# Seeds for randomizers (connectivity, input stimulation and cell locations)
# Note: locations and connections should be fully specified by the structure of the NeuroML,
# so seeds for conn & loc shouldn't affect networks structure/behaviour
@@ -200,7 +207,7 @@ def save_results(self):
save_json = '-json' in sys.argv
no_run = '-norun' in sys.argv
- ns = NetPyNESimulation(tstop=700.0, dt=0.01, seed=123456789, save_json=save_json)
+ ns = NetPyNESimulation(tstop=700.0, dt=0.01, seed=123456789, save_json=save_json, abs_tol=None)
if not no_run:
ns.run()
diff --git a/NetPyNE/LEMS_2007One_netpyne.py b/NetPyNE/LEMS_2007One_netpyne.py
index 3b511ca..3614edc 100644
--- a/NetPyNE/LEMS_2007One_netpyne.py
+++ b/NetPyNE/LEMS_2007One_netpyne.py
@@ -30,7 +30,7 @@
class NetPyNESimulation():
- def __init__(self, tstop=520.0, dt=0.001, seed=123456789, save_json=False):
+ def __init__(self, tstop=520.0, dt=0.001, seed=123456789, save_json=False, abs_tol=None):
self.setup_start = time.time()
@@ -51,6 +51,13 @@ def __init__(self, tstop=520.0, dt=0.001, seed=123456789, save_json=False):
self.simConfig.duration = self.simConfig.tstop = tstop # Duration of the simulation, in ms
self.simConfig.dt = dt # Internal integration timestep to use
+ # cvode
+ if abs_tol is not None:
+ self.simConfig.cvode_active = True
+ self.simConfig.cvode_atol = abs_tol
+ else:
+ self.simConfig.cvode_active = False
+
# Seeds for randomizers (connectivity, input stimulation and cell locations)
# Note: locations and connections should be fully specified by the structure of the NeuroML,
# so seeds for conn & loc shouldn't affect networks structure/behaviour
@@ -175,7 +182,7 @@ def save_results(self):
save_json = '-json' in sys.argv
no_run = '-norun' in sys.argv
- ns = NetPyNESimulation(tstop=520.0, dt=0.001, seed=123456789, save_json=save_json)
+ ns = NetPyNESimulation(tstop=520.0, dt=0.001, seed=123456789, save_json=save_json, abs_tol=None)
if not no_run:
ns.run()
diff --git a/NetPyNE/TwoCells/LEMS_TwoCell_netpyne.py b/NetPyNE/TwoCells/LEMS_TwoCell_netpyne.py
index 5702dab..f0fccc1 100644
--- a/NetPyNE/TwoCells/LEMS_TwoCell_netpyne.py
+++ b/NetPyNE/TwoCells/LEMS_TwoCell_netpyne.py
@@ -51,7 +51,7 @@
class NetPyNESimulation():
- def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False):
+ def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False, abs_tol=None):
self.setup_start = time.time()
@@ -82,6 +82,13 @@ def __init__(self, tstop=700.0, dt=0.01, seed=123456789, save_json=False):
self.simConfig.duration = self.simConfig.tstop = tstop # Duration of the simulation, in ms
self.simConfig.dt = dt # Internal integration timestep to use
+ # cvode
+ if abs_tol is not None:
+ self.simConfig.cvode_active = True
+ self.simConfig.cvode_atol = abs_tol
+ else:
+ self.simConfig.cvode_active = False
+
# Seeds for randomizers (connectivity, input stimulation and cell locations)
# Note: locations and connections should be fully specified by the structure of the NeuroML,
# so seeds for conn & loc shouldn't affect networks structure/behaviour
@@ -435,7 +442,7 @@ def save_results(self):
save_json = '-json' in sys.argv
no_run = '-norun' in sys.argv
- ns = NetPyNESimulation(tstop=700.0, dt=0.01, seed=123456789, save_json=save_json)
+ ns = NetPyNESimulation(tstop=700.0, dt=0.01, seed=123456789, save_json=save_json, abs_tol=None)
if not no_run:
ns.run()
diff --git a/NetPyNE/UI/LEMS_HHSimple_netpyne.py b/NetPyNE/UI/LEMS_HHSimple_netpyne.py
index 24b7e92..8a3f267 100644
--- a/NetPyNE/UI/LEMS_HHSimple_netpyne.py
+++ b/NetPyNE/UI/LEMS_HHSimple_netpyne.py
@@ -30,7 +30,7 @@
class NetPyNESimulation():
- def __init__(self, tstop=450.0, dt=0.05, seed=123456789, save_json=False):
+ def __init__(self, tstop=450.0, dt=0.05, seed=123456789, save_json=False, abs_tol=None):
self.setup_start = time.time()
@@ -51,6 +51,13 @@ def __init__(self, tstop=450.0, dt=0.05, seed=123456789, save_json=False):
self.simConfig.duration = self.simConfig.tstop = tstop # Duration of the simulation, in ms
self.simConfig.dt = dt # Internal integration timestep to use
+ # cvode
+ if abs_tol is not None:
+ self.simConfig.cvode_active = True
+ self.simConfig.cvode_atol = abs_tol
+ else:
+ self.simConfig.cvode_active = False
+
# Seeds for randomizers (connectivity, input stimulation and cell locations)
# Note: locations and connections should be fully specified by the structure of the NeuroML,
# so seeds for conn & loc shouldn't affect networks structure/behaviour
@@ -181,7 +188,7 @@ def save_results(self):
save_json = '-json' in sys.argv
no_run = '-norun' in sys.argv
- ns = NetPyNESimulation(tstop=450.0, dt=0.05, seed=123456789, save_json=save_json)
+ ns = NetPyNESimulation(tstop=450.0, dt=0.05, seed=123456789, save_json=save_json, abs_tol=None)
if not no_run:
ns.run()
diff --git a/NeuroML2/LEMS_HHSmall.xml b/NeuroML2/LEMS_HHSmall.xml
index d731ab7..e34ac24 100644
--- a/NeuroML2/LEMS_HHSmall.xml
+++ b/NeuroML2/LEMS_HHSmall.xml
@@ -2,7 +2,7 @@
diff --git a/NeuroML2/LEMS_HybridSmall.xml b/NeuroML2/LEMS_HybridSmall.xml
index 1e9fe6a..07993a5 100644
--- a/NeuroML2/LEMS_HybridSmall.xml
+++ b/NeuroML2/LEMS_HybridSmall.xml
@@ -2,7 +2,7 @@
diff --git a/NeuroML2/LEMS_HybridTut.xml b/NeuroML2/LEMS_HybridTut.xml
index e54ae87..72eb7e3 100644
--- a/NeuroML2/LEMS_HybridTut.xml
+++ b/NeuroML2/LEMS_HybridTut.xml
@@ -2,7 +2,7 @@
diff --git a/NeuroML2/LEMS_M1.xml b/NeuroML2/LEMS_M1.xml
index 7f4b39e..1e7f0f7 100644
--- a/NeuroML2/LEMS_M1.xml
+++ b/NeuroML2/LEMS_M1.xml
@@ -2,7 +2,7 @@