Usage:
@SUMA_AlignToExperiment \
<-exp_anat Experiment_Anatomy> <-surf_anat Surface_Anatomy> \
[dxyz] [-wd] [-prefix PREFIX] \
[-EA_clip_below CLP] [-align_centers] [-ok_change_view] \
[-strip_skull WHICH]
Creates a version of Surface Anatomy that is registered to Experiment
Anatomy.
Mandatory parameters:
<-exp_anat Experiment_Anatomy>
Name of high resolution anatomical data set in register with
experimental data.
<-surf_anat Surface_Anatomy>
Path and name of high resolution antomical data set used to
create the surface.
NOTE: In the old usage, there were no -exp_anat and -surf_anat flags
and the two volumes had to appear first on the command line and in
the proper order.
Optional parameters:
[-dxyz DXYZ]: This optional parameter indicates that the anatomical
volumes must be downsampled to dxyz mm voxel
resolution before registration. That is only necessary
if 3dvolreg runs out of memory. You MUST have
3dvolreg that comes with afni distributions newer than
version 2.45l. It contains an option for reducing
memory usage and thus allow the registration of large
data sets.
[-out_dxyz DXYZ]: Output the final aligned volume at a cubic
voxelsize of DXYZmm. The default is based on the grid
of ExpVol.
[-wd]: Use 3dWarpDrive's general affine transform (12 param)
instead of 3dvolreg's 6 parameters. If the anatomical
coverage differs markedly between 'Experiment Anatomy'
and 'Surface Anatomy', you might need to use
-EA_clip_below option or you could end up with a very
distorted brain. The default now is to use -coarserot
option with 3dWarpDrive, this should make the program
more robust. If you want to try running without it the
add -ncr with -wd I would be interested in examining
cases where -wd option failed to produce a good
alignment.
[-al]: Use 3dAllineate to do the 12 parameter alignment. Cost
function is 'lpa'.
[-al_opt 'Options for 3dAllineate']: Specify set of options between
quotes to pass to 3dAllineate.
[-ok_change_view]: Be quiet when view of registered volume is
changed to match that of the Experiment_Anatomy, even
when rigid body registration is used.
[-strip_skull WHICH]: Use 3dSkullStrip to remove non-brain tissue
and potentially improve the alignment. WHICH can be
one of 'exp_anat', 'surf_anat', 'both', or 'neither'
(default). In the first case, the skull is removed
from Experiment_Anatomy dataset, in the second it is
removed from the surf_anat dataset. With 'both' the
skull is removed from Experiment_Anatomy and
Surface_Anatomy.
[-skull_strip_opt 'Options For 3dSkullStrip']: Pass the options
between quotes to 3dSkullStrip.
[-align_centers]: Adds an additional transformation to align the
volume centers. This is a good option to use when
volumes are severely out of alignment.
[-init_xform XFORM0.1D]: Apply affine transform in XFORM0.1D to
Surface_Anatomy before beginning registration. After
convergence, combine XFORM.1D and the the registration
matrix to create the output volume To verify that
XFORM0.1D does what you think it should be doing, try:
3dWarp -matvec_out2in XFORM0.1D \
-prefix pre.SurfVol SurfVol+orig
and verify that 'pre.SurfVol+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.
See also Example 4 below.
[-EA_clip_below CLP]: Set slices below CLPmm in 'Experiment
Anatomy' to zero. Use this if the coverage of
'Experiment Anatomy' dataset extends far below the
data in 'Surface Anatomy' dataset. To get the value
of CLP, use AFNI to locate the slice below which you
want to clip and set CLP to the z coordinate from
AFNI's top left corner. Coordinate must be in RAI,
DICOM.
[-prefix PREFIX]: Use PREFIX for the output volume. Default is the
prefix
[-surf_anat_followers Fdset1 Fdset2 ...]: Apply the same alignment
transform to datasets Fdset1, Fdset2, etc. This must
be the last option on the command line. All
parameters following it are considered datasets. You
can transform other follower dsets manually by
executing:
3dAllineate -master Experiment_Anatomy \
-1Dmatrix_apply Surface_Anatomy_Alnd_Exp.A2E.1D \
-input Fdset \
-prefix Fdset_Alnd_Exp+orig \
-final NN
[-followers_interp KERNEL]: Set the interpolation mode for the
follower datasets. Default is NN, which is appropriate
for ROI datasets. Allowed KERNEL values are: NN,
linear, cubic, or quintic
Note: For atlas datasets, the KERNEL is forced to NN
regardless of what you set here.
of the 'Surface Anatomy' suffixed by _Alnd_Exp.
[-atlas_followers]: Automatically set the followers to be atlases
in the directory of -surf_anat. This way all the
parcellations will get aligned to the experiment.
[-echo]: Echo all commands to terminal for debugging
[-keep_tmp]: Keep temporary files for debugging. Note that you
should delete temporary files before rerunning the
script.
[-overwrite_resp RESP]: Answer 'overwrite' questions automatically.
RESP (response) should be one of O/S/Q/A:
O : overwrite previous result
S : skip this step (applying previous result)
Q : quit the script
A : pause script and ask at each occurrence
NOTE: You must run the script from the directory where Experiment
Anatomy resides.
Example 1: For datasets with no relative distortion and comparable
coverage. Using 6 param. rigid body transform.
@SUMA_AlignToExperiment \
-exp_anat DemoSubj_spgrsa+orig. \
-surf_anat ../FreeSurfer/SUMA/DemoSubj_SurfVol+orig.
Example 2: For datasets with some distortion and different coverage.
Using 12 param. transform and clipping of areas below
cerebellum:
@SUMA_AlignToExperiment \
-exp_anat ABanat+orig. -surf_anat DemoSubj_SurfVol+orig. \
-wd -prefix DemoSubj_SurfVol_WD_Alnd_Exp \
-EA_clip_below -30
Example 3: For two monkey T1 volumes with very different resolutions
and severe shading artifacts.
@SUMA_AlignToExperiment \
-surf_anat MOanat+orig. -al \
-exp_anat MoExpanat+orig. \
-strip_skull both -skull_strip_opt -monkey \
-align_centers \
-out_dxyz 0.3
Example 4: When -exp_anat and -surf_anat have very different
orientations Here is an egregious case where -exp_anat (EA)
was rotated severely out of whack relative to -surf_anat
(SV), AND volume centers were way off. With the 'Nudge
Dataset' plugin, it was determined that a 60deg. rotation
got SV oriented more like ExpAnat. The plugin can be made
to spit out an the 3dRotate command to apply the rotation:
3drotate \
-quintic -clipit \
-rotate 0.00I 60.00R 0.00A \
-ashift 0.00S 0.00L 0.00P \
-prefix ./SV_rotated+orig SV+orig
We will get XFROM.1D from that rotated volume:
cat_matvec 'SV_rotated+orig::ROTATE_MATVEC_000000' -I \
> XFORM0.1D
and tell @SUMA_AlignToExperiment to apply both center
alignment and XFORM0.1D
@SUMA_AlignToExperiment \
-init_xform XFORM0.1D -align_centers \
-surf_anat SV+orig -exp_anat EA+orig \
-prefix SV_A2E_autAUTPre
Note 1: 'Nudge Dataset' can also be used to get the centers
aligned, but that would be more buttons to press.
Note 2: -init_xform does not need to be accurate, it is
just meant to get -surf_anat to have a comparable
orientation.
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. Search is approximate.
More help may be found at:
https://afni.nimh.nih.gov/ssc/ziad/SUMA/SUMA_doc.htm
Ziad Saad (saadz@mail.nih.gov)
SSCC/NIMH/ National Institutes of Health, Bethesda Maryland