Spaces:
Running
Running
import streamlit as st | |
import requests | |
import plotly.express as px | |
import pandas as pd | |
st.set_page_config(page_title="NicheImage Studio", layout="wide") | |
st.markdown("## :black[Image Generation Studio by NicheImage]") | |
replicate_logo = "assets/NicheTensorTransparent.png" | |
with st.sidebar: | |
st.image(replicate_logo, use_column_width=True) | |
st.markdown( | |
""" | |
**NicheImage is a decentralized network of image generation models, powered by the Bittensor protocol. Below you find information about the current models on the network.** | |
""", | |
unsafe_allow_html=True, | |
) | |
response = requests.get( | |
"http://proxy_client_nicheimage.nichetensor.com:10003/get_uid_info" | |
) | |
if response.status_code == 200: | |
response = response.json() | |
# Plot distribution of models | |
model_distribution = {} | |
for uid, info in response["all_uid_info"].items(): | |
model_name = info["model_name"] | |
model_distribution[model_name] = model_distribution.get(model_name, 0) + 1 | |
fig = px.pie( | |
values=list(model_distribution.values()), | |
names=list(model_distribution.keys()), | |
title="Model Distribution", | |
) | |
st.plotly_chart(fig) | |
transformed_dict = [] | |
for k, v in response["all_uid_info"].items(): | |
transformed_dict.append( | |
{ | |
"uid": k, | |
"model_name": v["model_name"], | |
"mean_score": ( | |
sum(v["scores"]) / (len(v["scores"])) if len(v["scores"]) > 0 else 0 | |
), | |
} | |
) | |
transformed_dict = pd.DataFrame(transformed_dict) | |
# plot N bar chart for N models, sorted by mean score | |
for model in model_distribution.keys(): | |
model_data = transformed_dict[transformed_dict["model_name"] == model] | |
model_data = model_data.sort_values(by="mean_score", ascending=False) | |
if model_data.mean_score.sum() == 0: | |
continue | |
st.write(f"Model: {model}") | |
st.bar_chart(model_data[["uid", "mean_score"]].set_index("uid")) | |
else: | |
st.error("Error getting miner info") | |