comparison build/bdist.linux-x86_64/egg/CHAP/pipeline.py @ 0:cbbe42422d56 draft

planemo upload for repository https://github.com/CHESSComputing/ChessAnalysisPipeline/tree/galaxy commit 1401a7e1ae007a6bda260d147f9b879e789b73e0-dirty
author kls286
date Tue, 28 Mar 2023 15:07:30 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:cbbe42422d56
1 #!/usr/bin/env python
2 #-*- coding: utf-8 -*-
3 #pylint: disable=
4 """
5 File : pipeline.py
6 Author : Valentin Kuznetsov <vkuznet AT gmail dot com>
7 Description:
8 """
9
10 # system modules
11 import logging
12 from time import time
13
14 class Pipeline():
15 """
16 Pipeline represent generic Pipeline class
17 """
18 def __init__(self, items=None, kwds=None):
19 """
20 Pipeline class constructor
21
22 :param items: list of objects
23 :param kwds: list of method args for individual objects
24 """
25 self.__name__ = self.__class__.__name__
26
27 self.items = items
28 self.kwds = kwds
29
30 self.logger = logging.getLogger(self.__name__)
31 self.logger.propagate = False
32
33 def execute(self):
34 """
35 execute API
36 """
37
38 t0 = time()
39 self.logger.info(f'Executing "execute"\n')
40
41 data = None
42 for item, kwargs in zip(self.items, self.kwds):
43 if hasattr(item, 'read'):
44 self.logger.info(f'Calling "read" on {item}')
45 data = item.read(**kwargs)
46 if hasattr(item, 'process'):
47 self.logger.info(f'Calling "process" on {item}')
48 data = item.process(data, **kwargs)
49 if hasattr(item, 'write'):
50 self.logger.info(f'Calling "write" on {item}')
51 data = item.write(data, **kwargs)
52
53 self.logger.info(f'Exectuted "exectute" in {time()-t0:.3f} seconds')
54
55 class PipelineObject():
56 """
57 PipelineObject represent generic Pipeline class
58 """
59 def __init__(self, reader, writer, processor, fitter):
60 """
61 PipelineObject class constructor
62 """
63 self.reader = reader
64 self.writer = writer
65 self.processor = processor
66
67 def read(self, filename):
68 """
69 read object API
70 """
71 return self.reader.read(filename)
72
73 def write(self, data, filename):
74 """
75 write object API
76 """
77 return self.writer.write(data, filename)
78
79 def process(self, data):
80 """
81 process object API
82 """
83 return self.processor.process(data)
84