![](https://secure.gravatar.com/avatar/7a7e911e70b156562a000016fa4fa905.jpg?s=120&d=mm&r=g)
I have modeled a homopentamer using automodel with enforcing pentameric symmetry, and everything looks fine. There are two regions of each subunit that have 3 and 5 residue long loops that aren't in the templates. When I do loop modeling of all 10 of these loops at the same time using a script based on the one in the Advanced tutorial, I get a set of models where the loops are no longer symmetric. I then introduced the same symmetry constraints in the loop modeling that I used in the original model, and it produced models with the appropriate symmetry. However, it took much longer (765 seconds of cpu time to generate 5 loop models without the symmetry , but 8629 seconds to generate 2 loop models with symmetry). I don't mind letting things run overnight to generate models, but the hugh increase in computational time suggests that I might not be doing this right. Below is the python script: ******************************************************************* # Loop refinement of an existing model of the receptor from modeller import * from modeller.automodel import *
log.verbose() env = environ()
# directories for input atom files env.io.atom_files_directory = './:../atom_files'
def defsym(mdl, aln, seg1, seg2): for (set,seg) in [(2,seg1), (3,seg2)]: mdl.pick_atoms(aln, pick_atoms_set=set,selection_segment=seg, atom_types='ALL',selection_status='INITIALIZE', selection_search='SEGMENT')
mdl.symmetry.define(symmetry_weight=1.0,add_symmetry=(True,False))
segsize = 217 #number of residues per chain
# Create a new class based on 'loopmodel' so that we can redefine # select_loop_atoms (necessary) class myloop(loopmodel): # This routine picks the residues to be refined by loop modeling def select_loop_atoms(self): # 4 residue insertion in Loop C in each subunit self.pick_atoms(selection_segment=('198:', '201:'), selection_status='INITIALIZE') self.pick_atoms(selection_segment=('415:', '418:'), selection_status='ADD') self.pick_atoms(selection_segment=('632:', '635:'), selection_status='ADD') self.pick_atoms(selection_segment=('849:', '852:'), selection_status='ADD') self.pick_atoms(selection_segment=('1066:', '1069:'), selection_status='ADD') # 3 residue insertion in Loop F in each subunit self.pick_atoms(selection_segment=('162:', '164:'), selection_status='ADD') self.pick_atoms(selection_segment=('379:', '381:'), selection_status='ADD') self.pick_atoms(selection_segment=('596:', '598:'), selection_status='ADD') self.pick_atoms(selection_segment=('813:', '815:'), selection_status='ADD') self.pick_atoms(selection_segment=('1030:', '1032:'), selection_status='ADD') def special_restraints(self, aln): #identify the seqments to maintain symmetry: A-B, B-C, C-D, D-E defsym(self,aln,seg1=('1',str(segsize)), seg2=(str(segsize+1),str(2*segsize))) defsym(self,aln,seg1=(str(segsize+1),str(2*segsize)), seg2=(str(2*segsize+1),str(3*segsize))) defsym(self,aln,seg1=(str(2*segsize+1),str(3*segsize)), seg2=(str(3*segsize+1),str(4*segsize))) defsym(self,aln,seg1=(str(3*segsize+1),str(4*segsize)), seg2=(str(4*segsize+1),str(5*segsize)))
m = myloop(env, inimodel='ReceptorBEST.pdb', # initial model of the target sequence='Receptor') # code of the target
m.loop.starting_model= 11 # index of the first loop model m.loop.ending_model = 12 # index of the last loop model m.loop.md_level = refine.very_fast # loop refinement method
m.make() ********************************************************************************
The only difference between the two scripts is the inclusion of the definition of the defsym operation and the mdl.symmetry.define operation and the "def special_restraints" block. The cutting and pasting into this message screwed up the indentation, but the "mdl.symmetry.define" command is lined up with the "for (set, seg).." line.
Have I done this right? I'm still at the "copying other scripts and trying to adapt them to my needs stage." There was an earlier post about this topic (http://salilab.org/archives/modeller_usage/2005/msg00381.html )but I didn't quite understand how this was to be implemented in loop modeling.
Thanks!
Mike White