##
Including disulfide bridges

If there is an equivalent disulfide bridge in any of the templates aligned with the target, `automodel` will automatically generate appropriate disulfide bond restraints 2.3 for you (by using the model.patch_ss_templates() command).

Explicit manual restraints can be added by the model.patch() command using the CHARMM topology file DISU patching residue. You must redefine the automodel.special_patches() routine to add these or other patches.

It is better to use model.patch_ss_templates() rather than model.patch() where possible because the dihedral angles are restrained more precisely by using the templates than by using the general rules of stereochemistry.

Some CHARMM parameter files have a multiple dihedral entry for the disulfide dihedral angle χ3 that consists of three individual entries with periodicities of 1, 2 and 3. This is why you see three feature restraints for a single disulfide in the output of the selection.energy() command.

Note that the residue numbers that you patch refer to the model, not the templates. See Section 2.2.6 for more discussion.

Example: examples/automodel/model-disulfide.py

      # Comparative modeling by the automodel class
      from modeller import *              # Load standard Modeller classes
      from modeller.automodel import *    # Load the automodel class

      # Redefine the special_patches routine to include the additional disulfides
      # (this routine is empty by default):
      class MyModel(automodel):
          def special_patches(self, aln):
              # A disulfide between residues 8 and 45:
              self.patch(residue_type='DISU', residues=(self.residues['8'],
                                                        self.residues['45']))

      log.verbose()    # request verbose output
      env = environ()  # create a new MODELLER environment to build this model in

      # directories for input atom files
      env.io.atom_files_directory = ['.', '../atom_files']

      a = MyModel(env,
                  alnfile  = 'alignment.ali',     # alignment filename
                  knowns   = '5fd1',              # codes of the templates
                  sequence = '1fdx')              # code of the target
      a.starting_model= 1                 # index of the first model
      a.ending_model  = 1                 # index of the last model
                                          # (determines how many models to calculate)
      a.make()                            # do the actual comparative modeling