next up previous contents index
Next: PICK_RESTRAINTS pick Up: Calculation of spatial restraints Previous: MAKE_RESTRAINTS make   Contents   Index

DEFINE_SYMMETRY -- define similar segments

SYMMETRY_WEIGHT = $\langle{\tt real:1}\rangle$ 1.0 the weight of the symmetry objective function term
ADD_SYMMETRY = $\langle{\tt logical:2}\rangle$ off on whether to add segment pair, add atoms to segment pair

Description:
This command allows defining pairs of segments that will be restrained to be the same during optimization of the objective function. This is achieved by adding the sum of squares of the differences between the equivalent distances (similar to distance RMS deviation) to the objective function being optimized, separately for each pair of segments defined by DEFINE_SYMMETRY. The value of this term is reported in the log file by the ENERGY command, which also reports the individual contributions to the term when OUTPUT contains word 'SYMMETRY'. In each call of the DEFINE_SYMMETRY command, the list of such segments is either initiated, extended by a new pair of segments, or the last defined pair of segments is extended by adding new atoms.

SYMMETRY_WEIGHT specifies the atomic weights to be used in the calculation of the symmetry term (Eq. 5.71).

The two segments correspond to the selected sets 2 and 3 (obtained by the PICK_RESTRAINTS command). They must have the same number of atoms.

A pair of segments can be either added to the list (ADD_SYMMETRY[1] = on) or the list can be initialized (ADD_SYMMETRY[1] = off).

If ADD_SYMMETRY[2] = on, the currently selected atoms are added to the last segment pair in the segment pairs list, otherwise a new segment pair is started.

Example:


# Example for: DEFINE_SYMMETRY

# This will force two copies of 1fas to have similar mainchain 
# conformation.

DEFINE_STRING VARIABLES = SEG1 SEG2

SET OUTPUT_CONTROL = 1 1 1 1 0

READ_TOPOLOGY FILE = '$(LIB)/top_heav.lib'
READ_PARAMETERS FILE = '$(LIB)/par.lib'

# Generate two copies of a segment:
READ_MODEL FILE = '2abx', MODEL_SEGMENT = '1:A' '74:B'
SEQUENCE_TO_ALI ALIGN_CODES = '2abx', ATOM_FILES = ALIGN_CODES
SEQUENCE_TO_ALI ADD_SEQUENCE = on, ALIGN_CODES = ALIGN_CODES '2abx_ini', ;
                ATOM_FILES = ALIGN_CODES
GENERATE_TOPOLOGY SEQUENCE = '2abx_ini'
TRANSFER_XYZ
BUILD_MODEL INITIALIZE_XYZ = off
RENAME_SEGMENTS SEGMENT_IDS = 'A' 'B', RENUMBER_RESIDUES = 1 1
ENERGY DYNAMIC_SPHERE = off
RANDOMIZE_XYZ DEVIATION = 6.0
# Define the two segments (chains in this case) to be identical:
CALL ROUTINE = 'defsym', SEG1 = '1:A' '74:A', SEG2 = '1:B' '74:B'

# Make them identical by optimizing the initial randomized structure
# without any other restraints:
ENERGY 
WRITE_MODEL FILE = 'define_symmetry-1.atm'
OPTIMIZE MAX_ITERATIONS = 300
WRITE_MODEL FILE = 'define_symmetry-2.atm'
ENERGY 

# Now optimize with stereochemical restraints so that the
# result is not so distorted a structure (still distorted
# because optimization is not thorough):
SET DYNAMIC_SPHERE = on
MAKE_RESTRAINTS RESTRAINT_TYPE = 'stereo'
RANDOMIZE_XYZ DEVIATION = 3.0
SET MAX_ITERATIONS = 300, MD_RETURN = 'FINAL'
OPTIMIZE OPTIMIZATION_METHOD = 1 # Conjugate gradients
OPTIMIZE OPTIMIZATION_METHOD = 3 # Molecular dynamics
OPTIMIZE OPTIMIZATION_METHOD = 1 # Conjugate gradients
WRITE_MODEL FILE = 'define_symmetry-3.atm'
ENERGY 

DELETE_ALIGNMENT
READ_MODEL  MODEL_SEGMENT  = '1:A' '74:A'
READ_MODEL2 MODEL2_SEGMENT = '1:B' '74:B'
PICK_ATOMS ATOM_TYPES = 'MNCH'
SUPERPOSE

STOP

SUBROUTINE ROUTINE = 'defsym'
  SET ATOM_TYPES = 'MNCH'
  SET SELECTION_STATUS = 'INITIALIZE'
  SET SELECTION_SEARCH = 'SEGMENT'

  SET SYMMETRY_WEIGHT = 1.0
  PICK_ATOMS PICK_ATOMS_SET = 2, SELECTION_SEGMENT = SEG1
  PICK_ATOMS PICK_ATOMS_SET = 3, SELECTION_SEGMENT = SEG2
  DEFINE_SYMMETRY ADD_SYMMETRY = on off

  RETURN
END_SUBROUTINE


next up previous contents index
Next: PICK_RESTRAINTS pick Up: Calculation of spatial restraints Previous: MAKE_RESTRAINTS make   Contents   Index
Ben Webb 2004-04-20