braintools 0.2.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. {braintools-0.2.0 → braintools-0.4.0}/PKG-INFO +62 -15
  2. braintools-0.4.0/README.md +113 -0
  3. braintools-0.4.0/braintools/__init__.py +106 -0
  4. braintools-0.4.0/braintools/__init___test.py +292 -0
  5. braintools-0.4.0/braintools/_deprecation.py +393 -0
  6. braintools-0.4.0/braintools/_deprecation_test.py +402 -0
  7. {braintools-0.2.0 → braintools-0.4.0}/braintools/_misc.py +17 -1
  8. braintools-0.4.0/braintools/_misc_test.py +110 -0
  9. {braintools-0.2.0 → braintools-0.4.0}/braintools/_version.py +1 -1
  10. braintools-0.4.0/braintools/analysis/__init__.py +107 -0
  11. braintools-0.4.0/braintools/analysis/field/__init__.py +43 -0
  12. braintools-0.4.0/braintools/analysis/field/_lfp.py +274 -0
  13. braintools-0.4.0/braintools/analysis/field/_lfp_test.py +160 -0
  14. braintools-0.4.0/braintools/analysis/graph/__init__.py +82 -0
  15. braintools-0.4.0/braintools/analysis/graph/_graph.py +1244 -0
  16. braintools-0.4.0/braintools/analysis/graph/_graph_test.py +876 -0
  17. braintools-0.4.0/braintools/analysis/population/__init__.py +88 -0
  18. braintools-0.4.0/braintools/analysis/population/_correlation.py +295 -0
  19. braintools-0.4.0/braintools/analysis/population/_correlation_test.py +305 -0
  20. braintools-0.4.0/braintools/analysis/population/_decoding.py +275 -0
  21. braintools-0.4.0/braintools/analysis/population/_decoding_test.py +212 -0
  22. braintools-0.4.0/braintools/analysis/population/_dimensionality.py +652 -0
  23. braintools-0.4.0/braintools/analysis/population/_dimensionality_test.py +515 -0
  24. braintools-0.4.0/braintools/analysis/population/_dynamics.py +559 -0
  25. braintools-0.4.0/braintools/analysis/population/_dynamics_test.py +453 -0
  26. braintools-0.4.0/braintools/analysis/population/_information.py +180 -0
  27. braintools-0.4.0/braintools/analysis/population/_information_test.py +167 -0
  28. braintools-0.4.0/braintools/analysis/spectral/__init__.py +81 -0
  29. {braintools-0.2.0/braintools/metric → braintools-0.4.0/braintools/analysis/spectral}/_lfp.py +48 -255
  30. {braintools-0.2.0/braintools/metric → braintools-0.4.0/braintools/analysis/spectral}/_lfp_test.py +89 -133
  31. braintools-0.4.0/braintools/analysis/spectral/_spectral.py +1131 -0
  32. braintools-0.4.0/braintools/analysis/spectral/_spectral_test.py +539 -0
  33. braintools-0.4.0/braintools/analysis/spike/__init__.py +115 -0
  34. braintools-0.4.0/braintools/analysis/spike/_correlation.py +158 -0
  35. braintools-0.4.0/braintools/analysis/spike/_correlation_test.py +182 -0
  36. braintools-0.4.0/braintools/analysis/spike/_correlogram.py +282 -0
  37. braintools-0.4.0/braintools/analysis/spike/_correlogram_test.py +288 -0
  38. braintools-0.4.0/braintools/analysis/spike/_distance.py +550 -0
  39. braintools-0.4.0/braintools/analysis/spike/_distance_test.py +311 -0
  40. braintools-0.4.0/braintools/analysis/spike/_firings.py +1091 -0
  41. braintools-0.4.0/braintools/analysis/spike/_firings_test.py +1235 -0
  42. braintools-0.4.0/braintools/analysis/spike/_isi.py +526 -0
  43. braintools-0.4.0/braintools/analysis/spike/_isi_test.py +360 -0
  44. braintools-0.4.0/braintools/analysis/spike/_psth.py +229 -0
  45. braintools-0.4.0/braintools/analysis/spike/_psth_test.py +253 -0
  46. braintools-0.4.0/braintools/analysis/spike/_sta.py +175 -0
  47. braintools-0.4.0/braintools/analysis/spike/_sta_test.py +192 -0
  48. braintools-0.4.0/braintools/analysis/stats/__init__.py +56 -0
  49. braintools-0.4.0/braintools/analysis/stats/_correlation.py +207 -0
  50. braintools-0.4.0/braintools/analysis/stats/_correlation_test.py +242 -0
  51. braintools-0.4.0/braintools/analysis/stats/_resampling.py +567 -0
  52. braintools-0.4.0/braintools/analysis/stats/_resampling_test.py +437 -0
  53. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/__init__.py +19 -6
  54. braintools-0.4.0/braintools/cogtask/__init___test.py +41 -0
  55. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conditional.py +76 -69
  56. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conftest.py +4 -1
  57. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/context.py +25 -14
  58. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/encoder.py +104 -17
  59. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/encoder_test.py +32 -0
  60. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/feature.py +111 -64
  61. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/feature_test.py +127 -0
  62. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/label.py +35 -6
  63. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/phase.py +178 -79
  64. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/phase_test.py +146 -0
  65. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/task.py +93 -44
  66. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/task_test.py +345 -0
  67. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/__init__.py +6 -0
  68. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/decision_making.py +295 -10
  69. braintools-0.4.0/braintools/cogtask/tasks/decision_making_test.py +387 -0
  70. braintools-0.4.0/braintools/cogtask/tasks/economic.py +293 -0
  71. braintools-0.4.0/braintools/cogtask/tasks/economic_test.py +236 -0
  72. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/motor.py +45 -9
  73. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/reasoning.py +32 -8
  74. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/working_memory.py +392 -31
  75. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/working_memory_test.py +206 -1
  76. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/utils.py +96 -23
  77. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/utils_test.py +43 -5
  78. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/__init__.py +28 -0
  79. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_base.py +497 -70
  80. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_base_test.py +192 -0
  81. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_biological.py +22 -22
  82. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_biological_test.py +60 -0
  83. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_compartment.py +940 -269
  84. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_compartment_test.py +725 -48
  85. braintools-0.4.0/braintools/conn/_fixed.py +581 -0
  86. braintools-0.4.0/braintools/conn/_fixed_test.py +404 -0
  87. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_kernel.py +585 -497
  88. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_kernel_test.py +612 -0
  89. braintools-0.4.0/braintools/conn/_network.py +465 -0
  90. braintools-0.4.0/braintools/conn/_network_test.py +344 -0
  91. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_random.py +132 -51
  92. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_random_test.py +221 -0
  93. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_regular.py +32 -18
  94. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_regular_test.py +38 -0
  95. braintools-0.4.0/braintools/conn/_sampling.py +271 -0
  96. braintools-0.4.0/braintools/conn/_sampling_test.py +216 -0
  97. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_spatial.py +449 -195
  98. braintools-0.4.0/braintools/conn/_spatial_test.py +949 -0
  99. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_topological.py +427 -278
  100. {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_topological_test.py +341 -0
  101. {braintools-0.2.0 → braintools-0.4.0}/braintools/file/__init__.py +55 -4
  102. braintools-0.4.0/braintools/file/_hdf5.py +493 -0
  103. braintools-0.4.0/braintools/file/_hdf5_test.py +435 -0
  104. {braintools-0.2.0 → braintools-0.4.0}/braintools/file/_matfile.py +116 -28
  105. braintools-0.4.0/braintools/file/_matfile_test.py +387 -0
  106. {braintools-0.2.0 → braintools-0.4.0}/braintools/file/_msg_checkpoint.py +30 -3
  107. braintools-0.4.0/braintools/file/_msg_checkpoint_test.py +1403 -0
  108. braintools-0.4.0/braintools/file/_neo.py +310 -0
  109. braintools-0.4.0/braintools/file/_neo_test.py +249 -0
  110. braintools-0.4.0/braintools/file/_nwb.py +594 -0
  111. braintools-0.4.0/braintools/file/_nwb_test.py +404 -0
  112. braintools-0.4.0/braintools/fit/__init__.py +75 -0
  113. braintools-0.4.0/braintools/fit/_fitter.py +880 -0
  114. braintools-0.4.0/braintools/fit/_fitter_test.py +546 -0
  115. braintools-0.4.0/braintools/fit/_losses.py +1469 -0
  116. braintools-0.4.0/braintools/fit/_losses_test.py +815 -0
  117. braintools-0.4.0/braintools/fit/_objective.py +283 -0
  118. braintools-0.4.0/braintools/fit/_objective_test.py +149 -0
  119. braintools-0.4.0/braintools/fit/_sweep.py +153 -0
  120. braintools-0.4.0/braintools/fit/_sweep_test.py +120 -0
  121. braintools-0.4.0/braintools/fit/_uncertainty.py +215 -0
  122. braintools-0.4.0/braintools/fit/_uncertainty_test.py +137 -0
  123. braintools-0.4.0/braintools/fit/losses.py +80 -0
  124. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_base.py +2 -2
  125. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_impl.py +26 -8
  126. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_impl_test.py +21 -0
  127. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_base.py +37 -17
  128. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_base_test.py +97 -0
  129. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_basic.py +63 -38
  130. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_basic_test.py +119 -5
  131. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_orthogonal.py +46 -32
  132. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_orthogonal_test.py +94 -43
  133. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_variance_scaling.py +78 -36
  134. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_variance_scaling_test.py +27 -3
  135. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/__init__.py +17 -17
  136. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_base.py +73 -21
  137. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_basic.py +27 -10
  138. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_pulses.py +39 -11
  139. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_stochastic.py +40 -41
  140. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_waveforms.py +13 -20
  141. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_basic.py +17 -19
  142. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_pulses.py +21 -22
  143. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_stochastic.py +61 -37
  144. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_stochastic_test.py +35 -0
  145. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_waveforms.py +25 -28
  146. braintools-0.4.0/braintools/input/_steps.py +33 -0
  147. braintools-0.4.0/braintools/input/_steps_test.py +110 -0
  148. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/__init__.py +50 -194
  149. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_classification.py +31 -19
  150. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_classification_test.py +11 -0
  151. braintools-0.4.0/braintools/metric/_deprecated.py +211 -0
  152. braintools-0.4.0/braintools/metric/_deprecated_test.py +267 -0
  153. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_fenchel_young.py +11 -8
  154. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_pairwise.py +22 -15
  155. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_pairwise_test.py +29 -0
  156. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_ranking.py +7 -2
  157. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_regression.py +29 -20
  158. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_regression_test.py +37 -0
  159. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_smoothing.py +9 -5
  160. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_smoothing_test.py +12 -1
  161. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_util.py +3 -0
  162. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/__init__.py +58 -1
  163. braintools-0.2.0/braintools/optim/_optax_lr_scheduler.py → braintools-0.4.0/braintools/optim/_lr_scheduler.py +905 -392
  164. braintools-0.2.0/braintools/optim/_optax_lr_scheduler_test.py → braintools-0.4.0/braintools/optim/_lr_scheduler_test.py +359 -8
  165. braintools-0.4.0/braintools/optim/_multistart.py +539 -0
  166. braintools-0.4.0/braintools/optim/_multistart_test.py +386 -0
  167. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_nevergrad_optimizer.py +70 -46
  168. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_nevergrad_optimizer_test.py +142 -0
  169. braintools-0.4.0/braintools/optim/_online.py +468 -0
  170. braintools-0.4.0/braintools/optim/_online_test.py +373 -0
  171. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_optax_optimizer.py +643 -369
  172. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_optax_optimizer_test.py +740 -0
  173. braintools-0.4.0/braintools/optim/_regression.py +605 -0
  174. braintools-0.4.0/braintools/optim/_regression_test.py +476 -0
  175. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_scipy_optimizer.py +48 -24
  176. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_scipy_optimizer_test.py +68 -0
  177. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_sofo_optimizer.py +11 -4
  178. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_sofo_optimizer_test.py +120 -0
  179. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_state_uniquifier.py +88 -61
  180. {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/__init__.py +71 -66
  181. {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_dde_integrator.py +39 -22
  182. {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_dde_integrator_test.py +120 -0
  183. braintools-0.4.0/braintools/quad/_imex_integrator.py +276 -0
  184. braintools-0.4.0/braintools/quad/_imex_integrator_test.py +282 -0
  185. {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_ode_integrator.py +11 -3
  186. braintools-0.4.0/braintools/quad/_ode_integrator_test.py +346 -0
  187. braintools-0.4.0/braintools/quad/_odeint.py +259 -0
  188. braintools-0.4.0/braintools/quad/_odeint_test.py +300 -0
  189. braintools-0.4.0/braintools/quad/_registry.py +324 -0
  190. braintools-0.4.0/braintools/quad/_registry_test.py +145 -0
  191. {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_sde_integrator.py +36 -26
  192. braintools-0.4.0/braintools/quad/_sde_integrator_test.py +504 -0
  193. braintools-0.4.0/braintools/quad/_solve_ivp.py +588 -0
  194. braintools-0.4.0/braintools/quad/_solve_ivp_test.py +492 -0
  195. {braintools-0.2.0/braintools → braintools-0.4.0/braintools/spike}/__init__.py +34 -45
  196. braintools-0.4.0/braintools/spike/_bitwise.py +433 -0
  197. braintools-0.4.0/braintools/spike/_bitwise_test.py +172 -0
  198. braintools-0.4.0/braintools/spike/_convert.py +100 -0
  199. braintools-0.4.0/braintools/spike/_convert_test.py +50 -0
  200. braintools-0.4.0/braintools/spike/_encoder.py +1116 -0
  201. braintools-0.2.0/braintools/_spike_encoder_test.py → braintools-0.4.0/braintools/spike/_encoder_test.py +244 -46
  202. braintools-0.4.0/braintools/spike/_spike_trains.py +1033 -0
  203. braintools-0.4.0/braintools/spike/_spike_trains_test.py +599 -0
  204. braintools-0.4.0/braintools/spike/_tuning.py +104 -0
  205. braintools-0.4.0/braintools/spike/_tuning_test.py +130 -0
  206. {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/__init__.py +10 -8
  207. {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_base.py +58 -60
  208. {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_base_test.py +64 -18
  209. {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_impl.py +254 -197
  210. {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_impl_test.py +716 -23
  211. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/__init__.py +36 -27
  212. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_callbacks.py +475 -91
  213. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_callbacks_test.py +188 -9
  214. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_checkpoint.py +109 -19
  215. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_dataloader.py +161 -60
  216. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_dataloader_test.py +45 -0
  217. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_distributed.py +121 -45
  218. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_distributed_test.py +87 -0
  219. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_loggers.py +89 -27
  220. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_loggers_test.py +323 -1
  221. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_module.py +83 -34
  222. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_module_test.py +8 -0
  223. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_progress.py +57 -11
  224. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_trainer.py +415 -67
  225. braintools-0.4.0/braintools/trainer/_trainer_test.py +2251 -0
  226. {braintools-0.2.0 → braintools-0.4.0}/braintools/tree.py +212 -31
  227. {braintools-0.2.0 → braintools-0.4.0}/braintools/tree_test.py +23 -0
  228. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/__init__.py +2 -2
  229. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_animation.py +5 -1
  230. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_animation_test.py +15 -0
  231. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_colormaps.py +15 -14
  232. braintools-0.2.0/braintools/visualize/_colormaps_extra_test.py → braintools-0.4.0/braintools/visualize/_colormaps_test.py +96 -4
  233. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_interactive.py +112 -106
  234. braintools-0.2.0/braintools/visualize/_interactive_extra_test.py → braintools-0.4.0/braintools/visualize/_interactive_test.py +103 -4
  235. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_neural.py +259 -111
  236. braintools-0.4.0/braintools/visualize/_neural_test.py +926 -0
  237. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_plots.py +122 -66
  238. braintools-0.4.0/braintools/visualize/_plots_test.py +701 -0
  239. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_statistical.py +118 -72
  240. braintools-0.2.0/braintools/visualize/_statistical_extra_test.py → braintools-0.4.0/braintools/visualize/_statistical_test.py +309 -2
  241. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_three_d.py +204 -58
  242. braintools-0.4.0/braintools/visualize/_three_d_test.py +609 -0
  243. braintools-0.4.0/braintools/visualize/_utils.py +110 -0
  244. braintools-0.4.0/braintools/visualize/_utils_test.py +84 -0
  245. {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/PKG-INFO +62 -15
  246. {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/SOURCES.txt +106 -36
  247. {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/requires.txt +34 -2
  248. {braintools-0.2.0 → braintools-0.4.0}/pyproject.toml +68 -8
  249. braintools-0.2.0/README.md +0 -92
  250. braintools-0.2.0/braintools/_spike_encoder.py +0 -781
  251. braintools-0.2.0/braintools/_spike_operation.py +0 -215
  252. braintools-0.2.0/braintools/_spike_operation_test.py +0 -93
  253. braintools-0.2.0/braintools/_typing_test.py +0 -173
  254. braintools-0.2.0/braintools/cogtask/_version.py +0 -18
  255. braintools-0.2.0/braintools/cogtask/task_variable_length_test.py +0 -290
  256. braintools-0.2.0/braintools/cogtask/tasks/decision_making_test.py +0 -169
  257. braintools-0.2.0/braintools/conn/_spatial_test.py +0 -434
  258. braintools-0.2.0/braintools/file/_file_comprehensive_test.py +0 -429
  259. braintools-0.2.0/braintools/file/_matfile_extra_test.py +0 -217
  260. braintools-0.2.0/braintools/file/_msg_checkpoint_async_test.py +0 -198
  261. braintools-0.2.0/braintools/file/_msg_checkpoint_extra_test.py +0 -525
  262. braintools-0.2.0/braintools/file/_msg_checkpoint_test.py +0 -453
  263. braintools-0.2.0/braintools/input/_deprecation.py +0 -142
  264. braintools-0.2.0/braintools/metric/_correlation.py +0 -604
  265. braintools-0.2.0/braintools/metric/_correlation_test.py +0 -621
  266. braintools-0.2.0/braintools/metric/_firings.py +0 -1003
  267. braintools-0.2.0/braintools/metric/_firings_test.py +0 -456
  268. braintools-0.2.0/braintools/optim/_audit_fixes_test.py +0 -851
  269. braintools-0.2.0/braintools/quad/_imex_integrator.py +0 -237
  270. braintools-0.2.0/braintools/quad/_imex_integrator_test.py +0 -161
  271. braintools-0.2.0/braintools/quad/_ode_integrator_test.py +0 -180
  272. braintools-0.2.0/braintools/quad/_quad_coverage_test.py +0 -368
  273. braintools-0.2.0/braintools/quad/_quad_regression_test.py +0 -214
  274. braintools-0.2.0/braintools/quad/_sde_integrator_test.py +0 -207
  275. braintools-0.2.0/braintools/surrogate/_correctness_test.py +0 -388
  276. braintools-0.2.0/braintools/surrogate/_impl_extra_test.py +0 -307
  277. braintools-0.2.0/braintools/trainer/_loggers_backends_test.py +0 -344
  278. braintools-0.2.0/braintools/trainer/_trainer_audit_test.py +0 -634
  279. braintools-0.2.0/braintools/trainer/_trainer_extra_test.py +0 -732
  280. braintools-0.2.0/braintools/trainer/_trainer_test.py +0 -349
  281. braintools-0.2.0/braintools/visualize/_audit_fixes_test.py +0 -310
  282. braintools-0.2.0/braintools/visualize/_colormaps_test.py +0 -59
  283. braintools-0.2.0/braintools/visualize/_interactive_test.py +0 -57
  284. braintools-0.2.0/braintools/visualize/_neural_extra_test.py +0 -390
  285. braintools-0.2.0/braintools/visualize/_neural_test.py +0 -116
  286. braintools-0.2.0/braintools/visualize/_plots_extra_test.py +0 -336
  287. braintools-0.2.0/braintools/visualize/_plots_test.py +0 -72
  288. braintools-0.2.0/braintools/visualize/_statistical_test.py +0 -121
  289. braintools-0.2.0/braintools/visualize/_three_d_extra_test.py +0 -267
  290. braintools-0.2.0/braintools/visualize/_three_d_test.py +0 -63
  291. braintools-0.2.0/braintools/visualize/_visualize_test.py +0 -72
  292. {braintools-0.2.0 → braintools-0.4.0}/LICENSE +0 -0
  293. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/_typing.py +0 -0
  294. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conditional_test.py +0 -0
  295. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/context_test.py +0 -0
  296. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/label_test.py +0 -0
  297. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/motor_test.py +0 -0
  298. {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/reasoning_test.py +0 -0
  299. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/__init__.py +0 -0
  300. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_base_test.py +0 -0
  301. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_composite.py +0 -0
  302. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_composite_test.py +0 -0
  303. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_with_distance.py +0 -0
  304. {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_with_distance_test.py +0 -0
  305. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_base_test.py +0 -0
  306. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_basic_test.py +0 -0
  307. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_pulses_test.py +0 -0
  308. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_stochastic_test.py +0 -0
  309. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_waveforms_test.py +0 -0
  310. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_basic_test.py +0 -0
  311. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_pulses_test.py +0 -0
  312. {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_waveforms_test.py +0 -0
  313. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_fenchel_young_test.py +0 -0
  314. {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_ranking_test.py +0 -0
  315. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_base.py +0 -0
  316. {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_state_uniquifier_test.py +0 -0
  317. {braintools-0.2.0 → braintools-0.4.0}/braintools/py.typed +0 -0
  318. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_checkpoint_test.py +0 -0
  319. {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_progress_test.py +0 -0
  320. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_figures.py +0 -0
  321. {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_figures_test.py +0 -0
  322. {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/dependency_links.txt +0 -0
  323. {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/top_level.txt +0 -0
  324. {braintools-0.2.0 → braintools-0.4.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braintools
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: Modeling tools for brain simulation.
5
5
  Author-email: BrainTools Developers <chao.brain@qq.com>
6
6
  License:
@@ -218,26 +218,27 @@ Classifier: Natural Language :: English
218
218
  Classifier: Operating System :: OS Independent
219
219
  Classifier: Programming Language :: Python
220
220
  Classifier: Programming Language :: Python :: 3
221
- Classifier: Programming Language :: Python :: 3.11
222
221
  Classifier: Programming Language :: Python :: 3.12
223
222
  Classifier: Programming Language :: Python :: 3.13
224
223
  Classifier: Programming Language :: Python :: 3.14
224
+ Classifier: Programming Language :: Python :: 3.15
225
225
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
226
226
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
227
227
  Classifier: Topic :: Scientific/Engineering :: Mathematics
228
228
  Classifier: Topic :: Software Development :: Libraries
229
- Requires-Python: >=3.11
229
+ Requires-Python: >=3.12
230
230
  Description-Content-Type: text/markdown
231
231
  License-File: LICENSE
232
232
  Requires-Dist: jax
233
233
  Requires-Dist: numpy>=1.15
234
234
  Requires-Dist: brainstate>=0.1.0
235
- Requires-Dist: brainunit>=0.0.8
235
+ Requires-Dist: brainunit>=0.5.2
236
236
  Requires-Dist: typing_extensions
237
237
  Requires-Dist: optax
238
238
  Requires-Dist: matplotlib
239
239
  Requires-Dist: msgpack
240
240
  Requires-Dist: scipy
241
+ Requires-Dist: brainevent
241
242
  Provides-Extra: testing
242
243
  Requires-Dist: pytest; extra == "testing"
243
244
  Requires-Dist: pytest-cov; extra == "testing"
@@ -245,10 +246,35 @@ Requires-Dist: absl-py; extra == "testing"
245
246
  Requires-Dist: nevergrad; extra == "testing"
246
247
  Requires-Dist: tqdm; extra == "testing"
247
248
  Requires-Dist: rich; extra == "testing"
249
+ Requires-Dist: pyyaml; extra == "testing"
250
+ Requires-Dist: scikit-learn; extra == "testing"
251
+ Requires-Dist: mne; extra == "testing"
252
+ Requires-Dist: statsmodels; extra == "testing"
253
+ Requires-Dist: networkx; extra == "testing"
254
+ Requires-Dist: numba; extra == "testing"
255
+ Requires-Dist: h5py; extra == "testing"
256
+ Requires-Dist: pynwb; extra == "testing"
257
+ Requires-Dist: neo; extra == "testing"
258
+ Requires-Dist: quantities; extra == "testing"
259
+ Provides-Extra: viz
260
+ Requires-Dist: plotly; extra == "viz"
261
+ Provides-Extra: progress
262
+ Requires-Dist: tqdm; extra == "progress"
263
+ Requires-Dist: rich; extra == "progress"
264
+ Provides-Extra: nevergrad
265
+ Requires-Dist: nevergrad; extra == "nevergrad"
266
+ Provides-Extra: nwb
267
+ Requires-Dist: pynwb; extra == "nwb"
268
+ Provides-Extra: neo
269
+ Requires-Dist: neo; extra == "neo"
270
+ Requires-Dist: quantities; extra == "neo"
271
+ Provides-Extra: hdf5
272
+ Requires-Dist: h5py; extra == "hdf5"
248
273
  Provides-Extra: type-check
249
274
  Requires-Dist: mypy>=1.8; extra == "type-check"
250
275
  Provides-Extra: cpu
251
276
  Requires-Dist: jax[cpu]; extra == "cpu"
277
+ Requires-Dist: brainevent[cpu]; extra == "cpu"
252
278
  Provides-Extra: cuda12
253
279
  Requires-Dist: jax[cuda12]; extra == "cuda12"
254
280
  Provides-Extra: cuda13
@@ -257,7 +283,7 @@ Provides-Extra: tpu
257
283
  Requires-Dist: jax[tpu]; extra == "tpu"
258
284
  Provides-Extra: cogtask
259
285
  Requires-Dist: brainstate>=0.1.0; extra == "cogtask"
260
- Requires-Dist: brainunit>=0.0.8; extra == "cogtask"
286
+ Requires-Dist: brainunit>=0.5.2; extra == "cogtask"
261
287
  Provides-Extra: doc
262
288
  Requires-Dist: pandoc; extra == "doc"
263
289
  Requires-Dist: Jinja2; extra == "doc"
@@ -283,9 +309,6 @@ Dynamic: license-file
283
309
  <p align="center">
284
310
  <a href="https://pypi.org/project/braintools/"><img alt="Supported Python Version" src="https://img.shields.io/pypi/pyversions/braintools"></a>
285
311
  <a href="https://github.com/chaobrain/braintools/blob/main/LICENSE"><img alt="LICENSE" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a>
286
- <a href='https://brainx.chaobrain.com/braintools/'>
287
- <img src='https://readthedocs.org/projects/braintools/badge/?version=latest' alt='Documentation Status' />
288
- </a>
289
312
  <a href="https://badge.fury.io/py/braintools"><img alt="PyPI version" src="https://badge.fury.io/py/braintools.svg"></a>
290
313
  <a href="https://github.com/chaobrain/braintools/actions/workflows/CI.yml"><img alt="Continuous Integration" src="https://github.com/chaobrain/braintools/actions/workflows/CI.yml/badge.svg"></a>
291
314
  <a href="https://codecov.io/gh/chaobrain/braintools"><img alt="Test Coverage" src="https://codecov.io/gh/chaobrain/braintools/graph/badge.svg"></a>
@@ -296,11 +319,17 @@ Dynamic: license-file
296
319
 
297
320
  ## Highlights
298
321
 
299
- - **Composable connectivity**: declarative builders for point, multi-compartment, and population networks with spatial kernels, degree constraints, and unit-aware metadata
300
- - **Cognitive task framework**: phase-based, composable trial construction (`braintools.cogtask`) for training and analyzing neural networks on classic systems-neuroscience paradigms — decision making, working memory, reasoning, motor — plus a registry of pre-built tasks
301
- - **Visualization suite**: publication plots, interactive dashboards, 3D viewers, and animation helpers in `braintools.visualize`
302
- - **Metrics and solvers**: losses, evaluation metrics, and PyTree-aware ODE/SDE/DDE integrators ready for `jit`/`vmap`
303
- - **Signal and optimization helpers**: reusable generators and lightweight optimizers to prototype models quickly
322
+ - **Connectivity builders** (`braintools.conn`): declarative, unit-aware patterns for point neurons (random, fixed in-/out-degree, distance-dependent, small-world, modular, ...), multi-compartment morphologies, and convolution kernels; population networks assembled from populations and projections; vectorised, memory-bounded generation that scales to 1e5-neuron networks; export to `brainevent` sparse formats
323
+ - **Initializers** (`braintools.init`): parameter initializers (distributions, variance scaling, orthogonal, composites) and distance profiles shared with the connectivity builders
324
+ - **Spike data** (`braintools.spike`): the `SpikeTrains` container (a padded, `jit`/`vmap`-friendly spike-time layout with dense/event conversions), spike encoders (latency, rate, Poisson, population, ...), and bitwise spike operations
325
+ - **Neural data analysis** (`braintools.analysis`): spike-train statistics (ISI/CV/Fano, PSTHs, correlograms, spike-train distances, synchrony), spectral and LFP analysis (multitaper and wavelet spectra, filtering, phase synchrony, cross-frequency coupling, current source density), population analysis (PCA, decoding, Granger causality, avalanches, functional connectivity), structural graph measures of connectivity, and resampling-based statistics
326
+ - **Cognitive task framework** (`braintools.cogtask`): phase-based, composable trial construction for training and analyzing networks on classic systems-neuroscience paradigms, plus a registry of pre-built tasks
327
+ - **Numerical integration** (`braintools.quad`): PyTree-aware ODE/SDE/DDE/IMEX one-step integrators ready for `jit`/`vmap`, a fixed-step trajectory driver (`odeint`) and a differentiable adaptive solver (`solve_ivp`)
328
+ - **Model fitting** (`braintools.fit`): fit any JAX or `brainstate` model to data with composable objectives, summary-statistic losses, vmapped multi-start optimization, parameter sweeps, and confidence intervals
329
+ - **Losses and metrics** (`braintools.metric`): classification, regression, ranking, and pairwise-similarity losses for training
330
+ - **Inputs, surrogates, and visualization**: input-current generators (`braintools.input`), surrogate gradients (`braintools.surrogate`), and plotting helpers (`braintools.visualize`)
331
+ - **Training helpers**: optimizer wrappers (`braintools.optim`), a multi-start minimizer, online readout learning (RLS, LMS, FORCE), closed-form regressions, and a lightweight training loop (`braintools.trainer`)
332
+ - **Data files** (`braintools.file`): checkpoints, MATLAB files, and optional HDF5, NWB, and NEO formats
304
333
 
305
334
  `braintools` integrates smoothly with the broader ecosystem (e.g., `brainstate`, `brainunit`) while keeping a simple, functional style.
306
335
 
@@ -310,16 +339,25 @@ Dynamic: license-file
310
339
  pip install -U braintools
311
340
  ```
312
341
 
313
- Optional extras are published for hardware-specific builds:
342
+ Optional extras select a JAX backend:
314
343
 
315
344
  ```bash
316
345
  pip install -U braintools[cpu]
317
- # CUDA 12.x wheels
346
+ # CUDA 12.x / CUDA 13.x wheels
318
347
  pip install -U braintools[cuda12]
348
+ pip install -U braintools[cuda13]
319
349
  # TPU runtime
320
350
  pip install -U braintools[tpu]
321
351
  ```
322
352
 
353
+ and enable optional features:
354
+
355
+ ```bash
356
+ pip install -U braintools[viz] # interactive plotly figures in braintools.visualize
357
+ pip install -U braintools[progress] # tqdm / rich progress bars in braintools.trainer
358
+ pip install -U braintools[nevergrad] # gradient-free optimization in braintools.optim
359
+ ```
360
+
323
361
  Alternatively, install the curated BrainX bundle that ships with `braintools` and related projects:
324
362
 
325
363
  ```bash
@@ -338,9 +376,14 @@ pip install -U BrainX
338
376
  Trials are generated lazily via `task.sample(i)` / `task.batch_sample(B)`, both JIT- and `vmap`-friendly, with per-trial keys derived from `seed` so batches are fully reproducible.
339
377
 
340
378
  ```python
379
+ import brainstate
341
380
  import brainunit as u
342
381
  from braintools.cogtask import PerceptualDecisionMaking
343
382
 
383
+ # Phase durations are expressed in units of the environment timestep, so a
384
+ # timestep must be set before a task is sampled.
385
+ brainstate.environ.set(dt=1.0 * u.ms)
386
+
344
387
  task = PerceptualDecisionMaking(t_stimulus=1500 * u.ms, num_choices=2, seed=0)
345
388
  X, Y = task.batch_sample(32) # X: (T, B, n_in), Y: (T, B) labels
346
389
  ```
@@ -351,6 +394,10 @@ The package also ships a registry of canonical tasks: `PerceptualDecisionMaking`
351
394
 
352
395
  The full documentation is available at https://brainx.chaobrain.com/braintools/
353
396
 
397
+ ## Upgrading to 1.0
398
+
399
+ Names that moved since 0.4 (for example the `metric` analysis functions, now in `braintools.analysis`, and the top-level spike encoders, now in `braintools.spike`) still work but emit a `BraintoolsDeprecationWarning`, a `FutureWarning` shown by default. Version 1.0 removes them. The [migration guide](https://brainx.chaobrain.com/braintools/migration.html) lists every deprecated name with its replacement.
400
+
354
401
  ## Ecosystem
355
402
 
356
403
  `braintools` is one part of our brain simulation ecosystem: https://brainx.chaobrain.com/
@@ -0,0 +1,113 @@
1
+ # Modeling tools for brain simulation
2
+
3
+ <p align="center">
4
+ <img alt="Header image of braintools." src="https://brainx.chaobrain.com/images/braintools.webp" width=50%>
5
+ </p>
6
+
7
+ <p align="center">
8
+ <a href="https://pypi.org/project/braintools/"><img alt="Supported Python Version" src="https://img.shields.io/pypi/pyversions/braintools"></a>
9
+ <a href="https://github.com/chaobrain/braintools/blob/main/LICENSE"><img alt="LICENSE" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a>
10
+ <a href="https://badge.fury.io/py/braintools"><img alt="PyPI version" src="https://badge.fury.io/py/braintools.svg"></a>
11
+ <a href="https://github.com/chaobrain/braintools/actions/workflows/CI.yml"><img alt="Continuous Integration" src="https://github.com/chaobrain/braintools/actions/workflows/CI.yml/badge.svg"></a>
12
+ <a href="https://codecov.io/gh/chaobrain/braintools"><img alt="Test Coverage" src="https://codecov.io/gh/chaobrain/braintools/graph/badge.svg"></a>
13
+ <a href="https://doi.org/10.5281/zenodo.17110064"><img src="https://zenodo.org/badge/776629792.svg" alt="DOI"></a>
14
+ </p>
15
+
16
+ `braintools` is a lightweight, JAX-friendly toolbox with practical utilities for brain modeling.
17
+
18
+ ## Highlights
19
+
20
+ - **Connectivity builders** (`braintools.conn`): declarative, unit-aware patterns for point neurons (random, fixed in-/out-degree, distance-dependent, small-world, modular, ...), multi-compartment morphologies, and convolution kernels; population networks assembled from populations and projections; vectorised, memory-bounded generation that scales to 1e5-neuron networks; export to `brainevent` sparse formats
21
+ - **Initializers** (`braintools.init`): parameter initializers (distributions, variance scaling, orthogonal, composites) and distance profiles shared with the connectivity builders
22
+ - **Spike data** (`braintools.spike`): the `SpikeTrains` container (a padded, `jit`/`vmap`-friendly spike-time layout with dense/event conversions), spike encoders (latency, rate, Poisson, population, ...), and bitwise spike operations
23
+ - **Neural data analysis** (`braintools.analysis`): spike-train statistics (ISI/CV/Fano, PSTHs, correlograms, spike-train distances, synchrony), spectral and LFP analysis (multitaper and wavelet spectra, filtering, phase synchrony, cross-frequency coupling, current source density), population analysis (PCA, decoding, Granger causality, avalanches, functional connectivity), structural graph measures of connectivity, and resampling-based statistics
24
+ - **Cognitive task framework** (`braintools.cogtask`): phase-based, composable trial construction for training and analyzing networks on classic systems-neuroscience paradigms, plus a registry of pre-built tasks
25
+ - **Numerical integration** (`braintools.quad`): PyTree-aware ODE/SDE/DDE/IMEX one-step integrators ready for `jit`/`vmap`, a fixed-step trajectory driver (`odeint`) and a differentiable adaptive solver (`solve_ivp`)
26
+ - **Model fitting** (`braintools.fit`): fit any JAX or `brainstate` model to data with composable objectives, summary-statistic losses, vmapped multi-start optimization, parameter sweeps, and confidence intervals
27
+ - **Losses and metrics** (`braintools.metric`): classification, regression, ranking, and pairwise-similarity losses for training
28
+ - **Inputs, surrogates, and visualization**: input-current generators (`braintools.input`), surrogate gradients (`braintools.surrogate`), and plotting helpers (`braintools.visualize`)
29
+ - **Training helpers**: optimizer wrappers (`braintools.optim`), a multi-start minimizer, online readout learning (RLS, LMS, FORCE), closed-form regressions, and a lightweight training loop (`braintools.trainer`)
30
+ - **Data files** (`braintools.file`): checkpoints, MATLAB files, and optional HDF5, NWB, and NEO formats
31
+
32
+ `braintools` integrates smoothly with the broader ecosystem (e.g., `brainstate`, `brainunit`) while keeping a simple, functional style.
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ pip install -U braintools
38
+ ```
39
+
40
+ Optional extras select a JAX backend:
41
+
42
+ ```bash
43
+ pip install -U braintools[cpu]
44
+ # CUDA 12.x / CUDA 13.x wheels
45
+ pip install -U braintools[cuda12]
46
+ pip install -U braintools[cuda13]
47
+ # TPU runtime
48
+ pip install -U braintools[tpu]
49
+ ```
50
+
51
+ and enable optional features:
52
+
53
+ ```bash
54
+ pip install -U braintools[viz] # interactive plotly figures in braintools.visualize
55
+ pip install -U braintools[progress] # tqdm / rich progress bars in braintools.trainer
56
+ pip install -U braintools[nevergrad] # gradient-free optimization in braintools.optim
57
+ ```
58
+
59
+ Alternatively, install the curated BrainX bundle that ships with `braintools` and related projects:
60
+
61
+ ```bash
62
+ pip install -U BrainX
63
+ ```
64
+
65
+ ## Cognitive task framework (`braintools.cogtask`)
66
+
67
+ `braintools.cogtask` lets you build cognitive tasks from composable, named **phases** (fixation, stimulus, delay, response, ...) connected by simple operators:
68
+
69
+ - `a >> b` runs `b` after `a` (sequential)
70
+ - `a * n` repeats `a` `n` times
71
+ - `a | b` runs `a` and `b` in parallel (multi-modal stimuli)
72
+ - `If`, `Switch`, `While` add trial-by-trial branching
73
+
74
+ Trials are generated lazily via `task.sample(i)` / `task.batch_sample(B)`, both JIT- and `vmap`-friendly, with per-trial keys derived from `seed` so batches are fully reproducible.
75
+
76
+ ```python
77
+ import brainstate
78
+ import brainunit as u
79
+ from braintools.cogtask import PerceptualDecisionMaking
80
+
81
+ # Phase durations are expressed in units of the environment timestep, so a
82
+ # timestep must be set before a task is sampled.
83
+ brainstate.environ.set(dt=1.0 * u.ms)
84
+
85
+ task = PerceptualDecisionMaking(t_stimulus=1500 * u.ms, num_choices=2, seed=0)
86
+ X, Y = task.batch_sample(32) # X: (T, B, n_in), Y: (T, B) labels
87
+ ```
88
+
89
+ The package also ships a registry of canonical tasks: `PerceptualDecisionMaking`, `ContextDecisionMaking`, `DelayMatchSample`, `DelayComparison`, `GoNoGo`, `ReadySetGo`, `PostDecisionWager`, `Reaching1D`, `EvidenceAccumulation`, `HierarchicalReasoning`, and more — see the [API reference](https://brainx.chaobrain.com/braintools/apis/cogtask.html) for the full list.
90
+
91
+ ## Documentation
92
+
93
+ The full documentation is available at https://brainx.chaobrain.com/braintools/
94
+
95
+ ## Upgrading to 1.0
96
+
97
+ Names that moved since 0.4 (for example the `metric` analysis functions, now in `braintools.analysis`, and the top-level spike encoders, now in `braintools.spike`) still work but emit a `BraintoolsDeprecationWarning`, a `FutureWarning` shown by default. Version 1.0 removes them. The [migration guide](https://brainx.chaobrain.com/braintools/migration.html) lists every deprecated name with its replacement.
98
+
99
+ ## Ecosystem
100
+
101
+ `braintools` is one part of our brain simulation ecosystem: https://brainx.chaobrain.com/
102
+
103
+ ## Contributing
104
+
105
+ Contributions and issue reports are welcome! See `CONTRIBUTING.md` for guidelines.
106
+
107
+ ## License
108
+
109
+ Apache 2.0. See `LICENSE` for details.
110
+
111
+ ## Citation
112
+
113
+ If you use `braintools` in your work, please cite the Zenodo DOI: [10.5281/zenodo.17110064](https://doi.org/10.5281/zenodo.17110064)
@@ -0,0 +1,106 @@
1
+ # Copyright 2024 BrainX Ecosystem Limited. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+
16
+
17
+ from . import analysis
18
+ from . import cogtask
19
+ from . import conn
20
+ from . import file
21
+ from . import fit
22
+ from . import init
23
+ from . import input
24
+ from . import metric
25
+ from . import optim
26
+ from . import quad
27
+ from . import spike
28
+ from . import surrogate
29
+ from . import trainer
30
+ from . import tree
31
+ from . import visualize
32
+ from ._deprecation import deprecated_class as _deprecated_class
33
+ from ._version import __version__, __version_info__
34
+
35
+ # Encoders moved to ``braintools.spike`` in 0.4.0. The top-level names are
36
+ # deprecated aliases that warn on instantiation (never on import/access).
37
+ LatencyEncoder = _deprecated_class(
38
+ spike.LatencyEncoder, 'braintools.LatencyEncoder', 'braintools.spike.LatencyEncoder')
39
+ RateEncoder = _deprecated_class(
40
+ spike.RateEncoder, 'braintools.RateEncoder', 'braintools.spike.RateEncoder')
41
+ PoissonEncoder = _deprecated_class(
42
+ spike.PoissonEncoder, 'braintools.PoissonEncoder', 'braintools.spike.PoissonEncoder')
43
+ PopulationEncoder = _deprecated_class(
44
+ spike.PopulationEncoder, 'braintools.PopulationEncoder', 'braintools.spike.PopulationEncoder')
45
+ BernoulliEncoder = _deprecated_class(
46
+ spike.BernoulliEncoder, 'braintools.BernoulliEncoder', 'braintools.spike.BernoulliEncoder')
47
+ DeltaEncoder = _deprecated_class(
48
+ spike.DeltaEncoder, 'braintools.DeltaEncoder', 'braintools.spike.DeltaEncoder')
49
+ StepCurrentEncoder = _deprecated_class(
50
+ spike.StepCurrentEncoder, 'braintools.StepCurrentEncoder', 'braintools.spike.StepCurrentEncoder')
51
+ SpikeCountEncoder = _deprecated_class(
52
+ spike.SpikeCountEncoder, 'braintools.SpikeCountEncoder', 'braintools.spike.SpikeCountEncoder')
53
+ TemporalEncoder = _deprecated_class(
54
+ spike.TemporalEncoder, 'braintools.TemporalEncoder', 'braintools.spike.TemporalEncoder')
55
+ RankOrderEncoder = _deprecated_class(
56
+ spike.RankOrderEncoder, 'braintools.RankOrderEncoder', 'braintools.spike.RankOrderEncoder')
57
+
58
+ # The bitwise operations moved to ``braintools.spike`` (without the ``spike_``
59
+ # prefix). The old names stay as plain, non-warning aliases: brainstate's
60
+ # ``nn/_elementwise.py`` binds them at import time.
61
+ spike_bitwise_or = spike.bitwise_or
62
+ spike_bitwise_and = spike.bitwise_and
63
+ spike_bitwise_iand = spike.bitwise_iand
64
+ spike_bitwise_not = spike.bitwise_not
65
+ spike_bitwise_xor = spike.bitwise_xor
66
+ spike_bitwise_ixor = spike.bitwise_ixor
67
+ spike_bitwise = spike.bitwise
68
+
69
+ __all__ = [
70
+ '__version__',
71
+ '__version_info__',
72
+ 'conn',
73
+ 'input',
74
+ 'init',
75
+ 'file',
76
+ 'fit',
77
+ 'metric',
78
+ 'visualize',
79
+ 'optim',
80
+ 'trainer',
81
+ 'tree',
82
+ 'quad',
83
+ 'surrogate',
84
+ 'cogtask',
85
+ 'analysis',
86
+ 'spike',
87
+
88
+ 'LatencyEncoder',
89
+ 'RateEncoder',
90
+ 'PoissonEncoder',
91
+ 'PopulationEncoder',
92
+ 'BernoulliEncoder',
93
+ 'DeltaEncoder',
94
+ 'StepCurrentEncoder',
95
+ 'SpikeCountEncoder',
96
+ 'TemporalEncoder',
97
+ 'RankOrderEncoder',
98
+
99
+ 'spike_bitwise_or',
100
+ 'spike_bitwise_and',
101
+ 'spike_bitwise_iand',
102
+ 'spike_bitwise_not',
103
+ 'spike_bitwise_xor',
104
+ 'spike_bitwise_ixor',
105
+ 'spike_bitwise',
106
+ ]