|
import numpy as np |
|
import pandas as pd |
|
|
|
|
|
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, 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", |
|
} |
|
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", |
|
} |
|
size_mapping = { |
|
"U900": 100, |
|
"U2100": 120, |
|
"G900": 100, |
|
"G1800": 120, |
|
"L800": 100, |
|
"L1800": 120, |
|
"L2300": 90, |
|
"L2600": 80, |
|
} |
|
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", |
|
} |
|
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 |
|
|
|
|
|
|
|
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): |
|
if "L1800" in text: |
|
return "L1800" |
|
elif "L2300" in text: |
|
return "L2300" |
|
elif "L800" in text: |
|
return "L800" |
|
elif "L2600" in text: |
|
return "L2600" |
|
return np.nan |
|
|
|
|
|
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() |
|
|