专栏首页生信小驿站蛋白质三维结构预测(MODELLER、单模板)(上)

蛋白质三维结构预测(MODELLER、单模板)(上)

1. MODELLER软件安装

该软件有windows, mac, linux版本,下载后安装的时候需要提供注册码,不用担心,先在https://salilab.org/modeller/registration.html注册(需要学术邮箱或者含有edu的邮箱)。然后网站会自动审核并且发送注册码给输入的邮箱。软件的安装步骤和大多数Windows软件包一样,除了输入注册码那步,其它的一路点击“下一步”即可。

2.准备文件

  • 准备含有准备预测的目的蛋白序列的文件TvLDH.ali 将下图中的序列替换为准备预测的序列即可
  • 准备pdb_95.pir文件 pdb_95.pir文件和TvLDH.ali可以在官网下载。

3.寻找与目的基因相近的pdb模板

%reset -f
%clear

# In[*]

from modeller import *
import os
os.chdir("D:\\Rwork\\modeller\\single\\1")

# In[*]

from modeller import *

log.verbose()
env = environ()

#-- Prepare the input files

#-- Read in the sequence database
sdb = sequence_db(env)
sdb.read(seq_database_file='pdb_95.pir', seq_database_format='PIR',
         chains_list='ALL', minmax_db_seq_len=(30, 4000), clean_sequences=True)

#-- Write the sequence database in binary form
sdb.write(seq_database_file='pdb_95.bin', seq_database_format='BINARY',
          chains_list='ALL')

#-- Now, read in the binary database
sdb.read(seq_database_file='pdb_95.bin', seq_database_format='BINARY',
         chains_list='ALL')


# In[*]
#-- Read in the target sequence/alignment
aln = alignment(env)
aln.append(file='TvLDH.ali', alignment_format='PIR', align_codes='ALL')

#-- Convert the input sequence/alignment into
#   profile format
prf = aln.to_profile()

#-- Scan sequence database to pick up homologous sequences
prf.build(sdb, matrix_offset=-450, rr_file='${LIB}/blosum62.sim.mat',
          gap_penalties_1d=(-500, -50), n_prof_iterations=1,
          check_profile=False, max_aln_evalue=0.01)

#-- Write out the profile in text format
prf.write(file='build_profile.prf', profile_format='TEXT')

#-- Convert the profile back to alignment format
aln = prf.to_alignment()

#-- Write out the alignment file
aln.write(file='build_profile.ali', alignment_format='PIR')

build_profile.prf 存放输出结果,前6行记录了MODELLER构建这个profile的参数,后续行对应profile.build()检测到的相似处,其中最重要的是第2、10、11和12列。 第2列表示和目标序列进行对比的PDB序列的编号。每一行的编号代表一组PDB序列,第11列代表目标和对比序列相似的百分比,对比序列经过了长度的标准化(在第10列)一般相似性超过25%的对比序列可以选做模板(除非这个序列太短)第12列用e值更显著的表示了差异。因为我们这里得到的候选模板并不多,如果候选模板比较多的话,建议选择相似度高和E值比较低的。

2:模板的PDB入口代码 。11:相似度百分比,大于25%即有可能成为有效模板。 12:错误率,越低越好,最好等于0

4.确定最佳模板

  • 首先在pdb数据库中下载上述的候选模板的pdb文件。
  • 筛选最佳模板
# In[*]
from modeller import *
env = environ()
aln = alignment(env)
#遍历pdb文件(需放在同一目录下)
for (pdb, chain) in ( ('2dsp', 'B'), ('1wqj', 'B'), ('2dsq', 'A'),('3tjq', 'A')):
    m = model(env, file=pdb, model_segment=('FIRST:'+chain, 'LAST:'+chain))
    aln.append_model(m, atom_files=pdb, align_codes=pdb+chain)
aln.malign()
aln.malign3d()
aln.compare_structures()
aln.id_table(matrix_file='family.mat')
env.dendrogram(matrix_file='family.mat', cluster_cut=-1.0)

@符号后面对应的数字反应的是晶体分辨率,数字越低代表分辨率越高。结合此信息和上述得到的序列同源性,可以选择3tjqA为最佳模板。

5. 运行程序,得到预测结构

# In[*]

from modeller import *

env = environ()
aln = alignment(env)
#使用1bdm.pdb进行对齐
mdl = model(env, file='3tjq', model_segment=('FIRST:A','LAST:A'))
aln.append_model(mdl, align_codes='3tjqA', atom_files='3tjq.pdb')
aln.append(file='TvLDH.ali', align_codes='TvLDH')
aln.align2d()
aln.write(file='TvLDH-3tjqA.ali', alignment_format='PIR')
aln.write(file='TvLDH-3tjqA.pap', alignment_format='PAP')

# In[*]

from modeller import *
from modeller.automodel import *
#from modeller import soap_protein_od

env = environ()
#alnfile载入模板结构,sequence表示目标序列名
a = automodel(env, alnfile='TvLDH-3tjqA.ali',
              knowns='3tjqA', sequence='TvLDH',
              assess_methods=(assess.DOPE,
                              #soap_protein_od.Scorer(),
                              assess.GA341))
#计算模型的个数
a.starting_model = 1
a.ending_model = 5
a.make()

最终得到五个预测出来的目标序列或者目标蛋白的蛋白质三维结构。

选择其中最优的模型001或者004.pdb为最佳结果(选择DOPE score最低且GA341 score最高的结果)。

6.使用pymol 打开预测结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 娱乐 太极图

    用户1359560
  • 数据处理第3部分:选择行的基本和高级的方法

    原文地址:https://suzan.rbind.io/2018/02/dplyr-tutorial-3/ 作者:Suzan Baert 这是系列dplyr...

    用户1359560
  • Python数据处理从零开始----第二章(pandas)(十)pandas合并数据

    先介绍一下几种数据合并方式:左连接(left join)、右连接(right join)、内连接(inner join)、全连接(full join)。

    用户1359560
  • 阿里架构师的十年心血,总结出的一套知识体系(内部学习使用)

    程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些...

    Java技术栈
  • 63-函数调用:参数使用注意事项

    凯茜的老爸
  • Jmeter(四十三)_合理分配堆内存

    内存泄露是指你的应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源,这是一种状态描述;

    飞天小子
  • 流动的数据——使用 RxJS 构造复杂单页应用的数据逻辑

    我们经常见到这么一些场景: 微博的列表页面; 各类协同工具的任务看板,比如 Teambition。 ? 这类场景的一个共同特点是: 由若干个小方块构成; 每个小...

    CSDN技术头条
  • 阿里面试100%问到,JVM性能调优篇

    GC 优化的基本原则是:将不同的 GC 参数应用到两个及以上的服务器上然后比较它们的性能,然后将那些被证明可以提高性能或减少 GC 执行时间的参数应用于最终的工...

    lyb-geek
  • JVM性能调优篇

    GC 优化的基本原则是:将不同的 GC 参数应用到两个及以上的服务器上然后比较它们的性能,然后将那些被证明可以提高性能或减少 GC 执行时间的参数应用于最终的工...

    李红
  • 成为优秀程序员的10个有效方法

    一个优秀的程序员就是那种即使是过单行道都要往两边看的人。 ——Doug Linder 作为一个在IT行业的软件程序员,每天促使我去上班的动力就是对编程的乐趣和激...

    Crossin先生

扫码关注云+社区

领取腾讯云代金券