Allow access to data produced by modules in pipeline
authorMaxim Koltsov <maks@omrb.pnpi.spb.ru>
Thu, 16 Jul 2015 14:12:59 +0000 (17:12 +0300)
committerMaxim Koltsov <maks@omrb.pnpi.spb.ru>
Thu, 16 Jul 2015 14:12:59 +0000 (17:12 +0300)
src/python/pipeline_test.py
src/python/runner/pipeline.py

index 1aaedd57bf15d15b12af25ff816713f942a45539..de96f2df8f98e657b2fc1569c5adceacfba1426a 100644 (file)
@@ -34,5 +34,7 @@ modules = [
     (TrajectoryAnalysis.SasaInfo.create(), "-surface DNA"),
 ]
 
-runPipeline(name="Pipeline", modules=modules)
-
+pipeline = runPipeline(name="Pipeline", modules=modules, keep_datasets=True)
+dataset = pipeline.modules[0].datasetFromIndex(1)
+for i in range(dataset.frameCount()):
+    print('frame =', i, ', columnCount =', dataset.columnCount(), ', y =', dataset.getDataFrame(i).y(0))
index f0dbb796620fbe3bb15abc83447ee6669fd2720b..a722970b4ce782fe97722d8b819de6c813170879 100644 (file)
@@ -7,7 +7,8 @@ class GromacsPipeline(TrajectoryAnalysis.TrajectoryAnalysisModule):
     def __init__(self,
         name="PythonPipeline",
         description="Pipeline of modules created with Python",
-        modules=[]
+        modules=[],
+        keep_datasets=False,
     ):
         super(GromacsPipeline, self).__init__(name, description)
 
@@ -26,6 +27,10 @@ class GromacsPipeline(TrajectoryAnalysis.TrajectoryAnalysisModule):
 
             options_list = [name] + shlex.split(options)
 
+            if keep_datasets:
+                for i in range(module.datasetCount()):
+                    module.datasetFromIndex(i).requestStorage(-1)
+
             self.modules.append(module)
             self.options.append(options_list)
 
@@ -56,6 +61,8 @@ class GromacsPipeline(TrajectoryAnalysis.TrajectoryAnalysisModule):
 
         TrajectoryAnalysis.runAsMain(self, argv)
 
-def runPipeline(name="PythonPipeline", description="Pipeline of modules created with Python", modules=[], argv=None):
-    pipeline = GromacsPipeline(name, description, modules)
+def runPipeline(argv=None, *args, **kwargs):
+    pipeline = GromacsPipeline(*args, **kwargs)
     pipeline.run(argv)
+
+    return pipeline