Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
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)
Ejemplo n.º 4
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)