From e24f06feac5b07992e89ed124bb56d2109352242 Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Tue, 20 Feb 2024 20:06:06 +0000
Subject: [PATCH 1/3] Add slight delay in generate network when
extra_lems_components present
---
neuromllite/NetworkGenerator.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/neuromllite/NetworkGenerator.py b/neuromllite/NetworkGenerator.py
index 0e2182c..ed5fbb5 100644
--- a/neuromllite/NetworkGenerator.py
+++ b/neuromllite/NetworkGenerator.py
@@ -11,6 +11,7 @@
import numpy as np
import os
import random
+import time
import lems.api as lems # from pylems
@@ -913,6 +914,7 @@ def generate_neuroml2_from_network(
if len(extra_lems_components.components) > 0:
extra_lems_components.export_to_file(extra_lems_file)
+ time.sleep(0.5)
if validate and format == "xml":
from pyneuroml import pynml
From 251347859d048f7ce39c5ffbb5a73da09911a0d4 Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Fri, 1 Mar 2024 15:36:30 +0000
Subject: [PATCH 2/3] Updated matrix handler for saving figures to file
---
neuromllite/MatrixHandler.py | 52 +++++++++++++++++++++++++++++++-----
1 file changed, 45 insertions(+), 7 deletions(-)
diff --git a/neuromllite/MatrixHandler.py b/neuromllite/MatrixHandler.py
index 68b9d2b..8cf05de 100644
--- a/neuromllite/MatrixHandler.py
+++ b/neuromllite/MatrixHandler.py
@@ -11,6 +11,7 @@
from neuromllite.NetworkGenerator import _get_rng_for_network
import numpy as np
+import os
class MatrixHandler(ConnectivityHandler):
@@ -18,9 +19,11 @@ class MatrixHandler(ConnectivityHandler):
weight_arrays_to_show = {}
- def __init__(self, level=10, nl_network=None):
+ def __init__(self, level=10, nl_network=None, show_already=True, save_figs_to_dir=None):
self.nl_network = nl_network
self.level = level
+ self.show_already = show_already
+ self.save_figs_to_dir=save_figs_to_dir
self.rng, seed = _get_rng_for_network(self.nl_network)
@@ -34,11 +37,6 @@ def print_settings(self):
print_v("* level: %s" % self.level)
print_v("* is_cell_level: %s" % self.is_cell_level())
print_v("* CUTOFF_INH_SYN_MV: %s" % self.CUTOFF_INH_SYN_MV)
- # print_v('* include_inputs: %s'%self.include_inputs)
- # print_v('* scale_by_post_pop_size: %s'%self.scale_by_post_pop_size)
- # print_v('* scale_by_post_pop_cond: %s'%self.scale_by_post_pop_cond)
- # print_v('* min_weight_to_show: %s'%self.min_weight_to_show)
- # print_v('* min_weight_to_show: %s'%self.min_weight_to_show)
print_v("*")
print_v("* Used values: ")
print_v("* colormaps_used: %s" % self.colormaps_used)
@@ -68,6 +66,9 @@ def finalise_document(self):
for v in self.proj_post_pops.values():
all_pops.append(v)
+ self.weight_matrices_generated = {}
+ self.weight_matrices_saved = {}
+
for pop in all_pops:
if self.is_cell_level():
for i in range(self.pop_sizes[pop]):
@@ -376,10 +377,19 @@ def finalise_document(self):
if proj_type in cbar_labels:
cbar.set_label(cbar_labels[proj_type])
+ if self.save_figs_to_dir:
+ safe = proj_type.replace(' ','_').replace('(','-').replace(')','-').replace('*','_').replace('/','_')
+ save_figure_to = os.path.join(self.save_figs_to_dir, '%s_%s.png'%(self.network_id, safe))
+ plt.savefig(save_figure_to, bbox_inches="tight")
+ print_v("Saved image to %s of plot: %s" % (save_figure_to, title))
+
print_v("Generating matrix for: %s" % self.network_id)
+
+
self.print_settings()
- plt.show()
+ if self.show_already:
+ plt.show()
def handle_population(
self,
@@ -535,3 +545,31 @@ def finalise_projection(
def finalise_input_source(self, inputListId):
pass
+
+if __name__ == "__main__":
+
+ from neuromllite.utils import load_network_json
+
+ tests = ['/Users/padraig/neuroConstruct/osb/cerebral_cortex/networks/del-Molino2017/NeuroML/delMolinoEtAl_low_baseline.json',
+ '/Users/padraig/NeuroMLlite/examples/Example12_MultiComp.json']
+
+ for test in tests:
+
+ network = load_network_json(test)
+
+ from neuromllite.NetworkGenerator import generate_network
+
+ level = 1
+ handler = MatrixHandler(level,
+ nl_network=network,
+ show_already=True,
+ save_figs_to_dir='.')
+
+ generate_network(
+ network, handler, always_include_props=True, base_dir=os.path.dirname(test)
+ )
+
+ print_v("Done with MatrixHandler...")
+
+ for w in handler.weight_arrays_to_show:
+ print('%s:\n%s'%(w, handler.weight_arrays_to_show[w]))
\ No newline at end of file
From d66704992fec7d02e355f48d0b23f8f251cc28a6 Mon Sep 17 00:00:00 2001
From: pgleeson
Date: Wed, 1 May 2024 12:02:01 +0100
Subject: [PATCH 3/3] Tweak eden times
Give access to weight_array_figures in MatrixHandler
---
examples/LEMS_SimExample3.xml | 2 +-
examples/LEMS_SimExample4.xml | 2 +-
examples/test_files/.test.ex4.jnmleden.omt | 4 ++--
neuromllite/MatrixHandler.py | 4 ++++
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/examples/LEMS_SimExample3.xml b/examples/LEMS_SimExample3.xml
index 2b1e0a9..5204c5b 100644
--- a/examples/LEMS_SimExample3.xml
+++ b/examples/LEMS_SimExample3.xml
@@ -2,7 +2,7 @@
diff --git a/examples/LEMS_SimExample4.xml b/examples/LEMS_SimExample4.xml
index b861b73..e584554 100644
--- a/examples/LEMS_SimExample4.xml
+++ b/examples/LEMS_SimExample4.xml
@@ -2,7 +2,7 @@
diff --git a/examples/test_files/.test.ex4.jnmleden.omt b/examples/test_files/.test.ex4.jnmleden.omt
index a013434..3046d31 100644
--- a/examples/test_files/.test.ex4.jnmleden.omt
+++ b/examples/test_files/.test.ex4.jnmleden.omt
@@ -14,7 +14,7 @@ experiments:
spike detection:
method: threshold
threshold: -64
- tolerance: 0.0002527679474217274
+ tolerance: 0.00025278058645101804
v1:
observables:
@@ -26,4 +26,4 @@ experiments:
spike detection:
method: threshold
threshold: -69
- tolerance: 0.0002327287423609406
+ tolerance: 0.00023269200151868833
diff --git a/neuromllite/MatrixHandler.py b/neuromllite/MatrixHandler.py
index 8cf05de..3d1fa3b 100644
--- a/neuromllite/MatrixHandler.py
+++ b/neuromllite/MatrixHandler.py
@@ -18,6 +18,7 @@ class MatrixHandler(ConnectivityHandler):
colormaps_used = []
weight_arrays_to_show = {}
+ weight_array_figures = {}
def __init__(self, level=10, nl_network=None, show_already=True, save_figs_to_dir=None):
self.nl_network = nl_network
@@ -382,6 +383,9 @@ def finalise_document(self):
save_figure_to = os.path.join(self.save_figs_to_dir, '%s_%s.png'%(self.network_id, safe))
plt.savefig(save_figure_to, bbox_inches="tight")
print_v("Saved image to %s of plot: %s" % (save_figure_to, title))
+ self.weight_array_figures[title] = save_figure_to
+
+
print_v("Generating matrix for: %s" % self.network_id)