关于 rdkit
rdkit 是一项为研究 Agent 提供的化学信息学技能,指导使用 Python RDKit 处理分子结构、性质与可视化。内容涵盖从分子读写到指纹和 3D 坐标的常见工作。
主要功能
- 01分子结构读写与验证
- 02描述符和分子指纹计算
- 03SMARTS 子结构搜索
- 04化学反应与结构修改
- 052D/3D 坐标和可视化
适用场景
- 01筛选并比较候选化合物
- 02搜索包含指定结构的分子
- 03生成分子图像或 3D 构象
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill rdkit安装后在 Claude Code 中输入/rdkit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api_reference.mdcore_capabilities.mddescriptors_reference.mdreview.mdsmarts_patterns.mdworkflows_and_best_practices.mdscripts/_common.pymolecular_properties.pysimilarity_search.pysubstructure_filter.py详细介绍
RDKit 化学信息学工具包
概述
RDKit 是一个功能全面的化学信息学库,提供用于分子分析和操作的 Python API。本技能为分子结构的读写、描述符计算、指纹生成、子结构搜索、化学反应、2D/3D 坐标生成以及分子可视化提供指导。可将本技能用于药物发现、计算化学和化学信息学研究任务。
经测试的稳定基线(2026-10-01 审核): RDKit 2026.03.6,在 PyPI 上以 rdkit==2026.3.6 分发;这是当前稳定的 GitHub/PyPI 版本。官方安装文档仍建议大多数用户使用 conda-forge,同时跨平台的 PyPI wheel 以 rdkit 包名发布。rdkit-pypi 是旧的 PyPI 包名,仅在维护遗留环境时才应出现。
安装与设置
在现有 Python 环境中安装时使用 uv:
uv pip install "rdkit==2026.3.6"
对于可复现的化学环境,尤其是在混合安装已编译的科学计算包时,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。
保留化学含义
规范异构 SMILES 在特定 RDKit 版本下记录一个分子图。它不会合并互变异构体、选择依赖 pH 的质子化状态、去除盐或解析未指定的立体化学。在应用任何显式标准化策略之前,请保留原始结构和来源 ID。相似度 1.0 不是同一性检验:指纹会发生碰撞,并且除非选择 --chirality,内置搜索会忽略手性。请参阅 references/workflows_and_best_practices.md 中经过测试的同一性/标准化示例。
这些辅助工具在过滤无效记录时保留基于 1 的来源 ID,拒绝空分子,并且不执行隐式的去盐或中和。SMILES 文件没有表头;RDKit 解析一个 SMILES/CXSMILES 结构,后跟一个可选名称。文本输出将增强立体化学组保留为 CXSMILES;其他 CX 注释(例如绘图坐标)不是归档格式。搜索接受一个有效查询分子,而不是一批查询。MACCS 始终有 167 个位置(166 个键加上未使用的位 0);--bits 适用于其他方法。子结构辅助工具的历史 pains 选项只是五个示例性基序,而不是已发布的 PAINS 目录。无效的请求模式会中止。描述符截断值、QED 和警报是研究性启发式方法,不是安全性、效力、生物利用度或合成可行性的证据。
常见陷阱
- 忘记检查 None: 解析后始终验证分子
- 净化失败: 使用
DetectChemistryProblems()调试 - 氢表示: 大多数 2D 描述符会考虑隐式 H。在嵌入之前使用
AddHs();它不会在指定 pH 下选择质子化。 - 2D 与 3D: 在可视化或 3D 分析之前生成适当的坐标。在访问坐标之前检查
EmbedMolecule返回的构象 ID:-1表示嵌入失败。对于困难的分子,启用EmbedParameters.trackFailures并检查GetFailureCounts();不要将失败的嵌入送入力场优化。 - SMARTS 匹配规则: 记住未指定的属性会匹配任何内容
- MolSuppliers 的线程安全: 不要跨线程共享 supplier 对象
资源
references/
此 skill 包含详细的 API 参考文档:
api_reference.md- 按功能组织的 RDKit 模块、函数和类的全面列表descriptors_reference.md- 可用分子描述符的精选列表及说明smarts_patterns.md- 用于官能团和结构特征的常见 SMARTS 模式
在需要特定 API 细节、参数信息或模式示例时加载这些参考。
只有 references/ 和 scripts/ 中列出的文件是捆绑的本地资源。rdkit、datamol、scipy 和 sklearn 等名称指的是可安装的 Python 包,而不是此 skill 中的本地文件。
scripts/
常见 RDKit 工作流的示例脚本:
molecular_properties.py- 计算全面的分子属性和描述符similarity_search.py- 执行基于指纹的相似性筛选substructure_filter.py- 按子结构模式过滤分子
这些脚本可以直接执行,也可以用作自定义工作流的模板。
审查证据
发布、官方 API/源代码链接、运行时覆盖范围以及明确说明的示例记录在 references/review.md 中。
引用 Scientific Agent Skills
本技能是 K-Dense 出品的 Scientific Agent Skills 的一部分。如果它对一篇论文、报告、演示文稿或代码发布有实质性贡献,请将该论文加入参考文献或软件部分,并告知用户你已这样做:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
请始终引用当前版本。该 DOI 和 https://arxiv.org/abs/2609.00065 都指向最新的 arXiv 版本,因此切勿附加 v1 之类的版本后缀。当有网络访问时,请在撰写参考文献前获取 https://arxiv.org/abs/2609.00065(或
http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中获取作者列表、年份和版本。如果该记录列出了期刊参考文献或出版商 DOI,请改为引用已发表版本。