Cortico - Basal Ganglia Loop (Mulcahy et al 2020)

 Download zip file 
Help downloading and running models
Accession:261616
The model represents learning and reversal tasks and shows performance in control, Parkinsonian and Huntington disease conditions
Reference:
1 . Mulcahy G, Atwood B, Kuznetsov A (2020) Basal ganglia role in learning rewarded actions and executing previously learned choices: Healthy and diseased states. PLoS One 15:e0228081 [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: Prefrontal cortex (PFC); Basal ganglia;
Cell Type(s): Abstract rate-based neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Rate-coding model neurons; Parkinson's; Activity Patterns; Learning; Deep brain stimulation; Oscillations; Action Selection/Decision Making; Huntington's;
Implementer(s):
classdef GPe_neuron < handle
    %This is the class for GPe neurons. These neurons are inhibited by D2
    %MSN neurons and then in turn inhibit the SNr/GPi and STN neurons. They
    %are a part of the INDIRECT pathway
    
    properties
        activity; %activity of neuron
        t_constant; %time constant
        dt; %dt
        drgpe; %tonic drive to the GPe
        wD2; %inhibatory connection between D2 MSN neuron and GPe neuron
        wstngpe;
        synaptic_input; %total synaptic input to the cell
    end
    
    methods
        %constructor
        function obj = GPe_neuron(activity,t_constant,dt,drgpe,wD2,wSTN_GPe)
            obj.activity = activity;
            obj.t_constant = t_constant;
            obj.dt = dt;
            obj.drgpe = drgpe;
            obj.wD2 = wD2;
            obj.wstngpe = wSTN_GPe;
            %obj.synaptic_input = 0;
        end
        
        
        function obj = update_si(obj,D2_MSN,STN_neuron)
            %Calculates synaptic input of the neuron
            %   ONLY put in the D2 MSN neuron corresponding to the same
            %   action
            obj.synaptic_input = obj.drgpe - (obj.wD2)*(D2_MSN.activity)+(obj.wstngpe)*(STN_neuron.activity)+0.*rand;
        end
        
        function obj = update_activity(obj)
            %updates activity of this GPe neuron based on synaptic input
            if obj.synaptic_input <=0
                obj.activity = obj.activity - ((obj.activity -0.1*rand)/ ...
                    obj.t_constant)*(obj.dt*15/20);
            else
                obj.activity = obj.activity + (tanh(obj.synaptic_input)...
                    +0.1*rand-obj.activity)*(1/obj.t_constant)*(obj.dt*15/20);
            end
        end
    end
end