[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[modeller_usage] Re: Missing residues - restrain crystal coordinates



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 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
" target="_blank">
https://salilab.org/mm/postorius/lists/modeller_usage.salilab.org/