Spaces:
Running
Running
| import numpy as np | |
| import pandas as pd | |
| # url = "https://raw.githubusercontent.com/DavMelchi/STORAGE/refs/heads/main/physical_db/physical_database.csv" | |
| url = r"./physical_db/physical_database.csv" | |
| def get_physical_db(): | |
| """ | |
| Reads the physical_database.csv file from the physical_db directory and | |
| returns a pandas DataFrame containing only the columns 'Code_Sector', | |
| 'Azimut', 'Longitude', 'Latitude', and 'Hauteur'. | |
| Returns: | |
| pd.DataFrame: A DataFrame containing the filtered columns. | |
| """ | |
| physical = pd.read_csv(url) | |
| physical = physical[ | |
| [ | |
| "Code_Sector", | |
| "Azimut", | |
| "Longitude", | |
| "Latitude", | |
| "Hauteur", | |
| "City", | |
| "Adresse", | |
| "Commune", | |
| "Cercle", | |
| ] | |
| ] | |
| return physical | |
| class UtilsVars: | |
| sector_mapping = { | |
| 4: 1, | |
| 5: 2, | |
| 6: 3, | |
| 11: 1, | |
| 12: 2, | |
| 13: 3, | |
| 71: 1, | |
| 72: 2, | |
| 73: 3, | |
| 81: 1, | |
| 82: 2, | |
| 83: 3, | |
| } | |
| type_cellule = {1: "Macro Cell 1800", 0: "Macro Cell 900"} | |
| oml_band_frequence = {1: "OML BAND GSM 1800", 0: "OML BAND GSM 900"} | |
| gsm_band = {1: "G1800", 0: "G900"} | |
| configuration_schema = {1: "EGPRS 1800", 0: "EGPRS 900"} | |
| channeltype_mapping = {4: "BCCH", 3: "TRX_TCH"} | |
| oml_lte_freq_band = { | |
| "L1800": "OML E-UTRA Band 3 - 20MHz", | |
| "L800": "OML E-UTRA Band 20 - 20MHz", | |
| "L2300": "OML E-UTRA Band 43 - 20MHz", | |
| "L2600": "OML E-UTRA Band 7 - 20MHz", | |
| "L700": "OML E-UTRA Band 28 - 20MHz", | |
| } | |
| porteuse_mapping = { | |
| 3004: "OML UTRA Band VIII", | |
| 3006: "OML UTRA Band VIII", | |
| 10812: "OML UTRA Band I", | |
| 10787: "OML UTRA Band I", | |
| 10837: "OML UTRA Band I", | |
| } | |
| color_mapping = { | |
| "U900": "7fff0000", | |
| "U2100": "7f00ff00", | |
| "G900": "7fff0000", | |
| "G1800": "7f00ff00", | |
| "L800": "7fff0000", | |
| "L1800": "7f00ff00", | |
| "L2300": "7f00ffff", | |
| "L2600": "7f0000ff", | |
| "L700": "7fff00ff", | |
| } | |
| size_mapping = { | |
| "U900": 100, | |
| "U2100": 120, | |
| "G900": 100, | |
| "G1800": 120, | |
| "L800": 120, | |
| "L1800": 140, | |
| "L2300": 100, | |
| "L2600": 90, | |
| "L700": 80, | |
| } | |
| lte_band = { | |
| 1786: "L1800", | |
| 6350: "L800", | |
| 3050: "L2600", | |
| 38750: "L2300", | |
| 1761: "L1800", | |
| 9260: "L700", | |
| } | |
| wcdma_band = { | |
| 3004: "U900", | |
| 3006: "U900", | |
| 10787: "U2100", | |
| 10837: "U2100", | |
| 10812: "U2100", | |
| } | |
| bsc_name = { | |
| 403698: "MBSCTST", | |
| 403699: "MBSC01", | |
| 403701: "MBSC04", | |
| 403702: "MBSC03", | |
| 403703: "MBSC02", | |
| 406283: "MBSKTL01", | |
| 406284: "MBSSEG01", | |
| 406308: "MBSSK0S1", | |
| 406309: "ASBSCMSC3", | |
| } | |
| final_lte_database = "" | |
| final_gsm_database = "" | |
| final_wcdma_database = "" | |
| final_trx_database = "" | |
| final_mrbts_database = "" | |
| final_invunit_database = "" | |
| final_mal_database = "" | |
| gsm_dfs = [] | |
| wcdma_dfs = [] | |
| lte_dfs = [] | |
| all_db_dfs = [] | |
| all_db_dfs_names = [] | |
| final_all_database = None | |
| atoll_dfs = [] | |
| final_atoll_database = None | |
| final_nice_database = None | |
| neighbors_database = "" | |
| file_path = "" | |
| gsm_kml_file = None | |
| wcdma_kml_file = None | |
| lte_kml_file = None | |
| adjl_database = None | |
| # physisal_db = get_physical_db() | |
| def get_band(text): | |
| """ | |
| Extract the band from the given string. | |
| Parameters | |
| ---------- | |
| text : str | |
| The string to extract the band from. | |
| Returns | |
| ------- | |
| str or np.nan | |
| The extracted band, or NaN if the text was not a string or did not contain | |
| any of the recognized bands (L1800, L2300, L800). | |
| """ | |
| if isinstance(text, str): # Check if text is a string | |
| if "L1800" in text: | |
| return "L1800" | |
| elif "L2300" in text: | |
| return "L2300" | |
| elif "L800" in text: | |
| return "L800" | |
| elif "L2600" in text: | |
| return "L2600" | |
| elif "L700" in text: | |
| return "L700" | |
| return np.nan # or return None | |
| def clean_bands(bands): | |
| if pd.isna(bands): | |
| return None | |
| parts = [p for p in bands.split("/") if p != "nan"] | |
| return "/".join(parts) if parts else None | |
| class GsmAnalysisData: | |
| total_number_of_bsc = 0 | |
| total_number_of_cell = 0 | |
| number_of_site = 0 | |
| number_of_cell_per_bsc = pd.DataFrame() | |
| number_of_site_per_bsc = pd.DataFrame() | |
| number_of_bts_name_empty = 0 | |
| number_of_bcf_name_empty = 0 | |
| number_of_bcch_empty = 0 | |
| bts_administate_distribution = pd.DataFrame() | |
| trx_administate_distribution = pd.DataFrame() | |
| number_of_trx_per_bsc = pd.DataFrame() | |
| number_of_cell_per_lac = pd.DataFrame() | |
| number_of_site_per_lac = pd.DataFrame() | |
| trx_frequency_distribution = pd.DataFrame() | |
| class WcdmaAnalysisData: | |
| total_number_of_rnc = 0 | |
| total_number_of_wcel = 0 | |
| number_of_site = 0 | |
| number_of_site_per_rnc = 0 | |
| number_of_cell_per_rnc = pd.DataFrame() | |
| number_of_empty_wbts_name = 0 | |
| number_of_empty_wcel_name = 0 | |
| wcel_administate_distribution = pd.DataFrame() | |
| psc_distribution = pd.DataFrame() | |
| number_of_cell_per_lac = pd.DataFrame() | |
| number_of_site_per_lac = pd.DataFrame() | |
| class LteFddAnalysisData: | |
| total_number_of_lncel = 0 | |
| total_number_of_site = 0 | |
| number_of_empty_lncel_name = 0 | |
| number_of_empty_lncel_cellname = 0 | |
| number_of_empty_lnbts_name = 0 | |
| number_of_cell_per_band = pd.DataFrame() | |
| phycellid_distribution = pd.DataFrame() | |
| rootsequenceindex_distribution = pd.DataFrame() | |
| lncel_administate_distribution = pd.DataFrame() | |
| number_of_cell_per_tac = pd.DataFrame() | |
| class LteTddAnalysisData: | |
| total_number_of_lncel = 0 | |
| total_number_of_site = 0 | |
| number_of_empty_lncel_name = 0 | |
| number_of_empty_lncel_cellname = 0 | |
| number_of_empty_lnbts_name = 0 | |
| number_of_cell_per_band = pd.DataFrame() | |
| phycellid_distribution = pd.DataFrame() | |
| rootsequenceindex_distribution = pd.DataFrame() | |
| lncel_administate_distribution = pd.DataFrame() | |
| number_of_cell_per_tac = pd.DataFrame() | |
| class SiteAnalysisData: | |
| total_number_of_site = 0 | |
| total_munber_of_gsm_site = 0 | |
| total_number_of_wcdma_site = 0 | |
| total_number_of_lte_site = 0 | |
| gsm_bands_distribution = pd.DataFrame() | |
| wcdma_bands_distribution = pd.DataFrame() | |
| lte_bands_distribution = pd.DataFrame() | |
| all_bands_distribution = pd.DataFrame() | |
| number_of_trx_per_site_distribution = pd.DataFrame() | |