各位朋友好,今天我讲述如何用Rdkit构建化学分子的溶解度预测模型。首先我们要了解一个非常重要的包Rdkit。
Rdkit介绍
•Rdkit是开源的化学信息工具包
•采用了进行封装,提供Python2/Python3的接口
•通过SWIG技术提供Java 和C# 接口
•提供了大量对化学分子2D/3D的计算操作
•生成用于机器学习的分子描述商业友好的BSD协议
•核心数据结构和算法用C++实现
•通过Boost.Python技术对RDKit符
•基于PostgreSQL搭建分子数据库
•KNIME中的化学信息计算支持(https://www.knime.com/rdkit)
RDKIT可以处理化学分子内容如下图
接下来,我们要探索如何用Rdkit构建化学分子的溶解度预测模型。
我们来看看术语‘溶解度solubility’是什么意思。
溶解度,符号S,在一定温度下,某固态物质在100g溶剂中达到饱和状态时所溶解的溶质的质量,叫做这种物质在这种溶剂中的溶解度。物质的溶解度属于物理性质。
溶解度的单位是克(或者是克/100克溶剂),而不是没有单位.
例如,在20°C的时候,100克水里溶解0.165克氢氧化钙,溶液就饱和了,氢氧化钙在20°C的溶解度就是0.165克,也可以写成0.165克/100克水。
每一种化学分子都有相应溶解度,那么我们可否根据已知化学分子溶解度来预测其它化学分子溶解度呢?
答案是可以的。我们可以用python的rdkit,sklearn包搭建分子溶解度预测模型。
建模过程中,我们需要解决一些难题。
难点1:化学分子如何转换为数字?用于机器学习计算。
难点2—如何构建机器学习模型?
欢迎给位朋友关注
里面有详细讲述如何用Rdkit构建化学分子的溶解度预测模型,并解决上述难题。
教程计算逻辑如下图
教程有完整数据和调试好的python脚本
这是化学分子式和溶解度数据
这是通过python脚本,把dat数据保存到Excel文件。
部分python脚本把smiles字符串形式转换为分子式,并可视化展示截图
模型校验可视化
术语补充知识
SMILES(Simplified molecular input line entry specification),简化分子线性输入规范,是一种用ASCII字符串明确描述分子结构的规范。SMILES由Arthur Weininger和David Weininger于20世纪80年代晚期开发,并由其他人,尤其是日光化学信息系统有限公司(Daylight Chemical Information Systems Inc.),修改和扩展。
由于SMILES用一串字符来描述一个三维化学结构,它必然要将化学结构转化成一个生成树,此系统采用纵向优先遍历树算法。转化时,先要去掉氢,还要把环打开。表示时,被拆掉的键端的原子要用数字标记,支链写在小括号里。
SMILES字符串可以被大多数分子编辑软件导入并转换成二维图形或分子的三维模型。转换成二维图形可以使用Helson的“结构图生成算法”(Structure Diagram Generation algorithms)。