# convert window2-style pickles (one 4x4 window + 2-point windows) to the JSON certificate format
import sys, pickle, json, numpy as np
D=pickle.load(open(sys.argv[1],'rb')); L=D['layout']; pairs=D['pairs']; S=D['S']; nq=L['nq']; wn=D['wn']
Q=[(i,j) for j in range(wn) for i in range(wn)]
out=[]
for c in D['certs']:
    x=c['x']; W=np.zeros((nq,nq))
    for k,(a,b) in enumerate(pairs):
        w=x[L['iw']+k]
        if a==b: W[a,a]+=w
        else: W[a,b]+=w; W[b,a]+=w
    wins=[dict(points=Q,W=W.round(12).tolist(),rho=np.round(x[L['irho']:L['irho']+nq],12).tolist())]
    for k,r in enumerate(S):
        i=L['ib']+4*k; woff,wd,rh=x[i],x[i+1],x[i+2]
        if abs(woff)<1e-13 and abs(wd)<1e-13 and abs(rh)<1e-13: continue
        wins.append(dict(points=[(0,0),r],W=[[round(wd,12),round(woff,12)],[round(woff,12),round(wd,12)]],rho=[round(rh,12)]*2))
    out.append(dict(f=c['f'],windows=wins))
json.dump(out,open(sys.argv[2],'w'),separators=(',',':'))
print(len(out),'certificates')
