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
Files changed (1) hide show
  1. 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
- # Check if we're using user configuration (flat structure) or default configuration (nested structure)
277
- # User configuration will have direct position keys in flex_multipliers
278
- if isinstance(flex_multipliers, dict) and 'QB' in flex_multipliers:
279
- # User configuration (flat structure)
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
- # Check if we're using user configuration (flat structure) or default configuration (nested structure)
321
- if isinstance(flex_multipliers, dict) and 'QB' in flex_multipliers:
322
- # User configuration (flat structure)
323
- qb_rv_index = math.ceil(qb_base * flex_multipliers['QB'])
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
- if 'QB' in pos_vorp_limiters:
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))