[ PROMPT_NODE_26266 ]
structure
[ SKILL_DOCUMENTATION ]
# 使用 Bio.PDB 进行结构生物信息学分析
## 概述
Bio.PDB 提供了处理来自 PDB 和 mmCIF 文件的生物大分子 3D 结构的工具。该模块使用 SMCRA (结构/模型/链/残基/原子) 架构来分层表示蛋白质结构。
## SMCRA 架构
Bio.PDB 模块按层级组织结构:
Structure (结构)
└── Model (模型) (NMR 结构有多个模型)
└── Chain (链) (例如:链 A, B, C)
└── Residue (残基) (氨基酸、核苷酸、杂原子)
└── Atom (原子) (单个原子)
## 解析结构文件
### PDB 格式
python
from Bio.PDB import PDBParser
# 创建解析器
parser = PDBParser(QUIET=True) # QUIET=True 抑制警告
# 解析结构
structure = parser.get_structure("1crn", "1crn.pdb")
# 访问基本信息
print(f"Structure ID: {structure.id}")
print(f"Number of models: {len(structure)}")
### mmCIF 格式
mmCIF 格式更现代,能更好地处理大型结构:
python
from Bio.PDB import MMCIFParser
# 创建解析器
parser = MMCIFParser(QUIET=True)
# 解析结构
structure = parser.get_structure("1crn", "1crn.cif")
### 从 PDB 下载
python
from Bio.PDB import PDBList
# 创建 PDB 列表对象
pdbl = PDBList()
# 下载 PDB 文件
pdbl.retrieve_pdb_file("1CRN", file_format="pdb", pdir="structures/")
# 下载 mmCIF 文件
pdbl.retrieve_pdb_file("1CRN", file_format="mmCif", pdir="structures/")
# 下载过时的结构
pdbl.retrieve_pdb_file("1CRN", obsolete=True, pdir="structures/")
## 导航结构层级
### 访问模型
python
# 获取第一个模型
model = structure[0]
# 遍历所有模型
for model in structure:
print(f"Model {model.id}")
### 访问链
python
# 获取特定链
chain = model["A"]
# 遍历所有链
for chain in model:
print(f"Chain {chain.id}")
### 访问残基
python
# 遍历链中的残基
for residue in chain:
print(f"Residue: {residue.resname} {residue.id[1]}")
# 通过 ID 获取特定残基
# 残基 ID 是一个元组: (杂原子字段, 序列 ID, 插入码)
residue = chain[(" ", 10, " ")] # 位置 10 的标准氨基酸
### 访问原子
python
# 遍历残基中的原子
for atom in residue:
print(f"Atom: {atom.name}, Coordinates: {atom.coord}")
# 获取特定原子
ca_atom = residue["CA"] # Alpha 碳
print(f"CA coordinates: {ca_atom.coord}")
### 修改