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 对蛋白进行的几何优化包括如下几个方面:
- 蛋白氨基酸二面角搜索;
- 蛋白内外残基间非共价相互作用力场优化;
- 对于蛋白与配体之间的相互作用进行优化; 其中,对于配体的构象搜索与优化使用的也是 Rosetta 软件包。 生成 Pyrosetta 分为两种方式:
- 通过
.pdb
文件读取蛋白分子信息;
from pyrosetta import pose_from_pdb
pose = pose_from_pdb("filename.pdb")
- 通过序列信息生成蛋白分子信息。
from pyrosetta.toolbox import generate_pose_from_sequence
sequence = "SEQ"
pose = generate_pose_from_sequence(sequence)
四、Pyrosetta 报错
在使用 Pyrosetta 过程中可能会遇到一些报错信息,例如无法找到库文件等。在解决该问题前需要首先了解 Pyrosetta 报错的原因。 Pyrosetta 报错可能有如下原因:
- Pyrosetta 版本不够稳定或安装不完全;
- Pyrosetta 版本与 Rosetta 版本不匹配;
- 路径配置错误。
建议在使用 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)