"""Bounded numeric comparison on development inputs; no semantic video analysis."""
import bootstrap
import json
from pathlib import Path
from integrated import Integrated,DEFAULT
from inputs import OUT

contract=json.loads((OUT/'execution_contract.json').read_text())
options=[dict(name='base',config={})]
for speed,near,level,count in ((.40,.20,.16,2),(.55,.20,.20,2),(.70,.18,.16,2),(.40,.20,.12,2),(.55,.18,.12,2),(.55,.18,.16,3),(.40,.20,.12,3),(.40,.22,.12,2)):
    options.append(dict(name=f'h{speed}_d{near}_v{level}_n{count}',config=dict(hand_speed=speed,hand_near=near,hand_vertical=level,min_samples=count)))
results=[]
for option in options:
    per={}
    for clip in contract['development']:
        eng=Integrated(option['config']);counts={};interesting=[]
        for line in (OUT/'work'/clip/'features.jsonl').open():
            row=json.loads(line);v=eng.step(row)
            if not row['displayed']:continue
            label=row['reference'];s=counts.setdefault(label,dict(N=0,observable=0,raw=0,hit=0))
            s['N']+=1;s['observable']+=v['observable'];s['raw']+=v['raw'];s['hit']+=v['hit']
            if v['hit'] and len(interesting)<6:interesting.append(row['source_frame'])
        per[clip]=dict(counts=counts,first_hits=interesting)
    results.append(dict(**option,per=per))
(OUT/'reports/probe.json').write_text(json.dumps(results,indent=2))
for r in results:
    print(r['name'],{k:sum(x['hit'] for x in v['counts'].values()) for k,v in r['per'].items()},flush=True)
