### DESCRIPTION OF INPUT COMMANDS

Appendix A contains a listing of the new features that are available for the current version of the program. Appendix B contains example inputs.

All input commands to the program are keyword-based and free-formatted. The input parser converts lower case characters to upper case so the program commands are not case dependent (though the program keeps the cases of the file names and the title unchanged). Each input line can contain at most 80 characters. The following characters are recognized as delimiters between words - a space, a comma, a tab, and an equal sign. More delimiters can be implemented by inserting them in the array SPACER in subroutine PARSER (and change the variable NSP at the same time). Comments in the input can be introduced by using the COMMent command or using the special character !'' --- in the input parser, all characters in the input line beginning at the !'' are ignored.

Presently, the program uses five logical I/O units, labelled by the variables LIN, LOG, LPRT, LOBS, and LSCRCH, which are initialized to be 5, 6, 3, 1, and 2, respectively. (The default values of most of the input variables are initialized in subroutine INITSS). All input commands are read from unit LIN. The output of the program will be written to unit LPRT. A name can be specified for this print file by using the PRINt command. The reflection data (if any) are read from unit LOBS. This unit is also used internally to read and/or write rotation function map files. The scratch file on unit LSCRCH is used for echoing the input commands at the end of the output file. Program messages are written to unit LOG. They are informational messages, warning error messages (*Warning*), or fatal error messages (*Fatal*). Each message is preceded by the name of the subroutine that produced it.

What follows is a description of the input commands that are currently supported by the program. A new command can be incorporated by inserting the command name in array COMMND, in subroutine INITSS, and by inserting a segment in subroutine INTPRT that defines the input parameters (if any) of the command. The program identifies each command by its first four letters, although more can be input for readability. In the following listing, the four-letter command keyword will be given in bold face, the names of input variables associated with the command will be given in UPPER case. The expected length of the character variables are also given (for example, ORDOR*5 means ORDOR is a character variable with 5 letters). Variables whose names begin with the letter Q' are logical variables. A True' of False' input is expected for these variables. The defaults (if any) of the variables are given in square brackets. These default values will be used by the program if the command is omitted from input, or if a value of 0 is input to the command.

#### A. GENERAL INPUT COMMANDS

 COMMent none [none]

This can be used to incorporate comments in the command input file. The entire input line is simply ignored by the program. The other way . to introduce comments is through the use of the special character !'' (see above). The difference between the two is that comments incorporated by this command will be echoed at the end of the program print file.

 PRINt-File PRTFIL*72 [glrf.prt]

This provides a name for the output file of the program (associated with the logical unit LPRT). The LOG unit is meant to be associated with the system output (terminal screen in interactive mode and job log file in batch mode).

 none none

The program will stop reading from the command input file and start the actual calculation. Otherwise, the program will read until the end of file on unit LIN before initiating the calculation.

 TITLe {ATITLE*132} {PROGRAM GLRF}

This provides a title for the current run of the program. It will be placed at the beginning of each output page. The program will insert the current date and time at the beginning of ATITLE (characters 2-18), and the program will append a version number identifier at the end of ATITLE (characters 111-130).

#### B. DEFINITION OF A FEW CONVENTIONS

 EULEr-Angle {EULER*3} {ZYZ}

