dstl / Stone-Soup

A software project to provide the target tracking community with a framework for the development and testing of tracking algorithms.
https://stonesoup.rtfd.io
MIT License
412 stars 139 forks source link

Add Nonparametric PDA and gate out non valid measurements #636

Closed sdhiscocks closed 2 years ago

sdhiscocks commented 2 years ago

This adds the ability to use nonparametric PDA for clutter spatial density, where it is estimated based on assumption that measurements within a defined validation region represent the clutter level.

This change also gates out non valid measurements by default, similar to the behaviour in the DistanceHypothesier, and per description in original PDA paper.

codecov[bot] commented 2 years ago

Codecov Report

Merging #636 (323f87a) into main (ee4ad3a) will increase coverage by 0.02%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #636      +/-   ##
==========================================
+ Coverage   94.48%   94.50%   +0.02%     
==========================================
  Files         171      171              
  Lines        8789     8822      +33     
  Branches     1705     1711       +6     
==========================================
+ Hits         8304     8337      +33     
  Misses        350      350              
  Partials      135      135              
Flag Coverage Δ
integration 69.44% <72.97%> (+0.04%) :arrow_up:
unittests 90.80% <100.00%> (+0.03%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
stonesoup/hypothesiser/probability.py 100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

sglvladi commented 2 years ago

Looks good overall 👍 Added some minor notes on making the code more readable.

Note on earlier discussion: I don't think we can avoid gating when doing the non-parametric version. We could avoid it for the parametric one, but then it would be confusing to say we do gating in one case but not the other.