Releases: pyrates-neuroscience/PyRates
v1.0.9: Updated use examples and fortran backend bug fix
- updated use examples to work with recent updates
- debugged problems with the Fortran backend that were caused by the changes
PyRates 1.0.8
(state variables were represented as length-1 vectors instead of as scalars after 1.0.8)
v1.0.8: Added NumPy >= 2.3 support
added support for numpy 2.3: Changes from numpy 2.2 to numpy 2.3 dropped support for using a default shape of None
for non-array variables. This update introduces several changes to the PyRates backend to account for that.
v1.0.7: Fortran backend updates and edge template debugging
- updated pytests to account for recent updates to sympy and other python packages
- fixed a bug in the documentation use example
continuation.py
- improved support for complex variables in Fortran backend. The global variable
I = sqrt(-1.0)
is now defined in each fortran script. Also, initial conditions for complex variables are properly set via the parentheses notation, e.g.v = (1.0, 0.5)
. - fixed a bug with the recognition of complex-valued variables in the
OperatorTemplate
class - resolved bug with edge template vectorization where edge source and target indices were not applied correctly
- dropped support for Python 3.7 and added support for Python 3.11 and 3.12
v1.0.6: Bug Fixes and Fortran Backend Improvements
- fixed a bug that caused vectorization to fail if the same operator was used multiple times on a single node
- fixed a bug that caused an error in the generation of unique variable names on nodes with more than 10 operators defined on them
- fixed a bug that caused
CircuitTemplate.clear()
calls to not clear all attributes on aCircuitTemplate
instace, causing issues with multiple calls ofCircuitTemplate.get_run_func
- updated the fortran backend to work with the recent changes to the
numpy.f2py
module for generating a modulate that can be imported into python from a fortran file - fixed a bug in the
ComputeGraph
class of computegraph.py that caused function names to not be updated properly for backend-specific function definitions
v1.0.5: Resolved backend bugs with the equation parser
- adjusted the call of the max/min functions: Use
maxi
andmini
in the equations. Both functions take two input arguments, and return the larger/smaller one, respectively - updated the PyRates reference in the readme and on the documentation website (using the PLOS CB paper now instead of the arxiv preprint)
- removed a bug where differential equations with a constant right-hand side were not properly handled by the automated compute graph optimization
- resolved an issue with the fortran backend where complex data types were not properly processed during the code generation
v1.0.4: Dropped support for Python 3.6 and added support for Python 3.10
- updated readthedocs configuration file
- added keyword argument
adaptive
to theCircuitTemplate.get_run_func
method, which allows to indicate whether the generated equation file is expected to be called with an adaptive step-size solver (adaptive=True
) or not - reduced computational overhead for the creation and simulation of delayed differential equation systems
- removed a bug where edge attribute dictionaries were changed by mistake during the
CircuitIR
instantiation - improved working directory management in the backend
- dropped official support for python 3.6 and added support for python 3.10
v1.0.3: Simplified variable name generation
- simplified automated generation of unique variable names. Recursive calls etc. were replaced with look-up tables, thus improving speed during the file generation process.
- improved variable passing between different operators within a node. Less additional variables are now created, thus reducing the memory load during run time.
v1.0.2: Improved Fortran Backend Functions and PyCoBi integration
- fixed bug in fortran backend where the NPAR parameter for Auto-07p files was not properly set
- improved code readability in fortran backend
- moved selection of output variables from the results of a numerical simulation from the backend to the computegraph, thus reducing the amount of variables that had to be passed between the different classes
- after each simulation, the value of all state variables in the compute graph is updated to the value at the final simulation step
- added functionalities to the
CircuitTemplate
that allow to remember the state of all network variables from a previous simulation, even if a new backend is chosen for function generation or more simulations
v1.0.1: Improved edge adding mechanism
- added a background input parameter to the izhikevich population template
- updated the documentation example for parameter sweeps to account for recent changes in the keyword arguments to the
grid_search
function - changed keyword argument
vectorization
of the functiongrid_search
tovectorize
, to be consistent with the naming of the same argument inCircuitTemplate.run
- updated the
CircuitTemplate.add_edges_from_matrix
method to allow for edges that connect separate network nodes
v1.0.0: First Official PyRates Release
This official release is a combination of all the bug fixes and improvements in the
pre 1.0 versions up to v0.17.4.
It establishes PyRates as a code-generation tool for dynamical systems modeling
with a flexible, intuitive, and well organized language for model definition.
At this stage, PyRates comes with support for ordinary and delayed differential equations and can
generate vector-field evaluation functions for any ODE/DDE system for each of the following backends:
- NumPy
- Tensorflow
- PyTorch
- Julia
- Fortran
While PyRates still provides extensive support for numerical simulations and parameter sweeps itself, its main advantage is that it can generate run functions for dynamical systems that can be used in combination with dynamical systems analysis tools in any of the above mentioned tools/languages.
Minor improvements since 0.17.4:
- removed typos in documentation
- improved layout of the online documentation
- updated documentation to account for latest changes
- removed bug where a delayed different