-
Notifications
You must be signed in to change notification settings - Fork 1
This is the repository for the toolbox code published in “Estimation of Time-Varying Spectral Peaks and Decomposition of EEG Spectrograms”, IEEE Access, 2020 Stokes PA, Prerau MJ
License
preraulab/IEEE_peak_tracking_paper
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This Peak Tracking Toolbox contains files for tracking parameterized peaks in the spectrogram. These include a set of variant filters, several model classes used by the filters, functions for plotting the estimates, files to compare the variant filter performances on simulated examples, and files for analyzing a real data example. The primary user-level files are: ex_real_data.m -- script to run the real data example. Can be run as is. compareEKFs_jobs_wRandSSMs.m -- function to estimate/compare filters on simulated examples. Can be run with defaults as is. iekf.m -- the recommended iekf filter function. plotMPSpectWithSlices.m -- function to plot observed spectrogram with estimate. plotMPStateEstimates.m -- function to plot state estimates. A complete listing is given below. NOTE: The StateSpaceMultiPeak class was built with the intention of allowing general SDEs for the state evolution equation. However, this was never fully realized. The in-class simulate function and the external filter functions impose very specific forms of the state evolution and noise covariances. The function can be modified accordingly to handle more general situations. ******************* * Variant filters * ******************* iekf -- function for main IEKF with discrete switching of peak-combination and improved initial trajectory using random draws. A basic IEKF version without draws is obtained by setting num_particles = 1. An EKF version (with or without draws) is obtained by setting num_iters = 1. iekfW2ndDeriv -- similar to iekf, except the filter updates are treated as a Newton-Raphson mode optimization that utilizes the second derivatives. ekf2ndOrder -- function for a second-order Gaussian EKF. iekfWPostMode -- same as iekf, except it selects the draw of the initial reference trajectory as the approximate posterior filter mode. NOTE: For computation speed, each filter currently overwrites the state evolution equation, assuming x(t) = 0.9*Phi*x(t-1) + w(t), with Phi(t1,t2) = I. They also assume constant noise covariances Q and R. The filters must be modified accordingly to handle other situations. ***************** * Model Classes * ***************** StateSpaceMultiPeak -- state-space model class extending the MultiPeakModel class. It adds the variables needed for forming the state-space model. It also has a simulate function, which will simulate the model. NOTE: The simulate function currently assumes an identity transition matrix for the state and constant noise covariances. MultiPeakModel -- class for a multi-peak observation. It has the individual component peaks, functions to access their properties, functions to evaluate the multi-peak observation and its derivatives at given parameter values, and functions for plotting. PeakModel -- class for individual peaks. It contains the peak type, peak parameters (with their bounds), the peak function and its derivatives. PeakObjParam -- class for individual parameters. It defines their type of bound and contains the bound function and its derivatives and inverse. makePeakCombos -- function to determine maximum available peak combinations based on which are dynamic. Could be moved inside StateSpaceMultiPeak class. makeComboTransitionMatr -- function to form the transition matrix of the On/Off-peaks combination. Could be moved inside StateSpaceMultiPeak class. **************************************************************** * Files to compare filter variatants applied to simulated data * **************************************************************** compareEKFs_jobs_wRandSSMs -- Function to generate simulated examples, compute the variant filter estimates for each, and compute a set of statistical performance measures. The first four inputs--an output directory (odir), simulation type (sim_type), number of peaks (num_peaks), and number of simulations (num_sims) are input as strings to enable batch deployment on a cluster. sim_type determines whether the peak parameters follow hard-bound random walks ('randWalk') or pseudo-deterministic patterns ('pseudoDeterm'). num_peaks is the number of peaks on an exponential-decay background. Can be run for default (one peak on decay background with hard-bound random walk parameters) as is. NOTE: May hit memory issue at call to moranI in checkEstimates, in which case comment out either function as desired. simulatePseudoDeterm -- function to generate simulation with peak parameters following pseudo-deterministic parameters. checkEstimates -- function that computes a variety of statistical measures from the various filter estimates for each simulation. boxQ -- function to comptute the Box Q statistic. It is modified to be able to limit the extent of the two-dimensional correlations evaluated. The default is 10 time lags, all frequency bins. Called in checkEstimates using 4 time bins and +/-4 frequency bins. moranI -- function to compute Moran's I statistic over. It is modified to be able to limit the extent of the two-dimensional correlations evaluated. The default is all time lags, all frequency bins. Called in checkEstimates using +/-3 time bins and +/-4 frequency bins. myDateStr -- utility function used to generate data string for filename in compareEKFs_jobs_wRandSSMs.m ******************************* * Files for real data example * ******************************* sop_spect_mt.mat -- example real data file containing pre-computed spectrogram (spect) with time and frequency bins (stimes and sfreqs, respectively) and sampling rate (Fs). ex_real_data -- script to analyze data in sop_spec_mt.mat. Can be run as is. exp_baseline_fit -- function to determine initial state values of exponential-decay background function. Called in ex_real_data. nanpow2db -- utility function to convert to spectrogram to dB when data contains NaNs. ************************************************* * Files for plotting filter and state estimates * ************************************************* plotMPSpectWithSlices -- function to plot original spectrogram, estimated spectrogram, residual estimates, and estimated On/Off-peak combinations. There is also option to plot interactive time-slices of the spectrum, estimate, and individual peaks. plotMPStateEstimates -- function to plot state estimates. climscale -- utility function to adjust color scale in imagesc spectrogram plots.
About
This is the repository for the toolbox code published in “Estimation of Time-Varying Spectral Peaks and Decomposition of EEG Spectrograms”, IEEE Access, 2020 Stokes PA, Prerau MJ
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published