Analysis-Library

From wiki.gromacs.org

Jump to: navigation, search

All the analysis programs are already compiled into one library, so you can for instance call a function gmx_rmsd(int argc,char *argv[]); Obviously that is almost the same as doing a system call.

What I would like to have is distinction between the low level and the high level. such that you can call e.g. the rdf function for a single coordinate set and then get the results back. All the command line parsing and file I/O should be done in the function gmx_rmsd, but data analysis etc. should be done in subroutines. A schematic example could be:

 gmx_rmsd(int argc,char *argv[])
 {
    /* Variable declarations */ 
    /* Read command line arguments */
    /* Open trajectory and/or other files */
    do {
      read_trx();
      calc_rmsd();
    } while (!eof(trx));
    /* Write results */
 }

The work involved is to separate out the calc_rmsd functionality from the main routine. This may involve creating extra temp. variables (e.g. for results) and removing I/O functionality from the low-level routines. Since this now will be a library, it can not be allowed to crash with a fatal error, which means routines like calc_rmsd should return an status variable, to be checked after running the routine.

It would also be great if there could be online visualization (using e.g. a pipe to xmgrace) but that is not crucial for a start.

For most analyses we use index files containing atom numbers, e.g. the atoms used for the RDF calculation. Since we want to bring this to a new level of abstraction we'd also need something like "dynamic indices", such that one at each step determines, e.g. which are the oxygen atoms in a protein. This is necessary when the number of atoms is dynamic as well. Maybe this should be a separate project Dynamic_Indices.

Personal tools
download / installation