mdpocket.h File Reference

#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "fpocket.h"
#include "fpout.h"
#include "writepocket.h"
#include "tpocket.h"
#include "dparams.h"
#include "descriptors.h"
#include "neighbor.h"
#include "pocket.h"
#include "cluster.h"
#include "refine.h"
#include "aa.h"
#include "utils.h"
#include "calc.h"
#include "mdparams.h"
#include "mdpbase.h"
#include "memhandler.h"
#include "mdpout.h"

Go to the source code of this file.

Defines

#define M_MDP_OUTP_HEADER   "snapshot pock_volume pock_asa pock_pol_asa pock_apol_asa pock_asa22 pock_pol_asa22 pock_apol_asa22 nb_AS mean_as_ray mean_as_solv_acc apol_as_prop mean_loc_hyd_dens hydrophobicity_score volume_score polarity_score charge_score prop_polar_atm as_density as_max_dst"
#define M_MDP_OUTP_FORMAT   "%d %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %d %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %d %d %4.2f %4.2f %4.2f"
#define M_MDP_OUTP_VAR(i, d)

Functions

void mdpocket_detect (s_mdparams *par)
c_lst_pocketsmdprocess_pdb (s_pdb *pdb, s_mdparams *mdparams, FILE *pqrout, int snnumber)
void mdpocket_characterize (s_mdparams *par)
s_pocketextract_wanted_vertices (c_lst_pockets *pockets, s_pdb *pdb)
s_pdbopen_pdb_file (char *pdbname)
void write_md_descriptors (FILE *f, s_pocket *p, int i)
int * get_wanted_atom_ids (s_pdb *prot, s_pdb *pocket, int *n)


Define Documentation

#define M_MDP_OUTP_FORMAT   "%d %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %d %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f %d %d %4.2f %4.2f %4.2f"

format for the dpocket output

Definition at line 65 of file mdpocket.h.

Referenced by write_md_descriptors().

#define M_MDP_OUTP_HEADER   "snapshot pock_volume pock_asa pock_pol_asa pock_apol_asa pock_asa22 pock_pol_asa22 pock_apol_asa22 nb_AS mean_as_ray mean_as_solv_acc apol_as_prop mean_loc_hyd_dens hydrophobicity_score volume_score polarity_score charge_score prop_polar_atm as_density as_max_dst"

header for the dpocket output

Definition at line 64 of file mdpocket.h.

Referenced by mdpocket_characterize().

#define M_MDP_OUTP_VAR ( i,
 ) 

Value:

i, d->volume, \
                              d->surf_vdw14, \
                              d->surf_pol_vdw14, \
                              d->surf_apol_vdw14, \
                              d->surf_vdw22, \
                              d->surf_pol_vdw22, \
                              d->surf_apol_vdw22, \
                              d->nb_asph,\
                              d->mean_asph_ray, \
                              d->masph_sacc, \
                              d->apolar_asphere_prop, \
                              d->mean_loc_hyd_dens, \
                              d->hydrophobicity_score, \
                              d->volume_score, \
                              d->polarity_score, \
                              d->charge_score, \
                              d->prop_polar_atm, \
                              d->as_density, \
                              d->as_max_dst
list of descriptors to output in the dpocket output

Definition at line 66 of file mdpocket.h.

Referenced by write_md_descriptors().


Function Documentation

s_pocket* extract_wanted_vertices ( c_lst_pockets pockets,
s_pdb pdb 
)

## FUNCTION: extract_wanted_vertices

## SPECIFICATION: Return a pocket structure containing all vertices that are nearby the wanted zone given in the input file

## PARAMETRES: @ c_lst_pockets *pockets : Chained list of pockets found in the current Snapshot @ s_pdb *pdb : The wanted vertices in a pdb structure handle

## RETURN: s_pocket * : One pocket containing all interesting vertices

Definition at line 339 of file mdpocket.c.

References alloc_pocket(), c_lst_vertices_add_last(), c_lst_vertices_alloc(), dist(), c_lst_pockets::first, get_pocket_pvertices(), s_pdb::latoms_p, M_MDP_CUBE_SIDE, c_lst_vertices::n_vertices, s_pdb::natoms, node_pocket::next, node_pocket::pocket, s_pocket::v_lst, s_vvertice::x, s_atm::x, s_vvertice::y, s_atm::y, s_vvertice::z, and s_atm::z.

Referenced by mdpocket_characterize().

