fNIRS data analysis

  • View
    671

  • Download
    0

  • Category

    Science

Preview:

DESCRIPTION

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

Citation preview

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

Analysis pipeline

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

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

Recording NIRS

•  Oxymon

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 �

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical 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)

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

Artifact rejection and correction - Scalp coupling

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

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]); �

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

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�

Analysis pipeline

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

Filtering

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

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical 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�

Computing averages

•  Single CI patient / different events

Analysis pipeline

•  Recording fNIRS •  Artifact rejection and correction (scalp coupling, motion artifact, physiological noise) •  Filtering •  Computing average •  Quantification of amplitudes and latencies •  Statistical 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

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

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

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

Recommended