sip/trajectoryanalysis/TrajectoryAnalysis.sip libgromacs)
python_install(__init__.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/gromacs)
+
+install(DIRECTORY runner DESTINATION ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/gromacs)
+python_install(runner/__init__.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/gromacs)
+python_install(runner/pipeline.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/gromacs)
--- /dev/null
+
+from gromacs import TrajectoryAnalysis
+from runner.pipeline import GromacsPipeline, runPipeline
+
+class Test(TrajectoryAnalysis.TrajectoryAnalysisModule):
+
+ def __init__(self):
+ super(Test, self).__init__("test", "test")
+
+ def initOptions(self, options, settings):
+ options.setDescription(self.description())
+
+ def getBatch(self):
+ return self.modules
+
+ def getArgv(self, i):
+ return self.options[i]
+
+ def initAnalysis(self, settings, top):
+ pass
+
+ def analyzeFrame(self, frnr, frame, pbc, data):
+ print("Analyzing frame in Test module")
+
+ def finishAnalysis(self, nframes):
+ pass
+
+ def writeOutput(self):
+ pass
+
+modules = [
+ ("Angle", "-group1 System -oav angles.xvg"),
+ (Test(), ""),
+ (TrajectoryAnalysis.SasaInfo.create(), "-surface DNA"),
+]
+
+runPipeline(name="Pipeline", modules=modules)
+
--- /dev/null
+
+from gromacs import Options, TrajectoryAnalysis
+import sys, shlex
+
+class GromacsPipeline(TrajectoryAnalysis.TrajectoryAnalysisModule):
+
+ def __init__(self,
+ name="PythonPipeline",
+ description="Pipeline of modules created with Python",
+ modules=[]
+ ):
+ super(GromacsPipeline, self).__init__(name, description)
+
+ self.optionsHolder = Options.PyOptionsHolder()
+
+ self.modules = []
+ self.options = []
+
+ for module, options in modules:
+ if not isinstance(module, TrajectoryAnalysis.TrajectoryAnalysisModule):
+ info_name = module + "Info"
+ if not hasattr(TrajectoryAnalysis, info_name):
+ raise ValueError("There is no module named {}".format(name))
+
+ module = getattr(TrajectoryAnalysis, info_name).create()
+
+ options_list = [name] + shlex.split(options)
+
+ self.modules.append(module)
+ self.options.append(options_list)
+
+ def initOptions(self, options, settings):
+ options.setDescription(self.description())
+
+ def getBatch(self):
+ return self.modules
+
+ def getArgv(self, i):
+ return self.options[i]
+
+ def initAnalysis(self, settings, top):
+ pass
+
+ def analyzeFrame(self, frnr, frame, pbc, data):
+ pass
+
+ def finishAnalysis(self, nframes):
+ pass
+
+ def writeOutput(self):
+ pass
+
+ def run(self, argv):
+ if argv is None:
+ argv = sys.argv
+
+ TrajectoryAnalysis.runAsMain(self, argv)
+
+def runPipeline(name="PythonPipeline", description="Pipeline of modules created with Python", modules=[], argv=None):
+ pipeline = GromacsPipeline(name, description, modules)
+ pipeline.run(argv)