00339                                                                     {
00340     s_pocket *p=alloc_pocket();     /*alloc memory for a new pocket*/
00341     p->v_lst=c_lst_vertices_alloc();    /*alloc memory for vertices in new pocket*/
00342     s_pocket *cp=NULL;              /*just a handler for the chained list navigation*/
00343     node_pocket *cur = NULL ;   /*again just a handler for navigation*/
00344     cur = pockets->first ;      /*get the first pocket in the chained list*/
00345     s_vvertice** pverts=NULL;   /*define a vertice object*/
00346     size_t i;
00347     int z;
00348     s_atm *cura=NULL;
00349     while(cur) {                /*loop over all snapshot pockets*/
00350         cp=cur->pocket;
00351         pverts=get_pocket_pvertices(cp); /*get the current pocket vertices*/
00352         for(i=0;i<cp->v_lst->n_vertices;i++){   /*loop over these vertices*/
00353             for(z=0;z<pdb->natoms;z++){         /*loop over wanted vertices*/
00354                 cura=pdb->latoms_p[z];          /*get wanted vertice in an atom object*/
00355                 if(dist(cura->x,cura->y,cura->z,pverts[i]->x,pverts[i]->y,pverts[i]->z)<=(float)M_MDP_CUBE_SIDE/2.0){
00356                     c_lst_vertices_add_last(p->v_lst, pverts[i]);   /*if the current vertice is near the wanted one, add it to the new pocket*/
00357                 }
00358             }
00359         }
00360         cur=cur->next;
00361     }
00362     return(p);
00363 }

int* get_wanted_atom_ids ( s_pdb prot,
s_pdb pocket,
int *  n 
)

## FUNCTION: get_wanted_atom_ids

## SPECIFICATION: Given an input pocket by the user, this function returns all atoms on the protein that are nearby (usually on the first snapshot). This is useful for the output of the pocket motions

## PARAMETRES: @ s_pdb *prot : Protein structure @ s_pdb *pocket : The pocket (grid points) organized as s_pdb structure @ int *n : Pointer to int storing the number of atoms that are selected by this function.

## RETURN: int * : List of atom ids

Definition at line 386 of file mdpocket.c.

References dist(), s_atm::id, s_pdb::latoms_p, M_MDP_WP_ATOM_DIST, my_malloc(), my_realloc(), s_pdb::natoms, s_atm::x, s_atm::y, and s_atm::z.

Referenced by mdpocket_characterize().

00386                                                            {
00387     int *ids=(int *)my_malloc(sizeof(int));
00388     int v,a;
00389     *n=1;
00390     s_atm *cura=NULL;
00391     s_atm *curv=NULL;
00392     int flag=0;
00393     for(a=0;a<prot->natoms;a++){
00394         cura=prot->latoms_p[a];
00395         v=0;
00396         flag=0;
00397         while(flag==0 && v<pocket->natoms){
00398             curv=pocket->latoms_p[v];
00399             if(dist(cura->x,cura->y,cura->z,curv->x,curv->y,curv->z)<=M_MDP_WP_ATOM_DIST){
00400                 ids[*n-1]=cura->id;
00401                 *n=*n+1;
00402                 ids=(int *)my_realloc(ids,sizeof(int)*(*n));
00403                 flag=1;
00404             }
00405             v++;
00406         }
00407     }
00408     return(ids);
00409     
00410 }

void mdpocket_characterize ( s_mdparams par  ) 

## FUNCTION: mdpocket_characterize

## SPECIFICATION: Mdpocket main function. Simple loop is performed over all files.

## PARAMETRES: @ s_mdparams *par: Parameters of the programm

## RETURN: void TODO : tidy this function a bit up, maybe split it in subfunctions

Definition at line 217 of file mdpocket.c.

References c_lst_pocket_free(), c_lst_pockets_add_last(), c_lst_pockets_alloc(), extract_wanted_vertices(), s_mdparams::f_apdb, s_mdparams::f_desc, s_mdparams::f_ppdb, c_lst_vertices::first, s_fparams::flag_do_asa_and_volume_calculations, s_mdparams::fpar, s_pdb::fpdb, free_pdb_atoms(), s_mdparams::fsnapshot, s_mdparams::fwantedpocket, get_aa_name3(), get_pocket_contacted_atms(), get_wanted_atom_ids(), M_DONT_KEEP_LIG, M_MDP_OUTP_HEADER, mdprocess_pdb(), my_free(), my_malloc(), c_lst_vertices::n_vertices, s_fparams::nb_mcv_iter, node_vertice::next, s_mdparams::nfiles, open_pdb_file(), s_pocket::pdesc, rpdb_open(), rpdb_read(), set_descriptors(), s_pocket::v_lst, node_vertice::vertice, write_md_descriptors(), write_md_pocket_atoms(), and write_pqr_vert().

