Distributed cerebellar plasticity implements adaptable gain control (Garrido et al., 2013)

 Download zip file 
Help downloading and running models
We tested the role of plasticity distributed over multiple synaptic sites (Hansel et al., 2001; Gao et al., 2012) by generating an analog cerebellar model embedded into a control loop connected to a robotic simulator. The robot used a three-joint arm and performed repetitive fast manipulations with different masses along an 8-shape trajectory. In accordance with biological evidence, the cerebellum model was endowed with both LTD and LTP at the PF-PC, MF-DCN and PC-DCN synapses. This resulted in a network scheme whose effectiveness was extended considerably compared to one including just PF-PC synaptic plasticity. Indeed, the system including distributed plasticity reliably self-adapted to manipulate different masses and to learn the arm-object dynamics over a time course that included fast learning and consolidation, along the lines of what has been observed in behavioral tests. In particular, PF-PC plasticity operated as a time correlator between the actual input state and the system error, while MF-DCN and PC-DCN plasticity played a key role in generating the gain controller. This model suggests that distributed synaptic plasticity allows generation of the complex learning properties of the cerebellum.
1 . Garrido JA, Luque NR, D'Angelo E, Ros E (2013) Distributed cerebellar plasticity implements adaptable gain control in a manipulation task: a closed-loop robotic simulation Front. Neural Circuits 7:159:1-20
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum deep nucleus neuron;
Gap Junctions:
Simulation Environment: C or C++ program; MATLAB; Simulink;
Model Concept(s): Long-term Synaptic Plasticity;
Implementer(s): Garrido, Jesus A [jesus.garrido at unipv.it]; Luque, Niceto R. [nluque at ugr.es];
% 5 jun 2013 - Niceto R. Luque
% Direct Kinematics for a three joints robot
% 8-shaped trajectory
clear all; clc;
step = 0.002;
t = 0:step:1.00;

% joint positions 
qt2 = [];
qt3 = [];
qt1 = [];
delta = [];
% joint velocities
qvt2 = [];
qvt3 = [];
qvt1 = [];
% joint acceleration
qat2 = [];
qat3 = [];
qat1 = [];

l1 = 0.310; 
l2 = 0.4;
l3 = 0.390;

% cartesian coordinates
y = 0.1 * sin(2*pi * t)+0.21502;
z = 0.1 * sin(4 * pi * t)+0.18502;
x = ones(1, length(t)) * 0.5;
for i = 1:length(x),
    delta = [delta asin((sqrt((x(1,i).^2 + y(1,i).^2)) / (sqrt((x(1,i).^2 + y(1,i).^2)+(z(1,i)-l1)^2))))];
    qt1 = [qt1 (atan(y(1,i) / x(1,i)))];
    qt2 = [qt2 (-delta(1,i) + asin((x(1,i).^2 + y(1,i).^2 + (l2^2) - (l3^2) + (z(1,i) - l1)^2) / (2*l2*sqrt((x(1,i).^2 + y(1,i).^2)+(z(1,i) - l1).^2))))];
    qt3 = [qt3 (-delta(1,i) - qt2(1,i) + asin((x(1,i).^2 + y(1,i).^2 - (l2^2) + (l3^2) + (z(1,i) - l1).^2) / (2*l3*sqrt((x(1,i).^2 + y(1,i).^2)+(z(1,i) - l1).^2))))];

% the first link moves along qt3 trajectory (qt3) and the last two links along the same trajectory (qt2)

qt = [t;  qt1; qt2; qt3];

%joint velocities computation
for i = 1:(length(x)-1),
    qvt1 = [qvt1 ((qt1(1,i+1) - qt1(1,i)) / step)];
    qvt2 = [qvt2 ((qt2(1,i+1) - qt2(1,i)) / step)];
    qvt3 = [qvt3 ((qt3(1,i+1) - qt3(1,i)) / step)];
%joint acceleration computation
for i=1:(length(x)-2),
    qat1 = [qat1 ((qvt1(1,i+1) - qvt1(1,i)) / step)];
    qat2 = [qat2 ((qvt2(1,i+1) - qvt2(1,i)) / step)];
    qat3 = [qat3 ((qvt3(1,i+1) - qvt3(1,i)) / step)];
% velocities start from zero
qvt1 = [0 qvt1];
qvt2 = [0 qvt2];
qvt3 = [0 qvt3];
%acceleration start from zero
qat1=[0 0 qat1];
qat2=[0 0 qat2];
qat3=[0 0 qat3];
qvt = [t; qvt1; qvt2; qvt3];
%clear all;
grid on
figure ()
hold on
grid on

Loading data, please wait...