Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ This package currently supports:
- ⚽ 🏈 [**Polars DataFrame Conversion**](#polars-dataframes)
- ⚽ 🏈 [**Graph Neural Network**](#graph-neural-networks) Training, Graph Conversion and Prediction <small>
[[🔗 Bekkers & Sahasrabudhe (2023)](https://arxiv.org/pdf/2411.17450)]</small>
- ⚽ [**Pressing Intensity**](#pressing-intensity)
- ⚽ [**Pressing Intensity**](#⚽-pressing-intensity)
<small>[[🔗 Bekkers (2024)](https://arxiv.org/pdf/2501.04712)]</small>
- ⚽ [**Formation and Position Identification (EFPI)**](#pressing-intensity)
- ⚽ [**Formation and Position Identification (EFPI)**](#⚽-formation-and-position-identification)
<small>[[🔗 Bekkers (2025)](https://arxiv.org/pdf/2506.23843)]</small>

🌀 Features
Expand Down Expand Up @@ -87,7 +87,7 @@ converter = SoccerGraphConverter(

---

### **Pressing Intensity**
### **Pressing Intensity**

Compute [**Pressing Intensity**](https://arxiv.org/abs/2501.04712) for a whole game (or segment) of Soccer tracking data.

Expand Down Expand Up @@ -116,7 +116,7 @@ model.fit(

---

### **Formation and Position Identification**
### **Formation and Position Identification**

Compute [Elastic Formation and Position Identification, **EFPI**](https://arxiv.org/pdf/2506.23843) for individual frames, possessions, periods or specific time intervals for Soccer.

Expand All @@ -137,6 +137,8 @@ model.fit(
)
```

![Elastic Formation and Position Identification Example](assets/efpi.png)

⌛ ***More to come soon...!***

🌀 Quick Start
Expand Down Expand Up @@ -234,6 +236,20 @@ If you use this repository for any educational purposes, research, project etc.,
</details>
<br>

📎 [Bekkers, J. (2025). EFPI: Elastic Formation and Position Identification in Football (Soccer) using Template Matching and Linear Assignment. arXiv preprint arXiv:2506.23843.](https://arxiv.org/pdf/2506.23843)
<details>
<summary>BibTex</summary>
<pre>
@article{bekkers2025efpi,
title={EFPI: Elastic Formation and Position Identification in Football (Soccer) using Template Matching and Linear Assignment},
author={Bekkers, Joris},
journal={arXiv preprint arXiv:2506.23843},
year={2025}
}
</pre>
</details>
<br>

🌀 Social Media
----
[<img alt="alt_text" width="40px" src="https://upload.wikimedia.org/wikipedia/commons/c/ca/LinkedIn_logo_initials.png"/>](https://www.linkedin.com/in/joris-bekkers-33138288/)
Expand Down
4 changes: 3 additions & 1 deletion unravel/soccer/dataset/kloppy_polars.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,9 @@ def load(
if self._infer_goalkeepers:
df = self.__infer_goalkeepers(df)

self.data = df
self.data = df.unique(
[Column.OBJECT_ID, Column.FRAME_ID, Column.PERIOD_ID]
).sort([Column.FRAME_ID, Column.PERIOD_ID, Column.OBJECT_ID])
return self

def add_dummy_labels(
Expand Down