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])