Simulated cortical color opponent receptive fields self-organize via STDP (Eguchi et al., 2014)

 Download zip file 
Help downloading and running models
Accession:152197
"... In this work, we address the problem of understanding the cortical processing of color information with a possible mechanism of the development of the patchy distribution of color selectivity via computational modeling. ... Our model of the early visual system consists of multiple topographically-arranged layers of excitatory and inhibitory neurons, with sparse intra-layer connectivity and feed-forward connectivity between layers. Layers are arranged based on anatomy of early visual pathways, and include a retina, lateral geniculate nucleus, and layered neocortex. ... After training with natural images, the neurons display heightened sensitivity to specific colors. ..."
Reference:
1 . Eguchi A, Neymotin SA, Stringer SM (2014) Color opponent receptive fields self-organize in a biophysical model of visual cortex via spike-timing dependent plasticity Front. Neural Circuits 8:16 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex; Thalamus; Retina;
Cell Type(s): Hodgkin-Huxley neuron;
Channel(s): I K; I Na, leak;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; Python;
Model Concept(s): Learning; STDP; Laminar Connectivity; Development; Information transfer; Sensory processing; Hebbian plasticity; Vision;
Implementer(s): Eguchi, Akihiro [akihiro.eguchi at psy.ox.ac.uk];
Search NeuronDB for information about:  GabaA; AMPA; I K; I Na, leak; Gaba; Glutamate;
NEURON {
	POINT_PROCESS ExpSynSTDP
	RANGE tau, e, i, d, p, dtau, ptau, verbose, learning, LR, maxWeight, minWeight
	NONSPECIFIC_CURRENT i
}

UNITS {
	(nA) = (nanoamp)
	(mV) = (millivolt)
	(uS) = (microsiemens)
}

PARAMETER {
	tau = 0.1 (ms) <1e-9,1e9>
	e = 0	(mV)
	d = 0 <0,1>: depression factor (multiplicative to prevent < 0)
	p = 0 : potentiation factor (additive, non-saturating)
	dtau = 34 (ms) : 34 depression effectiveness time constant
	ptau = 17 (ms) : 17 Bi & Poo (1998, 2001)
	verbose = 0
	learning = 1
	LR = 0.0001
	maxWeight = 1
	minWeight = 0
}

ASSIGNED {
	v (mV)
	i (nA)
	tpost (ms)
}

STATE {
	g (uS)
}

INITIAL {
	g=0
	tpost = -1e9
	net_send(0, 1)
}

BREAKPOINT {
	SOLVE state METHOD cnexp
	i = g*(v - e)
}

DERIVATIVE state {
	g' = -g/tau
}

NET_RECEIVE(w (uS), tpre (ms)) {
	INITIAL { tpre = -1e9 }
	if (flag == 0) { : presynaptic spike  (after last post so depress)
		g = g + w
		if(learning) {
			if (w>=minWeight){
				w = w-LR*d*exp((tpost - t)/dtau)
				if(w<=minWeight){
					w=minWeight
				}
				:w = w*LR*d*(1-(exp((tpost - t)/dtau)))
				if(verbose) {
					printf("dep: w=%g \t dw=%g \t dt=%g\n", w, -LR*d*exp((tpost - t)/dtau), tpost-t)
				}
			}
		}
		tpre = t
	}else if (flag == 2) { : postsynaptic spike
		tpost = t
		FOR_NETCONS(w1, tp) { : also can hide NET_RECEIVE args
        	if(learning) {
        		if (w1<=maxWeight){
	        		w1 = w1+LR*p*exp((tp - t)/ptau)
	        		if (w1>maxWeight){
	        			w1 = maxWeight
	        		}
	        		if(verbose) {
	        			printf("pot: w=%g \t dw=%g \t dt=%g\n", w1, (LR*p*exp((tp - t)/ptau)), t - tp)
	        		}
	        	}
        	}
		}
	} else { : flag == 1 from INITIAL block
		WATCH (v > -20) 2
	}
}

Loading data, please wait...