Add OPS to pitching and batting plays
This commit is contained in:
parent
505d0a1a8a
commit
17e9ed100a
@ -117,7 +117,8 @@ class PlayList(BaseModel):
|
|||||||
|
|
||||||
@router.get('') # Want to add runner parameters
|
@router.get('') # Want to add runner parameters
|
||||||
async def get_plays(
|
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),
|
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),
|
batting_order: list = Query(default=None), starting_outs: list = Query(default=None),
|
||||||
batter_pos: list = Query(default=None), catcher_id: 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
|
sum_wpa = 0
|
||||||
|
|
||||||
tot_ab = x.sum_ab if x.sum_ab > 0 else 1
|
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({
|
return_stats['stats'].append({
|
||||||
'player': x.batter_id if short_output else model_to_dict(x.batter, recurse=False),
|
'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),
|
'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,
|
'bplo': x.sum_bplo,
|
||||||
'wpa': x.sum_wpa + sum_wpa,
|
'wpa': x.sum_wpa + sum_wpa,
|
||||||
'avg': x.sum_hit / tot_ab,
|
'avg': x.sum_hit / tot_ab,
|
||||||
'obp': (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa,
|
'obp': obp,
|
||||||
'slg': (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
|
'slg': slg,
|
||||||
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / tot_ab,
|
'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) +
|
'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)
|
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:
|
for x in pit_plays:
|
||||||
this_dec = all_dec.where(Decision.pitcher == x.pitcher)
|
this_dec = all_dec.where(Decision.pitcher == x.pitcher)
|
||||||
tot_outs = x.sum_outs if x.sum_outs > 0 else 1
|
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({
|
return_stats['stats'].append({
|
||||||
'player': x.pitcher_id if short_output else model_to_dict(x.pitcher, recurse=False),
|
'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),
|
'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,
|
'era': (x.sum_erun * 27) / tot_outs,
|
||||||
'whip': ((x.sum_bb + x.sum_hit + x.sum_ibb) * 3) / tot_outs,
|
'whip': ((x.sum_bb + x.sum_hit + x.sum_ibb) * 3) / tot_outs,
|
||||||
'avg': x.sum_hit / x.sum_ab,
|
'avg': x.sum_hit / x.sum_ab,
|
||||||
'obp': (x.sum_hit + x.sum_bb + x.sum_hbp + x.sum_ibb) / x.sum_pa,
|
'obp': obp,
|
||||||
'slg': (x.sum_hr * 4 + x.sum_triple * 3 + x.sum_double * 2 +
|
'slg': slg,
|
||||||
(x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr)) / x.sum_ab,
|
'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) +
|
'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)
|
1.27 * x.sum_double + 1.62 * x.sum_triple + 2.1 * x.sum_hr) / (x.sum_pa - x.sum_ibb)
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user