Pyrosetta入门


前言

最近又使用Rosetta的需求,故今天想写一下Pyrosetta的入门学习笔记。


一、安装

conda config --add channels https://levinthal:paradox@conda.graylab.jhu.edu
conda install pyrosetta

二、蛋白相关处理

1.处理PDB


# 读入一个pdb结构文件
from pyrosetta import *
pose = pose_from_pdb("inputs/5tj3.pdb")
pose.sequence()
pose.annotated_sequence()


# 处理(清理)一个pdb文件
from pyrosetta.toolbox import cleanATOM
cleanATOM("inputs/5tj3.pdb")
pose_clean = pose_from_pdb("inputs/5tj3.clean.pdb")
pose_clean.sequence()
pose_clean.annotated_sequence()

2.残基信息

# 获得残基的名字
print(pose.total_residue())
residue20 =  pose.residue(20)
print(residue20.name())

# 判断是不是金属
zn_resid = pose.pdb_info().pdb2pose('A', 601)
res_zn = pose.residue(zn_resid) 
res_zn.is_metal() 

3.获取空间特征

这里的角度还是没太搞懂。。待补充,也许是二面角吗

# 获得残基空间中的角度的方法
resid = pose.pdb_info().pdb2pose('A', 28)
print("phi:", pose.phi(resid))
print("psi:", pose.psi(resid))
print("chi1:", pose.chi(1, resid))

# 获得键长的两种方法
# 方法一:
res_28 = pose.residue(resid)
N28 = AtomID(res_28.atom_index("N"), resid)
CA28 = AtomID(res_28.atom_index("CA"), resid)
C28 = AtomID(res_28.atom_index("C"), resid)
print(pose.conformation().bond_length(N28, CA28))
print(pose.conformation().bond_length(CA28, C28))

# 方法二:
N_xyz = res_28.xyz("N")
CA_xyz = res_28.xyz("CA")
C_xyz = res_28.xyz("C")
N_CA_vector = CA_xyz - N_xyz
CA_C_vector = CA_xyz - C_xyz
print(N_CA_vector.norm())
print(CA_C_vector.norm())

# 获得键角的方法
angle = pose.conformation().bond_angle(N28, CA28, C28)
print(angle)

tripeptide = pose_from_sequence("AAA")

orig_phi = tripeptide.phi(2)
orig_psi = tripeptide.psi(2)
print("original phi:", orig_phi)
print("original psi:", orig_psi)
print("xyz coordinates:", tripeptide.residue(2).xyz("CB"))

tripeptide.set_phi(2, -60)
tripeptide.set_psi(2, -43)
print("new phi:", tripeptide.phi(2))
print("new psi:", tripeptide.psi(2))
print("xyz coordinates:", tripeptide.residue(2).xyz("CB"))

三、能量函数

1.分数函数基础


import pyrosetta
ras = pyrosetta.pose_from_pdb("inputs/6Q21_A.pdb")

from pyrosetta.teaching import *
sfxn = get_score_function(True)
print(sfxn)

这样会看到项,权重和能量方法选择。

2.自定义能量函数


sfxn2 = ScoreFunction()
sfxn2.set_weight(fa_atr, 1.0)
sfxn2.set_weight(fa_rep, 1.0)

print(sfxn(ras))
print(sfxn2(ras))

可以通过设置能量项前的权重自定义能量函数。

3.能量分解


sfxn.show(ras)

下面是能量分解的输出:

core.scoring: 
------------------------------------------------------------
 Scores                       Weight   Raw Score Wghtd.Score
------------------------------------------------------------
 fa_atr                       1.000   -1039.246   -1039.246
 fa_rep                       0.550    1193.837     656.611
 fa_sol                       1.000     682.582     682.582
 fa_intra_rep                 0.005     700.419       3.502
 fa_intra_sol_xover4          1.000      46.564      46.564
 lk_ball_wtd                  1.000     -14.597     -14.597
 fa_elec                      1.000    -195.387    -195.387
 pro_close                    1.250      97.210     121.513
 hbond_sr_bb                  1.000     -41.656     -41.656
 hbond_lr_bb                  1.000     -28.352     -28.352
 hbond_bb_sc                  1.000     -13.111     -13.111
 hbond_sc                     1.000      -7.771      -7.771
 dslf_fa13                    1.250       0.000       0.000
 omega                        0.400      41.525      16.610
 fa_dun                       0.700    1296.642     907.650
 p_aa_pp                      0.600     -25.496     -15.298
 yhh_planarity                0.625       0.000       0.000
 ref                          1.000      47.114      47.114
 rama_prepro                  0.450     197.781      89.002
---------------------------------------------------
 Total weighted score:                     1215.729

将能量分解到残基和原子:

# 将能量分解到残基
print(ras.energies().show(24))

# 将能量分解到原子对(输出的是两原子之间的吸引、排斥、溶剂化和静电)
res24 = ras.residue(24)
res20 = ras.residue(20)
res24_atomN = res24.atom_index("N")
res20_atomO = res20.atom_index("O")
pyrosetta.etable_atom_pair_energies(res24, res24_atomN, res20, res20_atomO, sfxn)

分解两个残基之间的相互作用的能量:

from pyrosetta import *
sfxn = get_score_function(True)

pose = pyrosetta.toolbox.pose_from_rcsb("1YY9")
res102 = pose.pdb_info().pdb2pose("D", 102)
res408 = pose.pdb_info().pdb2pose("A", 408)

emap = EMapVector()
sfxn.eval_ci_2b(pose.residue(res102), pose.residue(res408), pose, emap)
print(emap[fa_atr])
print(emap[fa_rep])
print(emap[fa_sol])

总结

未完待续。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在 Pyrosetta 官网上下载最新版本的 Pyrosetta。同时,您也可以在 GitHub 上找到 Pyrosetta 的源代码。如果您需要更多的帮助,可以查看 Pyrosetta 的文档或者加入 Pyrosetta 的用户群组。 ### 回答2: Rosetta是一款用于蛋白质结构预测和蛋白质设计的软件包。PyRosettaRosettaPython接口,允许用户使用Python语言调用Rosetta的功能。下载RosettaPyRosetta有几个步骤。 首先,您需要前往RosettaPyRosetta的官方网站。在那里,您可以注册一个账户,并同意相关的许可协议。注册后,您将获得一个许可证密钥。 接下来,您可以通过官方网站提供的链接下载Rosetta软件包。根据您的操作系统,选择适合的版本进行下载。下载可能需要一些时间,因为Rosetta是一个相对较大的软件包。 下载完成后,您可以解压缩Rosetta软件包,并按照相关的安装说明进行安装。这可能涉及到将Rosetta添加到系统的环境变量中,以便您可以在命令行中直接调用Rosetta的功能。 安装完成后,您可以下载PyRosetta。在官方网站上,您可以找到PyRosetta的下载链接。点击链接,根据您的操作系统选择合适的版本进行下载。 下载完成后,解压缩PyRosetta软件包,并按照提供的安装说明进行安装。这可能需要在Python环境中添加PyRosetta的路径,以便您可以在Python脚本中导入并使用PyRosetta模块。 完成上述步骤后,您现在已经完成了RosettaPyRosetta的下载和安装。您可以开始使用PyRosetta来进行蛋白质结构预测和设计的工作了。 总之,要下载RosettaPyRosetta,您需要注册一个账户,获得许可证密钥,并从官方网站下载相应的软件包。然后,根据提供的安装说明进行安装,最终您就可以在自己的电脑上使用RosettaPyRosetta进行蛋白质研究工作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值