Referenced by main().

00218 {
00219         int i,natms,j;
00220         FILE *null=fopen("/dev/null","w");                  /*open a /dev/null redir for the pqr concat output*/
00221         FILE *descfile=NULL;                                /*file handle for the descriptor file*/
00222         FILE *fout[2] ;
00223         int *wanted_atom_ids = NULL;
00224         int nwanted_atom_ids = 0;
00225         c_lst_pockets *pockets=NULL;                        /*handle for the pockets found in one snapshots*/
00226         c_lst_pockets *mdpockets=c_lst_pockets_alloc();     /*handle for one pocket per snapshot in a chained list*/
00227         s_pocket *cpocket=NULL;                             /*tmp for current pocket */
00228         s_pdb *wantedpocket =  rpdb_open(par->fwantedpocket, NULL, M_DONT_KEEP_LIG);    /*open in the reference pocket (grid points)*/
00229         rpdb_read(wantedpocket, NULL, M_DONT_KEEP_LIG) ;    /*read this pocket*/
00230         s_pdb *cpdb=NULL;                                   /*pdb handle for the current snapshot structure*/
00231 
00232         if(par) {
00233             descfile=fopen(par->f_desc,"w");                /*open the descriptor output file*/
00234             fout[0]=fopen(par->f_ppdb,"w");
00235             fout[1]=fopen(par->f_apdb,"w");
00236             /*print all the headers in this file*/
00237             fprintf(descfile,M_MDP_OUTP_HEADER);
00238             for( j = 0 ; j < 20 ; j++ ) fprintf(descfile, " %s", get_aa_name3(j));
00239             fprintf(descfile, "\n");
00240             
00241             /* Begins mdpocket */
00242             for(i = 0 ; i < par->nfiles ; i++) {            /*loop over all snapshots*/
00243                     fprintf(stdout, "<mdpocket>s %d/%d - %s:",
00244                                     i+1, par->nfiles, par->fsnapshot[i]) ;
00245                     fflush(stdout);
00246                     fprintf(fout[0],"MODEL        %d\n",i);
00247                     cpdb=open_pdb_file(par->fsnapshot[i]);                      /*open the snapshot pdb handle*/
00248                     pockets=mdprocess_pdb(cpdb, par,null,i+1);                  /*perform pocket detection on the current snapshot*/
00249                     if(i==0)wanted_atom_ids=get_wanted_atom_ids(cpdb,wantedpocket,&nwanted_atom_ids);
00250                     write_md_pocket_atoms(fout[1],wanted_atom_ids,cpdb,nwanted_atom_ids, i);
00251                     if(pockets){
00252                         cpocket=extract_wanted_vertices(pockets,wantedpocket);  /*get only vertices in the interesting zone and put them together in one pocket*/
00253                         c_lst_pockets_add_last(mdpockets,cpocket,0,0);          /*add the pocket to the chained list (will contain the pocket over the md traj)*/
00254 
00255                         /*some tmp stuff following,TODO : put this in a function*/
00256                         s_vvertice **tab_vert = (s_vvertice **)
00257                                         my_malloc(cpocket->v_lst->n_vertices*sizeof(s_vvertice*)) ;
00258                         j = 0 ;
00259                         node_vertice *nvcur = cpocket->v_lst->first ;
00260                         while(nvcur) {
00261                                 write_pqr_vert(fout[0], nvcur->vertice) ;
00262 
00263                                 tab_vert[j] = nvcur->vertice ;
00264                                 nvcur = nvcur->next ;
00265                                 j++ ;
00266                         }
00267 
00268                         /*get atoms contacted by the pocket*/
00269                         s_atm **pocket_atoms = get_pocket_contacted_atms(cpocket, &natms) ;
00270 
00271                         /* Calculate descriptors*/
00272                         set_descriptors(pocket_atoms, natms, tab_vert,cpocket->v_lst->n_vertices, cpocket->pdesc,par->fpar->nb_mcv_iter,cpdb,par->fpar->flag_do_asa_and_volume_calculations) ;
00273                         write_md_descriptors(descfile,cpocket,i+1); /*write MD descriptors to the descriptor output file*/
00274 
00275                         my_free(pocket_atoms) ;     /*free current pocket atoms*/
00276                         my_free(tab_vert) ;         /*free tmp vertice tab*/
00277 
00278                     }
00279                     free_pdb_atoms(cpdb);           /*free memory of the current snapshot atoms*/
00280 
00281                     /*just some stupid print to stdout things*/
00282                     if(i == par->nfiles - 1) fprintf(stdout,"\n") ;
00283                     else fprintf(stdout,"\r") ;
00284                     fflush(stdout);
00285                     fprintf(fout[0],"ENDMDL\n\n");
00286                     c_lst_pocket_free(pockets);     /*free pockets of current snapshot*/
00287             }
00288 
00289             fclose(descfile);                       /*close the descriptor output file handle*/
00290             /*free_mdconcat(mdconcat);*/ /*should be freed by free_all*/
00291             for( i = 0 ; i < 2 ; i++ ) fclose(fout[i]) ;
00292         }
00293         fclose(wantedpocket->fpdb);
00294         fclose(null);                               /*close the /dev/null file handle*/
00295 }

