示例#1
0
def plot_forecast(model_output, queue):
	"""
	Plots output from R forecast. Uses R functions extracted via rpy2
	(see global vars above).

	Parameters
	----------
	model_output
		R object returned by leptoid.forecasting._forecast_utilization(). Contains
		forecast information (confidence intervals, etc.).
	queue
		leptoid.ServiceQueue with information about the service
	
	Returns nothing, but saves a plot to disk with a timestamp.
	"""
	forecast_method = get_forecast_attribute(model_output, attr='method')
	n = datetime.datetime.now()

	RBMP('%s%s-%s-%i-%i-%i-%i:%i.jpg' %
			(PLOT_DIRECTORY, queue.service, queue.instance_id, n.year,
				n.month, n.day, n.hour, n.minute),
			width=1400, height=800, units='px', type='jpeg')
	RPLOT(model_output, main="Util forecast for %s:%s (using %s)" %
			(queue.service, queue.instance_id, forecast_method),
			xlab="Minutes elapsed since %s" % queue.get_first_timestamp())
	RDEVOFF()
示例#2
0
def plot_forecast(model_output, queue):
    """
	Plots output from R forecast. Uses R functions extracted via rpy2
	(see global vars above).

	Parameters
	----------
	model_output
		R object returned by leptoid.forecasting._forecast_utilization(). Contains
		forecast information (confidence intervals, etc.).
	queue
		leptoid.ServiceQueue with information about the service
	
	Returns nothing, but saves a plot to disk with a timestamp.
	"""
    forecast_method = get_forecast_attribute(model_output, attr='method')
    n = datetime.datetime.now()

    RBMP('%s%s-%s-%i-%i-%i-%i:%i.jpg' %
         (PLOT_DIRECTORY, queue.service, queue.instance_id, n.year, n.month,
          n.day, n.hour, n.minute),
         width=1400,
         height=800,
         units='px',
         type='jpeg')
    RPLOT(model_output,
          main="Util forecast for %s:%s (using %s)" %
          (queue.service, queue.instance_id, forecast_method),
          xlab="Minutes elapsed since %s" % queue.get_first_timestamp())
    RDEVOFF()
示例#3
0
def forecast(queue):
	"""
	Forecasting values using R's forecast package. Series reporting empty data
	over the last ${recent_data_window} minutes will return None.

	Parameters
	----------
	queue
		pandas.TimeSeries with utilization data. Data is extracted from the
		underlying buffer using np.frombuffer.
	service, instance_id
		information for instance, used when plotting

	TODO: Currently Leptoid uses R via rpy2. This will change since rpy2 is
	poorly maintained.
	"""

	LOG.info("Generating forecast for %s:%s" %
			(queue.service, queue.instance_id))

	# Retrieving forecast from rpy2, then extracting the attributes
	# (forecasted utilization, one-step ahead forecast) we want.
	model_output = _forecast_utilization(np.frombuffer(queue.utilization.data))

	# Handling case where output == None, indicating a dormant instance.
	if model_output == None:
		in_sample_forecast = None
		util_estimate = None
	else:
		in_sample_forecast = get_forecast_attribute(model_output, "fitted")
		util_estimate = get_forecast_attribute(model_output, "mean")

		# Let's avoid empty plots
		if np.max(util_estimate) > PLOT_SIGNIFICANCE_THRESHOLD:
			plot_forecast(model_output, queue)

	return (in_sample_forecast, util_estimate)
示例#4
0
def forecast(queue):
    """
	Forecasting values using R's forecast package. Series reporting empty data
	over the last ${recent_data_window} minutes will return None.

	Parameters
	----------
	queue
		pandas.TimeSeries with utilization data. Data is extracted from the
		underlying buffer using np.frombuffer.
	service, instance_id
		information for instance, used when plotting

	TODO: Currently Leptoid uses R via rpy2. This will change since rpy2 is
	poorly maintained.
	"""

    LOG.info("Generating forecast for %s:%s" %
             (queue.service, queue.instance_id))

    # Retrieving forecast from rpy2, then extracting the attributes
    # (forecasted utilization, one-step ahead forecast) we want.
    model_output = _forecast_utilization(np.frombuffer(queue.utilization.data))

    # Handling case where output == None, indicating a dormant instance.
    if model_output == None:
        in_sample_forecast = None
        util_estimate = None
    else:
        in_sample_forecast = get_forecast_attribute(model_output, "fitted")
        util_estimate = get_forecast_attribute(model_output, "mean")

        # Let's avoid empty plots
        if np.max(util_estimate) > PLOT_SIGNIFICANCE_THRESHOLD:
            plot_forecast(model_output, queue)

    return (in_sample_forecast, util_estimate)