[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[modeller_usage] 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.