Does "-ONELINE" also apply "-I" in cat_matvec ?

Hi AFNI gurus,
I was trying multi-echo fMRI analysis in the native space (so no “tlrc”) without anatomy data (so no “align”). In this case, the “volreg” step is as simple as (i) estimating head motions with 3dvolreg on the “$fave_echo”, and (ii) apply the transformation matrix to other echoes with 3dAllineate.
In the help doc of 3dvolreg, it says that the transformation matrix needs to be inversed like “cat_matvec fred.aff12.1D -I”. However, while implementing it with, I don’t see “cat_matvec -I” but “cat_matvec -ONELINE” instead; and 3dAllineate directly uses this “oneline” version of the transformation matrix.

3dvolreg -verbose -zpad 1 -base vr_base_min_outlier+orig                \
             -1Dfile dfile.r$run.1D -prefix rm.epi.volreg.r$run.e$fave_echo \
             -cubic                                                         \
             -1Dmatrix_save mat.r$run.vr.aff12.1D                           \

    cat_matvec -ONELINE                                                     \
               mat.r$run.vr.aff12.1D > mat.r$run.warp.aff12.1D

    foreach eind ( $echo_list )

    3dAllineate                                                          \
                   -input pb01.$subj.r$run.e$eind.tshift+orig               \
                   -1Dmatrix_apply mat.r$run.warp.aff12.1D                  \
                   -prefix pb02.$subj.r$run.e$eind.volreg

So my question here is whether the option of “-I” equals the option of “-ONELINE” in this particular case? While executing the 3dAllineate, it outputs a lot of warnings of “volume 0…1*+ WARNING: Re-using final row of -1D*_apply” for each of the TR volumes. Should I care about these warnings?

Hi, Zhihao-

When you ran with the “align” block before, did you include this opt:

-volreg_align_e2a                                        \

… which is probably not there now?


Hi Paul,
I don’t use the option of “-volreg_align_e2a” because there is not anatomical data involved here. My options are as simple as this:

-blocks tshift volreg mask combine \
-dsets_me_run ./data/rest_echo-?.nii.gz \
-echo_times 15 37.14 59.28 \
-reg_echo 2 \
-volreg_align_to MIN_OUTLIER \
-combine_method tedana \


No, -ONELINE does not imply -I.

The “3dvolreg -1Dmatrix_save” output is already in the direction needed, and does not need to be inverted in that case. See a more complete proc script for an additional example, such as AFNI_data6/FT_analysis/s15.proc.FT.uber.

The cat_matvec command there as well does not invert the 3dvolreg matrix (that last mat.r$run.vr.aff12.1D input), while it does invert the other ones.

The “3dvolreg -help” output does not say it needs -I, it says that if you do want to invert it, use “cat_matvec -I”.

Does that seem reasonable?

  • rick