Hi,
I am trying to model a heptamer (homomultimer), but the structure generated is wrong because there are many clashes and it looks completely different from the template. How can I solve this issue? Please, see my files and scripts below.
The .ali for the alignment was edited by repeating the sequence seven times and separating each sequence by "/"
>P1;name
Sequence:name::::::::
XXXXX/XXXXX/XXXXX/XXXXX*
The alignment script
from modeller import *
env = Environ()
aln = Alignment(env)
mdl = Model(env, file='template', model_segment=('FIRST:A','LAST:F'))
aln.append_model(mdl, align_codes='template', atom_files='template.pdb')
aln.append(file='target.ali', align_codes='target')
aln.align2d(max_gap_length=50)
aln.write(file='aligned.ali', alignment_format='PIR')
aln.write(file='aligned.pap', alignment_format='PAP')
The script to build the model
from modeller import *
from modeller.automodel import *
#from modeller import soap_protein_od
log.verbose()
# Override the 'special_restraints' and 'user_after_single_model' methods:
class MyModel(AutoModel):
    def special_restraints(self, aln):
        # Constrain the A and B chains to be identical (but only restrain
        # the C-alpha atoms, to reduce the number of interatomic distances
        # that need to be calculated):
        s1 = Selection(self.chains['A']).only_atom_types('CA')
        s2 = Selection(self.chains['B']).only_atom_types('CA')
        s3 = Selection(self.chains['C']).only_atom_types('CA')
        s4 = Selection(self.chains['D']).only_atom_types('CA')
        s5 = Selection(self.chains['E']).only_atom_types('CA')
        s6 = Selection(self.chains['F']).only_atom_types('CA')
        self.restraints.symmetry.append(Symmetry(s1, s2, 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)
env = Environ()
# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']
# Be sure to use 'MyModel' rather than 'AutoModel' here!
a = MyModel(env,
            alnfile  = 'aligned.ali' ,     # alignment filename
            knowns   = 'template',              # codes of the templates
            sequence = 'target',
assess_methods=(assess.DOPE))              # code of the target
a.starting_model= 1                # index of the first model
a.ending_model  = 100                # index of the last model
                                   # (determines how many models to calculate)
a.make()                           # do comparative modeling
# Get a list of all succesfully built models from a.output
ok_models = [x for x in a.outputs if x['failure'] is None]
# Rank the models by DOPE score
key = 'DOPE score'
if sys.version_info[:2] == (2,3):
        ok_models.sort(lambda a,b: cmp(a[key], b[key]))
else:
        ok_models.sort(key=lambda a: a[key])
| 
   
	This Message Is From an External Sender
       
      
This message came from outside your organization.
       
    
Hi, 
I am trying to model a heptamer (homomultimer), but the structure generated is wrong because there are many clashes and it looks completely different from the template. How can I solve this issue? Please, see my files and scripts below. 
The .ali for the alignment was edited by repeating the sequence seven times and separating each sequence by "/" 
>P1;name 
Sequence:name:::::::: 
XXXXX/XXXXX/XXXXX/XXXXX*  
The alignment script 
from modeller import *
 
env = Environ() 
aln = Alignment(env) 
mdl = Model(env, file='template', model_segment=('FIRST:A','LAST:F')) 
aln.append_model(mdl, align_codes='template', atom_files='template.pdb') 
aln.append(file='target.ali', align_codes='target') 
aln.align2d(max_gap_length=50) 
aln.write(file='aligned.ali', alignment_format='PIR') 
aln.write(file='aligned.pap', alignment_format='PAP') 
The script to build the model 
from modeller import *
 
from modeller.automodel import * 
#from modeller import soap_protein_od 
log.verbose() 
# Override the 'special_restraints' and 'user_after_single_model' methods: 
class MyModel(AutoModel): 
    def special_restraints(self, aln): 
        # Constrain the A and B chains to be identical (but only restrain 
        # the C-alpha atoms, to reduce the number of interatomic distances 
        # that need to be calculated): 
        s1 = Selection(self.chains['A']).only_atom_types('CA') 
        s2 = Selection(self.chains['B']).only_atom_types('CA') 
        s3 = Selection(self.chains['C']).only_atom_types('CA') 
        s4 = Selection(self.chains['D']).only_atom_types('CA') 
        s5 = Selection(self.chains['E']).only_atom_types('CA') 
        s6 = Selection(self.chains['F']).only_atom_types('CA') 
        self.restraints.symmetry.append(Symmetry(s1, s2, 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) 
env = Environ() 
# directories for input atom files 
env.io.atom_files_directory = ['.', '../atom_files'] 
# Be sure to use 'MyModel' rather than 'AutoModel' here! 
a = MyModel(env, 
            alnfile  = 'aligned.ali' ,     # alignment filename 
            knowns   = 'template',              # codes of the templates 
            sequence = 'target',
 
assess_methods=(assess.DOPE))              # code of the target 
a.starting_model= 1                # index of the first model 
a.ending_model  = 100                # index of the last model 
                                   # (determines how many models to calculate) 
a.make()                           # do comparative modeling 
# Get a list of all succesfully built models from a.output 
ok_models = [x for x in a.outputs if x['failure'] is None] 
# Rank the models by DOPE score 
key = 'DOPE score' 
if sys.version_info[:2] == (2,3): 
        ok_models.sort(lambda a,b: cmp(a[key], b[key])) 
else: 
        ok_models.sort(key=lambda a: a[key]) 
 |