diff --git a/.github/labeler.yml b/.github/labeler.yml index 587a2176a..7f475a935 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -4,7 +4,7 @@ # Documentation documentation: - changed-files: - - any-glob-to-any-file: ['docs_version2_version2/**/*', 'docs_version2/**/*', '**/*.md', '**/*.rst'] + - any-glob-to-any-file: ['docs_version2_version2/**/*', 'docs_classic/**/*', '**/*.md', '**/*.rst'] # CI/CD ci-cd: diff --git a/.gitignore b/.gitignore index feb7547e5..528109d43 100644 --- a/.gitignore +++ b/.gitignore @@ -24,34 +24,34 @@ extensions/cmake-build-debug BrainPyExamples/ BrainModels/ book/ -docs_version2/examples -docs_version2/apis/jaxsetting.rst -docs_version2/quickstart/data +docs_classic/examples +docs_classic/apis/jaxsetting.rst +docs_classic/quickstart/data examples/recurrent_neural_network/neurogym develop/iconip_paper develop/benchmark/COBA/results develop/test develop/outputdir -docs_version2/tutorial_math/data -docs_version2/tutorial_simulation/data +docs_classic/tutorial_math/data +docs_classic/tutorial_simulation/data -docs_version2/images/numpybrain_arch.pptx -docs_version2/images/synapses_index.pdf -docs_version2/images/synapses_index.xlsx -docs_version2/images/neuron_structure.xlsx -docs_version2/images/neuron_structure.pdf -docs_version2/images/connection_methods.pptx +docs_classic/images/numpybrain_arch.pptx +docs_classic/images/synapses_index.pdf +docs_classic/images/synapses_index.xlsx +docs_classic/images/neuron_structure.xlsx +docs_classic/images/neuron_structure.pdf +docs_classic/images/connection_methods.pptx */_autosummary */generated -docs_version2/apis/auto -docs_version2/quickstart/.ipynb_checkpoints +docs_classic/apis/auto +docs_classic/quickstart/.ipynb_checkpoints -docs_version2/apis/_autosummary -docs_version2/apis/generated -docs_version2/apis/math/generated -docs_version2/apis/integrators/generated +docs_classic/apis/_autosummary +docs_classic/apis/generated +docs_classic/apis/math/generated +docs_classic/apis/integrators/generated develop/benchmark/COBA/brian2* develop/benchmark/COBA/annarchy* @@ -65,20 +65,20 @@ develop/benchmark/CUBA/brian2* \#*\# *.pyc .DS_Store -docs_version2/_autosummary -docs_version2/generated -docs_version2/_build +docs_classic/_autosummary +docs_classic/generated +docs_classic/_build dist/ build/ *.egg-info .idea -docs_version2/images/logo1.tif -docs_version2/images/logo2.tif -docs_version2/images/logo3.tif -docs_version2/images/logo4.tif +docs_classic/images/logo1.tif +docs_classic/images/logo2.tif +docs_classic/images/logo3.tif +docs_classic/images/logo4.tif */__pycache__ -docs_version2/c4_examples/ +docs_classic/c4_examples/ __pycache__/ @@ -148,7 +148,7 @@ instance/ .scrapy # Sphinx documentation -docs_version2/_build/ +docs_classic/_build/ # PyBuilder .pybuilder/ @@ -216,25 +216,25 @@ dmypy.json # Cython debug symbols cython_debug/ -/docs_version2/apis/simulation/generated/ +/docs_classic/apis/simulation/generated/ !/brainpy/dyn/tests/data/ /examples/dynamics_simulation/data/ /examples/training_snn_models/logs/T100_b64_lr0.001/ /examples/training_snn_models/logs/ /examples/training_snn_models/data/ -/docs_version2/tutorial_advanced/data/ +/docs_classic/tutorial_advanced/data/ /my_tests/ /examples/dynamics_simulation/Joglekar_2018_data/ -/docs_version2/apis/deprecated/generated/ +/docs_classic/apis/deprecated/generated/ /bugs/ /dev/ /.claude/ -/docs_version2/_static/logos/ +/docs_classic/_static/logos/ /docs/_static/logos/ /docs/_build/ /docs/changelog.md -/docs_state_based/_build/ -/docs_state_based/_static/logos/ -/docs_state_based/changelog.md -/examples_version2/dynamics_training/data/ +/docs_state/_build/ +/docs_state/_static/logos/ +/docs_state/changelog.md +/examples_classic/dynamics_training/data/ /docs/ diff --git a/README.md b/README.md index 1e70d868e..e178bf1d2 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,6 @@ BrainPy is a flexible, efficient, and extensible framework for computational neu - **Ecosystem**: https://brainmodeling.readthedocs.io/ -``BrainPy>=3.0.0`` is rewritten based on [brainstate](https://github.com/chaobrain/brainstate) since August 2025, please learn [brainstate documentation](https://brainstate.readthedocs.io/) for the latest updates. - - ## Installation BrainPy is based on Python (>=3.10) and can be installed on Linux (Ubuntu 16.04 or later), macOS (10.12 or later), and Windows platforms. diff --git a/brainpy/__init__.py b/brainpy/__init__.py index b031712bf..bf86e5d17 100644 --- a/brainpy/__init__.py +++ b/brainpy/__init__.py @@ -142,7 +142,7 @@ ArrayCollector as ArrayCollector, Collector as Collector, ) - +from brainpy import state from brainpy.deprecations import deprecation_getattr @@ -151,6 +151,7 @@ if __name__ == '__main__': + state connect initialize, # weight initialization optim, # gradient descent optimizers diff --git a/brainpy/inputs/currents.py b/brainpy/inputs/currents.py index 087d2494a..09d3f58fe 100644 --- a/brainpy/inputs/currents.py +++ b/brainpy/inputs/currents.py @@ -21,9 +21,12 @@ __all__ = [ 'section_input', - 'constant_input', 'constant_current', - 'spike_input', 'spike_current', - 'ramp_input', 'ramp_current', + 'constant_input', + 'constant_current', + 'spike_input', + 'spike_current', + 'ramp_input', + 'ramp_current', 'wiener_process', 'ou_process', 'sinusoidal_input', diff --git a/brainpy/state_based/__init__.py b/brainpy/state/__init__.py similarity index 99% rename from brainpy/state_based/__init__.py rename to brainpy/state/__init__.py index f060b29b4..05fa5fedb 100644 --- a/brainpy/state_based/__init__.py +++ b/brainpy/state/__init__.py @@ -43,3 +43,4 @@ if __name__ == '__main__': mixin + diff --git a/brainpy/state_based/_base.py b/brainpy/state/_base.py similarity index 98% rename from brainpy/state_based/_base.py rename to brainpy/state/_base.py index f7fd19f55..d74737ec9 100644 --- a/brainpy/state_based/_base.py +++ b/brainpy/state/_base.py @@ -314,7 +314,7 @@ class Synapse(brainstate.nn.Dynamics): .. code-block:: python - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> import braintools @@ -343,7 +343,7 @@ class Synapse(brainstate.nn.Dynamics): .. code-block:: python - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> import jax @@ -368,7 +368,7 @@ class Synapse(brainstate.nn.Dynamics): .. code-block:: python - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> @@ -409,7 +409,7 @@ class Synapse(brainstate.nn.Dynamics): .. code-block:: python - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> diff --git a/brainpy/state_based/_base_test.py b/brainpy/state/_base_test.py similarity index 99% rename from brainpy/state_based/_base_test.py rename to brainpy/state/_base_test.py index ffe178c43..b378ed55d 100644 --- a/brainpy/state_based/_base_test.py +++ b/brainpy/state/_base_test.py @@ -20,7 +20,7 @@ import brainunit as u import jax.numpy as jnp -from brainpy.state_based import Neuron, Synapse +from brainpy.state import Neuron, Synapse class TestNeuronBaseClass(unittest.TestCase): diff --git a/brainpy/state_based/_exponential.py b/brainpy/state/_exponential.py similarity index 100% rename from brainpy/state_based/_exponential.py rename to brainpy/state/_exponential.py diff --git a/brainpy/state_based/_inputs.py b/brainpy/state/_inputs.py similarity index 100% rename from brainpy/state_based/_inputs.py rename to brainpy/state/_inputs.py diff --git a/brainpy/state_based/_lif.py b/brainpy/state/_lif.py similarity index 98% rename from brainpy/state_based/_lif.py rename to brainpy/state/_lif.py index 430b57f42..0a4eb164e 100644 --- a/brainpy/state_based/_lif.py +++ b/brainpy/state/_lif.py @@ -74,12 +74,12 @@ class IF(Neuron): Examples -------- - >>> import brainpy.state_based as brainpy + >>> import brainpy >>> import brainstate >>> import brainunit as u >>> >>> # Create an IF neuron layer with 10 neurons - >>> if_neuron = brainpy.IF(10, tau=8*u.ms, V_th=1.2*u.mV) + >>> if_neuron = brainpy.state.IF(10, tau=8*u.ms, V_th=1.2*u.mV) >>> >>> # Initialize the state >>> if_neuron.init_state(batch_size=1) @@ -89,7 +89,7 @@ class IF(Neuron): >>> >>> # Create a network with IF neurons >>> network = brainstate.nn.Sequential([ - ... brainpy.IF(100, tau=5.0*u.ms), + ... brainpy.state.IF(100, tau=5.0*u.ms), ... brainstate.nn.Linear(100, 10) ... ]) @@ -207,7 +207,7 @@ class LIF(Neuron): Examples -------- - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> @@ -344,7 +344,7 @@ class LIFRef(Neuron): Examples -------- - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> @@ -512,7 +512,7 @@ class ALIF(Neuron): Examples -------- - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainstate >>> import brainunit as u >>> diff --git a/brainpy/state_based/_lif_test.py b/brainpy/state/_lif_test.py similarity index 99% rename from brainpy/state_based/_lif_test.py rename to brainpy/state/_lif_test.py index 1d7aabf46..ae9e010ee 100644 --- a/brainpy/state_based/_lif_test.py +++ b/brainpy/state/_lif_test.py @@ -23,7 +23,7 @@ import jax import jax.numpy as jnp -from brainpy.state_based import IF, LIF, ALIF +from brainpy.state import IF, LIF, ALIF class TestNeuron(unittest.TestCase): diff --git a/brainpy/state_based/_misc.py b/brainpy/state/_misc.py similarity index 100% rename from brainpy/state_based/_misc.py rename to brainpy/state/_misc.py diff --git a/brainpy/state_based/_projection.py b/brainpy/state/_projection.py similarity index 100% rename from brainpy/state_based/_projection.py rename to brainpy/state/_projection.py diff --git a/brainpy/state_based/_readout.py b/brainpy/state/_readout.py similarity index 100% rename from brainpy/state_based/_readout.py rename to brainpy/state/_readout.py diff --git a/brainpy/state_based/_readout_test.py b/brainpy/state/_readout_test.py similarity index 98% rename from brainpy/state_based/_readout_test.py rename to brainpy/state/_readout_test.py index c9ba068c3..87e427d49 100644 --- a/brainpy/state_based/_readout_test.py +++ b/brainpy/state/_readout_test.py @@ -21,7 +21,7 @@ import brainunit as u import jax.numpy as jnp -import brainpy.state_based as brainpy +import brainpy.state as brainpy class TestReadoutModels(unittest.TestCase): diff --git a/brainpy/state_based/_stp.py b/brainpy/state/_stp.py similarity index 100% rename from brainpy/state_based/_stp.py rename to brainpy/state/_stp.py diff --git a/brainpy/state_based/_synapse.py b/brainpy/state/_synapse.py similarity index 100% rename from brainpy/state_based/_synapse.py rename to brainpy/state/_synapse.py diff --git a/brainpy/state_based/_synapse_test.py b/brainpy/state/_synapse_test.py similarity index 99% rename from brainpy/state_based/_synapse_test.py rename to brainpy/state/_synapse_test.py index 7af8500a6..4154bd9df 100644 --- a/brainpy/state_based/_synapse_test.py +++ b/brainpy/state/_synapse_test.py @@ -21,7 +21,7 @@ import jax.numpy as jnp import pytest -from brainpy.state_based import Expon, STP, STD +from brainpy.state import Expon, STP, STD class TestSynapse(unittest.TestCase): diff --git a/brainpy/state_based/_synaptic_projection.py b/brainpy/state/_synaptic_projection.py similarity index 99% rename from brainpy/state_based/_synaptic_projection.py rename to brainpy/state/_synaptic_projection.py index 6249eae6c..e291100c5 100644 --- a/brainpy/state_based/_synaptic_projection.py +++ b/brainpy/state/_synaptic_projection.py @@ -247,7 +247,7 @@ class AsymmetryGapJunction(Projection): Examples -------- - >>> import brainpy.state_based as brainpy + >>> import brainpy.state as brainpy >>> import brainunit as u >>> import numpy as np >>> diff --git a/brainpy/state_based/_synouts.py b/brainpy/state/_synouts.py similarity index 100% rename from brainpy/state_based/_synouts.py rename to brainpy/state/_synouts.py diff --git a/brainpy/state_based/_synouts_test.py b/brainpy/state/_synouts_test.py similarity index 98% rename from brainpy/state_based/_synouts_test.py rename to brainpy/state/_synouts_test.py index 0d55b13a7..b06e71cbf 100644 --- a/brainpy/state_based/_synouts_test.py +++ b/brainpy/state/_synouts_test.py @@ -20,7 +20,7 @@ import jax.numpy as jnp import numpy as np -import brainpy.state_based as brainpy +import brainpy.state as brainpy class TestSynOutModels(unittest.TestCase): diff --git a/docs/conf.py b/docs/conf.py index 172625f69..4ceca5048 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -30,13 +30,13 @@ build_version = os.environ.get('CURRENT_VERSION', 'v2') if build_version == 'v2': shutil.copytree( - os.path.join(os.path.dirname(__file__), '../docs_version2'), + os.path.join(os.path.dirname(__file__), '../docs_classic'), os.path.join(os.path.dirname(__file__)), dirs_exist_ok=True ) else: shutil.copytree( - os.path.join(os.path.dirname(__file__), '../docs_state_based'), + os.path.join(os.path.dirname(__file__), '../docs_state'), os.path.join(os.path.dirname(__file__)), dirs_exist_ok=True ) diff --git a/docs_version2/FAQ.rst b/docs_classic/FAQ.rst similarity index 100% rename from docs_version2/FAQ.rst rename to docs_classic/FAQ.rst diff --git a/docs_version2/README.md b/docs_classic/README.md similarity index 99% rename from docs_version2/README.md rename to docs_classic/README.md index 6cbbb4f79..34b5fe4a5 100644 --- a/docs_version2/README.md +++ b/docs_classic/README.md @@ -39,7 +39,7 @@ import brainpy.math as bm This documentation is written in reStructuredText (RST) format and can be built using Sphinx: ```bash -cd docs_version2 +cd docs_classic make html # or use the appropriate build script ``` diff --git a/docs_version2/_static/DOGDecay.png b/docs_classic/_static/DOGDecay.png similarity index 100% rename from docs_version2/_static/DOGDecay.png rename to docs_classic/_static/DOGDecay.png diff --git a/docs_version2/_static/E_I_balance_network.png b/docs_classic/_static/E_I_balance_network.png similarity index 100% rename from docs_version2/_static/E_I_balance_network.png rename to docs_classic/_static/E_I_balance_network.png diff --git a/docs_version2/_static/HH-circuit.png b/docs_classic/_static/HH-circuit.png similarity index 100% rename from docs_version2/_static/HH-circuit.png rename to docs_classic/_static/HH-circuit.png diff --git a/docs_version2/_static/Hodgkin_Huxley_Limit_Cycle.png b/docs_classic/_static/Hodgkin_Huxley_Limit_Cycle.png similarity index 100% rename from docs_version2/_static/Hodgkin_Huxley_Limit_Cycle.png rename to docs_classic/_static/Hodgkin_Huxley_Limit_Cycle.png diff --git a/docs_version2/_static/Hodgkin_Huxley_bifurcation.png b/docs_classic/_static/Hodgkin_Huxley_bifurcation.png similarity index 100% rename from docs_version2/_static/Hodgkin_Huxley_bifurcation.png rename to docs_classic/_static/Hodgkin_Huxley_bifurcation.png diff --git a/docs_version2/_static/Hodgkins_Huxley_bifurcation_by_I.gif b/docs_classic/_static/Hodgkins_Huxley_bifurcation_by_I.gif similarity index 100% rename from docs_version2/_static/Hodgkins_Huxley_bifurcation_by_I.gif rename to docs_classic/_static/Hodgkins_Huxley_bifurcation_by_I.gif diff --git a/docs_version2/_static/NG-RC-vs-Traditional-RC.png b/docs_classic/_static/NG-RC-vs-Traditional-RC.png similarity index 100% rename from docs_version2/_static/NG-RC-vs-Traditional-RC.png rename to docs_classic/_static/NG-RC-vs-Traditional-RC.png diff --git a/docs_version2/_static/Pinsky-Rinzel-model-illustration.png b/docs_classic/_static/Pinsky-Rinzel-model-illustration.png similarity index 100% rename from docs_version2/_static/Pinsky-Rinzel-model-illustration.png rename to docs_classic/_static/Pinsky-Rinzel-model-illustration.png diff --git a/docs_version2/_static/align_post.png b/docs_classic/_static/align_post.png similarity index 100% rename from docs_version2/_static/align_post.png rename to docs_classic/_static/align_post.png diff --git a/docs_version2/_static/align_pre.png b/docs_classic/_static/align_pre.png similarity index 100% rename from docs_version2/_static/align_pre.png rename to docs_classic/_static/align_pre.png diff --git a/docs_version2/_static/all2all.png b/docs_classic/_static/all2all.png similarity index 100% rename from docs_version2/_static/all2all.png rename to docs_classic/_static/all2all.png diff --git a/docs_version2/_static/conductance_model_diagram.png b/docs_classic/_static/conductance_model_diagram.png similarity index 100% rename from docs_version2/_static/conductance_model_diagram.png rename to docs_classic/_static/conductance_model_diagram.png diff --git a/docs_version2/_static/csr_matrix.png b/docs_classic/_static/csr_matrix.png similarity index 100% rename from docs_version2/_static/csr_matrix.png rename to docs_classic/_static/csr_matrix.png diff --git a/docs_version2/_static/dmnet_diagram.png b/docs_classic/_static/dmnet_diagram.png similarity index 100% rename from docs_version2/_static/dmnet_diagram.png rename to docs_classic/_static/dmnet_diagram.png diff --git a/docs_version2/_static/echo_state_net.png b/docs_classic/_static/echo_state_net.png similarity index 100% rename from docs_version2/_static/echo_state_net.png rename to docs_classic/_static/echo_state_net.png diff --git a/docs_version2/_static/esn.png b/docs_classic/_static/esn.png similarity index 100% rename from docs_version2/_static/esn.png rename to docs_classic/_static/esn.png diff --git a/docs_version2/_static/event_driven_matrix_multiplication.png b/docs_classic/_static/event_driven_matrix_multiplication.png similarity index 100% rename from docs_version2/_static/event_driven_matrix_multiplication.png rename to docs_classic/_static/event_driven_matrix_multiplication.png diff --git a/docs_version2/_static/example_synaptic_connection.png b/docs_classic/_static/example_synaptic_connection.png similarity index 100% rename from docs_version2/_static/example_synaptic_connection.png rename to docs_classic/_static/example_synaptic_connection.png diff --git a/docs_version2/_static/feedback_node.png b/docs_classic/_static/feedback_node.png similarity index 100% rename from docs_version2/_static/feedback_node.png rename to docs_classic/_static/feedback_node.png diff --git a/docs_version2/_static/feedforward_node.png b/docs_classic/_static/feedforward_node.png similarity index 100% rename from docs_version2/_static/feedforward_node.png rename to docs_classic/_static/feedforward_node.png diff --git a/docs_version2/_static/fixed_post_num.png b/docs_classic/_static/fixed_post_num.png similarity index 100% rename from docs_version2/_static/fixed_post_num.png rename to docs_classic/_static/fixed_post_num.png diff --git a/docs_version2/_static/fixed_pre_num.png b/docs_classic/_static/fixed_pre_num.png similarity index 100% rename from docs_version2/_static/fixed_pre_num.png rename to docs_classic/_static/fixed_pre_num.png diff --git a/docs_version2/_static/fixed_proab.png b/docs_classic/_static/fixed_proab.png similarity index 100% rename from docs_version2/_static/fixed_proab.png rename to docs_classic/_static/fixed_proab.png diff --git a/docs_version2/_static/gaussian_prob.png b/docs_classic/_static/gaussian_prob.png similarity index 100% rename from docs_version2/_static/gaussian_prob.png rename to docs_classic/_static/gaussian_prob.png diff --git a/docs_version2/_static/grid_N.png b/docs_classic/_static/grid_N.png similarity index 100% rename from docs_version2/_static/grid_N.png rename to docs_classic/_static/grid_N.png diff --git a/docs_version2/_static/grid_eight.png b/docs_classic/_static/grid_eight.png similarity index 100% rename from docs_version2/_static/grid_eight.png rename to docs_classic/_static/grid_eight.png diff --git a/docs_version2/_static/grid_four.png b/docs_classic/_static/grid_four.png similarity index 100% rename from docs_version2/_static/grid_four.png rename to docs_classic/_static/grid_four.png diff --git a/docs_version2/_static/izhikevich.jfif b/docs_classic/_static/izhikevich.jfif similarity index 100% rename from docs_version2/_static/izhikevich.jfif rename to docs_classic/_static/izhikevich.jfif diff --git a/docs_version2/_static/izhikevich_patterns.jfif b/docs_classic/_static/izhikevich_patterns.jfif similarity index 100% rename from docs_version2/_static/izhikevich_patterns.jfif rename to docs_classic/_static/izhikevich_patterns.jfif diff --git a/docs_version2/_static/joint_and_separate_equations.png b/docs_classic/_static/joint_and_separate_equations.png similarity index 100% rename from docs_version2/_static/joint_and_separate_equations.png rename to docs_classic/_static/joint_and_separate_equations.png diff --git a/docs_version2/_static/masked_matrix.png b/docs_classic/_static/masked_matrix.png similarity index 100% rename from docs_version2/_static/masked_matrix.png rename to docs_classic/_static/masked_matrix.png diff --git a/docs_version2/_static/matrix_broadcasting.png b/docs_classic/_static/matrix_broadcasting.png similarity index 100% rename from docs_version2/_static/matrix_broadcasting.png rename to docs_classic/_static/matrix_broadcasting.png diff --git a/docs_version2/_static/multiply_broadcasting.png b/docs_classic/_static/multiply_broadcasting.png similarity index 100% rename from docs_version2/_static/multiply_broadcasting.png rename to docs_classic/_static/multiply_broadcasting.png diff --git a/docs_version2/_static/node_specification.png b/docs_classic/_static/node_specification.png similarity index 100% rename from docs_version2/_static/node_specification.png rename to docs_classic/_static/node_specification.png diff --git a/docs_version2/_static/ode_Euler_method.svg b/docs_classic/_static/ode_Euler_method.svg similarity index 100% rename from docs_version2/_static/ode_Euler_method.svg rename to docs_classic/_static/ode_Euler_method.svg diff --git a/docs_version2/_static/ode_Heun2_Method_Diagram.jpg b/docs_classic/_static/ode_Heun2_Method_Diagram.jpg similarity index 100% rename from docs_version2/_static/ode_Heun2_Method_Diagram.jpg rename to docs_classic/_static/ode_Heun2_Method_Diagram.jpg diff --git a/docs_version2/_static/ode_Midpoint_method_illustration.png b/docs_classic/_static/ode_Midpoint_method_illustration.png similarity index 100% rename from docs_version2/_static/ode_Midpoint_method_illustration.png rename to docs_classic/_static/ode_Midpoint_method_illustration.png diff --git a/docs_version2/_static/one2one.png b/docs_classic/_static/one2one.png similarity index 100% rename from docs_version2/_static/one2one.png rename to docs_classic/_static/one2one.png diff --git a/docs_version2/_static/potassium_channel_equivalent_circuit.png b/docs_classic/_static/potassium_channel_equivalent_circuit.png similarity index 100% rename from docs_version2/_static/potassium_channel_equivalent_circuit.png rename to docs_classic/_static/potassium_channel_equivalent_circuit.png diff --git a/docs_version2/_static/pre2syn2post.png b/docs_classic/_static/pre2syn2post.png similarity index 100% rename from docs_version2/_static/pre2syn2post.png rename to docs_classic/_static/pre2syn2post.png diff --git a/docs_version2/_static/recurrent_node.png b/docs_classic/_static/recurrent_node.png similarity index 100% rename from docs_version2/_static/recurrent_node.png rename to docs_classic/_static/recurrent_node.png diff --git a/docs_version2/_static/sparse_connection_and_events.png b/docs_classic/_static/sparse_connection_and_events.png similarity index 100% rename from docs_version2/_static/sparse_connection_and_events.png rename to docs_classic/_static/sparse_connection_and_events.png diff --git a/docs_version2/_static/sparse_matrix_multiplication.png b/docs_classic/_static/sparse_matrix_multiplication.png similarity index 100% rename from docs_version2/_static/sparse_matrix_multiplication.png rename to docs_classic/_static/sparse_matrix_multiplication.png diff --git a/docs_version2/_static/stp.png b/docs_classic/_static/stp.png similarity index 100% rename from docs_version2/_static/stp.png rename to docs_classic/_static/stp.png diff --git a/docs_version2/_static/surrogate_gradient.png b/docs_classic/_static/surrogate_gradient.png similarity index 100% rename from docs_version2/_static/surrogate_gradient.png rename to docs_classic/_static/surrogate_gradient.png diff --git a/docs_version2/_static/syn-example-conn_mat.png b/docs_classic/_static/syn-example-conn_mat.png similarity index 100% rename from docs_version2/_static/syn-example-conn_mat.png rename to docs_classic/_static/syn-example-conn_mat.png diff --git a/docs_version2/_static/syn-example-post2pre.png b/docs_classic/_static/syn-example-post2pre.png similarity index 100% rename from docs_version2/_static/syn-example-post2pre.png rename to docs_classic/_static/syn-example-post2pre.png diff --git a/docs_version2/_static/syn-example-post2syn-1.png b/docs_classic/_static/syn-example-post2syn-1.png similarity index 100% rename from docs_version2/_static/syn-example-post2syn-1.png rename to docs_classic/_static/syn-example-post2syn-1.png diff --git a/docs_version2/_static/syn-example-post2syn-2.png b/docs_classic/_static/syn-example-post2syn-2.png similarity index 100% rename from docs_version2/_static/syn-example-post2syn-2.png rename to docs_classic/_static/syn-example-post2syn-2.png diff --git a/docs_version2/_static/syn-example-post2syn.png b/docs_classic/_static/syn-example-post2syn.png similarity index 100% rename from docs_version2/_static/syn-example-post2syn.png rename to docs_classic/_static/syn-example-post2syn.png diff --git a/docs_version2/_static/syn-example-post_slice_syn.png b/docs_classic/_static/syn-example-post_slice_syn.png similarity index 100% rename from docs_version2/_static/syn-example-post_slice_syn.png rename to docs_classic/_static/syn-example-post_slice_syn.png diff --git a/docs_version2/_static/syn-example-pre2post.png b/docs_classic/_static/syn-example-pre2post.png similarity index 100% rename from docs_version2/_static/syn-example-pre2post.png rename to docs_classic/_static/syn-example-pre2post.png diff --git a/docs_version2/_static/syn-example-pre2syn-1.png b/docs_classic/_static/syn-example-pre2syn-1.png similarity index 100% rename from docs_version2/_static/syn-example-pre2syn-1.png rename to docs_classic/_static/syn-example-pre2syn-1.png diff --git a/docs_version2/_static/syn-example-pre2syn-2.png b/docs_classic/_static/syn-example-pre2syn-2.png similarity index 100% rename from docs_version2/_static/syn-example-pre2syn-2.png rename to docs_classic/_static/syn-example-pre2syn-2.png diff --git a/docs_version2/_static/syn-example-pre2syn.png b/docs_classic/_static/syn-example-pre2syn.png similarity index 100% rename from docs_version2/_static/syn-example-pre2syn.png rename to docs_classic/_static/syn-example-pre2syn.png diff --git a/docs_version2/_static/syn-example-pre_ids-post_ids.png b/docs_classic/_static/syn-example-pre_ids-post_ids.png similarity index 100% rename from docs_version2/_static/syn-example-pre_ids-post_ids.png rename to docs_classic/_static/syn-example-pre_ids-post_ids.png diff --git a/docs_version2/_static/syn-example-pre_slice_syn.png b/docs_classic/_static/syn-example-pre_slice_syn.png similarity index 100% rename from docs_version2/_static/syn-example-pre_slice_syn.png rename to docs_classic/_static/syn-example-pre_slice_syn.png diff --git a/docs_version2/_static/synapse_markov.png b/docs_classic/_static/synapse_markov.png similarity index 100% rename from docs_version2/_static/synapse_markov.png rename to docs_classic/_static/synapse_markov.png diff --git a/docs_version2/_static/synapses_and_weights.png b/docs_classic/_static/synapses_and_weights.png similarity index 100% rename from docs_version2/_static/synapses_and_weights.png rename to docs_classic/_static/synapses_and_weights.png diff --git a/docs_version2/_static/synapses_delay_state.png b/docs_classic/_static/synapses_delay_state.png similarity index 100% rename from docs_version2/_static/synapses_delay_state.png rename to docs_classic/_static/synapses_delay_state.png diff --git a/docs_version2/_static/synapses_index.png b/docs_classic/_static/synapses_index.png similarity index 100% rename from docs_version2/_static/synapses_index.png rename to docs_classic/_static/synapses_index.png diff --git a/docs_version2/_static/tensor_dataones.png b/docs_classic/_static/tensor_dataones.png similarity index 100% rename from docs_version2/_static/tensor_dataones.png rename to docs_classic/_static/tensor_dataones.png diff --git a/docs_version2/_static/tensor_dataones.svg b/docs_classic/_static/tensor_dataones.svg similarity index 100% rename from docs_version2/_static/tensor_dataones.svg rename to docs_classic/_static/tensor_dataones.svg diff --git a/docs_version2/_static/tensor_matrix_aggregation_row.png b/docs_classic/_static/tensor_matrix_aggregation_row.png similarity index 100% rename from docs_version2/_static/tensor_matrix_aggregation_row.png rename to docs_classic/_static/tensor_matrix_aggregation_row.png diff --git a/docs_version2/_static/tensor_plus_ones.png b/docs_classic/_static/tensor_plus_ones.png similarity index 100% rename from docs_version2/_static/tensor_plus_ones.png rename to docs_classic/_static/tensor_plus_ones.png diff --git a/docs_version2/_static/tensor_shape.png b/docs_classic/_static/tensor_shape.png similarity index 100% rename from docs_version2/_static/tensor_shape.png rename to docs_classic/_static/tensor_shape.png diff --git a/docs_version2/_static/tensor_sub_mult_divide.png b/docs_classic/_static/tensor_sub_mult_divide.png similarity index 100% rename from docs_version2/_static/tensor_sub_mult_divide.png rename to docs_classic/_static/tensor_sub_mult_divide.png diff --git a/docs_version2/_static/tensore_aggregation.png b/docs_classic/_static/tensore_aggregation.png similarity index 100% rename from docs_version2/_static/tensore_aggregation.png rename to docs_classic/_static/tensore_aggregation.png diff --git a/docs_version2/_templates/class_template.rst b/docs_classic/_templates/class_template.rst similarity index 100% rename from docs_version2/_templates/class_template.rst rename to docs_classic/_templates/class_template.rst diff --git a/docs_version2/_templates/classtemplate.rst b/docs_classic/_templates/classtemplate.rst similarity index 100% rename from docs_version2/_templates/classtemplate.rst rename to docs_classic/_templates/classtemplate.rst diff --git a/docs_version2/_templates/ion_template.rst b/docs_classic/_templates/ion_template.rst similarity index 100% rename from docs_version2/_templates/ion_template.rst rename to docs_classic/_templates/ion_template.rst diff --git a/docs_version2/advanced_tutorials.rst b/docs_classic/advanced_tutorials.rst similarity index 100% rename from docs_version2/advanced_tutorials.rst rename to docs_classic/advanced_tutorials.rst diff --git a/docs_version2/api.rst b/docs_classic/api.rst similarity index 100% rename from docs_version2/api.rst rename to docs_classic/api.rst diff --git a/docs_version2/apis/analysis.rst b/docs_classic/apis/analysis.rst similarity index 100% rename from docs_version2/apis/analysis.rst rename to docs_classic/apis/analysis.rst diff --git a/docs_version2/apis/brainpy.dyn.base.rst b/docs_classic/apis/brainpy.dyn.base.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.base.rst rename to docs_classic/apis/brainpy.dyn.base.rst diff --git a/docs_version2/apis/brainpy.dyn.channels.rst b/docs_classic/apis/brainpy.dyn.channels.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.channels.rst rename to docs_classic/apis/brainpy.dyn.channels.rst diff --git a/docs_version2/apis/brainpy.dyn.ions.rst b/docs_classic/apis/brainpy.dyn.ions.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.ions.rst rename to docs_classic/apis/brainpy.dyn.ions.rst diff --git a/docs_version2/apis/brainpy.dyn.neurons.rst b/docs_classic/apis/brainpy.dyn.neurons.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.neurons.rst rename to docs_classic/apis/brainpy.dyn.neurons.rst diff --git a/docs_version2/apis/brainpy.dyn.others.rst b/docs_classic/apis/brainpy.dyn.others.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.others.rst rename to docs_classic/apis/brainpy.dyn.others.rst diff --git a/docs_version2/apis/brainpy.dyn.outs.rst b/docs_classic/apis/brainpy.dyn.outs.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.outs.rst rename to docs_classic/apis/brainpy.dyn.outs.rst diff --git a/docs_version2/apis/brainpy.dyn.plasticity.rst b/docs_classic/apis/brainpy.dyn.plasticity.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.plasticity.rst rename to docs_classic/apis/brainpy.dyn.plasticity.rst diff --git a/docs_version2/apis/brainpy.dyn.projections.rst b/docs_classic/apis/brainpy.dyn.projections.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.projections.rst rename to docs_classic/apis/brainpy.dyn.projections.rst diff --git a/docs_version2/apis/brainpy.dyn.rates.rst b/docs_classic/apis/brainpy.dyn.rates.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.rates.rst rename to docs_classic/apis/brainpy.dyn.rates.rst diff --git a/docs_version2/apis/brainpy.dyn.synapses.rst b/docs_classic/apis/brainpy.dyn.synapses.rst similarity index 100% rename from docs_version2/apis/brainpy.dyn.synapses.rst rename to docs_classic/apis/brainpy.dyn.synapses.rst diff --git a/docs_version2/apis/brainpy.math.defaults.rst b/docs_classic/apis/brainpy.math.defaults.rst similarity index 100% rename from docs_version2/apis/brainpy.math.defaults.rst rename to docs_classic/apis/brainpy.math.defaults.rst diff --git a/docs_version2/apis/brainpy.math.delayvars.rst b/docs_classic/apis/brainpy.math.delayvars.rst similarity index 100% rename from docs_version2/apis/brainpy.math.delayvars.rst rename to docs_classic/apis/brainpy.math.delayvars.rst diff --git a/docs_version2/apis/brainpy.math.environment.rst b/docs_classic/apis/brainpy.math.environment.rst similarity index 100% rename from docs_version2/apis/brainpy.math.environment.rst rename to docs_classic/apis/brainpy.math.environment.rst diff --git a/docs_version2/apis/brainpy.math.event.rst b/docs_classic/apis/brainpy.math.event.rst similarity index 100% rename from docs_version2/apis/brainpy.math.event.rst rename to docs_classic/apis/brainpy.math.event.rst diff --git a/docs_version2/apis/brainpy.math.jitconn.rst b/docs_classic/apis/brainpy.math.jitconn.rst similarity index 100% rename from docs_version2/apis/brainpy.math.jitconn.rst rename to docs_classic/apis/brainpy.math.jitconn.rst diff --git a/docs_version2/apis/brainpy.math.modes.rst b/docs_classic/apis/brainpy.math.modes.rst similarity index 100% rename from docs_version2/apis/brainpy.math.modes.rst rename to docs_classic/apis/brainpy.math.modes.rst diff --git a/docs_version2/apis/brainpy.math.oo_transform.rst b/docs_classic/apis/brainpy.math.oo_transform.rst similarity index 100% rename from docs_version2/apis/brainpy.math.oo_transform.rst rename to docs_classic/apis/brainpy.math.oo_transform.rst diff --git a/docs_version2/apis/brainpy.math.op_register.rst b/docs_classic/apis/brainpy.math.op_register.rst similarity index 100% rename from docs_version2/apis/brainpy.math.op_register.rst rename to docs_classic/apis/brainpy.math.op_register.rst diff --git a/docs_version2/apis/brainpy.math.pre_syn_post.rst b/docs_classic/apis/brainpy.math.pre_syn_post.rst similarity index 100% rename from docs_version2/apis/brainpy.math.pre_syn_post.rst rename to docs_classic/apis/brainpy.math.pre_syn_post.rst diff --git a/docs_version2/apis/brainpy.math.random.rst b/docs_classic/apis/brainpy.math.random.rst similarity index 100% rename from docs_version2/apis/brainpy.math.random.rst rename to docs_classic/apis/brainpy.math.random.rst diff --git a/docs_version2/apis/brainpy.math.rst b/docs_classic/apis/brainpy.math.rst similarity index 100% rename from docs_version2/apis/brainpy.math.rst rename to docs_classic/apis/brainpy.math.rst diff --git a/docs_version2/apis/brainpy.math.sharding.rst b/docs_classic/apis/brainpy.math.sharding.rst similarity index 100% rename from docs_version2/apis/brainpy.math.sharding.rst rename to docs_classic/apis/brainpy.math.sharding.rst diff --git a/docs_version2/apis/brainpy.math.sparse.rst b/docs_classic/apis/brainpy.math.sparse.rst similarity index 100% rename from docs_version2/apis/brainpy.math.sparse.rst rename to docs_classic/apis/brainpy.math.sparse.rst diff --git a/docs_version2/apis/brainpy.math.surrogate.rst b/docs_classic/apis/brainpy.math.surrogate.rst similarity index 100% rename from docs_version2/apis/brainpy.math.surrogate.rst rename to docs_classic/apis/brainpy.math.surrogate.rst diff --git a/docs_version2/apis/brainpy.rst b/docs_classic/apis/brainpy.rst similarity index 100% rename from docs_version2/apis/brainpy.rst rename to docs_classic/apis/brainpy.rst diff --git a/docs_version2/apis/connect.rst b/docs_classic/apis/connect.rst similarity index 100% rename from docs_version2/apis/connect.rst rename to docs_classic/apis/connect.rst diff --git a/docs_version2/apis/deprecated/channels.rst b/docs_classic/apis/deprecated/channels.rst similarity index 100% rename from docs_version2/apis/deprecated/channels.rst rename to docs_classic/apis/deprecated/channels.rst diff --git a/docs_version2/apis/deprecated/layers.rst b/docs_classic/apis/deprecated/layers.rst similarity index 100% rename from docs_version2/apis/deprecated/layers.rst rename to docs_classic/apis/deprecated/layers.rst diff --git a/docs_version2/apis/deprecated/neurons.rst b/docs_classic/apis/deprecated/neurons.rst similarity index 100% rename from docs_version2/apis/deprecated/neurons.rst rename to docs_classic/apis/deprecated/neurons.rst diff --git a/docs_version2/apis/deprecated/rates.rst b/docs_classic/apis/deprecated/rates.rst similarity index 100% rename from docs_version2/apis/deprecated/rates.rst rename to docs_classic/apis/deprecated/rates.rst diff --git a/docs_version2/apis/deprecated/synapses.rst b/docs_classic/apis/deprecated/synapses.rst similarity index 100% rename from docs_version2/apis/deprecated/synapses.rst rename to docs_classic/apis/deprecated/synapses.rst diff --git a/docs_version2/apis/deprecated/synouts.rst b/docs_classic/apis/deprecated/synouts.rst similarity index 100% rename from docs_version2/apis/deprecated/synouts.rst rename to docs_classic/apis/deprecated/synouts.rst diff --git a/docs_version2/apis/deprecated/synplast.rst b/docs_classic/apis/deprecated/synplast.rst similarity index 100% rename from docs_version2/apis/deprecated/synplast.rst rename to docs_classic/apis/deprecated/synplast.rst diff --git a/docs_version2/apis/dnn.rst b/docs_classic/apis/dnn.rst similarity index 100% rename from docs_version2/apis/dnn.rst rename to docs_classic/apis/dnn.rst diff --git a/docs_version2/apis/dyn.rst b/docs_classic/apis/dyn.rst similarity index 100% rename from docs_version2/apis/dyn.rst rename to docs_classic/apis/dyn.rst diff --git a/docs_version2/apis/encoding.rst b/docs_classic/apis/encoding.rst similarity index 100% rename from docs_version2/apis/encoding.rst rename to docs_classic/apis/encoding.rst diff --git a/docs_version2/apis/initialize.rst b/docs_classic/apis/initialize.rst similarity index 100% rename from docs_version2/apis/initialize.rst rename to docs_classic/apis/initialize.rst diff --git a/docs_version2/apis/inputs.rst b/docs_classic/apis/inputs.rst similarity index 100% rename from docs_version2/apis/inputs.rst rename to docs_classic/apis/inputs.rst diff --git a/docs_version2/apis/integrators.rst b/docs_classic/apis/integrators.rst similarity index 100% rename from docs_version2/apis/integrators.rst rename to docs_classic/apis/integrators.rst diff --git a/docs_version2/apis/losses.rst b/docs_classic/apis/losses.rst similarity index 100% rename from docs_version2/apis/losses.rst rename to docs_classic/apis/losses.rst diff --git a/docs_version2/apis/math.rst b/docs_classic/apis/math.rst similarity index 100% rename from docs_version2/apis/math.rst rename to docs_classic/apis/math.rst diff --git a/docs_version2/apis/measure.rst b/docs_classic/apis/measure.rst similarity index 100% rename from docs_version2/apis/measure.rst rename to docs_classic/apis/measure.rst diff --git a/docs_version2/apis/mixin.rst b/docs_classic/apis/mixin.rst similarity index 100% rename from docs_version2/apis/mixin.rst rename to docs_classic/apis/mixin.rst diff --git a/docs_version2/apis/optim.rst b/docs_classic/apis/optim.rst similarity index 100% rename from docs_version2/apis/optim.rst rename to docs_classic/apis/optim.rst diff --git a/docs_version2/apis/running.rst b/docs_classic/apis/running.rst similarity index 100% rename from docs_version2/apis/running.rst rename to docs_classic/apis/running.rst diff --git a/docs_version2/auto_generater.py b/docs_classic/auto_generater.py similarity index 100% rename from docs_version2/auto_generater.py rename to docs_classic/auto_generater.py diff --git a/docs_version2/brainpy-changelog.md b/docs_classic/brainpy-changelog.md similarity index 100% rename from docs_version2/brainpy-changelog.md rename to docs_classic/brainpy-changelog.md diff --git a/docs_version2/brainpylib-changelog.md b/docs_classic/brainpylib-changelog.md similarity index 100% rename from docs_version2/brainpylib-changelog.md rename to docs_classic/brainpylib-changelog.md diff --git a/docs_version2/core_concept/brainpy_dynamical_system.ipynb b/docs_classic/core_concept/brainpy_dynamical_system.ipynb similarity index 100% rename from docs_version2/core_concept/brainpy_dynamical_system.ipynb rename to docs_classic/core_concept/brainpy_dynamical_system.ipynb diff --git a/docs_version2/core_concept/brainpy_transform_concept.ipynb b/docs_classic/core_concept/brainpy_transform_concept.ipynb similarity index 100% rename from docs_version2/core_concept/brainpy_transform_concept.ipynb rename to docs_classic/core_concept/brainpy_transform_concept.ipynb diff --git a/docs_version2/core_concept/imgs/dynamical_system.png b/docs_classic/core_concept/imgs/dynamical_system.png similarity index 100% rename from docs_version2/core_concept/imgs/dynamical_system.png rename to docs_classic/core_concept/imgs/dynamical_system.png diff --git a/docs_version2/core_concept/imgs/dynamical_system_and_dsrunner.png b/docs_classic/core_concept/imgs/dynamical_system_and_dsrunner.png similarity index 100% rename from docs_version2/core_concept/imgs/dynamical_system_and_dsrunner.png rename to docs_classic/core_concept/imgs/dynamical_system_and_dsrunner.png diff --git a/docs_version2/core_concept/imgs/net_with_two_linear.png b/docs_classic/core_concept/imgs/net_with_two_linear.png similarity index 100% rename from docs_version2/core_concept/imgs/net_with_two_linear.png rename to docs_classic/core_concept/imgs/net_with_two_linear.png diff --git a/docs_version2/core_concept/index.rst b/docs_classic/core_concept/index.rst similarity index 100% rename from docs_version2/core_concept/index.rst rename to docs_classic/core_concept/index.rst diff --git a/docs_version2/core_concepts.rst b/docs_classic/core_concepts.rst similarity index 100% rename from docs_version2/core_concepts.rst rename to docs_classic/core_concepts.rst diff --git a/docs_version2/index.rst b/docs_classic/index.rst similarity index 92% rename from docs_version2/index.rst rename to docs_classic/index.rst index ca06cdf88..8876d2970 100644 --- a/docs_version2/index.rst +++ b/docs_classic/index.rst @@ -114,11 +114,12 @@ Learn more :link: https://brainmodeling.readthedocs.io -.. note:: - BrainPy is still an experimental research project. - APIs may be changed over time. Please always keeps - in mind what BrainPy version you are using. + .. grid-item:: + :columns: 6 6 6 4 + .. card:: :material-regular:`settings;2em` ``brainpy.state`` module + :class-card: sd-text-black sd-bg-light + :link: https://brainpy-state.readthedocs.io/ ---- diff --git a/docs_version2/quickstart/analysis.ipynb b/docs_classic/quickstart/analysis.ipynb similarity index 100% rename from docs_version2/quickstart/analysis.ipynb rename to docs_classic/quickstart/analysis.ipynb diff --git a/docs_version2/quickstart/installation.rst b/docs_classic/quickstart/installation.rst similarity index 100% rename from docs_version2/quickstart/installation.rst rename to docs_classic/quickstart/installation.rst diff --git a/docs_version2/quickstart/simulation.ipynb b/docs_classic/quickstart/simulation.ipynb similarity index 100% rename from docs_version2/quickstart/simulation.ipynb rename to docs_classic/quickstart/simulation.ipynb diff --git a/docs_version2/quickstart/training.ipynb b/docs_classic/quickstart/training.ipynb similarity index 100% rename from docs_version2/quickstart/training.ipynb rename to docs_classic/quickstart/training.ipynb diff --git a/docs_version2/toolboxes.rst b/docs_classic/toolboxes.rst similarity index 100% rename from docs_version2/toolboxes.rst rename to docs_classic/toolboxes.rst diff --git a/docs_version2/tutorial_FAQs/brainpy_ecosystem.ipynb b/docs_classic/tutorial_FAQs/brainpy_ecosystem.ipynb similarity index 100% rename from docs_version2/tutorial_FAQs/brainpy_ecosystem.ipynb rename to docs_classic/tutorial_FAQs/brainpy_ecosystem.ipynb diff --git a/docs_version2/tutorial_FAQs/citing_and_publication.rst b/docs_classic/tutorial_FAQs/citing_and_publication.rst similarity index 100% rename from docs_version2/tutorial_FAQs/citing_and_publication.rst rename to docs_classic/tutorial_FAQs/citing_and_publication.rst diff --git a/docs_version2/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb b/docs_classic/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb similarity index 100% rename from docs_version2/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb rename to docs_classic/tutorial_FAQs/gotchas_of_brainpy_transforms.ipynb diff --git a/docs_version2/tutorial_FAQs/how_to_debug.ipynb b/docs_classic/tutorial_FAQs/how_to_debug.ipynb similarity index 100% rename from docs_version2/tutorial_FAQs/how_to_debug.ipynb rename to docs_classic/tutorial_FAQs/how_to_debug.ipynb diff --git a/docs_version2/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb b/docs_classic/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb similarity index 100% rename from docs_version2/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb rename to docs_classic/tutorial_FAQs/uniqueness_of-brainpy-math.ipynb diff --git a/docs_version2/tutorial_advanced/1_advanced_math.rst b/docs_classic/tutorial_advanced/1_advanced_math.rst similarity index 100% rename from docs_version2/tutorial_advanced/1_advanced_math.rst rename to docs_classic/tutorial_advanced/1_advanced_math.rst diff --git a/docs_version2/tutorial_advanced/2_interoperation.rst b/docs_classic/tutorial_advanced/2_interoperation.rst similarity index 100% rename from docs_version2/tutorial_advanced/2_interoperation.rst rename to docs_classic/tutorial_advanced/2_interoperation.rst diff --git a/docs_version2/tutorial_advanced/3_dedicated_operators.rst b/docs_classic/tutorial_advanced/3_dedicated_operators.rst similarity index 100% rename from docs_version2/tutorial_advanced/3_dedicated_operators.rst rename to docs_classic/tutorial_advanced/3_dedicated_operators.rst diff --git a/docs_version2/tutorial_advanced/4_developer_guides.rst b/docs_classic/tutorial_advanced/4_developer_guides.rst similarity index 100% rename from docs_version2/tutorial_advanced/4_developer_guides.rst rename to docs_classic/tutorial_advanced/4_developer_guides.rst diff --git a/docs_version2/tutorial_advanced/5_others.rst b/docs_classic/tutorial_advanced/5_others.rst similarity index 100% rename from docs_version2/tutorial_advanced/5_others.rst rename to docs_classic/tutorial_advanced/5_others.rst diff --git a/docs_version2/tutorial_advanced/advanced_lowdim_analysis.ipynb b/docs_classic/tutorial_advanced/advanced_lowdim_analysis.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/advanced_lowdim_analysis.ipynb rename to docs_classic/tutorial_advanced/advanced_lowdim_analysis.ipynb diff --git a/docs_version2/tutorial_advanced/base_and_collector.ipynb b/docs_classic/tutorial_advanced/base_and_collector.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/base_and_collector.ipynb rename to docs_classic/tutorial_advanced/base_and_collector.ipynb diff --git a/docs_version2/tutorial_advanced/compilation.ipynb b/docs_classic/tutorial_advanced/compilation.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/compilation.ipynb rename to docs_classic/tutorial_advanced/compilation.ipynb diff --git a/docs_version2/tutorial_advanced/contributing.md b/docs_classic/tutorial_advanced/contributing.md similarity index 100% rename from docs_version2/tutorial_advanced/contributing.md rename to docs_classic/tutorial_advanced/contributing.md diff --git a/docs_version2/tutorial_advanced/differentiation.ipynb b/docs_classic/tutorial_advanced/differentiation.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/differentiation.ipynb rename to docs_classic/tutorial_advanced/differentiation.ipynb diff --git a/docs_version2/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb b/docs_classic/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb rename to docs_classic/tutorial_advanced/integrate_bp_convlstm_into_flax.ipynb diff --git a/docs_version2/tutorial_advanced/integrate_bp_lif_into_flax.ipynb b/docs_classic/tutorial_advanced/integrate_bp_lif_into_flax.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/integrate_bp_lif_into_flax.ipynb rename to docs_classic/tutorial_advanced/integrate_bp_lif_into_flax.ipynb diff --git a/docs_version2/tutorial_advanced/integrate_flax_into_brainpy.ipynb b/docs_classic/tutorial_advanced/integrate_flax_into_brainpy.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/integrate_flax_into_brainpy.ipynb rename to docs_classic/tutorial_advanced/integrate_flax_into_brainpy.ipynb diff --git a/docs_version2/tutorial_advanced/interoperation.ipynb b/docs_classic/tutorial_advanced/interoperation.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/interoperation.ipynb rename to docs_classic/tutorial_advanced/interoperation.ipynb diff --git a/docs_version2/tutorial_advanced/operator_custom_with_cupy.ipynb b/docs_classic/tutorial_advanced/operator_custom_with_cupy.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/operator_custom_with_cupy.ipynb rename to docs_classic/tutorial_advanced/operator_custom_with_cupy.ipynb diff --git a/docs_version2/tutorial_advanced/operator_custom_with_numba.ipynb b/docs_classic/tutorial_advanced/operator_custom_with_numba.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/operator_custom_with_numba.ipynb rename to docs_classic/tutorial_advanced/operator_custom_with_numba.ipynb diff --git a/docs_version2/tutorial_advanced/operator_custom_with_taichi.ipynb b/docs_classic/tutorial_advanced/operator_custom_with_taichi.ipynb similarity index 100% rename from docs_version2/tutorial_advanced/operator_custom_with_taichi.ipynb rename to docs_classic/tutorial_advanced/operator_custom_with_taichi.ipynb diff --git a/docs_version2/tutorial_analysis/decision_making_model.ipynb b/docs_classic/tutorial_analysis/decision_making_model.ipynb similarity index 100% rename from docs_version2/tutorial_analysis/decision_making_model.ipynb rename to docs_classic/tutorial_analysis/decision_making_model.ipynb diff --git a/docs_version2/tutorial_analysis/highdim_analysis.ipynb b/docs_classic/tutorial_analysis/highdim_analysis.ipynb similarity index 100% rename from docs_version2/tutorial_analysis/highdim_analysis.ipynb rename to docs_classic/tutorial_analysis/highdim_analysis.ipynb diff --git a/docs_version2/tutorial_analysis/index.rst b/docs_classic/tutorial_analysis/index.rst similarity index 100% rename from docs_version2/tutorial_analysis/index.rst rename to docs_classic/tutorial_analysis/index.rst diff --git a/docs_version2/tutorial_analysis/lowdim_analysis.ipynb b/docs_classic/tutorial_analysis/lowdim_analysis.ipynb similarity index 100% rename from docs_version2/tutorial_analysis/lowdim_analysis.ipynb rename to docs_classic/tutorial_analysis/lowdim_analysis.ipynb diff --git a/docs_version2/tutorial_building/build_conductance_neurons_v2.ipynb b/docs_classic/tutorial_building/build_conductance_neurons_v2.ipynb similarity index 100% rename from docs_version2/tutorial_building/build_conductance_neurons_v2.ipynb rename to docs_classic/tutorial_building/build_conductance_neurons_v2.ipynb diff --git a/docs_version2/tutorial_building/build_network_models.ipynb b/docs_classic/tutorial_building/build_network_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/build_network_models.ipynb rename to docs_classic/tutorial_building/build_network_models.ipynb diff --git a/docs_version2/tutorial_building/build_synapse_models.ipynb b/docs_classic/tutorial_building/build_synapse_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/build_synapse_models.ipynb rename to docs_classic/tutorial_building/build_synapse_models.ipynb diff --git a/docs_version2/tutorial_building/customize_dynamical_systems.ipynb b/docs_classic/tutorial_building/customize_dynamical_systems.ipynb similarity index 100% rename from docs_version2/tutorial_building/customize_dynamical_systems.ipynb rename to docs_classic/tutorial_building/customize_dynamical_systems.ipynb diff --git a/docs_version2/tutorial_building/customize_neuron_models.ipynb b/docs_classic/tutorial_building/customize_neuron_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/customize_neuron_models.ipynb rename to docs_classic/tutorial_building/customize_neuron_models.ipynb diff --git a/docs_version2/tutorial_building/customize_synapse_models.ipynb b/docs_classic/tutorial_building/customize_synapse_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/customize_synapse_models.ipynb rename to docs_classic/tutorial_building/customize_synapse_models.ipynb diff --git a/docs_version2/tutorial_building/how_to_customze_a_synapse.ipynb b/docs_classic/tutorial_building/how_to_customze_a_synapse.ipynb similarity index 100% rename from docs_version2/tutorial_building/how_to_customze_a_synapse.ipynb rename to docs_classic/tutorial_building/how_to_customze_a_synapse.ipynb diff --git a/docs_version2/tutorial_building/index.rst b/docs_classic/tutorial_building/index.rst similarity index 100% rename from docs_version2/tutorial_building/index.rst rename to docs_classic/tutorial_building/index.rst diff --git a/docs_version2/tutorial_building/kinetic_synapse_models.ipynb b/docs_classic/tutorial_building/kinetic_synapse_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/kinetic_synapse_models.ipynb rename to docs_classic/tutorial_building/kinetic_synapse_models.ipynb diff --git a/docs_version2/tutorial_building/overview_of_dynamic_model.ipynb b/docs_classic/tutorial_building/overview_of_dynamic_model.ipynb similarity index 100% rename from docs_version2/tutorial_building/overview_of_dynamic_model.ipynb rename to docs_classic/tutorial_building/overview_of_dynamic_model.ipynb diff --git a/docs_version2/tutorial_building/phenon_synapse_models.ipynb b/docs_classic/tutorial_building/phenon_synapse_models.ipynb similarity index 100% rename from docs_version2/tutorial_building/phenon_synapse_models.ipynb rename to docs_classic/tutorial_building/phenon_synapse_models.ipynb diff --git a/docs_version2/tutorial_math/Dedicated_Operators.ipynb b/docs_classic/tutorial_math/Dedicated_Operators.ipynb similarity index 100% rename from docs_version2/tutorial_math/Dedicated_Operators.ipynb rename to docs_classic/tutorial_math/Dedicated_Operators.ipynb diff --git a/docs_version2/tutorial_math/Numpy_like_Operations.ipynb b/docs_classic/tutorial_math/Numpy_like_Operations.ipynb similarity index 100% rename from docs_version2/tutorial_math/Numpy_like_Operations.ipynb rename to docs_classic/tutorial_math/Numpy_like_Operations.ipynb diff --git a/docs_version2/tutorial_math/array.ipynb b/docs_classic/tutorial_math/array.ipynb similarity index 100% rename from docs_version2/tutorial_math/array.ipynb rename to docs_classic/tutorial_math/array.ipynb diff --git a/docs_version2/tutorial_math/arrays_and_variables.ipynb b/docs_classic/tutorial_math/arrays_and_variables.ipynb similarity index 100% rename from docs_version2/tutorial_math/arrays_and_variables.ipynb rename to docs_classic/tutorial_math/arrays_and_variables.ipynb diff --git a/docs_version2/tutorial_math/control_flows.ipynb b/docs_classic/tutorial_math/control_flows.ipynb similarity index 100% rename from docs_version2/tutorial_math/control_flows.ipynb rename to docs_classic/tutorial_math/control_flows.ipynb diff --git a/docs_version2/tutorial_math/einops_in_brainpy.ipynb b/docs_classic/tutorial_math/einops_in_brainpy.ipynb similarity index 100% rename from docs_version2/tutorial_math/einops_in_brainpy.ipynb rename to docs_classic/tutorial_math/einops_in_brainpy.ipynb diff --git a/docs_version2/tutorial_math/index.rst b/docs_classic/tutorial_math/index.rst similarity index 100% rename from docs_version2/tutorial_math/index.rst rename to docs_classic/tutorial_math/index.rst diff --git a/docs_version2/tutorial_math/random_number_generation.ipynb b/docs_classic/tutorial_math/random_number_generation.ipynb similarity index 100% rename from docs_version2/tutorial_math/random_number_generation.ipynb rename to docs_classic/tutorial_math/random_number_generation.ipynb diff --git a/docs_version2/tutorial_math/test_images.npy b/docs_classic/tutorial_math/test_images.npy similarity index 100% rename from docs_version2/tutorial_math/test_images.npy rename to docs_classic/tutorial_math/test_images.npy diff --git a/docs_version2/tutorial_math/variables.ipynb b/docs_classic/tutorial_math/variables.ipynb similarity index 100% rename from docs_version2/tutorial_math/variables.ipynb rename to docs_classic/tutorial_math/variables.ipynb diff --git a/docs_version2/tutorial_simulation/index.rst b/docs_classic/tutorial_simulation/index.rst similarity index 100% rename from docs_version2/tutorial_simulation/index.rst rename to docs_classic/tutorial_simulation/index.rst diff --git a/docs_version2/tutorial_simulation/monitor_per_multiple_steps.ipynb b/docs_classic/tutorial_simulation/monitor_per_multiple_steps.ipynb similarity index 100% rename from docs_version2/tutorial_simulation/monitor_per_multiple_steps.ipynb rename to docs_classic/tutorial_simulation/monitor_per_multiple_steps.ipynb diff --git a/docs_version2/tutorial_simulation/parallel_for_parameter_exploration.ipynb b/docs_classic/tutorial_simulation/parallel_for_parameter_exploration.ipynb similarity index 100% rename from docs_version2/tutorial_simulation/parallel_for_parameter_exploration.ipynb rename to docs_classic/tutorial_simulation/parallel_for_parameter_exploration.ipynb diff --git a/docs_version2/tutorial_simulation/simulation_dsrunner.ipynb b/docs_classic/tutorial_simulation/simulation_dsrunner.ipynb similarity index 100% rename from docs_version2/tutorial_simulation/simulation_dsrunner.ipynb rename to docs_classic/tutorial_simulation/simulation_dsrunner.ipynb diff --git a/docs_version2/tutorial_toolbox/dde_numerical_solvers.ipynb b/docs_classic/tutorial_toolbox/dde_numerical_solvers.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/dde_numerical_solvers.ipynb rename to docs_classic/tutorial_toolbox/dde_numerical_solvers.ipynb diff --git a/docs_version2/tutorial_toolbox/fde_numerical_solvers.ipynb b/docs_classic/tutorial_toolbox/fde_numerical_solvers.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/fde_numerical_solvers.ipynb rename to docs_classic/tutorial_toolbox/fde_numerical_solvers.ipynb diff --git a/docs_version2/tutorial_toolbox/illustration_joint_equations.py b/docs_classic/tutorial_toolbox/illustration_joint_equations.py similarity index 100% rename from docs_version2/tutorial_toolbox/illustration_joint_equations.py rename to docs_classic/tutorial_toolbox/illustration_joint_equations.py diff --git a/docs_version2/tutorial_toolbox/inputs.ipynb b/docs_classic/tutorial_toolbox/inputs.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/inputs.ipynb rename to docs_classic/tutorial_toolbox/inputs.ipynb diff --git a/docs_version2/tutorial_toolbox/joint_equations.ipynb b/docs_classic/tutorial_toolbox/joint_equations.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/joint_equations.ipynb rename to docs_classic/tutorial_toolbox/joint_equations.ipynb diff --git a/docs_version2/tutorial_toolbox/ode_numerical_solvers.ipynb b/docs_classic/tutorial_toolbox/ode_numerical_solvers.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/ode_numerical_solvers.ipynb rename to docs_classic/tutorial_toolbox/ode_numerical_solvers.ipynb diff --git a/docs_version2/tutorial_toolbox/optimizers.ipynb b/docs_classic/tutorial_toolbox/optimizers.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/optimizers.ipynb rename to docs_classic/tutorial_toolbox/optimizers.ipynb diff --git a/docs_version2/tutorial_toolbox/sde_numerical_solvers.ipynb b/docs_classic/tutorial_toolbox/sde_numerical_solvers.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/sde_numerical_solvers.ipynb rename to docs_classic/tutorial_toolbox/sde_numerical_solvers.ipynb diff --git a/docs_version2/tutorial_toolbox/state_resetting.ipynb b/docs_classic/tutorial_toolbox/state_resetting.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/state_resetting.ipynb rename to docs_classic/tutorial_toolbox/state_resetting.ipynb diff --git a/docs_version2/tutorial_toolbox/state_saving_and_loading.ipynb b/docs_classic/tutorial_toolbox/state_saving_and_loading.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/state_saving_and_loading.ipynb rename to docs_classic/tutorial_toolbox/state_saving_and_loading.ipynb diff --git a/docs_version2/tutorial_toolbox/surrogate_gradient.ipynb b/docs_classic/tutorial_toolbox/surrogate_gradient.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/surrogate_gradient.ipynb rename to docs_classic/tutorial_toolbox/surrogate_gradient.ipynb diff --git a/docs_version2/tutorial_toolbox/synaptic_connections.ipynb b/docs_classic/tutorial_toolbox/synaptic_connections.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/synaptic_connections.ipynb rename to docs_classic/tutorial_toolbox/synaptic_connections.ipynb diff --git a/docs_version2/tutorial_toolbox/synaptic_weights.ipynb b/docs_classic/tutorial_toolbox/synaptic_weights.ipynb similarity index 100% rename from docs_version2/tutorial_toolbox/synaptic_weights.ipynb rename to docs_classic/tutorial_toolbox/synaptic_weights.ipynb diff --git a/docs_version2/tutorial_training/bp_training.ipynb b/docs_classic/tutorial_training/bp_training.ipynb similarity index 100% rename from docs_version2/tutorial_training/bp_training.ipynb rename to docs_classic/tutorial_training/bp_training.ipynb diff --git a/docs_version2/tutorial_training/build_training_models.ipynb b/docs_classic/tutorial_training/build_training_models.ipynb similarity index 100% rename from docs_version2/tutorial_training/build_training_models.ipynb rename to docs_classic/tutorial_training/build_training_models.ipynb diff --git a/docs_version2/tutorial_training/esn_introduction.ipynb b/docs_classic/tutorial_training/esn_introduction.ipynb similarity index 100% rename from docs_version2/tutorial_training/esn_introduction.ipynb rename to docs_classic/tutorial_training/esn_introduction.ipynb diff --git a/docs_version2/tutorial_training/index.rst b/docs_classic/tutorial_training/index.rst similarity index 100% rename from docs_version2/tutorial_training/index.rst rename to docs_classic/tutorial_training/index.rst diff --git a/docs_version2/tutorial_training/offline_training.ipynb b/docs_classic/tutorial_training/offline_training.ipynb similarity index 100% rename from docs_version2/tutorial_training/offline_training.ipynb rename to docs_classic/tutorial_training/offline_training.ipynb diff --git a/docs_version2/tutorial_training/online_training.ipynb b/docs_classic/tutorial_training/online_training.ipynb similarity index 100% rename from docs_version2/tutorial_training/online_training.ipynb rename to docs_classic/tutorial_training/online_training.ipynb diff --git a/docs_version2/tutorials.rst b/docs_classic/tutorials.rst similarity index 100% rename from docs_version2/tutorials.rst rename to docs_classic/tutorials.rst diff --git a/docs_state_based/README.md b/docs_state/README.md similarity index 100% rename from docs_state_based/README.md rename to docs_state/README.md diff --git a/docs_state_based/_static/snn-simulation1.png b/docs_state/_static/snn-simulation1.png similarity index 100% rename from docs_state_based/_static/snn-simulation1.png rename to docs_state/_static/snn-simulation1.png diff --git a/docs_state_based/_templates/classtemplate.rst b/docs_state/_templates/classtemplate.rst similarity index 100% rename from docs_state_based/_templates/classtemplate.rst rename to docs_state/_templates/classtemplate.rst diff --git a/docs_state_based/api/index.rst b/docs_state/api/index.rst similarity index 88% rename from docs_state_based/api/index.rst rename to docs_state/api/index.rst index e23b92845..019886472 100644 --- a/docs_state_based/api/index.rst +++ b/docs_state/api/index.rst @@ -54,16 +54,16 @@ Neurons .. code-block:: python - import brainpy as bp + import brainpy.state_based as brainpy # Leaky Integrate-and-Fire - bp.LIF(size, V_rest, V_th, V_reset, tau, R, ...) + brainpy.LIF(size, V_rest, V_th, V_reset, tau, R, ...) # Adaptive LIF - bp.ALIF(size, V_rest, V_th, V_reset, tau, tau_w, a, b, ...) + brainpy.ALIF(size, V_rest, V_th, V_reset, tau, tau_w, a, b, ...) # Izhikevich - bp.Izhikevich(size, a, b, c, d, ...) + brainpy.Izhikevich(size, a, b, c, d, ...) Synapses ~~~~~~~~ @@ -71,16 +71,16 @@ Synapses .. code-block:: python # Exponential - bp.Expon.desc(size, tau) + brainpy.Expon.desc(size, tau) # Alpha - bp.Alpha.desc(size, tau) + brainpy.Alpha.desc(size, tau) # AMPA receptor - bp.AMPA.desc(size, tau) + brainpy.AMPA.desc(size, tau) # GABA_a receptor - bp.GABAa.desc(size, tau) + brainpy.GABAa.desc(size, tau) Projections ~~~~~~~~~~~ @@ -88,10 +88,10 @@ Projections .. code-block:: python # Standard projection - bp.AlignPostProj( + brainpy.AlignPostProj( comm=brainstate.nn.EventFixedProb(n_pre, n_post, prob, weight), - syn=bp.Expon.desc(n_post, tau), - out=bp.COBA.desc(E), + syn=brainpy.Expon.desc(n_post, tau), + out=brainpy.COBA.desc(E), post=post_neurons ) @@ -152,8 +152,8 @@ BrainPy uses a clear import hierarchy: import braintools # Training utilities # Neurons and synapses - neuron = bp.LIF(100, ...) - synapse = bp.Expon.desc(100, tau=5*u.ms) + neuron = brainpy.LIF(100, ...) + synapse = brainpy.Expon.desc(100, tau=5*u.ms) # State management state = brainstate.ShortTermState(...) diff --git a/docs_state_based/api/neurons.rst b/docs_state/api/neurons.rst similarity index 100% rename from docs_state_based/api/neurons.rst rename to docs_state/api/neurons.rst diff --git a/docs_state_based/api/projections.rst b/docs_state/api/projections.rst similarity index 98% rename from docs_state_based/api/projections.rst rename to docs_state/api/projections.rst index 0477c77f3..31a843822 100644 --- a/docs_state_based/api/projections.rst +++ b/docs_state/api/projections.rst @@ -3,7 +3,7 @@ Projections Connect neural populations with the Comm-Syn-Out architecture. -.. currentmodule:: brainpy +.. currentmodule:: brainpy.state_based Projection Classes ------------------ diff --git a/docs_state_based/api/synapses.rst b/docs_state/api/synapses.rst similarity index 99% rename from docs_state_based/api/synapses.rst rename to docs_state/api/synapses.rst index 181971d43..46a920cd7 100644 --- a/docs_state_based/api/synapses.rst +++ b/docs_state/api/synapses.rst @@ -3,7 +3,7 @@ Synapse Models Synaptic dynamics models in BrainPy. -.. currentmodule:: brainpy +.. currentmodule:: brainpy.state_based Base Class ---------- diff --git a/docs_state_based/apis.rst b/docs_state/apis.rst similarity index 94% rename from docs_state_based/apis.rst rename to docs_state/apis.rst index 10a1c5652..33b960af2 100644 --- a/docs_state_based/apis.rst +++ b/docs_state/apis.rst @@ -3,8 +3,8 @@ API Reference This page provides a comprehensive reference for all BrainPy APIs. -.. currentmodule:: brainpy -.. automodule:: brainpy +.. currentmodule:: brainpy.state_based +.. automodule:: brainpy.state_based diff --git a/docs_state_based/checkpointing-en.ipynb b/docs_state/checkpointing-en.ipynb similarity index 100% rename from docs_state_based/checkpointing-en.ipynb rename to docs_state/checkpointing-en.ipynb diff --git a/docs_state_based/checkpointing-zh.ipynb b/docs_state/checkpointing-zh.ipynb similarity index 100% rename from docs_state_based/checkpointing-zh.ipynb rename to docs_state/checkpointing-zh.ipynb diff --git a/docs_state_based/core-concepts/architecture.rst b/docs_state/core-concepts/architecture.rst similarity index 100% rename from docs_state_based/core-concepts/architecture.rst rename to docs_state/core-concepts/architecture.rst diff --git a/docs_state_based/core-concepts/neurons.rst b/docs_state/core-concepts/neurons.rst similarity index 100% rename from docs_state_based/core-concepts/neurons.rst rename to docs_state/core-concepts/neurons.rst diff --git a/docs_state_based/core-concepts/projections.rst b/docs_state/core-concepts/projections.rst similarity index 100% rename from docs_state_based/core-concepts/projections.rst rename to docs_state/core-concepts/projections.rst diff --git a/docs_state_based/core-concepts/state-management.rst b/docs_state/core-concepts/state-management.rst similarity index 100% rename from docs_state_based/core-concepts/state-management.rst rename to docs_state/core-concepts/state-management.rst diff --git a/docs_state_based/core-concepts/synapses.rst b/docs_state/core-concepts/synapses.rst similarity index 100% rename from docs_state_based/core-concepts/synapses.rst rename to docs_state/core-concepts/synapses.rst diff --git a/docs_state_based/examples/gallery.rst b/docs_state/examples/gallery.rst similarity index 100% rename from docs_state_based/examples/gallery.rst rename to docs_state/examples/gallery.rst diff --git a/docs_state_based/how-to-guides/custom-components.rst b/docs_state/how-to-guides/custom-components.rst similarity index 100% rename from docs_state_based/how-to-guides/custom-components.rst rename to docs_state/how-to-guides/custom-components.rst diff --git a/docs_state_based/how-to-guides/debugging-networks.rst b/docs_state/how-to-guides/debugging-networks.rst similarity index 100% rename from docs_state_based/how-to-guides/debugging-networks.rst rename to docs_state/how-to-guides/debugging-networks.rst diff --git a/docs_state_based/how-to-guides/gpu-tpu-usage.rst b/docs_state/how-to-guides/gpu-tpu-usage.rst similarity index 100% rename from docs_state_based/how-to-guides/gpu-tpu-usage.rst rename to docs_state/how-to-guides/gpu-tpu-usage.rst diff --git a/docs_state_based/how-to-guides/index.rst b/docs_state/how-to-guides/index.rst similarity index 100% rename from docs_state_based/how-to-guides/index.rst rename to docs_state/how-to-guides/index.rst diff --git a/docs_state_based/how-to-guides/performance-optimization.rst b/docs_state/how-to-guides/performance-optimization.rst similarity index 100% rename from docs_state_based/how-to-guides/performance-optimization.rst rename to docs_state/how-to-guides/performance-optimization.rst diff --git a/docs_state_based/how-to-guides/save-load-models.rst b/docs_state/how-to-guides/save-load-models.rst similarity index 100% rename from docs_state_based/how-to-guides/save-load-models.rst rename to docs_state/how-to-guides/save-load-models.rst diff --git a/docs_state_based/index.rst b/docs_state/index.rst similarity index 83% rename from docs_state_based/index.rst rename to docs_state/index.rst index 82245c4db..ef2611f48 100644 --- a/docs_state_based/index.rst +++ b/docs_state/index.rst @@ -1,17 +1,21 @@ -BrainPy documentation -===================== +``brainpy.state`` documentation +===================================== -`BrainPy`_ is a flexible, efficient, and extensible framework for computational neuroscience -and brain-inspired computation. It provides a powerful and flexible framework for building, -simulating, and training spiking neural networks. +`brainpy.state` provides a new ``State``-based programming paradigm for building and simulating spiking neural networks. -.. _BrainPy: https://github.com/brainpy/BrainPy +Compared to ``brainpy.dyn``, ``brainpy.state`` provides: + + - A more intuitive and flexible way to define and manage the state of neural network components (neurons, synapses, etc.). + + - Improved performance and scalability for large-scale simulations. + + - Seamless integration with `BrainX `_ ecosystem. .. note:: - ``BrainPy>=3.0.0`` is rewritten based on `brainstate `_ since August 2025. + ``brainpy.state`` is written based on `brainstate `_. This documentation is for the latest version 3.x. diff --git a/docs_state_based/migration/migration-guide.rst b/docs_state/migration/migration-guide.rst similarity index 100% rename from docs_state_based/migration/migration-guide.rst rename to docs_state/migration/migration-guide.rst diff --git a/docs_state_based/quickstart/5min-tutorial.ipynb b/docs_state/quickstart/5min-tutorial.ipynb similarity index 97% rename from docs_state_based/quickstart/5min-tutorial.ipynb rename to docs_state/quickstart/5min-tutorial.ipynb index cdfaf9b27..251777110 100644 --- a/docs_state_based/quickstart/5min-tutorial.ipynb +++ b/docs_state/quickstart/5min-tutorial.ipynb @@ -4,9 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 5-Minute Tutorial: Getting Started with BrainPy 3.0\n", + "# 5-Minute Tutorial: Getting Started with ``brainpy.state``\n", "\n", - "Welcome to BrainPy 3.0! This quick tutorial will get you up and running with your first neural simulation in just a few minutes.\n", + "Welcome to ``brainpy.state``! This quick tutorial will get you up and running with your first neural simulation in just a few minutes.\n", "\n", "## What You'll Learn\n", "\n", @@ -31,7 +31,7 @@ "metadata": {}, "outputs": [], "source": [ - "import brainpy.state_based as brainpy\n", + "import brainpy.state as brainpy\n", "import brainstate\n", "import brainunit as u\n", "import braintools\n", diff --git a/docs_state_based/quickstart/concepts-overview.rst b/docs_state/quickstart/concepts-overview.rst similarity index 70% rename from docs_state_based/quickstart/concepts-overview.rst rename to docs_state/quickstart/concepts-overview.rst index 8bfe4593a..087b25d17 100644 --- a/docs_state_based/quickstart/concepts-overview.rst +++ b/docs_state/quickstart/concepts-overview.rst @@ -1,12 +1,13 @@ Core Concepts Overview ====================== -BrainPy 3.0 introduces a modern, state-based architecture built on top of ``brainstate``. This overview will help you understand the key concepts and design philosophy. +``brainpy.state`` introduces a modern, state-based architecture built on top of ``brainstate``. This overview will +help you understand the key concepts and design philosophy. -What's New in BrainPy 3.0 -------------------------- +What's New +---------- -BrainPy 3.0 has been completely rewritten to provide: +``brainpy.state`` has been completely rewritten to provide: - **State-based programming**: Built on ``brainstate`` for efficient state management - **Modular architecture**: Clear separation of concerns (communication, dynamics, outputs) @@ -17,12 +18,12 @@ BrainPy 3.0 has been completely rewritten to provide: Key Architectural Components ----------------------------- -BrainPy 3.0 is organized around several core concepts: +``brainpy.state`` is organized around several core concepts: 1. State Management ~~~~~~~~~~~~~~~~~~~ -Everything in BrainPy 3.0 revolves around **states**. States are variables that persist across time steps: +Everything in ``brainpy.state`` revolves around **states**. States are variables that persist across time steps: - ``brainstate.State``: Base state container - ``brainstate.ParamState``: Trainable parameters @@ -45,14 +46,14 @@ Neurons are the fundamental computational units: import brainunit as u # Create a population of 100 LIF neurons - neurons = brainpy.LIF(100, tau=10*u.ms, V_th=-50*u.mV) + neurons = brainpy.state.LIF(100, tau=10*u.ms, V_th=-50*u.mV) Key neuron models: -- ``brainpy.IF``: Integrate-and-Fire -- ``brainpy.LIF``: Leaky Integrate-and-Fire -- ``brainpy.LIFRef``: LIF with refractory period -- ``brainpy.ALIF``: Adaptive LIF +- ``brainpy.state.IF``: Integrate-and-Fire +- ``brainpy.state.LIF``: Leaky Integrate-and-Fire +- ``brainpy.state.LIFRef``: LIF with refractory period +- ``brainpy.state.ALIF``: Adaptive LIF 3. Synapses ~~~~~~~~~~~ @@ -62,17 +63,17 @@ Synapses model the dynamics of neural connections: .. code-block:: python # Exponential synapse - synapse = brainpy.Expon(100, tau=5*u.ms) + synapse = brainpy.state.Expon(100, tau=5*u.ms) # Alpha synapse (more realistic) - synapse = brainpy.Alpha(100, tau=5*u.ms) + synapse = brainpy.state.Alpha(100, tau=5*u.ms) Synapse models: -- ``brainpy.Expon``: Single exponential decay -- ``brainpy.Alpha``: Double exponential (alpha function) -- ``brainpy.AMPA``: Excitatory receptor dynamics -- ``brainpy.GABAa``: Inhibitory receptor dynamics +- ``brainpy.state.Expon``: Single exponential decay +- ``brainpy.state.Alpha``: Double exponential (alpha function) +- ``brainpy.state.AMPA``: Excitatory receptor dynamics +- ``brainpy.state.GABAa``: Inhibitory receptor dynamics 4. Projections ~~~~~~~~~~~~~~ @@ -81,10 +82,10 @@ Projections connect neural populations: .. code-block:: python - projection = brainpy.AlignPostProj( + projection = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(N_pre, N_post, prob=0.1, weight=0.5), - syn=brainpy.Expon.desc(N_post, tau=5*u.ms), - out=brainpy.CUBA.desc(), + syn=brainpy.state.Expon.desc(N_post, tau=5*u.ms), + out=brainpy.state.CUBA.desc(), post=neurons ) @@ -106,10 +107,10 @@ Networks combine neurons and projections: class EINet(brainstate.nn.Module): def __init__(self): super().__init__() - self.E = brainpy.LIF(800) - self.I = brainpy.LIF(200) - self.E2E = brainpy.AlignPostProj(...) - self.E2I = brainpy.AlignPostProj(...) + self.E = brainpy.state.LIF(800) + self.I = brainpy.state.LIF(200) + self.E2E = brainpy.state.AlignPostProj(...) + self.E2I = brainpy.state.AlignPostProj(...) # ... more projections def update(self, input): @@ -143,7 +144,7 @@ BrainPy leverages JAX for Just-In-Time compilation: .. code-block:: python - @brainstate.compile.jit + @brainstate.transform.jit def simulate(): return network.update(input) @@ -171,7 +172,7 @@ BrainPy 3.0 integrates ``brainunit`` for scientific accuracy: current = 5 * u.nA # Units are checked automatically - neurons = brainpy.LIF(100, tau=tau, V_th=V_threshold) + neurons = brainpy.state.LIF(100, tau=tau, V_th=V_threshold) This prevents unit-related bugs and makes code self-documenting. @@ -190,11 +191,11 @@ BrainPy 3.0 supports gradient-based training: # Define loss function def loss_fn(): - predictions = brainstate.compile.for_loop(net.update, inputs) + predictions = brainstate.transform.for_loop(net.update, inputs) return loss(predictions, targets) # Training step - @brainstate.compile.jit + @brainstate.transform.jit def train_step(): grads, loss = brainstate.transform.grad( loss_fn, @@ -213,7 +214,7 @@ Key features: Ecosystem Components -------------------- -BrainPy 3.0 is part of a larger ecosystem: +``brainpy.state`` is part of a larger ecosystem: brainstate ~~~~~~~~~~ @@ -247,7 +248,7 @@ Utilities and tools: Design Philosophy ----------------- -BrainPy 3.0 follows these principles: +``brainpy.state`` follows these principles: 1. **Explicit over implicit**: Clear, readable code 2. **Modular composition**: Build complex models from simple components @@ -255,40 +256,6 @@ BrainPy 3.0 follows these principles: 4. **Scientific accuracy**: Physical units and biologically realistic models 5. **Extensibility**: Easy to add custom components -Comparison with BrainPy 2.x ----------------------------- - -Key differences: - -.. list-table:: - :header-rows: 1 - :widths: 30 35 35 - - * - Aspect - - BrainPy 2.x - - BrainPy 3.0 - * - Architecture - - Custom backend - - Built on ``brainstate`` - * - State management - - Manual - - Automatic with ``State`` - * - Units - - Optional - - Integrated with ``brainunit`` - * - API style - - Object-oriented - - Functional + OOP hybrid - * - Performance - - Good - - Better (optimized compilation) - * - Projection model - - Monolithic - - Comm-Syn-Out separation - -.. note:: - BrainPy 3.0 includes a compatibility layer (``brainpy.version2``) for gradual migration. - Next Steps ---------- diff --git a/docs_state_based/quickstart/installation.rst b/docs_state/quickstart/installation.rst similarity index 92% rename from docs_state_based/quickstart/installation.rst rename to docs_state/quickstart/installation.rst index 341ae78ae..ee72f6d04 100644 --- a/docs_state_based/quickstart/installation.rst +++ b/docs_state/quickstart/installation.rst @@ -1,7 +1,8 @@ Installation Guide ================== -BrainPy 3.0 is a flexible, efficient, and extensible framework for computational neuroscience and brain-inspired computation. This guide will help you install BrainPy on your system. +``brainpy.state`` is a flexible, efficient, and extensible framework for computational neuroscience and +brain-inspired computation. This guide will help you install BrainPy on your system. Requirements ------------ @@ -149,7 +150,7 @@ Getting Help If you encounter issues: - Check the `GitHub Issues `_ -- Read the documentation at `https://brainpy.readthedocs.io/ `_ +- Read the documentation at `https://brainpy-state.readthedocs.io/ `_ - Join our community discussions Next Steps diff --git a/docs_state_based/snn_simulation-en.ipynb b/docs_state/snn_simulation-en.ipynb similarity index 100% rename from docs_state_based/snn_simulation-en.ipynb rename to docs_state/snn_simulation-en.ipynb diff --git a/docs_state_based/snn_simulation-zh.ipynb b/docs_state/snn_simulation-zh.ipynb similarity index 100% rename from docs_state_based/snn_simulation-zh.ipynb rename to docs_state/snn_simulation-zh.ipynb diff --git a/docs_state_based/snn_training-en.ipynb b/docs_state/snn_training-en.ipynb similarity index 100% rename from docs_state_based/snn_training-en.ipynb rename to docs_state/snn_training-en.ipynb diff --git a/docs_state_based/snn_training-zh.ipynb b/docs_state/snn_training-zh.ipynb similarity index 100% rename from docs_state_based/snn_training-zh.ipynb rename to docs_state/snn_training-zh.ipynb diff --git a/docs_state_based/tutorials/advanced/05-snn-training.ipynb b/docs_state/tutorials/advanced/05-snn-training.ipynb similarity index 100% rename from docs_state_based/tutorials/advanced/05-snn-training.ipynb rename to docs_state/tutorials/advanced/05-snn-training.ipynb diff --git a/docs_state_based/tutorials/advanced/06-synaptic-plasticity.ipynb b/docs_state/tutorials/advanced/06-synaptic-plasticity.ipynb similarity index 100% rename from docs_state_based/tutorials/advanced/06-synaptic-plasticity.ipynb rename to docs_state/tutorials/advanced/06-synaptic-plasticity.ipynb diff --git a/docs_state_based/tutorials/advanced/07-large-scale-simulations.ipynb b/docs_state/tutorials/advanced/07-large-scale-simulations.ipynb similarity index 100% rename from docs_state_based/tutorials/advanced/07-large-scale-simulations.ipynb rename to docs_state/tutorials/advanced/07-large-scale-simulations.ipynb diff --git a/docs_state_based/tutorials/basic/01-lif-neuron.ipynb b/docs_state/tutorials/basic/01-lif-neuron.ipynb similarity index 100% rename from docs_state_based/tutorials/basic/01-lif-neuron.ipynb rename to docs_state/tutorials/basic/01-lif-neuron.ipynb diff --git a/docs_state_based/tutorials/basic/02-synapse-models.ipynb b/docs_state/tutorials/basic/02-synapse-models.ipynb similarity index 100% rename from docs_state_based/tutorials/basic/02-synapse-models.ipynb rename to docs_state/tutorials/basic/02-synapse-models.ipynb diff --git a/docs_state_based/tutorials/basic/03-network-connections.ipynb b/docs_state/tutorials/basic/03-network-connections.ipynb similarity index 100% rename from docs_state_based/tutorials/basic/03-network-connections.ipynb rename to docs_state/tutorials/basic/03-network-connections.ipynb diff --git a/docs_state_based/tutorials/basic/04-input-output.ipynb b/docs_state/tutorials/basic/04-input-output.ipynb similarity index 100% rename from docs_state_based/tutorials/basic/04-input-output.ipynb rename to docs_state/tutorials/basic/04-input-output.ipynb diff --git a/docs_state_based/tutorials/index.rst b/docs_state/tutorials/index.rst similarity index 100% rename from docs_state_based/tutorials/index.rst rename to docs_state/tutorials/index.rst diff --git a/docs_state_based/api/input-output.rst b/docs_state_based/api/input-output.rst deleted file mode 100644 index 575f58ac1..000000000 --- a/docs_state_based/api/input-output.rst +++ /dev/null @@ -1,288 +0,0 @@ -Input and Output -================ - -Utilities for generating inputs and processing outputs. - -Input Encoding --------------- - -Poisson Spike Trains -~~~~~~~~~~~~~~~~~~~~ - -Generate Poisson-distributed spikes: - -.. code-block:: python - - def poisson_input(rates, dt): - """Generate Poisson spike train. - - Args: - rates: Firing rates in Hz (array) - dt: Time step (Quantity[ms]) - - Returns: - Binary spike array - """ - probs = rates * dt.to_decimal(u.second) - return (brainstate.random.rand(*rates.shape) < probs).astype(float) - - # Usage - rates = jnp.ones(100) * 50 # 50 Hz - spikes = poisson_input(rates, dt=0.1*u.ms) - -Rate Coding -~~~~~~~~~~~ - -Encode values as firing rates: - -.. code-block:: python - - def rate_encode(values, max_rate, dt): - """Encode values as spike rates. - - Args: - values: Values to encode [0, 1] - max_rate: Maximum firing rate (Quantity[Hz]) - dt: Time step (Quantity[ms]) - """ - rates = values * max_rate.to_decimal(u.Hz) - probs = rates * dt.to_decimal(u.second) - return (brainstate.random.rand(len(values)) < probs).astype(float) - - # Usage - pixel_values = jnp.array([0.2, 0.8, 0.5, ...]) # Normalized pixels - spikes = rate_encode(pixel_values, max_rate=100*u.Hz, dt=0.1*u.ms) - -Population Coding -~~~~~~~~~~~~~~~~~ - -Encode with population of tuned neurons: - -.. code-block:: python - - def population_encode(value, n_neurons, pref_values, sigma, max_rate, dt): - """Population coding with Gaussian tuning curves. - - Args: - value: Value to encode (scalar) - n_neurons: Number of neurons in population - pref_values: Preferred values of neurons - sigma: Tuning width - max_rate: Maximum firing rate - dt: Time step - """ - # Gaussian tuning curves - responses = jnp.exp(-0.5 * ((value - pref_values) / sigma)**2) - rates = responses * max_rate.to_decimal(u.Hz) - probs = rates * dt.to_decimal(u.second) - return (brainstate.random.rand(n_neurons) < probs).astype(float) - - # Usage - pref_values = jnp.linspace(0, 1, 20) - spikes = population_encode( - value=0.5, - n_neurons=20, - pref_values=pref_values, - sigma=0.1, - max_rate=100*u.Hz, - dt=0.1*u.ms - ) - -Temporal Contrast -~~~~~~~~~~~~~~~~~ - -Encode based on image gradients (event cameras): - -.. code-block:: python - - def temporal_contrast_encode(image, prev_image, threshold=0.1, polarity=True): - """Encode based on temporal contrast. - - Args: - image: Current image - prev_image: Previous image - threshold: Change threshold - polarity: If True, separate ON/OFF channels - - Returns: - Spike events - """ - diff = image - prev_image - - if polarity: - on_spikes = (diff > threshold).astype(float) - off_spikes = (diff < -threshold).astype(float) - return on_spikes, off_spikes - else: - spikes = (jnp.abs(diff) > threshold).astype(float) - return spikes - -Output Decoding ---------------- - -Population Vector Decoding -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: python - - def population_decode(spike_counts, pref_values): - """Decode value from population spikes. - - Args: - spike_counts: Spike counts from population - pref_values: Preferred values of neurons - - Returns: - Decoded value - """ - total_activity = jnp.sum(spike_counts) - if total_activity > 0: - decoded = jnp.sum(spike_counts * pref_values) / total_activity - return decoded - return 0.0 - - # Usage - spike_counts = jnp.array([5, 12, 20, 15, 3, ...]) # From 20 neurons - pref_values = jnp.linspace(0, 1, 20) - decoded_value = population_decode(spike_counts, pref_values) - -Spike Count -~~~~~~~~~~~ - -.. code-block:: python - - # Count total spikes over time window - spike_count = jnp.sum(spike_history, axis=0) - - # Firing rate (Hz) - duration = n_steps * dt.to_decimal(u.second) - firing_rate = spike_count / duration - -Readout Layer -~~~~~~~~~~~~~ - -Use ``bp.Readout`` for trainable spike-to-output conversion: - -.. code-block:: python - - readout = bp.Readout(n_neurons, n_outputs) - - # Accumulate over time - def run_and_readout(net, inputs, n_steps): - brainstate.nn.init_all_states(net) - - outputs = [] - for t in range(n_steps): - net(inputs) - spikes = net.get_spike() - output = readout(spikes) - outputs.append(output) - - # Sum over time for classification - logits = jnp.sum(jnp.array(outputs), axis=0) - return logits - -State Recording ---------------- - -Record Activity -~~~~~~~~~~~~~~~ - -.. code-block:: python - - # Record states during simulation - V_history = [] - spike_history = [] - - for t in range(n_steps): - neuron(input_current) - - V_history.append(neuron.V.value.copy()) - spike_history.append(neuron.spike.value.copy()) - - V_history = jnp.array(V_history) - spike_history = jnp.array(spike_history) - -Spike Raster Plot -~~~~~~~~~~~~~~~~~ - -.. code-block:: python - - import matplotlib.pyplot as plt - - # Get spike times and neuron indices - times, neurons = jnp.where(spike_history > 0) - - # Plot - plt.figure(figsize=(12, 6)) - plt.scatter(times * 0.1, neurons, s=1, c='black') - plt.xlabel('Time (ms)') - plt.ylabel('Neuron index') - plt.title('Spike Raster') - plt.show() - -Firing Rate Over Time -~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: python - - # Population firing rate - firing_rate = jnp.mean(spike_history, axis=1) * (1000 / dt.to_decimal(u.ms)) - - plt.figure(figsize=(12, 4)) - plt.plot(times, firing_rate) - plt.xlabel('Time (ms)') - plt.ylabel('Population Rate (Hz)') - plt.show() - -Complete Example ----------------- - -.. code-block:: python - - import brainpy as bp - import brainstate - import brainunit as u - import jax.numpy as jnp - - # Setup - n_input = 784 # MNIST pixels - n_hidden = 100 - n_output = 10 - dt = 0.1 * u.ms - brainstate.environ.set(dt=dt) - - # Network - class EncoderDecoderSNN(brainstate.nn.Module): - def __init__(self): - super().__init__() - self.hidden = bp.LIF(n_hidden, V_rest=-65*u.mV, V_th=-50*u.mV, tau=10*u.ms) - self.readout = bp.Readout(n_hidden, n_output) - - def update(self, x): - self.hidden(x) - return self.readout(self.hidden.get_spike()) - - net = EncoderDecoderSNN() - brainstate.nn.init_all_states(net) - - # Input encoding (rate coding) - image = jnp.random.rand(784) # Normalized image - encoded = rate_encode(image, max_rate=100*u.Hz, dt=dt) * 2.0 * u.nA - - # Simulate - outputs = [] - for t in range(100): - output = net(encoded) - outputs.append(output) - - # Output decoding - logits = jnp.sum(jnp.array(outputs), axis=0) - prediction = jnp.argmax(logits) - -See Also --------- - -- :doc:`../tutorials/basic/04-input-output` - Input/output tutorial -- :doc:`../tutorials/advanced/05-snn-training` - Training with encoded inputs -- :doc:`neurons` - Neuron models diff --git a/docs_state_based/api/networks.rst b/docs_state_based/api/networks.rst deleted file mode 100644 index 97d45b57a..000000000 --- a/docs_state_based/api/networks.rst +++ /dev/null @@ -1,122 +0,0 @@ -Network Components -================== - -Building blocks for neural networks. - -.. currentmodule:: brainstate.nn - -Module System -------------- - -Module -~~~~~~ - -.. class:: Module - - Base class for all network components. - - **Key Methods:** - - .. method:: update(*args, **kwargs) - - Forward pass / simulation step. - - .. method:: reset_state(batch_size=None) - - Reset component state. - - .. method:: states(state_type=None) - - Get states of specific type. - - :param state_type: ParamState, ShortTermState, or LongTermState - :returns: Dictionary of states - - **Example:** - - .. code-block:: python - - class MyNetwork(brainstate.nn.Module): - def __init__(self): - super().__init__() - self.neurons = bp.LIF(100, ...) - self.weights = brainstate.ParamState(jnp.ones((100, 100))) - - def update(self, x): - self.neurons(x) - return self.neurons.get_spike() - -State Initialization --------------------- - -init_all_states -~~~~~~~~~~~~~~~ - -.. function:: init_all_states(module, batch_size=None) - - Initialize all states in a module hierarchy. - - **Parameters:** - - - ``module`` - Network module - - ``batch_size`` (int or None) - Optional batch dimension - - **Example:** - - .. code-block:: python - - net = MyNetwork() - brainstate.nn.init_all_states(net) # Single trial - brainstate.nn.init_all_states(net, batch_size=32) # Batched - -Readout Layers --------------- - -Readout -~~~~~~~ - -.. class:: Readout(in_size, out_size) - - Convert spikes to continuous outputs. - - **Example:** - - .. code-block:: python - - readout = bp.Readout(n_hidden, n_output) - - # Usage - spikes = hidden_neurons.get_spike() - logits = readout(spikes) - -Linear -~~~~~~ - -.. class:: Linear(in_size, out_size, w_init=None, b_init=None) - - Fully connected linear layer. - - **Parameters:** - - - ``in_size`` (int) - Input dimension - - ``out_size`` (int) - Output dimension - - ``w_init`` - Weight initializer - - ``b_init`` - Bias initializer (None for no bias) - - **Example:** - - .. code-block:: python - - fc = brainstate.nn.Linear( - 100, 50, - w_init=brainstate.init.KaimingNormal() - ) - - output = fc(input_data) - -See Also --------- - -- :doc:`../core-concepts/architecture` - Architecture overview -- :doc:`../core-concepts/state-management` - State system -- :doc:`../tutorials/basic/03-network-connections` - Network tutorial diff --git a/docs_state_based/api/training.rst b/docs_state_based/api/training.rst deleted file mode 100644 index 94e8619f0..000000000 --- a/docs_state_based/api/training.rst +++ /dev/null @@ -1,221 +0,0 @@ -Training Utilities -================== - -Tools for training spiking neural networks. - -.. currentmodule:: braintools - -Optimizers ----------- - -From ``braintools.optim``: - -Adam -~~~~ - -.. class:: optim.Adam(learning_rate=0.001, beta1=0.9, beta2=0.999, eps=1e-8) - - Adam optimizer. - - **Parameters:** - - - ``learning_rate`` (float) - Learning rate - - ``beta1`` (float) - First moment decay - - ``beta2`` (float) - Second moment decay - - ``eps`` (float) - Numerical stability - - **Methods:** - - .. method:: register_trainable_weights(params) - - Register parameters to optimize. - - .. method:: update(grads) - - Update parameters with gradients. - - **Example:** - - .. code-block:: python - - optimizer = braintools.optim.Adam(learning_rate=1e-3) - params = net.states(brainstate.ParamState) - optimizer.register_trainable_weights(params) - - # Training loop - grads = brainstate.transform.grad(loss_fn, params)(...) - optimizer.update(grads) - -SGD -~~~ - -.. class:: optim.SGD(learning_rate=0.01, momentum=0.0) - - Stochastic gradient descent with momentum. - -RMSprop -~~~~~~~ - -.. class:: optim.RMSprop(learning_rate=0.001, decay=0.9, eps=1e-8) - - RMSprop optimizer. - -Gradient Computation --------------------- - -From ``brainstate.transform``: - -grad -~~~~ - -.. function:: transform.grad(fun, argnums=0, has_aux=False, return_value=False) - - Compute gradients of a function. - - **Parameters:** - - - ``fun`` - Function to differentiate - - ``argnums`` - Which arguments to differentiate - - ``has_aux`` - Whether function returns auxiliary data - - ``return_value`` - Also return function value - - **Example:** - - .. code-block:: python - - def loss_fn(params, net, X, y): - output = net(X) - return jnp.mean((output - y)**2) - - params = net.states(brainstate.ParamState) - - # Get gradients - grads = brainstate.transform.grad(loss_fn, params)(net, X, y) - - # Get gradients and loss - grads, loss = brainstate.transform.grad( - loss_fn, params, return_value=True - )(net, X, y) - -value_and_grad -~~~~~~~~~~~~~~ - -.. function:: transform.value_and_grad(fun, argnums=0) - - Compute both value and gradient (more efficient than separate calls). - -Surrogate Gradients -------------------- - -From ``braintools.surrogate``: - -ReluGrad -~~~~~~~~ - -.. class:: surrogate.ReluGrad(alpha=1.0) - - ReLU surrogate gradient for spike function. - - **Example:** - - .. code-block:: python - - neuron = bp.LIF( - 100, - spike_fun=braintools.surrogate.ReluGrad() - ) - -sigmoid -~~~~~~~ - -.. function:: surrogate.sigmoid(alpha=4.0) - - Sigmoid surrogate gradient. - -slayer_grad -~~~~~~~~~~~ - -.. function:: surrogate.slayer_grad(alpha=4.0) - - SLAYER/SuperSpike surrogate gradient. - -Loss Functions --------------- - -From ``braintools.metric``: - -softmax_cross_entropy_with_integer_labels -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. function:: metric.softmax_cross_entropy_with_integer_labels(logits, labels) - - Cross-entropy loss for classification. - - **Parameters:** - - - ``logits`` - Network outputs (batch_size, num_classes) - - ``labels`` - Integer labels (batch_size,) - - **Returns:** - - Loss per example (batch_size,) - - **Example:** - - .. code-block:: python - - logits = net(inputs) # (32, 10) - labels = jnp.array([0, 1, 2, ...]) # (32,) - - loss = braintools.metric.softmax_cross_entropy_with_integer_labels( - logits, labels - ).mean() - -Training Workflow ------------------ - -**Complete example:** - -.. code-block:: python - - import brainpy as bp - import brainstate - import braintools - - # 1. Create network - net = TrainableSNN() - brainstate.nn.init_all_states(net, batch_size=32) - - # 2. Create optimizer - optimizer = braintools.optim.Adam(learning_rate=1e-3) - params = net.states(brainstate.ParamState) - optimizer.register_trainable_weights(params) - - # 3. Define loss function - def loss_fn(params, net, X, y): - brainstate.nn.init_all_states(net) - logits = run_network(net, X) # Simulate and accumulate - loss = braintools.metric.softmax_cross_entropy_with_integer_labels( - logits, y - ).mean() - return loss - - # 4. Training loop - for epoch in range(num_epochs): - for X_batch, y_batch in data_loader: - # Compute gradients - grads, loss = brainstate.transform.grad( - loss_fn, params, return_value=True - )(net, X_batch, y_batch) - - # Update parameters - optimizer.update(grads) - - print(f"Loss: {loss:.4f}") - -See Also --------- - -- :doc:`../tutorials/advanced/05-snn-training` - SNN training tutorial -- :doc:`../how-to-guides/save-load-models` - Model checkpointing -- :doc:`../how-to-guides/gpu-tpu-usage` - GPU acceleration diff --git a/examples_version2/README.md b/examples_classic/README.md similarity index 100% rename from examples_version2/README.md rename to examples_classic/README.md diff --git a/examples_version2/dynamics_analysis/1d_qif.py b/examples_classic/dynamics_analysis/1d_qif.py similarity index 100% rename from examples_version2/dynamics_analysis/1d_qif.py rename to examples_classic/dynamics_analysis/1d_qif.py diff --git a/examples_version2/dynamics_analysis/2d_fitzhugh_nagumo_model.py b/examples_classic/dynamics_analysis/2d_fitzhugh_nagumo_model.py similarity index 100% rename from examples_version2/dynamics_analysis/2d_fitzhugh_nagumo_model.py rename to examples_classic/dynamics_analysis/2d_fitzhugh_nagumo_model.py diff --git a/examples_version2/dynamics_analysis/2d_mean_field_QIF.py b/examples_classic/dynamics_analysis/2d_mean_field_QIF.py similarity index 100% rename from examples_version2/dynamics_analysis/2d_mean_field_QIF.py rename to examples_classic/dynamics_analysis/2d_mean_field_QIF.py diff --git a/examples_version2/dynamics_analysis/3d_reduced_trn_model.py b/examples_classic/dynamics_analysis/3d_reduced_trn_model.py similarity index 100% rename from examples_version2/dynamics_analysis/3d_reduced_trn_model.py rename to examples_classic/dynamics_analysis/3d_reduced_trn_model.py diff --git a/examples_version2/dynamics_analysis/4d_HH_model.py b/examples_classic/dynamics_analysis/4d_HH_model.py similarity index 100% rename from examples_version2/dynamics_analysis/4d_HH_model.py rename to examples_classic/dynamics_analysis/4d_HH_model.py diff --git a/examples_version2/dynamics_analysis/highdim_RNN_Analysis.py b/examples_classic/dynamics_analysis/highdim_RNN_Analysis.py similarity index 100% rename from examples_version2/dynamics_analysis/highdim_RNN_Analysis.py rename to examples_classic/dynamics_analysis/highdim_RNN_Analysis.py diff --git a/examples_version2/dynamics_simulation/COBA.py b/examples_classic/dynamics_simulation/COBA.py similarity index 100% rename from examples_version2/dynamics_simulation/COBA.py rename to examples_classic/dynamics_simulation/COBA.py diff --git a/examples_version2/dynamics_simulation/decision_making_network.py b/examples_classic/dynamics_simulation/decision_making_network.py similarity index 100% rename from examples_version2/dynamics_simulation/decision_making_network.py rename to examples_classic/dynamics_simulation/decision_making_network.py diff --git a/examples_version2/dynamics_simulation/ei_nets.py b/examples_classic/dynamics_simulation/ei_nets.py similarity index 100% rename from examples_version2/dynamics_simulation/ei_nets.py rename to examples_classic/dynamics_simulation/ei_nets.py diff --git a/examples_version2/dynamics_simulation/hh_model.py b/examples_classic/dynamics_simulation/hh_model.py similarity index 100% rename from examples_version2/dynamics_simulation/hh_model.py rename to examples_classic/dynamics_simulation/hh_model.py diff --git a/examples_version2/dynamics_simulation/stdp.py b/examples_classic/dynamics_simulation/stdp.py similarity index 100% rename from examples_version2/dynamics_simulation/stdp.py rename to examples_classic/dynamics_simulation/stdp.py diff --git a/examples_version2/dynamics_simulation/whole_brain_simulation_with_fhn.py b/examples_classic/dynamics_simulation/whole_brain_simulation_with_fhn.py similarity index 100% rename from examples_version2/dynamics_simulation/whole_brain_simulation_with_fhn.py rename to examples_classic/dynamics_simulation/whole_brain_simulation_with_fhn.py diff --git a/examples_version2/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py b/examples_classic/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py similarity index 100% rename from examples_version2/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py rename to examples_classic/dynamics_simulation/whole_brain_simulation_with_sl_oscillator.py diff --git a/examples_version2/dynamics_training/Song_2016_EI_RNN.py b/examples_classic/dynamics_training/Song_2016_EI_RNN.py similarity index 100% rename from examples_version2/dynamics_training/Song_2016_EI_RNN.py rename to examples_classic/dynamics_training/Song_2016_EI_RNN.py diff --git a/examples_version2/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py b/examples_classic/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py similarity index 100% rename from examples_version2/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py rename to examples_classic/dynamics_training/Sussillo_Abbott_2009_FORCE_Learning.py diff --git a/examples_version2/dynamics_training/echo_state_network.py b/examples_classic/dynamics_training/echo_state_network.py similarity index 100% rename from examples_version2/dynamics_training/echo_state_network.py rename to examples_classic/dynamics_training/echo_state_network.py diff --git a/examples_version2/dynamics_training/integrate_brainpy_into_flax-convlstm.py b/examples_classic/dynamics_training/integrate_brainpy_into_flax-convlstm.py similarity index 100% rename from examples_version2/dynamics_training/integrate_brainpy_into_flax-convlstm.py rename to examples_classic/dynamics_training/integrate_brainpy_into_flax-convlstm.py diff --git a/examples_version2/dynamics_training/integrate_brainpy_into_flax-lif.py b/examples_classic/dynamics_training/integrate_brainpy_into_flax-lif.py similarity index 100% rename from examples_version2/dynamics_training/integrate_brainpy_into_flax-lif.py rename to examples_classic/dynamics_training/integrate_brainpy_into_flax-lif.py diff --git a/examples_version2/dynamics_training/integrate_flax_into_brainpy.py b/examples_classic/dynamics_training/integrate_flax_into_brainpy.py similarity index 100% rename from examples_version2/dynamics_training/integrate_flax_into_brainpy.py rename to examples_classic/dynamics_training/integrate_flax_into_brainpy.py diff --git a/examples_version2/dynamics_training/integrator_rnn.py b/examples_classic/dynamics_training/integrator_rnn.py similarity index 100% rename from examples_version2/dynamics_training/integrator_rnn.py rename to examples_classic/dynamics_training/integrator_rnn.py diff --git a/examples_version2/dynamics_training/reservoir-mnist.py b/examples_classic/dynamics_training/reservoir-mnist.py similarity index 100% rename from examples_version2/dynamics_training/reservoir-mnist.py rename to examples_classic/dynamics_training/reservoir-mnist.py diff --git a/examples_version2/training_ann_models/mnist-cnn.py b/examples_classic/training_ann_models/mnist-cnn.py similarity index 100% rename from examples_version2/training_ann_models/mnist-cnn.py rename to examples_classic/training_ann_models/mnist-cnn.py diff --git a/examples_version2/training_ann_models/mnist_ResNet.py b/examples_classic/training_ann_models/mnist_ResNet.py similarity index 100% rename from examples_version2/training_ann_models/mnist_ResNet.py rename to examples_classic/training_ann_models/mnist_ResNet.py diff --git a/examples_version2/training_snn_models/readme.md b/examples_classic/training_snn_models/readme.md similarity index 100% rename from examples_version2/training_snn_models/readme.md rename to examples_classic/training_snn_models/readme.md diff --git a/examples_version2/training_snn_models/spikebased_bp_for_cifar10.py b/examples_classic/training_snn_models/spikebased_bp_for_cifar10.py similarity index 100% rename from examples_version2/training_snn_models/spikebased_bp_for_cifar10.py rename to examples_classic/training_snn_models/spikebased_bp_for_cifar10.py diff --git a/examples_state_based/102_EI_net_1996.py b/examples_state/102_EI_net_1996.py similarity index 89% rename from examples_state_based/102_EI_net_1996.py rename to examples_state/102_EI_net_1996.py index 8f64cd99f..d0235bcb7 100644 --- a/examples_state_based/102_EI_net_1996.py +++ b/examples_state/102_EI_net_1996.py @@ -39,7 +39,7 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -52,23 +52,23 @@ def __init__(self, n_exc, n_inh, prob, JE, JI): self.num = n_exc + n_inh # neurons - self.N = brainpy.LIF( + self.N = brainpy.state.LIF( n_exc + n_inh, V_rest=-52. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=10. * u.ms, V_initializer=braintools.init.Normal(-60., 10., unit=u.mV), spk_reset='soft' ) # synapses - self.E = brainpy.AlignPostProj( + self.E = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(n_exc, self.num, prob, JE), - syn=brainpy.Expon.desc(self.num, tau=2. * u.ms), - out=brainpy.CUBA.desc(), + syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms), + out=brainpy.state.CUBA.desc(), post=self.N, ) - self.I = brainpy.AlignPostProj( + self.I = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(n_inh, self.num, prob, JI), - syn=brainpy.Expon.desc(self.num, tau=2. * u.ms), - out=brainpy.CUBA.desc(), + syn=brainpy.state.Expon.desc(self.num, tau=2. * u.ms), + out=brainpy.state.CUBA.desc(), post=self.N, ) diff --git a/examples_state_based/103_COBA_2005.py b/examples_state/103_COBA_2005.py similarity index 87% rename from examples_state_based/103_COBA_2005.py rename to examples_state/103_COBA_2005.py index febefee45..e8569f93b 100644 --- a/examples_state_based/103_COBA_2005.py +++ b/examples_state/103_COBA_2005.py @@ -28,7 +28,7 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -39,21 +39,21 @@ def __init__(self): self.n_exc = 3200 self.n_inh = 800 self.num = self.n_exc + self.n_inh - self.N = brainpy.LIFRef( + self.N = brainpy.state.LIFRef( self.num, V_rest=-60. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=20. * u.ms, tau_ref=5. * u.ms, V_initializer=braintools.init.Normal(-55., 2., unit=u.mV) ) - self.E = brainpy.AlignPostProj( + self.E = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=0.6 * u.mS), - syn=brainpy.Expon.desc(self.num, tau=5. * u.ms), - out=brainpy.COBA.desc(E=0. * u.mV), + syn=brainpy.state.Expon.desc(self.num, tau=5. * u.ms), + out=brainpy.state.COBA.desc(E=0. * u.mV), post=self.N ) - self.I = brainpy.AlignPostProj( + self.I = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=6.7 * u.mS), - syn=brainpy.Expon.desc(self.num, tau=10. * u.ms), - out=brainpy.COBA.desc(E=-80. * u.mV), + syn=brainpy.state.Expon.desc(self.num, tau=10. * u.ms), + out=brainpy.state.COBA.desc(E=-80. * u.mV), post=self.N ) diff --git a/examples_state_based/104_CUBA_2005.py b/examples_state/104_CUBA_2005.py similarity index 87% rename from examples_state_based/104_CUBA_2005.py rename to examples_state/104_CUBA_2005.py index a7a0b7b19..0a39e43a6 100644 --- a/examples_state_based/104_CUBA_2005.py +++ b/examples_state/104_CUBA_2005.py @@ -28,7 +28,7 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -39,21 +39,21 @@ def __init__(self): self.n_exc = 3200 self.n_inh = 800 self.num = self.n_exc + self.n_inh - self.N = brainpy.LIFRef( + self.N = brainpy.state.LIFRef( self.num, V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=20. * u.ms, tau_ref=5. * u.ms, V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) ) - self.E = brainpy.AlignPostProj( + self.E = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_exc, self.num, conn_num=0.02, conn_weight=1.62 * u.mS), - syn=brainpy.Expon.desc(self.num, tau=5. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.num, tau=5. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.N ) - self.I = brainpy.AlignPostProj( + self.I = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_inh, self.num, conn_num=0.02, conn_weight=-9.0 * u.mS), - syn=brainpy.Expon.desc(self.num, tau=10. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.num, tau=10. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.N ) diff --git a/examples_state_based/104_CUBA_2005_version2.py b/examples_state/104_CUBA_2005_version2.py similarity index 81% rename from examples_state_based/104_CUBA_2005_version2.py rename to examples_state/104_CUBA_2005_version2.py index 46987db5e..5ab7ee5a1 100644 --- a/examples_state_based/104_CUBA_2005_version2.py +++ b/examples_state/104_CUBA_2005_version2.py @@ -28,7 +28,7 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -38,48 +38,48 @@ def __init__(self): super().__init__() self.n_exc = 3200 self.n_inh = 800 - self.E = brainpy.LIFRef( + self.E = brainpy.state.LIFRef( self.n_exc, V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=20. * u.ms, tau_ref=5. * u.ms, V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) ) - self.I = brainpy.LIFRef( + self.I = brainpy.state.LIFRef( self.n_inh, V_rest=-49. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV, tau=20. * u.ms, tau_ref=5. * u.ms, V_initializer=braintools.init.Normal(-55. * u.mV, 2. * u.mV) ) - self.E2E = brainpy.AlignPostProj( + self.E2E = brainpy.state.AlignPostProj( self.E.prefetch('V'), lambda x: self.E.get_spike(x) != 0., comm=brainstate.nn.EventFixedProb(self.n_exc, self.n_exc, conn_num=0.02, conn_weight=1.62 * u.mS), - syn=brainpy.Expon.desc(self.n_exc, tau=5. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.n_exc, tau=5. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.E ) - self.E2I = brainpy.AlignPostProj( + self.E2I = brainpy.state.AlignPostProj( self.E.prefetch('V'), lambda x: self.E.get_spike(x) != 0., comm=brainstate.nn.EventFixedProb(self.n_exc, self.n_inh, conn_num=0.02, conn_weight=1.62 * u.mS), - syn=brainpy.Expon.desc(self.n_inh, tau=5. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.n_inh, tau=5. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.I ) - self.I2E = brainpy.AlignPostProj( + self.I2E = brainpy.state.AlignPostProj( self.I.prefetch('V'), lambda x: self.I.get_spike(x) != 0., comm=brainstate.nn.EventFixedProb(self.n_inh, self.n_exc, conn_num=0.02, conn_weight=-9.0 * u.mS), - syn=brainpy.Expon.desc(self.n_exc, tau=10. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.n_exc, tau=10. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.E ) - self.I2I = brainpy.AlignPostProj( + self.I2I = brainpy.state.AlignPostProj( self.I.prefetch('V'), lambda x: self.I.get_spike(x) != 0., comm=brainstate.nn.EventFixedProb(self.n_inh, self.n_inh, conn_num=0.02, conn_weight=-9.0 * u.mS), - syn=brainpy.Expon.desc(self.n_inh, tau=10. * u.ms), - out=brainpy.CUBA.desc(scale=u.volt), + syn=brainpy.state.Expon.desc(self.n_inh, tau=10. * u.ms), + out=brainpy.state.CUBA.desc(scale=u.volt), post=self.I ) diff --git a/examples_state_based/106_COBA_HH_2007.py b/examples_state/106_COBA_HH_2007.py similarity index 95% rename from examples_state_based/106_COBA_HH_2007.py rename to examples_state/106_COBA_HH_2007.py index 804b56f49..d590e7372 100644 --- a/examples_state_based/106_COBA_HH_2007.py +++ b/examples_state/106_COBA_HH_2007.py @@ -24,7 +24,7 @@ import matplotlib.pyplot as plt import numpy as np -import brainpy.state_based as brainpy +import brainpy import brainstate # brainstate.environ.set(precision='bf16') @@ -136,16 +136,16 @@ def __init__(self): self.varshape = self.n_exc + self.n_inh self.N = HH(self.varshape) - self.E = brainpy.AlignPostProj( + self.E = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_exc, self.varshape, conn_num=0.02, conn_weight=we), - syn=brainpy.Expon(self.varshape, tau=taue), - out=brainpy.COBA(E=Ee), + syn=brainpy.state.Expon(self.varshape, tau=taue), + out=brainpy.state.COBA(E=Ee), post=self.N ) - self.I = brainpy.AlignPostProj( + self.I = brainpy.state.AlignPostProj( comm=brainstate.nn.EventFixedProb(self.n_inh, self.varshape, conn_num=0.02, conn_weight=wi), - syn=brainpy.Expon(self.varshape, tau=taui), - out=brainpy.COBA(E=Ei), + syn=brainpy.state.Expon(self.varshape, tau=taui), + out=brainpy.state.COBA(E=Ei), post=self.N ) diff --git a/examples_state_based/107_gamma_oscillation_1996.py b/examples_state/107_gamma_oscillation_1996.py similarity index 96% rename from examples_state_based/107_gamma_oscillation_1996.py rename to examples_state/107_gamma_oscillation_1996.py index 2ff4853fd..5cc4d4102 100644 --- a/examples_state_based/107_gamma_oscillation_1996.py +++ b/examples_state/107_gamma_oscillation_1996.py @@ -23,12 +23,12 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools -class HH(brainpy.Neuron): +class HH(brainpy.state.Neuron): def __init__( self, in_size, ENa=55. * u.mV, EK=-90. * u.mV, EL=-65 * u.mV, C=1.0 * u.uF, gNa=35. * u.msiemens, gK=9. * u.msiemens, gL=0.1 * u.msiemens, V_th=20. * u.mV, phi=5.0 @@ -88,7 +88,7 @@ def update(self, x=0. * u.uA): return self.V.value -class Synapse(brainpy.Synapse): +class Synapse(brainpy.state.Synapse): def __init__(self, in_size, alpha=12 / u.ms, beta=0.1 / u.ms): super().__init__(in_size=in_size) self.alpha = alpha @@ -112,12 +112,12 @@ def __init__(self, num: int = 100): self.neu = HH(num) # self.syn = brainstate.nn.GABAa(num, alpha=12 / (u.ms * u.mM), beta=0.1 / u.ms) self.syn = Synapse(num) - self.proj = brainpy.CurrentProj( + self.proj = brainpy.state.CurrentProj( self.syn.prefetch('g'), comm=brainstate.nn.AllToAll( self.neu.varshape, self.neu.varshape, include_self=False, w_init=0.1 * u.msiemens / num ), - out=brainpy.COBA(E=-75. * u.mV), + out=brainpy.state.COBA(E=-75. * u.mV), post=self.neu ) diff --git a/examples_state_based/108_synfire_chains_199.py b/examples_state/108_synfire_chains_199.py similarity index 96% rename from examples_state_based/108_synfire_chains_199.py rename to examples_state/108_synfire_chains_199.py index 52f224373..050a3ca28 100644 --- a/examples_state_based/108_synfire_chains_199.py +++ b/examples_state/108_synfire_chains_199.py @@ -23,7 +23,7 @@ import jax import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -51,7 +51,7 @@ # ------------ -class Population(brainpy.Neuron): +class Population(brainpy.state.Neuron): def __init__(self, in_size, **kwargs): super().__init__(in_size, **kwargs) @@ -85,7 +85,7 @@ def update(self): # synaptic model # --------------- -class Projection(brainpy.Synapse): +class Projection(brainpy.state.Synapse): def __init__(self, group, **kwargs): super().__init__(group.varshape, **kwargs) @@ -123,7 +123,7 @@ class Net(brainstate.nn.Module): def __init__(self, n_spike): super().__init__() times = brainstate.random.randn(n_spike) * spike_sigma + 20 * u.ms - self.ext = brainpy.SpikeTime(n_spike, times=times, indices=u.math.arange(n_spike), need_sort=False) + self.ext = brainpy.state.SpikeTime(n_spike, times=times, indices=u.math.arange(n_spike), need_sort=False) self.pop = Population(in_size=n_groups * group_size) self.syn = Projection(self.pop) diff --git a/examples_state_based/109_fast_global_oscillation.py b/examples_state/109_fast_global_oscillation.py similarity index 97% rename from examples_state_based/109_fast_global_oscillation.py rename to examples_state/109_fast_global_oscillation.py index 80df87f02..600238993 100644 --- a/examples_state_based/109_fast_global_oscillation.py +++ b/examples_state/109_fast_global_oscillation.py @@ -25,7 +25,7 @@ import jax import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -43,7 +43,7 @@ sparseness = C / N -class LIF(brainpy.Neuron): +class LIF(brainpy.state.Neuron): def __init__(self, in_size, **kwargs): super().__init__(in_size, **kwargs) @@ -78,7 +78,7 @@ def __init__(self, num): super().__init__() self.group = LIF(num) self.delay = brainstate.nn.Delay(jax.ShapeDtypeStruct((num,), bool), delta) - self.syn = brainpy.DeltaProj( + self.syn = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(num, num, sparseness, -J), post=self.group ) diff --git a/examples_state_based/110_Susin_Destexhe_2021_gamma_oscillation_AI.py b/examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py similarity index 94% rename from examples_state_based/110_Susin_Destexhe_2021_gamma_oscillation_AI.py rename to examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py index 5a20f6bea..7149ada28 100644 --- a/examples_state_based/110_Susin_Destexhe_2021_gamma_oscillation_AI.py +++ b/examples_state/110_Susin_Destexhe_2021_gamma_oscillation_AI.py @@ -27,7 +27,7 @@ import brainunit as u import matplotlib.pyplot as plt -import brainpy.state_based as brainpy +import brainpy import brainstate from Susin_Destexhe_2021_gamma_oscillation import ( get_inputs, visualize_simulation_results, @@ -93,40 +93,40 @@ def __init__(self): FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) self.fs_pop = AdEx(self.num_inh, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) self.rs_pop = AdEx(self.num_exc, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) - self.ext_pop = brainpy.PoissonEncoder(self.num_exc) + self.ext_pop = brainpy.state.PoissonEncoder(self.num_exc) # Poisson inputs - self.ext_to_FS = brainpy.DeltaProj( + self.ext_to_FS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.ext_weight), post=self.fs_pop, label='ge' ) - self.ext_to_RS = brainpy.DeltaProj( + self.ext_to_RS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.ext_weight), post=self.rs_pop, label='ge' ) # synaptic projections - self.RS_to_FS = brainpy.DeltaProj( + self.RS_to_FS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.exc_syn_weight), post=self.fs_pop, label='ge' ) - self.RS_to_RS = brainpy.DeltaProj( + self.RS_to_RS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.exc_syn_weight), post=self.rs_pop, label='ge' ) - self.FS_to_FS = brainpy.DeltaProj( + self.FS_to_FS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_inh, 0.02, self.inh_syn_weight), post=self.fs_pop, label='gi' ) - self.FS_to_RS = brainpy.DeltaProj( + self.FS_to_RS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_exc, 0.02, self.inh_syn_weight), post=self.rs_pop, diff --git a/examples_state_based/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py b/examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py similarity index 91% rename from examples_state_based/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py rename to examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py index 961089d4a..36a454a5b 100644 --- a/examples_state_based/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py +++ b/examples_state/111_Susin_Destexhe_2021_gamma_oscillation_CHING.py @@ -24,7 +24,7 @@ import brainunit as u -import brainpy.state_based as brainpy +import brainpy import brainstate from Susin_Destexhe_2021_gamma_oscillation import ( get_inputs, visualize_simulation_results, RS_par, FS_par, Ch_par, AdEx @@ -57,39 +57,39 @@ def __init__(self): self.rs_pop = AdEx(self.num_rs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) self.fs_pop = AdEx(self.num_fs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) self.ch_pop = AdEx(self.num_ch, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **Ch_par_) - self.ext_pop = brainpy.PoissonEncoder(self.num_rs) + self.ext_pop = brainpy.state.PoissonEncoder(self.num_rs) # Poisson inputs - self.ext_to_FS = brainpy.DeltaProj( + self.ext_to_FS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.ext_weight2), post=self.fs_pop, label='ge', ) - self.ext_to_RS = brainpy.DeltaProj( + self.ext_to_RS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.ext_weight1), post=self.rs_pop, label='ge', ) - self.ext_to_CH = brainpy.DeltaProj( + self.ext_to_CH = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_ch, 0.02, self.ext_weight1), post=self.ch_pop, label='ge', ) # synaptic projections - self.RS_to_FS = brainpy.DeltaProj( + self.RS_to_FS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.exc_syn_weight), post=self.fs_pop, label='ge', ) - self.RS_to_RS = brainpy.DeltaProj( + self.RS_to_RS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.exc_syn_weight), post=self.rs_pop, label='ge', ) - self.RS_to_Ch = brainpy.DeltaProj( + self.RS_to_Ch = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_ch, 0.02, self.exc_syn_weight), post=self.ch_pop, @@ -97,19 +97,19 @@ def __init__(self): ) # inhibitory projections - self.FS_to_RS = brainpy.DeltaProj( + self.FS_to_RS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_rs, 0.02, self.inh_syn_weight1), post=self.rs_pop, label='gi', ) - self.FS_to_FS = brainpy.DeltaProj( + self.FS_to_FS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs, 0.02, self.inh_syn_weight2), post=self.fs_pop, label='gi', ) - self.FS_to_Ch = brainpy.DeltaProj( + self.FS_to_Ch = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_ch, 0.02, self.inh_syn_weight1), post=self.ch_pop, @@ -117,19 +117,19 @@ def __init__(self): ) # chatter cell projections - self.Ch_to_RS = brainpy.DeltaProj( + self.Ch_to_RS = brainpy.state.DeltaProj( self.ch_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_rs, 0.02, self.exc_syn_weight), post=self.rs_pop, label='ge', ) - self.Ch_to_FS = brainpy.DeltaProj( + self.Ch_to_FS = brainpy.state.DeltaProj( self.ch_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_fs, 0.02, self.exc_syn_weight), post=self.fs_pop, label='ge', ) - self.Ch_to_Ch = brainpy.DeltaProj( + self.Ch_to_Ch = brainpy.state.DeltaProj( self.ch_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_ch, self.num_ch, 0.02, self.exc_syn_weight), post=self.ch_pop, diff --git a/examples_state_based/112_Susin_Destexhe_2021_gamma_oscillation_ING.py b/examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py similarity index 91% rename from examples_state_based/112_Susin_Destexhe_2021_gamma_oscillation_ING.py rename to examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py index 0172504f2..9d3ea2642 100644 --- a/examples_state_based/112_Susin_Destexhe_2021_gamma_oscillation_ING.py +++ b/examples_state/112_Susin_Destexhe_2021_gamma_oscillation_ING.py @@ -25,7 +25,7 @@ import brainunit as u -import brainpy.state_based as brainpy +import brainpy import brainstate from Susin_Destexhe_2021_gamma_oscillation import ( get_inputs, visualize_simulation_results, RS_par, FS_par, AdEx @@ -56,77 +56,77 @@ def __init__(self): self.rs_pop = AdEx(self.num_rs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) self.fs_pop = AdEx(self.num_fs, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) self.fs2_pop = AdEx(self.num_fs2, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS2_par_) - self.ext_pop = brainpy.PoissonEncoder(self.num_rs) + self.ext_pop = brainpy.state.PoissonEncoder(self.num_rs) # Poisson inputs - self.ext_to_FS = brainpy.DeltaProj( + self.ext_to_FS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.ext_weight), post=self.fs_pop, label='ge' ) - self.ext_to_RS = brainpy.DeltaProj( + self.ext_to_RS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.ext_weight), post=self.rs_pop, label='ge' ) - self.ext_to_RS2 = brainpy.DeltaProj( + self.ext_to_RS2 = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs2, 0.02, self.ext_weight), post=self.fs2_pop, label='ge' ) # synaptic projections - self.RS_to_FS = brainpy.DeltaProj( + self.RS_to_FS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs, 0.02, self.exc_syn_weight), post=self.fs_pop, label='ge' ) - self.RS_to_RS = brainpy.DeltaProj( + self.RS_to_RS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_rs, 0.02, self.exc_syn_weight), post=self.rs_pop, label='ge' ) - self.RS_to_FS2 = brainpy.DeltaProj( + self.RS_to_FS2 = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_rs, self.num_fs2, 0.15, self.exc_syn_weight), post=self.fs2_pop, label='ge' ) - self.FS_to_RS = brainpy.DeltaProj( + self.FS_to_RS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_rs, 0.02, self.inh_syn_weight), post=self.rs_pop, label='gi' ) - self.FS_to_FS = brainpy.DeltaProj( + self.FS_to_FS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs, 0.02, self.inh_syn_weight), post=self.fs_pop, label='gi' ) - self.FS_to_FS2 = brainpy.DeltaProj( + self.FS_to_FS2 = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs, self.num_fs2, 0.03, self.inh_syn_weight), post=self.fs2_pop, label='gi' ) - self.FS2_to_RS = brainpy.DeltaProj( + self.FS2_to_RS = brainpy.state.DeltaProj( self.fs2_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_rs, 0.15, self.exc_syn_weight), post=self.rs_pop, label='gi' ) - self.FS2_to_FS = brainpy.DeltaProj( + self.FS2_to_FS = brainpy.state.DeltaProj( self.fs2_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_fs, 0.15, self.exc_syn_weight), post=self.fs_pop, label='gi' ) - self.FS2_to_FS2 = brainpy.DeltaProj( + self.FS2_to_FS2 = brainpy.state.DeltaProj( self.fs2_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_fs2, self.num_fs2, 0.6, self.exc_syn_weight), post=self.fs2_pop, diff --git a/examples_state_based/113_Susin_Destexhe_2021_gamma_oscillation_PING.py b/examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py similarity index 93% rename from examples_state_based/113_Susin_Destexhe_2021_gamma_oscillation_PING.py rename to examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py index 1f1b53ac5..2f68f91ec 100644 --- a/examples_state_based/113_Susin_Destexhe_2021_gamma_oscillation_PING.py +++ b/examples_state/113_Susin_Destexhe_2021_gamma_oscillation_PING.py @@ -25,7 +25,7 @@ import brainunit as u -import brainpy.state_based as brainpy +import brainpy import brainstate from Susin_Destexhe_2021_gamma_oscillation import ( get_inputs, visualize_simulation_results, RS_par, FS_par, AdEx @@ -52,40 +52,40 @@ def __init__(self): FS_par_.update(Vth=-50 * u.mV, V_sp_th=-40 * u.mV) self.rs_pop = AdEx(self.num_exc, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **RS_par_) self.fs_pop = AdEx(self.num_inh, tau_e=self.exc_syn_tau, tau_i=self.inh_syn_tau, **FS_par_) - self.ext_pop = brainpy.PoissonEncoder(self.num_exc) + self.ext_pop = brainpy.state.PoissonEncoder(self.num_exc) # Poisson inputs - self.ext_to_FS = brainpy.DeltaProj( + self.ext_to_FS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.ext_weight), post=self.fs_pop, label='ge' ) - self.ext_to_RS = brainpy.DeltaProj( + self.ext_to_RS = brainpy.state.DeltaProj( comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.ext_weight), post=self.rs_pop, label='ge' ) # synaptic projections - self.RS_to_FS = brainpy.DeltaProj( + self.RS_to_FS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_inh, 0.02, self.exc_syn_weight), post=self.fs_pop, label='ge' ) - self.RS_to_RS = brainpy.DeltaProj( + self.RS_to_RS = brainpy.state.DeltaProj( self.rs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_exc, self.num_exc, 0.02, self.exc_syn_weight), post=self.rs_pop, label='ge' ) - self.FS_to_RS = brainpy.DeltaProj( + self.FS_to_RS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_exc, 0.02, self.inh_syn_weight), post=self.rs_pop, label='gi' ) - self.FS_to_FS = brainpy.DeltaProj( + self.FS_to_FS = brainpy.state.DeltaProj( self.fs_pop.prefetch('spike').delay.at(self.delay), comm=brainstate.nn.EventFixedProb(self.num_inh, self.num_inh, 0.02, self.inh_syn_weight), post=self.fs_pop, diff --git a/examples_state_based/200_surrogate_grad_lif.py b/examples_state/200_surrogate_grad_lif.py similarity index 94% rename from examples_state_based/200_surrogate_grad_lif.py rename to examples_state/200_surrogate_grad_lif.py index 27b5bae58..7861f6f23 100644 --- a/examples_state_based/200_surrogate_grad_lif.py +++ b/examples_state/200_surrogate_grad_lif.py @@ -28,7 +28,7 @@ import matplotlib.pyplot as plt import numpy as np -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -50,10 +50,10 @@ def __init__(self, num_in, num_rec, num_out): w_init=braintools.init.KaimingNormal(scale=scale, unit=u.mA), b_init=braintools.init.ZeroInit(unit=u.mA) ), - brainpy.Expon(num_rec, tau=5. * u.ms, g_initializer=braintools.init.Constant(0. * u.mA)) + brainpy.state.Expon(num_rec, tau=5. * u.ms, g_initializer=braintools.init.Constant(0. * u.mA)) ) # recurrent: r - self.r = brainpy.LIF( + self.r = brainpy.state.LIF( num_rec, tau=20 * u.ms, V_reset=0 * u.mV, V_rest=0 * u.mV, V_th=1. * u.mV, spk_fun=braintools.surrogate.ReluGrad() @@ -61,7 +61,7 @@ def __init__(self, num_in, num_rec, num_out): # synapse: r->o self.r2o = brainstate.nn.Linear(num_rec, num_out, w_init=braintools.init.KaimingNormal()) # # output: o - self.o = brainpy.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.Constant(0.)) + self.o = brainpy.state.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.Constant(0.)) def update(self, spike): return self.o(self.r2o(self.r(self.i2r(spike)))) diff --git a/examples_state_based/201_surrogate_grad_lif_fashion_mnist.py b/examples_state/201_surrogate_grad_lif_fashion_mnist.py similarity index 95% rename from examples_state_based/201_surrogate_grad_lif_fashion_mnist.py rename to examples_state/201_surrogate_grad_lif_fashion_mnist.py index 3cebef0fb..b3e89af84 100644 --- a/examples_state_based/201_surrogate_grad_lif_fashion_mnist.py +++ b/examples_state/201_surrogate_grad_lif_fashion_mnist.py @@ -29,7 +29,7 @@ import numpy as np from datasets import load_dataset -import brainpy.state_based as brainpy +import brainpy import brainstate import braintools @@ -66,14 +66,14 @@ def __init__(self, num_in, num_rec, num_out): # synapse: i->r self.i2r = brainstate.nn.Sequential( brainstate.nn.Linear(num_in, num_rec, w_init=braintools.init.KaimingNormal(scale=40.)), - brainpy.Expon(num_rec, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) + brainpy.state.Expon(num_rec, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) ) # recurrent: r - self.r = brainpy.LIF(num_rec, tau=10 * u.ms, V_reset=0 * u.mV, V_rest=0 * u.mV, V_th=1. * u.mV) + self.r = brainpy.state.LIF(num_rec, tau=10 * u.ms, V_reset=0 * u.mV, V_rest=0 * u.mV, V_th=1. * u.mV) # synapse: r->o self.r2o = brainstate.nn.Sequential( brainstate.nn.Linear(num_rec, num_out, w_init=braintools.init.KaimingNormal(scale=2.)), - brainpy.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) + brainpy.state.Expon(num_out, tau=10. * u.ms, g_initializer=braintools.init.ZeroInit()) ) def update(self, spikes): diff --git a/examples_state_based/202_mnist_lif_readout.py b/examples_state/202_mnist_lif_readout.py similarity index 97% rename from examples_state_based/202_mnist_lif_readout.py rename to examples_state/202_mnist_lif_readout.py index a1cb44b12..45918f40f 100644 --- a/examples_state_based/202_mnist_lif_readout.py +++ b/examples_state/202_mnist_lif_readout.py @@ -17,7 +17,7 @@ import argparse import time -import brainpy.state_based as brainpy +import brainpy import braintools import brainunit as u import jax.numpy as jnp @@ -44,7 +44,7 @@ def __init__(self, tau): super().__init__() self.l1 = brainstate.nn.Linear( 28 * 28, 10, b_init=None, w_init=braintools.init.LecunNormal(scale=10., unit=u.mA)) - self.l2 = brainpy.LIF(10, V_rest=0. * u.mV, V_reset=0. * u.mV, V_th=1. * u.mV, tau=tau * u.ms) + self.l2 = brainpy.state.LIF(10, V_rest=0. * u.mV, V_reset=0. * u.mV, V_th=1. * u.mV, tau=tau * u.ms) def update(self, x): return self.l2(self.l1(x)) diff --git a/examples_state_based/README.md b/examples_state/README.md similarity index 100% rename from examples_state_based/README.md rename to examples_state/README.md diff --git a/examples_state_based/Susin_Destexhe_2021_gamma_oscillation.py b/examples_state/Susin_Destexhe_2021_gamma_oscillation.py similarity index 99% rename from examples_state_based/Susin_Destexhe_2021_gamma_oscillation.py rename to examples_state/Susin_Destexhe_2021_gamma_oscillation.py index 85e8c1f5f..dfc72170a 100644 --- a/examples_state_based/Susin_Destexhe_2021_gamma_oscillation.py +++ b/examples_state/Susin_Destexhe_2021_gamma_oscillation.py @@ -25,7 +25,7 @@ import numpy as np from scipy.signal import kaiserord, lfilter, firwin, hilbert -import brainpy.state_based as brainpy +import brainpy import brainstate # Table 1: specific neuron model parameters @@ -46,7 +46,7 @@ ) -class AdEx(brainpy.Neuron): +class AdEx(brainpy.state.Neuron): def __init__( self, in_size,