Hi everybody,
I am really hoping that I am not asking a dumb question but I cannot seem to get the restraints to work on my protein. To try and get to grips with this I am using a target-template sequence identity of 100%. I have set the secondary structure as is in the known structure but cannot seem to 'force' the restraints through onto the target.
I have posted the script below. Any help on this would be very much appreciated!
Many thanks in advance,
Tory
from modeller import *
from modeller.automodel import *
class MyModel(automodel):
def special_restraints(self, aln):
rsr = self.restraints
# Addition of 3 disulphides:
self.patch(residue_type='DISU', residues=(self.residues['43'],self.residues['62']))
#Residues 20 through 30 should be an alpha helix:
rsr.add(secondary_structure.alpha(self.residue_range('20:', '37:')))
rsr.add(secondary_structure.alpha(self.residue_range('54:', '65:')))
rsr.add(secondary_structure.alpha(self.residue_range('75:', '89:')))
rsr.add(secondary_structure.alpha(self.residue_range('111:', '115:')))
rsr.add(secondary_structure.alpha(self.residue_range('119:', '128:')))
rsr.add(secondary_structure.alpha(self.residue_range('137:', '154:')))
#Two beta-strands:
rsr.add(secondary_structure.strand(self.residue_range('13:', '18:')))
rsr.add(secondary_structure.strand(self.residue_range('42:', '43:')))
rsr.add(secondary_structure.strand(self.residue_range('66:', '73:')))
rsr.add(secondary_structure.strand(self.residue_range('102:', '106:')))
rsr.add(secondary_structure.strand(self.residue_range('132:', '133:')))
log.verbose()
env = environ()
# directories for input atom files
env.io.atom_files_directory = ['.', '../../atom_files']
a = MyModel(env,
alnfile='../tlr1_tir_template.ali',
knowns='1fyv',
sequence='hTLR1TIR',
assess_methods=(assess.DOPE, assess.normalized_dope, assess.DOPEHR, assess.GA341))
a.starting_model = 1
a.ending_model = 100
# Very thorough VTFM optimization:
a.library_schedule = autosched.slow
a.max_var_iterations = 300
# Thorough MD optimization:
a.md_level = refine.very_slow
# Repeat the whole cycle 2 times and do not stop unless obj.func. > 1E6
a.repeat_optimization = 5
a.max_molpdf = 1e6
a.make()
# Get a list of all successfully built models from a.outputs
ok_models = filter(lambda x: x['failure'] is None, a.outputs)
# Rank the models by DOPE score
key = 'DOPE score'
ok_models.sort(lambda a,b: cmp(a[key], b[key]))
# Get top model
m = ok_models[0]
print "Top model 1: %s (DOPE score %.3f)" % (m['name'], m[key])
m = ok_models[1]
print "Top model 2: %s (DOPE score %.3f)" % (m['name'], m[key])
m = ok_models[2]
print "Top model 3: %s (DOPE score %.3f)" % (m['name'], m[key])
m = ok_models[3]
print "Top model 4: %s (DOPE score %.3f)" % (m['name'], m[key])
m = ok_models[4]
print "Top model 5: %s (DOPE score %.3f)" % (m['name'], m[key])