Pass settings object to initAnalysis().
authorTeemu Murtola <teemu.murtola@gmail.com>
Sun, 5 Feb 2012 16:37:22 +0000 (18:37 +0200)
committerTeemu Murtola <teemu.murtola@gmail.com>
Mon, 6 Feb 2012 16:36:33 +0000 (18:36 +0200)
Makes it easier to write analysis modules that need to access some
settings based on user input, and is also prerequisite for issue #839.
With the settings object, it is possible to pass additional information
to this method without changing the signature, simplifying maintenance.
In an earlier design, the settings object was available in all methods
through a separate accessor method, but the availability of the settings
became too restricted when this was refactored to make
TrajectoryAnalysisModule more interface-like.

Change-Id: If775db348354b6ba35c6d7cb0a10fe5057b6e1b2

share/template/template.cpp
src/gromacs/trajectoryanalysis/analysismodule.h
src/gromacs/trajectoryanalysis/cmdlinerunner.cpp
src/gromacs/trajectoryanalysis/modules/angle.cpp
src/gromacs/trajectoryanalysis/modules/angle.h
src/gromacs/trajectoryanalysis/modules/distance.cpp
src/gromacs/trajectoryanalysis/modules/distance.h
src/gromacs/trajectoryanalysis/modules/select.cpp
src/gromacs/trajectoryanalysis/modules/select.h
src/gromacs/trajectoryanalysis/tests/test_selection.cpp

index 246e669729b7acf991cb8e517d79541f5abb426d..ad66d5727886f0af26ad49f4a954519107015e10 100644 (file)
@@ -45,7 +45,8 @@ class AnalysisTemplate : public TrajectoryAnalysisModule
         AnalysisTemplate();
 
         virtual Options *initOptions(TrajectoryAnalysisSettings *settings);
-        virtual void initAnalysis(const TopologyInformation &top);
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top);
 
         virtual TrajectoryAnalysisModuleData *startFrames(
                     AnalysisDataParallelOptions opt,
@@ -147,7 +148,8 @@ AnalysisTemplate::initOptions(TrajectoryAnalysisSettings *settings)
 
 
 void
-AnalysisTemplate::initAnalysis(const TopologyInformation & /*top*/)
+AnalysisTemplate::initAnalysis(const TrajectoryAnalysisSettings &settings,
+                               const TopologyInformation & /*top*/)
 {
     _data.setColumns(_sel.size());
     registerAnalysisDataset(&_data, "avedist");
index 28ee01e4dd3e5762eb8be8eff3fe81201ad3636f..e6661ecb988fa527f6082ab6eaccec3a647c31b6 100644 (file)
@@ -190,7 +190,8 @@ class TrajectoryAnalysisModule
          * the largest possible selection, i.e., the selections passed to
          * analyzeFrame() are always a subset of the selections provided here.
          */
-        virtual void initAnalysis(const TopologyInformation &top) = 0;
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top) = 0;
         /*! \brief
          * Performs additional initialization after reading the first frame.
          *
index bd0aa4746e11258cc76c4d9d74543518ae79760f..3d3925c800ad33695239f5b78334418650b61cb9 100644 (file)
@@ -226,7 +226,7 @@ TrajectoryAnalysisCommandLineRunner::run(int argc, char *argv[])
     selections.compile();
 
     const TopologyInformation &topology = common.topologyInformation();
-    module->initAnalysis(topology);
+    module->initAnalysis(settings, topology);
 
     // Load first frame.
     common.initFirstFrame();
index 3ecd3f771872ec1c17698e01588bc6d95ea698d4..4348090ad75f0bb718eb99e7ad1a3019f8525f6d 100644 (file)
@@ -320,7 +320,8 @@ Angle::checkSelections(const std::vector<Selection *> &sel1,
 
 
 void
-Angle::initAnalysis(const TopologyInformation &top)
+Angle::initAnalysis(const TrajectoryAnalysisSettings &settings,
+                    const TopologyInformation &top)
 {
     checkSelections(_sel1, _sel2);
 
index 583fdd9e309aa1a894d50deac4d9c00fe958a93b..6aadf4d960b202fe99091b432fc764eab93ef02b 100644 (file)
@@ -64,7 +64,8 @@ class Angle : public TrajectoryAnalysisModule
 
         virtual Options *initOptions(TrajectoryAnalysisSettings *settings);
         virtual void initOptionsDone(TrajectoryAnalysisSettings *settings);
-        virtual void initAnalysis(const TopologyInformation &top);
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top);
 
         virtual void analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
                                   TrajectoryAnalysisModuleData *pdata);
index 5ca7ad41509d47a71dc5aed06406caadc2017482..2f230916b769583375ee3782783185281fdce918 100644 (file)
@@ -92,7 +92,8 @@ Distance::initOptions(TrajectoryAnalysisSettings *settings)
 
 
 void
-Distance::initAnalysis(const TopologyInformation & /*top*/)
+Distance::initAnalysis(const TrajectoryAnalysisSettings &settings,
+                       const TopologyInformation & /*top*/)
 {
     if (_sel[0]->posCount() != 1)
     {
index c8e42c255d55f4fd5c9abf6858abe95e23635bd3..f038d659379f99c273728ea3f2bb67146ef16cc1 100644 (file)
@@ -64,7 +64,8 @@ class Distance : public TrajectoryAnalysisModule
         static TrajectoryAnalysisModule *create();
 
         virtual Options *initOptions(TrajectoryAnalysisSettings *settings);
-        virtual void initAnalysis(const TopologyInformation &top);
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top);
 
         virtual void analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
                                   TrajectoryAnalysisModuleData *pdata);
