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)