clear all close all clc Npop=3; % Number of ROIs % time definition dt=0.0001; f_eulero=1/dt; tend=57; % 56 sec, because one second will be excluded for transitory effects t=(0:dt:tend); N=length(t); rng(11) % noise seed %% parameters definition % Connectivity constants C(:,1) = 40.*ones(1,Npop); %Cep C(:,2) = 40.*ones(1,Npop); %Cpe C(:,3) = 40.*ones(1,Npop); %Csp C(:,4) = 50.*ones(1,Npop); %Cps C(:,5) = 20.*ones(1,Npop); %Cfs C(:,6) = 40.*ones(1,Npop); %Cfp C(:,7) = 60.*ones(1,Npop); %Cpf C(:,8) = 20.*ones(1,Npop); %Cff % definition of excitatory and inhibitory synapses Wp=zeros(Npop); %excitatorty synapses Wp(1,2)=0; % Wp_12 = 0, 20, 40, 60, 80 : 5 points (a,b,c,d,e) for each panel Wp(2,1)=40; Wp(1,3)=0; % 0, 20, 40, 60 : 4 panels Wp(2,3)=0; % 0, 20, 40, 60 : 4 panels % inhibitory synapses Wf=zeros(Npop); e0 = 2.5; % Saturation value of the sigmoid r = 0.56; % Slope of the sigmoid D=0.0166*ones(1,Npop); % Delay between regions a=[75 30 300 ]; % Reciprocal of synaptic time constants (\omega) G=[5.17 4.45 57.1]; % Synaptic gains %% Simulation for trial = 1: 10 disp(trial) sigma = sqrt(9/dt); % Standard deviation of the input noise np = randn(Npop,N)*sigma; % input noise to excitatory neurons nf = randn(Npop,N)*sigma; % input noise to inhibitory neurons % defining equations of a single ROI yp=zeros(Npop,N); xp=zeros(Npop,N); vp=zeros(Npop,1); zp=zeros(Npop,N); ye=zeros(Npop,N); xe=zeros(Npop,N); ve=zeros(Npop,1); ze=zeros(Npop,N); ys=zeros(Npop,N); xs=zeros(Npop,N); vs=zeros(Npop,1); zs=zeros(Npop,N); yf=zeros(Npop,N); xf=zeros(Npop,N); zf=zeros(Npop,N); vf=zeros(Npop,1); xl=zeros(Npop,N); yl=zeros(Npop,N); step_red = 100; % step reduction from 10000 to 100 Hz fs = f_eulero/step_red; eeg=zeros(Npop,(N-1-10000)/step_red); % exclusion of the first second due to a possible transitory m = zeros(Npop,1); % mean value of the input noise kmax=round(max(D)/dt); for k=1:N-1 up=np(:,k)+m; % input of exogenous contributions to excitatory neurons uf=nf(:,k); % input of exogenous contributions to inhibitory neurons if(k>kmax) for i=1:Npop up(i)=up(i)+Wp(i,:)*zp(:,round(k-D(i)/dt)); uf(i)=uf(i)+Wf(i,:)*zp(:,round(k-D(i)/dt)); end end % post-synaptic membrane potentials vp(:)=C(:,2).*ye(:,k)-C(:,4).*ys(:,k)-C(:,7).*yf(:,k); ve(:)=C(:,1).*yp(:,k); vs(:)=C(:,3).*yp(:,k); vf(:)=C(:,6).*yp(:,k)-C(:,5).*ys(:,k)-C(:,8).*yf(:,k)+yl(:,k); % average spike density zp(:,k)=2*e0./(1+exp(-r*(vp(:))))-e0; ze(:,k)=2*e0./(1+exp(-r*(ve(:))))-e0; zs(:,k)=2*e0./(1+exp(-r*(vs(:))))-e0; zf(:,k)=2*e0./(1+exp(-r*(vf(:))))-e0; % post synaptic potential for pyramidal neurons xp(:,k+1)=xp(:,k)+(G(1)*a(1)*zp(:,k)-2*a(1)*xp(:,k)-a(1)*a(1)*yp(:,k))*dt; yp(:,k+1)=yp(:,k)+xp(:,k)*dt; % post synaptic potential for excitatory interneurons xe(:,k+1)=xe(:,k)+(G(1)*a(1)*(ze(:,k)+up(:)./C(:,2))-2*a(1)*xe(:,k)-a(1)*a(1)*ye(:,k))*dt; ye(:,k+1)=ye(:,k)+xe(:,k)*dt; % post synaptic potential for slow inhibitory interneurons xs(:,k+1)=xs(:,k)+(G(2)*a(2)*zs(:,k)-2*a(2)*xs(:,k)-a(2)*a(2)*ys(:,k))*dt; ys(:,k+1)=ys(:,k)+xs(:,k)*dt; % post synaptic potential for fast inhibitory interneurons xl(:,k+1)=xl(:,k)+(G(1)*a(1)*uf(:)-2*a(1)*xl(:,k)-a(1)*a(1)*yl(:,k))*dt; yl(:,k+1)=yl(:,k)+xl(:,k)*dt; xf(:,k+1)=xf(:,k)+(G(3)*a(3)*zf(:,k)-2*a(3)*xf(:,k)-a(3)*a(3)*yf(:,k))*dt; yf(:,k+1)=yf(:,k)+xf(:,k)*dt; end % 3 ROIs data generation start = 10000; % exclusion of the first second due to a possible transitory eeg=diag(C(:,2))*ye(:,start:step_red:end)-diag(C(:,4))*ys(:,start:step_red:end)-diag(C(:,7))*yf(:,start:step_red:end); switch trial case 1 eeg1 = eeg; case 2 eeg2 = eeg; case 3 eeg3 = eeg; case 4 eeg4 = eeg; case 5 eeg5 = eeg; case 6 eeg6 = eeg; case 7 eeg7 = eeg; case 8 eeg8 = eeg; case 9 eeg9 = eeg; case 10 eeg10 = eeg; end end tt=t(start:step_red:end); % time vector % save data for TRENTOOL save sim_data_Fig5_0a eeg1 eeg2 eeg3 eeg4 eeg5 eeg6 eeg7 eeg8 eeg9 eeg10 tt Wf Wp