一、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 分為兩種方式:
1. 通過 .pdb 文件讀取蛋白分子信息;
from pyrosetta import pose_from_pdb
pose = pose_from_pdb("filename.pdb")
2. 通過序列信息生成蛋白分子信息。
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 -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)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303866.html