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