Hippocampal spiking model for context dependent behavior (Raudies & Hasselmo 2014)

 Download zip file 
Help downloading and running models
Accession:194882
Our model simulates the effect of context dependent behavior using discrete inputs to drive spiking activity representing place and item followed sequentially by a discrete representation of the motor actions involving a response to an item (digging for food) or the movement to a different item (movement to a different pot for food). This simple network was able to consistently learn the context-dependent responses.
Reference:
1 . Raudies F, Hasselmo ME (2014) A model of hippocampal spiking responses to items during learning of a context-dependent task. Front Syst Neurosci 8:178 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Abstract integrate-and-fire leaky neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s):
Implementer(s): Raudies, Florian [florian.raudies at gmail.com];
/
CodePublished
screenshots
README.html
binariness.m
errorarea.m
Figure3AAndFigure4.m
Figure3BAndFigure5.m
firingRateToSI.m
gpl-3.0.txt *
index2label.m
lifModel.m
ManySlotBuffer.m
meanWoutNaN.m
NetworkSimulation100Runs.mat
rasterPlotToFiringRate.m
semWoutNaN.m
spikingNetworkContextLearning.m
StackContainer.m
stdpModel.m
TimeBuffer.m
                            
classdef StackContainer < handle
    % Stack container implements a stack with many slots and a maximum
    % number of entries per slot.
    
    % Florian Raudies, 09/07/2014, Boston University.
    properties
        nSlot       % Number of slots.
        nMaxEntry   % Number of maximum entries per slot.
        Counter     % Counter for each slot.
        Container   % These are the buffers that hold the data.
    end
    methods
        % Constructor.
        function obj = StackContainer(varargin)
            % nSlot, nMaxEntry
            if numel(varargin)==2,
                obj.nSlot       = varargin{1};
                obj.nMaxEntry   = varargin{2};
                obj.Counter     = zeros(obj.nSlot,1);
                obj.Container   = zeros(obj.nSlot,obj.nMaxEntry);
            else
                obj.nSlot       = 0;
                obj.nMaxEntry   = 0;
                obj.Counter     = 0;
                obj.Container   = 0;
            end                
        end
        % Does not work for object handles because it requires some sort of
        % recursion. Is also problematic if there are circular pointers
        % toward this object.
        function new = copy(obj)
            % Instantiate new object of the same class.
            new = feval(class(obj)); 
            % Copy all non-hidden properties.
            p = properties(obj);
            for i = 1:length(p)
                new.(p{i}) = obj.(p{i});
            end
        end
        function e = numel(obj,iSlot)
            e = obj.Counter(iSlot);
        end
        function b = empty(obj,iSlot)
            b = obj.Counter(iSlot)==0;
        end
        function obj = push(obj,iSlot,data)
            if obj.Counter(iSlot)==obj.nMaxEntry,
                error('StackContainer:CapacityLimit','Full!');
            end
            obj.Counter(iSlot) = obj.Counter(iSlot) + 1;
            obj.Container(iSlot,obj.Counter(iSlot)) = data;
        end
        function data = pop(obj,iSlot)
            if obj.Counter(iSlot)==0,
                error('StackContainer:CapacityLimit','Empty!');
            end            
            data = obj.Container(iSlot,obj.Counter(iSlot));
            obj.Counter(iSlot) = obj.Counter(iSlot) - 1;
        end        
    end
end