Source code for stonesoup.predictor.base

# -*- coding: utf-8 -*-
"""Base classes for Stone Soup Predictor interface"""
from abc import abstractmethod

from ..base import Base, Property
from ..models.transition import TransitionModel
from ..models.control import ControlModel


[docs]class Predictor(Base): r"""Predictor base class A predictor is used to predict a new :class:`~.State` given a prior :class:`~.State` and a :class:`~.TransitionModel`. In addition, a :class:`~.ControlModel` may be used to model an external influence on the state. .. math:: \mathbf{x}_{k|k-1} = f_k(\mathbf{x}_{k-1}, \mathbf{\nu}_k) + b_k(\mathbf{u}_k, \mathbf{\eta}_k) where :math:`\mathbf{x}_{k-1}` is the prior state, :math:`f_k(\mathbf{x}_{k-1})` is the transition function, :math:`\mathbf{u}_k` the control vector, :math:`b_k(\mathbf{u}_k)` the control input and :math:`\mathbf{\nu}_k` and :math:`\mathbf{\eta}_k` the transition and control model noise respectively. """ transition_model: TransitionModel = Property(doc="transition model") control_model: ControlModel = Property(default=None, doc="control model")
[docs] @abstractmethod def predict(self, prior, timestamp=None, **kwargs): """The prediction function itself Parameters ---------- prior : :class:`~.State` The prior state timestamp : :class:`datetime.datetime`, optional Time at which the prediction is made (used by the transition model) Returns ------- : :class:`~.StatePrediction` State prediction """ raise NotImplementedError