Models

class stonesoup.models.base.Model[source]

Bases: Base

Model type

Base/Abstract class for all models.

abstract property ndim: int

Number of dimensions of model

abstract function(state: State, noise: bool | ndarray = False, **kwargs) StateVector | 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

jacobian(state, **kwargs)[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)

abstract rvs(num_samples: int = 1, **kwargs) StateVector | 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) Probability | 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

logpdf(state1: State, state2: State, **kwargs) float | ndarray[source]

Model log pdf/likelihood evaluation function

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

Parameters:
Returns:

The log likelihood of state1, given state2

Return type:

float or ndarray

class stonesoup.models.base.LinearModel[source]

Bases: Model

LinearModel class

Base/Abstract class for all linear models

abstract matrix(**kwargs) ndarray[source]

Model matrix

function(state: State, noise: bool | ndarray = False, **kwargs) StateVector | 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) 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.ReversibleModel[source]

Bases: Model

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) 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: Model

TimeVariantModel class

Base/Abstract class for all time-variant models

class stonesoup.models.base.TimeInvariantModel[source]

Bases: Model

TimeInvariantModel class

Base/Abstract class for all time-invariant models

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

Bases: Model

GaussianModel class

Base/Abstract class for all Gaussian models

Parameters:

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

seed: int | None

Seed for random number generation

rvs(num_samples: int = 1, random_state=None, **kwargs) StateVector | 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) Probability | 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

logpdf(state1: State, state2: State, **kwargs) float | ndarray[source]

Model log 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 log likelihood of state1, given state2

Return type:

float or ndarray

abstract covar(**kwargs) CovarianceMatrix[source]

Model covariance