def get_block(self):
     self.source = GenSource(e
                             for i in xrange(len(self.cross_val_keys))
                             if not i == self.cross_val_index
                             for e in self.data[self.cross_val_keys[i]])
     self.ph_source = Transformer([self.source], {self.source.getName(): 'd'}, lambda d: d['phase'])
     self.bw_source = Transformer([self.source], {self.source.getName(): 'd'}, lambda d: d['raw'])
     block = SignalBlock(
         [self.source],
         [self.bw_source, self.ph_source]
     )
     self.source.callback = block.stop
     return block
 def get_block(self, shift = 1):
     a_meas = self.raws_per_phase[0][1]
     self.ph_source = GenSource(li[0]
                                for rep in repeat(self.raws_per_phase, len(a_meas))
                                for li in rep)
     self.bw_source = GenSource(li
                                for i in xrange(0, len(a_meas), shift)
                                for li in map(lambda t: interp_ls(t[0][1], t[1][1], i)
                                             ,zip(self.raws_per_phase[0:-1], self.raws_per_phase[1:])))
     block = SignalBlock(
         [self.bw_source, self.ph_source],
         [Transformer(
             [self.bw_source, self.ph_source],
             {self.bw_source.getName(): 'b', self.ph_source.getName(): 'd'},
             lambda b,d: (b,d))
         ]
     )
     self.bw_source.callback = block.stop
     self.ph_source.callback = block.stop
     #result.sinks.append(Sink([self.bw_source, self.ph_source], lambda x: print(x)))
     return block
 def __init__(self, source):
     self.original_source = source
     if hasattr(source, 'select'):
         raw_source = source.select('raw')
     else:
         raw_source = source
     fixlentrans = Transformer([raw_source], {raw_source.getName(): 'l'},
                               lambda l: fix_length(l, 512))
     self.wt = Preprocessor(fixlentrans, wavelet_trans)
     self.ft = Preprocessor(fixlentrans, fourier_trans)
     self.et = Preprocessor(fixlentrans, extremes)
     Transformer.__init__(self, [self.wt, self.ft, self.et], {
         self.wt.getName(): 'w',
         self.ft.getName(): 'f',
         self.et.getName(): 'e'
     }, lambda w, f, e: merge(w, f, e))
     #if hasattr(source, 'initialized'):
     #    if not source.initialized:
     #        source.push()
     source.push()
     self.pull()
     # For some reason this needs to happen at least once for the output_dim to be correct
     # TODO check why ^
     self.output_dim = len(self.pull())