Changelog
Below, you can find a linked version of the changelog available at the PyRates github repository.
Changelog
1.2
1.2.1
CI maintenance release. No library-code changes from 1.2.0.
Fixed CircleCI test failure
FileNotFoundError: [Errno 2] No such file or directory: 'meson'. numpy 2.0 removed distutils fromnumpy.f2py, sopython -m numpy.f2py -c ...now shells out tomesonandninja; the barecimg/pythonimages don’t ship either, so the Fortran-backend tests crashed on every CI job.Added a new
fortranextras_require bucket (pip install pyrates[fortran]) pullingmeson,meson-python, andninjafrom PyPI (binary wheels, no sudo needed). The[tests]extras now include it.CircleCI config: every job now apt-installs
gfortranvia a reusableinstall_fortran_toolchainstep and runspip install --upgrade pipbefore installing the test extras.
1.2.0
This release rounds out PyRates’ Fortran/auto-07p path for analytical-Jacobian continuation, replaces the legacy tensorflow backend with a diffrax-driven JAX backend, hardens the symbolic Jacobian against transcendentals and sympy namespace collisions, and bundles a substantial backend-consistency pass and performance improvements across all backends.
Major changes:
JAX backend: new backend (backend=’jax’) using diffrax for ODE integration; the legacy tensorflow backend has been removed in its favour. Includes lax.scan-fused fixed-step Euler/Heun solvers and a targeted 0-d constant optimisation.
Symbolic Jacobian API: new CircuitTemplate.get_jacobian_func() method returns a callable Jacobian built via sympy. A documentation gallery example (QIF parameter fitting with sensitivity equations) demonstrates its use.
Analytical Jacobian for auto-07p: the Fortran backend now emits DFDU/DFDP inside the generated func subroutine and auto-sets JAC=1 in the generated c.* file (auto_jac=True, on by default). Auto-07p’s IJAC=1/2 paths are wired through end to end.
Complete auto-07p input file generation: multi-scenario c.* emission (ivp / eq / lc) and full parnames / unames declarations. YAML parameter declaration order is preserved into parnames and the Fortran subroutine signature (regression fix: equation-walk order used to leak in, silently mis-addressing PAR slots for integer-keyed UZSTOP/ICP arguments).
Equation parser robustness: sympy stdlib transcendentals (exp, log, sin, cos, tan, …) are no longer rebound to undefined functions, so symbolic differentiation works for any RHS that uses them. The reserved-variable-name guard (check_vname) was extended to cover sympy function classes (beta, gamma, …), singletons (S, Q, oo, nan), and the math-function names themselves — previously these would either silently produce wrong values or crash deep inside the parser.
Backend consistency and performance:
Backend consistency review: the Matlab backend now inherits from BaseBackend directly with a _format_assignment hook; decorator application is factored into BaseBackend._apply_decorator; supported solvers are declared via a class-level SUPPORTED_SOLVERS attribute with early validation; class-level _no_funcs and a unified add_hist_func default. JAX/Torch gained parity functions (wsum, JAX interp_rows).
Compiled module cache: BaseBackend now keys cached compiled RHS modules by SHA-256 of the source so different models with the same filename no longer collide.
Fixed-step solver storage is now driven by iteration count rather than modulo-on-step, fixing intermittent off-by-one storage drift on long runs.
Torch backend: zero-copy torch.as_tensor + np.empty for state recording; _solve_scipy_dde override; fixed an index-shadow bug in _solve_euler.
DDE history: pre-allocated row buffer replaces the previous list-of-ndarrays accumulator.
Fortran backend: lazy numpy.f2py import with a clear error path when f2py isn’t installed; hardened the f2py subprocess call.
Minor improvements and fixes:
Fixed issue #42: CircuitTemplate.clear() now clears the OperatorTemplate cache.
Fixed update_var docstring (edge_vars takes 3-tuples, not 4-tuples).
Added –backends pytest CLI option for selecting which backend(s) to test against.
Documentation: 6 post-1.1.0 accuracy fixes; new DDE gallery sections; new PopulationTemplate + Connectivity gallery example.
New benchmarks: population-connectivity scaling figures.
1.1
1.1.0
This release adds first-class support for delay differential equations (DDEs), vector/matrix-native large-network construction via PopulationTemplate and Connectivity, broader cross-backend coverage (MATLAB / Julia DDE consistency, DDE-BIFTOOL integration), and a range of input-pipeline and numerical fixes.
Major changes:
DDE support: x(t-d) syntax for delayed-state references in equations, a DDEHistory data structure for history-buffer management, and integration with the solver pipeline so DDE systems can be simulated end to end through the same CircuitTemplate.run API as ODE models.
Matrix Connectivity edges: add_edges_from_matrix now accepts dynamic and non-dynamic `EdgeTemplate`s plus delay coupling for matrix-defined edge sets, making it easier to build large networks programmatically.
PopulationTemplate + Connectivity: new vector/matrix-native frontend types for large-network construction; lets users define populations of vectorised units and their connectivity as compact tensor expressions.
MATLAB backend: correctness fixes, DDE tracking, and DDE-BIFTOOL integration (bifurcation analysis of DDE systems through MATLAB).
Julia backend: DDE consistency with the other backends, correctness fixes, and an interp_rows function.
Performance and robustness:
Reduced model-compilation time via lazy lambdify and sympify caching.
Hardened the input pipeline against scalar/vector and fixed/adaptive solver mismatches.
Fixed numpy 2.3+ shape errors triggered by scalar state-vector assignments.
Simplified ODE cascade-delay handling and separated collection from mutation for safer in-place edits.
Guarded _add_edge_buffer against empty delays and added buffer-variable collision detection.
Fixed a stale .pyc bytecode cache bug that caused cross-contamination between sequential circuit runs sharing a filename.
Other:
Tried fixing issue #44 (#45): safer time-point generation.
Restricted networkx to <= 3.5 (networkx 3.6 introduced breaking changes).
1.0
1.0.10
fixed https://github.com/pyrates-neuroscience/PyRates/issues/38
updated use example for delayed differential equations https://pyrates.readthedocs.io/en/latest/auto_analysis/dde.html#sphx-glr-auto-analysis-dde-py
TODO: fix issues with numpy backend and past() usage
added sqrt function to pytorch backend
fixed dimension problem with external inputs and vectorized networks. Now, different inputs to different network nodes can be passed using the all/operator/variable convention, if the input is an appropriate 2D array.
merged pull request #40 from PC-DOS/master to fix issue #39 as well as a typo in python_definitions.py
1.0.9
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)
1.0.8
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.
1.0.7
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
1.0.6
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 a CircuitTemplate instace, causing issues with multiple calls of CircuitTemplate.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
1.0.5
adjusted the call of the max/min functions: Use maxi and mini 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
1.0.4
updated readthedocs configuration file
added keyword argument adaptive to the CircuitTemplate.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
1.0.3
simplified automated generation of unique variable names (recursive calls etc. were replaced with look-up tables)
improved variable passing between different operators within a node. Less additional variables are now created, thus reducing the memory load
1.0.2
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
1.0.1
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 function grid_search to vectorize, to be consistent with the naming of the same argument in CircuitTemplate.run
updated the CircuitTemplate.add_edges_from_matrix method to allow for edges that connect separate network nodes
1.0.0
This official release is a combination of all the bug fixes and improvements in the pre 1.0 versions.
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 differential equation model would lead to a KeyError when trying to generate the run function
0.17
0.17.4
added sign function to the backend that returns the sign of its input (1 or -1)
improved readthedocs documentation (removed bug with display of math, added new use example for edge templates)
added a safe guard for defining edge templates: An error is raised now when edge template input variables have the same name as their source variable.
0.17.3
minor debugging of the model introduction use examples
adjustments of the template cheat sheet template_specification.rst
debugged issue in base backend, where file names specified by the users that contained a file ending wre not handled properly
debugged issue with fortran backend where file names that contained a directory path were not handled properly for module imports
debugged issue with fortran backend where adjustments of the default auto meta parameters were not applied correctly
0.17.2
the state variable indices and parameter names returned as the fourth and third return values of CircuitTemplate.get_run_func, respectively, now use the frontend variable names instead of the backend variable names
implemented a method CircuitIR.get_frontend_varname that returns the frontend variable name given a backend variable name
0.17.1
changed the theme of the readthedocs documentation website
added documentation for all supported backend functions
added documentation for dependencies and requirements
added documentation for YAML template structure to the documentation website
added documentation for mathematical syntax
added the changelog to the documentation website
0.17.0
added
__getitem__methods on all frontend template classes that allow for a less convoluted examination of the major properties of the template classesadded pytests that test these new features
users can now quickly access each node on
CircuitTemplate, each operator onNodeTemplateandEdgeTemplate, and each variable onOperatorTemplate
0.16
0.16.0
added class for interactive grid search results visualization to utility
changed organization of the pandas DataFrames that
grid-searchreturns: Each different parameterization of the model appears only once in theparam_grid.indexand theresultsDataFrame uses a full hierarchical column organization.The pandas DataFrame returned by
CircuitTemplate.runuses a fully hierarchical column organization now: Every node hierarchy level is a separate level in the column index hierarchy.minor docstring improvements
fixed bug in edge equation setup where a wrong index was provided to the target variable sometimes
fixed bug in variable updating that occurred for
numpy.ndarrayvariables where theshapeattribute was an empty tupleapplied all changed to the gallery examples in the documentation
0.15
0.15.1
added generic method for state variable indexing to circuit.py that is used for all edge-related indexing operations now (replacing multiple, slightly different implementations at various places in circuit.py)
added an alternative compute graph class that can be used to generate function files that do not perform in-place manipulations of the vectorfield
dybut instead just create a new variable. This is relevant for gradient-based optimization.improved the modularity of the
ComputeGraphadded a method
add_importto the backend that allows adding import statements to the top of a function fileadded a backend function
concatenatethat can be used in equation strings now in order to combine vectorized variablesremoved a bug where calling
clear_frontend_cachesdid not clear all IR caches properly
0.15.0
added support for models with vectorized state-variables
improved performance of edge operations
more detailed output about returned function arguments when calling
CircuitTemplate.get_run_funcimproved memory consumption during model initialization
complex-valued models use complex variable types for all variables and parameters now, to prevent type conversions
added a new method
CircuitTemplate.get_varthat allows users to access backend variables after callingCircuitTemplate.get_run_funcadded automated reduction of vectorized constants, if all constants are identical
added possibility to pass iterables to
CircuitTemplate.update_var, thus allowing to update vectorized variables in one goupdated
CircuitTemplate.add_edges_from_matrixsuch that only edges with non-zero weights are added to theCircuitTemplateinstance
0.14
0.14.3
run-function generating method of ComputeGraph now returns the keys of the function arguments together with the arguments
implemented a method in CircuitTemplate that allows to get the indices of state variables within the system state vector
0.14.2
updated changelog
0.14.1
added different versions of the Izhikevich mean-field model (the dimensionless model, the biophysical model with distributed background currents, and the biophysical model with distributed spike thresholds)
improved documentation gallery examples (debugged equations, added images, added Izhikevich model references)
0.14.0
added Heun’s method as a new differential equation solver method
Heun’s method was integrated with all backends
a test was added that ensures correct functionality of Heun’s method
the usage of the method is demonstrated in the simulations gallery example
added hyperlinks to websites explaining the different numerical solvers in the gallery example
improved the backend implementation of choosing between different solvers (less code overlap between backends now)
0.13
0.13.0
added support for delayed differential equation (DDE) systems
a function
past(y, tau)is now available for any backend that allows to evaluate a state variableyat timet-tauedges with discrete delays that are to be used in combination with an adaptive step-size solver are translated into
pastcallsa gallery example was added that demonstrates how to interface the Python package
ddeintvia a DDE system generated by PyRatesthe Julia backend received support for performing DDE simulations from within PyRates via its interface to
DifferentialEquations.jl
0.12
0.12.2
debugged latex equation error in Izhikevich model gallery example
bugfix in julia backend where a wrong file ending was provided
added new pytests for the izhikevich model, the python model definition interface and the CircuitIR translation
updated the readme
added a new QIF model template that includes conductance-based synapses
0.12.1
added gallery example for the izhikevich mean-field model
updated readme
updated changelog
updated default parameterization of the izhikevich model
0.12.0
added a matlab backend (mainly for code generation, since simulations are very slow due to array conversion between numpy and matlab)
added a mean-field model of the Izhikevich neuron
small bug fixes
removed an issue of the fortran interface to Auto-07p that led to wrong function argument indices being generated
removed an issue with synaptic weights of -1 being converted to 1
removed a compatibility issue between old and new versions of the ‘to_yaml’ methods
added the natural logarithm ‘log’ as backend function
0.11
0.11.1
removed bug where vectorized circuits with multiple edges to the same target wre not resolved correctly
removed bug where creating deepcopies of a
CircuitTemplateraised an error for scalar-valued modelsadded a new gallery example demonstrating different ways of adding delays to models
added a new gallery example demonstrating the different options to optimize run times of numerical simulations
0.11.0
added support for complex-valued systems
added model templates for the kuramoto order parameter and the theta neuron model
added model templates for the van der pol oscillator and the stuart-landau oscillator
added support for Python 3.9
added new example galleries
extended pytest library
added the
CircuitTemplate.to_yamlmethod that allows to save a givenCircuiTemplateinstance to a YAML definition fileadded the
CircuitTemplate.add_edges_from_matrixmethod that allows to connect nodes in aCircuiTemplateinstance via connectivity matricesdeleted old, deprecated code fragments
removed the dependecy on pyparsing
0.10
0.10.1
updates to changelog and setup.py
0.10.0
reworked features:
Restructured backend
new backends (torch, Julia)
sympy-based equation parsing
improved compute graph
improved generation of run functions from compute graphs
Improved frontend
easier imports
additional convenience functions for simulations
less steps from model definition to simulation
reduced syntax for model definitions
Removed utility package
utility packages for parameter optimization, signal analysis and visualization have been removed from the pyrates main package
most utility functionalities have been moved to separate repositories of the pyrates-neuroscience organization
less package requirements
new model templates
improved structure of the model templates
New model templates and documentation examples
new example galleries and jupyter notebooks with hands-on use examples
0.9
0.9.6
Reworked features:
CircuitIR._add_edge_buffer()was re-worked, such that the algorithm that translates gamma-kernel convolutions for edges into ODE systems is more transparent and computationally less expensiveadditionally improved the source code documentation of
CircuitIR._add_edge_buffer()removed unnecessary copying/indexing operations of original edge source variable
0.9.5
Bug fixes:
fixed a bug in
CircuitIR._add_edge_buffer()that caused a mix-up between edges when data was transferred from the originial output into the buffer variables.
Performance improvements:
zero-weight edges are now removed much earlier in the compilation process, thus reducing compilation time.
0.9.4
Bug fixes:
fixed a bug in
CircuitIR._add_edge_buffer()that caused a mix-up between edges when some outputs of a node had delays while others had not.
Usability improvements:
changed
CircuitIR.vectorize_edges()in circuit.py such that zero-weight edges are removed during the vectorization, even if they have a delay defined on them (previously, defining a delay on a zero-weight edge kept that edge in the graph).
0.9.3
Documentation changes:
corrected mistake in the documentation of
pyrates.ir.circuit.CircuitIR.add_edge_buffer(), where arguments that refer to the source variable of an edge, where erroneously described as target variable information.
Bug fixes:
fixed bug in
pyrates.ir.circuit.CircuitIR.add_edge_buffer()where the conversion from discrete delays to gamma-kernel convolutions led to a mix-up between different edges in some special cases.fixed bug in
pyrates.utility.pyauto.PyAuto._start_from_solution()where certain special solution branches from Auto-07p could not be properly handled
Usability improvements:
changed
pyrates.utility.grid_search.adapt_circuit()such that node properties are always deep-copied before they are changed. This allows users to change the values of parameters on specific node operators, even though that exact same operator has been used to define multiple nodes in the network. Previously, changing the value of the parameter on one node led to changes on all other nodes as well.improved stability and usability of
pyrates.utility.visualization.Interactive2DParamPlot. A title for the 2D plot can now be passed, a colorbar is added, and the location of the axis ticks of the 2D plot was improved
0.9.2
Documentation updates:
all Jansen-Rit model introductions where changed to track the excitatory and inhibitory post-synaptic potentials of the pyramidal cell population as output variables. Their difference provides the average membrane potential of the pyramidal cells.
Changed documentation jupyter notebooks etc. to account for Jansen-Rit model definition change (see below).
adjusted
qif_fold.pyto delete all temporary files created by auto-07p
model templates updates:
added a 3 population model to the qif model templates in
simple_montbrio.yamladded qif population template with mono-exponential synaptic depression to
simple_montbrio.yamladded a new model template to
simple_montbrio.yamlwhich provides a QIF population with mono-exponential spike-frequency adaptationadded bi-exponential short-term adaptation descriptions to QIF models in
simple_montbrio.yamlsmall change to the Jansen-Rit model definition: I removed the observer operator. To investigate the PC membrane potential, please record both PSP variables at the PC population and plot their sum. This has been changed accordingly in all corresponding examples.
PyAuto related updates:
altered the
pyrates.utility.pyauto.PyAuto.to_filemethod. Additional keyword arguments that are provided by the user are now stored in a dictionary underadditional_attributes. Loading a pyauto instance viafrom_filewill thus create an attributeadditional_attributeson the instances, which will contain all the keyword arguments as a dictionary.debugged the
pyrates.utility.pyauto.get_from_solutionsmethod. Previously, providing more than one attribute key resulted in the method using an erroneous list comprehension style. This was fixed now. Providing multiple keys now results in the method returning a list of lists.changed the way automatic re-runs of starting points computed by auto are detected by
pyrates.utility.pyauto.PyAutofixed problem with extracting a solution from auto via the method
pyrates.utility.pyauto.PyAuto.get_solution(). Apparently, sometimes the function callsolution_branch(solution_key)does not work and throws an attribute error. I implemented a work around for this inconsistency in the Python interface for auto-07p.changed
pyrates.utility.pyauto.continue_period_doubling_bfto return a list that contains the names of all period doubling continuations performed with the pyauto instance that is returned as a second return valuenow catching an error in the plotting-related method
pyrates.utility.pyauto.PyAuto._get_line_collection, if thexargument is a vector of length 1debugged
pyrates.utility.pyauto.PyAuto.get_point_idx(). Sometimes, when auto-07p failed to locate the new fixed point of a steady-state solution, it retries the previous step. PyAuto could not recognize the auto-07p diagnostic output for such cases. Now it can.improved period doubling continuation in
pyrates.utility.pyauto.py. Only solution branches with new PD bifurcations are saved for plotting etc.adjusted
pyrates.utility.pyauto.PyAuto.plot_continuationmethod such that it can be used to plot continuations of the time parameter “PAR(14)”adjusted
pyrates.utility.pyauto.PyAuto.plot_trajectoryto be able to plot phase space trajectories of explicit time continuations (continuations in “PAR(14)”)adjusted the return values of the
pyrates.utility.pyauto.fractal_dimensionmethod for its extreme cases. If the sum of the lyapunov spectrum is positive, return the number of lyapunov exponents. If the largest lyapunov exponent is smaller or equal to zero, use the normal formula.added a
cutoffargument to thepyrates.utility.pyauto.PyAuto.plot_trajectorymethod that allows to cut off initial transients within the time window fromt=0untilt=cutoff.implemented speed-up of
pyrates.utility.pyauto.PyAuto.get_eigenvalues()method and fixed two bugs with the method that (1) led to an empty list being returned, and (2) caused the method to fail when applied to a steady-state solutionimproved continuation of period doubling cascades via
pyrates.utility.pyauto.continue_period_doubling_bf(): It recognizes now which branches it had already switched to at period doubling bifurcations. Reduces the number of overall continuationsadded the possibility to pass the installation directory of auto-07p to
pyrates.utility.pyauto.PyAuto,pyrates.utility.pyauto.PyAuto.from_fileandpyrates.ir.circuit.CircuitIR.to_pyauto(). This makes it easier to install auto-07p, since the users do not have to manupilate system path variables themselfes anymoredebugged counting of already calculated parameter continuations in
pyrates.utility.pyauto.PyAutoadjusted the
pyrates.ir.circuit.CircuitIR.clear()method together with thepyrates.backend.fortran_backend.FortranBackend.clear()method to remove all temporary files created by us or auto-07p during the model compilation and execution.
grid-search updates:
added a warning to the
pyrates.utility.grid_search.grid_search()function if a certain parameter is not found in the modelimproved interface between
pyrates.utility.grid_search.grid_search()function andpyrates.utility.grid_search.ClusterGridsearchclassadded a keyword argument
cleartogrid_searchthat prevents removal of temporary files if set toFalse
visualization updates:
improved the interactive 2D plot in
pyrates.utility.visualization.pyDebugging of
pyrates.utility.visualization.Interactive2DParamPlot: retrieving the column index of each column name now handles multi-column Dataframes correctly.
backend updates:
replaced “is” comparisons with “==” comparisons where appropriate
evolutionary optimization updates:
changed the way model ids are sampled in
pyrates.utility.genetic_algorithm.DifferentialEvolutionAlgorithm. With the old method, multiple workers sometimes generated models with equal IDs, leading to errors.added an argument to
pyrates.utility.genetic_algorithm.DifferentialEvolutionAlgorithm.run()that allows to suppress runtime warnings.
intermediate representation updates:
fixed a bug in
pyrates.ir.circuit.CircuitIR._add_edge_buffer()that led to a wrong association between node indices and node variables in cases where multiple delayed edges with different delay profiles had to be handled. This mostly affected grid-searches over delay distribution parameters.passed the
verboseargument ofpyrates.ir.circuit.CircuitIR.run()to the backend run function. Now all printed output of PyRates can be muted.
0.9.1
Updated documentation
Removed conversion function register, because the functions were not used and made the code unnecessarily complicated
might be replaced by a graph-based conversion path-finder in the future, if necessary
Extended support for loading circuits from and saving to files
supported formats:
yaml,picklesupported classes: templates
Removed all imports in
pyrates.utility.__init__.pyfor increased stability. Previously, importing something frompyrates.utility, would have required a user to install optional packages that might not have been needed. Now all utility functions need to be imported from sub-files in thepyrates.utilitymodule instead of directly from the module.Added optional install collection
teststhat includes all packages necessary to run the tests. Also restricted the travis CI build to use only the tests installation instead of the full installation.Added feature to pass a dictionary to
CircuitTemplate.apply()in order to adapt values of variables on the fly. This behaviour was already supported by all other parts of the hierarchy, only circuits missed out until now.
0.9.0
Added experimental support for multiple source variables per edge
edges can either have multiple input variable from the same input node, or
they can have additional (“modulating”) input from any node in the network
Added experimental support for Fortran code creation backend
Edge delays can now be transformed into delay distributions via convoluted Gamma-Kernels based on differential equation using a mean and spread parameter for the delay
various performance improvements
0.8
0.8.2 Included bug fixes from jajcayn:
Allow to initialise CircuitTemplate with instances of
EdgeTemplateinstead of a template path, previous behaviour is unaffected.Fix writing graph to the file by passing
_formatalong until the end
0.8.1 Improved cluster distribution and bug fixes
updated tensorflow dependency to >=2.0, fixes some dependency problems
Improved cluster distribution system, available under
pyrates.utility.grid_searchNew feature: model optimization with genetic algorithms, available under
pyrates.utility.genetic_algorithmMiscellaneous bug fixes
0.8.0
removed version ID numbers of operator/node instances in the intermediate representation. I.e. a node label
mynodewas previously renamed tomynode.0and will now keep it’s original label.moved all functionality of ComputeGraph into CircuitIR, which is now the main interface for the backend.
CircuitIRnow has a.compilemethod that performs all vectorization and transformation into the computable backend form.
vectorization will transform all nodes into instances of
VectorizedNodeIRthat have labels likevector_nodeXwith X being a integer index. The map between old nodes and vectorized nodes with respective index is saved in thelabel_mapdictionary attribute of theCircuitIRWhen adding input or sampling output of a network with multiple stacked levels of circuits, you can now use
allto get all nodes within that particular level. For examplemysubcircuit1/all/mynodewill get all nodes with labelmynodethat are in one level of sub-circuits belowmysubcircuit.Tensorflow support now relies on the current 2.0 release candidate
tensorflow-2.0-rcAdded optional install requirements via
extras_requirein setup.py