From 3482211bb381d56f005db44d2e5dadb6961ddbc0 Mon Sep 17 00:00:00 2001 From: Terry Stewart Date: Fri, 11 Aug 2017 17:05:58 -0400 Subject: [PATCH] Handles new method for Module.outputs --- nengo_gui/components/pointer.py | 5 ++++- nengo_gui/components/spa_plot.py | 24 ++++++++++++++++++++---- nengo_gui/components/spa_similarity.py | 5 ++++- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/nengo_gui/components/pointer.py b/nengo_gui/components/pointer.py index 389df144..4daa86e0 100644 --- a/nengo_gui/components/pointer.py +++ b/nengo_gui/components/pointer.py @@ -45,7 +45,10 @@ def __init__(self, obj, **kwargs): def add_nengo_objects(self, page): with page.model: - output = self.obj.outputs[self.target][0] + if self.target.startswith('<'): + output = getattr(self.obj, self.target[1:-1]) + else: + output = self.obj.outputs[self.target][0] self.node = nengo.Node(self.gather_data, size_in=self.vocab_out.dimensions, size_out=self.vocab_out.dimensions) diff --git a/nengo_gui/components/spa_plot.py b/nengo_gui/components/spa_plot.py index dd67d084..759a0fe7 100644 --- a/nengo_gui/components/spa_plot.py +++ b/nengo_gui/components/spa_plot.py @@ -17,7 +17,11 @@ def __init__(self, obj, **kwargs): self.obj = obj self.data = collections.deque() self.target = kwargs.get('args', 'default') - self.vocab_out = obj.outputs[self.target][1] + if self.target.startswith('<'): + target_obj = getattr(obj, self.target[1:-1]) + self.vocab_out = obj.get_output_vocab(target_obj) + else: + self.vocab_out = obj.outputs[self.target][1] def attach(self, page, config, uid): super(SpaPlot, self).attach(page, config, uid) @@ -37,7 +41,19 @@ def applicable_targets(obj): targets = [] if (isinstance(obj, spa.module.Module) or (nengo_spa is not None and isinstance(obj, nengo_spa.Network))): - for target_name, (obj, vocab) in obj.outputs.items(): - if vocab is not None: - targets.append(target_name) + + if hasattr(obj, 'outputs'): + for target_name, (obj, vocab) in obj.outputs.items(): + if vocab is not None: + targets.append(target_name) + elif hasattr(obj, 'output'): + # TODO: check for other outputs than obj.output + try: + v = obj.get_output_vocab(obj.output) + if v is not None: + targets.append('') + except KeyError: + # Module has no output vocab + pass + return targets diff --git a/nengo_gui/components/spa_similarity.py b/nengo_gui/components/spa_similarity.py index 03748f48..319e6952 100644 --- a/nengo_gui/components/spa_similarity.py +++ b/nengo_gui/components/spa_similarity.py @@ -36,7 +36,10 @@ def __init__(self, obj, **kwargs): def add_nengo_objects(self, page): with page.model: - output = self.obj.outputs[self.target][0] + if self.target.startswith('<'): + output = getattr(self.obj, self.target[1:-1]) + else: + output = self.obj.outputs[self.target][0] self.node = nengo.Node(self.gather_data, size_in=self.vocab_out.dimensions) self.conn = nengo.Connection(output, self.node, synapse=0.01)