File size: 4,005 Bytes
939b332
 
 
 
 
 
 
 
 
 
 
 
 
1589f78
939b332
 
 
 
 
 
86110dd
01dd930
 
86110dd
bb3e08f
86110dd
 
 
 
 
 
 
01dd930
 
 
 
 
 
 
939b332
 
 
56d8047
bb3e08f
 
57fe85f
9a4fe9c
263b2ce
57fe85f
939b332
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fbf7879
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4662aef
fbf7879
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import numpy as np
import pandas as pd


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(r"./physical_db/physical_database.csv")
    physical = physical[["Code_Sector", "Azimut", "Longitude", "Latitude", "Hauteur"]]
    return physical


class UtilsVars:
    sector_mapping = {4: 1, 5: 2, 6: 3, 11: 1, 12: 2, 13: 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"}
    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",
    }
    wcdma_band = {
        3004: "U900",
        3006: "U900",
        10787: "U2100",
        10837: "U2100",
        10812: "U2100",
    }
    final_lte_database = ""
    final_gsm_database = ""
    final_wcdma_database = ""
    final_trx_database = ""
    final_mrbts_database = ""
    final_mal_database = ""
    all_db_dfs = []
    final_all_database = None
    neighbors_database = ""
    file_path = ""
    physisal_db = get_physical_db()


# print(UtilsVars.physisal_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"
    return np.nan  # or return None


##############################STATISTICS############################


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()


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()


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()