This specifies the definition convention of Eulerian angles. Two conventions are currently supported - ZXZ and ZYZ, corresponding to rotation around the Cartesian Z axis (, then around the X (and Y, respectively) axis (q 2), and finally around the Z axis (q 1). ZXZ is the convention described in M. G. Rossmann & D. M. Blow Acta. Cryst. 15, 24, (1962). ZYZ is used in program MERLOT (P. M. D. Fitzgerald, J. Appl. Cryst. 21, 273, (1988)). The angles should be input to the program in the following order -- q 1, q 2, q 3, and the program outputs the angles in the same order.

WARNING: The matrix used in this program is the transpose of the matrix as printed in Table 1 of the paper by Rossmann & Blow. Therefore, if you are comparing the results from this program with other programs, be sure that the programs are using the matrices the same way! The same goes for the command POLAr (see below).
Consequently, the search limits for angles q 1 and q 3 as defined by S. N. Rao, J.H. Jih & J. A. Hartsuck (Acta Cryst. A36, 878-884, (1980)) should be swapped. The q 1 limit should be used as the limit on q 3 in this program. In any case, the user is strongly encouraged to check out the symmetry of the rotation function with the program. A few (1 or 2) large terms and very large intervals (5-10 ) should be used to speed up the calculation.
 POLAr-Angle {POLAR*3} {XZK}

This specifies the polar angle definition convention. Two conventions are currently supported - XYK and XZK. In both cases, f is the angle from the Cartesian X axis. In convention XYK (as defined in Rossmann & Blow), y is the angle from the Y axis. In convention XZK (as in MERLOT), y is the angle from the Z axis. f is the rotation around the axis defined by f and y . The angles should be input to the program in the following order -- f , y , f , and the program outputs the angles in the same order.

The XZK convention should be used for most calculations. The XYK convention can be used for monoclinic space groups in the b-unique setting.

 ORTHogonalization {ORDOR*5} {AXABZ}

This specifies the orthogonalization convention that should be used by the program. Five conventions are currently supported - BYBCX, CZBCX, AXABZ, CXCAZ, and Y3XYC.

In convention BYBCX, the real space b axis coincides with the Cartesian Y axis, and b x c (or a*) coincides with the X axis (this is first defined in the paper by Rossmann & Blow).

In convention CZBCX, the real space c axis coincides with the Cartesian Z axis, and b x c (or a*) coincides with the X axis (this is IPER=1 in MERLOT).

In convention AXABZ, the real space a axis coincides with the Cartesian X axis, and a x b (or c*) coincides with the Z axis (this is used by the Protein Data Bank, FRODO's helper SAM, PROTEIN, and X-Plor. This is also option NCODE=1 in program ALMN).

Convention CXCAZ corresponds to NCODE=3 in ALMN and is suggested by David Borhani. This convention should be used only for monoclinic space groups in the b-unique setting.

Convention Y3XYC, courtesy of Dr. Murthy, has been designed for rhombohedral space groups in the rhombohedral setting. It aligns the crystal three-fold axis (direction 111) along the Y axis, and puts the real space c axis in the XY plane (-X, +Y quadrant).

Other conventions can be incorporated as well, by inserting the codes in subroutine GTOMDM, which calculates the orthogonalization matrix from the cell parameters. The deorthogonalization matrix is calculated as the inverse of the orthogonalization matrix.

The AXABZ convention should be used for most calculations. The BYBCX convention was designed for monoclinic space groups in the b--unique setting to align the crystal b axis along the Cartesian Y axis. The AXABZ convention will maintain this alignment and should therefore be used for monoclinic space groups as well.

#### C. SPECIFICATION OF LOCAL SYMMETRY

 LOCSymmetry {(RLCAXS(i), I=1, 3), MLCAXS, TLCAXS*1} {none}

This defines the local symmetry elements in a standard orientation. Only the unique symmetry elements need to be specified for this purpose. For example, for 222 symmetry, only two orthogonal two-folds need to be given. For icosahedral symmetry, only two symmetry axes (one two-fold and one non-orthogonal five-fold, one three-fold and one non-orthogonal five-fold, or two five-folds, etc) need to be given. The rest of the symmetry operators can be automatically generated by the program (see command LOCExpand). The symmetry operator can be specified as a set of Eulerian angles (TLCAXS=E'), or a set of polar angles (TLCAXS=P') (the interpretation of the angles depends on the convention used, see II), or the Cartesian coordinates of the end point of a vector from the origin (TLCAXS=V'), or as direction cosines (TLCAXS=D'). The default for TLCAXS is Polar. The unique rotation around the axis is specified by MLCAXS, either as an angle or as a divisor of 360. If the axis is specified as polar angles, the information from the polar angle supercedes the value specified for MLCAXS, and a warning will be issued if the information from the two sources do not agree. The maximum number of local symmetry axis that can be specified by this command is given by the MAXLAX parameter.

The program converts the input to a rotation matrix immediately, so the angle convention used to define the local symmetry can be different from that used later in the search.

If no local symmetry elements are defined by the input, the program will carry out ordinary rotation function calculations.

 LOCExpand {QLCXPD} {T}

If QLCXPD is true, the program will generate all the local symmetry operators by pairwise multiplication of all the known operators until no new symmetry element is generated by the process. For this algorithm to work, the positions of the starting local symmetry axes must be specified with sufficient accuracy. If QLCXPD is false, the program will not carry out the above expansion. This is useful in cases where improper rotation axes are being dealt with (for example, a local two-fold with a rotation of 175 ).

A set of polar angles (in the convention specified by POLAR) will be extracted from the rotation matrices and the local symmetry operators are sorted on these angles before they are output. The maximum number of local symmetry operators is given by the MAXLOC parameter.

 LOCInterpolate {QLCINT} {F}

This is useful only if the slow rotation function is used to calculate the locked rotation function. If QLCINT is true, an ordinary rotation function will be calculated with the slow rotation function, covering the entire rotational space (0-360˚ in q 1 and q 3 with a grid interval of 2.8125˚, 0-180˚ in q 2 with a grid interval of 3.0 ). The locked rotation function is then calculated by interpolating among the ordinary rotation function values. (Note that this is the mode of operation if the fast rotation function is used.) If QLCINT is false, the locked rotation function will be calculated directly, with the slow rotation function. For initial searches, QLCINT should be set to true (or the fast rotation function should be used). For fine searches, QLCINT should be set to false (also see command PKFIt).

 LOCOrient {(ALCORI(i), i=1, 3), TLCORI*1} {0.0, 0.0, 0.0, E}

The rotation that should be applied to the standard orientation (as defined by LOCSymmetry and LOCUpdate commands) to bring it to that in the crystal is defined with this command. This command is useful only for the locked cross rotation function. The rotation defines the matrix [F ]. The angles can be either Eulerian (TLCORI=E') or polar (TLCORI=P'). The default for TLCORI is Eulerian. The convention of the angles can be specified by POLAr or EULEr. The input is immediately converted to a rotation matrix, so the angle convention definition can be temporary.

 LOCUpdate {(ALCUPD(i), i=1, 3), TLCUPD*1} {0.0, 0.0, 0.0, E}

The orientation of the local symmetry operators as defined by the LOCSymmetry commands can be changed with this command. The updating angles can be either Eulerian (TLCUPD=E') or polar (TLCUPD=P'). The default for TLCUPD is Eulerian. The convention of the angles can be specified by POLAr or EULEr. The input is immediately converted to a rotation matrix, so the angle convention definition can be temporary.

#### D. COMMANDS THAT DEFINE THE FIRST (A) CRYSTAL

The program can deal with the reflection data of three crystals, named A, B and C. It is the A crystal that is rotated in real space to match the B crystal. This means that, in the case of cross rotation search with a model, the calculated structure factors based on the model should be input as the A crystal, and the resulting rotation matrix should be applied directly to the search model. In the case of self rotation search, the A crystal information is copied into the B crystal.

 ACELl-Parameters {(CELL(i, 1), i=1, 6)} {1.0, 1.0, 1.0, 90.0, 90.0, 90.0}

This inputs the unit cell parameters of the A crystal. The parameters can be either in real or reciprocal space. The angles can be either in degrees or in cosines.

 ASYMmetry { } {none}

This inputs the space group symmetry operators of the A crystal, in the same format as the International Table. Positions related by centering should not be input. Positions related by inversion or mirror planes are not supported by the program. If no symmetry card is given, the program defaults to {PW }1. The identity operation is assumed and need not be specified.

The space group symmetry can also be specified by giving the symbol of the space group (for example P212121) or the number of the space group (for example 19). For monoclinic space groups, only the b-unique setting is supported. For rhombohedral space groups, only the hexagonal setting is supported. If you want the other settings, input the symmetry operators explicitly.

 AOBS-File {OBSFIL*72} {FOBS.DAT}

This specifies the name of the formatted file holding the reflection data of crystal A. The file should contain h, k, l, F, and optionally s F for each reflection. The format of the file is specified by the command AFORmat. The file should be terminated by the end of file, not by an end-of-file record. The maximum number of reflections that can be saved is given by the MAXREF parameter.

 AFORmat {OBSFMT*72} {(3i4, 2f8.2)}

This specifies the format of the reflection file, for the following input list -- h, k, l, F, s F . The parentheses in the format are optional. Note that a format must be specified for s F even if the file does not contain s F values.

 ACUT-off {SIGCUT, FCUTLO, FCUTHI} {1.0, 1.0, 0.0}

This specifies the cut-off criteria for screening the reflection data of the A crystal. Reflections with F(input) < SIGCUT x s F (input), or with F(input) < FCUTLO, or with F(input) > FCUTHI will be rejected from the calculation. If FCUTHI is 0.0, no high cut-off will be carried out. F(input) and s F (input) are the values as read from the input reflection file. The program will print out how many reflections are removed by each of the above criteria, so reasonable inputs can be selected accordingly.

 APOWer {POWER} {2.0}

The intensity of reflections in the A crystal will be calculated as F(input)**POWER. Therefore, if intensity data is being input, set POWER to 1.0.

 NSHEll {NSHELL} {8}

The reflection data will be divided into NSHELL shells of equal reciprocal volume, and an average intensity will be calculated for each shell. This will be useful for origin removal (see command ORIGin) and for selection of large terms (see command CUTOff). The maximum number of shells is specified by the parameter MAXSHL. ORIGin-Removal {QORIGN} {T} The origin of the A crystal Patterson map will be removed if QORIGN is true. In that case, an average intensity, calculated in shells of resolution, will be subtracted from each reflection.

#### E. COMMANDS THAT DEFINE THE SECOND (B) CRYSTAL

First, the commands that parallel those for the A crystal -

BCELl-Parameters (CELL(i, 2), i=1, 6)
BSYMmetry
BOBS-File (OBSFIB*72)
BFORmat (OBSFMB*72)
BPOWer (BPOWER)
BCUT-off (BSGCUT, BCUTLO, BCUTHI).

These input variables default to the values for the A crystal.

 CUTOff {CUTOFF} {1.5}

This defines the selection criterion for the strongest reflections (large terms) from the B crystal data. Reflections with I > CUTOFF x I(average) will be saved as the large terms, where I(average) is calculated in NSHELL shells of equal reciprocal volume. A CUTOFF value of 1.5 usually results in about 20\% of the data being saved as large terms, which is generally sufficient to obtain accurate slow rotation function values. The maximum number of large terms that can be saved (after expansion to a hemisphere by crystallographic symmetry) is specified by the parameter MAXBIG.

#### F. COMMANDS THAT DEFINE THE THIRD (C) CRYSTAL

A third crystal, C crystal, can be input to the program to carry out two cross rotation searches simultaneously. This will be useful, for example, if a sample has been crystallized in two different forms. Knowledge of the orientational relationship between molecules in the B crystal and the C crystal is required. This can be determined by a cross rotation search between the B and the C crystals. For a detailed discussion, see Appendix C. The C crystal information is input to the program through the command

 CXTAl - CXTAl {OPTION*4} {}

where OPTION is a four-letter keyword that specifies the function of the command. A list of the currently supported OPTIONs follows.

BTOC-relationship --- (B2CANG(i), i=1, 3), B2CCON*1
This specifies the rotational relationship between molecules in the B and the C crystals. A molecule in crystal B must be rotated by B2CANG to match the orientation of a molecule in crystal C. The angles B2CANG are interpreted as Eulerian if B2CCON is E' or polar if B2CCON is P'. The angle convention is defined by EULER or POLAR. The maximum number of relationships that can be specified is given by the MAXLAX parameter.

CELL-parameters --- (CELL(i, 3), i=1, 6)
This specifies the cell dimension of the C crystal.

FOBS-file --- OBSFIC*72
This specifies the name of the C crystal reflection file.

FORMat --- OBSFMC*72
This specifies the format of the C crystal reflection file. The default is (3i4, 2f8.2) for the input list h, k, l, F, and s F.

POWEr --- CPOWER
This specifies that the input structure factors for the C crystal should be raised to the power of CPOWER to calculate the intensities of the reflections.

REJEction-criteria --- CSGCUT, CCUTLO, CCUTHI
This specifies the screening criteria for the C crystal data. SYMMetry ---
This defines the space group symmetry of the C crystal.

The program will read in the reflections and save only the large terms, selected based on the CUTOFF (see command CUTOff).

#### G. SPECIFICATION OF SEARCH PARAMETERS

 BOXSize {(IBXHKL(i), i=1, 3)} {3, 3, 3}

This specifies the interpolation box size around each rotated reflection. The size of the box should be big enough to cover the maximum of the G function. At the same time, it should not be too big because the calculation time is proportional to the volume of the box. For most cases, a 3 x 3 x 3 box should be large enough. A bigger box may be used in the case of centered lattices due to the systematic absences. The maximum dimension of the box is specified by the MAXBOX parameter.

 CROSs-search {QCROSS} {F}

This specifies that the program should perform cross rotation calculations. QSELF (see command
SELF-search) and QCROSS are mutually exclusive. Specifying QSELF to be true will disable QCROSS automatically. Due to its default, QCROSS will need to be set to true for cross rotation searches. It also must be true if cross rotation calculations need to be performed by the commands LOCRotate, and MATRix. If QCROSS is false, the program will carry out self-search calculations.

 GEVAluation {IGEVAL} {2}
 MAPFile {MAPFIL*72} {none}
 OANGle {OANGLE*1, OTYPE*3} {P, XZK}

The rotation function peaks will also be converted to Eulerian (OANGLE=E') or polar (OANGLE=P') angles for output. OTYPE specifies the convention that should be used with the Eulerian or polar angle (see II). Therefore, two sets of angles are output corresponding to each peak in the rotation function map -- the first set is defined by the SANGle command, the second defined by this OANGle command.

 PEAK-Cutoff {PKCUT, NLIST, MAPFIL*72} {3.0, 40}

The program will perform a peak search in the resulting rotation function map. In this peak search, grid points whose values are less than PKCUT x s (where s is the standard deviation of the map values) over the map average will be skipped. NLIST peaks will be printed at the end of the peak search. The maximum number of peaks that can be saved is given by the MAXPKS parameter. If a file name has been specified for MAPFIL, the program will read the map values from that file and perform a peak search. In this case, no self or cross rotation search will be carried out.

 PKFIt {NPKFIT, PKFCUT} {5, 1.5}

The program can automatically carry out fine searches, with the slow rotation function, for the top NPKFIT peaks in the ordinary or locked rotation function. Specifying this command will also set the logical QPKFIT to true, which defaults to false. If a negative number is input for NPKFIT, QPKFIT will be set to false. PKFCUT is the large-term cut-off that will be used by the slow rotation function. The program will first search in 1 intervals to locate the peak. Then the grid interval will be lowered to 0.5 . The peak positions obtained from these fine searches can be used directly by the P1PC and GLTF commands.

 PRERotation {(AUVW(i), I=1, 3), (BUVW(i), i=1, 3)} {0}

This command performs a pre-rotation'' which aligns a direction in the A crystal, specified by AUVW, with a direction in the B crystal, specified by BUVW. This command can be used only if a cross-rotation search is being performed. The direction can be specified either as a set of fractional coordinates, in which case the vector from the origin to this point will define the direction, or as a set of polar angles -- f , y , and the third field should be P'olar or a number less than -999.0. The polar angle convention is taken from the POLAR variable and the orthogonalization convention is taken from ORDOR. The subsequent search will be carried out in polar angles. Only k will be allowed to change, f and y are determined by BUVW.

 RCUToff {RCUTLO, RCUTHI} {0, 20}

RCUTLO has been implemented mainly as a way of saving computation time.

In the ordinary rotation search calculated by the slow rotation function, if the rotation function value at a search grid point is less than RCUTLO (default is 25 for self-search and 500 for cross-search), all the neighbors of this grid point is flagged and will be removed from further calculations. These grid points are output in the map file (see command MAPFile) with a value of -999.

If there are more than 2500 grid points in the search, the program can determine RCUTLO automatically (if the user does not specify a RCUToff command in the input file). The program will randomly search 500 grid points and determine the RCUTLO value, and then carry out a coarse search through the grid points and remove those grid points that are unlikely to give high rotation function values.

In the locked rotation search, if the rotation function value at a search grid point for one of the local symmetry axis is less than RCUTLO (default to be -100 for self-search and 0 for cross-search), this grid point will be flagged and the program will skip to the next grid point. If the fast rotation function is used, the program will determine RCUTLO automatically.

 RESOlution-limits {DMAX, DMIN} {10.0, 3.5}

This specifies the resolution limits for reflection data that will be used in the search. This applies to both the A and the B crystal. The maximum Miller indices are given by the parameters
MAXH, MAXK, and MAXL, respectively. The program will abort if either of them is exceeded.

 SANGle {SANGLE*1} {E}

This specifies whether the search will be carried out in Eulerian or polar angles. For ordinary self rotation searches, polar angles are preferred (for example, section of k = 180 to look for two-fold axes). For cross rotation searches and for locked rotation searches, Eulerian angles is the better choice because the symmetry in the rotation function can be recognized more easily and because it is easier to evenly sample the rotation space with Eulerian angles.

 SECTion {SECSHN*3} {}

The sectioning of the map in the output map file (see command
MAPFile) is defined by this command. The first field specifies the map sections, the second field specifies which angle will be output across the page, and the third field specifies which angle will be output down the page. For example, specifying 321' would mean q 3 (k ) sections, q 2 (y ) across, and q 1 (f ) down the page. The second and/or the third field can be omitted and the program will provide reasonable defaults. If the command is omitted, the program will choose the angle with the smallest number of grid points as the section direction. The angle with the largest number of grid points will be output across the page.

 SELF-search {QSELF} {T}
 SLIMits {IAXIS, (SLIMTS(i, IAXIS), i=1, 3)} {none}

This specifies the angle limits for the current search. Three separate SLIMits commands need to be given to define the limits in all three angles. IAXIS can assume values of 1, 2, and 3, corresponding to q 1 (f ),q 2 (y ), and q 3 (k ) in the case of Eulerian (polar) angles. The angle limits are specified as --- beginning value, ending value, and increment.

If ordinary self- or cross-rotation function calculations are being performed in Eulerian angles, the program can automatically define the angle limits to cover the entire unique region of rotational space. To activate this feature, specify a number that is greater than 180 for the beginning or ending value of q 2. Only the hexagonal setting is supported for rhombohedral space groups. If the increment value for q 2 is input as 0, the program will also assign reasonable grid increment values along the three angles. Therefore, if an ordinary self- or cross-rotation function calculation in Eulerian angles covering the entire unique rotational space is desired, the search limits can be simply defined as SLIMits 2 270 270 0'. For ordinary self rotation function in polar angles, specifying SLIMits 270 270 0' will define the search limits as 0 - 180 in f and y in 3 intervals, and 60 - 180 in k in 30 intervals. It is best that this option be coupled with the fast rotation function.

The program can also try to assign reasonable limits if a locked self or cross rotation function is being calculated. For locked self rotation function, the search region assigned depends on the symmetry of the A crystal. For locked cross rotation function, the entire rotational space will be assigned. The unique rotational space for a locked self and cross rotation function also depends on the symmetry of the non-crystallographic point group. It is suggested that the user first carry out a locked rotation search, with the fast rotation function, covering the entire rotational space to identify the symmetry in the locked rotation function.

For self-rotation searches, the map values are scaled such that matching the Patterson map onto itself without any rotation will give a height of 1000. This puts the rotation map values on an absolute'' scale so that results from different runs of the program can be compared. This also means that all crystallographic symmetry operators should give rotation function values of 1000.

 XCORrelate {QXCORR, NXCORR} {F, 5}

This specifies whether the program will try to correlate the ordinary cross rotation function results with the self rotation function. The program will expand the cross RF peaks (or a set of angles given by the
ANGLe command) by the crystallographic symmetry (similar to SYMShow command) and identify all the self rotation angles relating the various cross rotation angles. If reflection data have been given, the program will also calculate the self RF value for these angles, with the slow RF. The large-term cutoff for this is set at 1.5, and the origin will be removed.

#### H. THE FAST ROTATION FUNCTION

 FAST-rotation-function {QFRF} {F}

Calculations with the Crowther fast rotation function (R. A. Crowther The Molecular Replacement Method, edited by M. G. Rossmann, 174-178, (1972)) are supported by this program. The maximum Bessel function order is 60. This allows the use of a larger radius of integration in the calculation (maximum radius allowed is roughly given by 10.8 x D , where D is the high resolution limit of the reflection data used in the calculation). By default, the program will use the slow' rotation function.

The ordinary self- or cross-rotation functions can be calculated using this technique, with either Euler or polar angles (see command SANGle). Internally, the program calculate the fast rotation function with Euler angles in convention ZYZ. If other Euler conventions or if polar angles are used for the search, the program will interpolate among the results from the fast rotation function.

Only the large" terms (see command CUTOff) of BOTH the A and the B crystals are used. The recommended value for CUTOFF however is around 0.25.

If QORIGN (see command ORIGin) is set to true, the Patterson origins of BOTH the A and the B crystals are removed. The user is encouraged to try both possibilities to see which give the better results. The entire rotational space (0--360 ) is covered in q 1 and q 3 by the fast rotation function, with a grid interval of 2.8 (or more accurately 360/128 = 2.8125 , where the number 128 is chosen to simplify the FFT calculation).

The command SLIMts should be used to define the unique regions of the rotation function in q 1 and q 3. The search range and grid interval along q 2 should be defined with the SLIMts command as well.

The fast rotation function as implemented here should work for most space groups, including the cubic ones (point groups 23 and 432). In the latter cases, the unique region of the rotation space can be defined based on point groups 222 and 422 and be aware then that the peaks listed by the program will contain crystallographically-related rotations (use the command SYMShow to sort out the peaks).

The fast rotation function can also be used, and is preferred, for locked rotation function calculations. The program will do the necessary interpolation to obtain values for the locked rotation function on the grid of the fast rotation function.

As with the slow rotation function, the program will carry out a peak search through the rotation function map. Similarly, contour maps can also be created based on the fast rotation function results. The fast rotation function results can also be written out to a file (see command MAPFile).

Once an initial peak position has been identified with the fast rotation function, finer searches around that position can be carried out with the slow rotation function.

 NORMalize {QNORME, EEMAX} {F, 8.0}

Normalized structure factors (E values) can be used in the calculation of the fast rotation function. The reflection intensities are normalized by dividing with the average intensity at the resolution shell. The E values are allowed a maximum value of EEMAX. Default is that the intensities, rather than the E values, will be used.

#### I. PATTERSON CORRELATION REFINEMENT

 COORdinate {OPTION*2} {}

This defines the atomic model for the PC refinement. OPTION is a two-letter keyword that define the function of the command. Supported options are --

BOverall -- BOVRAL.
This defines the overall B value to replace any that is on the input file.

BZero -- BZERO.
This defines a B value that will be applied to any input atom with a B of zero.

INput -- CORINP*72.
This defines the name of the file that contains the atomic coordinates in PDB format. The coordinates are expected to be in the same orientation as that used to calculate the structure factors supplied with the AOBS command. The program will automatically translate the model to place its center at the origin.

OUtput -- COROUT*72.
The atomic coordinates after PC refinement can be written out. The default file name is rigid.pdb. The coordindates for all the rotation function peaks that are used in the PC refinement are written to this file. There are comment lines at the beginning of each segment of coordinate entries defining which rotation function peak they correspond to.

 GROUP {IGROUP, RES1*6, RES2*6} {}

The first step of the PC refinement is always an overall refinement, using the entire molecule as a rigid body. This command can be used to define smaller groups that will be used in the second step of the PC refinement. IGROUP defines the number of the group, and RES1 and RES2 defines the beginning and ending residue number for the group. The command can be repeated to specify different groups or groups with more than one residue ranges. Residues that are not selected by any of the groups will not be changed by the refinement. Chain names are supported and should be separated from the residue name with /, | , or :. The question mark ? can be used as a wild card and matches to any character. For example, GROUp 1 A:???? A:????, GROUp 2 B:???? B:????. will define two groups for chains A and B.

 P1PC-refinement {NPCPKS, NPCCYC, PCCUT} {5, 10, 1.0}

The program will carry out a Patterson-correlation refinement for the first NPCPKS peaks in the ordinary cross rotation function. NPCCYC specifies the number of cycles for each refinement step. PCCUT specifies a large-term cutoff that should be used with the PC-refinement. Default is that the PC-refinement will not be done.

#### J. LOCKED TRANSLATION FUNCTION

 GLTFunction {OPTION*4} { }

This activates the locked translation function. For this function to work, a locked cross rotation search (either with slow or fast rotation function) must have been carried out first. The peaks in this search can then be used for the locked translation function (see option RFPEak below). The atomic coordinates, corresponding to the A crystal reflection data in the search, should be input with the COORdinate command (see the section on P1PC refinement above).

The program will do a peak search through the translation function and lists the top 10 peaks in the map. The maximum value of the function is scaled to 1000. The peak cut-off for this search is set at 3s or 400, whichever is smaller. If packing check is not used during the calculation (see option PACK below), the position with a height of 1000 may not be present in the peak listing as it may have packing problems. The program will output the atomic model for the entire assembly corresponding to the top peak in the locked translation function to a file. A name can be specified for this file with the COORdinate OUtput command (see above). If more than one rotation peaks are used, the file will contain separate assemblies, each identified with the rotation function peak number. This model for the assembly should then be input to an ordinary translation function program (for example, TF) to find the center of the assembly in the unit cell.

OPTION is a four-letter keyword that define the function of the command. Currently supported options are (in alphabetical order) --

CUTOff -- GLTFCT.
The large-term cutoff that should be used for the locked translation function. Default is 1.5.

DIREct-summation -- QDRECT.
This specifies whether the locked translation function should be evaluated by direct summation. Default for QDRECT is false, meaning the function will be evaluated by FFT. If the local symmetry is high (point group 432 or higher), the program will force direct summation.

MAPFile -- LTFMAP*72.
This specifies a name for a file where the locked translation function map will be dumped. Not implemented yet.

OVERlap -- NOVLP, DCUTTF.
This specifies the maximum number of close Ca - Ca (or P - P for nucleic acids) contacts that are allowed in the packing check. The distance cut-off for this check is given by DCUTTF. The default for NOVLP is 40. The default for DCUTTF is 3\AA, which should be appropriate for protein structures. For nucleic acid structures, try using DCUTTF of 5\AA. The program will try to save only 200 Ca atoms, which may lead to the selection of every second, or third Ca atoms only. In such cases the value of NOVLP will be changed automatically by the program.

PACKing-check -- QPACK.
This specifies whether packing of the monomers in the assembly should be checked during the calculation. Default for QPACK is false. This is coupled with the default for QDRECT of false. If direct summation is used, QPACK should be set to true. If this packing check is not done during the calculation, it will be performed during the peak search. The packing check during the peak search also examines the steric contacts among the assemblies that are related by unit cell translations. If the number of contacts for either packing check is greater than a pre-set number (see option OVERlap), the grid point will be ignored. The number of contacts found within the assembly is listed under Overlap'. The number of contacts found among the assemblies is given under Cell' in the peak listing.

This defines the maximum and the minimum lengths of the translation vector. Grid points in the search region (see option SLIMts below) that are more than RADMAX angstrom away from the origin will be ignored. The default for RADMAX is 30\AA. Grid points in the search region that are less than RADMIN angstrom away from the origin will be ignored. The default for RADMIN is 5\AA.

RFPEak -- NTFPKS.
The top NTFPKS peaks in the locked cross rotation function will be used for the locked translation function. The program will do a separate calculation for each rotation peak.

SLIMits -- I, BEGIN, END, INCREMENT.
This defines the search region for the translation vector. The integer I can take the value 1, 2, or 3, corresponding to the Cartesian coordinates X, Y, or Z. The values should be given in angstrom units.

#### K. MISCELLANEOUS COMMANDS

 ANGLe {X, Y, Z, TANGLE*1} {}

This defines an angle to the program. Currently this information is used only by the XCORrelate command. See command LOCRotate for more information.

 LOCAsu {(RLCASU(i), i=1, 3)} {10.0, 20.0, 30.0}

This command instructs the program to explore the symmetry of the locked self rotation function (QSELF should be true). The program first updates the local symmetry matrices based on the angles specified by RLCASU (similar to LOCUpdate), it then carries out a grid search, using parameters defined by the SLIMits commands and the SANGle command, to find other sets of angles that are related to RLCASU by the symmetry. Internally, the command LOCAsu assigns a true value to the logical QLCASU, which defaults to false. Therefore, LOCAsu command must be supplied, even though you want the default angles for RLCASU (i.e., you can input a line that says LOCA'' only).

Symmetry in the locked cross rotation function can be determined analytically and is not supported as yet.

 LOCFit {ANGINC, ZANGLE} {0.5, 2.5}

This command performs an ordinary self rotation search for each of the local symmetry operators at a given orientation. The orientation can be derived by updating the standard orientation with the
LOCUpdate command. The program searches ZANGLE degrees to either side of the known f and y positions, with ANGINC as the interval between grid points. Internally, the commands sets the logical variable QLCFIT to true, which defaults to false.

 LOCRotate {(ALCSHO(i), i=1, 3), TLCSHO*1} {0}

If QSELF is true, this command takes a set of angles and updates the local symmetry operation matrices based on the rotation matrix of the input angles. The angles can be either Eulerian (TLCSHO=E') or polar (TLCSHO=P'). The default for TLCSHO is Eulerian. The convention of the angles can be specified by using the
EULEr or the POLAr commands. If reflection data for crystal A have also been supplied, the program will obtain the rotation function value at each of the updated positions. The program also produces a stereographic representation of the set of updated local symmetry rotation axis. A set of polar angles are extracted from each of the updated matrices using the convention specified by the POLAr command. The top half of the sphere (z > 0 in the case of XYK polar angles, so p < f < 2p , and y > 0 in the case of XZK polar angles) is projected. The PostScript file is named STEREO.PS. If QCROSS is true, the updated matrix is calculated as [F][Ii ][E], where [E] is the matrix based on the input angles. A set of angles (polar if SANGLE=P', Eulerian if SANGLE=E') is extracted from the matrix. If reflection data has also been input for the A and the B crystals, the program will calculate the rotation function value corresponding to each of the updated matrices. The maximum number of angles that can be input by this command is specified by the parameter MAXSHO.

 MATRix {(AMTSHO(i), i=1, 3), TMTSHO*1} {0}

This commands takes a set of angles and outputs the corresponding rotation matrix. The variables AMTSHO and TMTSHO are similar to those for command
LOCRotate. The program calculates the rotation matrix immediately after this command is specified. Therefore, a temporary angle convention definition can be specified. If a pre-rotation has been applied (through the PRERotate command), the program will concatenate the two rotation matrices and extract a set of angles based on the new matrix. The angle type is specified by SANGle, and the angle convention by EULEr or POLAr. The program then applies the orthogonalization and deorthogonalization matrices. Therefore, the correct cell dimensions should be input to the program. If reflection data has been input, the program will output the contribution of the top 50 large terms to the final rotation function value. In this case, IGEVAL (see command GEVAluate) is set to 2. The maximum number of angles that can be input by this command is specified by the parameter MAXSHO.

 SYMShow {(ASYMSH(i), i=1, 3), TSYMSH*1} {0}

This commands takes a set of angles and outputs all the angles that are related to the input set by the symmetry of the ordinary rotation function. The variables ASYMSH and TSYMSH are similar to those for command
LOCRotate. The program calculates the rotation matrix immediately after this command is specified. Therefore, a temporary angle convention definition can be specified. Calculations with both self and cross rotation functions are possible. The program will output the angles as Eulerian if SANGle is E' or as polar if SANGle is P'. The angle convention is given by EULEr or POLAr. Note that the calculations in this command ignore the local symmetry information. Use the command LOCAsu to explore the symmetry of the locked rotation function. The maximum number of angles that can be input by this command is specified by the parameter MAXSHO.

#### L. ELECTRON DENSITY ROTATION TRANSLATION FUNCTION

 {OPTION*1, X, Y, Z, CODE*1} {none}

This command specifies parameters for the real space (electron density) rotation function (see Appendix D for an introduction). This can be used to maximize the overlap of the electron density of two molecules related by local symmetry.

When OPTION=R', X, Y, and Z will be interpreted as a set of rotation angles relating the molecule in the A crystal to that in the B crystal. The rotation angle type (Eulerian or polar) will be taken from SANGLE (command SANGle) and the angle convention will be taken from EULER or POLAR.

When OPTION=A', X, Y, and Z will be interpreted as the center of t he molecule in the A crystal, in fractional coordinates. When OPTION=B', X, Y, and Z will be taken as the center of the molecule in the B crystal.

Therefore, three separate RSRF commands will be needed to define the relationship between the molecule in the A crystal and that in the B crystal.

Set the CODE to S' if a search is to be carried out for the corresponding OPTION. Note that only one OPTION can have the code S' at one time. The two molecules can reside in the same crystal (self-rotation calculation) or different crystals (cross-rotation calculation). The program will read in phase angles for each reflection. The search limits will need to be defined with the SLIMts commands. Note that in this case the limits defined are taken as the offsets from those values defined by the RSRF commands. The G function evaluation option (GEVAluate option) will be set to 2.

 TFUNction {ITFUNC, (TFANGL(i), i=1, 6)} {0}

This command calls the translation function routines. The program has an internal logical variable called QTFUNC, which defaults to false. Specification of this command sets QTFUNC to true. Currently, three types of translation function are supported.

The first, ITFUNC=1, searches for the translation element along the local symmetry axis, whose direction is given by the angles TFANGL(1), TFANGL(2), TFANGL(3). (The angle type is specified by the SANGLE variable and the angle convention is given by the POLAR or EULER variable). This function only works for local two-fold axes (M. G. Rossmann, D. M. Blow, M. M. Harding, E. Coller, Acta Cryst. 17, 338, (1964)).

The second, ITFUNC=2, searches for the location of the specified local symmetry axis in the unit cell (see Appendix E). In this case, a set of phase angles must be present in the reflection file. Similar to the case for ITFUNC=1, TFANGL(1), TFANGL(2), TFANGL(3) defines the orientation of the local symmetry axis as a set of polar or Eulerian angles. TFANGL(4) defines the translational element (in \AA) along this local symmetry axis. The program will break it down to three translation elements along the unit cell edges. Be sure to confirm that the signs of those elements are correct. If not, then the sign of TFANGL(4) may need to be reversed.

The third, ITFUNC=3, searches for the position that is related to an input point by the local symmetry axis (see Appendix F). This also requires a set of phases to be input to the program. TFANGL(1), TFANGL(2), TFANGL(3) defines the orientation of the local symmetry axis. TFANGL(4), TFANGL(5), TFANGL(6) defines the input position, in fractional deorthogonalized units.

In all three cases, the program produces a formatted file called TFUNi.DAT, where i=1, 2, or 3, which contains h, k, l, F, and f values for a set of reflections. The maximum coefficient (F) has been scaled to a value of 1400. These reflections can then be input to any Fourier summation program to obtain the translation function map (in space group P1). The maximum number of reflections that can be saved by the program is given by the parameter MAXREF.

The program will also try to carry out the Fourier transform directly. A warning will be issued if array limits are exceeded and the program can not perform the transform. A peak search is done through the transform map. The map can also be contoured (command CNTFile ). In this case, the desired sectioning of the contour should be specified (command SECTion). The contour level (command CNTLevel) can be set at 500, 1000, 50, as the program will scale the maximum of the transform to 1000. The contour sections (command CNTSection) can be left as default, which will lead to the contouring of 5 sections containing the top peaks. The map can be written to a file (command MAPFile), which can be used for re-contouring the map later (command PEAK).

#### M. CONTOUR PLOTS

 CNTFile {CNTFIL*72} {none}

If a file name has been specified by this command, the program will produce contour plots for the rotation function map. Default is that the contour plot will not be created.

If an one-dimensional search has been carried out (i.e., only one angle was allowed to vary), the rotation function values will be plotted as a function of the varying angle. In this case, the CNTLevel and CNTSection commands are ignored by the program. If polar angles were used in the search, the contour plot will be done stereographically in sections of k (with projection down Z if POLAR is XYK and down Y if POLAR is XZK). To make this projection consistent with the convention used in other plots (see command LOCRotate ), the y angle needs to be kept between 0 and 180 ; the f angle should lie between 0 and 180 if convention XZK is used, and between 180 and 360 if convention XYK is used (see command SLIMits). Normally, stereographic projection will plot out the bottom half (y<0) of the sphere for XZK polar angles and the top half of the sphere (z>0) for XYK polar angles. If a self rotation function is calculated in polar angles, the three coordinate axes in the stereographic contour plot will be labelled with the appropriate unit cell axes (a, a*, or a//, which means the direction is roughly along the unit cell a axis).

If Eulerian angles were used in the search, the sectioning of the contour plot will be taken from the SECSHN parameter (see command SECTion).

The contouring algorithm assumes continuity in the rotation function map values. This may not be true if a high RCUTLO value (see command RCUToff) has been selected during the calculation. In these cases, there might be some strange contour lines in the plot. To alleviate this problem, the RCUTLO value will need to be reduced.

The maximum number of points in each contour trace is given by the parameter MAXCVS. If the program is stopped because this limit is exceeded, either recompile the program with a larger MAXCVS or raise the starting contour level.

 CNTLevel {(CNTLVL(i), i=1, 3), LINTYP} {none}

This command specifies the beginning, ending, and increment for the contour level. LINTYP specifies the line type to be used for the contours in this level. This command can be repeated to obtain different contour levels. The contour levels can be specified as absolute values (with the maximum of the map scaled to 1000) or in terms of the s value of the map. In the latter case, the beginning and ending contour levels must be specified as less than 10 and the increment must be less than 2. For example, specifying CNTLevel 1 5 0.5' means the contouring should begin at 1s above the map average and end at 5$\sigma$ above the map average, with increment of 0.5s . The maximum number of contour levels that can be specified is given by the MAXLVL parameter.

Currently 7 different line types are supported. LINTYP=1 is a solid line 0.1 point wide (there are 72 points to an inch). LINTYP=2 is a solid line 0.5 point wide. LINTYP=3 is a solid line 1 point wide. LINTYP=4 is a dashed line (2 on 2 off) 0.1 point wide. LINTYP=5 is a dashed line 0.5 point wide. LINTYP=6 is a dashed line (4 on 1 off) 0.1 point wide. LINTYP=7 is a dashed line 0.5 point wide.

Since it is difficult to predict the optimal contour levels beforehand, it is suggested that the rotation function values be written out with the MAPFile command. Then contour level(s) can be chosen and the rotation function map values can be read in with the command PEAK.

 CNTSection {ICNTSB, ICNTSE} {0, 0}

This specifies the section range for which the contour plot should be created. The numbering of the sections starts with the first section being number 1. The default is that all the sections will be plotted if there are 5 or less sections in the map. If there are more than 5 sections, the program will plot a maximum of 5 sections containing the top
peaks in the map. If no peaks are found in the map, the first 5 sections of the map will be plotted.

#### N. STORAGE LIMITS

The storage limits for different parameters are defined in a PARAMETER statement in the Fortran INCLUDE file GLRF.CMN. The program will need to be recompiled if any of these limits is exceeded. Especially, the parameters MAXH, MAXK, and MAXL should be adjusted to best match the cell parameters under study. The following table lists a set of reasonable values for the parameters. The actual values used are reported at the end of the output file.

Parameter & Limit

MAXBIG & 80000
MAXBOX & 5
MAXGRD & 1000000
MAXH & 75
MAXK & 75
MAXL & 75
MAXLAX & 10
MAXLOC & 100
MAXPKS & 1000
MAXREF & 100000
MAXSHL & 10
MAXSHO & 10
MAXATM & 12000
MAXLVL & 5
MAXLIN & 7