def test_init(self):
        self.sampler = CosmoHammerSampler(
            params=self.params,
            likelihoodComputationChain=LikelihoodComputationChain(),
            filePrefix=self._getTempFilePrefix(),
            walkersRatio=10,
            burninIterations=1,
            sampleIterations=1)

        assert isinstance(self.sampler.storageUtil, SampleFileUtil)
        assert isinstance(self.sampler.stopCriteriaStrategy,
                          IterationStopCriteriaStrategy)
        assert isinstance(self.sampler.initPositionGenerator,
                          SampleBallPositionGenerator)
        assert self.sampler.likelihoodComputationChain.params is not None
    def setup(self):
        """
        Initialise some data vectors used for the comparisons by the other functions.
        """
        self.params = np.array([[70, 40, 100, 3], [0.0226, 0.005, 0.1, 0.001],
                                [0.122, 0.01, 0.99, 0.01],
                                [2.1e-9, 1.48e-9, 5.45e-9, 1e-10],
                                [0.96, 0.5, 1.5, 0.02],
                                [0.09, 0.01, 0.8, 0.03], [1, 0, 2, 0.4]])

        #the real means..
        means = [70.704, 0.02256, 0.1115, 2.18474E-09, 0.9688, 0.08920]

        # ...and non-trivial covariance matrix.
        cov = np.array(
            [[6.11E+00, 0, 0, 0, 0, 0], [7.19E-04, 3.26E-07, 0, 0, 0, 0],
             [-1.19E-02, -3.37E-07, 3.14E-05, 0, 0, 0],
             [-3.56E-11, 1.43E-14, 1.76E-13, 5.96E-21, 0, 0],
             [2.01E-02, 6.37E-06, -2.13E-05, 3.66E-13, 1.90E-04, 0],
             [1.10E-02, 2.36E-06, -1.92E-05, 8.70E-13, 7.32E-05, 2.23E-04]])
        cov += cov.T - np.diag(cov.diagonal())

        # Invert the covariance matrix
        icov = np.linalg.inv(cov)

        chain = LikelihoodComputationChain()
        pseudoLikelihood = PseudoCmbModule(icov, means)

        chain.addLikelihoodModule(pseudoLikelihood)
        chain.setup()

        posGen = FlatPositionGenerator()

        self.sampler = CosmoHammerSampler(params=self.params,
                                          likelihoodComputationChain=chain,
                                          filePrefix=self._getTempFilePrefix(),
                                          walkersRatio=10,
                                          burninIterations=1,
                                          sampleIterations=11,
                                          initPositionGenerator=posGen,
                                          storageUtil=InMemoryStorageUtil())
 def test_init(self):
     self.sampler = CosmoHammerSampler(
             params= self.params, 
             likelihoodComputationChain=LikelihoodComputationChain(), 
             filePrefix=self._getTempFilePrefix(), 
             walkersRatio=10, 
             burninIterations=1, 
             sampleIterations=1)
     
     assert isinstance(self.sampler.storageUtil, SampleFileUtil) 
     assert isinstance(self.sampler.stopCriteriaStrategy, IterationStopCriteriaStrategy)
     assert isinstance(self.sampler.initPositionGenerator, SampleBallPositionGenerator)
     assert self.sampler.likelihoodComputationChain.params is not None
    def setup(self):
        """
        Initialise some data vectors used for the comparisons by the other functions.
        """
        self.params = np.array([[70, 40, 100, 3],
            [0.0226, 0.005, 0.1, 0.001],
            [0.122, 0.01, 0.99, 0.01],
            [2.1e-9, 1.48e-9, 5.45e-9, 1e-10],
            [0.96, 0.5, 1.5, 0.02],
            [0.09, 0.01, 0.8, 0.03],
            [1,0,2,0.4] ])


        #the real means..
        means = [70.704, 0.02256, 0.1115, 2.18474E-09, 0.9688, 0.08920]
        
        # ...and non-trivial covariance matrix.
        cov  = np.array([[6.11E+00, 0, 0, 0, 0, 0],
                        [7.19E-04, 3.26E-07, 0, 0, 0, 0],
                        [-1.19E-02, -3.37E-07, 3.14E-05, 0, 0, 0],
                        [-3.56E-11, 1.43E-14, 1.76E-13, 5.96E-21, 0, 0],
                        [2.01E-02, 6.37E-06, -2.13E-05, 3.66E-13, 1.90E-04, 0],
                        [1.10E-02, 2.36E-06, -1.92E-05, 8.70E-13, 7.32E-05, 2.23E-04]])
        cov += cov.T - np.diag(cov.diagonal())
        
        # Invert the covariance matrix
        icov = np.linalg.inv(cov)
        
        chain = LikelihoodComputationChain()
        pseudoLikelihood = PseudoCmbModule(icov, means)
        
        chain.addLikelihoodModule(pseudoLikelihood)
        chain.setup()
        
        posGen = FlatPositionGenerator()
        
        self.sampler = CosmoHammerSampler(
                        params= self.params, 
                        likelihoodComputationChain=chain, 
                        filePrefix=self._getTempFilePrefix(), 
                        walkersRatio=10, 
                        burninIterations=1, 
                        sampleIterations=11,
                        initPositionGenerator=posGen,
                        storageUtil=InMemoryStorageUtil())
