22
fNIRS data analysis Biophysics Donders Center for Neuroscience Donders Institute for Brain, Cognition and Behavior Science Faculty, Radboud University Otorhinolaryngology Medical Faculty, RadboudUMC Donders Hearing and Implants Radboud Research Facilities Cochlear Advanced Bionics Marc van Wanrooij, Luuk van de Rijt, Anja Roye, Guus van Bentum, Ad Snik, Emmanuel Mylanus, John van Opstal

fNIRS data analysis

Embed Size (px)

DESCRIPTION

A simple analysis pipeline for functional near-infrared spectroscopy data, presented at the Nijmegen NIRS Network.

Citation preview

Page 1: fNIRS data analysis

fNIRS data analysis •  Biophysics •  Donders Center for Neuroscience •  Donders Institute for Brain, Cognition and Behavior •  Science Faculty, Radboud University •  Otorhinolaryngology •  Medical Faculty, RadboudUMC •  Donders Hearing and Implants •  Radboud Research Facilities •  Cochlear •  Advanced Bionics Marc van Wanrooij, Luuk van de Rijt, Anja Roye, Guus van Bentum, Ad Snik, Emmanuel Mylanus, John van Opstal

Page 2: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 3: fNIRS data analysis

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 4: fNIRS data analysis

Recording NIRS

•  Oxymon

Page 5: fNIRS data analysis

Recording fNIRS - Raw data

•  Data needs to be read into Matlab workspace

20 25 30

Raw

Time (sec)

Ampl

itude

(au)

765 nm858 nm [OD,xmlInfo]=oxy3read_function(); �

% propietary Matlab file from Artinis�% quite cumbersome as we need to manually enter �% filename. �% Also, AD board signals are not extracted �

Page 6: fNIRS data analysis

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 7: fNIRS data analysis

Artifact rejection and correction - Cardiac oscillation

•  Strong cardiac oscillation in fNIRS raw signals is undesirable for measuring evoked cortical hemodynamic responses

out "= prctile(OD(1,:),[2.5 97.5]); % outliers�sel1 "= OD(1,:)<out(2) & OD(1,:)>out(1); % selection �pa_getpower(OD(ii,sel1)-mean(OD(ii,sel1)),250,'display',1); % power spectrum��

0.1 1 10

0

0.2

0.4

0.6

0.8

1

Power Spectrum

Frequency (kHz)

Ampl

itude

(au)

Page 8: fNIRS data analysis

Artifact rejection and correction - Scalp coupling

•  Strong cardiac oscillation in fNIRS raw signals indicates a good contact between the optical probe and the scalp

20 25 30

ï�

0

SCI = 0.99

Time (sec)

Ampl

itude

(au)

765 nm858 nm

Odcardiac(ii,:)"= resample(OD(ii,:),10,Fs); �% we resample the data: this is better than �% downsample because it deals with anti-aliasing, �% but there is a discussion about this�ODcardiac(ii,:)"= pa_bandpass(ODcardiac(ii,:),[0.5 2.5],5); �% we band-pass between 0.5 and 2.5 Hz to keep cardiac �% component only. ��r " "= corrcoef(ODcardiac(ii,sel),ODcardiac(ii+1,sel)); �r " "= r(2)^2; % Scalp coupling index �

Pollonini, L., Olds, C., Abaya, H., Bortfeld, H., Beauchamp, M. S., & Oghalai, J. S. (2014). Auditory cortex activation to natural speech and simulated cochlear implant speech measured with functional near-infrared spectroscopy. Hearing Research, 309, 84–93. doi:10.1016/j.heares.2013.11.007

Page 9: fNIRS data analysis

Artifact rejection and correction - Scalp coupling

Rejection 1 •  Reject channels with poor scalp coupling (SCI<0.75)

Page 10: fNIRS data analysis

Sidenote - from optical densities to concentration changes

http://en.wikipedia.org/wiki/Near-infrared_spectroscopy

•  Basically, you can do it yourself with matrix multiplication: e " "= [eHbR1*d eHbO1*d; eHbR2*d eHbO2*d]; % absorption coefficients�dOD " "= [dOD1;dOD2]; % optical densities�dX " "= eM^-1*dOD; % concentration changes�

•  Artinis has some Matlab code available [t,O2Hb,HHb]=single_ch(OD,xmlInfo,2,1,[3,4]); �

