Query about symmetry in a multi-chain model
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
On 7/25/18 7:26 AM, Iván Felsztyna wrote: > 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.
You have declared the "MyModel" class twice in your script. The first declaration only adds symmetry restraints (which look fine) and the second only renames chains. The second declaration will simply override the first one, so your symmetry restraints won't be applied. Just remove the second "class MyModel(automodel):" line from your script and it should work.
Ben Webb, Modeller Caretaker
participants (2)
-
Iván Felsztyna
-
Modeller Caretaker