You need to enable JavaScript to run this app. 如何在Python中利用已有列表/数组生成含完整信息的.pdb文件
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中利用已有列表/数组生成含完整信息的.pdb文件

基于Biopython生成PDB文件的实现方法

前置条件

你已备好长度严格对齐的5组输入数据:原子编号列表、原子名称列表、CA坐标数组(每个元素为(x,y,z)格式的三维浮点坐标)、残基编号列表、残基名称列表,且Python环境已安装Biopython库。

实现步骤

Biopython的PDB模块采用层级式结构存储蛋白信息:Structure→Model→Chain→Residue→Atom,按层级依次构建对象后即可导出为标准PDB文件。

  1. 导入依赖模块
from Bio.PDB import Structure, Model, Chain, Residue, Atom, PDBIO
import numpy as np
  1. 初始化层级结构容器
# 自定义结构、模型、链的命名,可按需修改
struct = Structure.Structure("custom_structure")
model = Model.Model(0)
chain = Chain.Chain("A") # 链ID设为A,可自定义
struct.add(model)
model.add(chain)
  1. 遍历输入数据创建原子与残基
    如果你的数据中每个残基仅含1个CA原子,可直接按索引遍历:
# 遍历所有原子对应数据,变量名替换为你自己的列表/数组名即可
for idx in range(len(atom_id_list)):
    # 提取当前原子对应参数
    atom_serial = atom_id_list[idx]
    atom_name = atom_name_list[idx]
    coord = ca_coord_array[idx]
    res_seq = res_id_list[idx]
    res_name = res_name_list[idx]
    
    # 创建残基,第一个参数为异原子标识,普通氨基酸留空即可
    res = Residue.Residue((' ', res_seq, ' '), res_name, '')
    # 创建原子对象
    atom = Atom.Atom(
        name=atom_name,
        coord=coord,
        bfactor=0.0, # 温度因子,无数据可填0
        occupancy=1.0, # 占有率,无数据可填1
        altloc=' ',
        fullname=f"{atom_name:<4s}", # 按PDB规范补空格到4位
        serial_number=atom_serial
    )
    # 按层级组装
    res.add(atom)
    chain.add(res)

如果同一个残基包含多个原子,需要先对残基编号去重,同一个残基的所有原子添加到同一个Residue对象中即可。
4. 导出为PDB文件

io = PDBIO()
io.set_structure(struct)
io.save("output.pdb")

注意事项

  • 原子名称需符合PDB命名规范,例如Cα原子的标准名称为前后补空格的CA(总长度4位),避免下游软件读取时识别错误
  • 残基编号如果存在插入码,需要在Residue初始化的第一个元组的第三个位置填入对应插入码,例如(' ', 10, 'A')对应10号残基的插入码A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:03:04