import json, sys, numpy as np
from PIL import Image, ImageFilter
def em(p):
    im=Image.open(p).convert('L').resize((300,240),Image.LANCZOS).filter(ImageFilter.GaussianBlur(2))
    a=np.asarray(im,float); gy,gx=np.gradient(a); g=np.hypot(gx,gy)
    g=np.asarray(Image.fromarray(g.astype(np.float32)).resize((60,48),Image.BILINEAR),float)
    return (g-g.mean())/(g.std()+1e-9)
def geom(p, base='paintings/SR2-R01/branches/main/sittings/000/state.png'):
    return round(float((em(p)*em(base)).mean()),3)
if __name__=='__main__':
    for ser in ['SR1','SR2']:
        out=[]
        for r in json.load(open(f'series/{ser}/runs.json'))['runs']:
            if r['status']!='ended': continue
            b,n=r['final'].split(':'); out.append((r['run'],geom(f"paintings/{r['painting']}/branches/{b}/sittings/{int(n):03d}/state.png")))
        print(ser,out)
    for s in ['S21','S30','S35','S36','S01','S05','S12']:
        print(s, geom(f'studies/{s}/image.png'))
