Kabalisticus commited on
Commit
e41f931
1 Parent(s): 65d3550

Back to test

Browse files
Files changed (2) hide show
  1. __pycache__/utils.cpython-311.pyc +0 -0
  2. app.py +61 -65
__pycache__/utils.cpython-311.pyc CHANGED
Binary files a/__pycache__/utils.cpython-311.pyc and b/__pycache__/utils.cpython-311.pyc differ
 
app.py CHANGED
@@ -4,12 +4,9 @@ import pandas as pd
4
  import os
5
  import time
6
  import datetime
7
- import pkg_resources
8
  from utils import fetch_competition_summary, fetch_models_evaluation
9
 
10
  st.set_page_config(layout="wide")
11
- streamlit_version = pkg_resources.get_distribution("streamlit").version
12
- print(f"Streamlit version: {streamlit_version}")
13
 
14
  ### WANDB
15
 
@@ -71,40 +68,53 @@ def update_leader_info(leader_info, competition, best_model):
71
  leader_info[competition]["UID"] = best_model["ID"]
72
  leader_info[competition]["Days on Top"] = 1
73
  return leader_info[competition]
74
- @st.cache_data(ttl=60)
75
- def load_competition_data():
76
- ranking_dfs = {}
77
- for competition, details in projects.items():
78
- df = fetch_runs_to_df(api, projects, competition)
79
- if not df.empty:
80
- ranking_df = fetch_models_to_df(api, projects, competition, df)
81
- rank_by = ["Recall", "Accuracy", "ROC AUC"]
82
- ascending = [False, False, False]
83
- ranking_df = ranking_df.sort_values(by=rank_by, ascending=ascending)
84
- ranking_dfs[competition] = ranking_df
85
- return ranking_dfs
86
 
87
  # Streamlit app main function
88
  def main():
89
  st.title("LaUltimate Dashboard")
 
90
  st.subheader("Welcome to the Competition Dashboard!")
 
91
 
92
- # Load competition data
93
- ranking_dfs = load_competition_data()
94
 
95
- # Initialize or update leader_info
 
96
  if "leader_info" not in st.session_state:
97
  st.session_state.leader_info = {}
98
 
99
- # Update leader info for each competition
100
- for competition in ranking_dfs:
101
- if not ranking_dfs[competition].empty:
102
- best_model = ranking_dfs[competition].iloc[0]
103
- st.session_state.leader_info[competition] = update_leader_info(st.session_state.leader_info, competition, best_model)
 
 
 
 
 
 
 
 
 
 
 
104
 
105
  st.markdown("### Competitions")
106
 
107
- # Create a header for the table with additional columns
 
 
108
  cols = st.columns([1, 3, 2, 2, 2, 2, 1, 2])
109
  cols[0].write("Index")
110
  cols[1].write("Competition Name")
@@ -115,14 +125,13 @@ def main():
115
  cols[6].write("Hotkey")
116
  cols[7].write("Days on Top")
117
 
118
- # Display the project names in a table-like structure with buttons and placeholders for additional data
119
  for index, (competition, details) in enumerate(projects.items(), start=1):
120
- leader_info = st.session_state.leader_info.get(competition, {})
121
-
122
  cols = st.columns([1, 3, 2, 2, 2, 2, 1, 2])
123
  cols[0].write(index)
124
- if cols[1].button(competition, key=f"btn_{competition}"):
125
- st.session_state.selected_competition = competition
126
  cols[2].write(leader_info.get("Username", "N/A"))
127
  cols[3].write(leader_info.get("Model Name", "N/A"))
128
  cols[4].write(leader_info.get("Date", "N/A"))
@@ -130,46 +139,33 @@ def main():
130
  cols[6].write(leader_info.get("Hotkey", "N/A"))
131
  cols[7].write(leader_info.get("Days on Top", "N/A"))
132
 
133
- # Display selected competition details
134
- if "selected_competition" in st.session_state:
135
- competition_name = st.session_state.selected_competition
136
  st.write(f"Selected competition: {competition_name}")
 
 
137
 
138
- try:
139
- competition_details = projects.get(competition_name, {})
140
- description = competition_details.get("description", "No description available.")
141
-
142
- st.header(f"Competition: {competition_name}")
143
- st.write(description)
144
-
145
- df = ranking_dfs.get(competition_name, pd.DataFrame())
146
- if not df.empty:
147
- st.subheader("Competition Summary")
148
- try:
149
- competition_summary_df = fetch_competition_summary(api, projects, competition_name, df)
150
- if not competition_summary_df.empty:
151
- st.dataframe(competition_summary_df)
152
- else:
153
- st.warning("No competition summary data available.")
154
- except Exception as e:
155
- st.error(f"Error fetching competition summary: {str(e)}")
156
-
157
- st.subheader("Models Evaluation")
158
- try:
159
- models_evaluation_df = fetch_models_to_df(api, projects, competition_name, df)
160
- if not models_evaluation_df.empty:
161
- st.dataframe(models_evaluation_df)
162
- else:
163
- st.warning("No models evaluation data available.")
164
- except Exception as e:
165
- st.error(f"Error fetching models evaluation: {str(e)}")
166
- else:
167
- st.warning("No runs available for ranking.")
168
- except Exception as e:
169
- st.error(f"An error occurred while processing the competition data: {str(e)}")
170
  else:
