# brainmodels.synapses.AMPA

class brainmodels.synapses.AMPA(pre, post, conn, delay=0.0, g_max=0.42, E=0.0, alpha=0.98, beta=0.18, T=0.5, T_duration=0.5, method='exp_auto', name=None)[source]

AMPA conductance-based synapse model.

Model Descriptions

AMPA receptor is an ionotropic receptor, which is an ion channel. When it is bound by neurotransmitters, it will immediately open the ion channel, causing the change of membrane potential of postsynaptic neurons.

A classical model is to use the Markov process to model ion channel switch. Here $$g$$ represents the probability of channel opening, $$1-g$$ represents the probability of ion channel closing, and $$\alpha$$ and $$\beta$$ are the transition probability. Because neurotransmitters can open ion channels, the transfer probability from $$1-g$$ to $$g$$ is affected by the concentration of neurotransmitters. We denote the concentration of neurotransmitters as $$[T]$$ and get the following Markov process.

We obtained the following formula when describing the process by a differential equation.

$\frac{dg}{dt} =\alpha[T](1-g)-\beta g$

where $$\alpha [T]$$ denotes the transition probability from state $$(1-g)$$ to state $$(g)$$; and $$\beta$$ represents the transition probability of the other direction. $$\alpha$$ is the binding constant. $$\beta$$ is the unbinding constant. $$[T]$$ is the neurotransmitter concentration, and has the duration of 0.5 ms.

Moreover, the post-synaptic current on the post-synaptic neuron is formulated as

$I_{syn} = g_{max} g (V-E)$

where $$g_{max}$$ is the maximum conductance, and E is the reverse potential.

Model Examples

>>> import brainpy as bp
>>> import brainmodels
>>> import matplotlib.pyplot as plt
>>>
>>> neu1 = brainmodels.neurons.HH(1)
>>> neu2 = brainmodels.neurons.HH(1)
>>> syn1 = brainmodels.synapses.AMPA(neu1, neu2, bp.connect.All2All())
>>> net = bp.Network(pre=neu1, syn=syn1, post=neu2)
>>>
>>> runner = bp.StructRunner(net, inputs=[('pre.input', 5.)], monitors=['pre.V', 'post.V', 'syn.g'])
>>> runner.run(150.)
>>>
>>> fig, gs = bp.visualize.get_figure(2, 1, 3, 8)
>>> plt.plot(runner.mon.ts, runner.mon['pre.V'], label='pre-V')
>>> plt.plot(runner.mon.ts, runner.mon['post.V'], label='post-V')
>>> plt.legend()
>>>
>>> plt.plot(runner.mon.ts, runner.mon['syn.g'], label='g')
>>> plt.legend()
>>> plt.show()


Model Parameters

 Parameter Init Value Unit Explanation delay 0 ms The decay length of the pre-synaptic spikes. g_max .42 µmho(µS) Maximum conductance. E 0 mV The reversal potential for the synaptic current. alpha .98 Binding constant. beta .18 Unbinding constant. T .5 mM Neurotransmitter concentration. T_duration .5 ms Duration of the neurotransmitter concentration.

Model Variables

 Member name Initial values Explanation g 0 Synapse gating variable. pre_spike False The history of pre-synaptic neuron spikes. spike_arrival_time -1e7 The arrival time of the pre-synaptic neuron spike.

References

1

Vijayan S, Kopell N J. Thalamic model of awake alpha oscillations and implications for stimulus processing[J]. Proceedings of the National Academy of Sciences, 2012, 109(45): 18553-18558.

__init__(pre, post, conn, delay=0.0, g_max=0.42, E=0.0, alpha=0.98, beta=0.18, T=0.5, T_duration=0.5, method='exp_auto', name=None)[source]

Methods

 __init__(pre, post, conn[, delay, g_max, E, ...]) check_post_attrs(*attrs) Check whether post group satisfies the requirement. check_pre_attrs(*attrs) Check whether pre group satisfies the requirement. child_ds([method, include_self]) Return the children instance of dynamical systems. derivative(g, t, TT) ints([method]) Collect all integrators in this node and the children nodes. load_states(filename[, verbose, check_missing]) Load the model states. nodes([method, _paths]) Collect all children nodes. register_constant_delay(key, size, delay[, ...]) Register a constant delay, whose update method will be appended into the self.steps in this host class. register_implicit_nodes(nodes) register_implicit_vars(variables) save_states(filename[, all_vars]) Save the model states. train_vars([method]) The shortcut for retrieving all trainable variables. unique_name([name, type_]) Get the unique name for this object. update(_t, _dt) The function to specify the updating rule. vars([method]) Collect all variables in this node and the children nodes.