This release comes with improvements to the organization, performance, and workflow.
We have introduced the concept of a model.
A model is a NamedTuple containing the fields: pop,
syn,
stim
, and, optionally, name.
A model can be obtained with the convenience function merge_models(args...; kwargs...)
which will parse any argument by their type and construct the model. See the function documentation for further details.
Each model
field contains named tuples, for example, model = (:pop=(:E=ExcPopulation), ...)
, that will be integrated in the sim! and train! loops.
Models can be easily converted into graphs, where populations are nodes, connections are edges, and stimuli are nodes+edges. The function get_graph(model)
achieves this.
Besides the model concept, there have been improvements in terms of performance and readability of the code in the entire package.
Summary of the changes:
- Recordings can be sampled with a user-defined sampling rate
sr
. - Plasticity rules are organized to be composed (e.g., STP + STDP).
- Recordings are interpolated in the simulated interval.
- New functions are provided to analyze spike trains.
- Functions to remove/add models' elements.
- Spiking synapses are entirely re-organized, and the same Type works for multi and single-compartment models (using the
target
field)
To do:
- Recording is not optimal in terms of performance. It should be re-organized to allow for more type-inference
- Implement parallelism