A simple framework for simulating interactions between multiple neurons. This project is an extension of a course project for Computational Neuroscience.
The entire framework is mostly built using inbuilt python modules. It uses numpy for numerical optimizations.
pip install numpy
Computation of dendritic voltages can be accelerated by GPUs. If the system has a valid installation of CUDA, install numba to make use of the GPU acceleration.
pip install numba
To plot the various potentials and currents, matplotlib can be used.
pip install matplotlib
The framework facilitates building a network as a collection of neurons connected by synapses. Following is a brief description. Please refer to get_started for a detailed description.
The neuron has three components associated with it: Dendrite, Soma and Axon.
The dendrite is implemented following Cable Theory. I've considered the simple case of a non-branching dendrite with single synaptic input. A neuron can have many such dendrites and the currents due to each add up when they reach the soma.
The soma is a Hodgkin-Huxley Model with input currents as the sum total of currents from all input dendrites. The resulting membrane potentials travel down the axon.
The axon follows a simplistic delay model in which the membrane potentials in the soma reach the axon terminals at delayed times. Branching of an axon is modelled as different delays and does not affect the membrane potentials.
Only excitory NMDA and non-NMDA type synapses have been implemented yet. Each of the synapse is modelled as a change in conductance of the postsynaptic dendritic membrane.
All the theory and models used are built using the knowledge gained by reading Theoretical Neuroscience by Peter Dayan and L. F. Abbott and Biophysics of Computation by Christof Koch.
A big shoutout to Chandana for testing the framework.