Esempio n. 1
0
 def testAverage(self):
     with Numpy() as numpy:
         if numpy is None:
             return
         sys.stderr.write("\n")
         self.compare("Average no data", Average(lambda x: x["empty"]), self.data, Average(lambda x: x), self.empty)
         self.compare("Average noholes", Average(
             lambda x: x["noholes"]), self.data, Average(lambda x: x), self.noholes)
         self.compare("Average holes", Average(lambda x: x["withholes"]),
                      self.data, Average(lambda x: x), self.withholes)
Esempio n. 2
0
    def testAverage(self):
        for i in xrange(11):
            left, right = self.simple[:i], self.simple[i:]

            leftAveraging = Average(named("something", lambda x: x))
            rightAveraging = Average(named("something", lambda x: x))

            for _ in left:
                leftAveraging.fill(_)
            for _ in right:
                rightAveraging.fill(_)

            if len(left) == 0:
                self.assertTrue(math.isnan(leftAveraging.mean))
            else:
                self.assertAlmostEqual(leftAveraging.mean, self.mean(left))

            if len(right) == 0:
                self.assertTrue(math.isnan(rightAveraging.mean))
            else:
                self.assertAlmostEqual(rightAveraging.mean, self.mean(right))

            finalResult = leftAveraging + rightAveraging

            self.assertAlmostEqual(finalResult.mean, self.mean(self.simple))

            self.checkScaling(leftAveraging)
            self.checkScaling(leftAveraging.toImmutable())
            self.checkJson(leftAveraging)
            self.checkPickle(leftAveraging)
            self.checkName(leftAveraging)
Esempio n. 3
0
 def testSparselyBinAverage(self):
     with Numpy() as numpy:
         if numpy is None:
             return
         sys.stderr.write("\n")
         self.compare("SparselyBinAverage no data", SparselyBin(0.1, lambda x: x["empty"], Average(
             lambda x: x["empty"])), self.data, SparselyBin(0.1, lambda x: x, Average(lambda x: x)), self.empty)
         self.compare("SparselyBinAverage noholes", SparselyBin(0.1, lambda x: x["noholes"], Average(
             lambda x: x["noholes"])), self.data, SparselyBin(0.1, lambda x: x, Average(lambda x: x)), self.noholes)
         self.compare("SparselyBinAverage holes", SparselyBin(0.1, lambda x: x["withholes"], Average(
             lambda x: x["withholes"])), self.data, SparselyBin(0.1, lambda x: x, Average(lambda x: x)), self.withholes)
Esempio n. 4
0
def SparselyProfile(binWidth,
                    binnedQuantity,
                    averagedQuantity,
                    selection=unweighted,
                    origin=0.0):
    """Convenience function for creating sparsely binned binwise averages."""
    return Select.ing(
        selection,
        SparselyBin.ing(binWidth, binnedQuantity,
                        Average.ing(averagedQuantity), Count.ing(), origin))
Esempio n. 5
0
def Profile(num,
            low,
            high,
            binnedQuantity,
            averagedQuantity,
            selection=unweighted):
    """Convenience function for creating binwise averages."""
    return Select.ing(
        selection,
        Bin.ing(num, low, high, binnedQuantity, Average.ing(averagedQuantity)))
Esempio n. 6
0
    def testAverageWithWeightingFactor(self):
        for i in xrange(11):

            left, right = self.struct[:i], self.struct[i:]

            leftAveraging = Select(lambda x: x.int,
                                   Average(lambda x: x.double))
            rightAveraging = Select(lambda x: x.int,
                                    Average(lambda x: x.double))

            for _ in left:
                leftAveraging.fill(_)
            for _ in right:
                rightAveraging.fill(_)

            if sum(map(lambda _: _.int if _.int > 0.0 else 0.0, left)) == 0.0:
                self.assertTrue(math.isnan(leftAveraging.cut.mean))
            else:
                self.assertAlmostEqual(
                    leftAveraging.cut.mean,
                    self.meanWeighted(list(map(lambda _: _.double, left)),
                                      list(map(lambda _: _.int, left))))
            if sum(map(lambda _: _.int if _.int > 0.0 else 0.0, right)) == 0.0:
                self.assertTrue(math.isnan(rightAveraging.cut.mean))
            else:
                self.assertAlmostEqual(
                    rightAveraging.cut.mean,
                    self.meanWeighted(list(map(lambda _: _.double, right)),
                                      list(map(lambda _: _.int, right))))

            finalResult = leftAveraging + rightAveraging

            self.assertAlmostEqual(
                finalResult.cut.mean,
                self.meanWeighted(list(map(lambda _: _.double, self.struct)),
                                  list(map(lambda _: _.int, self.struct))))

            self.checkScaling(leftAveraging)
            self.checkScaling(leftAveraging.toImmutable())
            self.checkJson(leftAveraging)
            self.checkPickle(leftAveraging)
            self.checkName(leftAveraging)
