mcpField
P
protein-structure-analysis

protein-structure-analysis

github.com/awslabs数据与数据库6876 次安装4 周前更新
代码仓库

关于 protein-structure-analysis

为蛋白质结构任务提供分析工作流与工具选择指导,适用于使用 Biopython、PyMOL 等处理结构的 Agent。重点提示格式转换、参数选择及常见结构数据陷阱。

主要功能

  1. 01PDB/mmCIF 解析指导
  2. 02RMSD 原子选择与配对
  3. 03结合口袋检测与可视化
  4. 04接触、二级结构及角度分析
  5. 05结构格式转换规则

适用场景

  1. 01比较蛋白质结构并计算 RMSD
  2. 02检测并展示配体结合口袋
  3. 03将结构转换为 PDBQT 用于对接
  4. 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/mmCIFBiopython 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→mmCIFBio.PDB.MMCIFIO坐标无损转换
格式:PDB→PDBQTobabel -O out.pdbqt -xr先添加氢原子,使用 -xh
RamachandranPPBuilder → 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 与 CaPPBuilderPPBuilder仅对 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 行代码,并附简短说明

评论

支持 Markdown