imodtrans(1) General Commands Manual imodtrans(1)
NAME
imodtrans - Transform an IMOD model file.
SYNOPSIS
imodtrans [options] input_model output_model
DESCRIPTION
Applies transformations to an IMOD model and copies the result to a new
IMOD model. The transformations can be specified in three different
ways: 1) as translations, rotations, and scaling factors; 2) as a list
of 2-D transformations in a file, one for each section, such as are
produced by Midas and Xfalign; 3) as a single 3-D transformation
in a file, such as is produced by Solvematch. When the transforma-
tion is specified by individual components, they are applied in the
order that they are entered, and any option can be entered more than
once. If you want your rotations to match those applied by the Slicer
in 3dmod or by Rotatevol, specify rotations around Z, then Y,
then X.
If you plan to display the transformed model on a different image file
from the one that it was built on, the program will not be able to
translate the model to the correct location unless it knows the dimen-
sions of the other image file. If these dimensions differ from those
of the original image file, enter them with the -n option. With the
dimensions known, the program will translate from the middle of the
original volume to the middle of the new one, and you can specify addi-
tional transformations if that center-to-center mapping is not appro-
priate.
The situation may be more complicated when the original and new volumes
have different pixel sizes in their headers. 3dmod takes a change
in pixel size into account when a model is loaded onto a volume, unless
coordinate scaling is overridden with the -m option to 3dmod. If
you scale a volume in 2D with newstack by binning, expansion, or
squeezing, or in 3D with binvol or squeezevol, a model will dis-
play correctly on the scaled volume with no need to run imodtrans on
it. When it is saved from 3dmod, it will be written with coordinates
that match the new volume. If you need to transform a model into those
coordinates without having to load it into 3dmod, use imodtrans with
the -i option and the name of the scaled image file, instead of using
the -sx, -sy, -sz, and -n options. The transformed model will have the
scaled coordinates and will also load correctly in 3dmod. If for
some reason you do use the scaling and new size options instead, do not
use the -i option. The resulting model will have the new coordinates,
but it will not load correctly into 3dmod without using the -m
option in 3dmod (which tells 3dmod to ignore coordinate informa-
tion).
The -i and -I options can also be used to manipulate the information
stored in the model about the coordinate system of an associated image
file, without actually transforming the model data. This information
is referred to as image coordinate reference information. Models gen-
erated within IMOD almost always have such information, whereas models
generated outside of IMOD may well lack it. If a model has reference
information, it will show up as "refcurtrans" and "refcurscale" entries
in the ascii model format that can be output with "imodinfo -a". If
there is no reference information, it can be inserted with either the
-I option or the -i option, which will not transform the model in this
case because there is no existing information about what coordinate
system to transform from. If there is existing reference information,
the -i option will transform the model by converting it from pixel
coordinates of the original volume to the scaled coordinate system,
then from those coordinates to the pixel coordinates of the specified
volume. This operation is inappropriate if the existing reference
information is wrong in some way. That can happen if a volume is gen-
erated outside of IMOD without preserving the header entries of the
original volume from IMOD, then an IMOD program is used to generate a
model from that derived model. The IMOD program will store incorrect
reference information in the model. Using the -I option with the orig-
inal IMOD volume will simply replace the incorrect information without
doing any transformation.
More generally, if an original and new volume have corresponding pixels
but the header information for scaling or origin differs in some way,
the model will not load correctly on the new volume in 3dmod without
the -m option. In this case, the -i option to Imodtrans will not work,
but using the -I option and the new volume will be equivalent to load-
ing the model in 3dmod with -m and resaving it.
For 3-D transformations, however they are specified, all contour points
are transformed, as well as all mesh points, surface normals, and clip-
ping planes. The mesh is transformed because formerly it was not pos-
sible to remesh contours that have been rotated out of the X/Y plane,
but this is now possible. For 2-D transformations, only contour points
are transformed, so clipping planes are not preserved and the model
will have to be remeshed. However, if a single 2D transformation is
applied to the whole model it is converted to a 3D transformation and
the entire model is properly transformed.
The program can also manipulate the flipped state of the model in Y and
Z either by actually flipping the Y and Z coordinates, or by simply
toggling the flag that indicates whether the model was loaded on data
that were flipped in 3dmod. Either way may be used after flipping a
volume with "clip flipyz" to change a model built on the unflipped vol-
ume so that it will load onto the flipped volume. In addition, the
model can be transformed to match a particular image file, just the
same as if it were loaded onto that file in 3dmod. The order of
operations is: flipping, then transforming to match an image file, then
transforming either via transformations in a file or via the entered
options.
If a volume is rotated with "clip rotx", a model built on the original
volume will load correctly in 3dmod on the rotated volume, and a
model built on the rotated volume will load correctly on the original
volume. To transform the model in this case without loading on the
other volume, use the -i option with the destination volume. If that
volume is not available, then the same operation can be done with the
-R option, entering 1 to transform to a rotated volume or 0 to trans-
form to the original volume.
OPTIONS
-tx value
-ty value
-tz value
The -tx, -ty and -tz options can be used to translate the model
in the particular direction by the given floating point value,
in pixels.
-sx value
-sy value
-sz value
The -sx, -sy and -sz options can be used to scale the model in
the particular dimension by the given floating point value.
-rx value
-ry value
-rz value
The -rx, -ry and -rz options can be used to rotate the model
about the particular axis by the given value in degrees.
-2 transform file
Transform the model in 2-D sections using the given transform
file as input. One line is expected per section, and slices at
Z values greater than the number of lines will not be trans-
formed, unless the -l option is given to apply one transform to
the whole model. This option is useful for transforming a model
to match an image stack that has been aligned with Xfalign or
Midas. This option cannot be entered with the scaling or rota-
tion options or with -3. The translation options -tx and -ty
can be used with this option, and -tz can be used when applying
one transform to the whole model. In each case, the option can
be entered only once, and the shift is applied after the trans-
formation.
-l line #
Transform the whole model with the single 2D transformation at
the given line number in the transform file entered with -2.
Lines are numbered from 0.
-3 transform file
Transform the model with the single 3-D transformation in the
given file. The format of the file is to have 3 lines, each
with 4 numbers, the coefficients for multiplying the old X, Y,
and Z coordinates and a translation value. The first, second,
and third lines are for computing new X, Y, and Z coordinates,
respectively. This option cannot be entered with the scaling or
rotation options, or with -2. It can be used with the transla-
tion options, but each option can be entered only once, and the
shift is applied after the transformation.
-S factor
Scale the X, Y, and Z shifts in the transformations from trans-
form files by the given factor. This option is needed, e.g., if
transformations have shifts based on unbinned coordinates and
the model is now in binned coordinates.
-n NX,NY,NZ
Specify the dimensions of the image file on which the model is
to be displayed, if these dimensions are not the same as for the
image file on which the model was originally built. This entry
is needed to have the model translated to the correct location
when image file sizes differ.
-z Apply Z-scaling to the model, using the Z-scale from the model
header, before transforming the model. The transformed model
will then be descaled in Z so that it will display correctly
with the same Z-scale. This option would be needed to retain
the shape of a Z-scaled model, but it would probably prevent it
from matching a transformed image file.
-f If the model was last displayed on images loaded into 3dmod
with Y and Z flipped, use this option to apply the transforma-
tion to the flipped coordinates. The default is to apply the
transformation to native, unflipped coordinates, which will work
with transformations obtained from Solvematch.
-i image file
Transform the model coordinates as if the model were being
loaded into 3dmod together with the given image file. The maxi-
mum coordinates in the model (reported as "max # # #" in the
output from Imodinfo) will be changed to match those in the
image file. This transformation occurs before any of the other
operations except flipping with the -Y option.
-I image file
Adjust the image coordinate reference information in the model
to match that in the given image file, without modifying model
coordinates. This option is useful if the pixel spacing or ori-
gin is changed in the header of the image file, such as with
Alterheader, after a model has been built on that file. Such
changes in header would cause an inappropriate scaling or shift
when loading the model on the modified image or other images
files derived from it. The model resulting from this operation
would again load correctly on such image files. This operation
occurs before any others, including flipping with the -Y option.
-Y Exchange Y and Z coordinates in the model file, without changing
the flag indicating the model's flip state.
-T Toggle the flag indicating the model's flip state, without actu-
ally flipping the data.
-R direction
Rotate the model by 90 degrees around the X axis; if direction
is 1 then the rotation is by -90 degrees, the same as for "clip
rotx", and image origin information in the model header will be
adjusted the same as it is for a volume by "clip rotx". If
direction is 0 the rotation is by +90 degrees and the origin is
adjusted in the inverse direction. This option cannot be entered
with -Y or -T. If the model was built on a file that was loaded
into 3dmod with the -Y option, it will first be flipped into
the native orientation of that file, then rotated, and its
flipped flag will be cleared.
Examples
Example 1: Suppose a model is drawn on a raw stack (set.st) and needs
to be transformed to fit on a binned by 2 stack (set.ali) that was
aligned with transformations in set.xg. The aligned file might be a
different size in X and Y than the size of the raw stack divided by the
binning. If the origin was adjusted when the aligned stack was cre-
ated, using the -origin option to Newstack or Blendmont, then the
command would be:
imodtrans -2 set.xg -i set.ali -S 0.5 input_model output_model
First, the program reduces all X and Y coordinates by 2 to match the
coordinate system in set.ali, and shifts points based on the change in
origin values. Then it multiples the shifts in set.xg by 0.5, since
they are in unbinned coordinates, and applies the transformations.
However, if the origin was not adjusted for any size change, then it is
necessary to add a translation to account for it. The needed transla-
tion is:
xtrans = (alignedXsize - rawXsize / binning) / 2.
ytrans = (alignedYsize - rawYsize / binning) / 2.
And the command is
imodtrans -2 set.xg -i set.ali -S 0.5 -tx xtrans -ty ytrans input
output
Example 2: Suppose a model is drawn on one stack (seta.ali) and needs
to fit on another stack (setb.ali) that is rotated by approximately 90
degrees. The file set_AtoB.xf has a single line with the transforma-
tion that would align the images. The command is:
imodtrans -2 set_AtoB.xf -l 0 -n bXsize,bYsize,bZsize input output
This command works because the input model has the size of seta.st
stored as its maximum coordinates, and because the output file size is
given. The program is thus able to shift the model by the difference
between the center coordinates of the two stacks.
Example 3: Suppose a model is drawn on a volume and a new volume is
made with "clip flipyz". If the first volume was loaded into 3dmod
with the "-Y" option for rotation around X, the model was saved in
flipped coordinates. To load it on the new volume, the flip flag needs
to be turned off with:
imodtrans -T input_model output_model
However, if the first volume was loaded in its native orientation, then
the model needs to be flipped with:
imodtrans -Y input_model output_model
Example 4: Suppose a volume is rotated wih "clip rotx". To transform a
model built on the original volume to the coordinates of the rotated
volume, you can use:
imodtrans -i rotated_volume input_model output_model
or
imodtrans -R 1 input_model output_model
To transform a model built on the rotated volume to the coordinates of
the original volume, you can use:
imodtrans -i original_volume input_model output_model
or
imodtrans -R 0 input_model output_model
AUTHORS
Jim Kremer and David Mastronarde
SEE ALSO
midas, xfalign, solvematch, matchvol, rotatevol,
clip, 3dmod
BUGS
Email bug reports to mast at colorado dot edu.
IMOD 5.2.6 imodtrans(1)