loop optimization in the presence of a ligand
Hi,
I am trying to optimize a loop in close proximity to a ligand. For some reason, the intial models have the ligand present, while the loop optimized models do not. Hence, there are major clashes between some of the calculated loops and the ligand. Is it possible to optimize loops in the presence of the ligand?
My input script:
# Homology modeling by the automodel class from modeller import * # Load standard Modeller classes from modeller.automodel import * # Load the automodel class
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 = 'MODELLER'
class mymodel(loopmodel): def special_restraints(self, aln): rsr = self.restraints rsr.add(atom_ids=('CA:189', 'CA:372'), restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1)) rsr.add(atom_ids=('CA:189', 'CA:393'), restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1)) rsr.add(atom_ids=('CA:372', 'CA:393'), restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1))
def special_patches(self, aln): self.patch(residue_type='DISU', residues=(self.residues['176'], self.residues ['185'])) def select_loop_atoms(self): return selection(self.residue_range('378:', '383:'))
a = mymodel(env, alnfile = 'MODELLER/alignment.pir', # alignment filename knowns = 'template', # codes of the templates sequence = 'target') # code of the target
a.starting_model= 1 # index of the first model a.ending_model = 1 # index of the last model
a.loop.starting_model = 1 # First loop model a.loop.ending_model = 2 # Last loop model
a.make() # do the actual homology modeling
Thanks,
Thijs Beuming
Thijs Beuming wrote: > I am trying to optimize a loop in close proximity to a ligand. For > some reason, the intial models have the ligand present, while the > loop optimized models do not. Hence, there are major clashes between > some of the calculated loops and the ligand. Is it possible to > optimize loops in the presence of the ligand?
It's hard to say for sure what your problem is without seeing all of your input files, but it looks like you haven't turned on env.io.hetatm, so I don't think you should be seeing ligands in either your regular models or your loop models.
You can see the restraints that loopmodel builds by looking at the loop_restraints() method in the modlib/modeller/automodel/loopmodel.py file. By default it builds stereochemical, phi/psi, and dihedral restraints, but not the ligand-protein restraints that automodel does. You could easily fix this to restrain ligands by overriding the special_restraints() method and calling automodel.nonstd_restraints() from there. Note however that the ligand-protein restraints may be too strong to allow your loop to explore much conformational space, so it may make sense to use weaker or fewer restraints here.
> def special_restraints(self, aln): > rsr = self.restraints > rsr.add(atom_ids=('CA:189', 'CA:372'), > restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1)) > rsr.add(atom_ids=('CA:189', 'CA:393'), > restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1)) > rsr.add(atom_ids=('CA:372', 'CA:393'), > restraint_parameters=(3, 1, 1, 27, 2, 2, 0, 10.0, 0.1))
Note that this way of specifying restraints is error prone and deprecated. You can see examples of the more robust method at http://salilab.org/modeller/9v2/manual/node209.html or http://salilab.org/modeller/tutorial/advanced.html
Ben Webb, Modeller Caretaker
participants (2)
-
Modeller Caretaker
-
Thijs Beuming