def main(): number_of_time_points = 20000 #number of time points to generate time_series_header = ["Time series A", "Time series B", "Time series C"] run_id = "" if len(sys.argv) >= 2: run_id = str(sys.argv[1]) #we are using a lattice of sensors that reads data from different #songs. We combine the listening from 3 different readings. time_series = generate_predictable_parabola_time_series(number_of_time_points) time_series_b = generate_predictable_time_series(number_of_time_points) #series b time_series_c = generate_predictable_parabola_time_series(number_of_time_points, 100) #series c, right shift by 100 rare_event_song = generate_predictable_sin_time_series(number_of_time_points) data_to_write = [time_series, time_series_b, time_series_c] ft.save_data_to_file(data_to_write, "the_series_" + run_id + ".csv") ft.save_data_to_file([rare_event_song], "rare_song_" + run_id + ".csv") normalized_time_series = tstools.normalize_to_range(time_series) normalized_time_series_b = tstools.normalize_to_range(time_series_b) normalized_time_series_c = tstools.normalize_to_range(time_series_c) data_to_write = [normalized_time_series, normalized_time_series_b, normalized_time_series_c] ft.save_data_to_file(data_to_write, "the_series_normalized_" + run_id +".csv") rare_event_song_normalized = tstools.normalize_to_range(rare_event_song) ft.save_data_to_file([rare_event_song_normalized], "rare_song_normalized_" + run_id + ".csv")
def change_sensor_time_series_to_rare_series(sensor, loudness_of_the_area, start_index, end_index): sensor_time_series = sensor.get_time_series() cropped_sensor_time_series = crop_time_series(sensor_time_series, start_index, end_index) cropped_rare_event_song = crop_time_series(rare_event_song, start_index, end_index) merged_series = tstools.merge_series([cropped_rare_event_song, cropped_sensor_time_series], [loudness_of_the_area, 1]) new_series = sensor_time_series[:] #to append previous valus to the new time series for i in range(len(merged_series)): new_series[start_index + i] = merged_series[i] new_series = tstools.normalize_to_range(new_series, 1.0) #normalize to 1 sensor.set_time_series(new_series)
def add_erroneous_drift_towards_a_value_to_sensor(sensor, probability_of_erroneous_reading, number_of_erroneous_points, random_generator): """ This function adds erroneous drift to a single sensor time series. This function modifies the sensor's original time series. """ time_series = sensor.get_time_series() erroneous_reading = \ error_generator.add_erroneous_drift_towards_a_value(time_series, probability_of_erroneous_reading, number_of_erroneous_points, random_generator) #normalize erroneous_reading = tstools.normalize_to_range(erroneous_reading, 1.0) sensor.set_time_series(erroneous_reading) return erroneous_reading
def add_erroneous_reading_to_sensor(sensor, probability_of_erroneous_reading, erroneous_reading_standard_deviation, warmup_time, random_generator): """ This function adds erroneous readings to a single sensor time series. This function modifies the sensor's original time series. """ time_series = sensor.get_time_series() erroneous_reading, number_of_errors_inserted, \ list_of_errors_inserted = \ error_generator.add_erroneous_reading_to_time_series(time_series, probability_of_erroneous_reading, erroneous_reading_standard_deviation, warmup_time, random_generator) #normalize to be between 0 and 1 erroneous_reading = tstools.normalize_to_range(erroneous_reading, 1.0) sensor.set_time_series(erroneous_reading) return erroneous_reading, number_of_errors_inserted, list_of_errors_inserted
def add_continous_erroneous_reading_to_sensor(sensor, probability_of_erroneous_reading, number_of_continous_erroneous_readings, warmup_time, random_generator): """ This function adds a sequence erroneous readings to a single sensor time series. This function modifies the sensor's original time series. """ time_series = sensor.get_time_series() erroneous_reading = \ error_generator.add_erroneous_continuous_sequence_to_time_series( time_series, probability_of_erroneous_reading, number_of_continous_erroneous_readings, warmup_time, random_generator) erroneous_reading = tstools.normalize_to_range(erroneous_reading, 1.0) sensor.set_time_series(erroneous_reading) return erroneous_reading
def set_time_series_according_to_sensor_weight(self, list_of_time_series): """ Sets the time series of a sensor depending on the location of the grid. It normalizes the data so it falls betweem 0 and 1 for the neural network. """ lattice_of_sensors = [] for row in range(self.dimension_of_lattice): for col in range(self.dimension_of_lattice): weigth_from_b = row / (self.dimension_of_lattice * 1.0) #in vertical increase b weigth_from_a = col / (self.dimension_of_lattice * 1.0) #in horizontal increase a weight_from_c = 0 total_weight = weigth_from_a + weigth_from_b if total_weight < 1: weight_from_c = 1 - total_weight list_of_weights = [weigth_from_a, weigth_from_b, weight_from_c] time_series_for_sensor = \ tstools.merge_series(list_of_time_series, list_of_weights) time_series_for_sensor = \ tstools.normalize_to_range(time_series_for_sensor, 1) self.set_sensor_time_series(row, col, time_series_for_sensor)