RTEB / app /backend /app_init_func.py
fzoll's picture
Add sidebar sections (Domain/Languages) and datasets reference table
e1ce0ca
raw
history blame
3.48 kB
import streamlit as st
import os
from app.backend.constant import (
LEADERBOARD_ICON_MAP, get_display_name,
DOMAIN_GROUPS, LANGUAGE_GROUPS,
)
LEADERBOARD_MAP = {}
PAGE_SECTIONS = []
def _page_toml(name, page_name):
icon = LEADERBOARD_ICON_MAP.get(page_name, "")
return f"""
[[pages]]
path = "app/ui/pages/{name}.py"
name = "{page_name}"
icon = "{icon}"
"""
def _section_toml(section_name):
return f"""
[[pages]]
name = "{section_name}"
icon = ""
is_section = true
"""
def init_leaderboard():
data_engine = st.session_state["data_engine"]
leaderboard_map = {}
leaderboard_change = False
page_change = False
text_root = []
domain_pages = []
language_pages = []
multimodal_root = []
multimodal_sub = []
sort_id = 0
for dataset in data_engine.datasets:
sort_id += 1
leaderboard = dataset["leaderboard"]
name = dataset["name"]
leaderboard_section = f"{leaderboard.capitalize()} Leaderboard"
if leaderboard_section not in leaderboard_map:
leaderboard_map[leaderboard_section] = []
is_root = name.lower() == leaderboard.lower()
leaderboard_map[leaderboard_section].append((name, 0 if is_root else sort_id))
page_name = leaderboard_section if is_root else get_display_name(name)
entry = _page_toml(name, page_name)
if leaderboard.lower() == "text":
if is_root:
text_root.append(entry)
elif name in DOMAIN_GROUPS:
domain_pages.append(entry)
elif name in LANGUAGE_GROUPS:
language_pages.append(entry)
elif leaderboard.lower() == "multimodal":
if is_root:
multimodal_root.append(entry)
else:
multimodal_sub.append(entry)
for k, v in leaderboard_map.items():
v.sort(key=lambda x: x[1])
page_sections = []
page_sections.extend(text_root)
if domain_pages:
page_sections.append(_section_toml("Domain"))
page_sections.extend(domain_pages)
if language_pages:
page_sections.append(_section_toml("Languages"))
page_sections.extend(language_pages)
if multimodal_root or multimodal_sub:
page_sections.append(_section_toml("Multimodal"))
page_sections.extend(multimodal_root)
page_sections.extend(multimodal_sub)
if leaderboard_map != LEADERBOARD_MAP:
LEADERBOARD_MAP.update(leaderboard_map)
leaderboard_change = True
if page_sections != PAGE_SECTIONS:
PAGE_SECTIONS.clear()
PAGE_SECTIONS.extend(page_sections)
page_change = True
return leaderboard_change, page_change
def init_pages(leaderboard_change, page_change):
if leaderboard_change:
with open("app/ui/pages/data_page.py", "r", encoding="utf-8") as f:
data_page = f.read()
for leaderboard, group_names in LEADERBOARD_MAP.items():
for group_name in group_names:
path = os.path.join("app/ui/pages", f"{group_name[0]}.py")
with open(path, "w", encoding="utf-8") as f:
f.write(data_page.replace("$group_name$", group_name[0]))
if page_change:
with open("app/ui/pages_sections.toml", "w", encoding="utf-8") as f:
f.write("\n".join(PAGE_SECTIONS))
if __name__ == '__main__':
init_leaderboard()
init_pages(True, True)
print("\n".join(PAGE_SECTIONS))