42
EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

EEG artifacts: their detection, influence, and 

removal 

Jean-Paul Wiegand

Chapter 8

PSY 696B, Analyzing Neural Time-series Data

Page 2: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Necessary files• LFP2

Page 3: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

What is an artifact?“Although EEG is designed to record cerebral activity, it also records electrical activities arising from sites other than the brain. The recorded activity that is not of cerebral origin is termed artifact and can be divided into physiologic and extraphysiologic artifacts. While physiologic artifacts are generated from the patient, they arise from sources other than the brain (ie, body). Extraphysiologic artifacts arise from outside the body (ie, equipment, environment).”

http://emedicine.medscape.com/article/1140247-overview

Page 4: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Artifact examples

• Blinks• Muscle movements• Brief amplifier saturations• Line noise• Cognitive artifacts

Page 5: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

What do they look like?

http://eegatlas-online.com/myapplications/images/eeg0028/eeg0028on.png

Page 6: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Artifact InfluenceCan affect:

• Mean• Median• Distribution• Standard deviation• Signal to noise ratio

Page 7: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Adifferent definition?• Anything that obscures your ability to find the

electrophysiological signal that you’re looking for

Page 8: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

What do artifacts tell you?• Long blinks – subject

may have been too tired

• Blink timing – may not have seen stimulus

• Saccades – may not have been focusing

• Noisy EMG – might have been restless

Page 9: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

How to minimize artifacts• Proper test design• Good instructions• Response EMG or force

grips• Eye tracker• Electrode localization

equipment• Comfortable

environment• Good response device

Page 10: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Independent Components Analysis

• Assigning a set of varying weights to different electrodes

• “The Matlab toolbox eeglab is the toolbox that provides the most active development of independent components analysis”

Page 11: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

EEGLAB

Page 12: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

EEGLABTools > Run ICA2 default configurations:• Runica• Jader

http://sccn.ucsd.edu/wiki Chapter_09:_Decomposing_Data_Using_ICA

Page 13: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Independent Component Analysis

• Might require knowledge of where one’s signal is originating from

• May also require knowledge of where noise may come from

• May not need to remove trials with blinks

Page 14: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

DetectionDepends upon the characteristics of your artifact, as well as your desired signal

• Is it longer or shorter than your signal?• Is it higher or lower in amplitude?• Does it oscillate? Is it faster or slower? • How does it compare to the mean?• Does it occur at particular times?• Is it phase- or time-locked to anything?

Page 15: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Detection: Matlab

• If it’s faster or slower…

• Bandpass filter

Page 16: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Detection: Matlab

• If it’s higher or lower in amplitude…

• Indexing

Page 17: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Detection: Matlab

• If it’s time- or phase-locked…

• Indexing

Page 18: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Detection: Matlab

• If it’s shorter or longer…

• Still indexing…but then it gets complicated…

Page 19: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Removal: Matlab

• Indexing• Enveloping• Squaring• Thresholding

Page 20: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Indexing is our friend

• An easy method to pick out wanted, or unwanted, time stamps and their corresponding data points

• For most artifacts, will likely be sufficient

Page 21: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

But let’s say• You’re looking for sleep ripples…

• Ripples are an EEG signature commonly found during sleep and have been implicated in spatial memory recall and consolidation

• They are ~140-220Hz AND between 2.5-8 standard deviations above the mean AND last 50-200ms

Page 22: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

So if signal=ripples, noise=?

• Spindles• Theta• Gamma• EMG• EKG• Waking activity

Page 23: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

LFP2• Sample trace recorded from the hippocampus in

behaving rat during sleep

• Waking behavior already taken out via find_intervals

Page 24: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Bandpass filter% Filter for sleep ripplesnew_sFreq = 1000;lowlimit_fq = 100;highlimit_fq = 300;F_Ny = new_sFreq/2 %HzN = 4 %order of filterpassband = [lowlimit_fq/F_Ny highlimit_fq/F_Ny];ripple = .5[B,A] = cheby1(N,ripple,passband);LFPrip = filtfilt(B,A,LFP2(:,2));

Page 25: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Help cheby1>> help cheby1cheby1 Chebyshev Type I digital and analog filter design.

[B,A] = cheby1(N,R,Wp) designs an Nth order lowpass digital Chebyshev filter with R decibels of peak-to-peak ripple in the passband. cheby1 returns the filter coefficients in length N+1 vectors B (numerator) and A (denominator). The passband-edge frequency Wp must be 0.0 < Wp < 1.0, with 1.0 corresponding to half the sample rate. Use R=0.5 as a starting point, if you are unsure about choosing R.

Page 26: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Help filtfilt>> help filtfiltfiltfilt Zero-phase forward and reverse digital IIR filtering.

Y = filtfilt(B, A, X) filters the data in vector X with the filterdescribed by vectors A and B to create the filtered data

Y. The filter is described by the difference equation:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... - a(na+1)*y(n-na)

The length of the input X must be more than three timesthe filter order, defined as max(length(B)-1,length(A)-1).

Page 27: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Sanity check

• plot(LFP2(:,1),LFP2(:,2));• hold on• plot(LFP2(:,1),LFPrip(:,1),’r’);

Page 28: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

LFPrip

• Now a sleep trace consisting of just desired frequency ranges

Page 29: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Find_intervals

• Cowen 2006

• Defines periods that fit within certain bounds

• Used to find periods of motionlessness, or “rest”• (Will be) Used to find hippocampal sleep ripples

