Forum

Notifications
Clear all

Using GLM with tCCA in Homer3

5 Posts
2 Users
0 Likes
65 Views
Posts: 4
Topic starter
(@jeevan)
Active Member
Joined: 3 weeks ago

Hi,

I am trying to analyze fNIRS signal from walking activity with a lot of head movement (Tandem walk while keeping eyes closed). After reading the available options, I found the following paper and this video that suggests using GLM and short channels with tCCA for dealing with similar type of noise. 

"Improved physiological noise regression in fNIRS: A multimodal extension of the General Linear Model using temporally embedded Canonical Correlation Analysis [von Lühmann, 2020]"

However, I could not understand how exactly the hmrR_GLM and hmrR_tccA functions should be applied in Homer3. Should I apply these two functions together with other functions shown below that I used for in normal cases (the ones without significant head movement)? 

hmrR_Intensity2OD
hmrR_MotionArtifactByChannel
hmrR_MotionCorrectWavelet
hmrR_MotionCorrectSplineSG
hmrR_StimRejection
hmrR_BandpassFilt
hmrR_BandpassFilt
hmrR_OD2Conc dc
hmrR_BlockAvg,

 

If not should I only include hmrR_GLM and hmrR_tccA in my processing stream?

Also, any direction of what I kind of output I am supposed to get after applying hmrR_GLM and hmrR_tccA would be really helpful. 

Best regards

Jeevan

4 Replies
Meryem Yücel
Posts: 211
(@mayucel)
Joined: 4 years ago

Hi Jeevan,

 

Please check out "docu.pdf" at your homer3 directory (\Homer3\FuncRegistry\UserFunctions\tcca_glm).

Hope this helps.

 

Meryem

Reply
Posts: 4
Topic starter
(@jeevan)
Active Member
Joined: 3 weeks ago

Hi Meryem,

Thank you for your response. The pdf you pointed provided me a great start. I have a few further questions, and it would be highly appriciated if you could let me know your thoughts on those. 

1.I am including 'hmrR_PruneChannels()' at the begging of the processing stream as instructed in the pdf. However, it removes all the short channels (8). Does it mean all of those short channels are bad for sure? Or is there a possibility that I can play with the filter values and let some of the short channels in? The current filter values are shown in the attached image. 

2. If I remove 'hmrR_PruneChannels()' , I can run the code, but then there is an another error as shown in the image. I had a look at the 'hmrR_tCCA' function. The reson is that my accelerometer data is not identified (I visually inspected, and the accelerometer data is there in the .snirf file). It seems like AUX at line 164, marked in image, get a null value. When looking at the GetAuxDataMatrix(), it needs two inputs as shown in the image bottom right side. I am not sure what to do next!

3. In the pdf you mentioned, it says 'If you want to capture (and regress) slow effects of movement on fNIRS nuisance signals, use resting state data that contains such segments.'. Does it mean that the resting state should be a representative sample of the type of noise we want to remove? (ex: I want to remove any effects due to head movement, so should I have head movements in the resting data?) Otherwise, does resting data means just sitting and completely resting kind of data?

I am using MATLAB R2022b with Homer3 v1.80.2.

Best regards

Jeevan

 

Reply
Posts: 4
Topic starter
(@jeevan)
Active Member
Joined: 3 weeks ago

I just had a realization that the reason behind my second issue might be the selection of 'tCCAaux_inx'. I am using the values shown in the image below. I shifted the '1' to all other positions, but still the same error (system can not find the accelerometer). Is there a way that I can find the exact index of my accelerometer and then put the right input in tCCAaux_inx? 

Reply
1 Reply
(@jeevan)
Joined: 3 weeks ago

Active Member
Posts: 4

Hi @mayucel,

Please let me know if you need further details to answer my questions. I couldn't still figure out the above issues.

Really appriciate if you could provide some directions. 

Best regards

Jeevan

Reply
Share:
en_USEnglish