Identifying symmetry in a map with map_symmetry
Author(s)
- map_symmetry: Tom Terwilliger
Purpose
The routine map_symmetry will identify the symmetry in a map and create a
file with the symmetry operations.
Usage
How map_symmetry works:
Map-symmetry uses the density at a set of randomly-chosen points in a map
to identify the symmetry in a map from a set of pre-defined symmetry types that
include point-group symmetry as well as helical symmetry. For each possible
symmetry, the correlation of values at symmetry-related points is calculated.
The score for the symmetry type is the square root of the number of elements
in the symmetry multiplied by the map correlation for that symmetry.
By default, map-symmetry assumes that the principal axes of
symmetry in a map are along
x, y, or z, and that helical symmetry is helical along z. The software
has a database of 45 common symmetry elements and point groups, along with
alternative settings of some of these. The user can specify a specific symmetry
type to examine (e.g., I for icosahedral or D7 for a 7-fold axis along z
perpendicular to a 2-fold axis along x or along y), or all elements in the
database can be examined.
You can also use map-symmetry to find general (point-group or non-point-group)
symmetry using the keyword "find_ncs_directly=True". In this case a density
search will be carried out using spheres of density in the regions where the map varies the most as templates. Any similar density (with any translations or
rotations) will indicate map symmetry.
For helical symmetry, a Fourier transform of the density is examined along the
c* axis to find periodicity along z likely to correspond to the helical
translation. These likely translations (and integer fractions of them) are
tested along with possible rotations to check for helical symmetry.
Examples
Standard run of map_symmetry:
Running map_symmetry is easy. From the command-line you can type:
phenix.map_symmetry emd_8750.map symmetry=D7
where emd_8750.map is a map (CCP4, mrc or other related format), and in
this case you are specifying that only D7 symmetry should be considered.
An output file containing the symmetry (also known as NCS in Phenix)
operators will be created (map_symmetry.ncs_spec).
You can leave the symmetry as default (symmetry=ALL), or
you can specify symmetry
with the name of a symmetry (symmetry=D7) or with a file with symmetry
operators in the same format as
map_symmetry.ncs_spec (symmetry_file=sym.ncs_spec).
Note that to find helical symmetry, you have to explicitly set the
keyword include_helical_symmetry=True.
Possible Problems
Specific limitations and problems:
Helical symmetry is assumed to be along the z-axis.
Notes on map symmetry in Phenix:
Helical symmetry is more difficult to analyze than other symmetries.
(a) Having the helical parameters (rotation about z, rise) is very
helpful because finding these is not so easy and takes some time with
map_symmetry.
(b) Helical symmetry has several different forms as well. There is
1-start (normal) and 2-start (two sets of helices, not handled
automatically in Phenix). Helical symmetry is usually identified
using a Fourier transform along Z.
(c) As helical symmetry is not common and takes longer to find automatically,
finding helical symmetry is off by default and requires setting the
keyword include_helical_symmetry to True to look for it.
(d) Only one-start helical symmetry is found automatically. For other
symmetries, a symmetry file (.ncs_spec) would need to be supplied.
For other symmetries, having the information about symmetry type (D, O, etc)
is slightly useful, but generally it is quick to identify these symmetries
by direct testing. Note that knowing that symmetry is D2 (for example)
does not actually define the matrices. There are two settings for D2 (and
many others), one with the two-fold along x and one with the two-fold
along the x=y, z=0 line. It is even more complicated for icosahedral
symmetries.
Phenix uses the method mmtbx/ncs/ncs/generate_ncs_ops to generate NCS
operators for all the common symmetries that are found in cyo-EM maps.
If there are symmetries that we do not recognize, this is the place to
put them.
In Phenix map analysis and model building and manipulation code,
the mmtbx.ncs.ncs object is used to handle the symmetry relationships for
cryo-EM symmetry. There is another NCS object that is used inside the
model object.
Literature
Additional information
List of all available keywords
- job_title = None Job title in PHENIX GUI, not used on command line
- input_files
- map_file = None File with CCP4-style map.
- symmetry_file = None Optional symmetry file (.ncs_spec format or BIOMT records) with reconstruction symmetry
- output_files
- symmetry_out = symmetry_from_map.ncs_spec Output file (.ncs_spec format) describing symmetry in the map
- temp_dir = temp_dir Temp directory
- crystal_info
- resolution = None High-resolution limit for main search. This can be lower resolution than the data. The search is quicker at lower resolution. .short_caption = High-resolution limit
- use_sg_symmetry = False If you set use_sg_symmetry=True then the symmetry of the space group will be used. For example in P1 a point at one end of the unit cell is next to a point on the other end. Normally for cryo-EM data this should be set to False and for crystal data it should be set to True.
- reconstruction_symmetry
- symmetry = ANY Symmetry used in reconstruction. For example D7, C3, C2 I (icosahedral),T (tetrahedral), or ANY (try everything and use the highest symmetry found). Not needed if symmetry is supplied.
- must_be_consistent_with_space_group_number = None Searches for symmetry must be compatible with this space group number.
- include_helical_symmetry = False You can include or exclude searches for helical symmetry
- symmetry_center = None Center (in A) for Symmetry operators (if ncs is found automatically). If set to None, guess is the center of the cell (see use_unit_cell_center) and then if that fails, found automatically as the center of the density in the map.
- check_grid_offset = True Check optimizing map center by moving up to 1 grid unit in each direction
- use_unit_cell_center = True Use center of full unit cell as guess of center of cell
- find_ncs_directly = False You can use find_ncs_from_density to find arbitrary NCS. Try this if your NCS is not proper NCS and not helical.
- optimize_center = False Optimize position of symmetry center. Also checks for center at (0,0,0) vs center of map
- helical_rot_deg = None helical rotation about z in degrees
- helical_trans_z_angstrom = None helical translation along z in Angstrom units
- max_helical_optimizations = 2 Number of optimizations of helical parameters when finding NCS
- max_helical_ops_to_check = 5 Number of helical operations in each direction to check when finding NCS
- max_helical_rotations_to_check = None Number of helical rotations to check when finding NCS
- two_fold_along_x = None Specifies D or I or T two-fold is along x (True) or y (False). If None, both are tried.
- smallest_object = None Dimension of smallest object to consider when finding symmetry. Default is 5 * resolution
- score_basis = ncs_score cc *None Symmetry score basis. Normally ncs_score (sqrt(n)* cc) is used except for identification of helical symmetry
- scale_weight_fractional_translation = 1.05 Give slight increase in weighting in helical symmetry search to translations that are a fraction (1/2, 1/3) of the d-spacing of the peak of intensity in the fourier transform of the density.
- random_points = 300 Number of random points in map to examine in finding symmetry
- identify_ncs_id = True If Symmetry is not point-group symmetry, try each possible operator when evaluating Symmetry and choose the one that results in the most uniform density at Symmetry-related points.
- min_ncs_cc = 0.80 Minimum Symmetry CC to keep operators when identifying automatically
- n_rescore = 5 Number of Symmetry operators to rescore
- op_max = 14 If ncs_type is ANY, try up to op_max-fold symmetries
- tol_r = 0.02 tolerance in rotations for point group or helical symmetry
- abs_tol_t = 2 tolerance in translations (A) for point group or helical symmetry
- max_helical_operators = None Maximum helical operators (if extending existing helical operators)
- rel_tol_t = .05 tolerance in translations (fractional) for point group or helical symmetry
- require_helical_or_point_group_symmetry = False normally helical or point-group symmetry (or none) is expected. However in some cases (helical + rotational symmetry for example) this is not needed and is not the case.
- control
- nproc = 1 Number of processors to use
- random_seed = 171731 Random seed
- quick = True Run quickly if possible
- verbose = False Verbose output
- guiGUI-specific parameter required for output directory