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.
- {braintools-0.2.0 → braintools-0.4.0}/PKG-INFO +62 -15
- braintools-0.4.0/README.md +113 -0
- braintools-0.4.0/braintools/__init__.py +106 -0
- braintools-0.4.0/braintools/__init___test.py +292 -0
- braintools-0.4.0/braintools/_deprecation.py +393 -0
- braintools-0.4.0/braintools/_deprecation_test.py +402 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/_misc.py +17 -1
- braintools-0.4.0/braintools/_misc_test.py +110 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/_version.py +1 -1
- braintools-0.4.0/braintools/analysis/__init__.py +107 -0
- braintools-0.4.0/braintools/analysis/field/__init__.py +43 -0
- braintools-0.4.0/braintools/analysis/field/_lfp.py +274 -0
- braintools-0.4.0/braintools/analysis/field/_lfp_test.py +160 -0
- braintools-0.4.0/braintools/analysis/graph/__init__.py +82 -0
- braintools-0.4.0/braintools/analysis/graph/_graph.py +1244 -0
- braintools-0.4.0/braintools/analysis/graph/_graph_test.py +876 -0
- braintools-0.4.0/braintools/analysis/population/__init__.py +88 -0
- braintools-0.4.0/braintools/analysis/population/_correlation.py +295 -0
- braintools-0.4.0/braintools/analysis/population/_correlation_test.py +305 -0
- braintools-0.4.0/braintools/analysis/population/_decoding.py +275 -0
- braintools-0.4.0/braintools/analysis/population/_decoding_test.py +212 -0
- braintools-0.4.0/braintools/analysis/population/_dimensionality.py +652 -0
- braintools-0.4.0/braintools/analysis/population/_dimensionality_test.py +515 -0
- braintools-0.4.0/braintools/analysis/population/_dynamics.py +559 -0
- braintools-0.4.0/braintools/analysis/population/_dynamics_test.py +453 -0
- braintools-0.4.0/braintools/analysis/population/_information.py +180 -0
- braintools-0.4.0/braintools/analysis/population/_information_test.py +167 -0
- braintools-0.4.0/braintools/analysis/spectral/__init__.py +81 -0
- {braintools-0.2.0/braintools/metric → braintools-0.4.0/braintools/analysis/spectral}/_lfp.py +48 -255
- {braintools-0.2.0/braintools/metric → braintools-0.4.0/braintools/analysis/spectral}/_lfp_test.py +89 -133
- braintools-0.4.0/braintools/analysis/spectral/_spectral.py +1131 -0
- braintools-0.4.0/braintools/analysis/spectral/_spectral_test.py +539 -0
- braintools-0.4.0/braintools/analysis/spike/__init__.py +115 -0
- braintools-0.4.0/braintools/analysis/spike/_correlation.py +158 -0
- braintools-0.4.0/braintools/analysis/spike/_correlation_test.py +182 -0
- braintools-0.4.0/braintools/analysis/spike/_correlogram.py +282 -0
- braintools-0.4.0/braintools/analysis/spike/_correlogram_test.py +288 -0
- braintools-0.4.0/braintools/analysis/spike/_distance.py +550 -0
- braintools-0.4.0/braintools/analysis/spike/_distance_test.py +311 -0
- braintools-0.4.0/braintools/analysis/spike/_firings.py +1091 -0
- braintools-0.4.0/braintools/analysis/spike/_firings_test.py +1235 -0
- braintools-0.4.0/braintools/analysis/spike/_isi.py +526 -0
- braintools-0.4.0/braintools/analysis/spike/_isi_test.py +360 -0
- braintools-0.4.0/braintools/analysis/spike/_psth.py +229 -0
- braintools-0.4.0/braintools/analysis/spike/_psth_test.py +253 -0
- braintools-0.4.0/braintools/analysis/spike/_sta.py +175 -0
- braintools-0.4.0/braintools/analysis/spike/_sta_test.py +192 -0
- braintools-0.4.0/braintools/analysis/stats/__init__.py +56 -0
- braintools-0.4.0/braintools/analysis/stats/_correlation.py +207 -0
- braintools-0.4.0/braintools/analysis/stats/_correlation_test.py +242 -0
- braintools-0.4.0/braintools/analysis/stats/_resampling.py +567 -0
- braintools-0.4.0/braintools/analysis/stats/_resampling_test.py +437 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/__init__.py +19 -6
- braintools-0.4.0/braintools/cogtask/__init___test.py +41 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conditional.py +76 -69
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conftest.py +4 -1
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/context.py +25 -14
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/encoder.py +104 -17
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/encoder_test.py +32 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/feature.py +111 -64
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/feature_test.py +127 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/label.py +35 -6
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/phase.py +178 -79
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/phase_test.py +146 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/task.py +93 -44
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/task_test.py +345 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/__init__.py +6 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/decision_making.py +295 -10
- braintools-0.4.0/braintools/cogtask/tasks/decision_making_test.py +387 -0
- braintools-0.4.0/braintools/cogtask/tasks/economic.py +293 -0
- braintools-0.4.0/braintools/cogtask/tasks/economic_test.py +236 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/motor.py +45 -9
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/reasoning.py +32 -8
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/working_memory.py +392 -31
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/working_memory_test.py +206 -1
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/utils.py +96 -23
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/utils_test.py +43 -5
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/__init__.py +28 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_base.py +497 -70
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_base_test.py +192 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_biological.py +22 -22
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_biological_test.py +60 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_compartment.py +940 -269
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_compartment_test.py +725 -48
- braintools-0.4.0/braintools/conn/_fixed.py +581 -0
- braintools-0.4.0/braintools/conn/_fixed_test.py +404 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_kernel.py +585 -497
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_kernel_test.py +612 -0
- braintools-0.4.0/braintools/conn/_network.py +465 -0
- braintools-0.4.0/braintools/conn/_network_test.py +344 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_random.py +132 -51
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_random_test.py +221 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_regular.py +32 -18
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_regular_test.py +38 -0
- braintools-0.4.0/braintools/conn/_sampling.py +271 -0
- braintools-0.4.0/braintools/conn/_sampling_test.py +216 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_spatial.py +449 -195
- braintools-0.4.0/braintools/conn/_spatial_test.py +949 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_topological.py +427 -278
- {braintools-0.2.0 → braintools-0.4.0}/braintools/conn/_topological_test.py +341 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/file/__init__.py +55 -4
- braintools-0.4.0/braintools/file/_hdf5.py +493 -0
- braintools-0.4.0/braintools/file/_hdf5_test.py +435 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/file/_matfile.py +116 -28
- braintools-0.4.0/braintools/file/_matfile_test.py +387 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/file/_msg_checkpoint.py +30 -3
- braintools-0.4.0/braintools/file/_msg_checkpoint_test.py +1403 -0
- braintools-0.4.0/braintools/file/_neo.py +310 -0
- braintools-0.4.0/braintools/file/_neo_test.py +249 -0
- braintools-0.4.0/braintools/file/_nwb.py +594 -0
- braintools-0.4.0/braintools/file/_nwb_test.py +404 -0
- braintools-0.4.0/braintools/fit/__init__.py +75 -0
- braintools-0.4.0/braintools/fit/_fitter.py +880 -0
- braintools-0.4.0/braintools/fit/_fitter_test.py +546 -0
- braintools-0.4.0/braintools/fit/_losses.py +1469 -0
- braintools-0.4.0/braintools/fit/_losses_test.py +815 -0
- braintools-0.4.0/braintools/fit/_objective.py +283 -0
- braintools-0.4.0/braintools/fit/_objective_test.py +149 -0
- braintools-0.4.0/braintools/fit/_sweep.py +153 -0
- braintools-0.4.0/braintools/fit/_sweep_test.py +120 -0
- braintools-0.4.0/braintools/fit/_uncertainty.py +215 -0
- braintools-0.4.0/braintools/fit/_uncertainty_test.py +137 -0
- braintools-0.4.0/braintools/fit/losses.py +80 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_base.py +2 -2
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_impl.py +26 -8
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_impl_test.py +21 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_base.py +37 -17
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_base_test.py +97 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_basic.py +63 -38
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_basic_test.py +119 -5
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_orthogonal.py +46 -32
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_orthogonal_test.py +94 -43
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_variance_scaling.py +78 -36
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_variance_scaling_test.py +27 -3
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/__init__.py +17 -17
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_base.py +73 -21
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_basic.py +27 -10
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_pulses.py +39 -11
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_stochastic.py +40 -41
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_waveforms.py +13 -20
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_basic.py +17 -19
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_pulses.py +21 -22
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_stochastic.py +61 -37
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_stochastic_test.py +35 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_waveforms.py +25 -28
- braintools-0.4.0/braintools/input/_steps.py +33 -0
- braintools-0.4.0/braintools/input/_steps_test.py +110 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/__init__.py +50 -194
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_classification.py +31 -19
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_classification_test.py +11 -0
- braintools-0.4.0/braintools/metric/_deprecated.py +211 -0
- braintools-0.4.0/braintools/metric/_deprecated_test.py +267 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_fenchel_young.py +11 -8
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_pairwise.py +22 -15
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_pairwise_test.py +29 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_ranking.py +7 -2
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_regression.py +29 -20
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_regression_test.py +37 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_smoothing.py +9 -5
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_smoothing_test.py +12 -1
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_util.py +3 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/__init__.py +58 -1
- braintools-0.2.0/braintools/optim/_optax_lr_scheduler.py → braintools-0.4.0/braintools/optim/_lr_scheduler.py +905 -392
- braintools-0.2.0/braintools/optim/_optax_lr_scheduler_test.py → braintools-0.4.0/braintools/optim/_lr_scheduler_test.py +359 -8
- braintools-0.4.0/braintools/optim/_multistart.py +539 -0
- braintools-0.4.0/braintools/optim/_multistart_test.py +386 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_nevergrad_optimizer.py +70 -46
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_nevergrad_optimizer_test.py +142 -0
- braintools-0.4.0/braintools/optim/_online.py +468 -0
- braintools-0.4.0/braintools/optim/_online_test.py +373 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_optax_optimizer.py +643 -369
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_optax_optimizer_test.py +740 -0
- braintools-0.4.0/braintools/optim/_regression.py +605 -0
- braintools-0.4.0/braintools/optim/_regression_test.py +476 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_scipy_optimizer.py +48 -24
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_scipy_optimizer_test.py +68 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_sofo_optimizer.py +11 -4
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_sofo_optimizer_test.py +120 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_state_uniquifier.py +88 -61
- {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/__init__.py +71 -66
- {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_dde_integrator.py +39 -22
- {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_dde_integrator_test.py +120 -0
- braintools-0.4.0/braintools/quad/_imex_integrator.py +276 -0
- braintools-0.4.0/braintools/quad/_imex_integrator_test.py +282 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_ode_integrator.py +11 -3
- braintools-0.4.0/braintools/quad/_ode_integrator_test.py +346 -0
- braintools-0.4.0/braintools/quad/_odeint.py +259 -0
- braintools-0.4.0/braintools/quad/_odeint_test.py +300 -0
- braintools-0.4.0/braintools/quad/_registry.py +324 -0
- braintools-0.4.0/braintools/quad/_registry_test.py +145 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/quad/_sde_integrator.py +36 -26
- braintools-0.4.0/braintools/quad/_sde_integrator_test.py +504 -0
- braintools-0.4.0/braintools/quad/_solve_ivp.py +588 -0
- braintools-0.4.0/braintools/quad/_solve_ivp_test.py +492 -0
- {braintools-0.2.0/braintools → braintools-0.4.0/braintools/spike}/__init__.py +34 -45
- braintools-0.4.0/braintools/spike/_bitwise.py +433 -0
- braintools-0.4.0/braintools/spike/_bitwise_test.py +172 -0
- braintools-0.4.0/braintools/spike/_convert.py +100 -0
- braintools-0.4.0/braintools/spike/_convert_test.py +50 -0
- braintools-0.4.0/braintools/spike/_encoder.py +1116 -0
- braintools-0.2.0/braintools/_spike_encoder_test.py → braintools-0.4.0/braintools/spike/_encoder_test.py +244 -46
- braintools-0.4.0/braintools/spike/_spike_trains.py +1033 -0
- braintools-0.4.0/braintools/spike/_spike_trains_test.py +599 -0
- braintools-0.4.0/braintools/spike/_tuning.py +104 -0
- braintools-0.4.0/braintools/spike/_tuning_test.py +130 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/__init__.py +10 -8
- {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_base.py +58 -60
- {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_base_test.py +64 -18
- {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_impl.py +254 -197
- {braintools-0.2.0 → braintools-0.4.0}/braintools/surrogate/_impl_test.py +716 -23
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/__init__.py +36 -27
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_callbacks.py +475 -91
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_callbacks_test.py +188 -9
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_checkpoint.py +109 -19
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_dataloader.py +161 -60
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_dataloader_test.py +45 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_distributed.py +121 -45
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_distributed_test.py +87 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_loggers.py +89 -27
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_loggers_test.py +323 -1
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_module.py +83 -34
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_module_test.py +8 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_progress.py +57 -11
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_trainer.py +415 -67
- braintools-0.4.0/braintools/trainer/_trainer_test.py +2251 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/tree.py +212 -31
- {braintools-0.2.0 → braintools-0.4.0}/braintools/tree_test.py +23 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/__init__.py +2 -2
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_animation.py +5 -1
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_animation_test.py +15 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_colormaps.py +15 -14
- braintools-0.2.0/braintools/visualize/_colormaps_extra_test.py → braintools-0.4.0/braintools/visualize/_colormaps_test.py +96 -4
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_interactive.py +112 -106
- braintools-0.2.0/braintools/visualize/_interactive_extra_test.py → braintools-0.4.0/braintools/visualize/_interactive_test.py +103 -4
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_neural.py +259 -111
- braintools-0.4.0/braintools/visualize/_neural_test.py +926 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_plots.py +122 -66
- braintools-0.4.0/braintools/visualize/_plots_test.py +701 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_statistical.py +118 -72
- braintools-0.2.0/braintools/visualize/_statistical_extra_test.py → braintools-0.4.0/braintools/visualize/_statistical_test.py +309 -2
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_three_d.py +204 -58
- braintools-0.4.0/braintools/visualize/_three_d_test.py +609 -0
- braintools-0.4.0/braintools/visualize/_utils.py +110 -0
- braintools-0.4.0/braintools/visualize/_utils_test.py +84 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/PKG-INFO +62 -15
- {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/SOURCES.txt +106 -36
- {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/requires.txt +34 -2
- {braintools-0.2.0 → braintools-0.4.0}/pyproject.toml +68 -8
- braintools-0.2.0/README.md +0 -92
- braintools-0.2.0/braintools/_spike_encoder.py +0 -781
- braintools-0.2.0/braintools/_spike_operation.py +0 -215
- braintools-0.2.0/braintools/_spike_operation_test.py +0 -93
- braintools-0.2.0/braintools/_typing_test.py +0 -173
- braintools-0.2.0/braintools/cogtask/_version.py +0 -18
- braintools-0.2.0/braintools/cogtask/task_variable_length_test.py +0 -290
- braintools-0.2.0/braintools/cogtask/tasks/decision_making_test.py +0 -169
- braintools-0.2.0/braintools/conn/_spatial_test.py +0 -434
- braintools-0.2.0/braintools/file/_file_comprehensive_test.py +0 -429
- braintools-0.2.0/braintools/file/_matfile_extra_test.py +0 -217
- braintools-0.2.0/braintools/file/_msg_checkpoint_async_test.py +0 -198
- braintools-0.2.0/braintools/file/_msg_checkpoint_extra_test.py +0 -525
- braintools-0.2.0/braintools/file/_msg_checkpoint_test.py +0 -453
- braintools-0.2.0/braintools/input/_deprecation.py +0 -142
- braintools-0.2.0/braintools/metric/_correlation.py +0 -604
- braintools-0.2.0/braintools/metric/_correlation_test.py +0 -621
- braintools-0.2.0/braintools/metric/_firings.py +0 -1003
- braintools-0.2.0/braintools/metric/_firings_test.py +0 -456
- braintools-0.2.0/braintools/optim/_audit_fixes_test.py +0 -851
- braintools-0.2.0/braintools/quad/_imex_integrator.py +0 -237
- braintools-0.2.0/braintools/quad/_imex_integrator_test.py +0 -161
- braintools-0.2.0/braintools/quad/_ode_integrator_test.py +0 -180
- braintools-0.2.0/braintools/quad/_quad_coverage_test.py +0 -368
- braintools-0.2.0/braintools/quad/_quad_regression_test.py +0 -214
- braintools-0.2.0/braintools/quad/_sde_integrator_test.py +0 -207
- braintools-0.2.0/braintools/surrogate/_correctness_test.py +0 -388
- braintools-0.2.0/braintools/surrogate/_impl_extra_test.py +0 -307
- braintools-0.2.0/braintools/trainer/_loggers_backends_test.py +0 -344
- braintools-0.2.0/braintools/trainer/_trainer_audit_test.py +0 -634
- braintools-0.2.0/braintools/trainer/_trainer_extra_test.py +0 -732
- braintools-0.2.0/braintools/trainer/_trainer_test.py +0 -349
- braintools-0.2.0/braintools/visualize/_audit_fixes_test.py +0 -310
- braintools-0.2.0/braintools/visualize/_colormaps_test.py +0 -59
- braintools-0.2.0/braintools/visualize/_interactive_test.py +0 -57
- braintools-0.2.0/braintools/visualize/_neural_extra_test.py +0 -390
- braintools-0.2.0/braintools/visualize/_neural_test.py +0 -116
- braintools-0.2.0/braintools/visualize/_plots_extra_test.py +0 -336
- braintools-0.2.0/braintools/visualize/_plots_test.py +0 -72
- braintools-0.2.0/braintools/visualize/_statistical_test.py +0 -121
- braintools-0.2.0/braintools/visualize/_three_d_extra_test.py +0 -267
- braintools-0.2.0/braintools/visualize/_three_d_test.py +0 -63
- braintools-0.2.0/braintools/visualize/_visualize_test.py +0 -72
- {braintools-0.2.0 → braintools-0.4.0}/LICENSE +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/_typing.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/conditional_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/context_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/label_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/motor_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/cogtask/tasks/reasoning_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/__init__.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_distance_base_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_composite.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_composite_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_with_distance.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/init/_init_with_distance_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_base_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_basic_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_pulses_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_stochastic_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_composable_waveforms_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_basic_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_pulses_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/input/_functional_waveforms_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_fenchel_young_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/metric/_ranking_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_base.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/optim/_state_uniquifier_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/py.typed +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_checkpoint_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/trainer/_progress_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_figures.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools/visualize/_figures_test.py +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/dependency_links.txt +0 -0
- {braintools-0.2.0 → braintools-0.4.0}/braintools.egg-info/top_level.txt +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
- **
|
|
300
|
-
- **
|
|
301
|
-
- **
|
|
302
|
-
- **
|
|
303
|
-
- **
|
|
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
|
|
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
|
+
]
|