小编Ann*_*hou的帖子

如何使用RDKit计算SMILE结构列表的分子指纹和相似度?

我正在使用 RDKit 根据两个具有 SMILE 结构的分子列表之间的 Tanimoto 系数计算分子相似性。现在我可以从两个单独的 csv 文件中提取 SMILE 结构。我想知道如何将这些结构放入RDKit中的指纹模块中,以及如何一一计算两个分子列表之间的相似度?

from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
ms = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO'), ... Chem.MolFromSmiles('COC')]
fps = [FingerprintMols.FingerprintMol(x) for x in ms]
DataStructs.FingerprintSimilarity(fps[0],fps[1])
Run Code Online (Sandbox Code Playgroud)

我想将我拥有的所有 SMILE 结构(超过 10,000 个)放入“ms”列表中并获取它们的指纹。然后我将比较两个列表中每对分子之间的相似性,也许这里需要一个 for 循环?

提前致谢!

我使用 pandas dataframe 选择并打印出包含我的结构的列表,并将列表保存到 list_1 和 list_2 中。当运行到ms1行时,出现如下错误:

TypeError: No registered converter was able to produce a C++ rvalue of type std::__cxx11::basic_string<wchar_t, 
std::char_traits<wchar_t>, std::allocator<wchar_t> > from this Python object of type float
Run Code Online (Sandbox Code Playgroud)

然后我检查了文件,微笑栏中只有微笑。但是当我手动将一些分子结构放入列表中进行测试时,仍然存在错误

fpArgs['minSize']. 
Run Code Online (Sandbox Code Playgroud)

例如,钆双酰胺的 SMILES 为“O=C1[O-][Gd+3]234567[O]=C(C[N]2(CC[N]3(CC([O-]4)=O) )CC[N]5(CC(=[O]6)NC)CC(=O)[O-]7)C1)NC",错误代码如下(运行fps线时):

ArgumentError: …
Run Code Online (Sandbox Code Playgroud)

python csv similarity fingerprint rdkit

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

csv ×1

fingerprint ×1

python ×1

rdkit ×1

similarity ×1