Excessive beta oscillations in Parkinson's disease (Pavlides et al. 2015)

 Download zip file 
Help downloading and running models
" ... Understanding the generation of beta oscillations is important to improve treatments for Parkinson’s disease. Competing theories exist for how these oscillations are generated in the affected brain circuits, which include the motor cortex and a set of subcortical nuclei called the basal ganglia. This paper suggests two hypotheses for the generation of beta oscillations. The first hypothesis is that beta oscillations are generated in the motor cortex, and the basal ganglia resonate to the cortical input. The second hypothesis additionally proposes that feedback from the basal ganglia to cortex is critically important for the presence of the oscillations. We show that the models can successfully account for a wide range of experimental data concerning the presence of beta oscillations in Parkinson’s disease."
1 . Pavlides A, Hogan SJ, Bogacz R (2015) Computational Models Describing Possible Mechanisms for Generation of Excessive Beta Oscillations in Parkinson's Disease. PLoS Comput Biol 11:e1004609 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism: Subthalamic Nucleus; Basal ganglia;
Cell Type(s):
Gap Junctions:
Simulation Environment: MATLAB;
Model Concept(s): Parkinson's; Beta oscillations; Activity Patterns; Oscillations;
Implementer(s): Pavlides, Alex ;
function freq = frequency(x, y, threshold, totaltime)

% function freq = frequency(x, y, threshold,totaltime)
% Counts period of oscillation but does not discriminate between different
% frequency bands, unlike a fast fourier transform (FFT). However, when
% simulation times are short this algorithm is more acccurate than FFT.
% When totaltime is long it performs no better than FFT. It works by
% counting the number of peaks, including partial oscillation periods at
% the beginning and end of the time series

% x         - time vector
% y         - amplitude vector
% threshold - minimum level at which oscillations are detected
% totaltime - maximum simulation time

% freq      - frequency

[up, down] = peakdet(y(1,:), threshold, x);

if length(up) > 2 || length(down) > 2
    if length(up) == length(down)
        % count the number of peaks
        integer_freq = length(up);
        period = mean(diff(up(:,1)));
        % add any partial oscillations at the front or end of oscillation.
        front_adj = up(1,1)/period;
        end_adj = (totaltime - up(end,1))/period;
        % Sum and divide by totaltime for frequency.
        freq = (integer_freq + front_adj + end_adj-1)/totaltime;
    if length(up) < length(down)
        integer_freq = length(up);
        period = mean(diff(up(:,1)));
        front_adj = up(1,1)/period;
        end_adj = (totaltime - up(end,1))/period;
        freq = (integer_freq + front_adj + end_adj-1)/totaltime;
    if length(up) > length(down)
        integer_freq = length(down);
        period = mean(diff(down(:,1)));
        front_adj = down(1,1)/period;
        end_adj = (totaltime - down(end,1))/period;
        freq = (integer_freq + front_adj + end_adj-1)/totaltime;
    freq = 0;

if isempty(up) || isempty(down)
    freq = 0;