Abhishek Thakur commited on
Commit
4be0753
·
1 Parent(s): 1fffe05

more fixes

Browse files
competitions/competitions.py CHANGED
@@ -81,6 +81,24 @@ def _update_selected_submissions(user_token, submission_ids):
81
  return _my_submissions(user_token)
82
 
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  with gr.Blocks() as demo:
85
  with gr.Tabs() as tab_container:
86
  with gr.TabItem("Overview", id="overview"):
@@ -89,13 +107,15 @@ with gr.Blocks() as demo:
89
  gr.Markdown("## Dataset")
90
  gr.Markdown(f"{competition_info.dataset_description}")
91
  with gr.TabItem("Public Leaderboard", id="public_leaderboard") as public_leaderboard:
92
- output_df_public = gr.DataFrame(row_count=(50, "fixed"), overflow_row_behaviour="paginate")
 
 
 
93
  with gr.TabItem("Private Leaderboard", id="private_leaderboard") as private_leaderboard:
94
- current_date_time = datetime.now()
95
- if current_date_time > competition_info.end_date:
96
- output_df_private = gr.DataFrame()
97
- else:
98
- gr.Markdown("Private Leaderboard will be available after the competition ends")
99
  with gr.TabItem("New Submission", id="new_submission"):
100
  gr.Markdown(SUBMISSION_TEXT.format(competition_info.submission_limit))
101
  user_token = gr.Textbox(
@@ -135,8 +155,9 @@ with gr.Blocks() as demo:
135
  outputs=[output_text, output_df, selected_submissions, update_selected_submissions],
136
  )
137
 
138
- fetch_lb_partial = partial(leaderboard.fetch, private=False)
139
- public_leaderboard.select(fetch_lb_partial, inputs=[], outputs=[output_df_public])
140
- if current_date_time > competition_info.end_date:
141
- fetch_lb_partial_private = partial(leaderboard.fetch, private=True)
142
- private_leaderboard.select(fetch_lb_partial_private, inputs=[], outputs=[output_df_private])
 
 
81
  return _my_submissions(user_token)
82
 
83
 
84
+ def _fetch_leaderboard(private):
85
+ if private:
86
+ current_date_time = datetime.now()
87
+ if current_date_time < competition_info.end_date:
88
+ return [
89
+ gr.DataFrame.update(visible=False),
90
+ gr.Markdown.update(
91
+ visible=True, value="Private Leaderboard will be available after the competition ends"
92
+ ),
93
+ ]
94
+ df = leaderboard.fetch(private=private)
95
+ num_teams = len(df)
96
+ return [
97
+ gr.DataFrame.update(visible=True, value=df),
98
+ gr.Markdown.update(visible=True, value=f"Number of teams: {num_teams}"),
99
+ ]
100
+
101
+
102
  with gr.Blocks() as demo:
103
  with gr.Tabs() as tab_container:
104
  with gr.TabItem("Overview", id="overview"):
 
107
  gr.Markdown("## Dataset")
108
  gr.Markdown(f"{competition_info.dataset_description}")
109
  with gr.TabItem("Public Leaderboard", id="public_leaderboard") as public_leaderboard:
110
+ output_text_public = gr.Markdown()
111
+ output_df_public = gr.DataFrame(
112
+ row_count=(50, "dynamic"), overflow_row_behaviour="paginate", visible=False
113
+ )
114
  with gr.TabItem("Private Leaderboard", id="private_leaderboard") as private_leaderboard:
115
+ output_text_private = gr.Markdown()
116
+ output_df_private = gr.DataFrame(
117
+ row_count=(50, "dynamic"), overflow_row_behaviour="paginate", visible=False
118
+ )
 
119
  with gr.TabItem("New Submission", id="new_submission"):
120
  gr.Markdown(SUBMISSION_TEXT.format(competition_info.submission_limit))
121
  user_token = gr.Textbox(
 
155
  outputs=[output_text, output_df, selected_submissions, update_selected_submissions],
156
  )
157
 
158
+ fetch_lb_partial = partial(_fetch_leaderboard, private=False)
159
+ public_leaderboard.select(fetch_lb_partial, inputs=[], outputs=[output_df_public, output_text_public])
160
+ fetch_lb_partial_private = partial(_fetch_leaderboard, private=True)
161
+ private_leaderboard.select(
162
+ fetch_lb_partial_private, inputs=[], outputs=[output_df_private, output_text_private]
163
+ )
competitions/leaderboard.py CHANGED
@@ -71,12 +71,15 @@ class Leaderboard:
71
  return submissions
72
 
73
  def _process_private_lb(self):
 
74
  submissions_folder = snapshot_download(
75
  repo_id=self.competition_id,
76
  allow_patterns="*.json",
77
  use_auth_token=self.autotrain_token,
78
  repo_type="dataset",
79
  )
 
 
80
  submissions = []
81
  for submission in glob.glob(os.path.join(submissions_folder, "*.json")):
82
  with open(submission, "r") as f:
@@ -134,6 +137,7 @@ class Leaderboard:
134
  "submission_time": submission_info["submissions"]["time"],
135
  }
136
  submissions.append(temp_info)
 
137
  return submissions
138
 
139
  def fetch(self, private=False):
@@ -153,9 +157,6 @@ class Leaderboard:
153
  # only keep submissions before or on the end date
154
  df = df[df["submission_datetime"] <= self.end_date].reset_index(drop=True)
155
 
156
- # convert datetime column to string
157
- df["submission_datetime"] = df["submission_datetime"].dt.strftime("%Y-%m-%d %H:%M:%S")
158
-
159
  # sort by submission datetime
160
  # sort by public score and submission datetime
161
  if self.eval_higher_is_better:
@@ -191,5 +192,8 @@ class Leaderboard:
191
  df = df.reset_index(drop=True)
192
  df["rank"] = df.index + 1
193
 
 
 
 
194
  columns = self.public_columns if not private else self.private_columns
195
  return df[columns]
 
71
  return submissions
72
 
73
  def _process_private_lb(self):
74
+ start_time = time.time()
75
  submissions_folder = snapshot_download(
76
  repo_id=self.competition_id,
77
  allow_patterns="*.json",
78
  use_auth_token=self.autotrain_token,
79
  repo_type="dataset",
80
  )
81
+ logger.info(f"Downloaded submissions in {time.time() - start_time} seconds")
82
+ start_time = time.time()
83
  submissions = []
84
  for submission in glob.glob(os.path.join(submissions_folder, "*.json")):
85
  with open(submission, "r") as f:
 
137
  "submission_time": submission_info["submissions"]["time"],
138
  }
139
  submissions.append(temp_info)
140
+ logger.info(f"Processed submissions in {time.time() - start_time} seconds")
141
  return submissions
142
 
143
  def fetch(self, private=False):
 
157
  # only keep submissions before or on the end date
158
  df = df[df["submission_datetime"] <= self.end_date].reset_index(drop=True)
159
 
 
 
 
160
  # sort by submission datetime
161
  # sort by public score and submission datetime
162
  if self.eval_higher_is_better:
 
192
  df = df.reset_index(drop=True)
193
  df["rank"] = df.index + 1
194
 
195
+ # convert datetime column to string
196
+ df["submission_datetime"] = df["submission_datetime"].dt.strftime("%Y-%m-%d %H:%M:%S")
197
+
198
  columns = self.public_columns if not private else self.private_columns
199
  return df[columns]