gpt4 book ai didi

RDKit:如何检查分子是否完全匹配?

转载 作者:行者123 更新时间:2023-12-04 11:20:46 27 4
gpt4 key购买 nike

我正在使用 RDKit 并尝试检查分子是否完全匹配。
使用后Chem.MolFromSmiles()表达式 m == p显然不会导致预期的结果。
当然,我可以检查是否pm 的子结构以及是否mp 的子结构.但对我来说,这看起来太复杂了。我在 RDKit 文档中找不到或忽略了完全匹配的代码示例。我该如何正确地做到这一点?谢谢你的提示。

代码:

from rdkit import Chem

myPattern = 'c1ccc2c(c1)c3ccccc3[nH]2' # Carbazole
myMolecule = 'C1=CC=C2C(=C1)C3=CC=CC=C3N2' # Carbazole

m = Chem.MolFromSmiles(myMolecule)
p = Chem.MolFromSmiles(myPattern)

print(m == p) # returns False, first (unsuccessful) attempt to check for identity

print(m.HasSubstructMatch(p)) # returns True
print(p.HasSubstructMatch(m)) # returns True
print(m.HasSubstructMatch(p) and p.HasSubstructMatch(m)) # returns True, so are the molecules identical?

最佳答案

要检查两个不同的 SMILES 是否代表相同的分子,您可以规范化 SMILES。

from rdkit import Chem

myPattern = 'c1ccc2c(c1)c3ccccc3[nH]2'
myMolecule = 'C1=CC=C2C(=C1)C3=CC=CC=C3N2'

a = Chem.CanonSmiles(myPattern)
b = Chem.CanonSmiles(myMolecule)

print(a)
'c1ccc2c(c1)[nH]c1ccccc12'

print(b)
'c1ccc2c(c1)[nH]c1ccccc12'

print(a==b)
True

关于RDKit:如何检查分子是否完全匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com