%% Compute new scaling factors for inv_con_PSP using update_inv_con_PSP
%
% Run this whenever parameters are changed that affect the post-synaptic
% potential (PSP) in any of the neuron classes.
% Use par_E and par_I computed here in inv_con_PSP.m
%
%
% IMPORTANT:
% Before running this script, several changes need to be made:
%
%
% update_inv_con_PSP (rarely):
% - Adjust SimParTest.EvtMtx(1,1) such that the first neuron elicits a
% single spike at around 500 ms (only if neuron parameters where changed).
%
% In test_update_inv_con_PSP (rarely):
% - Change STP values if they were changed in ConfigIDNet
%
% In ConfigIDNet (always):
% - Change NTypes line in ConfigIDNet to
% "NTypes = ones(1,14); NTypes(1) = 2;"
%
% In IDNetSim (always):
% - Prevent multivariate random number drawings by the line
% "if ismember(i,[])"
% - Comment out the block starting with
% "while ~isempty(ind_out)"
% and use the previous block instead
% - Set "t_lat_act(j) = 1" and t_lat_LIF_act(j) = 1
% instead of the real calculation
% - Comment out redistribution of neuron types
% - Set maxima and stds of STP parameters to zero in SetSyn
% - Set mean STP values to E2 or to I2, respectively, wherever there is more
% than one option
%
% In inv_con_PSP (always):
% - Set all par_E and par_I to one
% Compute scaling factors from simulation
gmax = [0.1 0.5 1.0 1.5 2.5 3.0]; % gmax to be tested
[par_E_act, par_I23_act, par_I5_act, res_E, res_I23, res_I5] = update_inv_con_PSP(gmax);
par_E = [(1:14)' par_E_act(1,:)'];
par_I = [(1:14)' [par_I23_act(1,:)'; par_I5_act(1,:)']];
% Gauge scaling factors with relative fractions of STP types (use only data
% within layers, since STP data across layers is only avaiable for E->E
% connections, which are almost exclusively depressing)
% D=Depressing, F=Facilitating, DF=Mixed
load('STP_types.mat')
mean_E1 = 0.28; % Change these values if they are changed in ConfigIDNet
mean_E2 = 0.25;
mean_E3 = 0.29;
mean_I1 = 0.16;
mean_I2 = 0.25;
mean_I3 = 0.32;
par_E_scaled(1) = (D_L23E_L23E + mean_E1/mean_E2*F_L23E_L23E + mean_E3/mean_E2*DF_L23E_L23E)*par_E(1,2); % E->L23E
par_E_scaled(2) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(2,2); % E->L23I-L
par_E_scaled(3) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(3,2); % E->L23I-L-d
par_E_scaled(4) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(4,2); % E->L23I-CL
par_E_scaled(5) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(5,2); % E->L23I-CL-AC
par_E_scaled(6) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(6,2); % E->L23I-CS
par_E_scaled(7) = (D_L23E_L23I + mean_E1/mean_E2*F_L23E_L23I + mean_E3/mean_E2*DF_L23E_L23I)*par_E(7,2); % E->L23I-F
par_E_scaled(8) = (D_L5E_L5E + mean_E1/mean_E2*F_L5E_L5E + mean_E3/mean_E2*DF_L5E_L5E)*par_E(8,2); % E->L5E
par_E_scaled(9) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(9,2); % E->L5I-L
par_E_scaled(10) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(10,2); % E->L5I-L-d
par_E_scaled(11) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(11,2); % E->L5I-CL
par_E_scaled(12) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(12,2); % E->L5I-CL-AC
par_E_scaled(13) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(13,2); % E->L5I-CS
par_E_scaled(14) = (D_L5E_L5I + mean_E1/mean_E2*F_L5E_L5I + mean_E3/mean_E2*DF_L5E_L5I)*par_E(14,2); % E->L5I-F
par_I_scaled(1) = (D_L23I_L23E + mean_E1/mean_E2*F_L23I_L23E + mean_E3/mean_E2*DF_L23I_L23E)*par_I(1,2); % I->L23E
par_I_scaled(2) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(2,2); % I->L23I-L
par_I_scaled(3) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(3,2); % I->L23I-L-d
par_I_scaled(4) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(4,2); % I->L23I-CL
par_I_scaled(5) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(5,2); % I->L23I-CL-AC
par_I_scaled(6) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(6,2); % I->L23I-CS
par_I_scaled(7) = (D_L23I_L23I + mean_E1/mean_E2*F_L23I_L23I + mean_E3/mean_E2*DF_L23I_L23I)*par_I(7,2); % I->L23I-F
par_I_scaled(8) = (D_L5I_L5E + mean_E1/mean_E2*F_L5I_L5E + mean_E3/mean_E2*DF_L5I_L5E)*par_I(8,2); % I->L5E
par_I_scaled(9) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(9,2); % I->L5I-L
par_I_scaled(10) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(10,2); % I->L5I-L-d
par_I_scaled(11) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(11,2); % I->L5I-CL
par_I_scaled(12) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(12,2); % I->L5I-CL-AC
par_I_scaled(13) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(13,2); % I->L5I-CS
par_I_scaled(14) = (D_L5I_L5I + mean_E1/mean_E2*F_L5I_L5I + mean_E3/mean_E2*DF_L5I_L5I)*par_I(14,2); % I->L5I-F
par_E = [par_E par_E_scaled']; disp(par_E);
par_I = [par_I par_I_scaled']; disp(par_I);
save inv_con_PSP_factors par_E par_I
% (c) 2016 J. Hass, L. Hertaeg and D. Durstewitz,
% Central Institute of Mental Health, Mannheim University of Heidelberg
% and BCCN Heidelberg-Mannheim