~graphite-dev/graphite/graphite-0.9.8

« back to all changes in this revision

Viewing changes to webapp/graphite/render/functions.py

  • Committer: Chris Davis
  • Date: 2011-04-02 19:59:53 UTC
  • Revision ID: chrismd@gmail.com-20110402195953-9wq4n3hvqjni8ujf
attempt to fix Bug #697010

Show diffs side-by-side

added added

removed removed

Lines of Context:
485
485
   return (math.sqrt((newSumOfSquares / float(n)) - (avg * avg)), newSumOfSquares)
486
486
 
487
487
 
488
 
def stdev(requestContext, seriesList,time):
 
488
def stdev(requestContext, seriesList, time):
489
489
  count = 0
490
490
  for series in seriesList:
491
491
    stddevs = TimeSeries("stddev(%s,%.1f)" % (series.name, float(time)), series.start, series.end, series.step, [])
492
492
    stddevs.pathExpression = "stddev(%s,%.1f)" % (series.name, float(time))
493
493
    avg = safeDiv(safeSum(series[:time]), time)
494
494
 
495
 
    sumOfSquares = sum(map(lambda(x): x * x, [v for v in series[:time] if v is not None]))
496
 
    (sd, sumOfSquares) = doStdDev(sumOfSquares, 0, 0, time, avg)
497
 
    stddevs.append(sd)
 
495
    if avg is not None:
 
496
      sumOfSquares = sum(map(lambda(x): x * x, [v for v in series[:time] if v is not None]))
 
497
      (sd, sumOfSquares) = doStdDev(sumOfSquares, 0, 0, time, avg)
 
498
      stddevs.append(sd)
 
499
    else:
 
500
      stddevs.append(None)
498
501
 
499
502
    for (index, el) in enumerate(series[time:]):
500
503
      if el is None:
507
510
      s = safeSum([safeMul(time, avg), el, -toDrop])
508
511
      avg = safeDiv(s, time)
509
512
 
510
 
      (sd, sumOfSquares) = doStdDev(sumOfSquares, toDrop, series[index+time], time, avg)
511
 
      stddevs.append(sd)
 
513
      if avg is not None:
 
514
        (sd, sumOfSquares) = doStdDev(sumOfSquares, toDrop, series[index+time], time, avg)
 
515
        stddevs.append(sd)
 
516
      else:
 
517
        stddevs.append(None)
512
518
 
513
519
    for i in range(0, time-1):
514
520
      stddevs.insert(0, None)