"""SDIF-ish PRI histogram from a TOA list. scratch (the classic before the RNN)."""
import numpy as np

def pri_candidates(toa, bins=200, top=5):
    toa = np.sort(np.asarray(toa, float))
    diffs = []
    for lag in range(1, 4):
        diffs.extend((toa[lag:] - toa[:-lag]).tolist())
    diffs = np.array(diffs)
    h, edges = np.histogram(diffs, bins=bins)
    idx = np.argsort(h)[-top:][::-1]
    return [round(0.5*(edges[i]+edges[i+1]), 6) for i in idx]

if __name__ == "__main__":
    # two emitters: PRI 1.0 ms and 1.7 ms, interleaved
    a = np.arange(0, 0.1, 1.0e-3)
    b = np.arange(0.0003, 0.1, 1.7e-3)
    print(pri_candidates(np.concatenate([a, b])))
