Reichardt Model for Motion Detection in the Fly Visual System (Tuthill et al, 2011)

 Download zip file 
Help downloading and running models
Accession:168957
This simulation implements a correlation-type model for visual motion detection, as originally described by Hassenstein and Reichardt (1956), and analyzes the response of the model to standard and reverse-phi motion stimuli. Details are provided in: Tuthill JC, et al. (2011)
Reference:
1 . Tuthill JC, Chiappe ME, Reiser MB (2011) Neural correlates of illusory motion perception in Drosophila. Proc Natl Acad Sci U S A 108:9685-90 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Retina; Drosophila;
Cell Type(s): Fly lamina neuron; Fly medulla neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Motion Detection; Vision;
Implementer(s): Tuthill, John [john.c.tuthill at gmail.com]; Reiser, Michael ;
function Mout = ShiftMatrix(Min, Nshift, dir, wrap)
% Mout = ShiftMatrix(Min, Nshift, dir, wrap)
% Shift the data in a pattern matrix in direction given by dir: 'r', 'l',
% 'u', 'd'. Nshift specifies the shift size, 1 is just one row or column, etc.
% The pattern will be wrapped if wrap is 'y' or not if it is set to the value 
% of wrap, e.g 0 or 1.

[numR, numC] = size(Min);
Mout = Min;   %to initialize, set the output M equal to the input M

switch dir
   case 'r'
      Mout(:,Nshift+1:end) = Min(:,1:end-Nshift);
      if wrap == 'y'
          Mout(:,1:Nshift) = Min(:,end-Nshift+1:end);
      else 
          Mout(:,1:Nshift) = repmat(wrap, numR ,Nshift);
      end
   case 'l'
      Mout(:,1:end-Nshift) = Min(:,Nshift+1:end);
      if wrap == 'y'
          Mout(:,end-Nshift+1:end) = Min(:,1:Nshift);
      else 
          Mout(:,end-Nshift+1:end) = repmat(wrap, numR ,Nshift);
      end
   case 'u'
      Mout(1:end-Nshift,:) = Min(Nshift+1:end,:);
      if wrap == 'y'
          Mout(end-Nshift+1:end,:) = Min(1:Nshift,:);
      else 
          Mout(end-Nshift+1:end,:) = repmat(wrap, Nshift, numC);
      end
   case 'd'
      Mout(Nshift+1:end,:) = Min(1:end-Nshift,:);
      if wrap == 'y'
          Mout(1:Nshift,:) = Min(end-Nshift+1:end,:);
      else 
          Mout(1:Nshift,:) = repmat(wrap, Nshift, numC);
      end      
  otherwise
      error('invalid shift direction, must be r, l, u, or d')
end

Loading data, please wait...