Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
680a352
1
Parent(s):
6b35b8d
Refactor position requirement calculations in Streamlit app to streamline handling of flex multipliers. Consolidated logic for both user-defined and default configurations, ensuring accurate index calculations for QB, RB, WR, and TE positions.
Browse files- src/streamlit_app.py +9 -56
src/streamlit_app.py
CHANGED
@@ -273,29 +273,10 @@ def designate_custom_position_reqs(league_settings: dict, flex_percentiles: dict
|
|
273 |
wr_base = league_settings['WR'] * league_settings['TEAMS']
|
274 |
te_base = league_settings['TE'] * league_settings['TEAMS']
|
275 |
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
qb_rv_index = math.ceil((qb_base) * flex_multipliers['QB'])
|
281 |
-
|
282 |
-
# Handle flex percentiles - for Superflex, QB is included; for others, it's not
|
283 |
-
if 'QB' in flex_percentiles:
|
284 |
-
# Superflex case
|
285 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
|
286 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
|
287 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
|
288 |
-
else:
|
289 |
-
# Non-Superflex case
|
290 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
|
291 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
|
292 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
|
293 |
-
else:
|
294 |
-
# Default configuration (nested structure)
|
295 |
-
qb_rv_index = math.ceil((qb_base) * flex_multipliers[league_settings['TYPE']]['QB'])
|
296 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['RB'])) * flex_multipliers[league_settings['TYPE']]['RB'])
|
297 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['WR'])) * flex_multipliers[league_settings['TYPE']]['WR'])
|
298 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['TE'])) * flex_multipliers[league_settings['TYPE']]['TE'])
|
299 |
|
300 |
print(f"Need {qb_rv_index} for QB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
301 |
print(f"Need {rb_rv_index} for RB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
@@ -317,28 +298,10 @@ def designate_base_position_reqs(league_settings: dict, flex_percentiles: dict,
|
|
317 |
wr_base = league_settings['WR'] * league_settings['TEAMS']
|
318 |
te_base = league_settings['TE'] * league_settings['TEAMS']
|
319 |
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
# Handle flex percentiles - for Superflex, QB is included; for others, it's not
|
326 |
-
if 'QB' in flex_percentiles:
|
327 |
-
# Superflex case
|
328 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
|
329 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
|
330 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
|
331 |
-
else:
|
332 |
-
# Non-Superflex case
|
333 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['RB'])) * flex_multipliers['RB'])
|
334 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['WR'])) * flex_multipliers['WR'])
|
335 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles['TE'])) * flex_multipliers['TE'])
|
336 |
-
else:
|
337 |
-
# Default configuration (nested structure)
|
338 |
-
qb_rv_index = math.ceil(qb_base * flex_multipliers[league_settings['TYPE']]['QB'])
|
339 |
-
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['RB'])) * flex_multipliers[league_settings['TYPE']]['RB'])
|
340 |
-
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['WR'])) * flex_multipliers[league_settings['TYPE']]['WR'])
|
341 |
-
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['TE'])) * flex_multipliers[league_settings['TYPE']]['TE'])
|
342 |
|
343 |
print(f"Need {qb_rv_index} for QB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
344 |
print(f"Need {rb_rv_index} for RB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
@@ -411,18 +374,8 @@ def assign_vorp(frame: pd.DataFrame, halfPpr_rv: dict, custom_rv: dict, league_s
|
|
411 |
vorp_frame['halfPpr_vorp_rank'] = vorp_frame['halfPpr_VORP'].rank(method='max', ascending=False)
|
412 |
vorp_frame['custom_vorp_rank'] = vorp_frame['custom_VORP'].rank(method='max', ascending=False)
|
413 |
vorp_frame['vorp_diff'] = vorp_frame['halfPpr_vorp_rank'] - vorp_frame['custom_vorp_rank']
|
414 |
-
|
415 |
-
# Handle both nested and flat dictionary structures
|
416 |
for positions in ['QB', 'RB', 'WR', 'TE']:
|
417 |
-
|
418 |
-
# User configuration (flat structure)
|
419 |
-
limiter = pos_vorp_limiters[positions]
|
420 |
-
else:
|
421 |
-
# Default configuration (nested structure)
|
422 |
-
limiter = pos_vorp_limiters[league_settings['TYPE']][positions]
|
423 |
-
|
424 |
-
vorp_frame.loc[vorp_frame['Pos'] == positions, 'Rank_Adjust'] = (vorp_frame['Rank'] - (vorp_frame['vorp_diff'] * limiter)).astype(float)
|
425 |
-
|
426 |
vorp_frame['custom_rank'] = vorp_frame['Rank_Adjust'].rank(method='first', ascending=True)
|
427 |
|
428 |
print(vorp_frame.sort_values(by='custom_vorp_rank', ascending=True).head(50))
|
|
|
273 |
wr_base = league_settings['WR'] * league_settings['TEAMS']
|
274 |
te_base = league_settings['TE'] * league_settings['TEAMS']
|
275 |
|
276 |
+
qb_rv_index = math.ceil((qb_base) * flex_multipliers[league_settings['TYPE']]['QB'])
|
277 |
+
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['RB'])) * flex_multipliers[league_settings['TYPE']]['RB'])
|
278 |
+
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['WR'])) * flex_multipliers[league_settings['TYPE']]['WR'])
|
279 |
+
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['TE'])) * flex_multipliers[league_settings['TYPE']]['TE'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
|
281 |
print(f"Need {qb_rv_index} for QB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
282 |
print(f"Need {rb_rv_index} for RB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
|
|
298 |
wr_base = league_settings['WR'] * league_settings['TEAMS']
|
299 |
te_base = league_settings['TE'] * league_settings['TEAMS']
|
300 |
|
301 |
+
qb_rv_index = math.ceil(qb_base * flex_multipliers[league_settings['TYPE']]['QB'])
|
302 |
+
rb_rv_index = math.ceil((rb_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['RB'])) * flex_multipliers[league_settings['TYPE']]['RB'])
|
303 |
+
wr_rv_index = math.ceil((wr_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['WR'])) * flex_multipliers[league_settings['TYPE']]['WR'])
|
304 |
+
te_rv_index = math.ceil((te_base + ((league_settings['TEAMS'] * league_settings['FLEX']) * flex_percentiles[league_settings['TYPE']]['TE'])) * flex_multipliers[league_settings['TYPE']]['TE'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
|
306 |
print(f"Need {qb_rv_index} for QB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
307 |
print(f"Need {rb_rv_index} for RB in {league_settings['TEAMS']} teams with type {league_settings['TYPE']}")
|
|
|
374 |
vorp_frame['halfPpr_vorp_rank'] = vorp_frame['halfPpr_VORP'].rank(method='max', ascending=False)
|
375 |
vorp_frame['custom_vorp_rank'] = vorp_frame['custom_VORP'].rank(method='max', ascending=False)
|
376 |
vorp_frame['vorp_diff'] = vorp_frame['halfPpr_vorp_rank'] - vorp_frame['custom_vorp_rank']
|
|
|
|
|
377 |
for positions in ['QB', 'RB', 'WR', 'TE']:
|
378 |
+
vorp_frame.loc[vorp_frame['Pos'] == positions, 'Rank_Adjust'] = (vorp_frame['Rank'] - (vorp_frame['vorp_diff'] * pos_vorp_limiters[league_settings['TYPE']][positions])).astype(float)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
vorp_frame['custom_rank'] = vorp_frame['Rank_Adjust'].rank(method='first', ascending=True)
|
380 |
|
381 |
print(vorp_frame.sort_values(by='custom_vorp_rank', ascending=True).head(50))
|