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

Biopython中克隆PDB文件链并整合至同一结构的最简方法

解决Biopython PDB模块复制并重命名链的问题

Biopython的PDB模块确实没有现成的一行式克隆链函数,不过可以自己封装一个简单的工具函数来实现需求,同时避免ID冲突。以下是具体实现步骤和代码:

核心思路

手动遍历源链的所有残基和原子,逐个复制它们的属性(坐标、ID、名称等),创建新的链对象并设置新的链ID,最后将新链添加到模型中。后续再对新链应用对称矩阵完成坐标转换。

完整代码示例

from Bio.PDB import PDBParser, PDBIO, StructureBuilder
import numpy as np

def clone_chain(source_chain, new_chain_id):
    # 创建新链对象
    builder = StructureBuilder.StructureBuilder()
    builder.init_chain(new_chain_id)
    
    # 遍历源链的每个残基
    for res in source_chain:
        # 初始化新残基(保留残基ID、插入码等)
        builder.init_residue(res.get_resname(), res.get_id()[0], res.get_id()[1], res.get_id()[2])
        # 遍历残基的每个原子
        for atom in res:
            # 复制原子坐标、名称、ID、B因子等属性
            builder.init_atom(
                atom.get_name(),
                atom.get_coord().copy(),  # 复制坐标数组,避免引用同一对象
                atom.get_bfactor(),
                atom.get_occupancy(),
                atom.get_altloc(),
                atom.get_fullname(),
                atom.get_serial_number(),
                atom.get_element()
            )
    return builder.get_chain()

# 1. 读取原始PDB结构
parser = PDBParser(QUIET=True)
structure = parser.get_structure("my_structure", "input.pdb")
model = structure[0]  # 取第一个模型(大多数PDB只有一个模型)
chain_a = model["A"]

# 2. 克隆链A为链B
chain_b = clone_chain(chain_a, "B")
model.add(chain_b)

# 3. 应用对称矩阵转换链B的坐标(示例矩阵,替换为你的实际矩阵)
symmetry_matrix = np.array([
    [-1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, -1, 0],
    [0, 0, 0, 1]
])
for res in chain_b:
    for atom in res:
        coord = atom.get_coord()
        # 转换为齐次坐标并应用矩阵
        homogeneous_coord = np.append(coord, 1)
        new_homogeneous = symmetry_matrix.dot(homogeneous_coord)
        new_coord = new_homogeneous[:3]
        atom.set_coord(new_coord)

# 4. 保存修改后的结构
io = PDBIO()
io.set_structure(structure)
io.save("output.pdb")

关键细节说明

  • 避免ID冲突:新链使用全新的链ID(示例中为"B"),残基和原子的ID在链内保持唯一即可,无需修改,因为不同链的ID不会互相干扰。
  • 坐标复制:使用atom.get_coord().copy()确保新原子拥有独立的坐标数组,后续修改不会影响原链。
  • 对称矩阵应用:将原子坐标转换为齐次坐标后与矩阵相乘,再转换回三维坐标,这是PDB结构中应用对称变换的标准方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:12:33