Source code for prody.compounds.ccd

# -*- coding: utf-8 -*-
"""This module defines functions for fetching and parsing files in the PDB  
for the Chemical Compound Dictionary (CCD_). 

.. _CCD: https://www.wwpdb.org/data/ccd
"""

from prody import LOGGER, PY3K
from prody.utilities import openURL, isListLike
from prody.proteins.starfile import parseSTARLines, StarDict

__all__ = ['parseCCD']

[docs]def parseCCD(ids): """Retrieve the whole Chemical Component Dictionary (CCD) resource. """ if isListLike(ids): n_ids = len(ids) else: ids = [ids] n_ids = 1 ret = [] for id in ids: id_url = 'http://ligand-expo.rcsb.org/reports/{0}/{1}/{1}.cif'.format(id[0], id) try: handle = openURL(id_url) except Exception as err: LOGGER.warn('download failed ({1}).'.format(str(err))) else: data = handle.read() if len(data): if PY3K: data = data.decode() parsingDict, prog = parseSTARLines(data.split('\n'), shlex=True) star_dict = StarDict(parsingDict, prog, id) ret.append(star_dict[id]) else: ret.append(None) LOGGER.warn('Could not parse CCD data for {0}'.format(id)) if n_ids == 1: return ret[0] return ret