Hi, I'm trying to add 3 loops to a crystal structure (loops are missing) without making any changes to the original X-Ray. I base the script on the existing example script 'examples/automodel/loop.py'. My script:
########################################################## from modeller import * from modeller.automodel import * # Load the AutoModel class
log.verbose() env = Environ()
code = '5uv1'
# directories for input atom files env.io.atom_files_directory = ['.']
# Override the regular LoopModel class to select our own loops class MyLoop(LoopModel): # This routine picks the residues to be refined by loop modeling def select_loop_atoms(self): # Select gaps for loop modeling return Selection(self.residue_range('157:A', '163:A'), self.residue_range('434:A', '439:A'), self.residue_range('507:A', '517:A'))
a = MyLoop(env, inimodel='5uv1_fill.B99990001.pdb', #code+'.pdb', # initial model of the target sequence=code, # code of the target loop_assess_methods=assess.DOPE) # assess loops with DOPE a.loop.starting_model = 1 # First loop model a.loop.ending_model = 4 # Last loop model a.loop.md_level = refine.very_fast # Loop model refinement level
a.make()
##########################################################
In the inimodel ('5uv1_fill.B99990001.pdb'), the missing residues have been added and simply appear as a straight line and are only connected to one end. When I try do loop modeling using the above script, the loop atoms hardly move and don't reconnect to the other endpoint. How can I model the loops without making any change to the other atoms.
Thanks, Dan
On 6/15/23 7:33 AM, majort--- via modeller_usage wrote: > I'm trying to add 3 loops to a crystal structure (loops are missing) > without making any changes to the original X-Ray. I base the script > on the existing example script 'examples/automodel/loop.py'.
Your script looks largely OK to me. But since you have three separate loops, it's unlikely that the best-scoring model has all three loops in their best conformation (unless they are strongly interacting with each other). You might consider modeling just the first loop, picking the best-scoring solution, and then using that as your initial model for the second loop, and so on.
> In the inimodel ('5uv1_fill.B99990001.pdb'), the missing residues > have been added and simply appear as a straight line and are only > connected to one end.
You don't say how you generated that model, but it sounds like you used comparative modeling (AutoModel) and just took the unoptimized (.ini) file it generated. For insertions (i.e. residues that are not aligned with a template) coordinates are generated using CHARMM internal coordinates as per step 2.2 at https://salilab.org/modeller/10.4/manual/node498.html, which will result in an extended chain conformation that is attached to the rest of the protein only at the N-terminal end. If you want them connected at both ends, that is what AutoModel does during its model refinement.
> When I try do loop modeling using the above script, the loop atoms > hardly move and don't reconnect to the other endpoint.
If they don't move at all, it's because you have selected the wrong residue ranges in select_loop_atoms().
To achieve reasonable sampling for such long loops, you will likely need to build a lot more than 4 models, perhaps 200 or so.
Ben Webb, Modeller Caretaker
Thanks, I added +/- 2 residues at the edges of my selections and it worked. I have 2 additional questions: 1. How can I add C- and N-terminal residues? I couldn't find a way to do this. 2. How can I select and write the pdb file for the lowest energy model after creating a large number of models (i.e., as part of a pipeline)?
Thank you very much, Dan
On 6/16/23 1:16 AM, majort--- via modeller_usage wrote:> 1. How can I add C- and N-terminal residues? I couldn't find a way > to do this. This is no different from adding an insertion in the middle of the sequence. The complication for loop modeling is that if one end of the loop is free, as will happen at a terminus, the sampler is likely to find "loop" conformations where the loop extends out into space away from the rest of the protein (remember, Modeller does not model solvent or crystal contacts). More likely you want the loop to be packed with the rest of the protein. To attempt to do that, you would need to place the terminal residue manually and exclude it from your loop selection.
> 2. How can I select and write the pdb file for the lowest energy > model after creating a large number of models (i.e., as part of a pipeline)?
You can write a little bit of Python code to query the outputs. There's an example at https://salilab.org/modeller/10.4/manual/node31.html
Ben Webb, Modeller Caretaker