No edit summary
(Fix broken links, tidy up markup, add to Examples category)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
<!-- ## page was renamed from Cyclic_protein -->
To build a model of a cyclic protein, you must do two things:
To build a model of a cyclic protein, you must do two things:
# Disable the default patching, which would create a C and N terminus.
# Disable the default patching, which would create a C and N terminus.
# Use the LINK patching residue in the '''special_patches''' routine to link the last and first residues.
# Use the LINK patching residue in the '''special_patches''' routine to link the last and first residues.


For example, the script below builds a cyclic model of 1fdx using 5fd1 as a template (attachment:alignment.ali is the example from the Modeller distribution).
For example, the script below builds a cyclic model of 1fdx using 5fd1 as a template ([https://salilab.org/modeller/archive/cyclic-protein-example/alignment.ali alignment.ali] is the example from the Modeller distribution).


/!\ It is important that you get the numbering of '''residue_ids''' correct; the residue numbers must correspond to the '''last''' and '''first''' residue in the cyclic protein respectively (in the model, not the template). If in doubt, build a regular model first and look at the residue numbers in the final models or `.ini` file.
⚠️ It is important that you get the residue order correct; the residues must be the '''last''' and '''first''' residue in the cyclic protein respectively (in the model, not the template). If in doubt, build a regular model first and look at the residue numbers and chain IDs in the final models or <code>.ini</code> file.




<pre><nowiki>#!python
<syntaxhighlight lang="python">
from modeller import *
from modeller.automodel import *
from modeller.automodel import *


log.verbose()
log.verbose()
env = environ()
env = Environ()


# Disable default NTER and CTER patching
# Disable default NTER and CTER patching
env.patch_default = False  
env.patch_default = False  


class mymodel(automodel):
class MyModel(AutoModel):
     def special_patches(self, aln):
     def special_patches(self, aln):
         # Link between residues 54 and 1 to make chain cyclic:
         # Link between last residue (-1) and first (0) to make chain cyclic:
         self.patch(residue_type='LINK',
         self.patch(residue_type='LINK',
                   residues=(self.residues['54'], self.residues['1']))
                   residues=(self.residues[-1], self.residues[0]))


# Use the new 'mymodel' class rather than 'automodel'
# Use the new 'MyModel' class rather than 'AutoModel'
a = mymodel(env, alnfile='alignment.ali', knowns='5fd1', sequence='1fdx')
a = MyModel(env, alnfile='alignment.ali', knowns='5fd1', sequence='1fdx')


a.starting_model = a.ending_model = 1
a.starting_model = a.ending_model = 1
a.make()
a.make()
</nowiki></pre>
</syntaxhighlight>
 


[[Category:Examples]]

Latest revision as of 21:22, 16 August 2022

To build a model of a cyclic protein, you must do two things:

  1. Disable the default patching, which would create a C and N terminus.
  2. Use the LINK patching residue in the special_patches routine to link the last and first residues.

For example, the script below builds a cyclic model of 1fdx using 5fd1 as a template (alignment.ali is the example from the Modeller distribution).

⚠️ It is important that you get the residue order correct; the residues must be the last and first residue in the cyclic protein respectively (in the model, not the template). If in doubt, build a regular model first and look at the residue numbers and chain IDs in the final models or .ini file.


from modeller import *
from modeller.automodel import *

log.verbose()
env = Environ()

# Disable default NTER and CTER patching
env.patch_default = False 

class MyModel(AutoModel):
    def special_patches(self, aln):
        # Link between last residue (-1) and first (0) to make chain cyclic:
        self.patch(residue_type='LINK',
                   residues=(self.residues[-1], self.residues[0]))

# Use the new 'MyModel' class rather than 'AutoModel'
a = MyModel(env, alnfile='alignment.ali', knowns='5fd1', sequence='1fdx')

a.starting_model = a.ending_model = 1
a.make()