【发布时间】: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
【问题讨论】: