Back to Mover page.

HydrogenBondConstraintGenerator

Generates constraints to attempt to enforce hydrogen bonding between atoms in residues defined by the two residue selectors. Constraints are generated by default for all pairs of residues (r1, r2), where r1 is a residue selected by residue_selector1 and r2 is a residue selected by residue_selector2, A1 is the hydrogen bond-capable heavy atom in r1, P_A1 is the parent atom of A1, PP_A1 is the parent of P_A1, A2 is the hydrogen-bond-capable heavy atom in r2, P_A2 is the parent atom of A2, and PP_A2 is the parent of P_A2 (see below for parent definitions). The following constraints are generated for each (A1, A2) pair:

  • An atom pair constraint between the A1 and A2.
  • An angle constraint (angle1) to restrain the angle between P_A1, A1 and A2
  • An angle constraint (angle2) to restrain the angle between A1, A2 and P_A2.

The following dihedral constraints will be generated only if a planar chemical group is involved:

  • A dihedral constraint (dihedral1) to restrain the dihedral PP_A1, P_A1, A1 and A2 (only if PP_A1-P_A1-A1 are coplanar, e.g. if all are in a His ring, Asp/Glu carboxylate, etc)
  • A dihedral constraint (dihedral2) to restrain the dihedral A1, A2, P_A2, PP_A2 (only if A2-P_A2-PP_A2 are coplanar, e.g. if all are in a His ring, Asp/Glue carboxylate, etc)

The functions to be used for these constraints are user-configurable. By default, harmonic functions are used for atom pair constraints and circular harmonic functions are used for angle/dihedral constraints. See the constraint documentation for more information about functions.

Selection of multiple residues

It is possible for each residue selector to select multiple residues. If this occurs, Ambiguous constraints will be generated for each (r1, r2) pair, where r1 is selected by residue_selector1 and r2 is selected by residue_selector2. The result is that only the constraints from the best-scoring residue pair will be used.

If you want to constrain multiple hydrogen bonds simulataneously, you should use a seperate HydrogenBondConstraintGenerator for each.

Selection of multiple atoms

It is also possible to select multiple atoms in each residue. If this occurs, Ambiguous constraints are generated for each (A1, A2) pair in each (r1, r2) pair, where r1 is a residue selected by residue_selector1, r2 is a residue selected by residue_selector2, A1 is a hydrogen-bond-capable atom in r1, and A2 is a hydrogen-bond-capable atom in r2. The resulting score will only include the best-scoring hydrogen bonding atom pair. If you want to constrain multiple hydrogen bonds simulataneously, you should use a seperate HydrogenBondConstraintGenerator for each.

Parent atom selection

The atoms involved in the angle and dihedral constraints are given below:

Residue Name A1 P_A1 PP_A1 Distance (1/2) Angle Dihedrals
ARG NE CZ NH1 1.4 120.0 0.0,180.0
ARG NH1 CZ NE 1.4 120.0 0.0,180.0
ARG NH2 CZ NE 1.4 120.0 0.0,180.0
ASP OD1 CG OD2 1.4 120.0 0.0,180.0
ASP OD2 CG OD1 1.4 120.0 0.0,180.0
CYS SG CB CA 2.0 109.5 Any
GLU OE1 CD OE2 1.4 120.0 0.0,180.0
GLU OE2 CD OE1 1.4 120.0 0.0,180.0
HIS ND1 CE1 NE2 1.4 120.0 180.0
HIS NE2 CE1 ND1 1.4 120.0 180.0
LYS NZ CE CD 1.4 109.5 Any
SER OG CB CA 1.4 109.5 Any
THR OG1 CB CA 1.4 109.5 Any
TRP NE1 CD1 CG 1.4 120.0 180.0
TYR OH CZ CE1 1.4 109.5 Any

Caveats

To have effect, the atom_pair_constraint, angle_constraint, and dihedral_constraint scoreterms must be on in the scorefunction.

This ConstraintGenerator currently only works with canonical amino acids.

Definition

<HydrogenBondConstraintGenerator name="(&string)"
    residue_selector1="(&string TrueSelector)"
    residue_selector2="(&string TrueSelector)"
    atoms1="(&string '')"
    atoms2="(&string '')"
    atom_pair_func="(&string 'HARMONIC 2.8 0.5')"
    angle1_func="(&string 'CIRCULARHARMONIC 2.0 0.5')"
    angle2_func="(&string 'CIRCULARHARMONIC 2.0 0.5')"
    atom_definitions="(&string '' )" />
  • residue_selector1 - If given, the residues r1 (see above) will come from the subset of residues selected by residue_selector1. This should probably always be given to avoid huge numbers of constraints being generated.
  • residue_selector2 - If given, the residues r2 (see above) will come from the subset of residues selected by residue_selector2. This should probably always be given to avoid huge numbers of constraints being generated.
  • atoms1 - Comma-seperated list of atom names to consider constraining for each residue r1 selected by residue_selector1. Atom names that are not present in the pose will not be constrained -- therefore, if one specifies "OD1,OE1" as atoms1, it could be used for both Asp and Glu residues -- OD1 would be constrained in Asp residues, and OE1 would be constrained in Glu residues.
  • atoms2 - Comma-seperated list of atom names to consider constraining for each residue r2 selected by residue_selector2. Atom names not present in the pose will not be constrained (see "atoms1" above).
  • atom_pair_func -- Function to be used for atom pair constraints. By default, "HARMONIC x 0.5" is used, where x is the ideal A1-A2 distance.
  • angle1_func - Function used for angle constraints. By default, "CIRCULARHARMONIC x 0.5" is used, where x is the ideal P_A1-A1-A2 angle.
  • angle2_func - Function used for angle2 constraints. By default, "CIRCULARHARMONIC x 0.5" is used, where x is the ideal A1-A2-P_A2 angle.
  • atom_definitions - Definitions of atoms to be used in hydrogen bonding. Only required for non-canonical amino acids. The format is: NAME3,ATOM1,ATOM2,ATOM3,DIST,ANGLE[,DIHEDRALS]*. For hydrogen bonding to OD1 of ASP, this line might read:
      "ASP,OD1,CG,OD2,1.4,120.0,0.0,180.0"
    Note the 'ideal' dihedrals of 0.0 and 180.0 which indicates that hydrogen bonds to ASP should be in-plane. For hydrogen bonding to OG of SER, this line might read:
      "SER,OG,CB,CA,1.4,109.5"

Example

This example creates constraints to enforce a hydrogen bond between atom NE2 on residue 6 and atom OE1 on residue 50. The atom pair constraint between these atoms uses a custom function -- a flat-bottom function with width 0.4 and sd 0.5.

<RESIDUE_SELECTORS>
    <Index name="his6" resnums="6" />
    <Index name="glu50" resnums="50" />
</RESIDUE_SELECTORS>
<MOVERS>
    <AddConstraints name="add_csts" >
        <HydrogenBondConstraintGenerator name="gen_my_csts"
            residue_selector1="his6"
            residue_selector2="glu50"
            atoms1="NE2"
            atoms2="OE1" 
            atom_pair_func="FLAT_HARMONIC 2.8 0.5 0.4" />
    </AddConstraints>
    <RemoveConstraints name="rm_csts" constraint_generators="gen_my_csts" />
</MOVERS>
<PROTOCOLS>
    <Add mover="add_csts" />
    <!-- do things with constraints -->
    <Add mover="rm_csts" />
</PROTOCOLS>

See Also