# -*- coding: utf-8 -*-
from typing import Sequence
from .base import Type
from .hypothesis import Hypothesis, CompositeHypothesis
from .mixture import GaussianMixture
from .state import CreatableFromState, CompositeState
from .state import State, GaussianState, ParticleState, SqrtGaussianState, \
InformationState, CategoricalState
from ..base import Property
[docs]class Update(Type, CreatableFromState):
""" Update type
The base update class. Updates are returned by :class:'~.Updater' objects
and contain the information that was used to perform the updating"""
hypothesis: Hypothesis = Property(doc="Hypothesis used for updating")
[docs]class StateUpdate(Update, State):
""" StateUpdate type
Most simple state update type, where everything only has time
and a state vector. Requires a prior state that was updated,
and the hypothesis used to update the prior.
"""
[docs]class GaussianStateUpdate(Update, GaussianState):
""" GaussianStateUpdate type
This is a simple Gaussian state update object, which, as the name
suggests, is described by a Gaussian distribution.
"""
[docs]class SqrtGaussianStateUpdate(Update, SqrtGaussianState):
""" SqrtGaussianStateUpdate type
This is equivalent to a Gaussian state update object, but with the
covariance of the Gaussian distribution stored in matrix square root
form.
"""
[docs]class GaussianMixtureUpdate(Update, GaussianMixture):
""" GaussianMixtureUpdate type
This is a Gaussian mixture update object, which, as the name
suggests, is described by a Gaussian mixture.
"""
[docs]class ParticleStateUpdate(Update, ParticleState):
"""ParticleStateUpdate type
This is a simple Particle state update object.
"""
[docs]class CategoricalStateUpdate(Update, CategoricalState):
"""Categorical state prediction type"""
[docs]class CompositeUpdate(Update, CompositeState):
"""Composite update type
Composition of :class:`~.Update`.
"""
sub_states: Sequence[Update] = Property(
doc="Sequence of sub-updates comprising the composite update. All sub-updates must have "
"matching timestamp. Must not be empty.")
hypothesis: CompositeHypothesis = Property(doc="Hypothesis used for updating")