0

这是我的脚本:

   dopts = Draw.rdMolDraw2D.MolDrawOptions()
    dopts.prepareMolsBeforeDrawing = True

    k = 10
    results = Draw.MolsToGridImage(
        self.hits[:k + 1], molsPerRow=5, subImgSize=(250,250),
        drawOptions=dopts,
        legends=[x.GetProp("chembl_id")
                 for x in self.hits[:k]],        )
    results.save(f'{self.out_dir}/output.png')

但是整个图像输出文件里面有错位的分子。输出是这样的。

我已将此作为问题发布,但尚未解决。https://github.com/rdkit/rdkit/issues/4097

4

1 回答 1

0

查看有关分子制备的文档部分prepareMolsBeforeDrawing

对分子进行一些清理操作以准备好绘制。操作包括:kekulization,添加手性 Hs(以便我们可以在其上绘制楔形),在手性中心楔入键,如果分子还没有构象,则生成 2D 构象

如果您的分子来自类似 SDF 之类的东西,那么也许去除已经存在的构象将解决这个问题,尽管我不完全确定,因为我没有要测试的 SDF。在绘制图像之前尝试添加以下内容,假设您没有使用已经存在的构象,否则,请事先制作副本。

# Assuming molecules are in a list named mols
for mol in mols:
    mol.RemoveAllConformers()  # edited in-place

编辑:

在一些具有 3D 构象的化合物上对此进行了测试,并去除了构象异构体确实迫使 rdkit 为描述生成新的 2D 坐标。

或者,您也可以自己添加 2D 坐标,覆盖现有的构象,然后如果您愿意,可以删除准备参数,假设您对它执行的其他清理步骤不感兴趣:

for mol in mols:
    AllChem.Compute2dCoords(mol, clearConfs=True)
于 2021-06-10T12:04:43.930 回答