[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [modeller_usage] knots in loops and serious steric clashes



The short answer is that your loops are way too long. I would expect reasonable results for loops up to perhaps 20 residues, but 60 is just too much conformational space to explore.

If you want to try it anyway, the loop modeling protocol starts by placing the loop atoms on a straight line between the loop termini. With a long loop, this simple strategy is likely to place some atoms inside the rest of the protein, and then the optimizer will not be able to recover. You can change the way this initial model is created by overriding the build_ini_loop method:
If your starting structures look reasonable, then you could perhaps just have this method do nothing.

DOPE scores are just energies, so the absolute value doesn't mean very much. You should only use them to rank one loop model relative to another, not to determine if a loop is favorable.

        Ben Webb, Modeller Caretaker
-- 
modeller-care AT ucsf.edu             https://salilab.org/modeller/

From: Modeller usage list <MODELLER_USAGE AT LISTSRV.UCSF.EDU> on behalf of Federica Guarra <federica.guarra AT UNIPV.IT>
Sent: Wednesday, September 9, 2026 6:38 AM
To: MODELLER_USAGE AT LISTSRV.UCSF.EDU <MODELLER_USAGE AT LISTSRV.UCSF.EDU>
Subject: [modeller_usage] knots in loops and serious steric clashes
 
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
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
 
ZjQcmQRYFpfptBannerEnd

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

modeller-usage mailing list; unsubscribe


modeller-usage mailing list; unsubscribe