Dear all,
I am trying to obtain models of unresolved long loops also up to 60 aas in dimeric protein structures. What I do is that I first obtain a full model with the automodel (or loopmodel) routine starting from the incomplete pdb structure and the alignment with the full sequence and then refine each loop one by one with dope-hr_loopmodel starting from the previous step best obtained model.
However, I consistently observe that most of the resulting loop models (sometimes also scored with favourably low negative DOPE, DOPE-HR and molpdf scores) present knots or literally 'enter into' and collapse with the rest of the protein.
Here are examples of the employed scripts for loop selection and refinement.
1) Create_fullmodel.py
from modeller import *
from modeller.automodel import *
log.verbose()
env = Environ()
env.io.atom_files_directory = ['.', '../atom_files']
env.io.hetatm = True
class MyModel(automodel):
def select_atoms(self):
# Here only the second loop atoms are allowed to move
return selection( self.residue_range('216:A', '277:A'),
self.residue_range('907:B', '970:B'), self.residue_range('1285:B', '1313:B'))
a = MyModel(env, alnfile = 'sequences.ali',
knowns = 'protein_template', sequence = 'full_protein')
a.starting_model= 1
a.ending_model = 1
a.make()
2) Myloop.py:
from modeller import *
from modeller.automodel import *
class MyLoop(dopehr_loopmodel):
def select_atoms(self):
return selection(self.residue_range('907:B', '970:B'))
def select_loop_atoms(self):
return selection(self.residue_range('907:B', '970:B'))
3) loop_refinement.py
from modeller import *
from modeller.automodel import *
from modeller.parallel import *
from MyLoop_3 import MyLoop
j = job()
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
log.verbose()
env = environ()
env.io.atom_files_directory = ['.', '../atom_files']
env.io.hetatm = True
a = MyLoop(env, inimodel='protein_filled.M3.L1M14.L2M6', sequence='protein_filled.M3.L1M14.L2M6',
loop_assess_methods=(assess.DOPE,
assess.DOPEHR,
assess.normalized_dope))
a.loop.starting_model = 1
a.loop.ending_model = 100
a.loop.library_schedule = autosched.slow
a.loop.max_var_iterations = 300
a.loop.md_level = refine.very_slow
a.loop.repeat_optimization = 2
a.use_parallel_job(j)
a.make()
Why does this happen? Do you have any suggestions for improving my workflow?
Thank you in advance,
Federica