|
"""Schema for SPADL actions.""" |
|
|
|
from typing import Any, Optional |
|
|
|
import pandera as pa |
|
from pandera.typing import Series |
|
|
|
from . import config as spadlconfig |
|
|
|
|
|
class SPADLSchema(pa.SchemaModel): |
|
"""Definition of a SPADL dataframe.""" |
|
|
|
game_id: Series[Any] = pa.Field() |
|
original_event_id: Series[Any] = pa.Field(nullable=True) |
|
action_id: Series[int] = pa.Field() |
|
period_id: Series[int] = pa.Field(ge=1, le=5) |
|
time_seconds: Series[float] = pa.Field(ge=0) |
|
team_id: Series[Any] = pa.Field() |
|
player_id: Series[Any] = pa.Field() |
|
start_x: Series[float] = pa.Field(ge=0, le=spadlconfig.field_length) |
|
start_y: Series[float] = pa.Field(ge=0, le=spadlconfig.field_width) |
|
end_x: Series[float] = pa.Field(ge=0, le=spadlconfig.field_length) |
|
end_y: Series[float] = pa.Field(ge=0, le=spadlconfig.field_width) |
|
bodypart_id: Series[int] = pa.Field(isin=spadlconfig.bodyparts_df().bodypart_id) |
|
bodypart_name: Optional[Series[str]] = pa.Field(isin=spadlconfig.bodyparts_df().bodypart_name) |
|
type_id: Series[int] = pa.Field(isin=spadlconfig.actiontypes_df().type_id) |
|
type_name: Optional[Series[str]] = pa.Field(isin=spadlconfig.actiontypes_df().type_name) |
|
result_id: Series[int] = pa.Field(isin=spadlconfig.results_df().result_id) |
|
result_name: Optional[Series[str]] = pa.Field(isin=spadlconfig.results_df().result_name) |
|
|
|
class Config: |
|
strict = True |
|
coerce = True |
|
|