File size: 10,176 Bytes
3632bfd b89c5d7 3632bfd 81c766f 3632bfd |
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 |
import streamlit as st
st.markdown(
"""
# GSM Capacity Analysis Documentation
"""
"""
This documentation provides a technical and practical reference for the GSM Capacity Analysis application, detailing input/output columns, processing workflow, and key metrics as implemented in:
- apps/kpi_analysis/gsm_capacity.py
- process_kpi/process_gsm_capacity.py
- utils/kpi_analysis_utils.py
---
## 1. Input Files and Expected Columns
### a. Dump File (XLSB)
- Contains network configuration and hardware data.
- Parsed columns (see `GSM_COLUMNS`, `TRX_COLUMNS` in `process_gsm_capacity.py`):
- ID_BTS, site_name, name, BSC, BCF, BTS, code, Region, adminState, frequencyBandInUse, amrSegLoadDepTchRateLower, amrSegLoadDepTchRateUpper, dedicatedGPRScapacity, defaultGPRScapacity, cellId, band, site_config_band, trxRfPower, BCCH, number_trx_per_cell, number_trx_per_bcf, TRX_TCH, MAL_TCH
- TRX-related: number_tch_per_cell, number_sd_per_cell, number_bcch_per_cell, number_ccch_per_cell, number_cbc_per_cell, number_total_channels_per_cell, number_signals_per_cell
### b. Daily KPI Report (CSV)
- Columns (see `KPI_COLUMNS`):
- date, BTS_name, TCH_availability_ratio, 2G_Carried_Traffic, TCH_call_blocking, TCH_ABIS_FAIL_CALL_c001084, SDCCH_real_blocking
### c. Busy Hour (BH) KPI Report (CSV)
- Same structure as Daily KPI, focused on peak hour data.
---
## 2. Output Columns and Their Meaning
### a. Busy Hour (BH) Analysis Output (`BH_COLUMNS_FOR_CAPACITY`):
- Max_Traffic BH: Maximum traffic during busy hour in the analysis window
- Avg_Traffic BH: Average traffic during busy hour
- max_tch_call_blocking_bh: Max TCH call blocking during BH
- avg_tch_call_blocking_bh: Average TCH call blocking during BH
- number_of_days_with_tch_blocking_exceeded_bh: Days with TCH blocking above threshold
- max_sdcch_real_blocking_bh: Max SDCCH blocking during BH
- avg_sdcch_real_blocking_bh: Average SDCCH blocking during BH
- number_of_days_with_sdcch_blocking_exceeded_bh: Days with SDCCH blocking above threshold
- tch_call_blocking_bh_comment: Comments on TCH blocking
- sdcch_real_blocking_bh_comment: Comments on SDCCH blocking
### b. Daily KPI Analysis Output (`DAILY_COLUMNS_FOR_CAPACITY`):
- Average_cell_availability: Mean cell availability over period
- number_of_days_exceeding_threshold: Days exceeding availability threshold
- availability_comment: Comments on availability
- avg_tch_abis_fail_daily: Average TCH ABIS fails per day
- max_tch_abis_fail_daily: Max TCH ABIS fails per day
- number_of_days_with_tch_abis_fail_exceeded_daily: Days with TCH ABIS fails above threshold
- tch_abis_fail_daily_comment: Comments on TCH ABIS fails
### c. GSM Database Output (from dump parsing):
- All columns from GSM_COLUMNS and TRX_COLUMNS
- hf_rate_coef: Coefficient mapped from amrSegLoadDepTchRateLower
- GPRS: Calculated as (dedicatedGPRScapacity * number_tch_per_cell) / 100
- TCH Actual HR%: number_tch_per_cell * hf_rate_coef
- Offered Traffic BH: Mapped from TCH Actual HR% using ErlangB table
---
## 3. Processing Workflow
1. **Validation**: Checks file format, data completeness, and consistency.
2. **Parsing**: Extracts relevant columns and normalizes data.
3. **Analysis**:
- **Busy Hour Analysis**: Computes traffic and blocking metrics for peak hours.
- **Daily Analysis**: Tracks availability, blocking, and failure metrics per day.
- **Capacity Estimation**: Uses traffic and configuration data to estimate TRX/channel requirements.
4. **Comments Generation**: Flags and annotates cells/sites where metrics exceed thresholds.
5. **Reporting**: Combines results into DataFrames for export/visualization.
---
## 4. Utility Functions (from `kpi_analysis_utils.py`)
- `create_dfs_per_kpi(df, ...)`: Pivots and prepares KPI-specific DataFrames.
- `cell_availability_analysis(df, days, threshold)`: Analyzes and comments on cell availability.
- `analyze_tch_abis_fails`, `analyze_tch_call_blocking`, `analyze_sdcch_call_blocking`: Analyze blocking/failure metrics and flag threshold exceedances.
- `combine_comments(df, ...)`: Combines multiple comment columns into one.
---
## 5. Example Usage
```python
from process_kpi.process_gsm_capacity import analyze_gsm_data
# Example call
results = analyze_gsm_data(
dump_path, daily_report_path, bh_report_path,
number_of_kpi_days=7, number_of_threshold_days=3,
availability_threshold=95, tch_abis_fails_threshold=10,
sdcch_blocking_threshold=0.5, tch_blocking_threshold=0.5,
max_traffic_threshold=80,
)
# results: [gsm_db_df, daily_kpi_df, bh_kpi_df]
```
---
## 6. Column Reference Table (Expanded)
| Column Name | Description |
|---------------------------------------------|------------------------------------------------------------------|
| number_trx_per_cell | Number of TRXs (transceivers) configured per cell. Extracted from network dump. |
| number_trx_per_bcf | Number of TRXs per BCF (Base Control Function). From dump. |
| number_tch_per_cell | Number of Traffic Channels (TCH) per cell. Calculated from config.|
| number_sd_per_cell | Number of Standalone Dedicated Control Channels per cell. From config.|
| number_bcch_per_cell | Number of Broadcast Control Channels per cell. From config. |
| number_ccch_per_cell | Number of Common Control Channels per cell. From config. |
| number_cbc_per_cell | Number of Cell Broadcast Channels per cell. From config. |
| number_total_channels_per_cell | Total channels (sum of all logical channels) per cell. |
| number_signals_per_cell | Total signaling channels per cell. From config. |
| hf_rate_coef | Half-rate coefficient mapped from `amrSegLoadDepTchRateLower` using a lookup table (see `GsmAnalysis.hf_rate_coef`). |
| GPRS | Calculated as `(dedicatedGPRScapacity * number_tch_per_cell) / 100`. Represents estimated GPRS capacity. |
| TCH Actual HR% | Calculated as `number_tch_per_cell * hf_rate_coef`. Represents the effective TCHs considering half-rate usage. |
| Offered Traffic BH | Estimated offered traffic (in Erlangs) during busy hour, mapped from `TCH Actual HR%` using ErlangB table (`GsmAnalysis.erlangB_table`). |
| Max_Traffic BH | Maximum traffic observed during busy hour in the analysis window. Computed from BH KPI data. |
| Avg_Traffic BH | Average traffic during busy hour over the analysis period. |
| max_tch_call_blocking_bh | Maximum TCH call blocking ratio during busy hour. |
| avg_tch_call_blocking_bh | Average TCH call blocking ratio during busy hour. |
| number_of_days_with_tch_blocking_exceeded_bh | Number of days TCH call blocking exceeded the set threshold during BH. |
| max_sdcch_real_blocking_bh | Maximum SDCCH real blocking ratio during busy hour. |
| avg_sdcch_real_blocking_bh | Average SDCCH real blocking ratio during busy hour. |
| number_of_days_with_sdcch_blocking_exceeded_bh | Number of days SDCCH blocking exceeded threshold during BH. |
| tch_call_blocking_bh_comment | Generated comment if TCH blocking exceeds threshold in BH. |
| sdcch_real_blocking_bh_comment | Generated comment if SDCCH blocking exceeds threshold in BH. |
| Average_cell_availability | Mean cell availability over the analysis period. |
| number_of_days_exceeding_threshold | Number of days cell/site availability fell below threshold. |
| availability_comment | Generated comment on site/cell availability status. |
| avg_tch_abis_fail_daily | Average daily TCH ABIS fails. |
| max_tch_abis_fail_daily | Maximum daily TCH ABIS fails. |
| number_of_days_with_tch_abis_fail_exceeded_daily | Number of days TCH ABIS fails exceeded threshold. |
| tch_abis_fail_daily_comment | Generated comment if TCH ABIS fails exceed threshold. |
| TCH UTILIZATION (@Max Traffic) | TCH utilization at maximum observed traffic. Calculated as (Max_Traffic BH / TCH Actual HR%) * 100%. |
| Tch utilization comments | Comments generated based on TCH utilization (e.g., if utilization is high or exceeds limits). |
| BH Congestion status | Status flag/comment if congestion detected during busy hour (based on blocking/utilization thresholds). |
| ErlabngB_value | Value from Erlang B table for required channels and blocking probability. Used for dimensioning. |
| Target FR CHs | Calculated target number of Full Rate channels needed. |
| Target HR CHs | Calculated target number of Half Rate channels needed. |
| Target TCHs | Total target Traffic Channels (FR + HR) required for desired performance. |
| Target TRXs | Target number of TRXs required, based on channel requirements and configuration. |
| Number of required TRXs | Final computed number of TRXs required to meet traffic and blocking targets. |
| operational_comment | Generated operational comment based on analysis (e.g., upgrade needed, OK, etc.). |
| Final comment | Final summary comment combining all relevant flags, operational status, and recommendations. |
| Final comment summary | Final summary comment combining all relevant flags, operational status, and recommendations. |
---
"""
)
|