我有一个关于一种名为" new_mol"
的低位新化学物质的PDB格式代码new_mol= """
ATOM 45 C BARG A -3 12.759 86.530 96.365 0.50 36.39 C
ATOM 46 O BARG A -3 12.924 87.757 96.420 0.50 37.26 O
ATOM 47 CB BARG A -3 13.428 85.746 93.980 0.50 36.60 C
ATOM 48 CG BARG A -3 12.866 85.172 92.651 0.50 37.31 C
ATOM 49 CD BARG A -3 13.374 85.886 91.406 0.50 37.66 C
ATOM 50 NE BARG A -3 12.644 85.487 90.195 0.50 38.24 N
ATOM 51 CZ BARG A -3 13.114 85.582 88.947 0.50 39.55 C
ATOM 52 NH1BARG A -3 14.338 86.056 88.706 0.50 40.23 N
"""
import os
每行的最后一个字母是原子符号。
我想定义一个函数
def count_atom(new_mol):
num_atoms = dict()
创建字典以获得结果:
#num_atoms = {'C':5, 'O':1; 'N':2}
因此我想在Python中创建一个字典,显示new_mol变量的每个原子的总数。
提前感谢您的帮助。
答案 0 :(得分:0)
这是代码,您可以根据您的要求使用它。期望的结果是在result_dict varriable
中new_mol= """
ATOM 45 C BARG A -3 12.759 86.530 96.365 0.50 36.39 C
ATOM 46 O BARG A -3 12.924 87.757 96.420 0.50 37.26 O
ATOM 47 CB BARG A -3 13.428 85.746 93.980 0.50 36.60 C
ATOM 48 CG BARG A -3 12.866 85.172 92.651 0.50 37.31 C
ATOM 49 CD BARG A -3 13.374 85.886 91.406 0.50 37.66 C
ATOM 50 NE BARG A -3 12.644 85.487 90.195 0.50 38.24 N
ATOM 51 CZ BARG A -3 13.114 85.582 88.947 0.50 39.55 C
ATOM 52 NH1BARG A -3 14.338 86.056 88.706 0.50 40.23 N
"""
list_of_string = new_mol.split('ATOM')
result_dict = {}
for string in list_of_string:
chamical_info = string.strip()
if chamical_info:
print chamical_info[-1]
if result_dict.has_key(chamical_info[-1]):
result_dict[chamical_info[-1]] = result_dict[chamical_info[-1]] + 1
else:
result_dict[chamical_info[-1]] = 1
print result_dict
答案 1 :(得分:0)
模块集合中有一个类计数器可以很好地执行。如果你有一个原子列表,你只需要用Counter(atoms)
创建一个计数器,你就可以获得所需的结果。
from collections import Counter
new_mol= """
ATOM 45 C BARG A -3 12.759 86.530 96.365 0.50 36.39 C
ATOM 46 O BARG A -3 12.924 87.757 96.420 0.50 37.26 O
ATOM 47 CB BARG A -3 13.428 85.746 93.980 0.50 36.60 C
ATOM 48 CG BARG A -3 12.866 85.172 92.651 0.50 37.31 C
ATOM 49 CD BARG A -3 13.374 85.886 91.406 0.50 37.66 C
ATOM 50 NE BARG A -3 12.644 85.487 90.195 0.50 38.24 N
ATOM 51 CZ BARG A -3 13.114 85.582 88.947 0.50 39.55 C
ATOM 52 NH1BARG A -3 14.338 86.056 88.706 0.50 40.23 N
"""
atoms = [line.split()[-1] for line in new_mol.splitlines() if line.startswith('ATOM')]
atom_count = Counter(atoms)