void mdpocket_detect ( s_mdparams par  ) 

## FUNCTION: mdpocket_detect

## SPECIFICATION: Mdpocket main function. Perform pocket detection on all snapshots. Pockets will be merged in one single output file mdpout_concat.pqr and a grid file will be produced, containing Voronoi vertice densities on grid point positions

## PARAMETRES: @ s_mdparams *par: Parameters of the programm

## RETURN: void

Definition at line 89 of file mdpocket.c.

References s_mdparams::bfact_on_all, c_lst_pocket_free(), calculate_md_dens_grid(), s_mdparams::f_appdb, s_mdparams::f_densdx, s_mdparams::f_densiso, s_mdparams::f_freqdx, s_mdparams::f_freqiso, s_fparams::flag_do_asa_and_volume_calculations, s_mdparams::fpar, free_pdb_atoms(), s_mdparams::fsnapshot, init_md_grid(), M_DONT_KEEP_LIG, M_MDP_DEFAULT_ISO_VALUE_DENS, M_MDP_DEFAULT_ISO_VALUE_FREQ, mdprocess_pdb(), s_mdgrid::n_snapshots, s_mdparams::nfiles, normalize_grid(), open_pdb_file(), project_grid_on_atoms(), remove_ext(), remove_path(), reset_grid(), rpdb_read(), update_md_grid(), write_first_bfactor_density(), and write_md_grid().

Referenced by main().

