Exemplo n.º 1
0
    def get_sample_covariance(self, lij, bij, beta):
        """
        Return sample Covariance matrix from buffer.
        """
        self.count -= self.buffer_size
        if self.count < 0:
            raise ValueError('Covariance has been updated already!')

        cov = calc_sample_covariance(self.buffer, lij=lij, bij=bij, beta=beta)
        # reset buffer, keep last sample
        self.buffer = [self.buffer[-1]]
        return cov
Exemplo n.º 2
0
    def get_sample_covariance(self, step):
        """
        Return sample Covariance matrix from buffer.
        """
        sample_difference = self.count - self.buffer_size
        if sample_difference < 0:
            raise ValueError('Covariance has been updated already!')
        elif sample_difference > 0:
            raise BufferError(
                'Buffer is not full and sample covariance may be biased')
        else:
            logger.info('Evaluating sampled trace covariance of worker %i at '
                        'sample %i' % (self.chain, step.cumulative_samples))

            cov = calc_sample_covariance(self.buffer,
                                         lij=step.lij,
                                         bij=step.bij,
                                         beta=step.beta)
            self.cov_counter += 1
        return cov