6.
Appendix
All simulations were
implemented in MATLAB (The MathWorks, Inc., Fremingham,
-1-
FILE NAME: first_section_Chapter_3.m
warning off MATLAB:divideByZero
clc;clear;close all
%%% Initializing stimuli
% SIMULATION DURATION
n_trials = 10;
n_ext_trials = 6;
total_time = 500;
%%%%%%%%%%%%%
NAC_AMPL = 10^3;
NAC_IN_VTA = 10;
%%%%%%%%%%%%%
% Input
CS1_input_starts = 1;
CS1_input_ends = 50;
CS2_input_starts = 0;
CS2_input_ends = 0;
US_input_starts = 150;
US_input_ends = 200;
% CS1 = Input(1),
CS2 = Input(2), US = Input(3)
Input.CS1 = zeros(1,total_time); Input.CS2 =
zeros(1,total_time); Input.US = zeros(1,total_time);
Input.CS1(CS1_input_starts:CS1_input_ends) =
Input.CS1(CS1_input_starts:CS1_input_ends) + 1;
% Input.CS2(CS2_input_starts:CS2_input_ends) =
Input.CS2(CS2_input_starts:CS2_input_ends) + 1;
Input.US(US_input_starts:US_input_ends) =
Input.US(US_input_starts:US_input_ends) + 1;
% REPEAT FOR NUMBER OF TRIALS
if n_trials ~= 1
temp1 =
Input.CS1;temp2 = Input.CS2; temp3 = Input.US;
for i =
1:n_trials
temp1 =
[temp1 Input.CS1];temp2 = [temp2 Input.CS2];temp3 = [temp3 Input.US];
end
end
% Add test trial only CS
for i = 1:n_ext_trials
temp1 =
[temp1 Input.CS1]; temp2 = [temp2 Input.CS2]; temp3 = [temp3
zeros(size(Input.CS2))];
end
%Put all together
Input.CS1 = temp1; Input.CS2 = temp2; Input.US =
temp3;
clear temp1, clear temp2, clear temp3
% Create reset signal for EC
reset_signal = zeros(size(Input.CS1));
size_reset = 17;
fff = 5;
reset_signal(US_input_ends) = size_reset;
for kjk = 1:n_trials + n_ext_trials
reset_signal((kjk*total_time + US_input_ends -fff):(kjk*total_time + US_input_ends + fff)) = size_reset; % reset at the end of US
reset_signal((kjk*total_time - fff):(kjk*total_time + fff)) =
size_reset; % reset at the end of TRIAL
end
k_reset = 100;
clear temp1, clear temp2, clear temp3, clear temp4,
clear temp5, clear temp6,
total_time = size(Input.CS1,2);
%%% Iniziatilize variables
%% C E L L S
% Variables,
Euler integration step ,learning rate
A = 30;
A_pfc = 20;
A_VTA = 5;
B = 2;
B_post = 100;
B_pfc = 5;
B_H = 1; % B spectra
C = .5;
del_t = 0.01;
del_t_NAC = 0.002;
n_ms_sampl_VTA = 50;
eta = 10;
eta_passive_phase = .5;
eta_pfc_VTA = 10;
beta = .2;
VTA_exc_Pfc = .2;
% and Spectral
Timing parameter
A_sp = 0;
alpha_parameter = 0.1:0.01 :.8;
n_channels = size(alpha_parameter,2);
n_H = 8; % power for
f(x)
C_H = 0.0001;
D_H = 1;
E_H = 1;
HIPPO_DA = 10^3; % effect of DA on hippo
ampl_H_x = 10; %amplification factor last x received
in hippo - starts AT
VTA_spike_H = 0;
VTA_INH = 0;
epsy = 0.0001;
alpha_E = .5;
% Posterior cortex (x)
x(1) = 0; %
CS1
x(2) = 0; %
CS2
x(3) = 0; %
dx_dt = zeros(1,3);
% Anterior cortex (y)
y(1) = 0; %
CS1
y(2) = 0; %
CS2
y(3) = 0; %
dy_dt = zeros(1,3);
% Motor cortex (z)
z(1) = 0; %
CS1
z(2) = 0; %
CS2
z(3) = 0; %
dz_dt = zeros(1,3);
% VTA and NAC
tonic_VTA = .8;
VTA = 0*rand;
NAC = 0*rand;
NAC_INH = 0;
F1 = 12; % DA+ in anterior
cortex
F2 = 100; % DA- in anterior
cortex
epsilon = 0.00000001;
% Hippocampus dentate
d_spectra_CA3_dt = zeros(3,n_channels);
spectra_CA3 = zeros(3,n_channels);
d_y_CA3_dt = zeros(3,n_channels);
y_CA3 = zeros(3,n_channels);
d_W_DENT_CA3_dt = zeros(3,n_channels);
W_DENT_CA3 = zeros(3,n_channels);
w_y_VTA = 0;
% Hippocampus
CA3
CA3(1) = 0; %
CS1
CA3(2) = 0; %
CS2
CA3(3) = 0; %
%% W E I G H T S
% Posterior cortex (x) => Anterior cortex (y)
w_x1_y1 = .33; w_x1_y2 = 0;w_x1_y3 = 0;
w_x2_y1 = 0; w_x2_y2 = .33;w_x2_y3 = 0;
w_x3_y1 = 0; w_x3_y2 = 0;w_x3_y3 = .33;
dww_x1_y1 = 0; dww_x1_y2 = 0; dww_x1_y3 = 0;
dww_x2_y1 = 0; dww_x2_y2 = 0; dww_x2_y3 = 0;
dww_x3_y1 = 0; dww_x3_y2 = 0; dww_x3_y3 = 0;
% Hippocampus => Hippocampus symmetric weights
w_CA3_1_CA3_2 = 0;
w_CA3_1_CA3_3 = 0;
w_CA3_2_CA3_3 = 0;
% EC => EC symmetric weights
w_EC_1_EC_2 = 0;
w_EC_1_EC_3 = 0;
w_EC_2_EC_3 = 0;
% Record activation
network.x1 = 0;
network.x2 = 0;
network.x3 = 0;
network.y1 = 0;
network.y2 = 0;
network.y3 = 0;
network.w_x1_y1 = w_x1_y1;
network.w_x1_y2 = w_x1_y2;
network.w_x1_y3 = w_x1_y3;
network.w_x2_y1 = w_x2_y1;
network.w_x2_y2 = w_x2_y2;
network.w_x2_y3 = w_x2_y3;
network.w_x3_y1 = w_x3_y1;
network.w_x3_y2 = w_x3_y2;
network.w_x3_y3 = w_x3_y3;
network.VTA = VTA;
network.NAC = NAC;
network.w_y_VTA = 0;
network.CA3_1 = 0;
network.CA3_2 = 0;
network.CA3_3 = 0;
network.w_CA3_1_CA3_2 = 0;
network.w_CA3_1_CA3_3 = 0;
network.w_CA3_2_CA3_3 = 0;
network.w_EC_1_EC_2 = 0;
network.w_EC_1_EC_3 = 0;
network.w_EC_2_EC_3 = 0;
network.w_y_VTA
= 0;
network.VTA_spike_H = 0;
network.W_DENT_CA3
= [];
EC_1 = 0; EC_1_record = [];
EC_2 = 0; EC_2_record = [];
EC_3 = 0; EC_3_record = [];
network.W_DENT_CA3 = [];
w_y_1_AMY = 0;
w_y_2_AMY = 0;
%%% MAIN
for j = 1:total_time
%%%%%%%%!!!!!!!!!!!!! Now Print Provvisorio
if j <
total_time
if
and(Input.US(j+1) == 1, Input.US(j) == 0)
now_print_provvisorio = 1;
else
now_print_provvisorio = 0;
end
end
% CONTROL if
if
any([isnan(x) isnan(y) isnan(VTA) isnan(NAC)]);'Cazzo!!!!',x,y,VTA,NAC,w_y_VTA,
j,
break,
'Something wrong, testa di cazzo!'
end
if
any([isinf(x) isinf(y) isinf(VTA) isinf(NAC)]);'Cazzo!!!!', j,
break,
end
% If no
input, allow thr hippo to retrieve info
if
Input.CS1(j) + Input.CS2(j) + Input.US(j) == 0
% ----- %
% ----- % % ----- % % ----- %
% ----- %
% H i p p o c a m p a l r e t r i e v a l
% ----- % % ----- %
% ----- % % ----- % % ----- %
% x(1) = epsilon; x(2)= epsilon; x(3)=
epsilon; y(1) = epsilon; y(2)= epsilon; y(3)= epsilon;
inp_hippo = ones(1,3);
CA3_temp(1) = inp_hippo(1); CA3_temp(2) = inp_hippo(2); CA3_temp(3) =
inp_hippo(3);
w_CA3_1_CA3_2_temp = w_CA3_1_CA3_2; w_CA3_1_CA3_3_temp = w_CA3_1_CA3_3;
w_CA3_2_CA3_3_temp = w_CA3_2_CA3_3;
sum_W =
w_CA3_1_CA3_2_temp + w_CA3_1_CA3_3_temp + w_CA3_2_CA3_3_temp;
if sum_W
> 0
%
normalize weights
w_CA3_1_CA3_2_temp = ((w_CA3_1_CA3_2_temp)/(sum_W));
w_CA3_1_CA3_3_temp = ((w_CA3_1_CA3_3_temp)/(sum_W));
w_CA3_2_CA3_3_temp = ((w_CA3_2_CA3_3_temp)/(sum_W));
%
network settles
for
kk = 1:100
dCA3_temp_dt(1) = CA3_temp(1)*CA3_temp(2)*w_CA3_1_CA3_2_temp +
CA3_temp(1)*CA3_temp(3)*w_CA3_1_CA3_3_temp- sum(CA3_temp)*sum_W;
dCA3_temp_dt(2) = CA3_temp(1)*CA3_temp(2)*w_CA3_1_CA3_2_temp +
CA3_temp(2)*CA3_temp(3)*w_CA3_2_CA3_3_temp- sum(CA3_temp)*sum_W;
dCA3_temp_dt(3) = CA3_temp(1)*CA3_temp(3)*w_CA3_1_CA3_3_temp +
CA3_temp(2)*CA3_temp(3)*w_CA3_2_CA3_3_temp- sum(CA3_temp)*sum_W;
CA3_temp(1) = CA3_temp(1) +
del_t*dCA3_temp_dt(1);
CA3_temp(2) = CA3_temp(2) + del_t*dCA3_temp_dt(2);
CA3_temp(3) = CA3_temp(3) + del_t*dCA3_temp_dt(3);
end
%
CA3 gives back activation to cortex
x_temp(1) = CA3_temp(1)-1;
y_temp(1) = max(CA3_temp(1)-1,0); x_temp(2) = CA3_temp(2)-1; ...
y_temp(2) = max(CA3_temp(2)-1,0); x_temp(3) = CA3_temp(3)-1; y_temp(3) = max(CA3_temp(3)-1,0);
x_temp(1) = max(x_temp(1)/sum(x_temp),0);
x_temp(2) = max(x_temp(2)/sum(x_temp),0); x_temp(3) =
max(x_temp(3)/sum(x_temp),0);
%
calculate d_dt W from x to y
dw_w_x1_y1 = eta_passive_phase*(1-w_x1_y1)*[x_temp(1)*y_temp(1)] - (w_x1_y1)*[x_temp(1)*VTA_dip];
dw_w_x1_y2 = eta_passive_phase*(1-w_x1_y2)*[x_temp(1)*y_temp(2)] -
(w_x1_y2)*[x_temp(1)*VTA_dip];
dw_w_x1_y3 = eta_passive_phase*(1-w_x1_y3)*[x_temp(1)*y_temp(3)] -
(w_x1_y3)*[x_temp(1)*VTA_dip];
dw_w_x2_y1 =
eta_passive_phase*(1-w_x2_y1)*[x_temp(2)*y_temp(1)] -
(w_x2_y1)*[x_temp(2)*VTA_dip];
dw_w_x2_y2 = eta_passive_phase*(1-w_x2_y2)*[x_temp(2)*y_temp(2)] -
(w_x2_y2)*[x_temp(2)*VTA_dip];
dw_w_x2_y3 = eta_passive_phase*(1-w_x2_y3)*[x_temp(2)*y_temp(3)] -
(w_x2_y3)*[x_temp(2)*VTA_dip];
dw_w_x3_y1 = eta_passive_phase*(1-w_x3_y1)*[x_temp(3)*y_temp(1)] -
(w_x3_y1)*[x_temp(3)*VTA_dip];
dw_w_x3_y2 = eta_passive_phase*(1-w_x3_y2)*[x_temp(3)*y_temp(2)] - (w_x3_y2)*[x_temp(3)*VTA_dip];
dw_w_x3_y3 = eta_passive_phase*(1-w_x3_y3)*[x_temp(3)*y_temp(3)] -
(w_x3_y3)*[x_temp(3)*VTA_dip];
sum_W = w_x1_y1 + w_x1_y2 +
w_x1_y3 +w_x2_y1 + w_x2_y2 + w_x2_y3 +w_x3_y1 + w_x3_y2 + w_x3_y3;
%
Update cortico-cortical weights
w_x1_y1 = (w_x1_y1 + del_t * dw_w_x1_y1)/sum_W; w_x1_y2 = (w_x1_y2 +
del_t * dw_w_x1_y2)/sum_W; w_x1_y3 = (w_x1_y3 + del_t * dw_w_x1_y3)/sum_W;
w_x2_y1 = (w_x2_y1 + del_t * dw_w_x2_y1)/sum_W; w_x2_y2 = (w_x2_y2 +
del_t * dw_w_x2_y2)/sum_W; w_x2_y3 = (w_x2_y3 + del_t * dw_w_x2_y3)/sum_W;
w_x3_y1 = (w_x3_y1 + del_t * dw_w_x3_y1)/sum_W; w_x3_y2 = (w_x3_y2 +
del_t * dw_w_x3_y2)/sum_W; w_x3_y3 = (w_x3_y3 + del_t * dw_w_x3_y3)/sum_W;
network.w_x1_y1 = [network.w_x1_y1 w_x1_y1]; % x1 to y1
network.w_x1_y2 = [network.w_x1_y2 w_x1_y2]; % x1 to y2
network.w_x1_y3 = [network.w_x1_y3 w_x1_y3]; % x1 to y3
network.w_x2_y1
= [network.w_x2_y1 w_x2_y1]; % x2 to
y1
network.w_x2_y2 = [network.w_x2_y2 w_x2_y2]; % x2 to y2
network.w_x2_y3 = [network.w_x2_y3 w_x2_y3]; % x2 to y3
network.w_x3_y1 = [network.w_x3_y1 w_x3_y1]; % x3 to y1
network.w_x3_y2 = [network.w_x3_y2 w_x3_y2]; % x3 to y2
network.w_x3_y3 = [network.w_x3_y3 w_x3_y3]; % x3 to y3
network.w_CA3_1_CA3_2 =
[network.w_CA3_1_CA3_2 w_CA3_1_CA3_2];
network.w_CA3_1_CA3_3 = [network.w_CA3_1_CA3_3 w_CA3_1_CA3_3];
network.w_CA3_2_CA3_3 =
[network.w_CA3_2_CA3_3 w_CA3_2_CA3_3];
end
% ----- % % ----- %
% ----- % % ----- % % ----- %
% E n d H i p p o c a m p a l r e t r i e v a l
% ----- % % ----- %
% ----- % % ----- % % ----- %
end
% saample
VTA n msecs ago
if
j>n_ms_sampl_VTA
VTA_spike = network.VTA(j-n_ms_sampl_VTA);
VTA_dip
= abs(min(VTA,0));
else
VTA_spike = 0;
VTA_dip
= 0;
end
% VTA_exc_Pfc = VTA_spike + 20*w_y_VTA*sum(y)+ tonic_VTA; VTA_inh_Pfc =
VTA_dip;
if
VTA_spike>0
VTA_exc_Pfc = tonic_VTA;
VTA_inh_Pfc = 0;
else
VTA_inh_Pfc = VTA_dip;
VTA_exc_Pfc =
0;
VTA_spike = 0;
end
% AMYGDALA
% AMY = max(Input.US(j) + w_y_1_AMY*y(1) +
w_y_2_AMY*y(2),0);
%
d_w_y_1_AMY_dt = (100-w_y_1_AMY)*y(1)*VTA_spike*AMY -
[beta*w_y_1_AMY*AMY];
% d_w_y_2_AMY_dt =
(100-w_y_2_AMY)*y(2)*VTA_spike*AMY - [beta*w_y_2_AMY*AMY];
%
% w_y_1_AMY = w_y_1_AMY +
del_t*d_w_y_1_AMY_dt;
% w_y_2_AMY = w_y_2_AMY +
del_t*d_w_y_2_AMY_dt;
%%%
CALCULATE d_dt
% calculate
d_dt activation of posterior cortex (x)
dx_dt(1) =
-x(1)*A + (B_post-x(1))*[Input.CS1(j)] - (x(1))*[max(sum(x),0)] -
reset_signal(j);
dx_dt(2) =
-x(2)*A + (B_post-x(2))*[Input.CS2(j)] - (x(2))*[max(sum(x),0)] -
reset_signal(j);
dx_dt(3) =
-x(3)*A + (B_post-x(3))*[Input.US(j) ] - (x(3))*[max(sum(x),0)] -
reset_signal(j);
% calculate
d_dt activation of anterior cortex (y)
excit_1 =
max((x(1)*w_x1_y1 + x(2)*w_x2_y1 + x(3)*w_x3_y1),0); % to y1
excit_2 =
max((x(1)*w_x1_y2 + x(2)*w_x2_y2 + x(3)*w_x3_y2),0); % to y2
excit_3 =
max((x(1)*w_x1_y3 + x(2)*w_x2_y3 + x(3)*w_x3_y3),0); % to y3
dy_dt(1) =
-y(1)*A_pfc + (B_pfc-y(1))*[excit_1*max((1-VTA_exc_Pfc),0) +
max(F1*VTA_exc_Pfc*(y(1)^1.1/(1.2 + y(1)^1.1)),0)] - (y(1))*[F2*VTA_inh_Pfc+ 1*max(y(2)+y(3),0)]
- reset_signal(j);
dy_dt(2) =
-y(2)*A_pfc + (B_pfc-y(2))*[excit_2*max((1-VTA_exc_Pfc),0) +
max(F1*VTA_exc_Pfc*(y(2)^1.2/(1.5 + y(2)^1.2)),0)] - (y(2))*[F2*VTA_inh_Pfc+
1*max(y(1)+y(3),0)] - reset_signal(j);
dy_dt(3) =
-y(3)*A_pfc + (B_pfc-y(3))*[excit_3*max((1-VTA_exc_Pfc),0) +
max(F1*VTA_exc_Pfc*(y(3)^1.2/(1.5 + y(3)^1.2)),0)] - (y(3))*[F2*VTA_inh_Pfc+
1*max(y(1)+y(2),0)] - reset_signal(j);
% calculate
d_dt for VTA
dVTA_dt =
-VTA*A_VTA + (10-VTA)*[Input.US(j) + w_y_VTA*sum(y)] - NAC_IN_VTA*NAC;
% dVTA_dt = -VTA*A_VTA + (10-VTA)*[Input.US(j)
+ max(w_y_VTA*sum(y)- NAC_IN_VTA*NAC,0)] - NAC_IN_VTA*NAC;
% weight
from pfc (ALL) to VTA
dw_y_VTA_dt
= (1-w_y_VTA)*eta_pfc_VTA*sum(y)*VTA_spike - [beta*w_y_VTA*VTA_dip +
w_y_VTA*sum(y)] ;
% calculate
d_dt W from x to y
dw_w_x1_y1 =
eta*(1-w_x1_y1)*[x(1)*y(1)*VTA_spike] - (w_x1_y1)*[10*x(1)*VTA_dip];
dw_w_x1_y2 =
eta*(1-w_x1_y2)*[x(1)*y(2)*VTA_spike] - (w_x1_y2)*[10*x(1)*VTA_dip];
dw_w_x1_y3 =
eta*(1-w_x1_y3)*[x(1)*y(3)*VTA_spike] - (w_x1_y3)*[10*x(1)*VTA_dip];
dw_w_x2_y1 =
eta*(1-w_x2_y1)*[x(2)*y(1)*VTA_spike] - (w_x2_y1)*[10*x(2)*VTA_dip];
dw_w_x2_y2 =
eta*(1-w_x2_y2)*[x(2)*y(2)*VTA_spike] - (w_x2_y2)*[10*x(2)*VTA_dip];
dw_w_x2_y3 =
eta*(1-w_x2_y3)*[x(2)*y(3)*VTA_spike] - (w_x2_y3)*[10*x(2)*VTA_dip];
dw_w_x3_y1 =
eta*(1-w_x3_y1)*[x(3)*y(1)*VTA_spike] - (w_x3_y1)*[10*x(3)*VTA_dip];
dw_w_x3_y2 =
eta*(1-w_x3_y2)*[x(3)*y(2)*VTA_spike] - (w_x3_y2)*[10*x(3)*VTA_dip];
dw_w_x3_y3 =
eta*(1-w_x3_y3)*[x(3)*y(3)*VTA_spike] - (w_x3_y3)*[10*x(3)*VTA_dip];
%%%%%
SPECTRAL TIMING
d_VTA_INH_dt
= max(alpha_E*(-VTA_INH +(VTA^2/(1+VTA^2))),0);
VTA_INH = VTA_INH + del_t*d_VTA_INH_dt;
VTA_spike_H =
max(((VTA^n_H/(1+VTA^n_H)) - VTA_INH - epsy), 0);
VTA_dip = 0;
decay_W_DENT
= 0;
% VTA_spike_H = now_print_provvisorio;
if j >
30 % if we are in training for at least
30 msec, so I can add CSs....
% For x1
exc_EC_1
= Input.CS1(j)+ EC_1 + EC_2*w_EC_1_EC_2
+ EC_3*w_EC_1_EC_3;
d_EC_1_dt = (1-EC_1)*exc_EC_1 - k_reset*reset_signal(j);
EC_1 =
max(EC_1 + .1*d_EC_1_dt,0);
EC_1_record = [EC_1_record EC_1];
for hh =
1:n_channels
d_spectra_CA3_dt(1,hh) = alpha_parameter(hh)*[-A_sp*spectra_CA3(1,hh) +
(B_H - spectra_CA3(1,hh))*ampl_H_x*EC_1]; % calculate d_dt 10 spectra for each
cell
d_y_CA3_dt(1,hh) = C_H*(1 - y_CA3(1,hh))-
D_H*(spectra_CA3(1,hh).^n_H./(1+spectra_CA3(1,hh).^n_H).*y_CA3(1,hh)); %
calculate d_dt transmitter deplition
d_W_DENT_CA3_dt(1,hh) =
E_H*(1-W_DENT_CA3(1,hh))*(spectra_CA3(1,hh).^2./(1+spectra_CA3(1,hh).^2).*y_CA3(1,hh).*...
[- decay_W_DENT*W_DENT_CA3(1,hh)+ HIPPO_DA * VTA_spike_H - HIPPO_DA *
VTA_dip]); % calculate d_dt W from DENTATE to CA3
% [- W_DENT_CA3(1,hh)+ HIPPO_DA
* Input.US(j) - HIPPO_DA * VTA_dip]); % calculate d_dt W from DENTATE to CA3
end
% For x2
exc_EC_2
= Input.CS2(j)+ EC_2 + EC_1*w_EC_1_EC_2
+ EC_3*w_EC_2_EC_3;
d_EC_2_dt = (1-EC_2)*[Input.CS2(j) + EC_2] - k_reset*reset_signal(j);
EC_2 =
max(EC_2 + .1*d_EC_2_dt,0);
EC_2_record = [EC_2_record EC_2];
for hh =
1:n_channels
d_spectra_CA3_dt(2,hh) = alpha_parameter(hh)*[-A_sp*spectra_CA3(2,hh) +
(B_H - spectra_CA3(2,hh))*ampl_H_x*EC_2]; % calculate d_dt 10 spectra for each
cell
d_y_CA3_dt(2,hh) = C_H*(1 - y_CA3(2,hh))- D_H*(spectra_CA3(2,hh).^n_H./(1+spectra_CA3(2,hh).^n_H).*y_CA3(2,hh));
% calculate d_dt transmitter deplition
d_W_DENT_CA3_dt(2,hh) =
E_H*(1-W_DENT_CA3(2,hh))*(spectra_CA3(2,hh).^2./(1+spectra_CA3(2,hh).^2).*y_CA3(2,hh).*...
[- decay_W_DENT*W_DENT_CA3(2,hh)+ HIPPO_DA * VTA_spike_H - HIPPO_DA *
VTA_dip]); % calculate d_dt W from DENTATE to CA3
% [- W_DENT_CA3(2,hh)+ HIPPO_DA *
Input.US(j) - HIPPO_DA * VTA_dip]); % calculate d_dt W from DENTATE to CA3
end
% For x3
exc_EC_3 =
Input.US(j)+ EC_3 + EC_1*w_EC_1_EC_3 +EC_2*w_EC_2_EC_3;
d_EC_3_dt = (1-EC_3)*[Input.US(j)+ EC_3] - k_reset*reset_signal(j);
EC_3 =
max(EC_3 + .1*d_EC_3_dt,0);
EC_3_record = [EC_3_record EC_3];
for hh =
1:n_channels
d_spectra_CA3_dt(3,hh) = alpha_parameter(hh)*[-A_sp*spectra_CA3(3,hh) +
(B_H - spectra_CA3(3,hh))*ampl_H_x*EC_3]; % calculate d_dt 10 spectra for each
cell
d_y_CA3_dt(3,hh) = C_H*(1 - y_CA3(3,hh))- D_H*(spectra_CA3(3,hh).^n_H./(1+spectra_CA3(3,hh).^n_H).*y_CA3(3,hh));
% calculate d_dt transmitter deplition
d_W_DENT_CA3_dt(3,hh) =
E_H*(1-W_DENT_CA3(3,hh))*(spectra_CA3(3,hh).^2./(1+spectra_CA3(3,hh)^2).*y_CA3(3,hh).*...
[- decay_W_DENT*W_DENT_CA3(3,hh)+ HIPPO_DA * VTA_spike_H - HIPPO_DA *
VTA_dip]); % calculate d_dt W from DENTATE to CA3
% [- W_DENT_CA3(3,hh)+ HIPPO_DA
* Input.US(j) - HIPPO_DA * VTA_dip]); % calculate d_dt W from DENTATE to CA3
end
% update
activations and W
spectra_CA3 = spectra_CA3 + del_t * d_spectra_CA3_dt; spectra_CA3 =
max(spectra_CA3,0);
y_CA3 =
y_CA3 + del_t * d_y_CA3_dt; y_CA3 = max(y_CA3,0);
W_DENT_CA3 = W_DENT_CA3 + del_t * d_W_DENT_CA3_dt; W_DENT_CA3 = max(W_DENT_CA3,0);
%
calculate CA3 activation - rectified version
CA3 =
max(sum(spectra_CA3.^2./(1+spectra_CA3.^2).*y_CA3.*W_DENT_CA3,2),0);
% CA3 to
CA3 connectivity
dw_CA3_1_CA3_2_dt = (1-w_CA3_1_CA3_2)*[100*eta*CA3(1)*CA3(2)*VTA_spike_H];%
- (w_CA3_1_CA3_2)*[CA3(1)*VTA_dip + CA3(2)*VTA_dip];
dw_CA3_1_CA3_3_dt =
(1-w_CA3_1_CA3_3)*[100*eta*CA3(1)*CA3(3)*VTA_spike_H];% -
(w_CA3_1_CA3_3)*[CA3(1)*VTA_dip + CA3(3)*VTA_dip];
dw_CA3_2_CA3_3_dt = (1-w_CA3_2_CA3_3)*[100*eta*CA3(2)*CA3(3)*VTA_spike_H];%
- (w_CA3_2_CA3_3)*[CA3(2)*VTA_dip + CA3(3)*VTA_dip];
% Ec to EC connectivity
dw_EC_1_EC_2_dt =
(10-w_EC_1_EC_2)*[EC_1*EC_2*VTA_spike_H];% - (w_EC_1_EC_2)*[EC_1*VTA_dip +
EC_2*VTA_dip];
dw_EC_1_EC_3_dt =
(10-w_EC_1_EC_3)*[EC_1*EC_3*VTA_spike_H];% - (w_EC_1_EC_3)*[EC_1*VTA_dip +
EC_3*VTA_dip];
dw_EC_2_EC_3_dt =
(10-w_EC_2_EC_3)*[EC_2*EC_3*VTA_spike_H];% - (w_EC_2_EC_3)*[EC_2*VTA_dip +
EC_3*VTA_dip];
% NAC parameters
NAC_AMPL
= 10;
alpha_NAC = 1;
n_N = 3;
if j
> 10
INP_NAC = (1-NAC)*NAC_AMPL*sum(CA3);
d_NAC_INH_dt = alpha_NAC*(-NAC_INH +(INP_NAC^n_N/(1+INP_NAC^n_N)));
NAC_INH = max(NAC_INH + del_t*d_NAC_INH_dt,0);
N =
max(((INP_NAC^n_N/(1+INP_NAC^n_N)) - NAC_INH - 0.0000001), 0);
NAC
= N * 1000;
end
%%%
CALCULATE ACTIVATION
% update
d_dt activation of posterior cortex (x)
x(1) = max(x(1) + del_t * dx_dt(1),0);
x(2) = max(x(2) + del_t *
dx_dt(2),0);
x(3) = max(x(3) + del_t *
dx_dt(3),0);
y(1) = max(y(1) + del_t *
dy_dt(1),0);
y(2) =
max(y(2) + del_t * dy_dt(2),0);
y(3) =
max(y(3) + del_t * dy_dt(3),0);
% VTA
VTA = VTA + del_t *
dVTA_dt;
VTA = VTA;
%%%
UPDATE WEIGHTS
% W x
=> y
w_x1_y1
= w_x1_y1 + del_t * dw_w_x1_y1; w_x1_y2
= w_x1_y2 + del_t * dw_w_x1_y2; w_x1_y3 = w_x1_y3 + del_t * dw_w_x1_y3;
w_x2_y1
= w_x2_y1 + del_t * dw_w_x2_y1; dw_w_x2_y2 = dw_w_x2_y2 + del_t * dw_w_x2_y2;
w_x2_y3 = w_x2_y3 + del_t * dw_w_x2_y3;
w_x3_y1
= w_x3_y1 + del_t * dw_w_x3_y1; w_x3_y2 = w_x3_y2 + del_t * dw_w_x3_y2; w_x3_y3
= w_x3_y3 + del_t * dw_w_x3_y3;
% Update
Pfc => VTA W
w_y_VTA
= w_y_VTA + del_t * dw_y_VTA_dt;
% CA3 tp CA3
w_CA3_1_CA3_2 =
w_CA3_1_CA3_2 + del_t * dw_CA3_1_CA3_2_dt;
w_CA3_1_CA3_3 =
w_CA3_1_CA3_3 + del_t * dw_CA3_1_CA3_3_dt;
w_CA3_2_CA3_3 =
w_CA3_2_CA3_3 + del_t * dw_CA3_2_CA3_3_dt;
% EC to EC
w_EC_1_EC_2 = w_EC_1_EC_2 + del_t * dw_EC_1_EC_2_dt;
w_EC_1_EC_3 = w_EC_1_EC_3 + del_t * dw_EC_1_EC_3_dt;
w_EC_2_EC_3 = w_EC_2_EC_3 + del_t * dw_EC_2_EC_3_dt;
end
% save
record activation
network.x1 =
[network.x1 x(1)];
network.x2 =
[network.x2 x(2)];
network.x3 =
[network.x3 x(3)];
network.y1 =
[network.y1 y(1)];
network.y2 =
[network.y2 y(2)];
network.y3 =
[network.y3 y(3)];
network.VTA
= [network.VTA VTA];
network.NAC
= [network.NAC NAC];
network.CA3_1 = [network.CA3_1 CA3(1)];
network.CA3_2 = [network.CA3_2 CA3(2)];
network.CA3_3 = [network.CA3_3 CA3(3)];
network.w_x1_y1 = [network.w_x1_y1 w_x1_y1]; % x1 to y1
network.w_x1_y2 = [network.w_x1_y2 w_x1_y2]; % x1 to y2
network.w_x1_y3 = [network.w_x1_y3 w_x1_y3]; % x1 to y3
network.w_x2_y1 = [network.w_x2_y1 w_x2_y1]; % x2 to y1
network.w_x2_y2 = [network.w_x2_y2
w_x2_y2]; % x2 to y2
network.w_x2_y3 = [network.w_x2_y3 w_x2_y3]; % x2 to y3
network.w_x3_y1 = [network.w_x3_y1 w_x3_y1]; % x3 to y1
network.w_x3_y2 = [network.w_x3_y2 w_x3_y2]; % x3 to y2
network.w_x3_y3
= [network.w_x3_y3 w_x3_y3]; % x3 to
y3
network.w_CA3_1_CA3_2 =
[network.w_CA3_1_CA3_2 w_CA3_1_CA3_2];
network.w_CA3_1_CA3_3 =
[network.w_CA3_1_CA3_3 w_CA3_1_CA3_3];
network.w_CA3_2_CA3_3 =
[network.w_CA3_2_CA3_3 w_CA3_2_CA3_3];
network.w_EC_1_EC_2 =
[network.w_EC_1_EC_2 w_EC_1_EC_2];
network.w_EC_1_EC_3 =
[network.w_EC_1_EC_3 w_EC_1_EC_3];
network.w_EC_2_EC_3 =
[network.w_EC_2_EC_3 w_EC_2_EC_3];
network.w_y_VTA =
[network.w_y_VTA w_y_VTA];
network.VTA_spike_H = [network.VTA_spike_H VTA_spike_H];
%
network.W_DENT_CA3 = [network.W_DENT_CA3 W_DENT_CA3];
end
% Plot activation% Plot stimuli
set(figure,'DoubleBuffer', 'on')
subplot(5,2,1), plot(Input.CS1), hold on,
plot(Input.CS2, 'm'), title('CS 1 (blu), CS2 (magenta)'); axis([0
size(Input.CS2,2) -1 2])
subplot(5,2,3), plot(Input.US, 'r'), title('US');
axis([0 size(Input.CS2,2) -1 2])
subplot(5,2,2),plot(network.x1), hold on,
plot(network.x2, 'm'), hold on, ...
plot(network.x3, 'r'), title('Posterior cortex'); %axis([0
size(Input.CS2,2) -2 2.1]); drawnow
subplot(5,2,4),plot(network.y1), hold on,
plot(network.y2, 'm'), hold on, ...
plot(network.y3, 'r'), title('Anterior cortex'); %axis([0 total_time -2
2.1]); drawnow
subplot(5,2,7),plot(network.VTA), hold on,
plot(network.NAC, 'r'), title('VTA (BLUE) - NAC (RED)'); %axis([0
size(Input.CS2,2) -2 2.1]); drawnow
subplot(5,2,8),plot(network.CA3_1), hold on,
plot(network.CA3_2, 'm'), hold on, ...
plot(network.CA3_3, 'r'), title('CA3 posterior');drawnow
subplot(5,2,9),plot(network.NAC, 'r'),
title('NAC');drawnow
subplot(5,2,10),plot(network.w_CA3_1_CA3_2), hold on,
plot(network.w_CA3_1_CA3_3, 'm'), hold on, ...
plot(network.w_CA3_2_CA3_3, 'r'), title('CA3 1=2 (blu), 1=3 (magenta),
2=3 (red)');drawnow
subplot(5,2,6),plot(network.w_x1_y1), hold on,
plot(network.w_x1_y3, 'r'), hold on, ...
plot(network.w_x3_y1, 'm'), hold on, plot(network.w_x3_y3, 'g'),
title('W 1=1(blu), 1=3(red), 3=1(mag.), 3=3(green)');drawnow
subplot(5,2,5),
plot(network.w_y_VTA, 'g'), title('Pfc => VTA weight');
figure
subplot(4,1,1),plot(Input.CS1), hold on,
plot(Input.CS2, 'm'), hold on, plot(Input.US, 'r'),axis([0 size(Input.CS2,2) -1
2]),title('Input'), grid on
subplot(4,1,2),plot(network.VTA, 'b'), axis([0 size(Input.CS2,2) -1 2]),title('VTA
activation'), grid on
subplot(4,1,3),plot(network.NAC, 'r'), title('NAC'),
axis([0 size(Input.CS2,2) min(network.NAC) max(network.NAC)]),grid on
subplot(4,1,4),plot(max(network.VTA,0)), axis([0
size(Input.CS2,2) -1 2]),title('Net VTA output'), grid on
figure
subplot(4,1,1),plot(Input.CS1), hold on,
plot(Input.CS2, 'm'), hold on, plot(Input.US, 'r'),axis([0 size(Input.CS2,2) -1
2]),title('Input'), grid on
subplot(4,1,2),plot(network.y1), axis([0
size(Input.CS2,2) -1 2]),title('Anterior cortex, y1')
subplot(4,1,3),plot(network.y2, 'm'), axis([0
size(Input.CS2,2) -1 2]),title('Anterior cortex, y2')
subplot(4,1,4), plot(network.y3, 'r'), axis([0
size(Input.CS2,2) -1 2]),title('Anterior cortex, y3')
start_time1 = 900;
end_time1 = 1400;
start_time2 = 11900; end_time2 = 12500;
start_time3 = 15900; end_time3 = 16300;
start_time4 = 9900; end_time4 = 11500;
figure
subplot(5,1,1),plot(Input.CS1(start_time1:end_time1)),
hold on, plot(Input.CS2(start_time1:end_time1), 'm'), hold on,
plot(Input.US(start_time1:end_time1), 'r'), title('Early training'),grid on
subplot(5,1,2),plot(network.x1(start_time1:end_time1)),
hold on, plot(network.x2(start_time1:end_time1), 'm'), hold on, ...
plot(network.x3(start_time1:end_time1), 'r'), title('Posterior cortex');
subplot(5,1,3),plot(network.y1(start_time1:end_time1)),
hold on, plot(network.y2(start_time1:end_time1), 'm'), hold on, ...
plot(network.y3(start_time1:end_time1), 'r'), title('Anterior cortex');
subplot(5,1,4),plot(max(network.VTA(start_time1:end_time1),0),
'b'), grid on
subplot(5,1,5),plot(network.NAC(start_time1:end_time1),
'r'), grid on
% figure
%
subplot(5,1,1),plot(Input.CS1(start_time2:end_time2)), hold on,
plot(Input.CS2(start_time2:end_time2), 'm'), hold on, plot(Input.US(start_time2:end_time2),
'r'), title('Late training'),grid on
%
subplot(5,1,2),plot(network.x1(start_time2:end_time2)), hold on,
plot(network.x2(start_time2:end_time2), 'm'), hold on, ...
%
plot(network.x3(start_time2:end_time2), 'r'), title('Posterior cortex');
%
subplot(5,1,3),plot(network.y1(start_time2:end_time2)), hold on,
plot(network.y2(start_time2:end_time2), 'm'), hold on, ...
%
plot(network.y3(start_time2:end_time2), 'r'), title('Anterior cortex');
% subplot(5,1,4),plot(max(network.VTA(start_time2:end_time2),0),
'b'), title('VTA'), grid on
%
subplot(5,1,5),plot(network.NAC(start_time2:end_time2), 'r'), title('NAC'),
grid on
% figure
%
subplot(5,1,1),plot(Input.CS1(start_time3:end_time3)), hold on,
plot(Input.CS2(start_time3:end_time3), 'm'), hold on,
plot(Input.US(start_time3:end_time3), 'r'), title('Extinction'),grid on
%
subplot(5,1,2),plot(network.x1(start_time3:end_time3)), hold on,
plot(network.x2(start_time3:end_time3), 'm'), hold on, ...
%
plot(network.x3(start_time3:end_time3), 'r'), title('Posterior cortex');
%
subplot(5,1,3),plot(network.y1(start_time3:end_time3)), hold on,
plot(network.y2(start_time3:end_time3), 'm'), hold on, ...
%
plot(network.y3(start_time3:end_time3), 'r'), title('Anterior cortex');
% subplot(5,1,4),plot(max(network.VTA(start_time3:end_time3),0),
'b'), title('VTA'), grid on
%
subplot(5,1,5),plot(network.NAC(start_time3:end_time3), 'r'), title('NAC'),
grid on
%
% figure
%
subplot(5,1,1),plot(Input.CS1(start_time4:end_time4)), hold on, plot(Input.CS2(start_time4:end_time4),
'm'), hold on, plot(Input.US(start_time4:end_time4), 'r'), title('wrong
trial'),grid on
%
subplot(5,1,2),plot(network.x1(start_time4:end_time4)), hold on,
plot(network.x2(start_time4:end_time4), 'm'), hold on, ...
% plot(network.x3(start_time4:end_time4),
'r'), title('Posterior cortex');
%
subplot(5,1,3),plot(network.y1(start_time4:end_time4)), hold on,
plot(network.y2(start_time4:end_time4), 'm'), hold on, ...
%
plot(network.y3(start_time4:end_time4), 'r'), title('Anterior cortex');
%
subplot(5,1,4),plot(max(network.VTA(start_time4:end_time4),0), 'b'),
title('VTA'), grid on
%
subplot(5,1,5),plot(network.NAC(start_time4:end_time4), 'r'), title('NAC'),
grid on
figure;
subplot(4,1,1), plot(EC_1_record), axis([0
length(EC_3_record) -1 2]), title('EC1'), grid on
subplot(4,1,2),plot(EC_3_record,'r'), axis([0
length(EC_3_record) -1 2]), title('EC3'), grid on
subplot(4,1,3), plot(network.VTA_spike_H), axis([0
length(EC_3_record) -1 2]), title('Now Print'), grid on
subplot(4,1,4), plot(reset_signal, 'g'), title('Reset
signal'), hold on, plot(Input.CS1), hold
on, plot(Input.US, 'r'), grid on
-2-
FILE NAME: FILE NAME: second_section_Chapter_3.m
%
------------------------------------------------------------------------------
% FIRST EXAMPLE
% UNLEARN bad trial
% In this example, the Premotor cortex (intergates PFc
at different rates)
% sends activation to the motor cortex from time 1 to
1000 msec.
% Mortor cortes sums the activation of Pfc, releases
the action, and the reward is negative (punishment).
% The AT mechanism learns to adaptively close the
thalamus at time of the negative reward.
% This allows the motor cortex to refrain from
releasing the action.
%
------------------------------------------------------------------------------
% Spectral timing
clc; clear;close all
% Variables and parameters
n_trials = 10;
total_time = 1000;
% Cellular stages
prem_activ = zeros(1,total_time);
prem_activ(1:1000) = 1;
reward = zeros(1,total_time);
reward(900:1000) = -1;
motor_cortex = 0;
thalamus = 0;
striatum = 0;
GP_e = 0;
GP_i = 0;
% AT Parameters
A = 0;
B = 1;
C = 0.0001;
D = 0.125;
beta = .8;
E = 1;
n = 8;
time_step = 0.01;
alpha_parameter = 0.00001:0.01 :0.2;
n_chan = size(alpha_parameter,2);
% Record
record_motor_cortex = [];
record_thalamus = [];
record_striatum = [];
record_GP_i = [];
record_GP_e = [];
record_act = zeros(n_chan,total_time);
record_trans = zeros(n_chan,total_time);
record_gated = zeros(n_chan,total_time);
record_doubly_gated = zeros(n_chan,total_time);
record_ltm = zeros(n_chan,total_time);
z = 0;
for k = 1:n_trials
striatum =
0.9;
%
--------- AT ---------
for i =
1:n_chan
x = 0; y
= 1;
for j =
1:total_time % Time steps
dx =
alpha_parameter(i)*(-A*x + (1 - B*x)* prem_activ(j));
x =
x + time_step*dx;
fx = x^n/(beta^n+x^n);
record_actx(i,j) = fx;
%
Neurotransmitter
dy =
C*(1-y) - D*fx*y;
y =
y + time_step*dy;
record_trans(i,j)
= y;
%
LTM traces
dz =
E*fx*y*(-z + reward(j));
z =
z + time_step*dz;
record_ltm(i,j) = z;
%
Gated signals
gated_signal = fx*y;
record_gated(i,j) = gated_signal;
%
Doubly Gated signals
doubly_gated_signal = fx*y*z;
record_doubly_gated(i,j) = doubly_gated_signal;
end
end
% ---------
end AT ---------
GP_i =
max(sum(doubly_gated_signal),0);
GP_e = max(1 - striatum - GP_i,0);
thalamus = .1 - GP_e;
motor_cortex
= 1*thalamus;
% Record
record_motor_cortex = [record_motor_cortex motor_cortex];
record_thalamus = [record_thalamus thalamus];
record_striatum = [record_striatum striatum];
record_GP_i
= [record_GP_i GP_i];
record_GP_e = [record_GP_e GP_e];
end
% Total Gated signals
total_gated_signal = sum(record_doubly_gated);
% Plots AT
a = figure;
set(a,'Color',[1 1 1])
subplot(3,3,1), plot(prem_activ,'b'), title('Premotor
Cortex'), axis([1 total_time 0 2])
subplot(3,3,2), plot(reward,'r'), title('Reward'),
axis([1 total_time -2 2])
subplot(3,3,3), plot(record_actx'), title('Activation
x')
subplot(3,3,4), plot(record_trans'),
title('Transmitter y')
subplot(3,3,5), plot(record_gated'), title('fx*y')
subplot(3,3,6), plot(record_doubly_gated'),
title('fx*y*z')
subplot(3,3,7), plot(record_ltm'), title('LTM traces')
subplot(3,3,7), plot(total_gated_signal'),
title('Output')
% Plots
a = figure;
set(a,'Color',[1 1 1])
subplot(3,2,1), plot(record_motor_cortex,'b'),
title('Motor cortex')
subplot(3,2,2), plot(record_thalamus,'r'),
title('Thalamus')
subplot(3,2,3), plot(record_striatum'),
title('Striatum')
subplot(3,2,4), plot(record_GP_i'), title('GP_i')
subplot(3,2,5), plot(record_GP_i'), title('GP_e')
subplot(3,2,6), plot(prem_activ'), title('Premotor
cortex'), axis([1 total_time 0 2])
%
------------------------------------------------------------------------------
% SECOND EXAMPLE
% LEARN good trial
% In this example, Premotor cortex is activated at
time 500
%
------------------------------------------------------------------------------
% Variables and parameters
n_trials = 10;
total_time = 1000;
% Cellular stages
prem_activ = zeros(1,total_time);
prem_activ(500:1000) = 1;
reward = zeros(1,total_time);
reward(900:1000) = 1;
motor_cortex = 0;
thalamus = 0;
striatum = 0;
GP_e = 0;
GP_i = 0;
% Record
record_motor_cortex = [];
record_thalamus = [];
record_striatum = [];
record_GP_i = [];
record_GP_e = [];
record_act = zeros(n_chan,total_time);
record_trans = zeros(n_chan,total_time);
record_gated = zeros(n_chan,total_time);
record_doubly_gated = zeros(n_chan,total_time);
record_ltm = zeros(n_chan,total_time);
z = 0;
for k = 1:n_trials
striatum =
0.9;
%
--------- AT ---------
for i =
1:n_chan
x = 0; y
= 1;
for j =
1:total_time % Time steps
dx =
alpha_parameter(i)*(-A*x + (1 - B*x)* prem_activ(j));
x =
x + time_step*dx;
fx = x^n/(beta^n+x^n);
record_actx(i,j) = fx;
%
Neurotransmitter
dy =
C*(1-y) - D*fx*y;
y =
y + time_step*dy;
record_trans(i,j) = y;
%
LTM traces
dz =
E*fx*y*(-z + reward(j));
z = z + time_step*dz;
record_ltm(i,j) = z;
%
Gated signals
gated_signal = fx*y;
record_gated(i,j) = gated_signal;
%
Doubly Gated signals
doubly_gated_signal = fx*y*z;
record_doubly_gated(i,j) = doubly_gated_signal;
end
end
% ---------
end AT ---------
GP_i =
max(sum(doubly_gated_signal),0);
GP_e = max(1 - striatum - GP_i,0);
thalamus = .1 - GP_e;
motor_cortex
= 1*thalamus;
% Record
record_motor_cortex = [record_motor_cortex motor_cortex];
record_thalamus = [record_thalamus thalamus];
record_striatum = [record_striatum striatum];
record_GP_i
= [record_GP_i GP_i];
record_GP_e = [record_GP_e GP_e];
end
% Total Gated signals
total_gated_signal = sum(record_doubly_gated);
% Plots AT
a = figure;
set(a,'Color',[1 1 1])
subplot(3,3,1), plot(prem_activ,'b'), title('Premotor
Cortex'), axis([1 total_time 0 2])
subplot(3,3,2), plot(reward,'r'), title('Reward'),
axis([1 total_time -2 2])
subplot(3,3,3), plot(record_actx'), title('Activation
x')
subplot(3,3,4), plot(record_trans'),
title('Transmitter y')
subplot(3,3,5), plot(record_gated'), title('fx*y')
subplot(3,3,6), plot(record_doubly_gated'), title('fx*y*z')
subplot(3,3,7), plot(record_ltm'), title('LTM traces')
subplot(3,3,7), plot(total_gated_signal'),
title('Output')
% Plots
a = figure;
set(a,'Color',[1 1 1])
subplot(3,2,1), plot(record_motor_cortex,'b'),
title('Motor Cortex')
subplot(3,2,2), plot(record_thalamus,'r'),
title('Thalamus')
subplot(3,2,3), plot(record_striatum'),
title('Striatum')
subplot(3,2,4), plot(record_GP_i'), title('GP_i')
subplot(3,2,5), plot(record_GP_i'), title('GP_e')
subplot(3,2,6), plot(prem_activ'), title('Premotor Cortex'),axis([1
total_time 0 2])