好友
阅读权限10
听众
最后登录1970-1-1
|
from Bio.PDB import PDBParser
from collections import defaultdict
# PDB 文件路径
pdb_file = "C:/Users/Administrator/Desktop/8bcw.pdb"
output_file = "C:/Users/Administrator/Desktop/results.txt"
# 初始化 PDB 解析器
parser = PDBParser(QUIET=True)
structure = parser.get_structure("PDB_structure", pdb_file)
# 定义氨基酸残基的分类方法
amino_acids = ['ALA', 'ARG', 'ASN', 'ASP', 'CYS', 'GLN', 'GLU', 'GLY', 'HIS', 'ILE', 'LEU', 'LYS', 'MET',
'PHE', 'PRO', 'SER', 'THR', 'TRP', 'TYR', 'VAL']
# 打开文件以写入模式
with open(output_file, 'w') as f:
# 遍历所有链,统计每个链的氨基酸和辅助因子的数量
for model in structure:
for chain in model:
amino_acid_count = 0
ligand_count = 0
ligand_types = defaultdict(int) # 使用默认字典记录每种辅助因子的数量
# 遍历链中的每个残基
for residue in chain:
res_name = residue.get_resname().strip()
# 判断是氨基酸还是辅助因子
if res_name in amino_acids:
amino_acid_count += 1
else:
ligand_types[res_name] += 1
ligand_count += 1
# 写入每条链的统计信息
f.write(f"链 {chain.id}: 氨基酸数量 = {amino_acid_count}, 辅助因子数量 = {ligand_count}\n")
# 写入每种辅助因子的数量
if ligand_types:
f.write(f"链 {chain.id} 的辅助因子分布:\n")
for ligand, count in ligand_types.items():
f.write(f" {ligand}: {count}\n")
else:
f.write(f"链 {chain.id} 没有检测到辅助因子\n")
# 输出所有检测到的辅助因子的总种类
ligand_summary = set(ligand_types.keys())
if ligand_summary:
f.write(f"检测到的辅助因子种类: {', '.join(ligand_summary)}\n")
else:
f.write("未检测到任何辅助因子\n")
print(f"结果已写入 {output_file}")
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|