helliun commited on
Commit
039bde1
1 Parent(s): 42cd37c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +134 -134
app.py CHANGED
@@ -11,180 +11,180 @@ def update_scores(winner, loser, k_factor=100):
11
  loser -= score_difference
12
  return winner, loser
13
 
14
- def vote_startup(songs_df):
15
  try:
16
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
17
  except:
18
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
19
- if len(songs_df)>0:
20
- if len(songs_df)>10:
21
  slice_size = 4
22
- slice = int(len(songs_df)/slice_size)
23
- sample = songs_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
24
- song_title, artist = sample["song_title"], sample["artist"]
25
  else:
26
- sample = songs_df.sample(frac=1).iloc[0]
27
- song_title, artist = sample["song_title"], sample["artist"]
28
- if len(songs_df) > 1:
29
- # Randomly select a song to compare with
30
- sample = songs_df.sample(frac=1)
31
- comparison_song = sample.iloc[0]
32
- if comparison_song['song_title'] == song_title and comparison_song['artist'] == artist:
33
- comparison_song = sample.iloc[1]
34
- first_df = songs_df[songs_df["song_title"]==song_title][songs_df["artist"]==artist]
35
- first_string = first_df["song_title"].tolist()[0]+" - "+first_df["artist"].tolist()[0]
36
- second_df = comparison_song
37
- second_string = second_df["song_title"]+" - "+second_df["artist"]
38
- return f"Do you like '{artist} - {song_title}' better than '{comparison_song['artist']} - {comparison_song['song_title']}'?", first_string, second_string, display_rankings(songs_df)
39
  else:
40
- return "Add some songs to start voting!", "", "", display_rankings(songs_df)
41
 
42
  def clean_string(string):
43
  string = string.strip().replace(" "," ").lower()
44
  string = " ".join([x[0].upper()+x[1:] for x in string.split()])
45
  return string
46
 
47
- def add_and_compare(artist, song_title, songs_df):
48
  try:
49
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
50
  except:
51
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
52
- if artist != "" and song_title != "":
53
- artist = clean_string(artist)
54
- song_title = clean_string(song_title)
55
- new_song = pd.DataFrame({'artist': [artist], 'song_title': [song_title], 'elo_score': [1000]})
56
- songs_df = pd.concat([songs_df, new_song], ignore_index=True)
57
- songs_df.to_csv("songs_df.csv")
58
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
59
- return "", "", display_rankings(songs_df)
60
 
61
  # Function to update Elo ratings based on user's choice
62
- def update_ratings_pos(first_string, second_string, songs_df):
63
  try:
64
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
65
  except:
66
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
67
- if len(songs_df)==0:
68
- return "Add some songs to start voting!", "", "", display_rankings(songs_df)
69
  if first_string != "":
70
- songs_df["combined"] = songs_df["song_title"] + " - " + songs_df["artist"]
71
- loser = songs_df[songs_df["combined"] == second_string]
72
- winner = songs_df[songs_df["combined"] == first_string]
73
  # Update Elo scores
74
  winner_score, loser_score = update_scores(winner['elo_score'].values[0], loser['elo_score'].values[0])
75
- songs_df.at[winner.index[0], 'elo_score'] = winner_score
76
- songs_df.at[loser.index[0], 'elo_score'] = loser_score
77
 
78
- songs_df = songs_df.sort_values(by='elo_score', ascending=False)
79
- songs_df.to_csv("songs_df.csv")
80
 
81
- if len(songs_df)>10:
82
  slice_size = 4
83
- slice = int(len(songs_df)/slice_size)
84
- sample = songs_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
85
- song_title, artist = sample["song_title"], sample["artist"]
86
  else:
87
- sample = songs_df.sample(frac=1).iloc[0]
88
- song_title, artist = sample["song_title"], sample["artist"]
89
- if len(songs_df) > 1:
90
- # Randomly select a song to compare with
91
- sample = songs_df.sample(frac=1)
92
- comparison_song = sample.iloc[0]
93
- if comparison_song['song_title'] == song_title and comparison_song['artist'] == artist:
94
- comparison_song = sample.iloc[1]
95
- first_df = songs_df[songs_df["song_title"]==song_title][songs_df["artist"]==artist]
96
- first_string = first_df["song_title"].tolist()[0]+" - "+first_df["artist"].tolist()[0]
97
- second_df = comparison_song
98
- second_string = second_df["song_title"]+" - "+second_df["artist"]
99
- return f"Do you like '{artist} - {song_title}' better than '{comparison_song['artist']} - {comparison_song['song_title']}'?", first_string, second_string, display_rankings(songs_df)
100
  else:
