欢迎访问宙启技术站
智能推送

对于多个分子结构,Python中使用MolsToGridImage()生成网格图像

发布时间:2023-12-18 18:33:13

在Python中,生成多个分子结构的网格图像可以使用RDKit库中的MolsToGridImage()函数。该函数接受一个分子列表作为输入,并将它们组织成网格形式的图像。

以下是一个使用例子,详细步骤如下:

1. 首先,确保已安装好RDKit库。可以使用以下命令在Python环境中安装RDKit:

pip install rdkit

2. 导入所需的库:

from rdkit import Chem
from rdkit.Chem import Draw

3. 准备分子数据。创建一个包含多个分子结构的分子列表,可以通过SMILES字符串、分子对象等方式创建分子。

molecule_list = [
    "CC(C)(C)OC(=O)N1CCCCC1",
    "CC(C)(C)CC(C(=O)O)N(P(=O)(O)O)OC1=CC=C(C=C1)Cl",
    "CC(CN(CCN(CC(=O)O)CC(=O)O)CC(=O)O)OC(=O)C",
    "CC(=O)N1CCCC1C(=O)O",
    "CC(CCC(=O)O)C1CCC2C1(CCC3C2CCC4C3(CCC=C4)C)C",
    "CC(=O)OC1=CC2=C(C=C1O)OC3=C(C2=O)C=CO3",
]

4. 将分子结构转化为Mol对象:

mol_list = [Chem.MolFromSmiles(smiles) for smiles in molecule_list]

5. 调用MolsToGridImage()函数生成网格图像:

grid_img = Draw.MolsToGridImage(mol_list, molsPerRow=3, subImgSize=(200, 200))

在上述代码中,molsPerRow参数定义了每行显示的分子个数,subImgSize参数定义了每张分子结构图片的尺寸。

6. 展示生成的网格图像:

grid_img.show()

完整的代码如下:

from rdkit import Chem
from rdkit.Chem import Draw

molecule_list = [
    "CC(C)(C)OC(=O)N1CCCCC1",
    "CC(C)(C)CC(C(=O)O)N(P(=O)(O)O)OC1=CC=C(C=C1)Cl",
    "CC(CN(CCN(CC(=O)O)CC(=O)O)CC(=O)O)OC(=O)C",
    "CC(=O)N1CCCC1C(=O)O",
    "CC(CCC(=O)O)C1CCC2C1(CCC3C2CCC4C3(CCC=C4)C)C",
    "CC(=O)OC1=CC2=C(C=C1O)OC3=C(C2=O)C=CO3",
]

mol_list = [Chem.MolFromSmiles(smiles) for smiles in molecule_list]

grid_img = Draw.MolsToGridImage(mol_list, molsPerRow=3, subImgSize=(200, 200))

grid_img.show()

运行以上代码后,你将会看到一个包含多个分子结构的网格图像。

希望本文可以帮助你了解如何使用MolsToGridImage()函数在Python中生成多个分子结构的网格图像。