在 py-mmcif
包中,atom_site
对象用于存储蛋白质或小分子结构中每个原子的坐标及其他相关信息。它包含了每个原子的位置、类型、残基编号等详细信息,通常对应于 PDB 文件的 ATOM 记录。
常见的 atom_site
属性
以下是 atom_site
对象中一些常见的属性:
- group_PDB:该字段通常是
ATOM
或HETATM
,表示这是标准的原子记录还是异构分子原子记录。 - label_atom_id:原子的名称,例如
CA
表示主链的 alpha 碳。 - label_comp_id:残基的名称,例如
ALA
表示丙氨酸。 - label_asym_id:链的标识符(asym_id),例如
A
表示链 A。 - label_seq_id:序列编号,表示该残基在蛋白质中的位置。
- Cartn_x, Cartn_y, Cartn_z:原子的三维坐标。
- occupancy:该原子的占有率,通常为 1.0。
- B_iso_or_equiv:原子的温度因子(B 因子),表示原子的移动性。
- auth_atom_id, auth_comp_id, auth_asym_id, auth_seq_id:这些字段是原始的 PDB 编号,代表原子、残基和链的名称以及编号。
使用 atom_site
提取信息的示例代码
以下是如何使用 py-mmcif
包提取 atom_site
对象中的信息的示例代码:
from mmcif.io.PdbxReader import PdbxReader
import gzip# mmCIF 文件路径
cif_file_path = '/path/to/your/file.cif.gz'data = []
# 打开并读取 gzipped mmCIF 文件
with gzip.open(cif_file_path, 'rt') as cif:reader = PdbxReader(cif)reader.read(data)# 提取第一个数据块
data = data[0]# 获取 atom_site 对象
atom_site = data.getObj('atom_site')# 打印 atom_site 的所有行信息
for row in atom_site.getRowList():model = row[atom_site.getIndex('pdbx_PDB_model_num')] # model number (for multi-model PDBs, e.g. NMR)group_PDB = row[atom_site.getIndex('group_PDB')]atom_name = row[atom_site.getIndex('label_atom_id')]residue_name = row[atom_site.getIndex('label_comp_id')]chain_id = row[atom_site.getIndex('label_asym_id')]seq_id = row[atom_site.getIndex('label_seq_id')]x_coord = row[atom_site.getIndex('Cartn_x')]y_coord = row[atom_site.getIndex('Cartn_y')]z_coord = row[atom_site.getIndex('Cartn_z')]b_factor = row[atom_site.getIndex('B_iso_or_equiv')]print(f"{model} {group_PDB} {atom_name} {residue_name} {chain_id} {seq_id} ({x_coord}, {y_coord}, {z_coord}) B-factor: {b_factor}")
解释:
- group_PDB: 是原子类别,通常是
ATOM
(标准原子)或HETATM
(异构分子原子)。 - label_atom_id: 是原子的名称,例如
CA
表示主链 alpha 碳。 - label_comp_id: 是残基的名称,例如
ALA
表示丙氨酸。 - label_asym_id: 是链的标识符,例如
A
表示链 A。 - label_seq_id: 是序列中的残基编号。
- Cartn_x, Cartn_y, Cartn_z: 是原子的三维坐标。
- B_iso_or_equiv: 表示原子的 B 因子(温度因子)。
这段代码读取一个压缩的 CIF 文件,提取所有原子的坐标、名称、残基信息以及 B 因子,并以人类可读的格式打印出来。