Help with fNIRS analysis

Hello,

I’m currently working on processing test data I collected for a project. I initially analyzed it using Homer3, and the results looked as expected — I observed a nice increase in HbO and a corresponding decrease in HbR across all three conditions.

Since I’m particularly interested in source localization, I tried analyzing the same data using NIRSTORM. However, when processing the data with NIRSTORM, the HRF I obtain looks very strange across all conditions — it’s either flat (zero) or shows oscillatory activity that doesn’t make sense. I suspect I might be doing something wrong and wanted to check if my processing steps are appropriate.

Here’s what I did:

  • Data acquired using Brite Connect from Artinis (.snirf file)
  • Imported into NIRSTORM
  • Removed bad channels using SCI
  • Exported to delta OD
  • Applied motion correction (TDDR), band-pass filtering (0.01–0.1 Hz), and superficial signal correction (SSC)
  • Converted OD to delta HbO/HbR
  • Imported trials (-5000 to 10000 ms, DC correction, change my events to single events)

For source localization, I also tried importing the corrected OD trials and running wMNE, but the results were again odd — I see a decrease in HbO, whereas an increase (as seen in Homer3) would make more sense given my paradigm.

I understand that the pipelines between Homer3 and NIRSTORM are quite different, but I was expecting a similar general trend (i.e., HbO increase). Do you see anything in my pipeline that could be causing this discrepancy?

Thank you for your time and help!

Edit: I've uploaded the raw data here if that helps: Data_fnirs_test - Google Drive

Best,
Maxime

hi.

i will have a look this weekend. Can you share the pipeline you are using with Homer and the result you see on this dataset ?

Also, can you share the exact parameter you used for bad channel, band-pass filtering and SSC.

For the trials -5000 to 10000 ms might be a little too short (10s after the stimuli). make sure you use the same duration in nirstorm and homer.

i agree that we should see similar trend between the two pipelines.

Thanks
Edouard

1 Like

Hi Edouard,

Thank you for your reply and your help!

I've updated the Google Drive folder to include the details of my results. I realized that in Homer3, I'm actually using a slightly different approach. I’m relying on the GLM pipeline, as it’s currently the only way to include SSC regression in the analysis. I've attached screenshots of the results for reference.

In Brainstorm, I haven’t yet been able to get the GLM to work properly, so I have been relying on the block average. I’ve tried several approaches, but none of them seem to give results equivalent to those I see in Homer3. I'm also finding it a bit unclear how to apply the GLM at the source level, so that's why I am relying on the block average in NIRSTORM for now (please note that in the pipeline that I uploaded on the Drive does not include the source analysis, I just wanted to show you the HRF at the sensor level). If you happen to have any tutorials or guidance on using the GLM in Brainstorm (especially for source analysis), that would be extremely helpful.

I’ve also included my NIRSTORM processing pipeline and results in the shared folder.

Thank you so much for the help!

Best,
Maxime