Models

class stonesoup.models.base.Model[source]

Bases: stonesoup.base.Base

Model type

Base/Abstract class for all models.

abstract property ndim: int

Number of dimensions of model

abstract function(state: State, noise: Union[bool, numpy.ndarray] = False, **kwargs) Union[stonesoup.types.array.StateVector, stonesoup.types.array.StateVectors][source]

Model function \(f_k(x(k),w(k))\)

Parameters
  • state (State) – An input state

  • noise (numpy.ndarray or bool) – An externally generated random process noise sample (the default is False, in which case no noise will be added if ‘True’, the output of rvs() is used)

Returns

The StateVector(s) with the model function evaluated.

Return type

StateVector or StateVectors

abstract rvs(num_samples: int = 1, **kwargs) Union[stonesoup.types.array.StateVector, stonesoup.types.array.StateVectors][source]

Model noise/sample generation function

Generates noise samples from the model.

Parameters

num_samples (scalar, optional) – The number of samples to be generated (the default is 1)

Returns

noise – A set of Np samples, generated from the model’s noise distribution.

Return type

2-D array of shape (ndim, num_samples)

abstract pdf(state1: State, state2: State, **kwargs) Union[stonesoup.types.numeric.Probability, numpy.ndarray][source]

Model pdf/likelihood evaluation function

Evaluates the pdf/likelihood of state1, given the state state2 which is passed to function().

Parameters
Returns

The likelihood of state1, given state2

Return type

Probability or ndarray of Probability

class stonesoup.models.base.LinearModel[source]

Bases: stonesoup.models.base.Model

LinearModel class

Base/Abstract class for all linear models

abstract matrix(**kwargs) numpy.ndarray[source]

Model matrix

function(state: State, noise: Union[bool, numpy.ndarray] = False, **kwargs) Union[stonesoup.types.array.StateVector, stonesoup.types.array.StateVectors][source]

Model linear function \(f_k(x(k),w(k)) = F_k(x_k) + w_k\)

Parameters
  • state (State) – An input state

  • noise (numpy.ndarray or bool) – An externally generated random process noise sample (the default is False, in which case no noise will be added if ‘True’, the output of rvs() is added)

Returns

The StateVector(s) with the model function evaluated.

Return type

StateVector or StateVectors

jacobian(state: State, **kwargs) numpy.ndarray[source]

Model jacobian matrix \(H_{jac}\)

Parameters

state (State) – An input state

Returns

The model jacobian matrix evaluated around the given state vector.

Return type

numpy.ndarray of shape (ndim_meas, ndim_state)

class stonesoup.models.base.NonLinearModel[source]

Bases: stonesoup.models.base.Model

NonLinearModel class

Base/Abstract class for all non-linear models

jacobian(state: State, **kwargs) numpy.ndarray[source]

Model Jacobian matrix \(H_{jac}\)

Parameters

state (State) – An input state

Returns

:class:`numpy.ndarray` of shape (attr – The model Jacobian matrix evaluated around the given state vector.

Return type

~ndim_meas, ndim_state)

class stonesoup.models.base.ReversibleModel[source]

Bases: stonesoup.models.base.NonLinearModel

Non-linear model containing sufficient co-ordinate information such that the linear co-ordinate conversions can be calculated from the non-linear counterparts.

Contains an inverse function which computes the reverse of the relevant linear-to-non-linear function

abstract inverse_function(detection: Detection, **kwargs) stonesoup.types.array.StateVector[source]

Takes in the result of the function and computes the inverse function, returning the initial input of the function.

Parameters

detection (Detection) – Input state (non-linear format)

Returns

The linear co-ordinates

Return type

StateVector

class stonesoup.models.base.TimeVariantModel[source]

Bases: stonesoup.models.base.Model

TimeVariantModel class

Base/Abstract class for all time-variant models

class stonesoup.models.base.TimeInvariantModel[source]

Bases: stonesoup.models.base.Model

TimeInvariantModel class

Base/Abstract class for all time-invariant models

class stonesoup.models.base.GaussianModel(seed: Optional[int] = None)[source]

Bases: stonesoup.models.base.Model

GaussianModel class

Base/Abstract class for all Gaussian models

Parameters

seed (Union[int, NoneType], optional) – Seed for random number generation

seed: Optional[int]

Seed for random number generation

rvs(num_samples: int = 1, random_state=None, **kwargs) Union[stonesoup.types.array.StateVector, stonesoup.types.array.StateVectors][source]

Model noise/sample generation function

Generates noise samples from the model.

In mathematical terms, this can be written as:

\[v_t \sim \mathcal{N}(0,Q)\]

where \(v_t =\) noise and \(Q\) = covar.

Parameters

num_samples (scalar, optional) – The number of samples to be generated (the default is 1)

Returns

noise – A set of Np samples, generated from the model’s noise distribution.

Return type

2-D array of shape (ndim, num_samples)

pdf(state1: State, state2: State, **kwargs) Union[stonesoup.types.numeric.Probability, numpy.ndarray][source]

Model pdf/likelihood evaluation function

Evaluates the pdf/likelihood of state1, given the state state2 which is passed to function().

In mathematical terms, this can be written as:

\[p = p(y_t | x_t) = \mathcal{N}(y_t; x_t, Q)\]

where \(y_t\) = state_vector1, \(x_t\) = state_vector2 and \(Q\) = covar.

Parameters
Returns

The likelihood of state1, given state2

Return type

Probability or ndarray of Probability

abstract covar(**kwargs) stonesoup.types.array.CovarianceMatrix[source]

Model covariance