要解决“Avogadro2不能正确标记原子”的问题,可以尝试以下代码示例:
from openbabel import pybel
def mark_atoms(filename):
# 从文件中读取分子结构
mol = next(pybel.readfile("xyz", filename))
# 获取分子中的所有原子
atoms = mol.atoms
# 遍历每个原子,将其标记为正确的序号
for i, atom in enumerate(atoms):
atom.OBAtom.SetAtomicNum(i + 1)
# 保存修改后的分子结构
output_filename = "marked_" + filename
mol.write("xyz", output_filename)
return output_filename
# 使用示例
filename = "molecule.xyz"
marked_filename = mark_atoms(filename)
print("已标记原子的文件:", marked_filename)
请确保安装了Open Babel和pybel库,可以使用以下命令进行安装:
pip install openbabel
pip install pybel
这段代码使用Open Babel和pybel库来读取XYZ文件中的分子结构,并遍历每个原子,将其标记为正确的原子序号。最后,将修改后的分子结构保存为新的XYZ文件。