edge-maxxing-dashboard / src /validator_weights.py
AlexNijjar's picture
Initial commit
6c858ba
raw
history blame
1.7 kB
import gradio as gr
import pandas as pd
from chain_data import WEIGHTS_BY_MINER, INCENTIVES, sync_metagraph
def get_color_by_weight(weight: float) -> str:
if weight < 0.001:
return "gray"
elif weight < 0.3:
r = int(255)
g = int((weight / 0.3) * 165)
return f"rgb({r}, {g}, 0)"
elif weight < 0.8:
progress = (weight - 0.3) / 0.5
r = int(255 - (progress * 255))
g = int(165 + (progress * 90))
return f"rgb({r}, {g}, 0)"
else:
progress = (weight - 0.8) / 0.2
g = int(255 - ((1 - progress) * 50))
return f"rgb(0, {g}, 0)"
def create_weights() -> gr.Dataframe:
data: list[list] = []
sync_metagraph()
headers = ["Miner UID", "Incentive"]
datatype = ["number", "markdown"]
validator_uids = set()
for validator_weights in WEIGHTS_BY_MINER:
for validator_uid, _ in validator_weights:
validator_uids.add(validator_uid)
for validator_uid in sorted(validator_uids):
headers.append(str(validator_uid))
datatype.append("markdown")
for miner_uid, validator_weights in enumerate(WEIGHTS_BY_MINER):
incentive = INCENTIVES[miner_uid]
row = [miner_uid, f"<span style='color: {get_color_by_weight(incentive)}'>{incentive:.{3}f}</span>"]
for _, weight in validator_weights:
row.append(f"<span style='color: {get_color_by_weight(weight)}'>{weight:.{3}f}</span>")
data.append(row)
data.sort(key=lambda val: float(val[1].split(">")[1].split("<")[0]), reverse=True)
return gr.Dataframe(
pd.DataFrame(data, columns=headers),
datatype=datatype,
interactive=False,
)