def process(self): """ Processes all data that is provided by the input node Returns a generator that yields the data after being processed by this node. """ assert(self.input_node != None), "No input node specified!" # Assert that this node has already been trained assert(not self.is_trainable() or self.get_remaining_train_phase() == 0), "Node not trained!" data_generator = \ itertools.imap(lambda (data, label): (self.execute(data), label), self.input_node.process()) self.client = TimeSeriesClient(ts_stream = data_generator) self.client.connect() self.marker_windower = MarkerWindower(data_client=self.client, windowdefs=self.window_definition, stridems=self.nullmarker_stride_ms) if self.marker_windower == None: self.window_stream() # Create a generator that emits the windows test_data_generator = ((sample, label) \ for (sample, label) in self.marker_windower) self.data_for_testing = MemoizeGenerator(test_data_generator) # Return a fresh copy of the generator return self.data_for_testing.fresh()
def window_stream(self, data): # Creates a windower that splits the given data data into windows # based in the window definitions provided # and assigns correct labels to these windows self.client = TimeSeriesClient(ts_stream = iter(data)) self.client.connect() self.marker_windower = MarkerWindower(data_client=self.client, windowdefs=self.window_definition, stridems=self.nullmarker_stride_ms)