py-mmcif提取结构解析的方法、提交日期以及pdb ID等
要使用 py-mmcif
提取蛋白质结构的解析方法、发布日期、PDB ID 等信息,通常可以从 entry
或 struct
相关的 CIF 文件数据块中获取。这些字段在 mmCIF 文件中存储元数据信息,例如解析方法、日期和 PDB ID。
下面是一个示例代码,展示如何通过 py-mmcif
包来提取这些信息。
示例代码:
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]
# 提取 PDB ID
pdb_id = data.getObj('entry').getValue('id', 0)
print(f"PDB ID: {pdb_id}")
# 提取解析方法
if data.getObj('exptl') is not None:
method = data.getObj('exptl').getValue('method', 0)
print(f"Experimental method: {method}")
# 提取结构的最初提交日期
if data.getObj('pdbx_database_status') is not None:
deposition_date = data.getObj('pdbx_database_status').getValue('recvd_initial_deposition_date',0)
print(f"Deposition_date: {deposition_date}")
# 发布日期
# release_date = data.getObj('database_PDB_rev').getValue('date_original', 0)
# 提取结构解析的分辨率
res = None
if data.getObj('refine') is not None:
try:
res = float(data.getObj('refine').getValue('ls_d_res_high', 0))
print(f"Resolution (from refine): {res} Å")
except:
print("Resolution not found in 'refine'.")
if (data.getObj('em_3d_reconstruction') is not None) and (res is None):
try:
res = float(data.getObj('em_3d_reconstruction').getValue('resolution', 0))
print(f"Resolution (from em_3d_reconstruction): {res} Å")
except:
print("Resolution not found in 'em_3d_reconstruction'.")