101
- return "Add some songs to start voting!", "", "", display_rankings(songs_df)
102
 
103
  # Function to update Elo ratings based on user's choice
104
- def update_ratings_neg(first_string, second_string, songs_df):
105
  try:
106
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
107
  except:
108
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
109
- if len(songs_df)==0:
110
- return "Add some songs to start voting!", "", "", display_rankings(songs_df)
111
  if first_string != "":
112
- songs_df["combined"] = songs_df["song_title"] + " - " + songs_df["artist"]
113
- loser = songs_df[songs_df["combined"] == first_string]
114
- winner = songs_df[songs_df["combined"] == second_string]
115
 
116
  # Update Elo scores
117
  winner_score, loser_score = update_scores(winner['elo_score'].values[0], loser['elo_score'].values[0])
118
- songs_df.at[winner.index[0], 'elo_score'] = winner_score
119
- songs_df.at[loser.index[0], 'elo_score'] = loser_score
120
 
121
- songs_df = songs_df.sort_values(by='elo_score', ascending=False)
122
- songs_df.to_csv("songs_df.csv")
123
- if len(songs_df)>10:
124
  slice_size = 4
125
- slice = int(len(songs_df)/slice_size)
126
- sample = songs_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
127
- song_title, artist = sample["song_title"], sample["artist"]
128
  else:
129
- sample = songs_df.sample(frac=1).iloc[0]
130
- song_title, artist = sample["song_title"], sample["artist"]
131
- if len(songs_df) > 1:
132
- # Randomly select a song to compare with
133
- sample = songs_df.sample(frac=1)
134
- comparison_song = sample.iloc[0]
135
- if comparison_song['song_title'] == song_title and comparison_song['artist'] == artist:
136
- comparison_song = sample.iloc[1]
137
- first_df = songs_df[songs_df["song_title"]==song_title][songs_df["artist"]==artist]
138
- first_string = first_df["song_title"].tolist()[0]+" - "+first_df["artist"].tolist()[0]
139
- second_df = comparison_song
140
- second_string = second_df["song_title"]+" - "+second_df["artist"]
141
- return f"Do you like '{artist} - {song_title}' better than '{comparison_song['artist']} - {comparison_song['song_title']}'?", first_string, second_string, display_rankings(songs_df)
142
  else:
143
- return "Add some songs to start voting!", "", "", display_rankings(songs_df)
144
 
145
- def display_rankings(songs_df=pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])):
146
- songs_df = songs_df.sort_values(by='elo_score', ascending=False)
147
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
148
- songs_df.to_csv("songs_df.csv")
149
- return songs_df
150
 
151
- def export_csv(songs_df):
152
  # Function to export DataFrame to CSV
153
- save_df = songs_df
154
- save_df.to_csv("songs_df.csv")
155
- return "songs_df.csv"
156
 
157
- def import_csv(file, songs_df):
158
  if file is not None:
159
  #file_content = file.decode('utf-8')
160
  new_df = pd.read_csv(file)
161
  try:
162
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
163
  except:
164
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
165
- new_df = new_df[["elo_score", "artist", "song_title"]]
166
- songs_df = pd.concat([songs_df,new_df])
167
 
168
- songs_df = songs_df.drop_duplicates(subset=['artist', 'song_title'])
169
- return songs_df
170
 
171
 
172
- # Function to remove a song
173
- def remove_song(artist, song_title, songs_df):
174
- # Find and remove the song from the DataFrame
175
- artist = clean_string(artist)
176
- song_title = clean_string(song_title)
177
- songs_df = songs_df[~((songs_df["artist"] == artist) & (songs_df["song_title"] == song_title))]
178
- return songs_df[["elo_score", "artist", "song_title"]]
179
 
180
- def reset_rankings(songs_df):
181
- songs_df["elo_score"] = [1000]*len(songs_df)
182
- songs_df = songs_df[["elo_score", "artist", "song_title"]]
183
- return display_rankings(songs_df)
184
 
185
- def clear_rankings(songs_df):
186
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
187
- return display_rankings(songs_df)
188
 
189
 
190
  # theme='Taithrah/Minimal'
@@ -204,7 +204,7 @@ with gr.Blocks(theme=theme) as app:
204
  )
205
 
206
  with gr.Row():
207
- previews_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
208
  previews = gr.DataFrame(value=previews_df, interactive=False, visible=False)
209
  with gr.Column():
