Exemple #1
0
 def get_invalid_pfx_table(self):
     invalid_pfx_error_data = []
     for pitch_app_dict in self.patch_invalid_pfx.invalid_pfx_map.values():
         for inning_id, inning_dict in pitch_app_dict.items():
             for at_bat_id, ab_dict in inning_dict.items():
                 ab_val = validate_at_bat_id(at_bat_id).value
                 ab_data = ab_dict["at_bat_data"]
                 pfx_audit = ab_data["at_bat_pitchfx_audit"]
                 pitch_numbers = sorted(pfx["ab_count"]
                                        for pfx in ab_data["pitchfx"])
                 pitch_count = max(pfx["ab_total"]
                                   for pfx in ab_data["pitchfx"])
                 error_data = {
                     "inning_id": inning_id[-5:],
                     "pitcher":
                     f'{ab_data["pitcher_name"]} ({ab_val["pitcher_team"]})',
                     "batter":
                     f'{ab_data["batter_name"]} ({ab_val["batter_team"]})',
                     "pitch_count": pitch_count,
                     "pfx_count": pfx_audit["pitch_count_pitchfx"],
                     "pfx_ab_numbers": pitch_numbers,
                 }
                 invalid_pfx_error_data.append(error_data)
     return [
         "The table below shows the invalid PitchFx data:\n",
         tabulate(invalid_pfx_error_data, headers="keys"),
     ]
Exemple #2
0
 def get_invalid_pfx(self, at_bat_id):
     ab_dict = validate_at_bat_id(at_bat_id).value
     pitch_app_id = ab_dict["pitch_app_id"]
     inning_id = ab_dict["inning_id"]
     patch_pfx = self.invalid_pfx_map[pitch_app_id][inning_id][at_bat_id][
         "at_bat_data"]
     return (Result.Ok(patch_pfx) if patch_pfx else Result.Fail(
         f"Error! Failed to retrieve invalid pfx data for at_bat_id: {at_bat_id}"
     ))
Exemple #3
0
def get_play_by_play_for_at_bat(
    request: Request, response: Response, at_bat_id: str, app: Vigorish = Depends(get_vig_app)
):
    result = validate_at_bat_id(at_bat_id)
    if result.failure:
        raise HTTPException(status_code=int(HTTPStatus.BAD_REQUEST), detail=f"At Bat ID: {at_bat_id} is invalid")
    game_id = result.value["game_id"]
    game_data = crud.get_game_data(game_id, app)
    at_bat_data = game_data.get_pbp_for_at_bat(at_bat_id)
    if not at_bat_data:
        raise HTTPException(status_code=int(HTTPStatus.NOT_FOUND), detail="No results found")
    return at_bat_data
Exemple #4
0
 def get_event_dict(self, event):
     ab_dict = validate_at_bat_id(event["at_bat_id"]).value
     return {
         "source": "valid_at_bat",
         "at_bat_id": event["at_bat_id"],
         "inning_id": event["inning_id"][-5:],
         "pitcher_id": event["pitcher_id_mlb"],
         "pitcher": f'{event["pitcher_name"]} ({ab_dict["pitcher_team"]})',
         "batter_id": event["batter_id_mlb"],
         "batter": f'{event["batter_name"]} ({ab_dict["batter_team"]})',
         "pitch_count": event["at_bat_pitchfx_audit"]["pitch_count_bbref"],
         "missing_pfx":
         event["at_bat_pitchfx_audit"]["missing_pitch_numbers"],
         "invalid_pfx": [],
     }
Exemple #5
0
def get_all_pfx_data_for_at_bat(request: Request,
                                response: Response,
                                at_bat_id: str,
                                app: Vigorish = Depends(get_vig_app)):
    result = validate_at_bat_id(at_bat_id)
    if result.failure:
        raise HTTPException(status_code=int(HTTPStatus.NOT_FOUND),
                            detail="No results found")
    at_bat_dict = result.value
    game_data = crud.get_game_data(at_bat_dict["game_id"], app)
    pfx = game_data.get_pfx_for_at_bat(at_bat_id)
    if not pfx:
        raise HTTPException(status_code=int(HTTPStatus.NOT_FOUND),
                            detail="No results found")
    return [convert_pfx_times_to_est(p) for p in pfx]
Exemple #6
0
 def get_player_ids_from_at_bat_id(cls, db_session, at_bat_id):
     at_bat_dict = validate_at_bat_id(at_bat_id).value
     pitcher_id_mlb = int(at_bat_dict["pitcher_mlb_id"])
     batter_id_mlb = int(at_bat_dict["batter_mlb_id"])
     pitcher_id = cls.find_by_mlb_id(db_session, pitcher_id_mlb)
     batter_id = cls.find_by_mlb_id(db_session, batter_id_mlb)
     return {
         "pitcher_id_bbref": pitcher_id.bbref_id,
         "pitcher_id_mlb": pitcher_id_mlb,
         "pitcher_id_db": pitcher_id.db_player_id,
         "pitcher_name": pitcher_id.mlb_name,
         "pitcher_team": at_bat_dict["pitcher_team"],
         "batter_id_bbref": batter_id.bbref_id,
         "batter_id_mlb": batter_id_mlb,
         "batter_id_db": batter_id.db_player_id,
         "batter_name": batter_id.mlb_name,
         "batter_team": at_bat_dict["batter_team"],
     }
Exemple #7
0
 def get_batter_name_and_team(self, at_bat_data):
     ab_dict = validate_at_bat_id(at_bat_data["at_bat_id"]).value
     return f'{at_bat_data["batter_name"]} ({ab_dict["batter_team"]})'