Мои знания RDKit не велики, и их документация ужасно ужасна, но я сам делал такие вещи. (Возможно, чрезмерно спроектированный) метод состоит в том, чтобы сгенерировать граф с помощью networkx и просто сравнить узлы и ребра.
Это удивительно просто: использовать rdkit для чтения строки file / smiles, а затем просто сгенерировать топологию на муха. Если вы сгенерируете объект rdkit_mol из строки смайликов, как вы делали выше, вы должны сделать:
import networkx as nx
def topology_from_rdkit(rdkit_molecule):
topology = nx.Graph()
for atom in rdkit_molecule.GetAtoms():
# Add the atoms as nodes
topology.add_node(atom.GetIdx())
# Add the bonds as edges
for bonded in atom.GetNeighbors():
topology.add_edge(atom.GetIdx(), bonded.GetIdx())
return topology
def is_isomorphic(topology1, topology2):
return nx.is_isomorphic(topology1, topology2)