Dear Afni People,
I’m trying to correct for physiological noise (card and resp) with 3dretroicor.
Data were acquired with a Siemens 3 Tesla whole-body MRI and I have the “.puls” and “.resp” (50Hz for both) files for all the runs.
In these file I have the raw physio recordings + LogStartMDHTime and LogStartMPCUTime (among differents other parameters).
And on the other side in the DICOM header of my fMRI files I have the ‘AcquisitionTime’.
I would like ot check if my method is correct.
For obtaining 1D files for 3dretroicor is it enough to :
chop off unneccessary values in physio files by aligning the timings and removing evertyhing before the beginning of the scan and everything after the duration of the scan. (I also removed the 5000 and 5003 values added by Siemens)
save that in 1D (column) files
and then do :
3dretroicor -prefix [Name of output] -card [1D cardiac data] -resp [1D respiratory file] dataset?
%% other accompanying questions :
I ofen saw in different forums on internet that we have to take the LogStartMDHTime to make the alignement. But in the PHLEM Matlab toolbox it is written that LogStartMPCUTime is the “ScanStartTime”. So I’m a bit confused here. Which on of these timings we should take?
I added -cardphase and -respphase to the 3dretroicor command. But I have no idea of what I should see if I plot these cardphase.1D and respphase.1D. And I must say that what i saw with my first trial is maybe not very satisfactory. Could you help me here also?
Thanks a lot for your attention and your help.
Have you tried the RetroTS.m matlab code instead or the new and improved RetroTS.py port recently contributed by Josh Zosky? Both available in AFNI.
Thanks for the reply.
If I use RetroTS.m :
I’m doing :
Opt.Respfile = ‘physio_resp_r1.1D’ %my raw resp file
Opt.Cardfile = ‘physio_card_r1.1D’ %my raw puls file
Opt.VolTR = 2.0
Opt.Nslices = 37
Opt.PhysFS = 50
Opt.SliceOrder = ‘alt+z’
So I’m using here raw physio files as input. I just chopped them to have the correct length and have it aligned with the timings of my TRs. I just also removed the 5000 and 5003 values added by siemens. But besides that no processing at all.
The output of RetroTS.m is then one file named “oba.slibase.1D”.
I had a look inside : we have a matrix of 481 columns (37 slices x 13 parameters [s0.RVT0 to s0.Card3]) by 103 lines (corresponding to the 103 TRs of the run).
So is it this file that I have to use with 3dretroicor to remove physio noise?
could you give me an example of the way I should use the command?
And also it would be nice if it’s possible to have just an idea of what is this transformation from raw physio files (puls and resp) to this oba.slibase.1D.
Thanks you so much for your help!
These cardiac and respiratory regressors are applied slicewise. See examples 5a and 5b in the help for afni_proc.py for details on how to use these regressors and what they are.
Sorry I took a long time before being back to you.
Thanks a lot for your advice. I was indeed able to follow the examples 5a and 5b of the afni_proc.py. I have now a script that works fine and everything seems to be well taken into account.
I used RetroTS.m.
But I’m remaining with my first question :
To use RetroTS.m we have first to chop off unneccessary values in physio files by aligning the timings and removing evertyhing before the beginning of the scan and everything after the duration of the scan. (I also removed the 5000 and 5003 values added by Siemens)
To do this I used the “LogStartMDHTime” (an not the LogStartMPCUTime) that can be found also in these raw physio files. And I aligned this value with the “AcquisitionTime” that can be found in the DICOM header of my fMRI files.
Is it the correct method?
Thanks a lot for your help.
I’m sorry I don’t enough about the LogSmart… times to be able to help. Perhaps someone else may know more about that.