File size: 3,325 Bytes
b29ed17 |
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 |
import pandas as pd
import plotly.express as px
import streamlit as st
from process_kpi.process_wcel_capacity import (
WcelCapacity,
load_and_process_wcel_capacity_data,
)
from utils.convert_to_excel import convert_dfs
# Streamlit UI
st.title(" 📊 WCEL Capacity Analysis")
doc_col, image_col = st.columns(2)
with doc_col:
st.write(
"""This app allows you to analyze the capacity of WCELS in a network.
It provides insights into the utilization of BB and CE resources,
helping you identify potential capacity issues and plan for upgrades.
The report should be run with a minimum of 3 days of data.
- Daily Aggregated
- WCEL level
- Exported in CSV format.
"""
)
with image_col:
st.image("./assets/wbts_capacity.png", width=400)
uploaded_file = st.file_uploader(
"Upload WCEL capacity report in CSV format", type="csv"
)
# num_last_days
# num_threshold_days
# availability_threshold
# iub_frameloss_threshold
# hsdpa_congestion_rate_iub_threshold
# fails_treshold
param_col1, param_col2, param_col3 = st.columns(3)
param_col4, param_col5, param_col6 = st.columns(3)
if uploaded_file is not None:
WcelCapacity.final_results = None
with param_col1:
num_last_days = st.number_input(
"Number of days for analysis",
min_value=3,
max_value=30,
value=7,
)
with param_col2:
num_threshold_days = st.number_input(
"Number of days for threshold",
min_value=1,
max_value=30,
value=2,
)
with param_col3:
availability_threshold = st.number_input(
"Availability threshold (%)", value=99, min_value=0, max_value=100
)
with param_col4:
iub_frameloss_threshold = st.number_input(
"IUB frameloss threshold (%)",
value=100,
min_value=0,
max_value=10000000,
)
with param_col5:
hsdpa_congestion_rate_iub_threshold = st.number_input(
"HSDPA Congestion Rate IUB threshold (%)",
value=10,
min_value=0,
max_value=100,
)
with param_col6:
fails_treshold = st.number_input(
"Fails threshold (%)", value=10, min_value=0, max_value=10000000
)
if st.button("Analyze Data", type="primary"):
with st.spinner("Processing data..."):
results = load_and_process_wcel_capacity_data(
uploaded_file,
num_last_days,
num_threshold_days,
availability_threshold,
iub_frameloss_threshold,
hsdpa_congestion_rate_iub_threshold,
fails_treshold,
)
if results is not None:
kpi_df = results[0]
WcelCapacity.final_results = convert_dfs([kpi_df], ["kpi_df"])
st.download_button(
on_click="ignore",
type="primary",
label="Download the Analysis Report",
data=WcelCapacity.final_results,
file_name="WCEL_Capacity_Report.xlsx",
mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
)
st.write(kpi_df)
|