Esempio n. 7
0
    def testAverageWithFilter(self):
        for i in xrange(11):
            left, right = self.struct[:i], self.struct[i:]

            leftAveraging = Select(lambda x: x.bool,
                                   Average(lambda x: x.double))
            rightAveraging = Select(lambda x: x.bool,
                                    Average(lambda x: x.double))

            for _ in left:
                leftAveraging.fill(_)
            for _ in right:
                rightAveraging.fill(_)

            if len([_.double for _ in left if _.bool]) == 0:
                self.assertTrue(math.isnan(leftAveraging.mean))
            else:
                self.assertAlmostEqual(
                    leftAveraging.cut.mean,
                    self.mean([_.double for _ in left if _.bool]))
            if len([_.double for _ in right if _.bool]) == 0:
                self.assertTrue(math.isnan(rightAveraging.mean))
            else:
                self.assertAlmostEqual(
                    rightAveraging.cut.mean,
                    self.mean([_.double for _ in right if _.bool]))

            finalResult = leftAveraging + rightAveraging

            self.assertAlmostEqual(
                finalResult.cut.mean,
                self.mean([_.double for _ in self.struct if _.bool]))

            self.checkScaling(leftAveraging)
            self.checkScaling(leftAveraging.toImmutable())
            self.checkJson(leftAveraging)
            self.checkPickle(leftAveraging)
            self.checkName(leftAveraging)
Esempio n. 8
0
def Profile(num, low, high, binnedQuantity, averagedQuantity):
    """Convenience function for creating binwise averages."""
    return Bin.ing(num, low, high, binnedQuantity, Average.ing(averagedQuantity))
def SparselyProfile(binWidth, binnedQuantity, averagedQuantity, selection=unweighted, origin=0.0):
    """Convenience function for creating sparsely binned binwise averages."""
    return Select.ing(selection,
        SparselyBin.ing(binWidth, binnedQuantity,
            Average.ing(averagedQuantity), Count.ing(), origin))
def Profile(num, low, high, binnedQuantity, averagedQuantity, selection=unweighted):
    """Convenience function for creating binwise averages."""
    return Select.ing(selection,
        Bin.ing(num, low, high, binnedQuantity,
            Average.ing(averagedQuantity)))
Esempio n. 11
0
 def testCentrallyBinAverage(self):
     with Numpy() as numpy:
         if numpy is None:
             return
         sys.stderr.write("\n")
         centers = [-3.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 3.0]
         self.compare("CentrallyBinAverage no data", CentrallyBin(centers, lambda x: x["empty"], Average(
             lambda x: x["empty"])), self.data, CentrallyBin(centers, lambda x: x, Average(lambda x: x)), self.empty)
         self.compare("CentrallyBinAverage noholes", CentrallyBin(centers, lambda x: x["noholes"], Average(
             lambda x: x["noholes"])), self.data, CentrallyBin(centers, lambda x: x, Average(lambda x: x)), self.noholes)
         self.compare("CentrallyBinAverage holes", CentrallyBin(centers, lambda x: x["withholes"], Average(
             lambda x: x["withholes"])), self.data, CentrallyBin(centers, lambda x: x, Average(lambda x: x)), self.withholes)
Esempio n. 12
0
 def testBinAverage(self):
     with Numpy() as numpy:
         if numpy is None:
             return
         sys.stderr.write("\n")
         for bins in [10, 100]:
             self.compare("BinAverage ({0} bins) no data".format(bins), Bin(bins, -3.0, 3.0, lambda x: x["empty"], Average(
                 lambda x: x["empty"])), self.data, Bin(bins, -3.0, 3.0, lambda x: x, Average(lambda x: x)), self.empty)
             self.compare("BinAverage ({0} bins) noholes".format(bins), Bin(bins, -3.0, 3.0, lambda x: x["noholes"], Average(
                 lambda x: x["noholes"])), self.data, Bin(bins, -3.0, 3.0, lambda x: x, Average(lambda x: x)), self.noholes)
             self.compare("BinAverage ({0} bins) holes".format(bins), Bin(bins, -3.0, 3.0, lambda x: x["withholes"], Average(
                 lambda x: x["withholes"])), self.data, Bin(bins, -3.0, 3.0, lambda x: x, Average(lambda x: x)), self.withholes)