Back in 2009 we published a paper titled “Functional near infrared spectroscopy (NIRS) signal improvement based on negative correlation between oxygenated and deoxygenated hemoglobin dynamics“. In a nutshell, we found the oxy- and deoxy-Hb are negatively correlated when noise level is low. When noise level increases, their correlation becomes more and more positive.
Based on this phenomenon we can check the noise level of a channel using the correlation. Below is the script. You simply input the hbo and hbr data (both matrix), and the output is the bad channels.
function badChannels = checkDataQuality(hbo,hbr)
% function badChannels = checkDataQuality(hbo,hbr) % Check data quality using correlation between hbo and hbr as indicator % if the correlation is strictly -1, then bad channel % if the correlation is > 0.5, then bad channel % Input: hbo and hbr are NxM matrix, N is number of scan, and M number of % channels % output: array of bad channels % % Xu Cui % 2009/11/25 n = size(hbo,2); for ii=1:n tmp = corrcoef(hbo(:,ii), hbr(:,ii)); c(ii) = tmp(2); end pos = find(c==-1); if ~isempty(pos) disp(['Channels with -1 correlation: ' num2str(pos)]) end pos2 = find(c>0.5); if ~isempty(pos2) disp(['Channels with >0.5 correlation: ' num2str(pos2)]) end badChannels = [pos pos2];
Hi,Cui Xu. Is this method suited for resting-state data ?
@Gu Yue
Good question! I however do not know the answer. You can try it and see if it increase your data quality. I’d love to know the result.
Dear Cui,
I’m wondering how to deal with these bad channels. Can I use the interpolation method which has been frequently employed in processing EEG data? I mean used the average value of whole channels to replace the bad channels Or just delete data on the bad channels?
I’m looking forward to hearing from you!
Yafeng Pan
@Yafeng Pan
If you can’t recover the signals from various noise removal methods, I personally think deleting the bad channels is better.
Dear Pan,
Have you used the average value of whole channels to replace the bad channels of fNIRS? could you tell me your article name? thank you
wenfeng Wu
Dear Xu Cui,
How/why did you choose the threshold of 0.5 (if if the correlation is > 0.5, then bad channel)? I read your paper but I could not figure out why 0.5 should be the right value, but I am very curious to know! Thank you.
Kind regards,
Carly
Carly,
The threshold 0.5 is arbitrarily chosen based on our observation. There is no theoretical basis. Please feel free to use your own threshold.
Xu
I was wondering if the code you gave is used then should we use the original signal or the filtered and de-headed signal?
I don’t quite understand what you mean.
Hi Xu Cui,
I believe the questions is whether any preprocessing should be performed before calculation of the correlation. For example, should the data be band-pass filtered and then we calculate the correlation?
As a second question, I was wondering if having a longer block would affect the negative correlation bet oxy and deoxy hemoglobin, considering that during the plateau blocks, the anticorrelation decreases. Up to what block length would you expect that the negative correlation assumption holds true?
Kind regards,
Paulo