#!/usr/bin/python # -*- coding: utf-8 -*- # \file %filename%.py # \brief TODO # \author Florent Guiotte # \version 0.1 # \date 27 août 2018 # # TODO details import numpy as np from .Stack import Stack class Stacker: def __init__(self): self.offset = 0 self.data_list = list() self.metadata_list = list() def auto_stack(self, data, old_stack, desc_str, symb_str): if data.shape[-1] != (old_stack.end - old_stack.begin): raise ValueError("Mismatch between data shape and stack length") new_desc = list() for d in old_stack.desc: new_desc.append(d.copy()) new_desc[-1].append(desc_str) new_symb = list() for s in old_stack.symb: new_symb.append([symb_str + '(']) new_symb[-1].extend(s.copy()) new_symb[-1].append(')') self.stack(data, new_desc, new_symb) def stack(self, data, desc, symb): size_new = data.shape[-1] stack_new = Stack(self.offset, size_new) self.offset += size_new stack_new.desc = desc stack_new.symb = symb self.data_list.append(data) self.metadata_list.append(stack_new) def pack(self): return np.dstack(self.data_list), self.metadata_list