2 from gromacs import Options, TrajectoryAnalysis
4 class M(TrajectoryAnalysis.TrajectoryAnalysisModule):
6 super(M, self).__init__("a", "a")
8 def initOptions(self, options, settings):
9 print('python: initOptions')
11 settings.setHelpText('A stupid test module')
13 self.optionsHolder = Options.PyOptionsHolder()
15 options.addOption(self.optionsHolder.selectionOption('sel').required())
16 options.addOption(self.optionsHolder.fileNameOption('file').defaultBasename('test').description('filename from python to rule them all').outputFile().required().filetype(Options.eftGenericData))
17 settings.setFlag(TrajectoryAnalysis.TrajectoryAnalysisSettings.efRequireTop)
19 self.angle = TrajectoryAnalysis.AngleInfo.create()
21 print('python: inited')
24 print('python: getBatch')
28 print('python: getArgv')
30 #First element of list should be module name -- gets discarded by parser anyway
31 return ["gangle", "-group1", "Backbone", "-oav", "angles.xvg"]
33 def initAnalysis(self, settings, top):
34 print('python: initAnalysis')
35 print('There are {} atoms'.format(top.topology().atoms.nr))
36 print('Topology name: {}'.format(top.topology().name))
38 #Tell GROMACS to keep last frame in storage, required in analyzeFrame()
39 self.angle.datasetFromIndex(1).requestStorage(1)
41 def analyzeFrame(self, frnr, frame, pbc, data):
42 sel = self.optionsHolder['sel']
44 dataset = self.angle.datasetFromIndex(1)
46 print('frame =', frnr, ', columnCount =', dataset.columnCount(), ', y =', dataset.getDataFrame(frnr).y(0))
48 def finishAnalysis(self, nframes):
49 print('python: Analyzed {} frames'.format(nframes))
51 def writeOutput(self):
52 print('python: writeOutput')
53 print('file = {}'.format(self.optionsHolder['file']))
55 fo = open(self.optionsHolder['file'], 'w')
56 fo.write('Test output\n')
58 TrajectoryAnalysis.runAsMain(M(), sys.argv)