problem of strand/sheet
Dear Modeller,
I am trying to put secondary structure restraints (strand and sheet) to the MODELLER modeling. However, I found that most of the specified hydrogen-bonds between strands have not been satisfied in the final model. I understand that MODELLER tries to satisfy ALL the restraints and there may be some conflicts between my hydrogen-bond and other restraints.
My questions are: 1. do I have a way to make some restraints stronger than other restraints? 2. do I have a way to force some important restraints (like the beta-sheet) no matter whether they are conflicted with others?
Thank you very much!
The following is the python file I am using (please kindly point out any error in the file):
from modeller import * from modeller.automodel import * log.verbose() env = environ()
env.io.atom_files_directory = './:../atom_files'
class mymodel(automodel): def special_restraints(self, aln): rsr = self.restraints at = self.atoms rsr.append(file='distCA.rsr')
rsr.add(secondary_structure.strand(self.residue_range('10:', '15:'))) rsr.add(secondary_structure.strand(self.residue_range('19:', '23:'))) rsr.add(secondary_structure.strand(self.residue_range('30:', '31:'))) rsr.add(secondary_structure.strand(self.residue_range('39:', '41:'))) rsr.add(secondary_structure.strand(self.residue_range('44:', '49:'))) rsr.add(secondary_structure.strand(self.residue_range('55:', '66:'))) rsr.add(secondary_structure.strand(self.residue_range('69:', '74:'))) rsr.add(secondary_structure.strand(self.residue_range('78:', '85:'))) rsr.add(secondary_structure.strand(self.residue_range('93:', '94:'))) rsr.add(secondary_structure.strand(self.residue_range('98:', '101:'))) rsr.add(secondary_structure.strand(self.residue_range('110:', '116:'))) rsr.add(secondary_structure.strand(self.residue_range('127:', '131:'))) rsr.add(secondary_structure.strand(self.residue_range('135:', '136:'))) rsr.add(secondary_structure.sheet(at['O:11'], at['N:23'],sheet_h_bonds=-4)) rsr.add(secondary_structure.sheet(at['O:20'], at['N:47'],sheet_h_bonds=-3)) rsr.add(secondary_structure.sheet(at['O:39'], at['N:115'],sheet_h_bonds=-2)) rsr.add(secondary_structure.sheet(at['O:44'], at['N:112'],sheet_h_bonds=-2)) rsr.add(secondary_structure.sheet(at['N:61'], at['O:71'],sheet_h_bonds=-2)) rsr.add(secondary_structure.sheet(at['O:56'], at['N:100'],sheet_h_bonds=-2)) rsr.add(secondary_structure.sheet(at['N:70'], at['O:82'],sheet_h_bonds=-5)) rsr.add(secondary_structure.sheet(at['O:81'], at['N:116'],sheet_h_bonds=-4))
a = mymodel(env, alnfile='alignment.ali', knowns=('pdb1','pdb2','pdb3'), sequence='target', ) a.starting_model = 1 a.ending_model = 3
a.make()
--------------------------------- Never miss a thing. Make Yahoo your homepage.
model model wrote: > I am trying to put secondary structure restraints (strand and sheet) to > the MODELLER modeling. However, I found that most of the specified > hydrogen-bonds > between strands have not been satisfied in the final model. I understand > that MODELLER tries to satisfy ALL the restraints and there > may be some conflicts between my hydrogen-bond and other restraints.
One thing to check is the .rsr file or the list of violated restraints, to make sure it's actually trying to restrain the correct set of hydrogen bonds. The syntax for secondary_structure.sheet() is easy to get wrong, and Modeller does little sanity checking here.
> My questions are: 1. do I have a way to make some restraints stronger than > other restraints? 2. do I have a way to force some important restraints > (like the beta-sheet) no matter whether they are conflicted with others?
1. Yes - you can just scale them; see http://salilab.org/modeller/9v3/manual/node19.html Sheet hydrogen bonds show up as physical.h_bond, so you can scale the contributions with something like env.schedule_scale = physical.values(default=1.0, h_bond=10.0) Alternatively, you can edit the restraint file by hand and decrease the standard deviations (no way to do this from the Python script currently).
2. Not directly; you'd have to identify the conflicting restraints first, and either scale them down (if you can) or use restraints.unpick() to unpick them and then restraints.condense() to permanently remove them.
Ben Webb, Modeller Caretaker
participants (2)
-
model model
-
Modeller Caretaker