#Sheaf Construction #sheafcell=self,dimension,cofaces=[],compactClosure=True,stalkDim=None,metric=None) #sheaf coface=(self,index,orientation,restriction) sdim=np.ts.size #number of samples for u & v; n+m. For n or m, use sdim/2 s1=py.Sheaf([py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell \ (dimension=0,stalkDim=sdim,cofaces=[py.SheafCoface(index=0, orientation=1, restriction=py.LinearMorphism(pr1(ts))), \ py.SheafCoface(index=1, orientation=1, restriction=py.LinearMorphism(pr2(ts))), \ py.SheafCoface(index=3, orientation=1, restriction=py.SetMorphism(eqn1(ts)))]), \ py.SheafCell \ (dimension=0,stalkDim=sdim,cofaces=[py.SheafCoface(index=0, orientation=-1, restriction=py.LinearMorphism(pr1(ts))), \ py.SheafCoface(index=1, orientation=-1, restriction=py.LinearMorphism(pr2(ts))), \ py.SheafCoface(index=2, orientation=-1, restriction=py.SetMorphism(eqn2(ts)))]), \ py.SheafCell \ (dimension=0,stalkDim=(sdim/2),cofaces=[py.SheafCoface(index=0, orientation=1, restriction=py.LinearMorphism(iden(ts))), \ py.SheafCoface(index=2, orientation=1, restriction=py.LinearMorphism(ddt(ts)))]), \ py.SheafCell \ (dimension=0,stalkDim=(sdim/2),cofaces=[py.SheafCoface(index=1, orientation=1, restriction=py.LinearMorphism(iden(ts))), \ py.SheafCoface(index=3, orientation=-1, restriction=py.LinearMorphism(ddt(ts)))])]) #How to construct? Taken from search_rescue_test.py input_data=[py.Section([py.SectionCell(support=0,value=np.array(ts[:(sdim/2)])), # U py.SectionCell(support=1,value=np.array(ts[(sdim/2):]))])] # V
def construct_sheaf(): global s1 s1 = ps.Sheaf([ ps.SheafCell( dimension=0, compactClosure=True, stalkDim=6, metric=distance_alt, # Ignores velocity cofaces=[ ps.SheafCoface(index=2, orientation=1, restriction=ps.LinearMorphism( np.array([[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0]]))), # X->U2 ps.SheafCoface(index=3, orientation=1, restriction=ps.SetMorphism(A)), # X->U3 ps.SheafCoface(index=4, orientation=1, restriction=ps.SetMorphism(B)), # X->U4 ps.SheafCoface(index=5, orientation=1, restriction=ps.SetMorphism(E)) ], # X->U5 bounds=scene_bounds_0), ps.SheafCell(dimension=2, compactClosure=True, stalkDim=3, metric=distance_alt, cofaces=[]), # U1 ps.SheafCell( dimension=1, compactClosure=True, stalkDim=5, metric=distance_alt, # Ignores velocity cofaces=[ ps.SheafCoface(index=1, orientation=1, restriction=ps.LinearMorphism( np.array([[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0]]))) ]), # U2->U1 ps.SheafCell( dimension=1, compactClosure=True, stalkDim=2, metric=lambda x, y: min(anglemetric(x[0], y[0]), abs(x[1] - y[1])), cofaces=[ ps.SheafCoface(index=6, orientation=1, restriction=ps.LinearMorphism(np.array( [[1, 0]]))), # U3->V1 ps.SheafCoface(index=8, orientation=1, restriction=ps.LinearMorphism(np.array([[0, 1]]))) ], # U3->V3 bounds=[(70, 80), (-pi, pi)]), # U3->V3 ps.SheafCell( dimension=1, compactClosure=True, stalkDim=2, metric=lambda x, y: min(anglemetric(x[0], y[0]), abs(x[1] - y[1])), cofaces=[ ps.SheafCoface(index=8, orientation=-1, restriction=ps.LinearMorphism(np.array( [[0, 1]]))), # U4->V3 ps.SheafCoface(index=7, orientation=1, restriction=ps.LinearMorphism(np.array([[1, 0]]))) ], # U4->V2 bounds=[(60, 70), (-pi, pi)]), # U4->V2 ps.SheafCell( dimension=1, compactClosure=True, stalkDim=2, metric=distance, cofaces=[ ps.SheafCoface(index=6, orientation=-1, restriction=ps.SetMorphism(C)), # U5->V1 ps.SheafCoface(index=7, orientation=-1, restriction=ps.SetMorphism(D)) ], # U5->V2 bounds=[(-55, -75), (40, 50)]), ps.SheafCell(dimension=2, compactClosure=True, stalkDim=1, metric=anglemetric, cofaces=[]), # V1 ps.SheafCell(dimension=2, compactClosure=True, stalkDim=1, metric=anglemetric, cofaces=[]), # V2 ps.SheafCell(dimension=2, compactClosure=True, stalkDim=1, cofaces=[]) ]) # V3
dimension=0, compactClosure=True, stalkDim=6, metric=distance_alt, # Ignores velocity cofaces=[ ps.SheafCoface(index=2, orientation=1, restriction=ps.LinearMorphism( np.array([[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0]]))), # X->U2 ps.SheafCoface(index=3, orientation=1, restriction=ps.SetMorphism(A)), # X->U3 ps.SheafCoface(index=4, orientation=1, restriction=ps.SetMorphism(B)), # X->U4 ps.SheafCoface(index=5, orientation=1, restriction=ps.SetMorphism(E)) ]), # X->U5 ps.SheafCell(dimension=2, compactClosure=True, stalkDim=3, metric=distance_alt, cofaces=[]), # U1 ps.SheafCell( dimension=1, compactClosure=True,
ts, alpha, beta, sigma, rho, gamma = parseddata_quarterly sdim = ts.size #number of samples for u & v; n+m. For n or m, use sdim/2 print "size of time series is " + str(ts.shape) tsu = ts[:sdim / 2] tsv = ts[sdim / 2:] s1=py.Sheaf([py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell(dimension=1,stalkDim=(sdim/2),cofaces=[]), \ py.SheafCell \ (dimension=0,stalkDim=sdim,cofaces=[py.SheafCoface(index=0, orientation=1, restriction=py.LinearMorphism(pr1(ts))), \ py.SheafCoface(index=1, orientation=1, restriction=py.LinearMorphism(pr2(ts))), \ py.SheafCoface(index=3, orientation=1, restriction=py.SetMorphism(lambda x: eqn1(x,alpha,beta,sigma)))]), \ py.SheafCell \ (dimension=0,stalkDim=sdim,cofaces=[py.SheafCoface(index=0, orientation=-1, restriction=py.LinearMorphism(pr1(ts))), \ py.SheafCoface(index=1, orientation=-1, restriction=py.LinearMorphism(pr2(ts))), \ py.SheafCoface(index=2, orientation=-1, restriction=py.SetMorphism(lambda x:eqn2(x,alpha,gamma,rho)))]), \ py.SheafCell \ (dimension=0,stalkDim=(sdim/2),cofaces=[py.SheafCoface(index=0, orientation=1, restriction=py.LinearMorphism(iden(tsu))), \ py.SheafCoface(index=2, orientation=1, restriction=py.LinearMorphism(ddt(tsu)))]), \ py.SheafCell \ (dimension=0,stalkDim=(sdim/2),cofaces=[py.SheafCoface(index=1, orientation=1, restriction=py.LinearMorphism(iden(tsv))), \ py.SheafCoface(index=3, orientation=-1, restriction=py.LinearMorphism(ddt(tsv)))])]) input_data = [ py.Section([ py.SectionCell(support=0, value=tsu), # U py.SectionCell(support=1, value=tsv), #V