examples/a121/algo/distance/post_process_distance_result.py#
1# Copyright (c) Acconeer AB, 2023-2025
2# All rights reserved
3
4import argparse
5
6import h5py
7import matplotlib.pyplot as plt
8
9from acconeer.exptool.a121 import H5Record, _ReplayingClient, _StopReplay
10from acconeer.exptool.a121.algo.distance import Detector, DetectorContext
11from acconeer.exptool.a121.algo.distance._context import detector_context_timeline
12from acconeer.exptool.a121.algo.distance._detector import detector_config_timeline
13
14
15def main():
16 parser = argparse.ArgumentParser()
17 parser.add_argument("--input-file")
18
19 args = parser.parse_args()
20
21 with h5py.File(args.input_file, "r") as file:
22 algo_group = file["algo"]
23
24 sensor_ids = algo_group["sensor_ids"][()].tolist()
25 detector_config = detector_config_timeline.migrate(
26 algo_group["detector_config"][()].decode()
27 )
28 context_group = algo_group["context"]
29 context: DetectorContext = detector_context_timeline.migrate(context_group)
30
31 record = H5Record(file)
32 client = _ReplayingClient(record, realtime_replay=False)
33
34 detector = Detector(
35 client=client,
36 sensor_ids=sensor_ids,
37 detector_config=detector_config,
38 context=context,
39 )
40
41 detector.start()
42
43 fig, axs = plt.subplots(ncols=2, sharex=True)
44 fig.set_figwidth(15)
45
46 while True:
47 try:
48 result = detector.get_next()
49
50 for processor_result in result[sensor_ids[0]].processor_results:
51 axs[0].plot(
52 processor_result.extra_result.distances_m,
53 processor_result.extra_result.abs_sweep,
54 "b",
55 )
56 axs[0].plot(
57 processor_result.extra_result.distances_m,
58 processor_result.extra_result.used_threshold,
59 "r",
60 )
61
62 axs[1].plot(result[sensor_ids[0]].distances, result[sensor_ids[0]].strengths, "k.")
63 except _StopReplay:
64 break
65
66 axs[0].legend(["Sweep", "Threshold"], loc="upper left")
67
68 axs[0].set_xlabel("Distance (m)")
69 axs[0].set_ylabel("Amplitude")
70 axs[0].grid()
71
72 axs[1].set_xlabel("Distance (m)")
73 axs[1].set_ylabel("Strength")
74 axs[1].grid()
75
76 plt.legend()
77 plt.suptitle(args.input_file)
78 plt.show()
79
80
81if __name__ == "__main__":
82 main()
View this example on GitHub: acconeer/acconeer-python-exploration