You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyMOL中set_dihedral命令异常,如何调整phi/psi/omega二面角?

问题本质

PyMOL的set_dihedral本身没故障——它的默认逻辑就是围绕你指定的四个原子构成的二面角,旋转第四个原子之后的所有关联原子片段。你看到的后续链移动,是因为没固定目标残基之前的部分;如果同源三聚体的其他链也跟着动,要么是选原子时不小心包含了其他链,要么是链间相互作用被连带影响了。

正确调整二面角的操作步骤

1. 精准选对定义二面角的四个原子

phi/psi/omega角的原子选择必须严格对应:

  • Phi角:前一个残基的C → 当前残基的N → CA → C
  • Psi角:当前残基的N → CA → C → 后一个残基的N
  • Omega角:当前残基的CA → C → 后一个残基的N → CA

举个例子,要把链A上残基10的psi角设为180度,命令应该是:

set_dihedral (chain A and resi 10 and name N), (chain A and resi 10 and name CA), (chain A and resi 10 and name C), (chain A and resi 11 and name N), 180

2. 固定不需要移动的片段

如果只想调整单个二面角,不想让后续链跟着转,必须先锁死前面的原子:

  • 快速固定法:用set_fixed临时锁定目标残基之前的部分
    set_fixed on, chain A and resi 1-9  # 锁定残基1到9
    set_dihedral [你的二面角原子选择], [目标角度]
    set_fixed off, chain A and resi 1-9  # 调整完解锁
    
  • 独立片段法:适合多链复杂结构,把要调整的部分拆出来单独操作
    # 拆分片段
    create fixed_segment, chain A and resi 1-9
    create adjust_segment, chain A and resi 10-30  # 假设链A到30号残基
    # 调整二面角
    set_dihedral (adjust_segment and resi 10 and name N), (adjust_segment and resi 10 and name CA), (adjust_segment and resi 10 and name C), (adjust_segment and resi 11 and name N), 180
    # 合并回去
    delete chain A
    create chain A, fixed_segment + adjust_segment
    delete fixed_segment, adjust_segment
    

3. 同源三聚体的特殊处理

如果其他链也跟着动,先排查两个点:

  • 确认原子选择只针对单条链,命令里一定要加chain X(X是你要调整的链ID),别不小心选中了三聚体的其他链
  • 如果是链间相互作用(比如氢键、疏水键)导致的牵连,可以临时关闭相互作用保留:
    set preserve_interactions, off
    # 执行调整命令
    set preserve_interactions, on
    

4. 验证调整结果

调整完用get_dihedral确认角度是否达标:

get_dihedral (chain A and resi 10 and name N), (chain A and resi 10 and name CA), (chain A and resi 10 and name C), (chain A and resi 11 and name N)

内容的提问来源于stack exchange,提问作者Dmitry Petrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:41