"""Find IDFH interval period via auto-correlation of structural patterns.""" from __future__ import annotations import sys from pathlib import Path from collections import Counter REPO = Path(__file__).resolve().parents[1] sys.path.insert(0, str(REPO)) def main(): target = REPO / "tests/fixtures/THORDATA_example/THORDATA_example/UPMC Presby/UM13981/UM13981_20220805075441.IDFH" buf = target.read_bytes() body_start = 0xF96 body_end = 0x270C body = buf[body_start:body_end] print(f"body size: {len(body)} bytes (file {len(buf)} bytes)") # For each candidate interval size, count how many bytes at fixed offsets within # each interval are zero (consistent column-zero pattern indicates correct size). print() print("=== zero-column score by interval size (higher = more likely) ===") best = [] for sz in range(16, 100): n = len(body) // sz if n < 30: continue # For each column position within an interval, count how many of n intervals have zero score = 0 for col in range(sz): zeros = sum(1 for i in range(n) if body[i*sz + col] == 0) if zeros >= n * 0.9: score += 1 best.append((score, sz, n)) best.sort(reverse=True) for score, sz, n in best[:10]: print(f" size={sz:3d} n_intervals={n} consistently-zero-cols={score}") if __name__ == "__main__": main()