You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1076 lines
45 kB

  1. Release notes (brainpy)
  2. #######################
  3. brainpy 2.2.x
  4. *************
  5. BrainPy 2.2.x is a complete re-design of the framework,
  6. tackling the shortcomings of brainpy 2.1.x generation,
  7. effectively bringing it to research needs and standards.
  8. Version 2.2.1 (2022.09.09)
  9. ==========================
  10. This release fixes bugs found in the codebase and improves the usability and functions of BrainPy.
  11. Bug fixes
  12. ~~~~~~~~~~~~~~
  13. #. Fix the bug of operator customization in ``brainpy.math.XLACustomOp`` and ``brainpy.math.register_op``. Now, it supports operator customization by using NumPy and Numba interface. For instance,
  14. .. code-block:: python
  15. import brainpy.math as bm
  16. def abs_eval(events, indices, indptr, post_val, values):
  17. return post_val
  18. def con_compute(outs, ins):
  19. post_val = outs
  20. events, indices, indptr, _, values = ins
  21. for i in range(events.size):
  22. if events[i]:
  23. for j in range(indptr[i], indptr[i + 1]):
  24. index = indices[j]
  25. old_value = post_val[index]
  26. post_val[index] = values + old_value
  27. event_sum = bm.XLACustomOp(eval_shape=abs_eval, con_compute=con_compute)
  28. #. Fix the bug of ``brainpy.tools.DotDict``. Now, it is compatible with the transformations of JAX. For instance,
  29. .. code-block:: python
  30. import brainpy as bp
  31. from jax import vmap
  32. @vmap
  33. def multiple_run(I):
  34. hh = bp.neurons.HH(1)
  35. runner = bp.dyn.DSRunner(hh, inputs=('input', I), numpy_mon_after_run=False)
  36. runner.run(100.)
  37. return runner.mon
  38. mon = multiple_run(bp.math.arange(2, 10, 2))
  39. New features
  40. ~~~~~~~~~~~~~~
  41. #. Add numpy operators ``brainpy.math.mat``\ , ``brainpy.math.matrix``\ , ``brainpy.math.asmatrix``.
  42. #. Improve translation rules of brainpylib operators, improve its running speeds.
  43. #. Support ``DSView`` of ``DynamicalSystem`` instance. Now, it supports defining models with a slice view of a DS instance. For example,
  44. .. code-block:: python
  45. import brainpy as bp
  46. import brainpy.math as bm
  47. class EINet_V2(bp.dyn.Network):
  48. def __init__(self, scale=1.0, method='exp_auto'):
  49. super(EINet_V2, self).__init__()
  50. # network size
  51. num_exc = int(3200 * scale)
  52. num_inh = int(800 * scale)
  53. # neurons
  54. self.N = bp.neurons.LIF(num_exc + num_inh,
  55. V_rest=-60., V_th=-50., V_reset=-60., tau=20., tau_ref=5.,
  56. method=method, V_initializer=bp.initialize.Normal(-55., 2.))
  57. # synapses
  58. we = 0.6 / scale # excitatory synaptic weight (voltage)
  59. wi = 6.7 / scale # inhibitory synaptic weight
  60. self.Esyn = bp.synapses.Exponential(pre=self.N[:num_exc], post=self.N,
  61. conn=bp.connect.FixedProb(0.02),
  62. g_max=we, tau=5.,
  63. output=bp.synouts.COBA(E=0.),
  64. method=method)
  65. self.Isyn = bp.synapses.Exponential(pre=self.N[num_exc:], post=self.N,
  66. conn=bp.connect.FixedProb(0.02),
  67. g_max=wi, tau=10.,
  68. output=bp.synouts.COBA(E=-80.),
  69. method=method)
  70. net = EINet_V2(scale=1., method='exp_auto')
  71. # simulation
  72. runner = bp.dyn.DSRunner(
  73. net,
  74. monitors={'spikes': net.N.spike},
  75. inputs=[(net.N.input, 20.)]
  76. )
  77. runner.run(100.)
  78. # visualization
  79. bp.visualize.raster_plot(runner.mon.ts, runner.mon['spikes'], show=True)
  80. Version 2.2.0 (2022.08.12)
  81. ==========================
  82. This release has provided important improvements for BrainPy, including usability, speed, functions, and others.
  83. Backwards Incompatible changes
  84. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  85. 1. ``brainpy.nn`` module is no longer supported and has been removed since version 2.2.0. Instead, users should use ``brainpy.train`` module for the training of BP algorithms, online learning, or offline learning algorithms, and ``brainpy.algorithms`` module for online / offline training algorithms.
  86. 2. The ``update()`` function for the model definition has been changed:
  87. .. code-block::
  88. >>> # 2.1.x
  89. >>>
  90. >>> import brainpy as bp
  91. >>>
  92. >>> class SomeModel(bp.dyn.DynamicalSystem):
  93. >>> def __init__(self, ):
  94. >>> ......
  95. >>> def update(self, t, dt):
  96. >>> pass
  97. >>> # 2.2.x
  98. >>>
  99. >>> import brainpy as bp
  100. >>>
  101. >>> class SomeModel(bp.dyn.DynamicalSystem):
  102. >>> def __init__(self, ):
  103. >>> ......
  104. >>> def update(self, tdi):
  105. >>> t, dt = tdi.t, tdi.dt
  106. >>> pass
  107. where ``tdi`` can be defined with other names, like ``sha``\ , to represent the shared argument across modules.
  108. Deprecations
  109. ~~~~~~~~~~~~~~~~~~~~
  110. #. ``brainpy.dyn.xxx (neurons)`` and ``brainpy.dyn.xxx (synapse)`` are no longer supported. Please use ``brainpy.neurons``\ , ``brainpy.synapses`` modules.
  111. #. ``brainpy.running.monitor`` has been removed.
  112. #. ``brainpy.nn`` module has been removed.
  113. New features
  114. ~~~~~~~~~~~~~~~~~~~~
  115. 1. ``brainpy.math.Variable`` receives a ``batch_axis`` setting to represent the batch axis of the data.
  116. .. code-block::
  117. >>> import brainpy.math as bm
  118. >>> a = bm.Variable(bm.zeros((1, 4, 5)), batch_axis=0)
  119. >>> a.value = bm.zeros((2, 4, 5)) # success
  120. >>> a.value = bm.zeros((1, 2, 5)) # failed
  121. MathError: The shape of the original data is (2, 4, 5), while we got (1, 2, 5) with batch_axis=0.
  122. 2. ``brainpy.train`` provides ``brainpy.train.BPTT`` for back-propagation algorithms, ``brainpy.train.Onlinetrainer`` for online training algorithms, ``brainpy.train.OfflineTrainer`` for offline training algorithms.
  123. 3. ``brainpy.Base`` class supports ``_excluded_vars`` setting to ignore variables when retrieving variables by using ``Base.vars()`` method.
  124. .. code-block::
  125. >>> class OurModel(bp.Base):
  126. >>> _excluded_vars = ('a', 'b')
  127. >>> def __init__(self):
  128. >>> super(OurModel, self).__init__()
  129. >>> self.a = bm.Variable(bm.zeros(10))
  130. >>> self.b = bm.Variable(bm.ones(20))
  131. >>> self.c = bm.Variable(bm.random.random(10))
  132. >>>
  133. >>> model = OurModel()
  134. >>> model.vars().keys()
  135. dict_keys(['OurModel0.c'])
  136. 4. ``brainpy.analysis.SlowPointFinder`` supports directly analyzing an instance of ``brainpy.dyn.DynamicalSystem``.
  137. .. code-block::
  138. >>> hh = bp.neurons.HH(1)
  139. >>> finder = bp.analysis.SlowPointFinder(hh, target_vars={'V': hh.V, 'm': hh.m, 'h': hh.h, 'n': hh.n})
  140. 5. ``brainpy.datasets`` supports MNIST, FashionMNIST, and other datasets.
  141. 6. Supports defining conductance-based neuron models``.
  142. .. code-block::
  143. >>> class HH(bp.dyn.CondNeuGroup):
  144. >>> def __init__(self, size):
  145. >>> super(HH, self).__init__(size)
  146. >>>
  147. >>> self.INa = channels.INa_HH1952(size, )
  148. >>> self.IK = channels.IK_HH1952(size, )
  149. >>> self.IL = channels.IL(size, E=-54.387, g_max=0.03)
  150. 7. ``brainpy.layers`` module provides commonly used models for DNN and reservoir computing.
  151. 8. Support composable definition of synaptic models by using ``TwoEndConn``\ , ``SynOut``\ , ``SynSTP`` and ``SynLTP``.
  152. .. code-block::
  153. >>> bp.synapses.Exponential(self.E, self.E, bp.conn.FixedProb(prob),
  154. >>> g_max=0.03 / scale, tau=5,
  155. >>> output=bp.synouts.COBA(E=0.),
  156. >>> stp=bp.synplast.STD())
  157. 9. Provide commonly used surrogate gradient function for spiking generation, including
  158. * ``brainpy.math.spike_with_sigmoid_grad``
  159. * ``brainpy.math.spike_with_linear_grad``
  160. * ``brainpy.math.spike_with_gaussian_grad``
  161. * ``brainpy.math.spike_with_mg_grad``
  162. 10. Provide shortcuts for GPU memory management via ``brainpy.math.disable_gpu_memory_preallocation()``\ , and ``brainpy.math.clear_buffer_memory()``.
  163. What's Changed
  164. ~~~~~~~~~~~~~~~~~~~~
  165. * fix `#207 <https://github.com/PKU-NIP-Lab/BrainPy/issues/207>`_\ : synapses update first, then neurons, finally delay variables by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#219 <https://github.com/PKU-NIP-Lab/BrainPy/pull/219>`_
  166. * docs: add logos by `@ztqakita <https://github.com/ztqakita>`_ in `#218 <https://github.com/PKU-NIP-Lab/BrainPy/pull/218>`_
  167. * Add the biological NMDA model by `@c-xy17 <https://github.com/c-xy17>`_ in `#221 <https://github.com/PKU-NIP-Lab/BrainPy/pull/221>`_
  168. * docs: fix mathjax problem by `@ztqakita <https://github.com/ztqakita>`_ in `#222 <https://github.com/PKU-NIP-Lab/BrainPy/pull/222>`_
  169. * Add the parameter R to the LIF model by `@c-xy17 <https://github.com/c-xy17>`_ in `#224 <https://github.com/PKU-NIP-Lab/BrainPy/pull/224>`_
  170. * new version of brainpy: V2.2.0-rc1 by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#226 <https://github.com/PKU-NIP-Lab/BrainPy/pull/226>`_
  171. * update training apis by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#227 <https://github.com/PKU-NIP-Lab/BrainPy/pull/227>`_
  172. * Update quickstart and the analysis module by `@c-xy17 <https://github.com/c-xy17>`_ in `#229 <https://github.com/PKU-NIP-Lab/BrainPy/pull/229>`_
  173. * Eseential updates for montors, analysis, losses, and examples by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#230 <https://github.com/PKU-NIP-Lab/BrainPy/pull/230>`_
  174. * add numpy op tests by `@ztqakita <https://github.com/ztqakita>`_ in `#231 <https://github.com/PKU-NIP-Lab/BrainPy/pull/231>`_
  175. * Integrated simulation, simulaton and analysis by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#232 <https://github.com/PKU-NIP-Lab/BrainPy/pull/232>`_
  176. * update docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#233 <https://github.com/PKU-NIP-Lab/BrainPy/pull/233>`_
  177. * unify ``brainpy.layers`` with other modules in ``brainpy.dyn`` by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#234 <https://github.com/PKU-NIP-Lab/BrainPy/pull/234>`_
  178. * fix bugs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#235 <https://github.com/PKU-NIP-Lab/BrainPy/pull/235>`_
  179. * update apis, docs, examples and others by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#236 <https://github.com/PKU-NIP-Lab/BrainPy/pull/236>`_
  180. * fixes by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#237 <https://github.com/PKU-NIP-Lab/BrainPy/pull/237>`_
  181. * fix: add dtype promotion = standard by `@ztqakita <https://github.com/ztqakita>`_ in `#239 <https://github.com/PKU-NIP-Lab/BrainPy/pull/239>`_
  182. * updates by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#240 <https://github.com/PKU-NIP-Lab/BrainPy/pull/240>`_
  183. * update training docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#241 <https://github.com/PKU-NIP-Lab/BrainPy/pull/241>`_
  184. * change doc path/organization by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#242 <https://github.com/PKU-NIP-Lab/BrainPy/pull/242>`_
  185. * Update advanced docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#243 <https://github.com/PKU-NIP-Lab/BrainPy/pull/243>`_
  186. * update quickstart docs & enable jit error checking by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#244 <https://github.com/PKU-NIP-Lab/BrainPy/pull/244>`_
  187. * update apis and examples by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#245 <https://github.com/PKU-NIP-Lab/BrainPy/pull/245>`_
  188. * update apis and tests by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#246 <https://github.com/PKU-NIP-Lab/BrainPy/pull/246>`_
  189. * Docs update and bugs fixed by `@ztqakita <https://github.com/ztqakita>`_ in `#247 <https://github.com/PKU-NIP-Lab/BrainPy/pull/247>`_
  190. * version 2.2.0 by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#248 <https://github.com/PKU-NIP-Lab/BrainPy/pull/248>`_
  191. * add norm and pooling & fix bugs in operators by `@ztqakita <https://github.com/ztqakita>`_ in `#249 <https://github.com/PKU-NIP-Lab/BrainPy/pull/249>`_
  192. **Full Changelog**: `V2.1.12...V2.2.0 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.12...V2.2.0>`_
  193. brainpy 2.1.x
  194. *************
  195. Version 2.1.12 (2022.05.17)
  196. ===========================
  197. Highlights
  198. ~~~~~~~~~~
  199. This release is excellent. We have made important improvements.
  200. 1. We provide dozens of random sampling in NumPy which are not
  201. supportted in JAX, such as ``brainpy.math.random.bernoulli``,
  202. ``brainpy.math.random.lognormal``, ``brainpy.math.random.binomial``,
  203. ``brainpy.math.random.chisquare``, ``brainpy.math.random.dirichlet``,
  204. ``brainpy.math.random.geometric``, ``brainpy.math.random.f``,
  205. ``brainpy.math.random.hypergeometric``,
  206. ``brainpy.math.random.logseries``,
  207. ``brainpy.math.random.multinomial``,
  208. ``brainpy.math.random.multivariate_normal``,
  209. ``brainpy.math.random.negative_binomial``,
  210. ``brainpy.math.random.noncentral_chisquare``,
  211. ``brainpy.math.random.noncentral_f``, ``brainpy.math.random.power``,
  212. ``brainpy.math.random.rayleigh``, ``brainpy.math.random.triangular``,
  213. ``brainpy.math.random.vonmises``, ``brainpy.math.random.wald``,
  214. ``brainpy.math.random.weibull``
  215. 2. make efficient checking on numerical values. Instead of direct
  216. ``id_tap()`` checking which has large overhead, currently
  217. ``brainpy.tools.check_erro_in_jit()`` is highly efficient.
  218. 3. Fix ``JaxArray`` operator errors on ``None``
  219. 4. improve oo-to-function transformation speeds
  220. 5. ``io`` works: ``.save_states()`` and ``.load_states()``
  221. What’s Changed
  222. ~~~~~~~~~~~~~~
  223. - support dtype setting in array interchange functions by
  224. [@chaoming0625](https://github.com/chaoming0625) in
  225. `#209 <https://github.com/PKU-NIP-Lab/BrainPy/pull/209>`__
  226. - fix `#144 <https://github.com/PKU-NIP-Lab/BrainPy/issues/144>`__:
  227. operations on None raise errors by
  228. [@chaoming0625](https://github.com/chaoming0625) in
  229. `#210 <https://github.com/PKU-NIP-Lab/BrainPy/pull/210>`__
  230. - add tests and new functions for random sampling by
  231. [@c-xy17](https://github.com/c-xy17) in
  232. `#213 <https://github.com/PKU-NIP-Lab/BrainPy/pull/213>`__
  233. - feat: fix ``io`` for brainpy.Base by
  234. [@chaoming0625](https://github.com/chaoming0625) in
  235. `#211 <https://github.com/PKU-NIP-Lab/BrainPy/pull/211>`__
  236. - update advanced tutorial documentation by
  237. [@chaoming0625](https://github.com/chaoming0625) in
  238. `#212 <https://github.com/PKU-NIP-Lab/BrainPy/pull/212>`__
  239. - fix `#149 <https://github.com/PKU-NIP-Lab/BrainPy/issues/149>`__
  240. (dozens of random samplings in NumPy) and fix JaxArray op errors by
  241. [@chaoming0625](https://github.com/chaoming0625) in
  242. `#216 <https://github.com/PKU-NIP-Lab/BrainPy/pull/216>`__
  243. - feat: efficient checking on numerical values by
  244. [@chaoming0625](https://github.com/chaoming0625) in
  245. `#217 <https://github.com/PKU-NIP-Lab/BrainPy/pull/217>`__
  246. **Full Changelog**:
  247. `V2.1.11...V2.1.12 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.11...V2.1.12>`__
  248. Version 2.1.11 (2022.05.15)
  249. ===========================
  250. What's Changed
  251. ~~~~~~~~~~~~~~
  252. * fix: cross-correlation bug by `@ztqakita <https://github.com/ztqakita>`_ in `#201 <https://github.com/PKU-NIP-Lab/BrainPy/pull/201>`_
  253. * update apis, test and docs of numpy ops by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#202 <https://github.com/PKU-NIP-Lab/BrainPy/pull/202>`_
  254. * docs: add sphinx_book_theme by `@ztqakita <https://github.com/ztqakita>`_ in `#203 <https://github.com/PKU-NIP-Lab/BrainPy/pull/203>`_
  255. * fix: add requirements-doc.txt by `@ztqakita <https://github.com/ztqakita>`_ in `#204 <https://github.com/PKU-NIP-Lab/BrainPy/pull/204>`_
  256. * update control flow, integrators, operators, and docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#205 <https://github.com/PKU-NIP-Lab/BrainPy/pull/205>`_
  257. * improve oo-to-function transformation speed by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#208 <https://github.com/PKU-NIP-Lab/BrainPy/pull/208>`_
  258. **Full Changelog**\ : `V2.1.10...V2.1.11 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.10...V2.1.11>`_
  259. Version 2.1.10 (2022.05.05)
  260. ===========================
  261. What's Changed
  262. ~~~~~~~~~~~~~~
  263. * update control flow APIs and Docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#192 <https://github.com/PKU-NIP-Lab/BrainPy/pull/192>`_
  264. * doc: update docs of dynamics simulation by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#193 <https://github.com/PKU-NIP-Lab/BrainPy/pull/193>`_
  265. * fix `#125 <https://github.com/PKU-NIP-Lab/BrainPy/issues/125>`_: add channel models and two-compartment Pinsky-Rinzel model by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#194 <https://github.com/PKU-NIP-Lab/BrainPy/pull/194>`_
  266. * JIT errors do not change Variable values by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#195 <https://github.com/PKU-NIP-Lab/BrainPy/pull/195>`_
  267. * fix a bug in math.activations.py by `@c-xy17 <https://github.com/c-xy17>`_ in `#196 <https://github.com/PKU-NIP-Lab/BrainPy/pull/196>`_
  268. * Functionalinaty improvements by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#197 <https://github.com/PKU-NIP-Lab/BrainPy/pull/197>`_
  269. * update rate docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#198 <https://github.com/PKU-NIP-Lab/BrainPy/pull/198>`_
  270. * update brainpy.dyn doc by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#199 <https://github.com/PKU-NIP-Lab/BrainPy/pull/199>`_
  271. **Full Changelog**\ : `V2.1.8...V2.1.10 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.8...V2.1.10>`_
  272. Version 2.1.8 (2022.04.26)
  273. ==========================
  274. What's Changed
  275. ~~~~~~~~~~~~~~
  276. * Fix `#120 <https://github.com/PKU-NIP-Lab/BrainPy/issues/120>`_ by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#178 <https://github.com/PKU-NIP-Lab/BrainPy/pull/178>`_
  277. * feat: brainpy.Collector supports addition and subtraction by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#179 <https://github.com/PKU-NIP-Lab/BrainPy/pull/179>`_
  278. * feat: delay variables support "indices" and "reset()" function by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#180 <https://github.com/PKU-NIP-Lab/BrainPy/pull/180>`_
  279. * Support reset functions in neuron and synapse models by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#181 <https://github.com/PKU-NIP-Lab/BrainPy/pull/181>`_
  280. * ``update()`` function on longer need ``_t`` and ``_dt`` by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#183 <https://github.com/PKU-NIP-Lab/BrainPy/pull/183>`_
  281. * small updates by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#188 <https://github.com/PKU-NIP-Lab/BrainPy/pull/188>`_
  282. * feat: easier control flows with ``brainpy.math.ifelse`` by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#189 <https://github.com/PKU-NIP-Lab/BrainPy/pull/189>`_
  283. * feat: update delay couplings of ``DiffusiveCoupling`` and ``AdditiveCouping`` by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#190 <https://github.com/PKU-NIP-Lab/BrainPy/pull/190>`_
  284. * update version and changelog by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#191 <https://github.com/PKU-NIP-Lab/BrainPy/pull/191>`_
  285. **Full Changelog**\ : `V2.1.7...V2.1.8 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.7...V2.1.8>`_
  286. Version 2.1.7 (2022.04.22)
  287. ==========================
  288. What's Changed
  289. ~~~~~~~~~~~~~~
  290. * synapse models support heterogeneuos weights by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#170 <https://github.com/PKU-NIP-Lab/BrainPy/pull/170>`_
  291. * more efficient synapse implementation by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#171 <https://github.com/PKU-NIP-Lab/BrainPy/pull/171>`_
  292. * fix input models in brainpy.dyn by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#172 <https://github.com/PKU-NIP-Lab/BrainPy/pull/172>`_
  293. * fix: np array astype by `@ztqakita <https://github.com/ztqakita>`_ in `#173 <https://github.com/PKU-NIP-Lab/BrainPy/pull/173>`_
  294. * update README: 'brain-py' to 'brainpy' by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#174 <https://github.com/PKU-NIP-Lab/BrainPy/pull/174>`_
  295. * fix: fix the updating rules in the STP model by `@c-xy17 <https://github.com/c-xy17>`_ in `#176 <https://github.com/PKU-NIP-Lab/BrainPy/pull/176>`_
  296. * Updates and fixes by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#177 <https://github.com/PKU-NIP-Lab/BrainPy/pull/177>`_
  297. **Full Changelog**\ : `V2.1.5...V2.1.7 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.5...V2.1.7>`_
  298. Version 2.1.5 (2022.04.18)
  299. ==========================
  300. What's Changed
  301. ~~~~~~~~~~~~~~
  302. * ``brainpy.math.random.shuffle`` is numpy like by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#153 <https://github.com/PKU-NIP-Lab/BrainPy/pull/153>`_
  303. * update LICENSE by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#155 <https://github.com/PKU-NIP-Lab/BrainPy/pull/155>`_
  304. * docs: add m1 warning by `@ztqakita <https://github.com/ztqakita>`_ in `#154 <https://github.com/PKU-NIP-Lab/BrainPy/pull/154>`_
  305. * compatible apis of 'brainpy.math' with those of 'jax.numpy' in most modules by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#156 <https://github.com/PKU-NIP-Lab/BrainPy/pull/156>`_
  306. * Important updates by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#157 <https://github.com/PKU-NIP-Lab/BrainPy/pull/157>`_
  307. * Updates by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#159 <https://github.com/PKU-NIP-Lab/BrainPy/pull/159>`_
  308. * Add LayerNorm, GroupNorm, and InstanceNorm as nn_nodes in normalization.py by `@c-xy17 <https://github.com/c-xy17>`_ in `#162 <https://github.com/PKU-NIP-Lab/BrainPy/pull/162>`_
  309. * feat: add conv & pooling nodes by `@ztqakita <https://github.com/ztqakita>`_ in `#161 <https://github.com/PKU-NIP-Lab/BrainPy/pull/161>`_
  310. * fix: update setup.py by `@ztqakita <https://github.com/ztqakita>`_ in `#163 <https://github.com/PKU-NIP-Lab/BrainPy/pull/163>`_
  311. * update setup.py by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#165 <https://github.com/PKU-NIP-Lab/BrainPy/pull/165>`_
  312. * fix: change trigger condition by `@ztqakita <https://github.com/ztqakita>`_ in `#166 <https://github.com/PKU-NIP-Lab/BrainPy/pull/166>`_
  313. * fix: add build_conn() function by `@ztqakita <https://github.com/ztqakita>`_ in `#164 <https://github.com/PKU-NIP-Lab/BrainPy/pull/164>`_
  314. * update synapses by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#167 <https://github.com/PKU-NIP-Lab/BrainPy/pull/167>`_
  315. * get the deserved name: brainpy by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#168 <https://github.com/PKU-NIP-Lab/BrainPy/pull/168>`_
  316. * update tests by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#169 <https://github.com/PKU-NIP-Lab/BrainPy/pull/169>`_
  317. **Full Changelog**\ : `V2.1.4...V2.1.5 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.4...V2.1.5>`_
  318. Version 2.1.4 (2022.04.04)
  319. ==========================
  320. What's Changed
  321. ~~~~~~~~~~~~~~
  322. * fix doc parsing bug by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#127 <https://github.com/PKU-NIP-Lab/BrainPy/pull/127>`_
  323. * Update overview_of_dynamic_model.ipynb by `@c-xy17 <https://github.com/c-xy17>`_ in `#129 <https://github.com/PKU-NIP-Lab/BrainPy/pull/129>`_
  324. * Reorganization of ``brainpylib.custom_op`` and adding interface in ``brainpy.math`` by `@ztqakita <https://github.com/ztqakita>`_ in `#128 <https://github.com/PKU-NIP-Lab/BrainPy/pull/128>`_
  325. * Fix: modify ``register_op`` and brainpy.math interface by `@ztqakita <https://github.com/ztqakita>`_ in `#130 <https://github.com/PKU-NIP-Lab/BrainPy/pull/130>`_
  326. * new features about RNN training and delay differential equations by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#132 <https://github.com/PKU-NIP-Lab/BrainPy/pull/132>`_
  327. * Fix `#123 <https://github.com/PKU-NIP-Lab/BrainPy/issues/123>`_\ : Add low-level operators docs and modify register_op by `@ztqakita <https://github.com/ztqakita>`_ in `#134 <https://github.com/PKU-NIP-Lab/BrainPy/pull/134>`_
  328. * feat: add generate_changelog by `@ztqakita <https://github.com/ztqakita>`_ in `#135 <https://github.com/PKU-NIP-Lab/BrainPy/pull/135>`_
  329. * fix `#133 <https://github.com/PKU-NIP-Lab/BrainPy/issues/133>`_\ , support batch size training with offline algorithms by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#136 <https://github.com/PKU-NIP-Lab/BrainPy/pull/136>`_
  330. * fix `#84 <https://github.com/PKU-NIP-Lab/BrainPy/issues/84>`_\ : support online training algorithms by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#137 <https://github.com/PKU-NIP-Lab/BrainPy/pull/137>`_
  331. * feat: add the batch normalization node by `@c-xy17 <https://github.com/c-xy17>`_ in `#138 <https://github.com/PKU-NIP-Lab/BrainPy/pull/138>`_
  332. * fix: fix shape checking error by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#139 <https://github.com/PKU-NIP-Lab/BrainPy/pull/139>`_
  333. * solve `#131 <https://github.com/PKU-NIP-Lab/BrainPy/issues/131>`_\ , support efficient synaptic computation for special connection types by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#140 <https://github.com/PKU-NIP-Lab/BrainPy/pull/140>`_
  334. * feat: update the API and test for batch normalization by `@c-xy17 <https://github.com/c-xy17>`_ in `#142 <https://github.com/PKU-NIP-Lab/BrainPy/pull/142>`_
  335. * Node is default trainable by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#143 <https://github.com/PKU-NIP-Lab/BrainPy/pull/143>`_
  336. * Updates training apis and docs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#145 <https://github.com/PKU-NIP-Lab/BrainPy/pull/145>`_
  337. * fix: add dependencies and update version by `@ztqakita <https://github.com/ztqakita>`_ in `#147 <https://github.com/PKU-NIP-Lab/BrainPy/pull/147>`_
  338. * update requirements by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#146 <https://github.com/PKU-NIP-Lab/BrainPy/pull/146>`_
  339. * data pass of the Node is default SingleData by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#148 <https://github.com/PKU-NIP-Lab/BrainPy/pull/148>`_
  340. **Full Changelog**\ : `V2.1.3...V2.1.4 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.3...V2.1.4>`_
  341. Version 2.1.3 (2022.03.27)
  342. ==========================
  343. This release improves the functionality and usability of BrainPy. Core changes include
  344. * support customization of low-level operators by using Numba
  345. * fix bugs
  346. What's Changed
  347. ~~~~~~~~~~~~~~
  348. * Provide custom operators written in numba for jax jit by `@ztqakita <https://github.com/ztqakita>`_ in `#122 <https://github.com/PKU-NIP-Lab/BrainPy/pull/122>`_
  349. * fix DOGDecay bugs, add more features by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#124 <https://github.com/PKU-NIP-Lab/BrainPy/pull/124>`_
  350. * fix bugs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#126 <https://github.com/PKU-NIP-Lab/BrainPy/pull/126>`_
  351. **Full Changelog** : `V2.1.2...V2.1.3 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.2...V2.1.3>`_
  352. Version 2.1.2 (2022.03.23)
  353. ==========================
  354. This release improves the functionality and usability of BrainPy. Core changes include
  355. - support rate-based whole-brain modeling
  356. - add more neuron models, including rate neurons/synapses
  357. - support Python 3.10
  358. - improve delays etc. APIs
  359. What's Changed
  360. ~~~~~~~~~~~~~~
  361. * fix matplotlib dependency on "brainpy.analysis" module by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#110 <https://github.com/PKU-NIP-Lab/BrainPy/pull/110>`_
  362. * Sync master to brainpy-2.x branch by `@ztqakita <https://github.com/ztqakita>`_ in `#111 <https://github.com/PKU-NIP-Lab/BrainPy/pull/111>`_
  363. * add py3.6 test & delete multiple macos env by `@ztqakita <https://github.com/ztqakita>`_ in `#112 <https://github.com/PKU-NIP-Lab/BrainPy/pull/112>`_
  364. * Modify ci by `@ztqakita <https://github.com/ztqakita>`_ in `#113 <https://github.com/PKU-NIP-Lab/BrainPy/pull/113>`_
  365. * Add py3.10 test by `@ztqakita <https://github.com/ztqakita>`_ in `#115 <https://github.com/PKU-NIP-Lab/BrainPy/pull/115>`_
  366. * update python version by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#114 <https://github.com/PKU-NIP-Lab/BrainPy/pull/114>`_
  367. * add brainpylib mac py3.10 by `@ztqakita <https://github.com/ztqakita>`_ in `#116 <https://github.com/PKU-NIP-Lab/BrainPy/pull/116>`_
  368. * Enhance measure/input/brainpylib by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#117 <https://github.com/PKU-NIP-Lab/BrainPy/pull/117>`_
  369. * fix `#105 <https://github.com/PKU-NIP-Lab/BrainPy/issues/105>`_\ : Add customize connections docs by `@ztqakita <https://github.com/ztqakita>`_ in `#118 <https://github.com/PKU-NIP-Lab/BrainPy/pull/118>`_
  370. * fix bugs by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#119 <https://github.com/PKU-NIP-Lab/BrainPy/pull/119>`_
  371. * Whole brain modeling by `@chaoming0625 <https://github.com/chaoming0625>`_ in `#121 <https://github.com/PKU-NIP-Lab/BrainPy/pull/121>`_
  372. **Full Changelog**: `V2.1.1...V2.1.2 <https://github.com/PKU-NIP-Lab/BrainPy/compare/V2.1.1...V2.1.2>`_
  373. Version 2.1.1 (2022.03.18)
  374. ==========================
  375. This release continues to update the functionality of BrainPy. Core changes include
  376. - numerical solvers for fractional differential equations
  377. - more standard ``brainpy.nn`` interfaces
  378. New Features
  379. ~~~~~~~~~~~~
  380. - Numerical solvers for fractional differential equations
  381. - ``brainpy.fde.CaputoEuler``
  382. - ``brainpy.fde.CaputoL1Schema``
  383. - ``brainpy.fde.GLShortMemory``
  384. - Fractional neuron models
  385. - ``brainpy.dyn.FractionalFHR``
  386. - ``brainpy.dyn.FractionalIzhikevich``
  387. - support ``shared_kwargs`` in `RNNTrainer` and `RNNRunner`
  388. Version 2.1.0 (2022.03.14)
  389. ==========================
  390. Highlights
  391. ~~~~~~~~~~
  392. We are excited to announce the release of BrainPy 2.1.0. This release is composed of nearly
  393. 270 commits since 2.0.2, made by `Chaoming Wang <https://github.com/chaoming0625>`_,
  394. `Xiaoyu Chen <mailto:c-xy17@tsinghua.org.cn>`_, and `Tianqiu Zhang <mailto:tianqiuakita@gmail.com>`_ .
  395. BrainPy 2.1.0 updates are focused on improving usability, functionality, and stability of BrainPy.
  396. Highlights of version 2.1.0 include:
  397. - New module ``brainpy.dyn`` for dynamics building and simulation. It is composed of many
  398. neuron models, synapse models, and others.
  399. - New module ``brainpy.nn`` for neural network building and training. It supports to
  400. define reservoir models, artificial neural networks, ridge regression training,
  401. and back-propagation through time training.
  402. - New module ``brainpy.datasets`` for convenient dataset construction and initialization.
  403. - New module ``brainpy.integrators.dde`` for numerical integration of delay differential equations.
  404. - Add more numpy-like operators in ``brainpy.math`` module.
  405. - Add automatic continuous integration on Linux, Windows, and MacOS platforms.
  406. - Fully update brainpy documentation.
  407. - Fix bugs on ``brainpy.analysis`` and ``brainpy.math.autograd``
  408. Incompatible changes
  409. ~~~~~~~~~~~~~~~~~~~~
  410. - Remove ``brainpy.math.numpy`` module.
  411. - Remove numba requirements
  412. - Remove matplotlib requirements
  413. - Remove `steps` in ``brainpy.dyn.DynamicalSystem``
  414. - Remove travis CI
  415. New Features
  416. ~~~~~~~~~~~~
  417. - ``brainpy.ddeint`` for numerical integration of delay differential equations,
  418. the supported methods include:
  419. - Euler
  420. - MidPoint
  421. - Heun2
  422. - Ralston2
  423. - RK2
  424. - RK3
  425. - Heun3
  426. - Ralston3
  427. - SSPRK3
  428. - RK4
  429. - Ralston4
  430. - RK4Rule38
  431. - set default int/float/complex types
  432. - ``brainpy.math.set_dfloat()``
  433. - ``brainpy.math.set_dint()``
  434. - ``brainpy.math.set_dcomplex()``
  435. - Delay variables
  436. - ``brainpy.math.FixedLenDelay``
  437. - ``brainpy.math.NeutralDelay``
  438. - Dedicated operators
  439. - ``brainpy.math.sparse_matmul()``
  440. - More numpy-like operators
  441. - Neural network building ``brainpy.nn``
  442. - Dynamics model building and simulation ``brainpy.dyn``
  443. Version 2.0.2 (2022.02.11)
  444. ==========================
  445. There are important updates by `Chaoming Wang <https://github.com/chaoming0625>`_
  446. in BrainPy 2.0.2.
  447. - provide ``pre2post_event_prod`` operator
  448. - support array creation from a list/tuple of JaxArray in ``brainpy.math.asarray`` and ``brainpy.math.array``
  449. - update ``brainpy.ConstantDelay``, add ``.latest`` and ``.oldest`` attributes
  450. - add ``brainpy.IntegratorRunner`` support for efficient simulation of brainpy integrators
  451. - support auto finding of RandomState when JIT SDE integrators
  452. - fix bugs in SDE ``exponential_euler`` method
  453. - move ``parallel`` running APIs into ``brainpy.simulation``
  454. - add ``brainpy.math.syn2post_mean``, ``brainpy.math.syn2post_softmax``,
  455. ``brainpy.math.pre2post_mean`` and ``brainpy.math.pre2post_softmax`` operators
  456. Version 2.0.1 (2022.01.31)
  457. ==========================
  458. Today we release BrainPy 2.0.1. This release is composed of over
  459. 70 commits since 2.0.0, made by `Chaoming Wang <https://github.com/chaoming0625>`_,
  460. `Xiaoyu Chen <mailto:c-xy17@tsinghua.org.cn>`_, and
  461. `Tianqiu Zhang <mailto:tianqiuakita@gmail.com>`_ .
  462. BrainPy 2.0.0 updates are focused on improving documentation and operators.
  463. Core changes include:
  464. - Improve ``brainpylib`` operators
  465. - Complete documentation for programming system
  466. - Add more numpy APIs
  467. - Add ``jaxfwd`` in autograd module
  468. - And other changes
  469. Version 2.0.0.1 (2022.01.05)
  470. ============================
  471. - Add progress bar in ``brainpy.StructRunner``
  472. Version 2.0.0 (2021.12.31)
  473. ==========================
  474. Start a new version of BrainPy.
  475. Highlight
  476. ~~~~~~~~~
  477. We are excited to announce the release of BrainPy 2.0.0. This release is composed of over
  478. 260 commits since 1.1.7, made by `Chaoming Wang <https://github.com/chaoming0625>`_,
  479. `Xiaoyu Chen <mailto:c-xy17@tsinghua.org.cn>`_, and `Tianqiu Zhang <mailto:tianqiuakita@gmail.com>`_ .
  480. BrainPy 2.0.0 updates are focused on improving performance, usability and consistence of BrainPy.
  481. All the computations are migrated into JAX. Model ``building``, ``simulation``, ``training``
  482. and ``analysis`` are all based on JAX. Highlights of version 2.0.0 include:
  483. - `brainpylib <https://pypi.org/project/brainpylib/>`_ are provided to dedicated operators for
  484. brain dynamics programming
  485. - Connection APIs in ``brainpy.conn`` module are more efficient.
  486. - Update analysis tools for low-dimensional and high-dimensional systems in ``brainpy.analysis`` module.
  487. - Support more general Exponential Euler methods based on automatic differentiation.
  488. - Improve the usability and consistence of ``brainpy.math`` module.
  489. - Remove JIT compilation based on Numba.
  490. - Separate brain building with brain simulation.
  491. Incompatible changes
  492. ~~~~~~~~~~~~~~~~~~~~
  493. - remove ``brainpy.math.use_backend()``
  494. - remove ``brainpy.math.numpy`` module
  495. - no longer support ``.run()`` in ``brainpy.DynamicalSystem`` (see New Features)
  496. - remove ``brainpy.analysis.PhasePlane`` (see New Features)
  497. - remove ``brainpy.analysis.Bifurcation`` (see New Features)
  498. - remove ``brainpy.analysis.FastSlowBifurcation`` (see New Features)
  499. New Features
  500. ~~~~~~~~~~~~
  501. - Exponential Euler method based on automatic differentiation
  502. - ``brainpy.ode.ExpEulerAuto``
  503. - Numerical optimization based low-dimensional analyzers:
  504. - ``brainpy.analysis.PhasePlane1D``
  505. - ``brainpy.analysis.PhasePlane2D``
  506. - ``brainpy.analysis.Bifurcation1D``
  507. - ``brainpy.analysis.Bifurcation2D``
  508. - ``brainpy.analysis.FastSlow1D``
  509. - ``brainpy.analysis.FastSlow2D``
  510. - Numerical optimization based high-dimensional analyzer:
  511. - ``brainpy.analysis.SlowPointFinder``
  512. - Dedicated operators in ``brainpy.math`` module:
  513. - ``brainpy.math.pre2post_event_sum``
  514. - ``brainpy.math.pre2post_sum``
  515. - ``brainpy.math.pre2post_prod``
  516. - ``brainpy.math.pre2post_max``
  517. - ``brainpy.math.pre2post_min``
  518. - ``brainpy.math.pre2syn``
  519. - ``brainpy.math.syn2post``
  520. - ``brainpy.math.syn2post_prod``
  521. - ``brainpy.math.syn2post_max``
  522. - ``brainpy.math.syn2post_min``
  523. - Conversion APIs in ``brainpy.math`` module:
  524. - ``brainpy.math.as_device_array()``
  525. - ``brainpy.math.as_variable()``
  526. - ``brainpy.math.as_jaxarray()``
  527. - New autograd APIs in ``brainpy.math`` module:
  528. - ``brainpy.math.vector_grad()``
  529. - Simulation runners:
  530. - ``brainpy.ReportRunner``
  531. - ``brainpy.StructRunner``
  532. - ``brainpy.NumpyRunner``
  533. - Commonly used models in ``brainpy.models`` module
  534. - ``brainpy.models.LIF``
  535. - ``brainpy.models.Izhikevich``
  536. - ``brainpy.models.AdExIF``
  537. - ``brainpy.models.SpikeTimeInput``
  538. - ``brainpy.models.PoissonInput``
  539. - ``brainpy.models.DeltaSynapse``
  540. - ``brainpy.models.ExpCUBA``
  541. - ``brainpy.models.ExpCOBA``
  542. - ``brainpy.models.AMPA``
  543. - ``brainpy.models.GABAa``
  544. - Naming cache clean: ``brainpy.clear_name_cache``
  545. - add safe in-place operations of ``update()`` method and ``.value`` assignment for JaxArray
  546. Documentation
  547. ~~~~~~~~~~~~~
  548. - Complete tutorials for quickstart
  549. - Complete tutorials for dynamics building
  550. - Complete tutorials for dynamics simulation
  551. - Complete tutorials for dynamics training
  552. - Complete tutorials for dynamics analysis
  553. - Complete tutorials for API documentation
  554. brainpy 1.1.x
  555. *************
  556. If you are using ``brainpy==1.x``, you can find *documentation*, *examples*, and *models* through the following links:
  557. - **Documentation:** https://brainpy.readthedocs.io/en/brainpy-1.x/
  558. - **Examples from papers**: https://brainpy-examples.readthedocs.io/en/brainpy-1.x/
  559. - **Canonical brain models**: https://brainmodels.readthedocs.io/en/brainpy-1.x/
  560. Version 1.1.7 (2021.12.13)
  561. ==========================
  562. - fix bugs on ``numpy_array()`` conversion in `brainpy.math.utils` module
  563. Version 1.1.5 (2021.11.17)
  564. ==========================
  565. **API changes:**
  566. - fix bugs on ndarray import in `brainpy.base.function.py`
  567. - convenient 'get_param' interface `brainpy.simulation.layers`
  568. - add more weight initialization methods
  569. **Doc changes:**
  570. - add more examples in README
  571. Version 1.1.4
  572. =============
  573. **API changes:**
  574. - add ``.struct_run()`` in DynamicalSystem
  575. - add ``numpy_array()`` conversion in `brainpy.math.utils` module
  576. - add ``Adagrad``, ``Adadelta``, ``RMSProp`` optimizers
  577. - remove `setting` methods in `brainpy.math.jax` module
  578. - remove import jax in `brainpy.__init__.py` and enable jax setting, including
  579. - ``enable_x64()``
  580. - ``set_platform()``
  581. - ``set_host_device_count()``
  582. - enable ``b=None`` as no bias in `brainpy.simulation.layers`
  583. - set `int_` and `float_` as default 32 bits
  584. - remove ``dtype`` setting in Initializer constructor
  585. **Doc changes:**
  586. - add ``optimizer`` in "Math Foundation"
  587. - add ``dynamics training`` docs
  588. - improve others
  589. Version 1.1.3
  590. =============
  591. - fix bugs of JAX parallel API imports
  592. - fix bugs of `post_slice` structure construction
  593. - update docs
  594. Version 1.1.2
  595. =============
  596. - add ``pre2syn`` and ``syn2post`` operators
  597. - add `verbose` and `check` option to ``Base.load_states()``
  598. - fix bugs on JIT DynamicalSystem (numpy backend)
  599. Version 1.1.1
  600. =============
  601. - fix bugs on symbolic analysis: model trajectory
  602. - change `absolute` access in the variable saving and loading to the `relative` access
  603. - add UnexpectedTracerError hints in JAX transformation functions
  604. Version 1.1.0 (2021.11.08)
  605. ==========================
  606. This package releases a new version of BrainPy.
  607. Highlights of core changes:
  608. ``math`` module
  609. ~~~~~~~~~~~~~~~
  610. - support numpy backend
  611. - support JAX backend
  612. - support ``jit``, ``vmap`` and ``pmap`` on class objects on JAX backend
  613. - support ``grad``, ``jacobian``, ``hessian`` on class objects on JAX backend
  614. - support ``make_loop``, ``make_while``, and ``make_cond`` on JAX backend
  615. - support ``jit`` (based on numba) on class objects on numpy backend
  616. - unified numpy-like ndarray operation APIs
  617. - numpy-like random sampling APIs
  618. - FFT functions
  619. - gradient descent optimizers
  620. - activation functions
  621. - loss function
  622. - backend settings
  623. ``base`` module
  624. ~~~~~~~~~~~~~~~
  625. - ``Base`` for whole Version ecosystem
  626. - ``Function`` to wrap functions
  627. - ``Collector`` and ``TensorCollector`` to collect variables, integrators, nodes and others
  628. ``integrators`` module
  629. ~~~~~~~~~~~~~~~~~~~~~~
  630. - class integrators for ODE numerical methods
  631. - class integrators for SDE numerical methods
  632. ``simulation`` module
  633. ~~~~~~~~~~~~~~~~~~~~~
  634. - support modular and composable programming
  635. - support multi-scale modeling
  636. - support large-scale modeling
  637. - support simulation on GPUs
  638. - fix bugs on ``firing_rate()``
  639. - remove ``_i`` in ``update()`` function, replace ``_i`` with ``_dt``,
  640. meaning the dynamic system has the canonic equation form
  641. of :math:`dx/dt = f(x, t, dt)`
  642. - reimplement the ``input_step`` and ``monitor_step`` in a more intuitive way
  643. - support to set `dt` in the single object level (i.e., single instance of DynamicSystem)
  644. - common used DNN layers
  645. - weight initializations
  646. - refine synaptic connections
  647. brainpy 1.0.x
  648. *************
  649. Version 1.0.3 (2021.08.18)
  650. ==========================
  651. Fix bugs on
  652. - firing rate measurement
  653. - stability analysis
  654. Version 1.0.2
  655. =============
  656. This release continues to improve the user-friendliness.
  657. Highlights of core changes:
  658. * Remove support for Numba-CUDA backend
  659. * Super initialization `super(XXX, self).__init__()` can be done at anywhere
  660. (not required to add at the bottom of the `__init__()` function).
  661. * Add the output message of the step function running error.
  662. * More powerful support for Monitoring
  663. * More powerful support for running order scheduling
  664. * Remove `unsqueeze()` and `squeeze()` operations in ``brainpy.ops``
  665. * Add `reshape()` operation in ``brainpy.ops``
  666. * Improve docs for numerical solvers
  667. * Improve tests for numerical solvers
  668. * Add keywords checking in ODE numerical solvers
  669. * Add more unified operations in brainpy.ops
  670. * Support "@every" in steps and monitor functions
  671. * Fix ODE solver bugs for class bounded function
  672. * Add build phase in Monitor
  673. Version 1.0.1
  674. =============
  675. - Fix bugs
  676. Version 1.0.0
  677. =============
  678. - **NEW VERSION OF BRAINPY**
  679. - Change the coding style into the object-oriented programming
  680. - Systematically improve the documentation
  681. brainpy 0.x
  682. ***********
  683. Version 0.3.5
  684. =============
  685. - Add 'timeout' in sympy solver in neuron dynamics analysis
  686. - Reconstruct and generalize phase plane analysis
  687. - Generalize the repeat mode of ``Network`` to different running duration between two runs
  688. - Update benchmarks
  689. - Update detailed documentation
  690. Version 0.3.1
  691. =============
  692. - Add a more flexible way for NeuState/SynState initialization
  693. - Fix bugs of "is_multi_return"
  694. - Add "hand_overs", "requires" and "satisfies".
  695. - Update documentation
  696. - Auto-transform `range` to `numba.prange`
  697. - Support `_obj_i`, `_pre_i`, `_post_i` for more flexible operation in scalar-based models
  698. Version 0.3.0
  699. =============
  700. Computation API
  701. ~~~~~~~~~~~~~~~
  702. - Rename "brainpy.numpy" to "brainpy.backend"
  703. - Delete "pytorch", "tensorflow" backends
  704. - Add "numba" requirement
  705. - Add GPU support
  706. Profile setting
  707. ~~~~~~~~~~~~~~~
  708. - Delete "backend" profile setting, add "jit"
  709. Core systems
  710. ~~~~~~~~~~~~
  711. - Delete "autopepe8" requirement
  712. - Delete the format code prefix
  713. - Change keywords "_t_, _dt_, _i_" to "_t, _dt, _i"
  714. - Change the "ST" declaration out of "requires"
  715. - Add "repeat" mode run in Network
  716. - Change "vector-based" to "mode" in NeuType and SynType definition
  717. Package installation
  718. ~~~~~~~~~~~~~~~~~~~~
  719. - Remove "pypi" installation, installation now only rely on "conda"
  720. Version 0.2.4
  721. =============
  722. API changes
  723. ~~~~~~~~~~~
  724. - Fix bugs
  725. Version 0.2.3
  726. =============
  727. API changes
  728. ~~~~~~~~~~~
  729. - Add "animate_1D" in ``visualization`` module
  730. - Add "PoissonInput", "SpikeTimeInput" and "FreqInput" in ``inputs`` module
  731. - Update phase_portrait_analyzer.py
  732. Models and examples
  733. ~~~~~~~~~~~~~~~~~~~
  734. - Add CANN examples
  735. Version 0.2.2
  736. =============
  737. API changes
  738. ~~~~~~~~~~~
  739. - Redesign visualization
  740. - Redesign connectivity
  741. - Update docs
  742. Version 0.2.1
  743. =============
  744. API changes
  745. ~~~~~~~~~~~
  746. - Fix bugs in `numba import`
  747. - Fix bugs in `numpy` mode with `scalar` model
  748. Version 0.2.0
  749. =============
  750. API changes
  751. ~~~~~~~~~~~
  752. - For computation: ``numpy``, ``numba``
  753. - For model definition: ``NeuType``, ``SynConn``
  754. - For model running: ``Network``, ``NeuGroup``, ``SynConn``, ``Runner``
  755. - For numerical integration: ``integrate``, ``Integrator``, ``DiffEquation``
  756. - For connectivity: ``One2One``, ``All2All``, ``GridFour``, ``grid_four``,
  757. ``GridEight``, ``grid_eight``, ``GridN``, ``FixedPostNum``, ``FixedPreNum``,
  758. ``FixedProb``, ``GaussianProb``, ``GaussianWeight``, ``DOG``
  759. - For visualization: ``plot_value``, ``plot_potential``, ``plot_raster``,
  760. ``animation_potential``
  761. - For measurement: ``cross_correlation``, ``voltage_fluctuation``,
  762. ``raster_plot``, ``firing_rate``
  763. - For inputs: ``constant_current``, ``spike_current``, ``ramp_current``.
  764. Models and examples
  765. ~~~~~~~~~~~~~~~~~~~
  766. - Neuron models: ``HH model``, ``LIF model``, ``Izhikevich model``
  767. - Synapse models: ``AMPA``, ``GABA``, ``NMDA``, ``STP``, ``GapJunction``
  768. - Network models: ``gamma oscillation``