from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Draw import IPythonConsole inf = open("pains.txt", "r") sub_strct = [ line.rstrip().split(" ") for line in inf ] smarts = [ line[0] for line in sub_strct] desc = [ line[1] for line in sub_strct] dic = dict(zip(smarts, desc)) def pains_filt(mol): """ >>> mol = Chem.MolFromSmiles("c1ccccc1N=Nc1ccccc1") >>> checkmol = pains_filt( mol ) >>> props = [ prop for prop in checkmol.GetPropNames() ] >>> props[0] 'azo_A(324)' """ for k,v in dic.items(): subs = Chem.MolFromSmarts( k ) if subs != None: if mol.HasSubstructMatch( subs ): mol.SetProp(v,k) return mol mol = Chem.MolFromSmiles("c1ccccc1N=Nc1ccccc1") mol checkmol = pains_filt( mol ) props = [ prop for prop in checkmol.GetPropNames() ] print props