Skip to content

v1.2.0

Latest

Choose a tag to compare

@AlanBacker AlanBacker released this 04 Nov 04:00

Every answer is now checked against the traced curves. When nothing fits, score says so and lists the likely causes. This release also fixes clock and pairing bugs and makes the fit's error bars honest. The six-seed self-test gives the same errors and verdicts as v1.1.1.

Fixed

  • Scoring dropped candidates the search had admitted. The search accepts an event-1 match up to the clock tolerance plus the event's CPA-time tolerance t_tol away. Scoring could shift time by only ±4 s and used its own clock tolerance (default 5 s), so candidates further out were dropped without a word. The time shift now spans at least t_tol (capped at 30 s), and score takes the search's clock tolerance when --rec-start-tol is not given. Candidates rejected by the clock are counted, and an empty result explains itself.
  • Offset pairing lost the time term with large node ids. Node and time were packed into one float. With global grid ids (around 2.5·10¹⁴), the time difference rounded away, so pairs an hour off still matched. The key is now an exact integer (node rank × slot + milliseconds). It is checked against brute force for compact and global ids. Normal search runs used compact ids and were not affected.
  • Fit sigmas were too small for correlated residuals. The covariance is now inflated by the residuals' measured correlation time, max(win/hop, τ). In the self-test scenarios τ is 3–38 points, so sigmas grow by up to 2.7×. Straight synthetic passes are unchanged. The fit reports resid_corr_time, sigma_inflation, n_eff and corr_v_d.
  • detect stdout and its file looked like different schemas. Stdout now also names events_file. The docs say that boxes.json is the event list and that the status is in boxes.diag.json.

New

  • Trace check. Each hypothesis' model curve is compared with the traced points within ±60 s of each CPA, using a robust RMS against the event's own linear fit. It passes at ≤ max(4×, +1 Hz). Bright texture under a wrong curve (speech, music, wind) can lift a brightness score, but it cannot make the model reproduce the trace. With two events, failing hypotheses rank below the rest, and alternatives and margins are computed among those that pass.
  • Verdict keywords, in order of precedence:
    • NO CONSISTENT SITE (two events, nothing passes; diagnosis lists the causes);
    • STRIP ONLY (tracks cross at < 25°);
    • DEGENERATE (one event, three or more other aircraft within 2 %);
    • AMBIGUOUS;
    • unique within scored set.
  • result.json gains n_consistent, scoring (scored, rejected_clock, no_track, delta_max_s) and diagnosis. best.trace_check gives per-event rms_hz, ref_hz, ratio and ok. An f0 scale at its limit is flagged but not penalised.
  • Search stats report the following:
    • crossing_angle_deg (a log line says when every pair crosses at < 25°);
    • flight_pairs (how many different aircraft explain one event);
    • ground_elev_m;
    • clock.
  • trace reports box_coverage. Below 50 % it adds a hint (--no-monotone for a curve that rises before it falls, or a narrower box). fit adds d_fit_min/d_fit_max (3 sigma) and a note when the search's distance window is much wider.

Docs (English and Chinese)

  • One event needs a small area as well as a clock.
  • The silence filter does little in sparse airspace.
  • Sigma is statistical only: a speed change biases v by far more than sigma.
  • What the distance window is.
  • The DEM matters in relief.
  • A new verification section covers what to do when no site is consistent: different places or a wrong file offset, an aircraft missing from ADS-B, a site outside the bbox, or a bad trace.

Measured on synthetic data

  • Six self-test seeds give the same errors, verdicts and regions as v1.1.1.
  • True two-event answers measure 0.3–1.8× the reference per event.
  • Wrong aircraft pairs exceed 15× on at least one event. The true pair at a site 2–6 km away reaches 2.7–15×, so the check rules out wrong aircraft, not every wrong site; the brightness score still ranks those below the true site.
  • With one event, wrong aircraft 30 km away can pass (1.3×). The check is reported there but does not reorder.
  • Event 2 shifted by +300 s gives NO CONSISTENT SITE with a diagnosis.
  • One event with a 2 s clock and t_tol = 20 s: all 492 candidates are scored, and the error is 23 m.
  • Real recordings were not part of these tests.

Downloads

File Language
audio-flyover-geolocation-en.skill English
audio-flyover-geolocation-zh-CN.skill 简体中文

Reinstall over v1.1.1 the same way you installed it.