Missing residues - restrain crystal coordinates
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
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.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.org > 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
From: Joel Subach mjsubach@alumni.ncsu.edu Date: Monday, October 16, 2023 at 4:23 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 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/
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.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.edu > *Date: *Monday, October 16, 2023 at 4:23 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 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.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.org > 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
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/
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 I.G.Elliott@soton.ac.uk 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 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.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.edu > *Date: *Monday, October 16, 2023 at 4:23 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 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.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.org > https://salilab.org/mm/postorius/lists/modeller_usage.salilab.org/ > >
On 10/16/23 8:15 AM, Isabel Elliott via modeller_usage wrote: > 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.
In your script you have defined the select_loop_atoms method, *not* select_atoms. The script is essentially doing three things:
1. Building an initial model, using your template where the sequence is the same, and internal coordinates where you have gaps or sequence differences. This file is generated in PDB format with a '.ini' extension.
2. Refining a subset of the model atoms, defined by select_atoms (by default all atoms will be refined).
3. Further refinement using Modeller's loop modeling protocol, potentially of a different subset (defined by select_loop_atoms).
If your template is missing some sidechains then they will be filled in in step (1) above - and you'll see that in the .ini file. Otherwise, defining select_atoms, as described in the wiki page at https://salilab.org/modeller/wiki/Missing_residues, is what you need.
Ben Webb, Modeller Caretaker
Thanks very much – this is really helpful and has solved my problem.
From: Modeller Caretaker modeller-care@salilab.org Date: Monday, October 16, 2023 at 7:36 PM To: Isabel Elliott I.G.Elliott@soton.ac.uk, 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.
On 10/16/23 8:15 AM, Isabel Elliott via modeller_usage wrote: > I am trying to model missing residues into my crystal structure > following the method on the website: > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsalilab.or...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.
In your script you have defined the select_loop_atoms method, *not* select_atoms. The script is essentially doing three things:
1. Building an initial model, using your template where the sequence is the same, and internal coordinates where you have gaps or sequence differences. This file is generated in PDB format with a '.ini' extension.
2. Refining a subset of the model atoms, defined by select_atoms (by default all atoms will be refined).
3. Further refinement using Modeller's loop modeling protocol, potentially of a different subset (defined by select_loop_atoms).
If your template is missing some sidechains then they will be filled in in step (1) above - and you'll see that in the .ini file. Otherwise, defining select_atoms, as described in the wiki page at https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsalilab.or...https://salilab.org/modeller/wiki/Missing_residues, is what you need.
Ben Webb, Modeller Caretaker -- modeller-care@salilab.org https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsalilab.or...https://salilab.org/modeller/ Modeller mail list: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsalilab.or...https://salilab.org/mailman/listinfo/modeller_usage
participants (3)
-
Isabel Elliott
-
Joel Subach
-
Modeller Caretaker