关于 protein-structure-analysis
为蛋白质结构任务提供分析工作流与工具选择指导,适用于使用 Biopython、PyMOL 等处理结构的 Agent。重点提示格式转换、参数选择及常见结构数据陷阱。
主要功能
- 01PDB/mmCIF 解析指导
- 02RMSD 原子选择与配对
- 03结合口袋检测与可视化
- 04接触、二级结构及角度分析
- 05结构格式转换规则
适用场景
- 01比较蛋白质结构并计算 RMSD
- 02检测并展示配体结合口袋
- 03将结构转换为 PDBQT 用于对接
- 04分析 Ramachandran 图或接触图
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill protein-structure-analysis安装后在 Claude Code 中输入/protein-structure-analysis确认已加载。
详细介绍
蛋白质结构分析 — Pipeline 技能(精简脚手架)
概览
为蛋白质结构任务添加工具选择逻辑、格式转换规则和一些特定注意事项。Agent 已经了解 Biopython/PyMOL 语法——此技能可避免常见的参数和工作流错误。
用法
- 在解析 PDB/mmCIF、计算 RMSD、检测口袋或转换格式时启用
- 在绘制 Ramachandran 图、生成接触图、分析 B 因子或进行 DSSP 赋值时启用
- 在为下游对接准备结构(导出 PDBQT)时启用
核心概念
SMCRA 层级: Structure → Model → Chain → Residue → Atom。始终在正确的层级迭代;NMR 文件包含多个模型。
Altloc: 用非空代码('A'、'B')标记的替代构象。在进行任何几何计算之前,先筛选出一个构象。
fpocket 输出: 在当前工作目录中写入 <basename>_out/,而非输入文件所在目录。口袋按成药性评分(0–1)排序。
决策逻辑
工具选择
| 任务 | 工具 | 关键注意事项 |
|---|---|---|
| 解析 PDB/mmCIF | Biopython PDBParser/MMCIFParser | 始终传入 QUIET=True |
| RMSD 叠合 | Bio.PDB.Superimposer | 需要长度相等、一一对应的原子列表 |
| 结合口袋检测 | fpocket CLI | 需要干净的 PDB(无 altloc、无杂乱的 HETATM) |
| 口袋可视化 | PyMOL(无头模式使用 -cq) | 使用 byres all within 5 of organic 选择口袋 |
| 接触分析 | Bio.PDB.NeighborSearch | 默认截断距离为 4.0 Å;返回原子对 |
| 二级结构 | 通过 Biopython 使用 DSSP | 较新的安装版本中,二进制文件名为 mkdssp |
| 格式:PDB→mmCIF | Bio.PDB.MMCIFIO | 坐标无损转换 |
| 格式:PDB→PDBQT | obabel -O out.pdbqt -xr | 先添加氢原子,使用 -xh |
| Ramachandran | PPBuilder → get_phi_psi_list() | 末端位置会返回 None,必须检查 |
RMSD 类型选择
| 场景 | 使用的原子 | 备注 |
|---|---|---|
| 主链比较 | 仅 Cα | 折叠相似性的标准做法 |
| 环区灵活性 | 所有主链原子(N、Cα、C、O) | 可捕捉局部偏差 |
| 结合位点比较 | 配体 5 Å 范围内的所有原子 | 需要先选择残基 |
| 序列相同 | 所有原子 | 仅适用于链长相同的情况 |
关键参数
| 参数 | 值 | 何时更改 |
|---|---|---|
| NeighborSearch 截断距离 | 4.0 Å | 氢键使用 3.5,疏水作用使用 5.0 |
| Superimposer 原子 | Cα | 仅在序列相同时使用所有原子 |
fpocket -m(最少 alpha spheres 数) | 35(默认值) | 对于较小或较浅的口袋,降至 15 |
| DSSP 二进制文件名 | mkdssp | 旧版安装使用 dssp |
obabel -xr 标志 | 受体模式 | 对于柔性配体 PDBQT,省略此标志 |
| PPBuilder 与 CaPPBuilder | PPBuilder | 仅对 Cα 轨迹使用 CaPPBuilder |
常见错误
-
错误: 假设 PDB 中只有一个模型 → 正确: 始终使用
structure[0]或遍历模型 → 原因: NMR 构象集合包含多个模型;直接遍历会遇到意料之外的原子 -
错误: 在几何计算中忽略 altloc → 正确: 筛选
atom.get_altloc() in ('', 'A')→ 原因: 重复原子会干扰 RMSD 和二面角计算 -
错误: 本想比较主链,却计算全原子 RMSD → 正确: 比较折叠结构时限制为 Cα → 原因: 侧链会增大 RMSD,并导致非完全相同的序列之间无法对应
-
错误: 在 Superimposer 中使用长度不等的原子列表 → 正确: 按残基编号匹配,并构建长度相等的平行列表 → 原因:
set_atoms()要求严格的一对一对应关系 -
错误: 导出 PDBQT 前没有添加氢原子 → 正确: 先运行
obabel -xh,再运行-xr -O receptor.pdbqt→ 原因: 晶体 PDB 中没有氢原子;对接评分需要氢原子 -
错误: 在主链计算中包含 HETATM/水分子 → 正确: 筛选
residue.id[0] == ' '→ 原因: 杂原子和水分子会干扰 phi/psi 和主链 RMSD -
错误: 对 None 类型的 phi/psi 调用
math.degrees()→ 正确: 检查if phi is not None and psi is not None→ 原因: 链末端会返回 None;TypeError 会导致程序崩溃 -
错误: 使用默认的
dssp二进制文件名 → 正确: 向DSSP()传入dssp='mkdssp'→ 原因: 新版安装中仅提供mkdssp -
错误: 以为 fpocket 的输出会在输入文件旁边 → 正确: 在目标目录中运行,或之后移动输出 → 原因: fpocket 会将输出写入当前工作目录,而不是输入文件所在位置
-
错误: 忘记在解析器中设置
QUIET=True→ 正确:PDBParser(QUIET=True)→ 原因: 非致命警告会大量输出到 stdout,掩盖真正的错误
响应格式
- 先给出用户需要的命令或代码,再解释
- 结构为:确认输入 → 可运行的代码 → 解释关键参数 → 注意事项
- 每项任务提供一个完整可运行的示例;不要展示所有备选方案
- 代码注释保持精简且实用
- 目标:50-100 行代码,并附简短说明