Page 11: fNIRS data analysis

Artifact rejection and correction - motion artifact

•  Usually we throw away data that is contaminated by motion artifacts. Example here shows some onset artefacts, that are selected by an automatic artifact removal.

ODz(ii,:) = zscore(OD(ii,:); % ztransform the data�% remove some outliers " "�out " "= prctile(ODz(ii,:),[2.5 97.5]); �sel " "= ODz(ii,:)<out(2) & ODz(ii,:)>out(1); �OD(ii,sel) "= NaN; �

0 5 10 15 20

−30−25−20−15−10−5

05

1015202530

Raw

Time (sec)

Ampl

itude

(au)

OHbHHb

Page 12: fNIRS data analysis

Artifact rejection and correction – physiological/scalp noise

•  For a simple fNIRS measurement, reference channel subtraction can improve data

Main  channel Reference  channel Clear  signal

= -­‐

%% Reference channel subtraction �b " "= regstats(chanSig,chanRef,'linear','r'); �chanSig "= b.r; % residuals�

Page 13: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 14: fNIRS data analysis

Filtering

•  If (physiological) noise (e.g. variations that you are not interested in) is not removed or corrected, one typically filters the data.

Page 15: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 16: fNIRS data analysis

Computing averages

•  Average over events / subjects function MU = getblock(nirs,chanSig,sensmod) �fs " " "= nirs.fsample; �fd " " "= nirs.fsdown; �onSample "= ceil([nirs.event.sample]*fd/fs); % onset and offset of stimulus�offSample "= onSample(2:2:end); % offset�onSample "= onSample(1:2:end); % onset�stim " "= {nirs.event.stim}; ���selOn " "= strcmp(stim,sensmod); �selOff " "= selOn(2:2:end); �selOn " "= selOn(1:2:end); �Aon " " "= onSample(selOn); �Aoff " "= offSample(selOff); �mx " " "= min((Aoff - Aon)+1)+150; �nStim " "= numel(Aon); �MU = NaN(nStim,mx); �for stmIdx = 1:nStim� idx " " " "= Aon(stmIdx)-100:Aoff(stmIdx)+50; % extra 100 samples before and after � idx " " " "= idx(1:mx); � MU(stmIdx,:) "= chanSig(idx); �end �MU = bsxfun(@minus,MU,mean(MU(:,1:100),2)); % remove the 100th sample, to set y-origin to stimulus onset�

Page 17: fNIRS data analysis

Computing averages

•  Single CI patient / different events

Page 18: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Page 19: fNIRS data analysis

−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5

−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

`audio 6[XHb] (µM)

` video

6[X

Hb] (µ

M)

−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5

−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

`audio+video 6[XHb] (µM)

` av 6

[XHb

] (µ

M)

O2Hb

HHb

Quantification of amplitudes and latencies

•  Maximum amplitude in average trace / Generalized linear model

Page 20: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis: see Guus van Bentum

Page 21: fNIRS data analysis

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical analysis

Note similarity to FieldTrip EEG analysis http://fieldtrip.fcdonders.nl/tutorial/introduction

Page 22: fNIRS data analysis

Analysis packages

•  Statistical analysis of fNIRS Tak, S., & Ye, J. C. (2014). Statistical analysis of fNIRS data: A comprehensive review. NeuroImage, 85 Pt 1(null), 72–91. doi:10.1016/j.neuroimage.2013.06.016

•  HOMER Huppert, T. J., Diamond, S. G., Franceschini, M. A., & Boas, D. A. (2009). HomER: a review of time-series analysis methods for near-infrared spectroscopy of the brain. Applied Optics, 48(10), D280–98. Retrieved from http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=2761652&tool=pmcentrez&rendertype=abstract

•  Motion artifact correction Cooper, R. J., Selb, J., Gagnon, L., Phillip, D., Schytz, H. W., Iversen, H. K., … Boas, D. A. (2012). A systematic comparison of motion artifact correction techniques for functional near-infrared spectroscopy. Frontiers in Neuroscience, 6, 147. doi:10.3389/fnins.2012.00147

•  NIRS Analysis package Fekete, T., Rubin, D., Carlson, J. M., & Mujica-Parodi, L. R. (2011). The NIRS Analysis Package: noise reduction and statistical inference. PloS One, 6(9), e24322. doi:10.1371/journal.pone.0024322