Skip to content

Commit

Permalink
Merge pull request #53 from seveas/master
Browse files Browse the repository at this point in the history
Make moving(Average|Median) generate complete graphs

moving(Average|Median) used to start graphs with a bunch of None's due
to missing data. Instead, fetch the missing data and complete the graph.
  • Loading branch information
mleinart committed Nov 24, 2012
1 parent 5e31ebc commit 16a6868
Showing 1 changed file with 18 additions and 22 deletions.
40 changes: 18 additions & 22 deletions webapp/graphite/render/functions.py
Expand Up @@ -481,21 +481,19 @@ def movingMedian(requestContext, seriesList, windowSize):
newSeries.pathExpression = newName

windowIndex = windowSize - 1
bootstrap = series.step * windowSize
bootstrappedSeries = _fetchWithBootstrap(requestContext, series, seconds=bootstrap)

for i in range( len(series) ):
if i < windowIndex: # Pad the beginning with None's since we don't have enough data
newSeries.append( None )

for i in range(len(series)):
window = bootstrappedSeries[i:i + windowIndex]
nonNull = [v for v in window if v is not None]
if nonNull:
m_index = len(nonNull) / 2
newSeries.append(sorted(nonNull)[m_index])
else:
window = series[i - windowIndex : i + 1]
nonNull = [ v for v in window if v is not None ]
if nonNull:
m_index = len(nonNull) / 2
newSeries.append(sorted(nonNull)[m_index])
else:
newSeries.append(None)
newSeries.append(None)

seriesList[ seriesIndex ] = newSeries
seriesList[seriesIndex] = newSeries

return seriesList

Expand Down Expand Up @@ -588,18 +586,16 @@ def movingAverage(requestContext, seriesList, windowSize):
newSeries.pathExpression = newName

windowIndex = int(windowSize) - 1
bootstrap = series.step * windowSize
bootstrappedSeries = _fetchWithBootstrap(requestContext, series, seconds=bootstrap)

for i in range( len(series) ):
if i < windowIndex: # Pad the beginning with None's since we don't have enough data
newSeries.append( None )

for i in range(len(series)):
window = bootstrappedSeries[i:i + windowIndex]
nonNull = [v for v in window if v is not None]
if nonNull:
newSeries.append(sum(nonNull) / len(nonNull))
else:
window = series[i - windowIndex : i + 1]
nonNull = [ v for v in window if v is not None ]
if nonNull:
newSeries.append( sum(nonNull) / len(nonNull) )
else:
newSeries.append(None)
newSeries.append(None)

seriesList[ seriesIndex ] = newSeries

Expand Down

0 comments on commit 16a6868

Please sign in to comment.