[43.7085300, 10.4036000], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.5442700, 10.3261500]]) trj2 = pd.DataFrame(lat_lons_2, columns=[latitude, longitude]) trj2[date_time] = pd.to_datetime(['20110203 8:34:04' for _ in range(36)]) trj2[user_id] = [1 for _ in range(11)] + [2 for _ in range(4)] + \ [3 for _ in range(9)] + [4 for _ in range(12)] traj = traj.sort_values([user_id, date_time]) trjdat = TrajDataFrame(traj, user_id=user_id) trjdat_2 = TrajDataFrame(trj2, user_id=user_id) trj_freq = frequency_vector(trjdat_2) trj_prob = probability_vector(trjdat_2) first_instance = trjdat[:2].values second_instance = pd.concat([trjdat[0:1], trjdat[3:4]]).values third_instance = trj_freq[1:3].values fourth_instance = trj_prob[1:3].values @pytest.mark.parametrize('traj,instance,output', [(trjdat, first_instance, 1.0 / 4.0), (trjdat, second_instance, 1.0 / 3.0)]) def test_location_match(traj, instance, output): at = attacks.LocationAttack(knowledge_length=1) results = []
def setup_method(self): latitude = constants.LATITUDE longitude = constants.LONGITUDE date_time = constants.DATETIME user_id = constants.UID lat_lons = np.array( [ [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.5442700, 10.3261500], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.8430139, 10.5079940], [43.5442700, 10.3261500], ] ) traj = pd.DataFrame(lat_lons, columns=[latitude, longitude]) traj[date_time] = pd.to_datetime( [ "20110203 8:34:04", "20110203 9:34:04", "20110203 10:34:04", "20110204 10:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 12:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110205 12:34:04", "20110204 10:34:04", "20110204 11:34:04", ] ) traj[user_id] = ( [1 for _ in range(4)] + [2 for _ in range(4)] + [3 for _ in range(4)] + [4 for _ in range(3)] + [5 for _ in range(3)] + [6 for _ in range(2)] ) self.unique_points = [ (43.544270, 10.326150), (43.708530, 10.403600), (43.779250, 11.246260), (43.843014, 10.507994), ] self.traj = traj.sort_values([user_id, date_time]) self.trjdat = TrajDataFrame(traj, user_id=user_id)
class TestCompression: def setup_method(self): latitude = constants.LATITUDE longitude = constants.LONGITUDE date_time = constants.DATETIME user_id = constants.UID lat_lons = np.array([ [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.5442700, 10.3261500], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.8430139, 10.5079940], [43.5442700, 10.3261500], ]) traj = pd.DataFrame(lat_lons, columns=[latitude, longitude]) traj[date_time] = pd.to_datetime([ "20110203 8:34:04", "20110203 9:34:04", "20110203 10:34:04", "20110204 10:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 12:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110205 12:34:04", "20110204 10:34:04", "20110204 11:34:04", ]) traj[user_id] = ([1 for _ in range(4)] + [2 for _ in range(4)] + [3 for _ in range(4)] + [4 for _ in range(3)] + [5 for _ in range(3)] + [6 for _ in range(2)]) self.unique_points = [ (43.544270, 10.326150), (43.708530, 10.403600), (43.779250, 11.246260), (43.843014, 10.507994), ] self.traj = traj.sort_values([user_id, date_time]) self.trjdat = TrajDataFrame(traj, user_id=user_id) def test_compress(self): output = compression.compress(self.trjdat) expected = self.trjdat.copy() output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected) output = compression.compress(self.trjdat, spatial_radius_km=20) expected = TrajDataFrame( { "lat": { "0": 43.8430139, "1": 43.6264, "2": 43.77925, "3": 43.8430139, "4": 43.54427, "5": 43.6264, "6": 43.8430139, "7": 43.77925, "8": 43.6264, "9": 43.77925, "10": 43.70853, "11": 43.77925, "12": 43.8430139, "13": 43.8430139, "14": 43.54427, }, "lng": { "0": 10.507994, "1": 10.364875, "2": 11.24626, "3": 10.507994, "4": 10.32615, "5": 10.364875, "6": 10.507994, "7": 11.24626, "8": 10.364875, "9": 11.24626, "10": 10.4036, "11": 11.24626, "12": 10.507994, "13": 10.507994, "14": 10.32615, }, "datetime": { "0": 1296722044, "1": 1296725644, "2": 1296815644, "3": 1296722044, "4": 1296819244, "5": 1296722044, "6": 1296815644, "7": 1296819244, "8": 1296815644, "9": 1296822844, "10": 1296815644, "11": 1296819244, "12": 1296909244, "13": 1296815644, "14": 1296819244, }, "uid": { "0": 1, "1": 1, "2": 1, "3": 2, "4": 2, "5": 3, "6": 3, "7": 3, "8": 4, "9": 4, "10": 5, "11": 5, "12": 5, "13": 6, "14": 6, }, }, timestamp=True, ) output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected, check_dtype=False)
class TestDetection: def setup_method(self): latitude = constants.LATITUDE longitude = constants.LONGITUDE date_time = constants.DATETIME user_id = constants.UID lat_lons = np.array([ [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.5442700, 10.3261500], [43.5442700, 10.3261500], [43.7085300, 10.4036000], [43.8430139, 10.5079940], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.5442700, 10.3261500], [43.7792500, 11.2462600], [43.7085300, 10.4036000], [43.7792500, 11.2462600], [43.8430139, 10.5079940], [43.8430139, 10.5079940], [43.5442700, 10.3261500], [45.5442700, 9.3261500], [45.5442700, 9.3261500], [45.5442700, 9.3261500], ]) traj = pd.DataFrame(lat_lons, columns=[latitude, longitude]) traj[date_time] = pd.to_datetime([ "20110203 8:34:04", "20110203 9:34:04", "20110203 10:34:04", "20110204 10:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110203 8:34:04", "20110203 9:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 12:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110205 12:34:04", "20110204 10:34:04", "20110204 11:34:04", "20110204 11:34:04", "20110205 11:34:04", "20110206 11:34:04", ]) traj[user_id] = ([1 for _ in range(4)] + [2 for _ in range(4)] + [3 for _ in range(4)] + [4 for _ in range(3)] + [5 for _ in range(3)] + [6 for _ in range(2)] + [7 for _ in range(3)]) self.unique_points = [ (43.544270, 10.326150), (43.708530, 10.403600), (43.779250, 11.246260), (43.843014, 10.507994), ] self.traj = traj.sort_values([user_id, date_time]) self.trjdat = TrajDataFrame(traj, user_id=user_id) def test_stops(self): output = detection.stops(self.trjdat) expected = self.trjdat.drop([3, 7, 11, 14, 17, 19, 21, 22]) stamps = [ pd.Timestamp("2011-02-03 09:34:04"), pd.Timestamp("2011-02-03 10:34:04"), pd.Timestamp("2011-02-04 10:34:04"), pd.Timestamp("2011-02-03 09:34:04"), pd.Timestamp("2011-02-04 10:34:04"), pd.Timestamp("2011-02-04 11:34:04"), pd.Timestamp("2011-02-03 09:34:04"), pd.Timestamp("2011-02-04 10:34:04"), pd.Timestamp("2011-02-04 11:34:04"), pd.Timestamp("2011-02-04 11:34:04"), pd.Timestamp("2011-02-04 12:34:04"), pd.Timestamp("2011-02-04 11:34:04"), pd.Timestamp("2011-02-05 12:34:04"), pd.Timestamp("2011-02-04 11:34:04"), pd.Timestamp('2011-02-06 11:34:04') ] expected["leaving_datetime"] = stamps output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected, check_dtype=False) output = detection.stops(self.trjdat, minutes_for_a_stop=60.0, leaving_time=False) expected = self.trjdat.drop( [0, 1, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22]) output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected, check_dtype=False)
def test_compress(self): output = compression.compress(self.trjdat) expected = self.trjdat.copy() output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected) output = compression.compress(self.trjdat, spatial_radius_km=20) expected = TrajDataFrame( { "lat": { "0": 43.8430139, "1": 43.6264, "2": 43.77925, "3": 43.8430139, "4": 43.54427, "5": 43.6264, "6": 43.8430139, "7": 43.77925, "8": 43.6264, "9": 43.77925, "10": 43.70853, "11": 43.77925, "12": 43.8430139, "13": 43.8430139, "14": 43.54427, }, "lng": { "0": 10.507994, "1": 10.364875, "2": 11.24626, "3": 10.507994, "4": 10.32615, "5": 10.364875, "6": 10.507994, "7": 11.24626, "8": 10.364875, "9": 11.24626, "10": 10.4036, "11": 11.24626, "12": 10.507994, "13": 10.507994, "14": 10.32615, }, "datetime": { "0": 1296722044, "1": 1296725644, "2": 1296815644, "3": 1296722044, "4": 1296819244, "5": 1296722044, "6": 1296815644, "7": 1296819244, "8": 1296815644, "9": 1296822844, "10": 1296815644, "11": 1296819244, "12": 1296909244, "13": 1296815644, "14": 1296819244, }, "uid": { "0": 1, "1": 1, "2": 1, "3": 2, "4": 2, "5": 3, "6": 3, "7": 3, "8": 4, "9": 4, "10": 5, "11": 5, "12": 5, "13": 6, "14": 6, }, }, timestamp=True, ) output.reset_index(inplace=True) output.drop(columns=["index"], inplace=True) expected.reset_index(inplace=True) expected.drop(columns=["index"], inplace=True) # assert pd.testing.assert_frame_equal(output, expected, check_dtype=False)