root/trunk/changelog

Revision 347, 11.4 kB (checked in by apdavison, 6 months ago)

Merged changes from branches/0.4 r343-341 to trunk

  • Property svn:eol-style set to native
Line 
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.
Note: See TracBrowser for help on using the browser.