基于Open Babel将SDF转为MOL2格式
基于Open Babel将SDF转为MOL2格式
SDF转为MOL2的格式转化步骤很简单,但是需要安装 Open Babel 软件,因为常用Python,索性Openbabel也支持Python,因此通过conda安装。Open Babel 总共包含了两个 Python 模块openbabel和Pybel,可用于访问 Open Babel 工具包的功能。
- openbabel:openbabel 模块允许 Python 直接访问 C++ 的Open Babel 库。这种绑定是通过SWIG软件包生成的,它几乎提供了Open Babel所有接口的Python访问权限,包括基础类OBMol、OBAtom、OBBond 和OBResidue,以及转换框架 OBConversion。因此,C++ API中的几乎所有调用都可以在Python脚本中使用,且语法差异极小,详见:The openbabel module。
- Pybel:一个轻量级的封装,围绕openbabel模块中的类和方法。Pybel 提供了一些方便的函数和类,使得从Python中使用 Open Babel 库变得更加简单,尤其是在文件的输入/输出以及访问原子和分子属性方面。Pybel 使用的 Atom和 Molecule 类可以与openbabel模块使用的OBAtom和OBMol类相互转换,详见:Pybel。
1. 安装Openbebel (On Linux)
使用conda安装。
conda install conda-forge::openbabel
2. 转格式(SDF→MOL2)
使用 Open Babel 的 Python 接口 Pybel 模块,用于处理化学分子文件的读取和格式转换,将一个 SDF 格式的文件中读取第一个分子,并将其转换为 MOL2 格式后保存。
from openbabel import pybel
# read compound (sdf fromat)
cmd_1=next(pybel.readfile("sdf", "./cmd-1-3d.sdf"))
# convert to mol2 format
cmd_1.write("mol2", "./cmd-1-3d.mol2")
‼️尽管
cmd-1-3d.sdf
文件中只保存了一个化学分子,仍然使用了next()
> 来访问文件中的第一个(也可能是唯一一个)分子。