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

[modeller_usage] Sidechains Refinement and Symmetry definition



Dear Modeller Caretaker,

I'm studying an homotetramer and i want to identify new sidechain
orientations on a specific helix segment without any more changes in the
protein structure of my initial pdb. So i tried the loopmodel routine:

###################################################################
from modeller import *
from modeller.automodel import *    # Load the automodel class

log.verbose()
env = environ()
env.io.atom_files_directory = ['.']

class MyLoop(loopmodel):
    def select_loop_atoms(self):
        return selection(self.residue_range('232:A', '268:A'),
                         self.residue_range('232:B', '268:B'),
                         self.residue_range('232:C', '268:C'),  
                   self.residue_range('232:D','268:D')).only_sidechain()


m = MyLoop(env,        
            inimodel   = 'herg_merged.pdb',     # initial model 
            sequence = 'herg_trg')              # target

m.loop.starting_model= 1                # index of the first model
m.loop.ending_model  = 50               # index of the last model
                                   
m.loop.md_level = refine.very_fast

m.make()                          # do refinement
###########################################################



Therefore, I obtained 50 models with different sidechain-orientations
over the specified segments.
My question is the following:

?- Is it possible to preserve the symmetry of the sidechains over all
the subunits? or...to perform a total symmetry of the models by a
post-processing step of refinement?

Furthermore, I tried also to define special symmetry restraints, but all
the 50 models resulted equals between them... it seems that nothing
happens:

############################################
 
    def special_restraints(self, aln):
        s1 = selection(self.chains['A'])
        s2 = selection(self.chains['B'])
        s3 = selection(self.chains['C'])
        s4 = selection(self.chains['D'])
        self.restraints.symmetry.append(symmetry(s1, s2, 1.0))
        self.restraints.symmetry.append(symmetry(s1, s3, 1.0))
        self.restraints.symmetry.append(symmetry(s1, s4, 1.0))
     def user_after_single_model(self):
        # Report on symmetry violations greater than 1A after building
        # each model:
         self.restraints.symmetry.report(1.0)

#################################################

Thank's in advance for your time and consideration


My regards,
Giampaolo