210
  gr.Markdown(
@@ -229,27 +229,27 @@ with gr.Blocks(theme=theme) as app:
229
  """
230
  )
231
 
232
- songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
233
- rankings = gr.DataFrame(value=songs_df, interactive=False, headers=["Score","Artist", "Song"])
234
 
235
  gr.Markdown(
236
  """### Add Opponents
237
  """
238
  )
239
  with gr.Row():
240
- artist_input = gr.Textbox(label="Type")
241
- song_title_input = gr.Textbox(label="Opponent")
242
  add_button = gr.Button("Add Opponent")
243
- add_button.click(add_and_compare, inputs=[artist_input, song_title_input, rankings], outputs=[artist_input, song_title_input, rankings])
244
  gr.Markdown(
245
  """### Remove Opponents
246
  """
247
  )
248
  with gr.Row():
249
- remove_artist_input = gr.Textbox(label="Type")
250
- remove_song_title_input = gr.Textbox(label="Opponent")
251
- remove_button = gr.Button("Remove Song")
252
- remove_button.click(remove_song, inputs=[remove_artist_input, remove_song_title_input, rankings], outputs=rankings)
253
 
254
  gr.Markdown(
255
  """### Import and Export Rankings
@@ -274,7 +274,7 @@ with gr.Blocks(theme=theme) as app:
274
  clear_button = gr.Button("Clear Table", variant="primary")
275
  clear_button.click(clear_rankings, inputs=[rankings], outputs=rankings)
276
 
277
- # add_button.click(add_and_compare, inputs=[artist_input, song_title_input, rankings], outputs=[artist_input, song_title_input, rankings])
278
  yes_button.click(update_ratings_pos, inputs=[compare_index_1, compare_index_2, rankings], outputs=[compare_output, compare_index_1, compare_index_2, rankings])
279
  no_button.click(update_ratings_neg, inputs=[compare_index_1, compare_index_2, rankings], outputs=[compare_output, compare_index_1, compare_index_2, rankings])
280
  new_vote.click(vote_startup, inputs=[rankings],outputs=[compare_output, compare_index_1, compare_index_2, rankings])
 
11
  loser -= score_difference
12
  return winner, loser
13
 
14
+ def vote_startup(opponents_df):
15
  try:
16
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
17
  except:
18
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
19
+ if len(opponents_df)>0:
20
+ if len(opponents_df)>10:
21
  slice_size = 4
22
+ slice = int(len(opponents_df)/slice_size)
23
+ sample = opponents_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
24
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
25
  else:
26
+ sample = opponents_df.sample(frac=1).iloc[0]
27
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
28
+ if len(opponents_df) > 1:
29
+ # Randomly select a opponent to compare with
30
+ sample = opponents_df.sample(frac=1)
31
+ comparison_opponent = sample.iloc[0]
32
+ if comparison_opponent['opponent'] == opponent and comparison_opponent['descriptor'] == descriptor:
33
+ comparison_opponent = sample.iloc[1]
34
+ first_df = opponents_df[opponents_df["opponent"]==opponent][opponents_df["descriptor"]==descriptor]
35
+ first_string = first_df["opponent"].tolist()[0]+" - "+first_df["descriptor"].tolist()[0]
36
+ second_df = comparison_opponent
37
+ second_string = second_df["opponent"]+" - "+second_df["descriptor"]
38
+ return f"Do you like '{descriptor} - {opponent}' better than '{comparison_opponent['descriptor']} - {comparison_opponent['opponent']}'?", first_string, second_string, display_rankings(opponents_df)
39
  else:
40
+ return "Add some opponents to start voting!", "", "", display_rankings(opponents_df)
41
 
42
  def clean_string(string):
43
  string = string.strip().replace(" "," ").lower()
44
  string = " ".join([x[0].upper()+x[1:] for x in string.split()])
45
  return string
46
 
47
+ def add_and_compare(descriptor, opponent, opponents_df):
48
  try:
49
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
50
  except:
51
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
52
+ if descriptor != "" and opponent != "":
53
+ descriptor = clean_string(descriptor)
54
+ opponent = clean_string(opponent)
55
+ new_opponent = pd.DataFrame({'descriptor': [descriptor], 'opponent': [opponent], 'elo_score': [1000]})
56
+ opponents_df = pd.concat([opponents_df, new_opponent], ignore_index=True)
57
+ opponents_df.to_csv("opponents_df.csv")
58
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
59
+ return "", "", display_rankings(opponents_df)
60
 
61
  # Function to update Elo ratings based on user's choice
62
+ def update_ratings_pos(first_string, second_string, opponents_df):
63
  try:
64
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
65
  except:
66
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
67
+ if len(opponents_df)==0:
68
+ return "Add some opponents to start voting!", "", "", display_rankings(opponents_df)
69
  if first_string != "":
70
+ opponents_df["combined"] = opponents_df["opponent"] + " - " + opponents_df["descriptor"]
71
+ loser = opponents_df[opponents_df["combined"] == second_string]
72
+ winner = opponents_df[opponents_df["combined"] == first_string]
73
  # Update Elo scores
74
  winner_score, loser_score = update_scores(winner['elo_score'].values[0], loser['elo_score'].values[0])
75
+ opponents_df.at[winner.index[0], 'elo_score'] = winner_score
76
+ opponents_df.at[loser.index[0], 'elo_score'] = loser_score
77
 
78
+ opponents_df = opponents_df.sort_values(by='elo_score', ascending=False)
79
+ opponents_df.to_csv("opponents_df.csv")
80
 
81
+ if len(opponents_df)>10:
82
  slice_size = 4
83
+ slice = int(len(opponents_df)/slice_size)
84
+ sample = opponents_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
85
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
86
  else:
87
+ sample = opponents_df.sample(frac=1).iloc[0]
88
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
89
+ if len(opponents_df) > 1:
90
+ # Randomly select a opponent to compare with
91
+ sample = opponents_df.sample(frac=1)
92
+ comparison_opponent = sample.iloc[0]
93
+ if comparison_opponent['opponent'] == opponent and comparison_opponent['descriptor'] == descriptor:
94
+ comparison_opponent = sample.iloc[1]
95
+ first_df = opponents_df[opponents_df["opponent"]==opponent][opponents_df["descriptor"]==descriptor]
96
+ first_string = first_df["opponent"].tolist()[0]+" - "+first_df["descriptor"].tolist()[0]
97
+ second_df = comparison_opponent
98
+ second_string = second_df["opponent"]+" - "+second_df["descriptor"]
99
+ return f"Do you like '{descriptor} - {opponent}' better than '{comparison_opponent['descriptor']} - {comparison_opponent['opponent']}'?", first_string, second_string, display_rankings(opponents_df)
100
  else:
101
+ return "Add some opponents to start voting!", "", "", display_rankings(opponents_df)
102
 
103
  # Function to update Elo ratings based on user's choice
104
+ def update_ratings_neg(first_string, second_string, opponents_df):
105
  try:
106
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
107
  except:
108
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
109
+ if len(opponents_df)==0:
110
+ return "Add some opponents to start voting!", "", "", display_rankings(opponents_df)
111
  if first_string != "":
112
+ opponents_df["combined"] = opponents_df["opponent"] + " - " + opponents_df["descriptor"]
113
+ loser = opponents_df[opponents_df["combined"] == first_string]
114
+ winner = opponents_df[opponents_df["combined"] == second_string]
115
 
116
  # Update Elo scores
117
  winner_score, loser_score = update_scores(winner['elo_score'].values[0], loser['elo_score'].values[0])
118
+ opponents_df.at[winner.index[0], 'elo_score'] = winner_score
119
+ opponents_df.at[loser.index[0], 'elo_score'] = loser_score
120
 
121
+ opponents_df = opponents_df.sort_values(by='elo_score', ascending=False)
122
+ opponents_df.to_csv("opponents_df.csv")
123
+ if len(opponents_df)>10:
124
  slice_size = 4
125
+ slice = int(len(opponents_df)/slice_size)
126
+ sample = opponents_df[slice:(slice_size-1)*slice].sample(frac=1).iloc[0]
127
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
128
  else:
129
+ sample = opponents_df.sample(frac=1).iloc[0]
130
+ opponent, descriptor = sample["opponent"], sample["descriptor"]
131
+ if len(opponents_df) > 1:
132
+ # Randomly select a opponent to compare with
133
+ sample = opponents_df.sample(frac=1)
134
+ comparison_opponent = sample.iloc[0]
135
+ if comparison_opponent['opponent'] == opponent and comparison_opponent['descriptor'] == descriptor:
136
+ comparison_opponent = sample.iloc[1]
137
+ first_df = opponents_df[opponents_df["opponent"]==opponent][opponents_df["descriptor"]==descriptor]
138
+ first_string = first_df["opponent"].tolist()[0]+" - "+first_df["descriptor"].tolist()[0]
139
+ second_df = comparison_opponent
140
+ second_string = second_df["opponent"]+" - "+second_df["descriptor"]
141
+ return f"Do you like '{descriptor} - {opponent}' better than '{comparison_opponent['descriptor']} - {comparison_opponent['opponent']}'?", first_string, second_string, display_rankings(opponents_df)
142
  else:
143
+ return "Add some opponents to start voting!", "", "", display_rankings(opponents_df)
144
 
145
+ def display_rankings(opponents_df=pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])):
146
+ opponents_df = opponents_df.sort_values(by='elo_score', ascending=False)
147
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
148
+ opponents_df.to_csv("opponents_df.csv")
149
+ return opponents_df
150
 
