"""Implements the Atomic-VAEP framework. Attributes ---------- xfns_default : list(callable) The default VAEP features. """ from typing import Optional import socceraction.atomic.spadl as spadlcfg from socceraction.vaep.base import VAEP from . import features as fs from . import formula as vaep from . import labels as lab xfns_default = [ fs.actiontype, fs.actiontype_onehot, fs.bodypart, fs.bodypart_onehot, fs.time, fs.team, fs.time_delta, fs.location, fs.polar, fs.movement_polar, fs.direction, fs.goalscore, ] class AtomicVAEP(VAEP): """ An implementation of the VAEP framework for atomic actions. In contrast to the original VAEP framework [1]_ this extension distinguishes the contribution of the player who initiates the action (e.g., gives the pass) and the player who completes the action (e.g., receives the pass) [2]_. Parameters ---------- xfns : list List of feature transformers (see :mod:`socceraction.atomic.vaep.features`) used to describe the game states. Uses :attr:`~socceraction.vaep.base.xfns_default` if None. nb_prev_actions : int, default=3 Number of previous actions used to decscribe the game state. See Also -------- :class:`socceraction.vaep.VAEP` : Implementation of the original VAEP framework. References ---------- .. [1] Tom Decroos, Lotte Bransen, Jan Van Haaren, and Jesse Davis. "Actions speak louder than goals: Valuing player actions in soccer." In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp. 1851-1861. 2019. .. [2] Tom Decroos, Pieter Robberechts and Jesse Davis. "Introducing Atomic-SPADL: A New Way to Represent Event Stream Data". DTAI Sports Analytics Blog. https://dtai.cs.kuleuven.be/sports/blog/introducing-atomic-spadl:-a-new-way-to-represent-event-stream-data # noqa May 2020. """ _spadlcfg = spadlcfg _lab = lab _fs = fs _vaep = vaep def __init__( self, xfns: Optional[list[fs.FeatureTransfomer]] = None, nb_prev_actions: int = 3, ) -> None: xfns = xfns_default if xfns is None else xfns super().__init__(xfns, nb_prev_actions)