Population models of temporal differentiation (Tripp and Eliasmith 2010)

 Download zip file 
Help downloading and running models
"Temporal derivatives are computed by a wide variety of neural circuits, but the problem of performing this computation accurately has received little theoretical study. Here we systematically compare the performance of diverse networks that calculate derivatives using cell-intrinsic adaptation and synaptic depression dynamics, feedforward network dynamics, and recurrent network dynamics. Examples of each type of network are compared by quantifying the errors they introduce into the calculation and their rejection of high-frequency input noise. ..."
1 . Tripp BP, Eliasmith C (2010) Population models of temporal differentiation. Neural Comput 22:621-59 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron;
Gap Junctions:
Receptor(s): AMPA; Gaba;
Simulation Environment: Nengo;
Model Concept(s): Temporal Pattern Generation; Simplified Models;
Implementer(s): Tripp, Bryan [bryan.tripp at mail.mcgill.ca]; Eliasmith, Chris [celiasmith at uwaterloo.ca];
Search NeuronDB for information about:  AMPA; Gaba;
# Simulations with sinusoidal input to test frequency responses

from com.bptripp.diff import *
from ca.nengo.math.impl import SineFunction
from ca.nengo.model import SimulationMode
from ca.nengo.io import MatlabExporter
from java.io import File
import math

#the following networks must be loaded before running this script
networks = [interneuron, dualTC, adapting, depressing, butterworth, interneuronFeedback]
frequencies = [0.25, 0.4504, 0.8115, 1.4620, 2.6340, 4.7456, 8.5499, 15.4039, 27.7524, 50.0000]

for network in networks:

	if network.getName() == "adapting" : 
	maxAmplitude = 0.5
	if network.getName() == "butterworth" :
		maxAmplitude = 1.0/3.0
	if network.getName() == "adapting" :
		maxAmplitude = 1.0
	if network.getName() == "depression" :
		maxAmplitude = 1.0
	exporter = MatlabExporter()
	exporter.add("frequencies", [frequencies])
	for i in range(len(frequencies)):
		frequency = frequencies[i]
		print "Network: ", network.getName(), " Frequency: ", frequency, "Hz"
		angularFrequency = 2 * math.pi * frequency
		amplification = angularFrequency
		if network.getName() == "depression" : 
			amplification = min(amplification, 10.0)
		amplitude = min(maxAmplitude, 1.0/amplification)   #normalize so that input, output, and state magnitudes <= 1  
		network.setInputFunction(SineFunction(angularFrequency, amplitude))

		network.run(0, 1.0+5.0/frequency)
		exporter.add("in%i" %i, network.getInputData())
		exporter.add("out%i" %i, network.getOutputData())

	#export simulation results to a Matlab file

Loading data, please wait...