[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [modeller_usage] Block Ligand stereo chemistry problem
- To: Andre Fischer <andre.fischer AT biologie.uni-regensburg.de>
- Subject: Re: [modeller_usage] Block Ligand stereo chemistry problem
- From: Modeller Caretaker <modeller-care@ucsf.edu>
- Date: Thu, 26 Jul 2007 09:50:53 -0700
- Cc: modeller_usage@listsrv.ucsf.edu
Andre Fischer wrote:
I am modelling a Protein with a ligand. The Ligand comes from the pdb
template as a blk. Modeller works fine and the protein model seems
reasonable, except that the modelled ligand is mirrored along its length
axis compared to the template ligand. Also BLK Residues are defined
rigid. some stereo operations seem to be allowed. How can i get rid of
those? I want the ligand only to act as a steric constraint.
The rigidity is maintained by imposing restraints on all atom-atom
distances within the BLK ligand. (See the nonstd_restraints function in
the automodel class, at modlib/modeller/automodel/automodel.py, for the
Python code that generates these restraints.) Therefore, it is possible
that if your starting structure is sufficiently distorted, these
restraints may result in an inverted structure rather than the original
(or in rare cases they may not be satisfied at all).
When Modeller builds a model, the starting structure is randomized a
little to ensure that each final structure is different. By default, the
BLK residues are also randomized. You can thus ensure that no inversion
or mirroring occurs by changing this randomization procedure to leave
BLK residues untouched. See the documentation of automodel.rand_method.
By default this is set to randomize.xyz, which from
modlib/modeller/automodel/refine.py you can see does:
def xyz(atmsel):
"""Randomize all coordinates"""
mdl = atmsel.get_model()
atmsel.randomize_xyz(deviation=mdl.deviation)
- i.e., randomizes all coordinates by automodel.deviation. One way to
prevent BLK residues being randomized is to do something like
def my_randomize(atmsel):
mdl = atmsel.get_model()
atmsel = atmsel - atmsel.only_no_topology()
if len(atmsel) > 0:
atmsel.randomize_xyz(deviation=mdl.deviation)
m = automodel(env, ...)
m.rand_method = my_randomize
m.make()
This modified randomization procedure is actually taken from the
development version of Modeller, and will be the default in the next
release.
Ben Webb, Modeller Caretaker
--
modeller-care@ucsf.edu http://www.salilab.org/modeller/
Modeller mail list: http://salilab.org/mailman/listinfo/modeller_usage