def test_union(self): ex = self.tm_windows_examples() tests = [ (ex['Tbase'], 'Tbase', 'Tbase'), (TimeWindow(ex['Tsneigh'].since, ex['Tbase'].until), 'Tbase', 'Tsneigh'), (TimeWindow( ex['Tbase'].since, ex['Teneigh'].until, ), 'Tbase', 'Teneigh'), ([ex['Tsneigh'], ex['Teneigh']], 'Tsneigh', 'Teneigh'), (TimeWindow(ex['Tbase'].since, ex['Toverl'].until), 'Tbase', 'Toverl'), (ex['Tsupset'], 'Tbase', 'Tsupset'), (ex['Tbase'], 'Tbase', 'Tsubset'), ] for result, twname1, twname2 in tests: tw1 = ex[twname1] tw2 = ex[twname2] self.assertEqual( result, tw1.union(tw2), 'Checking "{0}".union("{1}")'.format(twname1, twname2)) self.assertEqual( result, tw1 | tw2, 'Checking "{0}".union("{1}")'.format(twname1, twname2)) self.assertEqual( result, tw2.union(tw1), 'Checking "{0}".union("{1}")'.format(twname2, twname1)) self.assertEqual( result, tw2 | tw1, 'Checking "{0}".union("{1}")'.format(twname2, twname1))
def test_smallestpossible(self): ex = self.tm_windows_examples() tests = [ (ex['Tbase'], [ex['Tbase']]), (ex['Tbase'], [ex['Tbase'], ex['Tbase']]), (TimeWindow(ex['Tsneigh'].since, ex['Tbase'].until), [ex['Tbase'], ex['Tsneigh']]), (TimeWindow( ex['Tbase'].since, ex['Teneigh'].until, ), [ex['Tbase'], ex['Teneigh']]), (TimeWindow( ex['Tsneigh'].since, ex['Teneigh'].until, ), [ex['Tsneigh'], ex['Teneigh']]), (TimeWindow( ex['Tsneigh'].since, ex['Teneigh'].until, ), [ex['Tsneigh'], ex['Tbase'], ex['Teneigh']]), (TimeWindow( ex['Tbase'].since, ex['Toverl'].until, ), [ex['Toverl'], ex['Tbase']]), (ex['Tsupset'], [ex['Tsupset'], ex['Tbase']]), (ex['Tbase'], [ex['Tsubset'], ex['Tbase']]), ] for result, tw_set in tests: self.assertEqual(result, TimeWindow.smallest_possible(tw_set))
def tm_windows_examples(self): """ Generate a set of fixed time windows with the following relationships between them. The actual time scale and point in time may vary. Tbase = |_______________| Tsneigh= |__| Teneigh= |__| Toverl = |_____________| Tsupset= |_____________________| Tsubset= |_____| """ examples = {} now = self.now examples['Tbase'] = TimeWindow.from_timedelta(now, timedelta(minutes=10)) examples['Tsneigh'] = TimeWindow.from_timedelta( examples['Tbase'].since, -timedelta(minutes=1)) examples['Teneigh'] = TimeWindow.from_timedelta( examples['Tbase'].until, timedelta(minutes=1)) examples['Toverl'] = TimeWindow.from_timedelta( examples['Tbase'].since + examples['Tbase'].delta / 2, examples['Tbase'].delta) examples['Tsupset'] = TimeWindow( examples['Tbase'].since - timedelta(minutes=1), examples['Tbase'].until + timedelta(minutes=1)) examples['Tsubset'] = TimeWindow( examples['Tbase'].since + timedelta(minutes=1), examples['Tbase'].until - timedelta(minutes=1)) return examples
def test_time_window_to_timestamps(self): start = 1420063200 end = start + 120 tw = TimeWindow(utcfromtimestamp_tzaware(start), utcfromtimestamp_tzaware(end)) tw_timestamps = time_window_to_timestamps(tw) self.assertTupleEqual(tw_timestamps, (start, end))
def start_simulate(self, iteration): #self.log('start simulating') self.__iteration_number = iteration for _ in range(iteration): #self.log("found a new block") random_number = random.random() # Mining Process if random_number < self._alpha: self.calculating_weight(True) self.start_selfish_mining() else: self.calculating_weight(False) self.start_honest_mining() block_creation_response = self.time_window.create_a_block() if block_creation_response == BlockCreationStatus.EndTow: self.chain_evaluation() self.reset_tow() elif block_creation_response == BlockCreationStatus.EndTimeWindow: self.time_window = TimeWindow(self.tow_number, self.min_tow_block_number, self.max_tow_block_number) self.chain_evaluation() self.reset_tow() else: self.__current_block_tow += 1 self.calculating_output() return
def convert_to_loc_avail(self, db_loc): la = LocationAvailability() la.location_name = db_loc[HASH_KEY] if 'is_muted' in db_loc.keys(): la.is_muted = db_loc['is_muted'] if 'windows' in db_loc.keys(): for w in json.loads(db_loc['windows']): tw = TimeWindow(IsMuted=w["is_muted"], ical=w['ical'], Priority=w['priority']) la.add_window(tw) if 'last_activity' in db_loc.keys(): la.last_activity = arrow.get(db_loc['last_activity']) logging.info('Last motion was ' + la.last_activity.isoformat()) if ((arrow.utcnow() - la.last_activity).seconds > 60): la.is_motion = False else: la.is_motion = True if 'input_capabilities' in db_loc.keys(): for k in json.loads(db_loc['input_capabilities']): i = json.loads(db_loc['input_capabilities'])[k] la.add_input_capability(HardwareId=k, Name=i['name'], Color=i['color'], Style=i['style'], Type=i['type']) return la
def test_time_window_from_timestamps(self): start = 1420063200 end = start + 120 check_tw = time_window_from_timestamps((start, end)) tw = TimeWindow(utcfromtimestamp_tzaware(start), utcfromtimestamp_tzaware(end)) self.assertEqual(check_tw, tw)
def adjust_segments(consumption_segments: dict, weight_series: pd.Series) -> dict: """ Realign consumption segments to end one timestamp before a new product arrives on a scale and start on timestamp of product arrival. Args: consumption_segments: Dictionary of TimeWindow segments. weight_series: Weight measurements as a Pandas Series. Returns: A dictionary of adjusted TimeWindow segments. """ segments = consumption_segments.copy() for segment_index in range(len(segments) - 1): current_segment_data = create_segment_data(segments[segment_index], weight_series) next_segment_data = create_segment_data(segments[segment_index + 1], weight_series) current_end_weight = current_segment_data["end_weight"] next_start_weight = next_segment_data["start_weight"] if current_end_weight >= next_start_weight: weight_sub_range = weight_series[current_segment_data[ "min_weight_time"]:next_segment_data["end_time"]] sub_range_values = np.array(weight_sub_range.values) sub_range_times = weight_sub_range.index peaks, plateaus = signal.find_peaks(sub_range_values, plateau_size=1) first_maxima_index = peaks[0] if plateaus["left_edges"]: plateaus_left_edge = plateaus["left_edges"] first_maxima_index = np.minimum(peaks, plateaus_left_edge)[0] adjusted_current_end_time = sub_range_times[first_maxima_index - 1] adjusted_next_start_time = sub_range_times[first_maxima_index] adjusted_current_segment = TimeWindow( current_segment_data["start_time"], adjusted_current_end_time) adjusted_next_segment = TimeWindow(adjusted_next_start_time, next_segment_data["end_time"]) segments[segment_index] = adjusted_current_segment segments[segment_index + 1] = adjusted_next_segment else: continue return segments
def test_split_per_week(self): # Single time test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 15, 30, 40, 54), ) self.assertEqual(tw.split_per_week(), [tw]) # Single day test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 16, 4, 3, 1), ) self.assertEqual(tw.split_per_week(), [tw]) # Span one week, with period less than 7 days tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 3, 10)) self.assertEqual( tw.split_per_week(), [TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 3, 10))]) # Span two weeks, with period greater than 7 days tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 11, 23, 30)) print(tw.split_per_week()) self.assertEqual(tw.split_per_week(), [ TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 5, 0)), TimeWindow(datetime(2015, 1, 5, 0), datetime(2015, 1, 11, 23, 30)) ])
def test_constructor(self): now = datetime.now() until = now + timedelta(minutes=5) tw = TimeWindow(now, until) self.assertEqual(now, tw.since) self.assertEqual(until, tw.until) self.assertEqual(until, tw.until) with self.assertRaises(ValueError): # Test reverse order TimeWindow(until, now) with self.assertRaises(TypeError): TimeWindow("string", until) with self.assertRaises(TypeError): TimeWindow(now, "string")
def __init__(self): ''' obj -> None This method initializes an object ''' self.conti = True self.wrong = False self.element_1 = StartingWindow() if self.element_1.name != 'quit' and len(self.element_1.name) > 0: self.element_2 = TimeWindow() self.get_chart() self.get_rep() if self.element_2 != None: a = Represent()
def create_consumption_segments(weight_series: pd.Series, peaks: list) -> dict: """ Create and return a dictionary of time windows representing consumption segments of individual products. Args: weight_series: Weight measurements as a Pandas Series. peaks: Peaks in data as a list of time stamps. Returns: Dictionary of time_window.TimeWindows 'windows'. """ weight_schema = pas.weight_series try: weight_schema(weight_series) except pa.errors.SchemaErrors: raise time_stamps = weight_series.index consumption_segments = {} start_time_stamp = time_stamps[0] end_index = (time_stamps.get_loc(peaks[0]) - 1 ) # end the segment 1 timestamp before peak end_time_stamp = time_stamps[end_index] segment_0 = TimeWindow(start_time_stamp, end_time_stamp) consumption_segments[0] = segment_0 for index, break_point in enumerate(peaks): start_time_stamp = break_point if index < len(peaks) - 1: end_index = (time_stamps.get_loc(peaks[index + 1]) - 1 ) # end the segment 1 timestamp before peak end_time_stamp = time_stamps[end_index] else: end_time_stamp = time_stamps[-1] consumption_segments[index + 1] = TimeWindow(start_time_stamp, end_time_stamp) return consumption_segments
def test_complement(self): ex = self.tm_windows_examples() tests = [ (None, 'Tbase', 'Tbase'), (ex['Tbase'], 'Tbase', 'Tsneigh'), (ex['Tbase'], 'Tbase', 'Teneigh'), (TimeWindow(ex['Tbase'].since, ex['Toverl'].since), 'Tbase', 'Toverl'), (None, 'Tbase', 'Tsupset'), ([ TimeWindow(ex['Tbase'].since, ex['Tsubset'].since), TimeWindow(ex['Tsubset'].until, ex['Tbase'].until) ], 'Tbase', 'Tsubset'), ] for result, twname1, twname2 in tests: tw1 = ex[twname1] tw2 = ex[twname2] self.assertEqual( result, tw1.complement(tw2), 'Checking "{0}".complement("{1}")'.format(twname1, twname2)) self.assertEqual( result, tw1 - tw2, 'Checking "{0}".complement("{1}")'.format(twname1, twname2))
def __init__(self, tow_number, min_tow_block_number, max_tow_block_number, show_log=False): self._alpha = 0 self._gamma = 0 self.tow_number = tow_number self.min_tow_block_number = min_tow_block_number self.max_tow_block_number = max_tow_block_number self.time_window = TimeWindow(tow_number, min_tow_block_number, max_tow_block_number) self.__show_log = show_log random.seed(None) self.__public_chain_length = 0 self.__private_chain_length = 0 self.__delta = 0 self.__selfish_miners_win_block = 0 self.__honest_miners_win_block = 0 self.__selfish_miner_revenue = 0 self.__honest_miner_revenue = 0 self.__total_mined_block = 0 self.__total_stale_block = 0 self.__iteration_number = 0 self.__predicted_K = 2 self.__published = False self.__private_chain_weight = [0 for _ in range(max_tow_block_number)] self.__public_chain_weight = [0 for _ in range(max_tow_block_number)] self.__current_block_tow = 1 self.__average_tow = self.time_window.get_average_tow() self.__fork_created = False
def helper_time_periods_to_time_window_list(self, periods): return [ TimeWindow(*list(map(utcfromtimestamp_tzaware, period))) for period in periods ]
def test_split_per_day(self): # Single time test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 15, 30, 40, 54), ) self.assertEqual(tw.split_per_day(), [tw]) # Single day test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 16, 4, 3, 1), ) self.assertEqual(tw.split_per_day(), [tw]) # Span two days, with period less than 24 hours tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 10)) self.assertEqual(tw.split_per_day(), [ TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 0)), TimeWindow(datetime(2015, 1, 2, 0), datetime(2015, 1, 2, 10)) ]) # Span two days, with period greater than 24 hours tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 23, 30)) self.assertEqual(tw.split_per_day(), [ TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 0)), TimeWindow(datetime(2015, 1, 2, 0), datetime(2015, 1, 2, 23, 30)) ]) # A big test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 2, 3, 5, 4, 3, 1), ) self.assertEqual(tw.split_per_day(), [ TimeWindow(datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 2, 0, 0)), TimeWindow(datetime(2015, 1, 2, 0, 0), datetime(2015, 1, 3, 0, 0)), TimeWindow(datetime(2015, 1, 3, 0, 0), datetime(2015, 1, 4, 0, 0)), TimeWindow(datetime(2015, 1, 4, 0, 0), datetime(2015, 1, 5, 0, 0)), TimeWindow(datetime(2015, 1, 5, 0, 0), datetime(2015, 1, 6, 0, 0)), TimeWindow(datetime(2015, 1, 6, 0, 0), datetime(2015, 1, 7, 0, 0)), TimeWindow(datetime(2015, 1, 7, 0, 0), datetime(2015, 1, 8, 0, 0)), TimeWindow(datetime(2015, 1, 8, 0, 0), datetime(2015, 1, 9, 0, 0)), TimeWindow(datetime(2015, 1, 9, 0, 0), datetime(2015, 1, 10, 0, 0)), TimeWindow(datetime(2015, 1, 10, 0, 0), datetime( 2015, 1, 11, 0, 0)), TimeWindow(datetime(2015, 1, 11, 0, 0), datetime( 2015, 1, 12, 0, 0)), TimeWindow(datetime(2015, 1, 12, 0, 0), datetime( 2015, 1, 13, 0, 0)), TimeWindow(datetime(2015, 1, 13, 0, 0), datetime( 2015, 1, 14, 0, 0)), TimeWindow(datetime(2015, 1, 14, 0, 0), datetime( 2015, 1, 15, 0, 0)), TimeWindow(datetime(2015, 1, 15, 0, 0), datetime( 2015, 1, 16, 0, 0)), TimeWindow(datetime(2015, 1, 16, 0, 0), datetime( 2015, 1, 17, 0, 0)), TimeWindow(datetime(2015, 1, 17, 0, 0), datetime( 2015, 1, 18, 0, 0)), TimeWindow(datetime(2015, 1, 18, 0, 0), datetime( 2015, 1, 19, 0, 0)), TimeWindow(datetime(2015, 1, 19, 0, 0), datetime( 2015, 1, 20, 0, 0)), TimeWindow(datetime(2015, 1, 20, 0, 0), datetime( 2015, 1, 21, 0, 0)), TimeWindow(datetime(2015, 1, 21, 0, 0), datetime( 2015, 1, 22, 0, 0)), TimeWindow(datetime(2015, 1, 22, 0, 0), datetime( 2015, 1, 23, 0, 0)), TimeWindow(datetime(2015, 1, 23, 0, 0), datetime( 2015, 1, 24, 0, 0)), TimeWindow(datetime(2015, 1, 24, 0, 0), datetime( 2015, 1, 25, 0, 0)), TimeWindow(datetime(2015, 1, 25, 0, 0), datetime( 2015, 1, 26, 0, 0)), TimeWindow(datetime(2015, 1, 26, 0, 0), datetime( 2015, 1, 27, 0, 0)), TimeWindow(datetime(2015, 1, 27, 0, 0), datetime( 2015, 1, 28, 0, 0)), TimeWindow(datetime(2015, 1, 28, 0, 0), datetime( 2015, 1, 29, 0, 0)), TimeWindow(datetime(2015, 1, 29, 0, 0), datetime( 2015, 1, 30, 0, 0)), TimeWindow(datetime(2015, 1, 30, 0, 0), datetime( 2015, 1, 31, 0, 0)), TimeWindow(datetime(2015, 1, 31, 0, 0), datetime(2015, 2, 1, 0, 0)), TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 2, 2, 0, 0)), TimeWindow(datetime(2015, 2, 2, 0, 0), datetime(2015, 2, 3, 0, 0)), TimeWindow(datetime(2015, 2, 3, 0, 0), datetime(2015, 2, 3, 5, 4, 3, 1)) ])
def test_split_per_month(self): # Single time test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 15, 30, 40, 54), ) self.assertEqual(tw.split_per_month(), [tw]) # Single day test tw = TimeWindow( datetime(2015, 1, 1, 15, 30, 40, 54), datetime(2015, 1, 1, 16, 4, 3, 1), ) self.assertEqual(tw.split_per_month(), [tw]) # Span one month, with period less than 30 days tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 15, 10)) self.assertEqual( tw.split_per_month(), [TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 15, 10))]) # Span two months, with period greater than 30 days tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 5, 23, 30)) self.assertEqual(tw.split_per_month(), [ TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 1, 0, 0)), TimeWindow(datetime(2015, 2, 1, 0, 0), datetime( 2015, 2, 5, 23, 30)) ]) # Span three months, with period greater than 30 days tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 3, 5, 23, 30)) self.assertEqual(tw.split_per_month(), [ TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 1, 0, 0)), TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 3, 1, 0, 0)), TimeWindow(datetime(2015, 3, 1, 0, 0), datetime( 2015, 3, 5, 23, 30)) ]) # Span three months, with period greater than 30 days, # starting from the middle of the first month tw = TimeWindow(datetime(2015, 1, 15, 5), datetime(2015, 3, 6, 15)) self.assertEqual(tw.split_per_month(), [ TimeWindow(datetime(2015, 1, 15, 5, 0), datetime(2015, 2, 1, 0, 0)), TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 3, 1, 0, 0)), TimeWindow(datetime(2015, 3, 1, 0, 0), datetime(2015, 3, 6, 15, 0)) ]) # Span five months, with period greater than 30 days, # starting from the 10th day of the first month tw = TimeWindow(datetime(2015, 5, 10, 5), datetime(2015, 7, 23, 15)) self.assertEqual(tw.split_per_month(), [ TimeWindow(datetime(2015, 5, 10, 5, 0), datetime(2015, 6, 1, 0, 0)), TimeWindow(datetime(2015, 6, 1, 0, 0), datetime(2015, 7, 1, 0, 0)), TimeWindow(datetime(2015, 7, 1, 0, 0), datetime( 2015, 7, 23, 15, 0)) ]) # Span two months, with period less than 30 days, # starting from December tw = TimeWindow(datetime(2015, 12, 15, 5), datetime(2016, 1, 6, 15)) self.assertEqual(tw.split_per_month(), [ TimeWindow(datetime(2015, 12, 15, 5, 0), datetime( 2016, 1, 1, 0, 0)), TimeWindow(datetime(2016, 1, 1, 0, 0), datetime(2016, 1, 6, 15, 0)) ])
def __init__(self, wechat_id): BaseCheckin.__init__(self, wechat_id) self.class_list = self.init_class_records() self.enter_time = time.strftime('%H:%M') self.section_id = self.init_section_id(self.enter_time) self.time_window = TimeWindow()
def test_bug_compress_spatial_time_area(self): # This case was captured live on debugger. tws = TimeWindowsCollection([ TimeWindow(datetime(2015, 3, 4, 16, 40, 31, 0), datetime(2015, 3, 4, 16, 41, 31, 0)), TimeWindow(datetime(2015, 3, 4, 16, 43, 44, 0), datetime(2015, 3, 4, 16, 44, 44, 0)), TimeWindow(datetime(2015, 3, 4, 16, 43, 57, 0), datetime(2015, 3, 4, 16, 44, 57, 0)), TimeWindow(datetime(2015, 3, 4, 16, 44, 9, 0), datetime(2015, 3, 4, 16, 45, 9, 0)), TimeWindow(datetime(2015, 3, 4, 16, 44, 22, 0), datetime(2015, 3, 4, 16, 45, 22, 0)), TimeWindow(datetime(2015, 3, 4, 16, 44, 35, 0), datetime(2015, 3, 4, 16, 45, 35, 0)), TimeWindow(datetime(2015, 3, 4, 16, 46, 23, 0), datetime(2015, 3, 4, 16, 47, 23, 0)), TimeWindow(datetime(2015, 3, 4, 16, 46, 40, 0), datetime(2015, 3, 4, 16, 47, 40, 0)), TimeWindow(datetime(2015, 3, 4, 16, 46, 56, 0), datetime(2015, 3, 4, 16, 47, 56, 0)), TimeWindow(datetime(2015, 3, 4, 16, 47, 12, 0), datetime(2015, 3, 4, 16, 48, 12, 0)), TimeWindow(datetime(2015, 3, 4, 16, 47, 28, 0), datetime(2015, 3, 4, 16, 48, 28, 0)), TimeWindow(datetime(2015, 3, 4, 16, 47, 44, 0), datetime(2015, 3, 4, 16, 48, 44, 0)) ]) res = tws.compressed() self.assertEqual(res.time_windows, [ TimeWindow(datetime(2015, 3, 4, 16, 40, 31), datetime(2015, 3, 4, 16, 41, 31)), TimeWindow(datetime(2015, 3, 4, 16, 43, 44), datetime(2015, 3, 4, 16, 45, 35)), TimeWindow(datetime(2015, 3, 4, 16, 46, 23), datetime(2015, 3, 4, 16, 48, 44)) ])
def test_property_middle(self): now = datetime.now() until = now + timedelta(minutes=10) tw = TimeWindow(now, until) self.assertEqual(tw.middle, now + timedelta(minutes=5))