【问题标题】:C++ error message when using python with rdkit将 python 与 rdkit 一起使用时出现 C++ 错误消息
【发布时间】:2022-01-05 14:11:22
【问题描述】:

我正在使用 rdkit 使用 tanimoto 相似性来比较分子指纹。但是,当我这样做时,它给了我一个关于 C++ 的错误。我不确定我的代码有什么不正确的。我提供了一个之前使用的代码,该代码成功运行,以帮助找出问题所在/两个代码之间的差异导致第二个代码运行不正确。谢谢。

正确代码:

from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit import DataStructs

ms = [Chem.MolFromSmiles('CCOC')]
ms2 = [Chem.MolFromSmiles('CCO')]
fps = [Chem.RDKFingerprint(x) for x in ms]
fps2 = [Chem.RDKFingerprint(x) for x in ms2]
simil = DataStructs.FingerprintSimilarity(fps[0], fps2[0])
print(simil)
output: 0.6

不正确的代码:

p11 = ['CO']
stringz = ['CCO']
for x in p11:
    ms = [Chem.MolFromSmiles(x)]
    fps = [Chem.RDKFingerprint(x) for x in ms]
for x in stringz:
    ms1 = [Chem.MolFromSmiles(stringz)]
    fps2 = [Chem.RDKFingerprint(x) for x in ms1]
    simil = DataStructs.FingerprintSimilarity(fps, fps2)
print(simil)

错误信息:

TypeError: No registered converter was able to produce a C++ rvalue of type std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > from this Python object of type

【问题讨论】:

    标签: python c++ rdkit


    【解决方案1】:

    错误在一行

    ms1 = [Chem.MolFromSmiles(stringz)]
    

    您将stringz 作为输入传递,这是一个列表。应该是

    ms1 = [Chem.MolFromSmiles(x)]
    

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多