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

RDKit中Mol.GetSubstructMatches参数类型不匹配问题求助

问题解决:RDKit GetSubstructMatches 参数不匹配错误

错误原因

你的代码存在两个核心问题:

  • 直接将SMARTS字符串"[CX4]"传入GetSubstructMatches,但该方法要求参数为RDKit的ROMol查询对象,而非原始字符串。
  • 错误信息显示实际调用时多传了一个m参数(m.GetSubstructMatches(m,"[CX4]")),直接导致参数数量、类型与方法定义不匹配。

修正后的代码

from rdkit import Chem
from rdkit.Chem import Draw, Descriptors, rdqueries

m = Chem.MolFromSmiles("CCCCCC")
# 将SMARTS字符串转换为RDKit可识别的查询分子对象
query = Chem.MolFromSmarts("[CX4]")
# 仅传入查询分子即可调用方法
print(m.GetSubstructMatches(query))

修正说明

  1. SMARTS转Mol对象:使用Chem.MolFromSmarts()把SMARTS查询字符串转换成RDKit标准的ROMol实例,这是RDKit子结构匹配的必要前置步骤。
  2. 修正参数传递:GetSubstructMatches是目标分子m的实例方法,方法内部已通过self引用了m,因此只需传入查询分子,无需重复传递目标分子。

运行修正后的代码,会输出((0,), (1,), (2,), (3,), (4,), (5,)),对应己烷中所有6个sp3杂化碳原子的位置索引,符合预期。

内容的提问来源于stack exchange,提问作者Bigfoot Mountain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:06