Add support for defining Options from python
[alexxy/gromacs.git] / src / python / test.py
1 import sys
2 from gromacs import TrajectoryAnalysis
3
4 class M(TrajectoryAnalysis.TrajectoryAnalysisModule):
5     def __init__(self):
6         super(M, self).__init__(b"a", b"a")
7
8     def initOptions(self, options, settings):
9         print('python: initOptions')
10
11         self.optionsHolder = Options.PyOptionsHolder()
12
13         options.setDescription(b'A stupid test module')
14         options.addOption(self.optionsHolder.doubleOption(b'py').description(b'option added from python just to check'))
15         settings.setFlag(TrajectoryAnalysis.TrajectoryAnalysisSettings.efRequireTop)
16         print('python: inited')
17
18     def initAnalysis(self, settings, top):
19         print('python: initAnalysis')
20         print('There are {} atoms'.format(top.topology().atoms.nr))
21         print('Topology name: {}'.format(top.topology().name))
22
23     def analyzeFrame(self, frnr, frame, pbc, data):
24         print('python: Analyzing frame {}, {} atoms'.format(frnr, frame.natoms))
25         print(frame.box[0], frame.box[1], frame.box[2])
26         print(frame.x[0], frame.v[0], frame.f[0])
27
28     def finishAnalysis(self, nframes):
29         print('python: Analyzed {} frames'.format(nframes))
30
31     def writeOutput(self):
32         print('python: writeOutput')
33         print('py = {}'.format(self.optionsHolder[b'py']))
34
35 TrajectoryAnalysis.runAsMain(M(), sys.argv)