ctfphaseflip(1) General Commands Manual ctfphaseflip(1)
NAME
ctfphaseflip - correct tilt series for microscope CTF by phase flipping
SYNOPSIS
ctfphaseflip options
DESCRIPTION
This program will correct the CTF of an input tilt series by phase
flipping, with an option to attenuate frequencies near the zeros of the
CTF. The user can select a subset of projection views of the input
tilt series to correct and can specify a defocus value for each
selected view through a text defocus file. The output file of Ctfplot-
ter(1) is usually used as the defocus file.
Ctfphaseflip corrects each view strip by strip. A strip is defined as
an image region whose defocus difference is less than a user specified
value, the defocus tolerance. Normally, the strips are vertically ori-
ented and defocus is assumed to be the same along a vertical line.
Thus, the tilt series must be aligned so that the tilt axis is vertical
before applying this correction. The original thinking was that an
image region with defocus difference less than the tolerance could be
considered to have constant defocus and could be corrected as one
strip. However, the validity of the correction at the center of the
strip probably does not depend on whether it contains material beyond
this focus range, since only vertical lines near or at the center are
used in the corrected image. The program may limit the width further
to reduce computation time, or expand it to retain enough resolution
between successive zeros in the X direction of frequency space.
Through most of the image, each strip is corrected based on the defocus
at the center of the strip. However, the strips at the left and right
edges of the image may be corrected repeatedly, at different defocus
values, in order to extend the correction close enough to the edges of
the image. In fact, it is possible with the -maxWidth option to make
the program correct only whole images, using the defocus value appro-
priate for successive positions across the image.
Two entries can make the program correct along diagonals instead of
vertical strips: a tilt around the X-axis (more specifically, the one
orthogonal to the tilt axis), and a rotation of the tilt axis from ver-
tical. The latter would be entered if unaligned images are being cor-
rected. If only a tilt axis rotation is entered, the diagonal strips
are at that angle. If an X axis tilt is entered, the diagonals are at
an angle that depends on the angle of tilt around the tilt axis. In
either case, full images will be corrected to obtain the diagonal
strips at different defocus.
Ctfphaseflip can be run in a parallel mode similiar to the Tilt pro-
gram by setting the -TotalViews option. The script Splitcorrection
can be used to prepare command files for running the program in paral-
lel. It can also be run on the GPU of an NVIDIA card.
A sample command file for running the program with "subm" can be found
in the IMOD/com directory (ctfcorrection.com).
Originally, the program limited strip widths to 256, but the power
spectra of low tilt images often showed rings of very low values right
around the zeros of the CTF. As of IMOD 4.8.17, the strip width is
limited dynamically in a way that should minimize this effect. Making
the strips wider eliminates or reduces this effect, provided that the
shift in the position of the first zero across the width of the strip
is big enough. At very low tilt, the maximum allowed width is
increased to a value that would make the first zero shift by 0.6 pixel
in the Fourier transform. At higher tilts, the criterion shift is
reduced by (1 - tan(tiltAngle)). Near zero tilt, the strip width is
simply half of the image size in X. (However, if tilt is exactly zero,
the program does only a single correction of the whole image.) The
spacing between adjacent strips is also adjusted to be larger for wider
strips, to keep the computational time down (see the -iWidth option
below).
OPTIONS
Ctfphaseflip uses the PIP package for input (see the manual page for
pip). Options can be specified either as command line arguments
(with the -) or one per line in a command file (without the -).
Options can be abbreviated to unique letters; the currently valid
abbreviations for short names are shown in parentheses.
-input (-inp) OR -InputStack File name
Input stack that will be corrected. It must be aligned so that
the tilt axis is vertical.
-output (-o) OR -OutputFileName File name
Name of output file for the corrected views
-angleFn (-an) OR -AngleFile File name
File containing tilt angles for the input stack. Each line of
this file is the tilt angle for a view of the input stack. The
angles are listed in order starting from view 1. If no file is
entered, angles will be assumed to be 0. If all views have tilt
angles of 0, the program will do a single correction of the full
image for each view instead of doing strips.
-invert (-inv) OR -InvertTiltAngles
Invert the sign of the tilt angles in the tilt angle file. In
general, this option is needed if Ctfplotter was also run
with its -invert option. See the section on Inverting Tilt
Angles in the Ctfplotter man page for details.
-axis (-ax) OR -AxisAngle Floating point
Angle that the tilt axis is rotated from vertical (counterclock-
wise positive), for correcting unaligned images in their origi-
nal orientation.
-xtilt (-xt) OR -XAxisTilt Floating point
Angle (counterclockwise positive) that the specimen is tilted
around the axis in the plane perpendicular to the tilt axis,
which is along the X axis in aligned images. This angle should
correspond to the X axis tilt found in the positioning step in
Etomo. With an X axis tilt, the program will process full
images instead of strips, interpolating or copying corrected
pixels along diagonals of constant focus. This option can be
entered with an axis rotation angle for correcting unaligned
images, but in that case the angle entered here must be for a
tilt around a corresponding rotated axis, not around the X axis
in the images.
-defFn (-defF) OR -DefocusFile File name
File with list of tilt angle ranges and defocus values in
nanometers, such as was output by Ctfplotter. The full spec-
ification of the defocus file is given below. Each line should
have a starting and ending view number (numbered from 1), a
starting and ending tilt angle, and a defocus value. Defocus is
in nanometers, with positive values for underfocus. The program
will assign that defocus value to the midpoint of the range of
views. For a view at a given tilt angle, it will find the defo-
cus either by interpolating between two surrounding midpoint
angles, if there are such angles, or by taking the nearest defo-
cus value, if the angle is beyond the range of the available
midpoint angles. To correct a tilt series with a single value
of defocus, supply a file with a single line containing "20 20
0. 0. defocus_value". If you prepare a defocus file with more
than one line, be sure to use the exact angles from the tilt
angle file specified with the -angleFn option; do not round to
one decimal place. Alternatively, add the number "2" as an
extra value at the end of the first line of the file; this will
prevent the program from thinking that the view numbers might be
off by one. If you use the -invert option, you must do one of
two things: 1) either invert all the tilt angles in this file,
2) or start the file with a line indicating that it is a version
3 file in which the angles need to be inverted (start the line
with the flag 16 for inversion, plus whatever other flags are
needed; see below).
-zoff (-zo) OR -OffsetInZ Floating point
Adjust defocus values for the given displacement in Z, in pix-
els. The default CTF correction is correct only for image data
in the middle of the specimen. With this entry, each defocus
value will be adjusted to be correct for positions higher or
lower in Z. When viewing a tomogram in its original X/Z slices,
a Y value below the center corresponds to a positive Z displace-
ment. The sign of this entry is thus the same as the sign of Z
in a SHIFT entry to Tilt to bring this position to the middle
of the tomogram. However, the SHIFT entry is in unbinned pixels
whereas the entry to this option is in actual pixels of a tomo-
gram (i.e., binned pixels if the aligned stack is binned).
-xform (-xf) OR -TransformFile File name
File with the linear transformations that were used to align the
images. Using this option has two consequences: 1) Astigmatism
angles found by analyzing the raw stack will be properly rotated
to the right angles for the aligned stack. If this option is
not entered, astigmatism must be found on the aligned stack. 2)
The program will use the shifts in X to adjust the middle posi-
tion that is considered to be at the nominal defocus value for
each image.
-defTol (-defT) OR -DefocusTol Integer
Defocus tolerance in nanometers, which is one factor that gov-
erns the width of the strips. The actual strip width is based on
the width of this region and several other factors: a fixed min-
imum width of 128, a minimum width required to achieve suffi-
cient resolution in the Fourier transform, governed by the -zero
option, and the dynamic adjustment of maximum width described
above. This width also determines the width of the strips on
either edge of the image where a correction at just one defocus
is used.
-maxWidth (-m) OR -MaximumStripWidth Integer
Maximum width of strips in pixels. This entry disables the
dynamic adjustment of maximum width described above and applies
a fixed maximum at all tilt angles. As a special case, a width
at least as wide as the full image size in X will make the pro-
gram do each correction on full images instead of strips.
-iWidth (-iW) OR -InterpolationWidth Integer
The distance in pixels between the center lines of two consecu-
tive strips. A pixel inside the region between those two center
lines resides in both strips. As the two strips are corrected
separately, that pixel will have 2 corrected values. The final
value for that pixel is a linear interpolation of the 2 cor-
rected values. If a value of 1 is entered, there is no such
interpolation. For a value greater than one, the entered value
will be used whenever the strip width computed from the defocus
tolerance is less than 256 (i.e., at high tilt), and the value
will be scaled proportional to the strip width for widths above
256. This scaling keeps the computational time down and is rea-
sonable because the defocus difference between adjacent wide
strips at wider intervals is still less than that between the
narrower strips at high tilt. However, strips at constant spac-
ing can still be obtained by entering the negative of the
desired spacing, which disables the scaling of the spacing.
-zero (-ze) OR -MinimumZeroSpacing Floating point
The minimum spacing between successive zeros at 0.4/pixel, in
pixels of frequency space. If necessary, the strip width will
be increased above the value required by the defocus tolerance
to maintain this much resolution in the Fourier transform at
high frequency. If a maximum width is entered with -maxWidth,
however, strips will not be wider than that maximum. A higher
number decreases the fraction and the width of frequency pixels
that straddle a zero. The default is 8.
-pixelSize (-pi) OR -PixelSize Floating point
Image pixel size in nanometers
-expanded (-e) OR -ExpandedByFactor Floating point
Value of ExpandByFactor used in Newstack when making aligned
stack, which will be used to scale the pixel size.
-volt (-vo) OR -Voltage Integer
Microscope voltage in kV
-cs OR -SphericalAberration Floating point
Microscope spherical aberration in millimeters. A value of 0
can be entered; it will be made slightly larger to prevent divi-
sion by 0 in the CTF equations.
-ampContrast (-am) OR -AmplitudeContrast Floating point
The fraction of amplitude contrast. For Cryo-EM, it should be
between 0.07 and 0.14. The value should be the same as was used
when detecting the defocus.
-degPhase (-deg) OR -PhaseShiftInDegrees Floating point
A fixed value for the phase shift imposed by a phase plate, in
degrees. It can be entered with either positive or negative
sign; the absolute value of the entered value will be subtracted
when computing phase within the program. This entered value
will be overridden by the presence of any view-specific phase
shift values in the defocus file.
-phase (-ph) OR -PhasePlateShift Floating point
A fixed value for the phase shift imposed by a phase plate, in
radians. See the -degPhase option, which should be used
instead. The two may not both be entered.
-cuton (-cu) OR -CutOnFrequency Floating point
A fixed value for cut-on frequency that attenuates phase at low
frequency, in reciprocal nanometers. With a cut-on frequency,
the phase is modeled as rising exponentially from zero at zero
frequency to its true value at high frequency. The ratio of the
first zero to the cut-on frequency is the rate constant of the
exponential decay to the true value. Whenever the cut-on fre-
quency is non-zero, the phase shift value used for a view, from
either the defocus file or the -phase entry, will be treated as
the phase at a fixed frequency of 0.3/nm rather than the shift
at infinite frequency. See the Guide to Ctfplotter for more
details about cut-on.
-scale (-sc) OR -ScaleByCtfPower Floating point
Scale frequency components by calculated CTF to the given power,
in order to attenuate frequencies near the zeros of the CTF.
The scaling does not occur below 0.9 times the frequency of the
first zero, and it is introduced gradually between that point
and the first zero to avoid a sharp transition in scaling.
Lower powers give a narrower range of frequencies over which the
strongest attenuation occurs around each zero; values of 0.25 to
1 may be useful. This is not a Wiener filter; it will only
attenuate signals and not boost any.
-gpu (-g) OR -UseGPU Integer
Use the GPU (graphical processing unit) for computations if pos-
sible; enter 0 to use the best GPU on the system, or the number
of a specific GPU (numbered from 1). If the GPU is not avail-
able, the program will use the CPU or take the action specified
by the -action option if that is entered. The program will
respond in the same way if a failure occurs in the initial GPU
access for each slice, where memory allocation is done, but for
any GPU errors after that, it will exit with an error message.
-action (-ac) OR -ActionIfGPUFails Two integers
The action to take when the GPU cannot be used after being
requested: 0 to take no action, 1 to issue a warning prefixed
with MESSAGE:, and 2 to exit with an error. Enter 2 numbers:
the first for the action when the GPU is requested by the UseGPU
option; the second for the action when the GPU is requested only
by the environment variable IMOD_USE_GPU, or by the variable
IMOD_USE_GPU2. The default is 0,0.
-views (-vi) OR -StartingEndingViews Two integers
The starting view and the ending view to correct in this run of
the program, numbered from 1. This is an optional field. The
default is to correct all views in the input stack.
-totalViews (-t) OR -TotalViews Two integers
The starting view and the ending view that need to be corrected
in all parallel runs of the program. This field is only needed
when doing parallel runs with direct writing to a single output
file. The program is run initially with a StartingEndingViews
entry of -1,-1 to set up the output file. Then it is run with
actual starting and ending views for each parallel run, and each
run writes to the existing output file.
-boundary (-b) OR -BoundaryInfoFile File name
Name of file with information about boundaries between chunks
and files in which to write lines at the boundaries, when multi-
ple runs are writing in parallel to an output file.
-skipFlag (-sk) OR -SkipCorrectedFlag Integer
1 to not set flag that CTF was corrected, 2 to ignore flag if
set, 3 for both
-debug (-deb) OR -DebugOutput Integer
Value to control debug output: 1 for timing, 2 for column
detail, 0 for neither; add 10 to suppress initial list of angles
and defocus values.
-param (-pa) OR -Parameter Parameter file
Read parameter entries from this file.
-help (-h) OR -usage
Print help output
-StandardInput
Read parameter entries from standard input
Defocus File Format
The defocus file consists of a series of lines, each containing at
least 5 numbers: starting and ending view numbers for the range of
views fit to (numbered from 1), starting and ending tilt angles for the
range of angles fit to, and the defocus value in nanometers (underfocus
positive). The first line of the file can have a version number at the
end. For versions 1 and 2, the first line must have fitting data as
well. The typical file currently written by Ctfplotter thus starts
with lines like
61 61 -58.94 -58.94 4376 2
60 60 -56.94 -56.94 4599
A version 3 file can have columns for astigmatism values, or the phase
shift from a phase plate, including an optional cut-on frequency, or
both. Past version 2, the first line is a header line without data.
Thus a version 3 file should start with
flags 0 0. 0. 0 3
where "flags" is the sum of:
1 if the file has astigmatism values
2 if the astigmatism axis angle is in radians, not degrees
4 if the file has phase shifts
8 if the phase shifts are in radians, not degrees
16 if tilt angles need to be inverted to match what the
program expects (what Ctfplotter would produce)
with the -invert option
32 if the file has cut-on frequencies attenuating the phase
at low frequencies
The other values on the header line could be used in the future but
should be 0. If there are astigmatism values, the convention is for
the higher defocus value to be in the standard column for defocus, fol-
lowed by the lower defocus value, then by the angle (counterclockwise
positive) of the axis with the higher defocus (the short axis of the
ellipse in an FFT). However, either defocus value can be in the first
column as long as the axis angle is that of the first defocus value.
If the lower defocus is first, both Ctfphaseflip and Ctfplotter will
swap the two values and subtract 90 from the axis angle, so that astig-
matism will always appear as a positive value.
Either the astigmatism angles must be correct for the aligned stack, or
the angles must be correct for the raw stack and the -xform option must
be entered with the file of transforms used to produce the aligned
stack from the raw one, so that the program can rotate these angles
appropriately. A file with just astigmatism values could start with:
1 0 0. 0. 0 3
61 61 -58.94 -58.94 4652 4376 -43.2
If there are phase shifts, they go in a column at the end of the line.
They can be positive or negative; only the absolute value will be used
and equations using these shifts subtract the absolute value of the
number. A file with just phase shifts in radians could start with:
12 0 0. 0. 0 3
61 61 -58.94 -57.94 4376 1.47
while a file with both astigmatism and phase shifts could start with:
13 0 0. 0. 0 3
61 61 -58.94 -57.94 4652 4376 -43.2 1.47
If an expected phase shift is entered to Ctfplotter (either through
the user interface or with the -phase option) and phase is not searched
for, it will put out a defocus file with a phase shift that is the same
on every line.
A cut-on frequency in reciprocal nanometers may be included in the file
only if it includes phase shifts. This value goes on the end of each
line after the phase shift. Whenever a file contains cut-on frequen-
cies, the phase values read in from the file are interpreted differ-
ently: they are treated as being the phase at a particular frequency,
0.3/nm. The model applied is
phase(freq) = phaseAtInfinity * (1. - exp(-freq / cuton))
where
phaseAtInfinity = phaseInFile / (1. - exp(-0.3 / cuton))
The reason for this convention is that cut-on frequency is difficult to
find accurately, and the implied phase at infinity will vary consider-
ably because of the random variations in cut-on frequency. The phase
at this higher frequency will be much more stable and allows a better
assessment of how accurately phase has been found.
As for phase, if a cut-on frequency is entered to Ctfplotter through
either the user interface or the -cuton option, then it will put out a
defocus file with the same cut-on frequency on each line. A file with
astigmatism, phase in degrees, and cut-on frequency could start with:
37 0 0.0 0.0 0.0 3
1 1 -50.00 -50.00 3665 3472 -62.10 118.54 0.1686
AUTHORS
Quanren Xiong and David Mastronarde
SEE ALSO
ctfplotter
BUGS
Prior to IMOD 4.0.29, Ctfplotter had a bug in which the view numbers
written to the defocus file were numbered from 0, not 1. When Ctf-
phaseflip reads in the defocus file, it will do its best to detect this
situation and adjust all the view numbers up by 1. If it does detect
an inconsistency between view numbers and angular ranges, it will issue
a warning.
Email bug reports to mast at colorado dot edu.
IMOD 5.2.0 ctfphaseflip(1)