SuperAPI AI 工具集

pubchem-database

数据与分析

查看项目

更新于 10-15 10:54

技能介绍

用途

PubChem Database 技能用于查询 PubChem 化学数据库。PubChem 是全球最大的免费化学数据库,包含 1.1 亿以上化合物和 2.7 亿以上生物活性数据。该技能通过 PUG-REST API 和 PubChemPy 提供访问能力,适合需要检索化学结构、分子属性或生物活性数据的场景。

主要能力

化学结构搜索

支持多种标识符类型检索化合物:

  • 按化学名称:pcp.get_compounds('aspirin', 'name')
  • 按 CID:pcp.Compound.from_cid(2244)
  • 按 SMILES:pcp.get_compounds('CC(=O)OC1=CC=CC=C1C(=O)O', 'smiles')
  • 按 InChI:pcp.get_compounds('InChI=1S/C9H8O4/...', 'inchi')
  • 按分子式:pcp.get_compounds('C9H8O4', 'formula')

属性检索

可获取分子式、分子量、IUPAC 名称、SMILES、InChI、XLogP、TPSA、氢键供体/受体数量、可旋转键数量、复杂度、电荷等属性。支持通过 PubChemPy 获取完整化合物对象,或使用 get_properties 请求特定属性,也可批量检索多个化合物并整理为 DataFrame。

相似性搜索

使用 Tanimoto 相似度查找结构相似的化合物,可设置相似度阈值(0-100)和最大记录数。注意:大规模查询为异步操作,可能需要 15-30 秒完成,PubChemPy 会自动处理异步模式。

子结构搜索

查找包含特定结构基序的化合物,例如苯环(c1ccccc1)、吡啶(c1ccncc1)、苯酚(c1ccc(O)cc1)、羧酸(C(=O)O)等。

格式转换

在 CID、SMILES、InChI、InChIKey 等化学标识符格式之间转换,并可下载 SDF、JSON、PNG 等结构文件。

结构可视化

生成 2D 结构图像,可通过 PubChemPy 下载 PNG,或使用 PUG-REST 直接 URL 获取。

同义词检索

获取化合物的所有已知名称和同义词。

生物活性数据访问

通过 PUG-REST 获取化合物的生物测定摘要,或使用 scripts/bioactivity_query.py 辅助脚本进行更复杂的生物活性查询,包括活性结果过滤、测定靶点识别、按生物靶点搜索化合物、获取特定测定的活性化合物列表等。

综合化合物注释

通过 PUG-View 访问详细化合物信息,包括化学和物理属性、药物和用药信息、药理学和生物化学、安全与危害、毒性、文献引用、专利等,也可获取特定章节。

使用方式

安装

uv pip install pubchempy

直接 API 访问和生物活性查询:

uv pip install requests

数据分析可选:

uv pip install pandas

辅助脚本

scripts/compound_search.py 提供搜索和检索化合物信息的工具函数,包括 search_by_name、search_by_smiles、get_compound_by_cid、get_compound_properties、similarity_search、substructure_search、get_synonyms、batch_search、download_structure、print_compound_info 等。

scripts/bioactivity_query.py 提供生物活性数据检索函数,包括 get_bioassay_summary、get_compound_bioactivities、get_assay_description、get_assay_targets、search_assays_by_target、get_active_compounds_in_assay、get_compound_annotations、summarize_bioactivities、find_compounds_by_bioactivity 等。

常见工作流

  • 化学标识符转换管道:从任意标识符类型出发,提取 CID、名称、SMILES、InChI、InChIKey、分子式等格式。
  • 类药性属性筛选:使用 Lipinski 五规则检查分子量、LogP、氢键供体/受体数量。
  • 查找相似药物候选物:以已知药物为参考,进行相似性搜索并按类药属性过滤。
  • 批量化合物属性比较:对多个化合物检索属性并整理为表格。
  • 基于子结构的虚拟筛选:按药效团进行子结构搜索并按属性过滤。

适用场景

  • 按名称、结构(SMILES/InChI)或分子式搜索化合物
  • 检索分子属性(分子量、LogP、TPSA、氢键描述符)
  • 执行相似性搜索以查找结构相关化合物
  • 针对特定化学基序进行子结构搜索
  • 访问筛选测定的生物活性数据
  • 在化学标识符格式之间转换
  • 批量处理多个化合物用于类药性筛选或属性分析

限制

速率限制

  • 每秒最多 5 个请求
  • 每分钟最多 400 个请求
  • 每分钟最多 300 秒运行时间

最佳实践

  • 重复查询使用 CID:CID 比名称或结构更高效
  • 本地缓存结果:存储频繁访问的数据
  • 批量请求:尽可能合并多个查询
  • 实现延迟:请求之间添加 0.2-0.3 秒延迟
  • 优雅处理错误:检查 HTTP 错误和缺失数据
  • 使用 PubChemPy:更高层抽象可处理许多边界情况
  • 利用异步模式:用于大规模相似性/子结构搜索
  • 指定 MaxRecords:限制结果以避免超时

错误处理

可捕获 NotFoundError(化合物未找到)、BadRequestError(请求格式无效)、TimeoutError(请求超时,尝试缩小范围)、IndexError(无结果返回)等异常。

故障排除

  • 化合物未找到:尝试替代名称或同义词,使用已知 CID,检查拼写和化学名称格式
  • 超时错误:减少 MaxRecords 参数,添加请求延迟,使用 CID 代替名称
  • 属性值为空:并非所有属性对所有化合物可用,访问前检查属性是否存在
  • 超出速率限制:实现请求延迟,使用批量操作,考虑本地缓存
  • 相似性/子结构搜索挂起:这些是异步操作,可能需要 15-30 秒,PubChemPy 自动处理轮询,超时可减少 MaxRecords

其他资源

  • PubChem 主页:https://pubchem.ncbi.nlm.nih.gov/
  • PUG-REST 文档:https://pubchem.ncbi.nlm.nih.gov/docs/pug-rest
  • PUG-REST 教程:https://pubchem.ncbi.nlm.nih.gov/docs/pug-rest-tutorial
  • PubChemPy 文档:https://pubchempy.readthedocs.io/
  • PubChemPy GitHub:https://github.com/mcs07/PubChemPy