{ "info": { "author": "Applied Brain Research", "author_email": "info@appliedbrainresearch.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: Free for non-commercial use", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Artificial Intelligence" ], "description": ".. image:: https://img.shields.io/pypi/v/nengo.svg\n :target: https://pypi.python.org/pypi/nengo\n :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/travis/nengo/nengo/master.svg\n :target: https://travis-ci.org/nengo/nengo\n :alt: Travis-CI build status\n\n.. image:: https://ci.appveyor.com/api/projects/status/8ou34p2bgqf2qjqh/branch/master?svg=true\n :target: https://ci.appveyor.com/project/nengo/nengo\n :alt: AppVeyor build status\n\n.. image:: https://img.shields.io/codecov/c/github/nengo/nengo/master.svg\n :target: https://codecov.io/gh/nengo/nengo/branch/master\n :alt: Test coverage\n\n\n********************************************\nNengo: Large-scale brain modelling in Python\n********************************************\n\n.. image:: https://www.nengo.ai/design/_images/nef-summary.svg\n :width: 100%\n :target: https://doi.org/10.3389/fninf.2013.00048\n :alt: An illustration of the three principles of the NEF\n\nNengo is a Python library for building and simulating\nlarge-scale neural models.\nNengo can create sophisticated\nspiking and non-spiking neural simulations\nwith sensible defaults in a few lines of code.\nYet, Nengo is highly extensible and flexible.\nYou can define your own neuron types and learning rules,\nget input directly from hardware,\nbuild and run deep neural networks,\ndrive robots, and even simulate your model\non a completely different neural simulator\nor neuromorphic hardware.\n\nInstallation\n============\n\nNengo depends on NumPy, and we recommend that you\ninstall NumPy before installing Nengo.\nIf you're not sure how to do this, we recommend using\n`Anaconda `_.\n\nTo install Nengo::\n\n pip install nengo\n\nIf you have difficulty installing Nengo or NumPy,\nplease read the more detailed\n`Nengo installation instructions\n`_ first.\n\nIf you'd like to install Nengo from source,\nplease read the `developer installation instructions\n`_.\n\nNengo is tested to work on Python 2.7 and 3.4+.\n\nExamples\n========\n\nHere are six of\n`many examples `_\nshowing how Nengo enables the creation and simulation of\nlarge-scale neural models in few lines of code.\n\n1. `100 LIF neurons representing a sine wave\n `_\n2. `Computing the square across a neural connection\n `_\n3. `Controlled oscillatory dynamics with a recurrent connection\n `_\n4. `Learning a communication channel with the PES rule\n `_\n5. `Simple question answering with the Semantic Pointer Architecture\n `_\n6. `A summary of the principles underlying all of these examples\n `_\n\nDocumentation\n=============\n\nUsage and API documentation can be found at\n``_.\n\nTo build the documentation yourself, run the following command::\n\n python setup.py build_sphinx\n\nThis requires Pandoc to be installed,\nas well as some additional Python packages.\nFor more details, `see the Developer Guide\n`_.\n\nDevelopment\n===========\n\nInformation for current or prospective developers can be found\nat ``_.\n\nGetting Help\n============\n\nQuestions relating to Nengo, whether it's use or it's development, should be\nasked on the Nengo forum at ``_.\n\n***************\nRelease History\n***************\n\n.. Changelog entries should follow this format:\n\n version (release date)\n ======================\n\n **section**\n\n - One-line description of change (link to Github issue/PR)\n\n.. Changes should be organized in one of several sections:\n\n - Added\n - Changed\n - Deprecated\n - Removed\n - Fixed\n\n2.8.0 (June 9, 2018)\n====================\n\n**Added**\n\n- Added a warning when setting ``gain`` and ``bias`` along with either of\n ``max_rates`` or ``intercepts``, as the latter two parameters are ignored.\n (`#1431 `_,\n `#1433 `_)\n\n**Changed**\n\n- Learning rules can now be sliced when providing error input.\n (`#1365 `_,\n `#1385 `_)\n- The order of parameters in learning rules has changed such that\n ``learning_rate`` always comes first.\n (`#1095 `__)\n- Learning rules take ``pre_synapse``, ``post_synapse``, and ``theta_synapse``\n instead of ``pre_tau``, ``post_tau``, and ``theta_tau`` respectively.\n This allows arbitrary ``Synapse`` objects to be used as filters on\n learning signals.\n (`#1095 `__)\n\n**Deprecated**\n\n- The ``nengo.ipynb`` IPython extension and the ``IPython2ProgressBar``\n have been deprecated and replaced by the ``IPython5ProgressBar``.\n This progress bar will be automatically activated in IPython and\n Jupyter notebooks from IPython version 5.0 onwards.\n (`#1087 `_,\n `#1375 `_)\n- The ``pre_tau``, ``post_tau``, and ``theta_tau`` parameters\n for learning rules are deprecated. Instead, use ``pre_synapse``,\n ``post_synapse``, and ``theta_synapse`` respectively.\n (`#1095 `__)\n\n**Removed**\n\n- Removed ``nengo.utils.docutils`` in favor of using\n `nbsphinx `_.\n (`#1349 `_)\n\n2.7.0 (March 7, 2018)\n=====================\n\n**Added**\n\n- Added ``amplitude`` parameter to ``LIF``, ``LIFRate``,\n and ``RectifiedLinear`` which scale the output amplitude.\n (`#1325 `_,\n `#1391 `__)\n- Added the ``SpikingRectifiedLinear`` neuron model.\n (`#1391 `__)\n\n**Changed**\n\n- Default values can no longer be set for\n ``Ensemble.n_neurons`` or ``Ensemble.dimensions``.\n (`#1372 `__)\n- If the simulator seed is not specified, it will now be set\n from the network seed if a network seed is specified.\n (`#980 `__,\n `#1386 `__)\n\n**Fixed**\n\n- Fixed an issue in which signals could not be pickled,\n making it impossible to pickle ``Model`` instances.\n (`#1135 `_)\n- Better error message for invalid return values in ``nengo.Node`` functions.\n (`#1317 `_)\n- Fixed an issue in which accepting and passing ``(*args, **kwargs)``\n could not be used in custom solvers.\n (`#1358 `_,\n `#1359 `_)\n- Fixed an issue in which the cache would not release its index lock\n on abnormal termination of the Nengo process.\n (`#1364 `_)\n- Fixed validation checks that prevented the default\n from being set on certain parameters.\n (`#1372 `__)\n- Fixed an issue with repeated elements in slices in which\n a positive and negative index referred to the same dimension.\n (`#1395 `_)\n- The ``Simulator.n_steps`` and ``Simulator.time`` properties\n now return scalars, as was stated in the documentation.\n (`#1406 `_)\n- Fixed the ``--seed-offset`` option of the test suite.\n (`#1409 `_)\n\n2.6.0 (October 6, 2017)\n=======================\n\n**Added**\n\n- Added a ``NoSolver`` solver that can be used to manually pass in\n a predefined set of decoders or weights to a connection.\n (`#1352 `_)\n- Added a ``Piecewise`` process, which replaces the now deprecated\n ``piecewise`` function.\n (`#1036 `_,\n `#1100 `_,\n `#1355 `_,\n `#1362 `_)\n\n**Changed**\n\n- The minimum required version of NumPy has been raised to 1.8.\n (`#947 `_)\n- Learning rules can now have a learning rate of 0.\n (`#1356 `_)\n- Running the simulator for zero timesteps will now issue a warning,\n and running for negative time will error.\n (`#1354 `_,\n `#1357 `_)\n\n**Fixed**\n\n- Fixed an issue in which the PES learning rule could not be used\n on connections to an ``ObjView`` when using a weight solver.\n (`#1317 `_)\n- The progress bar that can appear when building a large model\n will now appear earlier in the build process.\n (`#1340 `_)\n- Fixed an issue in which ``ShapeParam`` would always store ``None``.\n (`#1342 `_)\n- Fixed an issue in which multiple identical indices in a slice were ignored.\n (`#947 `_,\n `#1361 `_)\n\n**Deprecated**\n\n- The ``piecewise`` function in ``nengo.utils.functions`` has been deprecated.\n Please use the ``Piecewise`` process instead.\n (`#1100 `_)\n\n2.5.0 (July 24, 2017)\n=====================\n\n**Added**\n\n- Added a ``n_neurons`` property to ``Network``, which gives the\n number of neurons in the network, including all subnetworks.\n (`#435 `_,\n `#1186 `_)\n- Added a new example showing how adjusting ensemble tuning curves can\n improve function approximation.\n (`#1129 `_)\n- Added a minimum magnitude option to ``UniformHypersphere``.\n (`#799 `_)\n- Added documentation on RC settings.\n (`#1130 `_)\n- Added documentation on improving performance.\n (`#1119 `_,\n `#1130 `_)\n- Added ``LinearFilter.combine`` method to\n combine two ``LinearFilter`` instances.\n (`#1312 `_)\n- Added a method to all neuron types to compute ensemble\n ``max_rates`` and ``intercepts`` given ``gain`` and ``bias``.\n (`#1334 `_)\n\n**Changed**\n\n- Learning rules now have a ``size_in`` parameter and attribute,\n allowing both integers and strings to define the dimensionality\n of the learning rule. This replaces the ``error_type`` attribute.\n (`#1307 `_,\n `#1310 `_)\n- ``EnsembleArray.n_neurons`` now gives the total number of neurons\n in all ensembles, including those in subnetworks.\n To get the number of neurons in each ensemble,\n use ``EnsembleArray.n_neurons_per_ensemble``.\n (`#1186 `_)\n- The `Nengo modelling API document\n `_\n now has summaries to help navigate the page.\n (`#1304 `_)\n- The error raised when a ``Connection`` function returns ``None``\n is now more clear.\n (`#1319 `_)\n- We now raise an error when a ``Connection`` transform is set to ``None``.\n (`#1326 `_)\n\n**Fixed**\n\n- Probe cache is now cleared on simulator reset.\n (`#1324 `_)\n- Neural gains are now always applied after the synapse model.\n Previously, this was the case for decoded connections\n but not neuron-to-neuron connections.\n (`#1330 `_)\n- Fixed a crash when a lock cannot be acquired while shrinking the cache.\n (`#1335 `_,\n `#1336 `_)\n\n2.4.0 (April 18, 2017)\n======================\n\n**Added**\n\n- Added an optimizer that reduces simulation time for common types of models.\n The optimizer can be turned off by passing ``optimize=False`` to ``Simulator``.\n (`#1035 `_)\n- Added the option to not normalize encoders by setting\n ``Ensemble.normalize_encoders`` to ``False``.\n (`#1191 `_,\n `#1267 `_)\n- Added the ``Samples`` distribution to allow raw NumPy arrays\n to be passed in situations where a distribution is required.\n (`#1233 `_)\n\n**Changed**\n\n- We now raise an error when an ensemble is assigned a negative gain.\n This can occur when solving for gains with intercepts greater than 1.\n (`#1212 `_,\n `#1231 `_,\n `#1248 `_)\n- We now raise an error when a ``Node`` or ``Direct`` ensemble\n produces a non-finite value.\n (`#1178 `_,\n `#1280 `_,\n `#1286 `_)\n- We now enforce that the ``label`` of a network must be a string or ``None``,\n and that the ``seed`` of a network must be an int or ``None``.\n This helps avoid situations where the seed would mistakenly\n be passed as the label.\n (`#1277 `_,\n `#1275 `_)\n- It is now possible to pass NumPy arrays in the ``ens_kwargs`` argument of\n ``EnsembleArray``. Arrays are wrapped in a ``Samples`` distribution internally.\n (`#691 `_,\n `#766 `_,\n `#1233 `_)\n- The default refractory period (``tau_ref``) for the ``Sigmoid`` neuron type\n has changed to 2.5 ms (from 2 ms) for better compatibility with the\n default maximum firing rates of 200-400 Hz.\n (`#1248 `_)\n- Inputs to the ``Product`` and ``CircularConvolution`` networks have been\n renamed from ``A`` and ``B`` to ``input_a`` and ``input_b`` for consistency.\n The old names are still available, but should be considered deprecated.\n (`#887 `_,\n `#1296 `_)\n\n**Fixed**\n\n- Properly handle non C-contiguous node outputs.\n (`#1184 `_,\n `#1185 `_)\n\n**Deprecated**\n\n- The ``net`` argument to networks has been deprecated. This argument existed\n so that network components could be added to an existing network instead of\n constructing a new network. However, this feature is rarely used,\n and makes the code more complicated for complex networks.\n (`#1296 `_)\n\n2.3.1 (February 18, 2017)\n=========================\n\n**Added**\n\n- Added documentation on config system quirks.\n (`#1224 `_)\n- Added ``nengo.utils.network.activate_direct_mode`` function to make it\n easier to activate direct mode in networks where some parts require neurons.\n (`#1111 `_,\n `#1168 `_)\n\n**Fixed**\n\n- The matrix multiplication example will now work with matrices of any size\n and uses the product network for clarity.\n (`#1159 `_)\n- Fixed instances in which passing a callable class as a function could fail.\n (`#1245 `_)\n- Fixed an issue in which probing some attributes would be one timestep\n faster than other attributes.\n (`#1234 `_,\n `#1245 `_)\n- Fixed an issue in which SPA models could not be copied.\n (`#1266 `_,\n `#1271 `_)\n- Fixed an issue in which Nengo would crash if other programs\n had locks on Nengo cache files in Windows.\n (`#1200 `_,\n `#1235 `_)\n\n**Changed**\n\n- Integer indexing of Nengo objects out of range raises an ``IndexError``\n now to be consistent with standard Python behaviour.\n (`#1176 `_,\n `#1183 `_)\n- Documentation that applies to all Nengo projects has been moved to\n https://www.nengo.ai/.\n (`#1251 `_)\n\n2.3.0 (November 30, 2016)\n=========================\n\n**Added**\n\n- It is now possible to probe ``scaled_encoders`` on ensembles.\n (`#1167 `_,\n `#1117 `_)\n- Added ``copy`` method to Nengo objects. Nengo objects can now be pickled.\n (`#977 `_,\n `#984 `_)\n- A progress bar now tracks the build process\n in the terminal and Jupyter notebook.\n (`#937 `_,\n `#1151 `_)\n- Added ``nengo.dists.get_samples`` function for convenience\n when working with distributions or samples.\n (`#1181 `_,\n `docs `_)\n\n**Changed**\n\n- Access to probe data via ``nengo.Simulator.data`` is now cached,\n making repeated access much faster.\n (`#1076 `_,\n `#1175 `_)\n\n**Deprecated**\n\n- Access to ``nengo.Simulator.model`` is deprecated. To access static data\n generated during the build use ``nengo.Simulator.data``. It provides access\n to everything that ``nengo.Simulator.model.params`` used to provide access to\n and is the canonical way to access this data across different backends.\n (`#1145 `_,\n `#1173 `_)\n\n2.2.0 (September 12, 2016)\n==========================\n\n**API changes**\n\n- It is now possible to pass a NumPy array to the ``function`` argument\n of ``nengo.Connection``. The values in the array are taken to be the\n targets in the decoder solving process, which means that the ``eval_points``\n must also be set on the connection.\n (`#1010 `_)\n- ``nengo.utils.connection.target_function`` is now deprecated, and will\n be removed in Nengo 3.0. Instead, pass the targets directly to the\n connection through the ``function`` argument.\n (`#1010 `_)\n\n**Behavioural changes**\n\n- Dropped support for NumPy 1.6. Oldest supported NumPy version is now 1.7.\n (`#1147 `_)\n\n**Improvements**\n\n- Added a ``nengo.backends`` entry point to make the reference simulator\n discoverable for other Python packages. In the future all backends should\n declare an entry point accordingly.\n (`#1127 `_)\n- Added ``ShapeParam`` to store array shapes.\n (`#1045 `_)\n- Added ``ThresholdingPreset`` to configure ensembles for thresholding.\n (`#1058 `_,\n `#1077 `_,\n `#1148 `_)\n- Tweaked ``rasterplot`` so that spikes from different neurons don't overlap.\n (`#1121 `_)\n\n**Documentation**\n\n- Added a page explaining the config system and preset configs.\n (`#1150 `_)\n\n**Bug fixes**\n\n- Fixed some situations where the cache index becomes corrupt by\n writing the updated cache index atomically (in most cases).\n (`#1097 `_,\n `#1107 `_)\n- The synapse methods ``filt`` and ``filtfilt`` now support lists as input.\n (`#1123 `_)\n- Added a registry system so that only stable objects are cached.\n (`#1054 `_,\n `#1068 `_)\n- Nodes now support array views as input.\n (`#1156 `_,\n `#1157 `_)\n\n2.1.2 (June 27, 2016)\n=====================\n\n**Bug fixes**\n\n- The DecoderCache is now more robust when used improperly, and no longer\n requires changes to backends in order to use properly.\n (`#1112 `_)\n\n2.1.1 (June 24, 2016)\n=====================\n\n**Improvements**\n\n- Improved the default ``LIF`` neuron model to spike at the same rate as the\n ``LIFRate`` neuron model for constant inputs. The older model has been\n moved to `nengo_extras `_\n under the name ``FastLIF``.\n (`#975 `_)\n- Added ``y0`` attribute to ``WhiteSignal``, which adjusts the phase of each\n dimension to begin with absolute value closest to ``y0``.\n (`#1064 `_)\n- Allow the ``AssociativeMemory`` to accept Semantic Pointer expressions as\n ``input_keys`` and ``output_keys``.\n (`#982 `_)\n\n**Bug fixes**\n\n- The DecoderCache is used as context manager instead of relying on the\n ``__del__`` method for cleanup. This should solve problems with the\n cache's file lock not being removed. It might be necessary to\n manually remove the ``index.lock`` file in the cache directory after\n upgrading from an older Nengo version.\n (`#1053 `_,\n `#1041 `_,\n `#1048 `_)\n- If the cache index is corrupted, we now fail gracefully by invalidating\n the cache and continuing rather than raising an exception.\n (`#1110 `_,\n `#1097 `_)\n- The ``Nnls`` solver now works for weights. The ``NnlsL2`` solver is\n improved since we clip values to be non-negative before forming\n the Gram system.\n (`#1027 `_,\n `#1019 `_)\n- Eliminate memory leak in the parameter system.\n (`#1089 `_,\n `#1090 `_)\n- Allow recurrence of the form ``a=b, b=a`` in basal ganglia SPA actions.\n (`#1098 `_,\n `#1099 `_)\n- Support a greater range of Jupyter notebook and ipywidgets versions with the\n the ``ipynb`` extensions.\n (`#1088 `_,\n `#1085 `_)\n\n2.1.0 (April 27, 2016)\n======================\n\n**API changes**\n\n- A new class for representing stateful functions called ``Process``\n has been added. ``Node`` objects are now process-aware, meaning that\n a process can be used as a node's ``output``. Unlike non-process\n callables, processes are properly reset when a simulator is reset.\n See the ``processes.ipynb`` example notebook, or the API documentation\n for more details.\n (`#590 `_,\n `#652 `_,\n `#945 `_,\n `#955 `_)\n- Spiking ``LIF`` neuron models now accept an additional argument,\n ``min_voltage``. Voltages are clipped such that they do not drop below\n this value (previously, this was fixed at 0).\n (`#666 `_)\n- The ``PES`` learning rule no longer accepts a connection as an argument.\n Instead, error information is transmitted by making a connection to the\n learning rule object (e.g.,\n ``nengo.Connection(error_ensemble, connection.learning_rule)``.\n (`#344 `_,\n `#642 `_)\n- The ``modulatory`` attribute has been removed from ``nengo.Connection``.\n This was only used for learning rules to this point, and has been removed\n in favor of connecting directly to the learning rule.\n (`#642 `_)\n- Connection weights can now be probed with ``nengo.Probe(conn, 'weights')``,\n and these are always the weights that will change with learning\n regardless of the type of connection. Previously, either ``decoders`` or\n ``transform`` may have changed depending on the type of connection;\n it is now no longer possible to probe ``decoders`` or ``transform``.\n (`#729 `_)\n- A version of the AssociativeMemory SPA module is now available as a\n stand-alone network in ``nengo.networks``. The AssociativeMemory SPA module\n also has an updated argument list.\n (`#702 `_)\n- The ``Product`` and ``InputGatedMemory`` networks no longer accept a\n ``config`` argument. (`#814 `_)\n- The ``EnsembleArray`` network's ``neuron_nodes`` argument is deprecated.\n Instead, call the new ``add_neuron_input`` or ``add_neuron_output`` methods.\n (`#868 `_)\n- The ``nengo.log`` utility function now takes a string ``level`` parameter\n to specify any logging level, instead of the old binary ``debug`` parameter.\n Cache messages are logged at DEBUG instead of INFO level.\n (`#883 `_)\n- Reorganised the Associative Memory code, including removing many extra\n parameters from ``nengo.networks.assoc_mem.AssociativeMemory`` and modifying\n the defaults of others.\n (`#797 `_)\n- Add ``close`` method to ``Simulator``. ``Simulator`` can now be used\n used as a context manager.\n (`#857 `_,\n `#739 `_,\n `#859 `_)\n- Most exceptions that Nengo can raise are now custom exception classes\n that can be found in the ``nengo.exceptions`` module.\n (`#781 `_)\n- All Nengo objects (``Connection``, ``Ensemble``, ``Node``, and ``Probe``)\n now accept a ``label`` and ``seed`` argument if they didn't previously.\n (`#958 `_)\n- In ``nengo.synapses``, ``filt`` and ``filtfilt`` are deprecated. Every\n synapse type now has ``filt`` and ``filtfilt`` methods that filter\n using the synapse.\n (`#945 `_)\n- ``Connection`` objects can now accept a ``Distribution`` for the transform\n argument; the transform matrix will be sampled from that distribution\n when the model is built.\n (`#979 `_).\n\n**Behavioural changes**\n\n- The sign on the ``PES`` learning rule's error has been flipped to conform\n with most learning rules, in which error is minimized. The error should be\n ``actual - target``. (`#642 `_)\n- The ``PES`` rule's learning rate is invariant to the number of neurons\n in the presynaptic population. The effective speed of learning should now\n be unaffected by changes in the size of the presynaptic population.\n Existing learning networks may need to be updated; to achieve identical\n behavior, scale the learning rate by ``pre.n_neurons / 100``.\n (`#643 `_)\n- The ``probeable`` attribute of all Nengo objects is now implemented\n as a property, rather than a configurable parameter.\n (`#671 `_)\n- Node functions receive ``x`` as a copied NumPy array (instead of a readonly\n view).\n (`#716 `_,\n `#722 `_)\n- The SPA Compare module produces a scalar output (instead of a specific\n vector).\n (`#775 `_,\n `#782 `_)\n- Bias nodes in ``spa.Cortical``, and gate ensembles and connections in\n ``spa.Thalamus`` are now stored in the target modules.\n (`#894 `_,\n `#906 `_)\n- The ``filt`` and ``filtfilt`` functions on ``Synapse`` now use the initial\n value of the input signal to initialize the filter output by default. This\n provides more accurate filtering at the beginning of the signal, for signals\n that do not start at zero.\n (`#945 `_)\n\n**Improvements**\n\n- Added ``Ensemble.noise`` attribute, which injects noise directly into\n neurons according to a stochastic ``Process``.\n (`#590 `_)\n- Added a ``randomized_svd`` subsolver for the L2 solvers. This can be much\n quicker for large numbers of neurons or evaluation points.\n (`#803 `_)\n- Added ``PES.pre_tau`` attribute, which sets the time constant on a lowpass\n filter of the presynaptic activity.\n (`#643 `_)\n- ``EnsembleArray.add_output`` now accepts a list of functions\n to be computed by each ensemble.\n (`#562 `_,\n `#580 `_)\n- ``LinearFilter`` now has an ``analog`` argument which can be set\n through its constructor. Linear filters with digital coefficients\n can be specified by setting ``analog`` to ``False``.\n (`#819 `_)\n- Added ``SqrtBeta`` distribution, which describes the distribution\n of semantic pointer elements.\n (`#414 `_,\n `#430 `_)\n- Added ``Triangle`` synapse, which filters with a triangular FIR filter.\n (`#660 `_)\n- Added ``utils.connection.eval_point_decoding`` function, which\n provides a connection's static decoding of a list of evaluation points.\n (`#700 `_)\n- Resetting the Simulator now resets all Processes, meaning the\n injected random signals and noise are identical between runs,\n unless the seed is changed (which can be done through\n ``Simulator.reset``).\n (`#582 `_,\n `#616 `_,\n `#652 `_)\n- An exception is raised if SPA modules are not properly assigned to an SPA\n attribute.\n (`#730 `_,\n `#791 `_)\n- The ``Product`` network is now more accurate.\n (`#651 `_)\n- Numpy arrays can now be used as indices for slicing objects.\n (`#754 `_)\n- ``Config.configures`` now accepts multiple classes rather than\n just one. (`#842 `_)\n- Added ``add`` method to ``spa.Actions``, which allows\n actions to be added after module has been initialized.\n (`#861 `_,\n `#862 `_)\n- Added SPA wrapper for circular convolution networks, ``spa.Bind``\n (`#849 `_)\n- Added the ``Voja`` (Vector Oja) learning rule type, which updates an\n ensemble's encoders to fire selectively for its inputs. (see\n ``examples/learning/learn_associations.ipynb``).\n (`#727 `_)\n- Added a clipped exponential distribution useful for thresholding, in\n particular in the AssociativeMemory.\n (`#779 `_)\n- Added a cosine similarity distribution, which is the distribution of the\n cosine of the angle between two random vectors. It is useful for setting\n intercepts, in particular when using the ``Voja`` learning rule.\n (`#768 `_)\n- ``nengo.synapses.LinearFilter`` now has an ``evaluate`` method to\n evaluate the filter response to sine waves of given frequencies. This can\n be used to create Bode plots, for example.\n (`#945 `_)\n- ``nengo.spa.Vocabulary`` objects now have a ``readonly`` attribute that\n can be used to disallow adding new semantic pointers. Vocabulary subsets\n are read-only by default.\n (`#699 `_)\n- Improved performance of the decoder cache by writing all decoders\n of a network into a single file.\n (`#946 `_)\n\n**Bug fixes**\n\n- Fixed issue where setting ``Connection.seed`` through the constructor had\n no effect. (`#724 `_)\n- Fixed issue in which learning connections could not be sliced.\n (`#632 `_)\n- Fixed issue when probing scalar transforms.\n (`#667 `_,\n `#671 `_)\n- Fix for SPA actions that route to a module with multiple inputs.\n (`#714 `_)\n- Corrected the ``rmses`` values in ``BuiltConnection.solver_info`` when using\n ``NNls`` and ``Nnl2sL2`` solvers, and the ``reg`` argument for ``Nnl2sL2``.\n (`#839 `_)\n- ``spa.Vocabulary.create_pointer`` now respects the specified number of\n creation attempts, and returns the most dissimilar pointer if none can be\n found below the similarity threshold.\n (`#817 `_)\n- Probing a Connection's output now returns the output of that individual\n Connection, rather than the input to the Connection's post Ensemble.\n (`#973 `_,\n `#974 `_)\n- Fixed thread-safety of using networks and config in ``with`` statements.\n (`#989 `_)\n- The decoder cache will only be used when a seed is specified.\n (`#946 `_)\n\n2.0.4 (April 27, 2016)\n======================\n\n**Bug fixes**\n\n- Cache now fails gracefully if the ``legacy.txt`` file cannot be read.\n This can occur if a later version of Nengo is used.\n\n2.0.3 (December 7, 2015)\n========================\n\n**API changes**\n\n- The ``spa.State`` object replaces the old ``spa.Memory`` and ``spa.Buffer``.\n These old modules are deprecated and will be removed in 2.2.\n (`#796 `_)\n\n2.0.2 (October 13, 2015)\n========================\n\n2.0.2 is a bug fix release to ensure that Nengo continues\nto work with more recent versions of Jupyter\n(formerly known as the IPython notebook).\n\n**Behavioural changes**\n\n- The IPython notebook progress bar has to be activated with\n ``%load_ext nengo.ipynb``.\n (`#693 `_)\n\n**Improvements**\n\n- Added ``[progress]`` section to ``nengorc`` which allows setting\n ``progress_bar`` and ``updater``.\n (`#693 `_)\n\n**Bug fixes**\n\n- Fix compatibility issues with newer versions of IPython,\n and Jupyter. (`#693 `_)\n\n2.0.1 (January 27, 2015)\n========================\n\n**Behavioural changes**\n\n- Node functions receive ``t`` as a float (instead of a NumPy scalar)\n and ``x`` as a readonly NumPy array (instead of a writeable array).\n (`#626 `_,\n `#628 `_)\n\n**Improvements**\n\n- ``rasterplot`` works with 0 neurons, and generates much smaller PDFs.\n (`#601 `_)\n\n**Bug fixes**\n\n- Fix compatibility with NumPy 1.6.\n (`#627 `_)\n\n2.0.0 (January 15, 2015)\n========================\n\nInitial release of Nengo 2.0!\nSupports Python 2.6+ and 3.3+.\nThanks to all of the contributors for making this possible!\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nengo/nengo", "keywords": "", "license": "Free for non-commercial use", "maintainer": "", "maintainer_email": "", "name": "nengo", "package_url": "https://pypi.org/project/nengo/", "platform": "", "project_url": "https://pypi.org/project/nengo/", "project_urls": { "Homepage": "https://github.com/nengo/nengo" }, "release_url": "https://pypi.org/project/nengo/2.8.0/", "requires_dist": [ "numpy (>=1.8)", "sphinx (<1.7); extra == 'all'", "jupyter; extra == 'all'", "matplotlib (>=1.4); extra == 'all'", "nbsphinx; extra == 'all'", "numpydoc (>=0.6); extra == 'all'", "guzzle-sphinx-theme; extra == 'all'", "scipy (>=0.13); extra == 'all'", "scikit-learn; extra == 'all'", "jupyter; extra == 'all'", "matplotlib (>=1.4); extra == 'all'", "pytest (>=3.2); extra == 'all'", "sphinx (<1.7); extra == 'docs'", "jupyter; extra == 'docs'", "matplotlib (>=1.4); extra == 'docs'", "nbsphinx; extra == 'docs'", "numpydoc (>=0.6); extra == 'docs'", "guzzle-sphinx-theme; extra == 'docs'", "scipy (>=0.13); extra == 'optional'", "scikit-learn; extra == 'optional'", "jupyter; extra == 'tests'", "matplotlib (>=1.4); extra == 'tests'", "pytest (>=3.2); extra == 'tests'" ], "requires_python": "", "summary": "Tools for building and simulating large-scale neural models", "version": "2.8.0" }, "last_serial": 3946227, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "8e5fadf50622637f65f7856129c6d9d2", "sha256": "ef8c2e24c09bfde0a82c5946009ea9c143c409a48752b1e99195736abe138023" }, "downloads": -1, "filename": "nengo-2.0.0.tar.gz", "has_sig": false, "md5_digest": "8e5fadf50622637f65f7856129c6d9d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 300339, "upload_time": "2015-01-16T05:28:31", "url": "https://files.pythonhosted.org/packages/e0/20/af217d62250ffec225e0461c02c9b4aabc9389e7d0c9219170cf733edcaf/nengo-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "0f011e0e3cb358efe1c5de882ba85c7f", "sha256": "4b5541d19ffab47dfcfd51b1a009b46af067b0e4acc867195aac2df74c9ecbf2" }, "downloads": -1, "filename": "nengo-2.0.1.zip", "has_sig": false, "md5_digest": "0f011e0e3cb358efe1c5de882ba85c7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 366292, "upload_time": "2015-01-27T22:29:53", "url": "https://files.pythonhosted.org/packages/22/f5/54f23422539fe79485b7bdac07057f9b0dfd9ae2509eb76f5d45135311f3/nengo-2.0.1.zip" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "6d7de0b1fe79051398f4832153984a69", "sha256": "70c12a645aa7ee31e9ca5bad5ffef85b5791ab73e16b55648e5cd30e5cb9f5f7" }, "downloads": -1, "filename": "nengo-2.0.2.tar.gz", "has_sig": false, "md5_digest": "6d7de0b1fe79051398f4832153984a69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271447, "upload_time": "2015-10-13T18:46:21", "url": "https://files.pythonhosted.org/packages/a7/4e/39b9d6b7ba63b2af314089289d0ca9ca70522674bf5130e9b642f879ef50/nengo-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "6c60a12168b673004d5ef3c6475e07d2", "sha256": "03d6ea08a0ed9809f0ca56962f35e3ebf2e5385e081d6d11c38b5f0f20b813ec" }, "downloads": -1, "filename": "nengo-2.0.3.tar.gz", "has_sig": false, "md5_digest": "6c60a12168b673004d5ef3c6475e07d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 277197, "upload_time": "2015-12-07T23:37:25", "url": "https://files.pythonhosted.org/packages/74/88/718d6ba6e74404833f44fa13baa8b376ef6616b93f0508f195feacfa457f/nengo-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "95f3a20f7acadbb69b7a11375faaca8a", "sha256": "e6eec712f89089c835caffbe2a0c95818dd32162f2bca117df070c091858b845" }, "downloads": -1, "filename": "nengo-2.0.4.tar.gz", "has_sig": false, "md5_digest": "95f3a20f7acadbb69b7a11375faaca8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 273317, "upload_time": "2016-04-27T15:04:45", "url": "https://files.pythonhosted.org/packages/6a/cb/a1af2bf6624a9265b52b889f14ff29cb42ba92ac7752c371c86313d789f8/nengo-2.0.4.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "06a9ddf736c4a87c730f3db06de7df6c", "sha256": "db52e0ea3109caa90000ffc8956cdfe4c1d54f1be7e1803a7c0807928a32cce9" }, "downloads": -1, "filename": "nengo-2.1.0.tar.gz", "has_sig": false, "md5_digest": "06a9ddf736c4a87c730f3db06de7df6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 344217, "upload_time": "2016-04-27T15:11:33", "url": "https://files.pythonhosted.org/packages/24/5d/a8c0217bc6d25f3cff4aa1df34478a9d572cea181b268aad4555bcf5b7d3/nengo-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "f4a95368b0e0504c9e6773f046fd382d", "sha256": "958d11f6348f1d4331a5e1142ba1144e4289f1320f0dae930580e8cd573f6ec0" }, "downloads": -1, "filename": "nengo-2.1.1.tar.gz", "has_sig": false, "md5_digest": "f4a95368b0e0504c9e6773f046fd382d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 354243, "upload_time": "2016-06-24T19:41:46", "url": "https://files.pythonhosted.org/packages/a4/64/ad58a61037f24e34f5dc6d60c7f1f0364ded0514bd050c39c3f1697c3c93/nengo-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "35c95b7360f8effb22a06dbc8d3f1a02", "sha256": "8e195c69c6aba8a12216819c91f7b0cd8124e6665c680ac080be7e5497ae9919" }, "downloads": -1, "filename": "nengo-2.1.2.tar.gz", "has_sig": false, "md5_digest": "35c95b7360f8effb22a06dbc8d3f1a02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 354688, "upload_time": "2016-06-27T19:38:07", "url": "https://files.pythonhosted.org/packages/06/da/b76deffd0369668f46dcaace28c9a08329b60da59e4cd5672083c2bab741/nengo-2.1.2.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "1931a1693d0b484a011740b5edbd1f28", "sha256": "26c51f95a304fff63d31a25151bb02620fe93e79ea7b9459fd041a1c907ab604" }, "downloads": -1, "filename": "nengo-2.2.0.tar.gz", "has_sig": false, "md5_digest": "1931a1693d0b484a011740b5edbd1f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 364500, "upload_time": "2016-09-12T21:14:01", "url": "https://files.pythonhosted.org/packages/ed/26/e32a8b65cd40a60ece950d59bf2c582325340e6e35e852938797eb3331a1/nengo-2.2.0.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "27b7632df0db1a486857091a0c27d748", "sha256": "c49271deb361098193b5d22cccbfcd25fa2e0dd346c13100fab72983a063277b" }, "downloads": -1, "filename": "nengo-2.3.0.zip", "has_sig": false, "md5_digest": "27b7632df0db1a486857091a0c27d748", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 496108, "upload_time": "2016-11-30T16:27:09", "url": "https://files.pythonhosted.org/packages/d3/7c/254c1b77781712f1982392efd21b3ae7c36b5a8cb68ccf154073e9afeac0/nengo-2.3.0.zip" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "f4698ff274f7e5be194fd2c9c34a6809", "sha256": "d6fc24f38612e7853a50ad73698178caf49781285aac5b92403e32e7e39c6932" }, "downloads": -1, "filename": "nengo-2.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4698ff274f7e5be194fd2c9c34a6809", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 337423, "upload_time": "2017-02-18T17:26:00", "url": "https://files.pythonhosted.org/packages/dc/bb/f446106d9449772b4086207b67d67327f8bc506d967777579b6b0aaedb3d/nengo-2.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6018062d57d20bd1e63eddbfe678b0d8", "sha256": "97a2cf1af32625c7fff2cf80287574e358e606fac467cd634670086f13e5b48e" }, "downloads": -1, "filename": "nengo-2.3.1.tar.gz", "has_sig": false, "md5_digest": "6018062d57d20bd1e63eddbfe678b0d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 360764, "upload_time": "2017-02-18T17:25:51", "url": "https://files.pythonhosted.org/packages/37/88/7e62a4d61ba70730ca6e649df34a40ec0e5095f42ad29635fb291117772d/nengo-2.3.1.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "0e3b785e61bf39420f64f0cecae3b832", "sha256": "ac5869cbc54ce30d271aae9a0180ce00389e4cc5d8c5342e888f20d03aeb40b3" }, "downloads": -1, "filename": "nengo-2.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e3b785e61bf39420f64f0cecae3b832", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 353580, "upload_time": "2017-04-18T19:31:31", "url": "https://files.pythonhosted.org/packages/c4/a8/7d3fbd84543dba054fee7e637814ff235792d0b3f3ce6a4de2b8ce0e35f1/nengo-2.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "310d662a90bf70eb7f1d235d3489909c", "sha256": "cea6f84f5c9d2ffafaef914ee8da06bd70d0c1cece5e65c4b0273ad57fa09a3c" }, "downloads": -1, "filename": "nengo-2.4.0.tar.gz", "has_sig": false, "md5_digest": "310d662a90bf70eb7f1d235d3489909c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 381852, "upload_time": "2017-04-18T19:31:21", "url": "https://files.pythonhosted.org/packages/f8/18/f22320268e210b0ce8cdaa87c5f891fde16f1aa0e1b2e7ec5b00670766bc/nengo-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "d369757fa736b920c66e2d0874a867d6", "sha256": "cee8512bc7cb90ea1ca0d67cf7a1f60513762526b26b5b0b15206de231e23958" }, "downloads": -1, "filename": "nengo-2.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d369757fa736b920c66e2d0874a867d6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 358703, "upload_time": "2017-07-24T19:52:47", "url": "https://files.pythonhosted.org/packages/61/ad/0e5b6f65fc49b794a1af21537838b29d2f41a5dce88297a3a2de11d465b3/nengo-2.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f767de4988167d9534e9821cbca05f9", "sha256": "e9b516fa9ecb5f1c0321003b11849dde4d8f5ed6e57a6d403f33e5b03b057eb5" }, "downloads": -1, "filename": "nengo-2.5.0.tar.gz", "has_sig": false, "md5_digest": "0f767de4988167d9534e9821cbca05f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395606, "upload_time": "2017-07-24T19:52:35", "url": "https://files.pythonhosted.org/packages/72/69/212325d41e2d0afe901b822015f7abff69c62f8cd31b9430ab9202916fdc/nengo-2.5.0.tar.gz" } ], "2.6.0": [ { "comment_text": "", "digests": { "md5": "9c7967337b7071d7decfc94f07f34b7f", "sha256": "9eb80f06f70265b01fbba445f6584a735231a4bf38a3445e80c66330691a08bb" }, "downloads": -1, "filename": "nengo-2.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9c7967337b7071d7decfc94f07f34b7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 364793, "upload_time": "2017-10-06T17:15:26", "url": "https://files.pythonhosted.org/packages/8b/fa/80284e9cf9f3c2198dc06cfa1f037b2c7a2906584c12c075487a156c278e/nengo-2.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d271ff7ee35496b905b6bbe25a71265", "sha256": "a0e609a1b29843f94761c5f3aa0c07d2622ff3bcf33e7db936262b69cd6daf75" }, "downloads": -1, "filename": "nengo-2.6.0.tar.gz", "has_sig": false, "md5_digest": "3d271ff7ee35496b905b6bbe25a71265", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 402458, "upload_time": "2017-10-06T17:15:17", "url": "https://files.pythonhosted.org/packages/37/99/0fa06d79113723173ff06ea815f4b7ff0d4c4c9594d624c87175d654a829/nengo-2.6.0.tar.gz" } ], "2.7.0": [ { "comment_text": "", "digests": { "md5": "9759d1d2fb469cbf83ab20aa056cddf7", "sha256": "1ec52e6cd7509f2e4c04d7b0307109835cade3331a9376f0bf7d169b1e4c0f48" }, "downloads": -1, "filename": "nengo-2.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9759d1d2fb469cbf83ab20aa056cddf7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 374093, "upload_time": "2018-03-07T14:43:28", "url": "https://files.pythonhosted.org/packages/eb/31/8aeaa70f4dcea5d58f4f66d659c57edea3d4462b594ed3a2839ebe9b289d/nengo-2.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f803020344c6521129ab6badd74a482", "sha256": "144bc52a089e62e6e9b9e644eece08ae5fe59905e342972ce5c77c21a7979cff" }, "downloads": -1, "filename": "nengo-2.7.0.tar.gz", "has_sig": false, "md5_digest": "0f803020344c6521129ab6badd74a482", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 410516, "upload_time": "2018-03-07T14:43:37", "url": "https://files.pythonhosted.org/packages/61/a9/9f542c1b0d0cb201ca425c5d048f9811765dc46a7453ae145921747d4651/nengo-2.7.0.tar.gz" } ], "2.8.0": [ { "comment_text": "", "digests": { "md5": "e3befbdc6d20d1d101ab59feca3cdb71", "sha256": "072fc5d5de236e92df544c24402661090f091b43fae49cfa313aac5240745c6d" }, "downloads": -1, "filename": "nengo-2.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e3befbdc6d20d1d101ab59feca3cdb71", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 375798, "upload_time": "2018-06-09T23:53:01", "url": "https://files.pythonhosted.org/packages/f7/ce/e314e1176bfbbe6c3b6cf4e8fa0620cafad8f8bad04203c55881e9cb2fb0/nengo-2.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cffd7dd26ec478a2b9f2e74040b2e9f4", "sha256": "0d76e9cc96a28b123511fd7d0a8cac947e621d972ee01038abed7fed25728c16" }, "downloads": -1, "filename": "nengo-2.8.0.tar.gz", "has_sig": false, "md5_digest": "cffd7dd26ec478a2b9f2e74040b2e9f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 410667, "upload_time": "2018-06-09T23:53:09", "url": "https://files.pythonhosted.org/packages/d4/d9/5d38ef62155d7680dc89f1a7e6d0475d25980ea4cfbc457bde8dc8aa7a10/nengo-2.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e3befbdc6d20d1d101ab59feca3cdb71", "sha256": "072fc5d5de236e92df544c24402661090f091b43fae49cfa313aac5240745c6d" }, "downloads": -1, "filename": "nengo-2.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e3befbdc6d20d1d101ab59feca3cdb71", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 375798, "upload_time": "2018-06-09T23:53:01", "url": "https://files.pythonhosted.org/packages/f7/ce/e314e1176bfbbe6c3b6cf4e8fa0620cafad8f8bad04203c55881e9cb2fb0/nengo-2.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cffd7dd26ec478a2b9f2e74040b2e9f4", "sha256": "0d76e9cc96a28b123511fd7d0a8cac947e621d972ee01038abed7fed25728c16" }, "downloads": -1, "filename": "nengo-2.8.0.tar.gz", "has_sig": false, "md5_digest": "cffd7dd26ec478a2b9f2e74040b2e9f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 410667, "upload_time": "2018-06-09T23:53:09", "url": "https://files.pythonhosted.org/packages/d4/d9/5d38ef62155d7680dc89f1a7e6d0475d25980ea4cfbc457bde8dc8aa7a10/nengo-2.8.0.tar.gz" } ] }