2 * This file is part of the GROMACS-PyAPI package.
4 * Copyright (c) 2014,2015,
5 * by Maks Koltsov <maks@omrb.pnpi.spb.ru> and
6 * by Alexey Shvetsov <alexxy@omrb.pnpi.spb.ru>
8 * GROMACS-PyAPI is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; either version 2.1
11 * of the License, or (at your option) any later version.
13 * GROMACS-PyAPI is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with GROMACS; if not, see
20 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
21 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 #include <gromacs/trajectory/trajectoryframe.h>
28 #include "numpy_conv.h"
50 SIP_PYOBJECT x /NoSetter/ {
52 sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->x);
56 SIP_PYOBJECT v /NoSetter/ {
58 sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->v);
62 SIP_PYOBJECT f /NoSetter/ {
64 sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->f);
68 SIP_PYOBJECT box /NoSetter/ {
70 sipPy = array2dToNumpy(3, 3, sipCpp->box);
76 SIP_PYOBJECT index /NoSetter/ {
78 sipPy = array1dToNumpy(sipCpp->natoms, sipCpp->index);
86 #include <gromacs/pbcutil/pbc.h>
87 #include "numpy_conv.h"
93 SIP_PYOBJECT box /NoSetter/ {
95 sipPy = array2dToNumpy(3, 3, sipCpp->box);
98 SIP_PYOBJECT fbox_diag /NoSetter/ {
100 sipPy = array1dToNumpy(3, sipCpp->fbox_diag);
103 SIP_PYOBJECT hbox_diag /NoSetter/ {
105 sipPy = array1dToNumpy(3, sipCpp->hbox_diag);
108 SIP_PYOBJECT mhbox_diag /NoSetter/ {
110 sipPy = array1dToNumpy(3, sipCpp->mhbox_diag);
115 /*ivec tric_shift[MAX_NTRICVEC];*/
116 /*rvec tric_vec[MAX_NTRICVEC];*/
119 class AnalysisDataParallelOptions /NoDefaultCtors/ {
121 #include <gromacs/analysisdata/paralleloptions.h>
124 AnalysisDataParallelOptions();
127 class TrajectoryAnalysisModuleDataPointer;
128 class TrajectoryAnalysisModuleData /NoDefaultCtors/ {
130 #include <gromacs/trajectoryanalysis/analysismodule.h>
135 virtual void finish() = 0;
138 class TrajectoryAnalysisModulePointer;
139 class TrajectoryAnalysisModule /VirtualErrorHandler = vehandler/ {
141 #include <gromacs/trajectoryanalysis/analysismodule.h>
145 virtual void initOptions(IOptionsContainer *options, TrajectoryAnalysisSettings *settings) = 0;
146 virtual void optionsFinished(TrajectoryAnalysisSettings *settings);
147 virtual void initAnalysis(const TrajectoryAnalysisSettings &settings, const TopologyInformation &top) = 0;
148 virtual void initAfterFirstFrame(const TrajectoryAnalysisSettings &settings, const t_trxframe &fr);
149 // Discarding the virtual for now
150 std::unique_ptr < TrajectoryAnalysisModuleData > startFrames (const AnalysisDataParallelOptions &opt, const SelectionCollection &selections);
151 virtual void analyzeFrame(int frnr, const t_trxframe &fr /NoCopy/, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata ) = 0;
152 virtual void finishFrames(TrajectoryAnalysisModuleData *pdata);
153 virtual void finishAnalysis(int nframes) = 0;
154 virtual void writeOutput() = 0;
155 int datasetCount() const;
156 void finishFrameSerial(int frameIndex);
157 AbstractAnalysisData &datasetFromIndex(int index) const;
158 AbstractAnalysisData &datasetFromName(const char *name) const;
160 TrajectoryAnalysisModule();
162 TrajectoryAnalysisModule(const TrajectoryAnalysisModule &other);