Physiochemical properties of nanomaterials and its nanotoxicity.pptx
fNIRS data analysis
1. 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
2. Analysis pipeline
• Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
3. • Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
5. Recording fNIRS - Raw data
• Data needs to be read into Matlab workspace
Raw
20 25 30
Time (sec)
Amplitude (au)
765 nm
858 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
6. • Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
7. 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
1
0.8
0.6
0.4
0.2
0
Power Spectrum
0.1 1 10
Frequency (kHz)
Amplitude (au)
8. 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)
Amplitude (au)
765 nm
858 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
9. Artifact rejection and correction - Scalp coupling
Rejection 1
• Reject channels with poor scalp coupling (SCI0.75)
10. 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]);
11. 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
0
−5
−10
−15
−20
−25
−30
Raw
Time (sec)
Amplitude (au)
OHb
HHb
12. Artifact rejection and correction – physiological/scalp noise
• For a simple fNIRS measurement, reference channel subtraction can improve data
%% Reference channel subtraction
b = regstats(chanSig,chanRef,'linear','r');
chanSig = b.r; % residuals
Main
channel Reference
channel Clear
↓
signal
-‐ =
13. Analysis pipeline
• Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
14. Filtering
• If (physiological) noise (e.g. variations that you are not interested in) is not removed or
corrected, one typically filters the data.
15. Analysis pipeline
• Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
16. 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
18. Analysis pipeline
• Recording fNIRS
• Artifact rejection and correction (scalp coupling, motion artifact, physiological noise)
• Filtering
• Computing average
• Quantification of amplitudes and latencies
• Statistical analysis
19. −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)
6[XHb] (μM)
`video
−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)
6[XHb] (μM)
`av
O
2
Hb
HHb
Quantification of amplitudes and latencies
• Maximum amplitude in average trace / Generalized linear model
20. 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
21. 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
22. 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=2761652tool=pmcentrezrendertype=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