#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_pockets * | mdprocess_pdb (s_pdb *pdb, s_mdparams *mdparams, FILE *pqrout, int snnumber) |
void | mdpocket_characterize (s_mdparams *par) |
s_pocket * | extract_wanted_vertices (c_lst_pockets *pockets, s_pdb *pdb) |
s_pdb * | open_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 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, | |||
d | ) |
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
Definition at line 66 of file mdpocket.h.
Referenced by write_md_descriptors().
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 }
## 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 }