同源建模总结(一) automodel类的使用

一:自动建模的过程中包含水分子,配体残基和氢原子

如果你的模板序列中包含配体或非蛋白残基,你可以在".ali"文件中通过在模板序列和待建序列的末尾加点"."来表示,当然在执行的脚本中还要加上语句env.io.hetatm=True,默认情况下不会处理HETATM的原子。

Example: examples/automodel/model-ligand.py
# Homology modeling with ligand transfer from the template
from modeller import *              # Load standard Modeller classes
from modeller.automodel import *    # Load the automodel class

log.verbose()    # request verbose output
env = environ()  # create a new MODELLER environment to build this model in

# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']

# Read in HETATM records from template PDBs
env.io.hetatm = True

a = automodel(env,
              alnfile  = 'align-ligand.ali',  # alignment filename
              knowns   = '5fd1',              # codes of the templates
              sequence = '1fdx')              # code of the target
a.starting_model= 4                 # index of the first model
a.ending_model  = 4                 # index of the last model
                                    # (determines how many models to calculate)
a.make()                            # do the actual homology modeling
Example: examples/automodel/align-ligand.ali


C; Similar to alignment.ali, but with ligands included

>P1;5fd1
structureX:5fd1:1    :A:108  :A:ferredoxin:Azotobacter vinelandii: 1.90: 0.19
AFVVTDNCIKCKYTDCVEVCPVDCFYEGPNFLVIHPDECIDCALCEPECPAQAIFSEDEVPEDMQEFIQLNAELA
EVWPNITEKKDPLPDAEDWDGVKGKLQHLER..*

>P1;1fdx
sequence:1fdx:1    : :56   : :ferredoxin:Peptococcus aerogenes: 2.00:-1.00
AYVINDSC--IACGACKPECPVNIIQGS--IYAIDADSCIDCGSCASVCPVGAPNPED-----------------
-------------------------------..*
上面中的每个"."代表一个HETATM的残基,如果你有多个模板的话,只想要其中一个模板的配体作为建模的配体,那么可以将其他模板的对应的配体的残基改为"-".
如果想保留模板中的水分子,则需要在模板序列和待建序列中加入"w"字母,并且需要设置env.io.water=True.
如果想在待建序列中加入H原子,则需要在设置env.io.hydrogen=True.
 
二:对构建出的模型进行优化(更改默认的优化过程)
# Example of changing the default optmization schedule
from modeller import *
from modeller.automodel import *

log.verbose()
env = environ()

# Give less weight to all soft-sphere restraints:
env.schedule_scale = physical.values(default=1.0, soft_sphere=0.7)
env.io.atom_files_directory = ['.', '../atom_files']

a = automodel(env, alnfile='alignment.ali', knowns='5fd1', sequence='1fdx')
a.starting_model = a.ending_model = 1

#建好模型后的优化过程
# Very thorough VTFM optimization:
a.library_schedule = autosched.slow
a.max_var_iterations = 300

# Thorough MD optimization:
a.md_level = refine.slow

# Repeat the whole cycle 2 times and do not stop unless obj.func. > 1E6
a.repeat_optimization = 2
a.max_molpdf = 1e6
a.make()
 
