# -*- coding: utf-8 -*-
"""Contains collection of error based deleters"""
from typing import Sequence
import numpy as np
from ..base import Property
from .base import Deleter
""" Track deleter based on covariance matrix size.
Deletes tracks whose state covariance matrix (more specifically its trace)
exceeds a given threshold.
covar_trace_thresh: float = Property(doc="Covariance matrix trace threshold")
mapping: Sequence[int] = Property(default=None,
doc="Track state vector indices whose corresponding "
"covariances' sum is to be considered. Defaults to"
"None, whereby the entire track covariance trace is "
[docs] def check_for_deletion(self, track, **kwargs):
"""Check if a given track should be deleted
A track is flagged for deletion if the trace of its state covariance
matrix is higher than :py:attr:`~covar_trace_thresh`.
track : Track
A track object to be checked for deletion.
`True` if track should be deleted, `False` otherwise.
diagonals = np.diag(track.state.covar)
track_covar_trace = np.sum(diagonals[self.mapping])
track_covar_trace = np.sum(diagonals)
if track_covar_trace > self.covar_trace_thresh: