"""Feed candidate body offsets to the BW codec and compare with sidecar.""" from __future__ import annotations import sys from pathlib import Path REPO = Path(__file__).resolve().parents[1] sys.path.insert(0, str(REPO)) from minimateplus.waveform_codec import decode_waveform_v2, walk_body, find_data_start from analysis_idf.recon import TARGET, TXT, load_sidecar_samples def main(): buf = TARGET.read_bytes() sc = load_sidecar_samples(TXT) # Sidecar samples in 0.0003 counts (Thor geo LSB). sc_tran = [int(round(v / 0.0003)) for v in sc["Tran"][:30]] sc_vert = [int(round(v / 0.0003)) for v in sc["Vert"][:30]] sc_long = [int(round(v / 0.0003)) for v in sc["Long"][:30]] sc_micl = [int(round(v / 1e-6)) for v in sc["MicL"][:30]] # 1 µ unit for mic? Will iterate. print(f"sidecar Tran (counts): {sc_tran}") print(f"sidecar Vert (counts): {sc_vert}") print(f"sidecar Long (counts): {sc_long}") print(f"sidecar MicL (×1e-6): {sc_micl}") print() # Try candidate body start offsets. for off in (0x0f1f, 0x1057, 0x11f1, 0x1333, 0x1bde, 0x0d30): print(f"=== body @ 0x{off:04x} ===") body = buf[off:] decoded = decode_waveform_v2(body) if not decoded: print(" decode_waveform_v2 returned None") continue for ch in ("Tran", "Vert", "Long", "MicL"): arr = decoded.get(ch, []) print(f" {ch}[{len(arr)}]: {arr[:20]}") print() if __name__ == "__main__": main()