class TestCosmoHammerSampler(object):
    params = None
    sampler = None
    
    def setup(self):
        """
        Initialise some data vectors used for the comparisons by the other functions.
        """
        self.params = np.array([[70, 40, 100, 3],
            [0.0226, 0.005, 0.1, 0.001],
            [0.122, 0.01, 0.99, 0.01],
            [2.1e-9, 1.48e-9, 5.45e-9, 1e-10],
            [0.96, 0.5, 1.5, 0.02],
            [0.09, 0.01, 0.8, 0.03],
            [1,0,2,0.4] ])


        #the real means..
        means = [70.704, 0.02256, 0.1115, 2.18474E-09, 0.9688, 0.08920]
        
        # ...and non-trivial covariance matrix.
        cov  = np.array([[6.11E+00, 0, 0, 0, 0, 0],
                        [7.19E-04, 3.26E-07, 0, 0, 0, 0],
                        [-1.19E-02, -3.37E-07, 3.14E-05, 0, 0, 0],
                        [-3.56E-11, 1.43E-14, 1.76E-13, 5.96E-21, 0, 0],
                        [2.01E-02, 6.37E-06, -2.13E-05, 3.66E-13, 1.90E-04, 0],
                        [1.10E-02, 2.36E-06, -1.92E-05, 8.70E-13, 7.32E-05, 2.23E-04]])
        cov += cov.T - np.diag(cov.diagonal())
        
        # Invert the covariance matrix
        icov = np.linalg.inv(cov)
        
        chain = LikelihoodComputationChain()
        pseudoLikelihood = PseudoCmbModule(icov, means)
        
        chain.addLikelihoodModule(pseudoLikelihood)
        chain.setup()
        
        posGen = FlatPositionGenerator()
        
        self.sampler = CosmoHammerSampler(
                        params= self.params, 
                        likelihoodComputationChain=chain, 
                        filePrefix=self._getTempFilePrefix(), 
                        walkersRatio=10, 
                        burninIterations=1, 
                        sampleIterations=11,
                        initPositionGenerator=posGen,
                        storageUtil=InMemoryStorageUtil())
        
    def test_init(self):
        self.sampler = CosmoHammerSampler(
                params= self.params, 
                likelihoodComputationChain=LikelihoodComputationChain(), 
                filePrefix=self._getTempFilePrefix(), 
                walkersRatio=10, 
                burninIterations=1, 
                sampleIterations=1)
        
        assert isinstance(self.sampler.storageUtil, SampleFileUtil) 
        assert isinstance(self.sampler.stopCriteriaStrategy, IterationStopCriteriaStrategy)
        assert isinstance(self.sampler.initPositionGenerator, SampleBallPositionGenerator)
        assert self.sampler.likelihoodComputationChain.params is not None

    
    def test_no_burn_in(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 0;
        self.sampler.startSampling()
        
        assert self.sampler.storageUtil.samplesBurnin == None
        assert self.sampler.storageUtil.probBurnin == None
    
    def test_one_iter_burn_in(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 1;
        self.sampler.walkersRatio = 10;
        self.sampler.startSampling()
        
        assert self.sampler.storageUtil.samplesBurnin is not None
        assert self.sampler.storageUtil.probBurnin is not None

        params = 7
        samples = params * self.sampler.burninIterations * self.sampler.walkersRatio
        assert self.sampler.storageUtil.samplesBurnin.shape == (samples, params)
        assert self.sampler.storageUtil.probBurnin.shape == (samples, )
    
    def test_one_iter_sampling(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 0;
        self.sampler.sampleIterations = 1;
        self.sampler.walkersRatio = 10;
        self.sampler.startSampling()
        
        params = 7
        samples = params * self.sampler.sampleIterations * self.sampler.walkersRatio
        
        assert self.sampler.storageUtil.samplesBurnin is None
        assert self.sampler.storageUtil.probBurnin is None
        assert self.sampler.storageUtil.samples.shape == (samples, params)
        assert self.sampler.storageUtil.prob.shape == (samples, )
    
    def _getTempFilePrefix(self):
        return os.path.join(tempfile.mkdtemp(), "pseudoCmb")
class TestCosmoHammerSampler(object):
    params = None
    sampler = None

    def setup(self):
        """
        Initialise some data vectors used for the comparisons by the other functions.
        """
        self.params = np.array([[70, 40, 100, 3], [0.0226, 0.005, 0.1, 0.001],
                                [0.122, 0.01, 0.99, 0.01],
                                [2.1e-9, 1.48e-9, 5.45e-9, 1e-10],
                                [0.96, 0.5, 1.5, 0.02],
                                [0.09, 0.01, 0.8, 0.03], [1, 0, 2, 0.4]])

        #the real means..
        means = [70.704, 0.02256, 0.1115, 2.18474E-09, 0.9688, 0.08920]

        # ...and non-trivial covariance matrix.
        cov = np.array(
            [[6.11E+00, 0, 0, 0, 0, 0], [7.19E-04, 3.26E-07, 0, 0, 0, 0],
             [-1.19E-02, -3.37E-07, 3.14E-05, 0, 0, 0],
             [-3.56E-11, 1.43E-14, 1.76E-13, 5.96E-21, 0, 0],
             [2.01E-02, 6.37E-06, -2.13E-05, 3.66E-13, 1.90E-04, 0],
             [1.10E-02, 2.36E-06, -1.92E-05, 8.70E-13, 7.32E-05, 2.23E-04]])
        cov += cov.T - np.diag(cov.diagonal())

        # Invert the covariance matrix
        icov = np.linalg.inv(cov)

        chain = LikelihoodComputationChain()
        pseudoLikelihood = PseudoCmbModule(icov, means)

        chain.addLikelihoodModule(pseudoLikelihood)
        chain.setup()

        posGen = FlatPositionGenerator()

        self.sampler = CosmoHammerSampler(params=self.params,
                                          likelihoodComputationChain=chain,
                                          filePrefix=self._getTempFilePrefix(),
                                          walkersRatio=10,
                                          burninIterations=1,
                                          sampleIterations=11,
                                          initPositionGenerator=posGen,
                                          storageUtil=InMemoryStorageUtil())

    def test_init(self):
        self.sampler = CosmoHammerSampler(
            params=self.params,
            likelihoodComputationChain=LikelihoodComputationChain(),
            filePrefix=self._getTempFilePrefix(),
            walkersRatio=10,
            burninIterations=1,
            sampleIterations=1)

        assert isinstance(self.sampler.storageUtil, SampleFileUtil)
        assert isinstance(self.sampler.stopCriteriaStrategy,
                          IterationStopCriteriaStrategy)
        assert isinstance(self.sampler.initPositionGenerator,
                          SampleBallPositionGenerator)
        assert self.sampler.likelihoodComputationChain.params is not None

    def test_no_burn_in(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 0
        self.sampler.startSampling()

        assert self.sampler.storageUtil.samplesBurnin == None
        assert self.sampler.storageUtil.probBurnin == None

    def test_one_iter_burn_in(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 1
        self.sampler.walkersRatio = 10
        self.sampler.startSampling()

        assert self.sampler.storageUtil.samplesBurnin is not None
        assert self.sampler.storageUtil.probBurnin is not None

        params = 7
        samples = params * self.sampler.burninIterations * self.sampler.walkersRatio
        assert self.sampler.storageUtil.samplesBurnin.shape == (samples,
                                                                params)
        assert self.sampler.storageUtil.probBurnin.shape == (samples, )

    def test_one_iter_sampling(self):
        self.sampler.resetSampler()
        self.sampler.burninIterations = 0
        self.sampler.sampleIterations = 1
        self.sampler.walkersRatio = 10
        self.sampler.startSampling()

        params = 7
        samples = params * self.sampler.sampleIterations * self.sampler.walkersRatio

        assert self.sampler.storageUtil.samplesBurnin is None
        assert self.sampler.storageUtil.probBurnin is None
        assert self.sampler.storageUtil.samples.shape == (samples, params)
        assert self.sampler.storageUtil.prob.shape == (samples, )

    def _getTempFilePrefix(self):
        return os.path.join(tempfile.mkdtemp(), "pseudoCmb")