摘要:以美国环保署的EPI SUITE的沸点数据为基础,演示了如何联合使用Keras与RDKit建立基于深度学习的沸点预测模型并用于新化合物的沸点预测。内容包括:读入数据集;用RDkit计算描述符(指纹图谱与分子量);建立网络;模型训练;模型的考察与预测新化合物的沸点。

前言

Flave V2是一款全新的基于结构的药物设计软件,详见版本更新 | FLARE V2介绍。从Flare V2开始,整合了python并内置了RDKit机器学习模块,这使得Flare可以通过Python进行无限地扩展。在FLARE教程 | 如何安装新的Python模块以及进行多元线性回归分析一文中详细介绍了如何整合各种python应用以及Jupyter,并以多元线性回归为例,演示了:(1)如何读入外部数据;(2)如何准备测试集与训练集;(3)如何训练一个多元线性回归模型;(4)如何用模型进行预测;(5)模型的质量评估。

Flare整合Jupyter一文中,我们重点介绍了如何在Jupyter Notebook里直接使用Flare图形界面的对象与方法,使得Jupyter可以与Flare可以互动。该文包含了几个方面的内容:如何用内嵌在Flare里的Jupyter Notebook从ChEMBL下载了一组AChE抑制剂、将它们加载到Flare、生成3D坐标和场点、最后对接到从Protein Data Bank下载的AChE蛋白结合位点里。其中RDKit用于计算配体间的2D相似性和最大公共子结构、生成化合物的2D结构并展示。 RDKit分子与Flare中的Cresset分子完全互操作,因此Cresset 3D技术和RDKit方法可以在一个Python工作流程中协同组合。Matplotlib,NumPy和SciPy用于生成带有回归线的散点图并计算一些统计数据。

在最近发布的Forge V10.6中,除了传统的Field Based 3D-QSAR(采用PLS)之外,新引入了更多机器学习方法用于建立活性预测模型,包括:kNN,支持向量机,关联向量机以及随机森林等等。在Forge中,可以自动地进行各种方法进行建模并自动地为你选择出最好的方法,而不必用手工一个一个测试。

鉴于药物化学领域大部分的应用场景是:我已经有了一系列化合物的活性数据,如何建立一个预测模型。通常所说的数据包含:(1)化合物结构;(2)名称与(3)活性值(通常是IC50或相关的其它性质比如沸点、致突变活性、酶代谢稳定性性等)。这样的数据不仅可以以化学领域常用的格式保存,还可以用大家都能操作的excel文件保存,典型的格式如下:

1
2
3
4
Name Structure IC50
BD50002 c1ccccc1 80
BD10921 c1ccccc1N 90
...

如何从这样的数据开始训练一个预测性模型是药化科研人员关心的。因此本文选择了美国环保署的EPI SUITE的沸点数据库来演示如何用深度学习建立沸点预测模型并用于新化合物的沸点预测。内容包括:(1)读入数据集;(2)用RDkit计算描述符(指纹图谱与分子量);(3)建立网络;(4)模型训练;(5)模型的考察;(6)模型的加载与预测新化合物的沸点。

代码部分

软件要求

预装:Keras, Tensorflow, RDKit,sklearn,pandas,Numpy,matplotlib。

硬件

测试时使用了NVIDIA GEFORCE GTX 1080加速。

具体操作步骤

请通过滚动条浏览全部代码,其中大约需要30分钟完成模型训练。

说明

本文出于交流、演示的目的,上述代码并非最优。在正式的研究中应该对特征变量进行优选、并进行归一化处理;此外还有许多参数需要优化。你会注意到,我并没有直接用分子量作为描述符,而是将分子量除以500之后再用于建模。这使得每个化合物的分子量被“缩小”为0-2之间的一个值,这样各个变量的取值范围大体一致,这有利于加速收敛、提高模型的精度。这也是为什么没有对变量进行归一化处理的原因(正式研究不建议这么做)。

本文参考了Esben Jannik Bjerrum的博客文章Molecular neural network models with rdkit and keras in python。但用了更大的沸点数据集(训练集4074个化合物,测试集1358个化合物)、也用了同样的指纹图谱Esate与分子量(共80个特征变量)。