Failure of Deep Brain Stimulation in a basal ganglia neuronal network model (Dovzhenok et al. 2013)

 Download zip file 
Help downloading and running models
Accession:148637
"… Recently, a lot of interest has been devoted to desynchronizing delayed feedback deep brain stimulation (DBS). ... This study explores the action of delayed feedback stimulation on partially synchronized oscillatory dynamics, similar to what one observes experimentally in parkinsonian patients. …" Implemented by Andrey Dovzhenok, to whom questions should be addressed.
Reference:
1 . Dovzhenok A, Park C, Worth RM, Rubchinsky LL (2013) Failure of delayed feedback deep brain stimulation for intermittent pathological synchronization in Parkinson's disease. PLoS One 8:e58264 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Basal ganglia;
Cell Type(s): Subthalamus nucleus projection neuron; Globus pallidus neuron;
Channel(s): I Na,t; I T low threshold; I K; I_AHP; I Ca,p;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: XPP; MATLAB;
Model Concept(s): Synchronization; Parkinson's; Deep brain stimulation;
Implementer(s): Dovzhenok, Andrey [andrey.dovzhenok at uc.edu];
Search NeuronDB for information about:  I Na,t; I T low threshold; I K; I_AHP; I Ca,p;
function [pca_eigenval]=PCAgenerator

disp('Multi-parameter variation in XPP from Matlab, with calculating principal components')
disp(' ')
disp('The parameters varied are wights w1, stimulation strength Kn, gsyn and iapp')
disp(' ')

% user specifications
odeFileName = 'tenStim3electrgap_LF.ode';

x1range = 0.3:0.1:0.3;
x2range = 0.0:2.0:60.0;
x3range = 0.5:0.1:1.4;
x4range = 4.0:1.0:8.0;

verboseTog = false; % two levels of notification verbosity to user

% initializations
x1_ix = 0;

lenx1 = length(x1range); 
lenx2 = length(x2range);
lenx3 = length(x3range);
lenx4 = length(x4range);

X2 = x2range;
X3 = x3range;
X4 = x4range;

numpoints = lenx1 * lenx2 * lenx3 * lenx4;

fprintf('Calculating %d points\n',numpoints)
pointnum = 0;
count = 0; % line print count, for backspacing purposes

newpars(1).name='w1';
newpars(1).type='PAR';
newpars(2).name='Kn';
newpars(2).type='PAR';
newpars(3).name='gsyn';
newpars(3).type='PAR';
newpars(4).name='iapp';
newpars(4).type='PAR';


for i=x1range
    x1_ix = x1_ix+1;
    pca_eigenval = cell(lenx2,lenx3,lenx4);
    x2_ix = 0;
    for j = x2range
        x2_ix = x2_ix+1;
        x3_ix = 0;
        for k = x3range
            x3_ix = x3_ix+1;
            x4_ix = 0;
            for l = x4range
                x4_ix = x4_ix+1;        
                pointnum = pointnum + 1;
                if ~verboseTog % then print current loop counter
                    bspstr = '';
                    if count > 0
                        for bix=1:count
                            bspstr = [bspstr '\b']; 
                        end
                    end
                    fprintf(bspstr);
                    count = fprintf('%d',pointnum);
                end
 newpars(1).val = i;
 newpars(2).val = j;
 newpars(3).val = k;
 newpars(4).val = l;
 if verboseTog
     fprintf(' **** Point %d: Variable pt = %.4f, c = %.4f\n',pointnum,newpars(1).val,newpars(2).val)
 end
 success = ChangeXPPodeFile(odeFileName,newpars); % type `help ChangeXPPodeFile` in Matlab
 if success==0
     disp('Change XPP ode file failed')
     return
 end
 success = RunXPP(odeFileName,'',true,'C:\xppall\xppaut'); % type `help RunXPP` in Matlab
 if success==0
     disp('Run XPP failed')
     return
 end
 format = '%f32%*f32%*f32%*f32%*f32%*f32%*f32%*f32%*f32%*f32%*f32%f32%f32%f32%*f32%*f32%*f32%f32%f32%f32%f32%f32%f32%f32%f32%f32%f32%*[^\n]';
 fid = fopen('output.dat', 'r'); % change this if your ODE file explicitly names a data file
 data = textscan(fid, format);
 fclose(fid);
  
 k_v5 = 0;
 k_v6 = 0;
 k_v7 = 0;
 k_v = 0;
 
 for m = 120001:139981 %count # of spikes during the last minute of time series
    if (data{2}(m-1) < -40) && (data{2}(m) >= -40)
        k_v5 = k_v5+1;
    end
    if (data{3}(m-1) < -40) && (data{3}(m) >= -40)
        k_v6 = k_v6+1;
    end
    if (data{4}(m-1) < -40) && (data{4}(m) >= -40)
        k_v7 = k_v7+1;
    end
    if (data{3}(m) < -200) || (data{3}(m) > 200)
        k_v=k_v+1;
    end
 end
 %compute PCA eigenvalues using the slow variable r
 if (min([k_v5 k_v6 k_v7]) > 10) && (max([k_v5 k_v6 k_v7]) < 100) && (k_v==0)
    pca_eigenval{x2_ix,x3_ix,x4_ix}=pca([data{5}(40001:139981) data{6}(40001:139981) data{7}(40001:139981) data{8}(40001:139981) data{9}(40001:139981) data{10}(40001:139981) data{11}(40001:139981) data{12}(40001:139981) data{13}(40001:139981) data{14}(40001:139981)]);
    %t1 = 6000:0.5:6990; left for plotting purposes
   % v5 = data{3}(12001:13981);
   % fOut1 = sprintf('Volt_tr_%s%1.1f_%s%2.1f_%s%1.1f_%s%1.1f.mat','w',i,'Kn',j,'gsyn',k,'iapp',l);
   % save(fOut1, 'v5')
   % clear v5
 end 
    clear data
             end
        end
    end
    fOut2 = sprintf('PCA_eigenval_%s%1.1f.mat','w',i);
    save(fOut2,'X4','X3','X2','pca_eigenval')
    clear pca_eigenval
end

fprintf('\n')
beep

return

end



Loading data, please wait...