If there is an equivalent disulfide bridge in any of the templates aligned with the target, automodel will automatically generate appropriate disulfide bond restraints2.2 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
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.
# Homology 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 homology modeling