| 1 |
=========== |
|---|
| 2 |
Release 0.4 (r342) |
|---|
| 3 |
=========== |
|---|
| 4 |
|
|---|
| 5 |
* Added a `quit_on_end` extra argument to `neuron.setup()` |
|---|
| 6 |
|
|---|
| 7 |
* Added a `synapse_types` attribute to all standard cell classes. |
|---|
| 8 |
|
|---|
| 9 |
* Removed `Projection.setThreshold()` from API |
|---|
| 10 |
|
|---|
| 11 |
* In the `neuron` module, `load_mechanisms()` now takes a path to search from as an optional argument, in order to allow loading user-defined mechanisms |
|---|
| 12 |
|
|---|
| 13 |
* Added `get_script_args()` (process command line arguments) and `colour()` (print coloured output) functions to the `utility` module. |
|---|
| 14 |
|
|---|
| 15 |
* Added `rank()` to the API (returns the MPI rank) |
|---|
| 16 |
|
|---|
| 17 |
* Removed `setRNGseeds()` from the API, since each simulator is so different in its requirements. The seeds may be provided using the `extra_params` argument to `setup()`. |
|---|
| 18 |
|
|---|
| 19 |
* The headers of output files now contain the first and last ids in the Population (not fully implemented yet |
|---|
| 20 |
for recording with the low-level API) |
|---|
| 21 |
|
|---|
| 22 |
* Global variables such as the time step and minimum delay have been replaced |
|---|
| 23 |
with functions `get_time_step()`, `get_min_delay()` and `get_current_time()`. This |
|---|
| 24 |
ensures that values are always up-to-date. |
|---|
| 25 |
|
|---|
| 26 |
* Removed `cellclass` arg from `set()` function. All cells should now know their own cellclass. |
|---|
| 27 |
|
|---|
| 28 |
* Added `get()` method to `Population` class. |
|---|
| 29 |
|
|---|
| 30 |
* Default value for the `duration` parameter in `SpikeSourcePoisson` changed |
|---|
| 31 |
from 1e12 ms to 1e6 ms. |
|---|
| 32 |
|
|---|
| 33 |
* Reimplemented `Population.set()`, `tset()`, `rset()` in a more consistent way |
|---|
| 34 |
which avoids exposing the translation machinery and fixes various bugs with |
|---|
| 35 |
computed parameters. The new implementation is likely to be slower, but several |
|---|
| 36 |
optimisations are possible. |
|---|
| 37 |
|
|---|
| 38 |
* Added `simple_parameters()`, `scaled_parameters()` and `computed_parameters()` |
|---|
| 39 |
methods to the `StandardModelType` class. Their intended use is in making |
|---|
| 40 |
`set()` methods/functions more efficient for non-computed parameters when |
|---|
| 41 |
setting on many nodes. |
|---|
| 42 |
|
|---|
| 43 |
* Multiple calls to `Population.record()` no longer record the same cell twice. |
|---|
| 44 |
|
|---|
| 45 |
* Changed `common.ID` to `common.IDMixin`, which allows the type used for the id |
|---|
| 46 |
to vary (`int` for `neuron` and `nest1/2`, `long` for pcsim). |
|---|
| 47 |
|
|---|
| 48 |
* In `common.StandardModelType`, changed most of the methods to be classmethods, |
|---|
| 49 |
since they do not act on instance data. |
|---|
| 50 |
|
|---|
| 51 |
* Added a `ModelNotAvailable` class to allow more informative error messages |
|---|
| 52 |
when people try to use a model with a simulator that doesn't support it. |
|---|
| 53 |
|
|---|
| 54 |
* hoc and mod files are now correctly packaged, installed and compiled with |
|---|
| 55 |
`distutils`. |
|---|
| 56 |
|
|---|
| 57 |
* Added a check that argument names to `setup()` are not mis-spelled. This is |
|---|
| 58 |
possible because of `extra_params`. |
|---|
| 59 |
|
|---|
| 60 |
* It is now possible to instantiate Timer objects, i.e. to have multiple, |
|---|
| 61 |
independent Timers |
|---|
| 62 |
|
|---|
| 63 |
* Some re-naming of function/method arguments to conform more closely to |
|---|
| 64 |
Python style guidelines, e.g. `methodParameters` to `method_parameters` and |
|---|
| 65 |
`paramDict` to `param_dict`. |
|---|
| 66 |
|
|---|
| 67 |
* Added `getWeights()` and `getDelays()` methods to `Projection` class. NOTE: |
|---|
| 68 |
check for which simulators this is available. XXX |
|---|
| 69 |
|
|---|
| 70 |
* Added a `RoundingWarning` exception, to warn the user when rounding is |
|---|
| 71 |
occurring. |
|---|
| 72 |
|
|---|
| 73 |
* Can now change the `spike_times` attribute of a `SpikeSourceArray` during a |
|---|
| 74 |
simulation without reinitialising. This reduces memory for long simulations, |
|---|
| 75 |
since it is not necessary to load all the spike times into memory at once. |
|---|
| 76 |
NOTE: check for which simulators this works. XXX |
|---|
| 77 |
|
|---|
| 78 |
* The `neuron` module now requires NEURON v6.1 or later. |
|---|
| 79 |
|
|---|
| 80 |
* For developers, changes to the layout of the code: |
|---|
| 81 |
(1) Simulator modules have been moved to a `src` subdirectory - this is to |
|---|
| 82 |
make distribution/installation of PyNN easier. |
|---|
| 83 |
(2) Several of the modules have been split into multiple files, in their own |
|---|
| 84 |
subdirectories, e.g.: `nest2.py` --> `nest2/__init__.py`, `nest2/cells.py` |
|---|
| 85 |
and `nest2/connectors.py`. The reason for this is that the individual files |
|---|
| 86 |
were getting very long and difficult to navigate. |
|---|
| 87 |
|
|---|
| 88 |
* Added `index()` method to `Population` class - what does it do?? XXX |
|---|
| 89 |
|
|---|
| 90 |
* Added `getSpikes()` method to `Population` class - returns spike times/ids as |
|---|
| 91 |
a numpy array. |
|---|
| 92 |
|
|---|
| 93 |
* Added support for the Stage 1 FACETS hardware. |
|---|
| 94 |
|
|---|
| 95 |
* Changed the default weight to zero (was 1.0 nA) |
|---|
| 96 |
|
|---|
| 97 |
* New STDP API, with implementations for `neuron` and `nest2`, based on |
|---|
| 98 |
discussions at the CodeSprint. |
|---|
| 99 |
|
|---|
| 100 |
* Distance calculations can now use periodic boundary conditions. |
|---|
| 101 |
|
|---|
| 102 |
* Parameter translation system now fully supports reverse translation |
|---|
| 103 |
(including units). The syntax for specifying translations is now simpler, |
|---|
| 104 |
which makes it easier to define new standard cell models. |
|---|
| 105 |
|
|---|
| 106 |
* All simulator modules now have a `list_standard_models()` function, which |
|---|
| 107 |
returns a list of all the models that are available for that simulator. |
|---|
| 108 |
|
|---|
| 109 |
* The `connect()` function now returns a `Connection` object, which has |
|---|
| 110 |
`weight` and `delay` properties. This allows accessing/changing weights/delays |
|---|
| 111 |
of individual connections in the low-level API. NOTE: only available in `nest2`? |
|---|
| 112 |
Implement for all sims or delete from this release. XXX |
|---|
| 113 |
|
|---|
| 114 |
* Added `record_c()` and `print_c()` methods to the `Population` class, to allow |
|---|
| 115 |
recording synaptic conductances. NOTE: only in `nest2` - should add to |
|---|
| 116 |
`neuron` or delete from this release. XXX |
|---|
| 117 |
|
|---|
| 118 |
* Procedures for connecting `Population`s can now be defined as classes |
|---|
| 119 |
(subclasses of an abstract `Connector` class) rather than given as a string. |
|---|
| 120 |
This should make it easier for users to add their own connection methods. |
|---|
| 121 |
Weights and delays can also be specified in the `Connector` constructor, |
|---|
| 122 |
removing the need to call `setWeights()` and `setDelays()` after the building |
|---|
| 123 |
of the connections. |
|---|
| 124 |
We keep the string specification for backwards compatibility, but this is |
|---|
| 125 |
deprecated and will be removed in a future API version. |
|---|
| 126 |
|
|---|
| 127 |
* Added new standard models: EIF_cond_alpha_isfa_ista, IF_cond_exp_gsfa_grr, |
|---|
| 128 |
HodgkinHuxley. NOTE: check names, and that all models are supported by at |
|---|
| 129 |
least two simulators. |
|---|
| 130 |
|
|---|
| 131 |
* Version 2 of the NEST simulator is now supported, with the `nest2` module. |
|---|
| 132 |
The `nest` module is now called `nest1`. |
|---|
| 133 |
|
|---|
| 134 |
* Changed the order of arguments in `random.RandomDistribution.__init__()` to |
|---|
| 135 |
put `rng` last, since this is the argument for which the default is most often |
|---|
| 136 |
used (moving it lets positional arguments be used for `distribution` and |
|---|
| 137 |
`parameters` when `rng` is not specified). |
|---|
| 138 |
|
|---|
| 139 |
* Changes to `ID` class: |
|---|
| 140 |
- `_cellclass` attribute renamed to `cellclass` and is now a [http://www.geocities.com/foetsch/python/new_style_classes.htm property]. |
|---|
| 141 |
- Ditto for `_position` --> `position` |
|---|
| 142 |
- Methods `setPosition()`, `getPosition()`, `setCellClass()` removed (just use |
|---|
| 143 |
the `position` or `cellclass` properties). |
|---|
| 144 |
- `set(param,val=None)` changed to `setParameters(**parameters)`. |
|---|
| 145 |
- Added `getParameters()` |
|---|
| 146 |
- `__setattr__()` and `__getattr__()` overridden, so that cell parameters can |
|---|
| 147 |
be read/changed using dot notation, e.g. `id.tau_m = 20.0` |
|---|
| 148 |
Note that one of the reasons for using properties is that it allows attributes |
|---|
| 149 |
to be created only when needed, hopefully saving on memory. |
|---|
| 150 |
|
|---|
| 151 |
* Added `positions` property to `Population` class, which allows the positions |
|---|
| 152 |
of all cells in a population to be set/read at once as a numpy array. |
|---|
| 153 |
|
|---|
| 154 |
* All positions are now in 3D space, irrespective of the shape of the |
|---|
| 155 |
`Population`. |
|---|
| 156 |
|
|---|
| 157 |
* Threads can now be used in `nest` and `pcsim`, via the `extra_param` option of |
|---|
| 158 |
the `setup()` function. |
|---|
| 159 |
|
|---|
| 160 |
* Removed `oldneuron` module. |
|---|
| 161 |
|
|---|
| 162 |
* Added `__iter__()` (iterates over ids) and `addresses()` (iterates over |
|---|
| 163 |
addresses) to the `Population` class. |
|---|
| 164 |
|
|---|
| 165 |
=========== |
|---|
| 166 |
Release 0.3 |
|---|
| 167 |
=========== |
|---|
| 168 |
|
|---|
| 169 |
* `pcsim` is now fully supported, although there are still one or two parts of |
|---|
| 170 |
the API that are not implemented. |
|---|
| 171 |
|
|---|
| 172 |
* The behaviour of the `run()` function in the `neuron` module has been changed to match the `nest` and `pcsim` modules, i.e., calling `run(simtime)` several times in succession will advance the simulation by `simtime` ms each time, whereas before, `neuron` would reset time to zero each time. |
|---|
| 173 |
|
|---|
| 174 |
* PyTables is now optional with `pcsim` |
|---|
| 175 |
|
|---|
| 176 |
* Change to `neuron` and `oldneuron` to match more closely the behaviour of |
|---|
| 177 |
`nest` and `pcsim` when the `synapse_type` argument is not given in `connect()`. |
|---|
| 178 |
Before, `neuron` would by default choose an excitatory synapse. Now, it chooses |
|---|
| 179 |
an inhibitory synapse if the weight is negative. |
|---|
| 180 |
|
|---|
| 181 |
* `runtests.py` now runs tests for `pcsim` as well as `nest`, `neuron` and |
|---|
| 182 |
`oldneuron`. |
|---|
| 183 |
|
|---|
| 184 |
* Minor changes to arg names and doc-strings, to improve API-consistency between modules. |
|---|
| 185 |
|
|---|
| 186 |
* Added users' guide (in `doc` directory). |
|---|
| 187 |
|
|---|
| 188 |
* Renamed `neuron` module to `oldneuron` and `neuron2` to `neuron`. |
|---|
| 189 |
|
|---|
| 190 |
* PyNN can now be installed using `distutils`, although this doesn't install |
|---|
| 191 |
or compile hoc/mod files. |
|---|
| 192 |
|
|---|
| 193 |
* Added a `compatible_output` argument to the `printX()` functions/methods, to |
|---|
| 194 |
allow choosing a simulator's native format (faster) or a format that is |
|---|
| 195 |
consistent across simulators. |
|---|
| 196 |
|
|---|
| 197 |
* Temporary files used for saving spikes and membrane potential are now created |
|---|
| 198 |
using the `tempfile` module, which means it should be safe to run multiple PyNN |
|---|
| 199 |
simulations at the same time (before, they would all overwrite the same file). |
|---|
| 200 |
|
|---|
| 201 |
* pygsl is no longer an absolute requirement but can be used if available |
|---|
| 202 |
|
|---|
| 203 |
* Changed the behaviour of `Population` indexing in the `nest` module to be more |
|---|
| 204 |
consistent with the `neuron2` module, in two ways. (i) negative addresses now |
|---|
| 205 |
raise an Exception. (ii) Previously, an integer index `n` signified the `(n+1)`th |
|---|
| 206 |
neuron in the population, e.g., `p[99]` would be the same as `p[10,10]` for a |
|---|
| 207 |
10x10 population. Now, `p[99]` is the same as `p[99,]` and is only valid for a |
|---|
| 208 |
1D population. |
|---|
| 209 |
|
|---|
| 210 |
* Addition of `ID` class (inherits from `int`), allowing syntax like |
|---|
| 211 |
`p[3,4].set('tau_m',20.0)` where `p` is a Population object. |
|---|
| 212 |
|
|---|
| 213 |
============= |
|---|
| 214 |
Release 0.2.0 |
|---|
| 215 |
============= |
|---|
| 216 |
|
|---|
| 217 |
* `Population.tset()` now accepts arrays of arrays (e.g. conceptually a 2D array |
|---|
| 218 |
of 1D arrays, actually a 3D array) as well as arrays of lists. |
|---|
| 219 |
|
|---|
| 220 |
* setup() now returns the node id. This can be used in a parallel framework to |
|---|
| 221 |
identify the master node. |
|---|
| 222 |
|
|---|
| 223 |
* Unified output format for spikes and membrane potential for `nest` and |
|---|
| 224 |
`neuron` modules. |
|---|
| 225 |
|
|---|
| 226 |
* Added first experimental version of `pcsim` module |
|---|
| 227 |
|
|---|
| 228 |
* `neuron2` module now supports distributed simulations using NEURON compiled |
|---|
| 229 |
with both MPI and Python support. |
|---|
| 230 |
|
|---|
| 231 |
* `Population[xx]` syntax for getting individual cell ids improved. You can now |
|---|
| 232 |
write `p[2,3]` instead of `p[(2,3)]`. |
|---|
| 233 |
|
|---|
| 234 |
* `v_init` added as a parameter to the `IF_curr_alpha`, etc, models. |
|---|
| 235 |
|
|---|
| 236 |
* Trying to access a hoc variable that doesn't exist raises a Python exception, |
|---|
| 237 |
`HocError`. |
|---|
| 238 |
|
|---|
| 239 |
* If synaptic delay is not specified, delays are now set to `min_delay`, not zero. |
|---|
| 240 |
|
|---|
| 241 |
* Random number API allows keeping control of the random numbers used in |
|---|
| 242 |
simulations, by passing an RNG object as an argument to functions that use RNGs. |
|---|
| 243 |
`random` module has wrappers for NumPy RNGs and GSL RNGs, as well as a stub |
|---|
| 244 |
class to indicate the simulator's native RNG should be used (i.e., the `Random` |
|---|
| 245 |
class in hoc). |
|---|
| 246 |
|
|---|
| 247 |
* Translation of model and parameter names from standardised names to |
|---|
| 248 |
simulator-specific names now uses one class per neuron model, rather than a |
|---|
| 249 |
single class with one method per model. For users, the only difference is |
|---|
| 250 |
that you have to use, e.g., |
|---|
| 251 |
`create(IF_curr_alpha)` |
|---|
| 252 |
instead of |
|---|
| 253 |
`create('IF_curr_alpha')` |
|---|
| 254 |
i.e., pass the class instead of a string. |
|---|
| 255 |
For developers, it should now be easier to add new standard models. |
|---|
| 256 |
|
|---|
| 257 |
* Added `neuron2` module, a reimplemtation of the PyNN API for NEURON, that uses |
|---|
| 258 |
more Python and less hoc. |
|---|
| 259 |
|
|---|
| 260 |
|
|---|
| 261 |
============= |
|---|
| 262 |
Release 0.1.0 |
|---|
| 263 |
============= |
|---|
| 264 |
|
|---|
| 265 |
Version 0.1 of the API was never really released. At this point the project used |
|---|
| 266 |
the FACETSCOMMON svn repository. |
|---|
| 267 |
|
|---|
| 268 |
First svn import of early stage of PyNN was on 9th May 2006. |
|---|