

Protein structure
|
|
PDB file
|
↓
PyRosetta Pose
|
-----------------
| |
Relax结构 Design序列
| |
↓ ↓
minimization Packing + Mutation
|
↓
Score
|
↓
Select best designPoseimport pyrosetta
pyrosetta.init()
pose = pyrosetta.pose_from_pdb("protein.pdb")
print(pose.sequence())MKK...LAAprotein.pdbPackRotamersMoverscorefxn = pyrosetta.create_score_function(
"ref2015"
)from pyrosetta.rosetta.core.pack.task import TaskFactory
tf = TaskFactory()
from pyrosetta.rosetta.protocols.task_operations import (
RestrictToRepacking
)packer = pyrosetta.rosetta.protocols.minimization_packing.PackRotamersMover()
packer.task_factory(tf)
packer.apply(pose)WT sequence
AAAAKLLL
↓
Designed sequence
AAVAKVLLA45Vfrom pyrosetta.toolbox import mutate_residue
mutate_residue(
pose,
45,
"V"
)scorefxn(pose)PDB
|
Relax
|
Mutation scan
|
Energy ranking
|
Best mutantsFastRelax
PackRotamers
MinMoverAntibody
|
|
AntigenCDR region
binding loop
hotspot residuesRFdiffusion
|
↓
生成protein backbone
|
↓
ProteinMPNN
|
↓
生成sequence
|
↓
PyRosetta
|
↓
Relax + FilterRelaxscorepacking工具 | 作用 |
|---|---|
AlphaFold2/3 | 预测结构 |
RFdiffusion | 生成骨架 |
ProteinMPNN | 设计序列 |
PyRosetta | 物理优化和筛选 |
RosettaFold | 结构预测 |



蛋白结构(PDB)
|
|
结合位点定义
|
|
小分子准备
(SDF/MOL2)
|
|
生成ligand params
|
|
PyRosetta加载
|
|
RosettaLigand docking
|
|
Score排序
|
|
最佳pose分析protein.pdbimport pyrosetta
pyrosetta.init()
pose = pyrosetta.pose_from_pdb(
"protein.pdb"
)drug.sdf
drug.mol2compound
|
↓
molfile
|
↓
Rosetta params
|
↓
ligand.paramsmolfile_to_params.py$ROSETTA/main/source/scripts/python/public/molfile_to_params.py \
ligand.sdf \
-n LIGLIG.params
LIG_0001.pdbLIGpyrosetta.init(
-extra_res_fa LIG.params
"
)-pdb input_complex.pdb
-extra_res_fa LIG.paramsATOM
ATOM
ATOM
HETATM
LIGProtein chain A
GLY
ALA
VAL
Ligand
LIGpose = pyrosetta.pose_from_pdb(
"complex.pdb"
)protein pocket
|
|
ligand samplingASP45
PHE78
TYR102<NeighborhoodResidueSelector
selector="ligand"
distance="6.0"
/>RosettaLigandRigidBodyPerturbMoverrotamergradient minimizationfrom pyrosetta.rosetta.protocols.rigid import (
RigidBodyPerturbMover
)
perturb = RigidBodyPerturbMover(
0,
3.0,
8.0
)
perturb.apply(pose)ligand.wtsscorefxn = pyrosetta.create_score_function(
"ligand"
)score = scorefxn(pose)
print(score)能量项 | 意义 |
|---|---|
fa_atr | 范德华吸引 |
fa_rep | 空间排斥 |
fa_sol | 溶剂 |
hbond | 氢键 |
fa_elec | 静电 |
ligand interaction | 配体相互作用 |
随机移动
|
↓
接受/拒绝
|
↓
局部优化
|
↓
重复1000次for i in range(1000):
perturb.apply(pose)
score=scorefxn(pose)
if score < best_score:
save_pose()best_pose.pdbInterface score
InterfaceAnalyzerMoverfrom pyrosetta.rosetta.protocols.analysis import (
InterfaceAnalyzerMover
)
iam = InterfaceAnalyzerMover()
iam.apply(pose)AutoDock Vina
|
|
10000 compounds
|
↓
Top 100Rosetta:
Top100 docking poses
↓
PyRosetta ligand refinement
↓
Top10AlphaFold-Multimer
+
Rosetta
+
MD simulation软件 | 优势 | 适合 |
|---|---|---|
AutoDock Vina | 快速 | 虚拟筛选 |
Glide | 商业高精度 | 药物研发 |
GOLD | 柔性dock | 药化 |
RosettaLigand | 结构优化 | 蛋白设计 |
PyRosetta | 可编程 | 科研定制 |
TCGA发现靶点
|
↓
AlphaFold预测结构
|
↓
PDB准备
|
↓
药物库筛选
|
↓
Vina docking
|
↓
Top hits
|
↓
PyRosetta refinement
|
↓
Interface energy
|
↓
MD simulation
|
↓
实验验证原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。