Hi,
Thanks. I followed all the steps sequentially i.e. first produced a .seq file from my pdb file. Then I created an alignment.ali file with gap characters for the missing residues and the full sequence and finally I ran the script:
from modeller import * # Load standard Modeller classes
from modeller.automodel import * # Load the AutoModel class
log.verbose() # Create log file
env = Environ()
# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']
env.io.water = True
# Only refine/move missing residues - restrain crystal coordinates
class MyModel(LoopModel):
#picks residues to be refined by loop modelling
def select_loop_atoms(self):
#refines residue ranges defined simultaneously
return Selection(self.residue_range('5:A', '13:A'),
self.residue_range('99:B', '105:B'),
self.residue_range('251:D', '256:D'))
# redefine the special_patches routine to include additional disulfides
def special_patches(self,aln):
self.patch(residue_type='DISU',residues=(self.residues['26:A'],self.residues['199:C']))
self.patch(residue_type='DISU',residues=(self.residues['29:A'],self.residues['201:C']))
a = MyModel(env, alnfile = 'alignment.ali', # alignment file
knowns = 'xxx', # aa sequence of original template - crystal coordinates
sequence = 'xxx_fill', # aa sequence of original template with missing residues filled in
loop_assess_methods = (assess.DOPE,
assess.DOPEHR,
assess.GA341))
a.starting_model= 1 # Index of the first model a.ending_model = 1 # Index of the last model
a.loop.starting_model = 1 # First loop refined model a.loop.ending_model = 10 # Last loop refined model a.loop.md_level = refine.fast # Loop model refinement level
a.make() # Do modelling
From: Joel Subach mjsubach@alumni.ncsu.edu Date: Monday, October 16, 2023 at 4:52 PM To: Isabel Elliott I.G.Elliott@soton.ac.uk Cc: Isabel Elliott via modeller_usage modeller_usage@salilab.org Subject: Re: [modeller_usage] Missing residues - restrain crystal coordinates CAUTION: This e-mail originated outside the University of Southampton. Hi Isabel thank you for your email:), I superficially looked at your messages, did you follow all of the steps sequentially from the link or did you skip steps? Thanks:)
On Mon, Oct 16, 2023 at 5:36 PM Isabel Elliott <I.G.Elliott@soton.ac.ukmailto:I.G.Elliott@soton.ac.uk> wrote: Hi,
Thank you very much for your quick response.
I have used the select_loop_atoms function within my LoopModel class to define the specific residues that are allowed to move (see script in initial email). I assumed based on this tutorial https://salilab.org/modeller/wiki/Missing_residues that only the defined residues would be allowed to move, whilst any residues not defined would be restrained in their original positions. Is there something else I need to add to my script to ensure all the residues which have not been modelled in are restrained? I’ve checked my script several times and the numbering of my starting structure compared to the final models and they all match up so I’m unsure what’s going wrong.
Thanks, Isabel
From: Joel Subach <mjsubach@alumni.ncsu.edumailto:mjsubach@alumni.ncsu.edu> Date: Monday, October 16, 2023 at 4:23 PM To: Isabel Elliott <I.G.Elliott@soton.ac.ukmailto:I.G.Elliott@soton.ac.uk> Cc: Isabel Elliott via modeller_usage <modeller_usage@salilab.orgmailto:modeller_usage@salilab.org> Subject: Re: [modeller_usage] Missing residues - restrain crystal coordinates CAUTION: This e-mail originated outside the University of Southampton. Hi Isabel thank you for your inquiry, if you restrain certain residues they should not move, maybe double-check to be sure that you properly coded these residues to be restrained, thanks
On Mon, Oct 16, 2023 at 5:15 PM Isabel Elliott via modeller_usage <modeller_usage@salilab.orgmailto:modeller_usage@salilab.org> wrote: Good afternoon,
I am trying to model missing residues into my crystal structure following the method on the website: https://salilab.org/modeller/wiki/Missing_residues. I am also trying to restrain the crystal coordinates so that only missing residues move (and the rest of the original crystal coordinates remain the same) during refinement using the select_atoms method. However when I compare my final models produced by my script to my original crystal structure, I find that the side chains of several amino acids three of four amino acids away from the missing residues have been flipped. How can I ensure that only the missing residues are refined and the crystal coordinates remain the same? I am wondering if I’ve missed something important out of my script. See my script below.
Many thanks.
from modeller import * # Load standard Modeller classes
from modeller.automodel import * # Load the AutoModel class
log.verbose() # Create log file
env = Environ()
# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']
env.io.water = True
# Only refine/move missing residues - restrain crystal coordinates
class MyModel(LoopModel):
#picks residues to be refined by loop modelling
def select_loop_atoms(self):
#refines residue ranges defined simultaneously
return Selection(self.residue_range('5:A', '13:A'),
self.residue_range('99:B', '105:B'),
self.residue_range('251:D', '256:D'))
# redefine the special_patches routine to include additional disulfides
def special_patches(self,aln):
self.patch(residue_type='DISU',residues=(self.residues['26:A'],self.residues['199:C']))
self.patch(residue_type='DISU',residues=(self.residues['29:A'],self.residues['201:C']))
a = MyModel(env, alnfile = 'alignment.ali', # alignment file
knowns = 'xxx', # aa sequence of original template - crystal coordinates
sequence = 'xxx_fill', # aa sequence of original template with missing residues filled in
loop_assess_methods = (assess.DOPE,
assess.DOPEHR,
assess.GA341))
a.starting_model= 1 # Index of the first model a.ending_model = 1 # Index of the last model
a.loop.starting_model = 1 # First loop refined model a.loop.ending_model = 10 # Last loop refined model a.loop.md_level = refine.fast # Loop model refinement level
a.make() # Do modelling
_______________________________________________ modeller_usage mailing list modeller_usage@salilab.orgmailto:modeller_usage@salilab.org https://salilab.org/mm/postorius/lists/modeller_usage.salilab.org/