171
  st.write("Please select a competition to view details.")
172
 
 
173
  # Run the app
174
  if __name__ == "__main__":
175
- main()
 
4
  import os
5
  import time
6
  import datetime
 
7
  from utils import fetch_competition_summary, fetch_models_evaluation
8
 
9
  st.set_page_config(layout="wide")
 
 
10
 
11
  ### WANDB
12
 
 
68
  leader_info[competition]["UID"] = best_model["ID"]
69
  leader_info[competition]["Days on Top"] = 1
70
  return leader_info[competition]
71
+ @st.cache_data()
72
+ def load_competition_data(last_update_time=None):
73
+ competition_summaries = {}
74
+ model_evaluations = {}
75
+ for competition in projects:
76
+ competition_summaries[competition] = fetch_competition_summary(api, projects, competition)
77
+ model_evaluations[competition] = fetch_models_evaluation(api, projects, competition)
78
+
79
+ last_update_time = time.time()
80
+ return competition_summaries, model_evaluations, last_update_time
 
 
81
 
82
  # Streamlit app main function
83
  def main():
84
  st.title("LaUltimate Dashboard")
85
+ st.title("JEDZIESZMALINA")
86
  st.subheader("Welcome to the Competition Dashboard!")
87
+ st.write("Explore the various AI competitions and their respective rankings. Select a competition to view more details and rankings.")
88
 
89
+ update_interval = 20 * 60 # 20 minutes in seconds
 
90
 
91
+ if 'last_update_time' not in st.session_state:
92
+ st.session_state.last_update_time = None
93
  if "leader_info" not in st.session_state:
94
  st.session_state.leader_info = {}
95
 
96
+ if st.session_state.last_update_time is None or (time.time() - st.session_state.last_update_time > update_interval):
97
+ competition_summaries, model_evaluations, st.session_state.last_update_time = load_competition_data(st.session_state.last_update_time)
98
+
99
+ for competition in projects:
100
+ if not model_evaluations[competition].empty:
101
+ best_model = model_evaluations[competition].iloc[0]
102
+ st.session_state.leader_info[competition] = update_leader_info(st.session_state.leader_info, competition, best_model)
103
+ else:
104
+ st.session_state.leader_info[competition] = {
105
+ "Username": "N/A", "Model Name": "N/A", "Hotkey": "N/A",
106
+ "Date": "N/A", "UID": "N/A", "Days on Top": "N/A"
107
+ }
108
+ else:
109
+ competition_summaries, model_evaluations, _ = load_competition_data(st.session_state.last_update_time)
110
+
111
+ st.write(f"Last updated: {time.ctime(st.session_state.last_update_time)}")
112
 
113
  st.markdown("### Competitions")
114
 
115
+ st.write("### Select Competition")
116
+
117
+ # Create a header for the table
118
  cols = st.columns([1, 3, 2, 2, 2, 2, 1, 2])
119
  cols[0].write("Index")
120
  cols[1].write("Competition Name")
 
125
  cols[6].write("Hotkey")
126
  cols[7].write("Days on Top")
127
 
 
128
  for index, (competition, details) in enumerate(projects.items(), start=1):
129
+ leader_info = st.session_state.get("leader_info", {}).get(competition, {})
130
+
131
  cols = st.columns([1, 3, 2, 2, 2, 2, 1, 2])
132
  cols[0].write(index)
133
+ if cols[1].button(competition):
134
+ st.query_params["comp"] = competition
135
  cols[2].write(leader_info.get("Username", "N/A"))
136
  cols[3].write(leader_info.get("Model Name", "N/A"))
137
  cols[4].write(leader_info.get("Date", "N/A"))
 
139
  cols[6].write(leader_info.get("Hotkey", "N/A"))
140
  cols[7].write(leader_info.get("Days on Top", "N/A"))
141
 
142
+ query_params = st.query_params
143
+ if "comp" in query_params:
144
+ competition_name = query_params["comp"]
145
  st.write(f"Selected competition: {competition_name}")
146
+ competition_details = projects.get(competition_name, {})
147
+ description = competition_details.get("description", "No description available.")
148
 
149
+ st.header(f"Competition: {competition_name}")
150
+ st.write(description)
151
+
152
+ st.subheader("Competition Summary")
153
+ competition_summary_df = competition_summaries.get(competition_name, pd.DataFrame())
154
+ if not competition_summary_df.empty:
155
+ st.dataframe(competition_summary_df)
156
+ else:
157
+ st.warning("No competition summary data available.")
158
+
159
+ st.subheader("Models Evaluation")
160
+ models_evaluation_df = model_evaluations.get(competition_name, pd.DataFrame())
161
+ if not models_evaluation_df.empty:
162
+ st.dataframe(models_evaluation_df)
163
+ else:
164
+ st.warning("No models evaluation data available.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  else:
166
  st.write("Please select a competition to view details.")
167
 
168
+
169
  # Run the app
170
  if __name__ == "__main__":
171
+ main()