rdkit
用于精细分子控制的化学信息学工具包。支持 SMILES/SDF 解析、描述符(MW、LogP、TPSA)、指纹、子结构搜索、2D/3D 生成、相似性、反应。对于具有更简洁接口的标准工作流程,使用 datamol(RDKit 的封装)。对高级控制、自定义清理(消毒)以及专用算法则使用 rdkit。
RDKit - Python 化学信息学工具包
技能概述
RDKit 是一个开源的化学信息学工具包,提供 Python API 用于分子结构解析、描述符计算、分子指纹生成、子结构搜索、化学反应预测和 2D/3D 分子可视化,适用于药物发现、计算化学和化学信息学研究。
适用场景
1. 药物发现与虚拟筛选
在药物研发过程中,RDKit 可以处理大规模化合物库,进行分子描述符计算(如分子量、LogP、TPSA)、类药性分析(Lipinski 规则五)、分子指纹相似度筛选和子结构过滤,帮助研究人员快速识别潜在药物候选分子。
2. 化学数据挖掘与分析
对于化学信息学研究,RDKit 提供 SMILES/SDF 分子式解析、批量分子数据处理、分子聚类和多样性分析等功能,支持从化学数据库中提取结构信息、分析构效关系(SAR)和构建化学特征预测模型。
3. 高级分子建模与反应预测
当需要精细控制分子处理流程时,RDKit 提供自定义分子标准化、特定子结构匹配、化学反应 SMARTS 定义、3D 分子构象生成和药效团特征识别等高级功能,适用于复杂的化学信息学研究和专业算法开发。
核心功能
1. 分子 I/O 与结构解析
RDKit 支持多种化学格式的读写,包括 SMILES 字符串、SDF(结构数据文件)、MOL 文件和 InChI 等标准格式,提供单分子和批量分子处理能力,能够自动进行分子验证和芳香性感知,并支持 gzip 压缩文件的多线程读取。
2. 分子描述符与指纹
工具包内置 200+ 分子描述符计算功能,涵盖物理化学性质(分子量、LogP、TPSA、氢键供体/受体数)、拓扑描述符和指纹生成(Morgan/ECFP、RDKit 拓扑指纹、MACCS 密钥、原子对指纹等),支持分子相似度计算(Tanimoto、Dice、余弦相似度)和基于指纹的分子聚类。
3. 子结构搜索与化学反应
RDKit 提供 SMARTS 模式匹配功能,支持复杂子结构查询(如官能团识别、环系统检测、大环化合物筛选),并具备化学反应预测能力,可通过反应 SMARTS 定义化学转化规则,应用于代谢预测、反应产物推断和反应库筛选。
4. 2D/3D 分子生成与可视化
支持 2D 分子坐标计算(用于分子结构可视化)、3D 构象生成(ETKDG 算法)、构象优化(UFF/MMFF 力场)和分子对齐,提供多种分子可视化选项(高亮子结构、自定义绘图参数、Jupyter Notebook 集成),适用于分子相似性地图和构效关系可视化。
常见问题
RDKit 和 datamol 应该如何选择?
RDKit 适合需要精细控制和高级算法的场景,如自定义分子标准化流程、特定子结构匹配逻辑或专业化学反应预测。datamol 是基于 RDKit 的简化封装,提供更友好的 API 和标准工作流程,适合常规分子处理任务和快速原型开发。如果任务涉及复杂的化学信息学算法开发或需要底层控制,建议直接使用 RDKit。
如何安装和配置 RDKit?
推荐使用 uv pip install rdkit 安装到现有 Python 环境,或通过 conda-forge 创建独立环境:conda create -c conda-forge -n my-rdkit-env rdkit。示例代码兼容 RDKit 2026.03.x 版本。避免在同一环境中同时安装 conda 和 PyPI 的 rdkit 包,以防止二进制扩展冲突。对于跨平台支持,PyPI 的 rdkit 包提供预编译 wheel;rdkit-pypi 是旧版包名,仅用于维护遗留环境。
RDKit 支持哪些分子文件格式的批量处理?
RDKit 通过 Supplier/Writer 模式支持 SDF、SMILES(.smi)、MOL 和 gzip 压缩文件的批量读写。对于大规模数据集,提供 ForwardSDMolSupplier(流式读取,避免内存溢出)、MultithreadedSDMolSupplier(多线程并行处理)和 SDWriter(批量写入)等高性能工具。所有 MolFrom* 函数在解析失败时返回 None,需在使用前进行验证。