Grid cell model with compression effects (Raudies & Hasselmo, 2015)

 Download zip file 
Help downloading and running models
Accession:194881
We present a model for compression of grid cell firing in modules to changes in barrier location.
Reference:
1 . Raudies F, Hasselmo ME (2015) Differences in Visual-Spatial Input May Underlie Different Compression Properties of Firing Fields for Grid Cell Modules in Medial Entorhinal Cortex. PLoS Comput Biol 11:e1004596 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism: Entorhinal cortex;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Grid cell;
Implementer(s): Raudies, Florian [florian.raudies at gmail.com];
/
RaudiesHasselmo2015
DotWorld
screenshots
README.html
attractorModel.m
errorarea.m
estimatePosition.m
estimateVelocity.m
Fig2.m
Fig3.m
Fig4.m
FigS1.m
FigS3.m
gpl-3.0.txt *
gridScoreForActivity.m
gridScoreForSpikes.m
ModuleModel.m
randomTrajectory.m
rescaleCorr.m
SimConfA.m
SimConfA.mat
SimConfB.m
SimConfB.mat
SimNoiseWithBias.m
SimNoiseWoutBias.m
TestEstimatePosition.m
vcoModel.m
                            
clc; clear all; close all; clear classes
% *************************************************************************
% Simulation of the module model for configuration B (rectangular box) 
% takes about 4 min.
%
%   Copyright (C) 2015  Florian Raudies, 05/02/2015, Palo Alto, CA.
%   License, GNU GPL, free software, without any warranty.
% *************************************************************************

addpath('./DotWorld');

rng(4); % Set the seed value for the random number generator.
% Initialize the camera, cube box, and the module model.
camera      = SphericalCamera([0;0;1;0],[0;1;0;0],[0;0;0;0],...
                              360/180*pi,120/180*pi,0,0,0,0,5,10^4);
cube        = Cube([-75 -2.5 -75 75 47.5 75],[3 3 3]);
GroundA     = cube.getGroundSegment();
configA     = Scene(cube, camera);
P1          = cube.getPoints();
opt.nStep   = 5;
opt.Ground  = GroundA;
% Create the module model here because of the change of the cube, which
% would influence the width/length parameters inside the module model.
mm          = ModuleModel(configA, opt);

% Change the cube for configuration B.
[cube DeleteIndex]  = cube.resizeX([-50 50]); % Configuration B.
GroundB             = cube.getGroundSegment();
configB             = Scene(cube, camera);
P2                  = cube.getPoints();
opt.nStep           = 5*10^4;
opt.Ground          = GroundB;
opt.DeleteIndex     = DeleteIndex;
mm.resetScene(configB, opt);

tic
mm.simulate();

rmpath('./DotWorld');

PosGt           = mm.getPosGt;
VelZGt          = mm.getVelZGt;
OmegaYGt        = mm.getOmegaYGt;
PosEstByVel     = mm.getPosEstByVel;
PosEstByAng     = mm.getPosEstByAng;
SpikePosForVel  = mm.getSpikePosForVel;
SpikePosForAng  = mm.getSpikePosForAng;

opt.NumPx = [41 27]; % Discretization for firing rate maps.
[gsVelVCO, SpikeRateVelVCO, gsAngVCO, SpikeRateAngVCO] ...
    = mm.calculateGridScores(opt);

mm.calculateGridCellFiringWithAttractorModel();

[gsVelAtt, SpikeRateVelAtt, gsAngAtt, SpikeRateAngAtt] ...
    = mm.calculateGridScores(opt);

toc

save('SimConfB', 'PosGt', 'PosEstByAng', 'PosEstByVel', ...
    'VelZGt', 'OmegaYGt', 'SpikePosForVel', 'SpikePosForAng',...
    'gsVelVCO', 'SpikeRateVelVCO', 'gsAngVCO', 'SpikeRateAngVCO',...
    'gsVelAtt', 'SpikeRateVelAtt', 'gsAngAtt', 'SpikeRateAngAtt');