def calc_ll(self,theta):
        """
        Computes the ll per measurments.
        """             
        cpa_space = self.cpa_space
        src = self.src
        dst = self.dst
        params_flow_int = self.params_flow_int
        transformed = self.transformed
        sigma_lm =  self.sigma_lm
        ll = self.ll         
          
        if src.shape[1]!=cpa_space.dim_domain:
            raise ValueError(src.shape)
       
                                   

        cpa_space.theta2Avees(theta)
        cpa_space.update_pat()        
        cpa_space.calc_T_fwd(pts = src, out=transformed,
                           **params_flow_int)          
        
        if transformed.shape != src.shape:
            raise ValueError(transformed.shape , src.shape)                   
        
        if 1:
            calc_err_per_sample(transformed.gpu,dst.gpu,self.err.gpu)   
            
            
    #       print  np.allclose(transformed.gpu.get()-dst.gpu.get(),
    #                          self.err.gpu.get())
                   
            calc_ll_per_sample(self.err.gpu,sigma_lm ,ll.gpu)       
          
    #        print np.allclose((-0.5/(sigma_lm**2)*
    #                          (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1), 
    #                          ll.gpu.get())
          
            
#            idx = (dst.cpu<0.5).nonzero()[0][-1]
#            idx = 499
#            
#            weight_it(ll.gpu,np.int32(idx))        
#            ipshell('hi')
#            1/0
        else:
            raise Exception("BAD IDEA")
            ll_by_der = self.ll_by_der
            der_dt = 0.002
           
            calc_err_by_der_per_sample(transformed.gpu,dst.gpu,self.err_by_der.gpu,
                                       der_dt)
            calc_ll_by_der_per_sample(self.err_by_der.gpu,.1 ,ll_by_der.gpu) 
            
        
            ll = ll_by_der
예제 #2
0
    def calc_ll(self,theta):
        """
        Returns the ll per measurments.
        """             
        cpa_space = self.cpa_space
        src = self.src
        dst = self.dst
        params_flow_int = self.params_flow_int
        transformed = self.transformed
        sigma_lm =  self.sigma_lm
        ll = self.ll         
          
        if src.shape[1]!=cpa_space.dim_domain:
            raise ValueError(src.shape)
       
                                   
#        Avees = cpa_space.theta2Avees(theta)
#        pat = self._pat
#        pat.update(Avees=Avees)              
#        cpa_space.calc_T(pat,pts = src, mysign=1,out=transformed,
#                           **params_flow_int)       
        
        cpa_space.theta2Avees(theta)
        cpa_space.update_pat()        
        cpa_space.calc_T_fwd(pts = src,out=transformed,
                           **params_flow_int)          
        
        if transformed.shape != src.shape:
            raise ValueError(transformed.shape , src.shape)                   
         
        calc_err_per_sample(transformed.gpu,dst.gpu,self.err.gpu)   
        
        
#       print  np.allclose(transformed.gpu.get()-dst.gpu.get(),
#                          self.err.gpu.get())
               
        calc_ll_per_sample(self.err.gpu,sigma_lm ,ll.gpu)       
      
#        print np.allclose((-0.5/(sigma_lm**2)*
#                          (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1), 
#                          ll.gpu.get())

        
         
        return ll 
    def calc_ll(self, theta):
        """
        Returns the ll per measurments.
        """
        cpa_space = self.cpa_space
        src = self.src
        dst = self.dst
        params_flow_int = self.params_flow_int
        transformed = self.transformed
        sigma_lm = self.sigma_lm
        ll = self.ll

        if src.shape[1] != cpa_space.dim_domain:
            raise ValueError(src.shape)

        #        Avees = cpa_space.theta2Avees(theta)
        #        pat = self._pat
        #        pat.update(Avees=Avees)
        #        cpa_space.calc_T(pat,pts = src, mysign=1,out=transformed,
        #                           **params_flow_int)

        cpa_space.theta2Avees(theta)
        cpa_space.update_pat()
        cpa_space.calc_T_fwd(pts=src, out=transformed, **params_flow_int)

        if transformed.shape != src.shape:
            raise ValueError(transformed.shape, src.shape)

        calc_err_per_sample(transformed.gpu, dst.gpu, self.err.gpu)

        #       print  np.allclose(transformed.gpu.get()-dst.gpu.get(),
        #                          self.err.gpu.get())

        calc_ll_per_sample(self.err.gpu, sigma_lm, ll.gpu)

        #        print np.allclose((-0.5/(sigma_lm**2)*
        #                          (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1),
        #                          ll.gpu.get())

        return ll