Example #1
0
    def ve_step(self, mu, sigma, alpha=1., beta=0.0): 
        """
        VE-step
        """
        # Copy beta parameter
        self.beta = beta 

        # Compute complete-data likelihood maps, replacing very small
        # values for numerical stability
        for i in range(self.ntissues): 
            self.ref_[:,i] = self.prior_[:,i]**alpha
            self.ref_[:,i] *= self.dist(self.data_, mu[i], sigma[i])
        self.ref_[:] = np.maximum(self.ref_, TINY) 

        # Normalize reference probability map 
        if beta == 0.0: 
            self.ppm[self.mask] = (self.ref_.T/self.ref_.sum(1)).T

        # Update and normalize reference probabibility map using
        # neighborhood information (mean-field theory)
        else: 
            print('  ... MRF correction')
            # Deal with mixing matrix and label switching
            mixmat = self.mixmat 
            if not mixmat == None:
                mixmat = self.sort_mixmat(mu)
            self.ppm = _ve_step(self.ppm, self.ref_, 
                                np.array(self.mask, dtype='int'), 
                                beta, self.copy, self.hard, mixmat)
Example #2
0
    def ve_step(self, mu, sigma, alpha=1., beta=0.0): 
        """
        VE-step
        """
        for i in range(self.ntissues): 
            self.ref_[:,i] = self.prior_[:,i]**alpha
            self.ref_[:,i] *= self.dist(self.data_, mu[i], sigma[i])

        # Replace very small values for numerical stability 
        self.ref_[:] = np.maximum(self.ref_, TINY) 
        
        # Normalize reference probability map 
        if beta == 0.0: 
            self.ppm[self.mask] = (self.ref_.T/self.ref_.sum(1)).T

        # Update and normalize reference probabibility map using
        # neighborhood information (mean-field theory)
        else: 
            print('  ... MRF correction')
            self.ppm = _ve_step(self.ppm, self.ref_, 
                                np.array(self.mask, dtype='int'), 
                                beta, self.copy, self.hard)