如何在PyMOL中获取肽链所有主链phi、psi、omega角度列表?
PyMOL导出主链phi/psi/omega角度列表的实用方法
方法1:快速导出phi/psi(内置命令)
你试过的phi_psi Dataname会在控制台输出phi和psi角度,但要保存成可对比的列表,只需加两步:
- 执行:
phi_psi Dataname, quiet=1,quiet=1会关闭弹窗,只输出纯数据 - 再执行:
save backbone_phi_psi.txt, phi_psi,结果会保存到文本文件,文件里包含残基序号、名称和对应的phi/psi值,格式整齐适合对比。
方法2:同时导出phi/psi/omega(自定义脚本)
如果需要omega角(肽键平面角),内置的phi_psi不支持,用下面的脚本可以一次性导出三个角度:
# 替换Dataname为你的结构对象名 target_obj = "Dataname" # 初始化角度存储列表 angle_data = [] angle_data.append("残基序号\t残基名称\tPhi(°)\tPsi(°)\tOmega(°)") # 获取肽链残基信息 peptide_model = cmd.get_model(f"{target_obj} and polymer") residues = peptide_model.atom # 遍历残基计算角度(跳过首尾残基,因为首尾没有完整的主链角) for i in range(1, len(residues)-1): current_resi = residues[i].resi current_resn = residues[i].resn # 获取三个角度值,保留两位小数 phi_val = round(cmd.get_phi(f"{target_obj} and resi {current_resi}"), 2) psi_val = round(cmd.get_psi(f"{target_obj} and resi {current_resi}"), 2) omega_val = round(cmd.get_omega(f"{target_obj} and resi {current_resi}"), 2) # 加入列表 angle_data.append(f"{current_resi}\t{current_resn}\t{phi_val}\t{psi_val}\t{omega_val}") # 打印到控制台 for line in angle_data: print(line) # 保存到本地文件 with open("all_backbone_angles.txt", "w", encoding="utf-8") as f: f.write("\n".join(angle_data))
使用方式:
- 把
target_obj改成你的结构名称 - 复制脚本到PyMOL命令行执行,或者存成
.py文件后用run your_script.py运行 - 运行完成后,当前目录会生成
all_backbone_angles.txt,里面是完整的三角度列表,直接用Excel打开就能方便对比。
注意事项
- 如果结构有缺失原子,角度计算会返回
None,建议先检查结构完整性(用show missing命令查看) - 多链结构可以加筛选条件,比如
{target_obj} and chain A and polymer来指定单链计算
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

