我想读取sdf文件(包含许多分子)并返回分子的加权邻接矩阵。原子应被视为顶点,而键应被视为边。如果i和j顶点通过单键、双键或三键连接,则邻接矩阵中的对应条目应分别为 1、2 和 3。我需要进一步获取每个顶点的距离向量,其中列出了不同距离的顶点数。
有没有可用的python包来做到这一点?
我会推荐Pybel在 Python 中读取和操作 SDF 文件。要获取绑定信息,您可能还需要使用功能更全面但 Pythonic 更少的openbabel 模块,它可以与 Pybel 一起使用(如 pybel.ob)。
首先,您将编写如下内容:
import pybel
for mol in pybel.readfile('sdf', 'many_molecules.sdf'):
for atom in mol:
coords = atom.coords
for neighbor in pybel.ob.OBAtomAtomIter(atom.OBAtom):
neighbor_coords = pybel.atom(neighbor).coords