三:利用多个模板来构建出一个模型
Example: examples/automodel/model-multiple.py # Homology modeling with multiple templatesfrom modeller import * # Load standard Modeller classesfrom modeller.automodel import * # Load the automodel classlog.verbose() # request verbose outputenv = environ() # create a new MODELLER environment to build this model in# directories for input atom filesenv.io.atom_files_directory = ['.', '../atom_files']a = automodel(env, alnfile = 'align-multiple.ali', # alignment filename knowns = ('5fd1', '1bqx'), # codes of the templates sequence = '1fdx') # code of the targeta.starting_model= 1 # index of the first modela.ending_model = 1 # index of the last model # (determines how many models to calculate)a.make() # do the actual homology modeling   Example: examples/automodel/align-multiple.ali
>P1;5fd1structureX:5fd1:1 :A:106 :A:ferredoxin:Azotobacter vinelandii: 1.90: 0.19AFVVTDNCIKCKYTDCVEVCPVDCFYEGPNFLVIHPDECIDCALCEPECPAQAIFSEDEVPEDMQEFIQLNAELAEVWPNITEKKDPLPDAEDWDGVKGKLQHLER*>P1;1bqxstructureN:1bqx: 1 :A: 77 :A:ferredoxin:Bacillus schlegelii:-1.00:-1.00AYVITEPCIGTKCASCVEVCPVDCIHEGEDQYYIDPDVCIDCGACEAVCPVSAIYHEDFVPEEWKSYIQKNRDFFKK-----------------------------*>P1;1fdxsequence:1fdx:1 : :54 : :ferredoxin:Peptococcus aerogenes: 2.00:-1.00AYVINDSC--IACGACKPECPVNIIQGS--IYAIDADSCIDCGSCASVCPVGAPNPED------------------------------------------------*
 
四:使用automodel.residue_range()来优化所建模型的部分残基
# Homology modeling by the automodel class
#
# Demonstrates how to refine only a part of the model.
#
# You may want to use the more exhaustive "loop" modeling routines instead.
#
from modeller import *
from modeller.automodel import *    # Load the automodel class

log.verbose()

# Override the 'select_atoms' routine in the 'automodel' class:
# (To build an all-hydrogen model, derive from allhmodel rather than automodel
# here.)
class MyModel(automodel):
    def select_atoms(self):
        # Select residues 1 and 2 (PDB numbering)
        return selection(self.residue_range('1:', '2:'))

        # The same thing from chain A (required for multi-chain models):
        # return selection(self.residue_range('1:A', '2:A'))

        # Residues 4, 6, 10:
        # return selection(self.residues['4'], self.residues['6'],
        #                  self.residues['10'])

        # All residues except 1-5:
        # return selection(self) - selection(self.residue_range('1', '5'))

env = environ()
# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']
# selected atoms do not feel the neighborhood
env.edat.nonbonded_sel_atoms = 2

# Be sure to use 'MyModel' rather than 'automodel' here!
a = MyModel(env,
            alnfile  = 'alignment.ali',     # alignment filename
            knowns   = '5fd1',              # codes of the templates
            sequence = '1fdx')              # code of the target

a.starting_model= 3                # index of the first model
a.ending_model  = 3                # index of the last model
                                   # (determines how many models to calculate)
a.make()                           # do homology modeling
 
五:模拟过程中包含二硫键
默认情况下automodel会自动的产生适当的二硫键的限制,这通过使用model.patch_ss_templates()函数。
手动的添加二硫键的限制可以通过使用model.patch()函数,这个函数调用CHARMM的拓扑文件“DISU”来修补残基。
# Homology modeling by the automodel class
from modeller import *              # Load standard Modeller classes
from modeller.automodel import *    # Load the automodel class

# Redefine the special_patches routine to include the additional disulfides
# (this routine is empty by default):
class MyModel(automodel):
    def special_patches(self, aln):
        # A disulfide between residues 8 and 45:
        self.patch(residue_type='DISU', residues=(self.residues['8'],
                                                  self.residues['45']))

log.verbose()    # request verbose output
env = environ()  # create a new MODELLER environment to build this model in

# directories for input atom files
env.io.atom_files_directory = ['.', '../atom_files']

a = MyModel(env,
            alnfile  = 'alignment.ali',     # alignment filename
            knowns   = '5fd1',              # codes of the templates
            sequence = '1fdx')              # code of the target
a.starting_model= 1                 # index of the first model
a.ending_model  = 1                 # index of the last model
                                    # (determines how many models to calculate)
a.make()                            # do the actual homology modeling
 
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值