Hi, I'm modelling a homopentamer using two templates. I want the five subunits of my model to be as much symmetrical as possible. So, I'm using the symmetry constrains that I found in the manual. The example script was built for a homodimer, so I adapted it to my homopentamer. I also included the indications to rename the chains and renumber the residues. However, the models I obtain show important structural differences between the different chains. I can see those differences visually and also when I plot the DOPE profiles of the five chains. I want to know if there is any mistake in my script, or something that I could add to it, in order to improving my results. Thank you in advance fot you help, Iván Felsztyna
# Comparative modeling by the automodel class # # Demonstrates how to build multi-chain models # from modeller import * from modeller.automodel import * # Load the automodel class
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') 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)) self.restraints.symmetry.append(symmetry(s1, s5, 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)
class MyModel(automodel): def special_patches(self, aln): # Rename both chains and renumber the residues in each self.rename_segments(segment_ids=['A', 'B', 'C', 'D', 'E'], renumber_residues=[1, 1, 1, 1, 1])
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='ali.ali', knowns=('a','b'), sequence=('r'), assess_methods=(assess.DOPE, assess.GA341))
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