Duration Modulation with Consistent Durations- Any problems?

Hello! I want to do a check on some methods in my individual level analyses. I have several stimuli, some of which require duration modulation because duration varies per trial, and some in which it is constant. Is it problematic to use dmBLOCK for all stimuli regardless of if duration varies? For example, would this cause any errors I'm not seeing in output? Or, would this hurt my analyses in some way or does it not really make a difference? Thank you!!! Code pasted below as well as what a timing file looks like.

AFNI version info (afni -ver): Precompiled binary linux_openmp_64: Jun 23 2023 (Version AFNI_23.1.09 'Publius Helvius Pertinax')

	-regress_stim_times	   																		\
			    $stimdurmoddir/Mean_anticipation.1D												\
			    $stimdurmoddir/Mean_feedback.1D													\
			    $stimdurmoddir/Mean_response.1D													\
			    $stimdurmoddir/Nice_anticipation.1D												\
			    $stimdurmoddir/Nice_feedback.1D													\
			    $stimdurmoddir/Nice_response.1D													\
			    $stimdurmoddir/Unp_anticipation.1D												\
			    $stimdurmoddir/UnpMean_feedback.1D												\
			    $stimdurmoddir/UnpMean_response.1D												\
			    $stimdurmoddir/UnpNice_feedback.1D												\
			    $stimdurmoddir/UnpNice_response.1D												\
	-regress_stim_labels																		\
				Ant.Mean																		\
			    FB.Mean																			\
			    Resp.Mean																		\
			    Ant.Nice																		\
			    FB.Nice																			\
			    Resp.Nice																		\
			    Ant.Unp																			\
			    FB.UnpMean																		\
			    Resp.UnpMean																	\
			    FB.UnpNice																		\
			    Resp.UnpNice																	\
	-regress_stim_types 	   																	\
								'AM1'															\
	-regress_basis_multi 																		\
							'dmBLOCK(0)'														\

20.014:3.017 33.597:3.017 82.364:3.017 137.197:3.017 150.264:3.016 185.964:3.016 235.747:3.017 248.314:3.016 
20.048:3.017 33.615:3.016 44.681:3.017 93.948:3.016 150.298:3.016 172.431:3.017 248.331:3.017 270.464:3.017 
7.482:3.017 69.315:3.017 82.382:3.017 150.282:3.017 185.982:3.016 222.682:3.016 248.315:3.017 270.448:3.017 

For the sake of simplification and consistency, it's recommended to use dmUBLOCK instead of dmBLOCK when dealing with stimuli of varying durations. See more details in this comprehensive discussion.


Thank you so much! That is incredibly helpful- sorry if I’m misunderstanding but if I have a stimulus that has a fixed duration (e.g., is 3sec every trial) is it problematic to use dmUBLOCK or dmBLOCK and have onset:duration in the timing file? Is there a meaningful difference between that and using BLOCK(3) with only onset in the timing file?

Thank you!

I have a stimulus that has a fixed duration (e.g., is 3sec every trial)

In that case, don't use dmBLOCK . Instead, opt for BLOCK(3,1) . If it applies to your situation, consider a hemodynamic response estimation approach as detailed in this discussion.


Note that the comparison between dmBLOCK, dmUBLOCK and BLOCK should all be in the scaling. The choice would not change the group results for a single condition except in that scaling (it would not affect the significance).

However differential scaling between classes that you then compare would be important to pay attention to. If you have an event class of constant 3s duration, it would indeed make sense to use dmUBLOCK (along with the rest of the classes) rather than BLOCK(3,1) if you wanted to directly compare the pairs of classes. It would make the scaling consistent, allowing you to make a direct contrast between pairs of classes.

While the stats for each might be the same, dmUBLOCK would essentially scale that beta to be larger than that from BLOCK(3,1), which would make a contrast questionable.

I suggest using a consistent dmUBLOCK for all of them.

  • rick

Thank you so much! I brought this back to the lab and we'll discuss. I'll let you know if we have any further questions!

The issues at hand involve some subtleties. To shed light on these matters, it would be greatly beneficial if you could share the following details:

  1. The specifics of your experimental design.
  2. The rationale behind the varying trial durations.
  3. The particular effects of interest in your study.


Hi all,

Just had a discussion with our lab. We're going to try running both ways and compare and will send you along results!

  1. we have an event-related design with three events/epochs of interest (anticipation, feedback, and response in which a behavioral response (Aggression) is given). There are also three "levels" between trials - so a trial can be a "Mean" a "Nice" or an "Unpredictable" trial.

  2. it's not actually varying trial durations in this instance (other than very minuscule differences like 2.93 vs 2.94), but the three events have different durations.

  3. I'm not interested in comparing events in contrasts, but in contrasting levels within each event. So for anticipation Mean - Nice, or Feedback Nice - Unpredictable.

Hope that helps!

Also, the durations of the events are as follows

Anticipation: 3 seconds
Feedback: 2 seconds
Response: 3 seconds

To avoid biased estimation for the contrasts across levels, it's crucial to properly specify the anchoring point for each level when using dmUBLOCK(-m), where m represents the center value, such as the individual- or population-level mean. For example, you may consider dmUBLOCK(-2) for the anticipation level.

On the other hand, the fluctuations across trials within each level are considerably smaller compared to the temporal resolution of the data in your case. This means that adopting BLOCK(m,1) might not affect much the practical outcomes. Keep us informed about the results with different model specifications.


Thank you so much! We will send along once we have those results.