==========================
**Added**
- Support for algebras that allow to use binding operations other than circular
convolution. This includes an implementation of vector-derived transformation
binding (VTB) and the ``nengo_spa.networks.VTB`` network to perform this
particular binding operation.
(`69 <https://github.com/nengo/nengo_spa/issues/69>`__,
`198 <https://github.com/nengo/nengo_spa/pull/198>`__)
- Added generators for vectors with different properties that can be used to
define how vectors are created in a vocabulary (e.g., axis-aligned,
orthogonal, unitary).
(`201 <https://github.com/nengo/nengo_spa/pull/201>`_,
`129 <https://github.com/nengo/nengo_spa/issues/129>`_)
- Added a matrix multiplication network ``nengo_spa.networks.MatrixMult`` based
on the nengo-extras implementation.
(`198 <https://github.com/nengo/nengo_spa/pull/198>`__)
- Allow to connect to the utility node returned by `ifmax` with the SPA `>>`
operator.
(`190 <https://github.com/nengo/nengo_spa/issues/190>`_,
`194 <https://github.com/nengo/nengo_spa/pull/194>`_)
- The Semantic Pointer names *AbsorbingElement*, *Identity*, and *Zero* now
have a special meaning in *Vocabulary* and *nengo_spa.sym* and will return
the respective special Semantic Pointers.
(`195 <https://github.com/nengo/nengo_spa/pull/195>`_,
`176 <https://github.com/nengo/nengo_spa/issues/176>`_)
- *SemanticPointer* instance can now track names for improved labeling in Nengo
GUI.
(`202 <https://github.com/nengo/nengo_spa/pull/202>`_,
`184 <https://github.com/nengo/nengo_spa/issues/184>`_)
- Label the utility nodes for the action selection.
(`202 <https://github.com/nengo/nengo_spa/pull/202>`__)
**Changed**
- A number of module names have been changed for better naming consistency.
In particular,
- ``nengo_spa.actions`` to ``nengo_spa.action_selection``,
- ``nengo_spa.pointer`` to ``nengo_spa.semantic_pointer``,
- ``nengo_spa.vocab`` to ``nengo_spa.vocabulary``,
- and ``nengo_spa.modules.assoc_mem`` to
``nengo_spa.modules.associative_memory``.
(`199 <https://github.com/nengo/nengo_spa/issues/199>`_,
`205 <https://github.com/nengo/nengo_spa/pull/205>`_)
- Require the ``mapping`` argument for associative memories. In addition to
dictionaries and the string ``'by-key'``, a sequence of strings can be passed
in to create an auto-associative memory.
(`177 <https://github.com/nengo/nengo_spa/pull/177>`_)
- Changed the ``rng`` argument for ``Vocabulary`` to ``pointer_gen``.
(`201 <https://github.com/nengo/nengo_spa/pull/201>`_)
- Renamed ``input_a`` and ``input_b`` of the ``nengo_spa.Bind`` module to
``input_left`` and ``input_right`` to account for non-commutative binding
methods where the order of operands matters. Also, renamed the ``invert_a``
and ``invert_b`` arguments to ``unbind_left`` and ``unbind_right`` to reflect
that some binding methods might not have inverse vectors, but might still be
able to do unbinding.
(`69 <https://github.com/nengo/nengo_spa/issues/69>`__,
`198 <https://github.com/nengo/nengo_spa/pull/198>`__)
- Renamed the ``nengo_spa.State`` parameter ``represent_identity`` to
``represent_cc_identity`` to reflect that it only optimizes for the circular
convolution identity, but not the identity for other binding operations.
(`212 <https://github.com/nengo/nengo_spa/pull/212>`_)
**Removed**
- Removed ``nengo_spa.networks.circularconvolution.circconv`` because
``nengo_spa.algebras.CircularConvolutionAlgebra`` provides the same
functionality.
(`198 <https://github.com/nengo/nengo_spa/pull/198>`__)
- The ``SemanticPointer`` class does no longer accept a single integer as
dimensionality to create a random vector. Use the new generators in
``nengo_spa.vector_generation`` instead.
(`201 <https://github.com/nengo/nengo_spa/pull/201>`_)
**Fixed**
- Raise an exception instead of returning incorrect results from
``prob_cleanup``. Also, fix the function's incorrect documentation.
(`203 <https://github.com/nengo/nengo_spa/issues/203>`__,
`206 <https://github.com/nengo/nengo_spa/pull/206>`__)
- Fix ``nengo_spa.ActionSelection.keys()`` when no named actions have been
provided.
(`210 <https://github.com/nengo/nengo_spa/pull/210>`_)
- Do not create an unnecessary compare network when computing a dot product
with a ``SemanticPointer`` instance.
(`202 <https://github.com/nengo/nengo_spa/pull/202>`__)
- Handle ``SemanticPointer`` instances correctly as first argument to
``nengo_spa.dot``.
(`202 <https://github.com/nengo/nengo_spa/pull/202>`__)