From 67583b8ee78592b89931be6f9d99a76666fd534c Mon Sep 17 00:00:00 2001 From: filimarc Date: Wed, 22 Oct 2025 15:23:31 +0200 Subject: [PATCH 1/6] fix: correct call for synapse point process in neuron builders --- libs/arborize/arborize/builders/_neuron.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/arborize/arborize/builders/_neuron.py b/libs/arborize/arborize/builders/_neuron.py index c413b07e..3712196a 100644 --- a/libs/arborize/arborize/builders/_neuron.py +++ b/libs/arborize/arborize/builders/_neuron.py @@ -114,7 +114,7 @@ def insert_receiver( if source is None: return p.ParallelCon(gid, synapse, **kwargs) else: - spp = synapse._point_process + spp = synapse._pp p.parallel.target_var(spp, getattr(spp, "_ref_" + source), gid) def insert_transmitter( From afd06de91fff2cce4282140fbc2415c4a60bfbfd Mon Sep 17 00:00:00 2001 From: filimarc Date: Wed, 22 Oct 2025 16:56:48 +0200 Subject: [PATCH 2/6] test: add small test for insert_receiver --- libs/arborize/tests/test_neuron_models.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libs/arborize/tests/test_neuron_models.py b/libs/arborize/tests/test_neuron_models.py index def36c32..bc9eb5bc 100644 --- a/libs/arborize/tests/test_neuron_models.py +++ b/libs/arborize/tests/test_neuron_models.py @@ -57,6 +57,24 @@ def test_synapses(self): self.assertFalse(min(r) == max(r), "No synaptic currents detected") self.assertTrue(min(r_nosyn) == max(r_nosyn), "Synaptic currents detected") + def test_receiver(self): + cell = neuron_build(self.p75_expsyn) + cell.insert_receiver(1, "ExpSyn", (0, 0)) + synapse = cell.get_location((0, 0)).section.synapses[0] + self.assertEqual(synapse.gid, 1, "GId should be 1") + synapse.stimulate(start=0, number=3, interval=10) + r = cell.sections[0].record() + p.run(100) + self.assertFalse(min(r) == max(r), "No synaptic currents detected") + cell2 = neuron_build(self.p75_expsyn) + cell2.insert_receiver(1, "ExpSyn", (0, 0), source="i") + synapse2 = cell2.get_location((0, 0)).section.synapses[0] + self.assertEqual( + synapse2._pp._interpreter.parallel._transfer_max, + 1, + "transfer_max should be 1", + ) + def test_cable_building(self): self.cell010.definition = define_model( { From 4ba0da9a7a6fd23670b12a738036f6ed8e650206 Mon Sep 17 00:00:00 2001 From: filimarc Date: Fri, 24 Oct 2025 08:03:46 +0200 Subject: [PATCH 3/6] fix: add a patch for test synapse to clear the syn added by test receiver --- libs/arborize/tests/test_neuron_models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/arborize/tests/test_neuron_models.py b/libs/arborize/tests/test_neuron_models.py index bc9eb5bc..b6a2fa79 100644 --- a/libs/arborize/tests/test_neuron_models.py +++ b/libs/arborize/tests/test_neuron_models.py @@ -45,6 +45,7 @@ def test_synapses(self): syn = cell.insert_synapse("ExpSyn", (0, 0)) with self.assertRaises(UnknownLocationError): cell.insert_synapse("ExpSyn", (-1, 0)) + syn._pp._interpreter.parallel.gid_clear() syn.stimulate(start=0, number=3, interval=10) r = cell.sections[0].record() r_nosyn = cell_nosyn.sections[0].record() From c448a0e8b8751b875ec89cb3aef2b1cc8b6eec38 Mon Sep 17 00:00:00 2001 From: filimarc Date: Fri, 24 Oct 2025 11:48:39 +0200 Subject: [PATCH 4/6] chore: switch to NEURON 9 --- libs/nmodl-glia/pyproject.toml | 2 +- libs/nrn-patch/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/nmodl-glia/pyproject.toml b/libs/nmodl-glia/pyproject.toml index b5074db9..7016be05 100644 --- a/libs/nmodl-glia/pyproject.toml +++ b/libs/nmodl-glia/pyproject.toml @@ -19,7 +19,7 @@ dependencies = [ "black>=24.0", "toml~=0.10", "packaging~=24.0", - "neuron-nightly==9.0a1.dev1485; sys_platform != 'win32'", + "NEURON>=9.0; sys_platform != 'win32'", "importlib_metadata~=6.5" ] diff --git a/libs/nrn-patch/pyproject.toml b/libs/nrn-patch/pyproject.toml index 1a66f5b6..0d559668 100644 --- a/libs/nrn-patch/pyproject.toml +++ b/libs/nrn-patch/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "packaging~=24.0", "errr~=1.2", "numpy~=1.21", - "neuron-nightly==9.0a1.dev1485; sys_platform != 'win32'" + "NEURON>=9.0; sys_platform != 'win32'", ] [[project.authors]] From 0d330726b9ecca7406085cde4b11142e094ac1f7 Mon Sep 17 00:00:00 2001 From: filimarc Date: Fri, 24 Oct 2025 20:38:34 +0200 Subject: [PATCH 5/6] test: refactor test --- libs/arborize/tests/test_neuron_models.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libs/arborize/tests/test_neuron_models.py b/libs/arborize/tests/test_neuron_models.py index b6a2fa79..fc007998 100644 --- a/libs/arborize/tests/test_neuron_models.py +++ b/libs/arborize/tests/test_neuron_models.py @@ -45,7 +45,6 @@ def test_synapses(self): syn = cell.insert_synapse("ExpSyn", (0, 0)) with self.assertRaises(UnknownLocationError): cell.insert_synapse("ExpSyn", (-1, 0)) - syn._pp._interpreter.parallel.gid_clear() syn.stimulate(start=0, number=3, interval=10) r = cell.sections[0].record() r_nosyn = cell_nosyn.sections[0].record() @@ -54,27 +53,34 @@ def test_synapses(self): p.run(100) - self.assertEqual(list(r), list(r2), "Recording from same loc should be identical") + self.assertEqual( + list(r), list(r2), "Recording from same loc should be identical" + ) self.assertFalse(min(r) == max(r), "No synaptic currents detected") self.assertTrue(min(r_nosyn) == max(r_nosyn), "Synaptic currents detected") def test_receiver(self): cell = neuron_build(self.p75_expsyn) - cell.insert_receiver(1, "ExpSyn", (0, 0)) + cell_transmitter = neuron_build(self.p75_expsyn) + cell_transmitter.insert_transmitter(10, (0, 0), source="v") + cell.insert_receiver(10, "ExpSyn", (0, 0)) synapse = cell.get_location((0, 0)).section.synapses[0] - self.assertEqual(synapse.gid, 1, "GId should be 1") + self.assertEqual(synapse.gid, 10, "GId should be 1") synapse.stimulate(start=0, number=3, interval=10) r = cell.sections[0].record() p.run(100) self.assertFalse(min(r) == max(r), "No synaptic currents detected") cell2 = neuron_build(self.p75_expsyn) - cell2.insert_receiver(1, "ExpSyn", (0, 0), source="i") + source_id = cell_transmitter.get_location((0, 0)).section._source_gid + print(f"Source: {source_id}") + cell2.insert_receiver(source_id, "ExpSyn", (0, 0), source="i") synapse2 = cell2.get_location((0, 0)).section.synapses[0] self.assertEqual( synapse2._pp._interpreter.parallel._transfer_max, - 1, - "transfer_max should be 1", + 10, + "transfer_max should be 10", ) + synapse2._pp._interpreter.parallel.gid_clear() def test_cable_building(self): self.cell010.definition = define_model( From a794fac6609838833bc3d76ebbeb73d6b6d17898 Mon Sep 17 00:00:00 2001 From: filimarc Date: Fri, 24 Oct 2025 20:40:20 +0200 Subject: [PATCH 6/6] test: refactor test --- libs/arborize/tests/test_neuron_models.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/arborize/tests/test_neuron_models.py b/libs/arborize/tests/test_neuron_models.py index fc007998..445a1092 100644 --- a/libs/arborize/tests/test_neuron_models.py +++ b/libs/arborize/tests/test_neuron_models.py @@ -61,8 +61,6 @@ def test_synapses(self): def test_receiver(self): cell = neuron_build(self.p75_expsyn) - cell_transmitter = neuron_build(self.p75_expsyn) - cell_transmitter.insert_transmitter(10, (0, 0), source="v") cell.insert_receiver(10, "ExpSyn", (0, 0)) synapse = cell.get_location((0, 0)).section.synapses[0] self.assertEqual(synapse.gid, 10, "GId should be 1") @@ -71,9 +69,7 @@ def test_receiver(self): p.run(100) self.assertFalse(min(r) == max(r), "No synaptic currents detected") cell2 = neuron_build(self.p75_expsyn) - source_id = cell_transmitter.get_location((0, 0)).section._source_gid - print(f"Source: {source_id}") - cell2.insert_receiver(source_id, "ExpSyn", (0, 0), source="i") + cell2.insert_receiver(10, "ExpSyn", (0, 0), source="i") synapse2 = cell2.get_location((0, 0)).section.synapses[0] self.assertEqual( synapse2._pp._interpreter.parallel._transfer_max,