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 <> Date: Monday, October 16, 2023 at 4:23 PM To: Isabel Elliott <> Cc: Isabel Elliott via modeller_usage <> 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 <<">mailto:>> 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 <">mailto:> https://salilab.org/mm/postorius/lists/modeller_usage.salilab.org/
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 |