"""Small standalone demonstration of bounded persistent query work.""" from pathlib import Path import argparse,json,sys ROOT=Path(__file__).resolve().parents[1];sys.path.insert(0,str(ROOT)) import numpy as np from aureole.renderer import Scene,receiver_grid,light_grid,unoccluded from aureole.certificates import CertificateMemory,visibility_certificate from aureole.innovation import prepare,eliminate def run(output): out=ROOT/output;out.mkdir(parents=True,exist_ok=True) points=receiver_grid(24,32);lights=light_grid(6);scene=Scene.create(1001) memory=CertificateMemory(points,lights,scene.spheres,namespace='demo-1001') b=unoccluded(points,lights);ids=np.arange(len(points));rng=np.random.default_rng(63) frames=[];records=[] for frame in range(24): memory.begin_geometry(scene.spheres);values,known=memory.lookup(ids) h,q=prepare(b,np.full(values.shape,.5),values,known,np.linalg.norm(b,axis=-1)+1e-12) counter=[0] def oracle(rr,j): v,m=visibility_certificate(scene,points[rr],lights[j]);memory.commit(rr,j,v,m) counter[0]+=len(rr);return b[rr,j]*v[:,None] result,_=eliminate(h,q,oracle,2,rng) frames.append(result.reshape(24,32,3));records.append({'frame':frame,'physical_queries':counter[0],'known_fraction_before':float(known.mean())}) reference=(b*scene.visibility(points[:,None,:],lights[None,:,:])[...,None]).sum(1).reshape(24,32,3) memory.save(out/'memory.npz');np.savez_compressed(out/'linear_frames.npz',frames=np.array(frames),reference=reference) report={'frames':24,'physical_queries':sum(r['physical_queries'] for r in records),'full_domain_terms':len(points)*len(lights), 'zero_query_final_frames':sum(r['physical_queries']==0 for r in records), 'final_max_error':float(np.max(np.abs(frames[-1]-reference))), 'records':records,'scope':'Finite static-scene visibility completion with a constant prior; no GPU or full neural pipeline.'} (out/'demo.json').write_text(json.dumps(report,indent=2)+'\n') import matplotlib;matplotlib.use('Agg');import matplotlib.pyplot as plt fig,axes=plt.subplots(1,3,figsize=(9,3)) for ax,i in zip(axes,(0,8,23)): ax.imshow(np.clip(frames[i],0,1)**(1/2.2));ax.set_title(f'Frame {i+1}: {records[i]["physical_queries"]} queries');ax.axis('off') fig.tight_layout();fig.savefig(out/'preview.png',dpi=160);plt.close(fig) print(json.dumps({k:v for k,v in report.items() if k!='records'},indent=2)) if __name__=='__main__': p=argparse.ArgumentParser();p.add_argument('--output',default='innovation_demo');run(p.parse_args().output)