index 026b25c2dd8d15d298da6db1f4b2ebf44a4f4707..cf2f44e77d8e7722edb8be4004936683b7803ab6 100644 (file)
@@ -363,7 +363,8 @@ Select::initOptions(TrajectoryAnalysisSettings *settings)
 
 
 void
-Select::initAnalysis(const TopologyInformation &top)
+Select::initAnalysis(const TrajectoryAnalysisSettings &settings,
+                     const TopologyInformation &top)
 {
     if (!_fnIndex.empty() && _bDump && _sel.size() > 1U)
     {
index cf2777f8944964574196a4cfc011ff2f71a1ae66..2372e9e13397849ef51c2a17411234c15450f9dd 100644 (file)
@@ -63,7 +63,8 @@ class Select : public TrajectoryAnalysisModule
         static TrajectoryAnalysisModule *create();
 
         virtual Options *initOptions(TrajectoryAnalysisSettings *settings);
-        virtual void initAnalysis(const TopologyInformation &top);
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top);
 
         virtual TrajectoryAnalysisModuleData *startFrames(
                     AnalysisDataParallelOptions opt,
index df07271d1f2e877399f819ffb7b4ce5bb4eb2375..3e0d44daa87358d5d9305b03a2ab3d8bf7e7f083 100644 (file)
@@ -53,16 +53,17 @@ class SelectionTester : public TrajectoryAnalysisModule
 {
     public:
         SelectionTester();
-        ~SelectionTester();
+        virtual ~SelectionTester();
 
-        Options *initOptions(TrajectoryAnalysisSettings *settings);
-        void initAnalysis(const TopologyInformation &top);
+        virtual Options *initOptions(TrajectoryAnalysisSettings *settings);
+        virtual void initAnalysis(const TrajectoryAnalysisSettings &settings,
+                                  const TopologyInformation &top);
 
-        void analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
-                          TrajectoryAnalysisModuleData *pdata);
+        virtual void analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
+                                  TrajectoryAnalysisModuleData *pdata);
 
-        void finishAnalysis(int nframes);
-        void writeOutput();
+        virtual void finishAnalysis(int nframes);
+        virtual void writeOutput();
 
     private:
         void printSelections();
@@ -113,7 +114,8 @@ SelectionTester::initOptions(TrajectoryAnalysisSettings * /*settings*/)
 }
 
 void
-SelectionTester::initAnalysis(const TopologyInformation &/*top*/)
+SelectionTester::initAnalysis(const TrajectoryAnalysisSettings &/*settings*/,
+                              const TopologyInformation &/*top*/)
 {
     printSelections();
 }