예제 #1
0
    def build(self, network, extra_builders={},
              extra_source_getters={}, extra_sink_getters={},
              extra_connection_parameter_builders={},
              extra_probe_builders={}):
        """Build a Network into this model.

        Parameters
        ----------
        network : :py:class:`~nengo.Network`
            Nengo network to build.  Passthrough Nodes will be removed.
        extra_builders : {type: fn, ...}
            Extra builder methods.
        extra_source_getters : {type: fn, ...}
            Extra source getter methods.
        extra_sink_getters : {type: fn, ...}
            Extra sink getter methods.
        extra_connection_parameter_builder : {type: fn, ...}
            Extra connection parameter builders.
        extra_probe_builders : {type: fn, ...}
            Extra probe builder methods.
        """
        # Store the network config
        self.config = network.config

        # Get a clean set of builders and getters
        self._builders = collections_ext.mrolookupdict()
        self._builders.update(self.builders)
        self._builders.update(extra_builders)

        self._connection_parameter_builders = collections_ext.mrolookupdict()
        self._connection_parameter_builders.update(
            self.connection_parameter_builders
        )
        self._connection_parameter_builders.update(
            extra_connection_parameter_builders
        )

        self._source_getters = collections_ext.mrolookupdict()
        self._source_getters.update(self.source_getters)
        self._source_getters.update(extra_source_getters)

        self._sink_getters = collections_ext.mrolookupdict()
        self._sink_getters.update(self.sink_getters)
        self._sink_getters.update(extra_sink_getters)

        self._probe_builders = dict()
        self._probe_builders.update(self.probe_builders)
        self._probe_builders.update(extra_probe_builders)

        # Build
        self._build_network(network)
예제 #2
0
    def build(self, network, **kwargs):
        """Build a Network into this model.

        Parameters
        ----------
        network : :py:class:`~nengo.Network`
            Nengo network to build.  Passthrough Nodes will be removed.
        """
        # Store the network config
        self.config = network.config

        # Get a clean set of builders and getters
        self._builders = collections_ext.mrolookupdict()
        self._builders.update(self.builders)
        self._builders.update(kwargs.get("extra_builders", {}))

        self._transmission_parameter_builders = \
            collections_ext.mrolookupdict()
        self._transmission_parameter_builders.update(
            self.transmission_parameter_builders)
        self._transmission_parameter_builders.update(
            kwargs.get("extra_transmission_parameter_builders", {}))

        self._source_getters = collections_ext.mrolookupdict()
        self._source_getters.update(self.source_getters)
        self._source_getters.update(kwargs.get("extra_source_getters", {}))

        self._reception_parameter_builders = collections_ext.mrolookupdict()
        self._reception_parameter_builders.update(
            self.reception_parameter_builders)
        self._reception_parameter_builders.update(
            kwargs.get("extra_reception_parameter_builders", {}))

        self._sink_getters = collections_ext.mrolookupdict()
        self._sink_getters.update(self.sink_getters)
        self._sink_getters.update(kwargs.get("extra_sink_getters", {}))

        self._probe_builders = dict()
        self._probe_builders.update(self.probe_builders)
        self._probe_builders.update(kwargs.get("extra_probe_builders", {}))

        # Build
        with self.decoder_cache:
            self._build_network(network)

        # Insert interposers
        interposers, connection_map = \
            self.connection_map.insert_and_stack_interposers()
        self.extra_operators.extend(interposers)
        self.connection_map = connection_map
예제 #3
0
    def build(self, network, **kwargs):
        """Build a Network into this model.

        Parameters
        ----------
        network : :py:class:`~nengo.Network`
            Nengo network to build.  Passthrough Nodes will be removed.
        """
        # Store the network config
        self.config = network.config

        # Get a clean set of builders and getters
        self._builders = collections_ext.mrolookupdict()
        self._builders.update(self.builders)
        self._builders.update(kwargs.get("extra_builders", {}))

        self._transmission_parameter_builders = \
            collections_ext.mrolookupdict()
        self._transmission_parameter_builders.update(
            self.transmission_parameter_builders)
        self._transmission_parameter_builders.update(
            kwargs.get("extra_transmission_parameter_builders", {}))

        self._source_getters = collections_ext.mrolookupdict()
        self._source_getters.update(self.source_getters)
        self._source_getters.update(kwargs.get("extra_source_getters", {}))

        self._reception_parameter_builders = collections_ext.mrolookupdict()
        self._reception_parameter_builders.update(
            self.reception_parameter_builders)
        self._reception_parameter_builders.update(
            kwargs.get("extra_reception_parameter_builders", {}))

        self._sink_getters = collections_ext.mrolookupdict()
        self._sink_getters.update(self.sink_getters)
        self._sink_getters.update(kwargs.get("extra_sink_getters", {}))

        self._probe_builders = dict()
        self._probe_builders.update(self.probe_builders)
        self._probe_builders.update(kwargs.get("extra_probe_builders", {}))

        # Build
        with self.decoder_cache:
            self._build_network(network)

        # Insert interposers
        interposers, connection_map = \
            self.connection_map.insert_and_stack_interposers()
        self.extra_operators.extend(interposers)
        self.connection_map = connection_map