00090 {
00091         int i;
00092         FILE *fout[6] ;                             /*output file handles*/
00093         FILE *timef;                                /*just an output for performance measurements*/
00094         c_lst_pockets *pockets=NULL;                /*tmp handle for pockets*/
00095         s_mdgrid *freqgrid=NULL;                      /*init mdgrid structure*/
00096         s_mdgrid *refgrid=NULL;                     /*reference grid*/
00097         s_mdgrid *densgrid=NULL;                    /*density grid*/
00098         s_pdb *cpdb=NULL;                           /*handle for the current snapshot structure*/
00099         par->fpar->flag_do_asa_and_volume_calculations=0; /*don't do ASA and volume calculations here as they are expensive and we don't need the results here*/
00100         FILE *cf;                                   /*file handle for current bfact coloured file to write*/
00101         char cf_name[350] = "" ;
00102         char pdb_code[350] = "" ;
00103         if(par) {
00104         /* Opening output files */
00105                 //fout[0] = fopen(par->f_pqr,"w") ;   /*concat pqr output*/
00106                 fout[1] = fopen(par->f_freqdx,"w") ;    /*grid dx output*/
00107                 fout[2] = fopen(par->f_densdx,"w") ;    /*grid dx output*/
00108                 fout[3] = fopen(par->f_freqiso,"w") ;   /*iso pdb output*/
00109                 fout[4] = fopen(par->f_densiso,"w") ;   /*iso pdb output*/
00110                 fout[5] = fopen(par->f_appdb,"w");  /*all atom -> pocket density output on bfactors*/
00111                 timef=fopen("time.txt","w");        /*performance measurement output*/
00112                 if(fout[1] && fout[2] && fout[3] && fout[4] && fout[5]) {
00113                         //mdconcat=init_md_concat();  /*alloc & init of the mdconcat structure*/
00114                         clock_t b, e ;              /*for the calculation time measurements*/
00115 
00116                         /* Begins mdpocket */
00117                         for(i = 0 ; i < par->nfiles ; i++) {
00118                                 b = clock() ;       /*init starting time for this snapshot*/
00119                                 fprintf(stdout, "<mdpocket>s %d/%d - %s:",
00120                                                 i+1, par->nfiles, par->fsnapshot[i]) ;
00121                                 cpdb=open_pdb_file(par->fsnapshot[i]);          /*open the snapshot*/
00122                                 //printf("\navant %d\n",get_number_of_objects_in_memory());
00123                                 
00124                                 pockets=mdprocess_pdb(cpdb, par,fout[0],i+1);   /*perform pocket detection*/
00125                                 if(pockets){
00126                                     if(i==0) {
00127                                         freqgrid=init_md_grid(pockets);          /*initialize the md grid, memory allocation*/
00128                                         densgrid=init_md_grid(pockets);
00129                                         refgrid=init_md_grid(pockets);
00130                                     }
00131                                     else {
00132                                         reset_grid(refgrid);
00133                                     }
00134                                     calculate_md_dens_grid(densgrid,pockets,par);          // calculate and update mdgrid with voronoi vertice local densities
00135                                     update_md_grid(freqgrid,refgrid,pockets,par);           //update mdgrid with frequency measurements
00136                                 }
00137                                 free_pdb_atoms(cpdb);                           /*free atoms of the snapshot*/
00138                                 if(i == par->nfiles - 1) fprintf(stdout,"\n");
00139                                 else fprintf(stdout,"\r");
00140                                 fflush(stdout);
00141                                 c_lst_pocket_free(pockets);     /*free pockets of current snapshot*/
00142                                 //printf("\napres %d\n",get_number_of_objects_in_memory());
00143                                 //print_number_of_objects_in_memory();
00144                                 e = clock() ;                   /*snapshot analysis end time*/
00145                                 /*output the time needed for analysis of this snapshots*/
00146                                 fprintf(timef,"%f\n",((double)e - b) / CLOCKS_PER_SEC);
00147                                 fflush(timef);
00148                                 
00149 
00150                         }
00151                         freqgrid->n_snapshots=par->nfiles;
00152                         densgrid->n_snapshots=par->nfiles;
00153 
00154                         normalize_grid(freqgrid,par->nfiles);
00155                         normalize_grid(densgrid,par->nfiles);
00156                         cpdb=open_pdb_file(par->fsnapshot[0]);  /*open again the first snapshot*/
00157                         rpdb_read(cpdb, NULL, M_DONT_KEEP_LIG) ;
00158                         project_grid_on_atoms(densgrid,cpdb);
00159                         write_first_bfactor_density(fout[5],cpdb);
00160                         free_pdb_atoms(cpdb);
00161                         if(par->bfact_on_all){
00162                             for(i = 0 ; i < par->nfiles ; i++) {
00163                                 strcpy(pdb_code, par->fsnapshot[i]) ;
00164                                 remove_ext(pdb_code) ;
00165                                 remove_path(pdb_code) ;
00166                                 sprintf(cf_name, "%s_out.pdb", pdb_code) ;
00167                                 cf=fopen(cf_name,"w");
00168                                 cpdb=open_pdb_file(par->fsnapshot[i]);
00169                                 rpdb_read(cpdb, NULL, M_DONT_KEEP_LIG) ;
00170                                 project_grid_on_atoms(densgrid,cpdb);
00171                                 write_first_bfactor_density(cf,cpdb);
00172                                 free_pdb_atoms(cpdb);
00173                                 fclose(cf);
00174                             }
00175                         }
00176                        // fprintf(fout[0],"TER\nEND\n");          /*just to get a good pqr output file*/
00177 
00178 
00179                      //   mdconcat->n_snapshots=par->nfiles;      /*updata a variable in the mdconcat structure*/
00180                      //   mdgrid=calculate_md_grid(mdconcat);     /*calculate the actual md grid*/
00181                         write_md_grid(freqgrid, fout[1],fout[3],par,M_MDP_DEFAULT_ISO_VALUE_FREQ); /*write the grid to a vmd readable dx file*/
00182                         write_md_grid(densgrid, fout[2],fout[4],par,M_MDP_DEFAULT_ISO_VALUE_DENS); /*write the grid to a vmd readable dx file*/
00183                         for( i = 1 ; i < 6 ; i++ ) fclose(fout[i]) ;    /*close all output file handles*/
00184                 }
00185                 else {
00186                         /*if(! fout[0]) {
00187                                 fprintf(stdout, "! Output file <%s> couldn't be opened.\n",
00188                                                 par->f_pqr) ;
00189                         }
00190                         else */
00191                         for( i = 1 ; i < 6 ; i++ ){
00192                             if (! fout[i] ) {
00193                                 fprintf(stdout, "! Output file couldn't be opened.\n");
00194                             }
00195                         }
00196                 }
00197                 fclose(timef);      /*close the performance measurement file handle*/
00198                 /*free_mdconcat(mdconcat);*/ /*should be freed by free_all*/
00199         }
00200 }

