Matroid-selected circular latent coordinates / clean_check.py
Mechanism failed
1import numpy as np
2from experiment import graph_cochains, select_matroid, residual, train_models, wrap
3np.random.seed(573)
4N=900; t=np.random.rand(N,2)
5x=np.c_[np.cos(2*np.pi*t[:,0]),np.sin(2*np.pi*t[:,0]),np.cos(2*np.pi*t[:,1]),np.sin(2*np.pi*t[:,1])]
6theta=np.c_[t[:,0],t[:,1],(t[:,0]+t[:,1])%1,(t[:,0]-t[:,1])%1]
7G,A,e=graph_cochains(theta)
8Q=np.array([[1,0],[0,1],[.5,.5],[.5,-.5]],float)
9sel,E,M=select_matroid(G,Q)
10print({'selected':sel,'energies':E.tolist(),'weight_sum':1.0,'gram_symmetry':float(np.max(abs(G-G.T)))})
11print({'residual_full':residual(G,Q,[0,1])[0],'residual_omit_one':residual(G,Q,[0])[0]})
12print({'train':train_models(x,sel,theta)})