Пример #1
0
 def testEmptyBins(self):
     x = Histogram(10, 2)
     self.assertEqual(x.size(), 10)
     self.assertEqual(x.min(), float('inf'))
     self.assertEqual(x.max(), 1.)
     self.assertEqual(x._upperBound(), 10.)
     self.assertEqual(len(x.histograms), 2)
     p = x.getProbabilities()
     self.assertTrue((p == numpy.zeros(10, numpy.float64)).all())
Пример #2
0
 def testConstantValueBins(self):
     # Basic tests with constant-value bins.
     size = 8
     values = range(size)
     weights = [1.] * size
     mean, variance = _computeMeanAndVariance(values, weights)
     x = Histogram(size, 2)
     x.setCurrentToMinimum()
     for i in range(8):
         x.accumulate(i, 1.)
     self.assertAlmostEqual(x.getMean(), mean)
     self.assertAlmostEqual(x.getUnbiasedVariance(), variance)
     self.assertEqual(x.size(), 8)
     self.assertEqual(x.min(), 0.)
     self.assertEqual(x.max(), 8.)
     self.assertEqual(x._upperBound(), 8.)
     p = x.getProbabilities()
     self.assertTrue((p == 1./8.).all())
Пример #3
0
    def testPoisson1(self):
        # Poisson with mean 4. 20 bins. PMF = e^-lambda lambda^n / n!
        # Store in the first array of bins.
        lam = 4.
        size = 20
        poisson = [math.exp(-lam)]
        for n in range(1, size):
            poisson.append(poisson[-1] * lam / n)
        cardinality = size
        sumOfWeights = sum(poisson)
        mean = 0.
        for i in range(size):
            mean += poisson[i] * i
        mean /= sumOfWeights
        summedSecondCenteredMoment = 0.
        for i in range(size):
            summedSecondCenteredMoment += poisson[i] * (i - mean)**2

        stream = StringIO(repr(cardinality) + '\n' + 
                          repr(sumOfWeights) + '\n' +
                          repr(mean) + '\n' + 
                          repr(summedSecondCenteredMoment) + '\n' + 
                          '0\n1\n' +
                          ''.join([repr(_x) + ' ' for _x in poisson]) + '\n' +
                          '0 ' * len(poisson) + '\n')

        x = Histogram()
        x.read(stream, 2)
        assert x.cardinality == cardinality
        assert x.sumOfWeights == sumOfWeights
        assert x.mean == mean
        assert x.summedSecondCenteredMoment == summedSecondCenteredMoment
        assert x.size() == len(poisson)
        self.assertAlmostEqual(sum(x.getProbabilities()), 1)

        stream = StringIO()
        writer = XmlWriter(stream)
        writer.beginDocument()
        x.writeXml(writer, 0, 0)
        writer.endDocument()