I'm currently using multi-chain modeller script to build a hetero-dimer protein complex but I faced to this error and I can't fix it. It is just for practice so I choose a simple dimer protein and mutated the sequence but the sequence length between .ali file and the pdb file of the template is similar.
( There is no such chain B, modeller.ModellerError: define__595E> Number of selected atoms in sets 2 & 3 is not the same: 109 118)
These are alignment file and scripts that I used:
a) Alignment file:
****I used align2d script to build alignment file.
from modeller import *
env = Environ()
aln = Alignment(env)
mdl = Model(env, file='temp', model_segment=(('FIRST:A','LAST:B')))
aln.append_model(mdl, align_codes='temp', atom_files='temp.pdb')
aln.append(file='Target.ali', align_codes='target')
aln.align2d(max_gap_length=50)
aln.write(file='target-temp2.ali', alignment_format='PIR')
aln.write(file='target-temp2.pap', alignment_format='PAP')***
And the alignment file would be like this:
****>P1;template
structureX:file.pdb:1:A:+227:B::: 2.30:-1.00
EIVLTQSPGTLSLSPGERATLSCRASQSVGSSYLAWYQQKPGQAPRLLIYGAFSRATGIPDRFSGSGSGTDFTLT
ISRLEPEDFAVYYCQQYGSSPWTFGQGTKVEIKR/QVQLVESGGGVVQPGRSLRLSCAASGFTFSSYTMHWVRQA
PGKGLEWVTFISYDGNNKYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAIYYCARTGWLGPFDYWGQGTLVT
VSS*
>P1;target
sequence:target:: :: ::: 0.00: 0.00
EIVLTQSPGSLSLSPGERATLSCRASQSVGSSYLAWFQQKPGQAHRLLIYGAFSRATGIPDRFSGSDSGTDFTLT
ISRLEPEDFAAYYCQQYGSSPWTFGQGTKVEIKR-QVQLVESGGGVVQPHRSLRLSCAASGFTFSSYTMHWVRQA
PGKGLEWVEFISYDGNNKYYADSVKGRFTITRDNSKNTLYLQMNSLRAEDTAIYYCARTGWLGPYDYWGQPTLVTVSS*
b) Building the model:
To build a multi-chain model I've tried this script as it's mentioned in the modeller manual:
*** from modeller import *
from modeller.automodel import *
log.verbose()
class MyModel(AutoModel):
def special_restraints(self, aln):
s1 = Selection(self.chains['A']).only_atom_types('CA')
s2 = Selection(self.chains['B']).only_atom_types('CA')
self.restraints.symmetry.append(Symmetry(s1, s2, 1.0))
def user_after_single_model(self):
self.restraints.symmetry.report(1.0)
env = Environ()
env.io.atom_files_directory = ['.', '../atom_files']
a = MyModel(env, alnfile = 'target-temp2.ali' ,
knowns = 'temp',
sequence = 'target')
a.starting_model= 1
a.ending_model = 2
a.make() *****
After run the script I see this error: (No such chain: B)
I was practicing before with other protein and when I saw this error I changed the alignment file (......TKVEIKR-QVQLVES......) to (.......TKVEIKR/QVQLVES........) and the problem solved. But here when I change (-) to (/) for the target sequence in alignment file I get another error : (modeller.ModellerError: define__595E> Number of selected atoms in sets 2 & 3 is not the same: 109 118)
Could you please help me? I have no idea about this error.
And I have another question. Is it possible to build a single polypeptide chain model with multi-chain approach? Is there a way to combine multi-chain script with multi-template script to keep the orientation of the different protein domains?