Add OPS to pitching and batting plays

This commit is contained in:
Cal Corum 2023-08-07 10:17:35 -05:00
parent 505d0a1a8a
commit 17e9ed100a

View File

@ -117,7 +117,8 @@ class PlayList(BaseModel):
@router.get('') # Want to add runner parameters
async def get_plays(
game_id: list = Query(default=None), batter_id: list = Query(default=None),
game_id: list = Query(default=None), batter_id: list = Query(default=None), season: list = Query(default=None),
week: list = Query(default=None),
pitcher_id: list = Query(default=None), obc: list = Query(default=None), inning: list = Query(default=None),
batting_order: list = Query(default=None), starting_outs: list = Query(default=None),
batter_pos: list = Query(default=None), catcher_id: list = Query(default=None),
@ -335,6 +336,9 @@ async def get_batting_totals(
sum_wpa = 0
tot_ab = x.sum_ab if x.sum_ab > 0 else 1
obp = (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa
slg = (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / tot_ab
return_stats['stats'].append({
'player': x.batter_id if short_output else model_to_dict(x.batter, recurse=False),
'team': x.batter_team_id if short_output else model_to_dict(x.batter_team, recurse=False),
@ -360,9 +364,9 @@ async def get_batting_totals(
'bplo': x.sum_bplo,
'wpa': x.sum_wpa + sum_wpa,
'avg': x.sum_hit / tot_ab,
'obp': (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa,
'slg': (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / tot_ab,
'obp': obp,
'slg': slg,
'ops': obp + slg,
'woba': (.69 * x.sum_bb + .72 * x.sum_hbp + .89 * (x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr) +
1.27 * x.sum_double + 1.62 * x.sum_triple + 2.1 * x.sum_hr) / (x.sum_pa - x.sum_ibb)
})
@ -464,6 +468,9 @@ async def get_pitching_totals(
for x in pit_plays:
this_dec = all_dec.where(Decision.pitcher == x.pitcher)
tot_outs = x.sum_outs if x.sum_outs > 0 else 1
obp = (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa
slg = (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / x.sum_ab
return_stats['stats'].append({
'player': x.pitcher_id if short_output else model_to_dict(x.pitcher, recurse=False),
'team': x.pitcher_team_id if short_output else model_to_dict(x.pitcher_team, recurse=False),
@ -503,9 +510,9 @@ async def get_pitching_totals(
'era': (x.sum_erun * 27) / tot_outs,
'whip': ((x.sum_bb + x.sum_hit + x.sum_ibb) * 3) / tot_outs,
'avg': x.sum_hit / x.sum_ab,
'obp': (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa,
'slg': (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / x.sum_ab,
'obp': obp,
'slg': slg,
'ops': obp + slg,
'woba': (.69 * x.sum_bb + .72 * x.sum_hbp + .89 * (x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr) +
1.27 * x.sum_double + 1.62 * x.sum_triple + 2.1 * x.sum_hr) / (x.sum_pa - x.sum_ibb)
})