Mechanisms underlying different onset patterns of focal seizures (Wang Y et al 2017)

 Download zip file 
Help downloading and running models
Accession:226074
"Focal seizures are episodes of pathological brain activity that appear to arise from a localised area of the brain. The onset patterns of focal seizure activity have been studied intensively, and they have largely been distinguished into two types { low amplitude fast oscillations (LAF), or high amplitude spikes (HAS). Here we explore whether these two patterns arise from fundamentally different mechanisms. Here, we use a previously established computational model of neocortical tissue, and validate it as an adequate model using clinical recordings of focal seizures. We then reproduce the two onset patterns in their most defining properties and investigate the possible mechanisms underlying the different focal seizure onset patterns in the model. ..."
Reference:
1 . Wang Y, Trevelyan AJ, Valentin A, Alarcon G, Taylor PN, Kaiser M (2017) Mechanisms underlying different onset patterns of focal seizures PLoS 13(5):e1005475
Model Information (Click on a link to find other models with that property)
Model Type: Neural mass;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Epilepsy; Beta oscillations; Gamma oscillations; Oscillations; Activity Patterns; Spatio-temporal Activity Patterns;
Implementer(s): Wang, Yujiang [yujiang.wang at newcastle.ac.uk];
%% This code runs based on the previously published 
%% paper: http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1003787
%% and code: https://senselab.med.yale.edu/modeldb/showModel.cshtml?model=155565
%% note that all files in lib essentially stayed the same. So if you want to run a bigger sheet, please see previous code for the generation of the connectivity matrix.
%% contact yujiang.wang@ncl.ac.uk for more details

clear all
close all
addpath('lib')
%load('Conns_n150.mat') I recommend generating the connectivity matrix once
%and saving it and loading it in future...

tic;
n=150;

%calculate Connectivity Matrix for Py->Py 
CeLoc=GaussianLocConnFunc(n,@distTorus,5);%r_loc=500 micrometre, hence the standard deviation of the gaussian is 250 micrometre, which corresponds to 5 units.
CeLoc(CeLoc>0)=1;
%calculate Connectivity Matrix for Py->In
CeLocI=GaussianLocConnFunc(n,@distTorus,5);%r_loc=500 micrometer
CeLocI(CeLocI>0)=1;
toc;
%remote conn
tic;
nOut=round(mean(sum(CeLoc,1))*4/6);%number of outgoing connections per mini column
%patchSize*numPatches should be > nOut!!!
remRad=75;%3750 micrometers
nM=10;
patchSize=round(5^2*3.14/2);
numPatches=6;
nOverlap=3;
CeRem=ConnPatchyRemOverlap(n,nM,patchSize,numPatches,remRad,nOut,nOverlap,@distTorus,@makeCellClusterToroidal);
toc;



%% parameters
n=150;
tinterp=1;

parameters=getParam(n,CeRem,CeLoc,CeLocI);


%% prescan to get initial state
        %prescan===============================
        tend=1.5;
        
        T=0:parameters.h*tinterp:tend;%for plotting
        nIt=(tend)/parameters.h+1;
        tic
            %using all 0 initial condition for Py
            initCond=zeros(2*n^2,1);
            parameters.NValue=getNoise(nIt,n);

            Y=runSheet(initCond,parameters);
            bgInitc=Y(end,:);
        toc

        
        %% real run
        
        parameters=getParam(n,CeRem,CeLoc,CeLocI);
        tend=15;
        T=0:parameters.h*tinterp:tend;%for plotting
        nIt=(tend)/parameters.h+1;
        %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        ClusterNum=15; %change this number to change the number of subclusters
        % !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        PercentHetP=0.05;
        P=-2.5;
        parameters.PyInput=P*(ones(n^2,nIt));

        CellLocVAll=[];
        CellLocAll=zeros(n,n);
        r=25;%onset gap in units of 2ms
        Pt=2;%target P
        
        for cn=1:ClusterNum
            [CellLoc,CellLocV] = makeCellCluster(1,PercentHetP/ClusterNum,n);%to scan: clustering coeff and percent of bad cells
            CellLocVAll=[CellLocVAll, CellLocV];
            CellLocAll=CellLocAll+CellLoc;
            

            Ramp=[P*ones(1,1000), P:abs((P-Pt))/(1500+r):Pt, Pt*ones(1,5000-r)]; 
           
            parameters.PyInput(CellLocV,:)=repmat(Ramp,length(CellLocV),1);
            
        end
        CellLocVAll=unique(CellLocVAll);
        
        imagesc(CellLocAll)
        
        %Ramp=[P*ones(1,250), P:abs((P-1))/500:1, 1*ones(1,1750)]; 
        


        
 %%       
        %real runs===============================
        


        %using initial condition all 1
        tic
        initCond=bgInitc;
        
        parameters.NValue=getNoise(nIt,n);
        
        
        Y=runSheetPRamp(initCond,parameters);
        toc
        %%
        Py=Y(1:tinterp:end,1:n^2); 
        
        Inh=Y(1:tinterp:end,n^2+1:end);
        SCInput=parameters.NValue(:,1:tinterp:end);
        PyInput=parameters.PyInput(:,1:tinterp:end);
        LFP=parameters.Py2Py*double(Py') - parameters.Inh2Py*double(Inh') + 0.1*SCInput;% + PyInput + SCInput;
        LFP=single(LFP');

        mPy=mean(Py,2);sPy=std(Py,0,2);
        mLFP=mean(LFP,2);

        [mMacroCol,mMacroColLFP]=meanMacroCol(n,10,Py,LFP);


        
%%  plot
load('MayColourMap')


figure(1)
plot(T,mLFP)
title('Raw model output LFP')

samplingF=1/T(2);
filtmLFP=FilterEEG(mLFP, 1, samplingF, 'high', 3);
figure(2)
plot(T,filtmLFP)
title('Filtered model output LFP - with DC shift')



figure(5)
TPts=[1501:1000:5501];
for k=1:length(TPts)
    subplot(1,length(TPts),k)
    imagesc(reshape(Py(TPts(k),:),n,n) )
    %colormap(mycmap)
    caxis([0 0.5])
    title(sprintf('T=%g',T(TPts(k))))
end


Loading data, please wait...