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)
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)
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)
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)))
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)
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)
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)))
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)
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)