5 #include <gromacs/fileio/trx.h>
35 rvecs *arr = new rvecs(sipCpp->x, sipCpp->natoms);
36 sipPy = sipConvertFromNewType(arr, sipType_rvecs, NULL);
45 rvecs *arr = new rvecs(sipCpp->v, sipCpp->natoms);
46 sipPy = sipConvertFromNewType(arr, sipType_rvecs, NULL);
55 rvecs *arr = new rvecs(sipCpp->f, sipCpp->natoms);
56 sipPy = sipConvertFromNewType(arr, sipType_rvecs, NULL);
65 Matrix *mat = new Matrix(sipCpp->box);
66 sipPy = sipConvertFromNewType(mat, sipType_Matrix, NULL);
75 /*t_gmxvmdplugin* *vmdplugin; */
81 #include <gromacs/pbcutil/pbc.h>
90 Matrix *mat = new Matrix(sipCpp->box);
91 sipPy = sipConvertFromNewType(mat, sipType_Matrix, NULL);
99 py_rvec *vec = new py_rvec(sipCpp->fbox_diag);
100 sipPy = sipConvertFromNewType(vec, sipType_py_rvec, NULL);
108 py_rvec *vec = new py_rvec(sipCpp->fbox_diag);
109 sipPy = sipConvertFromNewType(vec, sipType_py_rvec, NULL);
117 py_rvec *vec = new py_rvec(sipCpp->mhbox_diag);
118 sipPy = sipConvertFromNewType(vec, sipType_py_rvec, NULL);
126 double limit_distance2;
128 /*ivec tric_shift[MAX_NTRICVEC];*/
129 /*rvec tric_vec[MAX_NTRICVEC];*/
132 class TrajectoryAnalysisModuleData /NoDefaultCtors/ {
135 #include <gromacs/trajectoryanalysis/analysismodule.h>
140 virtual void finish() = 0;
143 class TrajectoryAnalysisModule {
146 #include <gromacs/trajectoryanalysis/analysismodule.h>
150 virtual void initOptions(Options *options, TrajectoryAnalysisSettings *settings) = 0;
151 virtual void optionsFinished(Options *options, TrajectoryAnalysisSettings *settings);
152 virtual void initAnalysis(const TrajectoryAnalysisSettings &settings, const TopologyInformation &top) = 0;
153 virtual void initAfterFirstFrame(const TrajectoryAnalysisSettings &settings, const t_trxframe &fr);
154 // virtual TrajectoryAnalysisModuleDataPointer startFrames (const AnalysisDataParallelOptions &opt, const SelectionCollection &selections);
155 virtual void analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata ) = 0;
156 virtual void finishFrames(TrajectoryAnalysisModuleData *pdata);
157 virtual void finishAnalysis(int nframes) = 0;
158 virtual void writeOutput() = 0;
159 const char* name() const;
160 const char* description() const;
161 int datasetCount() const;
163 TrajectoryAnalysisModule(const char *name, const char *description);
165 TrajectoryAnalysisModule(const TrajectoryAnalysisModule &other);
168 %Exception gmx::InconsistentInputError(SIP_Exception) {
171 #include <gromacs/utility/exceptions.h>
177 const char *detail = sipExceptionRef.what();
180 PyErr_SetString(sipException_gmx_InconsistentInputError, detail);
185 class TrajectoryAnalysisCommandLineRunner {
187 #include <gromacs/trajectoryanalysis/cmdlinerunner.h>
191 TrajectoryAnalysisCommandLineRunner(TrajectoryAnalysisModule *module);
192 int run(SIP_PYLIST) throw (gmx::InconsistentInputError);
194 int argc = PyList_GET_SIZE(a0);
196 char **argv = new char *[argc + 1];
199 for (int a = 0; a < argc; ++a)
201 PyObject *arg_obj = PyList_GET_ITEM(a0, a);
202 const char *arg = sipString_AsLatin1String(&arg_obj);
214 argv[a] = const_cast<char *>(arg);
220 sipCpp->run(argc, argv);
221 } catch (gmx::InconsistentInputError &e) {
223 PyErr_SetString(sipException_gmx_InconsistentInputError, e.what());
227 TrajectoryAnalysisCommandLineRunner(const TrajectoryAnalysisCommandLineRunner &other);