Clutter Models

class stonesoup.models.clutter.ClutterModel(clutter_rate: float = 1.0, distribution: ~typing.Callable = <bound method Generator.uniform of Generator(PCG64)>, dist_params: ~typing.Tuple = ((-200, 200), (-200, 200)), seed: int | ~numpy.random.mtrand.RandomState | None = None)[source]

Bases: Model, ABC

A model for generating sensor clutter (false alarms) according to a specified distribution in the state space relative to the sensor’s position.

Note

Instances of this class do not hold information about the measurement space until immediately before they are called to function. As such, the same ClutterModel object could be used with multiple different MeasurementModel as long as they operate in the same state space.

Parameters:
  • clutter_rate (float, optional) – The average number of clutter points per time step. The actual number is Poisson distributed

  • distribution (Callable, optional) – A function which represents the distribution of the clutter over the measurement space. The function should return a single value (ie, do not use multivariate distributions).

  • dist_params (Tuple, optional) – The required parameters for the clutter distribution function. The length of the list must be equal to the number of state dimensions and should be defined for use in Cartesian space.The default defines the space for a uniform distribution in 2D. The call np.array([self.distribution(*arg) for arg in self.dist_params]) must return a numpy array of length equal to the number of dimensions.

  • seed (Union[int, numpy.random.mtrand.RandomState, NoneType], optional) – Seed or state for random number generation. If defined as an integer, it will be used to create a numpy RandomState. Or it can be defined directly as a RandomState (useful if you want to pass one of the random state’s functions as the distribution).

clutter_rate: float

The average number of clutter points per time step. The actual number is Poisson distributed

distribution: Callable

A function which represents the distribution of the clutter over the measurement space. The function should return a single value (ie, do not use multivariate distributions).

dist_params: Tuple

The required parameters for the clutter distribution function. The length of the list must be equal to the number of state dimensions and should be defined for use in Cartesian space.The default defines the space for a uniform distribution in 2D. The call np.array([self.distribution(*arg) for arg in self.dist_params]) must return a numpy array of length equal to the number of dimensions.

seed: int | RandomState | None

Seed or state for random number generation. If defined as an integer, it will be used to create a numpy RandomState. Or it can be defined directly as a RandomState (useful if you want to pass one of the random state’s functions as the distribution).

function(ground_truths: Set[GroundTruthState], **kwargs) Set[Clutter][source]

Use the defined distribution and parameters to create simulated clutter for the current time step. Return this clutter to the calling sensor so that it can be added to the measurements.

Parameters:

ground_truths (a set of GroundTruthState) – The truth states which exist at this time step.

Returns:

The simulated clutter.

Return type:

set of Clutter

property ndim: int

Return the number of measurement dimensions or, if a measurement model has not yet been assigned, the number of state dimensions.

jacobian(state, **kwargs)

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)

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

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

rvs(num_samples: int = 1, **kwargs) StateVector | StateVectors[source]

Must be implemented to properly inherit the parent Model.

pdf(state1: State, state2: State, **kwargs) Probability | ndarray[source]

Must be implemented to properly inherit the parent Model.