`Rdkit & OpenBabel Tutorial

本教程主要参考了Mr. Chen Blog (main source)Rdkit官方文档和个人使用经验(多种文件转化为CM描述符程序使用指南)

Chapter 1- 为Mr. Chen Blog的转载

Chapter 1 Introduction

RDKit是什么?

开源的化学信息工具包

RDKit其他信息

发展过程

和其他开源工具整合

使用RDKit的开源工具

contrib目录位置: https://github.com/rdkit/rdkit/tree/master/Contrib 。 contrib目录,是RDKit发布版本的一部分,包含社区成员贡献的代码。

 

Chapter 2 Installation

[Installation]

anaconda安装方式适合不同的操作系统(强烈推荐)。

anaconda python

anaconda介绍

anaconda python 是非常好用的python解释器,自带多种好用功能,如:建立python虚拟环境、conda软件包管理工具等。 conda 命令包能够非常方便的安装各种预编译好的软件包,常用的软件通常都为提供相应的conda软件包。 conda 命令也可以帮忙创建独立的python环境。

安装anaconda python

anaconda 官网 <https://www.anaconda.com/distribution/#download-section>__ 根据操作系统,下载相应的anaconda python 软件包安装即可。 推荐anaconda 3,自带python3 解释器。

windows 先安装rdkit

我的电脑是win10,64位。以我的电脑为例,首先下载 anaconda python 3.

_images/anaconda_install2020-02-07_132106.999478.png

下载anacond pyhon

注解

打开 anaconda promt.

这里我就直接在base环境下安装rdkit,

_images/conda_prompt2020-02-07_144539.460282.png

在anaconda promt 中测试是否安装成功。在cmd中输入

如果能看到rdkit的版本则说明安装成功, 如下图所示。

_images/rdkit_version2020-02-07_180719.946011.png

linux下安装rdkit

conda的详细使用参见python programming模块

 

Chapter 3 基础教程

[Getting Started with RDKit in Python]

基础教程主要对RDKit有一个初步的了解,明白RDKit能做什么,一些常用的功能。 RDKit功能的算法细节,参见高级教程或者参考文献。

注解:

  1. 推荐使用Jupyter Notebook 工具,学习RDKit.
  2. 从2019.03版本及其后续版本不再支持python 2, 支持python2的最后一版是 2018.09。
  3. rdkit 的版本号 从 1版开始,启用年月的版本号。半年发布一次版本。

现在python 3已经很成熟了,python 2 有的包 python 3 也有了,让我们一起拥抱python 3吧。

本教程中使用到的素材有:

  1. 2D分子: input.mol
  2. 2D分子sdf: 5ht2ligs.sdf
  3. 3D分子: 1t3r_lig.mol

1. 读写分子操作

2. 操作分子

3. 修改分子

4. 处理2D分子

Smiles 可以看成分子的1D形式,分子的平面结构可以看成分子的2D形式

5. 处理3D分子

RDKit中内置了2种不同的方法产生分子构象。

方法一: 距离几何法[1]

  1. 基于链接表和规则计算分子中原子的距离矩阵;

  2. 使用三角平滑算法对距离矩阵进行优化;

  3. 产生一个随机距离矩阵;

  4. 为每个原子产生一个坐标;

  5. 使用粗糙的立场对坐标进行优化

    (通过该方法产生的3D构象通常很丑陋。需要进一步通过力场进行美化。RDKit美化分子构象使用的是UFF力场)

方法二:基于CSD的扭转角偏好方法【18】 通过该方法产生的构象不需要进一步通过力场进行优化。 从2018.09版本开始,RDKit产生3D构象的默认方法是方法二ETKDG。

6. 保存分子对象

RdDkit 内置了2种保存分子对象的方法。

  1. 分子对象可以使用python的pickling机制进行保存。

    pkl = pickle.dumps(m)

    RDKit的pickle文件非常紧凑,从pickle文件中加载分子比Mol文件和SMILES字符串快很多。 对于经常使用的分子保存为pickle 是一个好主意。

  2. 分子对象也可以保存为普通的二进制文件。binStr = m.ToBinary()

    二进制文件的大小和分子大小有关系,而pickle文件和分子大小关系不明显。推荐大家用pickle保存文件。 pickle文件比sdf文件更小,加载速度更快。

7. 绘制分子【可视化分子】

这里主要介绍绘制分子的常规方法,更多自定义绘制,参见进阶教程。 rdkit 内置了Draw模块,用于绘图,把一些经常用到的方法直接放在Draw下面。

8. 子结构搜索:

子结构搜索可以通过SMARTS匹配符完成。

9. 化学转换

RDKit中包含了大量修改分子的函数。 这些函数仅仅是对分子做简单的变换。 对于复杂变换参见化学反应小节。化学反应

10. 指纹和相似性

RDKit 内置了多种分子指纹计算方法,如:

  1. 拓扑指纹 Chem.RDKFingerprint(mol)
  2. MACCS 指纹
  3. Atom Pairs
  4. topological torsions
  5. 摩根指纹(圆圈指纹)
  6. 摩根指纹拓展

More details about the algorithm used for the RDKit fingerprint can be found in the “RDKit Book”. RDKit中分子指纹的细节在RDkit Book中。

11. 分子性质(描述符)

12. 化学反应

RDKit 提供化学反应引擎,其中化学反应模板是基于smarts 构建的。 反应物+反应引擎就可以生成产物。

13. 化学性质和药效团

14. 分子片段

RDKit中包含了大量把分子分解成片段的方法和处理片段的工具。

RDKit中内置了一些重要的化学官能团,

示例代码:

输出:

_images/function_groups2020-02-22_154031.035430.png

然后基于这份官能团列表,我们就可以分析分子中有多少个官能团。

代码如下:

输出:

_images/fgs2020-02-22_193745.449162.png

输出:

对结果进行可视化。

15. 编辑分子

编辑实时(in-place)发生。如果希望得到合理的化学结构,一定要记得sanitize检查和修正。

如把苯环上的第一个C原子修改成N原子。

示例代码

输出:

 

Chapter 4 Other Tricks

 

Chapter 5 OpenBabel Tutorial

Ref. Website: http://openbabel.org/wiki/Main_Page

  1. Installation

  2. Usage:

  3.