python - RdKit 分子中原子的坐标

标签 python chemistry rdkit

大家好,我需要一些帮助来格式化分子中原子的坐标,我正在使用 Python 进行编码。我需要的是:

(atom) x y z coordinates

对于分子中的每个原子。到目前为止我的代码是:

for molecule in mol_list:
    molecule = Chem.AddHs(molecule)
    print(molecule.GetNumAtoms())
    AllChem.EmbedMolecule(molecule)
    AllChem.UFFOptimizeMolecule(molecule)
    molecule.GetConformer()

    print()

    for atom in molecule.GetAtoms():
        # positions = molecule.GetConformer().GetAtomPosition(0)
        positions = molecule.GetConformer().GetPositions()
        print(atom.GetSymbol(), positions)
    
        print()

但这给了我输出:

(Atom) x y z coordinates for every atom

如此重复,分子中的每个原子都具有整个分子的 x、y 和 z 坐标。 for 循环中的 mol_list 是我转换为对象的字符串列表:rdkit.Chem.rdchem.Mol。我已尝试使用 Chemml 中的 geometry.xyz 函数,但遇到了 Molecule 对象的问题。另外,我尝试使用 RdKit 函数 getAtomPos() 但没有成功。对此的任何帮助都会很棒!

最佳答案

您必须传递原子编号才能获取其坐标。以下代码片段应该可以满足您的要求

for molecule in mol_list:
    molecule = Chem.AddHs(molecule)
    print(molecule.GetNumAtoms())
    AllChem.EmbedMolecule(molecule)
    AllChem.UFFOptimizeMolecule(molecule)
    molecule.GetConformer()
    print()

    for i, atom in enumerate(molecule.GetAtoms()):
        positions = molecule.GetConformer().GetAtomPosition(i)
        print(atom.GetSymbol(), positions.x, positions.y, positions.z)

关于python - RdKit 分子中原子的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71915443/

相关文章:

python - 如何将 Count Morgan 指纹计算为 numpy.array?

Python - 在多列中搜索字符串以设置分类变量值

python - 如何使用openpyxl设置图表标签的间隔单位

带有 .pdb 文件的 python

machine-learning - 机器学习技术在化学中的应用

python - 可以直接将存储在 pandas 数据框中的 SMILE 结构输入 RDKit 来计算分子指纹和相似度吗?

python - 生成小配体的构象异构体但保留正确的芳香性

python - python-dev 包是做什么用的

python - 尝试在 Python 中使用 except

python - 如何使用 Python 中的 rdkit 确定任何分子的石蜡基 CH3、CH2 和 CH 基团的数量?