def testTripGeojson(self): eaist.segment_current_trips(self.testUUID) eaiss.segment_current_sections(self.testUUID) eaicl.filter_current_sections(self.testUUID) tl = esdtl.get_raw_timeline(self.testUUID, 1440658800, 1440745200) self.assertEquals(len(tl.trips), 8) eaicr.clean_and_resample(self.testUUID) tl = esdtl.get_cleaned_timeline(self.testUUID, 1440658800, 1440745200) tl.fill_start_end_places() created_trips = tl.trips self.assertEquals(len(created_trips), 7) trip_geojson = gjfc.trip_to_geojson(created_trips[0], tl) logging.debug("first trip_geojson = %s" % bju.dumps(trip_geojson, indent=4)) self.assertEquals(trip_geojson.type, "FeatureCollection") self.assertEquals(trip_geojson.properties["feature_type"], "trip") self.assertEquals(len(trip_geojson.features), 5) day_geojson = gjfc.get_geojson_for_timeline(self.testUUID, tl) self.assertEquals(len(day_geojson), 7) self.assertEquals(day_geojson[-1].type, "FeatureCollection") self.assertEquals(day_geojson[-1].properties["feature_type"], "trip") self.assertEquals(len(day_geojson[-1].features), 5)
def testStopSectionTimeline(self): eaist.segment_current_trips(self.testUUID) eaiss.segment_current_sections(self.testUUID) tl = esdt.get_raw_timeline(self.testUUID, self.day_start_ts, self.day_end_ts) for i, element in enumerate(tl): logging.debug("%s: %s" % (i, type(element))) curr_type = self.get_type(element) if curr_type == ecwrt.Rawtrip: curr_tl = esdtq.get_raw_timeline_for_trip(self.testUUID, element.get_id()) logging.debug("Got timeline %s for trip %s" % (curr_tl, element.start_fmt_time)) prev_sub_type = None prev_element = None checked_count = 0 j = 0 for j, curr_element in enumerate(curr_tl): logging.debug("curr_element = %s" % curr_element) curr_sub_type = self.get_type(curr_element) if prev_sub_type is not None: checked_count = checked_count + 1 self.assertNotEqual(prev_sub_type, curr_sub_type) if prev_sub_type == ecws.Stop: self.assertEqual(prev_element.starting_section, curr_element.get_id()) else: self.assertEqual(prev_sub_type, ecwsc.Section) self.assertEqual(prev_element.end_stop, curr_element.get_id()) prev_sub_type = curr_sub_type prev_element = curr_element self.assertEqual(checked_count, j)
def testStopSectionTimeline(self): eaist.segment_current_trips(self.testUUID) eaiss.segment_current_sections(self.testUUID) tl = esdt.get_raw_timeline(self.testUUID, self.day_start_ts, self.day_end_ts) for i, element in enumerate(tl): logging.debug("%s: %s" % (i, type(element))) curr_type = self.get_type(element) if curr_type == ecwrt.Rawtrip: curr_tl = esdtq.get_raw_timeline_for_trip( self.testUUID, element.get_id()) logging.debug("Got timeline %s for trip %s" % (curr_tl, element.start_fmt_time)) prev_sub_type = None prev_element = None checked_count = 0 j = 0 for j, curr_element in enumerate(curr_tl): logging.debug("curr_element = %s" % curr_element) curr_sub_type = self.get_type(curr_element) if prev_sub_type is not None: checked_count = checked_count + 1 self.assertNotEqual(prev_sub_type, curr_sub_type) if prev_sub_type == ecws.Stop: self.assertEqual(prev_element.starting_section, curr_element.get_id()) else: self.assertEqual(prev_sub_type, ecwsc.Section) self.assertEqual(prev_element.end_stop, curr_element.get_id()) prev_sub_type = curr_sub_type prev_element = curr_element self.assertEqual(checked_count, j)
def testTripGeojson(self): eaist.segment_current_trips(self.testUUID) eaiss.segment_current_sections(self.testUUID) eaicl.filter_current_sections(self.testUUID) tl = esdtl.get_raw_timeline(self.testUUID, 1440658800, 1440745200) self.assertEquals(len(tl.trips), 9) eaicr.clean_and_resample(self.testUUID) eacimp.predict_mode(self.testUUID) tl = esdtl.get_cleaned_timeline(self.testUUID, 1440658800, 1440745200) tl.fill_start_end_places() created_trips = tl.trips self.assertEquals(len(created_trips), 9) trip_geojson = gjfc.trip_to_geojson(created_trips[0], tl) logging.debug("first trip_geojson = %s" % bju.dumps(trip_geojson, indent=4)) self.assertEquals(trip_geojson.type, "FeatureCollection") self.assertEquals(trip_geojson.properties["feature_type"], "trip") self.assertEquals(len(trip_geojson.features), 5) day_geojson = gjfc.get_geojson_for_timeline(self.testUUID, tl) self.assertEquals(len(day_geojson), 8) self.assertEquals(day_geojson[-1].type, "FeatureCollection") self.assertEquals(day_geojson[-1].properties["feature_type"], "trip") self.assertEquals(len(day_geojson[-1].features), 5)
def save_cleaned_segments_for_ts(user_id, start_ts, end_ts): """ Take an unfiltered timeline and filter it by: - Removing trip_entries with no section_entries (typically caused by erroneous geofence exits) - Merging places on the two sides of a removed trip - Removing outlier points - Resampling at a fixed frequency, so that the heatmaps are consistent even if the raw data was sampled at different frequencies - Joining section_entries to each other by adding "transition" section_entries """ tl = esdtl.get_raw_timeline(user_id, start_ts, end_ts) tl.fill_start_end_places() return save_cleaned_segments_for_timeline(user_id, tl)
def testPlaceTripTimeline(self): eaist.segment_current_trips(self.testUUID) tl = esdt.get_raw_timeline(self.testUUID, self.day_start_ts, self.day_end_ts) self.checkPlaceTripConsistency(tl)