| import pandas as pd |
| import streamlit as st |
|
|
| st.title(":material/terminal: Dump Core Parsing") |
|
|
| st.write( |
| """This app allows you to parse core dump files int TXT format, |
| extract the Global Cell ID, LA Cell Name, WCDMA Service Area Number, and WCDMA Service Area Name. |
| Then convert LAC and Cell ID to Decimal to be easier to check. |
| """ |
| ) |
|
|
| dump_core_sample_file = "samples/dump_core.txt" |
|
|
| |
| st.download_button( |
| label="Download Dump core sample File", |
| data=open(dump_core_sample_file, "rb").read(), |
| file_name="dump_core.txt", |
| mime="text/plain", |
| ) |
|
|
| |
| data_global_cell_id = [] |
| data_la_cell_name = [] |
| data_wcdma_service_area_number = [] |
| data_wcdma_service_area_name = [] |
|
|
|
|
| |
| uploaded_files = st.file_uploader( |
| "Upload Core Creation dump files", type=["txt"], accept_multiple_files=True |
| ) |
|
|
|
|
| |
| if uploaded_files: |
|
|
| all_data_global_cell_id = [] |
| all_data_la_cell_name = [] |
| all_data_wcdma_service_area_number = [] |
| all_data_wcdma_service_area_name = [] |
|
|
| for file in uploaded_files: |
| |
|
|
| content = file.read().decode("utf-8").splitlines() |
| data_global_cell_id = [] |
| data_la_cell_name = [] |
| data_wcdma_service_area_number = [] |
| data_wcdma_service_area_name = [] |
|
|
| |
| for line in content: |
| if "Global cell ID" in line: |
| data_global_cell_id.append([line.split("=")[1].strip()]) |
| elif "LA cell name" in line: |
| data_la_cell_name.append([line.split("=")[1].strip()]) |
| elif "3G service area number" in line: |
| data_wcdma_service_area_number.append([line.split("=")[1].strip()]) |
| elif "3G service area name" in line: |
| data_wcdma_service_area_name.append([line.split("=")[1].strip()]) |
|
|
| |
| all_data_global_cell_id.extend(data_global_cell_id) |
| all_data_la_cell_name.extend(data_la_cell_name) |
| all_data_wcdma_service_area_number.extend(data_wcdma_service_area_number) |
| all_data_wcdma_service_area_name.extend(data_wcdma_service_area_name) |
|
|
| |
| |
| df_global_cell_id = pd.DataFrame( |
| all_data_global_cell_id, columns=["Global cell ID"] |
| ) |
| df_la_cell_name = pd.DataFrame(all_data_la_cell_name, columns=["LA cell name"]) |
|
|
| |
| df_global_cell_id.insert(0, "index", range(0, len(df_global_cell_id))) |
| df_la_cell_name.insert(0, "index", range(0, len(df_la_cell_name))) |
|
|
| |
| df_la_cell_name = df_la_cell_name.merge(df_global_cell_id, on="index") |
|
|
| |
| df_la_cell_name["LAC & Cell ID"] = df_la_cell_name["Global cell ID"].str[5:] |
|
|
| |
| df_la_cell_name["LAC"] = df_la_cell_name["LAC & Cell ID"].str[:4] |
| df_la_cell_name["Cell ID"] = df_la_cell_name["LAC & Cell ID"].str[4:] |
|
|
| |
| df_la_cell_name["LAC_DECIMAL"] = df_la_cell_name["LAC"].apply(lambda x: int(x, 16)) |
| df_la_cell_name["Cell_ID_DECIMAL"] = df_la_cell_name["Cell ID"].apply( |
| lambda x: int(x, 16) |
| ) |
| df_la_cell_name = df_la_cell_name.reset_index(drop=True) |
|
|
| |
|
|
| |
| df_wcdma_service_area_number = pd.DataFrame( |
| all_data_wcdma_service_area_number, columns=["3G service area number"] |
| ) |
| df_wcdma_service_area_name = pd.DataFrame( |
| all_data_wcdma_service_area_name, columns=["3G service area name"] |
| ) |
|
|
| df_wcdma_service_area_number.insert( |
| 0, "index", range(0, len(df_wcdma_service_area_number)) |
| ) |
| df_wcdma_service_area_name.insert( |
| 0, "index", range(0, len(df_wcdma_service_area_name)) |
| ) |
| df_wcdma_service_area_name = df_wcdma_service_area_name.merge( |
| df_wcdma_service_area_number, on="index" |
| ) |
|
|
| df_wcdma_service_area_name["LAC & SAC_ID"] = df_wcdma_service_area_name[ |
| "3G service area number" |
| ].str[5:] |
|
|
| df_wcdma_service_area_name["LAC"] = df_wcdma_service_area_name["LAC & SAC_ID"].str[ |
| :4 |
| ] |
| df_wcdma_service_area_name["SAC_ID"] = df_wcdma_service_area_name[ |
| "LAC & SAC_ID" |
| ].str[4:] |
|
|
| |
| df_wcdma_service_area_name["LAC_DECIMAL"] = df_wcdma_service_area_name["LAC"].apply( |
| lambda x: int(x, 16) |
| ) |
| |
| df_wcdma_service_area_name["SAC_ID_DECIMAL"] = df_wcdma_service_area_name[ |
| "SAC_ID" |
| ].apply(lambda x: int(x, 16)) |
|
|
| |
| st.subheader("2G CORE DUMP DATA") |
| st.write(df_la_cell_name) |
| st.subheader("3G CORE DUMP DATA") |
| st.write(df_wcdma_service_area_name) |
|
|