def test_hermvander3d(self): # also tests hermval3d for non-square coefficient array x1, x2, x3 = self.x c = np.random.random((2, 3, 4)) van = herm.hermvander3d(x1, x2, x3, [1, 2, 3]) tgt = herm.hermval3d(x1, x2, x3, c) res = np.dot(van, c.flat) assert_almost_equal(res, tgt) # get_inds shape van = herm.hermvander3d([x1], [x2], [x3], [1, 2, 3]) assert_(van.shape == (1, 5, 24))
def test_hermvander3d(self) : # also tests hermval3d for non-square coefficient array x1, x2, x3 = self.x c = np.random.random((2, 3, 4)) van = herm.hermvander3d(x1, x2, x3, [1, 2, 3]) tgt = herm.hermval3d(x1, x2, x3, c) res = np.dot(van, c.flat) assert_almost_equal(res, tgt) # check shape van = herm.hermvander3d([x1], [x2], [x3], [1, 2, 3]) assert_(van.shape == (1, 5, 24))
def __init__(self, stateHist, Vf, deg=[1, 1, 1]): def getMoments(state): s, mu = state return mu.getMoments() def getS(state): s, mu = state return s def getV(state): return Vf(state)[0] self.deg = deg w = MPI.COMM_WORLD rank = w.Get_rank() size = w.Get_size() N = len(stateHist) n = N / size r = N % size my_States = itertools.islice(stateHist.itervalues(), rank * n + min(rank, r), (rank + 1) * n + min(rank + 1, r)) my_domain = np.vstack(itertools.imap(getMoments, my_States)) slist = np.hstack(itertools.imap(getS, stateHist.itervalues())) my_States = itertools.islice(stateHist.itervalues(), rank * n + min(rank, r), (rank + 1) * n + min(rank + 1, r)) my_V = np.hstack(itertools.imap(getV, my_States)) #now combine everything V = np.zeros(len(stateHist)) domain = np.zeros((len(stateHist), my_domain.shape[1])) w.Gather(my_V, V, root=0) w.Gather(my_domain, domain, root=0) #now fit things b = [] if rank == 0: for s in range(0, 3): X = domain[slist == s, :] y = V[slist == s] A = hermite.hermvander3d(X[:, 0], X[:, 1], X[:, 2], self.deg) b.append( np.linalg.lstsq(A, y)[0].reshape( (self.deg[0] + 1, self.deg[1] + 1, self.deg[2] + 1))) w.Bcast(V, root=0) self.Vs = V self.b = w.bcast(b, root=0)
def __init__(self,stateHist,Vf,deg=[1,1,1]): def getMoments(state): s,mu = state return mu.getMoments() def getS(state): s,mu = state return s def getV(state): return Vf(state)[0] self.deg = deg w = MPI.COMM_WORLD rank = w.Get_rank() size = w.Get_size() N = len(stateHist) n = N/size r = N%size my_States = itertools.islice(stateHist.itervalues(),rank*n+min(rank,r),(rank+1)*n+min(rank+1,r)) my_domain = np.vstack(itertools.imap(getMoments,my_States)) slist = np.hstack(itertools.imap(getS,stateHist.itervalues())) my_States = itertools.islice(stateHist.itervalues(),rank*n+min(rank,r),(rank+1)*n+min(rank+1,r)) my_V = np.hstack(itertools.imap(getV,my_States)) #now combine everything V = np.zeros(len(stateHist)) domain = np.zeros((len(stateHist),my_domain.shape[1])) w.Gather(my_V,V,root=0) w.Gather(my_domain,domain,root=0) #now fit things b = [] if rank == 0: for s in range(0,3): X = domain[slist==s,:] y = V[slist==s] A = hermite.hermvander3d(X[:,0],X[:,1],X[:,2],self.deg) b.append(np.linalg.lstsq(A,y)[0].reshape((self.deg[0]+1,self.deg[1]+1,self.deg[2]+1))) w.Bcast(V,root =0) self.Vs = V self.b = w.bcast(b,root=0)