Gromacs

Analysis Library

    Table of contents
    No headers

    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.

    Page last modified 08:45, 18 Aug 2009 by rossen