Add 3G Adjl checking
Browse files- queries/process_adjl.py +49 -6
    	
        queries/process_adjl.py
    CHANGED
    
    | @@ -15,7 +15,9 @@ ADJL_GSM_COLUMNS = ["BSC", "BCF", "BTS", "ADJL", "earfcn", "lteAdjCellTac"] | |
| 15 |  | 
| 16 | 
             
            ADJL_WCDMA_COLUMNS = ["RNC", "WBTS", "WCEL", "ADJL", "AdjLEARFCN"]
         | 
| 17 |  | 
| 18 | 
            -
            BTS_COLUMNS = ["ID_BTS", "name", " | 
|  | |
|  | |
| 19 |  | 
| 20 | 
             
            LTE_COLUMNS_CONFIG = ["Code_Sector", "site_config_band"]
         | 
| 21 |  | 
| @@ -87,10 +89,10 @@ def process_adjl_data(file_path: str) -> list[pd.DataFrame]: | |
| 87 | 
             
                df_bts = process_gsm_data(file_path)[BTS_COLUMNS]
         | 
| 88 |  | 
| 89 | 
             
                # ------------------- WCEL -------------------
         | 
| 90 | 
            -
                df_wcel = process_wcdma_data(file_path)
         | 
| 91 | 
            -
                df_wcel["ID_WCEL"] = (
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                )
         | 
| 94 |  | 
| 95 | 
             
                # ------------------- LTE -------------------
         | 
| 96 | 
             
                lte_fdd_df, lte_tdd_df = process_lte_data(file_path)
         | 
| @@ -164,7 +166,48 @@ def process_adjl_data(file_path: str) -> list[pd.DataFrame]: | |
| 164 | 
             
                )
         | 
| 165 |  | 
| 166 | 
             
                # Mark existing BTS
         | 
| 167 | 
            -
                df_bts[" | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 168 |  | 
| 169 | 
             
                return [gsm_adjl_df, wcdma_adjl_df, df_bts, df_wcel, lte_df]
         | 
| 170 |  | 
|  | |
| 15 |  | 
| 16 | 
             
            ADJL_WCDMA_COLUMNS = ["RNC", "WBTS", "WCEL", "ADJL", "AdjLEARFCN"]
         | 
| 17 |  | 
| 18 | 
            +
            BTS_COLUMNS = ["ID_BTS", "name", "Code_Sector"]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            WCEL_COLUMNS = ["ID_WCEL", "name", "Code_Sector"]
         | 
| 21 |  | 
| 22 | 
             
            LTE_COLUMNS_CONFIG = ["Code_Sector", "site_config_band"]
         | 
| 23 |  | 
|  | |
| 89 | 
             
                df_bts = process_gsm_data(file_path)[BTS_COLUMNS]
         | 
| 90 |  | 
| 91 | 
             
                # ------------------- WCEL -------------------
         | 
| 92 | 
            +
                df_wcel = process_wcdma_data(file_path)[WCEL_COLUMNS]
         | 
| 93 | 
            +
                # df_wcel["ID_WCEL"] = (
         | 
| 94 | 
            +
                #     df_wcel[["RNC", "WBTS", "WCEL"]].astype(str).agg("_".join, axis=1)
         | 
| 95 | 
            +
                # )
         | 
| 96 |  | 
| 97 | 
             
                # ------------------- LTE -------------------
         | 
| 98 | 
             
                lte_fdd_df, lte_tdd_df = process_lte_data(file_path)
         | 
|  | |
| 166 | 
             
                )
         | 
| 167 |  | 
| 168 | 
             
                # Mark existing BTS
         | 
| 169 | 
            +
                df_bts["adjl_exists"] = df_bts["ID_BTS"].isin(gsm_adjl_df["ID_BTS"])
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                # --- WCDMA ADJL ---
         | 
| 172 | 
            +
                # Filter invalid rows
         | 
| 173 | 
            +
                wcdma_adjl_df = wcdma_adjl_df[
         | 
| 174 | 
            +
                    wcdma_adjl_df["RNC"].notna()
         | 
| 175 | 
            +
                    & wcdma_adjl_df["WBTS"].notna()
         | 
| 176 | 
            +
                    & wcdma_adjl_df["WCEL"].notna()
         | 
| 177 | 
            +
                ].reset_index(drop=True)
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                # Build IDs and bands
         | 
| 180 | 
            +
                wcdma_adjl_df["ID_WCEL"] = (
         | 
| 181 | 
            +
                    wcdma_adjl_df[["RNC", "WBTS", "WCEL"]].astype(str).agg("_".join, axis=1)
         | 
| 182 | 
            +
                )
         | 
| 183 | 
            +
                wcdma_adjl_df["ID_WCEL"] = wcdma_adjl_df["ID_WCEL"].str.replace(
         | 
| 184 | 
            +
                    ".0", "", regex=False
         | 
| 185 | 
            +
                )
         | 
| 186 | 
            +
                wcdma_adjl_df["adjl_band"] = wcdma_adjl_df["AdjLEARFCN"].map(UtilsVars.lte_band)
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                # Merge WCEL info
         | 
| 189 | 
            +
                wcdma_adjl_df = pd.merge(wcdma_adjl_df, df_wcel, on="ID_WCEL", how="left")
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                # Aggregate ADJL band info
         | 
| 192 | 
            +
                wcdma_adjl_df_band = adjl_band(wcdma_adjl_df, "ID_WCEL", "adjl_band")
         | 
| 193 | 
            +
                wcdma_adjl_df = pd.merge(
         | 
| 194 | 
            +
                    wcdma_adjl_df, wcdma_adjl_df_band, on="ID_WCEL", how="left"
         | 
| 195 | 
            +
                )
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                # Build Code_Sector_band
         | 
| 198 | 
            +
                wcdma_adjl_df["Code_Sector_band"] = (
         | 
| 199 | 
            +
                    wcdma_adjl_df[["Code_Sector", "adjl_band"]].astype(str).agg("_".join, axis=1)
         | 
| 200 | 
            +
                )
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                # Merge LTE references
         | 
| 203 | 
            +
                wcdma_adjl_df = wcdma_adjl_df.merge(lte_df_config, on="Code_Sector", how="left")
         | 
| 204 | 
            +
             | 
| 205 | 
            +
                # Validations
         | 
| 206 | 
            +
                wcdma_adjl_df["check_bands"] = wcdma_adjl_df.apply(check_bands, axis=1)
         | 
| 207 | 
            +
                wcdma_adjl_df["missing_bands"] = wcdma_adjl_df.apply(missing_bands, axis=1)
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                # Mark existing WCEL
         | 
| 210 | 
            +
                df_wcel["adjl_exists"] = df_wcel["ID_WCEL"].isin(wcdma_adjl_df["ID_WCEL"])
         | 
| 211 |  | 
| 212 | 
             
                return [gsm_adjl_df, wcdma_adjl_df, df_bts, df_wcel, lte_df]
         | 
| 213 |  |