Hello Isabel thank you for your message:).
Did you superimpose the before and after structures in Pymol and then align
them to generate an RMSD? If so whats the RSD Value?
Thanks:)
On Mon, Oct 16, 2023 at 5:56 PM Isabel Elliott <>
wrote:
> 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 <>
> *Date: *Monday, October 16, 2023 at 4:52 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 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 <>
> 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 <>
> *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 <
> > 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
>
> https://salilab.org/mm/postorius/lists/modeller_usage.salilab.org/
>
>
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
Â
Â