def extractDurationCountsAll(): durationValues = [] for project in Project.objects.all(): if project.startDate == "-": print("project %s has no start date" % project.codeNumber) continue duration = getDurationOfProjectInDays(project) if duration <= 0: print("project %s ended before it started" % project.codeNumber) continue durationValues.append(duration) numberOfBuckets = 100 lowDurationValue = min(durationValues) highDurationValue = max(durationValues) countPerBucket = [0]*numberOfBuckets for durationValue in durationValues: bucketIndex = valueToBucketIndex(numberOfBuckets, lowDurationValue, highDurationValue+1, durationValue) countPerBucket[bucketIndex] += 1 theTsv = open("espaHistoDuration.tsv", "w+") dx = (highDurationValue-lowDurationValue)/numberOfBuckets print("high value is %f, low value is %f, interval is %f" % (highDurationValue, lowDurationValue, dx)) for i in range(0, len(countPerBucket)): print("%d\t%d\t%d" % ((lowDurationValue+i*dx), dx, countPerBucket[i]), file=theTsv) theTsv.flush() theTsv.close()
def basicBucketAllocationShouldWork(): minValue = 10 maxValue = 120 numberOfBuckets = 10 # There are 110 values and 10 buckets. Every 11 values we should change buckets. Note the fencepost error # that 120 is not included in the last interval since intervals are open on their high value assertEquals(0, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 10)) assertEquals(0, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 11)) assertEquals(0, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 12)) assertEquals(0, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 20)) assertEquals(1, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 21)) assertEquals(1, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 31)) assertEquals(2, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 32)) assertEquals(2, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 42)) assertEquals(3, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 43)) assertEquals(3, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 53)) assertEquals(4, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 54)) assertEquals(4, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 64)) assertEquals(5, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 65)) assertEquals(5, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 75)) assertEquals(6, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 76)) assertEquals(6, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 86)) assertEquals(7, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 87)) assertEquals(7, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 97)) assertEquals(8, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 98)) assertEquals(8, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 108)) assertEquals(9, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 109)) assertEquals(9, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 119)) assertEquals(10, valueToBucketIndex(numberOfBuckets, minValue, maxValue, 120))