151
+ def export_csv(opponents_df):
152
  # Function to export DataFrame to CSV
153
+ save_df = opponents_df
154
+ save_df.to_csv("opponents_df.csv")
155
+ return "opponents_df.csv"
156
 
157
+ def import_csv(file, opponents_df):
158
  if file is not None:
159
  #file_content = file.decode('utf-8')
160
  new_df = pd.read_csv(file)
161
  try:
162
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
163
  except:
164
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
165
+ new_df = new_df[["elo_score", "descriptor", "opponent"]]
166
+ opponents_df = pd.concat([opponents_df,new_df])
167
 
168
+ opponents_df = opponents_df.drop_duplicates(subset=['descriptor', 'opponent'])
169
+ return opponents_df
170
 
171
 
172
+ # Function to remove a opponent
173
+ def remove_opponent(descriptor, opponent, opponents_df):
174
+ # Find and remove the opponent from the DataFrame
175
+ descriptor = clean_string(descriptor)
176
+ opponent = clean_string(opponent)
177
+ opponents_df = opponents_df[~((opponents_df["descriptor"] == descriptor) & (opponents_df["opponent"] == opponent))]
178
+ return opponents_df[["elo_score", "descriptor", "opponent"]]
179
 
180
+ def reset_rankings(opponents_df):
181
+ opponents_df["elo_score"] = [1000]*len(opponents_df)
182
+ opponents_df = opponents_df[["elo_score", "descriptor", "opponent"]]
183
+ return display_rankings(opponents_df)
184
 
