3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
9 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
10 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
11 * Copyright (c) 2001-2009, The GROMACS development team,
12 * check out http://www.gromacs.org for more information.
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
19 * If you want to redistribute modifications, please consider that
20 * scientific software is very special. Version control is crucial -
21 * bugs must be traceable. We will be happy to consider code for
22 * inclusion in the official distribution, but derived work must not
23 * be called official GROMACS. Details are found in the README & COPYING
24 * files - if they are missing, get the official version at www.gromacs.org.
26 * To help us fund GROMACS development, we humbly ask that you cite
27 * the papers on the package - you can find them in the top README file.
29 * For more info, check our website at http://www.gromacs.org
31 /*! \defgroup module_trajectoryanalysis Framework for Trajectory Analysis
32 * \ingroup group_analysismodules
34 * Provides functionality for implementing trajectory analysis modules.
36 * This module implements a framework for implementing flexible trajectory
37 * analysis routines. It provides a base class for implementing analysis as
38 * reusable modules that can be used from different contexts and can also
39 * support per-frame parallelization. It integrally uses functionality from the
41 * - \ref module_options
42 * - \ref module_analysisdata
43 * - \ref module_selection
45 * The main interface of this module is the gmx::TrajectoryAnalysisModule class.
46 * Analysis modules should derive from this class, and override the necessary
47 * virtual methods to provide the actual initialization and analysis routines.
48 * Classes gmx::TrajectoryAnalysisSettings and gmx::TopologyInformation (in
49 * addition to classes declared in the above-mentioned modules) are used to pass
50 * information to and from these methods. gmx::TrajectoryAnalysisModuleData can
51 * be used in advanced scenarios where the tool requires custom thread-local
52 * data for parallel analysis.
54 * In addition to the framework for defining analysis modules, this module also
55 * provides gmx::TrajectoryAnalysisCommandLineRunner, which implements a
56 * command-line program that runs a certain analysis module.
58 * Internally, the module also defines a set of trajectory analysis modules that
59 * can be instantiated using createTrajectoryAnalysisModule().
61 * For an example of how to implement an analysis tool using the framework, see
64 * \author Teemu Murtola <teemu.murtola@cbr.su.se>
68 * Public API convenience header for trajectory analysis framework
70 * \author Teemu Murtola <teemu.murtola@cbr.su.se>
72 * \ingroup module_trajectoryanalysis
74 #ifndef GMX_TRAJECTORYANALYSIS_H
75 #define GMX_TRAJECTORYANALYSIS_H
77 #include "analysisdata.h"
79 #include "selection.h"
81 #include "selection/nbsearch.h"
82 #include "trajectoryanalysis/analysismodule.h"
83 #include "trajectoryanalysis/analysissettings.h"
84 #include "trajectoryanalysis/cmdlinerunner.h"
85 #include "utility/exceptions.h"
86 #include "utility/stringutil.h"