ccache = CompoundCacher('../cache/compounds.json') groups_data = inchi2gv.init_groups_data() group_list = groups_data.GetGroupNames() group_names = groups_data.GetGroupNames() decomposer = inchi2gv.InChIDecomposer(groups_data) # test the decomposition of ATP into groups ATP_inchi = ccache.get_compound('C00002').inchi group_def = decomposer.inchi_to_groupvec(ATP_inchi) for j, group_name in enumerate(group_names): if group_def[j] != 0: print group_name, ' x %d' % group_def[j] patterns = ['c~[O;+0]', 'c~[O;+1]', 'c~[n;+1]~c', 'c~[n;+0]~c', 'c~[n;-1]~c'] for cid in ['C00255', 'C01007']: comp = ccache.get_compound(cid) print "-" * 50, '\n%s' % cid inchi = comp.inchi mol = Molecule.FromInChI(inchi) print mol.ToSmiles() print mol.FindSmarts("c~[n;+1]~c") try: groupvec = decomposer.inchi_to_groupvec(inchi) sys.stdout.write(str(groupvec) + '\n') except inchi2gv.GroupDecompositionError as e: sys.stderr.write(str(e) + '\n') sys.stderr.write(e.GetDebugTable())
'z': z, 'nMg': 0 } yield d if __name__ == '__main__': import sys, json logger = logging.getLogger('') logger.setLevel(logging.DEBUG) from compound_cacher import CompoundCacher, CompoundEncoder from molecule import Molecule, OpenBabelError ccache = CompoundCacher(cache_fname=None) for compound_id in ['C00087', 'C00282', 'C00237']: comp = Compound.from_kegg(compound_id) try: mol = Molecule.FromInChI(str(comp.inchi)) sys.stderr.write( '%s : formula = %s, nE = %s' % (str(comp.inchi), mol.GetFormula(), mol.GetNumElectrons())) except OpenBabelError: pass ccache.add(comp) sys.stderr.write( '\ncompound id = %s, nH = %s, z = %s, pKa = %s, bag = %s\n\n\n' % (compound_id, str(comp.nHs), str(comp.zs), str( comp.pKas), str(comp.atom_bag))) ccache.dump()