Fast population coding (Huys et al. 2007)

 Download zip file 
Help downloading and running models
Accession:93394
"Uncertainty coming from the noise in its neurons and the ill-posed nature of many tasks plagues neural computations. Maybe surprisingly, many studies show that the brain manipulates these forms of uncertainty in a probabilistically consistent and normative manner, and there is now a rich theoretical literature on the capabilities of populations of neurons to implement computations in the face of uncertainty. However, one major facet of uncertainty has received comparatively little attention: time. In a dynamic, rapidly changing world, data are only temporarily relevant. Here, we analyze the computational consequences of encoding stimulus trajectories in populations of neurons. ..."
Reference:
1 . Huys QJ, Zemel RS, Natarajan R, Dayan P (2007) Fast population coding. Neural Comput 19:404-41 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Methods;
Implementer(s):
% GETINF.M
%
% This code is released in conjunction with the paper 
%
%	Huys QJM, Zemel RS, Natarajan R and Dayan P (2006): Fast population
%	coding Neural Computation
%	
% and can be downloaded from 
%
%	http://www.gatsby.ucl.ac.uk/~qhuys/code.html
%
% This script is the workhorse. It is called by MAIN.M and infers the posterior
% distribution p(s_T|\xi). If app=1 in PARAM.M, it also infers the approximate
% posteriors with metronomic spikes. 
%
% Copyright Quentin Huys 2006



%.........................compute true p(s_T|phi_0:T)...............................
minspkt = min(round(spiketime/delta));	% find the minimum spike time. Start
					% inference there, as don't want to do acausal 
					% inference.
P(:,1:minspkt)=1/ds; M(1:minspkt) =0;	% uniform distribution before observe spikes
ts=1;	
for t = min(round(spiketime/delta)):T
	if ~isempty(ts);tsold = ts;end
	ts = max(find(round(spiketime/delta)==t));
	% posterior is different depending on whether there is a spike at time t
	if ~isempty(ts); 
		[V(t),M(t),weight,P(:,t)] = psinf(spikeid(1:ts),spiketime(1:ts),sigma,lambda,tau,rw,s);
	elseif isempty(ts); 
		[V(t),M(t),weight,P(:,t)] = pspred(spikeid(1:tsold),spiketime(1:tsold),t*delta,sigma,lambda,tau,rw,s);
	end
end
P = P./repmat(sum(P),ds,1);		% renormalize for the plots;