ae0e17b5dc
Three things to make pickup smoother: 1. analysis/README.md (NEW): catalogues the ~25 scratch scripts. Categorizes them as "still useful" / "superseded — keep for archaeology" / "pure exploration". Tells a fresh engineer which files to read first and which to ignore. 2. scratch/next_experiment_skeleton.py (NEW): stub + spec for the segment-channel scoring analyzer. Includes the fixture loader, block walker, and decode-segment-as-channel helper — just enough scaffolding that the next pass starts from "fill in score_segment_against_all_channels()" rather than from scratch. Already runs and confirms 13 segments per 3-sec event with sample starts going to 6590 (way past the 3328 actual samples) — strong evidence that not all segments carry Tran. 3. Removed decode-re/ duplicate. It was a mirror of tests/fixtures/. Analysis scripts that hardcoded decode-re/ paths updated to point at tests/fixtures/. CLAUDE.md note updated: future event uploads go directly into a dated subdirectory under tests/fixtures/. All 40 tests still pass. Skeleton runs.
21 lines
794 B
Python
21 lines
794 B
Python
"""Walk blocks of the new 5-11-26 events and look at what comes after Tran block."""
|
|
import sys
|
|
sys.path.insert(0, ".")
|
|
from minimateplus.waveform_codec import walk_body, find_data_start
|
|
|
|
|
|
def main():
|
|
for stem in ("M529LL1A.SP0", "M529LL1A.SS0", "M529LL1A.SV0"):
|
|
with open(f"tests/fixtures/5-11-26/{stem}", "rb") as f:
|
|
raw = f.read()
|
|
body = raw[43:-26]
|
|
start = find_data_start(body)
|
|
blocks = walk_body(body, start)
|
|
print(f"\n=== {stem} === body={len(body)} start={start} blocks walked={len(blocks)}")
|
|
for i, b in enumerate(blocks[:20]):
|
|
print(f" block[{i:>2}] @ {b.offset:>5} tag={b.tag_hi:02x} NN=0x{b.tag_lo:02x}({b.tag_lo}) len={b.length} data[:24]={b.data[:24].hex(' ')}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|