Pyrosetta 多方位解析

发布时间:2023-05-20

Pyrosetta 使用指南

一、Pyrosetta 安装

Pyrosetta 是 Rosetta 的 Python 包装器,它可以为 Rosetta 提供 Python 接口,使 Rosetta 更加易用,便于进行蛋白质结构与功能分析等应用。Pyrosetta 的安装需要先安装 Rosetta,具体步骤如下:

wget https://www.rosettacommons.org/downloads/Threading-libraries/rosetta3.11.source.tgz
tar zxvf rosetta3.11.source.tgz 
cd rosetta_source
./scons.py -j4 mode=release bin

安装完成后需要下载 pyrosetta 相关库:

git clone https://github.com/RosettaCommons/pyrosetta.git
cd pyrosetta
python setup.py install

二、Pyrosetta 和 Rosetta 的区别

在使用 Pyrosetta 前,需要先了解 Pyrosetta 和 Rosetta 的区别。 Rosetta 是一款蛋白质二次结构预测与蛋白质三维结构预测软件包,它是一个成熟、庞大、灵活的软件包,可以进行从单体到配体、蛋白结构优化、分子对接等范畴的计算。 Pyrosetta 则是 Rosetta 的 Python 包装器,它为 Rosetta 提供 Python 接口。Pyrosetta 的主要功能是提供一种灵活方便的 Python 接口,使得 Rosetta 更加易用,方便用户进行蛋白质结构与功能分析等应用。同时,Python 自身的特点也使得 Pyrosetta 在协同使用其他 Python 软件包时更具方便性。

三、Pyrosetta 生成

Pyrosetta 对蛋白进行的几何优化包括如下几个方面:

  1. 蛋白氨基酸二面角搜索;
  2. 蛋白内外残基间非共价相互作用力场优化;
  3. 对于蛋白与配体之间的相互作用进行优化; 其中,对于配体的构象搜索与优化使用的也是 Rosetta 软件包。 生成 Pyrosetta 分为两种方式:
  4. 通过 .pdb 文件读取蛋白分子信息;
from pyrosetta import pose_from_pdb
pose = pose_from_pdb("filename.pdb")
  1. 通过序列信息生成蛋白分子信息。
from pyrosetta.toolbox import generate_pose_from_sequence
sequence = "SEQ"
pose = generate_pose_from_sequence(sequence)

四、Pyrosetta 报错

在使用 Pyrosetta 过程中可能会遇到一些报错信息,例如无法找到库文件等。在解决该问题前需要首先了解 Pyrosetta 报错的原因。 Pyrosetta 报错可能有如下原因:

  1. Pyrosetta 版本不够稳定或安装不完全;
  2. Pyrosetta 版本与 Rosetta 版本不匹配;
  3. 路径配置错误。 建议在使用 Pyrosetta 过程中,首先尝试使用最新版本、完整安装、合适匹配的 Pyrosetta 和 Rosetta 版本。如果还是遇到报错,可以使用 Pyrosetta 的 verbose 参数,来调试解决问题。
from pyrosetta import init
init(extra_options='-mute all -mute JD2.ScoreFunctionFactory:')
# 或者使用更为详细的 verbose 参数
init(options='-corrections:beta_nov16 true -mute all -mute core.conformation.util -mute core.pack.task')

五、Pyrosetta 自动生成

Pyrosetta 提供了 PDB 文件的自动生成功能,使得用户能够快速、方便地生成并操作 PDB 文件。

from pyrosetta import pose_from_sequence
pose = pose_from_sequence("ABC")
pose.dump_pdb("filename.pdb")

六、Pyrosetta4 安装教程

Pyrosetta4 可以通过以下命令进行安装:

git clone https://github.com/RosettaCommons/pyrosetta.git
cd pyrosetta
git checkout origin/release/v4.0
python3 setup.py install

七、Pyrosetta 用户名密码

在使用 Pyrosetta 进行计算时,经常需要输入用户名和密码。这些信息可以在 Pyrosetta 的官方网站上注册获取。

from pyrosetta import init
init("-username <username> -password <password>")

八、Pyrosetta Torsion

Torsion angle 是描述蛋白质二级结构的基本参数之一。Pyrosetta 能够通过其内建的函数获取蛋白质的 torsion angle。

from pyrosetta import pose_from_sequence
from pyrosetta.rosetta.core.kinematics import FoldTree
pose = pose_from_sequence("SEQUENCE")
ft = FoldTree()
ft_from_pose = pose.fold_tree()
print(ft == ft_from_pose)

九、Pyrosetta 蛋白对接

Pyrosetta 提供了多种蛋白对接的方法,其中最常用的方法是 Fast Fourier Transform 基础的蛋白质与配体对接方法。

from pyrosetta import *
from pyrosetta.rosetta.protocols.docking import *
from pyrosetta.rosetta.core.scoring import *
from pyrosetta.rosetta.core.pack.task import *
from pyrosetta.rosetta.core.select.residue_selector import *
from pyrosetta.rosetta.core.simple_metrics.metrics import *
from pyrosetta.rosetta.core.simple_metrics.per_residue_metrics import *
from pyrosetta.rosetta.core.pose import *
from pyrosetta.rosetta.core.scoring.docking import *
init()
# 设置任务
tf = TaskFactory()
task = tf.create_packer_task(pose)
task.restrict_to_repacking()
mut_residues = [1]
for resi in mut_residues:
    task.nonconst_residue_task(resi).prevent_repacking()
# 进行蛋白对接
dock_protocol = DockingHighRes()
dock_protocol.set_scorefxn(get_fa_scorefxn())
dock_protocol.set_task_factory(tf)
dock_protocol.set_min_type("lbfgs_armijo_nonmonotone")
dock_pose = pose_from_pdb("complex.pdb")
dock_pose.delete_polymer_residue_range(1, 5) # 移除掉配体
dock_pose.pdb_info().name("docked_pose")
dock_pose = dock_protocol.apply(dock_pose)

十、Pyrosetta ligand docking

Pyrosetta 还支持蛋白质对配体进行 docking,其中最常用的方法是 Fast Fourier Transform 基础的蛋白质与配体对接方法。

from pyrosetta import *
from pyrosetta.rosetta.protocols.docking import *
from pyrosetta.rosetta.core.scoring import *
from pyrosetta.rosetta.core.pack.task import *
from pyrosetta.rosetta.core.select.residue_selector import *
from pyrosetta.rosetta.core.simple_metrics.metrics import *
from pyrosetta.rosetta.core.simple_metrics.per_residue_metrics import *
from pyrosetta.rosetta.core.pose import *
from pyrosetta.rosetta.core.scoring.docking import *
init()
# 设置任务
task_factory = TaskFactory()
task_factory.push_back(InitializeFromCommandline())
packer_task = task_factory.create_task_and_apply_taskoperations(pose)
packer_task.restrict_to_repacking()
mut_residues = [1]
for resi in mut_residues:
    packer_task.nonconst_residue_task(resi).prevent_repacking()
# 进行配体 docking
docking = DockMCMProtocol()
scorefxn_low = create_score_function('ligand')
scorefxn_low.set_weight(str(core.scoring.ScoreType.fa_dun),0.5)
scorefxn_high = create_score_function_ws_patch('ligand','standard', 'basic', 'score12')
scorefxn_high.set_weight(str(core.scoring.ScoreType.fa_dun),0.5)
docking.set_scorefxn_low_resolution(scorefxn_low)
docking.set_scorefxn_high_resolution(scorefxn_high)
docking.set_mcm_cycles(10)
docking.apply(packed_pose_in)