A simple model of neuromodulatory state-dependent synaptic plasticity (Pedrosa and Clopath, 2016)

 Download zip file 
Help downloading and running models
The model is used to illustrate the role of neuromodulators in cortical plasticity. The model consists of a feedforward network with 1 postsynaptic neuron with plastic synaptic weights. These weights are updated through a spike-timing-dependent plasticity rule. "First, we explore the ability of neuromodulators to gate plasticity by reshaping the learning window for spike-timing-dependent plasticity. Using a simple computational model, we implement four different learning rules and demonstrate their effects on receptive field plasticity. We then compare the neuromodulatory effects of upregulating learning rate versus the effects of upregulating neuronal activity. "
1 . Pedrosa V, Clopath C (2017) The role of neuromodulators in cortical plasticity. A computational perspective. Front. Synaptic Neurosci. 8:38
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire fractional leaky neuron;
Gap Junctions:
Simulation Environment: Python;
Model Concept(s): STDP; Synaptic Plasticity; Learning; Neuromodulation;
Implementer(s): Pedrosa, Victor [v.pedrosa15 at imperial.ac.uk];
# Defines the function to create a time-filtered Gaussian noise.
# FiltGNoise(Mean_FRate,tauFilt,N,numSteps,dt):
# 1. [Hz] Mean firing rate
# 2. [ms] Filtering time constant
# 3. Number of neurons
# 4. Number of steps
# 5. [ms] time step

import numpy as np
def FiltGNoise(Mean_FRate,tauFilt,N,numSteps,dt):
	GaussianNoise = np.random.normal(0,1,(numSteps,N))	# Gaussian noise
	FilteredGaussianNoise = GaussianNoise*0.		# Initialization of the filtered Gaussian noise
	# Make the time-filtered Gaussian noise signal
	step_tauFilt = dt/tauFilt # just to make the simulation faster
	for t in range(numSteps)[1:]:
		FilteredGaussianNoise[t] = FilteredGaussianNoise[t-1] - (FilteredGaussianNoise[t-1]-GaussianNoise[t-1])*step_tauFilt
	# Normalize it to a maximum value of 1:
	for i in range(N):
		FilteredGaussianNoise[:,i] = FilteredGaussianNoise[:,i]/np.max(FilteredGaussianNoise[:,i])
	# Apply the rate threshold:
	rth = 0.2
	FilteredGaussianNoise = FilteredGaussianNoise - rth
	# Rectify it:
	FilteredGaussianNoise[FilteredGaussianNoise<0.] = 0.
	# Make the mean firing rate equal to Mean_FRate:
	for i in range(N):
		FilteredGaussianNoise[:,i] = FilteredGaussianNoise[:,i]/np.mean(FilteredGaussianNoise[:,i])*(Mean_FRate/1000.)
	return FilteredGaussianNoise