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 self.optionsHolder = Options.PyOptionsHolder()
13 options.setDescription('A stupid test module')
14 options.addOption(self.optionsHolder.selectionOption('sel').required())
15 options.addOption(self.optionsHolder.fileNameOption('file').defaultBasename('test').description('filename from python to rule them all').outputFile().required().filetype(Options.eftGenericData))
16 settings.setFlag(TrajectoryAnalysis.TrajectoryAnalysisSettings.efRequireTop)
18 self.angle = TrajectoryAnalysis.AngleInfo.create()
20 print('python: inited')
23 print('python: getBatch')
27 print('python: getArgv')
29 #First element of list should be module name -- gets discarded by parser anyway
30 return ["gangle", "-group1", "Backbone", "-oav", "angles.xvg"]
32 def initAnalysis(self, settings, top):
33 print('python: initAnalysis')
34 print('There are {} atoms'.format(top.topology().atoms.nr))
35 print('Topology name: {}'.format(top.topology().name))
37 #Tell GROMACS to keep last frame in storage, required in analyzeFrame()
38 self.angle.datasetFromIndex(1).requestStorage(1)
40 def analyzeFrame(self, frnr, frame, pbc, data):
41 sel = self.optionsHolder['sel']
43 dataset = self.angle.datasetFromIndex(1)
45 print('frame =', frnr, ', columnCount =', dataset.columnCount(), ', y =', dataset.getDataFrame(frnr).y(0))
47 def finishAnalysis(self, nframes):
48 print('python: Analyzed {} frames'.format(nframes))
50 def writeOutput(self):
51 print('python: writeOutput')
52 print('file = {}'.format(self.optionsHolder['file']))
54 fo = open(self.optionsHolder['file'], 'w')
55 fo.write('Test output\n')
57 TrajectoryAnalysis.runAsMain(M(), sys.argv)