00001 00002 /* 00003 COPYRIGHT DISCLAIMER 00004 00005 Vincent Le Guilloux, Peter Schmidtke and Pierre Tuffery, hereby 00006 disclaim all copyright interest in the program “fpocket” (which 00007 performs protein cavity detection) written by Vincent Le Guilloux and Peter 00008 Schmidtke. 00009 00010 Vincent Le Guilloux 28 November 2008 00011 Peter Schmidtke 28 November 2008 00012 Pierre Tuffery 28 November 2008 00013 00014 GNU GPL 00015 00016 This file is part of the fpocket package. 00017 00018 fpocket is free software: you can redistribute it and/or modify 00019 it under the terms of the GNU General Public License as published by 00020 the Free Software Foundation, either version 3 of the License, or 00021 (at your option) any later version. 00022 00023 fpocket is distributed in the hope that it will be useful, 00024 but WITHOUT ANY WARRANTY; without even the implied warranty of 00025 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00026 GNU General Public License for more details. 00027 00028 You should have received a copy of the GNU General Public License 00029 along with fpocket. If not, see <http://www.gnu.org/licenses/>. 00030 00031 **/ 00032 00033 #ifndef DH_DESCR 00034 #define DH_DESCR 00035 00036 /* ---------------------------------INCLUDES--------------------------------- */ 00037 00038 #include <math.h> 00039 #include <stdio.h> 00040 #include <stdlib.h> 00041 #include <time.h> 00042 #include <ctype.h> 00043 #include <string.h> 00044 00045 #include "voronoi.h" 00046 #include "voronoi_lst.h" 00047 #include "atom.h" 00048 #include "aa.h" 00049 #include "utils.h" 00050 00051 00052 /* --------------------------------STRUCTURES---------------------------------*/ 00053 /** 00054 Structure containing descriptors for binding pockets 00055 */ 00056 typedef struct s_desc 00057 { 00058 float hydrophobicity_score, /**< Hydropathie score - for each aa */ 00059 volume_score, /**< Volume score - for each aa */ 00060 volume, /**< Pocket volume */ 00061 prop_polar_atm, /**< Proportion of polar atoms */ 00062 mean_asph_ray, /**< Mean alpha sphere radius */ 00063 masph_sacc, /**< Mean alpha sphere solvent accessibility */ 00064 apolar_asphere_prop, /**< Proportion of apolar alpha spheres */ 00065 mean_loc_hyd_dens, /**< Mean local hydrophobic density (from alpha spheres) */ 00066 as_density, /**< Pocket density, defined as mean distance between alpha spheres*/ 00067 as_max_dst, /**< Maximum distance between two alpha spheres */ 00068 /**< The following descriptors are all normalized using observed 00069 values among all pocket found by the algorithm. These 00070 are not set in descriptor.c, but in pocket.c as we have to check 00071 all pocket first to store boundaries of the descriptor to 00072 normalize. */ 00073 00074 flex, /**< Normalized flexibility - based on B factors - ABUSIVE */ 00075 nas_norm, /**< Normalized number of alpha sphere */ 00076 polarity_score_norm, /**< Normalized polarity score*/ 00077 mean_loc_hyd_dens_norm,/**< Normalized mean local hydrophobic density */ 00078 prop_asapol_norm, /**< Normalized proportion of apolar alphasphere */ 00079 as_density_norm, /**< Normalized alpha sphere density */ 00080 as_max_dst_norm, /**< normalized maximum distance between alpha sphere centers*/ 00081 00082 /**< The following descriptors are various surface calculations*/ 00083 surf_vdw, /**< Van der Waals surface of the pocket*/ 00084 surf_vdw14, /**< Van der Waals surface + 1.4 A probe*/ 00085 surf_vdw22, /**< Van der Waals surface + 2.2 A probe*/ 00086 surf_pol_vdw, /**< polar van der Waals surface of the pocket*/ 00087 surf_pol_vdw14, /**< polar van der Waals surface + 1.4 A probe*/ 00088 surf_pol_vdw22, /**< polar an der Waals surface + 2.2 A probe*/ 00089 surf_apol_vdw, /**< polar van der Waals surface of the pocket*/ 00090 surf_apol_vdw14, /**< polar van der Waals surface + 1.4 A probe*/ 00091 surf_apol_vdw22 /**< polar van der Waals surface + 2.2 A probe*/ 00092 ; 00093 00094 int aa_compo[20] ; /**< Absolute amino acid composition */ 00095 int nb_asph, /**< Number of alpha spheres */ 00096 polarity_score, /**< Polarity score (based on amino acids properties ; see aa.c & aa.h) */ 00097 charge_score ; /**< Sum of all net charges at pH = 7 (see aa.c & aa.h) */ 00098 float as_max_r ; /**< Alpha sphere maximum radius*/ 00099 float drug_score; /**< Drug score of the binding site*/ 00100 int interChain, /**< 0 if pocket in single chain, 1 if between 2 chains*/ 00101 characterChain1, /**< 0 if protein, 1 if nucl acid pocket, 2 if HETATM pocket*/ 00102 characterChain2, /**< 0 if protein, 1 if nucl acid pocket, 2 if HETATM pocket*/ 00103 numResChain1, /**<number of resdiues on chain 1*/ 00104 numResChain2; /**<number of res on chain 2*/ 00105 char nameChain1[2], /**<name of the first chain in contact with the pocket*/ 00106 nameChain2[2]; /**<name of the second chain in contact with the pocket, if there is*/ 00107 char ligTag[8]; /**<het atom tag of ligands situated in the pocket*/ 00108 int n_abpa; /**<number of abpas in the binding site*/ 00109 } s_desc ; 00110 00111 /* ------------------------------PROTOTYPES---------------------------------- */ 00112 00113 s_desc* allocate_s_desc(void) ; 00114 void reset_desc(s_desc *desc) ; 00115 00116 00117 void set_descriptors(s_atm **tatoms, int natoms, s_vvertice **tvert, int nvert, s_desc *desc, int niter,s_pdb *pdb,int flag_do_expensive_calculations) ; 00118 00119 int get_vert_apolar_density(s_vvertice **tvert, int nvert, s_vvertice *vert) ; 00120 void set_atom_based_descriptors(s_atm **atoms, int natoms, s_desc *desc,s_atm *all_atoms, int all_natoms); 00121 void set_aa_desc(s_desc *desc, const char *aa_name) ; 00122 int countResidues(s_atm *atoms, int natoms, char chain[2]); 00123 00124 #endif