Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import plotly.express as px | |
from transformers import pipeline | |
from datasets import load_dataset | |
# Hugging Face Datasets | |
def load_data(): | |
network_insights = load_dataset("infinite-dataset-hub/5GNetworkOptimization", split="train") | |
return network_insights.to_pandas() | |
# Load Datasets | |
network_insights = load_data() | |
# Title | |
st.title("Smart Network Infrastructure Planner") | |
st.sidebar.header("Input Parameters") | |
# User Inputs from Sidebar | |
budget = st.sidebar.number_input("Total Budget (in $1000s):", min_value=10, max_value=1000, step=10) | |
priority_area = st.sidebar.selectbox("Priority Area:", ["Rural", "Urban", "Suburban"]) | |
signal_threshold = st.sidebar.slider("Signal Strength Threshold (dBm):", min_value=-120, max_value=-30, value=-80) | |
terrain_weight = st.sidebar.slider("Terrain Difficulty Weight:", min_value=0.0, max_value=1.0, value=0.5) | |
cost_weight = st.sidebar.slider("Cost Weight:", min_value=0.0, max_value=1.0, value=0.5) | |
# Display Dataset Options | |
data_to_view = st.sidebar.selectbox("Select Dataset to View:", ["Network Insights", "Filtered Terrain Data"]) | |
# Terrain and Connectivity Analysis Section | |
st.header("Terrain and Connectivity Analysis") | |
# Simulate Terrain Data | |
def generate_terrain_data(): | |
np.random.seed(42) | |
data = { | |
"Region": [f"Region-{i}" for i in range(1, 11)], | |
"Terrain Difficulty (0-10)": np.random.randint(1, 10, size=10), | |
"Signal Strength (dBm)": np.random.randint(-120, -30, size=10), | |
"Cost ($1000s)": np.random.randint(50, 200, size=10), | |
"Priority Area": np.random.choice(["Rural", "Urban", "Suburban"], size=10) | |
} | |
return pd.DataFrame(data) | |
terrain_data = generate_terrain_data() | |
# Filter Data Based on User Inputs | |
filtered_data = terrain_data[ | |
(terrain_data["Signal Strength (dBm)"] >= signal_threshold) & | |
(terrain_data["Cost ($1000s)"] <= budget) & | |
(terrain_data["Priority Area"] == priority_area) | |
] | |
# Add Composite Score for Ranking | |
filtered_data["Composite Score"] = ( | |
(1 - terrain_weight) * filtered_data["Signal Strength (dBm)"] + | |
(terrain_weight) * (10 - filtered_data["Terrain Difficulty (0-10)"]) - | |
(cost_weight) * filtered_data["Cost ($1000s)"] | |
) | |
# Display Selected Dataset | |
if data_to_view == "Network Insights": | |
st.subheader("Network Insights Dataset") | |
st.dataframe(network_insights) | |
elif data_to_view == "Filtered Terrain Data": | |
st.subheader("Filtered Terrain Data") | |
st.dataframe(filtered_data) | |
# Visualization | |
fig = px.scatter( | |
filtered_data, | |
x="Cost ($1000s)", | |
y="Signal Strength (dBm)", | |
size="Terrain Difficulty (0-10)", | |
color="Region", | |
title="Signal Strength vs. Cost", | |
labels={ | |
"Cost ($1000s)": "Cost in $1000s", | |
"Signal Strength (dBm)": "Signal Strength in dBm", | |
}, | |
) | |
st.plotly_chart(fig) | |
# Recommendation Engine | |
st.header("Deployment Recommendations") | |
def recommend_deployment(data): | |
if data.empty: | |
return "No viable deployment regions within the specified parameters." | |
best_region = data.loc[data["Composite Score"].idxmax()] | |
return f"Recommended Region: {best_region['Region']} with Composite Score: {best_region['Composite Score']:.2f}, Signal Strength: {best_region['Signal Strength (dBm)']} dBm, Terrain Difficulty: {best_region['Terrain Difficulty (0-10)']}, and Estimated Cost: ${best_region['Cost ($1000s)']}k" | |
recommendation = recommend_deployment(filtered_data) | |
st.subheader(recommendation) | |
# Footer | |
st.sidebar.markdown("---") | |
st.sidebar.markdown( | |
"**Developed for Hackathon using Hugging Face Infinite Dataset Hub**\n\n[Visit Hugging Face](https://huggingface.co)") | |