From d6c857d140e2197de3910b2417a707dc05f7d7ef Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Tue, 21 Nov 2017 11:07:41 +0000 Subject: [PATCH] n_neurons from other parameters --- ...ernal_spinnaker_link_fpga_retina_device.py | 4 +++- spynnaker8/models/populations/population.py | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/spynnaker8/external_device_models/external_spinnaker_link_fpga_retina_device.py b/spynnaker8/external_device_models/external_spinnaker_link_fpga_retina_device.py index 6d4e9175f..817e0659c 100644 --- a/spynnaker8/external_device_models/external_spinnaker_link_fpga_retina_device.py +++ b/spynnaker8/external_device_models/external_spinnaker_link_fpga_retina_device.py @@ -17,8 +17,10 @@ def __init__( label=ExternalFPGARetinaDevice.default_parameters['label'], board_address=ExternalFPGARetinaDevice.default_parameters[ 'board_address']): + n_neurons = ExternalFPGARetinaDevice.get_n_neurons(mode, polarity) DataHolder.__init__( - self, {'spinnaker_link_id': spinnaker_link_id, 'mode': mode, + self, {'n_neurons': n_neurons, + 'spinnaker_link_id': spinnaker_link_id, 'mode': mode, 'board_address': board_address, 'label': label, 'retina_key': retina_key, 'polarity': polarity}) diff --git a/spynnaker8/models/populations/population.py b/spynnaker8/models/populations/population.py index 256ae4fae..d163999df 100644 --- a/spynnaker8/models/populations/population.py +++ b/spynnaker8/models/populations/population.py @@ -5,6 +5,7 @@ from spynnaker.pyNN.utilities.constants import SPIKES from spinn_front_end_common.utilities import exceptions from spinn_front_end_common.utilities import globals_variables +from spinn_front_end_common.utilities.exceptions import ConfigurationException from spynnaker8.models import Recorder from spynnaker8.utilities import DataHolder @@ -33,7 +34,6 @@ def __init__(self, size, cellclass, cellparams=None, structure=None, vertex_holder.add_item( 'label', self.create_label( vertex_holder.data_items['label'], label)) - vertex_holder.add_item('n_neurons', size) assert cellparams is None # cellparams being retained for backwards compatibility, but use # is deprecated @@ -44,13 +44,28 @@ def __init__(self, size, cellclass, cellparams=None, structure=None, cell_label = internal_params['label'] internal_params['label'] = self.create_label(cell_label, label) vertex_holder = cellclass(**internal_params) - vertex_holder.add_item('n_neurons', size) # emit deprecation warning else: raise TypeError( "cellclass must be an instance or subclass of BaseCellType," " not a %s" % type(cellclass)) + if 'n_neurons' in vertex_holder.data_items: + if size is None: + size = vertex_holder.data_items['n_neurons'] + else: + if size != vertex_holder.data_items['n_neurons']: + raise ConfigurationException( + "Size parameter is {} but the {} expects a size of {}" + "".format(size, cellclass, + vertex_holder.data_items['n_neurons'])) + else: + if size is None: + raise ConfigurationException( + "Size parameter can not be None for {}".format(cellclass)) + else: + vertex_holder.add_item('n_neurons', size) + # convert between data holder and model (uses ** so that its taken # the dictionary to be the parameters themselves) vertex = vertex_holder.build_model()(**vertex_holder.data_items)