ld2daps/ld2dap/Merger.py
2018-08-27 11:04:20 +02:00

58 lines
1.6 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
# \file Merger.py
# \brief TODO
# \author Florent Guiotte <florent.guiotte@gmail.com>
# \version 0.1
# \date 24 août 2018
#
# TODO details
from ld2dap.core import Filter, Output, Stacker
import numpy as np
class Merger(Filter):
def __init__(self):
super().__init__(self.__class__.__name__)
"""Merger Node, merge two stream inputs"""
self.data = None
self.metadata = None
self.second = self.SecondInput(self)
def process(self, data=None, metadata=None):
"""Override the Input override"""
if data is not None:
self.logger.info('Register first input')
self.data = data
self.metadata = metadata
else:
self.logger.info('Register second input')
if self.second.data is None or self.data is None:
return
self.logger.info('Merging inputs')
offset = self.data.shape[-1]
data = np.dstack((self.data, self.second.data))
metadata = self.metadata
for stack in self.second.metadata:
stack.begin += offset
stack.end += offset
metadata.append(stack)
for output in self.outputs:
output.process(data, [x.copy() for x in metadata])
class SecondInput(Output):
def __init__(self, merger):
super().__init__(self.__class__.__name__)
self.merger = merger
self.data = None
self.metadata = None
def _process(self, data, metadata):
self.data = data
self.metadata = metadata
self.merger.process()