I used Modeller to reconstruct around a 100 proteins with true residue-residue contacts and secondary structure information. I could reconstruct only a few proteins with high accuracy. Below is a sample script I used for Modelling. I
did not use any templates. (I found that Modeller satisfies more contact restraints when I provided a template with just one residue’s coordinates instead of an extended structure as a template.) I wonder why Modeller could not satisfy true contact restraints.
Is there any specific way to reconstruct proteins using true residue contacts?
from modeller import *
from modeller.automodel import *
log.verbose()
env = environ()
env.io.atom_files_directory = ['.']
class MyModel(automodel):
def special_restraints(self, aln):
rsr = self.restraints
at = self.atoms
# Helices and Strands
rsr.add(secondary_structure.strand(self.residue_range('3:', '11:')))
rsr.add(secondary_structure.strand(self.residue_range('16:', '26:')))
rsr.add(secondary_structure.alpha(self.residue_range('126:', '140:')))
# Contacts:
rsr.add(forms.upper_bound(group=physical.xy_distance,feature=features.distance(at['CA:9'], at['CA:18']),mean=8.0, stdev=0.1))
rsr.add(forms.upper_bound(group=physical.xy_distance,feature=features.distance(at['CB:3'], at['CB:24']),mean=8.0, stdev=0.1))
rsr.add(forms.upper_bound(group=physical.xy_distance,feature=features.distance(at['CB:5'], at['CB:22']),mean=8.0, stdev=0.1))
rsr.add(forms.upper_bound(group=physical.xy_distance,feature=features.distance(at['CB:122'], at['CB:132']),mean=8.0, stdev=0.1))
a = MyModel(env,
alnfile = '1f21.pir', # alignment filename
knowns = 'empty', # codes of the templates
sequence = '1f21') # code of the target
a.starting_model= 1
a.ending_model = 20
a.make()
C;
>P1;empty
structureX:empty: 1: : 152: : : :1.0:
K-------------------------------------------------------------------------------------------------------------------------------------------------------*
C;
>P1;1f21
: : : : : : : : :
KQVEIFTDGSALGNPGPGGYGAILRYRGREKTFSAGYTRTTNNRMELMAAIVALEALKEHAEVILSTDSQYVRQGITQWIHNWKKRGWKTADKKPVKNVDLWQRLDAALGQHQIKWEWVKGHAGHPENERADELARAAAMNPTLEDTGYQVE*