Giter VIP home page Giter VIP logo

Comments (3)

mrikasper avatar mrikasper commented on June 18, 2024

Dear Hrvoje,

Hello,
I have a quick additional question. I'm trying to verify whether physio regressors produce sensible effects with an F-contrast, per suggestion in your paper. I'm not using the functions provided in the toolbox as I'm using SPM from Nipype, so I would like to know a bit more details about it..

I see...so there is no way of calling Matlab functions from within Nipype?

What is the GLM that you would run - do you include only the physio regressors in the 1st level GLM, and specify F contrast over all of the RETROICOR, HRV, RVT variables, perhaps also separate F over cardiac RETROICOR, respiratory, interactions etc? Or is it OK to include these contrasts in a GLM together with events and other nuisance regressors (motion etc)?

For the final GLM analysis, I do the latter, i.e., putting both physio, other confounds and task regressors in a common GLM. The main reason is that you want to be conservative about your task effects, so any variance in the time series that could be equally well explained by physiological noise or by task effects will not be uniquely assigned to either. Therefore, if there is some canonical correlation between task and physiology, F-contrasts on only one of the two model parts will not show strong effects, since the F-contrast only probes for uniquely explained variance.

Likewise, if you want to scrutinize differential effects of RETROICOR vs HRV or cardiac vs respiratory physiology, create the F-contrasts as an identity matrix that only includes the respective columns, but do specify the full model. If you just want to know whether physiological noise correction worked overall, use an F-contrast over all nuisance columns.

I actually already tried the second approach, and I get results that do not look like those reported in your paper - I get very little activation in the midbrain and around ventricles, so now I'm trying to figure out whether the GLM is wrong or I have a bug somewhere in my code producing the physio regressors.

I see. If you just want to do a sanity check, specifying a GLM just with nuisance regressors (I would always include motion as well, though) should be fine. If you see strong effects in the F-contrasts spanning PhysIO-generated regressor columns then, this might mean that your task is somehow correlated to the physiology. I have seen a strong effect once in this domain, when subjects were anticipating pain and their heart rate increased before outcome presentation. However, It is not my first guess for physiological noise correction failure. I think it is much more likely that

  1. the timing of phys recordings and scan acquisition is off (shifted)
  2. the preprocessing of the physiological data did not work properly (how do the PhysIO diagnostics figures for heart rate/breathing look?)
  3. The sorting of physiological recording to scan files got mixed up

Finally, is there a way to bring those F contrast to the group level, in a 2nd level GLM?

  • There is no simple way, such as a group level F-contrast, that I am aware of. That's why we resorted to the somewhat awkward subject count and tSNR increase measures in our paper, which are more of an engineering than statistical perspective.
  • Classical summary statistics approaches, as for t-tests, are not possible, because F-values are all positive and not normally distributed. For the same reasons, simple non-parametric permutation test won't work.
  • On the other hand, you do not really need group level statistics in order to find out whether the method worked. If you are indeed interested in group differences of physiological noise expression, then you could resort to voxel-wise model comparison methods, e.g. BIC, testing whether in each individual voxel physiological noise modeling explains the variance better in one group than in another.
  • I think the MACS toolbox by Joram Soch has a lot of GLM-specific features for such purposes.

I hope this helps...and happy new year,
Lars

from tapas.

hstojic avatar hstojic commented on June 18, 2024

Hi Lars,

Hello,
I have a quick additional question. I'm trying to verify whether physio regressors produce sensible effects with an F-contrast, per suggestion in your paper. I'm not using the functions provided in the toolbox as I'm using SPM from Nipype, so I would like to know a bit more details about it..

I see...so there is no way of calling Matlab functions from within Nipype?

There is, but I have to correctly prepare the inputs etc, that why all the questions about the details.

Thanks for all the comments. I'll check if I made some error in processing physio data and when using your toolbox (that's why I'm also anxious to see your BIDS support update).

Just the other day I ran a GLM with F-contrasts on individual components of physiological regressors - RETROICOR cardiac, repiratory etc. It seems like the activation we see in F-contrast across all physio regressors is mostly driven by HRV and to some extent RVT. Do you know whether these two regressors specifically are more prone to be correlated with task activity?

Another thought we had was that aCompCor regressors that we get from fmriprep are highly correlated with physio regressors, but they aren't - physio activation maps do change a bit if we run a GLM without aCompCor, but not much.

And Happy new year as well!

Hrvoje

from tapas.

mrikasper avatar mrikasper commented on June 18, 2024

Dear Hrvoje,

I see...so there is no way of calling Matlab functions from within Nipype?
There is, but I have to correctly prepare the inputs etc, that why all the questions about the details.

I see. Would be curious to see what it looks like once you have a final version of that code.

Thanks for all the comments. I'll check if I made some error in processing physio data and when using your toolbox (that's why I'm also anxious to see your BIDS support update).

I have an alpha version ready and will run some more checks before I merge it into the TAPAS development branch. But I think you probably did the right thing with your custom text files as well. I rather fear that what we see with the detected cardiac pulse events by spike2 might be a general problem (the ones I mention in that comment). Do you see a lot of missed/additional cardiac events in the diagnostic plots for the other subjects?

Just the other day I ran a GLM with F-contrasts on individual components of physiological regressors - RETROICOR cardiac, repiratory etc. It seems like the activation we see in F-contrast across all physio regressors is mostly driven by HRV and to some extent RVT. Do you know whether these two regressors specifically are more prone to be correlated with task activity?

HRV was definitely picking up a lot of task-related variance in the study I mentioned. This makes sense, since the heart rate typically changes under arousal etc., i.e., related to the task. RVT might, if the breathing pattern changes, e.g., when anticipating a stimulus ("hold your breath!"). Maybe you can run a simple correlation of the RVT time series PhysIO produces (physio.ons_secs.rvt, see also this issue for details on other computed respiratory traces) with your paradigm timing?

Another thought we had was that aCompCor regressors that we get from fmriprep are highly correlated with physio regressors, but they aren't - physio activation maps do change a bit if we run a GLM without aCompCor, but not much.

This is also my experience. The regressors you extract from, e.g., CSF, typically explain variance in the ventricles, but not so much in vicinity of the vessels, in contrast to RETROICOR.

All the best,
Lars

from tapas.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.