import datetime
from abc import abstractmethod
from ..base import Base
from ..types.detection import Detection
from ..types.track import Track
[docs]
class Initiator(Base):
"""Initiator base class
Creates zero or more tracks based on provided detections.
"""
[docs]
@abstractmethod
def initiate(self, detections: set[Detection], timestamp: datetime.datetime,
**kwargs) -> set[Track]:
"""Generate tracks from detections.
Parameters
----------
detections : set of :class:`~.Detection`
Detections used to generate set of tracks
timestamp: datetime.datetime
Current timestamp
Returns
-------
: set of :class:`~.Track`
Tracks generated from detections
"""
raise NotImplementedError
[docs]
class GaussianInitiator(Initiator):
"""Gaussian Initiator base class
Base class for initiator's which initialises tracks with a
:class:`~.GaussianState`
"""
[docs]
class ParticleInitiator(Initiator):
"""Particle Initiator base class
Base class for initiator's which initialises tracks with a
:class:`~.ParticleState`
"""