I’ve added support for BigDataBowl data. The implementation of the `AmericanFootballGraphConverter` converter uses a different approach than `SoccerGraphConverter` (previously `GraphConverter`). Since it relies on **Polars** instead of **Kloppy**.
The API works in a very similar manner, but some parameters are different between `AmericanFootballGraphConverter` and `SoccerGraphConverter` both because the sports are fundamentally different and because the data comes from different sources.
These differences can be seen in [Graphs FAQ, Section B](https://github.com/UnravelSports/unravelsports/blob/feat/big-data-bowl/examples/graphs_faq.md)
All computed **node features** and **edge features** can be found in [Graphs FAQ, Section C](https://github.com/UnravelSports/unravelsports/blob/feat/big-data-bowl/examples/graphs_faq.md). Compared to the soccer implementation we now also include, for example:
- Height and weight
- Is Quarterback
- Acceleration
- Body Orientation
Additionally we provide a `BigDataBowlDataset` class to easily load all relevant data sources into the `AmericanFootballGraphConverter` via the `dataset` parameter, and to add labels and dummy graph ids. The `BigDataBowlDataset` requires 3 parameters, namely:
- tracking_file_path (ie. week1.csv)
- players_file_path (ie. players.csv)
- plays_file_path (ie. plays.csv)
This PR also includes tests for the American Football implementation and some other minor fixes for the Soccer implementation. As well as an abstraction from `GraphConverter` to `DefaultGraphConverter` which is now inherited by both `AmericanFootballGraphConverter` and `SoccerGraphConverter`.
Under the hood the same logic follow for `DefaultGraphSettings`.
The minor fixes include:
- Renaming AdjacencyMatrixType.DENSE_ATTACKING_PLAYERS to AdjacencyMatrixType.DENSE_AP
- Renaming AdjacencyMatrixType.DENSE_DEFENSIVE_PLAYERS to AdjacencyMatrixType.DENSE_DP