185
+ def clear_rankings(opponents_df):
186
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
187
+ return display_rankings(opponents_df)
188
 
189
 
190
  # theme='Taithrah/Minimal'
 
204
  )
205
 
206
  with gr.Row():
207
+ previews_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
208
  previews = gr.DataFrame(value=previews_df, interactive=False, visible=False)
209
  with gr.Column():
210
  gr.Markdown(
 
229
  """
230
  )
231
 
232
+ opponents_df = pd.DataFrame(columns=['elo_score', 'descriptor', 'opponent'])
233
+ rankings = gr.DataFrame(value=opponents_df, interactive=False, headers=["Score","descriptor", "opponent"])
234
 
235
  gr.Markdown(
236
  """### Add Opponents
237
  """
238
  )
239
  with gr.Row():
240
+ descriptor_input = gr.Textbox(label="Type")
241
+ opponent_input = gr.Textbox(label="Opponent")
242
  add_button = gr.Button("Add Opponent")
243
+ add_button.click(add_and_compare, inputs=[descriptor_input, opponent_input, rankings], outputs=[descriptor_input, opponent_input, rankings])
244
  gr.Markdown(
245
  """### Remove Opponents
246
  """
247
  )
248
  with gr.Row():
249
+ remove_descriptor_input = gr.Textbox(label="Type")
250
+ remove_opponent_input = gr.Textbox(label="Opponent")
251
+ remove_button = gr.Button("Remove opponent")
252
+ remove_button.click(remove_opponent, inputs=[remove_descriptor_input, remove_opponent_input, rankings], outputs=rankings)
253
 
254
  gr.Markdown(
255
  """### Import and Export Rankings
 
274
  clear_button = gr.Button("Clear Table", variant="primary")
275
  clear_button.click(clear_rankings, inputs=[rankings], outputs=rankings)
276
 
277
+ # add_button.click(add_and_compare, inputs=[descriptor_input, opponent_input, rankings], outputs=[descriptor_input, opponent_input, rankings])
278
  yes_button.click(update_ratings_pos, inputs=[compare_index_1, compare_index_2, rankings], outputs=[compare_output, compare_index_1, compare_index_2, rankings])
279
  no_button.click(update_ratings_neg, inputs=[compare_index_1, compare_index_2, rankings], outputs=[compare_output, compare_index_1, compare_index_2, rankings])
280
  new_vote.click(vote_startup, inputs=[rankings],outputs=[compare_output, compare_index_1, compare_index_2, rankings])