def read_ccd(): print 'Reading components.cif ...' sys.stdout.flush() components = CifFileReader() all_residues = components.read('components.cif') print 'Reading aa-variants-v1.cif ...' amino_variants = components.read('aa-variants-v1.cif') return itertools.chain(all_residues.iteritems(), amino_variants.iteritems())
sys.path.insert(0, '..') import utils # to install mmCif: pip install git+git://github.com/glenveegee/PDBeCIF from mmCif.mmcifIO import CifFileReader ORDERS = dict(SING=1, DOUB=2, TRIP=3) if __name__ == '__main__': print 'This program regenerates the `residue_bonds` database using the "Chemical Component ' print 'Dictionary" and "Protonation Variants Dictionary" from http://www.wwpdb.org/data/ccd' print 'These files are not included in the repository and must be downloaded manually.\n' print 'Reading components.cif ...' sys.stdout.flush() components = CifFileReader() all_residues = components.read('components.cif') print 'Reading aa-variants-v1.cif ...' amino_variants = components.read('aa-variants-v1.cif') residues = [] db = utils.CompressedJsonDbm('residue_bonds', 'n') for resname, data in itertools.chain(all_residues.iteritems(), amino_variants.iteritems()): if '_chem_comp_bond' not in data: print '\nskipped %s (no bonds)' % resname continue