diff --git a/apps/coverage_capacity_optimization/cco_engine.py b/apps/coverage_capacity_optimization/cco_engine.py index 84b2fe2..d2b09b3 100755 --- a/apps/coverage_capacity_optimization/cco_engine.py +++ b/apps/coverage_capacity_optimization/cco_engine.py @@ -39,7 +39,6 @@ def rf_to_coverage_dataframe( over_coverage_threshold: float = 0, growth_rate: float = 1, ) -> pd.DataFrame: - if lambda_ <= 0 or lambda_ >= 1: raise ValueError("lambda_ must be between 0 and 1 (noninclusive)") @@ -65,13 +64,20 @@ def rf_to_coverage_dataframe( coverage_dataframe["weak_coverage"] = np.minimum(0, h) coverage_dataframe["overly_covered"] = (h > 0) & (g <= 0) coverage_dataframe["over_coverage"] = np.minimum(0, g) - coverage_dataframe["covered"] = ~coverage_dataframe["weakly_covered"] & ~coverage_dataframe["overly_covered"] + coverage_dataframe["covered"] = ( + ~coverage_dataframe["weakly_covered"] + & ~coverage_dataframe["overly_covered"] + ) # TODO : deprecate the below notion # soft_weak_coverage = sigmoid(h, growth_rate) # soft_over_coverage = sigmoid(g, growth_rate) - coverage_dataframe["soft_weak_coverage"] = 1000 * np.tanh(0.05 * growth_rate * h) - coverage_dataframe["soft_over_coverage"] = 1000 * np.tanh(0.05 * growth_rate * g) + coverage_dataframe["soft_weak_coverage"] = 1000 * np.tanh( + 0.05 * growth_rate * h + ) + coverage_dataframe["soft_over_coverage"] = 1000 * np.tanh( + 0.05 * growth_rate * g + ) coverage_dataframe["network_coverage_utility"] = ( lambda_ * coverage_dataframe["soft_weak_coverage"] + (1 - lambda_) * coverage_dataframe["soft_over_coverage"] @@ -83,8 +89,12 @@ def get_weak_over_coverage_percentages( coverage_dataframe: pd.DataFrame, ) -> Tuple[float, float]: n_points = len(coverage_dataframe.index) - weak_coverage_percent = 100 * coverage_dataframe["weakly_covered"].sum() / n_points - over_coverage_percent = 100 * coverage_dataframe["overly_covered"].sum() / n_points + weak_coverage_percent = ( + 100 * coverage_dataframe["weakly_covered"].sum() / n_points + ) + over_coverage_percent = ( + 100 * coverage_dataframe["overly_covered"].sum() / n_points + ) return weak_coverage_percent, over_coverage_percent @staticmethod @@ -122,18 +132,26 @@ def get_cco_objective_value( coverage_dataframe, ) ) - augmented_coverage_df_with_normalized_traffic_model["network_coverage_utility"] = ( - augmented_coverage_df_with_normalized_traffic_model["normalized_traffic_statistic"] + augmented_coverage_df_with_normalized_traffic_model[ + "network_coverage_utility" + ] = ( + augmented_coverage_df_with_normalized_traffic_model[ + "normalized_traffic_statistic" + ] * coverage_dataframe["network_coverage_utility"] ) - coverage_dataframe["network_coverage_utility"] = augmented_coverage_df_with_normalized_traffic_model[ + coverage_dataframe[ + "network_coverage_utility" + ] = augmented_coverage_df_with_normalized_traffic_model[ "network_coverage_utility" ] if active_ids_list is None: return -math.inf - active_df = coverage_dataframe[coverage_dataframe[id_field].isin(active_ids_list)] + active_df = coverage_dataframe[ + coverage_dataframe[id_field].isin(active_ids_list) + ] active_sector_metric = active_df.groupby(id_field)["network_coverage_utility"] if cco_metric == CcoMetric.PIXEL: @@ -161,7 +179,9 @@ def add_tile_x_and_tile_y( Dataframe with tile_x and tile_y columns appended """ - tile_coords = list(zip(coverage_dataframe[loc_x_field], coverage_dataframe[loc_y_field])) + tile_coords = list( + zip(coverage_dataframe[loc_x_field], coverage_dataframe[loc_y_field]) + ) coverage_dataframe["tile_x"], coverage_dataframe["tile_y"] = zip( *map( @@ -200,11 +220,16 @@ def augment_coverage_df_with_normalized_traffic_model( "over_coverage", """ - sum_of_desired_traffic_statistic_across_all_tiles = traffic_model_df[desired_traffic_statistic_col].sum() + sum_of_desired_traffic_statistic_across_all_tiles = traffic_model_df[ + desired_traffic_statistic_col + ].sum() traffic_model_df["normalized_traffic_statistic"] = ( - traffic_model_df[desired_traffic_statistic_col] / sum_of_desired_traffic_statistic_across_all_tiles + traffic_model_df[desired_traffic_statistic_col] + / sum_of_desired_traffic_statistic_across_all_tiles + ) + coverage_dataframe_with_bing_tiles = CcoEngine.add_tile_x_and_tile_y( + coverage_df ) - coverage_dataframe_with_bing_tiles = CcoEngine.add_tile_x_and_tile_y(coverage_df) augmented_coverage_df_with_normalized_traffic_model = pd.merge( traffic_model_df, coverage_dataframe_with_bing_tiles, @@ -235,6 +260,8 @@ def traffic_normalized_cco_metric(coverage_dataframe: pd.DataFrame) -> float: # only one of weak_coverage and over_coverage can be simultaneously 1 # so, the logic below does not double count return ( - coverage_dataframe["normalized_traffic_statistic"] * coverage_dataframe["weak_coverage"] - + coverage_dataframe["normalized_traffic_statistic"] * coverage_dataframe["over_coverage"] + coverage_dataframe["normalized_traffic_statistic"] + * coverage_dataframe["weak_coverage"] + + coverage_dataframe["normalized_traffic_statistic"] + * coverage_dataframe["over_coverage"] ).sum() diff --git a/apps/coverage_capacity_optimization/cco_example_app.py b/apps/coverage_capacity_optimization/cco_example_app.py index 137e7cc..c2f5f77 100644 --- a/apps/coverage_capacity_optimization/cco_example_app.py +++ b/apps/coverage_capacity_optimization/cco_example_app.py @@ -52,7 +52,9 @@ ) # resolve the model status -- this blocking call ensures training is done and model is available for use -model_status: ModelStatus = radp_helper.resolve_model_status(MODEL_ID, wait_interval=3, max_attempts=10, verbose=True) +model_status: ModelStatus = radp_helper.resolve_model_status( + MODEL_ID, wait_interval=3, max_attempts=10, verbose=True +) # handle an exception if one occurred if not model_status.success: diff --git a/apps/coverage_capacity_optimization/dgpco_cco.py b/apps/coverage_capacity_optimization/dgpco_cco.py index d655b8b..8568f69 100644 --- a/apps/coverage_capacity_optimization/dgpco_cco.py +++ b/apps/coverage_capacity_optimization/dgpco_cco.py @@ -137,7 +137,11 @@ def _single_step( """Single step of DGPCO.""" # calculate new metric - (current_rf_dataframe, current_coverage_dataframe, current_cco_objective,) = self._calc_metric( + ( + current_rf_dataframe, + current_coverage_dataframe, + current_cco_objective, + ) = self._calc_metric( lambda_=lambda_, weak_coverage_threshold=weak_coverage_threshold, over_coverage_threshold=over_coverage_threshold, @@ -151,8 +155,12 @@ def _single_step( # pull the cell config index cell_config_index = self.config.index[self.config["cell_id"] == cell_id][0] - orig_el_idx = self.valid_configuration_values[constants.CELL_EL_DEG].index(orig_el_deg) - cur_el_idx = self.valid_configuration_values[constants.CELL_EL_DEG].index(cur_el_deg) + orig_el_idx = self.valid_configuration_values[constants.CELL_EL_DEG].index( + orig_el_deg + ) + cur_el_idx = self.valid_configuration_values[constants.CELL_EL_DEG].index( + cur_el_deg + ) for d in opt_delta: new_el_idx = orig_el_idx + d @@ -161,11 +169,15 @@ def _single_step( # we do not want to check current value continue - if new_el_idx < 0 or new_el_idx >= len(self.valid_configuration_values[constants.CELL_EL_DEG]): + if new_el_idx < 0 or new_el_idx >= len( + self.valid_configuration_values[constants.CELL_EL_DEG] + ): # we do not want to wrap around, since that would not be a neighboring tilt continue - new_el = self.valid_configuration_values[constants.CELL_EL_DEG][new_el_idx] + new_el = self.valid_configuration_values[constants.CELL_EL_DEG][ + new_el_idx + ] # update the cell config el_degree self.config.loc[cell_config_index, constants.CELL_EL_DEG] = new_el @@ -258,7 +270,12 @@ def _single_step( logging.info(f"\nIn epoch: {epoch:02}/{num_epochs}...") # Perform one step of DGPCO - (new_opt_el, new_rf_dataframe, new_coverage_dataframe, new_cco_objective_value,) = _single_step( + ( + new_opt_el, + new_rf_dataframe, + new_coverage_dataframe, + new_cco_objective_value, + ) = _single_step( cell_id=cell_id, orig_el_deg=orig_el_deg, cur_el_deg=cur_el_deg, diff --git a/apps/coverage_capacity_optimization/tests/test_cco_engine.py b/apps/coverage_capacity_optimization/tests/test_cco_engine.py index dc9f536..191d86d 100644 --- a/apps/coverage_capacity_optimization/tests/test_cco_engine.py +++ b/apps/coverage_capacity_optimization/tests/test_cco_engine.py @@ -14,7 +14,9 @@ class TestCCO(unittest.TestCase): @classmethod def setUpClass(cls): - cls.dummy_df = pd.DataFrame(data={CELL_ID: [1, 2, 73], LOC_X: [3, 4, 89], LOC_Y: [7, 8, 10]}) + cls.dummy_df = pd.DataFrame( + data={CELL_ID: [1, 2, 73], LOC_X: [3, 4, 89], LOC_Y: [7, 8, 10]} + ) def test_invalid_lambda(self): self.dummy_df["rsrp_dbm"] = [98, 92, 86] @@ -37,7 +39,8 @@ def testing_weakly_covered(self): self.dummy_df, weak_coverage_threshold=-100, over_coverage_threshold=0 ) self.assertEqual( - returned_df["weakly_covered"][returned_df["weakly_covered"] == 1].count() == 1, + returned_df["weakly_covered"][returned_df["weakly_covered"] == 1].count() + == 1, True, ) @@ -58,7 +61,8 @@ def test_overly_covered(self): self.dummy_df, weak_coverage_threshold=-100, over_coverage_threshold=0 ) self.assertEqual( - returned_df["overly_covered"][returned_df["overly_covered"] == 0].count() == 1, + returned_df["overly_covered"][returned_df["overly_covered"] == 0].count() + == 1, True, ) @@ -81,11 +85,13 @@ def testing_some_not_weakly_or_overcovered(self): True, ) self.assertEqual( - returned_df["weakly_covered"][returned_df["weakly_covered"] == 1].count() == 1, + returned_df["weakly_covered"][returned_df["weakly_covered"] == 1].count() + == 1, True, ) self.assertEqual( - returned_df["overly_covered"][returned_df["overly_covered"] == 1].count() == 1, + returned_df["overly_covered"][returned_df["overly_covered"] == 1].count() + == 1, True, ) @@ -168,11 +174,14 @@ def test_get_cco_objective_value(self): ) # asserting the multiplied version of network_coverage_utility self.assertTrue( - coverage_df["network_coverage_utility"][0] == 0.24 and coverage_df["network_coverage_utility"][1] == 0.24 + coverage_df["network_coverage_utility"][0] == 0.24 + and coverage_df["network_coverage_utility"][1] == 0.24 ) # asserting the average of network_coverage_utility - self.assertTrue(0.24 == coverage_df["network_coverage_utility"].sum() / len(coverage_df)) + self.assertTrue( + 0.24 == coverage_df["network_coverage_utility"].sum() / len(coverage_df) + ) # asserting the returned cco_objective_value expected_value = 0.24 diff --git a/apps/energy_savings/energy_savings_gym.py b/apps/energy_savings/energy_savings_gym.py index 82b1f6c..c18c244 100644 --- a/apps/energy_savings/energy_savings_gym.py +++ b/apps/energy_savings/energy_savings_gym.py @@ -98,7 +98,9 @@ def __init__( self.prediction_dfs = dict() for cell_id in site_config_df.cell_id: prediction_dfs = BayesianDigitalTwin.create_prediction_frames( - site_config_df=self.site_config_df[self.site_config_df.cell_id.isin([cell_id])].reset_index(), + site_config_df=self.site_config_df[ + self.site_config_df.cell_id.isin([cell_id]) + ].reset_index(), prediction_frame_template=prediction_frame_template[cell_id], ) self.prediction_dfs.update(prediction_dfs) @@ -140,11 +142,13 @@ def __init__( # Reward when all cells are off: self.r_norm = (1 - lambda_) * ( - -10 * np.log10(self.num_cells) - over_coverage_threshold + min_rsrp - weak_coverage_threshold + -10 * np.log10(self.num_cells) + - over_coverage_threshold + + min_rsrp + - weak_coverage_threshold ) def _next_observation(self): - if self.ue_tracks: data = next(self.ue_tracks) for batch in data: @@ -198,17 +202,22 @@ def _next_observation(self): ) if self.traffic_model_df is None: cco_objective_metric = ( - coverage_dataframe["weak_coverage"].mean() + coverage_dataframe["over_coverage"].mean() + coverage_dataframe["weak_coverage"].mean() + + coverage_dataframe["over_coverage"].mean() ) else: - processed_coverage_dataframe = CcoEngine.augment_coverage_df_with_normalized_traffic_model( - self.traffic_model_df, - "avg_of_average_egress_kbps_across_all_time", - coverage_dataframe, + processed_coverage_dataframe = ( + CcoEngine.augment_coverage_df_with_normalized_traffic_model( + self.traffic_model_df, + "avg_of_average_egress_kbps_across_all_time", + coverage_dataframe, + ) ) - cco_objective_metric = CcoEngine.traffic_normalized_cco_metric(processed_coverage_dataframe) + cco_objective_metric = CcoEngine.traffic_normalized_cco_metric( + processed_coverage_dataframe + ) # Output for debugging/postprocessing purposes if self.debug: @@ -216,7 +225,9 @@ def _next_observation(self): self.coverage_dataframe = coverage_dataframe return ( - EnergySavingsGym.ENERGY_MAX_PER_CELL * sum(self.on_off_state) / len(self.on_off_state), + EnergySavingsGym.ENERGY_MAX_PER_CELL + * sum(self.on_off_state) + / len(self.on_off_state), 0.0, cco_objective_metric, # TODO : normalized this against MAX_CLUSTER_CCO ) @@ -230,7 +241,11 @@ def reward( if energy_consumption == 0: return self.r_norm else: - return self.lambda_ * -1.0 * energy_consumption + (1 - self.lambda_) * cco_objective_metric - self.r_norm + return ( + self.lambda_ * -1.0 * energy_consumption + + (1 - self.lambda_) * cco_objective_metric + - self.r_norm + ) def make_action_from_state(self): action = np.empty(self.num_cells, dtype=int) @@ -242,7 +257,6 @@ def make_action_from_state(self): return action def _take_action(self, action): - num_cells = len(self.site_config_df) # on_off_cell_state captures the on/off state of each cell (on is `1`) on_off_cell_state = [1] * num_cells @@ -277,7 +291,6 @@ def reset(self): return self._next_observation() def step(self, action): - # Execute one time step within the environment self._take_action(action) @@ -293,7 +306,9 @@ def step(self, action): return obs, reward, done, {} - def get_all_possible_actions(self, possible_actions: List[List[int]]) -> List[List[int]]: + def get_all_possible_actions( + self, possible_actions: List[List[int]] + ) -> List[List[int]]: """ A recursive function to get all possible actions as a list. Useful for bruteforce search. diff --git a/apps/example/example_app.py b/apps/example/example_app.py index 3ef0d4b..e116e05 100644 --- a/apps/example/example_app.py +++ b/apps/example/example_app.py @@ -136,9 +136,7 @@ train_response = radp_client.train( model_id=MODEL_ID, params=TRAINING_PARAMS, - ue_training_data=pd.concat( - [pd.read_csv(file) for file in TRAINING_DATA_FILES] - ), + ue_training_data=pd.concat([pd.read_csv(file) for file in TRAINING_DATA_FILES]), topology=pd.read_csv(TOPOLOGY_FILE), ) @@ -164,9 +162,7 @@ # run simulation on cumulative data passed to model simulation_response = radp_client.simulation( simulation_event=simulation_event, - ue_data=pd.concat( - [pd.read_csv(file) for file in PREDICTION_DATA_FILES] - ), + ue_data=pd.concat([pd.read_csv(file) for file in PREDICTION_DATA_FILES]), config=pd.read_csv(PREDICTION_CONFIG), ) simulation_id = simulation_response["simulation_id"] diff --git a/notebooks/coo_with_radp_digital_twin.ipynb b/notebooks/coo_with_radp_digital_twin.ipynb index ecff4e1..45ac095 100644 --- a/notebooks/coo_with_radp_digital_twin.ipynb +++ b/notebooks/coo_with_radp_digital_twin.ipynb @@ -522,7 +522,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.11.5" }, "varInspector": { "cols": { diff --git a/notebooks/mobility_model.ipynb b/notebooks/mobility_model.ipynb new file mode 100644 index 0000000..695bf8f --- /dev/null +++ b/notebooks/mobility_model.ipynb @@ -0,0 +1,833 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ec7ab4ae", + "metadata": {}, + "source": [ + "# Alpha Optimization in a Gauss-Markov Mobility Model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "754a70e3", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "from pathlib import Path\n", + "sys.path.append(f\"{Path().absolute().parent}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b3d3ca1a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import scipy\n", + "import numpy as np\n", + "from radp_library import *\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import cm" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "309ead1f", + "metadata": {}, + "outputs": [], + "source": [ + "params = {\n", + " \"ue_tracks_generation\": {\n", + " \"params\": {\n", + " \"simulation_duration\": 3600,\n", + " \"simulation_time_interval_seconds\": 0.01,\n", + " \"num_ticks\": 50,\n", + " \"num_batches\": 1,\n", + " \"ue_class_distribution\": {\n", + " \"stationary\": {\n", + " \"count\": 10,\n", + " \"velocity\": 0,\n", + " \"velocity_variance\": 1\n", + " },\n", + " \"pedestrian\": {\n", + " \"count\": 5,\n", + " \"velocity\": 2,\n", + " \"velocity_variance\": 1\n", + " },\n", + " \"cyclist\": {\n", + " \"count\": 5,\n", + " \"velocity\": 5,\n", + " \"velocity_variance\": 1\n", + " },\n", + " \"car\": {\n", + " \"count\": 12,\n", + " \"velocity\": 20,\n", + " \"velocity_variance\": 1\n", + " }\n", + " },\n", + " \"lat_lon_boundaries\": {\n", + " \"min_lat\": -90,\n", + " \"max_lat\": 90,\n", + " \"min_lon\": -180,\n", + " \"max_lon\": 180\n", + " },\n", + " \"gauss_markov_params\": {\n", + " \"alpha\": 0.5,\n", + " \"variance\": 0.8,\n", + " \"rng_seed\": 42,\n", + " \"lon_x_dims\": 100,\n", + " \"lon_y_dims\": 100,\n", + " \"// TODO\": \"Account for supporting the user choosing the anchor_loc and cov_around_anchor.\",\n", + " \"// Current implementation\": \"the UE Tracks generator will not be using these values.\",\n", + " \"// anchor_loc\": {},\n", + " \"// cov_around_anchor\": {}\n", + " }\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "3e4713fc", + "metadata": {}, + "source": [ + "## Alpha Initialization" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ee3e00c1", + "metadata": {}, + "outputs": [], + "source": [ + "alpha0 = params['ue_tracks_generation']['params']['gauss_markov_params']['alpha']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "119f1534", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Alpha0: 0.5\n" + ] + } + ], + "source": [ + "print(\"Alpha0:\",alpha0)" + ] + }, + { + "cell_type": "markdown", + "id": "d5d3f4fb", + "metadata": {}, + "source": [ + "## Generate Data Set 1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bf32a451", + "metadata": {}, + "outputs": [], + "source": [ + "data1 = get_ue_data(params)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0217fb7d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mock_ue_idlonlattick
0048.510339-16.4626450
1119.28661363.6171110
2221.315702-47.8899520
33-70.559364-79.5117090
44-168.916011-39.3386400
55-22.782612-37.1538820
66-102.76898029.1435740
77166.30799439.0804750
88147.065811-9.0832560
9971.810258-41.0194250
\n", + "
" + ], + "text/plain": [ + " mock_ue_id lon lat tick\n", + "0 0 48.510339 -16.462645 0\n", + "1 1 19.286613 63.617111 0\n", + "2 2 21.315702 -47.889952 0\n", + "3 3 -70.559364 -79.511709 0\n", + "4 4 -168.916011 -39.338640 0\n", + "5 5 -22.782612 -37.153882 0\n", + "6 6 -102.768980 29.143574 0\n", + "7 7 166.307994 39.080475 0\n", + "8 8 147.065811 -9.083256 0\n", + "9 9 71.810258 -41.019425 0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data1.head(10)" + ] + }, + { + "cell_type": "markdown", + "id": "0f112187", + "metadata": {}, + "source": [ + "## Plot Dataset 1 " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "57d3c99b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+kAAALRCAYAAAAnY+ILAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXxU1fn48c+dfZJJJvtGQhYCmBAIIAKCiiIQl0ZFoHVplVIoXewiirQgiNa6oJbWr221rT/BpVVbERFbVo2CgOwissiSsGQnyWSf/f7+GBgZshBgQlie9+s1L7jnnnvvuZOBzHPPOc9RVFVVEUIIIYQQQgghRJfTdHUDhBBCCCGEEEII4SNBuhBCCCGEEEIIcYGQIF0IIYQQQgghhLhASJAuhBBCCCGEEEJcICRIF0IIIYQQQgghLhASpAshhBBCCCGEEBcICdKFEEIIIYQQQogLhATpQgghhBBCCCHEBUKCdCGEEEIIIYQQ4gIhQboQ4pIxd+5cFEXh2LFjre7Pycnh+uuv928XFRWhKEqbr7lz57Z5rfaOO/lVUFAQ3Jtsxenuu6uc+h7u2rWLuXPnUlRU1KLu9ddfT05OzllfKy0tzf+eazQarFYrWVlZ3HfffaxYsaJD7Ttf1q1bx9y5c7HZbC32XX/99QGf0fNp27ZtjBgxAqvViqIo/PGPf+zU6536byU0NJSsrCwef/xxGhsbz+qc7b23HXGun8OlS5dy33330bdvX/R6PYqinPW5hBBCXL50Xd0AIYToar/4xS+45557WpQnJye3ecz69esDtn/3u9/xySef8PHHHweUZ2dnB6eRF6H169cHvIe7du3i8ccf5/rrryctLS3o1xs+fDjPP/88AA0NDezdu5e3336bvLw8xo0bx7/+9S/0en2b7Ttf1q1bx+OPP87EiROJiIgI2PeXv/zlvLfnhEmTJtHY2Mjbb79NZGRkp/yMTjV+/HgeeughwPcz+/TTT3niiSfYsWMH77333hmfr7339nx4//332bBhAwMGDMBoNLJly5bz3gYhhBAXPwnShRCXve7duzN06NAzOubU+rGxsWg0mtOep6mpiZCQkDNu48XoTN/TcxURERFwzVGjRvHzn/+cuXPn8vjjj/Poo4/y7LPPnlH7mpubMZlM561HtCsf6uzcuZMpU6Zw8803B+V8LpcLRVHQ6dr+qhEfH9/iZ3bo0CHeeust7HY7JpMpKG05X/7+97+j0fgGKT7wwAMSpAshhDgrMtxdCCE6yYmhs5999hnDhg0jJCSESZMmAfDOO+8wZswYEhMTMZvNZGVl8Zvf/KbVYb5ffPEF+fn5REdHYzKZ6NGjB7/+9a/bvfaePXvIyMhgyJAhVFRUAL7hzN/5zneIi4vDaDSSlJTErbfeytGjR9s8z5///Gc0Go3/HAAvvPACiqLw85//3F/m9XqJjIz094pC4HDyBQsWMGHCBABuuOEG/xDnBQsWBFxv06ZNXHvttYSEhJCRkcEzzzyD1+tt915PZ+7cufTp04eXXnoJu93eavtOtFFRFFasWMGkSZOIjY0lJCQEh8MB+H5mV199NaGhoVgsFvLy8ti2bVuL67X385o7dy7Tp08HID09vcW0iNaGu1dXV/Ozn/2Mbt26YTAYyMjIYNasWf52nXw/DzzwAG+88QZZWVmEhISQm5vL0qVL231/Tty32+3mr3/9q79NJ+zcuZPbb7+dyMhITCYT/fv3Z+HChQHnKCgoQFEU3njjDR566CG6deuG0Whk//797V67NSeG22u1Wn/ZypUruf3220lOTsZkMpGZmcnUqVMDpnic7r0F+Oc//8nVV1+NxWLBYrHQv39/Xn311RZtONvP4YkAXQghhDgX8ttECHHZ83q9uN3uFq9gKC0t5fvf/z733HMP//3vf/nZz34GwL59+7jlllt49dVXWbZsGb/+9a959913yc/PDzh++fLlXHvttRw+fJg//OEP/O9//+PRRx+lvLy8zWt++umnDBs2jH79+vHJJ58QFxdHY2Mjo0ePpry8nD//+c+sXLmSP/7xj3Tv3p36+vo2zzVq1ChUVWX16tX+slWrVmE2m1m5cqW/bPPmzdhsNkaNGtXqeW699VaeeuopwBf4r1+/nvXr13Prrbf665SVlXHvvffy/e9/nyVLlnDzzTfz29/+ljfffLOdd7hj8vPzaWpqYvPmzaetO2nSJPR6PW+88Qb/+c9/0Ov1PPXUU9x9991kZ2fz7rvv8sYbb1BfX8+1117Lrl27/Mee7uc1efJkfvGLXwCwaNEi//swcODAVttit9u54YYbeP3115k2bRofffQR3//+95k3bx533nlni/offfQRL730Ek888QTvvfceUVFRjB07loMHD7Z5v7feeqt/+sb48eP9bQLYu3cvw4YN4+uvv+bFF19k0aJFZGdnM3HiRObNm9fiXL/97W85fPgwL7/8Mh9++CFxcXHtvteqqvr/vdlsNj744AMWLlzIXXfdFTA14cCBA1x99dX89a9/ZcWKFcyZM4cvvviCa665BpfL1aH3ds6cOdx7770kJSWxYMEC3n//fe6//34OHToU0KbO/BwKIYQQHaIKIcQl4rHHHlMBtbKystX9ffr0UUeMGOHfLiwsVIE2X2vWrOnwte+//341NDQ0oGzEiBEqoK5evbrdY71er+pyudRPP/1UBdQvv/zSv69Hjx5qjx491Obm5jaPP/m+33jjDdVgMKi//OUvVY/H46+zefNmFVAXL17c4Xs6ITk5WZ00aZKqqqrqcDjU0NBQdcaMGSqgHjp0SFVVVf3973+v6vV6taGhwX8coD722GP+7X//+98qoH7yySctrnHivfriiy8CyrOzs9W8vLzTtjE1NVW99dZb29z/17/+VQXUd955p832vfbaayqg3nfffQHHHj58WNXpdOovfvGLgPL6+no1ISFB/e53v+sv68jP67nnnlMBtbCwsMW+ESNGBHxGX375ZRVQ33333YB6zz77rAqoK1asCLif+Ph4ta6uzl9WVlamajQa9emnn26zPScf//Of/zyg7K677lKNRqN6+PDhgPKbb75ZDQkJUW02m6qqqvrJJ5+ogHrddded9jonX6+118033xzwOTrViX8vhw4dUgH1gw8+8O9r6709ePCgqtVq1XvvvbfdNp3r5/BkP//5z1X5miWEEOJsSE+6EOKy96tf/YpNmza1ePXv3/+czx0ZGcnIkSNblB88eJB77rmHhIQEtFoter2eESNGALB7924AvvnmGw4cOMCPfvSjDs3N/f3vf8/EiRN55pln+NOf/hQw9DYzM5PIyEhmzJjByy+/HND7ezo33ngjq1atAnyJuZqampg2bRoxMTH+3vRVq1b5h4KfrYSEBAYPHhxQ1q9fvxY9nWdDVdUO1x03blzA9vLly3G73dx3330BIy1MJhMjRozwD6c+059XR3z88ceEhoYyfvz4gPKJEycCBIxwAN9UgrCwMP92fHw8cXFxZ/0efvzxx9x4442kpKS0uH5TU1OLBIqnvnen893vftf/7+2zzz7jxRdfZPPmzdx0000Bw/krKir4yU9+QkpKCjqdDr1eT2pqKvDt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REVFSY7S0lKX7XZ1daG2thZdXV1IS0uT1GlqagJw7xGAxsZGLFy4EFqtFsuXL0dAQACampoQGRn50HmOR3C4+j4MERERERERucXg4CA6OjoQFxf3wPefTNTo6Cj+8pe/oL+/H0qlElOnTnX7Cjo9GRP9PeB2dyIiIiIioqeEl5cX4uLiPu1h0BPEWy5EREREREREHoJJOhEREREREZGHYJJORERERERE5CGYpBMRERERERF5CCbpRERERERERB6CSToRERERERGRh2CSTkREREREROQhmKQTEREREREReQgm6UREREREREQegkk6ERERERHRU8LhcKCvrw9//etf0dfXB4fD8UT76+3thV6vR2xsLORyOdRqNXQ6HU6fPi3GCIKAmpoat/RnNpshCAJaW1vHjTOZTBAEAVar1elaWloatmzZIp5rNBoIguB07Ny502XbdrsdZWVlSElJQUBAAKKjo7F69Wp0d3e7jHc4HPjCF77gtp+DbNItEBERERER0RN38+ZNmM1mDA8Pi2W+vr7QaDQIDQ19In0WFBTAbrejqqoK8fHxuHbtGhoaGnDz5k239/XJebnb1q1bUVxcLCkLDAx0GTswMICWlhYYDAakpqbi1q1bWLt2LRYtWoTm5man+O9///sQBMFtY2WSTkRERERE5OFu3ryJy5cvO5UPDw/j8uXLmDZtmtsTdavVilOnTsFkMiE7OxsAMHXqVGRkZIgxGo0GAJCfny9eN5vNaG9vx7p163DmzBnYbDYkJiZix44dmD9/vqRuUVERrly5gqNHj2LJkiU4cuQIAGDWrFkAgOzsbJhMpknPJTAwEGq1ekKxwcHBqKurk5Tt27cPGRkZ6OzsRGxsrFj+wQcf4Hvf+x7OnTuHqKioSY8T4HZ3IiIiIiIij+ZwOGA2m8eNMZvNbt/6rlQqoVQqUVNTg6GhIZcx586dAwAcPnwYFotFPO/v78fChQtRX1+PCxcuQKfTIS8vD52dnZL6u3fvRnJyMs6fPw+DwYCzZ88CAOrr62GxWFBdXe3WOT2uvr4+CIIAlUollg0MDOAf/uEfsH///gnfAJgIJulEREREREQe7OOPP37oVvDh4WF8/PHHbu1XJpOhsrISVVVVUKlUyMrKQnl5OS5evCjGREREAABUKhXUarV4npqaCr1ej5SUFCQkJGDbtm2Ij49HbW2tpI95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+K5b4x6VQqFATk4OcnJyUFFRgaKiImzevBmFhYUPrFNSUoJ33nkHr7/+OrRaLfz8/LB06VKnl8MFBAQ81pjGVrT7+vrELehjrFYrgoODJWXh4eHQarWP1Ifdbsfy5cvR0dGBkydPin2Oyc3NRXt7O/76179CJpOJuwni4uIefUKfwJV0IiIiIiIiDxbpO7G11YnGTVZSUhJsNpt47uPjg5GREUlMY2MjCgsLkZ+fj5SUFKjVapjN5oe27evrCwBO7d0vISEBXl5e4jPwYywWC65evYrp06dPcDaujSXobW1tqK+vR1hY2ANjw8PDoVKpcPLkSfT29kreAv84uJJORERERETkwV5UKREl90HPkN3lc+kC7r3l/UWV0q393rhxA8uWLcOaNWswc+ZMBAYGorm5Gbt27cLixYvFOI1Gg4aGBmRlZUEulyMkJARarRbV1dXIy8uDIAgwGAwT+jRZZGQk/Pz8cPz4cUyZMgUKhcJpVRy497Z2vV6P9evXQyaTITU1Fd3d3di0aRMSExORm5srib99+zZ6enokZf7+/k6r4wBw9+5dLF26FC0tLTh27BhGRkbEuqGhoeKNhMOHDyMxMRERERE4ffo0vvWtb+HVV1+d9A0CrqQTERERERF5MG9BwLaEZwHcS8g/aez8uwnPwlu4/+rkKJVKZGZmwmg0Yu7cuUhOTobBYEBxcTH2798vxu3Zswd1dXWIiYkRP51mNBoREhKCOXPmIC8vDzqdDunp6Q/tUyaTYe/evTh48CCio6MlNwPuZzQaUVRUhPLycsyYMQOrVq1CXFwcTpw4AZlMuh5dUVGBqKgoyVFaWuqy3a6uLtTW1qKrqwtpaWmSOk1NTWLcn/70JyxZsgSJiYnYunUrNm3ahNdff/2hc3wYweFw8ysAiYiIiIiISDQ4OIiOjg7ExcVBoVA8djuuvpMeLffBd5/Qd9LJvSb6e8Dt7kRERERERE+BL0aosCA8GGes/egdvotIXxleVCndvoJOny4m6URERERERE8Jb0FAVkjgpz0MeoL4TDoRERERERGRh2CSTkREREREROQhmKQTEREREREReQgm6UREREREREQegkk6ERERERERkYdgkk5ERERERETkIZikExEREREREXkIJulEREREREREHoJJOhEREREREbnU29sLvV6P2NhYyOVyqNVq6HQ6nD59WowR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BECr1eLFF1/EoUOHIJPJcOjQocca76Ngkk5EREREROTB/Ly93Ro3WUlJSbDZbOK5j48PRu67QdDY2IjCwkLk5+cjJSUFarUaZrP5oW37+voCgFN790tISICXl5f4DPwYi8WCq1evYvr06ROczcQ5HI4HPpvvTny7OxERERERkQd7xs8X/jKvcbe8B8i88Iyfr1v7vXHjBpYtW4Y1a9Zg5syZCAwMRHNzM3bt2oXFixeLcRqNBg0NDcjKyoJcLkdISAi0Wi2qq6uRl5cHQRBgMBgwOjr+ln0AiIyMhJ+fH44fP44pU6ZAoVA4rYoD997WrtfrsX79eshkMqSmpqK7uxubNm1CYmIicnNzJfG3b99GT0+PpMzf319ckf8km82G7du3Y9GiRYiKisKNGzdw4MABdHV1YdmyZWJcT08Penp6cOXKFQDAhx9+iMDAQMTGxk7qWXqupBMREREREXkwL0FAZoRzovpJGRHBbv9eulKpRGZmJoxGI+bOnYvk5GQYDAYUFxdj//79YtyePXtQV1eHmJgY8dNpRqMRISEhmDNnDvLy8qDT6ZCenv7QPmUyGfbu3YuDBw8iOjpacjPgfkajEUVFRSgvL8eMGTOwatUqxMXF4cSJE5DJpOvRFRUViIqKkhylpaUu2/X29salS5dQUFCAadOm4ZVXXsH169fR2NiIGTNmiHE//OEPMWvWLPH763PnzsWsWbOcXo73qASHw82vACQiIiIiIiLR4OAgOjo6EBcXB4VC8djtuPpOeoDMCxlP6Dvp5F4T/T3gdnciIiIiIqKngEbph9gABa7dGcadkRH4eXvjGT9ft6+g06eLSToREREREdFTwksQEOUv/7SHQU8Qn0knIiIiIiIi8hBM0omIiIiIiIg8BJN0IiIiIiKivwG+s/vv20T//ZmkExERERERPUE+Pj4AgIGBgU95JPRpGvv3H/t9eBC+OI6IiIiIiOgJ8vb2hkqlQm9vLwDA398fAt/I/nfD4XBgYGAAvb29UKlU8Pb2Hjee30knIiIiIiJ6whwOB3p6emC1Wj/todCnRKVSQa1WP/QGDZN0IiIiIiKiv5GRkRHY7fZPexj0N+bj4/PQFfQxTNKJiIiIiIiIPARfHEdERERERETkIZikExEREREREXkIJulEREREREREHoJJOhEREREREZGHYJJORERERERE5CGYpBMRERERERF5CCbpRERERERERB7i/wMY8svvXAiAKAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_ue_tracks(data1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "507f5c0b", + "metadata": {}, + "outputs": [], + "source": [ + "velocity = preprocess_ue_data(data1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "60b0bc3b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mock_ue_idlonlattickvelocity
mock_ue_id
00048.510339-16.46264500.000000
32049.168914-16.110212111.296860
64049.052688-16.11007929.427962
96049.462674-15.586685311.197592
128047.627544-16.843888412.392391
.....................
31147131146.44770573.5009104510.513812
150331146.33265573.7503254610.239940
153531145.91383475.0888714711.915257
156731144.38358875.5880694811.160976
159931146.47858974.1876214912.027603
\n", + "

1600 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " mock_ue_id lon lat tick velocity\n", + "mock_ue_id \n", + "0 0 0 48.510339 -16.462645 0 0.000000\n", + " 32 0 49.168914 -16.110212 1 11.296860\n", + " 64 0 49.052688 -16.110079 2 9.427962\n", + " 96 0 49.462674 -15.586685 3 11.197592\n", + " 128 0 47.627544 -16.843888 4 12.392391\n", + "... ... ... ... ... ...\n", + "31 1471 31 146.447705 73.500910 45 10.513812\n", + " 1503 31 146.332655 73.750325 46 10.239940\n", + " 1535 31 145.913834 75.088871 47 11.915257\n", + " 1567 31 144.383588 75.588069 48 11.160976\n", + " 1599 31 146.478589 74.187621 49 12.027603\n", + "\n", + "[1600 rows x 5 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "velocity" + ] + }, + { + "cell_type": "markdown", + "id": "97a8c1ec", + "metadata": {}, + "source": [ + "## Regress to Find Alpha 1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "12fdaf4b", + "metadata": {}, + "outputs": [], + "source": [ + "alpha1 = get_predicted_alpha(data1,alpha0)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "39eed46d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5000000460688152" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "alpha1" + ] + }, + { + "cell_type": "markdown", + "id": "1dc52c9d", + "metadata": {}, + "source": [ + "## Generating new data using alpha 1\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3c700855", + "metadata": {}, + "outputs": [], + "source": [ + "params['ue_tracks_generation']['params']['gauss_markov_params']['alpha'] = alpha1\n", + "data2 = get_ue_data(params)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a2bf4a7b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5000000460688152\n" + ] + } + ], + "source": [ + "print(params['ue_tracks_generation']['params']['gauss_markov_params']['alpha'])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "18a2b294", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mock_ue_idlonlattick
0048.510339-16.4626450
1119.28661363.6171110
2221.315702-47.8899520
33-70.559364-79.5117090
44-168.916011-39.3386400
...............
159527-14.856604-5.73016449
159628-22.30731640.80664849
159729-179.23670641.43485349
15983089.100351-11.65107849
159931146.47858674.18762049
\n", + "

1600 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " mock_ue_id lon lat tick\n", + "0 0 48.510339 -16.462645 0\n", + "1 1 19.286613 63.617111 0\n", + "2 2 21.315702 -47.889952 0\n", + "3 3 -70.559364 -79.511709 0\n", + "4 4 -168.916011 -39.338640 0\n", + "... ... ... ... ...\n", + "1595 27 -14.856604 -5.730164 49\n", + "1596 28 -22.307316 40.806648 49\n", + "1597 29 -179.236706 41.434853 49\n", + "1598 30 89.100351 -11.651078 49\n", + "1599 31 146.478586 74.187620 49\n", + "\n", + "[1600 rows x 4 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data2" + ] + }, + { + "cell_type": "markdown", + "id": "07a4c3aa", + "metadata": {}, + "source": [ + "## Plot Dataset 2" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "df4b1b11", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+kAAALRCAYAAAAnY+ILAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXxU1fn48c+dfZJJJvtGQhYCmBAIIAKCiiIQl0ZFoHVplVIoXewiirQgiNa6oJbWr221rT/BpVVbERFbVo2CgOwissiSsGQnyWSf/f7+GBgZshBgQlie9+s1L7jnnnvvuZOBzHPPOc9RVFVVEUIIIYQQQgghRJfTdHUDhBBCCCGEEEII4SNBuhBCCCGEEEIIcYGQIF0IIYQQQgghhLhASJAuhBBCCCGEEEJcICRIF0IIIYQQQgghLhASpAshhBBCCCGEEBcICdKFEEIIIYQQQogLhATpQgghhBBCCCHEBUKCdCGEEEIIIYQQ4gIhQboQ4pIxd+5cFEXh2LFjre7Pycnh+uuv928XFRWhKEqbr7lz57Z5rfaOO/lVUFAQ3Jtsxenuu6uc+h7u2rWLuXPnUlRU1KLu9ddfT05OzllfKy0tzf+eazQarFYrWVlZ3HfffaxYsaJD7Ttf1q1bx9y5c7HZbC32XX/99QGf0fNp27ZtjBgxAqvViqIo/PGPf+zU6536byU0NJSsrCwef/xxGhsbz+qc7b23HXGun8OlS5dy33330bdvX/R6PYqinPW5hBBCXL50Xd0AIYToar/4xS+45557WpQnJye3ecz69esDtn/3u9/xySef8PHHHweUZ2dnB6eRF6H169cHvIe7du3i8ccf5/rrryctLS3o1xs+fDjPP/88AA0NDezdu5e3336bvLw8xo0bx7/+9S/0en2b7Ttf1q1bx+OPP87EiROJiIgI2PeXv/zlvLfnhEmTJtHY2Mjbb79NZGRkp/yMTjV+/HgeeughwPcz+/TTT3niiSfYsWMH77333hmfr7339nx4//332bBhAwMGDMBoNLJly5bz3gYhhBAXPwnShRCXve7duzN06NAzOubU+rGxsWg0mtOep6mpiZCQkDNu48XoTN/TcxURERFwzVGjRvHzn/+cuXPn8vjjj/Poo4/y7LPPnlH7mpubMZlM561HtCsf6uzcuZMpU6Zw8803B+V8LpcLRVHQ6dr+qhEfH9/iZ3bo0CHeeust7HY7JpMpKG05X/7+97+j0fgGKT7wwAMSpAshhDgrMtxdCCE6yYmhs5999hnDhg0jJCSESZMmAfDOO+8wZswYEhMTMZvNZGVl8Zvf/KbVYb5ffPEF+fn5REdHYzKZ6NGjB7/+9a/bvfaePXvIyMhgyJAhVFRUAL7hzN/5zneIi4vDaDSSlJTErbfeytGjR9s8z5///Gc0Go3/HAAvvPACiqLw85//3F/m9XqJjIz094pC4HDyBQsWMGHCBABuuOEG/xDnBQsWBFxv06ZNXHvttYSEhJCRkcEzzzyD1+tt915PZ+7cufTp04eXXnoJu93eavtOtFFRFFasWMGkSZOIjY0lJCQEh8MB+H5mV199NaGhoVgsFvLy8ti2bVuL67X385o7dy7Tp08HID09vcW0iNaGu1dXV/Ozn/2Mbt26YTAYyMjIYNasWf52nXw/DzzwAG+88QZZWVmEhISQm5vL0qVL231/Tty32+3mr3/9q79NJ+zcuZPbb7+dyMhITCYT/fv3Z+HChQHnKCgoQFEU3njjDR566CG6deuG0Whk//797V67NSeG22u1Wn/ZypUruf3220lOTsZkMpGZmcnUqVMDpnic7r0F+Oc//8nVV1+NxWLBYrHQv39/Xn311RZtONvP4YkAXQghhDgX8ttECHHZ83q9uN3uFq9gKC0t5fvf/z733HMP//3vf/nZz34GwL59+7jlllt49dVXWbZsGb/+9a959913yc/PDzh++fLlXHvttRw+fJg//OEP/O9//+PRRx+lvLy8zWt++umnDBs2jH79+vHJJ58QFxdHY2Mjo0ePpry8nD//+c+sXLmSP/7xj3Tv3p36+vo2zzVq1ChUVWX16tX+slWrVmE2m1m5cqW/bPPmzdhsNkaNGtXqeW699VaeeuopwBf4r1+/nvXr13Prrbf665SVlXHvvffy/e9/nyVLlnDzzTfz29/+ljfffLOdd7hj8vPzaWpqYvPmzaetO2nSJPR6PW+88Qb/+c9/0Ov1PPXUU9x9991kZ2fz7rvv8sYbb1BfX8+1117Lrl27/Mee7uc1efJkfvGLXwCwaNEi//swcODAVttit9u54YYbeP3115k2bRofffQR3//+95k3bx533nlni/offfQRL730Ek888QTvvfceUVFRjB07loMHD7Z5v7feeqt/+sb48eP9bQLYu3cvw4YN4+uvv+bFF19k0aJFZGdnM3HiRObNm9fiXL/97W85fPgwL7/8Mh9++CFxcXHtvteqqvr/vdlsNj744AMWLlzIXXfdFTA14cCBA1x99dX89a9/ZcWKFcyZM4cvvviCa665BpfL1aH3ds6cOdx7770kJSWxYMEC3n//fe6//34OHToU0KbO/BwKIYQQHaIKIcQl4rHHHlMBtbKystX9ffr0UUeMGOHfLiwsVIE2X2vWrOnwte+//341NDQ0oGzEiBEqoK5evbrdY71er+pyudRPP/1UBdQvv/zSv69Hjx5qjx491Obm5jaPP/m+33jjDdVgMKi//OUvVY/H46+zefNmFVAXL17c4Xs6ITk5WZ00aZKqqqrqcDjU0NBQdcaMGSqgHjp0SFVVVf3973+v6vV6taGhwX8coD722GP+7X//+98qoH7yySctrnHivfriiy8CyrOzs9W8vLzTtjE1NVW99dZb29z/17/+VQXUd955p832vfbaayqg3nfffQHHHj58WNXpdOovfvGLgPL6+no1ISFB/e53v+sv68jP67nnnlMBtbCwsMW+ESNGBHxGX375ZRVQ33333YB6zz77rAqoK1asCLif+Ph4ta6uzl9WVlamajQa9emnn26zPScf//Of/zyg7K677lKNRqN6+PDhgPKbb75ZDQkJUW02m6qqqvrJJ5+ogHrddded9jonX6+118033xzwOTrViX8vhw4dUgH1gw8+8O9r6709ePCgqtVq1XvvvbfdNp3r5/BkP//5z1X5miWEEOJsSE+6EOKy96tf/YpNmza1ePXv3/+czx0ZGcnIkSNblB88eJB77rmHhIQEtFoter2eESNGALB7924AvvnmGw4cOMCPfvSjDs3N/f3vf8/EiRN55pln+NOf/hQw9DYzM5PIyEhmzJjByy+/HND7ezo33ngjq1atAnyJuZqampg2bRoxMTH+3vRVq1b5h4KfrYSEBAYPHhxQ1q9fvxY9nWdDVdUO1x03blzA9vLly3G73dx3330BIy1MJhMjRozwD6c+059XR3z88ceEhoYyfvz4gPKJEycCBIxwAN9UgrCwMP92fHw8cXFxZ/0efvzxx9x4442kpKS0uH5TU1OLBIqnvnen893vftf/7+2zzz7jxRdfZPPmzdx0000Bw/krKir4yU9+QkpKCjqdDr1eT2pqKvDt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uVzk5uby/PPPc8stt4QdO23aNI4ePcqqVau46667eOONNwAYMmQIAKNHj2bz5s3nfS0WiyVszZOOWK1WNmzYELbttddeY/jw4RQXF5ORkcGAAQN45513Qvt79erFs88+y3/+53/i9/vRas891JaedHHe2lr05+uvXbt2dbq+p556iuuuu47Bgwfz6KOPsnjxYl566aWwMoqihL1Xv1is7OvbrySRvg9tfZaqqoZtl/twZmdzXx555BFGjx7NoEGDmDZtGkuXLuV3v/sd1dXVofo6c1/E+WvrZ1s+4wvjtttuY9KkSQwcOJBbbrmFv/3tbwCsWLEiVEbuR9c4l89d7k1kfetb32LChAkMGDCAiRMn8o9//IPDhw+H/p20R+7D5ScYDLJu3boOy6xbty5s9GkkmM1mzGYzq1evxuPxtFlm586dwJdrSp1+39jYyO23387GjRvZu3cv+fn5TJw4sdUaLy+99BIDBgxg9+7dzJ8/nx07dgCwceNGysrKWLlyZUSv6VzV19ejKEq7iy6fLhMbG3teATpIT7qIgJkzZzJlypQOy3y9x/VsXHvttTidTioqKkhOTsbhcLR6Onx66NfXn/pfSSJ5HxwOBx999FHYttraWnw+X+gzlvvQOedzX06v4Hv06FESEhI6dV/E+bHb7URFRbX5sy2f8cURExPDwIEDOXLkCHfddRfQ0mubkpISKiP348I63dPU0efucDjwer3U1taG9eJWVlYycuTIi9vgK0hKSgqZmZkcOXIEkPtwJTl+/DhOp7PDMk6nk+PHj0d0NKNWq2X58uVMnz6dpUuXMnToUEaPHs2UKVMYNGgQAImJiQDYbLawnuq8vDzy8vJC75955hlWrVrFmjVrmDlzZmj72LFjmT17duj96WmTp7/7RMrcuXPDFuQFWLt2LWPGjDnjsW63m8cff5z77ruP2NjYNstUV1fz4x//mBkzZpx3W6UnXZw3u93OVVdd1eHLaDSec/179+7FaDSGnlpdd911/Otf/wqbs7J+/XpSU1PP62HApS6S9+G6667jwIEDlJWVhbatX78eg8HA1VdfHSoj9+HMzue+7N27FyD0Jbkz90WcH71ez9VXX91qiNuGDRvkC+9F4vF4+Oyzz0hJSSE7OxuHwxF2P7xeL//85z/lflxAnfncr776anQ6XViZsrIyDhw4IPfmAqqurubE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AlFRUZKjtLTUZbtdXV2ora1FV1cX0tLSJHWampoA3HsEoLGxEQsXLoRWq8Xy5csREBCApqYmREZGPnSe4xEcrr4PQ0RERERERG4xODiIjo4OxMXFPfD9JxM1OjqKv/zlL+jv74dSqcTUqVPdvoJOT8ZEfw+43Z2IiIiIiOgp4eXlhbi4uE97GPQE8ZYLERERERERkYdgkk5ERERERETkIZikExEREREREXkIJulEREREREREHoJJOhEREREREZGHYJJORERERERE5CGYpBMRERERERF5CCbpRERERERERB6CSToRERERERGRh2CSTkRERERE9JRwOBzo6+vDX//6V/T19cHhcDzR/np7e6HX6xEbGwu5XA61Wg2dTofTp0+LMYIgoKamxi39mc1mCIKA1tbWceNMJhMEQYDVanW6lpaWhi1btojnGo0GgiA4HTt37nTZtt1uR1lZGVJSUhAQEIDo6GisXr0a3d3dLuMdDge+8IUvuO3nIJt0C0RERERERPTE3bx5E2azGcPDw2KZr68vNBoNQkNDn0ifBQUFsNvtqKqqQnx8PK5du4aGhgbcvHnT7X19cl7utnXrVhQXF0vKAgMDXcYODAygpaUFBoMBqampuHXrFtauXYtFixahubnZKf773/8+BEFw21iZpBMREREREXm4mzdv4vLly07lw8PDuHz5MqZNm+b2RN1qteLUqVMwmUzIzs4GAEydOhUZGRlijEajAQDk5+eL181mM9rb27Fu3TqcOXMGNpsNiYmJ2LFjB+bPny+pW1RUhCtXruDo0aNYsmQJjhw5AgCYNWsWACA7Oxsmk2nScwkMDIRarZ5QbHBwMOrq6iRl+/btQ0ZGBjo7OxEbGyuWf/DBB/je976Hc+fOISoqatLjBLjdnYiIiIiIyKM5HA6YzeZxY8xms9u3viuVSiiVStTU1GBoaMhlzLlz5wAAhw8fhsViEc/7+/uxcOFC1NfX48KFC9DpdMjLy0NnZ6ek/u7du5GcnIzz58/DYDDg7NmzAID6+npYLBZUV1e7dU6Pq6+vD4IgQKVSiWUDAwP4h3/4B+zfv3/CNwAmgkk6ERERERGRB/v4448fuhV8eHgYH3/8sVv7lclkqKysRFVVFVQqFbKyslBeXo6LFy+KMREREQAAlUoFtVotnqempkKv1yMlJQUJCQnYtm0b4uPjUVtbK+lj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_ue_tracks(data2)" + ] + }, + { + "cell_type": "markdown", + "id": "b727758e", + "metadata": {}, + "source": [ + "## Regress to Find Alpha 2" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "5a268312", + "metadata": {}, + "outputs": [], + "source": [ + "alpha2 = get_predicted_alpha(data1,alpha1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "02575be1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5000000522796194" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "alpha2" + ] + }, + { + "cell_type": "markdown", + "id": "da3b378b", + "metadata": {}, + "source": [ + "## Comparison Plot of Dataset 1 and Dataset2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "0798532d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IqJBd/ntXwMAfLpxHWRZ6r8uiCKmzL8YZXMXhAzXBrZmICIiIiIiIiIiSnWhsjYIAkrPvxBzr7+RORsRERGNCix0G4YWLVqE2bNn4w9/+IPf9XXr1uHGG2+ELMsAgDVr1uDOO+8MuF+n08HhcASdu66uDqWlpQHX33zzTVxzzTWJL56IiIgoSpff/jVc/MXbsfetN2BpboK5oBDnXX0t1GrtUC+NiIiIiEYRZm1ERESUCpi1ERERUSpgoVs0ZAnorANcNkBrBLJKAEEc6lUBAIxGI6qrq/2uCYIQ8b7NmzdjxowZ/e9nZ2crvjYiIiKiSNRqLS647oahXgYRERERDSZmbURERERJwayNiIiIRjsWukXSUgVUbwSc1rPXdCZg6vVAfsXQresMQRBQWFgY8305OTlx3UdERERERERERBQ3Zm1ERERERERERBSn4bFVcrhqqQL2rfUP3gDf+/vW+l4foZYvX478/HxcfPHFeOmll4Z6OURERERERERENNoxayMiIiIiIiIiogSw0C0UWfLtLg2neqNv3BCyWq3IyMjwe1u6dGnI8RkZGVi9ejVeeuklvPHGG7jyyitx66234vnnnx/EVRMRERERERERUUph1kZERERERERERAli69JQOusCd5eey2n1jcueOBgrCiozMxOVlZV+1wwGQ8jxubm5uO+++/rfv/DCC9HZ2Ylf//rXuP3225O2TiIiIiIiIiIiSmHM2oiIiIiIiIiIKEEsdAvFZVN2XAyMRiOs1sDgz2KxwGg0+l0TRRGTJk1K6HkLFizAU089ldAcREREREREREREITFrIyIiIiIiIiKiBLF1aShaY+QxsYyLwbRp07B79+6A67t27cLUqVMVf95nn32GoqIixeclIiIiIiIiIiICwKyNiIiIiIiIiIgSxhPdQskqAXSm8C0VdCbfOIXdfffdePzxx3HPPfdg5cqVMBgMeOedd/D000/jueee8xsryzKampoC5sjPz4coBtYxPvvss9BoNDj//PMhiiI2bNiA//mf/8Fjjz2m+MdBREREREREREQEgFkbEREREREREREljIVuoQgiMPV6YN/a0GOmXu8bp7CSkhJs3boVDz30EJYuXQqHw4EpU6ZgzZo1uOWWW/zG2my2oDtEGxsbUVhYGHT+X/ziFzhx4gRUKhWmTJmCv/3tb7j99tsV/ziIiIiI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DjtcvlBWczBro6w0NobbjOYDN5USUYkoaKHbokWLIElS1I5Su90etfOUiIiIiIjS86MXuvCrtuxPZemf8ORgNXROEkVg09X5fcaeVwGFO6GJiABmbURERERE+aIoKu556mhO5mLWRhkTReCat+dv/l0vM2cjoqJX0EI3nU6HSy+9FDt37oy4vnPnTmzatKlAqyIiIiIiKm2qquI7O07gezs7czLf8mpTTuahc1RLC3DjFkCvj35NrwcuuCj61Lc4pw7F5HYDtuGslkhEtFAwayMiIiIiyr2xaT8+ur0Ngw5vTuZj1kZZSZS1abTR19PJ2Xw+5mxEVPQ0hV7A5z73OXzoQx/CZZddho0bN+I//uM/cOrUKXzyk58s9NKIiIiIiErOsSEX7n2qHW39kzmZTxSAD21syslcdA5raQGamoChIWB4MHytcTHQ0BjeiXrFFeEQzeMBTCagrh6wjwDHjgLd3cnnn5rK6/KJiEoJszYiIiIiotzwh2Rs392H7z3fAb+s5mROZm2UE4myNiB2znbyJHD8WPK5mbMRUZEreKHb3/zN32B8fBz3338/hoeHsW7dOjzzzDNYvnx5oZdGRERERFQUJt0BfPRnb2DSE0SVWYfHP3YlygyRf5UfnfLjezs78Ku201Bzk7sBAD5xTTN0moIeBE0LhSgCS5aE32K91rg48lrjYuD48dTmttuB1WuyXyMR0QLArI2IiIiIKD5ZUfHQS134nwODkBUVH7qyCX9/dTMk8cypV6qqYsfRETzwzHGcmvDktEUaszbKmURZW6ycLZXNpABzNiIqegUvdAOArVu3YuvWrYVeBhERERFR0bn2315E37hn9v3+CS/W3bsDH72qCffccj58QRk/292Hh148iWl/KK259RoRW69dgWl/CI++2gtlToGcKISDty/fvDZXHwpR+hSl0CsgIipJzNqIiIiIiKJ97/kO/PufT2LuHtGvP3Mc3/9TJ7731xfipnUNaB904mt/PIY3eidmx6SaTly4pAJf+ovz8OcTI8zaiIiI8qQoCt2IiIiIiCjau/59V0SR21w/292H17vHMeb2Y3QqkNH8H7u6CZ+5oRUA8E9b1uCx1/rQP+HB8moTPrSxibtLqfBMxtTGVVTkdx1EREREREREVNL+69Ve/OjPJ2O+5gnI+OTjB3B+owVHh1wZP+OaVYuwcUUNNq6o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3+9PaL8ej0crV66MhF/hcFh33313n9sqnH766TrqqKP00T9f1bO/+rkC6Zny5U+Qaf98K1Mj4JNzz07ZW5u6Pe/xeLRkyRKVl5crHA5p48svKhwKKWfcBI2dNl0WS3ROEg6HtHPzRu36cKNMSePLZ2r89Jld2o1UveVRIx1Z2/BA1gaMXGGfT1uOOlrqYSXIvlgyM1X2z3/IsPK9CGB46k/OdqA9WRsAIF6bN2/W008/rfb29oT2G2/OlpGRoSuuuCLmnE1Sn1mb39uh9196TqmZWUrPHkPW1kfWlviN1A9DhmFVVtb8oR4GACRNuKlpQNdbs7ITMxAASJIxRR5NmTMuplBtTJFH2YXpatnbLr83KIfLJs+YFJ4uBQDErLy8XGVlZbrtttsUDAb7viBGhz7heeDJ1kcffbTX6w5sf5CWmSVJsrc2ydbapFBKukybXUYwIGt7a2QzyUPPW0JBzVvyVU2dMkVb335DL9z3S/na90f6d6am6aglS5U9dpzSMrPU3tqil37366g2b//vX+RMSdXiiy7X5HkLE/SJYKQiawNwOOt47/24i9ykzpyu/Z31Sp03N4GjAoDE6U/OdqA9WRsAIF4HcrY777wzocVug5WzddcmIytLZyxfpvySiXr/b8/p5QfvUzgUirRPycjUkYtOUWZhUWfW1tKkF+77tQLejkibt//3L3KlpWvRiu+NuqwtaYVua9as0YknntjtubVr12rOnDmS1O1fYn7729/qoosuStbQAACHsOX0vnx4X4L19QkaCQAkT39CNcMwlJGTOgSjBAAcLmw2m84444w+w7FYHPyE58FM0+xxO8UD0tLSlJXVGbyNnTZdadk5atvXIEOSrb21x+sOPf/WY3/Wx/98TU21u7u09e1v01uP/anP9+Fr368n77xFp33/6lEXwA0UORsAjByJyMnI2gAMd/0tXiNrAwAMhM1m06mnnprUnE2SCgsLlZqaqv3793dzZacJEyZI6l/OJkVnbe0t+/Sna6/U+OmztP299V3atjc36Y3/eaTP9+Jtax2VWVvSNnpduHChampqon4uuOAClZSU6Nhjj41q+9BDD0W1O++885I1LABANxwTjxjQ9bbc3ASNBACS60ColjsuQxk5qTw5CgBIqvLycp199tkD2tpy8eLFWrlyZbdFbi+99JLWrFnT6/UTJkyI/HlnsVj1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_ue_tracks_side_by_side(data1, data2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c61c293", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/radp_library.py b/notebooks/radp_library.py index c0cfe24..60ee4d6 100644 --- a/notebooks/radp_library.py +++ b/notebooks/radp_library.py @@ -12,6 +12,7 @@ import fastkml import matplotlib.animation as animation import matplotlib.pyplot as plt +import matplotlib.cm as cm import numpy as np import pandas as pd import rasterio.features @@ -20,8 +21,14 @@ from shapely import geometry from radp.digital_twin.mobility.mobility import gauss_markov -from radp.digital_twin.rf.bayesian.bayesian_engine import BayesianDigitalTwin, NormMethod +from radp.digital_twin.rf.bayesian.bayesian_engine import ( + BayesianDigitalTwin, + NormMethod, +) from radp.digital_twin.utils.gis_tools import GISTools +from radp.digital_twin.mobility.ue_tracks_params import UETracksGenerationParams +from radp.digital_twin.mobility.ue_tracks import UETracksGenerator +from radp.digital_twin.mobility.param_regression import ParameterRegression Boundary = Union[geometry.Polygon, geometry.MultiPolygon] KML_NS = "{http://www.opengis.net/kml/2.2}" @@ -77,7 +84,9 @@ def _setup_kml_obj( styles = [] k = fastkml.KML() - doc = fastkml.Document(ns=KML_NS, name=(name or "Shapes"), description=(desc or ""), styles=styles) + doc = fastkml.Document( + ns=KML_NS, name=(name or "Shapes"), description=(desc or ""), styles=styles + ) k.append(doc) return k, doc @@ -106,7 +115,9 @@ def _add_shape_to_folder( ) -> None: if desc is None: desc = name - shape_placemark = fastkml.Placemark(ns=KML_NS, name=name, description=desc, styles=styles) + shape_placemark = fastkml.Placemark( + ns=KML_NS, name=name, description=desc, styles=styles + ) shape_placemark.geometry = shape folder.append(shape_placemark) @@ -181,15 +192,21 @@ def shape_dict_to_kmz( obj_style = styles if descriptions_dict is not None and name in descriptions_dict: - obj_desc = ShapesKMLWriter._build_description_from_prop_dict(descriptions_dict[name]) + obj_desc = ShapesKMLWriter._build_description_from_prop_dict( + descriptions_dict[name] + ) else: obj_desc = name if isinstance(obj, geometry.base.BaseGeometry): - cls._add_shape_to_folder(cur_folder, obj, name, styles=obj_style, desc=obj_desc) + cls._add_shape_to_folder( + cur_folder, obj, name, styles=obj_style, desc=obj_desc + ) else: # isinstance(obj, dict)) - child_folder = fastkml.Folder(ns=KML_NS, name=name, styles=obj_style) + child_folder = fastkml.Folder( + ns=KML_NS, name=name, styles=obj_style + ) cur_folder.append(child_folder) fringe.append((child_folder, obj)) @@ -214,17 +231,22 @@ def get_percell_data( data_in_sampled = data_in - data_in_sampled.columns = [col.replace("_1", "") if col.endswith("_1") else col for col in data_in_sampled.columns] + data_in_sampled.columns = [ + col.replace("_1", "") if col.endswith("_1") else col + for col in data_in_sampled.columns + ] # filter out invalid values data_cell_valid = data_in_sampled[data_in_sampled.cell_rxpwr_dbm != invalid_value] if choose_strongest_samples_percell: - data_cell_sampled = data_cell_valid.sort_values("cell_rxpwr_dbm", ascending=False).head( - n=min(n_samples, len(data_cell_valid)) - ) + data_cell_sampled = data_cell_valid.sort_values( + "cell_rxpwr_dbm", ascending=False + ).head(n=min(n_samples, len(data_cell_valid))) else: # get n_samples independent random samples inside training groups - data_cell_sampled = data_cell_valid.sample(n=min(n_samples, len(data_cell_valid)), random_state=(seed)) + data_cell_sampled = data_cell_valid.sample( + n=min(n_samples, len(data_cell_valid)), random_state=(seed) + ) # logging.info(f"n_samples={n_samples}, len(data_cell_valid)={len(data_cell_valid)}") # plt.scatter(y=data_cell_sampled.loc_y, x=data_cell_sampled.loc_x, s=10) @@ -276,7 +298,11 @@ def bing_tile_to_center(x, y, level, tile_pixels=256): xwidth = 360.0 / zoom_factor out = [] out.append( - (y_to_latitude(True, y, zoom_factor, tile_pixels) + y_to_latitude(False, y, zoom_factor, tile_pixels)) / 2 + ( + y_to_latitude(True, y, zoom_factor, tile_pixels) + + y_to_latitude(False, y, zoom_factor, tile_pixels) + ) + / 2 ) out.append(xwidth * (x + 0.5) - 180) return out @@ -329,7 +355,9 @@ def latitude_to_world_pixel(latitude, zoom_factor, tile_pixels=256): latitude = map_clip(latitude, -85.05112878, 85.05112878) sin_latitude = np.sin(latitude * np.pi / 180.0) - pixel_y = (0.5 - np.log((1 + sin_latitude) / (1 - sin_latitude)) / (4 * np.pi)) * (tile_pixels * zoom_factor) + pixel_y = (0.5 - np.log((1 + sin_latitude) / (1 - sin_latitude)) / (4 * np.pi)) * ( + tile_pixels * zoom_factor + ) return pixel_y @@ -363,12 +391,16 @@ def lon_lat_to_bing_tile_df_row(row, level): return row -def get_lonlat_from_xy_idxs(xy: np.ndarray, lower_left: Tuple[float, float]) -> np.ndarray: +def get_lonlat_from_xy_idxs( + xy: np.ndarray, lower_left: Tuple[float, float] +) -> np.ndarray: return xy * SRTM_STEP + lower_left def find_closest(data_df, lat, lon): - dist = data_df.apply(lambda row: GISTools.dist((row.loc_y, row.loc_x), (lat, lon)), axis=1) + dist = data_df.apply( + lambda row: GISTools.dist((row.loc_y, row.loc_x), (lat, lon)), axis=1 + ) if dist.min() < 100: return dist.idxmin() else: @@ -410,8 +442,12 @@ def get_track_samples( xy_lonlat = get_lonlat_from_xy_idxs(xy, (min_lon, min_lat)) xy_lonlat_ue_tracks.extend(xy_lonlat) - all_track_pts_df = pd.DataFrame(columns=["loc_x", "loc_y"], data=xy_lonlat_ue_tracks) - all_track_pts_sampled_df = all_track_pts_df.apply(lambda row: find_closest(data_df, row.loc_y, row.loc_x), axis=1) + all_track_pts_df = pd.DataFrame( + columns=["loc_x", "loc_y"], data=xy_lonlat_ue_tracks + ) + all_track_pts_sampled_df = all_track_pts_df.apply( + lambda row: find_closest(data_df, row.loc_y, row.loc_x), axis=1 + ) return data_df.loc[all_track_pts_sampled_df] @@ -498,7 +534,9 @@ def bdt( axs[1].set_yticks([]) for i in range(len(desired_idxs)): train_cell_id = idx_cell_id_mapping[i + 1] - training_data[train_cell_id] = pd.concat([tilt_per_cell_df[i] for tilt_per_cell_df in percell_data_list]) + training_data[train_cell_id] = pd.concat( + [tilt_per_cell_df[i] for tilt_per_cell_df in percell_data_list] + ) if track_sampling: training_data[train_cell_id] = get_track_samples( training_data[train_cell_id], @@ -515,19 +553,27 @@ def bdt( ) for train_cell_id, training_data_idx in training_data.items(): training_data_idx["cell_id"] = train_cell_id - training_data_idx["cell_lat"] = site_config_df[site_config_df["cell_id"] == train_cell_id]["cell_lat"].values[0] - training_data_idx["cell_lon"] = site_config_df[site_config_df["cell_id"] == train_cell_id]["cell_lon"].values[0] - training_data_idx["cell_az_deg"] = site_config_df[site_config_df["cell_id"] == train_cell_id][ - "cell_az_deg" - ].values[0] - training_data_idx["cell_txpwr_dbm"] = site_config_df[site_config_df["cell_id"] == train_cell_id][ - "cell_txpwr_dbm" - ].values[0] - training_data_idx["hTx"] = site_config_df[site_config_df["cell_id"] == train_cell_id]["hTx"].values[0] - training_data_idx["hRx"] = site_config_df[site_config_df["cell_id"] == train_cell_id]["hRx"].values[0] - training_data_idx["cell_carrier_freq_mhz"] = site_config_df[site_config_df["cell_id"] == train_cell_id][ - "cell_carrier_freq_mhz" - ].values[0] + training_data_idx["cell_lat"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["cell_lat"].values[0] + training_data_idx["cell_lon"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["cell_lon"].values[0] + training_data_idx["cell_az_deg"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["cell_az_deg"].values[0] + training_data_idx["cell_txpwr_dbm"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["cell_txpwr_dbm"].values[0] + training_data_idx["hTx"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["hTx"].values[0] + training_data_idx["hRx"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["hRx"].values[0] + training_data_idx["cell_carrier_freq_mhz"] = site_config_df[ + site_config_df["cell_id"] == train_cell_id + ]["cell_carrier_freq_mhz"].values[0] training_data_idx["log_distance"] = [ GISTools.get_log_distance( training_data_idx["cell_lat"].values[0], @@ -572,7 +618,10 @@ def bdt( training_data_idx = training_data_idx.drop( training_data_idx[ (training_data_idx["cell_rxpwr_dbm"] < filter_out_samples_dbm_threshold) - & (training_data_idx["log_distance"] > np.log(1000 * filter_out_samples_kms_threshold)) + & ( + training_data_idx["log_distance"] + > np.log(1000 * filter_out_samples_kms_threshold) + ) ].index ) if plot_loss_vs_iter: @@ -632,19 +681,27 @@ def bdt( for test_cell_id, test_data_idx in test_data.items(): test_data_idx["cell_id"] = test_cell_id - test_data_idx["cell_lat"] = site_config_df[site_config_df["cell_id"] == test_cell_id]["cell_lat"].values[0] - test_data_idx["cell_lon"] = site_config_df[site_config_df["cell_id"] == test_cell_id]["cell_lon"].values[0] - test_data_idx["cell_az_deg"] = site_config_df[site_config_df["cell_id"] == test_cell_id]["cell_az_deg"].values[ - 0 - ] - test_data_idx["cell_txpwr_dbm"] = site_config_df[site_config_df["cell_id"] == test_cell_id][ - "cell_txpwr_dbm" - ].values[0] - test_data_idx["hTx"] = site_config_df[site_config_df["cell_id"] == test_cell_id]["hTx"].values[0] - test_data_idx["hRx"] = site_config_df[site_config_df["cell_id"] == test_cell_id]["hRx"].values[0] - test_data_idx["cell_carrier_freq_mhz"] = site_config_df[site_config_df["cell_id"] == test_cell_id][ - "cell_carrier_freq_mhz" - ].values[0] + test_data_idx["cell_lat"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["cell_lat"].values[0] + test_data_idx["cell_lon"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["cell_lon"].values[0] + test_data_idx["cell_az_deg"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["cell_az_deg"].values[0] + test_data_idx["cell_txpwr_dbm"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["cell_txpwr_dbm"].values[0] + test_data_idx["hTx"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["hTx"].values[0] + test_data_idx["hRx"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["hRx"].values[0] + test_data_idx["cell_carrier_freq_mhz"] = site_config_df[ + site_config_df["cell_id"] == test_cell_id + ]["cell_carrier_freq_mhz"].values[0] test_data_idx["log_distance"] = [ GISTools.get_log_distance( test_data_idx["cell_lat"].values[0], @@ -686,10 +743,16 @@ def bdt( test_data_percell = test_data_percell.drop( test_data_percell[ (test_data_percell["cell_rxpwr_dbm"] < filter_out_samples_dbm_threshold) - & (test_data_percell["log_distance"] > np.log(1000 * filter_out_samples_kms_threshold)) + & ( + test_data_percell["log_distance"] + > np.log(1000 * filter_out_samples_kms_threshold) + ) ].index ) - (pred_means_percell, _,) = bayesian_digital_twins[idx].predict_distributed_gpmodel( + ( + pred_means_percell, + _, + ) = bayesian_digital_twins[idx].predict_distributed_gpmodel( prediction_dfs=[test_data_percell], ) logging.info(f"merging cell at idx = : {idx}") @@ -700,11 +763,15 @@ def bdt( ) full_prediction_frame = ( pd.concat([full_prediction_frame, test_data_percell_bing_tile]) - .groupby(["loc_x", "loc_y"], as_index=False)[["cell_rxpwr_dbm", "pred_means"]] + .groupby(["loc_x", "loc_y"], as_index=False)[ + ["cell_rxpwr_dbm", "pred_means"] + ] .max() ) # re-convert to lat/lon - full_prediction_frame = full_prediction_frame.apply(bing_tile_to_center_df_row, level=bing_tile_level, axis=1) + full_prediction_frame = full_prediction_frame.apply( + bing_tile_to_center_df_row, level=bing_tile_level, axis=1 + ) # compute RSRP as maximum over predicted rx powers pred_rsrp = np.array(full_prediction_frame.pred_means) @@ -751,7 +818,9 @@ def bdt( axs[1].set_xticks([]) axs[1].set_yticks([]) - plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, wspace=0.0, hspace=0.1) + plt.subplots_adjust( + left=0.1, bottom=0.1, right=0.9, top=0.9, wspace=0.0, hspace=0.1 + ) plt.show() return ( @@ -825,7 +894,9 @@ def init(): def animate(i): plt.clf() _init_plt(axs) - pred_rsrp_points = axs[1].scatter(lons, lats, c=pred_rsrp_list[i], cmap=cmap, s=25) + pred_rsrp_points = axs[1].scatter( + lons, lats, c=pred_rsrp_list[i], cmap=cmap, s=25 + ) axs[1].set_title( f"Predicted RSRP \n MAE = {MAE_list[i]:0.1f} dB" f"\nmax_training_iterations = {maxiter_list[i]} | " @@ -839,7 +910,9 @@ def animate(i): return [true_rsrp_points, pred_rsrp_points] # call the animator. blit=True means only re-draw the parts that have changed. - anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(pred_rsrp_list), blit=True) + anim = animation.FuncAnimation( + fig, animate, init_func=init, frames=len(pred_rsrp_list), blit=True + ) writervideo = animation.FFMpegWriter(fps=4) anim.save(filename, writer=writervideo) @@ -867,3 +940,239 @@ def rfco_to_best_server_shapes( key=lambda x: x[1], ) return shapes + + +# Mobility Model helper functions + + +def get_ue_data(params: dict) -> pd.DataFrame: + """ + Generates user equipment (UE) tracks data using specified simulation parameters. + + This function initializes a UETracksGenerationParams object using the provided parameters + and then iterates over batches generated by the UETracksGenerator. Each batch of UE tracks + data is consolidated into a single DataFrame which captures mobility tracks across multiple + ticks and batches, as per the defined parameters. + + Using the UETracksGenerator, the UE tracks are returned in form of a dataframe + The Dataframe is arranged as follows: + + +------------+------------+-----------+------+ + | mock_ue_id | lon | lat | tick | + +============+============+===========+======+ + | 0 | 102.219377 | 33.674572 | 0 | + | 1 | 102.415954 | 33.855534 | 0 | + | 2 | 102.545935 | 33.878075 | 0 | + | 0 | 102.297766 | 33.575942 | 1 | + | 1 | 102.362725 | 33.916477 | 1 | + | 2 | 102.080675 | 33.832793 | 1 | + +------------+------------+-----------+------+ + """ + + # Initialize the UE data + data = UETracksGenerationParams(params) + + ue_tracks_generation = pd.DataFrame() # Initialize an empty DataFrame + for ue_tracks_generation_batch in UETracksGenerator.generate_as_lon_lat_points( + rng_seed=data.rng_seed, + lon_x_dims=data.lon_x_dims, + lon_y_dims=data.lon_y_dims, + num_ticks=data.num_ticks, + num_UEs=data.num_UEs, + num_batches=data.num_batches, + alpha=data.alpha, + variance=data.variance, + min_lat=data.min_lat, + max_lat=data.max_lat, + min_lon=data.min_lon, + max_lon=data.max_lon, + mobility_class_distribution=data.mobility_class_distribution, + mobility_class_velocities=data.mobility_class_velocities, + mobility_class_velocity_variances=data.mobility_class_velocity_variances, + ): + # Append each batch to the main DataFrame + if ue_tracks_generation.empty: + ue_tracks_generation = ue_tracks_generation_batch + else: + ue_tracks_generation = pd.concat( + [ue_tracks_generation, ue_tracks_generation_batch], ignore_index=True + ) + + return ue_tracks_generation + + +def plot_ue_tracks(df) -> None: + """ + Plots the movement tracks of unique UE IDs on a grid of subplots. + """ + + # Initialize an empty list to store batch indices + batch_indices = [] + + # Identify where tick resets and mark the indices + for i in range(1, len(df)): + if df.loc[i, "tick"] == 0 and df.loc[i - 1, "tick"] != 0: + batch_indices.append(i) + + # Add the final index to close the last batch + batch_indices.append(len(df)) + + # Now, iterate over the identified batches + start_idx = 0 + for batch_num, end_idx in enumerate(batch_indices): + batch_data = df.iloc[start_idx:end_idx] + + # Create a new figure + plt.figure(figsize=(10, 6)) + + # Generate a color map with different colors for each ue_id + color_map = cm.get_cmap("tab20", len(batch_data["mock_ue_id"].unique())) + + # Plot each ue_id's movement over ticks in this batch + for idx, ue_id in enumerate(batch_data["mock_ue_id"].unique()): + ue_data = batch_data[batch_data["mock_ue_id"] == ue_id] + color = color_map(idx) # Get a unique color for each ue_id + + # Plot the path with arrows + for i in range(len(ue_data) - 1): + x_start = ue_data.iloc[i]["lon"] + y_start = ue_data.iloc[i]["lat"] + x_end = ue_data.iloc[i + 1]["lon"] + y_end = ue_data.iloc[i + 1]["lat"] + + # Calculate the direction vector + dx = x_end - x_start + dy = y_end - y_start + + # Plot the line with an arrow with reduced width and unique color + plt.quiver( + x_start, + y_start, + dx, + dy, + angles="xy", + scale_units="xy", + scale=1, + color=color, + width=0.002, + headwidth=3, + headlength=5, + ) + + # Plot starting points as circles with the same color + plt.scatter( + ue_data["lon"].iloc[0], + ue_data["lat"].iloc[0], + color=color, + label=f"Start UE {ue_id}", + ) + + # Set plot title and labels + plt.title(f"UE Tracks with Direction for Batch {batch_num + 1}") + plt.xlabel("Longitude") + plt.ylabel("Latitude") + plt.legend(loc="upper right", bbox_to_anchor=(1.2, 1)) + + # Display the plot + plt.show() + + # Update start_idx for the next batch + start_idx = end_idx + +def plot_ue_tracks_side_by_side(df1, df2): + """ + Plots the movement tracks of unique UE IDs from two DataFrames side by side. + """ + # Set up subplots with 2 columns for side by side plots + fig, axes = plt.subplots(1, 2, figsize=(25, 10)) # 2 rows, 2 columns (side by side) + + # Plot the first DataFrame + plot_ue_tracks_on_axis(df1, axes[0], title='DataFrame 1') + + # Plot the second DataFrame + plot_ue_tracks_on_axis(df2, axes[1], title='DataFrame 2') + + # Adjust layout and show + plt.tight_layout() + plt.show() + +def plot_ue_tracks_on_axis(df, ax, title): + """ + Helper function to plot UE tracks on a given axis. + """ + data = df + unique_ids = data['mock_ue_id'].unique() + num_plots = len(unique_ids) + + color_map = cm.get_cmap('tab20', num_plots) + + for idx, ue_id in enumerate(unique_ids): + ue_data = data[data['mock_ue_id'] == ue_id] + + for i in range(len(ue_data) - 1): + x_start = ue_data.iloc[i]['lon'] + y_start = ue_data.iloc[i]['lat'] + x_end = ue_data.iloc[i + 1]['lon'] + y_end = ue_data.iloc[i + 1]['lat'] + + dx = x_end - x_start + dy = y_end - y_start + ax.quiver(x_start, y_start, dx, dy, angles='xy', scale_units='xy', scale=1, color=color_map(idx)) + + ax.scatter(ue_data['lon'], ue_data['lat'], color=color_map(idx), label=f'UE {ue_id}') + + ax.set_title(title) + ax.legend() + + +def calculate_distances_and_velocities(group): + """Calculating distances and velocities for each UE based on sorted data by ticks.""" + group["prev_longitude"] = group["lon"].shift(1) + group["prev_latitude"] = group["lat"].shift(1) + group["distance"] = group.apply( + lambda row: GISTools.get_log_distance( + row["prev_latitude"], row["prev_longitude"], row["lat"], row["lon"] + ) + if not pd.isna(row["prev_longitude"]) + else 0, + axis=1, + ) + # Assuming time interval between ticks is 1 unit, adjust below if different + group["velocity"] = ( + group["distance"] / 1 + ) # Convert to m/s by dividing by the seconds per tick, here assumed to be 1s + return group + + +def preprocess_ue_data(data): + """Preprocessing data to calculate distances and velocities for each UE.""" + # Ensure data is sorted by UE ID and tick to ensure accurate shift operations + data.sort_values(by=["mock_ue_id", "tick"], inplace=True) + data = data.groupby("mock_ue_id").apply(calculate_distances_and_velocities) + + # Drop the temporary columns + data.drop(["prev_longitude", "prev_latitude", "distance"], axis=1, inplace=True) + + return data + + +def get_predicted_alpha(data, alpha0): + """ + Estimate the alpha parameter for a Gauss-Markov mobility model using regression analysis + on the velocity data derived from user equipment (UE) tracks. + + This function processes the provided UE track data to calculate velocities, + fits a regression model using polynomial regression and non linear least squares, + to estimate the alpha parameter that best describes the randomness or directionality in the mobility pattern, + and returns the optimized alpha. + """ + # Preprocess data to calculate velocities + velocity_df = preprocess_ue_data(data) + + # ParameterRegression is used to regress the data to predict alpha using velocity + regression = ParameterRegression(velocity_df) + + # Optimize alpha using the initial guess alpha0 + predicted_alpha, predicted_cov = regression.optimize_alpha(alpha0) + + return float(predicted_alpha) diff --git a/radp/client/client.py b/radp/client/client.py index 0a00878..5608a5c 100644 --- a/radp/client/client.py +++ b/radp/client/client.py @@ -62,7 +62,9 @@ def describe_model(self, model_id: str) -> Dict: # TODO: add error handling logic for when something goes wrong @retry(exceptions=RETRY_EXCEPTIONS, tries=3, delay=1, backoff=2) def describe_simulation(self, simulation_id: str) -> Dict: - logger.debug(f"Calling describe_simulation api with simulation: '{simulation_id}'") + logger.debug( + f"Calling describe_simulation api with simulation: '{simulation_id}'" + ) path = f"{constants.DESCRIBE_SIMULATION_API_PATH}/{simulation_id}" response = self._send_get_request(path, {}) @@ -101,7 +103,9 @@ def train( payload_file = json.dumps(payload) # open user provided training csv files - with open(ue_training_data, "r") as ue_training_data_file, open(topology, "r") as topology_file: + with open(ue_training_data, "r") as ue_training_data_file, open( + topology, "r" + ) as topology_file: # send a json body file as well as both csv files files: Set[Any] = { ( @@ -166,7 +170,9 @@ def simulation( } if not ue_data and not config: - return self._send_post_request(constants.SIMULATION_API_PATH, files=files).json() + return self._send_post_request( + constants.SIMULATION_API_PATH, files=files + ).json() if not config: with open(str(ue_data), "r") as ue_data_file: @@ -180,7 +186,9 @@ def simulation( ), ) ) - return self._send_post_request(constants.SIMULATION_API_PATH, files=files).json() + return self._send_post_request( + constants.SIMULATION_API_PATH, files=files + ).json() if not ue_data: with open(str(config), "r") as config_file: @@ -194,7 +202,9 @@ def simulation( ), ) ) - return self._send_post_request(constants.SIMULATION_API_PATH, files=files).json() + return self._send_post_request( + constants.SIMULATION_API_PATH, files=files + ).json() with open(ue_data, "r") as ue_data_file, open(config, "r") as config_file: files.add( @@ -217,17 +227,23 @@ def simulation( ), ), ) - return self._send_post_request(constants.SIMULATION_API_PATH, files=files).json() + return self._send_post_request( + constants.SIMULATION_API_PATH, files=files + ).json() # TODO: add error handling logic for when something goes wrong @retry(exceptions=RETRY_EXCEPTIONS, tries=3, delay=1, backoff=2) def consume_simulation_output(self, simulation_id: str) -> pd.DataFrame: - logger.debug(f"Calling consume_simulation_output api with simulation: '{simulation_id}'") + logger.debug( + f"Calling consume_simulation_output api with simulation: '{simulation_id}'" + ) path = f"{constants.CONSUME_SIMULATION_OUTPUT_API_PATH}/{simulation_id}/{constants.DOWNLOAD}" consume_simulation_output_url = self._get_request_url(path, {}) # TODO: this only works for a single file in zipfile # we will need to update this once batching is supported - rf_dataframe = pd.read_csv(consume_simulation_output_url, compression=constants.ZIP_COMPRESSION) + rf_dataframe = pd.read_csv( + consume_simulation_output_url, compression=constants.ZIP_COMPRESSION + ) return rf_dataframe diff --git a/radp/client/helper.py b/radp/client/helper.py index 456a175..0b94505 100644 --- a/radp/client/helper.py +++ b/radp/client/helper.py @@ -53,7 +53,10 @@ def resolve_model_status( describe_model_response = self.radp_client.describe_model(model_id) if not describe_model_response[constants.MODEL_EXISTS]: print_if_verbose("Model not yet created", verbose) - elif describe_model_response[constants.MODEL_STATUS] != constants.MODEL_TRAINED: + elif ( + describe_model_response[constants.MODEL_STATUS] + != constants.MODEL_TRAINED + ): print_if_verbose("Model not yet trained", verbose) elif job_id and describe_model_response[constants.JOB_ID] != job_id: print_if_verbose("Model training job not yet complete", verbose) @@ -79,10 +82,15 @@ def resolve_simulation_status( """Resolve the status of a RADP simulation""" attempt = 0 while attempt < max_attempts: - describe_simulation_response = self.radp_client.describe_simulation(simulation_id) + describe_simulation_response = self.radp_client.describe_simulation( + simulation_id + ) if not describe_simulation_response[constants.SIMULATION_EXISTS]: print_if_verbose("Simulation not yet created", verbose) - elif describe_simulation_response[constants.SIMULATION_STATUS] != constants.SIMULATION_FINISHED: + elif ( + describe_simulation_response[constants.SIMULATION_STATUS] + != constants.SIMULATION_FINISHED + ): print_if_verbose("Simulation not yet finished", verbose) elif job_id and describe_simulation_response[constants.JOB_ID] != job_id: print_if_verbose("Simulation job not yet complete", verbose) diff --git a/radp/common/constants.py b/radp/common/constants.py index 508a647..a44ec93 100644 --- a/radp/common/constants.py +++ b/radp/common/constants.py @@ -118,7 +118,9 @@ RNG_SEED = "rng_seed" LON_X_DIMS = "lon_x_dims" LON_Y_DIMS = "lon_y_dims" -UE_TRACK_GENERATION_OUTPUTS_FOLDER = "/srv/radp/simulation_data/outputs/ue_tracks_generation" +UE_TRACK_GENERATION_OUTPUTS_FOLDER = ( + "/srv/radp/simulation_data/outputs/ue_tracks_generation" +) GAUSS_MARKOV_PARAMS = "gauss_markov_params" # Protocol Emulation related diff --git a/radp/common/helpers/file_system_helper.py b/radp/common/helpers/file_system_helper.py index 2c8b888..b3508e1 100644 --- a/radp/common/helpers/file_system_helper.py +++ b/radp/common/helpers/file_system_helper.py @@ -40,7 +40,9 @@ def gen_simulation_metadata_file_path(simulation_id: str) -> str: @staticmethod def gen_simulation_ue_data_file_path(simulation_id: str) -> str: """Helper method to generated simulation ue data file path""" - simulation_directory = RADPFileSystemHelper.gen_simulation_directory(simulation_id) + simulation_directory = RADPFileSystemHelper.gen_simulation_directory( + simulation_id + ) return os.path.join( simulation_directory, f"{constants.UE_DATA_FILE_NAME}.{constants.DF_FILE_EXTENSION}", @@ -49,7 +51,9 @@ def gen_simulation_ue_data_file_path(simulation_id: str) -> str: @staticmethod def gen_simulation_cell_config_file_path(simulation_id: str) -> str: """Helper method to generated simulation config file path""" - simulation_directory = RADPFileSystemHelper.gen_simulation_directory(simulation_id) + simulation_directory = RADPFileSystemHelper.gen_simulation_directory( + simulation_id + ) return os.path.join( simulation_directory, f"{constants.CONFIG_FILE_NAME}.{constants.DF_FILE_EXTENSION}", @@ -58,24 +62,32 @@ def gen_simulation_cell_config_file_path(simulation_id: str) -> str: @staticmethod def load_simulation_metadata(simulation_id: str) -> Dict: """Helper method to load simulation metadata to an object""" - metadata_file_path = RADPFileSystemHelper.gen_simulation_metadata_file_path(simulation_id) + metadata_file_path = RADPFileSystemHelper.gen_simulation_metadata_file_path( + simulation_id + ) try: with open(metadata_file_path, "r") as json_file: return json.load(json_file) except Exception as e: - logger.exception(f"Exception occurred while loading metadata for simulation: {simulation_id}: {e}") + logger.exception( + f"Exception occurred while loading metadata for simulation: {simulation_id}: {e}" + ) raise e @staticmethod def save_simulation_metadata(sim_metadata: Dict, simulation_id: str): """Helper method to save simulation metadata to file""" - metadata_file_path = RADPFileSystemHelper.gen_simulation_metadata_file_path(simulation_id) + metadata_file_path = RADPFileSystemHelper.gen_simulation_metadata_file_path( + simulation_id + ) try: with atomic_write(metadata_file_path, "w") as json_file: json.dump(sim_metadata, json_file) except Exception as e: - logger.exception(f"Exception occurred while saving metadata for simulation: {simulation_id}: {e}") + logger.exception( + f"Exception occurred while saving metadata for simulation: {simulation_id}: {e}" + ) raise e @staticmethod @@ -84,7 +96,9 @@ def save_simulation_ue_data(simulation_id: str, ue_data_file_path: str): ue_data_file_path - file path of ue data csv file passed in by user """ - sim_ue_data_file_path = RADPFileSystemHelper.gen_simulation_ue_data_file_path(simulation_id) + sim_ue_data_file_path = RADPFileSystemHelper.gen_simulation_ue_data_file_path( + simulation_id + ) try: # load UE data df and save to feather format with open(ue_data_file_path, "r") as csv_file: @@ -101,7 +115,9 @@ def save_simulation_cell_config(simulation_id: str, config_file_path: str): config_file_path - file path of config csv file passed in by user """ - sim_config_file_path = RADPFileSystemHelper.gen_simulation_cell_config_file_path(simulation_id) + sim_config_file_path = ( + RADPFileSystemHelper.gen_simulation_cell_config_file_path(simulation_id) + ) try: # load config df and save to feather format @@ -128,7 +144,9 @@ def hash_val_found_in_output_folder(stage: SimulationStage, hash_val: str) -> bo return False @staticmethod - def gen_stage_output_file_path(stage: SimulationStage, hash_val: str, batch: int) -> str: + def gen_stage_output_file_path( + stage: SimulationStage, hash_val: str, batch: int + ) -> str: """Helper method to generate a file path for a specific stage output""" stage_output_folder = os.path.join( constants.SIMULATION_DATA_FOLDER, @@ -142,8 +160,12 @@ def gen_stage_output_file_path(stage: SimulationStage, hash_val: str, batch: int def gen_sim_output_zip_file_path(simulation_id: str, include_ext=True): """Generate the zip file path for a given simulation""" zip_file_name = f"{simulation_id}-{constants.SIM_OUTPUT_FILE_SUFFIX}" - zip_file_name = zip_file_name + (f".{constants.SIM_OUTPUT_FILE_EXTENSION}" if include_ext else "") - return os.path.join(constants.SIMULATION_DATA_FOLDER, simulation_id, zip_file_name) + zip_file_name = zip_file_name + ( + f".{constants.SIM_OUTPUT_FILE_EXTENSION}" if include_ext else "" + ) + return os.path.join( + constants.SIMULATION_DATA_FOLDER, simulation_id, zip_file_name + ) @staticmethod def gen_sim_output_directory(simulation_id: str): @@ -167,7 +189,9 @@ def zip_output_files_to_simulation_folder_as_csvs( stage_output_file_paths = RADPFileSystemHelper.get_stage_output_file_paths( stage=stage, hash_val=hash_val, num_batches=num_batches ) - simulation_output_directory = RADPFileSystemHelper.gen_sim_output_directory(simulation_id) + simulation_output_directory = RADPFileSystemHelper.gen_sim_output_directory( + simulation_id + ) # create output directory if it does not already exist if not os.path.exists(simulation_output_directory): @@ -187,11 +211,15 @@ def zip_output_files_to_simulation_folder_as_csvs( output_df = read_feather_df(fp) output_df.to_csv(new_file_path, index=False) except Exception as e: - logger.exception("Exception occurred while writing csv's to output folder") + logger.exception( + "Exception occurred while writing csv's to output folder" + ) raise e # get the zip file path - zip_file_path = RADPFileSystemHelper.gen_sim_output_zip_file_path(simulation_id, include_ext=False) + zip_file_path = RADPFileSystemHelper.gen_sim_output_zip_file_path( + simulation_id, include_ext=False + ) try: # chdir to simulation output directory to only zip files @@ -203,11 +231,15 @@ def zip_output_files_to_simulation_folder_as_csvs( ) logger.info(f"Zipped output files to {zip_file_path}") except Exception as e: - logger.exception(f"Exception occurred zipping files in simulation: {simulation_id}: {e}") + logger.exception( + f"Exception occurred zipping files in simulation: {simulation_id}: {e}" + ) raise e @staticmethod - def get_stage_output_file_paths(stage: SimulationStage, hash_val: str, num_batches: int) -> List[str]: + def get_stage_output_file_paths( + stage: SimulationStage, hash_val: str, num_batches: int + ) -> List[str]: """Helper method to get list of output files for a stage""" # get output folder stage_output_folder = os.path.join( @@ -220,11 +252,14 @@ def get_stage_output_file_paths(stage: SimulationStage, hash_val: str, num_batch file_name = f"{stage.value}-{hash_val}" file_path_without_batch = os.path.join(stage_output_folder, file_name) return [ - f"{file_path_without_batch}-{batch}.{constants.DF_FILE_EXTENSION}" for batch in range(1, num_batches + 1) + f"{file_path_without_batch}-{batch}.{constants.DF_FILE_EXTENSION}" + for batch in range(1, num_batches + 1) ] @staticmethod - def clear_output_data_from_stage(stage: SimulationStage, save_hash_val: Optional[str]): + def clear_output_data_from_stage( + stage: SimulationStage, save_hash_val: Optional[str] + ): """ Clear the output from a stage unless it contains the save hash value @@ -256,9 +291,13 @@ def clear_output_data_from_stage(stage: SimulationStage, save_hash_val: Optional file_path = os.path.join(stage_output_folder, file_name) os.remove(file_path) delete_count += 1 - logger.info(f"Cleared {delete_count} unused outputs from stage: {stage.value}") + logger.info( + f"Cleared {delete_count} unused outputs from stage: {stage.value}" + ) except Exception as e: - logger.exception(f"Exception occurred while deleting outputs in stage: {stage.value}") + logger.exception( + f"Exception occurred while deleting outputs in stage: {stage.value}" + ) raise e @staticmethod @@ -324,7 +363,9 @@ def load_model_metadata(model_id: str) -> Dict: logger.debug(f"Loaded metadata for model: {model_id}") return metadata except Exception as e: - logger.exception(f"Exception occurred loading metadata for model: {model_id}") + logger.exception( + f"Exception occurred loading metadata for model: {model_id}" + ) raise e @staticmethod @@ -345,7 +386,9 @@ def save_model_metadata(model_id: str, model_metadata: Dict): json.dump(model_metadata, json_file) logger.debug(f"Saved metadata for model: {model_id}") except Exception as e: - logger.exception(f"Exception occurred loading metadata for model: {model_id}") + logger.exception( + f"Exception occurred loading metadata for model: {model_id}" + ) raise e @staticmethod diff --git a/radp/common/tests/helpers/test_file_system_helper.py b/radp/common/tests/helpers/test_file_system_helper.py index d6ddf6c..6b82e54 100644 --- a/radp/common/tests/helpers/test_file_system_helper.py +++ b/radp/common/tests/helpers/test_file_system_helper.py @@ -20,8 +20,12 @@ class TestRADPFileSystemHelper(TestCase): "/dummy_simulation_data_folder_path", ) def test_gen_simulation_directory(self): - simulation_directory = RADPFileSystemHelper.gen_simulation_directory(simulation_id="dummy_simulation") - self.assertEqual(simulation_directory, "/dummy_simulation_data_folder_path/dummy_simulation") + simulation_directory = RADPFileSystemHelper.gen_simulation_directory( + simulation_id="dummy_simulation" + ) + self.assertEqual( + simulation_directory, "/dummy_simulation_data_folder_path/dummy_simulation" + ) @patch( "radp.common.helpers.file_system_helper.constants.SIMULATION_DATA_FOLDER", @@ -58,8 +62,10 @@ def test_gen_simulation_metadata_file_path(self): "dummy_df_file_extension", ) def test_gen_simulation_ue_data_file_path(self): - simulation_ue_data_file_path = RADPFileSystemHelper.gen_simulation_ue_data_file_path( - simulation_id="dummy_simulation" + simulation_ue_data_file_path = ( + RADPFileSystemHelper.gen_simulation_ue_data_file_path( + simulation_id="dummy_simulation" + ) ) self.assertEqual( simulation_ue_data_file_path, @@ -79,8 +85,10 @@ def test_gen_simulation_ue_data_file_path(self): "dummy_df_file_extension", ) def test_gen_simulation_cell_config_file_path(self): - simulation_cell_config_file_path = RADPFileSystemHelper.gen_simulation_cell_config_file_path( - simulation_id="dummy_simulation" + simulation_cell_config_file_path = ( + RADPFileSystemHelper.gen_simulation_cell_config_file_path( + simulation_id="dummy_simulation" + ) ) self.assertEqual( simulation_cell_config_file_path, @@ -89,7 +97,9 @@ def test_gen_simulation_cell_config_file_path(self): # replace builtins.open with a mocked open operation @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path" + ) def test_load_simulation_metadata(self, mocked_metadata_file_path): mocked_metadata_file_path.return_value = "dummy_sim_data_file_path" self.assertEqual( @@ -102,7 +112,9 @@ def test_load_simulation_metadata(self, mocked_metadata_file_path): ) @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path" + ) def test_load_simulation_metadata_exception(self, mocked_metadata_file_path): mocked_metadata_file_path.side_effect = Exception("dummy exception!") with self.assertRaises(Exception) as e: @@ -113,41 +125,61 @@ def test_load_simulation_metadata_exception(self, mocked_metadata_file_path): @patch("radp.common.helpers.file_system_helper.atomic_write") @patch("radp.common.helpers.file_system_helper.json") def test_save_simulation_metadata(self, mocked_json, mocked_atomic_write): - RADPFileSystemHelper.save_simulation_metadata(mocked_sim_data, "dummy_simulation") + RADPFileSystemHelper.save_simulation_metadata( + mocked_sim_data, "dummy_simulation" + ) mocked_atomic_write.assert_called_once() mocked_json.dump.assert_called_once() @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_metadata_file_path" + ) def test_save_simulation_metadata_exception(self, mocked_metadata_file_path): mocked_metadata_file_path.side_effect = Exception("dummy exception!") with self.assertRaises(Exception) as e: - RADPFileSystemHelper.save_simulation_metadata(mocked_sim_data, "dummy_simulation") + RADPFileSystemHelper.save_simulation_metadata( + mocked_sim_data, "dummy_simulation" + ) self.assertEqual(str(e.exception), "dummy exception!") @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) @patch("radp.common.helpers.file_system_helper.pd.read_csv") @patch("radp.common.helpers.file_system_helper.write_feather_df") - def test_save_simulation_ue_data(self, mocked_pandas_read_csv, mocked_write_feather_df): - RADPFileSystemHelper.save_simulation_ue_data("dummy_simulation", "dummy_config_file_path") + def test_save_simulation_ue_data( + self, mocked_pandas_read_csv, mocked_write_feather_df + ): + RADPFileSystemHelper.save_simulation_ue_data( + "dummy_simulation", "dummy_config_file_path" + ) mocked_pandas_read_csv.assert_called_once() mocked_write_feather_df.assert_called_once() @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_ue_data_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_simulation_ue_data_file_path" + ) @patch("radp.common.helpers.file_system_helper.write_feather_df") - def test_save_simulation_ue_data_exception(self, mocked_simulation_ue_data_file_path, mocked_write_feather_df): + def test_save_simulation_ue_data_exception( + self, mocked_simulation_ue_data_file_path, mocked_write_feather_df + ): mocked_simulation_ue_data_file_path.side_effect = Exception("dummy exception!") with self.assertRaises(Exception) as e: - RADPFileSystemHelper.save_simulation_ue_data("dummy_simulation", "dummy_config_file_path") + RADPFileSystemHelper.save_simulation_ue_data( + "dummy_simulation", "dummy_config_file_path" + ) mocked_write_feather_df.assert_called_once() self.assertEqual(str(e.exception), "dummy exception!") @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) @patch("radp.utility.pandas_utils.atomic_write") @patch("radp.common.helpers.file_system_helper.pd.read_csv") - def test_save_simulation_cell_config(self, mocked_pandas_read_csv, mocked_atomic_write): - RADPFileSystemHelper.save_simulation_cell_config("dummy_simulation", "dummy_config_file_path") + def test_save_simulation_cell_config( + self, mocked_pandas_read_csv, mocked_atomic_write + ): + RADPFileSystemHelper.save_simulation_cell_config( + "dummy_simulation", "dummy_config_file_path" + ) mocked_atomic_write.assert_called_once() mocked_pandas_read_csv.assert_called_once() @@ -156,10 +188,16 @@ def test_save_simulation_cell_config(self, mocked_pandas_read_csv, mocked_atomic """radp.common.helpers.file_system_helper.\ RADPFileSystemHelper.gen_simulation_cell_config_file_path""" ) - def test_save_simulation_cell_config_exception(self, mocked_simulation_cell_config_file_path): - mocked_simulation_cell_config_file_path.side_effect = Exception("dummy exception!") + def test_save_simulation_cell_config_exception( + self, mocked_simulation_cell_config_file_path + ): + mocked_simulation_cell_config_file_path.side_effect = Exception( + "dummy exception!" + ) with self.assertRaises(Exception) as e: - RADPFileSystemHelper.save_simulation_cell_config("dummy_simulation", "dummy_config_file_path") + RADPFileSystemHelper.save_simulation_cell_config( + "dummy_simulation", "dummy_config_file_path" + ) self.assertEqual(str(e.exception), "dummy exception!") @patch( @@ -178,7 +216,11 @@ def test_save_simulation_cell_config_exception(self, mocked_simulation_cell_conf def test_hash_val_found_in_output_folder(self, mocked_listdir): mocked_listdir.return_value = ["dummy_dir_1", "dummy_dir_2"] dummy_stage = SimulationStage.UE_TRACKS_GENERATION - self.assertTrue(RADPFileSystemHelper.hash_val_found_in_output_folder(dummy_stage, "dummy_dir")) + self.assertTrue( + RADPFileSystemHelper.hash_val_found_in_output_folder( + dummy_stage, "dummy_dir" + ) + ) @patch( "radp.common.helpers.file_system_helper.constants.SIMULATION_DATA_FOLDER", @@ -200,7 +242,11 @@ def test_hash_val_found_in_output_folder(self, mocked_listdir): def test_hash_val_found_in_output_folder_neg(self, mocked_listdir): mocked_listdir.return_value = ["dummy_dir_1", "dummy_dir_2"] dummy_stage = SimulationStage.UE_TRACKS_GENERATION - self.assertFalse(RADPFileSystemHelper.hash_val_found_in_output_folder(dummy_stage, "dummy_other_str")) + self.assertFalse( + RADPFileSystemHelper.hash_val_found_in_output_folder( + dummy_stage, "dummy_other_str" + ) + ) @patch( "radp.common.helpers.file_system_helper.constants.SIMULATION_DATA_FOLDER", @@ -219,7 +265,9 @@ def test_gen_stage_output_file_path(self): dummy_hash_val = "dummy_hash_val" dummy_batch = 1 self.assertEqual( - RADPFileSystemHelper.gen_stage_output_file_path(dummy_stage, dummy_hash_val, dummy_batch), + RADPFileSystemHelper.gen_stage_output_file_path( + dummy_stage, dummy_hash_val, dummy_batch + ), "/dummy_simulation_data_folder_path/dummy_simulation_outputs_folder/" "ue_tracks_generation/ue_tracks_generation-dummy_hash_val-1.dummy_df_file_extension", ) @@ -253,7 +301,9 @@ def test_gen_sim_output_zip_file_path(self): ) def test_gen_sim_output_zip_file_path_neg(self): self.assertEqual( - RADPFileSystemHelper.gen_sim_output_zip_file_path("dummy_simulation", False), + RADPFileSystemHelper.gen_sim_output_zip_file_path( + "dummy_simulation", False + ), "/dummy_simulation_data_folder_path/dummy_simulation/dummy_simulation-dummy_output_file_suffix", ) @@ -305,7 +355,9 @@ def test_get_stage_output_file_paths(self): @patch("os.listdir") @patch("os.remove") - def test_clear_output_data_from_stage_no_save_hash_val(self, mocked_listdir, mocked_remove): + def test_clear_output_data_from_stage_no_save_hash_val( + self, mocked_listdir, mocked_remove + ): mocked_listdir.return_value = ["dummy_file_1"] dummy_stage = SimulationStage.START RADPFileSystemHelper.clear_output_data_from_stage(dummy_stage, None) @@ -313,7 +365,9 @@ def test_clear_output_data_from_stage_no_save_hash_val(self, mocked_listdir, moc @patch("os.listdir") @patch("os.remove") - def test_clear_output_data_from_stage_with_hash_val(self, mocked_listdir, mocked_remove): + def test_clear_output_data_from_stage_with_hash_val( + self, mocked_listdir, mocked_remove + ): mocked_listdir.return_value = ["dummy_file_1", "dummy_file_2"] dummy_stage = SimulationStage.START RADPFileSystemHelper.clear_output_data_from_stage(dummy_stage, "_2") @@ -429,7 +483,9 @@ def test_gen_model_topology_file_path(self): "/dummy_models_folder/dummy_model_id/dummy_topology_file_name.dummy_df_file_extension", ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_metadata_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_metadata_file_path" + ) @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) def test_load_model_metadata(self, mocked_model_metadata_file_path): mocked_model_metadata_file_path.return_value = "dummy_model_metadata_file_path" @@ -446,7 +502,9 @@ def test_load_model_metadata(self, mocked_model_metadata_file_path): mocked_sim_data, ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_metadata_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_metadata_file_path" + ) @patch("builtins.open", mock_open(read_data=json_mocked_sim_data)) def test_load_model_metadata_exception(self, mocked_model_metadata_file_path): mocked_model_metadata_file_path.side_effect = Exception("dummy exception!") @@ -488,7 +546,9 @@ def test_load_model_metadata_exception(self, mocked_model_metadata_file_path): # "dummy exception!", # ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_file_path" + ) def test_check_model_exists(self, mocked_model_file_path): model_file_path = RADPFileSystemHelper.gen_model_file_path( "dummy_model_id", @@ -500,7 +560,9 @@ def test_check_model_exists(self, mocked_model_file_path): ) ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_file_path") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.gen_model_file_path" + ) def test_check_model_exists_neg(self, mocked_model_file_path): mocked_model_file_path.side_effect = Exception("dummy exception!") with self.assertRaises(Exception) as e: @@ -512,7 +574,9 @@ def test_check_model_exists_neg(self, mocked_model_file_path): "dummy exception!", ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.load_model_metadata") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.load_model_metadata" + ) @patch( "radp.common.helpers.file_system_helper.constants.STATUS", "dummy_status", @@ -526,7 +590,9 @@ def test_get_model_status(self, mocked_model_metadata): "trained", ) - @patch("radp.common.helpers.file_system_helper.RADPFileSystemHelper.load_model_metadata") + @patch( + "radp.common.helpers.file_system_helper.RADPFileSystemHelper.load_model_metadata" + ) @patch( "radp.common.helpers.file_system_helper.constants.MODEL_TYPE", "dummy_model_type", diff --git a/radp/digital_twin/mobility/mobility.py b/radp/digital_twin/mobility/mobility.py index 3973a88..964c773 100644 --- a/radp/digital_twin/mobility/mobility.py +++ b/radp/digital_twin/mobility/mobility.py @@ -32,12 +32,16 @@ def U(rng, MIN, MAX, SAMPLES): # define a Truncated Power Law Distribution def P(rng, ALPHA, MIN, MAX, SAMPLES): - return ((MAX ** (ALPHA + 1.0) - 1.0) * rng.random(SAMPLES.shape) + 1.0) ** (1.0 / (ALPHA + 1.0)) + return ((MAX ** (ALPHA + 1.0) - 1.0) * rng.random(SAMPLES.shape) + 1.0) ** ( + 1.0 / (ALPHA + 1.0) + ) # *************** Palm state probability ********************** def pause_probability_init(pause_low, pause_high, speed_low, speed_high, dimensions): - alpha1 = ((pause_high + pause_low) * (speed_high - speed_low)) / (2 * np.log(speed_high / speed_low)) + alpha1 = ((pause_high + pause_low) * (speed_high - speed_low)) / ( + 2 * np.log(speed_high / speed_low) + ) delta1 = np.sqrt(np.sum(np.square(dimensions))) return alpha1 / (alpha1 + delta1) @@ -51,7 +55,9 @@ def residual_time(rng, mean, delta, shape=(1,)): if delta != 0.0: case_1_u = u < (2.0 * t1 / (t1 + t2)) residual[case_1_u] = u[case_1_u] * (t1 + t2) / 2.0 - residual[np.logical_not(case_1_u)] = t2 - np.sqrt((1.0 - u[np.logical_not(case_1_u)]) * (t2 * t2 - t1 * t1)) + residual[np.logical_not(case_1_u)] = t2 - np.sqrt( + (1.0 - u[np.logical_not(case_1_u)]) * (t2 * t2 - t1 * t1) + ) else: residual = u * mean return residual @@ -65,7 +71,9 @@ def initial_speed(rng, speed_mean, speed_delta, shape=(1,)): return pow(v1, u) / pow(v0, u - 1) -def init_random_waypoint(rng, nr_nodes, dimensions, speed_low, speed_high, pause_low, pause_high): +def init_random_waypoint( + rng, nr_nodes, dimensions, speed_low, speed_high, pause_low, pause_high +): ndim = len(dimensions) positions = np.empty((nr_nodes, ndim)) waypoints = np.empty((nr_nodes, ndim)) @@ -76,11 +84,17 @@ def init_random_waypoint(rng, nr_nodes, dimensions, speed_low, speed_high, pause speed_high = float(speed_high) moving = np.ones(nr_nodes) - speed_mean, speed_delta = (speed_low + speed_high) / 2.0, (speed_high - speed_low) / 2.0 - pause_mean, pause_delta = (pause_low + pause_high) / 2.0, (pause_high - pause_low) / 2.0 + speed_mean, speed_delta = (speed_low + speed_high) / 2.0, ( + speed_high - speed_low + ) / 2.0 + pause_mean, pause_delta = (pause_low + pause_high) / 2.0, ( + pause_high - pause_low + ) / 2.0 # steady-state pause probability for Random Waypoint - q0 = pause_probability_init(pause_low, pause_high, speed_low, speed_high, dimensions) + q0 = pause_probability_init( + pause_low, pause_high, speed_low, speed_high, dimensions + ) for i in range(nr_nodes): while True: @@ -109,7 +123,9 @@ def init_random_waypoint(rng, nr_nodes, dimensions, speed_low, speed_high, pause # steady-state speed and pause time paused_bool = moving == 0.0 paused_idx = np.where(paused_bool)[0] - pause_time[paused_idx] = residual_time(rng, pause_mean, pause_delta, paused_idx.shape) + pause_time[paused_idx] = residual_time( + rng, pause_mean, pause_delta, paused_idx.shape + ) speed[paused_idx] = 0.0 moving_bool = np.logical_not(paused_bool) @@ -219,7 +235,9 @@ def __iter__(self): velocity[arrived] = U(self.rng, MIN_V, MAX_V, arrived) new_direction = waypoints[arrived] - positions[arrived] - direction[arrived] = new_direction / np.linalg.norm(new_direction, axis=1)[:, np.newaxis] + direction[arrived] = ( + new_direction / np.linalg.norm(new_direction, axis=1)[:, np.newaxis] + ) self.velocity = velocity self.wt = wt @@ -652,7 +670,10 @@ def __init__( FL_MIN = FL_MAX / 10.0 def FL_DISTR(SAMPLES): - return rng.random(len(SAMPLES)) * (FL_MAX[SAMPLES] - FL_MIN[SAMPLES]) + FL_MIN[SAMPLES] + return ( + rng.random(len(SAMPLES)) * (FL_MAX[SAMPLES] - FL_MIN[SAMPLES]) + + FL_MIN[SAMPLES] + ) def WT_DISTR(SAMPLES): return P(rng, WT_EXP, 1.0, WT_MAX, SAMPLES) @@ -747,7 +768,9 @@ def gauss_markov( old_num_users = num_users num_users = int(num_users / len(anchor_loc)) * len(anchor_loc) if old_num_users != num_users: - logging.info("len(anchor_loc) must evenly divide num_users.....terminating....") + logging.info( + "len(anchor_loc) must evenly divide num_users.....terminating...." + ) return num_users_per_anchor = int(num_users / len(anchor_loc)) @@ -790,9 +813,17 @@ def gauss_markov( angle_mean[b] = -angle_mean[b] # calculate new speed and direction based on the model - velocity = alpha * velocity + alpha2 * velocity_mean + alpha3 * rng.normal(0.0, 1.0, num_users) + velocity = ( + alpha * velocity + + alpha2 * velocity_mean + + alpha3 * rng.normal(0.0, 1.0, num_users) + ) - theta = alpha * theta + alpha2 * angle_mean + alpha3 * rng.normal(0.0, 1.0, num_users) + theta = ( + alpha * theta + + alpha2 * angle_mean + + alpha3 * rng.normal(0.0, 1.0, num_users) + ) yield np.dstack((x, y))[0] @@ -814,7 +845,11 @@ def non_homogeneous_drop( user_loc = [] for anchor_it in range(num_anchors): anchor_mean = anchor_loc[anchor_it, :] - user_loc.append(rng.multivariate_normal(mean=anchor_mean, cov=cov_around_anchor, size=num_users_per_anchor)) + user_loc.append( + rng.multivariate_normal( + mean=anchor_mean, cov=cov_around_anchor, size=num_users_per_anchor + ) + ) user_loc = np.concatenate(user_loc, axis=0) diff --git a/radp/digital_twin/mobility/param_regression.py b/radp/digital_twin/mobility/param_regression.py new file mode 100644 index 0000000..5f1a5d9 --- /dev/null +++ b/radp/digital_twin/mobility/param_regression.py @@ -0,0 +1,118 @@ +import numpy as np +from scipy import optimize +from typing import Tuple + + +class ParameterRegression: + """ + A class designed for parameter regression analysis, + tailored to model the movement dynamics of user equipment (UE) using velocities and angles. + This class employs polynomial regression with a least squares optimization technique to estimate the parameter alpha. + Alpha characterizes the dependency of future states on current states, + optimizing it to minimize residuals and closely align predicted states with actual observed states. + + Attributes: + df (pd.DataFrame): The input DataFrame containing 'velocity' and 'mock_ue_id' columns which represent the velocities of the UEs and their respective identifiers. + num_users (int): Number of unique users (UEs) determined by the count of unique 'mock_ue_id'. + MAX_X (int), MAX_Y (int): Constants used as spatial boundaries or limits in computations, set to 100. + USERS (np.ndarray): Array of user indices based on the number of users. + velocity_mean (float): The mean of all velocity readings across the dataset. + variance (float): The variance of the velocity readings, used in the regression model. + rng (np.random.Generator): Random number generator with a predefined seed for reproducibility. + v_t_full_data (np.ndarray): The velocity data converted to a numpy array for processing. + f (np.poly1d): A polynomial function applied to the velocity data to simulate angle (theta) values. + v_t, theta_t (np.ndarray): Current state velocities and angles. + v_t_next, theta_t_next (np.ndarray): Subsequent state velocities and angles used for comparison and fitting. + t_array, t_next_array (np.ndarray): Arrays combining the current and next state values for velocities and angles for use in optimization. + """ + + def __init__(self, df) -> None: + """ + Initializes the ParameterRegression class with the dataset and precomputes constants and data arrays. + + Args: + df (pd.DataFrame): The DataFrame containing 'velocity' and 'mock_ue_id' columns. + """ + self.df = df + self.v_t_full_data = df["velocity"].to_numpy() + + # CONSTANTS + self.num_users = df["mock_ue_id"].nunique() + self.MAX_X, self.MAX_Y = 100, 100 + self.USERS = np.arange(self.num_users) + self.velocity_mean = np.mean(self.v_t_full_data) + self.variance = np.var(self.v_t_full_data) + self.rng = np.random.default_rng(seed=41) + + # Data + self.f = np.poly1d([8, 7, 5, 1]) + self.v_t_full = ( + self.v_t_full_data + ) # Replaces the velocity with UE generated Data. + self.v_t = self.v_t_full[:-1] + self.v_t_next = self.v_t_full[1:] + + self.theta_t_full = self.f(self.v_t_full) + 6 * np.random.normal( + size=len(self.v_t_full) + ) + self.theta_t = self.theta_t_full[:-1] + self.theta_t_next = self.theta_t_full[1:] + + self.t_array = np.array((self.v_t, self.theta_t)) + self.t_next_array = np.array((self.v_t_next, self.theta_t_next)) + + def model_function(self, alpha: float, x: np.ndarray) -> np.ndarray: + """ + Computes the next velocity and angle values based on the current ones, using a given alpha. + + Args: + alpha (float): The parameter used for regression. + x (np.ndarray): A 2D array where the first row is velocities (v_t) and the second row is angles (theta_t). + + Returns: + np.ndarray: A 2D array with predicted next velocities and angles. + """ + v_t, theta_t = x[0], x[1] + alpha2 = 1.0 - alpha + alpha3 = np.sqrt(1.0 - alpha * alpha) * self.variance + v_t_next = ( + alpha * v_t + alpha2 * self.velocity_mean + alpha3 * np.random.normal() + ) + angle_mean = theta_t # Simplified model without margin correction + theta_t_next = ( + alpha * theta_t + alpha2 * angle_mean + alpha3 * np.random.normal() + ) + return np.array([v_t_next, theta_t_next]) + + def residual_vector( + self, alpha: float, t: np.ndarray, t_next: np.ndarray + ) -> np.ndarray: + """ + Computes the residuals between the predicted next state and the actual next state. + + Args: + alpha (float): The parameter being optimized. + t (np.ndarray): The current state (velocities and angles). + t_next (np.ndarray): The next state to compare against (velocities and angles). + + Returns: + np.ndarray: A flattened array of residuals (differences) between predicted and actual next states. + """ + return (self.model_function(alpha, t) - t_next).flatten() + + def optimize_alpha(self, alpha0: float) -> Tuple[np.ndarray, np.ndarray]: + """ + Optimizes the alpha parameter using least-squares fitting to minimize the residuals between the predicted and actual states. + + Args: + alpha0 (float): The initial guess for alpha. + + Returns: + Tuple[np.ndarray, np.ndarray]: + - popt: Optimized alpha value. + - pcov: Covariance of the optimized parameter. + """ + popt, pcov = optimize.leastsq( + self.residual_vector, alpha0, args=(self.t_array, self.t_next_array) + ) + return popt, pcov diff --git a/radp/digital_twin/mobility/tests/test_param_regression.py b/radp/digital_twin/mobility/tests/test_param_regression.py new file mode 100644 index 0000000..c1d4e4f --- /dev/null +++ b/radp/digital_twin/mobility/tests/test_param_regression.py @@ -0,0 +1,104 @@ +import unittest +import numpy as np +import pandas as pd + +from radp.digital_twin.mobility.param_regression import ParameterRegression + + +class TestParameterRegression(unittest.TestCase): + def setUp(self) -> None: + """ + Set up a mock DataFrame for testing the ParameterRegression class. + + Initializes a DataFrame with random 'mock_ue_id' and 'velocity' values, + and creates an instance of ParameterRegression using this DataFrame. + + How to Run: + ------------ + To run these tests, execute the following command in your terminal: + ``` + python3 -m unittest radp/digital_twin/mobility/tests/test_parameter_regression.py + ``` + """ + data = { + "mock_ue_id": np.random.randint(0, 10, size=100), + "velocity": np.random.uniform(0, 100, size=100), + } + self.df = pd.DataFrame(data) + self.model = ParameterRegression(self.df) + + def test_model_function_output_shape(self) -> None: + """ + Test that model_function returns an output with the correct shape. + + Asserts that the output shape of the model_function matches the expected shape, + which is (2, len(self.model.v_t)). + """ + alpha = 0.5 + x = np.array([self.model.v_t, self.model.theta_t]) + result = self.model.model_function(alpha, x) + + self.assertEqual(result.shape, (2, len(self.model.v_t))) + + def test_residual_vector_output_shape(self) -> None: + """ + Test that residual_vector returns a 1D array with the correct shape. + + Asserts that the shape of the residuals returned from residual_vector matches + the expected shape of (2 * len(self.model.v_t),). + """ + alpha = 0.5 + t = np.array([self.model.v_t, self.model.theta_t]) + t_next = np.array([self.model.v_t_next, self.model.theta_t_next]) + result = self.model.residual_vector(alpha, t, t_next) + + self.assertEqual(result.shape, (2 * len(self.model.v_t),)) + + def test_optimize_alpha_output(self) -> None: + """ + Test that optimize_alpha returns an optimized alpha and a covariance matrix. + + Asserts that popt is an instance of np.ndarray and pcov is also an instance + of np.ndarray. Additionally checks that popt contains a single optimized value. + """ + alpha0 = [0.8] + popt, pcov = self.model.optimize_alpha(alpha0) + + self.assertIsInstance(popt, np.ndarray) + self.assertIsInstance(pcov, int) + + self.assertEqual(len(popt), 1) + + def test_velocity_mean_calculation(self) -> None: + """ + Test that the velocity mean is calculated correctly. + + Asserts that the calculated mean of the velocity in the model matches the + expected mean calculated from the DataFrame. + """ + expected_mean = np.mean(self.df["velocity"].to_numpy()) + self.assertAlmostEqual(self.model.velocity_mean, expected_mean, places=5) + + def test_variance_calculation(self) -> None: + """ + Test that the variance of velocity is calculated correctly. + + Asserts that the calculated variance of the velocity in the model matches the + expected variance calculated from the DataFrame. + """ + expected_variance = np.var(self.df["velocity"].to_numpy()) + self.assertAlmostEqual(self.model.variance, expected_variance, places=5) + + def test_theta_t_full_calculation(self) -> None: + """ + Test that theta_t_full is calculated correctly with added noise. + + Asserts that the shape of the calculated theta_t_full matches the expected shape + after applying the polynomial function and adding noise. + """ + f = np.poly1d([8, 7, 5, 1]) + expected_theta_t_full = f(self.model.v_t_full) + 6 * np.random.normal( + size=len(self.model.v_t_full) + ) + + self.assertEqual(self.model.theta_t_full.shape, expected_theta_t_full.shape) diff --git a/radp/digital_twin/mobility/tests/test_ue_tracks_generation_helper.py b/radp/digital_twin/mobility/tests/test_ue_tracks_generation_helper.py new file mode 100644 index 0000000..57b054c --- /dev/null +++ b/radp/digital_twin/mobility/tests/test_ue_tracks_generation_helper.py @@ -0,0 +1,143 @@ +import unittest +from services.ue_tracks_generation.ue_tracks_generation_helper import ( + UETracksGenerationHelper, +) +from radp.common import constants + + +class TestUETracksGenerationHelper(unittest.TestCase): + """ + Unit tests for the UETracksGenerationHelper class. + + This test suite validates key functionalities of the UETracksGenerationHelper + class, which handles mobility data generation for user equipment (UE). + The tests focus on verifying: + + - Correct retrieval of simulation parameters such as simulation ID, number + of ticks, and batches. + - Proper generation of output file prefixes. + - Accurate calculation of UE class distributions (counts and velocities). + - Correct geographic boundary values for latitude and longitude. + - Accuracy of Gauss-Markov model parameters, specifically the alpha value. + + Mock data is used to simulate job configurations and expected outputs. + + How to Run: + ------------ + To run these tests, execute the following command in your terminal: + ``` + python3 -m unittest radp/digital_twin/mobility/tests/test_ue_tracks_generation_helper.py + ``` + """ + + def setUp(self): + self.job_data = { + constants.SIMULATION_ID: "1234", + constants.UE_TRACKS_GENERATION: { + constants.PARAMS: { + constants.SIMULATION_TIME_INTERVAL: 5, + constants.NUM_TICKS: 100, + constants.NUM_BATCHES: 10, + constants.UE_CLASS_DISTRIBUTION: { + constants.STATIONARY: { + constants.COUNT: 10, + constants.VELOCITY: 0.0, + constants.VELOCITY_VARIANCE: 0.0, + }, + constants.PEDESTRIAN: { + constants.COUNT: 20, + constants.VELOCITY: 1.2, + constants.VELOCITY_VARIANCE: 0.1, + }, + constants.CYCLIST: { + constants.COUNT: 15, + constants.VELOCITY: 5.5, + constants.VELOCITY_VARIANCE: 0.5, + }, + constants.CAR: { + constants.COUNT: 5, + constants.VELOCITY: 20.0, + constants.VELOCITY_VARIANCE: 1.0, + }, + }, + constants.LON_LAT_BOUNDARIES: { + constants.MIN_LAT: -90.0, + constants.MAX_LAT: 90.0, + constants.MIN_LON: -180.0, + constants.MAX_LON: 180.0, + }, + constants.GAUSS_MARKOV_PARAMS: { + constants.ALPHA: 0.8, + constants.VARIANCE: 0.1, + constants.RNG_SEED: 42, + constants.LON_X_DIMS: "100", + constants.LON_Y_DIMS: "100", + }, + }, + constants.OUTPUT_FILE_PREFIX: "sim_output_", + }, + } + + def test_get_simulation_id(self): + """ + - Validates retrieval of the simulation ID. + """ + self.assertEqual( + UETracksGenerationHelper.get_simulation_id(self.job_data), "1234" + ) + + def test_get_ue_tracks_generation_parameters(self): + """ + - Ensures correct retrieval of ticks and batches. + - Verifies consistency across batches and ticks. + """ + params = UETracksGenerationHelper.get_ue_tracks_generation_parameters( + self.job_data + ) + self.assertEqual(params[constants.NUM_TICKS], 100) + self.assertEqual(params[constants.NUM_BATCHES], 10) + + def test_get_output_file_prefix(self): + """ + - Validates retrieval of the output file prefix. + """ + self.assertEqual( + UETracksGenerationHelper.get_output_file_prefix(self.job_data), + "sim_output_", + ) + + def test_get_ue_class_distribution_count(self): + """ + - Validates that the class distribution counts are correctly retrieved. + """ + counts = UETracksGenerationHelper.get_ue_class_distribution_count( + self.job_data[constants.UE_TRACKS_GENERATION][constants.PARAMS] + ) + self.assertEqual(counts, (10, 20, 15, 5)) + + def test_get_ue_class_distribution_velocity(self): + """ + - Validates that the class distribution velocities are correctly calculated. + """ + velocities = UETracksGenerationHelper.get_ue_class_distribution_velocity( + self.job_data[constants.UE_TRACKS_GENERATION][constants.PARAMS], 5 + ) + self.assertEqual(velocities, (0.0, 6.0, 27.5, 100.0)) + + def test_get_lat_lon_boundaries(self): + """ + - Validates that the latitude and longitude boundaries are correctly retrieved. + """ + boundaries = UETracksGenerationHelper.get_lat_lon_boundaries( + self.job_data[constants.UE_TRACKS_GENERATION][constants.PARAMS] + ) + self.assertEqual(boundaries, (-90.0, 90.0, -180.0, 180.0)) + + def test_get_gauss_markov_alpha(self): + """ + - Validates that the Gauss-Markov alpha value is correctly retrieved. + """ + alpha = UETracksGenerationHelper.get_gauss_markov_alpha( + self.job_data[constants.UE_TRACKS_GENERATION][constants.PARAMS] + ) + self.assertEqual(alpha, 0.8) diff --git a/radp/digital_twin/mobility/tests/test_ue_tracks_params.py b/radp/digital_twin/mobility/tests/test_ue_tracks_params.py new file mode 100644 index 0000000..1afc9f9 --- /dev/null +++ b/radp/digital_twin/mobility/tests/test_ue_tracks_params.py @@ -0,0 +1,145 @@ +import unittest +from radp.digital_twin.mobility.ue_tracks_params import UETracksGenerationParams +from services.ue_tracks_generation.ue_tracks_generation_helper import ( + UETracksGenerationHelper, +) +from radp.common import constants +from radp.digital_twin.mobility.ue_tracks import MobilityClass +from unittest.mock import patch + + +class TestUETracksParams(unittest.TestCase): + """ + Unit tests for the UETracksGenerationParams class. + + Tests the initialization and attribute extraction of UETracksGenerationParams + from valid parameter configurations, ensuring correct handling of mobility class + distributions and velocities. + + How to Run: + ------------ + To run these tests, execute the following command in your terminal: + ``` + python3 -m unittest radp/digital_twin/mobility/tests/test_ue_tracks_params.py + ``` + """ + + def setUp(self) -> None: + self.valid_params = { + constants.UE_TRACKS_GENERATION: { + constants.PARAMS: { + constants.SIMULATION_DURATION: 3600, + constants.SIMULATION_TIME_INTERVAL: 0.01, + constants.NUM_TICKS: 100, + constants.NUM_BATCHES: 10, + constants.UE_CLASS_DISTRIBUTION: { + constants.STATIONARY: { + constants.COUNT: 10, + constants.VELOCITY: 1, + constants.VELOCITY_VARIANCE: 1, + }, + constants.PEDESTRIAN: { + constants.COUNT: 10, + constants.VELOCITY: 1, + constants.VELOCITY_VARIANCE: 1, + }, + constants.CYCLIST: { + constants.COUNT: 10, + constants.VELOCITY: 1, + constants.VELOCITY_VARIANCE: 1, + }, + constants.CAR: { + constants.COUNT: 10, + constants.VELOCITY: 1, + constants.VELOCITY_VARIANCE: 1, + }, + }, + constants.LON_LAT_BOUNDARIES: { + constants.MIN_LAT: -90, + constants.MAX_LAT: 90, + constants.MIN_LON: -180, + constants.MAX_LON: 180, + }, + constants.GAUSS_MARKOV_PARAMS: { + constants.ALPHA: 0.5, + constants.VARIANCE: 0.8, + constants.RNG_SEED: 42, + constants.LON_X_DIMS: 100, + constants.LON_Y_DIMS: 100, + }, + } + } + } + + @patch.object(UETracksGenerationHelper, "get_ue_class_distribution_count") + @patch.object(UETracksGenerationHelper, "get_ue_class_distribution_velocity") + @patch.object( + UETracksGenerationHelper, "get_ue_class_distribution_velocity_variances" + ) + def test_initialization_and_extraction( + self, mock_velocity_variances, mock_velocity, mock_count + ) -> None: + """ + Test the initialization and attribute extraction of UETracksGenerationParams. + + Args: + mock_velocity_variances: Mock for velocity variances method. + mock_velocity: Mock for velocity method. + mock_count: Mock for count method. + + Returns: + None + """ + # Set up the mock return values + mock_count.return_value = (10, 10, 10, 10) + mock_velocity.return_value = (1, 1, 1, 1) + mock_velocity_variances.return_value = (1, 1, 1, 1) + + # Initialize the UETracksGenerationParams object + params = UETracksGenerationParams(self.valid_params) + + # Assert attributes are set correctly + self.assertEqual(params.rng_seed, 42) + self.assertEqual(params.num_batches, 10) + self.assertEqual(params.lon_x_dims, 100) + self.assertEqual(params.lon_y_dims, 100) + self.assertEqual(params.num_ticks, 100) + self.assertEqual(params.num_UEs, 40) # 10 + 10 + 10 + 10 + self.assertEqual(params.alpha, 0.5) + self.assertEqual(params.variance, 0.8) + self.assertEqual(params.min_lat, -90) + self.assertEqual(params.max_lat, 90) + self.assertEqual(params.min_lon, -180) + self.assertEqual(params.max_lon, 180) + + # Assert mobility class distributions using the MobilityClass Enum + self.assertAlmostEqual( + params.mobility_class_distribution[MobilityClass.stationary], 10 / 40 + ) + self.assertAlmostEqual( + params.mobility_class_distribution[MobilityClass.pedestrian], 10 / 40 + ) + self.assertAlmostEqual( + params.mobility_class_distribution[MobilityClass.cyclist], 10 / 40 + ) + self.assertAlmostEqual( + params.mobility_class_distribution[MobilityClass.car], 10 / 40 + ) + + # Assert mobility class velocities + self.assertEqual(params.mobility_class_velocities[MobilityClass.stationary], 1) + self.assertEqual(params.mobility_class_velocities[MobilityClass.pedestrian], 1) + self.assertEqual(params.mobility_class_velocities[MobilityClass.cyclist], 1) + self.assertEqual(params.mobility_class_velocities[MobilityClass.car], 1) + + # Assert mobility class velocity variances + self.assertEqual( + params.mobility_class_velocity_variances[MobilityClass.stationary], 1 + ) + self.assertEqual( + params.mobility_class_velocity_variances[MobilityClass.pedestrian], 1 + ) + self.assertEqual( + params.mobility_class_velocity_variances[MobilityClass.cyclist], 1 + ) + self.assertEqual(params.mobility_class_velocity_variances[MobilityClass.car], 1) diff --git a/radp/digital_twin/mobility/ue_tracks.py b/radp/digital_twin/mobility/ue_tracks.py index 8efca99..2473291 100644 --- a/radp/digital_twin/mobility/ue_tracks.py +++ b/radp/digital_twin/mobility/ue_tracks.py @@ -4,11 +4,15 @@ # LICENSE file in the root directory of this source tree. from enum import Enum -from typing import Dict, Generator, List +from typing import Dict, Generator, List, Any +import itertools import numpy as np +import pandas as pd from radp.digital_twin.mobility.mobility import gauss_markov +from radp.common import constants +from radp.digital_twin.utils.gis_tools import GISTools class MobilityClass(Enum): @@ -94,7 +98,10 @@ def __init__( self.mobility_class_velocity_variances = mobility_class_velocity_variances self.sampled_users_per_mobility_class = self.rng.choice( - [mobility_class.value for mobility_class in list(self.mobility_class_distribution.keys())], + [ + mobility_class.value + for mobility_class in list(self.mobility_class_distribution.keys()) + ], size=(self.num_UEs), replace=True, p=list(self.mobility_class_distribution.values()), @@ -107,9 +114,17 @@ def __init__( # mapping the count of users and the velocity ranges # across for different mobility classes for k in self.mobility_class_distribution.keys(): - self.num_users_per_mobility_class[k] = np.count_nonzero(self.sampled_users_per_mobility_class == k.value) - low = self.mobility_class_velocities[k] - self.mobility_class_velocity_variances[k] - high = self.mobility_class_velocities[k] + self.mobility_class_velocity_variances[k] + self.num_users_per_mobility_class[k] = np.count_nonzero( + self.sampled_users_per_mobility_class == k.value + ) + low = ( + self.mobility_class_velocities[k] + - self.mobility_class_velocity_variances[k] + ) + high = ( + self.mobility_class_velocities[k] + + self.mobility_class_velocity_variances[k] + ) self.velocity_range[k] = [low, high] # mapping the gauss_markov models to their respective mobility classes @@ -156,3 +171,103 @@ def generate( def close(self): for k in self.gauss_markov_models.keys(): self.gauss_markov_models[k].close() + + @staticmethod + def generate_as_lon_lat_points( + rng_seed: int, + lon_x_dims: int, + lon_y_dims: int, + num_ticks: int, + num_batches: int, + num_UEs: int, + alpha: int, + variance: int, + min_lat: float, + max_lat: float, + min_lon: float, + max_lon: float, + mobility_class_distribution: Dict[MobilityClass, float], + mobility_class_velocities: Dict[MobilityClass, float], + mobility_class_velocity_variances: Dict[MobilityClass, float], + ) -> pd.DataFrame: + """ + The mobility data generation method takes in all the parameters required to generate UE tracks + for a specified number of batches + + The UETracksGenerator uses the Gauss-Markov Mobility Model to yields batch of tracks for UEs, + corresponding to `num_ticks` number of simulation ticks, and the number of UEs + the user wants to simulate. + + Using the UETracksGenerator, the UE tracks are returned in form of a dataframe + The Dataframe is arranged as follows: + + +------------+------------+-----------+------+ + | mock_ue_id | lon | lat | tick | + +============+============+===========+======+ + | 0 | 102.219377 | 33.674572 | 0 | + | 1 | 102.415954 | 33.855534 | 0 | + | 2 | 102.545935 | 33.878075 | 0 | + | 0 | 102.297766 | 33.575942 | 1 | + | 1 | 102.362725 | 33.916477 | 1 | + | 2 | 102.080675 | 33.832793 | 1 | + +------------+------------+-----------+------+ + """ + + ue_tracks_generator = UETracksGenerator( + rng=np.random.default_rng(rng_seed), + lon_x_dims=lon_x_dims, + lon_y_dims=lon_y_dims, + num_ticks=num_ticks, + num_UEs=num_UEs, + alpha=alpha, + variance=variance, + min_lat=min_lat, + max_lat=max_lat, + min_lon=min_lon, + max_lon=max_lon, + mobility_class_distribution=mobility_class_distribution, + mobility_class_velocities=mobility_class_velocities, + mobility_class_velocity_variances=mobility_class_velocity_variances, + ) + + for _num_batches, xy_batches in enumerate(ue_tracks_generator.generate()): + ue_tracks_dataframe_dict: Dict[Any, Any] = {} + + # Extract the xy (lon, lat) points from each batch to use it in the mobility dataframe + # mock_ue_id, tick, lat, lon + mock_ue_id = [] + ticks = [] + lon: List[float] = [] + lat: List[float] = [] + + tick = 0 + for xy_batch in xy_batches: + lon_lat_pairs = GISTools.converting_xy_points_into_lonlat_pairs( + xy_points=xy_batch, + x_dim=lon_x_dims, + y_dim=lon_y_dims, + min_longitude=min_lon, + max_longitude=max_lon, + min_latitude=min_lat, + max_latitude=max_lat, + ) + + # Build list for each column/row for the UE Tracks dataframe + lon.extend(xy_points[0] for xy_points in lon_lat_pairs) + lat.extend(xy_points[1] for xy_points in lon_lat_pairs) + mock_ue_id.extend([i for i in range(num_UEs)]) + ticks.extend(list(itertools.repeat(tick, num_UEs))) + tick += 1 + + # Build dict for each column/row for the UE Tracks dataframe + ue_tracks_dataframe_dict[constants.MOCK_UE_ID] = mock_ue_id + ue_tracks_dataframe_dict[constants.LONGITUDE] = lon + ue_tracks_dataframe_dict[constants.LATITUDE] = lat + ue_tracks_dataframe_dict[constants.TICK] = ticks + + # Yield each batch as a dataframe + yield pd.DataFrame(ue_tracks_dataframe_dict) + + num_batches -= 1 + if num_batches == 0: + break diff --git a/radp/digital_twin/mobility/ue_tracks_params.py b/radp/digital_twin/mobility/ue_tracks_params.py new file mode 100644 index 0000000..e97d94e --- /dev/null +++ b/radp/digital_twin/mobility/ue_tracks_params.py @@ -0,0 +1,178 @@ +from typing import Dict + +from radp.common import constants +from radp.digital_twin.mobility.ue_tracks import MobilityClass +from services.ue_tracks_generation.ue_tracks_generation_helper import ( + UETracksGenerationHelper, +) + + +class UETracksGenerationParams: + + """ + The UETracksGenerationParams Class handles execution of the UE Tracks Generation parameters + and generates the mobility distribution for the User Equipment (UE) instances. + + The UETracksGenerationParams will take in as input an UE Tracks Generation params + with the following format: + + + "ue_tracks_generation": { + "params": { + "simulation_duration": 3600, + "simulation_time_interval": 0.01, + "num_ticks": 100, + "num_batches": 10, + "ue_class_distribution": { + "stationary": { + "count": 0, + "velocity": 1, + "velocity_variance": 1 + }, + "pedestrian": { + "count": 0, + "velocity": 1, + "velocity_variance": 1 + }, + "cyclist": { + "count": 0, + "velocity": 1, + "velocity_variance": 1 + }, + "car": { + "count": 0, + "velocity": 1, + "velocity_variance": 1 + } + }, + "lat_lon_boundaries": { + "min_lat": -90, + "max_lat": 90, + "min_lon": -180, + "max_lon": 180 + }, + "gauss_markov_params": { + "alpha": 0.5, + "variance": 0.8, + "rng_seed": 42, + "lon_x_dims": 100, + "lon_y_dims": 100 + "// TODO": "Account for supporting the user choosing the anchor_loc and cov_around_anchor.", + "// Current implementation": "the UE Tracks generator will not be using these values.", + "// anchor_loc": {}, + "// cov_around_anchor": {} + } + } + } + + Attributes: + rng_seed (int): Seed for the random number generator. + num_batches (int): Number of batches to generate. + lon_x_dims (int): Longitudinal dimension for x-coordinates. + lon_y_dims (int): Longitudinal dimension for y-coordinates. + num_ticks (int): Number of ticks per batch. + num_UEs (int): Number of User Equipment (UE) instances. + alpha (float): Alpha parameter for the Gauss-Markov mobility model. + variance (float): Variance parameter for the Gauss-Markov mobility model. + min_lat (float): Minimum latitude boundary. + max_lat (float): Maximum latitude boundary. + min_lon (float): Minimum longitude boundary. + max_lon (float): Maximum longitude boundary. + mobility_class_distribution (Dict[MobilityClass, float]): Distribution of mobility classes. + mobility_class_velocities (Dict[MobilityClass, float]): Average velocities for each mobility class. + mobility_class_velocity_variances (Dict[MobilityClass, float]): Variance of velocities for each mobility class. + + """ + + def __init__(self, params: Dict): + self.params = params[constants.UE_TRACKS_GENERATION][constants.PARAMS] + self.rng_seed = self.params[constants.GAUSS_MARKOV_PARAMS][constants.RNG_SEED] + self.num_batches = self.params[constants.NUM_BATCHES] + self.lon_x_dims = self.params[constants.GAUSS_MARKOV_PARAMS][ + constants.LON_X_DIMS + ] + self.lon_y_dims = self.params[constants.GAUSS_MARKOV_PARAMS][ + constants.LON_Y_DIMS + ] + self.num_ticks = self.params[constants.NUM_TICKS] + self.num_UEs = self.extract_ue_class_distribution() + self.alpha = self.params[constants.GAUSS_MARKOV_PARAMS][constants.ALPHA] + self.variance = self.params[constants.GAUSS_MARKOV_PARAMS][constants.VARIANCE] + self.min_lat = self.params[constants.LON_LAT_BOUNDARIES][constants.MIN_LAT] + self.max_lat = self.params[constants.LON_LAT_BOUNDARIES][constants.MAX_LAT] + self.min_lon = self.params[constants.LON_LAT_BOUNDARIES][constants.MIN_LON] + self.max_lon = self.params[constants.LON_LAT_BOUNDARIES][constants.MAX_LON] + self.extract_ue_class_distribution() # Initialize the method to extract the UE class distribution + + def extract_ue_class_distribution(self): + """ + Processes and calculates UE class distribution, velocities, and variances from the parameters. + """ + + simulation_time_interval = self.params[constants.SIMULATION_TIME_INTERVAL] + + # Get the total number of UEs from the UE class distribution and add them up + ( + stationary_count, + pedestrian_count, + cyclist_count, + car_count, + ) = UETracksGenerationHelper.get_ue_class_distribution_count(self.params) + + self.num_UEs = stationary_count + pedestrian_count + cyclist_count + car_count + + # Calculate the mobility class distribution as provided + stationary_distribution = stationary_count / self.num_UEs + pedestrian_distribution = pedestrian_count / self.num_UEs + cyclist_distribution = cyclist_count / self.num_UEs + car_distribution = car_count / self.num_UEs + + # Create the mobility class distribution dictionary + self.mobility_class_distribution = { + MobilityClass.stationary: stationary_distribution, + MobilityClass.pedestrian: pedestrian_distribution, + MobilityClass.cyclist: cyclist_distribution, + MobilityClass.car: car_distribution, + } + + # Calculate the velocity class for each UE class + # Each velocity class will be calculated according to the simulation_time_interval provided by the user, + # which indicates the unit of time in seconds. + # Each grid here defined in the mobility model is assumed to be 1 meter + # Hence the velocity will have a unit of m/s (meter/second) + ( + stationary_velocity, + pedestrian_velocity, + cyclist_velocity, + car_velocity, + ) = UETracksGenerationHelper.get_ue_class_distribution_velocity( + self.params, simulation_time_interval + ) + + self.mobility_class_velocities = { + MobilityClass.stationary: stationary_velocity, + MobilityClass.pedestrian: pedestrian_velocity, + MobilityClass.cyclist: cyclist_velocity, + MobilityClass.car: car_velocity, + } + + # Calculate the velocity variance for each UE class + # Each velocity variance will be calculated according to the simulation_time_interval provided by the user, + # which indicates the unit of time in seconds. + # Each grid here defined in the mobility model is assumed to be 1 meter + # Hence the velocity will have a unit of m/s (meter/second) + ( + stationary_velocity_variance, + pedestrian_velocity_variance, + cyclist_velocity_variance, + car_velocity_variances, + ) = UETracksGenerationHelper.get_ue_class_distribution_velocity_variances( + self.params, simulation_time_interval + ) + + self.mobility_class_velocity_variances = { + MobilityClass.stationary: stationary_velocity_variance, + MobilityClass.pedestrian: pedestrian_velocity_variance, + MobilityClass.cyclist: cyclist_velocity_variance, + MobilityClass.car: car_velocity_variances, + } diff --git a/radp/digital_twin/requirements.txt b/radp/digital_twin/requirements.txt index a998257..b97a71a 100644 --- a/radp/digital_twin/requirements.txt +++ b/radp/digital_twin/requirements.txt @@ -5,3 +5,4 @@ pyarrow==13.0.0 scikit-learn==1.2.1 torch==2.0.0 torchvision==0.15.1 +scipy \ No newline at end of file diff --git a/radp/digital_twin/rf/bayesian/bayesian_engine.py b/radp/digital_twin/rf/bayesian/bayesian_engine.py index 8c5809b..9d93b60 100644 --- a/radp/digital_twin/rf/bayesian/bayesian_engine.py +++ b/radp/digital_twin/rf/bayesian/bayesian_engine.py @@ -116,7 +116,9 @@ def __init__( train_X, train_Y = self._create_training_tensors(data_in) # initialize likelihood and model - likelihood = gpytorch.likelihoods.GaussianLikelihood(batch_shape=torch.Size([self.num_cells])) + likelihood = gpytorch.likelihoods.GaussianLikelihood( + batch_shape=torch.Size([self.num_cells]) + ) self.model = ExactGPModel(train_X, train_Y, likelihood) @@ -127,20 +129,30 @@ def _create_training_tensors( n_train = data_in[0].shape[0] # Get train_X and train_Y, create training tensors - train_X = torch.zeros([self.num_cells, n_train, self.num_features], dtype=torch.float32) + train_X = torch.zeros( + [self.num_cells, n_train, self.num_features], dtype=torch.float32 + ) train_Y = torch.zeros([self.num_cells, n_train], dtype=torch.float32) for m in range(self.num_cells): if self.norm_method == NormMethod.MINMAX: - train_x_cell = (data_in[m][self.x_columns] - self.xmin[m]) / (self.xmax[m] - self.xmin[m]) + train_x_cell = (data_in[m][self.x_columns] - self.xmin[m]) / ( + self.xmax[m] - self.xmin[m] + ) elif self.norm_method == NormMethod.ZSCORE: - train_x_cell = (data_in[m][self.x_columns] - self.xmeans[m]) / self.xstds[m] + train_x_cell = ( + data_in[m][self.x_columns] - self.xmeans[m] + ) / self.xstds[m] - train_X_cell = torch.tensor(train_x_cell.iloc[:, :].values, dtype=torch.float32) + train_X_cell = torch.tensor( + train_x_cell.iloc[:, :].values, dtype=torch.float32 + ) train_y_cell = (data_in[m][self.y_columns] - self.ymeans[m]) / self.ystds[m] - train_Y_cell = torch.tensor(train_y_cell.iloc[:, :].values, dtype=torch.float32) + train_Y_cell = torch.tensor( + train_y_cell.iloc[:, :].values, dtype=torch.float32 + ) train_X[m] = train_X_cell.reshape(shape=(1, -1, self.num_features)) train_Y[m] = torch.transpose(train_Y_cell, 0, 1) @@ -148,7 +160,9 @@ def _create_training_tensors( return train_X, train_Y @staticmethod - def preprocess_ue_training_data(ue_training_data_df: pd.DataFrame, topology_df: pd.DataFrame) -> Dict: + def preprocess_ue_training_data( + ue_training_data_df: pd.DataFrame, topology_df: pd.DataFrame + ) -> Dict: """Preprocess UE data before training ue_training_data_df - dataframe containing location data as well as config @@ -159,7 +173,9 @@ def preprocess_ue_training_data(ue_training_data_df: pd.DataFrame, topology_df: # feature engineering -- add relative bearing and distance for i in ue_training_data_df.index: - cell_topology = topology_df[topology_df.cell_id == ue_training_data_df.at[i, "cell_id"]] + cell_topology = topology_df[ + topology_df.cell_id == ue_training_data_df.at[i, "cell_id"] + ] # change lon/lat to loc_x/loc_y in ue data ue_training_data_df.at[i, "loc_x"] = ue_training_data_df.at[i, "lon"] @@ -168,8 +184,12 @@ def preprocess_ue_training_data(ue_training_data_df: pd.DataFrame, topology_df: # add the topology columns to training data ue_training_data_df.at[i, "cell_lat"] = cell_topology.cell_lat.values[0] ue_training_data_df.at[i, "cell_lon"] = cell_topology.cell_lon.values[0] - ue_training_data_df.at[i, "cell_az_deg"] = cell_topology.cell_az_deg.values[0] - ue_training_data_df.at[i, "cell_carrier_freq_mhz"] = cell_topology.cell_carrier_freq_mhz.values[0] + ue_training_data_df.at[i, "cell_az_deg"] = cell_topology.cell_az_deg.values[ + 0 + ] + ue_training_data_df.at[ + i, "cell_carrier_freq_mhz" + ] = cell_topology.cell_carrier_freq_mhz.values[0] # engineer and add the log distance and relative bearing features ue_training_data_df.at[i, "log_distance"] = np.log( @@ -225,7 +245,9 @@ def preprocess_ue_prediction_data( for i in ue_data_df.index: # pull the config and topology for this cell cell_config = config_df[config_df.cell_id == ue_data_df.at[i, "cell_id"]] - cell_topology = topology_df[topology_df.cell_id == ue_data_df.at[i, "cell_id"]] + cell_topology = topology_df[ + topology_df.cell_id == ue_data_df.at[i, "cell_id"] + ] # change lon/lat to loc_x/loc_y in ue data ue_data_df.at[i, "loc_x"] = ue_data_df.at[i, "lon"] @@ -235,7 +257,9 @@ def preprocess_ue_prediction_data( ue_data_df.at[i, "cell_lat"] = cell_topology.cell_lat.values[0] ue_data_df.at[i, "cell_lon"] = cell_topology.cell_lon.values[0] ue_data_df.at[i, "cell_az_deg"] = cell_topology.cell_az_deg.values[0] - ue_data_df.at[i, "cell_carrier_freq_mhz"] = cell_topology.cell_carrier_freq_mhz.values[0] + ue_data_df.at[ + i, "cell_carrier_freq_mhz" + ] = cell_topology.cell_carrier_freq_mhz.values[0] # add the config columns to ue data ue_data_df.at[i, "cell_el_deg"] = cell_config.cell_el_deg.values[0] @@ -281,7 +305,9 @@ def load_model_map_from_pickle( model_map: Dict[str, BayesianDigitalTwin] = pickle.load(pickle_file) return model_map except Exception as e: - logger.exception(f"Exception occurred while loading digital twin model from file: {model_file_path}") + logger.exception( + f"Exception occurred while loading digital twin model from file: {model_file_path}" + ) raise e @staticmethod @@ -295,7 +321,9 @@ def save_model_map_to_pickle( pickle.dump(model_map, pickle_file) logger.info(f"Successfully saved model to file: {model_file_path}") except Exception as e: - logger.exception(f"Exception occurred writing digital twin model to file: {model_file_path}") + logger.exception( + f"Exception occurred writing digital twin model to file: {model_file_path}" + ) raise e @staticmethod @@ -331,9 +359,15 @@ def split_training_and_test_data( """ n_training_group = np.max([int(alpha * 0.01 * n_sim), 1]) n_test_group = n_sim - n_training_group - logger.info(f"Splitting data into {n_training_group} training and {n_test_group} test groups...") - training_data = data_in[data_in[constants.SIM_IDX] > n_test_group].reset_index(drop=True) - test_data = data_in[data_in[constants.SIM_IDX] <= n_test_group].reset_index(drop=True) + logger.info( + f"Splitting data into {n_training_group} training and {n_test_group} test groups..." + ) + training_data = data_in[data_in[constants.SIM_IDX] > n_test_group].reset_index( + drop=True + ) + test_data = data_in[data_in[constants.SIM_IDX] <= n_test_group].reset_index( + drop=True + ) stats = data_in.describe(include="all") return training_data, test_data, stats, n_training_group @@ -370,7 +404,9 @@ def create_prediction_frames( lat, lon, ) - for lat, lon in zip(prediction_frame_template.loc_y, prediction_frame_template.loc_x) + for lat, lon in zip( + prediction_frame_template.loc_y, prediction_frame_template.loc_x + ) ] prediction_df[constants.RELATIVE_BEARING] = [ @@ -381,7 +417,9 @@ def create_prediction_frames( lat, lon, ) - for lat, lon in zip(prediction_frame_template.loc_y, prediction_frame_template.loc_x) + for lat, lon in zip( + prediction_frame_template.loc_y, prediction_frame_template.loc_x + ) ] prediction_df[constants.ANTENNA_GAIN] = GISTools.get_antenna_gain( @@ -413,7 +451,9 @@ def train_distributed_gpmodel( if load_model: # Check that model path and name are both provided if not model_path or not model_name: - raise RuntimeError("Exception loading model: model_path and model_name must be provided") + raise RuntimeError( + "Exception loading model: model_path and model_name must be provided" + ) logger.info("Now loading GP model (this should be quick...)") state_dict = torch.load(model_path + model_name) self.model.load_state_dict(state_dict) @@ -423,7 +463,9 @@ def train_distributed_gpmodel( else: self.model.train() # "Loss" for GPs - the marginal log likelihood - mll = gpytorch.mlls.ExactMarginalLogLikelihood(self.model.likelihood, self.model) + mll = gpytorch.mlls.ExactMarginalLogLikelihood( + self.model.likelihood, self.model + ) optimizer = torch.optim.Adam(self.model.parameters(), lr=lr) train_X, train_Y = ( @@ -449,7 +491,10 @@ def train_distributed_gpmodel( loss_vs_iter[i] = this_loss delta = this_loss - last_loss last_loss = this_loss - logger.info("Iter %d/%d - Loss: %.3f (delta=%.6f)" % (i + 1, maxiter, this_loss, delta)) + logger.info( + "Iter %d/%d - Loss: %.3f (delta=%.6f)" + % (i + 1, maxiter, this_loss, delta) + ) if abs(delta) < stopping_threshold: logger.info("Stopping criteria met...exiting.") break @@ -458,7 +503,9 @@ def train_distributed_gpmodel( if save_model: # Check that model path and name are both provided if not model_path or not model_name: - raise RuntimeError("Exception saving model: model_path and model_name must be provided") + raise RuntimeError( + "Exception saving model: model_path and model_name must be provided" + ) if not os.path.exists(model_path): os.makedirs(model_path) torch.save(self.model.state_dict(), model_path + model_name) @@ -516,15 +563,23 @@ def predict_distributed_gpmodel( num_locations = prediction_dfs[0].shape[0] pred_means = torch.zeros([num_locations, self.num_cells], dtype=torch.float32) pred_stds = torch.zeros([num_locations, self.num_cells], dtype=torch.float32) - predict_X = torch.zeros([self.num_cells, num_locations, self.num_features], dtype=torch.float32) + predict_X = torch.zeros( + [self.num_cells, num_locations, self.num_features], dtype=torch.float32 + ) for m in range(self.num_cells): if self.norm_method == NormMethod.MINMAX: - predict_x_cell = (prediction_dfs[m][self.x_columns] - self.xmin[m]) / (self.xmax[m] - self.xmin[m]) + predict_x_cell = (prediction_dfs[m][self.x_columns] - self.xmin[m]) / ( + self.xmax[m] - self.xmin[m] + ) elif self.norm_method == NormMethod.ZSCORE: - predict_x_cell = (prediction_dfs[m][self.x_columns] - self.xmeans[m]) / self.xstds[m] + predict_x_cell = ( + prediction_dfs[m][self.x_columns] - self.xmeans[m] + ) / self.xstds[m] - predict_X_cell = torch.tensor(predict_x_cell.iloc[:, :].values, dtype=torch.float32) + predict_X_cell = torch.tensor( + predict_x_cell.iloc[:, :].values, dtype=torch.float32 + ) predict_X[m] = predict_X_cell.reshape(shape=(1, -1, self.num_features)) if self.is_cuda: diff --git a/radp/digital_twin/rf/bayesian/tests/test_bayesian_engine.py b/radp/digital_twin/rf/bayesian/tests/test_bayesian_engine.py index 860ca15..b31afbd 100644 --- a/radp/digital_twin/rf/bayesian/tests/test_bayesian_engine.py +++ b/radp/digital_twin/rf/bayesian/tests/test_bayesian_engine.py @@ -147,7 +147,9 @@ def augment_ue_data(ue_data_df: pd.DataFrame, site_configs_df: pd.DataFrame): """ for i in ue_data_df.index: - site_config = site_configs_df[site_configs_df.cell_id == ue_data_df.at[i, "cell_id"]] + site_config = site_configs_df[ + site_configs_df.cell_id == ue_data_df.at[i, "cell_id"] + ] ue_data_df.at[i, "cell_id"] = site_config.cell_id.values[0] ue_data_df.at[i, "loc_x"] = ue_data_df.at[i, "lon"] ue_data_df.at[i, "loc_y"] = ue_data_df.at[i, "lat"] @@ -155,7 +157,9 @@ def augment_ue_data(ue_data_df: pd.DataFrame, site_configs_df: pd.DataFrame): ue_data_df.at[i, "cell_lon"] = site_config.cell_lon.values[0] ue_data_df.at[i, "cell_az_deg"] = site_config.cell_az_deg.values[0] ue_data_df.at[i, "cell_el_deg"] = site_config.cell_el_deg.values[0] - ue_data_df.at[i, "cell_carrier_freq_mhz"] = site_config.cell_carrier_freq_mhz.values[0] + ue_data_df.at[ + i, "cell_carrier_freq_mhz" + ] = site_config.cell_carrier_freq_mhz.values[0] ue_data_df.at[i, "log_distance"] = GISTools.get_log_distance( ue_data_df.at[i, "cell_lat"], @@ -210,20 +214,22 @@ def setUpClass(cls): logging.info(ue_data_df) # split into training/test - cls.cell_id_training_data_map, cls.cell_id_test_data_map = split_training_and_test_data(ue_data_df, 0.2) + ( + cls.cell_id_training_data_map, + cls.cell_id_test_data_map, + ) = split_training_and_test_data(ue_data_df, 0.2) # Generate test data expected_loss_vs_iter, expected_mae and expected_mape with seed_everything(1) cls.expected_loss_vs_iter = {} cls.expected_mae = {} cls.expected_mape = {} - def produce_results_rf_bayesian_digital_twin(self): # train bayesian_digital_twin_map = {} x_max, x_min = get_x_max_and_x_min() - + for cell_id, training_data in self.cell_id_training_data_map.items(): bayesian_digital_twin_map[cell_id] = BayesianDigitalTwin( data_in=[training_data], @@ -250,19 +256,24 @@ def produce_results_rf_bayesian_digital_twin(self): # predict/test for cell_id, testing_data in self.cell_id_test_data_map.items(): - (pred_means, _) = bayesian_digital_twin_map[cell_id].predict_distributed_gpmodel( - prediction_dfs=[testing_data] - ) + (pred_means, _) = bayesian_digital_twin_map[ + cell_id + ].predict_distributed_gpmodel(prediction_dfs=[testing_data]) MAE = abs(testing_data.avg_rsrp - pred_means[0]).mean() # mean absolute percentage error - MAPE = 100 * abs((testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp).mean() + MAPE = ( + 100 + * abs( + (testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp + ).mean() + ) logging.info( f"cell_id = {cell_id}, MAE = {MAE:0.5f} dB, MAPE = {MAPE:0.5f} %," "# test points = {len(testing_data.avg_rsrp)}" ) self.expected_mae[cell_id] = MAE self.expected_mape[cell_id] = MAPE - + def test_reproducibility_of_results_for_bayesian_digital_twin(self): # produce results and re_run to verify reproducibility of result using seed(1) self.produce_results_rf_bayesian_digital_twin() @@ -270,7 +281,7 @@ def test_reproducibility_of_results_for_bayesian_digital_twin(self): bayesian_digital_twin_map = {} x_max, x_min = get_x_max_and_x_min() - + for cell_id, training_data in self.cell_id_training_data_map.items(): bayesian_digital_twin_map[cell_id] = BayesianDigitalTwin( data_in=[training_data], @@ -297,16 +308,20 @@ def test_reproducibility_of_results_for_bayesian_digital_twin(self): # predict/test for cell_id, testing_data in self.cell_id_test_data_map.items(): - (pred_means, _) = bayesian_digital_twin_map[cell_id].predict_distributed_gpmodel( - prediction_dfs=[testing_data] - ) + (pred_means, _) = bayesian_digital_twin_map[ + cell_id + ].predict_distributed_gpmodel(prediction_dfs=[testing_data]) MAE = abs(testing_data.avg_rsrp - pred_means[0]).mean() # mean absolute percentage error - MAPE = 100 * abs((testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp).mean() + MAPE = ( + 100 + * abs( + (testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp + ).mean() + ) logging.info( f"cell_id = {cell_id}, MAE = {MAE:0.5f} dB, MAPE = {MAPE:0.5f} %," "# test points = {len(testing_data.avg_rsrp)}" ) self.assertEqual(self.expected_mae[cell_id], MAE) self.assertEqual(self.expected_mape[cell_id], MAPE) - diff --git a/radp/digital_twin/utils/cell_selection.py b/radp/digital_twin/utils/cell_selection.py index 7fde4a9..14ca5bb 100644 --- a/radp/digital_twin/utils/cell_selection.py +++ b/radp/digital_twin/utils/cell_selection.py @@ -48,12 +48,14 @@ def perform_attachment( """ # initiate a dictionary to store power-by-layer dictionaries on a per-pixel basis - rx_powers_by_layer_by_loc: Dict[Tuple[float, float], Dict[float, List[Tuple[Any, float]]]] = defaultdict( - lambda: defaultdict(list) - ) + rx_powers_by_layer_by_loc: Dict[ + Tuple[float, float], Dict[float, List[Tuple[Any, float]]] + ] = defaultdict(lambda: defaultdict(list)) # pull per-cell frequencies for faster lookup - cell_id_to_freq = {row.cell_id: row.cell_carrier_freq_mhz for _, row in topology.iterrows()} + cell_id_to_freq = { + row.cell_id: row.cell_carrier_freq_mhz for _, row in topology.iterrows() + } # iterate over ue_prediction_data, to # build rx_powers_by_layer_by_loc map @@ -68,19 +70,25 @@ def perform_attachment( raise Exception("loc_x or loc_y cannot be found in the dataset") # add (cell_id, rxpower) tuple on a per-row, per-freq basis - rx_powers_by_layer_by_loc[(loc_x, loc_y)][cell_carrier_freq_mhz].append((row.cell_id, row.rxpower_dbm)) + rx_powers_by_layer_by_loc[(loc_x, loc_y)][cell_carrier_freq_mhz].append( + (row.cell_id, row.rxpower_dbm) + ) # perform cell selection per location rf_dataframe_dict = defaultdict(list) for loc, rx_powers_by_layer in rx_powers_by_layer_by_loc.items(): # compute strongest server, interference and SINR - rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer(rx_powers_by_layer) + rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer( + rx_powers_by_layer + ) # pull sinr_db, cell_id and rsrp_dbm based on highest SINR max_sinr_db_item = max(sinr_db_by_layer.items(), key=lambda k: k[1][1]) max_sinr_db_cell_id, max_sinr_db = max_sinr_db_item[1] - rsrp_dbm = next(v[1] for v in rsrp_dbm_by_layer.values() if v[0] == max_sinr_db_cell_id) + rsrp_dbm = next( + v[1] for v in rsrp_dbm_by_layer.values() if v[0] == max_sinr_db_cell_id + ) # update rf_dataframe output rf_dataframe_dict[constants.LOC_X].append(loc[0]) diff --git a/radp/digital_twin/utils/gis_tools.py b/radp/digital_twin/utils/gis_tools.py index 9524d56..8c21f21 100644 --- a/radp/digital_twin/utils/gis_tools.py +++ b/radp/digital_twin/utils/gis_tools.py @@ -52,7 +52,9 @@ class GISTools: def get_tile_side_length_meters(bing_tile_zoom: int) -> float: """Returns equatorial ground length (in meters) for the specified Bing Tile zoom level.""" - assert bing_tile_zoom <= 20, "Only Bing Tile Zoom Level 20 and coarser are supported!" + assert ( + bing_tile_zoom <= 20 + ), "Only Bing Tile Zoom Level 20 and coarser are supported!" return GISTools.bing_tile_zoom_to_ground_resolution_meters_dict[bing_tile_zoom] @staticmethod @@ -61,19 +63,27 @@ def get_tile_side_length_km(lat: float, zoom: int) -> float: Given a latitude and zoom level, return the side length of a Bing tile at that zoom level. """ - return float(math.cos(lat * math.pi / 180) * 2 * math.pi * GISTools.R / (2**zoom)) + return float( + math.cos(lat * math.pi / 180) * 2 * math.pi * GISTools.R / (2**zoom) + ) @staticmethod - def isclose(A: Tuple[float, float], B: Tuple[float, float], abs_tol: float = 0.0002) -> bool: + def isclose( + A: Tuple[float, float], B: Tuple[float, float], abs_tol: float = 0.0002 + ) -> bool: try: - return math.isclose(A[0], B[0], abs_tol=abs_tol) and math.isclose(A[1], B[1], abs_tol=abs_tol) - except AttributeError: - return abs(A[0] - B[0]) <= max(1e-9 * max(abs(A[0]), abs(B[0])), abs_tol) and abs(A[1] - B[1]) <= max( - 1e-9 * max(abs(A[1]), abs(B[1])), abs_tol + return math.isclose(A[0], B[0], abs_tol=abs_tol) and math.isclose( + A[1], B[1], abs_tol=abs_tol ) + except AttributeError: + return abs(A[0] - B[0]) <= max( + 1e-9 * max(abs(A[0]), abs(B[0])), abs_tol + ) and abs(A[1] - B[1]) <= max(1e-9 * max(abs(A[1]), abs(B[1])), abs_tol) @staticmethod - def dist(l1: Tuple[float, float], l2: Tuple[float, float], abs_tol: float = 0.0002) -> float: + def dist( + l1: Tuple[float, float], l2: Tuple[float, float], abs_tol: float = 0.0002 + ) -> float: """Returns distance (in kms) between two points on the earth. Utlizes haversine formula (https://en.wikipedia.org/wiki/Haversine_formula) @@ -117,12 +127,16 @@ def get_bearing(l1: Tuple[float, float], l2: Tuple[float, float]) -> float: [phi1, lam1] = [math.radians(l1[0]), math.radians(l1[1])] [phi2, lam2] = [math.radians(l2[0]), math.radians(l2[1])] y = math.sin(lam2 - lam1) * math.cos(phi2) - x = math.cos(phi1) * math.sin(phi2) - math.sin(phi1) * math.cos(phi2) * math.cos(lam2 - lam1) + x = math.cos(phi1) * math.sin(phi2) - math.sin(phi1) * math.cos( + phi2 + ) * math.cos(lam2 - lam1) return math.degrees(math.atan2(y, x)) @staticmethod def get_destination( - origin: Union[List[int], List[float], Tuple[Union[int, float], Union[int, float]]], + origin: Union[ + List[int], List[float], Tuple[Union[int, float], Union[int, float]] + ], brng: float, d: float, ) -> Tuple[float, float]: @@ -136,7 +150,10 @@ def get_destination( R = GISTools.R brng_r = math.radians(brng) [phi1, lam1] = [math.radians(origin[0]), math.radians(origin[1])] - phi2 = math.asin(math.sin(phi1) * math.cos(d / R) + math.cos(phi1) * math.sin(d / R) * math.cos(brng_r)) + phi2 = math.asin( + math.sin(phi1) * math.cos(d / R) + + math.cos(phi1) * math.sin(d / R) * math.cos(brng_r) + ) lam2 = lam1 + math.atan2( math.sin(brng_r) * math.sin(d / R) * math.cos(phi1), math.cos(d / R) - (math.sin(phi1) * math.sin(phi2)), @@ -195,7 +212,9 @@ def random_location( return (random_lon, random_lat) @staticmethod - def snap_align_lower_left(pt: Tuple[float, float], tile_discretization_resolution: int) -> Tuple[float, float]: + def snap_align_lower_left( + pt: Tuple[float, float], tile_discretization_resolution: int + ) -> Tuple[float, float]: lat = int(pt[0]) lon = int(pt[1]) inc = float(1 / float(tile_discretization_resolution - 1)) @@ -282,7 +301,9 @@ def mk_grid_params( """Create aligned and adjusted grid params""" inc = 1.0 / float(tile_discretization_resolution - 1) SW = GISTools.snap_align_lower_left(SW, tile_discretization_resolution) - NE = GISTools.snap_align_lower_left((NE[0] + inc, NE[1] + inc), tile_discretization_resolution) + NE = GISTools.snap_align_lower_left( + (NE[0] + inc, NE[1] + inc), tile_discretization_resolution + ) inc *= coarse_factor num_rows = int(math.ceil((NE[0] - SW[0]) / inc)) + 1 num_cols = int(math.ceil((NE[1] - SW[1]) / inc)) + 1 @@ -298,7 +319,9 @@ def get_bounding_box( num_cols: int, tile_discretization_resolution: int, ) -> Tuple[Tuple[float, float], Tuple[float, float]]: - aligned = GISTools.snap_align_lower_left((lat, lon), tile_discretization_resolution) + aligned = GISTools.snap_align_lower_left( + (lat, lon), tile_discretization_resolution + ) idx = GISTools.get_grid_idx(aligned, SW, tile_discretization_resolution) box_radius = math.floor(radius / 30.0) if math.isclose(box_radius, 0): @@ -335,7 +358,12 @@ def coord_str(coord: float) -> str: mantissa_decimal = mantissa.split(".")[1] trailing_zeros_to_add = "0" * (16 - len(mantissa_decimal)) return ( - mantissa.split(".")[0] + "." + mantissa_decimal + trailing_zeros_to_add + "e" + str_coord_parts[1] + mantissa.split(".")[0] + + "." + + mantissa_decimal + + trailing_zeros_to_add + + "e" + + str_coord_parts[1] ) else: # normal case return (precision_str_format % coord).rstrip("0").rstrip(".") @@ -345,7 +373,9 @@ def coord_str(coord: float) -> str: return "POINT (" + lon_str + " " + lat_str + ")" @staticmethod - def get_bbox_km_around_point(lat: float, lon: float, d: float) -> Tuple[Tuple[float, float], Tuple[float, float]]: + def get_bbox_km_around_point( + lat: float, lon: float, d: float + ) -> Tuple[Tuple[float, float], Tuple[float, float]]: """ Given a latlon point and a distance d (in km), return the SW and NE corners of a box whose side lengths are 2d with lat, lon as the center. @@ -385,7 +415,9 @@ def extend_bbox( return (minlat - s_deg, minlon - w_deg), (maxlat + n_deg, maxlon + e_deg) @staticmethod - def lon_lat_to_bing_tile(longitude: float, latitude: float, level: int = 18) -> Tuple[int, int]: + def lon_lat_to_bing_tile( + longitude: float, latitude: float, level: int = 18 + ) -> Tuple[int, int]: """Convert the given pair of longitude and latitude to Bing tile, at specified resolution. Technical Outline:- https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system @@ -439,7 +471,9 @@ def make_tile( tuple of tile_x(loc_x="longitude") and tile_y(loc_y="latitude") """ - tile_x, tile_y = GISTools.lon_lat_to_bing_tile(lon_lat_tuple[0], lon_lat_tuple[1], level=level) + tile_x, tile_y = GISTools.lon_lat_to_bing_tile( + lon_lat_tuple[0], lon_lat_tuple[1], level=level + ) return (tile_x, tile_y) @staticmethod @@ -528,7 +562,9 @@ def get_antenna_gain(hTx, hRx, log_distance, tilt_deg, theta_3db=10): tilt_deg: downtilt theta_3db=3dB bandwidth of Tx antenna """ - relative_tilt = np.degrees(np.arctan((hTx - hRx) / np.exp(log_distance))) - tilt_deg + relative_tilt = ( + np.degrees(np.arctan((hTx - hRx) / np.exp(log_distance))) - tilt_deg + ) G_db = -12 * np.power(relative_tilt / theta_3db, 2) return G_db diff --git a/radp/digital_twin/utils/tests/test_cell_selection.py b/radp/digital_twin/utils/tests/test_cell_selection.py index 0837160..98fb3b5 100644 --- a/radp/digital_twin/utils/tests/test_cell_selection.py +++ b/radp/digital_twin/utils/tests/test_cell_selection.py @@ -24,7 +24,10 @@ import pandas as pd from radp.digital_twin.utils import constants -from radp.digital_twin.utils.cell_selection import get_rsrp_dbm_sinr_db_by_layer, perform_attachment +from radp.digital_twin.utils.cell_selection import ( + get_rsrp_dbm_sinr_db_by_layer, + perform_attachment, +) class TestCellSelection(unittest.TestCase): @@ -33,8 +36,12 @@ def test_get_rsrp_dbm_sinr_db_by_layer(self): freq = 2100 # 1. 1 layer, 2 equal powered cells - rx_powers_by_layer: Dict[float, List[Tuple[str, float]]] = {freq: [("A", rx_dbm), ("B", rx_dbm)]} - rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer(rx_powers_by_layer) + rx_powers_by_layer: Dict[float, List[Tuple[str, float]]] = { + freq: [("A", rx_dbm), ("B", rx_dbm)] + } + rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer( + rx_powers_by_layer + ) self.assertEqual(len(rsrp_dbm_by_layer), 1) # 1 layer self.assertEqual(len(sinr_db_by_layer), 1) # 1 layer self.assertTrue(freq in rsrp_dbm_by_layer) # layer unchanged @@ -43,8 +50,12 @@ def test_get_rsrp_dbm_sinr_db_by_layer(self): self.assertAlmostEqual(sinr_db_by_layer[freq][1], 0) # SINR is very close to 0 # 2. 1 layer, one cell is twice the other in dbm scale - rx_powers_by_layer: Dict[float, List[Tuple[str, float]]] = {freq: [("A", rx_dbm), ("B", 2 * rx_dbm)]} - rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer(rx_powers_by_layer) + rx_powers_by_layer: Dict[float, List[Tuple[str, float]]] = { + freq: [("A", rx_dbm), ("B", 2 * rx_dbm)] + } + rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer( + rx_powers_by_layer + ) self.assertEqual(len(rsrp_dbm_by_layer), 1) # 1 layer self.assertEqual(len(sinr_db_by_layer), 1) # 1 layer self.assertTrue(freq in rsrp_dbm_by_layer) # layer unchanged @@ -52,14 +63,18 @@ def test_get_rsrp_dbm_sinr_db_by_layer(self): self.assertEqual(rsrp_dbm_by_layer[freq][0], "B") # bigger one wins self.assertEqual(rsrp_dbm_by_layer[freq][1], 2 * rx_dbm) # bigger one wins self.assertAlmostEqual(sinr_db_by_layer[freq][0], "B") # SINR winner is same - self.assertAlmostEqual(sinr_db_by_layer[freq][1], rx_dbm) # SINR is difference between bigger and smaller + self.assertAlmostEqual( + sinr_db_by_layer[freq][1], rx_dbm + ) # SINR is difference between bigger and smaller # 3. 2 layers, second cell 3x stronger for layer 1, first cell 3x stronger for layer 2 rx_powers_by_layer: Dict[float, List[Tuple[str, float]]] = { freq: [("A", rx_dbm), ("B", 3 * rx_dbm)], freq * 2: [("A2", 3 * rx_dbm), ("B2", rx_dbm)], } - rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer(rx_powers_by_layer) + rsrp_dbm_by_layer, sinr_db_by_layer = get_rsrp_dbm_sinr_db_by_layer( + rx_powers_by_layer + ) self.assertEqual(len(rsrp_dbm_by_layer), 2) # 2 layers self.assertEqual(len(sinr_db_by_layer), 2) # 2 layers # layers unchanged @@ -69,7 +84,9 @@ def test_get_rsrp_dbm_sinr_db_by_layer(self): ) self.assertEqual(rsrp_dbm_by_layer[freq][0], "B") # bigger one wins self.assertEqual(rsrp_dbm_by_layer[freq][1], 3 * rx_dbm) # bigger one wins - self.assertAlmostEqual(sinr_db_by_layer[freq][1], 2 * rx_dbm) # SINR is difference between bigger and smaller + self.assertAlmostEqual( + sinr_db_by_layer[freq][1], 2 * rx_dbm + ) # SINR is difference between bigger and smaller self.assertAlmostEqual(rsrp_dbm_by_layer[freq * 2][0], "A2") # bigger one wins self.assertEqual(rsrp_dbm_by_layer[freq * 2][1], 3 * rx_dbm) # bigger one wins self.assertAlmostEqual( diff --git a/radp/digital_twin/utils/tests/test_gis_tools.py b/radp/digital_twin/utils/tests/test_gis_tools.py index 8ac1f49..e2c22e8 100644 --- a/radp/digital_twin/utils/tests/test_gis_tools.py +++ b/radp/digital_twin/utils/tests/test_gis_tools.py @@ -119,7 +119,6 @@ def test_random_location(self) -> None: self.assertEqual(rand_lon_2_seed1, rand_lon_2_seed1_again) def test_bearing_utils(self) -> None: - # for get_bearing, the first parameter in the tuples corresponds to lat (y axis) self.assertEqual( @@ -226,7 +225,6 @@ def test_get_all_covering_tiles(self): self.assertTrue(tiles == expected) def test_converting_xy_points_into_lonlat_pairs(self): - s = [ np.array([85.8649796, 9.34373949]), np.array([69.74819822, 97.51281031]), diff --git a/radp/example_bayesian_engine_driver_script.py b/radp/example_bayesian_engine_driver_script.py index edc4e93..dfa2914 100755 --- a/radp/example_bayesian_engine_driver_script.py +++ b/radp/example_bayesian_engine_driver_script.py @@ -15,7 +15,11 @@ from radp.digital_twin import logger from radp.digital_twin.rf.bayesian.bayesian_engine import BayesianDigitalTwin -from radp.digital_twin.utils.constants import CELL_EL_DEG, LOG_DISTANCE, RELATIVE_BEARING +from radp.digital_twin.utils.constants import ( + CELL_EL_DEG, + LOG_DISTANCE, + RELATIVE_BEARING, +) from radp.digital_twin.utils.gis_tools import GISTools @@ -116,7 +120,9 @@ def augment_ue_data(ue_data_df: pd.DataFrame, site_configs_df: pd.DataFrame): """ for i in ue_data_df.index: - site_config = site_configs_df[site_configs_df.cell_id == ue_data_df.at[i, "cell_id"]] + site_config = site_configs_df[ + site_configs_df.cell_id == ue_data_df.at[i, "cell_id"] + ] ue_data_df.at[i, "cell_id"] = site_config.cell_id.values[0] ue_data_df.at[i, "loc_x"] = ue_data_df.at[i, "lon"] ue_data_df.at[i, "loc_y"] = ue_data_df.at[i, "lat"] @@ -124,7 +130,9 @@ def augment_ue_data(ue_data_df: pd.DataFrame, site_configs_df: pd.DataFrame): ue_data_df.at[i, "cell_lon"] = site_config.cell_lon.values[0] ue_data_df.at[i, "cell_az_deg"] = site_config.cell_az_deg.values[0] ue_data_df.at[i, "cell_el_deg"] = site_config.cell_el_deg.values[0] - ue_data_df.at[i, "cell_carrier_freq_mhz"] = site_config.cell_carrier_freq_mhz.values[0] + ue_data_df.at[ + i, "cell_carrier_freq_mhz" + ] = site_config.cell_carrier_freq_mhz.values[0] ue_data_df.at[i, "log_distance"] = GISTools.get_log_distance( ue_data_df.at[i, "cell_lat"], @@ -196,7 +204,9 @@ def get_x_max_and_x_min(): site_configs_df, ue_data_df = get_sample_site_config_and_ue_data() site_configs_df.reset_index(drop=True, inplace=True) - idx_cell_id_mapping = dict(zip(site_configs_df.index.values, site_configs_df.cell_id)) + idx_cell_id_mapping = dict( + zip(site_configs_df.index.values, site_configs_df.cell_id) + ) # feature engineering -- add relative bearing and distance augment_ue_data(ue_data_df, site_configs_df) @@ -204,7 +214,9 @@ def get_x_max_and_x_min(): logger.info(ue_data_df) # split into training/test - cell_id_training_data_map, cell_id_test_data_map = split_training_and_test_data(ue_data_df, 0.2) + cell_id_training_data_map, cell_id_test_data_map = split_training_and_test_data( + ue_data_df, 0.2 + ) # train bayesian_digital_twin_map = {} @@ -233,10 +245,17 @@ def get_x_max_and_x_min(): # predict/test for cell_id, testing_data in cell_id_test_data_map.items(): - (pred_means, _) = bayesian_digital_twin_map[cell_id].predict_distributed_gpmodel(prediction_dfs=[testing_data]) + (pred_means, _) = bayesian_digital_twin_map[ + cell_id + ].predict_distributed_gpmodel(prediction_dfs=[testing_data]) MAE = abs(testing_data.avg_rsrp - pred_means[0]).mean() # mean absolute percentage error - MAPE = 100 * abs((testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp).mean() + MAPE = ( + 100 + * abs( + (testing_data.avg_rsrp - pred_means[0]) / testing_data.avg_rsrp + ).mean() + ) logger.info( f"cell_id = {cell_id}, MAE = {MAE:0.5f} dB, MAPE = {MAPE:0.5f} %, " f"# test points = {len(testing_data.avg_rsrp)}" diff --git a/radp/utility/kafka_utils.py b/radp/utility/kafka_utils.py index 7239302..a4a7cec 100644 --- a/radp/utility/kafka_utils.py +++ b/radp/utility/kafka_utils.py @@ -56,15 +56,23 @@ def safe_subscribe(consumer: kafka.Consumer, topics: List[str]): while not all([topic_name in topics_found for topic_name in topics]): current_attempt += 1 if current_attempt >= MAX_ATTEMPTS: - logger.exception(f"Timed out while attempting to subscribe consumer '{consumer}' to topics: {topics}") - raise Exception(f"Timed out while attempting to subscribe consumer '{consumer}' to topics: {topics}") + logger.exception( + f"Timed out while attempting to subscribe consumer '{consumer}' to topics: {topics}" + ) + raise Exception( + f"Timed out while attempting to subscribe consumer '{consumer}' to topics: {topics}" + ) time.sleep(SLEEP_INTERVAL) - topics_found = [topic_metadata for topic_metadata in consumer.list_topics().topics] + topics_found = [ + topic_metadata for topic_metadata in consumer.list_topics().topics + ] # all topics exist, subscribe to them try: consumer.subscribe(topics) except Exception as e: - logger.exception(f"Exception occurred while attempting to subscribe to topics: {e}") + logger.exception( + f"Exception occurred while attempting to subscribe to topics: {e}" + ) raise e diff --git a/radp/utility/pandas_utils.py b/radp/utility/pandas_utils.py index 85839d2..e542082 100644 --- a/radp/utility/pandas_utils.py +++ b/radp/utility/pandas_utils.py @@ -37,7 +37,9 @@ def cross_replicate(df_a: pd.DataFrame, df_b: pd.DataFrame) -> pd.DataFrame: """Cross replicate two pandas dataframes""" # raise exception if the dfs share a column name if any(df_a.columns.intersection(df_b.columns)): - raise ValueError("Cannot call cross_replicate on dataframes with shared column names") + raise ValueError( + "Cannot call cross_replicate on dataframes with shared column names" + ) size_a, size_b = df_a.shape[0], df_b.shape[0] diff --git a/radp/utility/simulation_utils.py b/radp/utility/simulation_utils.py index c5e255d..ae99e5f 100644 --- a/radp/utility/simulation_utils.py +++ b/radp/utility/simulation_utils.py @@ -8,6 +8,7 @@ import random import torch + def seed_everything(seed: int): random.seed(seed) os.environ["PYTHONHASHSEED"] = str(seed) diff --git a/services/api_manager/app.py b/services/api_manager/app.py index 1a09e82..4370fb7 100644 --- a/services/api_manager/app.py +++ b/services/api_manager/app.py @@ -10,7 +10,9 @@ from api_manager.exceptions.base_api_exception import APIException from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.handlers.consume_simulation_output_handler import ConsumeSimulationOutputHandler +from api_manager.handlers.consume_simulation_output_handler import ( + ConsumeSimulationOutputHandler, +) from api_manager.handlers.describe_model_handler import DescribeModelHandler from api_manager.handlers.describe_simulation_handler import DescribeSimulationHandler from api_manager.handlers.simulation_handler import SimulationHandler @@ -58,13 +60,17 @@ def train(): # verify request contains payload and csv files if constants.REQUEST_PAYLOAD_FILE_KEY not in request.files: - raise InvalidParameterException(f"Invalid request, missing file input '{constants.REQUEST_PAYLOAD_FILE_KEY}'") + raise InvalidParameterException( + f"Invalid request, missing file input '{constants.REQUEST_PAYLOAD_FILE_KEY}'" + ) if constants.REQUEST_UE_TRAINING_DATA_FILE_KEY not in request.files: raise InvalidParameterException( f"Invalid request, missing file input '{constants.REQUEST_UE_TRAINING_DATA_FILE_KEY}'" ) if constants.REQUEST_TOPOLOGY_FILE_KEY not in request.files: - raise InvalidParameterException(f"Invalid request, missing file input '{constants.REQUEST_TOPOLOGY_FILE_KEY}'") + raise InvalidParameterException( + f"Invalid request, missing file input '{constants.REQUEST_TOPOLOGY_FILE_KEY}'" + ) payload = json.load(request.files[constants.REQUEST_PAYLOAD_FILE_KEY]) @@ -95,7 +101,9 @@ def simulation(): # verify request contains json payload if constants.REQUEST_PAYLOAD_FILE_KEY not in request.files: - raise InvalidParameterException(f"Invalid request, missing file input '{constants.REQUEST_PAYLOAD_FILE_KEY}'") + raise InvalidParameterException( + f"Invalid request, missing file input '{constants.REQUEST_PAYLOAD_FILE_KEY}'" + ) payload = json.load(request.files[constants.REQUEST_PAYLOAD_FILE_KEY]) # store and pass whatever files are provided @@ -118,11 +126,17 @@ def simulation(): @app.route("/simulation/", methods=["GET"]) def describe_simulation(simulation_id: str): logger.info(f"Received API request to describe simulation: {simulation_id}") - return jsonify(DescribeSimulationHandler().handle_describe_simulation_request(simulation_id)) + return jsonify( + DescribeSimulationHandler().handle_describe_simulation_request(simulation_id) + ) @app.route("/simulation//download", methods=["GET"]) def consume_simulation_output(simulation_id: str): logger.info(f"Received API request to consume simulation output: {simulation_id}") - output_zip_file_path = ConsumeSimulationOutputHandler().handle_consume_simulation_output_request(simulation_id) + output_zip_file_path = ( + ConsumeSimulationOutputHandler().handle_consume_simulation_output_request( + simulation_id + ) + ) return send_file(output_zip_file_path) diff --git a/services/api_manager/exceptions/base_api_exception.py b/services/api_manager/exceptions/base_api_exception.py index 79ef4df..9f461f4 100644 --- a/services/api_manager/exceptions/base_api_exception.py +++ b/services/api_manager/exceptions/base_api_exception.py @@ -3,6 +3,7 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. + class APIException(Exception): """All custom API Exceptions""" diff --git a/services/api_manager/handlers/consume_simulation_output_handler.py b/services/api_manager/handlers/consume_simulation_output_handler.py index 30552d5..9eb3bbe 100644 --- a/services/api_manager/handlers/consume_simulation_output_handler.py +++ b/services/api_manager/handlers/consume_simulation_output_handler.py @@ -14,7 +14,9 @@ import os from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.exceptions.simulation_output_not_found_exception import SimulationOutputNotFoundException +from api_manager.exceptions.simulation_output_not_found_exception import ( + SimulationOutputNotFoundException, +) from radp.common.helpers.file_system_helper import RADPFileSystemHelper @@ -31,10 +33,14 @@ def handle_consume_simulation_output_request(self, simulation_id: str) -> str: self._validate_request(simulation_id) # get simulation output zipfile - output_zip_file_path = RADPFileSystemHelper.gen_sim_output_zip_file_path(simulation_id) + output_zip_file_path = RADPFileSystemHelper.gen_sim_output_zip_file_path( + simulation_id + ) if not os.path.exists(output_zip_file_path): - logger.warning(f"Unable to find simulation output for simulation: {simulation_id}") + logger.warning( + f"Unable to find simulation output for simulation: {simulation_id}" + ) raise SimulationOutputNotFoundException(simulation_id) logger.info(f"Found output zip file at '{output_zip_file_path}'") diff --git a/services/api_manager/handlers/describe_model_handler.py b/services/api_manager/handlers/describe_model_handler.py index 8df173c..d059c28 100644 --- a/services/api_manager/handlers/describe_model_handler.py +++ b/services/api_manager/handlers/describe_model_handler.py @@ -34,7 +34,9 @@ def handle_describe_model_request(self, model_id: str) -> Dict: try: model_metadata = RADPFileSystemHelper.load_model_metadata(model_id=model_id) except FileNotFoundError: - logger.exception(f"Exception describing model: model '{model_id}' not found") + logger.exception( + f"Exception describing model: model '{model_id}' not found" + ) raise ModelNotFoundException(model_id) # TODO: implement a response DTO to validate response content return model_metadata diff --git a/services/api_manager/handlers/describe_simulation_handler.py b/services/api_manager/handlers/describe_simulation_handler.py index a166ad9..a4cfab7 100644 --- a/services/api_manager/handlers/describe_simulation_handler.py +++ b/services/api_manager/handlers/describe_simulation_handler.py @@ -14,7 +14,9 @@ from typing import Dict from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.exceptions.simulation_not_found_exception import SimulationNotFoundException +from api_manager.exceptions.simulation_not_found_exception import ( + SimulationNotFoundException, +) from radp.common.helpers.file_system_helper import RADPFileSystemHelper @@ -34,7 +36,9 @@ def handle_describe_simulation_request(self, simulation_id: str) -> Dict: try: sim_metadata = RADPFileSystemHelper.load_simulation_metadata(simulation_id) except FileNotFoundError: - logger.exception(f"Exception describing simulation: simulation '{simulation_id}' not found") + logger.exception( + f"Exception describing simulation: simulation '{simulation_id}' not found" + ) raise SimulationNotFoundException(simulation_id) # TODO: implement a response DTO to validate response content return sim_metadata diff --git a/services/api_manager/handlers/simulation_handler.py b/services/api_manager/handlers/simulation_handler.py index c38b8bd..e48e4be 100644 --- a/services/api_manager/handlers/simulation_handler.py +++ b/services/api_manager/handlers/simulation_handler.py @@ -15,7 +15,9 @@ from api_manager.config.kafka import kafka_producer_config from api_manager.dtos.responses.simulation_response import SimulationResponse -from api_manager.preprocessors.simulation_request_preprocessor import RICSimulationRequestPreprocessor +from api_manager.preprocessors.simulation_request_preprocessor import ( + RICSimulationRequestPreprocessor, +) from confluent_kafka import Producer from radp.common import constants @@ -65,12 +67,16 @@ def handle_simulation_request(self, request: Dict, files: Dict) -> Dict: simulation_id = processed_request[constants.SIMULATION_ID] # create the simulation directory if it doesn't already exist - simulation_directory = RADPFileSystemHelper.gen_simulation_directory(simulation_id) + simulation_directory = RADPFileSystemHelper.gen_simulation_directory( + simulation_id + ) if not os.path.exists(simulation_directory): os.makedirs(simulation_directory) # write simulation metadata to file - RADPFileSystemHelper.save_simulation_metadata(sim_metadata=processed_request, simulation_id=simulation_id) + RADPFileSystemHelper.save_simulation_metadata( + sim_metadata=processed_request, simulation_id=simulation_id + ) # save ue data and config to simulation directory if provided if constants.UE_DATA_FILE_PATH_KEY in files: diff --git a/services/api_manager/handlers/train_handler.py b/services/api_manager/handlers/train_handler.py index c9f8381..e415e0a 100644 --- a/services/api_manager/handlers/train_handler.py +++ b/services/api_manager/handlers/train_handler.py @@ -60,7 +60,9 @@ def handle_train_request(self, request: Dict, files: Dict) -> Dict: topology_file_path=files[constants.TOPOLOGY_FILE_PATH_KEY], ) - model_file_path = RADPFileSystemHelper.gen_model_file_path(train_request.model_id) + model_file_path = RADPFileSystemHelper.gen_model_file_path( + train_request.model_id + ) # create a unique id for the kafka job event key job = { @@ -83,10 +85,7 @@ def handle_train_request(self, request: Dict, files: Dict) -> Dict: ) logger.info(f"Initiated ML training on model {train_request.model_id}.") - return TrainResponse( - job_id=job_id, - model_id=train_request.model_id - ).to_dict() + return TrainResponse(job_id=job_id, model_id=train_request.model_id).to_dict() # TODO: refactor this method, it's gross def _save_metadata_and_topology(self, model_id: str, topology_file_path: str): @@ -97,7 +96,9 @@ def _save_metadata_and_topology(self, model_id: str, topology_file_path: str): topology_df = pd.read_csv(csv_file) num_cells = len(topology_df) except Exception as e: - logger.exception(f"Exception occurred while reading file: {topology_file_path}") + logger.exception( + f"Exception occurred while reading file: {topology_file_path}" + ) raise e model_specific_params = {constants.NUM_CELLS: num_cells} @@ -124,7 +125,9 @@ def _save_metadata_and_topology(self, model_id: str, topology_file_path: str): logger.exception("Exception occurred reading cell topology.csv") raise e - model_topology_file_path = RADPFileSystemHelper.gen_model_topology_file_path(model_id=model_id) + model_topology_file_path = RADPFileSystemHelper.gen_model_topology_file_path( + model_id=model_id + ) write_feather_df(file_path=model_topology_file_path, df=topology_df) def _parse_train_request(self, event) -> TrainRequest: diff --git a/services/api_manager/preprocessors/simulation_request_preprocessor.py b/services/api_manager/preprocessors/simulation_request_preprocessor.py index 59b6896..6fc7c32 100644 --- a/services/api_manager/preprocessors/simulation_request_preprocessor.py +++ b/services/api_manager/preprocessors/simulation_request_preprocessor.py @@ -99,7 +99,11 @@ def preprocess( # start chained hash from top-level simulation parameters chained_hash_val = deterministic_hash_dict( - {constants.SIMULATION_TIME_INTERVAL: request[constants.SIMULATION_TIME_INTERVAL]} + { + constants.SIMULATION_TIME_INTERVAL: request[ + constants.SIMULATION_TIME_INTERVAL + ] + } ) # build processed request frame (this will become to simulation metadata object) @@ -109,7 +113,9 @@ def preprocess( processed_request[constants.SIMULATION_STATUS] = constants.STATUS_PLANNED # supply simulation interval value - processed_request[constants.SIMULATION_TIME_INTERVAL] = request[constants.SIMULATION_TIME_INTERVAL] + processed_request[constants.SIMULATION_TIME_INTERVAL] = request[ + constants.SIMULATION_TIME_INTERVAL + ] # get the ue_tracks hash value chained_hash_val = deterministic_hash_dict( @@ -124,27 +130,32 @@ def preprocess( if constants.UE_TRACKS_GENERATION in request[constants.UE_TRACKS]: # supply UE tracks generation object to the processed request processed_request[constants.UE_TRACKS_GENERATION] = {} - processed_request[constants.UE_TRACKS_GENERATION][constants.PARAMS] = request[constants.UE_TRACKS][ - constants.UE_TRACKS_GENERATION - ] + processed_request[constants.UE_TRACKS_GENERATION][ + constants.PARAMS + ] = request[constants.UE_TRACKS][constants.UE_TRACKS_GENERATION] # get num_ticks using division of duration by time interval - simulation_duration = processed_request[constants.UE_TRACKS_GENERATION][constants.PARAMS][ - constants.SIMULATION_DURATION - ] + simulation_duration = processed_request[constants.UE_TRACKS_GENERATION][ + constants.PARAMS + ][constants.SIMULATION_DURATION] processed_request[constants.NUM_TICKS] = int( - simulation_duration / processed_request[constants.SIMULATION_TIME_INTERVAL] + simulation_duration + / processed_request[constants.SIMULATION_TIME_INTERVAL] ) # set hash value in ue_tracks generation - processed_request[constants.UE_TRACKS_GENERATION][constants.HASH_VAL] = chained_hash_val + processed_request[constants.UE_TRACKS_GENERATION][ + constants.HASH_VAL + ] = chained_hash_val # add state object to UE tracks generation object processed_request[constants.UE_TRACKS_GENERATION][constants.STATE] = {} processed_request[constants.UE_TRACKS_GENERATION][constants.STATE][ constants.STATUS ] = constants.STATUS_PLANNED - processed_request[constants.UE_TRACKS_GENERATION][constants.STATE][constants.BATCHES_OUTPUTTED] = 0 + processed_request[constants.UE_TRACKS_GENERATION][constants.STATE][ + constants.BATCHES_OUTPUTTED + ] = 0 else: # TODO: get actual num_ticks value by scanning input file "tick" column @@ -173,19 +184,29 @@ def _preprocess_stage( # initial empty state processed_request[stage][constants.STATE] = {} - processed_request[stage][constants.STATE][constants.STATUS] = constants.STATUS_PLANNED - processed_request[stage][constants.STATE][constants.LATEST_BATCH_WITHOUT_FAILURE] = 0 - processed_request[stage][constants.STATE][constants.LATEST_BATCH_TO_SUCCEED] = 0 + processed_request[stage][constants.STATE][ + constants.STATUS + ] = constants.STATUS_PLANNED + processed_request[stage][constants.STATE][ + constants.LATEST_BATCH_WITHOUT_FAILURE + ] = 0 + processed_request[stage][constants.STATE][ + constants.LATEST_BATCH_TO_SUCCEED + ] = 0 processed_request[stage][constants.STATE][constants.BATCHES_RETRYING] = [] return chained_hash_val # RF Prediction if constants.RF_PREDICTION in request: - chained_hash_val = _preprocess_stage(stage=constants.RF_PREDICTION, chained_hash_val=chained_hash_val) + chained_hash_val = _preprocess_stage( + stage=constants.RF_PREDICTION, chained_hash_val=chained_hash_val + ) # Protocol Emulation if constants.PROTOCOL_EMULATION in request: - chained_hash_val = _preprocess_stage(stage=constants.PROTOCOL_EMULATION, chained_hash_val=chained_hash_val) + chained_hash_val = _preprocess_stage( + stage=constants.PROTOCOL_EMULATION, chained_hash_val=chained_hash_val + ) # Simulation ID def _create_simulation_id( @@ -194,24 +215,28 @@ def _create_simulation_id( """Create the simulation ID from hashing everything together""" # pull the non-stage-specific fields constituent_hashes = { - k: processed_request[k] for k in (constants.NUM_TICKS, constants.NUM_BATCHES) if k in processed_request + k: processed_request[k] + for k in (constants.NUM_TICKS, constants.NUM_BATCHES) + if k in processed_request } # pull all present stage hashes if constants.UE_TRACKS_GENERATION in processed_request: - constituent_hashes[constants.UE_TRACKS_GENERATION_HASH_VAL] = processed_request[ - constants.UE_TRACKS_GENERATION - ][constants.HASH_VAL] - - if constants.RF_PREDICTION in processed_request: - constituent_hashes[constants.RF_PREDICTION_HASH_VAL] = processed_request[constants.RF_PREDICTION][ + constituent_hashes[ + constants.UE_TRACKS_GENERATION_HASH_VAL + ] = processed_request[constants.UE_TRACKS_GENERATION][ constants.HASH_VAL ] + if constants.RF_PREDICTION in processed_request: + constituent_hashes[ + constants.RF_PREDICTION_HASH_VAL + ] = processed_request[constants.RF_PREDICTION][constants.HASH_VAL] + if constants.PROTOCOL_EMULATION in processed_request: - constituent_hashes[constants.PROTOCOL_EMULATION_HASH_VAL] = processed_request[ - constants.PROTOCOL_EMULATION - ][constants.HASH_VAL] + constituent_hashes[ + constants.PROTOCOL_EMULATION_HASH_VAL + ] = processed_request[constants.PROTOCOL_EMULATION][constants.HASH_VAL] # build the one hash # one hash to rule them all... throw it into the fire you fool! diff --git a/services/api_manager/tests/handlers/test_consume_simulation_output_handler.py b/services/api_manager/tests/handlers/test_consume_simulation_output_handler.py index 3e7b0ba..cf1d658 100644 --- a/services/api_manager/tests/handlers/test_consume_simulation_output_handler.py +++ b/services/api_manager/tests/handlers/test_consume_simulation_output_handler.py @@ -7,36 +7,58 @@ from unittest.mock import MagicMock, patch from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.exceptions.simulation_output_not_found_exception import SimulationOutputNotFoundException -from api_manager.handlers.consume_simulation_output_handler import ConsumeSimulationOutputHandler +from api_manager.exceptions.simulation_output_not_found_exception import ( + SimulationOutputNotFoundException, +) +from api_manager.handlers.consume_simulation_output_handler import ( + ConsumeSimulationOutputHandler, +) class TestConsumeSimulationOutputHandler(TestCase): @patch("api_manager.handlers.consume_simulation_output_handler.os") - @patch("api_manager.handlers.consume_simulation_output_handler.RADPFileSystemHelper") - def test_handle_consume_simulation_output_request(self, mock_file_system_helper: MagicMock, mock_os: MagicMock): - mock_file_system_helper.gen_sim_output_zip_file_path.return_value = "dummy_outzip_zip" + @patch( + "api_manager.handlers.consume_simulation_output_handler.RADPFileSystemHelper" + ) + def test_handle_consume_simulation_output_request( + self, mock_file_system_helper: MagicMock, mock_os: MagicMock + ): + mock_file_system_helper.gen_sim_output_zip_file_path.return_value = ( + "dummy_outzip_zip" + ) mock_os.path.exists.return_value = True dummy_sim_id = "dummy_sim" assert ( - ConsumeSimulationOutputHandler().handle_consume_simulation_output_request(dummy_sim_id) + ConsumeSimulationOutputHandler().handle_consume_simulation_output_request( + dummy_sim_id + ) == "dummy_outzip_zip" ) - mock_file_system_helper.gen_sim_output_zip_file_path.assert_called_once_with("dummy_sim") + mock_file_system_helper.gen_sim_output_zip_file_path.assert_called_once_with( + "dummy_sim" + ) mock_os.path.exists.assert_called_once_with("dummy_outzip_zip") @patch("api_manager.handlers.consume_simulation_output_handler.os") - @patch("api_manager.handlers.consume_simulation_output_handler.RADPFileSystemHelper") + @patch( + "api_manager.handlers.consume_simulation_output_handler.RADPFileSystemHelper" + ) def test_handle_consume_simulation_output_request__nonexistent_model( self, mock_file_system_helper: MagicMock, mock_os: MagicMock ): - mock_file_system_helper.gen_sim_output_zip_file_path.return_value = "dummy_outzip_zip" + mock_file_system_helper.gen_sim_output_zip_file_path.return_value = ( + "dummy_outzip_zip" + ) mock_os.path.exists.return_value = False with self.assertRaises(SimulationOutputNotFoundException): - assert ConsumeSimulationOutputHandler().handle_consume_simulation_output_request("dummy_sim") + assert ConsumeSimulationOutputHandler().handle_consume_simulation_output_request( + "dummy_sim" + ) def test_handle_consume_simulation_output_request__no_sim_id(self): with self.assertRaises(InvalidParameterException): - ConsumeSimulationOutputHandler().handle_consume_simulation_output_request("") + ConsumeSimulationOutputHandler().handle_consume_simulation_output_request( + "" + ) diff --git a/services/api_manager/tests/handlers/test_describe_model_handler.py b/services/api_manager/tests/handlers/test_describe_model_handler.py index cadad06..4ebc6e5 100644 --- a/services/api_manager/tests/handlers/test_describe_model_handler.py +++ b/services/api_manager/tests/handlers/test_describe_model_handler.py @@ -15,11 +15,17 @@ class TestDescribeModelHandler(TestCase): @patch("api_manager.handlers.describe_model_handler.RADPFileSystemHelper") def test_handle_describe_model_request(self, mock_file_system_helper: MagicMock): mock_file_system_helper.load_model_metadata.return_value = {"metadata": "dummy"} - assert DescribeModelHandler().handle_describe_model_request("dummy_model") == {"metadata": "dummy"} - mock_file_system_helper.load_model_metadata.assert_called_once_with(model_id="dummy_model") + assert DescribeModelHandler().handle_describe_model_request("dummy_model") == { + "metadata": "dummy" + } + mock_file_system_helper.load_model_metadata.assert_called_once_with( + model_id="dummy_model" + ) @patch("api_manager.handlers.describe_model_handler.RADPFileSystemHelper") - def test_handle_describe_model_request__model_not_found(self, mock_file_system_helper: MagicMock): + def test_handle_describe_model_request__model_not_found( + self, mock_file_system_helper: MagicMock + ): mock_file_system_helper.side_effect mock_file_system_helper.load_model_metadata.side_effect = FileNotFoundError() with self.assertRaises(ModelNotFoundException): diff --git a/services/api_manager/tests/handlers/test_describe_simulation_handler.py b/services/api_manager/tests/handlers/test_describe_simulation_handler.py index dfb7147..28ef8df 100644 --- a/services/api_manager/tests/handlers/test_describe_simulation_handler.py +++ b/services/api_manager/tests/handlers/test_describe_simulation_handler.py @@ -7,25 +7,39 @@ from unittest.mock import MagicMock, patch from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.exceptions.simulation_not_found_exception import SimulationNotFoundException +from api_manager.exceptions.simulation_not_found_exception import ( + SimulationNotFoundException, +) from api_manager.handlers.describe_simulation_handler import DescribeSimulationHandler class TestDescribeSimulationHandler(TestCase): @patch("api_manager.handlers.describe_simulation_handler.RADPFileSystemHelper") - def test_handle_describe_simulation_request(self, mock_file_system_helper: MagicMock): - mock_file_system_helper.load_simulation_metadata.return_value = {"metadata": "dummy"} - assert DescribeSimulationHandler().handle_describe_simulation_request("dummy_simulation") == { + def test_handle_describe_simulation_request( + self, mock_file_system_helper: MagicMock + ): + mock_file_system_helper.load_simulation_metadata.return_value = { "metadata": "dummy" } - mock_file_system_helper.load_simulation_metadata.assert_called_once_with("dummy_simulation") + assert DescribeSimulationHandler().handle_describe_simulation_request( + "dummy_simulation" + ) == {"metadata": "dummy"} + mock_file_system_helper.load_simulation_metadata.assert_called_once_with( + "dummy_simulation" + ) @patch("api_manager.handlers.describe_simulation_handler.RADPFileSystemHelper") - def test_handle_describe_simulation_request__simulation_not_found(self, mock_file_system_helper: MagicMock): + def test_handle_describe_simulation_request__simulation_not_found( + self, mock_file_system_helper: MagicMock + ): mock_file_system_helper.side_effect - mock_file_system_helper.load_simulation_metadata.side_effect = FileNotFoundError() + mock_file_system_helper.load_simulation_metadata.side_effect = ( + FileNotFoundError() + ) with self.assertRaises(SimulationNotFoundException): - DescribeSimulationHandler().handle_describe_simulation_request("dummy_simulation") + DescribeSimulationHandler().handle_describe_simulation_request( + "dummy_simulation" + ) def test_handle_describe_simulation_request__invalid_simulation_id(self): with self.assertRaises(InvalidParameterException): diff --git a/services/api_manager/tests/handlers/test_simulation_handler.py b/services/api_manager/tests/handlers/test_simulation_handler.py index 767cf47..5142553 100644 --- a/services/api_manager/tests/handlers/test_simulation_handler.py +++ b/services/api_manager/tests/handlers/test_simulation_handler.py @@ -42,12 +42,11 @@ def test_handle_simulation_request( "simulation_id": "dummy_sim_id", } - expected_job = { - "job_type": "orchestration", - "simulation_id": "dummy_sim_id" - } + expected_job = {"job_type": "orchestration", "simulation_id": "dummy_sim_id"} - assert SimulationHandler().handle_simulation_request(dummy_rf_sim, dummy_files) == { + assert SimulationHandler().handle_simulation_request( + dummy_rf_sim, dummy_files + ) == { "job_id": "dummy_job_id", "simulation_id": "dummy_sim_id", } @@ -60,4 +59,6 @@ def test_handle_simulation_request( "dummy_sim_id", config_file_path="dummy_config_file_path" ) - mock_produce.assert_called_once_with(producer=mock_producer_instance, topic="jobs", value=expected_job) + mock_produce.assert_called_once_with( + producer=mock_producer_instance, topic="jobs", value=expected_job + ) diff --git a/services/api_manager/tests/handlers/test_train_handler.py b/services/api_manager/tests/handlers/test_train_handler.py index 76d152e..01a9c60 100644 --- a/services/api_manager/tests/handlers/test_train_handler.py +++ b/services/api_manager/tests/handlers/test_train_handler.py @@ -57,7 +57,9 @@ def test_handle_train_request__missing_model_id( ): mock_producer_instance = MagicMock mock_producer.return_value = mock_producer_instance - mock_file_system_helper.gen_model_file_path.return_value = "dummy_model_file_path" + mock_file_system_helper.gen_model_file_path.return_value = ( + "dummy_model_file_path" + ) mock_produce.return_value = "dummy_job_id" @@ -75,13 +77,19 @@ def test_handle_train_request__missing_model_id( "topology_file_path": "dummy_topology_file_path", } - assert TrainHandler().handle_train_request(valid_train_request_1, files=dummy_files) == { + assert TrainHandler().handle_train_request( + valid_train_request_1, files=dummy_files + ) == { "job_id": "dummy_job_id", "model_id": "dummy_model", } - mock_file_system_helper.gen_model_file_path.assert_called_once_with("dummy_model") + mock_file_system_helper.gen_model_file_path.assert_called_once_with( + "dummy_model" + ) mock_file_system_helper.save_model_metadata.assert_called_once() mock_file_system_helper.gen_model_topology_file_path.assert_called_once() - mock_produce.assert_called_once_with(producer=mock_producer_instance, topic="jobs", value=expected_job) + mock_produce.assert_called_once_with( + producer=mock_producer_instance, topic="jobs", value=expected_job + ) diff --git a/services/api_manager/tests/preprocessors/test_simulation_request_preprocessor.py b/services/api_manager/tests/preprocessors/test_simulation_request_preprocessor.py index 5eeb6e5..eb3b5b3 100644 --- a/services/api_manager/tests/preprocessors/test_simulation_request_preprocessor.py +++ b/services/api_manager/tests/preprocessors/test_simulation_request_preprocessor.py @@ -99,7 +99,11 @@ def _test_ue_tracks( ue_tracks_specifier_key: str, ): chained_hash_val = deterministic_hash_dict( - {"simulation_time_interval_seconds": request["simulation_time_interval_seconds"]} + { + "simulation_time_interval_seconds": request[ + "simulation_time_interval_seconds" + ] + } ) self.assertEqual( diff --git a/services/api_manager/tests/validators/test_simulation_request_validator.py b/services/api_manager/tests/validators/test_simulation_request_validator.py index 2675ae9..a5bc49c 100644 --- a/services/api_manager/tests/validators/test_simulation_request_validator.py +++ b/services/api_manager/tests/validators/test_simulation_request_validator.py @@ -6,7 +6,9 @@ import unittest from api_manager.exceptions.invalid_parameter_exception import InvalidParameterException -from api_manager.validators.simulation_request_validator import RICSimulationRequestValidator +from api_manager.validators.simulation_request_validator import ( + RICSimulationRequestValidator, +) class TestRICSimulationRequestValidator(unittest.TestCase): @@ -31,13 +33,17 @@ def test__validate_rf_prediction(self): # Missing rf_prediction (but ue_tracks present and valid) with self.assertRaises(InvalidParameterException) as ipe: - RICSimulationRequestValidator._validate_rf_prediction({"ue_tracks": {"ue_tracks_generation": {}}}) + RICSimulationRequestValidator._validate_rf_prediction( + {"ue_tracks": {"ue_tracks_generation": {}}} + ) self.assertEqual( str(ipe.exception), "Missing rf_prediction key in RIC Simulation Request spec!", ) with self.assertRaises(InvalidParameterException) as ipe: - RICSimulationRequestValidator._validate_rf_prediction({"ue_tracks": {"ue_data_id": {}}}) + RICSimulationRequestValidator._validate_rf_prediction( + {"ue_tracks": {"ue_data_id": {}}} + ) self.assertEqual( str(ipe.exception), "Missing rf_prediction key in RIC Simulation Request spec!", diff --git a/services/api_manager/utils/file_io.py b/services/api_manager/utils/file_io.py index d0f13fc..c21edea 100644 --- a/services/api_manager/utils/file_io.py +++ b/services/api_manager/utils/file_io.py @@ -22,7 +22,9 @@ def get_utc_timestamp() -> str: return now_utc.strftime("%Y_%m_%d-%I_%M_%S_%p") -def save_file_from_flask(file_storage: FileStorage, upload_folder: str, file_name: str) -> str: +def save_file_from_flask( + file_storage: FileStorage, upload_folder: str, file_name: str +) -> str: """Helper method to save a werkzeug FileStorage file to disk""" try: # create folder if it does not exist @@ -66,12 +68,16 @@ def bootstrap_radp_filesystem(): try: os.makedirs(directory) except Exception as e: - logger.exception(f"Exception occurred creating directory '{directory}': {e}") + logger.exception( + f"Exception occurred creating directory '{directory}': {e}" + ) raise e directories_output_string = "\n".join(SYSTEM_DIRECTORIES) logger.info( - "Successfully created the following directories:\n{directories}".format(directories=directories_output_string) + "Successfully created the following directories:\n{directories}".format( + directories=directories_output_string + ) ) diff --git a/services/api_manager/validators/simulation_request_validator.py b/services/api_manager/validators/simulation_request_validator.py index 72c32d5..8280644 100644 --- a/services/api_manager/validators/simulation_request_validator.py +++ b/services/api_manager/validators/simulation_request_validator.py @@ -100,7 +100,8 @@ def _validate_rf_prediction(request: Dict): """ if ("ue_tracks" not in request) or ( - ("ue_tracks_generation" not in request["ue_tracks"]) and ("ue_data_id" not in request["ue_tracks"]) + ("ue_tracks_generation" not in request["ue_tracks"]) + and ("ue_data_id" not in request["ue_tracks"]) ): raise InvalidParameterException( "Must provide ue_tracks section with either provide `ue_tracks_generation` " @@ -108,6 +109,8 @@ def _validate_rf_prediction(request: Dict): ) if "rf_prediction" not in request: - raise InvalidParameterException("Missing rf_prediction key in RIC Simulation Request spec!") + raise InvalidParameterException( + "Missing rf_prediction key in RIC Simulation Request spec!" + ) return None diff --git a/services/orchestration/orchestration_consumer.py b/services/orchestration/orchestration_consumer.py index e2e23f3..c0bcec0 100644 --- a/services/orchestration/orchestration_consumer.py +++ b/services/orchestration/orchestration_consumer.py @@ -47,11 +47,15 @@ def consume(self): logger.debug("Waiting...") continue if message.error(): - logger.exception(f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}") + logger.exception( + f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}" + ) continue # Extract the (optional) key and value, and print. - logger.debug(f"Consumed message value = {message.value().decode('utf-8')}") + logger.debug( + f"Consumed message value = {message.value().decode('utf-8')}" + ) # pull event object from message event = json.loads(message.value().decode("utf-8")) @@ -60,12 +64,19 @@ def consume(self): try: # check which topic message is from if message.topic() == constants.KAFKA_JOBS_TOPIC_NAME: - if event[constants.KAFKA_JOB_TYPE] != constants.JOB_TYPE_ORCHESTRATION: + if ( + event[constants.KAFKA_JOB_TYPE] + != constants.JOB_TYPE_ORCHESTRATION + ): # skip non-orchestration jobs - logger.debug(f"Consumed non-orchestration job: {event}... skipping") + logger.debug( + f"Consumed non-orchestration job: {event}... skipping" + ) else: # handle orchestration job - logger.info(f"Consumed orchestration job: {event}... handling") + logger.info( + f"Consumed orchestration job: {event}... handling" + ) self.orchestrator.handle_orchestration_job(event) continue else: diff --git a/services/orchestration/orchestration_helper.py b/services/orchestration/orchestration_helper.py index d4b0fa0..42e4087 100644 --- a/services/orchestration/orchestration_helper.py +++ b/services/orchestration/orchestration_helper.py @@ -70,7 +70,9 @@ def get_output_stage(sim_metadata: Dict) -> SimulationStage: @staticmethod def get_rf_digital_twin_model_id(sim_metadata: Dict) -> str: """Get the RF digital twin model used in simulation""" - return sim_metadata[SimulationStage.RF_PREDICTION.value][constants.PARAMS][constants.MODEL_ID] + return sim_metadata[SimulationStage.RF_PREDICTION.value][constants.PARAMS][ + constants.MODEL_ID + ] @staticmethod def has_stage(sim_metadata: Dict, stage: SimulationStage) -> bool: @@ -90,7 +92,9 @@ def get_stage_hash_val(sim_metadata: Dict, stage: SimulationStage) -> str: return sim_metadata[stage.value][constants.HASH_VAL] @staticmethod - def generate_job_event_frame(sim_metadata: Dict, stage: SimulationStage, batch=None) -> Dict: + def generate_job_event_frame( + sim_metadata: Dict, stage: SimulationStage, batch=None + ) -> Dict: """Generate a standard frame for job event given a stage""" job_frame: Dict[str, Any] = {} @@ -110,16 +114,28 @@ def stage_has_completed(sim_metadata: Dict, stage: SimulationStage): """Check if the stage has completed""" _, num_batches = OrchestrationHelper.get_batching_params(sim_metadata) if stage == SimulationStage.UE_TRACKS_GENERATION: - ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][constants.STATE] + ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][ + constants.STATE + ] return ue_tracks_state[constants.BATCHES_OUTPUTTED] == num_batches if stage == SimulationStage.RF_PREDICTION: - rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][constants.STATE] - return rf_prediction_state[constants.LATEST_BATCH_WITHOUT_FAILURE] == num_batches + rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][ + constants.STATE + ] + return ( + rf_prediction_state[constants.LATEST_BATCH_WITHOUT_FAILURE] + == num_batches + ) if stage == SimulationStage.PROTOCOL_EMULATION: - protocol_emulation_state = sim_metadata[SimulationStage.PROTOCOL_EMULATION.value][constants.STATE] - return protocol_emulation_state[constants.LATEST_BATCH_WITHOUT_FAILURE] == num_batches + protocol_emulation_state = sim_metadata[ + SimulationStage.PROTOCOL_EMULATION.value + ][constants.STATE] + return ( + protocol_emulation_state[constants.LATEST_BATCH_WITHOUT_FAILURE] + == num_batches + ) else: logger.exception("Received unexpected stage: {stage.value}") raise ValueError("Received unexpected stage: {stage.value}") diff --git a/services/orchestration/orchestrator.py b/services/orchestration/orchestrator.py index 75c2faa..4161469 100644 --- a/services/orchestration/orchestrator.py +++ b/services/orchestration/orchestrator.py @@ -142,7 +142,9 @@ def handle_orchestration_job(self, job_data: Dict): # input data must be in cache if the first non-cached stage is not the first present stage input_data_is_cached = first_present_stage != first_non_cached_stage - logger.info(f"Running first non-cached stage: {first_non_cached_stage.name}") + logger.info( + f"Running first non-cached stage: {first_non_cached_stage.name}" + ) self._run_first_non_cached_stage( sim_metadata, simulation_id, @@ -151,7 +153,9 @@ def handle_orchestration_job(self, job_data: Dict): ) sim_metadata[constants.JOB_ID] = job_id - sim_metadata[constants.JOB_FINISHED_DATETIME] = datetime.datetime.now(datetime.timezone.utc).isoformat() + sim_metadata[constants.JOB_FINISHED_DATETIME] = datetime.datetime.now( + datetime.timezone.utc + ).isoformat() # save state after orchestration RADPFileSystemHelper.save_simulation_metadata(sim_metadata, simulation_id) @@ -169,11 +173,15 @@ def handle_output_event(self, output_event: Dict): output_service = output_event[constants.SERVICE] if output_service == SimulationStage.UE_TRACKS_GENERATION.value: - self._handle_ue_tracks_generation_output(sim_metadata, output_event, simulation_id) + self._handle_ue_tracks_generation_output( + sim_metadata, output_event, simulation_id + ) elif output_service == SimulationStage.RF_PREDICTION.value: self._handle_rf_prediction_output(sim_metadata, output_event, simulation_id) else: - self._handle_protocol_emulation_output(sim_metadata, output_event, simulation_id) + self._handle_protocol_emulation_output( + sim_metadata, output_event, simulation_id + ) # save state after handling output RADPFileSystemHelper.save_simulation_metadata(sim_metadata, simulation_id) @@ -213,7 +221,10 @@ def _run_first_non_cached_stage( if first_non_cached_stage == SimulationStage.UE_TRACKS_GENERATION: # stage is UE Tracks Generation --> no input data, data is generated return self._start_ue_tracks_generation(sim_metadata, simulation_id) - elif first_non_cached_stage == SimulationStage.RF_PREDICTION and input_data_is_cached: + elif ( + first_non_cached_stage == SimulationStage.RF_PREDICTION + and input_data_is_cached + ): # stage is RF Prediction + input data is cached # --> start all jobs (which pulls from cache) return self._start_all_rf_prediction_jobs(sim_metadata, simulation_id) @@ -223,7 +234,10 @@ def _run_first_non_cached_stage( return self._start_single_rf_prediction_job( sim_metadata, simulation_id, batch=1, data_source=DataSource.USER_INPUT ) - elif first_non_cached_stage == SimulationStage.PROTOCOL_EMULATION and input_data_is_cached: + elif ( + first_non_cached_stage == SimulationStage.PROTOCOL_EMULATION + and input_data_is_cached + ): # stage is RF Prediction + input data is cached # --> start all jobs (which pulls from cache) return self._start_all_protocol_emulation_jobs(sim_metadata, simulation_id) @@ -269,7 +283,9 @@ def _start_ue_tracks_generation(self, sim_metadata: Dict, simulation_id: str): # pull the job parameters from the simulation metadata ue_tracks_params = {} ue_tracks_params.update( - OrchestrationHelper.get_stage_params(sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION) + OrchestrationHelper.get_stage_params( + sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION + ) ) # pull the interval @@ -279,7 +295,9 @@ def _start_ue_tracks_generation(self, sim_metadata: Dict, simulation_id: str): num_ticks, num_batches = OrchestrationHelper.get_batching_params(sim_metadata) # pull hash_val and build output file prefix - hash_val = OrchestrationHelper.get_stage_hash_val(sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION) + hash_val = OrchestrationHelper.get_stage_hash_val( + sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION + ) output_file_prefix = f"{SimulationStage.UE_TRACKS_GENERATION.value}-{hash_val}" # build the ue tracks generation job event @@ -288,7 +306,9 @@ def _start_ue_tracks_generation(self, sim_metadata: Dict, simulation_id: str): ue_tracks_params[constants.NUM_BATCHES] = num_batches # generate the kafka job frame - ue_tracks_job = OrchestrationHelper.generate_job_event_frame(sim_metadata, SimulationStage.UE_TRACKS_GENERATION) + ue_tracks_job = OrchestrationHelper.generate_job_event_frame( + sim_metadata, SimulationStage.UE_TRACKS_GENERATION + ) # supply stage-specific fields ue_tracks_job[SimulationStage.UE_TRACKS_GENERATION.value].update( @@ -299,11 +319,17 @@ def _start_ue_tracks_generation(self, sim_metadata: Dict, simulation_id: str): ) # produce ue_tracks_generation job to jobs topic - produce_object_to_kafka_topic(self.producer, topic=constants.KAFKA_JOBS_TOPIC_NAME, value=ue_tracks_job) - logger.info(f"Produced UE tracks generation job for simulation: {simulation_id}") + produce_object_to_kafka_topic( + self.producer, topic=constants.KAFKA_JOBS_TOPIC_NAME, value=ue_tracks_job + ) + logger.info( + f"Produced UE tracks generation job for simulation: {simulation_id}" + ) # Update state to show UE tracks generation has started - ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][constants.STATE] + ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][ + constants.STATE + ] ue_tracks_state[constants.STATUS] = WorkflowStatus.IN_PROGRESS.value def _start_all_rf_prediction_jobs(self, sim_metadata: Dict, simulation_id: str): @@ -311,9 +337,13 @@ def _start_all_rf_prediction_jobs(self, sim_metadata: Dict, simulation_id: str): # pull number of batches to start _, num_batches = OrchestrationHelper.get_batching_params(sim_metadata) - logger.info(f"Starting all {num_batches} RF Prediction jobs for simulation: {simulation_id}") + logger.info( + f"Starting all {num_batches} RF Prediction jobs for simulation: {simulation_id}" + ) for i in range(1, num_batches + 1): - self._start_single_rf_prediction_job(sim_metadata, simulation_id, batch=i, data_source=DataSource.CACHE) + self._start_single_rf_prediction_job( + sim_metadata, simulation_id, batch=i, data_source=DataSource.CACHE + ) def _start_single_rf_prediction_job( self, @@ -345,7 +375,9 @@ def _start_single_rf_prediction_job( # check if input is from simulation folder or UE tracks generation output layer if data_source == DataSource.USER_INPUT: # input is in simulation folder, get its path - ue_data_file_path = RADPFileSystemHelper.gen_simulation_ue_data_file_path(simulation_id) + ue_data_file_path = RADPFileSystemHelper.gen_simulation_ue_data_file_path( + simulation_id + ) else: # input is cached in UE tracks generation output layer, get its path using its hash ue_tracks_hash_val = OrchestrationHelper.get_stage_hash_val( @@ -358,7 +390,9 @@ def _start_single_rf_prediction_job( ) # get output file path using the RF Prediction hash - rf_prediction_hash_val = OrchestrationHelper.get_stage_hash_val(sim_metadata, SimulationStage.RF_PREDICTION) + rf_prediction_hash_val = OrchestrationHelper.get_stage_hash_val( + sim_metadata, SimulationStage.RF_PREDICTION + ) output_file_path = RADPFileSystemHelper.gen_stage_output_file_path( stage=SimulationStage.RF_PREDICTION, hash_val=rf_prediction_hash_val, @@ -370,11 +404,15 @@ def _start_single_rf_prediction_job( model_file_path = RADPFileSystemHelper.gen_model_file_path(model_id) # get the config and topology file paths - config_file_path = RADPFileSystemHelper.gen_simulation_cell_config_file_path(simulation_id) + config_file_path = RADPFileSystemHelper.gen_simulation_cell_config_file_path( + simulation_id + ) topology_file_path = RADPFileSystemHelper.gen_model_topology_file_path(model_id) # get the RF prediction params - rf_prediction_params = OrchestrationHelper.get_stage_params(sim_metadata, stage=SimulationStage.RF_PREDICTION) + rf_prediction_params = OrchestrationHelper.get_stage_params( + sim_metadata, stage=SimulationStage.RF_PREDICTION + ) # build the rf prediction job rf_prediction_job = OrchestrationHelper.generate_job_event_frame( @@ -398,11 +436,15 @@ def _start_single_rf_prediction_job( topic=constants.KAFKA_JOBS_TOPIC_NAME, value=rf_prediction_job, ) - logger.info(f"Produced RF Prediction job batch {batch} for simulation: {simulation_id}") + logger.info( + f"Produced RF Prediction job batch {batch} for simulation: {simulation_id}" + ) # Update state to show RF Prediction has started if batch == 1: - rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][constants.STATE] + rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][ + constants.STATE + ] rf_prediction_state[constants.STATUS] = WorkflowStatus.IN_PROGRESS.value def _start_all_protocol_emulation_jobs( @@ -425,28 +467,42 @@ def _start_single_protocol_emulation_job( # TODO: implement this once protocol emulation service is implemented pass - def _handle_ue_tracks_generation_output(self, sim_metadata: Dict, ue_tracks_output: Dict, simulation_id: str): + def _handle_ue_tracks_generation_output( + self, sim_metadata: Dict, ue_tracks_output: Dict, simulation_id: str + ): """Handle a UE tracks generation output""" # TODO: handle a failed job. We'll probably want to add the original job event to the output object # to make retry easier if ue_tracks_output[constants.STATUS] == OutputStatus.FAILURE.value: - logger.exception(f"Simulation {simulation_id} failed in UE tracks generation stage: {ue_tracks_output}") - raise Exception(f"Simulation {simulation_id} failed in UE tracks generation stage: {ue_tracks_output}") + logger.exception( + f"Simulation {simulation_id} failed in UE tracks generation stage: {ue_tracks_output}" + ) + raise Exception( + f"Simulation {simulation_id} failed in UE tracks generation stage: {ue_tracks_output}" + ) # pull state and batch - ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][constants.STATE] + ue_tracks_state = sim_metadata[SimulationStage.UE_TRACKS_GENERATION.value][ + constants.STATE + ] batch = ue_tracks_output[constants.BATCH] # update the outputted batches field ue_tracks_state[constants.BATCHES_OUTPUTTED] = batch # check if the stage has completed, update stage status if so - stage_completed = OrchestrationHelper.stage_has_completed(sim_metadata, SimulationStage.UE_TRACKS_GENERATION) + stage_completed = OrchestrationHelper.stage_has_completed( + sim_metadata, SimulationStage.UE_TRACKS_GENERATION + ) if stage_completed: ue_tracks_state[constants.STATUS] = WorkflowStatus.FINISHED.value - if OrchestrationHelper.has_stage(sim_metadata, stage=SimulationStage.RF_PREDICTION): - self._start_single_rf_prediction_job(sim_metadata, simulation_id, batch, data_source=DataSource.CACHE) + if OrchestrationHelper.has_stage( + sim_metadata, stage=SimulationStage.RF_PREDICTION + ): + self._start_single_rf_prediction_job( + sim_metadata, simulation_id, batch, data_source=DataSource.CACHE + ) elif stage_completed: # this was the last stage, move to wrap up self._wrap_up_simulation(sim_metadata, simulation_id) @@ -455,16 +511,24 @@ def _handle_ue_tracks_generation_output(self, sim_metadata: Dict, ue_tracks_outp # save simulation metadata and exit pass - def _handle_rf_prediction_output(self, sim_metadata: Dict, rf_prediction_output: Dict, simulation_id: str): + def _handle_rf_prediction_output( + self, sim_metadata: Dict, rf_prediction_output: Dict, simulation_id: str + ): """Handle an RF prediction output""" # TODO: handle a failed job. We'll probably want to add the original job event to the output object # to make retry easier if rf_prediction_output[constants.STATUS] == OutputStatus.FAILURE.value: - logger.exception(f"Simulation {simulation_id} failed in RF Prediction stage: {rf_prediction_output}") - raise Exception(f"Simulation {simulation_id} failed in RF Prediction stage: {rf_prediction_output}") + logger.exception( + f"Simulation {simulation_id} failed in RF Prediction stage: {rf_prediction_output}" + ) + raise Exception( + f"Simulation {simulation_id} failed in RF Prediction stage: {rf_prediction_output}" + ) # pull state and batch - rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][constants.STATE] + rf_prediction_state = sim_metadata[SimulationStage.RF_PREDICTION.value][ + constants.STATE + ] batch = rf_prediction_output[constants.BATCH] # TODO: update this to account for past failures once @@ -474,11 +538,15 @@ def _handle_rf_prediction_output(self, sim_metadata: Dict, rf_prediction_output: rf_prediction_state[constants.LATEST_BATCH_TO_SUCCEED] = batch # check if the stage has completed, update stage status if so - stage_completed = OrchestrationHelper.stage_has_completed(sim_metadata, SimulationStage.RF_PREDICTION) + stage_completed = OrchestrationHelper.stage_has_completed( + sim_metadata, SimulationStage.RF_PREDICTION + ) if stage_completed: rf_prediction_state[constants.STATUS] = WorkflowStatus.FINISHED.value - if OrchestrationHelper.has_stage(sim_metadata, stage=SimulationStage.PROTOCOL_EMULATION): + if OrchestrationHelper.has_stage( + sim_metadata, stage=SimulationStage.PROTOCOL_EMULATION + ): self._start_single_protocol_emulation_job( sim_metadata, simulation_id, @@ -526,17 +594,23 @@ def _wrap_up_simulation(self, sim_metadata: Dict, simulation_id: str): sim_metadata[constants.SIMULATION_STATUS] = WorkflowStatus.FINISHED.value logger.info(f"Successfully completed simulation: {simulation_id}") - def _copy_simulation_output_to_consume_folder(self, sim_metadata: Dict, simulation_id: str): + def _copy_simulation_output_to_consume_folder( + self, sim_metadata: Dict, simulation_id: str + ): """Copy simulation output to consumable zip file Consumable zip file will allow the user to download data and system will delete afterwords. """ - logger.debug(f"Copying output from simulation: {simulation_id} to consumable zip file") + logger.debug( + f"Copying output from simulation: {simulation_id} to consumable zip file" + ) # get the output stage simulation_output_stage = OrchestrationHelper.get_output_stage(sim_metadata) - hash_val = OrchestrationHelper.get_stage_hash_val(sim_metadata, stage=simulation_output_stage) + hash_val = OrchestrationHelper.get_stage_hash_val( + sim_metadata, stage=simulation_output_stage + ) # pull number of batches to zip _, num_batches = OrchestrationHelper.get_batching_params(sim_metadata) @@ -551,11 +625,17 @@ def _copy_simulation_output_to_consume_folder(self, sim_metadata: Dict, simulati def _clean_unused_output_data(self, sim_metadata: Dict, simulation_id: str): """Clean unused output data""" - logger.info(f"Removing all outputs not used in recent simulation: {simulation_id}") + logger.info( + f"Removing all outputs not used in recent simulation: {simulation_id}" + ) - if OrchestrationHelper.has_stage(sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION): + if OrchestrationHelper.has_stage( + sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION + ): # clean UE Tracks Generation outputs - ue_tracks_generation_hash_val: Optional[str] = OrchestrationHelper.get_stage_hash_val( + ue_tracks_generation_hash_val: Optional[ + str + ] = OrchestrationHelper.get_stage_hash_val( sim_metadata, stage=SimulationStage.UE_TRACKS_GENERATION, ) @@ -564,9 +644,13 @@ def _clean_unused_output_data(self, sim_metadata: Dict, simulation_id: str): save_hash_val=ue_tracks_generation_hash_val, ) - if OrchestrationHelper.has_stage(sim_metadata, stage=SimulationStage.RF_PREDICTION): + if OrchestrationHelper.has_stage( + sim_metadata, stage=SimulationStage.RF_PREDICTION + ): # clean RF Prediction outputs - rf_prediction_hash_val: Optional[str] = OrchestrationHelper.get_stage_hash_val( + rf_prediction_hash_val: Optional[ + str + ] = OrchestrationHelper.get_stage_hash_val( sim_metadata, stage=SimulationStage.RF_PREDICTION, ) @@ -575,9 +659,13 @@ def _clean_unused_output_data(self, sim_metadata: Dict, simulation_id: str): save_hash_val=rf_prediction_hash_val, ) - if OrchestrationHelper.has_stage(sim_metadata, stage=SimulationStage.PROTOCOL_EMULATION): + if OrchestrationHelper.has_stage( + sim_metadata, stage=SimulationStage.PROTOCOL_EMULATION + ): # clean Protocol Emulation outputs - protocol_emulation_hash_val: Optional[str] = OrchestrationHelper.get_stage_hash_val( + protocol_emulation_hash_val: Optional[ + str + ] = OrchestrationHelper.get_stage_hash_val( sim_metadata, stage=SimulationStage.PROTOCOL_EMULATION, ) @@ -585,4 +673,6 @@ def _clean_unused_output_data(self, sim_metadata: Dict, simulation_id: str): stage=SimulationStage.PROTOCOL_EMULATION, save_hash_val=protocol_emulation_hash_val, ) - logger.info(f"Successfully removed all unused outputs for simulation: {simulation_id}") + logger.info( + f"Successfully removed all unused outputs for simulation: {simulation_id}" + ) diff --git a/services/orchestration/tests/test_orchestration_helper.py b/services/orchestration/tests/test_orchestration_helper.py index dce3b3e..a58ddc1 100644 --- a/services/orchestration/tests/test_orchestration_helper.py +++ b/services/orchestration/tests/test_orchestration_helper.py @@ -143,10 +143,16 @@ def test_get_rf_digital_twin_model_id(self): ) def test_has_stage(self): - self.assertTrue(OrchestrationHelper.has_stage(dummy_sim_metadata, SimulationStage.RF_PREDICTION)) + self.assertTrue( + OrchestrationHelper.has_stage( + dummy_sim_metadata, SimulationStage.RF_PREDICTION + ) + ) def test_stage_missing(self): - self.assertFalse(OrchestrationHelper.has_stage(dummy_sim_metadata, SimulationStage.START)) + self.assertFalse( + OrchestrationHelper.has_stage(dummy_sim_metadata, SimulationStage.START) + ) def test_has_hash(self): sim_metadata_hash = {"rf_prediction": {"hash_val": "val"}} @@ -217,9 +223,21 @@ def test_stage_has_completed(self): } num_ticks, num_batches = OrchestrationHelper.get_batching_params(dummy_sim_data) - self.assertTrue(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.UE_TRACKS_GENERATION)) - self.assertTrue(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.RF_PREDICTION)) - self.assertTrue(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.PROTOCOL_EMULATION)) + self.assertTrue( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.UE_TRACKS_GENERATION + ) + ) + self.assertTrue( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.RF_PREDICTION + ) + ) + self.assertTrue( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.PROTOCOL_EMULATION + ) + ) def test_stage_has_completed_exception(self): dummy_sim_data = { @@ -244,9 +262,21 @@ def test_stage_has_completed_exception(self): } }, } - self.assertFalse(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.UE_TRACKS_GENERATION)) - self.assertFalse(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.RF_PREDICTION)) - self.assertFalse(OrchestrationHelper.stage_has_completed(dummy_sim_data, SimulationStage.PROTOCOL_EMULATION)) + self.assertFalse( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.UE_TRACKS_GENERATION + ) + ) + self.assertFalse( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.RF_PREDICTION + ) + ) + self.assertFalse( + OrchestrationHelper.stage_has_completed( + dummy_sim_data, SimulationStage.PROTOCOL_EMULATION + ) + ) def test_update_stage_state_to_finished(self): dummy_sim_data = { @@ -259,10 +289,14 @@ def test_update_stage_state_to_finished(self): } }, "rf_prediction": {"state": {"batches_outputted": "dummy_num_batches_val"}}, - "protocol_emulation": {"state": {"batches_outputted": "dummy_num_batches_val"}}, + "protocol_emulation": { + "state": {"batches_outputted": "dummy_num_batches_val"} + }, } stage_ue_track_generation = SimulationStage.UE_TRACKS_GENERATION - OrchestrationHelper.update_stage_state_to_finished(dummy_sim_data, stage_ue_track_generation) + OrchestrationHelper.update_stage_state_to_finished( + dummy_sim_data, stage_ue_track_generation + ) self.assertEqual( dummy_sim_data[stage_ue_track_generation.value]["state"], { diff --git a/services/rf_prediction/rf_prediction_consumer.py b/services/rf_prediction/rf_prediction_consumer.py index 0532df2..f88797a 100644 --- a/services/rf_prediction/rf_prediction_consumer.py +++ b/services/rf_prediction/rf_prediction_consumer.py @@ -45,15 +45,22 @@ def consume_from_jobs(self) -> None: logger.debug("Waiting...") continue if message.error(): - logger.exception(f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}") + logger.exception( + f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}" + ) continue # Extract the (optional) key and value, and print. - logger.debug(f"Consumed message value = {message.value().decode('utf-8')}") + logger.debug( + f"Consumed message value = {message.value().decode('utf-8')}" + ) job_data = json.loads(message.value().decode("utf-8")) # ignore non-RF Prediction related jobs - if job_data[constants.KAFKA_JOB_TYPE] != constants.JOB_TYPE_RF_PREDICTION: + if ( + job_data[constants.KAFKA_JOB_TYPE] + != constants.JOB_TYPE_RF_PREDICTION + ): continue # execute RF prediction @@ -62,7 +69,9 @@ def consume_from_jobs(self) -> None: logger.info("Successfully ran RF Prediction on model") except Exception as e: # TODO: add output event failure handling here - logger.exception(f"Exception occurred while handling RF Prediction job: {job_data}\n{e}") + logger.exception( + f"Exception occurred while handling RF Prediction job: {job_data}\n{e}" + ) except KeyboardInterrupt: pass finally: diff --git a/services/rf_prediction/rf_prediction_driver.py b/services/rf_prediction/rf_prediction_driver.py index e23da47..62f7679 100644 --- a/services/rf_prediction/rf_prediction_driver.py +++ b/services/rf_prediction/rf_prediction_driver.py @@ -75,7 +75,7 @@ def handle_rf_prediction_job(self, job_data): # pull the model model_id, model_file_path = RFPredictionHelper.get_model_parameters(job_data) - + job_id = job_data[constants.JOB_ID] logger.info(f"Running RF prediction using model: {model_id}") @@ -102,11 +102,17 @@ def handle_rf_prediction_job(self, job_data): ) # load model map - bayesian_digital_twin_map = BayesianDigitalTwin.load_model_map_from_pickle(model_file_path=model_file_path) - logger.debug(f"Loaded bayesian digital twin model {model_id} from '{model_file_path}'") + bayesian_digital_twin_map = BayesianDigitalTwin.load_model_map_from_pickle( + model_file_path=model_file_path + ) + logger.debug( + f"Loaded bayesian digital twin model {model_id} from '{model_file_path}'" + ) # run per-cell prediction - prediction_output_map = self._run_inference_per_cell(cell_id_ue_data_map, bayesian_digital_twin_map) + prediction_output_map = self._run_inference_per_cell( + cell_id_ue_data_map, bayesian_digital_twin_map + ) # attach per-cell rxpower_dbm to ue_data_df rx_powers = [] @@ -116,7 +122,9 @@ def handle_rf_prediction_job(self, job_data): # get the expected RF Prediction output data # TODO: Reorder to first pull then insert rx_powers - ue_data_df.insert(loc=len(ue_data_df.columns), column=constants.RXPOWER_DBM, value=rx_powers) + ue_data_df.insert( + loc=len(ue_data_df.columns), column=constants.RXPOWER_DBM, value=rx_powers + ) rf_prediction_output = ue_data_df.loc[ :, [ @@ -129,7 +137,9 @@ def handle_rf_prediction_job(self, job_data): # if mock_ue_id provided, append to output if constants.MOCK_UE_ID in ue_data_df: - rf_prediction_output[constants.MOCK_UE_ID] = ue_data_df[constants.MOCK_UE_ID] + rf_prediction_output[constants.MOCK_UE_ID] = ue_data_df[ + constants.MOCK_UE_ID + ] # if tick provided, append to output if constants.TICK in ue_data_df: @@ -151,7 +161,9 @@ def handle_rf_prediction_job(self, job_data): constants.BATCH: batch, constants.STATUS: OutputStatus.SUCCESS.value, } - produce_object_to_kafka_topic(self.producer, topic=constants.OUTPUTS, value=output_event) + produce_object_to_kafka_topic( + self.producer, topic=constants.OUTPUTS, value=output_event + ) logger.info(f"Produced successful output event to topic: {output_event}") def _preprocess_ue_data( @@ -176,7 +188,9 @@ def _preprocess_ue_data( # perform cross replication if required if cross_replications_required: - logger.info("No cell_id column found in UE data, running cross replication...") + logger.info( + "No cell_id column found in UE data, running cross replication..." + ) cell_ids = pd.DataFrame(config_df[constants.CELL_ID]) ue_data_df = cross_replicate(ue_data_df, cell_ids) @@ -184,7 +198,9 @@ def _preprocess_ue_data( logger.info("Finished running cross replication!") # run Bayesian digital twin preprocessing - cell_id_ue_data_map: Dict[str, pd.DataFrame] = BayesianDigitalTwin.preprocess_ue_prediction_data( + cell_id_ue_data_map: Dict[ + str, pd.DataFrame + ] = BayesianDigitalTwin.preprocess_ue_prediction_data( ue_data_df=ue_data_df, config_df=config_df, topology_df=topology_df, @@ -205,9 +221,9 @@ def _run_inference_per_cell( for cell_id, ue_prediction_data in cell_id_ue_data_map.items(): logger.info(f"Running inference for cell_id: {cell_id}...") # run prediction - pred_means, pred_std = bayesian_digital_twin_map[cell_id].predict_distributed_gpmodel( - prediction_dfs=[ue_prediction_data] - ) + pred_means, pred_std = bayesian_digital_twin_map[ + cell_id + ].predict_distributed_gpmodel(prediction_dfs=[ue_prediction_data]) # store to output map prediction_output_map[cell_id] = (pred_means, pred_std, ue_prediction_data) diff --git a/services/training/training_consumer.py b/services/training/training_consumer.py index f9318af..9ccd360 100644 --- a/services/training/training_consumer.py +++ b/services/training/training_consumer.py @@ -45,11 +45,15 @@ def consume_from_jobs(self): logger.debug("Waiting...") continue if message.error(): - logger.exception(f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}") + logger.exception( + f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}" + ) continue # Extract the (optional) key and value, and print. - logger.debug(f"Consumed message value = {message.value().decode('utf-8')}") + logger.debug( + f"Consumed message value = {message.value().decode('utf-8')}" + ) job_data = json.loads(message.value().decode("utf-8")) # ignore non-training related jobs @@ -59,9 +63,13 @@ def consume_from_jobs(self): # execute training try: self.training_driver.handle_training_job(job_data) - logger.info(f"Successfully trained model {job_data[constants.MODEL_ID]}") + logger.info( + f"Successfully trained model {job_data[constants.MODEL_ID]}" + ) except Exception as e: - logger.exception(f"Exception occurred while handling training job: {job_data}\n{e}") + logger.exception( + f"Exception occurred while handling training job: {job_data}\n{e}" + ) except KeyboardInterrupt: pass finally: diff --git a/services/training/training_driver.py b/services/training/training_driver.py index 6705051..26ca30a 100644 --- a/services/training/training_driver.py +++ b/services/training/training_driver.py @@ -57,12 +57,16 @@ def handle_training_job(self, job_data: Dict): ue_training_data_df = pd.read_csv(ue_training_data_file) topology_df = pd.read_csv(topology_file) except Exception as e: - logger.exception(f"Exception occurred while loading digital twin training data: {e}") + logger.exception( + f"Exception occurred while loading digital twin training data: {e}" + ) raise Exception # Preprocess training data logger.info("Preprocessing training data...") - cell_id_ue_data_map = BayesianDigitalTwin.preprocess_ue_training_data(ue_training_data_df, topology_df) + cell_id_ue_data_map = BayesianDigitalTwin.preprocess_ue_training_data( + ue_training_data_df, topology_df + ) logger.info("Finished preprocessing training data...") logger.info("Starting model training...") @@ -101,9 +105,7 @@ def handle_training_job(self, job_data: Dict): # prime the model cache by calling a mock prediction on it # using the first set of training data # so that it is ready for further updates or operations - model_map[cell_id].predict_distributed_gpmodel( - [training_data.head(1)] - ) + model_map[cell_id].predict_distributed_gpmodel([training_data.head(1)]) # save the serialized model map object to file BayesianDigitalTwin.save_model_map_to_pickle( @@ -116,7 +118,9 @@ def handle_training_job(self, job_data: Dict): model_metadata[constants.STATUS] = ModelStatus.TRAINED.value model_metadata[constants.JOB_ID] = job_id - model_metadata[constants.JOB_FINISHED_DATETIME] = datetime.datetime.now(datetime.timezone.utc).isoformat() + model_metadata[constants.JOB_FINISHED_DATETIME] = datetime.datetime.now( + datetime.timezone.utc + ).isoformat() RADPFileSystemHelper.save_model_metadata( model_id=model_id, @@ -147,7 +151,7 @@ def _train_model( training_params: Dict, ) -> BayesianDigitalTwin: """Train a model per each cell of data""" - + # this class init method fully prepares the model to be trained # but stops just short of actually calling train() on it model = BayesianDigitalTwin( diff --git a/services/ue_tracks_generation/main.py b/services/ue_tracks_generation/main.py index 241a165..4312060 100644 --- a/services/ue_tracks_generation/main.py +++ b/services/ue_tracks_generation/main.py @@ -6,7 +6,9 @@ import signal import sys -from ue_tracks_generation.ue_tracks_generation_consumer import UETracksGenerationConsumer +from ue_tracks_generation.ue_tracks_generation_consumer import ( + UETracksGenerationConsumer, +) # define a sigterm handler to allow docker to gracefully exit diff --git a/services/ue_tracks_generation/ue_tracks_generation_consumer.py b/services/ue_tracks_generation/ue_tracks_generation_consumer.py index 1d64726..8e0e247 100644 --- a/services/ue_tracks_generation/ue_tracks_generation_consumer.py +++ b/services/ue_tracks_generation/ue_tracks_generation_consumer.py @@ -27,7 +27,9 @@ def __init__(self): self.ue_tracks_generation_driver = UETracksGenerationDriver() # subscribe to topics - safe_subscribe(consumer=self.consumer, topics=UE_TRACKS_GENERATION_CONSUMER_TOPICS) + safe_subscribe( + consumer=self.consumer, topics=UE_TRACKS_GENERATION_CONSUMER_TOPICS + ) logger.info(f"Subscribed to topics: {UE_TRACKS_GENERATION_CONSUMER_TOPICS}") def consume_from_jobs(self) -> None: @@ -45,23 +47,34 @@ def consume_from_jobs(self) -> None: logger.debug("Waiting...") continue if message.error(): - logger.exception(f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}") + logger.exception( + f"Error consuming from {constants.KAFKA_JOBS_TOPIC_NAME} topic: {message.error()}" + ) continue # Extract the (optional) key and value, and print. - logger.debug(f"Consumed message value = {message.value().decode('utf-8')}") + logger.debug( + f"Consumed message value = {message.value().decode('utf-8')}" + ) job_data = json.loads(message.value().decode("utf-8")) # ignore non-ue_tracks_generation related jobs - if job_data[constants.KAFKA_JOB_TYPE] != constants.JOB_TYPE_UE_TRACKS_GENERATION: + if ( + job_data[constants.KAFKA_JOB_TYPE] + != constants.JOB_TYPE_UE_TRACKS_GENERATION + ): continue # execute ue_tracks_generation try: - self.ue_tracks_generation_driver.handle_ue_tracks_generation_job(job_data) + self.ue_tracks_generation_driver.handle_ue_tracks_generation_job( + job_data + ) logger.info("Successfully executed UE Tracks Generation job") except Exception as e: - logger.exception(f"Exception occurred while handling ue_tracks_generation job: {job_data}\n{e}") + logger.exception( + f"Exception occurred while handling ue_tracks_generation job: {job_data}\n{e}" + ) except KeyboardInterrupt: pass finally: diff --git a/services/ue_tracks_generation/ue_tracks_generation_driver.py b/services/ue_tracks_generation/ue_tracks_generation_driver.py index c0d5a66..8094da3 100644 --- a/services/ue_tracks_generation/ue_tracks_generation_driver.py +++ b/services/ue_tracks_generation/ue_tracks_generation_driver.py @@ -108,11 +108,19 @@ def handle_ue_tracks_generation_job(self, job_data=None): logger.info(f"Handling UE Tracks generation job: {job_data}") # Extract all the required information from the job_data in order to generate UE tracks - ue_tracks_generation_params = UETracksGenerationHelper.get_ue_tracks_generation_parameters(job_data) + ue_tracks_generation_params = ( + UETracksGenerationHelper.get_ue_tracks_generation_parameters(job_data) + ) - simulation_time_interval = UETracksGenerationHelper.get_simulation_time_interval(ue_tracks_generation_params) + simulation_time_interval = ( + UETracksGenerationHelper.get_simulation_time_interval( + ue_tracks_generation_params + ) + ) num_ticks = UETracksGenerationHelper.get_num_ticks(ue_tracks_generation_params) - num_batches = UETracksGenerationHelper.get_num_batches(ue_tracks_generation_params) + num_batches = UETracksGenerationHelper.get_num_batches( + ue_tracks_generation_params + ) # Get the total number of UEs from the UE class distribution and add them up ( @@ -120,7 +128,9 @@ def handle_ue_tracks_generation_job(self, job_data=None): pedestrian_count, cyclist_count, car_count, - ) = UETracksGenerationHelper.get_ue_class_distribution_count(ue_tracks_generation_params) + ) = UETracksGenerationHelper.get_ue_class_distribution_count( + ue_tracks_generation_params + ) num_UEs = stationary_count + pedestrian_count + cyclist_count + car_count @@ -188,11 +198,19 @@ def handle_ue_tracks_generation_job(self, job_data=None): ) = UETracksGenerationHelper.get_lat_lon_boundaries(ue_tracks_generation_params) # Gauss Markov params - alpha = UETracksGenerationHelper.get_gauss_markov_alpha(ue_tracks_generation_params) - variance = UETracksGenerationHelper.get_gauss_markov_variance(ue_tracks_generation_params) - rng_seed = UETracksGenerationHelper.get_gauss_markov_rng_seed(ue_tracks_generation_params) + alpha = UETracksGenerationHelper.get_gauss_markov_alpha( + ue_tracks_generation_params + ) + variance = UETracksGenerationHelper.get_gauss_markov_variance( + ue_tracks_generation_params + ) + rng_seed = UETracksGenerationHelper.get_gauss_markov_rng_seed( + ue_tracks_generation_params + ) - lon_x_dims, lon_y_dims = UETracksGenerationHelper.get_gauss_markov_xy_dims(ue_tracks_generation_params) + lon_x_dims, lon_y_dims = UETracksGenerationHelper.get_gauss_markov_xy_dims( + ue_tracks_generation_params + ) # Use the above parameters extracted from the job data to generate mobility # Get each batch of mobility data in form of DataFrames @@ -200,7 +218,9 @@ def handle_ue_tracks_generation_job(self, job_data=None): simulation_id = UETracksGenerationHelper.get_simulation_id(job_data) current_batch = 1 - for ue_tracks_generation_current_batch_df in self._mobility_data_generation( + for ( + ue_tracks_generation_current_batch_df + ) in UETracksGenerator.generate_as_lon_lat_points( rng_seed=rng_seed, lon_x_dims=lon_x_dims, lon_y_dims=lon_y_dims, @@ -218,12 +238,20 @@ def handle_ue_tracks_generation_job(self, job_data=None): mobility_class_velocity_variances=mobility_class_velocity_variances, ): # save output to file with format {output_file_prefix}-{batch}.fea - output_file_prefix = UETracksGenerationHelper.get_output_file_prefix(job_data) - output_file_name = f"{output_file_prefix}-{current_batch}.{constants.DF_FILE_EXTENSION}" - output_file_path = os.path.join(constants.UE_TRACK_GENERATION_OUTPUTS_FOLDER, output_file_name) + output_file_prefix = UETracksGenerationHelper.get_output_file_prefix( + job_data + ) + output_file_name = ( + f"{output_file_prefix}-{current_batch}.{constants.DF_FILE_EXTENSION}" + ) + output_file_path = os.path.join( + constants.UE_TRACK_GENERATION_OUTPUTS_FOLDER, output_file_name + ) write_feather_df(output_file_path, ue_tracks_generation_current_batch_df) - logger.info(f"Saved UE Tracks batch {current_batch} output DF to {output_file_path}") + logger.info( + f"Saved UE Tracks batch {current_batch} output DF to {output_file_path}" + ) # Once each batch has been processed and written to the output file, we can indicate that the job # has done successfully and produce output event to outputs topic @@ -243,103 +271,3 @@ def handle_ue_tracks_generation_job(self, job_data=None): # Increment the batch number for the next batch current_batch += 1 - - def _mobility_data_generation( - self, - rng_seed: int, - lon_x_dims: int, - lon_y_dims: int, - num_ticks: int, - num_batches: int, - num_UEs: int, - alpha: int, - variance: int, - min_lat: float, - max_lat: float, - min_lon: float, - max_lon: float, - mobility_class_distribution: Dict[MobilityClass, float], - mobility_class_velocities: Dict[MobilityClass, float], - mobility_class_velocity_variances: Dict[MobilityClass, float], - ) -> pd.DataFrame: - """ - The mobility data generation method takes in all the parameters required to generate UE tracks - for a specified number of batches - - The UETracksGenerator uses the Gauss-Markov Mobility Model to yields batch of tracks for UEs, - corresponding to `num_ticks` number of simulation ticks, and the number of UEs - the user wants to simulate. - - Using the UETracksGenerator, the UE tracks are returned in form of a dataframe - The Dataframe is arranged as follows: - - +------------+------------+-----------+------+ - | mock_ue_id | lon | lat | tick | - +============+============+===========+======+ - | 0 | 102.219377 | 33.674572 | 0 | - | 1 | 102.415954 | 33.855534 | 0 | - | 2 | 102.545935 | 33.878075 | 0 | - | 0 | 102.297766 | 33.575942 | 1 | - | 1 | 102.362725 | 33.916477 | 1 | - | 2 | 102.080675 | 33.832793 | 1 | - +------------+------------+-----------+------+ - """ - - ue_tracks_generator = UETracksGenerator( - rng=np.random.default_rng(rng_seed), - lon_x_dims=lon_x_dims, - lon_y_dims=lon_y_dims, - num_ticks=num_ticks, - num_UEs=num_UEs, - alpha=alpha, - variance=variance, - min_lat=min_lat, - max_lat=max_lat, - min_lon=min_lon, - max_lon=max_lon, - mobility_class_distribution=mobility_class_distribution, - mobility_class_velocities=mobility_class_velocities, - mobility_class_velocity_variances=mobility_class_velocity_variances, - ) - - for _num_batches, xy_batches in enumerate(ue_tracks_generator.generate()): - ue_tracks_dataframe_dict: Dict[Any, Any] = {} - - # Extract the xy (lon, lat) points from each batch to use it in the mobility dataframe - # mock_ue_id, tick, lat, lon - mock_ue_id = [] - ticks = [] - lon: List[float] = [] - lat: List[float] = [] - - tick = 0 - for xy_batch in xy_batches: - lon_lat_pairs = GISTools.converting_xy_points_into_lonlat_pairs( - xy_points=xy_batch, - x_dim=lon_x_dims, - y_dim=lon_y_dims, - min_longitude=min_lon, - max_longitude=max_lon, - min_latitude=min_lat, - max_latitude=max_lat, - ) - - # Build list for each column/row for the UE Tracks dataframe - lon.extend(xy_points[0] for xy_points in lon_lat_pairs) - lat.extend(xy_points[1] for xy_points in lon_lat_pairs) - mock_ue_id.extend([i for i in range(num_UEs)]) - ticks.extend(list(itertools.repeat(tick, num_UEs))) - tick += 1 - - # Build dict for each column/row for the UE Tracks dataframe - ue_tracks_dataframe_dict[constants.MOCK_UE_ID] = mock_ue_id - ue_tracks_dataframe_dict[constants.LONGITUDE] = lon - ue_tracks_dataframe_dict[constants.LATITUDE] = lat - ue_tracks_dataframe_dict[constants.TICK] = ticks - - # Yield each batch as a dataframe - yield pd.DataFrame(ue_tracks_dataframe_dict) - - num_batches -= 1 - if num_batches == 0: - break diff --git a/services/ue_tracks_generation/ue_tracks_generation_helper.py b/services/ue_tracks_generation/ue_tracks_generation_helper.py index 43d8d34..eefcb75 100644 --- a/services/ue_tracks_generation/ue_tracks_generation_helper.py +++ b/services/ue_tracks_generation/ue_tracks_generation_helper.py @@ -47,18 +47,24 @@ def get_num_batches(ue_tracks_generation_params: Dict) -> str: @staticmethod def get_ue_class_distribution_count(ue_tracks_generation_params: Dict): """Helper method to return ue_class_distribution of an UE Tracks Generation job""" - stationary_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.STATIONARY][ - constants.COUNT - ] - pedestrian_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.PEDESTRIAN][ - constants.COUNT - ] - cyclist_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CYCLIST][constants.COUNT] - car_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CAR][constants.COUNT] + stationary_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.STATIONARY + ][constants.COUNT] + pedestrian_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.PEDESTRIAN + ][constants.COUNT] + cyclist_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.CYCLIST + ][constants.COUNT] + car_count = ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.CAR + ][constants.COUNT] return stationary_count, pedestrian_count, cyclist_count, car_count @staticmethod - def get_ue_class_distribution_velocity(ue_tracks_generation_params: Dict, simulation_time_interval: int): + def get_ue_class_distribution_velocity( + ue_tracks_generation_params: Dict, simulation_time_interval: int + ): """ Helper method to return ue_class_distribution_velocity of an UE Tracks Generation job @@ -70,19 +76,27 @@ def get_ue_class_distribution_velocity(ue_tracks_generation_params: Dict, simula """ stationary_velocity = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.STATIONARY][constants.VELOCITY] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.STATIONARY + ][constants.VELOCITY] * simulation_time_interval ) pedestrian_velocity = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.PEDESTRIAN][constants.VELOCITY] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.PEDESTRIAN + ][constants.VELOCITY] * simulation_time_interval ) cyclist_velocity = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CYCLIST][constants.VELOCITY] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.CYCLIST + ][constants.VELOCITY] * simulation_time_interval ) car_velocity = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CAR][constants.VELOCITY] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CAR][ + constants.VELOCITY + ] * simulation_time_interval ) return ( @@ -93,7 +107,9 @@ def get_ue_class_distribution_velocity(ue_tracks_generation_params: Dict, simula ) @staticmethod - def get_ue_class_distribution_velocity_variances(ue_tracks_generation_params: Dict, simulation_time_interval: int): + def get_ue_class_distribution_velocity_variances( + ue_tracks_generation_params: Dict, simulation_time_interval: int + ): """ Helper method to return ue_class_distribution_velocity_variances of an UE Tracks Generation job @@ -105,23 +121,27 @@ def get_ue_class_distribution_velocity_variances(ue_tracks_generation_params: Di """ stationary_velocity_variance = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.STATIONARY][ - constants.VELOCITY_VARIANCE - ] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.STATIONARY + ][constants.VELOCITY_VARIANCE] * simulation_time_interval ) pedestrian_velocity_variance = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.PEDESTRIAN][ - constants.VELOCITY_VARIANCE - ] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.PEDESTRIAN + ][constants.VELOCITY_VARIANCE] * simulation_time_interval ) cyclist_velocity_variance = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CYCLIST][constants.VELOCITY_VARIANCE] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][ + constants.CYCLIST + ][constants.VELOCITY_VARIANCE] * simulation_time_interval ) car_velocity_variances = ( - ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CAR][constants.VELOCITY_VARIANCE] + ue_tracks_generation_params[constants.UE_CLASS_DISTRIBUTION][constants.CAR][ + constants.VELOCITY_VARIANCE + ] * simulation_time_interval ) @@ -138,34 +158,52 @@ def get_lat_lon_boundaries(ue_tracks_generation_params: Dict): Helper method to return latitude-longitude boundaries in which to generate UE tracks """ - min_lat = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][constants.MIN_LAT] - max_lat = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][constants.MAX_LAT] - min_lon = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][constants.MIN_LON] - max_lon = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][constants.MAX_LON] + min_lat = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][ + constants.MIN_LAT + ] + max_lat = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][ + constants.MAX_LAT + ] + min_lon = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][ + constants.MIN_LON + ] + max_lon = ue_tracks_generation_params[constants.LON_LAT_BOUNDARIES][ + constants.MAX_LON + ] return min_lat, max_lat, min_lon, max_lon @staticmethod def get_gauss_markov_alpha(ue_tracks_generation_params: Dict) -> str: """Helper method to return gauss_markov alpha of an UE Tracks Generation job""" - alpha = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][constants.ALPHA] + alpha = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][ + constants.ALPHA + ] return alpha @staticmethod def get_gauss_markov_variance(ue_tracks_generation_params: Dict) -> str: """Helper method to return gauss_markov variance of an UE Tracks Generation job""" - variance = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][constants.VARIANCE] + variance = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][ + constants.VARIANCE + ] return variance @staticmethod def get_gauss_markov_rng_seed(ue_tracks_generation_params: Dict) -> str: """Helper method to return gauss_markov rng_seed of an UE Tracks Generation job""" - rng_seed = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][constants.RNG_SEED] + rng_seed = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][ + constants.RNG_SEED + ] return rng_seed @staticmethod def get_gauss_markov_xy_dims(ue_tracks_generation_params: Dict) -> Tuple[str, str]: """Helper method to return gauss_markov lon_x_dims and lon_y_dims of a UE Tracks Generation job""" - lon_x_dims = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][constants.LON_X_DIMS] - lon_y_dims = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][constants.LON_Y_DIMS] + lon_x_dims = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][ + constants.LON_X_DIMS + ] + lon_y_dims = ue_tracks_generation_params[constants.GAUSS_MARKOV_PARAMS][ + constants.LON_Y_DIMS + ] return lon_x_dims, lon_y_dims diff --git a/tests/run_component_tests.py b/tests/run_component_tests.py index 3b3c696..945c008 100644 --- a/tests/run_component_tests.py +++ b/tests/run_component_tests.py @@ -34,7 +34,9 @@ def get_top_level(relative_path): def get_package_roots(top_level_path): """Helper method to get root packages from relative path""" - root_paths = [os.path.join(top_level_path, path) for path in os.listdir(top_level_path)] + root_paths = [ + os.path.join(top_level_path, path) for path in os.listdir(top_level_path) + ] return [path for path in root_paths if os.path.isdir(path)] @@ -46,7 +48,9 @@ def run_tests(source_paths) -> Tuple[List[unittest.TestResult], int]: total_tests = 0 for path in source_paths: - test_suite = loader.discover(start_dir=path, top_level_dir=path, pattern="test*.py") + test_suite = loader.discover( + start_dir=path, top_level_dir=path, pattern="test*.py" + ) total_tests += test_suite.countTestCases() testRunner = unittest.runner.TextTestRunner() @@ -74,13 +78,17 @@ def run_tests(source_paths) -> Tuple[List[unittest.TestResult], int]: cov.start() # run tests - test_results, total_tests = run_tests([radp_top_level_path, services_top_level_path]) + test_results, total_tests = run_tests( + [radp_top_level_path, services_top_level_path] + ) # stop coverage tracking cov.stop() else: # run tests - test_results, total_tests = run_tests([radp_top_level_path, services_top_level_path]) + test_results, total_tests = run_tests( + [radp_top_level_path, services_top_level_path] + ) success = True failed: List[Tuple[unittest.TestResult, str]] = [] @@ -126,7 +134,9 @@ def run_tests(source_paths) -> Tuple[List[unittest.TestResult], int]: logger.info(f"{'ERRORS:' : <20}{error_count : >36}") logger.info("--------------------------------------------------------") -message = "SUCCESS" if success else "TESTS FAILED: Check test reports above to see failure(s)" +message = ( + "SUCCESS" if success else "TESTS FAILED: Check test reports above to see failure(s)" +) logger.info(message) logger.info("--------------------------------------------------------") diff --git a/tests/run_end_to_end_tests.py b/tests/run_end_to_end_tests.py index a4171ce..6ebf199 100644 --- a/tests/run_end_to_end_tests.py +++ b/tests/run_end_to_end_tests.py @@ -9,7 +9,9 @@ from datetime import datetime from happy_case_tests.happy_rf_prediction import happy_case__rf_prediction -from happy_case_tests.happy_ue_track_gen_rf_prediction import happy_case__ue_track_gen_rf_prediction +from happy_case_tests.happy_ue_track_gen_rf_prediction import ( + happy_case__ue_track_gen_rf_prediction, +) # Create the Logger logger = logging.getLogger(__name__) @@ -64,19 +66,25 @@ logger.info("") logger.info(f"{'Result:' : <20}{'SUCCESS' if test_passed else 'FAILED' : >36}") - logger.info(f"{'Test duration:' : <20}{str(datetime.now() - test_start_time) : >36}") + logger.info( + f"{'Test duration:' : <20}{str(datetime.now() - test_start_time) : >36}" + ) # report results logger.info("--------------------------------------------------------") logger.info("--------------------------------------------------------") -logger.info(f"{'TEST RESULT SUMMARY:' : <24}{'SUCCESS' if all_passed else 'FAILURE' : >32}") +logger.info( + f"{'TEST RESULT SUMMARY:' : <24}{'SUCCESS' if all_passed else 'FAILURE' : >32}" +) logger.info(f"{'TESTS RUN:' : <20}{run : >36}") logger.info(f"{'TESTS PASSED:' : <20}{passed : >36}") logger.info(f"{'TESTS FAILED:' : <20}{failed : >36}") logger.info(f"{'TESTS DURATION:' : <20}{str(datetime.now() - start_time) : >36}") logger.info("--------------------------------------------------------") -message = "SUCCESS" if all_passed else "TESTS FAILED: Check logs above to see failure(s)" +message = ( + "SUCCESS" if all_passed else "TESTS FAILED: Check logs above to see failure(s)" +) logger.info(message) logger.info("--------------------------------------------------------")