Set %DefaultEncoding, now python code can use str
[alexxy/gromacs.git] / src / python / test.py
1 import sys
2 from gromacs import Options, TrajectoryAnalysis
3
4 class M(TrajectoryAnalysis.TrajectoryAnalysisModule):
5     def __init__(self):
6         super(M, self).__init__("a", "a")
7
8     def initOptions(self, options, settings):
9         print('python: initOptions')
10
11         self.optionsHolder = Options.PyOptionsHolder()
12
13         options.setDescription('A stupid test module')
14         options.addOption(self.optionsHolder.doubleOption('py').description('option added from python just to check').required())
15         options.addOption(self.optionsHolder.selectionOption('sel').description('selection option from python').required())
16         options.addOption(self.optionsHolder.booleanOption('fail').description('fail :)'))
17         settings.setFlag(TrajectoryAnalysis.TrajectoryAnalysisSettings.efRequireTop)
18         print('python: inited')
19
20     def initAnalysis(self, settings, top):
21         print('python: initAnalysis')
22         print('There are {} atoms'.format(top.topology().atoms.nr))
23         print('Topology name: {}'.format(top.topology().name))
24
25     def analyzeFrame(self, frnr, frame, pbc, data):
26         sel = self.optionsHolder['sel']
27         print('selected atoms {}, {}'.format(sel.atomCount(), sel.coordinates()[0]))
28         print('ids: {}'.format(sel.mappedIds()[:5]))
29         return
30         print('python: Analyzing frame {}, {} atoms'.format(frnr, frame.natoms))
31         print(frame.box[0], frame.box[1], frame.box[2])
32         print(frame.x[0], frame.v[0], frame.f[0])
33
34     def finishAnalysis(self, nframes):
35         print('python: Analyzed {} frames'.format(nframes))
36
37     def writeOutput(self):
38         print('python: writeOutput')
39         print('py = {}'.format(self.optionsHolder['py']))
40         print('sel = {}'.format(self.optionsHolder['sel']))
41
42 TrajectoryAnalysis.runAsMain(M(), sys.argv)