RDKit 化学信息学工具包
概述
RDKit 是一个综合性的化学信息学库,提供用于分子分析和操作的 Python API。本技能为读写分子结构、计算描述符、生成指纹、子结构搜索、化学反应、2D/3D 坐标生成以及分子可视化提供指导。适用于药物发现、计算化学和化学信息学研究任务。
当前基线(检查于 2026-06-07):RDKit 2026.03.3 是最新的 GitHub/PyPI 发布版本(PyPI 上为 rdkit 2026.3.3)。官方安装文档继续推荐大多数用户使用 conda-forge,同时跨平台 PyPI wheel 以 rdkit 包名发布。rdkit-pypi 是旧的 PyPI 包名,仅应在维护遗留环境时出现。
安装与设置
在现有 Python 环境中安装时使用 uv:
uv pip install rdkit
对于可复现的化学环境,尤其是在混合编译科学包时,conda-forge 仍是上游推荐:
conda create -c conda-forge -n my-rdkit-env rdkit conda activate my-rdkit-env
避免在同一环境中同时安装 conda rdkit 和 PyPI rdkit/rdkit-pypi,除非您有意调试打包行为。混合安装可能导致无法确定正在导入哪个二进制扩展。
核心能力
十二个能力领域,每个都有示例代码,记录在 references/core_capabilities.md 中:
领域 涵盖内容
1 分子 I/O 与创建 SMILES、MOL 文件和块、InChI、SDF 和 SMILES 供应器、多线程读取、写入器
2 净化与验证 禁用自动净化、手动和部分净化、先检测问题
3 分析与属性 原子和键迭代、环信息和 SSSR、手性和立体化学、片段
4 描述符 MW、LogP、TPSA、氢键供体/受体、可旋转键、芳香环、批量计算、类药性
5 指纹与相似性 拓扑、通过 rdFingerprintGenerator 的 Morgan/ECFP、MACCS、原子对、扭转、Avalon;Tanimoto 和其他度量;Butina 聚类
6 子结构搜索 SMARTS 查询、匹配检索以及常见模式库
7 化学反应 反应 SMARTS、应用反应、反应指纹
8 2D 和 3D 坐标 描绘、模板对齐、ETKDG 嵌入、力场优化、RMSD、约束嵌入
9 可视化 单图和网格图像、子结构高亮、自定义绘制选项、Jupyter 集成、指纹位环境
10 分子修饰 显式氢、Kekulization、芳香性、子结构替换、电荷中和
11 哈希与标准化 Murcko 骨架和规范哈希、区域异构体哈希、用于增强的随机 SMILES
12 药效团与 3D 特征 特征工厂和特征提取
工作流程以及性能、线程安全和版本敏感性说明在 references/workflows_and_best_practices.md 中。
对于共享数据,优先使用可移植交换格式(SMILES、SDF);对于本地缓存,RDKit 的二进制分子表示避免使用通用 pickle。
常见陷阱
忘记检查 None:解析后始终验证分子
净化失败:使用 DetectChemistryProblems() 调试
缺少氢:在计算依赖氢的属性时使用 AddHs()
2D 与 3D:在可视化或 3D 分析前生成适当的坐标
SMARTS 匹配规则:记住未指定的属性匹配任何内容
MolSuppliers 的线程安全:不要跨线程共享供应器对象
资源
references/
本技能包含详细的 API 参考文档:
api_reference.md - 按功能组织的 RDKit 模块、函数和类的综合列表
descriptors_reference.md - 可用分子描述符的完整列表及描述
smarts_patterns.md - 用于官能团和结构特征的常见 SMARTS 模式
在需要特定 API 细节、参数信息或模式示例时加载这些参考。
只有 references/ 和 scripts/ 中列出的文件是捆绑的本地资源。rdkit、datamol、scipy 和 sklearn 等名称指的是可安装的 Python 包,而不是本技能中的本地文件。
scripts/
常见 RDKit 工作流程的示例脚本:
molecular_properties.py - 计算综合分子属性和描述符
similarity_search.py - 执行基于指纹的相似性筛选
substructure_filter.py - 按子结构模式过滤分子
这些脚本可以直接执行或用作自定义工作流程的模板。
相关技能
datamol:通过 datamol Python 库(import datamol as dm)封装 RDKit,用于分子化学信息学,返回原生 rdkit.Chem.Mol 对象…
molfeat:使用 molfeat(0.11.0)将 SMILES 字符串或 RDKit/datamol 分子转换为数值特征,提供计算器、scikit-learn…
medchem:使用 Python medchem 库(datamol-io,v2.0.5)在 RDKit 和 datamol 之上过滤和分类小分子库。