correlator

Correlate measurement time series with a population of objects to find the best match.

Currently only works for Mono-static measurements.

# TODO: Assume a uniform prior distribution over population index, posterior distribution is the probability of what object generated the data. Probability comes from measurement covariance.

Module summary

Functions

correlate(measurements, population[, …])

Given a mono-static measurement of ranges and rage-rates, a radar model and a population: correlate measurements with population.

generate_measurements(state_ecef, rx_ecef, …)

residual_distribution_metric(t, r, v, r_ref, …)

Using the simulated and the measured ranges and rage-rates calculate a de-correlation metric.

Contents

Functions

sorts.correlator.correlate(measurements, population, metric=<function residual_distribution_metric>, metric_reduce=<function <lambda>>, forward_model=<function generate_measurements>, variables=['r', 'v'], n_closest=1, profiler=None, logger=None, MPI=False)[source]

Given a mono-static measurement of ranges and rage-rates, a radar model and a population: correlate measurements with population.

Parameters
  • measurements (list) – List of dictionaries that contains measurement data. Contents are described below.

  • population (Population) – Population to correlate against.

  • metric (function) – Metric used to correlate measurement and simulated object measurement.

  • metric_reduce (function) – Metric used to correlate measurement and simulated object measurement.

  • forward_model (function) – A pointer to a function that takes in the ecef-state, the rx and tx station ecefs and calculates the observed variables return as a tuple.

  • variables (list) – The data variables recorded by the system.

  • n_closest (int) – Number of closest matches to save.

  • profiler (Profiler) – Profiler instance for checking function performance.

  • logger (logging.Logger) – Logger instance for logging the execution of the function.

  • MPI (bool) – If True use internal parallelization with MPI to calculate correlation. Turn to False to externally parallelize with MPI.

Measurement data:

Each entry in the input measurements list must be a dictionary that contains the following fields:
  • ‘t’: [numpy.ndarray] Times relative epoch in seconds

  • ‘epoch’: [astropy.Time] epoch for measurements

  • ‘tx’: [sorts.TX] Pointer to the TX station

  • ‘rx’: [sorts.RX] Pointer to the RX station

Then it will contain a entry for each name in the variables list. By default this is
  • ‘r’: [numpy.ndarray] Two-way ranges in meters

  • ‘v’: [numpy.ndarray] Two-way range-rates in meters per second

sorts.correlator.generate_measurements(state_ecef, rx_ecef, tx_ecef)[source]
sorts.correlator.residual_distribution_metric(t, r, v, r_ref, v_ref)[source]

Using the simulated and the measured ranges and rage-rates calculate a de-correlation metric.

Parameters
  • t (numpy.ndarray) – Times in seconds corresponding to measurement and object simulated data.

  • r (numpy.ndarray) – Measured ranges in meters

  • v (numpy.ndarray) – Measured rage-rates in meters per second

  • r_ref (numpy.ndarray) – Object simulated ranges in meters

  • v_ref (numpy.ndarray) – Object simulated rage-rates in meters per second

Returns

Metric value, smaller values indicate better match.

Return type

float