Page 30: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Function descriptionfunction [above_times, below_times] = find_intervals(TX, thresh, lower_thresh, minimum_duration, minimum_inter_interval_period)% Finds intervals in a record TX (time and data) that are above% or below the specified threshold.%% INPUT: TX nx2 matrix where col1 is time, col 2 is data. OR TX is a vector% This should be a% smoothed energy trace of the data you wish to threshold.% thresh - threshold% low_thresh -% * if a value is specified: move out from the identified start end times until% you fall below the low_thresh. This allows you to set a higher% threshold for event detection, and still retain a good estimate% of the event onset time.% * if a nan, then move out in either direction until the first% derivative changes. Threshold free - which is nice.% * if empty, then don't do anything.% minimum_duration - the minimum duration of an event to be% considered above threshold.% minimum_inter_interval_period = if an interval between two% super-threshold periods is this small, merge them together.%% OUTPUT: start and end times for periods above or below the threshold.%% This is useful for code like theta or spindle detection.% % Cowen 2006

Page 31: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Find_intervals• function [above_times, below_times] = find_intervals(TX,

thresh, lower_thresh, minimum_duration, minimum_inter_interval_period)

• Above_times: start and end timestamps where TX is above thresh

• Below_times: start and end timestamps where TX is below thresh but above lower_thresh

• Minimum_duration: minimum time period of signal• Minimum_inter_interval_period: minimum time between

signals - if two signals are found within this time, then they are merged

Page 32: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Narginif size(TX,2) == 1

TX = [[1:length(TX)]' TX];end

if nargin <3lower_thresh = [];minimum_duration = [];

endif nargin < 4

minimum_duration = [];end if nargin < 5

minimum_inter_interval_period = [];endTX(1,2) = 0; % This allows it to register up times when the record STARTs above thresholdTX(end,2) = 0; % This allows it to register up times when the record ENDs above thresholdcross_points = diff(TX(:,2) > thresh); % Apply the threshold - append 0 to front and endabove_times = [TX(find(cross_points == 1),1) TX(find(cross_points == -1),1)];

Page 33: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Diff?• >> help diffdiff Difference and approximate derivative.

diff(X), for a vector X, is [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)].

• TX(:,1) = 1:100;• TX(:,2) = rand(100,1);• cross_points = diff(TX(:,2) > .5);

Page 34: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

if isnan(lower_thresh)% Move out or forward until the first derivative changes.new_above_times = above_times;all_start_ix = binsearch_vector(TX(:,1), above_times(:,1));all_end_ix = binsearch_vector(TX(:,1), above_times(:,2));for ii = 1:size(above_times,1)

% move the threshold out to the point where the 1st derivative% changes.ix = all_start_ix(ii);while (ix > 0 & TX(ix,2) < TX(ix+1,2) )

ix = ix - 1;endif ix > 0;

new_above_times(ii,1) = TX(ix,1);end

ix = all_end_ix(ii);while (ix < size(TX,1) & TX(ix,2) < TX(ix-1,2) )

ix = ix + 1;endnew_above_times(ii,2) = TX(ix,1);

end% Get rid of the overlapping intervals.% There is proably a 1 line command for this but I couldn't think of% it.

Page 35: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

for ii = 1:(size(new_above_times,1)-1)if new_above_times(ii+1,1) <= new_above_times(ii,2)

new_above_times(ii+1,1) = nan;new_above_times(ii,2) = nan;

endendv = new_above_times(:); % Convert to a vector for easy

nan elimination.v = v(find(~isnan(v)));v = unique(v); % sorts and gets unique vals.new_above_times = [v(1:2:end) v(2:2:end)];above_times = new_above_times;

end

Page 36: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

if ~isempty(minimum_inter_interval_period)new_above_times = above_times;d_times = above_times(2:end,1) - above_times(1:end-1,2);idx = find(d_times < minimum_inter_interval_period);new_above_times(idx,2) = nan;new_above_times(idx+1,1) = nan;v = new_above_times(:); % Convert to a vector for easy nan elimination.v = v(find(~isnan(v)));v = unique(v); % sorts and gets unique vals.new_above_times = [v(1:2:end) v(2:2:end)];above_times = new_above_times;

end

if ~isempty(minimum_duration)goodix = find((above_times(:,2) - above_times(:,1)) > minimum_duration);above_times = above_times(goodix,:);

end

Page 37: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

if nargout > 1% Times when not above threshold.below_start_times = [TX(1,1); above_times(:,2)];below_end_times = [above_times(:,1); TX(end,1)];below_times = [below_start_times below_end_times];if Rows(below_times) > 1

if below_times(1,1) == below_times(2,1) below_times(1,:)= [];

endif below_times((end-1),2) == below_times(end,2)

below_times(end,:)= [];end

endend

Page 38: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

• Index• Aaaand thenn…• v = v(find(~isnan(v))); %???!

• >> v(1:50,1) = nan;• >> v(51:100,1) = 50;• >> v = v(find(~isnan(v)));

Page 39: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Apply functionrip_ENV = LFPrip.^2;rip_ENV = sgolayfilt(rip_ENV,3,51);

rip_thresh = std(rip_ENV)*8;rip_lower_thresh = std(rip_ENV)*2.5;

rip_minimum_duration = 40;rip_minimum_inter_interval_period = 100;

[rip_above_times, rip_below_times] = find_intervals([LFP2(:,1) rip_ENV], rip_thresh, rip_lower_thresh, rip_minimum_duration, rip_minimum_inter_interval_period);

Page 40: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Results

Page 41: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

Remaining questions?

Page 42: PSY 696B, Analyzing Neural Time-series Data · EEG artifacts: their detection, influence, and removal Jean-Paul Wiegand Chapter 8 PSY 696B, Analyzing Neural Time-series Data

THANK YOU!