I have a question including different durations for each block in an fmri run using 3dDeconvolve (or even afni_proc.py)
The run has 10 trials. 8 trials are 15 seconds in duration.
For this particular run, the majority of the blocks are of the same duration, 15 seconds. For 2 trials, there was a machine malfunction where the stimuli was too short,12 seconds,and too long, 17 seconds. We want to include those 2 trials and model them with the correct duration. Using BLOCK, we cannot do this since it has a fixed duration for each block in a run.
Looking at the help for 3dDeconvolve, would the -stim_times_FSL option work in this scenario. If so, is there an option to incorporate this into afni_proc.py?
What you would probably like to do in such a situation
is treat the 15 second events like BLOCK(15), the 12
second events like BLOCK(12) and the 17 second events
as BLOCK(17), and also have them scale appropriately,
so that the 12 second peak would not be as high as the
15 second one, say.
This is duration modulation in 3dDeconvolve. Attach
the durations to the stimulus onset times and use
dmUBLOCK as the basis function. Plot the resulting
regressor to see that it is what you expect.
To attach a duration of 12s to an onset time of 17.3,
for example, the timing file should contain:
To apply such a timing file, use something like:
-stim_times_AM1 pizza_times.txt dmBLOCK
where pizza_times.txt contains those onset:duration
Does this seem reasonable?
Thanks for the response. Is there any advantage to letting the amplitude vary vs. using the same peak amplitude of 1 with dmBLOCK(1) or dmUBLOCK(1)?
Also, Rick, I’m including this in a setup for afni_proc.py. I’m a little confused on how to set this up looking at Example 7 for afni_proc.py.
Say if I have “3 types of pizza”. Would it look something like this?
-regress_stim_times pepp.1D cheese.1D bbq.1D
-regress_stim_types AM1 AM1 AM1
-regress_stim_labels Pepperoni Cheese BBQ \
Each 1D file would be of the format onset:duration onset:duration onset:duration.
Where would I include dmBLOCK or dmBLOCK(1)?
I just wanted to follow-up regarding this question:
Sorry for not even getting to your bump…
Anyway, I do not advise using dmBLOCK(1) or
dmUBLOCK(1). Unless all durations have saturated
(are at least 15s long), those do not make too
much sense to me. Using dmUBLOCK seems like a
nice way to go.
You can pass that via: -regress_basis dmUBLOCK .
Thanks for the feedback Rick.
I have another question. Does duration modulation only pertain to BLOCK?
What about if I"m using the TENT model? How would that work.
That is right, duration modulation is only available
via dmBLOCK at this point. It probably would not
apply to TENT in any case.