예제 #4
0
    def build(self, network, extra_builders={},
              extra_source_getters={}, extra_sink_getters={},
              extra_connection_parameter_builders={},
              extra_probe_builders={}, build_probes=True):
        """Build a Network into this model.

        Parameters
        ----------
        network : :py:class:`~nengo.Network`
            Nengo network to build.  Passthrough Nodes will be removed.
        build_probes : bool
            If True then Probes will be built, otherwise they won't and a
            warning will be raised.
        """
        # Store the network config
        self.config = network.config

        # Get a clean set of builders and getters
        self._builders = collections_ext.mrolookupdict()
        self._builders.update(self.builders)
        self._builders.update(extra_builders)

        self._connection_parameter_builders = collections_ext.mrolookupdict()
        self._connection_parameter_builders.update(
            self.connection_parameter_builders
        )
        self._connection_parameter_builders.update(
            extra_connection_parameter_builders
        )

        self._source_getters = collections_ext.mrolookupdict()
        self._source_getters.update(self.source_getters)
        self._source_getters.update(extra_source_getters)

        self._sink_getters = collections_ext.mrolookupdict()
        self._sink_getters.update(self.sink_getters)
        self._sink_getters.update(extra_sink_getters)

        self._probe_builders = dict()
        self._probe_builders.update(self.probe_builders)
        self._probe_builders.update(extra_probe_builders)

        # Build
        self._build_network(network, build_probes)
예제 #5
0
    def build(self, network, **kwargs):
        """Build a Network into this model.

        Parameters
        ----------
        network : :py:class:`~nengo.Network`
            Nengo network to build.  Passthrough Nodes will be removed.
        """
        # Store the network config
        self.config = network.config

        # Get a clean set of builders and getters
        self._builders = collections_ext.mrolookupdict()
        self._builders.update(self.builders)
        self._builders.update(kwargs.get("extra_builders", {}))

        self._transmission_parameter_builders = \
            collections_ext.mrolookupdict()
        self._transmission_parameter_builders.update(
            self.transmission_parameter_builders)
        self._transmission_parameter_builders.update(
            kwargs.get("extra_transmission_parameter_builders", {}))

        self._source_getters = collections_ext.mrolookupdict()
        self._source_getters.update(self.source_getters)
        self._source_getters.update(kwargs.get("extra_source_getters", {}))

        self._reception_parameter_builders = collections_ext.mrolookupdict()
        self._reception_parameter_builders.update(
            self.reception_parameter_builders)
        self._reception_parameter_builders.update(
            kwargs.get("extra_reception_parameter_builders", {}))

        self._sink_getters = collections_ext.mrolookupdict()
        self._sink_getters.update(self.sink_getters)
        self._sink_getters.update(kwargs.get("extra_sink_getters", {}))

        self._probe_builders = dict()
        self._probe_builders.update(self.probe_builders)
        self._probe_builders.update(kwargs.get("extra_probe_builders", {}))

        # Build
        self._build_network(network)
def test_mrolookupdict():
    """Test a dictionary which will look up items by going through their
    MROs.
    """
    class ParentA(object):
        pass

    class ChildA(ParentA):
        pass

    mdict = nscollections.mrolookupdict()
    mdict[ParentA] = 5

    assert mdict[ChildA] == 5

    mdict[ChildA] = 10
    assert mdict[ChildA] == 10

    # Objects not in the dictionary raise KeyErrors
    with pytest.raises(KeyError):
        mdict[object]
예제 #7
0
def test_mrolookupdict():
    """Test a dictionary which will look up items by going through their
    MROs.
    """
    class ParentA(object):
        pass

    class ChildA(ParentA):
        pass

    mdict = nscollections.mrolookupdict()
    mdict[ParentA] = 5

    assert mdict[ChildA] == 5

    mdict[ChildA] = 10
    assert mdict[ChildA] == 10

    # Objects not in the dictionary raise KeyErrors
    with pytest.raises(KeyError):
        mdict[object]