You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ChemSpiPy获取Phenolics列表化合物Canonical SMILES失败求助

化合物SMILES查询问题解决方法

问题根源

你的代码无法返回结果的核心原因有两个:

  1. 直接将整个列表对象传入cs.search(),但ChemSpiPy的search()方法仅接收单个字符串作为查询参数,不能直接处理列表。
  2. 化合物名称存在格式错误(比如多余空格、下标符号误用,如30应为3'、40应为4',还有7- methylether中间的空格),这些问题会导致搜索匹配失败。

修正后的实现步骤与代码

1. 整理规范化的化合物名称列表

先修正名称中的格式问题,生成干净的查询列表:

phenolics = [
    "Dihydroquercetin 7,3'-dimethyl ether",
    "Artelin",
    "Esculin 7-methylether (methylesculin)",
    "Esculin",
    "Scopoletin (7-hydroxy-6-methoxycoumarin)",
    "Axillarin",
    "Esculetin",
    "Isoscopoletin",
    "6-Beta-D-glucosyl-7-methoxycoumarin",
    "5,4'-Dihydroxy-3,6,7,3'-tetramethoxyflavone",
    "Apigenin",
    "Luteolin-7-O-glucoside",
    "Magnoloside",
    "Penduletin",
    "Quercetagetin",
    "Quercetagetin-3,6,7-trimethyl ether",
    "Quercetin",
    "Quercetin 7,3'-dimethyl ether (Rhamnazine)",
    "Scoparone",
    "Skimmin",
    "Umbelliferone",
    "Apigenin 4'-methyl ether"
]

2. 完整的ChemSpiPy查询代码

先完成API初始化(需要你自己的ChemSpider API密钥,可通过ChemSpider账号获取),再逐个查询每个化合物:

from chemspipy import ChemSpider

# 替换为你的ChemSpider API密钥
cs = ChemSpider('你的API密钥')

for name in phenolics:
    try:
        # 搜索化合物,取第一个最匹配的结果
        results = cs.search(name)
        if results:
            compound = results[0]
            print(f"{name}: {compound.smiles}")
        else:
            print(f"{name}: 未找到匹配化合物")
    except Exception as e:
        print(f"{name}: 查询出错 - {str(e)}")

关键注意事项

  • API密钥:必须注册ChemSpider账号获取API密钥,否则无法发起查询请求。
  • 名称规范化:尽量使用无多余空格、下标符号正确的标准名称,括号内的别名可保留,但要确保格式整洁。
  • 结果筛选:cs.search()可能返回多个匹配结果,代码中默认取第一个最相关的,你也可以根据分子式、CAS号等信息进一步筛选更准确的结果。

内容的提问来源于stack exchange,提问作者Celin Younan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:54:18