AFNI program: @auto_tlrc
Output of -help
Overview ~1~
A script for performing special cases of affine(ish) alignment to
standard space. NB: despite its name, the base/reference template
space need not be Talairach specifically.
This program can operate in a couple different modes:
+ (Usage 1) align some anatomical dataset to a standard space template,
+ (Usage 2), _apply_ a transform any dataset by the same TLRC
transform obtained with @auto_tlrc in "Usage 1" mode
-----------------------------------------------------------------------------
Usage 1. ~1~
Have this script transform an anatomical dataset to align with some
standard space template.
Options ~2~
Basic usage is given as:
@auto_tlrc [options] <-base template> <-input anat>
Mandatory parameters:
-base template :Reference anatomical volume.
Usually this volume is in some standard space like
TLRC or MNI space and with afni dataset view of
(+tlrc).
Preferably, this reference volume should have had the
skull removed but that is not mandatory. If you do
not specify a path for the template, the script will
attempt to locate the template AFNI's binaries
directory.
AFNI's distribution contains several templates, or
you can provide a template dset really from
_anywhere_. See "General Notes" below for some links.
-input anat :Original anatomical volume (+orig).
The skull is removed by this script
unless instructed otherwise (-no_ss).
Optional parameters:
-no_ss :Do not strip skull of input data set (because skull
has already been removed or because template still
has the skull).
See the "General Notes" below for a table of when or
when not to use this option.
-warp_orig_vol :Produce a TLRC version of the input volume, rather
than a TLRC version of the skull-stripped input.
This option is useful if you want the skull to be
preserved in the +tlrc output. The default is to
produce the skull-stripped version of the input in
+tlrc space.
-dxyz MM :Cubic voxel size of output DSET in TLRC space.
Default is the resolution of the template. If you
do not want your output voxels to be cubic, then
use the -dx, -dy, -dz options below.
-dx MX :Size of voxel in the x direction (Right-Left).
Default is 1mm.
-dy MY :Size of voxel in the y direction (Anterior-Posterior).
Default is 1mm.
-dz MZ :Size of voxel in the z direction. (Inferior-Superior).
Default is 1mm.
-pad_base MM :Pad the base dset by MM mm in each directions. That
is needed to make sure that datasets requiring wild
rotations do not get cropped. Default is MM = 15.
If your output dataset is clipped, try increasing
MM to 25.000000 or 35.000000.
If that does not help, make sure that the
skull-stripped volume has no clipping. If it does,
then the skull stripping needs to be corrected.
Feel free to report such instances to the script's
authors.
-keep_tmp :Keep temporary files.
-clean :Clean all temp files, likely left from -keep_tmp
option then exit.
-xform XFORM :Transform to use for warping:
Choose from affine_general or shift_rotate_scale
Default is affine_general but the script will
automatically try to use shift_rotate_scale
if the alignment does not converge.
-no_avoid_eyes :An option that gets passed to 3dSkullStrip.
Use it when parts of the frontal lobes get clipped
See 3dSkullStrip -help for more details.
-ncr :3dWarpDrive option -coarserot is now a default.
It will cause no harm, only good shall come of it.
-ncr is there however, should you choose NOT TO
want coarserot used for some reason
-onepass :Turns off -twopass option for 3dWarpDrive. This will
speed up the registration but it might fail if the
datasets are far apart.
-twopass :Opposite of -onepass, default.
-maxite NITER :Maximum number of iterations for 3dWarpDrive.
Note that the script will try to increase the
number of iterations if needed.
When the maximum number of iterations is reached
without meeting the convergence criteria,
the script will double the number of iterations
and try again. If the second pass still fails,
the script will continue unless the user specifies the
-not_OK_maxite option.
The default number of iterations is 50 for first
pass and then doubled to 100 in second pass.
To reset to former default, set maxite to 0
-not_OK_maxite :See -maxite option.
-inweight :Apply -weight INPUT (in 3dWarpDrive).
By default, 3dWarpDrive uses the BASE dataset to
weight the alignment cost. Use this option to
weight via the INPUT dataset, instead.
This might be useful for partial coverage cases.
-rigid_equiv :Also output a the rigid-body version of the
alignment. This would align the brain with
TLRC axis without any distortion. Note that
the resultant .Xrigid volume is NOT in TLRC
space. **Do not use this option if you do not
know what to do with it**
For more information on how the rigid-body
equivalent transformation is obtained, see
cat_matvec -help 's output for the -P option.
-init_xform XFORM0.1D: Apply affine transform in XFORM0.1D before
beginning registration and then include XFORM0.1D
in the final xform.
To verify that XFORM0.1D does what you think
it should be doing, try:
3dWarp -matvec_out2in XFORM0.1D \
-prefix pre.anat anat+orig
and verify that 'pre.anat+orig' is transformed by
XFORM0.1D as you expected it to be.
XFORM0.1D can be obtained in a variety of ways.
One of which involves extracting it from a
transformed volume. For example, say you want to
perform an initial rotation that is equivalent to:
3drotate -matvec_order RotMat.1D \
-prefix struct.r struct+orig
The equivalent XFORM0.1D is obtained with:
cat_matvec 'struct.r+orig::ROTATE_MATVEC_000000' -I \
> XFORM0.1D
See cat_matvec -help for more details on extracting
appropriate affine transforms from dataset headers.
Note: You can also use -init_xform AUTO_CENTER to
automatically run @Align_Centers if the centers are
off by more than 40 mm. AUTO_CENTER_CM would do
the centering based on the center of mass rather
than the center of the volume grids.
You can force centering with -init_xform CENTER or
with -init_xform CENTER_CM regardless of the center
distance between volumes
-no_pre :Delete temporary dataset created by -init_xform
-out_space spacename: Set output to a particular space.
Usually, output space is determined by the space
of the input template and does not need to be set
explicitly here
-3dAllineate :Use 3dAllineate with the lpa+ZZ cost function
instead of 3dWarpDrive
-3dAlcost costfunction :use another cost function (e.g., nmi)
-overwrite :Overwrite existing output.
With this option, 3dSkullstrip will get rerun even
if skull stripped volume is found on disk, unless of
course you use the -no_ss option.
This option has not been fully tested under the myriad
combinations possible. So check closely the first
time you use it, if use it you must
-echo :apply 'set echo' in script (verbose terminal output)
==============================================================================
Usage 2. ~1~
Have this script transform any dataset by the same TLRC transform
obtained with @auto_tlrc in Usage 1 mode.
Note: You can now also use adwarp instead.
Options ~2~
Basic usage is given as:
@auto_tlrc [options] <-apar TLRC_parent> <-input DSET>
Mandatory parameters:
-apar TLRC_parent :An anatomical dataset in tlrc space created
using Usage 1 of @auto_tlrc From the example for
usage 1, TLRC_parent would be: SubjectHighRes+TLRC
-input DSET :Dataset (typically EPI time series or statistical
dataset) to transform to tlrc space per the xform
in TLRC_parent
-dxyz MM :Cubic voxel size of output DSET in TLRC space.
Default is the resolution of the template. If you
do not want your output voxels to be cubic, then
use the -dx, -dy, -dz options below.
-dx MX :Size of voxel in the x direction (Right-Left).
Default is 1mm.
-dy MY :Size of voxel in the y direction (Anterior-Posterior).
Default is 1mm.
-dz MZ :Size of voxel in the z direction. (Inferior-Superior).
Default is 1mm.
Optional parameters:
-pad_input MM :Pad the input DSET by MM mm in each direction.
That is needed to make sure that datasets requiring
wild rotations do not get cropped. Default is MM =
15. If your output dataset is clipped, try
increasing MM to 25.000000 or 35.000000. If that
does not help, report the problem to the script's
authors.
-onewarp :Create follower data (-apar use) with one interpolation
step, instead of two (Now default).
This option reduces blurring of the output data.
-twowarp :Create follower data (-apar use) with two interpolations
step, instead of one.
This option is for backward compatibility.
Common optional parameters:
-rmode MODE :Resampling mode. Choose from:
linear, cubic, NN or quintic .
Default for 'Usage 1' is cubic.
Default for 'Usage 2' is cubic for 3dWarp,
followed by Bk for the 3dresample step.
-prefix prefix :Name of output dataset.
(xxx -> xxx+tlrc, yyy.nii.gz, zzz.nii)
-suffix SUF :Name the output dataset by append SUF to the prefix of
the input data for the output. Default for SUF is
NONE (see below).
NB: You can now set SUF to 'none' or 'NONE' and
enable afni's warp on demand features.
With NIFTI input volumes -suffix defaults to _at
-keep_view :Do not mark output dataset as +tlrc
-base_copy COPY_PREFIX :Copy base (template) dataset into COPY_PREFIX.
You can use ./ for COPY_PREFIX if you want the copy
to have the same name as the template.
-base_list :List the full path of the base dataset
-use_gz :When using '-suffix ..', behave as if you had
provided a prefix with '*.gz' at the end.
Useful if your '-suffix'-specified output will
be NIFTI, and you want it zipped
-verb :Yakiti yak yak
-echo :apply 'set echo' in script (verbose terminal output)
=============================================================================
General Notes ~1~
Re. specifying a template ~2~
Some examples of what template datasetes are distributed in AFNI can
be seen on the atlases page (as underlays):
https://afni.nimh.nih.gov/pub/dist/doc/htmldoc/template_atlas/all_afni_atlases_dist.html
Or by checking the webpage that displays the contents of the (current,
hopefully) distributed templates+atlases:
https://afni.nimh.nih.gov/pub/dist/atlases/afni_atlases_dist/
You can also run this command to see some commonly used ones in the
current code:
whereami_afni -show_templates
We used to display a list of some dsets that could be used, but
several of these became woefully out of date and most were no longer
recommended (e.g., they didn't have good structural details). In the
interests of historical knowledge, we will list them here, with their
info:
TT_N27+tlrc (this one is still distributed and common to use)
Single subject, skull stripped volume (www.loni.ucla.edu,
www.bic.mni.mcgill.ca). This volume is also known as
N27_SurfVol_NoSkull+tlrc elsewhere in AFNI and SUMA land. This
template has a full set of FreeSurfer (surfer.nmr.mgh.harvard.edu)
surface models that can be used in SUMA. For details, see
Talairach-related link: https://afni.nimh.nih.gov/afni/suma
TT_icbm452+tlrc
Average volume of 452 normal brains (www.loni.ucla.edu).
Skull-stripped.
TT_avg152T1+tlrc
Average volume of 152 normal brains (www.bic.mni.mcgill.ca).
Skull-stripped.
TT_EPI+tlrc
EPI template from spm2 (www.fil.ion.ucl.ac.uk/spm/), masked as
TT_avg152T1; TT_avg152 and TT_EPI volume sources are from SPM's
distribution.
These datasets have been slightly modified from their original size
to match the standard TLRC dimensions (Jean Talairach and Pierre
Tournoux Co-Planar Stereotaxic Atlas of the Human Brain Thieme
Medical Publishers, New York, 1988). That was done for internal
consistency in AFNI. You may use the original form of these volumes
if you choose but your TLRC coordinates will not be consistent with
AFNI's TLRC database (San Antonio Talairach Daemon database), for
example.
Re. using -no_ss (or not) ~2~
The -no_ss option is not all that optional. Here is a table of when
you should and should not use -no_ss:
Template Template
WITH skull WITHOUT skull
Dset.
WITH skull -no_ss xxx
WITHOUT skull No Cigar -no_ss
... where:
Template means : Your template of choice
Dset. means : Your anatomical dataset
-no_ss means : Skull stripping should not be attempted on Dset
xxx means : Don't put anything, the script will strip Dset
No Cigar means : Don't try that combination, it makes no sense.
Re. transforms ~2~
The script will output the final transform in a 1D file with the
extension Xat.1D, say THAT_NAME.1D
Call this transform Mt and let Xt and Xo be the 4x1 column vectors
coordinates of the same voxel in standard (t) and original (o)
space, respectively. The transform is such that Xo = Mt Xt
You can use this transform to manually warp a volume in orig
space to the standard space with:
3dWarp -matvec_out2in THAT_NAME.Xat.1D -prefix PPP SOME_VOL+orig.
3drefit -view +tlrc PPP+orig
=============================================================================
Notes for Troubleshooting ~1~
When you're down and troubled and you need a helping hand, for
various kinds of badness, such as if...
1- The brain is horribly distorted (by Jason Stein):
The probable cause is a failure of 3dWarpDrive to converge. In
that case, rerun the script with the option -xform
shift_rotate_scale. That usually takes care of it.
Update: The script now has a mechanism for detecting cases where
convergence is not reached and it will automatically change
-xform to fix the problem. So you should see very few such
cases. If you do, check the skull stripping step for major errors
and if none are found send the authors a copy of the command you
used, the input and base data and they'll look into it.
2- Parts of the frontal cortex are clipped in the output:
That is likely caused by aggressive skull stripping. When that
happens, use the -no_avoid_eyes option.
3- Other parts of the brain are missing:
Examine the skull stripped version of the brain If the source of
the problem is with the stripping, then you'll need to run
3dSkullStrip manually and select the proper options for that
dataset. Once you have a satisfactorily stripped brain, use that
version as input to @auto_tlrc along with the -no_ss option.
4- Skull stripped dataset looks OK, but TLRC output is clipped:
Increase the padding from the default value by little more than
the size of the clipping observed. (see -pad_* options above)
5- The high-res anatomical ends up at a lower resolution:
That is because your template is at a lower resolution. To
preserve (or control) the resolution of your input, run
@auto_tlrc in usage 2 mode and set the resolution of the output
with the -d* options.
6- I want the skulled anatomical, not just the stripped anatomical
in TLRC space:
Use @auto_tlrc in usage 2 mode.
7- I want to warp EPI data directly into TLRC space:
If you have an EPI template in TLRC space you can use it as the
base in @auto_tlrc, usage 1 mode. You can use whatever you want
as a template. Just make sure you are warping apples to oranges,
not apples to bananas for example.
8- Bad alignment still:
Check that the center of your input data set is not too far off
from that of the template. Centers (not origins) of the templates
we have are close to 0, 0, 0. If your input dataset is 100s of mm
off center then the alignment will fail.
The easiest way around this is to add -init_xform AUTO_CENTER to
your command. If that still fails you can try to manually shift
all of the input data in your session by an equal amount to get
the centers closer to zero.
For example, say the center of your subject's volumes is around
100, 100, 100. To shift the centers close to 0, 0, 0 do:
3drefit -dxorigin -100 -dyorigin -100 -dzorigin -100 Data+orig
Then use @auto_tlrc on the shifted datasets. Take care not to
shift datasets from the same session by differing amounts as they
will no longer be in alignment.
=============================================================================
Examples ~1~
1) Example of Usage 1 (the output is named SubjectHighRes+tlrc, by
default; see -suffix for more info):
@auto_tlrc -base TT_N27+tlrc. -input SubjectHighRes+orig.
2) Example of Usage 2 (the output is named Subject_EPI_at+TLRC, by
default):
@auto_tlrc -apar SubjectHighRes+tlrc. \
-input Subject_EPI+orig. \
-dxyz 3
=============================================================================
Written by Ziad S. Saad (saadz@mail.nih.gov)
SSCC/NIMH/NIH/DHHS
=============================================================================
Global Help Options:
--------------------
-h_web: Open webpage with help for this program
-hweb: Same as -h_web
-h_view: Open -help output in a GUI editor
-hview: Same as -hview
-all_opts: List all of the options for this script
-h_find WORD: Search for lines containing WORD in -help
output. Seach is approximate.
This page auto-generated on
Tue Aug 25 06:17:22 PM EDT 2026