Hello,
we are trying to build a symmetric hexamer of a 735 aa protein molecule. Modelling the monomer works without problems. For the hexamer, we have generated the hexameric template and replicated the target sequence in the alignment file accordingly. This works flawlessly, as well. However, if we insert these symmetry retraints (adopted from the example in the manual)
------------------------------------------- # 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, s3, s4, s5, s6, 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) -------------------------------------------
leaving both alignment and template files untouched, then the program stops with the following error:
------------------------------------------- Traceback (most recent call last): File "get-model2.py", line 42, in ? a.make() # do homology modeling File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 98, in make self.homcsr(exit_stage) File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 436, in homcsr self.mkhomcsr(selection(self), aln) File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 524, in mkhomcsr self.special_restraints(aln) File "get-model2.py", line 23, in special_restraints self.restraints.symmetry.append(symmetry(s1, s2, s3, s4, s5, s6, 1.0)) TypeError: __init__() takes exactly 4 arguments (8 given) -------------------------------------------
We are a bit lost here :( Which init call is the message referring to? Any ideas how to resolve this?
Oliver
------------------------------------------------------------------- ------------------------------------------------------------------- Forschungszentrum Juelich GmbH 52425 Juelich
Sitz der Gesellschaft: Juelich Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498 Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender), Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt, Dr. Sebastian M. Schmidt ------------------------------------------------------------------- -------------------------------------------------------------------
Hello,
I have modeled a protein structure with two subunits seperately. I want to label it as A chain and B chain. Is there any way to introduce it automatically in the pdb file rather than manually entering A or B between the residue name and residue number.
Any suggestions will be very helpful.
Thank you, Diwan
Abdul Hameed, MohamedDiwanMo wrote: > I have modeled a protein structure with two subunits seperately. I want > to label it as A chain and B chain. Is there any way to introduce it > automatically in the pdb file rather than manually entering A or B > between the residue name and residue number.
If I understand you correctly, you want to generate a single chain model, but rather than giving it no chain ID (the Modeller default) you want to call the chain 'A'. And then you want to do the same thing again for the other chain and call the model chain 'B'. This is straightforward - just override the special_patches() method, e.g.
class MyModel(automodel): def special_patches(self, aln): self.chains[0].name = 'A'
m = MyModel(env, alnfile='alignment.ali', knowns=... (etc.)
If that's not what you want to do, please clarify.
Ben Webb, Modeller Caretaker
o.h.weiergraeber@fz-juelich.de wrote: > ------------------------------------------- > Traceback (most recent call last): > File "get-model2.py", line 42, in ? > a.make() # do homology modeling > File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 98, in make > self.homcsr(exit_stage) > File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 436, in homcsr > self.mkhomcsr(selection(self), aln) > File "/usr/local/modeller_9v4/modlib/modeller/automodel/automodel.py", line 524, in mkhomcsr > self.special_restraints(aln) > File "get-model2.py", line 23, in special_restraints > self.restraints.symmetry.append(symmetry(s1, s2, s3, s4, s5, s6, 1.0)) > TypeError: __init__() takes exactly 4 arguments (8 given) > ------------------------------------------- > > We are a bit lost here :( Which init call is the message referring to? > Any ideas how to resolve this?
It tells you in the traceback - line 23 of your script is causing the problem, where you try to set up your symmetry restraints:
self.restraints.symmetry.append(symmetry(s1, s2, s3, s4, s5, s6, 1.0))
As described in the manual, the symmetry restraint restrains a pair of sets of atoms. You can't just stick six sets in there and expect it to magically work. ;) You have to instead explicitly list the pairs you want to restrain. For example, for sets A through F, you could restrain A-B, A-C, A-D etc. or more or less equivalently A-B, B-C, C-D etc. The simplest way to do the latter would be with something like
self.restraints.symmetry.append(symmetry(s1, s2, 1.0)) self.restraints.symmetry.append(symmetry(s2, s3, 1.0)) ... self.restraints.symmetry.append(symmetry(s5, s6, 1.0))
Of course, you could write a little Python loop to do this more cleanly.
Ben Webb, Modeller Caretaker