BDP Tutorials
=============

This section contains tutorials on how to use BrainPy to accomplish model building, simulation, training, and analysis.


Math Foundation
---------------

.. toctree::
   :maxdepth: 1

   tutorial_math/variables
   tutorial_math/control_flows
   tutorial_math/Numpy_like_Operations.ipynb
   tutorial_math/Dedicated_Operators.ipynb
   tutorial_math/einops_in_brainpy.ipynb


Model Building with Existing Modules
------------------------------------

.. toctree::
   :maxdepth: 1

   tutorial_building/overview_of_dynamic_model
   tutorial_building/build_conductance_neurons_v2.ipynb
   tutorial_building/phenon_synapse_models.ipynb
   tutorial_building/kinetic_synapse_models.ipynb
   tutorial_building/build_network_models


Model Building by Customizing New Modules
-----------------------------------------

.. toctree::
   :maxdepth: 1

   tutorial_building/customize_neuron_models
   tutorial_building/customize_synapse_models
   tutorial_building/how_to_customze_a_synapse.ipynb


Model Simulation
----------------

.. toctree::
   :maxdepth: 1

   tutorial_simulation/simulation_dsrunner.ipynb
   tutorial_simulation/parallel_for_parameter_exploration.ipynb
   tutorial_simulation/monitor_per_multiple_steps.ipynb


Model Training
--------------

This tutorial shows how to train a dynamical system from data or task.

.. toctree::
   :maxdepth: 1

   tutorial_training/build_training_models.ipynb
   tutorial_training/offline_training.ipynb
   tutorial_training/online_training.ipynb
   tutorial_training/bp_training.ipynb
   tutorial_training/esn_introduction.ipynb


Model Analysis
--------------

.. toctree::
   :maxdepth: 1

   tutorial_analysis/lowdim_analysis
   tutorial_analysis/highdim_analysis
   tutorial_analysis/decision_making_model
