Physiological Data in FMRIPREP

Hey all:

Possibly a weird question. I have seen physiological data included in studies on and was going to include both respiratory and cardiac data in my BIDS file structure.
I have two questions:

  1. Is physiological data used at any point in FMRIPREP? I didn’t see any mention of it in the original paper and do not recall seeing it in the supplementary material.
  2. If physiological data is or can be used in the pipeline does anything need to be done to it before including it in the .tsv file as specified in the BIDS specification PDF? When we get raw RESP data off our GE Healthcare Discovery MR750 3T it varies from values 1500-3500 and our PPG data goes from -2000-2000. The data I have seen on openneuro seems to be z-scored but we also have RESP values of 0 for one subject whereas the others do not have 0-values. So I guess I’m just not sure if we just include the raw data that comes off the scanner or if it needs to be ‘preprocessed’ before inclusion. Actually anyone that can provide guidelines regarding how to treat physiological data at all would be my actual hero.

Thanks you guys to literally any help or insight as this is my last hurdle before running FMRIPREP officially.

Hi Lauren,

No, fMRIPrep doesn’t make any use of physiological data at this point.

As a rule, BIDS encourages data to be as raw-off-the-scanner as possible, and not preprocessed in any way (unless the truly raw data is no longer available for whatever reason). If you need to do any preprocessing to bring it into conformance with BIDS (such as DICOM-NIFTI conversion, for images), it’s recommended to put the scripts that performed that in <bids>/code, and include the absolutely raw data in <bids>/sourcedata.
Once it’s preprocessed, you now have “derivatives”, and there’s a spec in progress for that.


1 Like

I have just finished with including physio data in my BIDS dataset!

In our case it did not come from the scanner, but from an additional processing unit by CED company (Spike2 system). It took a bit of time to figure out how to extract the data in Python (using neo package, version 0.5.2). Breathing data came in analog form, while cardiac (event when pulse was detected) and trigger data came as timestamps.

I found explanation of StartTime variable in json sidecar file a bit confusing - I interpreted it as time in seconds for the first observation (i.e. first row) in the physio data before the first trigger came through (hence negative value usually as we start recording before the scanner starts).

This is just what I needed, Chris. I really appreciate you taking the time to respond. Thanks a lot.


This is interesting - thank you for the insight. Ours coming off the scanner is in .dat files (I think) so easy to extract/open in any text/spreadsheet file but for whatever bizarre reason no one at where we scan (neither the techs or a physicist we asked) knew WHAT exactly the y-axis was or even the sampling rate of each measure (the latter which I found in a random document online) so it’s been a frustrating slog.
A lot of the openneuro physiological data has triggers and the data is associated with that. I’m not sure if this is true in my case but the lack of documentation makes it impossible to tell. I may email one more person at my institution to ask about triggers.
Thanks for the response!


This is almost correct - the reference point is the imaging file not the trigger. From the spec:

Start time should be expressed in seconds in relation to the time of start of acquisition of the first volume in the corresponding imaging file (negative values are allowed)

@ChrisGorgolewski hm, I think in my dataset these should be the same, first trigger should be the onset time when the first volume is being acquired. I thought this is generally the case?

This would matter in cases when you don’t manage to record the first triggers in the run, no? Or there are volumes at the beginning that are not accompanied by triggers?

@effigies Hi Chris, I see this comment from you from a couple of years ago:
“No, fMRIPrep doesn’t make any use of physiological data at this point”
and I want to check whether the current version of fMRIPrep does make use of physio data. I’m asking because I’m finding physio to BIDS conversions a little tricky at this point and want to postpone that to after running fMRIPrep. Thanks for the help!

Still true! Feel free to delay your physio conversions and go ahead with fMRIPrep.

1 Like

Hi @sajjad,

You might want to check bidsphysio, a tool we developed to do the conversion to BIDS of physio data.
If your physio data format is not supported, I would be happy to take a look at it.

1 Like