pyrosetta对pdb结构进行平移和旋转操作

以下是使用PyRosetta对 PDB 结构进行平移和旋转操作并保存为新 PDB 文件的示例代码:

直接操作原子坐标


import pyrosetta
from pyrosetta.rosetta.numeric import xyzVector_double_t

pyrosetta.init()

# 从 PDB 文件加载 pose
pose = pyrosetta.pose_from_pdb('input.pdb')

# 平移操作
translation_vector = xyzVector_double_t(1.0, 2.0, 3.0)
for i in range(1, pose.total_residue() + 1):
    for atom_index in range(1, pose.residue(i).natoms() + 1):
        pose.residue(i).atom(atom_index).xyz(pose.residue(i).atom(atom_index).xyz() + translation_vector)

# 旋转操作(绕 Z 轴旋转 45 度)
import math
rotation_angle = math.radians(45)
rotation_axis = xyzVector_double_t(0.0, 0.0, 1.0)
for i in range(1, pose.total_residue() + 1):
    for atom_index in range(1, pose.residue(i).natoms() + 1):
        xyz = pose.residue(i).atom(atom_index).xyz()
        x = xyz.x
        y = xyz.y
        new_x = x * math.cos(rotation_angle) - y * math.sin(rotation_angle)
        new_y = x * math.sin(rotation_angle) + y * math.cos(rotation_angle)
        pose.residue(i).atom(atom_index).xyz(xyzVector_double_t(new_x, new_y, xyz.z))

# 保存为新的 PDB 文件
pose.dump_pdb('output.pdb')

RigidBodyTransMover 和RigidBodySpinMover工具实现


import pyrosetta
from pyrosetta.rosetta.protocols.rigid import RigidBodyTransMover, RigidBodySpinMover
from pyrosetta.rosetta.numeric import xyzVector_double_t

pyrosetta.init()

# 从 PDB 文件加载 pose
pose = pyrosetta.pose_from_pdb('input.pdb')

# 平移操作
trans_mover = RigidBodyTransMover(pose, 1)  # 假设对第一个刚体进行平移
translation_vector = xyzVector_double_t(1.0, 2.0, 3.0)

# 设置平移方向,向translation_vector方向
trans_mover.trans_axis(translation_vector)

# 设置平移距离为 20 Å
trans_mover.step_size(20.0)
trans_mover.apply(pose)

# 旋转操作
spin_mover = RigidBodySpinMover  # 假设对第一个刚体进行旋转
rotation_axis = xyzVector_double_t(0.0, 0.0, 1.0)
rotation_angle = 45.0  # 以度为单位
# 设置旋转轴
spin_mover.spin_axis(rotation_axis)
# 设置旋转角度的大小
spin_mover.spin_mag(rotation_angle)

spin_mover.apply(pose)

# 保存为新的 PDB 文件
pose.dump_pdb('output.pdb')

RigidBodySpinMoverRigidBodyTransMoverPyRosetta中用于操作蛋白质结构刚体部分的重要工具,可以帮助研究人员模拟蛋白质的构象变化、探索结构空间以及进行蛋白质结构的优化和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值