from rdkit import Chem from rdkit.Chem import MCS from rdkit.Chem.Draw import IPythonConsole smis = ['CC(C)=C','CC(C)C'] ms = [Chem.MolFromSmiles(x) for x in smis] smis2 = ['CC(C)=C','CC(C)=N'] ms2 = [Chem.MolFromSmiles(x) for x in smis2] mcs=MCS.FindMCS(ms) mcs.smarts mcs=MCS.FindMCS(ms2) mcs.smarts def label(a): return 100*int(a.GetHybridization())+a.GetAtomicNum() nms = [Chem.Mol(x) for x in ms] for nm in nms: for at in nm.GetAtoms(): at.SetIsotope(label(at)) Chem.MolToSmiles(nms[0],True) mcs=MCS.FindMCS(nms,atomCompare='isotopes') mcs.smarts nms2 = [Chem.Mol(x) for x in ms2] for nm in nms2: for at in nm.GetAtoms(): at.SetIsotope(label(at)) mcs=MCS.FindMCS(nms2,atomCompare='isotopes') mcs.smarts mcsp = Chem.MolFromSmarts(mcs.smarts) match = nms2[0].GetSubstructMatch(mcsp) match print Chem.MolFragmentToSmiles(ms2[0],atomsToUse=match,isomericSmiles=True,canonical=False) smis=["COc1ccc(C(Nc2nc3c(ncn3COCC=O)c(=O)[nH]2)(c2ccccc2)c2ccccc2)cc1", "COc1ccc(C(Nc2nc3c(ncn3COC(CO)(CO)CO)c(=O)[nH]2)(c2ccccc2)c2ccccc2)cc1"] ms = [Chem.MolFromSmiles(x) for x in smis] ms[0] ms[1] nms = [Chem.Mol(x) for x in ms] for nm in nms: for at in nm.GetAtoms(): at.SetIsotope(label(at)) mcs=MCS.FindMCS(nms,atomCompare='isotopes') mcs.smarts mcsp = Chem.MolFromSmarts(mcs.smarts) match = nms[0].GetSubstructMatch(mcsp) smi=Chem.MolFragmentToSmiles(ms[0],atomsToUse=match,isomericSmiles=True,canonical=False) print smi core = Chem.MolFromSmiles(smi) core