c_lst_pockets* mdprocess_pdb ( s_pdb pdb,
s_mdparams mdparams,
FILE *  pqrout,
int  snnumber 
)

## FUNCTION: mdprocess_pdb

## SPECIFICATION: Process (fpocket) one snapshot and return all the pockets

## PARAMETRES: @ s_pdb *pdb : The current snapshot structure handle @ s_mdparams *mdparams : Parameter structure of the md run @ FILE * pqrout : File handle for the pqr concat output @ int snnumber : Number of the current snapshot

## RETURN: c_lst_pockets * : chained list of the fpocket identified pockets on this snapshot

Definition at line 460 of file mdpocket.c.

References s_mdparams::fpar, M_DONT_KEEP_LIG, rpdb_read(), and search_pocket().

Referenced by mdpocket_characterize(), and mdpocket_detect().

00461 {
00462         c_lst_pockets *pockets=NULL;
00463         s_fparams *params=mdparams->fpar;
00464         /* Check the PDB file */
00465 
00466         if(pdb) {
00467                 /* Actual reading of pdb data and then calculation */
00468                         rpdb_read(pdb, NULL, M_DONT_KEEP_LIG) ;
00469                         
00470                         pockets = search_pocket(pdb, params,NULL);   /*run fpocket*/
00471                       //  if(pockets) write_mdpockets_concat_pqr(pqrout,pockets); /*write pqr concat output*/
00472         }
00473         else fprintf(stderr, "! PDB reading failed on snapshot %d\n",snnumber);
00474         return pockets;
00475 }

s_pdb* open_pdb_file ( char *  pdbname  ) 

## FUNCTION: open_pdb_file

## SPECIFICATION: Return a pdb structure containing an opened, yet not read pdb file

## PARAMETRES: @ char *pdbname : Name of the pdb file to open

## RETURN: s_pdb * : A pdb structure handle of the opened file TODO : place this function in rpdb.c

Definition at line 426 of file mdpocket.c.

References M_DONT_KEEP_LIG, M_MAX_PDB_NAME_LEN, and rpdb_open().

Referenced by mdpocket_characterize(), and mdpocket_detect().

00426                                    {
00427         if(pdbname == NULL) return NULL;
00428 
00429         int len = strlen(pdbname) ;
00430         if(len >= M_MAX_PDB_NAME_LEN || len <= 0) {
00431                 fprintf(stderr, "! Invalid length for the pdb file name. (Max: %d, Min 1)\n",
00432                                 M_MAX_PDB_NAME_LEN) ;
00433                 return NULL;
00434         }
00435 
00436         /* Try to open it */
00437         s_pdb *pdb =  rpdb_open(pdbname, NULL, M_DONT_KEEP_LIG) ;
00438         if(pdb) return(pdb);
00439         return NULL;
00440 }

void write_md_descriptors ( FILE *  f,
s_pocket p,
int  i 
)

## FUNCTION: write_md_descriptors

## SPECIFICATION: Write the md descriptors to the output file

## PARAMETRES: @ FILE *f : file handler of the output file @ s_pocket *p : pointer to the md pocket @ int i : integer containing the current snapshot number

## RETURN: void

Definition at line 313 of file mdpocket.c.

References s_desc::aa_compo, M_MDP_OUTP_FORMAT, M_MDP_OUTP_VAR, and s_pocket::pdesc.

Referenced by mdpocket_characterize().

00313                                                       {
00314     s_desc *d=p->pdesc;
00315     fprintf(f, M_MDP_OUTP_FORMAT, M_MDP_OUTP_VAR(i, d)) ;
00316     int j ;
00317     for(j = 0 ; j < 20 ; j++) fprintf(f, " %3d", d->aa_compo[j]) ;
00318 
00319     fprintf(f, "\n") ;
00320 }


Generated on Mon Jun 7 16:44:23 2010 for fpocket by  doxygen 1.5.6