PDB Ligands¶
This module defines functions for fetching PDB ligand data.
-
fetchPDBLigand
(cci, filename=None)[source]¶ Fetch PDB ligand data from PDB for chemical component cci. cci may be 3-letter chemical component identifier or a valid XML filename. If filename is given, XML file will be saved with that name.
If you query ligand data frequently, you may configure ProDy to save XML files in your computer. Set
ligand_xml_save
option True, i.e.confProDy(ligand_xml_save=True)
. Compressed XML files will be save to ProDy package folder, e.g./home/user/.prody/pdbligands
. Each file is around 5Kb when compressed.This function is compatible with PDBx/PDBML v 4.0.
Ligand data is returned in a dictionary. Ligand coordinate atom data with model and ideal coordinate sets are also stored in this dictionary. Note that this dictionary will contain data that is present in the XML file and all Ligand Expo XML files do not contain every possible data field. So, it may be better if you use
dict.get()
instead of indexing the dictionary, e.g. to retrieve formula weight (or relative molar mass) of the chemical component usedata.get('formula_weight')
instead ofdata['formula_weight']
to avoid exceptions when this data field is not found in the XML file. URL and/or path of the XML file are returned in the dictionary with keysurl
andpath
, respectively.Following example downloads data for ligand STI (a.k.a. Gleevec and Imatinib) and calculates RMSD between model (X-ray structure 1IEP) and ideal (energy minimized) coordinate sets:
In [1]: from prody import * In [2]: ligand_data = fetchPDBLigand('STI') --------------------------------------------------------------------------- IOError Traceback (most recent call last) <ipython-input-2-65da2e637be2> in <module>() ----> 1 ligand_data = fetchPDBLigand('STI') /home/exx/ProDy-website/ProDy/prody/compounds/pdbligands.pyc in fetchPDBLigand(cci, filename) 95 except IOError: 96 raise IOError('XML file for ligand {0} is not found online' ---> 97 .format(cci)) 98 else: 99 xml = inp.read() IOError: XML file for ligand STI is not found online In [3]: ligand_data['model_coordinates_db_code'] --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-3-87a0a2c276f6> in <module>() ----> 1 ligand_data['model_coordinates_db_code'] NameError: name 'ligand_data' is not defined In [4]: ligand_model = ligand_data['model'] --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-4-c3b5fe43bd1d> in <module>() ----> 1 ligand_model = ligand_data['model'] NameError: name 'ligand_data' is not defined In [5]: ligand_ideal = ligand_data['ideal'] --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-5-3a4a6d842406> in <module>() ----> 1 ligand_ideal = ligand_data['ideal'] NameError: name 'ligand_data' is not defined In [6]: transformation = superpose(ligand_ideal.noh, ligand_model.noh) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-6-47d2aaf39930> in <module>() ----> 1 transformation = superpose(ligand_ideal.noh, ligand_model.noh) NameError: name 'ligand_ideal' is not defined In [7]: calcRMSD(ligand_ideal.noh, ligand_model.noh) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-7-3a9f73b6f35d> in <module>() ----> 1 calcRMSD(ligand_ideal.noh, ligand_model.noh) NameError: name 'ligand_ideal' is not defined
-
parsePDBLigand
(cci, filename=None)[source]¶ See
fetchPDBLigand()