View
671
Download
0
Category
Tags:
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