File size: 4,469 Bytes
939b332
 
 
 
 
 
 
 
 
 
 
 
 
1589f78
939b332
 
 
 
 
 
86110dd
01dd930
 
86110dd
bb3e08f
86110dd
 
 
 
 
 
 
01dd930
 
 
 
 
 
 
701ad60
 
 
 
 
 
 
 
 
 
939b332
 
 
56d8047
bb3e08f
 
ccb28f5
 
 
57fe85f
ccb28f5
9a4fe9c
263b2ce
57fe85f
939b332
 
 
701ad60
 
 
 
 
 
 
 
 
 
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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",
    }
    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_mal_database = ""
    gsm_dfs = []
    wcdma_dfs = []
    lte_dfs = []
    all_db_dfs = []
    all_db_dfs_names = []
    final_all_database = None
    neighbors_database = ""
    file_path = ""
    physisal_db = get_physical_db()


# BSC	name
# 403698	MBSCTST
# 403699	MBSC01
# 403701	MBSC04
# 403702	MBSC03
# 403703	MBSC02
# 406283	MBSKTL01
# 406284	MBSSEG01
# 406308	MBSSK0S1

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