Skip to content

Commit

Permalink
Generalize time period of series bootstrap
Browse files Browse the repository at this point in the history
  • Loading branch information
mleinart committed Nov 24, 2012
1 parent 134eb01 commit 5e31ebc
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions webapp/graphite/render/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1561,11 +1561,10 @@ def secondYAxis(requestContext, seriesList):
series.name= 'secondYAxis(%s)' % series.name
return seriesList

def _fetchWithBootstrap(requestContext, series, days=7):
def _fetchWithBootstrap(requestContext, series, **delta_kwargs):
'Request the same data but with a bootstrap period at the beginning'
previousContext = requestContext.copy()
# go back 1 week to get a solid bootstrap
previousContext['startTime'] = requestContext['startTime'] - timedelta(days)
previousContext['startTime'] = requestContext['startTime'] - timedelta(**delta_kwargs)
previousContext['endTime'] = requestContext['startTime']
oldSeries = evaluateTarget(previousContext, series.pathExpression)[0]

Expand All @@ -1579,7 +1578,7 @@ def _fetchWithBootstrap(requestContext, series, days=7):
newValues.extend(series)

newSeries = TimeSeries(series.name, oldSeries.start, series.end, series.step, newValues)
newSeries.pathExpression = series.name
newSeries.pathExpression = series.pathExpression
return newSeries

def _trimBootstrap(bootstrap, original):
Expand Down Expand Up @@ -1706,7 +1705,7 @@ def holtWintersForecast(requestContext, seriesList):
"""
results = []
for series in seriesList:
withBootstrap = _fetchWithBootstrap(requestContext, series)
withBootstrap = _fetchWithBootstrap(requestContext, series, days=7)
analysis = holtWintersAnalysis(withBootstrap)
results.append(_trimBootstrap(analysis['predictions'], series))
return results
Expand All @@ -1718,7 +1717,7 @@ def holtWintersConfidenceBands(requestContext, seriesList, delta=3):
"""
results = []
for series in seriesList:
bootstrap = _fetchWithBootstrap(requestContext, series)
bootstrap = _fetchWithBootstrap(requestContext, series, days=7)
analysis = holtWintersAnalysis(bootstrap)
forecast = _trimBootstrap(analysis['predictions'], series)
deviation = _trimBootstrap(analysis['deviations'], series)
Expand Down Expand Up @@ -1758,7 +1757,7 @@ def holtWintersAberration(requestContext, seriesList, delta=3):
results = []
for series in seriesList:
confidenceBands = holtWintersConfidenceBands(requestContext, [series], delta)
bootstrapped = _fetchWithBootstrap(requestContext, series)
bootstrapped = _fetchWithBootstrap(requestContext, series, days=7)
series = _trimBootstrap(bootstrapped, series)
lowerBand = confidenceBands[0]
upperBand = confidenceBands[1]
Expand Down

0 comments on commit 5e31ebc

Please sign in to comment.