diff --git a/configuration.ipynb b/00.configuration.ipynb similarity index 89% rename from configuration.ipynb rename to 00.configuration.ipynb index efba65a2..2543b97c 100644 --- a/configuration.ipynb +++ b/00.configuration.ipynb @@ -140,7 +140,7 @@ "* Your subscription id\n", "* The resource group name\n", "\n", - "**Note**: As with other Azure services, there are limits on certain resources (for eg. AmlCompute quota) associated with the Azure Machine Learning service. Please read [this article](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-manage-quotas) on the default limits and how to request more quota." + "**Note**: As with other Azure services, there are limits on certain resources (for eg. BatchAI cluster size) associated with the Azure Machine Learning service. Please read [this article](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-manage-quotas) on the default limits and how to request more quota." ] }, { @@ -210,7 +210,7 @@ "source": [ "## Create compute resources for your training experiments\n", "\n", - "Many of the subsequent examples use Azure Machine Learning managed compute (AmlCompute) to train models at scale. To create a **CPU** cluster now, run the cell below. The autoscale settings mean that the cluster will scale down to 0 nodes when inactive and up to 4 nodes when busy." + "Many of the subsequent examples use BatchAI clusters to train models at scale. To create a **CPU** cluster now, run the cell below. The autoscale settings mean that the cluster will scale down to 0 nodes when inactive and up to 4 nodes when busy." ] }, { @@ -219,7 +219,7 @@ "metadata": {}, "outputs": [], "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", "from azureml.core.compute_target import ComputeTargetException\n", "\n", "# Choose a name for your CPU cluster\n", @@ -230,8 +230,10 @@ " cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)\n", " print('Found existing cluster, use it.')\n", "except ComputeTargetException:\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',\n", - " max_nodes=4)\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_D2_V2', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", " cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)\n", "\n", "cpu_cluster.wait_for_completion(show_output=True)" @@ -250,7 +252,7 @@ "metadata": {}, "outputs": [], "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", "from azureml.core.compute_target import ComputeTargetException\n", "\n", "# Choose a name for your GPU cluster\n", @@ -261,8 +263,10 @@ " gpu_cluster = ComputeTarget(workspace=ws, name=gpu_cluster_name)\n", " print('Found existing cluster, use it.')\n", "except ComputeTargetException:\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',\n", - " max_nodes=4)\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", " gpu_cluster = ComputeTarget.create(ws, gpu_cluster_name, compute_config)\n", "\n", "gpu_cluster.wait_for_completion(show_output=True)" @@ -291,9 +295,9 @@ } ], "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.6", "language": "python", - "name": "python3" + "name": "python36" }, "language_info": { "codemirror_mode": { @@ -305,7 +309,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.2" + "version": "3.6.6" } }, "nbformat": 4, diff --git a/01.getting-started/01.train-within-notebook/01.train-within-notebook.ipynb b/01.getting-started/01.train-within-notebook/01.train-within-notebook.ipynb new file mode 100644 index 00000000..d19e859e --- /dev/null +++ b/01.getting-started/01.train-within-notebook/01.train-within-notebook.ipynb @@ -0,0 +1,808 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 01. Train in the Notebook & Deploy Model to ACI\n", + "\n", + "* Load workspace\n", + "* Train a simple regression model directly in the Notebook python kernel\n", + "* Record run history\n", + "* Find the best model in run history and download it.\n", + "* Deploy the model as an Azure Container Instance (ACI)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "1. Make sure you go through the [00. Installation and Configuration](../../00.configuration.ipynb) Notebook first if you haven't. \n", + "\n", + "2. Install following pre-requisite libraries to your conda environment and restart notebook.\n", + "```shell\n", + "(myenv) $ conda install -y matplotlib tqdm scikit-learn\n", + "```\n", + "\n", + "3. Check that ACI is registered for your Azure Subscription. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!az provider show -n Microsoft.ContainerInstance -o table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If ACI is not registered, run following command to register it. Note that you have to be a subscription owner, or this command will fail." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!az provider register -n Microsoft.ContainerInstance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Validate Azure ML SDK installation and get version number for debugging purposes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "install" + ] + }, + "outputs": [], + "source": [ + "from azureml.core import Experiment, Run, Workspace\n", + "import azureml.core\n", + "\n", + "# Check core SDK version number\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create workspace" + ] + }, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set experiment name\n", + "Choose a name for experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'train-in-notebook'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start a training run in local Notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load diabetes dataset, a well-known small dataset that comes with scikit-learn\n", + "from sklearn.datasets import load_diabetes\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.externals import joblib\n", + "\n", + "X, y = load_diabetes(return_X_y = True)\n", + "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "data = {\n", + " \"train\":{\"X\": X_train, \"y\": y_train}, \n", + " \"test\":{\"X\": X_test, \"y\": y_test}\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train a simple Ridge model\n", + "Train a very simple Ridge regression model in scikit-learn, and save it as a pickle file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "reg = Ridge(alpha = 0.03)\n", + "reg.fit(X=data['train']['X'], y=data['train']['y'])\n", + "preds = reg.predict(data['test']['X'])\n", + "print('Mean Squared Error is', mean_squared_error(data['test']['y'], preds))\n", + "joblib.dump(value=reg, filename='model.pkl');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add experiment tracking\n", + "Now, let's add Azure ML experiment logging, and upload persisted model into run record as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "local run", + "outputs upload" + ] + }, + "outputs": [], + "source": [ + "experiment = Experiment(workspace=ws, name=experiment_name)\n", + "run = experiment.start_logging()\n", + "\n", + "run.tag(\"Description\",\"My first run!\")\n", + "run.log('alpha', 0.03)\n", + "reg = Ridge(alpha=0.03)\n", + "reg.fit(data['train']['X'], data['train']['y'])\n", + "preds = reg.predict(data['test']['X'])\n", + "run.log('mse', mean_squared_error(data['test']['y'], preds))\n", + "joblib.dump(value=reg, filename='model.pkl')\n", + "run.upload_file(name='outputs/model.pkl', path_or_stream='./model.pkl')\n", + "\n", + "run.complete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can browse to the recorded run. Please make sure you use Chrome to navigate the run history page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simple parameter sweep\n", + "Sweep over alpha values of a sklearn ridge model, and capture metrics and trained model in the Azure ML experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import os\n", + "from tqdm import tqdm\n", + "\n", + "model_name = \"model.pkl\"\n", + "\n", + "# list of numbers from 0 to 1.0 with a 0.05 interval\n", + "alphas = np.arange(0.0, 1.0, 0.05)\n", + "\n", + "# try a bunch of alpha values in a Linear Regression (Ridge) model\n", + "for alpha in tqdm(alphas):\n", + " # create a bunch of runs, each train a model with a different alpha value\n", + " with experiment.start_logging() as run:\n", + " # Use Ridge algorithm to build a regression model\n", + " reg = Ridge(alpha=alpha)\n", + " reg.fit(X=data[\"train\"][\"X\"], y=data[\"train\"][\"y\"])\n", + " preds = reg.predict(X=data[\"test\"][\"X\"])\n", + " mse = mean_squared_error(y_true=data[\"test\"][\"y\"], y_pred=preds)\n", + "\n", + " # log alpha, mean_squared_error and feature names in run history\n", + " run.log(name=\"alpha\", value=alpha)\n", + " run.log(name=\"mse\", value=mse)\n", + " run.log_list(name=\"columns\", value=columns)\n", + "\n", + " with open(model_name, \"wb\") as file:\n", + " joblib.dump(value=reg, filename=file)\n", + " \n", + " # upload the serialized model into run history record\n", + " run.upload_file(name=\"outputs/\" + model_name, path_or_stream=model_name)\n", + "\n", + " # now delete the serialized model from local folder since it is already uploaded to run history \n", + " os.remove(path=model_name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now let's take a look at the experiment in Azure portal.\n", + "experiment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Select best model from the experiment\n", + "Load all experiment run metrics recursively from the experiment into a dictionary object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "runs = {}\n", + "run_metrics = {}\n", + "\n", + "for r in tqdm(experiment.get_runs()):\n", + " metrics = r.get_metrics()\n", + " if 'mse' in metrics.keys():\n", + " runs[r.id] = r\n", + " run_metrics[r.id] = metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now find the run with the lowest Mean Squared Error value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run_id = min(run_metrics, key = lambda k: run_metrics[k]['mse'])\n", + "best_run = runs[best_run_id]\n", + "print('Best run is:', best_run_id)\n", + "print('Metrics:', run_metrics[best_run_id])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can add tags to your runs to make them easier to catalog" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history" + ] + }, + "outputs": [], + "source": [ + "best_run.tag(key=\"Description\", value=\"The best one\")\n", + "best_run.get_tags()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot MSE over alpha\n", + "\n", + "Let's observe the best model visually by plotting the MSE values over alpha values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "\n", + "best_alpha = run_metrics[best_run_id]['alpha']\n", + "min_mse = run_metrics[best_run_id]['mse']\n", + "\n", + "alpha_mse = np.array([(run_metrics[k]['alpha'], run_metrics[k]['mse']) for k in run_metrics.keys()])\n", + "sorted_alpha_mse = alpha_mse[alpha_mse[:,0].argsort()]\n", + "\n", + "plt.plot(sorted_alpha_mse[:,0], sorted_alpha_mse[:,1], 'r--')\n", + "plt.plot(sorted_alpha_mse[:,0], sorted_alpha_mse[:,1], 'bo')\n", + "\n", + "plt.xlabel('alpha', fontsize = 14)\n", + "plt.ylabel('mean squared error', fontsize = 14)\n", + "plt.title('MSE over alpha', fontsize = 16)\n", + "\n", + "# plot arrow\n", + "plt.arrow(x = best_alpha, y = min_mse + 39, dx = 0, dy = -26, ls = '-', lw = 0.4,\n", + " width = 0, head_width = .03, head_length = 8)\n", + "\n", + "# plot \"best run\" text\n", + "plt.text(x = best_alpha - 0.08, y = min_mse + 50, s = 'Best Run', fontsize = 14)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the best model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find the model file saved in the run record of best run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history" + ] + }, + "outputs": [], + "source": [ + "for f in best_run.get_file_names():\n", + " print(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can register this model in the model registry of the workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from history" + ] + }, + "outputs": [], + "source": [ + "model = best_run.register_model(model_name='best_model', model_path='outputs/model.pkl')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verify that the model has been registered properly. If you have done this several times you'd see the version number auto-increases each time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from history" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "models = Model.list(workspace=ws, name='best_model')\n", + "for m in models:\n", + " print(m.name, m.version)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also download the registered model. Afterwards, you should see a `model.pkl` file in the current directory. You can then use it for local testing if you'd like." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "download file" + ] + }, + "outputs": [], + "source": [ + "# remove the model file if it is already on disk\n", + "if os.path.isfile('model.pkl'): \n", + " os.remove('model.pkl')\n", + "# download the model\n", + "model.download(target_dir=\"./\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scoring script\n", + "\n", + "Now we are ready to build a Docker image and deploy the model in it as a web service. The first step is creating the scoring script. For convenience, we have created the scoring script for you. It is printed below as text, but you can also run `%pfile ./score.py` in a cell to show the file.\n", + "\n", + "Tbe scoring script consists of two functions: `init` that is used to load the model to memory when starting the container, and `run` that makes the prediction when web service is called. Please pay special attention to how the model is loaded in the `init()` function. When Docker image is built for this model, the actual model file is downloaded and placed on disk, and `get_model_path` function returns the local path where the model is placed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./score.py', 'r') as scoring_script:\n", + " print(scoring_script.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create environment dependency file\n", + "\n", + "We need a environment dependency file `myenv.yml` to specify which libraries are needed by the scoring script when building the Docker image for web service deployment. We can manually create this file, or we can use the `CondaDependencies` API to automatically create this file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(conda_packages=[\"scikit-learn\"])\n", + "print(myenv.serialize_to_string())\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy web service into an Azure Container Instance\n", + "The deployment process takes the registered model and your scoring scrip, and builds a Docker image. It then deploys the Docker image into Azure Container Instance as a running container with an HTTP endpoint readying for scoring calls. Read more about [Azure Container Instance](https://azure.microsoft.com/en-us/services/container-instances/).\n", + "\n", + "Note ACI is great for quick and cost-effective dev/test deployment scenarios. For production workloads, please use [Azure Kubernentes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/) instead. Please follow in struction in [this notebook](11.production-deploy-to-aks.ipynb) to see how that can be done from Azure ML.\n", + " \n", + "** Note: ** The web service creation can take 6-7 minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice, Webservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", + " memory_gb=1, \n", + " tags={'sample name': 'AML 101'}, \n", + " description='This is a great example.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note the below `WebService.deploy_from_model()` function takes a model object registered under the workspace. It then bakes the model file in the Docker image so it can be looked-up using the `Model.get_model_path()` function in `score.py`. \n", + "\n", + "If you have a local model file instead of a registered model object, you can also use the `WebService.deploy()` function which would register the model and then deploy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "image_config = ContainerImage.image_configuration(execution_script=\"score.py\", \n", + " runtime=\"python\", \n", + " conda_file=\"myenv.yml\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "%%time\n", + "# this will take 5-10 minutes to finish\n", + "# you can also use \"az container list\" command to find the ACI being deployed\n", + "service = Webservice.deploy_from_model(name='my-aci-svc',\n", + " deployment_config=aciconfig,\n", + " models=[model],\n", + " image_config=image_config,\n", + " workspace=ws)\n", + "\n", + "service.wait_for_deployment(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Test web service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "print('web service is hosted in ACI:', service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the `run` API to call the web service with one row of data to get a prediction." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "import json\n", + "# score the first row from the test set.\n", + "test_samples = json.dumps({\"data\": X_test[0:1, :].tolist()})\n", + "service.run(input_data = test_samples)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Feed the entire test set and calculate the errors (residual values)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "# score the entire test set.\n", + "test_samples = json.dumps({'data': X_test.tolist()})\n", + "\n", + "result = service.run(input_data = test_samples)\n", + "residual = result - y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also send raw HTTP request to test the web service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "\n", + "# 2 rows of input data, each with 10 made-up numerical features\n", + "input_data = \"{\\\"data\\\": [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}\"\n", + "\n", + "headers = {'Content-Type':'application/json'}\n", + "\n", + "# for AKS deployment you'd need to the service key in the header as well\n", + "# api_key = service.get_key()\n", + "# headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)} \n", + "\n", + "resp = requests.post(service.scoring_uri, input_data, headers = headers)\n", + "print(resp.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Residual graph\n", + "Plot a residual value graph to chart the errors on the entire test set. Observe the nice bell curve." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f, (a0, a1) = plt.subplots(1, 2, gridspec_kw={'width_ratios':[3, 1], 'wspace':0, 'hspace': 0})\n", + "f.suptitle('Residual Values', fontsize = 18)\n", + "\n", + "f.set_figheight(6)\n", + "f.set_figwidth(14)\n", + "\n", + "a0.plot(residual, 'bo', alpha=0.4);\n", + "a0.plot([0,90], [0,0], 'r', lw=2)\n", + "a0.set_ylabel('residue values', fontsize=14)\n", + "a0.set_xlabel('test data set', fontsize=14)\n", + "\n", + "a1.hist(residual, orientation='horizontal', color='blue', bins=10, histtype='step');\n", + "a1.hist(residual, orientation='horizontal', color='blue', alpha=0.2, bins=10);\n", + "a1.set_yticklabels([])\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Delete ACI to clean up" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Deleting ACI is super fast!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "%%time\n", + "service.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/train-within-notebook/score.py b/01.getting-started/01.train-within-notebook/score.py similarity index 100% rename from getting-started/train-within-notebook/score.py rename to 01.getting-started/01.train-within-notebook/score.py diff --git a/01.getting-started/02.train-on-local/02.train-on-local.ipynb b/01.getting-started/02.train-on-local/02.train-on-local.ipynb new file mode 100644 index 00000000..d2ccdcc1 --- /dev/null +++ b/01.getting-started/02.train-on-local/02.train-on-local.ipynb @@ -0,0 +1,477 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 02. Train locally\n", + "* Create or load workspace.\n", + "* Create scripts locally.\n", + "* Create `train.py` in a folder, along with a `my.lib` file.\n", + "* Configure & execute a local run in a user-managed Python environment.\n", + "* Configure & execute a local run in a system-managed Python environment.\n", + "* Configure & execute a local run in a Docker environment.\n", + "* Query run metrics to find the best model\n", + "* Register model for operationalization." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create An Experiment\n", + "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "experiment_name = 'train-on-local'\n", + "exp = Experiment(workspace=ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## View `train.py`\n", + "\n", + "`train.py` is already created for you." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./train.py', 'r') as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note `train.py` also references a `mylib.py` file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./mylib.py', 'r') as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure & Run\n", + "### User-managed environment\n", + "Below, we use a user-managed run, which means you are responsible to ensure all the necessary packages are available in the Python environment you choose to run the script." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "\n", + "# Editing a run configuration property on-fly.\n", + "run_config_user_managed = RunConfiguration()\n", + "\n", + "run_config_user_managed.environment.python.user_managed_dependencies = True\n", + "\n", + "# You can choose a specific Python environment by pointing to a Python path \n", + "#run_config.environment.python.interpreter_path = '/home/johndoe/miniconda3/envs/sdk2/bin/python'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Submit script to run in the user-managed environment\n", + "Note whole script folder is submitted for execution, including the `mylib.py` file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import ScriptRunConfig\n", + "\n", + "src = ScriptRunConfig(source_directory='./', script='train.py', run_config=run_config_user_managed)\n", + "run = exp.submit(src)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Get run history details" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Block to wait till run finishes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### System-managed environment\n", + "You can also ask the system to build a new conda environment and execute your scripts in it. The environment is built once and will be reused in subsequent executions as long as the conda dependencies remain unchanged. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "run_config_system_managed = RunConfiguration()\n", + "\n", + "run_config_system_managed.environment.python.user_managed_dependencies = False\n", + "run_config_system_managed.auto_prepare_environment = True\n", + "\n", + "# Specify conda dependencies with scikit-learn\n", + "cd = CondaDependencies.create(conda_packages=['scikit-learn'])\n", + "run_config_system_managed.environment.python.conda_dependencies = cd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Submit script to run in the system-managed environment\n", + "A new conda environment is built based on the conda dependencies object. If you are running this for the first time, this might take up to 5 mninutes. But this conda environment is reused so long as you don't change the conda dependencies." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src = ScriptRunConfig(source_directory=\"./\", script='train.py', run_config=run_config_system_managed)\n", + "run = exp.submit(src)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Get run history details" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Block and wait till run finishes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Docker-based execution\n", + "**IMPORTANT**: You must have Docker engine installed locally in order to use this execution mode. If your kernel is already running in a Docker container, such as **Azure Notebooks**, this mode will **NOT** work.\n", + "\n", + "You can also ask the system to pull down a Docker image and execute your scripts in it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run_config_docker = RunConfiguration()\n", + "run_config_docker.environment.python.user_managed_dependencies = False\n", + "run_config_docker.auto_prepare_environment = True\n", + "run_config_docker.environment.docker.enabled = True\n", + "run_config_docker.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", + "\n", + "# Specify conda dependencies with scikit-learn\n", + "cd = CondaDependencies.create(conda_packages=['scikit-learn'])\n", + "run_config_docker.environment.python.conda_dependencies = cd\n", + "\n", + "src = ScriptRunConfig(source_directory=\"./\", script='train.py', run_config=run_config_docker)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Submit script to run in the system-managed environment\n", + "A new conda environment is built based on the conda dependencies object. If you are running this for the first time, this might take up to 5 mninutes. But this conda environment is reused so long as you don't change the conda dependencies.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import subprocess\n", + "\n", + "# Check if Docker is installed and Linux containers are enables\n", + "if subprocess.run(\"docker -v\", shell=True) == 0:\n", + " out = subprocess.check_output(\"docker system info\", shell=True, encoding=\"ascii\").split(\"\\n\")\n", + " if not \"OSType: linux\" in out:\n", + " print(\"Switch Docker engine to use Linux containers.\")\n", + " else:\n", + " run = exp.submit(src)\n", + "else:\n", + " print(\"Docker engine not installed.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Get run history details\n", + "run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query run metrics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history", + "get metrics" + ] + }, + "outputs": [], + "source": [ + "# get all metris logged in the run\n", + "run.get_metrics()\n", + "metrics = run.get_metrics()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's find the model that has the lowest MSE value logged." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "best_alpha = metrics['alpha'][np.argmin(metrics['mse'])]\n", + "\n", + "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", + " min(metrics['mse']), \n", + " best_alpha\n", + "))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also list all the files that are associated with this run record" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know the model `ridge_0.40.pkl` is the best performing model from the eariler queries. So let's register it with the workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# supply a model name, and the full path to the serialized model file.\n", + "model = run.register_model(model_name='best_ridge_model', model_path='./outputs/ridge_0.40.pkl')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(model.name, model.version, model.url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you can deploy this model following the example in the 01 notebook." + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/train-on-local/mylib.py b/01.getting-started/02.train-on-local/mylib.py similarity index 100% rename from getting-started/train-on-local/mylib.py rename to 01.getting-started/02.train-on-local/mylib.py diff --git a/getting-started/train-on-local/train.py b/01.getting-started/02.train-on-local/train.py similarity index 100% rename from getting-started/train-on-local/train.py rename to 01.getting-started/02.train-on-local/train.py diff --git a/01.getting-started/03.train-on-aci/03.train-on-aci.ipynb b/01.getting-started/03.train-on-aci/03.train-on-aci.ipynb new file mode 100644 index 00000000..c8a1fb35 --- /dev/null +++ b/01.getting-started/03.train-on-aci/03.train-on-aci.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 03. Train on Azure Container Instance\n", + "\n", + "* Create Workspace\n", + "* Create `train.py` in the project folder.\n", + "* Configure an ACI (Azure Container Instance) run\n", + "* Execute in ACI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create workspace" + ] + }, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create An Experiment\n", + "\n", + "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "experiment_name = 'train-on-aci'\n", + "experiment = Experiment(workspace = ws, name = experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Remote execution on ACI\n", + "\n", + "The training script `train.py` is already created for you. Let's have a look." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./train.py', 'r') as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure for using ACI\n", + "Linux-based ACI is available in `West US`, `East US`, `West Europe`, `North Europe`, `West US 2`, `Southeast Asia`, `Australia East`, `East US 2`, and `Central US` regions. See details [here](https://docs.microsoft.com/en-us/azure/container-instances/container-instances-quotas#region-availability)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "configure run" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "# create a new runconfig object\n", + "run_config = RunConfiguration()\n", + "\n", + "# signal that you want to use ACI to execute script.\n", + "run_config.target = \"containerinstance\"\n", + "\n", + "# ACI container group is only supported in certain regions, which can be different than the region the Workspace is in.\n", + "run_config.container_instance.region = 'eastus2'\n", + "\n", + "# set the ACI CPU and Memory \n", + "run_config.container_instance.cpu_cores = 1\n", + "run_config.container_instance.memory_gb = 2\n", + "\n", + "# enable Docker \n", + "run_config.environment.docker.enabled = True\n", + "\n", + "# set Docker base image to the default CPU-based image\n", + "run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", + "\n", + "# use conda_dependencies.yml to create a conda environment in the Docker image for execution\n", + "run_config.environment.python.user_managed_dependencies = False\n", + "\n", + "# auto-prepare the Docker image when used for execution (if it is not already prepared)\n", + "run_config.auto_prepare_environment = True\n", + "\n", + "# specify CondaDependencies obj\n", + "run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Submit the Experiment\n", + "Finally, run the training job on the ACI" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remote run", + "aci" + ] + }, + "outputs": [], + "source": [ + "%%time \n", + "from azureml.core.script_run_config import ScriptRunConfig\n", + "\n", + "script_run_config = ScriptRunConfig(source_directory='./',\n", + " script='train.py',\n", + " run_config=run_config)\n", + "\n", + "run = experiment.submit(script_run_config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history" + ] + }, + "outputs": [], + "source": [ + "# Show run details\n", + "run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remote run", + "aci" + ] + }, + "outputs": [], + "source": [ + "%%time\n", + "# Shows output of the run on stdout.\n", + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "get metrics" + ] + }, + "outputs": [], + "source": [ + "# get all metris logged in the run\n", + "run.get_metrics()\n", + "metrics = run.get_metrics()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", + " min(metrics['mse']), \n", + " metrics['alpha'][np.argmin(metrics['mse'])]\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# show all the files stored within the run record\n", + "run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you can take a model produced here, register it and then deploy as a web service." + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/train-on-aci/train.py b/01.getting-started/03.train-on-aci/train.py similarity index 100% rename from getting-started/train-on-aci/train.py rename to 01.getting-started/03.train-on-aci/train.py diff --git a/01.getting-started/04.train-on-remote-vm/04.train-on-remote-vm.ipynb b/01.getting-started/04.train-on-remote-vm/04.train-on-remote-vm.ipynb new file mode 100644 index 00000000..407bcc03 --- /dev/null +++ b/01.getting-started/04.train-on-remote-vm/04.train-on-remote-vm.ipynb @@ -0,0 +1,621 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 04. Train in a remote Linux VM\n", + "* Create Workspace\n", + "* Create `train.py` file\n", + "* Create (or attach) DSVM as compute resource.\n", + "* Upoad data files into default datastore\n", + "* Configure & execute a run in a few different ways\n", + " - Use system-built conda\n", + " - Use existing Python environment\n", + " - Use Docker \n", + "* Find the best model in the run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Experiment\n", + "\n", + "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'train-on-remote-vm'\n", + "\n", + "from azureml.core import Experiment\n", + "exp = Experiment(workspace=ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's also create a local folder to hold the training script." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "script_folder = './vm-run'\n", + "os.makedirs(script_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload data files into datastore\n", + "Every workspace comes with a default datastore (and you can register more) which is backed by the Azure blob storage account associated with the workspace. We can use it to transfer data from local to the cloud, and access it from the compute target." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get the default datastore\n", + "ds = ws.get_default_datastore()\n", + "print(ds.name, ds.datastore_type, ds.account_name, ds.container_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load diabetes data from `scikit-learn` and save it as 2 local files." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_diabetes\n", + "import numpy as np\n", + "\n", + "training_data = load_diabetes()\n", + "np.save(file='./features.npy', arr=training_data['data'])\n", + "np.save(file='./labels.npy', arr=training_data['target'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's upload the 2 files into the default datastore under a path named `diabetes`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds.upload_files(['./features.npy', './labels.npy'], target_path='diabetes', overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## View `train.py`\n", + "\n", + "For convenience, we created a training script for you. It is printed below as a text, but you can also run `%pfile ./train.py` in a cell to show the file. Please pay special attention on how we are loading the features and labels from files in the `data_folder` path, which is passed in as an argument of the training script (shown later)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# copy train.py into the script folder\n", + "import shutil\n", + "shutil.copy('./train.py', os.path.join(script_folder, 'train.py'))\n", + "\n", + "with open(os.path.join(script_folder, './train.py'), 'r') as training_script:\n", + " print(training_script.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Linux DSVM as a compute target\n", + "\n", + "**Note**: If creation fails with a message about Marketplace purchase eligibilty, go to portal.azure.com, start creating DSVM there, and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled it, you can exit without actually creating VM.\n", + " \n", + "**Note**: By default SSH runs on port 22 and you don't need to specify it. But if for security reasons you switch to a different port (such as 5022), you can specify the port number in the provisioning configuration object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import DsvmCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "compute_target_name = 'mydsvm'\n", + "\n", + "try:\n", + " dsvm_compute = DsvmCompute(workspace=ws, name=compute_target_name)\n", + " print('found existing:', dsvm_compute.name)\n", + "except ComputeTargetException:\n", + " print('creating new.')\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size=\"Standard_D2_v2\")\n", + " dsvm_compute = DsvmCompute.create(ws, name=compute_target_name, provisioning_configuration=dsvm_config)\n", + " dsvm_compute.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Attach an existing Linux DSVM\n", + "You can also attach an existing Linux VM as a compute target. The default port is 22." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "from azureml.core.compute import RemoteCompute \n", + "# if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase \n", + "attached_dsvm_compute = RemoteCompute.attach(workspace=ws,\n", + " name=\"attached_vm\",\n", + " username='',\n", + " address='',\n", + " ssh_port=22,\n", + " password='')\n", + "attached_dsvm_compute.wait_for_completion(show_output=True)\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure & Run\n", + "First let's create a `DataReferenceConfiguration` object to inform the system what data folder to download to the copmute target." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import DataReferenceConfiguration\n", + "dr = DataReferenceConfiguration(datastore_name=ds.name, \n", + " path_on_datastore='diabetes', \n", + " mode='download', # download files from datastore to compute target\n", + " overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can try a few different ways to run the training script in the VM." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conda run\n", + "You can ask the system to build a conda environment based on your dependency specification, and submit your script to run there. Once the environment is built, and if you don't change your dependencies, it will be reused in subsequent runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "# create a new RunConfig object\n", + "conda_run_config = RunConfiguration(framework=\"python\")\n", + "\n", + "# Set compute target to the Linux DSVM\n", + "conda_run_config.target = dsvm_compute.name\n", + "\n", + "# set the data reference of the run configuration\n", + "conda_run_config.data_references = {ds.name: dr}\n", + "\n", + "# specify CondaDependencies obj\n", + "conda_run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Run\n", + "from azureml.core import ScriptRunConfig\n", + "\n", + "src = ScriptRunConfig(source_directory=script_folder, \n", + " script='train.py', \n", + " run_config=conda_run_config, \n", + " # pass the datastore reference as a parameter to the training script\n", + " arguments=['--data-folder', str(ds.as_download())] \n", + " ) \n", + "run = exp.submit(config=src)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Show the run object. You can navigate to the Azure portal to see detailed information about the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Native VM run\n", + "You can also configure to use an exiting Python environment in the VM to execute the script without asking the system to create a conda environment for you." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create a new RunConfig object\n", + "vm_run_config = RunConfiguration(framework=\"python\")\n", + "\n", + "# Set compute target to the Linux DSVM\n", + "vm_run_config.target = dsvm_compute.name\n", + "\n", + "# set the data reference of the run coonfiguration\n", + "conda_run_config.data_references = {ds.name: dr}\n", + "\n", + "# Let system know that you will configure the Python environment yourself.\n", + "vm_run_config.environment.python.user_managed_dependencies = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The below run will likely fail because `train.py` needs dependency `azureml`, `scikit-learn` and others, which are not found in that Python environment. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src = ScriptRunConfig(source_directory=script_folder, \n", + " script='train.py', \n", + " run_config=vm_run_config,\n", + " # pass the datastore reference as a parameter to the training script\n", + " arguments=['--data-folder', str(ds.as_download())])\n", + "run = exp.submit(config=src)\n", + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can choose to SSH into the VM and install Azure ML SDK, and any other missing dependencies, in that Python environment. For demonstration purposes, we simply are going to create another script `train2.py` that doesn't have azureml dependencies, and submit it instead." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $script_folder/train2.py\n", + "\n", + "print('####################################')\n", + "print('Hello World (without Azure ML SDK)!')\n", + "print('####################################')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's try again. And this time it should work fine." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src = ScriptRunConfig(source_directory=script_folder, \n", + " script='train2.py', \n", + " run_config=vm_run_config)\n", + "run = exp.submit(config=src)\n", + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note even in this case you get a run record with some basic statistics." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure a Docker run with new conda environment on the VM\n", + "You can execute in a Docker container in the VM. If you choose this option, the system will pull down a base Docker image, build a new conda environment in it if you ask for (you can also skip this if you are using a customer Docker image when a preconfigured Python environment), start a container, and run your script in there. This image is also uploaded into your ACR (Azure Container Registry) assoicated with your workspace, an reused if your dependencies don't change in the subsequent runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "\n", + "# Load the \"cpu-dsvm.runconfig\" file (created by the above attach operation) in memory\n", + "docker_run_config = RunConfiguration(framework=\"python\")\n", + "\n", + "# Set compute target to the Linux DSVM\n", + "docker_run_config.target = dsvm_compute.name\n", + "\n", + "# Use Docker in the remote VM\n", + "docker_run_config.environment.docker.enabled = True\n", + "\n", + "# Use CPU base image from DockerHub\n", + "docker_run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", + "print('Base Docker image is:', docker_run_config.environment.docker.base_image)\n", + "\n", + "# set the data reference of the run coonfiguration\n", + "docker_run_config.data_references = {ds.name: dr}\n", + "\n", + "# specify CondaDependencies obj\n", + "docker_run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit the Experiment\n", + "Submit script to run in the Docker image in the remote VM. If you run this for the first time, the system will download the base image, layer in packages specified in the `conda_dependencies.yml` file on top of the base image, create a container and then execute the script in the container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src = ScriptRunConfig(source_directory=script_folder, \n", + " script='train.py', \n", + " run_config=docker_run_config,\n", + " # pass the datastore reference as a parameter to the training script\n", + " arguments=['--data-folder', str(ds.as_download())])\n", + "run = exp.submit(config=src)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### View run history details" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Find the best model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have tried various execution modes, we can find the best model from the last run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get all metris logged in the run\n", + "run.get_metrics()\n", + "metrics = run.get_metrics()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find the index where MSE is the smallest\n", + "indices = list(range(0, len(metrics['mse'])))\n", + "min_mse_index = min(indices, key=lambda x: metrics['mse'][x])\n", + "\n", + "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", + " metrics['mse'][min_mse_index], \n", + " metrics['alpha'][min_mse_index]\n", + "))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clean up compute resource" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dsvm_compute.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "haining" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/train-on-remote-vm/train.py b/01.getting-started/04.train-on-remote-vm/train.py similarity index 100% rename from getting-started/train-on-remote-vm/train.py rename to 01.getting-started/04.train-on-remote-vm/train.py diff --git a/01.getting-started/05.train-in-spark/05.train-in-spark.ipynb b/01.getting-started/05.train-in-spark/05.train-in-spark.ipynb new file mode 100644 index 00000000..5a7c83b9 --- /dev/null +++ b/01.getting-started/05.train-in-spark/05.train-in-spark.ipynb @@ -0,0 +1,331 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 05. Train in Spark\n", + "* Create Workspace\n", + "* Create Experiment\n", + "* Copy relevant files to the script folder\n", + "* Configure and Run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Experiment\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'train-on-spark'\n", + "\n", + "from azureml.core import Experiment\n", + "exp = Experiment(workspace=ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## View `train-spark.py`\n", + "\n", + "For convenience, we created a training script for you. It is printed below as a text, but you can also run `%pfile ./train-spark.py` in a cell to show the file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('train-spark.py', 'r') as training_script:\n", + " print(training_script.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure & Run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure an ACI run\n", + "Before you try running on an actual Spark cluster, you can use a Docker image with Spark already baked in, and run it in ACI(Azure Container Registry)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "# use pyspark framework\n", + "aci_run_config = RunConfiguration(framework=\"pyspark\")\n", + "\n", + "# use ACI to run the Spark job\n", + "aci_run_config.target = 'containerinstance'\n", + "aci_run_config.container_instance.region = 'eastus2'\n", + "aci_run_config.container_instance.cpu_cores = 1\n", + "aci_run_config.container_instance.memory_gb = 2\n", + "\n", + "# specify base Docker image to use\n", + "aci_run_config.environment.docker.enabled = True\n", + "aci_run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_MMLSPARK_CPU_IMAGE\n", + "\n", + "# specify CondaDependencies\n", + "cd = CondaDependencies()\n", + "cd.add_conda_package('numpy')\n", + "aci_run_config.environment.python.conda_dependencies = cd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit script to ACI to run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import ScriptRunConfig\n", + "\n", + "script_run_config = ScriptRunConfig(source_directory = '.',\n", + " script= 'train-spark.py',\n", + " run_config = aci_run_config)\n", + "run = exp.submit(script_run_config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note** you can also create a new VM, or attach an existing VM, and use Docker-based execution to run the Spark job. Please see the `04.train-in-vm` for example on how to configure and run in Docker mode in a VM." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Attach an HDI cluster\n", + "Now we can use a real Spark cluster, HDInsight for Spark, to run this job. To use HDI commpute target:\n", + " 1. Create a Spark for HDI cluster in Azure. Here are some [quick instructions](https://docs.microsoft.com/en-us/azure/hdinsight/spark/apache-spark-jupyter-spark-sql). Make sure you use the Ubuntu flavor, NOT CentOS.\n", + " 2. Enter the IP address, username and password below" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import HDInsightCompute\n", + "from azureml.exceptions import ComputeTargetException\n", + "\n", + "try:\n", + " # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase\n", + " hdi_compute = HDInsightCompute.attach(workspace=ws, \n", + " name=\"myhdi\", \n", + " address=\".azurehdinsight.net\", \n", + " ssh_port=22, \n", + " username='', \n", + " password='')\n", + "\n", + "except ComputeTargetException as e:\n", + " print(\"Caught = {}\".format(e.message))\n", + " \n", + " \n", + "hdi_compute.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure HDI run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "\n", + "# use pyspark framework\n", + "hdi_run_config = RunConfiguration(framework=\"pyspark\")\n", + "\n", + "# Set compute target to the HDI cluster\n", + "hdi_run_config.target = hdi_compute.name\n", + "\n", + "# specify CondaDependencies object to ask system installing numpy\n", + "cd = CondaDependencies()\n", + "cd.add_conda_package('numpy')\n", + "hdi_run_config.environment.python.conda_dependencies = cd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit the script to HDI" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import ScriptRunConfig\n", + "\n", + "script_run_config = ScriptRunConfig(source_directory = '.',\n", + " script= 'train-spark.py',\n", + " run_config = hdi_run_config)\n", + "run = exp.submit(config=script_run_config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get the URL of the run history web page\n", + "run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get all metris logged in the run\n", + "metrics = run.get_metrics()\n", + "print(metrics)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "authors": [ + { + "name": "aashishb" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/01.getting-started/05.train-in-spark/iris.csv b/01.getting-started/05.train-in-spark/iris.csv new file mode 100644 index 00000000..396653cc --- /dev/null +++ b/01.getting-started/05.train-in-spark/iris.csv @@ -0,0 +1,150 @@ +5.1,3.5,1.4,0.2,Iris-setosa +4.9,3.0,1.4,0.2,Iris-setosa +4.7,3.2,1.3,0.2,Iris-setosa +4.6,3.1,1.5,0.2,Iris-setosa +5.0,3.6,1.4,0.2,Iris-setosa +5.4,3.9,1.7,0.4,Iris-setosa +4.6,3.4,1.4,0.3,Iris-setosa +5.0,3.4,1.5,0.2,Iris-setosa +4.4,2.9,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.4,3.7,1.5,0.2,Iris-setosa +4.8,3.4,1.6,0.2,Iris-setosa +4.8,3.0,1.4,0.1,Iris-setosa +4.3,3.0,1.1,0.1,Iris-setosa +5.8,4.0,1.2,0.2,Iris-setosa +5.7,4.4,1.5,0.4,Iris-setosa +5.4,3.9,1.3,0.4,Iris-setosa +5.1,3.5,1.4,0.3,Iris-setosa +5.7,3.8,1.7,0.3,Iris-setosa +5.1,3.8,1.5,0.3,Iris-setosa +5.4,3.4,1.7,0.2,Iris-setosa +5.1,3.7,1.5,0.4,Iris-setosa +4.6,3.6,1.0,0.2,Iris-setosa +5.1,3.3,1.7,0.5,Iris-setosa +4.8,3.4,1.9,0.2,Iris-setosa +5.0,3.0,1.6,0.2,Iris-setosa +5.0,3.4,1.6,0.4,Iris-setosa +5.2,3.5,1.5,0.2,Iris-setosa +5.2,3.4,1.4,0.2,Iris-setosa +4.7,3.2,1.6,0.2,Iris-setosa +4.8,3.1,1.6,0.2,Iris-setosa +5.4,3.4,1.5,0.4,Iris-setosa +5.2,4.1,1.5,0.1,Iris-setosa +5.5,4.2,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.0,3.2,1.2,0.2,Iris-setosa +5.5,3.5,1.3,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +4.4,3.0,1.3,0.2,Iris-setosa +5.1,3.4,1.5,0.2,Iris-setosa +5.0,3.5,1.3,0.3,Iris-setosa +4.5,2.3,1.3,0.3,Iris-setosa +4.4,3.2,1.3,0.2,Iris-setosa +5.0,3.5,1.6,0.6,Iris-setosa +5.1,3.8,1.9,0.4,Iris-setosa +4.8,3.0,1.4,0.3,Iris-setosa +5.1,3.8,1.6,0.2,Iris-setosa +4.6,3.2,1.4,0.2,Iris-setosa +5.3,3.7,1.5,0.2,Iris-setosa +5.0,3.3,1.4,0.2,Iris-setosa +7.0,3.2,4.7,1.4,Iris-versicolor +6.4,3.2,4.5,1.5,Iris-versicolor +6.9,3.1,4.9,1.5,Iris-versicolor +5.5,2.3,4.0,1.3,Iris-versicolor +6.5,2.8,4.6,1.5,Iris-versicolor +5.7,2.8,4.5,1.3,Iris-versicolor +6.3,3.3,4.7,1.6,Iris-versicolor +4.9,2.4,3.3,1.0,Iris-versicolor +6.6,2.9,4.6,1.3,Iris-versicolor +5.2,2.7,3.9,1.4,Iris-versicolor +5.0,2.0,3.5,1.0,Iris-versicolor +5.9,3.0,4.2,1.5,Iris-versicolor +6.0,2.2,4.0,1.0,Iris-versicolor +6.1,2.9,4.7,1.4,Iris-versicolor +5.6,2.9,3.6,1.3,Iris-versicolor +6.7,3.1,4.4,1.4,Iris-versicolor +5.6,3.0,4.5,1.5,Iris-versicolor +5.8,2.7,4.1,1.0,Iris-versicolor +6.2,2.2,4.5,1.5,Iris-versicolor +5.6,2.5,3.9,1.1,Iris-versicolor +5.9,3.2,4.8,1.8,Iris-versicolor +6.1,2.8,4.0,1.3,Iris-versicolor +6.3,2.5,4.9,1.5,Iris-versicolor +6.1,2.8,4.7,1.2,Iris-versicolor +6.4,2.9,4.3,1.3,Iris-versicolor +6.6,3.0,4.4,1.4,Iris-versicolor +6.8,2.8,4.8,1.4,Iris-versicolor +6.7,3.0,5.0,1.7,Iris-versicolor +6.0,2.9,4.5,1.5,Iris-versicolor +5.7,2.6,3.5,1.0,Iris-versicolor +5.5,2.4,3.8,1.1,Iris-versicolor +5.5,2.4,3.7,1.0,Iris-versicolor +5.8,2.7,3.9,1.2,Iris-versicolor +6.0,2.7,5.1,1.6,Iris-versicolor +5.4,3.0,4.5,1.5,Iris-versicolor +6.0,3.4,4.5,1.6,Iris-versicolor +6.7,3.1,4.7,1.5,Iris-versicolor +6.3,2.3,4.4,1.3,Iris-versicolor +5.6,3.0,4.1,1.3,Iris-versicolor +5.5,2.5,4.0,1.3,Iris-versicolor +5.5,2.6,4.4,1.2,Iris-versicolor +6.1,3.0,4.6,1.4,Iris-versicolor +5.8,2.6,4.0,1.2,Iris-versicolor +5.0,2.3,3.3,1.0,Iris-versicolor +5.6,2.7,4.2,1.3,Iris-versicolor +5.7,3.0,4.2,1.2,Iris-versicolor +5.7,2.9,4.2,1.3,Iris-versicolor +6.2,2.9,4.3,1.3,Iris-versicolor +5.1,2.5,3.0,1.1,Iris-versicolor +5.7,2.8,4.1,1.3,Iris-versicolor +6.3,3.3,6.0,2.5,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +7.1,3.0,5.9,2.1,Iris-virginica +6.3,2.9,5.6,1.8,Iris-virginica +6.5,3.0,5.8,2.2,Iris-virginica +7.6,3.0,6.6,2.1,Iris-virginica +4.9,2.5,4.5,1.7,Iris-virginica +7.3,2.9,6.3,1.8,Iris-virginica +6.7,2.5,5.8,1.8,Iris-virginica +7.2,3.6,6.1,2.5,Iris-virginica +6.5,3.2,5.1,2.0,Iris-virginica +6.4,2.7,5.3,1.9,Iris-virginica +6.8,3.0,5.5,2.1,Iris-virginica +5.7,2.5,5.0,2.0,Iris-virginica +5.8,2.8,5.1,2.4,Iris-virginica +6.4,3.2,5.3,2.3,Iris-virginica +6.5,3.0,5.5,1.8,Iris-virginica +7.7,3.8,6.7,2.2,Iris-virginica +7.7,2.6,6.9,2.3,Iris-virginica +6.0,2.2,5.0,1.5,Iris-virginica +6.9,3.2,5.7,2.3,Iris-virginica +5.6,2.8,4.9,2.0,Iris-virginica +7.7,2.8,6.7,2.0,Iris-virginica +6.3,2.7,4.9,1.8,Iris-virginica +6.7,3.3,5.7,2.1,Iris-virginica +7.2,3.2,6.0,1.8,Iris-virginica +6.2,2.8,4.8,1.8,Iris-virginica +6.1,3.0,4.9,1.8,Iris-virginica +6.4,2.8,5.6,2.1,Iris-virginica +7.2,3.0,5.8,1.6,Iris-virginica +7.4,2.8,6.1,1.9,Iris-virginica +7.9,3.8,6.4,2.0,Iris-virginica +6.4,2.8,5.6,2.2,Iris-virginica +6.3,2.8,5.1,1.5,Iris-virginica +6.1,2.6,5.6,1.4,Iris-virginica +7.7,3.0,6.1,2.3,Iris-virginica +6.3,3.4,5.6,2.4,Iris-virginica +6.4,3.1,5.5,1.8,Iris-virginica +6.0,3.0,4.8,1.8,Iris-virginica +6.9,3.1,5.4,2.1,Iris-virginica +6.7,3.1,5.6,2.4,Iris-virginica +6.9,3.1,5.1,2.3,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +6.8,3.2,5.9,2.3,Iris-virginica +6.7,3.3,5.7,2.5,Iris-virginica +6.7,3.0,5.2,2.3,Iris-virginica +6.3,2.5,5.0,1.9,Iris-virginica +6.5,3.0,5.2,2.0,Iris-virginica +6.2,3.4,5.4,2.3,Iris-virginica +5.9,3.0,5.1,1.8,Iris-virginica \ No newline at end of file diff --git a/01.getting-started/05.train-in-spark/train-spark.py b/01.getting-started/05.train-in-spark/train-spark.py new file mode 100644 index 00000000..2ee072e9 --- /dev/null +++ b/01.getting-started/05.train-in-spark/train-spark.py @@ -0,0 +1,94 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. + +import numpy as np +import pyspark +import os +import urllib +import sys + +from pyspark.sql.functions import * +from pyspark.ml.classification import * +from pyspark.ml.evaluation import * +from pyspark.ml.feature import * +from pyspark.sql.types import StructType, StructField +from pyspark.sql.types import DoubleType, IntegerType, StringType + + +from azureml.core.run import Run + +# initialize logger +run = Run.get_context() + +# start Spark session +spark = pyspark.sql.SparkSession.builder.appName('Iris').getOrCreate() + +# print runtime versions +print('****************') +print('Python version: {}'.format(sys.version)) +print('Spark version: {}'.format(spark.version)) +print('****************') + +# load iris.csv into Spark dataframe +schema = StructType([ + StructField("sepal-length", DoubleType()), + StructField("sepal-width", DoubleType()), + StructField("petal-length", DoubleType()), + StructField("petal-width", DoubleType()), + StructField("class", StringType()) +]) + +data = spark.read.csv('iris.csv', header=False, schema=schema) +print("First 10 rows of Iris dataset:") +data.show(10) + +# vectorize all numerical columns into a single feature column +feature_cols = data.columns[:-1] +assembler = pyspark.ml.feature.VectorAssembler( + inputCols=feature_cols, outputCol='features') +data = assembler.transform(data) + +# convert text labels into indices +data = data.select(['features', 'class']) +label_indexer = pyspark.ml.feature.StringIndexer( + inputCol='class', outputCol='label').fit(data) +data = label_indexer.transform(data) + +# only select the features and label column +data = data.select(['features', 'label']) +print("Reading for machine learning") +data.show(10) + +# change regularization rate and you will likely get a different accuracy. +reg = 0.01 +# load regularization rate from argument if present +if len(sys.argv) > 1: + reg = float(sys.argv[1]) + +# log regularization rate +run.log("Regularization Rate", reg) + +# use Logistic Regression to train on the training set +train, test = data.randomSplit([0.70, 0.30]) +lr = pyspark.ml.classification.LogisticRegression(regParam=reg) +model = lr.fit(train) + +# predict on the test set +prediction = model.transform(test) +print("Prediction") +prediction.show(10) + +# evaluate the accuracy of the model using the test set +evaluator = pyspark.ml.evaluation.MulticlassClassificationEvaluator( + metricName='accuracy') +accuracy = evaluator.evaluate(prediction) + +print() +print('#####################################') +print('Regularization rate is {}'.format(reg)) +print("Accuracy is {}".format(accuracy)) +print('#####################################') +print() + +# log accuracy +run.log('Accuracy', accuracy) diff --git a/01.getting-started/06.logging-api/06.logging-api.ipynb b/01.getting-started/06.logging-api/06.logging-api.ipynb new file mode 100644 index 00000000..52b2f328 --- /dev/null +++ b/01.getting-started/06.logging-api/06.logging-api.ipynb @@ -0,0 +1,328 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 06. Logging APIs\n", + "This notebook showcase various ways to use the Azure Machine Learning service run logging APIs, and view the results in the Azure portal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](../../00.configuration.ipynb) Notebook first if you haven't. Also make sure you have tqdm and matplotlib installed in the current kernel.\n", + "\n", + "```\n", + "(myenv) $ conda install -y tqdm matplotlib\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Validate Azure ML SDK installation and get version number for debugging purposes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "install" + ] + }, + "outputs": [], + "source": [ + "from azureml.core import Experiment, Run, Workspace\n", + "import azureml.core\n", + "import numpy as np\n", + "\n", + "# Check core SDK version number\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create workspace" + ] + }, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set experiment\n", + "Create a new experiment (or get the one with such name)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "exp = Experiment(workspace=ws, name='logging-api-test')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Log metrics\n", + "We will start a run, and use the various logging APIs to record different types of metrics during the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "\n", + "# start logging for the run\n", + "run = exp.start_logging()\n", + "\n", + "# log a string value\n", + "run.log(name='Name', value='Logging API run')\n", + "\n", + "# log a numerical value\n", + "run.log(name='Magic Number', value=42)\n", + "\n", + "# Log a list of values. Note this will generate a single-variable line chart.\n", + "run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89])\n", + "\n", + "# create a dictionary to hold a table of values\n", + "sines = {}\n", + "sines['angle'] = []\n", + "sines['sine'] = []\n", + "\n", + "for i in tqdm(range(-10, 10)):\n", + " # log a metric value repeatedly, this will generate a single-variable line chart.\n", + " run.log(name='Sigmoid', value=1 / (1 + np.exp(-i)))\n", + " angle = i / 2.0\n", + " \n", + " # log a 2 (or more) values as a metric repeatedly. This will generate a 2-variable line chart if you have 2 numerical columns.\n", + " run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle))\n", + " \n", + " sines['angle'].append(angle)\n", + " sines['sine'].append(np.sin(angle))\n", + "\n", + "# log a dictionary as a table, this will generate a 2-variable chart if you have 2 numerical columns\n", + "run.log_table(name='Sine Wave', value=sines)\n", + "\n", + "run.complete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even after the run is marked completed, you can still log things." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Log an image\n", + "This is how to log a _matplotlib_ pyplot object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "angle = np.linspace(-3, 3, 50)\n", + "plt.plot(angle, np.tanh(angle), label='tanh')\n", + "plt.legend(fontsize=12)\n", + "plt.title('Hyperbolic Tangent', fontsize=16)\n", + "plt.grid(True)\n", + "\n", + "run.log_image(name='Hyperbolic Tangent', plot=plt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload a file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also upload an abitrary file. First, let's create a dummy file locally." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile myfile.txt\n", + "\n", + "This is a dummy file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's upload this file into the run record as a run artifact, and display the properties after the upload." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "props = run.upload_file(name='myfile_in_the_cloud.txt', path_or_stream='./myfile.txt')\n", + "props.serialize()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examine the run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's take a look at the run detail page in Azure portal. Make sure you checkout the various charts and plots generated/uploaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can get all the metrics in that run back." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_metrics()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also see the files uploaded for this run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also download all the files locally." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.makedirs('files', exist_ok=True)\n", + "\n", + "for f in run.get_file_names():\n", + " dest = os.path.join('files', f.split('/')[-1])\n", + " print('Downloading file {} to {}...'.format(f, dest))\n", + " run.download_file(f, dest) " + ] + } + ], + "metadata": { + "authors": [ + { + "name": "haining" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/01.getting-started/10.register-model-create-image-deploy-service/10.register-model-create-image-deploy-service.ipynb b/01.getting-started/10.register-model-create-image-deploy-service/10.register-model-create-image-deploy-service.ipynb new file mode 100644 index 00000000..da6011ab --- /dev/null +++ b/01.getting-started/10.register-model-create-image-deploy-service/10.register-model-create-image-deploy-service.ipynb @@ -0,0 +1,420 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10. Register Model, Create Image and Deploy Service\n", + "\n", + "This example shows how to deploy a web service in step-by-step fashion:\n", + "\n", + " 1. Register model\n", + " 2. Query versions of models and select one to deploy\n", + " 3. Create Docker image\n", + " 4. Query versions of images\n", + " 5. Deploy the image as web service\n", + " \n", + "**IMPORTANT**:\n", + " * This notebook requires you to first complete \"01.SDK-101-Train-and-Deploy-to-ACI.ipynb\" Notebook\n", + " \n", + "The 101 Notebook taught you how to deploy a web service directly from model in one step. This Notebook shows a more advanced approach that gives you more control over model versions and Docker image versions. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create workspace" + ] + }, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can add tags and descriptions to your models. Note you need to have a `sklearn_linreg_model.pkl` file in the current directory. This file is generated by the 01 notebook. The below call registers that file as a model with the same name `sklearn_linreg_model.pkl` in the workspace.\n", + "\n", + "Using tags, you can track useful information such as the name and version of the machine learning library used to train the model. Note that tags must be alphanumeric." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from file" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "import sklearn\n", + "\n", + "library_version = \"sklearn\"+sklearn.__version__.replace(\".\",\"x\")\n", + "\n", + "model = Model.register(model_path = \"sklearn_regression_model.pkl\",\n", + " model_name = \"sklearn_regression_model.pkl\",\n", + " tags = {'area': \"diabetes\", 'type': \"regression\", 'version': library_version},\n", + " description = \"Ridge regression model to predict diabetes\",\n", + " workspace = ws)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can explore the registered models within your workspace and query by tag. Models are versioned. If you call the register_model command many times with same model name, you will get multiple versions of the model with increasing version numbers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from file" + ] + }, + "outputs": [], + "source": [ + "regression_models = Model.list(workspace=ws, tags=['area'])\n", + "for m in regression_models:\n", + " print(\"Name:\", m.name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can pick a specific model to deploy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(model.name, model.description, model.version, sep = '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create Docker Image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Show `score.py`. Note that the `sklearn_regression_model.pkl` in the `get_model_path` call is referring to a model named `sklearn_linreg_model.pkl` registered under the workspace. It is NOT referenceing the local file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import pickle\n", + "import json\n", + "import numpy\n", + "from sklearn.externals import joblib\n", + "from sklearn.linear_model import Ridge\n", + "from azureml.core.model import Model\n", + "\n", + "def init():\n", + " global model\n", + " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under\n", + " # this is a different behavior than before when the code is run locally, even though the code is the same.\n", + " model_path = Model.get_model_path('sklearn_regression_model.pkl')\n", + " # deserialize the model file back into a sklearn model\n", + " model = joblib.load(model_path)\n", + "\n", + "# note you can pass in multiple rows for scoring\n", + "def run(raw_data):\n", + " try:\n", + " data = json.loads(raw_data)['data']\n", + " data = numpy.array(data)\n", + " result = model.predict(data)\n", + " # you can return any datatype as long as it is JSON-serializable\n", + " return result.tolist()\n", + " except Exception as e:\n", + " error = str(e)\n", + " return error" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that following command can take few minutes. \n", + "\n", + "You can add tags and descriptions to images. Also, an image can contain multiple models." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create image" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.image import Image, ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(runtime= \"python\",\n", + " execution_script=\"score.py\",\n", + " conda_file=\"myenv.yml\",\n", + " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", + " description = \"Image with ridge regression model\")\n", + "\n", + "image = Image.create(name = \"myimage1\",\n", + " # this is the model object \n", + " models = [model],\n", + " image_config = image_config, \n", + " workspace = ws)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create image" + ] + }, + "outputs": [], + "source": [ + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "List images by tag and find out the detailed build log for debugging." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create image" + ] + }, + "outputs": [], + "source": [ + "for i in Image.list(workspace = ws,tags = [\"area\"]):\n", + " print('{}(v.{} [{}]) stored at {} with build log {}'.format(i.name, i.version, i.creation_state, i.image_location, i.image_build_log_uri))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy image as web service on Azure Container Instance\n", + "\n", + "Note that the service creation can take few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'area': \"diabetes\", 'type': \"regression\"}, \n", + " description = 'Predict diabetes using regression model')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "\n", + "aci_service_name = 'my-aci-service-2'\n", + "print(aci_service_name)\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test web service" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Call the web service with some dummy input data to get a prediction." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "import json\n", + "\n", + "test_sample = json.dumps({'data': [\n", + " [1,2,3,4,5,6,7,8,9,10], \n", + " [10,9,8,7,6,5,4,3,2,1]\n", + "]})\n", + "test_sample = bytes(test_sample,encoding = 'utf8')\n", + "\n", + "prediction = aci_service.run(input_data=test_sample)\n", + "print(prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Delete ACI to clean up" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "deploy service", + "aci" + ] + }, + "outputs": [], + "source": [ + "aci_service.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "raymondl" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/enable-app-insights-in-production-service/sklearn_regression_model.pkl b/01.getting-started/10.register-model-create-image-deploy-service/sklearn_regression_model.pkl similarity index 100% rename from getting-started/enable-app-insights-in-production-service/sklearn_regression_model.pkl rename to 01.getting-started/10.register-model-create-image-deploy-service/sklearn_regression_model.pkl diff --git a/01.getting-started/11.production-deploy-to-aks/11.production-deploy-to-aks.ipynb b/01.getting-started/11.production-deploy-to-aks/11.production-deploy-to-aks.ipynb new file mode 100644 index 00000000..61f35d20 --- /dev/null +++ b/01.getting-started/11.production-deploy-to-aks/11.production-deploy-to-aks.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Deploying a web service to Azure Kubernetes Service (AKS)\n", + "This notebook shows the steps for deploying a service: registering a model, creating an image, provisioning a cluster (one time action), and deploying a service to it. \n", + "We then test and delete the service, image and model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "from azureml.core.compute import AksCompute, ComputeTarget\n", + "from azureml.core.webservice import Webservice, AksWebservice\n", + "from azureml.core.image import Image\n", + "from azureml.core.model import Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import azureml.core\n", + "print(azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get workspace\n", + "Load existing workspace from the config file info." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Register the model\n", + "Register an existing trained model, add descirption and tags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Register the model\n", + "from azureml.core.model import Model\n", + "model = Model.register(model_path = \"sklearn_regression_model.pkl\", # this points to a local file\n", + " model_name = \"sklearn_regression_model.pkl\", # this is the name the model is registered as\n", + " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", + " description = \"Ridge regression model to predict diabetes\",\n", + " workspace = ws)\n", + "\n", + "print(model.name, model.description, model.version)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Create an image\n", + "Create an image using the registered model the script that will load and run the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import pickle\n", + "import json\n", + "import numpy\n", + "from sklearn.externals import joblib\n", + "from sklearn.linear_model import Ridge\n", + "from azureml.core.model import Model\n", + "\n", + "def init():\n", + " global model\n", + " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under\n", + " # this is a different behavior than before when the code is run locally, even though the code is the same.\n", + " model_path = Model.get_model_path('sklearn_regression_model.pkl')\n", + " # deserialize the model file back into a sklearn model\n", + " model = joblib.load(model_path)\n", + "\n", + "# note you can pass in multiple rows for scoring\n", + "def run(raw_data):\n", + " try:\n", + " data = json.loads(raw_data)['data']\n", + " data = numpy.array(data)\n", + " result = model.predict(data)\n", + " # you can return any data type as long as it is JSON-serializable\n", + " return result.tolist()\n", + " except Exception as e:\n", + " error = str(e)\n", + " return error" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"Image with ridge regression model\",\n", + " tags = {'area': \"diabetes\", 'type': \"regression\"}\n", + " )\n", + "\n", + "image = ContainerImage.create(name = \"myimage1\",\n", + " # this is the model object\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Provision the AKS Cluster\n", + "This is a one time setup. You can reuse this cluster for multiple deployments after it has been created. If you delete the cluster or the resource group that contains it, then you would have to recreate it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the default configuration (can also provide parameters to customize)\n", + "prov_config = AksCompute.provisioning_configuration()\n", + "\n", + "aks_name = 'my-aks-9' \n", + "# Create the cluster\n", + "aks_target = ComputeTarget.create(workspace = ws, \n", + " name = aks_name, \n", + " provisioning_configuration = prov_config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "aks_target.wait_for_completion(show_output = True)\n", + "print(aks_target.provisioning_state)\n", + "print(aks_target.provisioning_errors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional step: Attach existing AKS cluster\n", + "\n", + "If you have existing AKS cluster in your Azure subscription, you can attach it to the Workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "# Use the default configuration (can also provide parameters to customize)\n", + "resource_id = '/subscriptions/92c76a2f-0e1c-4216-b65e-abf7a3f34c1e/resourcegroups/raymondsdk0604/providers/Microsoft.ContainerService/managedClusters/my-aks-0605d37425356b7d01'\n", + "\n", + "create_name='my-existing-aks' \n", + "# Create the cluster\n", + "aks_target = AksCompute.attach(workspace=ws, name=create_name, resource_id=resource_id)\n", + "# Wait for the operation to complete\n", + "aks_target.wait_for_completion(True)\n", + "'''" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Deploy web service to AKS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Set the web service configuration (using default here)\n", + "aks_config = AksWebservice.deploy_configuration()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "aks_service_name ='aks-service-1'\n", + "\n", + "aks_service = Webservice.deploy_from_image(workspace = ws, \n", + " name = aks_service_name,\n", + " image = image,\n", + " deployment_config = aks_config,\n", + " deployment_target = aks_target)\n", + "aks_service.wait_for_deployment(show_output = True)\n", + "print(aks_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Test the web service\n", + "We test the web sevice by passing data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import json\n", + "\n", + "test_sample = json.dumps({'data': [\n", + " [1,2,3,4,5,6,7,8,9,10], \n", + " [10,9,8,7,6,5,4,3,2,1]\n", + "]})\n", + "test_sample = bytes(test_sample,encoding = 'utf8')\n", + "\n", + "prediction = aks_service.run(input_data = test_sample)\n", + "print(prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Clean up\n", + "Delete the service, image and model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "aks_service.delete()\n", + "image.delete()\n", + "model.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "raymondl" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/getting-started/enable-data-collection-for-models-in-aks/sklearn_regression_model.pkl b/01.getting-started/11.production-deploy-to-aks/sklearn_regression_model.pkl similarity index 100% rename from getting-started/enable-data-collection-for-models-in-aks/sklearn_regression_model.pkl rename to 01.getting-started/11.production-deploy-to-aks/sklearn_regression_model.pkl diff --git a/getting-started/enable-data-collection-for-models-in-aks/enable-data-collection-for-models-in-aks.ipynb b/01.getting-started/12.enable-data-collection-for-models-in-aks/12.enable-data-collection-for-models-in-aks.ipynb similarity index 98% rename from getting-started/enable-data-collection-for-models-in-aks/enable-data-collection-for-models-in-aks.ipynb rename to 01.getting-started/12.enable-data-collection-for-models-in-aks/12.enable-data-collection-for-models-in-aks.ipynb index b6dcc24c..251ae0a8 100644 --- a/getting-started/enable-data-collection-for-models-in-aks/enable-data-collection-for-models-in-aks.ipynb +++ b/01.getting-started/12.enable-data-collection-for-models-in-aks/12.enable-data-collection-for-models-in-aks.ipynb @@ -285,10 +285,9 @@ " %%time\n", " resource_id = '/subscriptions//resourcegroups//providers/Microsoft.ContainerService/managedClusters/'\n", " create_name= 'myaks4'\n", - " attach_config = AksCompute.attach_configuration(resource_id=resource_id)\n", - " aks_target = ComputeTarget.attach(workspace = ws, \n", + " aks_target = AksCompute.attach(workspace = ws, \n", " name = create_name, \n", - " attach_configuration=attach_config)\n", + " resource_id=resource_id)\n", " ## Wait for the operation to complete\n", " aks_target.wait_for_provisioning(True)```" ] diff --git a/getting-started/production-deploy-to-aks/sklearn_regression_model.pkl b/01.getting-started/12.enable-data-collection-for-models-in-aks/sklearn_regression_model.pkl similarity index 100% rename from getting-started/production-deploy-to-aks/sklearn_regression_model.pkl rename to 01.getting-started/12.enable-data-collection-for-models-in-aks/sklearn_regression_model.pkl diff --git a/01.getting-started/13.enable-app-insights/13.enable-app-insights-in-production-service.ipynb b/01.getting-started/13.enable-app-insights/13.enable-app-insights-in-production-service.ipynb new file mode 100644 index 00000000..ce1a2389 --- /dev/null +++ b/01.getting-started/13.enable-app-insights/13.enable-app-insights-in-production-service.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Enabling App Insights for Services in Production\n", + "With this notebook, you can learn how to enable App Insights for standard service monitoring, plus, we provide examples for doing custom logging within a scoring files in a model. \n", + "\n", + "\n", + "## What does Application Insights monitor?\n", + "It monitors request rates, response times, failure rates, etc. For more information visit [App Insights docs.](https://docs.microsoft.com/en-us/azure/application-insights/app-insights-overview)\n", + "\n", + "\n", + "## What is different compared to standard production deployment process?\n", + "If you want to enable generic App Insights for a service run:\n", + "```python\n", + "aks_service= Webservice(ws, \"aks-w-dc2\")\n", + "aks_service.update(enable_app_insights=True)```\n", + "Where \"aks-w-dc2\" is your service name. You can also do this from the Azure Portal under your Workspace--> deployments--> Select deployment--> Edit--> Advanced Settings--> Select \"Enable AppInsights diagnostics\"\n", + "\n", + "If you want to log custom traces, you will follow the standard deplyment process for AKS and you will:\n", + "1. Update scoring file.\n", + "2. Update aks configuration.\n", + "3. Build new image and deploy it. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Import your dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace, Run\n", + "from azureml.core.compute import AksCompute, ComputeTarget\n", + "from azureml.core.webservice import Webservice, AksWebservice\n", + "from azureml.core.image import Image\n", + "from azureml.core.model import Model\n", + "\n", + "import azureml.core\n", + "print(azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Set up your configuration and create a workspace\n", + "Follow Notebook 00 instructions to do this.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Register Model\n", + "Register an existing trained model, add descirption and tags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Register the model\n", + "from azureml.core.model import Model\n", + "model = Model.register(model_path = \"sklearn_regression_model.pkl\", # this points to a local file\n", + " model_name = \"sklearn_regression_model.pkl\", # this is the name the model is registered as\n", + " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", + " description = \"Ridge regression model to predict diabetes\",\n", + " workspace = ws)\n", + "\n", + "print(model.name, model.description, model.version)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. *Update your scoring file with custom print statements*\n", + "Here is an example:\n", + "### a. In your init function add:\n", + "```python\n", + "print (\"model initialized\" + time.strftime(\"%H:%M:%S\"))```\n", + "\n", + "### b. In your run function add:\n", + "```python\n", + "print (\"saving input data\" + time.strftime(\"%H:%M:%S\"))\n", + "print (\"saving prediction data\" + time.strftime(\"%H:%M:%S\"))```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import pickle\n", + "import json\n", + "import numpy \n", + "from sklearn.externals import joblib\n", + "from sklearn.linear_model import Ridge\n", + "from azureml.core.model import Model\n", + "from azureml.monitoring import ModelDataCollector\n", + "import time\n", + "\n", + "def init():\n", + " global model\n", + " #Print statement for appinsights custom traces:\n", + " print (\"model initialized\" + time.strftime(\"%H:%M:%S\"))\n", + " \n", + " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under the workspace\n", + " # this call should return the path to the model.pkl file on the local disk.\n", + " model_path = Model.get_model_path(model_name = 'sklearn_regression_model.pkl')\n", + " \n", + " # deserialize the model file back into a sklearn model\n", + " model = joblib.load(model_path)\n", + " \n", + " global inputs_dc, prediction_dc\n", + " \n", + " # this setup will help us save our inputs under the \"inputs\" path in our Azure Blob\n", + " inputs_dc = ModelDataCollector(model_name=\"sklearn_regression_model\", identifier=\"inputs\", feature_names=[\"feat1\", \"feat2\"]) \n", + " \n", + " # this setup will help us save our ipredictions under the \"predictions\" path in our Azure Blob\n", + " prediction_dc = ModelDataCollector(\"sklearn_regression_model\", identifier=\"predictions\", feature_names=[\"prediction1\", \"prediction2\"]) \n", + " \n", + "# note you can pass in multiple rows for scoring\n", + "def run(raw_data):\n", + " global inputs_dc, prediction_dc\n", + " try:\n", + " data = json.loads(raw_data)['data']\n", + " data = numpy.array(data)\n", + " result = model.predict(data)\n", + " \n", + " #Print statement for appinsights custom traces:\n", + " print (\"saving input data\" + time.strftime(\"%H:%M:%S\"))\n", + " \n", + " #this call is saving our input data into our blob\n", + " inputs_dc.collect(data) \n", + " #this call is saving our prediction data into our blob\n", + " prediction_dc.collect(result)\n", + " \n", + " #Print statement for appinsights custom traces:\n", + " print (\"saving prediction data\" + time.strftime(\"%H:%M:%S\"))\n", + " # you can return any data type as long as it is JSON-serializable\n", + " return result.tolist()\n", + " except Exception as e:\n", + " error = str(e)\n", + " print (error + time.strftime(\"%H:%M:%S\"))\n", + " return error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. *Create myenv.yml file*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Create your new Image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"Image with ridge regression model\",\n", + " tags = {'area': \"diabetes\", 'type': \"regression\"}\n", + " )\n", + "\n", + "image = ContainerImage.create(name = \"myimage1\",\n", + " # this is the model object\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7. Deploy to AKS service" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create AKS compute if you haven't done so (Notebook 11)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the default configuration (can also provide parameters to customize)\n", + "prov_config = AksCompute.provisioning_configuration()\n", + "\n", + "aks_name = 'my-aks-test1' \n", + "# Create the cluster\n", + "aks_target = ComputeTarget.create(workspace = ws, \n", + " name = aks_name, \n", + " provisioning_configuration = prov_config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "aks_target.wait_for_completion(show_output = True)\n", + "print(aks_target.provisioning_state)\n", + "print(aks_target.provisioning_errors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you already have a cluster you can attach the service to it:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python \n", + "%%time\n", + "resource_id = '/subscriptions//resourcegroups//providers/Microsoft.ContainerService/managedClusters/'\n", + "create_name= 'myaks4'\n", + "aks_target = AksCompute.attach(workspace = ws, \n", + " name = create_name, \n", + " #esource_id=resource_id)\n", + "## Wait for the operation to complete\n", + "aks_target.wait_for_provisioning(True)```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### a. *Activate App Insights through updating AKS Webservice configuration*\n", + "In order to enable App Insights in your service you will need to update your AKS configuration file:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Set the web service configuration\n", + "aks_config = AksWebservice.deploy_configuration(enable_app_insights=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### b. Deploy your service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "aks_service_name ='aks-w-dc3'\n", + "\n", + "aks_service = Webservice.deploy_from_image(workspace = ws, \n", + " name = aks_service_name,\n", + " image = image,\n", + " deployment_config = aks_config,\n", + " deployment_target = aks_target\n", + " )\n", + "aks_service.wait_for_deployment(show_output = True)\n", + "print(aks_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8. Test your service " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import json\n", + "\n", + "test_sample = json.dumps({'data': [\n", + " [1,28,13,45,54,6,57,8,8,10], \n", + " [101,9,8,37,6,45,4,3,2,41]\n", + "]})\n", + "test_sample = bytes(test_sample,encoding='utf8')\n", + "\n", + "prediction = aks_service.run(input_data=test_sample)\n", + "print(prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 9. See your service telemetry in App Insights\n", + "1. Go to the [Azure Portal](https://portal.azure.com/)\n", + "2. All resources--> Select the subscription/resource group where you created your Workspace--> Select the App Insights type\n", + "3. Click on the AppInsights resource. You'll see a highlevel dashboard with information on Requests, Server response time and availability.\n", + "4. Click on the top banner \"Analytics\"\n", + "5. In the \"Schema\" section select \"traces\" and run your query.\n", + "6. Voila! All your custom traces should be there." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Disable App Insights" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "aks_service.update(enable_app_insights=False)" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "marthalc" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/00.configuration.ipynb b/automl/00.configuration.ipynb new file mode 100644 index 00000000..4e061932 --- /dev/null +++ b/automl/00.configuration.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 00. Configuration\n", + "\n", + "In this example you will create an Azure Machine Learning `Workspace` object and initialize your notebook directory to easily reload this object from a configuration file. Typically you will only need to run this once per notebook directory, and all other notebooks in this directory or any sub-directories will automatically use the settings you indicate here.\n", + "\n", + "\n", + "## Prerequisites:\n", + "\n", + "Before running this notebook, run the `automl_setup` script described in README.md.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register Machine Learning Services Resource Provider\n", + "\n", + "Microsoft.MachineLearningServices only needs to be registed once in the subscription.\n", + "To register it:\n", + "1. Start the Azure portal.\n", + "2. Select your `All services` and then `Subscription`.\n", + "3. Select the subscription that you want to use.\n", + "4. Click on `Resource providers`\n", + "3. Click the `Register` link next to Microsoft.MachineLearningServices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check the Azure ML Core SDK Version to Validate Your Installation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import azureml.core\n", + "\n", + "print(\"SDK Version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize an Azure ML Workspace\n", + "### What is an Azure ML Workspace and Why Do I Need One?\n", + "\n", + "An Azure ML workspace is an Azure resource that organizes and coordinates the actions of many other Azure resources to assist in executing and sharing machine learning workflows. In particular, an Azure ML workspace coordinates storage, databases, and compute resources providing added functionality for machine learning experimentation, operationalization, and the monitoring of operationalized models.\n", + "\n", + "\n", + "### What do I Need?\n", + "\n", + "To create or access an Azure ML workspace, you will need to import the Azure ML library and specify following information:\n", + "* A name for your workspace. You can choose one.\n", + "* Your subscription id. Use the `id` value from the `az account show` command output above.\n", + "* The resource group name. The resource group organizes Azure resources and provides a default region for the resources in the group. The resource group will be created if it doesn't exist. Resource groups can be created and viewed in the [Azure portal](https://portal.azure.com)\n", + "* Supported regions include `eastus2`, `eastus`,`westcentralus`, `southeastasia`, `westeurope`, `australiaeast`, `westus2`, `southcentralus`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "subscription_id = \"\"\n", + "resource_group = \"myrg\"\n", + "workspace_name = \"myws\"\n", + "workspace_region = \"eastus2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a Workspace\n", + "If you already have access to an Azure ML workspace you want to use, you can skip this cell. Otherwise, this cell will create an Azure ML workspace for you in the specified subscription, provided you have the correct permissions for the given `subscription_id`.\n", + "\n", + "This will fail when:\n", + "1. The workspace already exists.\n", + "2. You do not have permission to create a workspace in the resource group.\n", + "3. You are not a subscription owner or contributor and no Azure ML workspaces have ever been created in this subscription.\n", + "\n", + "If workspace creation fails for any reason other than already existing, please work with your IT administrator to provide you with the appropriate permissions or to provision the required resources.\n", + "\n", + "**Note:** Creation of a new workspace can take several minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Import the Workspace class and check the Azure ML SDK version.\n", + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.create(name = workspace_name,\n", + " subscription_id = subscription_id,\n", + " resource_group = resource_group, \n", + " location = workspace_region)\n", + "ws.get_details()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configuring Your Local Environment\n", + "You can validate that you have access to the specified workspace and write a configuration file to the default configuration location, `./aml_config/config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace(workspace_name = workspace_name,\n", + " subscription_id = subscription_id,\n", + " resource_group = resource_group)\n", + "\n", + "# Persist the subscription id, resource group name, and workspace name in aml_config/config.json.\n", + "ws.write_config()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can then load the workspace from this config file from any notebook in the current directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load workspace configuration from ./aml_config/config.json file.\n", + "my_workspace = Workspace.from_config()\n", + "my_workspace.get_details()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a Folder to Host All Sample Projects\n", + "Finally, create a folder where all the sample projects will be hosted." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "sample_projects_folder = './sample_projects'\n", + "\n", + "if not os.path.isdir(sample_projects_folder):\n", + " os.mkdir(sample_projects_folder)\n", + " \n", + "print('Sample projects will be created in {}.'.format(sample_projects_folder))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Success!\n", + "Great, you are ready to move on to the rest of the sample notebooks." + ] + } + ], + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/01.auto-ml-classification.ipynb b/automl/01.auto-ml-classification.ipynb index 299fe4df..9cb42461 100644 --- a/automl/01.auto-ml-classification.ipynb +++ b/automl/01.auto-ml-classification.ipynb @@ -1,414 +1,414 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 01: Classification with Local Compute\n", - "\n", - "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for a simple classification problem.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an `Experiment` in an existing `Workspace`.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "3. Train the model using local compute.\n", - "4. Explore the results.\n", - "5. Test the best fitted model.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment and specify the project folder.\n", - "experiment_name = 'automl-local-classification'\n", - "project_folder = './sample_projects/automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Training Data\n", - "\n", - "This uses scikit-learn's [load_digits](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "digits = datasets.load_digits()\n", - "\n", - "# Exclude the first 100 rows from training so that they can be used for test.\n", - "X_train = digits.data[100:,:]\n", - "y_train = digits.target[100:]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**n_cross_validations**|Number of cross validation splits.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 25,\n", - " n_cross_validations = 3,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, you can continue an interrupted local run by calling `continue_experiment` without the `iterations` parameter, or run more iterations for a completed run by specifying the `iterations` parameter:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = local_run.continue_experiment(X = X_train, \n", - " y = y_train, \n", - " show_output = True,\n", - " iterations = 5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model that has the smallest `log_loss` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lookup_metric = \"log_loss\"\n", - "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the third iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 3\n", - "third_run, third_model = local_run.get_output(iteration = iteration)\n", - "print(third_run)\n", - "print(third_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "#### Load Test Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Testing Our Best Fitted Model\n", - "We will try to predict 2 digits and see how our model works." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Randomly select digits and test.\n", - "for index in np.random.choice(len(y_test), 2, replace = False):\n", - " print(index)\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", - " fig = plt.figure(1, figsize = (3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 01: Classification with Local Compute\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for a simple classification problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig`.\n", + "3. Train the model using local compute.\n", + "4. Explore the results.\n", + "5. Test the best fitted model.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-classification'\n", + "project_folder = './sample_projects/automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Training Data\n", + "\n", + "This uses scikit-learn's [load_digits](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "\n", + "digits = datasets.load_digits()\n", + "\n", + "# Exclude the first 100 rows from training so that they can be used for test.\n", + "X_train = digits.data[100:,:]\n", + "y_train = digits.target[100:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 50,\n", + " n_cross_validations = 3,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Optionally, you can continue an interrupted local run by calling `continue_experiment` without the `iterations` parameter, or run more iterations for a completed run by specifying the `iterations` parameter:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = local_run.continue_experiment(X = X_train, \n", + " y = y_train, \n", + " show_output = True,\n", + " iterations = 5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 3\n", + "third_run, third_model = local_run.get_output(iteration = iteration)\n", + "print(third_run)\n", + "print(third_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model\n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Testing Our Best Fitted Model\n", + "We will try to predict 2 digits and see how our model works." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Randomly select digits and test.\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize = (3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/02.auto-ml-regression.ipynb b/automl/02.auto-ml-regression.ipynb index fcc5b55e..820c0da4 100644 --- a/automl/02.auto-ml-regression.ipynb +++ b/automl/02.auto-ml-regression.ipynb @@ -1,415 +1,415 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 02: Regression with Local Compute\n", - "\n", - "In this example we use the scikit-learn's [diabetes dataset](http://scikit-learn.org/stable/datasets/index.html#diabetes-dataset) to showcase how you can use AutoML for a simple regression problem.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an `Experiment` in an existing `Workspace`.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "3. Train the model using local compute.\n", - "4. Explore the results.\n", - "5. Test the best fitted model.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment and specify the project folder.\n", - "experiment_name = 'automl-local-regression'\n", - "project_folder = './sample_projects/automl-local-regression'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load Training Data\n", - "This uses scikit-learn's [load_diabetes](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html) method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the diabetes dataset, a well-known built-in small dataset that comes with scikit-learn.\n", - "from sklearn.datasets import load_diabetes\n", - "from sklearn.linear_model import Ridge\n", - "from sklearn.metrics import mean_squared_error\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "X, y = load_diabetes(return_X_y = True)\n", - "\n", - "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Regression supports the following primary metrics:
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**n_cross_validations**|Number of cross validation splits.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'regression',\n", - " iteration_timeout_minutes = 10,\n", - " iterations = 10,\n", - " primary_metric = 'spearman_correlation',\n", - " n_cross_validations = 5,\n", - " debug_log = 'automl.log',\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model that has the smallest `root_mean_squared_error` value (which turned out to be the same as the one with largest `spearman_correlation` value):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lookup_metric = \"root_mean_squared_error\"\n", - "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the third iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 3\n", - "third_run, third_model = local_run.get_output(iteration = iteration)\n", - "print(third_run)\n", - "print(third_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Predict on training and test set, and calculate residual values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y_pred_train = fitted_model.predict(X_train)\n", - "y_residual_train = y_train - y_pred_train\n", - "\n", - "y_pred_test = fitted_model.predict(X_test)\n", - "y_residual_test = y_test - y_pred_test" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from sklearn import datasets\n", - "from sklearn.metrics import mean_squared_error, r2_score\n", - "\n", - "# Set up a multi-plot chart.\n", - "f, (a0, a1) = plt.subplots(1, 2, gridspec_kw = {'width_ratios':[1, 1], 'wspace':0, 'hspace': 0})\n", - "f.suptitle('Regression Residual Values', fontsize = 18)\n", - "f.set_figheight(6)\n", - "f.set_figwidth(16)\n", - "\n", - "# Plot residual values of training set.\n", - "a0.axis([0, 360, -200, 200])\n", - "a0.plot(y_residual_train, 'bo', alpha = 0.5)\n", - "a0.plot([-10,360],[0,0], 'r-', lw = 3)\n", - "a0.text(16,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_train, y_pred_train))), fontsize = 12)\n", - "a0.text(16,140,'R2 score = {0:.2f}'.format(r2_score(y_train, y_pred_train)), fontsize = 12)\n", - "a0.set_xlabel('Training samples', fontsize = 12)\n", - "a0.set_ylabel('Residual Values', fontsize = 12)\n", - "\n", - "# Plot a histogram.\n", - "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step');\n", - "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10);\n", - "\n", - "# Plot residual values of test set.\n", - "a1.axis([0, 90, -200, 200])\n", - "a1.plot(y_residual_test, 'bo', alpha = 0.5)\n", - "a1.plot([-10,360],[0,0], 'r-', lw = 3)\n", - "a1.text(5,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_test, y_pred_test))), fontsize = 12)\n", - "a1.text(5,140,'R2 score = {0:.2f}'.format(r2_score(y_test, y_pred_test)), fontsize = 12)\n", - "a1.set_xlabel('Test samples', fontsize = 12)\n", - "a1.set_yticklabels([])\n", - "\n", - "# Plot a histogram.\n", - "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step')\n", - "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10)\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 02: Regression with Local Compute\n", + "\n", + "In this example we use the scikit-learn's [diabetes dataset](http://scikit-learn.org/stable/datasets/index.html#diabetes-dataset) to showcase how you can use AutoML for a simple regression problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig`.\n", + "3. Train the model using local compute.\n", + "4. Explore the results.\n", + "5. Test the best fitted model.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-regression'\n", + "project_folder = './sample_projects/automl-local-regression'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load Training Data\n", + "This uses scikit-learn's [load_diabetes](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html) method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the diabetes dataset, a well-known built-in small dataset that comes with scikit-learn.\n", + "from sklearn.datasets import load_diabetes\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X, y = load_diabetes(return_X_y = True)\n", + "\n", + "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Regression supports the following primary metrics:
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'regression',\n", + " max_time_sec = 600,\n", + " iterations = 10,\n", + " primary_metric = 'spearman_correlation',\n", + " n_cross_validations = 5,\n", + " debug_log = 'automl.log',\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `root_mean_squared_error` value (which turned out to be the same as the one with largest `spearman_correlation` value):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"root_mean_squared_error\"\n", + "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 3\n", + "third_run, third_model = local_run.get_output(iteration = iteration)\n", + "print(third_run)\n", + "print(third_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Predict on training and test set, and calculate residual values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred_train = fitted_model.predict(X_train)\n", + "y_residual_train = y_train - y_pred_train\n", + "\n", + "y_pred_test = fitted_model.predict(X_test)\n", + "y_residual_test = y_test - y_pred_test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "\n", + "# Set up a multi-plot chart.\n", + "f, (a0, a1) = plt.subplots(1, 2, gridspec_kw = {'width_ratios':[1, 1], 'wspace':0, 'hspace': 0})\n", + "f.suptitle('Regression Residual Values', fontsize = 18)\n", + "f.set_figheight(6)\n", + "f.set_figwidth(16)\n", + "\n", + "# Plot residual values of training set.\n", + "a0.axis([0, 360, -200, 200])\n", + "a0.plot(y_residual_train, 'bo', alpha = 0.5)\n", + "a0.plot([-10,360],[0,0], 'r-', lw = 3)\n", + "a0.text(16,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_train, y_pred_train))), fontsize = 12)\n", + "a0.text(16,140,'R2 score = {0:.2f}'.format(r2_score(y_train, y_pred_train)), fontsize = 12)\n", + "a0.set_xlabel('Training samples', fontsize = 12)\n", + "a0.set_ylabel('Residual Values', fontsize = 12)\n", + "\n", + "# Plot a histogram.\n", + "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step');\n", + "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10);\n", + "\n", + "# Plot residual values of test set.\n", + "a1.axis([0, 90, -200, 200])\n", + "a1.plot(y_residual_test, 'bo', alpha = 0.5)\n", + "a1.plot([-10,360],[0,0], 'r-', lw = 3)\n", + "a1.text(5,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_test, y_pred_test))), fontsize = 12)\n", + "a1.text(5,140,'R2 score = {0:.2f}'.format(r2_score(y_test, y_pred_test)), fontsize = 12)\n", + "a1.set_xlabel('Test samples', fontsize = 12)\n", + "a1.set_yticklabels([])\n", + "\n", + "# Plot a histogram.\n", + "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step')\n", + "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10)\n", + "\n", + "plt.show()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/03.auto-ml-remote-execution.ipynb b/automl/03.auto-ml-remote-execution.ipynb new file mode 100644 index 00000000..173cdf6a --- /dev/null +++ b/automl/03.auto-ml-remote-execution.ipynb @@ -0,0 +1,485 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 03: Remote Execution using DSVM (Ubuntu)\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for a simple classification problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you wiil learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Attach an existing DSVM to a workspace.\n", + "3. Configure AutoML using `AutoMLConfig`.\n", + "4. Train the model using the DSVM.\n", + "5. Explore the results.\n", + "6. Test the best fitted model.\n", + "\n", + "In addition, this notebook showcases the following features:\n", + "- **Parallel** executions for iterations\n", + "- **Asynchronous** tracking of progress\n", + "- **Cancellation** of individual iterations or the entire run\n", + "- Retrieving models for any iteration or logged metric\n", + "- Specifying AutoML settings as `**kwargs`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the run history container in the workspace.\n", + "experiment_name = 'automl-remote-dsvm4'\n", + "project_folder = './sample_projects/automl-remote-dsvm4'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a Remote Linux DSVM\n", + "**Note:** If creation fails with a message about Marketplace purchase eligibilty, start creation of a DSVM through the [Azure portal](https://portal.azure.com), and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled this setting, you can exit the portal without actually creating the DSVM, and creation of the DSVM through the notebook should work.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import DsvmCompute\n", + "\n", + "dsvm_name = 'mydsvm'\n", + "try:\n", + " dsvm_compute = DsvmCompute(ws, dsvm_name)\n", + " print('Found an existing DSVM.')\n", + "except:\n", + " print('Creating a new DSVM.')\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\")\n", + " dsvm_compute = DsvmCompute.create(ws, name = dsvm_name, provisioning_configuration = dsvm_config)\n", + " dsvm_compute.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Get Data File\n", + "For remote executions you should author a `get_data.py` file containing a `get_data()` function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", + "In this example, the `get_data()` function returns data using scikit-learn's [load_digits](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(project_folder):\n", + " os.makedirs(project_folder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $project_folder/get_data.py\n", + "\n", + "from sklearn import datasets\n", + "from scipy import sparse\n", + "import numpy as np\n", + "\n", + "def get_data():\n", + " \n", + " digits = datasets.load_digits()\n", + " X_train = digits.data[100:,:]\n", + " y_train = digits.target[100:]\n", + "\n", + " return { \"X\" : X_train, \"y\" : y_train }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML \n", + "\n", + "You can specify `automl_settings` as `**kwargs` as well. Also note that you can use a `get_data()` function for local excutions too.\n", + "\n", + "**Note:** When using Remote DSVM, you can't pass Numpy arrays directly to the fit method.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**concurrent_iterations**|Maximum number of iterations to execute in parallel. This should be less than the number of cores on the DSVM.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\": 600,\n", + " \"iterations\": 20,\n", + " \"n_cross_validations\": 5,\n", + " \"primary_metric\": 'AUC_weighted',\n", + " \"preprocess\": False,\n", + " \"concurrent_iterations\": 2,\n", + " \"verbosity\": logging.INFO\n", + "}\n", + "\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " path = project_folder, \n", + " compute_target = dsvm_compute,\n", + " data_script = project_folder + \"/get_data.py\",\n", + " **automl_settings\n", + " )\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note:** The first run on a new DSVM may take several minutes to prepare the environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. For remote runs the execution is asynchronous, so you will see the iterations get populated as they complete. You can interact with the widgets and models even when the experiment is running to retrieve the best model up to that point. Once you are satisfied with the model, you can cancel a particular iteration or the whole run.\n", + "\n", + "In this example, we specify `show_output = False` to suppress console output while the run is in progress." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run = experiment.submit(automl_config, show_output = False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results\n", + "\n", + "#### Loading Executed Runs\n", + "In case you need to load a previously executed run, enable the cell below and replace the `run_id` value." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "remote_run = AutoMLRun(experiment=experiment, run_id = 'AutoML_480d3ed6-fc94-44aa-8f4e-0b945db9d3ef')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "You can click on a pipeline to see run properties and output logs. Logs are also available on the DSVM under `/tmp/azureml_run/{iterationid}/azureml-logs`\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(remote_run).show() " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Wait until the run finishes.\n", + "remote_run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(remote_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)} \n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cancelling Runs\n", + "\n", + "You can cancel ongoing remote runs using the `cancel` and `cancel_iteration` functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cancel the ongoing experiment and stop scheduling new iterations.\n", + "# remote_run.cancel()\n", + "\n", + "# Cancel iteration 1 and move onto iteration 2.\n", + "# remote_run.cancel_iteration(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = remote_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model which has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = remote_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 3\n", + "third_run, third_model = remote_run.get_output(iteration = iteration)\n", + "print(third_run)\n", + "print(third_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model \n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Test Our Best Fitted Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Randomly select digits and test.\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/03b.auto-ml-remote-batchai.ipynb b/automl/03b.auto-ml-remote-batchai.ipynb new file mode 100644 index 00000000..2ff36cd0 --- /dev/null +++ b/automl/03b.auto-ml-remote-batchai.ipynb @@ -0,0 +1,509 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 03: Remote Execution using Batch AI\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for a simple classification problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you would see\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Attach an existing Batch AI compute to a workspace.\n", + "3. Configure AutoML using `AutoMLConfig`.\n", + "4. Train the model using Batch AI.\n", + "5. Explore the results.\n", + "6. Test the best fitted model.\n", + "\n", + "In addition this notebook showcases the following features\n", + "- **Parallel** executions for iterations\n", + "- **Asynchronous** tracking of progress\n", + "- **Cancellation** of individual iterations or the entire run\n", + "- Retrieving models for any iteration or logged metric\n", + "- Specifying AutoML settings as `**kwargs`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the run history container in the workspace.\n", + "experiment_name = 'automl-remote-batchai'\n", + "project_folder = './sample_projects/automl-remote-batchai'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Batch AI Cluster\n", + "The cluster is created as Machine Learning Compute and will appear under your workspace.\n", + "\n", + "**Note:** The creation of the Batch AI cluster can take over 10 minutes, please be patient.\n", + "\n", + "As with other Azure services, there are limits on certain resources (e.g. Batch AI cluster size) associated with the Azure Machine Learning service. Please read [this article](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-manage-quotas) on the default limits and how to request more quota." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import BatchAiCompute\n", + "from azureml.core.compute import ComputeTarget\n", + "\n", + "# Choose a name for your cluster.\n", + "batchai_cluster_name = \"mybatchai\"\n", + "\n", + "found = False\n", + "# Check if this compute target already exists in the workspace.\n", + "cts = ws.compute_targets\n", + "if batchai_cluster_name in cts and cts[batchai_cluster_name].type == 'BatchAI':\n", + " found = True\n", + " print('Found existing compute target.')\n", + " compute_target = cts[batchai_cluster_name]\n", + " \n", + "if not found:\n", + " print('Creating a new compute target...')\n", + " provisioning_config = BatchAiCompute.provisioning_configuration(vm_size = \"STANDARD_D2_V2\", # for GPU, use \"STANDARD_NC6\"\n", + " #vm_priority = 'lowpriority', # optional\n", + " autoscale_enabled = True,\n", + " cluster_min_nodes = 1, \n", + " cluster_max_nodes = 4)\n", + "\n", + " # Create the cluster.\n", + " compute_target = ComputeTarget.create(ws, batchai_cluster_name, provisioning_config)\n", + " \n", + " # Can poll for a minimum number of nodes and for a specific timeout.\n", + " # If no min_node_count is provided, it will use the scale settings for the cluster.\n", + " compute_target.wait_for_completion(show_output = True, min_node_count = None, timeout_in_minutes = 20)\n", + " \n", + " # For a more detailed view of current Batch AI cluster status, use the 'status' property." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Get Data File\n", + "For remote executions you should author a `get_data.py` file containing a `get_data()` function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", + "In this example, the `get_data()` function returns data using scikit-learn's [load_digits](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(project_folder):\n", + " os.makedirs(project_folder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $project_folder/get_data.py\n", + "\n", + "from sklearn import datasets\n", + "from scipy import sparse\n", + "import numpy as np\n", + "\n", + "def get_data():\n", + " \n", + " digits = datasets.load_digits()\n", + " X_train = digits.data\n", + " y_train = digits.target\n", + "\n", + " return { \"X\" : X_train, \"y\" : y_train }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instantiate AutoML \n", + "\n", + "You can specify `automl_settings` as `**kwargs` as well. Also note that you can use a `get_data()` function for local excutions too.\n", + "\n", + "**Note:** When using Batch AI, you can't pass Numpy arrays directly to the fit method.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**concurrent_iterations**|Maximum number of iterations that would be executed in parallel. This should be less than the number of cores on the DSVM.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\": 120,\n", + " \"iterations\": 20,\n", + " \"n_cross_validations\": 5,\n", + " \"primary_metric\": 'AUC_weighted',\n", + " \"preprocess\": False,\n", + " \"concurrent_iterations\": 5,\n", + " \"verbosity\": logging.INFO\n", + "}\n", + "\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " path = project_folder,\n", + " compute_target = compute_target,\n", + " data_script = project_folder + \"/get_data.py\",\n", + " **automl_settings\n", + " )\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. For remote runs the execution is asynchronous, so you will see the iterations get populated as they complete. You can interact with the widgets and models even when the experiment is running to retrieve the best model up to that point. Once you are satisfied with the model, you can cancel a particular iteration or the whole run.\n", + "In this example, we specify `show_output = False` to suppress console output while the run is in progress." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run = experiment.submit(automl_config, show_output = False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results\n", + "\n", + "#### Loading executed runs\n", + "In case you need to load a previously executed run, enable the cell below and replace the `run_id` value." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "remote_run = AutoMLRun(experiment = experiment, run_id = 'AutoML_5db13491-c92a-4f1d-b622-8ab8d973a058')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "You can click on a pipeline to see run properties and output logs. Logs are also available on the DSVM under `/tmp/azureml_run/{iterationid}/azureml-logs`\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(remote_run).show() " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Wait until the run finishes.\n", + "remote_run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(remote_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cancelling Runs\n", + "\n", + "You can cancel ongoing remote runs using the `cancel` and `cancel_iteration` functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cancel the ongoing experiment and stop scheduling new iterations.\n", + "# remote_run.cancel()\n", + "\n", + "# Cancel iteration 1 and move onto iteration 2.\n", + "# remote_run.cancel_iteration(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = remote_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model which has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = remote_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 3\n", + "third_run, third_model = remote_run.get_output(iteration=iteration)\n", + "print(third_run)\n", + "print(third_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing the Fitted Model \n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Testing Our Best Fitted Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Randomly select digits and test.\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/04.auto-ml-remote-execution-text-data-blob-store.ipynb b/automl/04.auto-ml-remote-execution-text-data-blob-store.ipynb new file mode 100644 index 00000000..91a1270d --- /dev/null +++ b/automl/04.auto-ml-remote-execution-text-data-blob-store.ipynb @@ -0,0 +1,491 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Auto ML 04: Remote Execution with Text Data from Azure Blob Storage\n", + "\n", + "In this example we use the [Burning Man 2016 dataset](https://innovate.burningman.org/datasets-page/) to showcase how you can use AutoML to handle text data from Azure Blob Storage.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Attach an existing DSVM to a workspace.\n", + "3. Configure AutoML using `AutoMLConfig`.\n", + "4. Train the model using the DSVM.\n", + "5. Explore the results.\n", + "6. Test the best fitted model.\n", + "\n", + "In addition this notebook showcases the following features\n", + "- **Parallel** executions for iterations\n", + "- **Asynchronous** tracking of progress\n", + "- **Cancellation** of individual iterations or the entire run\n", + "- Retrieving models for any iteration or logged metric\n", + "- Specifying AutoML settings as `**kwargs`\n", + "- Handling **text** data using the `preprocess` flag\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the run history container in the workspace.\n", + "experiment_name = 'automl-remote-dsvm-blobstore'\n", + "project_folder = './sample_projects/automl-remote-dsvm-blobstore'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Attach a Remote Linux DSVM\n", + "To use a remote Docker compute target:\n", + "1. Create a Linux DSVM in Azure, following these [quick instructions](https://docs.microsoft.com/en-us/azure/machine-learning/desktop-workbench/how-to-create-dsvm-hdi). Make sure you use the Ubuntu flavor (not CentOS). Make sure that disk space is available under `/tmp` because AutoML creates files under `/tmp/azureml_run`s. The DSVM should have more cores than the number of parallel runs that you plan to enable. It should also have at least 4GB per core.\n", + "2. Enter the IP address, user name and password below.\n", + "\n", + "**Note:** By default, SSH runs on port 22 and you don't need to change the port number below. If you've configured SSH to use a different port, change `dsvm_ssh_port` accordinglyaddress. [Read more](https://render.githubusercontent.com/documentation/sdk/ssh-issue.md) on changing SSH ports for security reasons." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import RemoteCompute\n", + "import time\n", + "\n", + "# Add your VM information below\n", + "# If a compute with the specified compute_name already exists, it will be used and the dsvm_ip_addr, dsvm_ssh_port, \n", + "# dsvm_username and dsvm_password will be ignored.\n", + "compute_name = 'mydsvm'\n", + "dsvm_ip_addr = '<>'\n", + "dsvm_ssh_port = 22\n", + "dsvm_username = '<>'\n", + "dsvm_password = '<>'\n", + "\n", + "if compute_name in ws.compute_targets:\n", + " print('Using existing compute.')\n", + " dsvm_compute = ws.compute_targets[compute_name]\n", + "else:\n", + " RemoteCompute.attach(workspace=ws, name=compute_name, address=dsvm_ip_addr, username=dsvm_username, password=dsvm_password, ssh_port=dsvm_ssh_port)\n", + "\n", + " while ws.compute_targets[compute_name].provisioning_state == 'Creating':\n", + " time.sleep(1)\n", + "\n", + " dsvm_compute = ws.compute_targets[compute_name]\n", + " \n", + " if dsvm_compute.provisioning_state == 'Failed':\n", + " print('Attached failed.')\n", + " print(dsvm_compute.provisioning_errors)\n", + " dsvm_compute.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Get Data File\n", + "For remote executions you should author a `get_data.py` file containing a `get_data()` function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", + "In this example, the `get_data()` function returns a [dictionary](README.md#getdata)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(project_folder):\n", + " os.makedirs(project_folder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $project_folder/get_data.py\n", + "\n", + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "def get_data():\n", + " # Load Burning Man 2016 data.\n", + " df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", + " delimiter=\"\\t\", quotechar='\"')\n", + " # Get integer labels.\n", + " le = LabelEncoder()\n", + " le.fit(df[\"Label\"].values)\n", + " y = le.transform(df[\"Label\"].values)\n", + " X = df.drop([\"Label\"], axis=1)\n", + "\n", + " X_train, _, y_train, _ = train_test_split(X, y, test_size = 0.1, random_state = 42)\n", + "\n", + " return { \"X\" : X_train, \"y\" : y_train }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### View data\n", + "\n", + "You can execute the `get_data()` function locally to view the training data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%run $project_folder/get_data.py\n", + "data_dict = get_data()\n", + "df = data_dict[\"X\"]\n", + "y = data_dict[\"y\"]\n", + "pd.set_option('display.max_colwidth', 15)\n", + "df['Label'] = pd.Series(y, index=df.index)\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML \n", + "\n", + "You can specify `automl_settings` as `**kwargs` as well. Also note that you can use a `get_data()` function for local excutions too.\n", + "\n", + "**Note:** When using Remote DSVM, you can't pass Numpy arrays directly to the fit method.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**concurrent_iterations**|Maximum number of iterations that would be executed in parallel. This should be less than the number of cores on the DSVM.|\n", + "|**preprocess**|Setting this to *True* enables AutoML to perform preprocessing on the input to handle *missing data*, and to perform some common *feature extraction*.|\n", + "|**max_cores_per_iteration**|Indicates how many cores on the compute target would be used to train a single pipeline.
Default is *1*; you can set it to *-1* to use all cores.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\": 3600,\n", + " \"iterations\": 10,\n", + " \"n_cross_validations\": 5,\n", + " \"primary_metric\": 'AUC_weighted',\n", + " \"preprocess\": True,\n", + " \"max_cores_per_iteration\": 2\n", + "}\n", + "\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " path = project_folder,\n", + " compute_target = dsvm_compute,\n", + " data_script = project_folder + \"/get_data.py\",\n", + " **automl_settings\n", + " )\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models \n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. For remote runs the execution is asynchronous, so you will see the iterations get populated as they complete. You can interact with the widgets and models even when the experiment is running to retrieve the best model up to that point. Once you are satisfied with the model, you can cancel a particular iteration or the whole run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run = experiment.submit(automl_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exploring the Results \n", + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "You can click on a pipeline to see run properties and output logs. Logs are also available on the DSVM under `/tmp/azureml_run/{iterationid}/azureml-logs`\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(remote_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(remote_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cancelling Runs\n", + "You can cancel ongoing remote runs using the `cancel` and `cancel_iteration` functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cancel the ongoing experiment and stop scheduling new iterations.\n", + "remote_run.cancel()\n", + "\n", + "# Cancel iteration 1 and move onto iteration 2.\n", + "# remote_run.cancel_iteration(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = remote_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model which has the smallest `accuracy` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lookup_metric = \"accuracy\"\n", + "# best_run, fitted_model = remote_run.get_output(metric = lookup_metric)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 0\n", + "zero_run, zero_model = remote_run.get_output(iteration = iteration)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing the Fitted Model \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from pandas_ml import ConfusionMatrix\n", + "\n", + "df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", + " delimiter=\"\\t\", quotechar='\"')\n", + "\n", + "# get integer labels\n", + "le = LabelEncoder()\n", + "le.fit(df[\"Label\"].values)\n", + "y = le.transform(df[\"Label\"].values)\n", + "X = df.drop([\"Label\"], axis=1)\n", + "\n", + "_, X_test, _, y_test = train_test_split(X, y, test_size=0.1, random_state=42)\n", + "\n", + "\n", + "ypred = fitted_model.predict(X_test.values)\n", + "\n", + "\n", + "ypred_strings = le.inverse_transform(ypred)\n", + "ytest_strings = le.inverse_transform(y_test)\n", + "\n", + "cm = ConfusionMatrix(ytest_strings, ypred_strings)\n", + "\n", + "print(cm)\n", + "\n", + "cm.plot()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/05.auto-ml-missing-data-Blacklist-Early-Termination.ipynb b/automl/05.auto-ml-missing-data-Blacklist-Early-Termination.ipynb index f1932598..a158bb3a 100644 --- a/automl/05.auto-ml-missing-data-Blacklist-Early-Termination.ipynb +++ b/automl/05.auto-ml-missing-data-Blacklist-Early-Termination.ipynb @@ -1,381 +1,381 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 05: Blacklisting Models, Early Termination, and Handling Missing Data\n", - "\n", - "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for handling missing values in data. We also provide a stopping metric indicating a target for the primary metrics so that AutoML can terminate the run without necessarly going through all the iterations. Finally, if you want to avoid a certain pipeline, we allow you to specify a blacklist of algorithms that AutoML will ignore for this run.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an `Experiment` in an existing `Workspace`.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "4. Train the model.\n", - "5. Explore the results.\n", - "6. Test the best fitted model.\n", - "\n", - "In addition this notebook showcases the following features\n", - "- **Blacklisting** certain pipelines\n", - "- Specifying **target metrics** to indicate stopping criteria\n", - "- Handling **missing data** in the input\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment.\n", - "experiment_name = 'automl-local-missing-data'\n", - "project_folder = './sample_projects/automl-local-missing-data'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating missing data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from scipy import sparse\n", - "\n", - "digits = datasets.load_digits()\n", - "X_train = digits.data[10:,:]\n", - "y_train = digits.target[10:]\n", - "\n", - "# Add missing values in 75% of the lines.\n", - "missing_rate = 0.75\n", - "n_missing_samples = int(np.floor(X_train.shape[0] * missing_rate))\n", - "missing_samples = np.hstack((np.zeros(X_train.shape[0] - n_missing_samples, dtype=np.bool), np.ones(n_missing_samples, dtype=np.bool)))\n", - "rng = np.random.RandomState(0)\n", - "rng.shuffle(missing_samples)\n", - "missing_features = rng.randint(0, X_train.shape[1], n_missing_samples)\n", - "X_train[np.where(missing_samples)[0], missing_features] = np.nan" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.DataFrame(data = X_train)\n", - "df['Label'] = pd.Series(y_train, index=df.index)\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment. This includes setting `experiment_exit_score`, which should cause the run to complete before the `iterations` count is reached.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**n_cross_validations**|Number of cross validation splits.|\n", - "|**preprocess**|Setting this to *True* enables AutoML to perform preprocessing on the input to handle *missing data*, and to perform some common *feature extraction*.|\n", - "|**experiment_exit_score**|*double* value indicating the target for *primary_metric*.
Once the target is surpassed the run terminates.|\n", - "|**blacklist_models**|*List* of *strings* indicating machine learning algorithms for AutoML to avoid in this run.

Allowed values for **Classification**
LogisticRegression
SGD
MultinomialNaiveBayes
BernoulliNaiveBayes
SVM
LinearSVM
KNN
DecisionTree
RandomForest
ExtremeRandomTrees
LightGBM
GradientBoosting
TensorFlowDNN
TensorFlowLinearClassifier

Allowed values for **Regression**
ElasticNet
GradientBoosting
DecisionTree
KNN
LassoLars
SGD
RandomForest
ExtremeRandomTrees
LightGBM
TensorFlowLinearRegressor
TensorFlowDNN|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 20,\n", - " n_cross_validations = 5,\n", - " preprocess = True,\n", - " experiment_exit_score = 0.9984,\n", - " blacklist_models = ['KNN','LinearSVM'],\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model which has the smallest `accuracy` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lookup_metric = \"accuracy\"\n", - "# best_run, fitted_model = local_run.get_output(metric = lookup_metric)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the third iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# iteration = 3\n", - "# best_run, fitted_model = local_run.get_output(iteration = iteration)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Testing the best Fitted Model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]\n", - "\n", - "# Randomly select digits and test.\n", - "for index in np.random.choice(len(y_test), 2, replace = False):\n", - " print(index)\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", - " fig = plt.figure(1, figsize=(3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()\n" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 05: Blacklisting Models, Early Termination, and Handling Missing Data\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for handling missing values in data. We also provide a stopping metric indicating a target for the primary metrics so that AutoML can terminate the run without necessarly going through all the iterations. Finally, if you want to avoid a certain pipeline, we allow you to specify a blacklist of algorithms that AutoML will ignore for this run.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig`.\n", + "4. Train the model.\n", + "5. Explore the results.\n", + "6. Test the best fitted model.\n", + "\n", + "In addition this notebook showcases the following features\n", + "- **Blacklisting** certain pipelines\n", + "- Specifying **target metrics** to indicate stopping criteria\n", + "- Handling **missing data** in the input\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment.\n", + "experiment_name = 'automl-local-missing-data'\n", + "project_folder = './sample_projects/automl-local-missing-data'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating missing data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import sparse\n", + "\n", + "digits = datasets.load_digits()\n", + "X_train = digits.data[10:,:]\n", + "y_train = digits.target[10:]\n", + "\n", + "# Add missing values in 75% of the lines.\n", + "missing_rate = 0.75\n", + "n_missing_samples = int(np.floor(X_train.shape[0] * missing_rate))\n", + "missing_samples = np.hstack((np.zeros(X_train.shape[0] - n_missing_samples, dtype=np.bool), np.ones(n_missing_samples, dtype=np.bool)))\n", + "rng = np.random.RandomState(0)\n", + "rng.shuffle(missing_samples)\n", + "missing_features = rng.randint(0, X_train.shape[1], n_missing_samples)\n", + "X_train[np.where(missing_samples)[0], missing_features] = np.nan" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame(data = X_train)\n", + "df['Label'] = pd.Series(y_train, index=df.index)\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment. This includes setting `exit_score`, which should cause the run to complete before the `iterations` count is reached.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**preprocess**|Setting this to *True* enables AutoML to perform preprocessing on the input to handle *missing data*, and to perform some common *feature extraction*.|\n", + "|**exit_score**|*double* value indicating the target for *primary_metric*.
Once the target is surpassed the run terminates.|\n", + "|**blacklist_algos**|*List* of *strings* indicating machine learning algorithms for AutoML to avoid in this run.

Allowed values for **Classification**
LogisticRegression
SGDClassifierWrapper
NBWrapper
BernoulliNB
SVCWrapper
LinearSVMWrapper
KNeighborsClassifier
DecisionTreeClassifier
RandomForestClassifier
ExtraTreesClassifier
LightGBMClassifier

Allowed values for **Regression**
ElasticNet
GradientBoostingRegressor
DecisionTreeRegressor
KNeighborsRegressor
LassoLars
SGDRegressor
RandomForestRegressor
ExtraTreesRegressor|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 20,\n", + " n_cross_validations = 5,\n", + " preprocess = True,\n", + " exit_score = 0.9984,\n", + " blacklist_algos = ['KNeighborsClassifier','LinearSVMWrapper'],\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model which has the smallest `accuracy` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lookup_metric = \"accuracy\"\n", + "# best_run, fitted_model = local_run.get_output(metric = lookup_metric)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# iteration = 3\n", + "# best_run, fitted_model = local_run.get_output(iteration = iteration)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing the best Fitted Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]\n", + "\n", + "# Randomly select digits and test.\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()\n" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/06.auto-ml-sparse-data-train-test-split.ipynb b/automl/06.auto-ml-sparse-data-train-test-split.ipynb index a6796368..8dab33b4 100644 --- a/automl/06.auto-ml-sparse-data-train-test-split.ipynb +++ b/automl/06.auto-ml-sparse-data-train-test-split.ipynb @@ -1,384 +1,384 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 06: Train Test Split and Handling Sparse Data\n", - "\n", - "In this example we use the scikit-learn's [20newsgroup](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_20newsgroups.html) to showcase how you can use AutoML for handling sparse data and how to specify custom cross validations splits.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an `Experiment` in an existing `Workspace`.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "4. Train the model.\n", - "5. Explore the results.\n", - "6. Test the best fitted model.\n", - "\n", - "In addition this notebook showcases the following features\n", - "- Explicit train test splits \n", - "- Handling **sparse data** in the input" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# choose a name for the experiment\n", - "experiment_name = 'automl-local-missing-data'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-local-missing-data'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating Sparse Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.datasets import fetch_20newsgroups\n", - "from sklearn.feature_extraction.text import HashingVectorizer\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "remove = ('headers', 'footers', 'quotes')\n", - "categories = [\n", - " 'alt.atheism',\n", - " 'talk.religion.misc',\n", - " 'comp.graphics',\n", - " 'sci.space',\n", - "]\n", - "data_train = fetch_20newsgroups(subset = 'train', categories = categories,\n", - " shuffle = True, random_state = 42,\n", - " remove = remove)\n", - "\n", - "X_train, X_valid, y_train, y_valid = train_test_split(data_train.data, data_train.target, test_size = 0.33, random_state = 42)\n", - "\n", - "\n", - "vectorizer = HashingVectorizer(stop_words = 'english', alternate_sign = False,\n", - " n_features = 2**16)\n", - "X_train = vectorizer.transform(X_train)\n", - "X_valid = vectorizer.transform(X_valid)\n", - "\n", - "summary_df = pd.DataFrame(index = ['No of Samples', 'No of Features'])\n", - "summary_df['Train Set'] = [X_train.shape[0], X_train.shape[1]]\n", - "summary_df['Validation Set'] = [X_valid.shape[0], X_valid.shape[1]]\n", - "summary_df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**preprocess**|Setting this to *True* enables AutoML to perform preprocessing on the input to handle *missing data*, and to perform some common *feature extraction*.
**Note:** If input data is sparse, you cannot use *True*.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**X_valid**|(sparse) array-like, shape = [n_samples, n_features] for the custom validation set.|\n", - "|**y_valid**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification for the custom validation set.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 5,\n", - " preprocess = False,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " X_valid = X_valid, \n", - " y_valid = y_valid, \n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - " \n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model which has the smallest `accuracy` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lookup_metric = \"accuracy\"\n", - "# best_run, fitted_model = local_run.get_output(metric = lookup_metric)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the third iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# iteration = 3\n", - "# best_run, fitted_model = local_run.get_output(iteration = iteration)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Testing the Best Fitted Model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load test data.\n", - "from pandas_ml import ConfusionMatrix\n", - "\n", - "data_test = fetch_20newsgroups(subset = 'test', categories = categories,\n", - " shuffle = True, random_state = 42,\n", - " remove = remove)\n", - "\n", - "X_test = vectorizer.transform(data_test.data)\n", - "y_test = data_test.target\n", - "\n", - "# Test our best pipeline.\n", - "\n", - "y_pred = fitted_model.predict(X_test)\n", - "y_pred_strings = [data_test.target_names[i] for i in y_pred]\n", - "y_test_strings = [data_test.target_names[i] for i in y_test]\n", - "\n", - "cm = ConfusionMatrix(y_test_strings, y_pred_strings)\n", - "print(cm)\n", - "cm.plot()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 06: Train Test Split and Handling Sparse Data\n", + "\n", + "In this example we use the scikit-learn's [20newsgroup](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_20newsgroups.html) to showcase how you can use AutoML for handling sparse data and how to specify custom cross validations splits.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig`.\n", + "4. Train the model.\n", + "5. Explore the results.\n", + "6. Test the best fitted model.\n", + "\n", + "In addition this notebook showcases the following features\n", + "- Explicit train test splits \n", + "- Handling **sparse data** in the input" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# choose a name for the experiment\n", + "experiment_name = 'automl-local-missing-data'\n", + "# project folder\n", + "project_folder = './sample_projects/automl-local-missing-data'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating Sparse Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import fetch_20newsgroups\n", + "from sklearn.feature_extraction.text import HashingVectorizer\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "remove = ('headers', 'footers', 'quotes')\n", + "categories = [\n", + " 'alt.atheism',\n", + " 'talk.religion.misc',\n", + " 'comp.graphics',\n", + " 'sci.space',\n", + "]\n", + "data_train = fetch_20newsgroups(subset = 'train', categories = categories,\n", + " shuffle = True, random_state = 42,\n", + " remove = remove)\n", + "\n", + "X_train, X_valid, y_train, y_valid = train_test_split(data_train.data, data_train.target, test_size = 0.33, random_state = 42)\n", + "\n", + "\n", + "vectorizer = HashingVectorizer(stop_words = 'english', alternate_sign = False,\n", + " n_features = 2**16)\n", + "X_train = vectorizer.transform(X_train)\n", + "X_valid = vectorizer.transform(X_valid)\n", + "\n", + "summary_df = pd.DataFrame(index = ['No of Samples', 'No of Features'])\n", + "summary_df['Train Set'] = [X_train.shape[0], X_train.shape[1]]\n", + "summary_df['Validation Set'] = [X_valid.shape[0], X_valid.shape[1]]\n", + "summary_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**preprocess**|Setting this to *True* enables AutoML to perform preprocessing on the input to handle *missing data*, and to perform some common *feature extraction*.
**Note:** If input data is sparse, you cannot use *True*.|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**X_valid**|(sparse) array-like, shape = [n_samples, n_features] for the custom validation set.|\n", + "|**y_valid**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification for the custom validation set.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 5,\n", + " preprocess = False,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " X_valid = X_valid, \n", + " y_valid = y_valid, \n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + " \n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model which has the smallest `accuracy` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lookup_metric = \"accuracy\"\n", + "# best_run, fitted_model = local_run.get_output(metric = lookup_metric)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# iteration = 3\n", + "# best_run, fitted_model = local_run.get_output(iteration = iteration)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing the Best Fitted Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load test data.\n", + "from pandas_ml import ConfusionMatrix\n", + "\n", + "data_test = fetch_20newsgroups(subset = 'test', categories = categories,\n", + " shuffle = True, random_state = 42,\n", + " remove = remove)\n", + "\n", + "X_test = vectorizer.transform(data_test.data)\n", + "y_test = data_test.target\n", + "\n", + "# Test our best pipeline.\n", + "\n", + "y_pred = fitted_model.predict(X_test)\n", + "y_pred_strings = [data_test.target_names[i] for i in y_pred]\n", + "y_test_strings = [data_test.target_names[i] for i in y_test]\n", + "\n", + "cm = ConfusionMatrix(y_test_strings, y_pred_strings)\n", + "print(cm)\n", + "cm.plot()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/07.auto-ml-exploring-previous-runs.ipynb b/automl/07.auto-ml-exploring-previous-runs.ipynb index 21d9b0b0..651fe4f1 100644 --- a/automl/07.auto-ml-exploring-previous-runs.ipynb +++ b/automl/07.auto-ml-exploring-previous-runs.ipynb @@ -1,336 +1,336 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 07: Exploring Previous Runs\n", - "\n", - "In this example we present some examples on navigating previously executed runs. We also show how you can download a fitted model for any previous run.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. List all experiments in a workspace.\n", - "2. List all AutoML runs in an experiment.\n", - "3. Get details for an AutoML run, including settings, run widget, and all metrics.\n", - "4. Download a fitted pipeline for any iteration.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# List all AutoML Experiments in a Workspace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "import re\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.run import Run\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "experiment_list = Experiment.list(workspace=ws)\n", - "\n", - "summary_df = pd.DataFrame(index = ['No of Runs'])\n", - "pattern = re.compile('^AutoML_[^_]*$')\n", - "for experiment in experiment_list:\n", - " all_runs = list(experiment.get_runs())\n", - " automl_runs = []\n", - " for run in all_runs:\n", - " if(pattern.match(run.id)):\n", - " automl_runs.append(run) \n", - " summary_df[experiment.name] = [len(automl_runs)]\n", - " \n", - "pd.set_option('display.max_colwidth', -1)\n", - "summary_df.T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# List AutoML runs for an experiment\n", - "Set `experiment_name` to any experiment name from the result of the Experiment.list cell to load the AutoML runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'automl-local-classification' # Replace this with any project name from previous cell.\n", - "\n", - "proj = ws.experiments[experiment_name]\n", - "summary_df = pd.DataFrame(index = ['Type', 'Status', 'Primary Metric', 'Iterations', 'Compute', 'Name'])\n", - "pattern = re.compile('^AutoML_[^_]*$')\n", - "all_runs = list(proj.get_runs(properties={'azureml.runsource': 'automl'}))\n", - "automl_runs_project = []\n", - "for run in all_runs:\n", - " if(pattern.match(run.id)):\n", - " properties = run.get_properties()\n", - " tags = run.get_tags()\n", - " amlsettings = eval(properties['RawAMLSettingsString'])\n", - " if 'iterations' in tags:\n", - " iterations = tags['iterations']\n", - " else:\n", - " iterations = properties['num_iterations']\n", - " summary_df[run.id] = [amlsettings['task_type'], run.get_details()['status'], properties['primary_metric'], iterations, properties['target'], amlsettings['name']]\n", - " if run.get_details()['status'] == 'Completed':\n", - " automl_runs_project.append(run.id)\n", - " \n", - "from IPython.display import HTML\n", - "projname_html = HTML(\"

{}

\".format(proj.name))\n", - "\n", - "from IPython.display import display\n", - "display(projname_html)\n", - "display(summary_df.T)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Get details for an AutoML run\n", - "\n", - "Copy the project name and run id from the previous cell output to find more details on a particular run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run_id = automl_runs_project[0] # Replace with your own run_id from above run ids\n", - "assert (run_id in summary_df.keys()), \"Run id not found! Please set run id to a value from above run ids\"\n", - "\n", - "from azureml.widgets import RunDetails\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "ml_run = AutoMLRun(experiment = experiment, run_id = run_id)\n", - "\n", - "summary_df = pd.DataFrame(index = ['Type', 'Status', 'Primary Metric', 'Iterations', 'Compute', 'Name', 'Start Time', 'End Time'])\n", - "properties = ml_run.get_properties()\n", - "tags = ml_run.get_tags()\n", - "status = ml_run.get_details()\n", - "amlsettings = eval(properties['RawAMLSettingsString'])\n", - "if 'iterations' in tags:\n", - " iterations = tags['iterations']\n", - "else:\n", - " iterations = properties['num_iterations']\n", - "start_time = None\n", - "if 'startTimeUtc' in status:\n", - " start_time = status['startTimeUtc']\n", - "end_time = None\n", - "if 'endTimeUtc' in status:\n", - " end_time = status['endTimeUtc']\n", - "summary_df[ml_run.id] = [amlsettings['task_type'], status['status'], properties['primary_metric'], iterations, properties['target'], amlsettings['name'], start_time, end_time]\n", - "display(HTML('

Runtime Details

'))\n", - "display(summary_df)\n", - "\n", - "#settings_df = pd.DataFrame(data = amlsettings, index = [''])\n", - "display(HTML('

AutoML Settings

'))\n", - "display(amlsettings)\n", - "\n", - "display(HTML('

Iterations

'))\n", - "RunDetails(ml_run).show() \n", - "\n", - "children = list(ml_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "display(HTML('

Metrics

'))\n", - "display(rundata)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Download fitted models" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Download the Best Model for Any Given Metric" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric = 'AUC_weighted' # Replace with a metric name.\n", - "best_run, fitted_model = ml_run.get_output(metric = metric)\n", - "fitted_model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Download the Model for Any Given Iteration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 1 # Replace with an iteration number.\n", - "best_run, fitted_model = ml_run.get_output(iteration = iteration)\n", - "fitted_model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Register fitted model for deployment\n", - "If neither `metric` nor `iteration` are specified in the `register_model` call, the iteration with the best primary metric is registered." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "description = 'AutoML Model'\n", - "tags = None\n", - "ml_run.register_model(description = description, tags = tags)\n", - "ml_run.model_id # Use this id to deploy the model as a web service in Azure." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register the Best Model for Any Given Metric" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric = 'AUC_weighted' # Replace with a metric name.\n", - "description = 'AutoML Model'\n", - "tags = None\n", - "ml_run.register_model(description = description, tags = tags, metric = metric)\n", - "print(ml_run.model_id) # Use this id to deploy the model as a web service in Azure." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register the Model for Any Given Iteration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 1 # Replace with an iteration number.\n", - "description = 'AutoML Model'\n", - "tags = None\n", - "ml_run.register_model(description = description, tags = tags, iteration = iteration)\n", - "print(ml_run.model_id) # Use this id to deploy the model as a web service in Azure." - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 07: Exploring Previous Runs\n", + "\n", + "In this example we present some examples on navigating previously executed runs. We also show how you can download a fitted model for any previous run.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. List all experiments in a workspace.\n", + "2. List all AutoML runs in an experiment.\n", + "3. Get details for an AutoML run, including settings, run widget, and all metrics.\n", + "4. Download a fitted pipeline for any iteration.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# List all AutoML Experiments in a Workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "import re\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.run import Run\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "experiment_list = Experiment.list(workspace=ws)\n", + "\n", + "summary_df = pd.DataFrame(index = ['No of Runs'])\n", + "pattern = re.compile('^AutoML_[^_]*$')\n", + "for experiment in experiment_list:\n", + " all_runs = list(experiment.get_runs())\n", + " automl_runs = []\n", + " for run in all_runs:\n", + " if(pattern.match(run.id)):\n", + " automl_runs.append(run) \n", + " summary_df[experiment.name] = [len(automl_runs)]\n", + " \n", + "pd.set_option('display.max_colwidth', -1)\n", + "summary_df.T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# List AutoML runs for an experiment\n", + "Set `experiment_name` to any experiment name from the result of the Experiment.list cell to load the AutoML runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'automl-local-classification' # Replace this with any project name from previous cell.\n", + "\n", + "proj = ws.experiments[experiment_name]\n", + "summary_df = pd.DataFrame(index = ['Type', 'Status', 'Primary Metric', 'Iterations', 'Compute', 'Name'])\n", + "pattern = re.compile('^AutoML_[^_]*$')\n", + "all_runs = list(proj.get_runs(properties={'azureml.runsource': 'automl'}))\n", + "automl_runs_project = []\n", + "for run in all_runs:\n", + " if(pattern.match(run.id)):\n", + " properties = run.get_properties()\n", + " tags = run.get_tags()\n", + " amlsettings = eval(properties['RawAMLSettingsString'])\n", + " if 'iterations' in tags:\n", + " iterations = tags['iterations']\n", + " else:\n", + " iterations = properties['num_iterations']\n", + " summary_df[run.id] = [amlsettings['task_type'], run.get_details()['status'], properties['primary_metric'], iterations, properties['target'], amlsettings['name']]\n", + " if run.get_details()['status'] == 'Completed':\n", + " automl_runs_project.append(run.id)\n", + " \n", + "from IPython.display import HTML\n", + "projname_html = HTML(\"

{}

\".format(proj.name))\n", + "\n", + "from IPython.display import display\n", + "display(projname_html)\n", + "display(summary_df.T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get details for an AutoML run\n", + "\n", + "Copy the project name and run id from the previous cell output to find more details on a particular run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run_id = automl_runs_project[0] # Replace with your own run_id from above run ids\n", + "assert (run_id in summary_df.keys()), \"Run id not found! Please set run id to a value from above run ids\"\n", + "\n", + "from azureml.train.widgets import RunDetails\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "ml_run = AutoMLRun(experiment = experiment, run_id = run_id)\n", + "\n", + "summary_df = pd.DataFrame(index = ['Type', 'Status', 'Primary Metric', 'Iterations', 'Compute', 'Name', 'Start Time', 'End Time'])\n", + "properties = ml_run.get_properties()\n", + "tags = ml_run.get_tags()\n", + "status = ml_run.get_details()\n", + "amlsettings = eval(properties['RawAMLSettingsString'])\n", + "if 'iterations' in tags:\n", + " iterations = tags['iterations']\n", + "else:\n", + " iterations = properties['num_iterations']\n", + "start_time = None\n", + "if 'startTimeUtc' in status:\n", + " start_time = status['startTimeUtc']\n", + "end_time = None\n", + "if 'endTimeUtc' in status:\n", + " end_time = status['endTimeUtc']\n", + "summary_df[ml_run.id] = [amlsettings['task_type'], status['status'], properties['primary_metric'], iterations, properties['target'], amlsettings['name'], start_time, end_time]\n", + "display(HTML('

Runtime Details

'))\n", + "display(summary_df)\n", + "\n", + "#settings_df = pd.DataFrame(data = amlsettings, index = [''])\n", + "display(HTML('

AutoML Settings

'))\n", + "display(amlsettings)\n", + "\n", + "display(HTML('

Iterations

'))\n", + "RunDetails(ml_run).show() \n", + "\n", + "children = list(ml_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "display(HTML('

Metrics

'))\n", + "display(rundata)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Download fitted models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the Best Model for Any Given Metric" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "metric = 'AUC_weighted' # Replace with a metric name.\n", + "best_run, fitted_model = ml_run.get_output(metric = metric)\n", + "fitted_model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the Model for Any Given Iteration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 4 # Replace with an iteration number.\n", + "best_run, fitted_model = ml_run.get_output(iteration = iteration)\n", + "fitted_model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Register fitted model for deployment\n", + "If neither `metric` nor `iteration` are specified in the `register_model` call, the iteration with the best primary metric is registered." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "description = 'AutoML Model'\n", + "tags = None\n", + "ml_run.register_model(description = description, tags = tags)\n", + "ml_run.model_id # Use this id to deploy the model as a web service in Azure." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the Best Model for Any Given Metric" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "metric = 'AUC_weighted' # Replace with a metric name.\n", + "description = 'AutoML Model'\n", + "tags = None\n", + "ml_run.register_model(description = description, tags = tags, metric = metric)\n", + "print(ml_run.model_id) # Use this id to deploy the model as a web service in Azure." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the Model for Any Given Iteration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 4 # Replace with an iteration number.\n", + "description = 'AutoML Model'\n", + "tags = None\n", + "ml_run.register_model(description = description, tags = tags, iteration = iteration)\n", + "print(ml_run.model_id) # Use this id to deploy the model as a web service in Azure." + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/08.auto-ml-remote-execution-with-DataStore.ipynb b/automl/08.auto-ml-remote-execution-with-DataStore.ipynb index 5daaf735..abb23078 100644 --- a/automl/08.auto-ml-remote-execution-with-DataStore.ipynb +++ b/automl/08.auto-ml-remote-execution-with-DataStore.ipynb @@ -1,586 +1,552 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 08: Remote Execution with DataStore\n", - "\n", - "This sample accesses a data file on a remote DSVM through DataStore. Advantages of using data store are:\n", - "1. DataStore secures the access details.\n", - "2. DataStore supports read, write to blob and file store\n", - "3. AutoML natively supports copying data from DataStore to DSVM\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you would see\n", - "1. Storing data in DataStore.\n", - "2. get_data returning data from DataStore.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Experiment\n", - "\n", - "As part of the setup you have already created a Workspace. For AutoML you would need to create an Experiment. An Experiment is a named object in a Workspace, which is used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "import time\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.compute import DsvmCompute\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# choose a name for experiment\n", - "experiment_name = 'automl-remote-datastore-file'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-remote-dsvm-file'\n", - "\n", - "experiment=Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create a Remote Linux DSVM\n", - "Note: If creation fails with a message about Marketplace purchase eligibilty, go to portal.azure.com, start creating DSVM there, and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled it, you can exit without actually creating VM.\n", - "\n", - "**Note**: By default SSH runs on port 22 and you don't need to specify it. But if for security reasons you can switch to a different port (such as 5022), you can append the port number to the address. [Read more](https://render.githubusercontent.com/documentation/sdk/ssh-issue.md) on this." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "compute_target_name = 'mydsvmc'\n", - "\n", - "try:\n", - " while ws.compute_targets[compute_target_name].provisioning_state == 'Creating':\n", - " time.sleep(1)\n", - " \n", - " dsvm_compute = DsvmCompute(workspace=ws, name=compute_target_name)\n", - " print('found existing:', dsvm_compute.name)\n", - "except:\n", - " dsvm_config = DsvmCompute.provisioning_configuration(vm_size=\"Standard_D2_v2\")\n", - " dsvm_compute = DsvmCompute.create(ws, name=compute_target_name, provisioning_configuration=dsvm_config)\n", - " dsvm_compute.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Copy data file to local\n", - "\n", - "Download the data file.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mkdir data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", - " delimiter=\"\\t\", quotechar='\"')\n", - "df.to_csv(\"data/data.tsv\", sep=\"\\t\", quotechar='\"', index=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Upload data to the cloud" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now make the data accessible remotely by uploading that data from your local machine into Azure so it can be accessed for remote training. The datastore is a convenient construct associated with your workspace for you to upload/download data, and interact with it from your remote compute targets. It is backed by Azure blob storage account.\n", - "\n", - "The data.tsv files are uploaded into a directory named data at the root of the datastore." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace, Datastore\n", - "#blob_datastore = Datastore(ws, blob_datastore_name)\n", - "ds = ws.get_default_datastore()\n", - "print(ds.datastore_type, ds.account_name, ds.container_name)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# ds.upload_files(\"data.tsv\")\n", - "ds.upload(src_dir='./data', target_path='data', overwrite=True, show_progress=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure & Run\n", - "\n", - "First let's create a DataReferenceConfigruation object to inform the system what data folder to download to the compute target.\n", - "The path_on_compute should be an absolute path to ensure that the data files are downloaded only once. The get_data method should use this same path to access the data files." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import DataReferenceConfiguration\n", - "dr = DataReferenceConfiguration(datastore_name=ds.name, \n", - " path_on_datastore='data', \n", - " path_on_compute='/tmp/azureml_runs',\n", - " mode='download', # download files from datastore to compute target\n", - " overwrite=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "# create a new RunConfig object\n", - "conda_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "# Set compute target to the Linux DSVM\n", - "conda_run_config.target = dsvm_compute\n", - "# set the data reference of the run coonfiguration\n", - "conda_run_config.data_references = {ds.name: dr}\n", - "\n", - "cd = CondaDependencies.create(pip_packages=['azureml-sdk[automl]'], conda_packages=['numpy'])\n", - "conda_run_config.environment.python.conda_dependencies = cd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Get Data File\n", - "For remote executions you should author a get_data.py file containing a get_data() function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", - "\n", - "The *get_data()* function returns a [dictionary](README.md#getdata).\n", - "\n", - "The read_csv uses the path_on_compute value specified in the DataReferenceConfiguration call plus the path_on_datastore folder and then the actual file name." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if not os.path.exists(project_folder):\n", - " os.makedirs(project_folder)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile $project_folder/get_data.py\n", - "\n", - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.preprocessing import LabelEncoder\n", - "import os\n", - "from os.path import expanduser, join, dirname\n", - "\n", - "def get_data():\n", - " # Burning man 2016 data\n", - " df = pd.read_csv(\"/tmp/azureml_runs/data/data.tsv\", delimiter=\"\\t\", quotechar='\"')\n", - " # get integer labels\n", - " le = LabelEncoder()\n", - " le.fit(df[\"Label\"].values)\n", - " y = le.transform(df[\"Label\"].values)\n", - " X = df.drop([\"Label\"], axis=1)\n", - "\n", - " X_train, _, y_train, _ = train_test_split(X, y, test_size=0.1, random_state=42)\n", - "\n", - " return { \"X\" : X_train.values, \"y\" : y_train }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Instantiate AutoML \n", - "\n", - "You can specify automl_settings as **kwargs** as well. Also note that you can use the get_data() symantic for local excutions too. \n", - "\n", - "Note: For Remote DSVM and Batch AI you cannot pass Numpy arrays directly to AutoMLConfig.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration|\n", - "|**iterations**|Number of iterations. In each iteration Auto ML trains a specific pipeline with the data|\n", - "|**n_cross_validations**|Number of cross validation splits|\n", - "|**max_concurrent_iterations**|Max number of iterations that would be executed in parallel. This should be less than the number of cores on the DSVM\n", - "|**preprocess**| *True/False*
Setting this to *True* enables Auto ML to perform preprocessing
on the input to handle *missing data*, and perform some common *feature extraction*|\n", - "|**enable_cache**|Setting this to *True* enables preprocess done once and reuse the same preprocessed data for all the iterations. Default value is True.|\n", - "|**max_cores_per_iteration**| Indicates how many cores on the compute target would be used to train a single pipeline.
Default is *1*, you can set it to *-1* to use all cores|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_settings = {\n", - " \"iteration_timeout_minutes\": 60,\n", - " \"iterations\": 4,\n", - " \"n_cross_validations\": 5,\n", - " \"primary_metric\": 'AUC_weighted',\n", - " \"preprocess\": True,\n", - " \"max_cores_per_iteration\": 1,\n", - " \"verbosity\": logging.INFO\n", - "}\n", - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " path=project_folder,\n", - " run_configuration=conda_run_config,\n", - " #compute_target = dsvm_compute,\n", - " data_script = project_folder + \"/get_data.py\",\n", - " **automl_settings\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Training the Models \n", - "\n", - "For remote runs the execution is asynchronous, so you will see the iterations get populated as they complete. You can interact with the widgets/models even when the experiment is running to retreive the best model up to that point. Once you are satisfied with the model you can cancel a particular iteration or the whole run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "remote_run = experiment.submit(automl_config, show_output=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exploring the Results \n", - "#### Widget for monitoring runs\n", - "\n", - "The widget will sit on \"loading\" until the first iteration completed, then you will see an auto-updating graph and table show up. It refreshed once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "You can click on a pipeline to see run properties and output logs. Logs are also available on the DSVM under /tmp/azureml_run/{iterationid}/azureml-logs\n", - "\n", - "NOTE: The widget displays a link at the bottom. This links to a web-ui to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(remote_run).show() " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Wait until the run finishes.\n", - "remote_run.wait_for_completion(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use sdk methods to fetch all the child runs and see individual metrics that we log. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(remote_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)} \n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Canceling Runs\n", - "You can cancel ongoing remote runs using the *cancel()* and *cancel_iteration()* functions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Cancel the ongoing experiment and stop scheduling new iterations\n", - "# remote_run.cancel()\n", - "\n", - "# Cancel iteration 1 and move onto iteration 2\n", - "# remote_run.cancel_iteration(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Pre-process cache cleanup\n", - "The preprocess data gets cache at user default file store. When the run is completed the cache can be cleaned by running below cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "remote_run.clean_preprocessor_cache()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The *get_output* method returns the best run and the fitted model. There are overloads on *get_output* that allow you to retrieve the best run and fitted model for *any* logged metric or a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = remote_run.get_output()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model based on any other metric" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lookup_metric = \"accuracy\"\n", - "# best_run, fitted_model = remote_run.get_output(metric=lookup_metric)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a specific iteration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# iteration = 1\n", - "# best_run, fitted_model = remote_run.get_output(iteration=iteration)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Testing the Best Fitted Model \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sklearn\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.preprocessing import LabelEncoder\n", - "from pandas_ml import ConfusionMatrix\n", - "\n", - "df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", - " delimiter=\"\\t\", quotechar='\"')\n", - "\n", - "# get integer labels\n", - "le = LabelEncoder()\n", - "le.fit(df[\"Label\"].values)\n", - "y = le.transform(df[\"Label\"].values)\n", - "X = df.drop([\"Label\"], axis=1)\n", - "\n", - "_, X_test, _, y_test = train_test_split(X, y, test_size=0.1, random_state=42)\n", - "\n", - "ypred = fitted_model.predict(X_test.values)\n", - "\n", - "ypred_strings = le.inverse_transform(ypred)\n", - "ytest_strings = le.inverse_transform(y_test)\n", - "\n", - "cm = ConfusionMatrix(ytest_strings, ypred_strings)\n", - "\n", - "print(cm)\n", - "\n", - "cm.plot()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 08: Remote Execution with DataStore\n", + "\n", + "This sample accesses a data file on a remote DSVM through DataStore. Advantages of using data store are:\n", + "1. DataStore secures the access details.\n", + "2. DataStore supports read, write to blob and file store\n", + "3. AutoML natively supports copying data from DataStore to DSVM\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you would see\n", + "1. Storing data in DataStore.\n", + "2. get_data returning data from DataStore.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Experiment\n", + "\n", + "As part of the setup you have already created a Workspace. For AutoML you would need to create an Experiment. An Experiment is a named object in a Workspace, which is used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# choose a name for experiment\n", + "experiment_name = 'automl-remote-datastore-file'\n", + "# project folder\n", + "project_folder = './sample_projects/automl-remote-dsvm-file'\n", + "\n", + "experiment=Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a Remote Linux DSVM\n", + "Note: If creation fails with a message about Marketplace purchase eligibilty, go to portal.azure.com, start creating DSVM there, and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled it, you can exit without actually creating VM.\n", + "\n", + "**Note**: By default SSH runs on port 22 and you don't need to specify it. But if for security reasons you can switch to a different port (such as 5022), you can append the port number to the address. [Read more](https://render.githubusercontent.com/documentation/sdk/ssh-issue.md) on this." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import DsvmCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "compute_target_name = 'mydsvm'\n", + "\n", + "try:\n", + " dsvm_compute = DsvmCompute(workspace=ws, name=compute_target_name)\n", + " print('found existing:', dsvm_compute.name)\n", + "except ComputeTargetException:\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size=\"Standard_D2_v2\")\n", + " dsvm_compute = DsvmCompute.create(ws, name=compute_target_name, provisioning_configuration=dsvm_config)\n", + " dsvm_compute.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Copy data file to local\n", + "\n", + "Download the data file.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mkdir data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", + " delimiter=\"\\t\", quotechar='\"')\n", + "df.to_csv(\"data/data.tsv\", sep=\"\\t\", quotechar='\"', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload data to the cloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now make the data accessible remotely by uploading that data from your local machine into Azure so it can be accessed for remote training. The datastore is a convenient construct associated with your workspace for you to upload/download data, and interact with it from your remote compute targets. It is backed by Azure blob storage account.\n", + "\n", + "The data.tsv files are uploaded into a directory named data at the root of the datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace, Datastore\n", + "#blob_datastore = Datastore(ws, blob_datastore_name)\n", + "ds = ws.get_default_datastore()\n", + "print(ds.datastore_type, ds.account_name, ds.container_name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ds.upload_files(\"data.tsv\")\n", + "ds.upload(src_dir='./data', target_path='data', overwrite=True, show_progress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure & Run\n", + "\n", + "First let's create a DataReferenceConfigruation object to inform the system what data folder to download to the compute target.\n", + "The path_on_compute should be an absolute path to ensure that the data files are downloaded only once. The get_data method should use this same path to access the data files." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import DataReferenceConfiguration\n", + "dr = DataReferenceConfiguration(datastore_name=ds.name, \n", + " path_on_datastore='data', \n", + " path_on_compute='/tmp/azureml_runs',\n", + " mode='download', # download files from datastore to compute target\n", + " overwrite=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "\n", + "# create a new RunConfig object\n", + "conda_run_config = RunConfiguration(framework=\"python\")\n", + "\n", + "# Set compute target to the Linux DSVM\n", + "conda_run_config.target = dsvm_compute\n", + "# set the data reference of the run coonfiguration\n", + "conda_run_config.data_references = {ds.name: dr}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Get Data File\n", + "For remote executions you should author a get_data.py file containing a get_data() function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", + "\n", + "The *get_data()* function returns a [dictionary](README.md#getdata).\n", + "\n", + "The read_csv uses the path_on_compute value specified in the DataReferenceConfiguration call plus the path_on_datastore folder and then the actual file name." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(project_folder):\n", + " os.makedirs(project_folder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $project_folder/get_data.py\n", + "\n", + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import LabelEncoder\n", + "import os\n", + "from os.path import expanduser, join, dirname\n", + "\n", + "def get_data():\n", + " # Burning man 2016 data\n", + " df = pd.read_csv(\"/tmp/azureml_runs/data/data.tsv\", delimiter=\"\\t\", quotechar='\"')\n", + " # get integer labels\n", + " le = LabelEncoder()\n", + " le.fit(df[\"Label\"].values)\n", + " y = le.transform(df[\"Label\"].values)\n", + " X = df.drop([\"Label\"], axis=1)\n", + "\n", + " X_train, _, y_train, _ = train_test_split(X, y, test_size=0.1, random_state=42)\n", + "\n", + " return { \"X\" : X_train.values, \"y\" : y_train }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instantiate AutoML \n", + "\n", + "You can specify automl_settings as **kwargs** as well. Also note that you can use the get_data() symantic for local excutions too. \n", + "\n", + "Note: For Remote DSVM and Batch AI you cannot pass Numpy arrays directly to AutoMLConfig.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**primary_metric**|This is the metric that you want to optimize.
Classification supports the following primary metrics
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration|\n", + "|**iterations**|Number of iterations. In each iteration Auto ML trains a specific pipeline with the data|\n", + "|**n_cross_validations**|Number of cross validation splits|\n", + "|**concurrent_iterations**|Max number of iterations that would be executed in parallel. This should be less than the number of cores on the DSVM\n", + "|**preprocess**| *True/False*
Setting this to *True* enables Auto ML to perform preprocessing
on the input to handle *missing data*, and perform some common *feature extraction*|\n", + "|**max_cores_per_iteration**| Indicates how many cores on the compute target would be used to train a single pipeline.
Default is *1*, you can set it to *-1* to use all cores|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\": 3600,\n", + " \"iterations\": 10,\n", + " \"n_cross_validations\": 5,\n", + " \"primary_metric\": 'AUC_weighted',\n", + " \"preprocess\": True,\n", + " \"max_cores_per_iteration\": 2,\n", + " \"verbosity\": logging.INFO\n", + "}\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " path=project_folder,\n", + " run_configuration=conda_run_config,\n", + " #compute_target = dsvm_compute,\n", + " data_script = project_folder + \"/get_data.py\",\n", + " **automl_settings\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training the Models \n", + "\n", + "For remote runs the execution is asynchronous, so you will see the iterations get populated as they complete. You can interact with the widgets/models even when the experiment is running to retreive the best model up to that point. Once you are satisfied with the model you can cancel a particular iteration or the whole run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run = experiment.submit(automl_config, show_output=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exploring the Results \n", + "#### Widget for monitoring runs\n", + "\n", + "The widget will sit on \"loading\" until the first iteration completed, then you will see an auto-updating graph and table show up. It refreshed once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "You can click on a pipeline to see run properties and output logs. Logs are also available on the DSVM under /tmp/azureml_run/{iterationid}/azureml-logs\n", + "\n", + "NOTE: The widget displays a link at the bottom. This links to a web-ui to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(remote_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use sdk methods to fetch all the child runs and see individual metrics that we log. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(remote_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)} \n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Canceling Runs\n", + "You can cancel ongoing remote runs using the *cancel()* and *cancel_iteration()* functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cancel the ongoing experiment and stop scheduling new iterations\n", + "remote_run.cancel()\n", + "\n", + "# Cancel iteration 1 and move onto iteration 2\n", + "# remote_run.cancel_iteration(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The *get_output* method returns the best run and the fitted model. There are overloads on *get_output* that allow you to retrieve the best run and fitted model for *any* logged metric or a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = remote_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model based on any other metric" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lookup_metric = \"accuracy\"\n", + "# best_run, fitted_model = remote_run.get_output(metric=lookup_metric)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a specific iteration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# iteration = 1\n", + "# best_run, fitted_model = remote_run.get_output(iteration=iteration)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing the Best Fitted Model \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from pandas_ml import ConfusionMatrix\n", + "\n", + "df = pd.read_csv(\"https://automldemods.blob.core.windows.net/datasets/PlayaEvents2016,_1.6MB,_3.4k-rows.cleaned.2.tsv\",\n", + " delimiter=\"\\t\", quotechar='\"')\n", + "\n", + "# get integer labels\n", + "le = LabelEncoder()\n", + "le.fit(df[\"Label\"].values)\n", + "y = le.transform(df[\"Label\"].values)\n", + "X = df.drop([\"Label\"], axis=1)\n", + "\n", + "_, X_test, _, y_test = train_test_split(X, y, test_size=0.1, random_state=42)\n", + "\n", + "ypred = fitted_model.predict(X_test.values)\n", + "\n", + "ypred_strings = le.inverse_transform(ypred)\n", + "ytest_strings = le.inverse_transform(y_test)\n", + "\n", + "cm = ConfusionMatrix(ytest_strings, ypred_strings)\n", + "\n", + "print(cm)\n", + "\n", + "cm.plot()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/09.auto-ml-classification-with-deployment.ipynb b/automl/09.auto-ml-classification-with-deployment.ipynb index 40a9e368..7431892a 100644 --- a/automl/09.auto-ml-classification-with-deployment.ipynb +++ b/automl/09.auto-ml-classification-with-deployment.ipynb @@ -1,501 +1,500 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 09: Classification with Deployment\n", - "\n", - "In this example we use the scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) to showcase how you can use AutoML for a simple classification problem and deploy it to an Azure Container Instance (ACI).\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an experiment using an existing workspace.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "3. Train the model using local compute.\n", - "4. Explore the results.\n", - "5. Register the model.\n", - "6. Create a container image.\n", - "7. Create an Azure Container Instance (ACI) service.\n", - "8. Test the ACI service.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# choose a name for experiment\n", - "experiment_name = 'automl-local-classification'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-local-classification'\n", - "\n", - "experiment=Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate a AutoMLConfig object. This defines the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**n_cross_validations**|Number of cross validation splits.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_train = digits.data[10:,:]\n", - "y_train = digits.target[10:]\n", - "\n", - "automl_config = AutoMLConfig(task = 'classification',\n", - " name = experiment_name,\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 20,\n", - " iterations = 10,\n", - " n_cross_validations = 2,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method on `automl_classifier` returns the best run and the fitted model for the last invocation. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register the Fitted Model for Deployment\n", - "If neither `metric` nor `iteration` are specified in the `register_model` call, the iteration with the best primary metric is registered." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "description = 'AutoML Model'\n", - "tags = None\n", - "model = local_run.register_model(description = description, tags = tags)\n", - "local_run.model_id # This will be written to the script file later in the notebook." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create Scoring Script" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import pickle\n", - "import json\n", - "import numpy\n", - "import azureml.train.automl\n", - "from sklearn.externals import joblib\n", - "from azureml.core.model import Model\n", - "\n", - "\n", - "def init():\n", - " global model\n", - " model_path = Model.get_model_path(model_name = '<>') # this name is model.id of model that we want to deploy\n", - " # deserialize the model file back into a sklearn model\n", - " model = joblib.load(model_path)\n", - "\n", - "def run(rawdata):\n", - " try:\n", - " data = json.loads(rawdata)['data']\n", - " data = numpy.array(data)\n", - " result = model.predict(data)\n", - " except Exception as e:\n", - " result = str(e)\n", - " return json.dumps({\"error\": result})\n", - " return json.dumps({\"result\":result.tolist()})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a YAML File for the Environment" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To ensure the fit results are consistent with the training results, the SDK dependency versions need to be the same as the environment that trains the model. Details about retrieving the versions can be found in notebook [12.auto-ml-retrieve-the-training-sdk-versions](12.auto-ml-retrieve-the-training-sdk-versions.ipynb)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "ml_run = AutoMLRun(experiment = experiment, run_id = local_run.id)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dependencies = ml_run.get_run_sdk_dependencies(iteration = 7)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for p in ['azureml-train-automl', 'azureml-sdk', 'azureml-core']:\n", - " print('{}\\t{}'.format(p, dependencies[p]))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'], pip_packages=['azureml-sdk[automl]'])\n", - "\n", - "conda_env_file_name = 'myenv.yml'\n", - "myenv.save_to_file('.', conda_env_file_name)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Substitute the actual version number in the environment file.\n", - "# This is not strictly needed in this notebook because the model should have been generated using the current SDK version.\n", - "# However, we include this in case this code is used on an experiment from a previous SDK version.\n", - "\n", - "with open(conda_env_file_name, 'r') as cefr:\n", - " content = cefr.read()\n", - "\n", - "with open(conda_env_file_name, 'w') as cefw:\n", - " cefw.write(content.replace(azureml.core.VERSION, dependencies['azureml-sdk']))\n", - "\n", - "# Substitute the actual model id in the script file.\n", - "\n", - "script_file_name = 'score.py'\n", - "\n", - "with open(script_file_name, 'r') as cefr:\n", - " content = cefr.read()\n", - "\n", - "with open(script_file_name, 'w') as cefw:\n", - " cefw.write(content.replace('<>', local_run.model_id))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a Container Image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import Image, ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(runtime= \"python\",\n", - " execution_script = script_file_name,\n", - " conda_file = conda_env_file_name,\n", - " tags = {'area': \"digits\", 'type': \"automl_classification\"},\n", - " description = \"Image for automl classification sample\")\n", - "\n", - "image = Image.create(name = \"automlsampleimage\",\n", - " # this is the model object \n", - " models = [model],\n", - " image_config = image_config, \n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)\n", - "\n", - "if image.creation_state == 'Failed':\n", - " print(\"Image build log at: \" + image.image_build_log_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Deploy the Image as a Web Service on Azure Container Instance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'area': \"digits\", 'type': \"automl_classification\"}, \n", - " description = 'sample service for Automl Classification')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "\n", - "aci_service_name = 'automl-sample-01'\n", - "print(aci_service_name)\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Delete a Web Service" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get Logs from a Deployed Web Service" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#aci_service.get_logs()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test a Web Service" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Randomly select digits and test\n", - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]\n", - "\n", - "for index in np.random.choice(len(y_test), 3, replace = False):\n", - " print(index)\n", - " test_sample = json.dumps({'data':X_test[index:index + 1].tolist()})\n", - " predicted = aci_service.run(input_data = test_sample)\n", - " label = y_test[index]\n", - " predictedDict = json.loads(predicted)\n", - " title = \"Label value = %d Predicted value = %s \" % ( label,predictedDict['result'][0])\n", - " fig = plt.figure(1, figsize = (3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 09: Classification with Deployment\n", + "\n", + "In this example we use the scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) to showcase how you can use AutoML for a simple classification problem and deploy it to an Azure Container Instance (ACI).\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an experiment using an existing workspace.\n", + "2. Configure AutoML using `AutoMLConfig`.\n", + "3. Train the model using local compute.\n", + "4. Explore the results.\n", + "5. Register the model.\n", + "6. Create a container image.\n", + "7. Create an Azure Container Instance (ACI) service.\n", + "8. Test the ACI service.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# choose a name for experiment\n", + "experiment_name = 'automl-local-classification'\n", + "# project folder\n", + "project_folder = './sample_projects/automl-local-classification'\n", + "\n", + "experiment=Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate a AutoMLConfig object. This defines the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_train = digits.data[10:,:]\n", + "y_train = digits.target[10:]\n", + "\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " name = experiment_name,\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 1200,\n", + " iterations = 10,\n", + " n_cross_validations = 2,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method on `automl_classifier` returns the best run and the fitted model for the last invocation. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register the Fitted Model for Deployment\n", + "If neither `metric` nor `iteration` are specified in the `register_model` call, the iteration with the best primary metric is registered." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "description = 'AutoML Model'\n", + "tags = None\n", + "model = local_run.register_model(description = description, tags = tags)\n", + "local_run.model_id # This will be written to the script file later in the notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create Scoring Script" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import pickle\n", + "import json\n", + "import numpy\n", + "from sklearn.externals import joblib\n", + "from azureml.core.model import Model\n", + "\n", + "\n", + "def init():\n", + " global model\n", + " model_path = Model.get_model_path(model_name = '<>') # this name is model.id of model that we want to deploy\n", + " # deserialize the model file back into a sklearn model\n", + " model = joblib.load(model_path)\n", + "\n", + "def run(rawdata):\n", + " try:\n", + " data = json.loads(rawdata)['data']\n", + " data = numpy.array(data)\n", + " result = model.predict(data)\n", + " except Exception as e:\n", + " result = str(e)\n", + " return json.dumps({\"error\": result})\n", + " return json.dumps({\"result\":result.tolist()})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a YAML File for the Environment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To ensure the fit results are consistent with the training results, the SDK dependency versions need to be the same as the environment that trains the model. Details about retrieving the versions can be found in notebook [12.auto-ml-retrieve-the-training-sdk-versions](12.auto-ml-retrieve-the-training-sdk-versions.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "ml_run = AutoMLRun(experiment = experiment, run_id = local_run.id)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dependencies = ml_run.get_run_sdk_dependencies(iteration = 7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for p in ['azureml-train-automl', 'azureml-sdk', 'azureml-core']:\n", + " print('{}\\t{}'.format(p, dependencies[p]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile myenv.yml\n", + "name: myenv\n", + "channels:\n", + " - defaults\n", + "dependencies:\n", + " - pip:\n", + " - numpy==1.14.2\n", + " - scikit-learn==0.19.2\n", + " - azureml-sdk[notebooks,automl]==<>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Substitute the actual version number in the environment file.\n", + "\n", + "conda_env_file_name = 'myenv.yml'\n", + "\n", + "with open(conda_env_file_name, 'r') as cefr:\n", + " content = cefr.read()\n", + "\n", + "with open(conda_env_file_name, 'w') as cefw:\n", + " cefw.write(content.replace('<>', dependencies['azureml-sdk']))\n", + "\n", + "# Substitute the actual model id in the script file.\n", + "\n", + "script_file_name = 'score.py'\n", + "\n", + "with open(script_file_name, 'r') as cefr:\n", + " content = cefr.read()\n", + "\n", + "with open(script_file_name, 'w') as cefw:\n", + " cefw.write(content.replace('<>', local_run.model_id))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a Container Image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import Image, ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(runtime= \"python\",\n", + " execution_script = script_file_name,\n", + " conda_file = conda_env_file_name,\n", + " tags = {'area': \"digits\", 'type': \"automl_classification\"},\n", + " description = \"Image for automl classification sample\")\n", + "\n", + "image = Image.create(name = \"automlsampleimage\",\n", + " # this is the model object \n", + " models = [model],\n", + " image_config = image_config, \n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy the Image as a Web Service on Azure Container Instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'area': \"digits\", 'type': \"automl_classification\"}, \n", + " description = 'sample service for Automl Classification')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "\n", + "aci_service_name = 'automl-sample-01'\n", + "print(aci_service_name)\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Delete a Web Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Get Logs from a Deployed Web Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#aci_service.get_logs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test a Web Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Randomly select digits and test\n", + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]\n", + "\n", + "for index in np.random.choice(len(y_test), 3, replace = False):\n", + " print(index)\n", + " test_sample = json.dumps({'data':X_test[index:index + 1].tolist()})\n", + " predicted = aci_service.run(input_data = test_sample)\n", + " label = y_test[index]\n", + " predictedDict = json.loads(predicted)\n", + " title = \"Label value = %d Predicted value = %s \" % ( label,predictedDict['result'][0])\n", + " fig = plt.figure(1, figsize = (3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/10.auto-ml-multi-output-example.ipynb b/automl/10.auto-ml-multi-output-example.ipynb index 466ed36d..d47bf24a 100644 --- a/automl/10.auto-ml-multi-output-example.ipynb +++ b/automl/10.auto-ml-multi-output-example.ipynb @@ -1,294 +1,294 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 10: Multi-output\n", - "\n", - "This notebook shows how to use AutoML to train multi-output problems by leveraging the correlation between the outputs using indicator vectors.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transformer Functions\n", - "The transformations of inputs `X` and `y` are happening as follows, e.g. `y = {y_1, y_2}`, then `X` becomes\n", - " \n", - "`X 1 0`\n", - " \n", - "`X 0 1`\n", - "\n", - "and `y` becomes,\n", - "\n", - "`y_1`\n", - "\n", - "`y_2`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from scipy import sparse\n", - "from scipy import linalg\n", - "\n", - "#Transformer functions\n", - "def multi_output_transform_x_y(X, y):\n", - " X_new = multi_output_transformer_x(X, y.shape[1])\n", - " y_new = multi_output_transform_y(y)\n", - " return X_new, y_new\n", - "\n", - "def multi_output_transformer_x(X, number_of_columns_y):\n", - " indicator_vecs = linalg.block_diag(*([np.ones((X.shape[0], 1))] * number_of_columns_y))\n", - " if sparse.issparse(X):\n", - " X_new = sparse.vstack(np.tile(X, number_of_columns_y))\n", - " indicator_vecs = sparse.coo_matrix(indicator_vecs)\n", - " X_new = sparse.hstack((X_new, indicator_vecs))\n", - " else:\n", - " X_new = np.tile(X, (number_of_columns_y, 1))\n", - " X_new = np.hstack((X_new, indicator_vecs))\n", - " return X_new\n", - "\n", - "def multi_output_transform_y(y):\n", - " return y.reshape(-1, order=\"F\")\n", - "\n", - "def multi_output_inverse_transform_y(y, number_of_columns_y):\n", - " return y.reshape((-1, number_of_columns_y), order = \"F\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## AutoML Experiment Setup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment and specify the project folder.\n", - "experiment_name = 'automl-local-multi-output'\n", - "project_folder = './sample_projects/automl-local-multi-output'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create a Random Dataset for Test Purposes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "rng = np.random.RandomState(1)\n", - "X_train = np.sort(200 * rng.rand(600, 1) - 100, axis = 0)\n", - "y_train = np.array([np.pi * np.sin(X_train).ravel(), np.pi * np.cos(X_train).ravel()]).T\n", - "y_train += (0.5 - rng.rand(*y_train.shape))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perform X and y transformation using the transformer function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X_train_transformed, y_train_transformed = multi_output_transform_x_y(X_train, y_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Configure AutoML using the transformed results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'regression',\n", - " debug_log = 'automl_errors_multi.log',\n", - " primary_metric = 'r2_score',\n", - " iterations = 10,\n", - " n_cross_validations = 2,\n", - " verbosity = logging.INFO,\n", - " X = X_train_transformed,\n", - " y = y_train_transformed,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fit the Transformed Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the best fit model.\n", - "best_run, fitted_model = local_run.get_output()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate random data set for predicting.\n", - "X_test = np.sort(200 * rng.rand(200, 1) - 100, axis = 0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Transform predict data.\n", - "X_test_transformed = multi_output_transformer_x(X_test, y_train.shape[1])\n", - "\n", - "# Predict and inverse transform the prediction.\n", - "y_predict = fitted_model.predict(X_test_transformed)\n", - "y_predict = multi_output_inverse_transform_y(y_predict, y_train.shape[1])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(y_predict)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 10: Multi-output\n", + "\n", + "This notebook shows how to use AutoML to train multi-output problems by leveraging the correlation between the outputs using indicator vectors.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transformer Functions\n", + "The transformations of inputs `X` and `y` are happening as follows, e.g. `y = {y_1, y_2}`, then `X` becomes\n", + " \n", + "`X 1 0`\n", + " \n", + "`X 0 1`\n", + "\n", + "and `y` becomes,\n", + "\n", + "`y_1`\n", + "\n", + "`y_2`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import sparse\n", + "from scipy import linalg\n", + "\n", + "#Transformer functions\n", + "def multi_output_transform_x_y(X, y):\n", + " X_new = multi_output_transformer_x(X, y.shape[1])\n", + " y_new = multi_output_transform_y(y)\n", + " return X_new, y_new\n", + "\n", + "def multi_output_transformer_x(X, number_of_columns_y):\n", + " indicator_vecs = linalg.block_diag(*([np.ones((X.shape[0], 1))] * number_of_columns_y))\n", + " if sparse.issparse(X):\n", + " X_new = sparse.vstack(np.tile(X, number_of_columns_y))\n", + " indicator_vecs = sparse.coo_matrix(indicator_vecs)\n", + " X_new = sparse.hstack((X_new, indicator_vecs))\n", + " else:\n", + " X_new = np.tile(X, (number_of_columns_y, 1))\n", + " X_new = np.hstack((X_new, indicator_vecs))\n", + " return X_new\n", + "\n", + "def multi_output_transform_y(y):\n", + " return y.reshape(-1, order=\"F\")\n", + "\n", + "def multi_output_inverse_transform_y(y, number_of_columns_y):\n", + " return y.reshape((-1, number_of_columns_y), order = \"F\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## AutoML Experiment Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-multi-output'\n", + "project_folder = './sample_projects/automl-local-multi-output'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a Random Dataset for Test Purposes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rng = np.random.RandomState(1)\n", + "X_train = np.sort(200 * rng.rand(600, 1) - 100, axis = 0)\n", + "y_train = np.array([np.pi * np.sin(X_train).ravel(), np.pi * np.cos(X_train).ravel()]).T\n", + "y_train += (0.5 - rng.rand(*y_train.shape))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform X and y transformation using the transformer function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_train_transformed, y_train_transformed = multi_output_transform_x_y(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Configure AutoML using the transformed results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'regression',\n", + " debug_log = 'automl_errors_multi.log',\n", + " primary_metric = 'r2_score',\n", + " iterations = 10,\n", + " n_cross_validations = 2,\n", + " verbosity = logging.INFO,\n", + " X = X_train_transformed,\n", + " y = y_train_transformed,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fit the Transformed Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the best fit model.\n", + "best_run, fitted_model = local_run.get_output()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Generate random data set for predicting.\n", + "X_test = np.sort(200 * rng.rand(200, 1) - 100, axis = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Transform predict data.\n", + "X_test_transformed = multi_output_transformer_x(X_test, y_train.shape[1])\n", + "\n", + "# Predict and inverse transform the prediction.\n", + "y_predict = fitted_model.predict(X_test_transformed)\n", + "y_predict = multi_output_inverse_transform_y(y_predict, y_train.shape[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(y_predict)" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/11.auto-ml-sample-weight.ipynb b/automl/11.auto-ml-sample-weight.ipynb index bd4d1048..67bee059 100644 --- a/automl/11.auto-ml-sample-weight.ipynb +++ b/automl/11.auto-ml-sample-weight.ipynb @@ -1,251 +1,251 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 11: Sample Weight\n", - "\n", - "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use sample weight with AutoML. Sample weight is used where some sample values are more important than others.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to configure AutoML to use `sample_weight` and you will see the difference sample weight makes to the test results.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose names for the regular and the sample weight experiments.\n", - "experiment_name = 'non_sample_weight_experiment'\n", - "sample_weight_experiment_name = 'sample_weight_experiment'\n", - "\n", - "project_folder = './sample_projects/automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "sample_weight_experiment=Experiment(ws, sample_weight_experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate two `AutoMLConfig` objects. One will be used with `sample_weight` and one without." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_train = digits.data[100:,:]\n", - "y_train = digits.target[100:]\n", - "\n", - "# The example makes the sample weight 0.9 for the digit 4 and 0.1 for all other digits.\n", - "# This makes the model more likely to classify as 4 if the image it not clear.\n", - "sample_weight = np.array([(0.9 if x == 4 else 0.01) for x in y_train])\n", - "\n", - "automl_classifier = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 10,\n", - " n_cross_validations = 2,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)\n", - "\n", - "automl_sample_weight = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 10,\n", - " n_cross_validations = 2,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " sample_weight = sample_weight,\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment objects and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_classifier, show_output = True)\n", - "sample_weight_run = sample_weight_experiment.submit(automl_sample_weight, show_output = True)\n", - "\n", - "best_run, fitted_model = local_run.get_output()\n", - "best_run_sample_weight, fitted_model_sample_weight = sample_weight_run.get_output()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "#### Load Test Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_test = digits.data[:100, :]\n", - "y_test = digits.target[:100]\n", - "images = digits.images[:100]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Compare the Models\n", - "The prediction from the sample weight model is more likely to correctly predict 4's. However, it is also more likely to predict 4 for some images that are not labelled as 4." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Randomly select digits and test.\n", - "for index in range(0,len(y_test)):\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " predicted_sample_weight = fitted_model_sample_weight.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " if predicted == 4 or predicted_sample_weight == 4 or label == 4:\n", - " title = \"Label value = %d Predicted value = %d Prediced with sample weight = %d\" % (label, predicted, predicted_sample_weight)\n", - " fig = plt.figure(1, figsize=(3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 11: Sample Weight\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use sample weight with AutoML. Sample weight is used where some sample values are more important than others.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to configure AutoML to use `sample_weight` and you will see the difference sample weight makes to the test results.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose names for the regular and the sample weight experiments.\n", + "experiment_name = 'non_sample_weight_experiment'\n", + "sample_weight_experiment_name = 'sample_weight_experiment'\n", + "\n", + "project_folder = './sample_projects/automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "sample_weight_experiment=Experiment(ws, sample_weight_experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate two `AutoMLConfig` objects. One will be used with `sample_weight` and one without." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_train = digits.data[100:,:]\n", + "y_train = digits.target[100:]\n", + "\n", + "# The example makes the sample weight 0.9 for the digit 4 and 0.1 for all other digits.\n", + "# This makes the model more likely to classify as 4 if the image it not clear.\n", + "sample_weight = np.array([(0.9 if x == 4 else 0.01) for x in y_train])\n", + "\n", + "automl_classifier = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 10,\n", + " n_cross_validations = 2,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)\n", + "\n", + "automl_sample_weight = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 10,\n", + " n_cross_validations = 2,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " sample_weight = sample_weight,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Models\n", + "\n", + "Call the `submit` method on the experiment objects and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_classifier, show_output = True)\n", + "sample_weight_run = sample_weight_experiment.submit(automl_sample_weight, show_output = True)\n", + "\n", + "best_run, fitted_model = local_run.get_output()\n", + "best_run_sample_weight, fitted_model_sample_weight = sample_weight_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model\n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:100, :]\n", + "y_test = digits.target[:100]\n", + "images = digits.images[:100]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Compare the Models\n", + "The prediction from the sample weight model is more likely to correctly predict 4's. However, it is also more likely to predict 4 for some images that are not labelled as 4." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Randomly select digits and test.\n", + "for index in range(0,len(y_test)):\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " predicted_sample_weight = fitted_model_sample_weight.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " if predicted == 4 or predicted_sample_weight == 4 or label == 4:\n", + " title = \"Label value = %d Predicted value = %d Prediced with sample weight = %d\" % (label, predicted, predicted_sample_weight)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/12.auto-ml-retrieve-the-training-sdk-versions.ipynb b/automl/12.auto-ml-retrieve-the-training-sdk-versions.ipynb index d3b58518..9fb46194 100644 --- a/automl/12.auto-ml-retrieve-the-training-sdk-versions.ipynb +++ b/automl/12.auto-ml-retrieve-the-training-sdk-versions.ipynb @@ -1,227 +1,227 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 12: Retrieving Training SDK Versions\n", - "\n", - "This example shows how to find the SDK versions used for an experiment.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Train models using AutoML" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment and specify the project folder.\n", - "experiment_name = 'automl-local-classification'\n", - "project_folder = './sample_projects/automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_train = digits.data[10:,:]\n", - "y_train = digits.target[10:]\n", - "\n", - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iterations = 3,\n", - " n_cross_validations = 2,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " path = project_folder)\n", - "\n", - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Retrieve the SDK versions from RunHistory" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get the SDK versions from RunHistory, first the run id needs to be recorded. This can either be done by copying it from the output message or by retrieving it after each run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use a run id copied from an output message.\n", - "#run_id = 'AutoML_c0585b1f-a0e6-490b-84c7-3a099468b28e'\n", - "\n", - "# Retrieve the run id from a run.\n", - "run_id = local_run.id\n", - "print(run_id)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize a new `AutoMLRun` object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "ml_run = AutoMLRun(experiment = experiment, run_id = run_id)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get parent training SDK versions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ml_run.get_run_sdk_dependencies()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get the traning SDK versions of a specific run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ml_run.get_run_sdk_dependencies(iteration = 2)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 12: Retrieving Training SDK Versions\n", + "\n", + "This example shows how to find the SDK versions used for an experiment.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train models using AutoML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-classification'\n", + "project_folder = './sample_projects/automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_train = digits.data[10:,:]\n", + "y_train = digits.target[10:]\n", + "\n", + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " primary_metric = 'AUC_weighted',\n", + " iterations = 3,\n", + " n_cross_validations = 2,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " path = project_folder)\n", + "\n", + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Retrieve the SDK versions from RunHistory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get the SDK versions from RunHistory, first the run id needs to be recorded. This can either be done by copying it from the output message or by retrieving it after each run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use a run id copied from an output message.\n", + "#run_id = 'AutoML_c0585b1f-a0e6-490b-84c7-3a099468b28e'\n", + "\n", + "# Retrieve the run id from a run.\n", + "run_id = local_run.id\n", + "print(run_id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize a new `AutoMLRun` object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "ml_run = AutoMLRun(experiment = experiment, run_id = run_id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get parent training SDK versions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ml_run.get_run_sdk_dependencies()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the traning SDK versions of a specific run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ml_run.get_run_sdk_dependencies(iteration = 2)" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/13a.auto-ml-dataprep.ipynb b/automl/13a.auto-ml-dataprep.ipynb index ec7ecf28..5b25f342 100644 --- a/automl/13a.auto-ml-dataprep.ipynb +++ b/automl/13a.auto-ml-dataprep.ipynb @@ -1,446 +1,446 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 13: Prepare Data using `azureml.dataprep` for Local Execution\n", - "In this example we showcase how you can use the `azureml.dataprep` SDK to load and prepare data for AutoML. `azureml.dataprep` can also be used standalone; full documentation can be found [here](https://github.com/Microsoft/PendletonDocs).\n", - "\n", - "Make sure you have executed the [setup](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Define data loading and preparation steps in a `Dataflow` using `azureml.dataprep`.\n", - "2. Pass the `Dataflow` to AutoML for a local run.\n", - "3. Pass the `Dataflow` to AutoML for a remote run." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "\n", - "import pandas as pd\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "import azureml.dataprep as dprep\n", - "from azureml.train.automl import AutoMLConfig" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - " \n", - "# choose a name for experiment\n", - "experiment_name = 'automl-dataprep-local'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-dataprep-local'\n", - " \n", - "experiment = Experiment(ws, experiment_name)\n", - " \n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading Data using DataPrep" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# You can use `smart_read_file` which intelligently figures out delimiters and datatypes of a file.\n", - "# The data referenced here was pulled from `sklearn.datasets.load_digits()`.\n", - "simple_example_data_root = 'https://dprepdata.blob.core.windows.net/automl-notebook-data/'\n", - "X = dprep.smart_read_file(simple_example_data_root + 'X.csv').skip(1) # Remove the header row.\n", - "\n", - "# You can also use `read_csv` and `to_*` transformations to read (with overridable delimiter)\n", - "# and convert column types manually.\n", - "# Here we read a comma delimited file and convert all columns to integers.\n", - "y = dprep.read_csv(simple_example_data_root + 'y.csv').to_long(dprep.ColumnSelector(term='.*', use_regex = True))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Review the Data Preparation Result\n", - "\n", - "You can peek the result of a Dataflow at any range using `skip(i)` and `head(j)`. Doing so evaluates only `j` records for all the steps in the Dataflow, which makes it fast even against large datasets." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X.skip(1).head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "This creates a general AutoML settings object applicable for both local and remote runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_settings = {\n", - " \"iteration_timeout_minutes\" : 10,\n", - " \"iterations\" : 2,\n", - " \"primary_metric\" : 'AUC_weighted',\n", - " \"preprocess\" : False,\n", - " \"verbosity\" : logging.INFO,\n", - " \"n_cross_validations\": 3\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Local Run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Pass Data with `Dataflow` Objects\n", - "\n", - "The `Dataflow` objects captured above can be passed to the `submit` method for a local run. AutoML will retrieve the results from the `Dataflow` for model training." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " X = X,\n", - " y = y,\n", - " **automl_settings)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - " \n", - "import pandas as pd\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model that has the smallest `log_loss` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lookup_metric = \"log_loss\"\n", - "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the first iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 0\n", - "best_run, fitted_model = local_run.get_output(iteration = iteration)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "#### Load Test Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Testing Our Best Fitted Model\n", - "We will try to predict 2 digits and see how our model works." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Randomly select digits and test\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import random\n", - "import numpy as np\n", - "\n", - "for index in np.random.choice(len(y_test), 2, replace = False):\n", - " print(index)\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", - " fig = plt.figure(1, figsize=(3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Appendix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Capture the `Dataflow` Objects for Later Use in AutoML\n", - "\n", - "`Dataflow` objects are immutable and are composed of a list of data preparation steps. A `Dataflow` object can be branched at any point for further usage." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# sklearn.digits.data + target\n", - "digits_complete = dprep.smart_read_file('https://dprepdata.blob.core.windows.net/automl-notebook-data/digits-complete.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`digits_complete` (sourced from `sklearn.datasets.load_digits()`) is forked into `dflow_X` to capture all the feature columns and `dflow_y` to capture the label column." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits_complete.to_pandas_dataframe().shape\n", - "labels_column = 'Column64'\n", - "dflow_X = digits_complete.drop_columns(columns = [labels_column])\n", - "dflow_y = digits_complete.keep_columns(columns = [labels_column])" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 13: Prepare Data using `azureml.dataprep` for Local Execution\n", + "In this example we showcase how you can use the `azureml.dataprep` SDK to load and prepare data for AutoML. `azureml.dataprep` can also be used standalone; full documentation can be found [here](https://github.com/Microsoft/PendletonDocs).\n", + "\n", + "Make sure you have executed the [setup](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Define data loading and preparation steps in a `Dataflow` using `azureml.dataprep`.\n", + "2. Pass the `Dataflow` to AutoML for a local run.\n", + "3. Pass the `Dataflow` to AutoML for a remote run." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "\n", + "import pandas as pd\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "import azureml.dataprep as dprep\n", + "from azureml.train.automl import AutoMLConfig" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + " \n", + "# choose a name for experiment\n", + "experiment_name = 'automl-dataprep-local'\n", + "# project folder\n", + "project_folder = './sample_projects/automl-dataprep-local'\n", + " \n", + "experiment = Experiment(ws, experiment_name)\n", + " \n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading Data using DataPrep" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You can use `smart_read_file` which intelligently figures out delimiters and datatypes of a file.\n", + "# The data referenced here was pulled from `sklearn.datasets.load_digits()`.\n", + "simple_example_data_root = 'https://dprepdata.blob.core.windows.net/automl-notebook-data/'\n", + "X = dprep.smart_read_file(simple_example_data_root + 'X.csv').skip(1) # Remove the header row.\n", + "\n", + "# You can also use `read_csv` and `to_*` transformations to read (with overridable delimiter)\n", + "# and convert column types manually.\n", + "# Here we read a comma delimited file and convert all columns to integers.\n", + "y = dprep.read_csv(simple_example_data_root + 'y.csv').to_long(dprep.ColumnSelector(term='.*', use_regex = True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Review the Data Preparation Result\n", + "\n", + "You can peek the result of a Dataflow at any range using `skip(i)` and `head(j)`. Doing so evaluates only `j` records for all the steps in the Dataflow, which makes it fast even against large datasets." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X.skip(1).head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "This creates a general AutoML settings object applicable for both local and remote runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\" : 600,\n", + " \"iterations\" : 2,\n", + " \"primary_metric\" : 'AUC_weighted',\n", + " \"preprocess\" : False,\n", + " \"verbosity\" : logging.INFO,\n", + " \"n_cross_validations\": 3\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Local Run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pass Data with `Dataflow` Objects\n", + "\n", + "The `Dataflow` objects captured above can be passed to the `submit` method for a local run. AutoML will retrieve the results from the `Dataflow` for model training." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " X = X,\n", + " y = y,\n", + " **automl_settings)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + " \n", + "import pandas as pd\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the first iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 0\n", + "best_run, fitted_model = local_run.get_output(iteration = iteration)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model\n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "\n", + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Testing Our Best Fitted Model\n", + "We will try to predict 2 digits and see how our model works." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Randomly select digits and test\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import random\n", + "import numpy as np\n", + "\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Capture the `Dataflow` Objects for Later Use in AutoML\n", + "\n", + "`Dataflow` objects are immutable and are composed of a list of data preparation steps. A `Dataflow` object can be branched at any point for further usage." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# sklearn.digits.data + target\n", + "digits_complete = dprep.smart_read_file('https://dprepdata.blob.core.windows.net/automl-notebook-data/digits-complete.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`digits_complete` (sourced from `sklearn.datasets.load_digits()`) is forked into `dflow_X` to capture all the feature columns and `dflow_y` to capture the label column." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits_complete.to_pandas_dataframe().shape\n", + "labels_column = 'Column64'\n", + "dflow_X = digits_complete.drop_columns(columns = [labels_column])\n", + "dflow_y = digits_complete.keep_columns(columns = [labels_column])" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/13b.auto-ml-dataprep-remote-execution.ipynb b/automl/13b.auto-ml-dataprep-remote-execution.ipynb index 3f895f2c..ce68b011 100644 --- a/automl/13b.auto-ml-dataprep-remote-execution.ipynb +++ b/automl/13b.auto-ml-dataprep-remote-execution.ipynb @@ -1,495 +1,473 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 13: Prepare Data using `azureml.dataprep` for Remote Execution (DSVM)\n", - "In this example we showcase how you can use the `azureml.dataprep` SDK to load and prepare data for AutoML. `azureml.dataprep` can also be used standalone; full documentation can be found [here](https://github.com/Microsoft/PendletonDocs).\n", - "\n", - "Make sure you have executed the [setup](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Define data loading and preparation steps in a `Dataflow` using `azureml.dataprep`.\n", - "2. Pass the `Dataflow` to AutoML for a local run.\n", - "3. Pass the `Dataflow` to AutoML for a remote run." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import time\n", - "\n", - "import pandas as pd\n", - "\n", - "import azureml.core\n", - "from azureml.core.compute import DsvmCompute\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "import azureml.dataprep as dprep\n", - "from azureml.train.automl import AutoMLConfig" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - " \n", - "# choose a name for experiment\n", - "experiment_name = 'automl-dataprep-remote-dsvm'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-dataprep-remote-dsvm'\n", - " \n", - "experiment = Experiment(ws, experiment_name)\n", - " \n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading Data using DataPrep" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# You can use `smart_read_file` which intelligently figures out delimiters and datatypes of a file.\n", - "# The data referenced here was pulled from `sklearn.datasets.load_digits()`.\n", - "simple_example_data_root = 'https://dprepdata.blob.core.windows.net/automl-notebook-data/'\n", - "X = dprep.smart_read_file(simple_example_data_root + 'X.csv').skip(1) # Remove the header row.\n", - "\n", - "# You can also use `read_csv` and `to_*` transformations to read (with overridable delimiter)\n", - "# and convert column types manually.\n", - "# Here we read a comma delimited file and convert all columns to integers.\n", - "y = dprep.read_csv(simple_example_data_root + 'y.csv').to_long(dprep.ColumnSelector(term='.*', use_regex = True))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Review the Data Preparation Result\n", - "\n", - "You can peek the result of a Dataflow at any range using `skip(i)` and `head(j)`. Doing so evaluates only `j` records for all the steps in the Dataflow, which makes it fast even against large datasets." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X.skip(1).head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "This creates a general AutoML settings object applicable for both local and remote runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_settings = {\n", - " \"iteration_timeout_minutes\" : 10,\n", - " \"iterations\" : 2,\n", - " \"primary_metric\" : 'AUC_weighted',\n", - " \"preprocess\" : False,\n", - " \"verbosity\" : logging.INFO,\n", - " \"n_cross_validations\": 3\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Remote Run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create or Attach a Remote Linux DSVM" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dsvm_name = 'mydsvmd'\n", - "\n", - "try:\n", - " while ws.compute_targets[dsvm_name].provisioning_state == 'Creating':\n", - " time.sleep(1)\n", - " \n", - " dsvm_compute = DsvmCompute(ws, dsvm_name)\n", - " print('Found existing DVSM.')\n", - "except:\n", - " print('Creating a new DSVM.')\n", - " dsvm_config = DsvmCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\")\n", - " dsvm_compute = DsvmCompute.create(ws, name = dsvm_name, provisioning_configuration = dsvm_config)\n", - " dsvm_compute.wait_for_completion(show_output = True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "conda_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "conda_run_config.target = dsvm_compute\n", - "\n", - "cd = CondaDependencies.create(pip_packages=['azureml-sdk[automl]'], conda_packages=['numpy'])\n", - "conda_run_config.environment.python.conda_dependencies = cd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Pass Data with `Dataflow` Objects\n", - "\n", - "The `Dataflow` objects captured above can also be passed to the `submit` method for a remote run. AutoML will serialize the `Dataflow` object and send it to the remote compute target. The `Dataflow` will not be evaluated locally." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " path = project_folder,\n", - " run_configuration=conda_run_config,\n", - " X = X,\n", - " y = y,\n", - " **automl_settings)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "remote_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(remote_run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(remote_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - " \n", - "import pandas as pd\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = remote_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model that has the smallest `log_loss` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lookup_metric = \"log_loss\"\n", - "best_run, fitted_model = remote_run.get_output(metric = lookup_metric)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the first iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 0\n", - "best_run, fitted_model = remote_run.get_output(iteration = iteration)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "#### Load Test Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Testing Our Best Fitted Model\n", - "We will try to predict 2 digits and see how our model works." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Randomly select digits and test\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import random\n", - "import numpy as np\n", - "\n", - "for index in np.random.choice(len(y_test), 2, replace = False):\n", - " print(index)\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", - " fig = plt.figure(1, figsize=(3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Appendix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Capture the `Dataflow` Objects for Later Use in AutoML\n", - "\n", - "`Dataflow` objects are immutable and are composed of a list of data preparation steps. A `Dataflow` object can be branched at any point for further usage." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# sklearn.digits.data + target\n", - "digits_complete = dprep.smart_read_file('https://dprepdata.blob.core.windows.net/automl-notebook-data/digits-complete.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`digits_complete` (sourced from `sklearn.datasets.load_digits()`) is forked into `dflow_X` to capture all the feature columns and `dflow_y` to capture the label column." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits_complete.to_pandas_dataframe().shape\n", - "labels_column = 'Column64'\n", - "dflow_X = digits_complete.drop_columns(columns = [labels_column])\n", - "dflow_y = digits_complete.keep_columns(columns = [labels_column])" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 13: Prepare Data using `azureml.dataprep` for Remote Execution (DSVM)\n", + "In this example we showcase how you can use the `azureml.dataprep` SDK to load and prepare data for AutoML. `azureml.dataprep` can also be used standalone; full documentation can be found [here](https://github.com/Microsoft/PendletonDocs).\n", + "\n", + "Make sure you have executed the [setup](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Define data loading and preparation steps in a `Dataflow` using `azureml.dataprep`.\n", + "2. Pass the `Dataflow` to AutoML for a local run.\n", + "3. Pass the `Dataflow` to AutoML for a remote run." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "\n", + "import pandas as pd\n", + "\n", + "import azureml.core\n", + "from azureml.core.compute import DsvmCompute\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "import azureml.dataprep as dprep\n", + "from azureml.train.automl import AutoMLConfig" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + " \n", + "# choose a name for experiment\n", + "experiment_name = 'automl-dataprep-remote-dsvm'\n", + "# project folder\n", + "project_folder = './sample_projects/automl-dataprep-remote-dsvm'\n", + " \n", + "experiment = Experiment(ws, experiment_name)\n", + " \n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading Data using DataPrep" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You can use `smart_read_file` which intelligently figures out delimiters and datatypes of a file.\n", + "# The data referenced here was pulled from `sklearn.datasets.load_digits()`.\n", + "simple_example_data_root = 'https://dprepdata.blob.core.windows.net/automl-notebook-data/'\n", + "X = dprep.smart_read_file(simple_example_data_root + 'X.csv').skip(1) # Remove the header row.\n", + "\n", + "# You can also use `read_csv` and `to_*` transformations to read (with overridable delimiter)\n", + "# and convert column types manually.\n", + "# Here we read a comma delimited file and convert all columns to integers.\n", + "y = dprep.read_csv(simple_example_data_root + 'y.csv').to_long(dprep.ColumnSelector(term='.*', use_regex = True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Review the Data Preparation Result\n", + "\n", + "You can peek the result of a Dataflow at any range using `skip(i)` and `head(j)`. Doing so evaluates only `j` records for all the steps in the Dataflow, which makes it fast even against large datasets." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X.skip(1).head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "This creates a general AutoML settings object applicable for both local and remote runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_settings = {\n", + " \"max_time_sec\" : 600,\n", + " \"iterations\" : 2,\n", + " \"primary_metric\" : 'AUC_weighted',\n", + " \"preprocess\" : False,\n", + " \"verbosity\" : logging.INFO,\n", + " \"n_cross_validations\": 3\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Remote Run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create or Attach a Remote Linux DSVM" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dsvm_name = 'mydsvm'\n", + "try:\n", + " dsvm_compute = DsvmCompute(ws, dsvm_name)\n", + " print('Found existing DVSM.')\n", + "except:\n", + " print('Creating a new DSVM.')\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\")\n", + " dsvm_compute = DsvmCompute.create(ws, name = dsvm_name, provisioning_configuration = dsvm_config)\n", + " dsvm_compute.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pass Data with `Dataflow` Objects\n", + "\n", + "The `Dataflow` objects captured above can also be passed to the `submit` method for a remote run. AutoML will serialize the `Dataflow` object and send it to the remote compute target. The `Dataflow` will not be evaluated locally." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'automl_errors.log',\n", + " path = project_folder,\n", + " compute_target = dsvm_compute,\n", + " X = X,\n", + " y = y,\n", + " **automl_settings)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "remote_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(remote_run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(remote_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + " \n", + "import pandas as pd\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = remote_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = remote_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the first iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 0\n", + "best_run, fitted_model = remote_run.get_output(iteration = iteration)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model\n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "\n", + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Testing Our Best Fitted Model\n", + "We will try to predict 2 digits and see how our model works." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Randomly select digits and test\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import random\n", + "import numpy as np\n", + "\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize=(3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Capture the `Dataflow` Objects for Later Use in AutoML\n", + "\n", + "`Dataflow` objects are immutable and are composed of a list of data preparation steps. A `Dataflow` object can be branched at any point for further usage." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# sklearn.digits.data + target\n", + "digits_complete = dprep.smart_read_file('https://dprepdata.blob.core.windows.net/automl-notebook-data/digits-complete.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`digits_complete` (sourced from `sklearn.datasets.load_digits()`) is forked into `dflow_X` to capture all the feature columns and `dflow_y` to capture the label column." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits_complete.to_pandas_dataframe().shape\n", + "labels_column = 'Column64'\n", + "dflow_X = digits_complete.drop_columns(columns = [labels_column])\n", + "dflow_y = digits_complete.keep_columns(columns = [labels_column])" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "savitam" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/14.auto-ml-model-explanation.ipynb b/automl/14.auto-ml-model-explanation.ipynb deleted file mode 100644 index 05b17ef9..00000000 --- a/automl/14.auto-ml-model-explanation.ipynb +++ /dev/null @@ -1,374 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 14: Explain classification model and visualize the explanation\n", - "\n", - "In this example we use the sklearn's [iris dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html) to showcase how you can use the AutoML Classifier for a simple classification problem.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you would see\n", - "1. Creating an Experiment in an existing Workspace\n", - "2. Instantiating AutoMLConfig\n", - "3. Training the Model using local compute and explain the model\n", - "4. Visualization model's feature importance in widget\n", - "5. Explore best model's explanation\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Install AzureML Explainer SDK " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install azureml_sdk[explain]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Experiment\n", - "\n", - "As part of the setup you have already created a Workspace. For AutoML you would need to create an Experiment. An Experiment is a named object in a Workspace, which is used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "import pandas as pd\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# choose a name for experiment\n", - "experiment_name = 'automl-local-classification'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-local-classification-model-explanation'\n", - "\n", - "experiment=Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Iris Data Set" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "iris = datasets.load_iris()\n", - "y = iris.target\n", - "X = iris.data\n", - "\n", - "features = iris.feature_names\n", - "\n", - "from sklearn.model_selection import train_test_split\n", - "X_train, X_test, y_train, y_test = train_test_split(X,\n", - " y,\n", - " test_size=0.1,\n", - " random_state=100,\n", - " stratify=y)\n", - "\n", - "X_train = pd.DataFrame(X_train, columns=features)\n", - "X_test = pd.DataFrame(X_test, columns=features)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Instantiate Auto ML Config\n", - "\n", - "Instantiate a AutoMLConfig object. This defines the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted|\n", - "|**max_time_sec**|Time limit in minutes for each iterations|\n", - "|**iterations**|Number of iterations. In each iteration Auto ML trains the data with a specific pipeline|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers. |\n", - "|**X_valid**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y_valid**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]|\n", - "|**model_explainability**|Indicate to explain each trained pipeline or not |\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder. |" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 200,\n", - " iterations = 10,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " X_valid = X_test,\n", - " y_valid = y_test,\n", - " model_explainability=True,\n", - " path=project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Training the Model\n", - "\n", - "You can call the submit method on the experiment object and pass the run configuration. For Local runs the execution is synchronous. Depending on the data and number of iterations this can run for while.\n", - "You will see the currently running iterations printing to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exploring the results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Widget for monitoring runs\n", - "\n", - "The widget will sit on \"loading\" until the first iteration completed, then you will see an auto-updating graph and table show up. It refreshed once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "NOTE: The widget displays a link at the bottom. This links to a web-ui to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "child_run = next(local_run.get_children())\n", - "RunDetails(child_run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The *get_output* method on automl_classifier returns the best run and the fitted model for the last *fit* invocation. There are overloads on *get_output* that allow you to retrieve the best run and fitted model for *any* logged metric or a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Best Model 's explanation\n", - "\n", - "Retrieve the explanation from the best_run. And explanation information includes:\n", - "\n", - "1.\tshap_values: The explanation information generated by shap lib\n", - "2.\texpected_values: The expected value of the model applied to set of X_train data.\n", - "3.\toverall_summary: The model level feature importance values sorted in descending order\n", - "4.\toverall_imp: The feature names sorted in the same order as in overall_summary\n", - "5.\tper_class_summary: The class level feature importance values sorted in descending order. Only available for the classification case\n", - "6.\tper_class_imp: The feature names sorted in the same order as in per_class_summary. Only available for the classification case" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.automl.automlexplainer import retrieve_model_explanation\n", - "\n", - "shap_values, expected_values, overall_summary, overall_imp, per_class_summary, per_class_imp = \\\n", - " retrieve_model_explanation(best_run)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(overall_summary)\n", - "print(overall_imp)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(per_class_summary)\n", - "print(per_class_imp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Beside retrieve the existed model explanation information, explain the model with different train/test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.automl.automlexplainer import explain_model\n", - "\n", - "shap_values, expected_values, overall_summary, overall_imp, per_class_summary, per_class_imp = \\\n", - " explain_model(fitted_model, X_train, X_test)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(overall_summary)\n", - "print(overall_imp)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "xif" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/automl/15a.auto-ml-classification-ensemble.ipynb b/automl/15a.auto-ml-classification-ensemble.ipynb new file mode 100644 index 00000000..357fe61f --- /dev/null +++ b/automl/15a.auto-ml-classification-ensemble.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 15a: Classification with ensembling on local compute\n", + "\n", + "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) to showcase how you can use AutoML for a simple classification problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig` which enables an extra ensembling iteration.\n", + "3. Train the model using local compute.\n", + "4. Explore the results.\n", + "5. Test the best fitted model.\n", + "\n", + "Disclaimers / Limitations \n", + "- Currently only Train/Validation split is supported; support for cross-validation will be coming soon.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-classification'\n", + "project_folder = './sample_projects/automl-local-classification'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Training Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "\n", + "digits = datasets.load_digits()\n", + "\n", + "# Exclude the first 50 rows from training so that they can be used for test.\n", + "X_train = digits.data[150:,:]\n", + "y_train = digits.target[150:]\n", + "X_valid = digits.data[50:150]\n", + "y_valid = digits.target[50:150]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**n_cross_validations**|Number of cross validation splits.|\n", + "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**X_valid**|(sparse) array-like, shape = [n_samples, n_features]|\n", + "|**y_valid**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", + "|**enable_ensembling**|Flag to enable an ensembling iteration after all the other iterations complete.|\n", + "|**ensemble_iterations**|Number of iterations during which we choose a fitted pipeline to be part of the final ensemble.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'classification',\n", + " debug_log = 'classification.log',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 3600,\n", + " iterations = 10,\n", + " verbosity = logging.INFO,\n", + " X = X_train, \n", + " y = y_train,\n", + " X_valid = X_valid,\n", + " y_valid = y_valid,\n", + " enable_ensembling = True,\n", + " ensemble_iterations = 5,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Model\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Optionally, you can continue an interrupted local run by calling `continue_experiment` without the `iterations` parameter, or run more iterations for a completed run by specifying the `iterations` parameter:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = local_run.continue_experiment(X = X_train, \n", + " y = y_train,\n", + " X_valid = X_valid,\n", + " y_valid = y_valid,\n", + " show_output = True,\n", + " iterations = 5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method on `automl_classifier` returns the best run and the fitted model for the last invocation. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `log_loss` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"log_loss\"\n", + "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model from a Specific Iteration\n", + "Show the run and the model from the third iteration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iteration = 3\n", + "third_run, third_model = local_run.get_output(iteration = iteration)\n", + "print(third_run)\n", + "print(third_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Fitted Model\n", + "\n", + "#### Load Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "digits = datasets.load_digits()\n", + "X_test = digits.data[:10, :]\n", + "y_test = digits.target[:10]\n", + "images = digits.images[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Testing Our Best Pipeline\n", + "We will try to predict 2 digits and see how our model works." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Randomly select digits and test.\n", + "for index in np.random.choice(len(y_test), 2, replace = False):\n", + " print(index)\n", + " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", + " label = y_test[index]\n", + " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", + " fig = plt.figure(1, figsize = (3,3))\n", + " ax1 = fig.add_axes((0,0,.8,.8))\n", + " ax1.set_title(title)\n", + " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", + " plt.show()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "ratanase" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/15b.auto-ml-regression-ensemble.ipynb b/automl/15b.auto-ml-regression-ensemble.ipynb new file mode 100644 index 00000000..17c94492 --- /dev/null +++ b/automl/15b.auto-ml-regression-ensemble.ipynb @@ -0,0 +1,442 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AutoML 15b: Regression with ensembling on remote compute\n", + "\n", + "In this example we use the scikit-learn's [diabetes dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html) to showcase how you can use AutoML for a simple regression problem.\n", + "\n", + "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", + "\n", + "In this notebook you will learn how to:\n", + "1. Create an `Experiment` in an existing `Workspace`.\n", + "2. Configure AutoML using `AutoMLConfig`which enables an extra ensembling iteration.\n", + "3. Train the model using remote compute.\n", + "4. Explore the results.\n", + "5. Test the best fitted model.\n", + "\n", + "Disclaimers / Limitations \n", + "- Currently only Train/Validation split is supported; support for cross-validation will be coming soon.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an Experiment\n", + "\n", + "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import random\n", + "\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "import azureml.core\n", + "from azureml.core.experiment import Experiment\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl import AutoMLConfig\n", + "from azureml.train.automl.run import AutoMLRun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "\n", + "# Choose a name for the experiment and specify the project folder.\n", + "experiment_name = 'automl-local-regression'\n", + "project_folder = './sample_projects/automl-local-regression'\n", + "\n", + "experiment = Experiment(ws, experiment_name)\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace Name'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "output['Experiment Name'] = experiment.name\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data = output, index = ['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a Remote Linux DSVM\n", + "**Note:** If creation fails with a message about Marketplace purchase eligibilty, start creation of a DSVM through the [Azure portal](https://portal.azure.com), and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled this setting, you can exit the portal without actually creating the DSVM, and creation of the DSVM through the notebook should work." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import DsvmCompute\n", + "\n", + "dsvm_name = 'mydsvm'\n", + "try:\n", + " dsvm_compute = DsvmCompute(ws, dsvm_name)\n", + " print('Found an existing DSVM.')\n", + "except:\n", + " print('Creating a new DSVM.')\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\")\n", + " dsvm_compute = DsvmCompute.create(ws, name = dsvm_name, provisioning_configuration = dsvm_config)\n", + " dsvm_compute.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Get Data File\n", + "For remote executions you should author a `get_data.py` file containing a `get_data()` function. This file should be in the root directory of the project. You can encapsulate code to read data either from a blob storage or local disk in this file.\n", + "In this example, the `get_data()` function returns data using scikit-learn's `diabetes` dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $project_folder/get_data.py\n", + "\n", + "# Load the diabetes dataset, a well-known built-in small dataset that comes with scikit-learn.\n", + "from sklearn.datasets import load_diabetes\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "def get_data():\n", + " X, y = load_diabetes(return_X_y = True)\n", + "\n", + " columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", + "\n", + " X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size = 0.2, random_state = 0)\n", + " X_valid, X_test, y_valid, y_test = train_test_split(X_temp, y_temp, test_size = 0.5, random_state = 0)\n", + " return { \"X\" : X_train, \"y\" : y_train, \"X_valid\": X_valid, \"y_valid\": y_valid }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure AutoML\n", + "\n", + "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", + "\n", + "|Property|Description|\n", + "|-|-|\n", + "|**task**|classification or regression|\n", + "|**primary_metric**|This is the metric that you want to optimize. Regression supports the following primary metrics:
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error|\n", + "|**max_time_sec**|Time limit in seconds for each iteration.|\n", + "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", + "|**enable_ensembling**|Flag to enable an ensembling iteration after all the other iterations complete.|\n", + "|**ensemble_iterations**|Number of iterations during which we choose a fitted pipeline to be part of the final ensemble.|\n", + "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "automl_config = AutoMLConfig(task = 'regression',\n", + " max_time_sec = 600,\n", + " iterations = 20,\n", + " primary_metric = 'spearman_correlation',\n", + " debug_log = 'regression.log',\n", + " verbosity = logging.INFO,\n", + " compute_target = dsvm_compute,\n", + " data_script = project_folder + \"/get_data.py\",\n", + " enable_ensembling = True,\n", + " ensemble_iterations = 5,\n", + " path = project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the Model\n", + "\n", + "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", + "In this example, we specify `show_output = True` to print currently running iterations to the console." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run = experiment.submit(automl_config, show_output = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "local_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Widget for Monitoring Runs\n", + "\n", + "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", + "\n", + "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Retrieve All Child Runs\n", + "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the Best Model\n", + "\n", + "Below we select the best pipeline from our iterations. The `get_output` method on `automl_classifier` returns the best run and the fitted model for the last invocation. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run, fitted_model = local_run.get_output()\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Best Model Based on Any Other Metric\n", + "Show the run and the model that has the smallest `root_mean_squared_error` value." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lookup_metric = \"root_mean_squared_error\"\n", + "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", + "print(best_run)\n", + "print(fitted_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the Best Model (Ensemble)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Predict on training and test set, and calculate residual values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_diabetes\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X, y = load_diabetes(return_X_y = True)\n", + "\n", + "X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size = 0.2, random_state = 0)\n", + "X_valid, X_test, y_valid, y_test = train_test_split(X_temp, y_temp, test_size = 0.5, random_state = 0)\n", + "\n", + "\n", + "y_pred_train = fitted_model.predict(X_train)\n", + "y_residual_train = y_train - y_pred_train\n", + "\n", + "y_pred_test = fitted_model.predict(X_test)\n", + "y_residual_test = y_test - y_pred_test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "\n", + "# Set up a multi-plot chart.\n", + "f, (a0, a1) = plt.subplots(1, 2, gridspec_kw = {'width_ratios':[1, 1], 'wspace':0, 'hspace': 0})\n", + "f.suptitle('Regression Residual Values', fontsize = 18)\n", + "f.set_figheight(6)\n", + "f.set_figwidth(16)\n", + "\n", + "# Plot residual values of training set.\n", + "a0.axis([0, 360, -200, 200])\n", + "a0.plot(y_residual_train, 'bo', alpha = 0.5)\n", + "a0.plot([-10,360],[0,0], 'r-', lw = 3)\n", + "a0.text(16,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_train, y_pred_train))), fontsize = 12)\n", + "a0.text(16,140,'R2 score = {0:.2f}'.format(r2_score(y_train, y_pred_train)), fontsize = 12)\n", + "a0.set_xlabel('Training samples', fontsize = 12)\n", + "a0.set_ylabel('Residual Values', fontsize = 12)\n", + "\n", + "# Plot a histogram.\n", + "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step');\n", + "a0.hist(y_residual_train, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10);\n", + "\n", + "# Plot residual values of test set.\n", + "a1.axis([0, 90, -200, 200])\n", + "a1.plot(y_residual_test, 'bo', alpha = 0.5)\n", + "a1.plot([-10,360],[0,0], 'r-', lw = 3)\n", + "a1.text(5,170,'RMSE = {0:.2f}'.format(np.sqrt(mean_squared_error(y_test, y_pred_test))), fontsize = 12)\n", + "a1.text(5,140,'R2 score = {0:.2f}'.format(r2_score(y_test, y_pred_test)), fontsize = 12)\n", + "a1.set_xlabel('Test samples', fontsize = 12)\n", + "a1.set_yticklabels([])\n", + "\n", + "# Plot a histogram.\n", + "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', bins = 10, histtype = 'step')\n", + "a1.hist(y_residual_test, orientation = 'horizontal', color = 'b', alpha = 0.2, bins = 10)\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "ratanase" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/automl/17.auto-ml-classification_with_tensorflow.ipynb b/automl/17.auto-ml-classification_with_tensorflow.ipynb deleted file mode 100644 index 48afaebe..00000000 --- a/automl/17.auto-ml-classification_with_tensorflow.ipynb +++ /dev/null @@ -1,390 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 17: Classification with Local Compute with Tesnorflow DNNClassifier and LinearClassifier using whitelist models feature.\n", - "\n", - "In this example we use the scikit-learn's [digit dataset](http://scikit-learn.org/stable/datasets/index.html#optical-recognition-of-handwritten-digits-dataset) to showcase how you can use AutoML for a simple classification problem.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "This notebooks shows how can automl can be trained on a a selected list of models,see the readme.md for the models.\n", - "This trains the model exclusively on tensorflow based models.\n", - "\n", - "In this notebook you will learn how to:\n", - "1. Create an `Experiment` in an existing `Workspace`.\n", - "2. Configure AutoML using `AutoMLConfig`.\n", - "3. Train the model on a whilelisted models using local compute. \n", - "4. Explore the results.\n", - "5. Test the best fitted model.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create an Experiment\n", - "\n", - "As part of the setup you have already created an Azure ML `Workspace` object. For AutoML you will need to create an `Experiment` object, which is a named object in a `Workspace` used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "import os\n", - "import random\n", - "\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import numpy as np\n", - "import pandas as pd\n", - "from sklearn import datasets\n", - "\n", - "import azureml.core\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# Choose a name for the experiment and specify the project folder.\n", - "experiment_name = 'automl-local-classification'\n", - "project_folder = './sample_projects/automl-local-classification'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace Name'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Experiment Name'] = experiment.name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data = output, index = ['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "set_diagnostics_collection(send_diagnostics = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Training Data\n", - "\n", - "This uses scikit-learn's [load_digits](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "digits = datasets.load_digits()\n", - "\n", - "# Exclude the first 100 rows from training so that they can be used for test.\n", - "X_train = digits.data[100:,:]\n", - "y_train = digits.target[100:]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure AutoML\n", - "\n", - "Instantiate an `AutoMLConfig` object to specify the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|classification or regression|\n", - "|**primary_metric**|This is the metric that you want to optimize. Classification supports the following primary metrics:
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**iterations**|Number of iterations. In each iteration AutoML trains a specific pipeline with the data.|\n", - "|**n_cross_validations**|Number of cross validation splits.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers.|\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder.|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "automl_config = AutoMLConfig(task = 'classification',\n", - " debug_log = 'automl_errors.log',\n", - " primary_metric = 'AUC_weighted',\n", - " iteration_timeout_minutes = 60,\n", - " iterations = 10,\n", - " n_cross_validations = 3,\n", - " verbosity = logging.INFO,\n", - " X = X_train, \n", - " y = y_train,\n", - " enable_tf=True,\n", - " whitelist_models=[\"TensorFlowLinearClassifier\", \"TensorFlowDNN\"],\n", - " path = project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the Models\n", - "\n", - "Call the `submit` method on the experiment object and pass the run configuration. Execution of local runs is synchronous. Depending on the data and the number of iterations this can run for a while.\n", - "In this example, we specify `show_output = True` to print currently running iterations to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output = True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the Results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Widget for Monitoring Runs\n", - "\n", - "The widget will first report a \"loading\" status while running the first iteration. After completing the first iteration, an auto-updating graph and table will be shown. The widget will refresh once per minute, so you should see the graph update as child runs complete.\n", - "\n", - "**Note:** The widget displays a link at the bottom. Use this link to open a web interface to explore the individual run details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Retrieve All Child Runs\n", - "You can also use SDK methods to fetch all the child runs and see individual metrics that we log." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "\n", - "Below we select the best pipeline from our iterations. The `get_output` method returns the best run and the fitted model. The Model includes the pipeline and any pre-processing. Overloads on `get_output` allow you to retrieve the best run and fitted model for *any* logged metric or for a particular *iteration*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best Model Based on Any Other Metric\n", - "Show the run and the model that has the smallest `log_loss` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lookup_metric = \"log_loss\"\n", - "best_run, fitted_model = local_run.get_output(metric = lookup_metric)\n", - "print(best_run)\n", - "print(fitted_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Model from a Specific Iteration\n", - "Show the run and the model from the third iteration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "iteration = 3\n", - "third_run, third_model = local_run.get_output(iteration = iteration)\n", - "print(third_run)\n", - "print(third_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "#### Load Test Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "digits = datasets.load_digits()\n", - "X_test = digits.data[:10, :]\n", - "y_test = digits.target[:10]\n", - "images = digits.images[:10]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Testing Our Best Fitted Model\n", - "We will try to predict 2 digits and see how our model works." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Randomly select digits and test.\n", - "for index in np.random.choice(len(y_test), 2, replace = False):\n", - " print(index)\n", - " predicted = fitted_model.predict(X_test[index:index + 1])[0]\n", - " label = y_test[index]\n", - " title = \"Label value = %d Predicted value = %d \" % (label, predicted)\n", - " fig = plt.figure(1, figsize = (3,3))\n", - " ax1 = fig.add_axes((0,0,.8,.8))\n", - " ax1.set_title(title)\n", - " plt.imshow(images[index], cmap = plt.cm.gray_r, interpolation = 'nearest')\n", - " plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "savitam" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/automl/18.auto-ml-timeseries.ipynb b/automl/18.auto-ml-timeseries.ipynb deleted file mode 100644 index 656c65e9..00000000 --- a/automl/18.auto-ml-timeseries.ipynb +++ /dev/null @@ -1,394 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# AutoML 18: Energy Demand Forecasting\n", - "\n", - "In this example, we show how AutoML can be used for energy demand forecasting.\n", - "\n", - "Make sure you have executed the [00.configuration](00.configuration.ipynb) before running this notebook.\n", - "\n", - "In this notebook you would see\n", - "1. Creating an Experiment in an existing Workspace\n", - "2. Instantiating AutoMLConfig with new task type \"forecasting\" for timeseries data training, and other timeseries related settings: for this dataset we use the basic one: \"time_column_name\" \n", - "3. Training the Model using local compute\n", - "4. Exploring the results\n", - "5. Testing the fitted model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Experiment\n", - "\n", - "As part of the setup you have already created a Workspace. For AutoML you would need to create an Experiment. An Experiment is a named object in a Workspace, which is used to run experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import azureml.core\n", - "import pandas as pd\n", - "import numpy as np\n", - "import os\n", - "import logging\n", - "\n", - "\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.core.experiment import Experiment\n", - "from azureml.train.automl import AutoMLConfig\n", - "from azureml.train.automl.run import AutoMLRun\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "\n", - "# choose a name for the run history container in the workspace\n", - "experiment_name = 'automl-energydemandforecasting'\n", - "# project folder\n", - "project_folder = './sample_projects/automl-local-energydemandforecasting'\n", - "\n", - "experiment = Experiment(ws, experiment_name)\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "output['Run History Name'] = experiment_name\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Read Data\n", - "Read energy demanding data from file, and preview data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = pd.read_csv(\"nyc_energy.csv\", parse_dates=['timeStamp'])\n", - "data.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Split the data to train and test\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train = data[data['timeStamp'] < '2017-02-01']\n", - "test = data[data['timeStamp'] >= '2017-02-01']\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Prepare the test data, we will feed X_test to the fitted model and get prediction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y_test = test.pop('demand').values\n", - "X_test = test" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Split the train data to train and valid\n", - "\n", - "Use one month's data as valid data\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X_train = train[train['timeStamp'] < '2017-01-01']\n", - "X_valid = train[train['timeStamp'] >= '2017-01-01']\n", - "y_train = X_train.pop('demand').values\n", - "y_valid = X_valid.pop('demand').values\n", - "print(X_train.shape)\n", - "print(y_train.shape)\n", - "print(X_valid.shape)\n", - "print(y_valid.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Instantiate Auto ML Config\n", - "\n", - "Instantiate a AutoMLConfig object. This defines the settings and data used to run the experiment.\n", - "\n", - "|Property|Description|\n", - "|-|-|\n", - "|**task**|forecasting|\n", - "|**primary_metric**|This is the metric that you want to optimize.
Forecasting supports the following primary metrics
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error\n", - "|**iterations**|Number of iterations. In each iteration, Auto ML trains a specific pipeline on the given data|\n", - "|**iteration_timeout_minutes**|Time limit in minutes for each iteration.|\n", - "|**X**|(sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y**|(sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers. |\n", - "|**X_valid**|Data used to evaluate a model in a iteration. (sparse) array-like, shape = [n_samples, n_features]|\n", - "|**y_valid**|Data used to evaluate a model in a iteration. (sparse) array-like, shape = [n_samples, ], [n_samples, n_classes]
Multi-class targets. An indicator matrix turns on multilabel classification. This should be an array of integers. |\n", - "|**path**|Relative path to the project folder. AutoML stores configuration files for the experiment under this folder. You can specify a new empty folder. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "time_column_name = 'timeStamp'\n", - "automl_settings = {\n", - " \"time_column_name\": time_column_name,\n", - "}\n", - "\n", - "\n", - "automl_config = AutoMLConfig(task = 'forecasting',\n", - " debug_log = 'automl_nyc_energy_errors.log',\n", - " primary_metric='normalized_root_mean_squared_error',\n", - " iterations = 10,\n", - " iteration_timeout_minutes = 5,\n", - " X = X_train,\n", - " y = y_train,\n", - " X_valid = X_valid,\n", - " y_valid = y_valid,\n", - " path=project_folder,\n", - " verbosity = logging.INFO,\n", - " **automl_settings)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Training the Model\n", - "\n", - "You can call the submit method on the experiment object and pass the run configuration. For Local runs the execution is synchronous. Depending on the data and number of iterations this can run for while.\n", - "You will see the currently running iterations printing to the console." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "local_run = experiment.submit(automl_config, show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the Best Model\n", - "Below we select the best pipeline from our iterations. The get_output method on automl_classifier returns the best run and the fitted model for the last fit invocation. There are overloads on get_output that allow you to retrieve the best run and fitted model for any logged metric or a particular iteration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run, fitted_model = local_run.get_output()\n", - "fitted_model.steps" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test the Best Fitted Model\n", - "\n", - "Predict on training and test set, and calculate residual values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y_pred = fitted_model.predict(X_test)\n", - "y_pred" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define a Check Data Function\n", - "\n", - "Remove the nan values from y_test to avoid error when calculate metrics " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def _check_calc_input(y_true, y_pred, rm_na=True):\n", - " \"\"\"\n", - " Check that 'y_true' and 'y_pred' are non-empty and\n", - " have equal length.\n", - "\n", - " :param y_true: Vector of actual values\n", - " :type y_true: array-like\n", - "\n", - " :param y_pred: Vector of predicted values\n", - " :type y_pred: array-like\n", - "\n", - " :param rm_na:\n", - " If rm_na=True, remove entries where y_true=NA and y_pred=NA.\n", - " :type rm_na: boolean\n", - "\n", - " :return:\n", - " Tuple (y_true, y_pred). if rm_na=True,\n", - " the returned vectors may differ from their input values.\n", - " :rtype: Tuple with 2 entries\n", - " \"\"\"\n", - " if len(y_true) != len(y_pred):\n", - " raise ValueError(\n", - " 'the true values and prediction values do not have equal length.')\n", - " elif len(y_true) == 0:\n", - " raise ValueError(\n", - " 'y_true and y_pred are empty.')\n", - " # if there is any non-numeric element in the y_true or y_pred,\n", - " # the ValueError exception will be thrown.\n", - " y_true = np.array(y_true).astype(float)\n", - " y_pred = np.array(y_pred).astype(float)\n", - " if rm_na:\n", - " # remove entries both in y_true and y_pred where at least\n", - " # one element in y_true or y_pred is missing\n", - " y_true_rm_na = y_true[~(np.isnan(y_true) | np.isnan(y_pred))]\n", - " y_pred_rm_na = y_pred[~(np.isnan(y_true) | np.isnan(y_pred))]\n", - " return (y_true_rm_na, y_pred_rm_na)\n", - " else:\n", - " return y_true, y_pred" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Use the Check Data Function to remove the nan values from y_test to avoid error when calculate metrics " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y_test,y_pred = _check_calc_input(y_test,y_pred)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Calculate metrics for the prediction\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(\"[Test Data] \\nRoot Mean squared error: %.2f\" % np.sqrt(mean_squared_error(y_test, y_pred)))\n", - "# Explained variance score: 1 is perfect prediction\n", - "print('mean_absolute_error score: %.2f' % mean_absolute_error(y_test, y_pred))\n", - "print('R2 score: %.2f' % r2_score(y_test, y_pred))\n", - "\n", - "\n", - "\n", - "# Plot outputs\n", - "test_pred = plt.scatter(y_test, y_pred, color='b')\n", - "test_test = plt.scatter(y_test, y_test, color='g')\n", - "plt.legend((test_pred, test_test), ('prediction', 'truth'), loc='upper left', fontsize=8)\n", - "plt.show()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "xiaga" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/automl/README.md b/automl/README.md index f3541dcc..82d7dc00 100644 --- a/automl/README.md +++ b/automl/README.md @@ -1,7 +1,6 @@ # Table of Contents 1. [Automated ML Introduction](#introduction) 1. [Running samples in Azure Notebooks](#jupyter) -1. [Running samples in Azure Databricks](#databricks) 1. [Running samples in a Local Conda environment](#localconda) 1. [Automated ML SDK Sample Notebooks](#samples) 1. [Documentation](#documentation) @@ -9,7 +8,7 @@ 1. [Troubleshooting](#troubleshooting) -# Automated ML introduction +# Automated ML introduction Automated machine learning (automated ML) builds high quality machine learning models for you by automating model and hyperparameter selection. Bring a labelled dataset that you want to build a model for, automated ML will give you a high quality machine learning model that you can use for predictions. @@ -17,32 +16,20 @@ If you are new to Data Science, AutoML will help you get jumpstarted by simplify If you are an experienced data scientist, AutoML will help increase your productivity by intelligently performing the model and hyperparameter selection for your training and generates high quality models much quicker than manually specifying several combinations of the parameters and running training jobs. AutoML provides visibility and access to all the training jobs and the performance characteristics of the models to help you further tune the pipeline if you desire. -Below are the three execution environments supported by AutoML. - - -## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud +## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud 1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) [Import sample notebooks ](https://aka.ms/aml-clone-azure-notebooks) into Azure Notebooks. 1. Follow the instructions in the [../00.configuration](00.configuration.ipynb) notebook to create and connect to a workspace. 1. Open one of the sample notebooks. - - **Make sure the Azure Notebook kernel is set to `Python 3.6`** when you open a notebook. - + + **Make sure the Azure Notebook kernel is set to `Python 3.6`** when you open a notebook. + ![set kernel to Python 3.6](../images/python36.png) - -## Running samples in Azure Databricks - -**NOTE**: Please create your Azure Databricks cluster as v4.x (high concurrency preferred) with **Python 3** (dropdown). -**NOTE**: You should at least have contributor access to your Azure subcription to run the notebook. -- Please remove the previous SDK version if there is any and install the latest SDK by installing **azureml-sdk[automl_databricks]** as a PyPi library in Azure Databricks workspace. -- Download the sample notebook 16a.auto-ml-classification-local-azuredatabricks from [GitHub](https://github.com/Azure/MachineLearningNotebooks) and import into the Azure databricks workspace. -- Attach the notebook to the cluster. - -## Running samples in a Local Conda environment +## Running samples in a Local Conda environment To run these notebook on your own notebook server, use these installation instructions. @@ -61,7 +48,7 @@ jupyter notebook ``` -### 1. Install mini-conda from [here](https://conda.io/miniconda.html), choose Python 3.7 or higher. +### 1. Install mini-conda from [here](https://conda.io/miniconda.html), choose Python 3.7 or higher. - **Note**: if you already have conda installed, you can keep using it but it should be version 4.4.10 or later (as shown by: conda -V). If you have a previous version installed, you can update it using the command: conda update conda. There's no need to install mini-conda specifically. @@ -70,23 +57,23 @@ There's no need to install mini-conda specifically. ### 3. Setup a new conda environment The **automl/automl_setup** script creates a new conda environment, installs the necessary packages, configures the widget and starts a jupyter notebook. -It takes the conda environment name as an optional parameter. The default conda environment name is azure_automl. The exact command depends on the operating system. See the specific sections below for Windows, Mac and Linux. It can take about 10 minutes to execute. +It takes the conda environment name as an optional parameter. The default conda environment name is azure_automl. The exact command depends on the operating system. It can take about 10 minutes to execute. ## Windows -Start an **Anaconda Prompt** window, cd to the **automl** folder where the sample notebooks were extracted and then run: +Start a conda command windows, cd to the **automl** folder where the sample notebooks were extracted and then run: ``` automl_setup ``` ## Mac Install "Command line developer tools" if it is not already installed (you can use the command: `xcode-select --install`). -Start a Terminal windows, cd to the **automl** folder where the sample notebooks were extracted and then run: +Start a Terminal windows, cd to the **automl** folder where the sample notebooks were extracted and then run: ``` bash automl_setup_mac.sh ``` ## Linux -cd to the **automl** folder where the sample notebooks were extracted and then run: +cd to the **automl** folder where the sample notebooks were extracted and then run: ``` bash automl_setup_linux.sh @@ -101,7 +88,7 @@ bash automl_setup_linux.sh - Follow the instructions in the individual notebooks to explore various features in AutoML -# Automated ML SDK Sample Notebooks +# Automated ML SDK Sample Notebooks - [00.configuration.ipynb](00.configuration.ipynb) - Register Machine Learning Services Resource Provider - Create new Azure ML Workspace @@ -109,12 +96,12 @@ bash automl_setup_linux.sh - [01.auto-ml-classification.ipynb](01.auto-ml-classification.ipynb) - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) - - Simple example of using Auto ML for classification + - Simple example of using Auto ML for classification - Uses local compute for training - [02.auto-ml-regression.ipynb](02.auto-ml-regression.ipynb) - Dataset: scikit learn's [diabetes dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html) - - Simple example of using Auto ML for regression + - Simple example of using Auto ML for regression - Uses local compute for training - [03.auto-ml-remote-execution.ipynb](03.auto-ml-remote-execution.ipynb) @@ -139,7 +126,7 @@ bash automl_setup_linux.sh - Dataset: [Burning Man 2016 dataset](https://innovate.burningman.org/datasets-page/) - handling text data with preprocess flag - Reading data from a blob store for remote executions - - using pandas dataframes for reading data + - using pandas dataframes for reading data - [05.auto-ml-missing-data-blacklist-early-termination.ipynb](05.auto-ml-missing-data-blacklist-early-termination.ipynb) - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) @@ -148,7 +135,7 @@ bash automl_setup_linux.sh - Handling Missing Data in the input - [06.auto-ml-sparse-data-train-test-split.ipynb](06.auto-ml-sparse-data-train-test-split.ipynb) - - Dataset: Scikit learn's [20newsgroup](http://scikit-learn.org/stable/datasets/twenty_newsgroups.html) + - Dataset: Scikit learn's [20newsgroup](http://scikit-learn.org/stable/datasets/twenty_newsgroups.html) - Handle sparse datasets - Specify custom train and validation set @@ -164,7 +151,7 @@ bash automl_setup_linux.sh - [09.auto-ml-classification-with-deployment.ipynb](09.auto-ml-classification-with-deployment.ipynb) - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) - - Simple example of using Auto ML for classification + - Simple example of using Auto ML for classification - Registering the model - Creating Image and creating aci service - Testing the aci service @@ -185,10 +172,10 @@ bash automl_setup_linux.sh - Using DataPrep for reading data - [14.auto-ml-model-explanation.ipynb](14.auto-ml-model-explanation.ipynb) - - Dataset: sklearn's [iris dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html) + - Dataset: seaborn's [iris dataset](https://seaborn.pydata.org/generated/seaborn.load_dataset.html) - Explaining the AutoML classification pipeline - Visualizing feature importance in widget - + - [15a.auto-ml-classification-ensemble.ipynb](15a.auto-ml-classification-ensemble.ipynb) - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) - Enables an extra iteration for generating an Ensemble of models @@ -199,21 +186,8 @@ bash automl_setup_linux.sh - Enables an extra iteration for generating an Ensemble of models - Uses remote Linux DSVM for training -- [16a.auto-ml-classification-local-azuredatabricks.ipynb](16a.auto-ml-classification-local-azuredatabricks.ipynb) - - Dataset: scikit learn's [digit dataset](https://innovate.burningman.org/datasets-page/) - - Example of using AutoML for classification using Azure Databricks as the platform for training - -- [17.auto-ml-classification_with_tensorflow.ipynb](17.auto-ml-classification_with_tensorflow.ipynb) - - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) - - Simple example of using Auto ML for classification with whitelisting tensorflow models.checkout - - Uses local compute for training - -- [18.auto-ml-timeseries.ipynb](18.auto-ml-timeseries.ipynb) - - Dataset: NYC energy demanding data - - Example of using AutoML for timeseries data training - -# Documentation +# Documentation ## Table of Contents 1. [Automated ML Settings ](#automlsettings) 1. [Cross validation split options](#cvsplits) @@ -221,51 +195,22 @@ bash automl_setup_linux.sh 1. [Data pre-processing and featurization](#preprocessing) -## Automated ML Settings +## Automated ML Settings |Property|Description|Default| |-|-|-| -|**primary_metric**|This is the metric that you want to optimize.

Classification supports the following primary metrics
accuracy
AUC_weighted
average_precision_score_weighted
norm_macro_recall
precision_score_weighted

Regression supports the following primary metrics
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error
normalized_root_mean_squared_log_error| Classification: accuracy

Regression: spearman_correlation -|**iteration_timeout_minutes**|Time limit in minutes for each iteration|None| +|**primary_metric**|This is the metric that you want to optimize.

Classification supports the following primary metrics
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted

Regression supports the following primary metrics
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error
normalized_root_mean_squared_log_error| Classification: accuracy

Regression: spearman_correlation +|**max_time_sec**|Time limit in seconds for each iteration|None| |**iterations**|Number of iterations. In each iteration trains the data with a specific pipeline. To get the best result, use at least 100. |100| |**n_cross_validations**|Number of cross validation splits|None| |**validation_size**|Size of validation set as percentage of all training samples|None| -|**max_concurrent_iterations**|Max number of iterations that would be executed in parallel|1| +|**concurrent_iterations**|Max number of iterations that would be executed in parallel|1| |**preprocess**|*True/False*
Setting this to *True* enables preprocessing
on the input to handle missing data, and perform some common feature extraction
*Note: If input data is Sparse you cannot use preprocess=True*|False| |**max_cores_per_iteration**| Indicates how many cores on the compute target would be used to train a single pipeline.
You can set it to *-1* to use all cores|1| -|**experiment_exit_score**|*double* value indicating the target for *primary_metric*.
Once the target is surpassed the run terminates|None| -|**blacklist_models**|*Array* of *strings* indicating models to ignore for Auto ML from the list of models.|None| -|**whitelist_models**|*Array* of *strings* use only models listed for Auto ML from the list of models..|None| - -## List of models for white list/blacklist -**Classification** -
LogisticRegression -
SGD -
MultinomialNaiveBayes -
BernoulliNaiveBayes -
SVM -
LinearSVM -
KNN -
DecisionTree -
RandomForest -
ExtremeRandomTrees -
LightGBM -
GradientBoosting -
TensorFlowDNN -
TensorFlowLinearClassifier -

**Regression** -
ElasticNet -
GradientBoosting -
DecisionTree -
KNN -
LassoLars -
SGD -
RandomForest -
ExtremeRandomTrees -
LightGBM -
TensorFlowLinearRegressor -
TensorFlowDNN +|**exit_score**|*double* value indicating the target for *primary_metric*.
Once the target is surpassed the run terminates|None| +|**blacklist_algos**|*Array* of *strings* indicating pipelines to ignore for Auto ML.

Allowed values for **Classification**
LogisticRegression
SGDClassifierWrapper
NBWrapper
BernoulliNB
SVCWrapper
LinearSVMWrapper
KNeighborsClassifier
DecisionTreeClassifier
RandomForestClassifier
ExtraTreesClassifier
LightGBMClassifier

Allowed values for **Regression**
ElasticNet
GradientBoostingRegressor
DecisionTreeRegressor
KNeighborsRegressor
LassoLars
SGDRegressor
RandomForestRegressor
ExtraTreesRegressor|None| + ## Cross validation split options ### K-Folds Cross Validation Use *n_cross_validations* setting to specify the number of cross validations. The training data set will be randomly split into *n_cross_validations* folds of equal size. During each cross validation round, one of the folds will be used for validation of the model trained on the remaining folds. This process repeats for *n_cross_validations* rounds until each fold is used once as validation set. Finally, the average scores accross all *n_cross_validations* rounds will be reported, and the corresponding model will be retrained on the whole training data set. @@ -277,7 +222,7 @@ Use *validation_size* to specify the percentage of the training data set that sh You can specify seperate train and validation set either through the get_data() or directly to the fit method. -## get_data() syntax +## get_data() syntax The *get_data()* function can be used to return a dictionary with these values: |Key|Type|Dependency|Mutually Exclusive with|Description| @@ -294,7 +239,7 @@ The *get_data()* function can be used to return a dictionary with these values: |cv_splits_indices|Array of integers|data_train||*Optional* List of indexes to split the data for cross validation| -## Data pre-processing and featurization +## Data pre-processing and featurization If you use `preprocess=True`, the following data preprocessing steps are performed automatically for you: 1. Dropping high cardinality or no variance features @@ -309,7 +254,7 @@ If you use `preprocess=True`, the following data preprocessing steps are perform - Numeric features with very few unique values are transformed into categorical features. -# Running using python command +# Running using python command Jupyter notebook provides a File / Download as / Python (.py) option for saving the notebook as a Python file. You can then run this file using the python command. However, on Windows the file needs to be modified before it can be run. @@ -320,12 +265,13 @@ The following condition must be added to the main code in the file: The main code of the file must be indented so that it is under this condition. -# Troubleshooting +# Troubleshooting ## Iterations fail and the log contains "MemoryError" This can be caused by insufficient memory on the DSVM. AutoML loads all training data into memory. So, the available memory should be more than the training data size. -If you are using a remote DSVM, memory is needed for each concurrent iteration. The max_concurrent_iterations setting specifies the maximum concurrent iterations. For example, if the training data size is 8Gb and max_concurrent_iterations is set to 10, the minimum memory required is at least 80Gb. -To resolve this issue, allocate a DSVM with more memory or reduce the value specified for max_concurrent_iterations. +If you are using a remote DSVM, memory is needed for each concurrent iteration. The concurrent_iterations setting specifies the maximum concurrent iterations. For example, if the training data size is 8Gb and concurrent_iterations is set to 10, the minimum memory required is at least 80Gb. +To resolve this issue, allocate a DSVM with more memory or reduce the value specified for concurrent_iterations. ## Iterations show as "Not Responding" in the RunDetails widget. -This can be caused by too many concurrent iterations for a remote DSVM. Each concurrent iteration usually takes 100% of a core when it is running. Some iterations can use multiple cores. So, the max_concurrent_iterations setting should always be less than the number of cores of the DSVM. -To resolve this issue, try reducing the value specified for the max_concurrent_iterations setting. \ No newline at end of file +This can be caused by too many concurrent iterations for a remote DSVM. Each concurrent iteration usually takes 100% of a core when it is running. Some iterations can use multiple cores. So, the concurrent_iterations setting should always be less than the number of cores of the DSVM. +To resolve this issue, try reducing the value specified for the concurrent_iterations setting. + diff --git a/automl/automl_env.yml b/automl/automl_env.yml new file mode 100644 index 00000000..065d7c2f --- /dev/null +++ b/automl/automl_env.yml @@ -0,0 +1,19 @@ +name: azure_automl +dependencies: + # The python interpreter version. + # Currently Azure ML only supports 3.5.2 and later. +- python=3.6 +- nb_conda +- matplotlib +- numpy>=1.11.0,<1.15.0 +- cython +- urllib3<1.24 +- scipy>=0.19.0,<0.20.0 +- scikit-learn>=0.18.0,<=0.19.1 +- pandas>=0.22.0,<0.23.0 + +- pip: + # Required packages for AzureML execution, history, and data preparation. + - azureml-sdk[automl,notebooks] + - pandas_ml + diff --git a/automl/automl_env_mac.yml b/automl/automl_env_mac.yml new file mode 100644 index 00000000..bf3e13f7 --- /dev/null +++ b/automl/automl_env_mac.yml @@ -0,0 +1,17 @@ +name: azure_automl +dependencies: + # The python interpreter version. + # Currently Azure ML only supports 3.5.2 and later. +- python=3.6 +- nb_conda +- matplotlib +- numpy>=1.15.3 +- cython +- urllib3<1.24 +- scipy>=0.19.0,<0.20.0 +- scikit-learn>=0.18.0,<=0.19.1 +- pandas>=0.22.0,<0.23.0 +- pip: + # Required packages for AzureML execution, history, and data preparation. + - azureml-sdk[automl,notebooks] + - pandas_ml diff --git a/automl/automl_setup.cmd b/automl/automl_setup.cmd new file mode 100644 index 00000000..4c01b9bd --- /dev/null +++ b/automl/automl_setup.cmd @@ -0,0 +1,50 @@ +@echo off +set conda_env_name=%1 +set automl_env_file=%2 +set PIP_NO_WARN_SCRIPT_LOCATION=0 + +IF "%conda_env_name%"=="" SET conda_env_name="azure_automl" +IF "%automl_env_file%"=="" SET automl_env_file="automl_env.yml" + +IF NOT EXIST %automl_env_file% GOTO YmlMissing + +call conda activate %conda_env_name% 2>nul: + +if not errorlevel 1 ( + echo Upgrading azureml-sdk[automl] in existing conda environment %conda_env_name% + call pip install --upgrade azureml-sdk[automl,notebooks] + if errorlevel 1 goto ErrorExit +) else ( + call conda env create -f %automl_env_file% -n %conda_env_name% +) + +call conda activate %conda_env_name% 2>nul: +if errorlevel 1 goto ErrorExit + +call pip install psutil + +call jupyter nbextension install --py azureml.train.widgets --user +if errorlevel 1 goto ErrorExit + +call jupyter nbextension enable --py azureml.train.widgets --user +if errorlevel 1 goto ErrorExit + +echo. +echo. +echo *************************************** +echo * AutoML setup completed successfully * +echo *************************************** +echo. +echo Starting jupyter notebook - please run notebook 00.configuration +echo. +jupyter notebook --log-level=50 + +goto End + +:YmlMissing +echo File %automl_env_file% not found. + +:ErrorExit +echo Install failed + +:End \ No newline at end of file diff --git a/automl/automl_setup_linux.sh b/automl/automl_setup_linux.sh new file mode 100644 index 00000000..15c9e5f3 --- /dev/null +++ b/automl/automl_setup_linux.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +CONDA_ENV_NAME=$1 +AUTOML_ENV_FILE=$2 +PIP_NO_WARN_SCRIPT_LOCATION=0 + +if [ "$CONDA_ENV_NAME" == "" ] +then + CONDA_ENV_NAME="azure_automl" +fi + +if [ "$AUTOML_ENV_FILE" == "" ] +then + AUTOML_ENV_FILE="automl_env.yml" +fi + +if [ ! -f $AUTOML_ENV_FILE ]; then + echo "File $AUTOML_ENV_FILE not found" + exit 1 +fi + +if source activate $CONDA_ENV_NAME 2> /dev/null +then + echo "Upgrading azureml-sdk[automl] in existing conda environment" $CONDA_ENV_NAME + pip install --upgrade azureml-sdk[automl,notebooks] +else + conda env create -f $AUTOML_ENV_FILE -n $CONDA_ENV_NAME && + source activate $CONDA_ENV_NAME && + jupyter nbextension install --py azureml.train.widgets --user && + jupyter nbextension enable --py azureml.train.widgets --user && + echo "" && + echo "" && + echo "***************************************" && + echo "* AutoML setup completed successfully *" && + echo "***************************************" && + echo "" && + echo "Starting jupyter notebook - please run notebook 00.configuration" && + echo "" && + jupyter notebook --log-level=50 +fi + +if [ $? -gt 0 ] +then + echo "Installation failed" +fi + + diff --git a/automl/automl_setup_mac.sh b/automl/automl_setup_mac.sh new file mode 100644 index 00000000..c4b3c912 --- /dev/null +++ b/automl/automl_setup_mac.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +CONDA_ENV_NAME=$1 +AUTOML_ENV_FILE=$2 +PIP_NO_WARN_SCRIPT_LOCATION=0 + +if [ "$CONDA_ENV_NAME" == "" ] +then + CONDA_ENV_NAME="azure_automl" +fi + +if [ "$AUTOML_ENV_FILE" == "" ] +then + AUTOML_ENV_FILE="automl_env_mac.yml" +fi + +if [ ! -f $AUTOML_ENV_FILE ]; then + echo "File $AUTOML_ENV_FILE not found" + exit 1 +fi + +if source activate $CONDA_ENV_NAME 2> /dev/null +then + echo "Upgrading azureml-sdk[automl] in existing conda environment" $CONDA_ENV_NAME + pip install --upgrade azureml-sdk[automl,notebooks] +else + conda env create -f $AUTOML_ENV_FILE -n $CONDA_ENV_NAME && + source activate $CONDA_ENV_NAME && + conda install lightgbm -c conda-forge -y && + jupyter nbextension install --py azureml.train.widgets --user && + jupyter nbextension enable --py azureml.train.widgets --user && + pip install numpy==1.15.3 + echo "" && + echo "" && + echo "***************************************" && + echo "* AutoML setup completed successfully *" && + echo "***************************************" && + echo "" && + echo "Starting jupyter notebook - please run notebook 00.configuration" && + echo "" && + jupyter notebook --log-level=50 +fi + +if [ $? -gt 0 ] +then + echo "Installation failed" +fi diff --git a/automl/nyc_energy.csv b/automl/nyc_energy.csv deleted file mode 100644 index 0b07cd72..00000000 --- a/automl/nyc_energy.csv +++ /dev/null @@ -1,49206 +0,0 @@ -timeStamp,demand,precip,temp -2012-01-01 00:00:00,4937.5,0.0,46.13 -2012-01-01 01:00:00,4752.1,0.0,45.89 -2012-01-01 02:00:00,4542.6,0.0,45.04 -2012-01-01 03:00:00,4357.7,0.0,45.03 -2012-01-01 04:00:00,4275.5,0.0,42.61 -2012-01-01 05:00:00,4274.7,0.0,39.02 -2012-01-01 06:00:00,4324.9,0.0,38.78 -2012-01-01 07:00:00,4350.0,0.0,42.74 -2012-01-01 08:00:00,4480.9,0.0,38.9 -2012-01-01 09:00:00,4664.2,0.0,44.67 -2012-01-01 10:00:00,4847.5,0.0,47.43 -2012-01-01 11:00:00,4981.9,0.0,49.49 -2012-01-01 12:00:00,5081.0,0.0,50.77 -2012-01-01 13:00:00,5137.2,0.0,50.57 -2012-01-01 14:00:00,5142.6,0.0,49.94 -2012-01-01 15:00:00,5165.1,0.0,49.85 -2012-01-01 16:00:00,5351.1,0.0,47.39 -2012-01-01 17:00:00,5664.0,0.0,48.83 -2012-01-01 18:00:00,5699.9,0.0,48.92 -2012-01-01 19:00:00,5624.6,0.0101,48.74 -2012-01-01 20:00:00,5555.4,0.0022,48.98 -2012-01-01 21:00:00,5463.0,0.0463,49.19 -2012-01-01 22:00:00,5269.7,0.0011,47.61 -2012-01-01 23:00:00,4972.9,0.0,49.72 -2012-01-02 00:00:00,4677.0,0.0,49.78 -2012-01-02 01:00:00,4449.6,0.0,48.97 -2012-01-02 02:00:00,4284.1,0.0,47.12 -2012-01-02 03:00:00,4197.9,0.0,44.95 -2012-01-02 04:00:00,4183.5,0.0,47.15 -2012-01-02 05:00:00,4304.3,0.0,42.04 -2012-01-02 06:00:00,4533.3,0.0,39.47 -2012-01-02 07:00:00,4748.3,0.0,38.23 -2012-01-02 08:00:00,5000.6,0.0,36.83 -2012-01-02 09:00:00,5271.3,0.0,37.25 -2012-01-02 10:00:00,5489.8,0.0,43.07 -2012-01-02 11:00:00,5614.2,0.0,38.25 -2012-01-02 12:00:00,5679.6,0.0,39.93 -2012-01-02 13:00:00,5682.8,0.0,40.93 -2012-01-02 14:00:00,5704.3,0.0,40.84 -2012-01-02 15:00:00,5765.8,0.0,39.67 -2012-01-02 16:00:00,5966.2,0.0,40.57 -2012-01-02 17:00:00,6315.0,0.0,38.23 -2012-01-02 18:00:00,6321.2,0.0,38.04 -2012-01-02 19:00:00,6250.2,0.0,37.23 -2012-01-02 20:00:00,6089.3,0.0,36.32 -2012-01-02 21:00:00,5914.4,0.0,35.57 -2012-01-02 22:00:00,5610.8,0.0,37.91 -2012-01-02 23:00:00,5217.4,0.0,33.57 -2012-01-03 00:00:00,4859.0,0.0,33.14 -2012-01-03 01:00:00,4627.0,0.0,32.31 -2012-01-03 02:00:00,4488.7,0.0,32.04 -2012-01-03 03:00:00,4428.5,0.0,31.31 -2012-01-03 04:00:00,4477.8,0.0,32.58 -2012-01-03 05:00:00,4736.1,0.0,30.4 -2012-01-03 06:00:00,5321.2,0.0,29.14 -2012-01-03 07:00:00,5921.2,0.0,28.4 -2012-01-03 08:00:00,6284.9,0.0,27.57 -2012-01-03 09:00:00,6536.4,0.0,26.66 -2012-01-03 10:00:00,6652.0,0.0,31.09 -2012-01-03 11:00:00,6737.5,0.0,26.43 -2012-01-03 12:00:00,6768.4,0.0,25.58 -2012-01-03 13:00:00,6784.3,0.0,26.43 -2012-01-03 14:00:00,6796.6,0.0,25.75 -2012-01-03 15:00:00,6865.3,0.0,26.0 -2012-01-03 16:00:00,7039.5,0.0,27.36 -2012-01-03 17:00:00,7322.8,0.0,24.23 -2012-01-03 18:00:00,7190.4,0.0,23.4 -2012-01-03 19:00:00,7053.3,0.0,22.4 -2012-01-03 20:00:00,6853.1,0.0,20.64 -2012-01-03 21:00:00,6586.0,0.0,19.47 -2012-01-03 22:00:00,6208.5,0.0,21.34 -2012-01-03 23:00:00,5753.8,0.0,16.47 -2012-01-04 00:00:00,5327.5,0.0,15.57 -2012-01-04 01:00:00,5093.2,0.0,15.14 -2012-01-04 02:00:00,4945.0,0.0,14.37 -2012-01-04 03:00:00,4888.0,0.0,13.4 -2012-01-04 04:00:00,4919.0,0.0,16.27 -2012-01-04 05:00:00,5153.2,0.0,13.47 -2012-01-04 06:00:00,5702.5,0.0,13.4 -2012-01-04 07:00:00,6266.3,0.0,13.5 -2012-01-04 08:00:00,6592.6,0.0,13.73 -2012-01-04 09:00:00,6900.3,0.0,14.73 -2012-01-04 10:00:00,6990.6,0.0,18.81 -2012-01-04 11:00:00,7017.9,0.0,19.27 -2012-01-04 12:00:00,7019.4,0.0,21.19 -2012-01-04 13:00:00,7008.2,0.0,22.62 -2012-01-04 14:00:00,6962.6,0.0,24.93 -2012-01-04 15:00:00,7027.4,0.0,25.93 -2012-01-04 16:00:00,7227.5,0.0,24.68 -2012-01-04 17:00:00,7417.1,0.0,25.59 -2012-01-04 18:00:00,7275.3,0.0,26.35 -2012-01-04 19:00:00,7083.2,0.0,27.16 -2012-01-04 20:00:00,6876.0,0.0,27.4 -2012-01-04 21:00:00,6568.1,0.0,27.47 -2012-01-04 22:00:00,6155.4,0.0,31.83 -2012-01-04 23:00:00,5654.1,0.0,27.23 -2012-01-05 00:00:00,5227.6,0.0,27.4 -2012-01-05 01:00:00,4951.9,0.0,27.31 -2012-01-05 02:00:00,4785.8,0.0,28.07 -2012-01-05 03:00:00,4716.0,0.0,28.34 -2012-01-05 04:00:00,4739.7,0.0,30.77 -2012-01-05 05:00:00,4990.8,0.0,28.4 -2012-01-05 06:00:00,5537.5,0.0,29.16 -2012-01-05 07:00:00,6152.0,0.0,29.16 -2012-01-05 08:00:00,6480.2,0.0,29.49 -2012-01-05 09:00:00,6702.3,0.0,30.16 -2012-01-05 10:00:00,6799.2,0.0,33.05 -2012-01-05 11:00:00,6786.2,0.0,33.25 -2012-01-05 12:00:00,6761.4,0.0,36.19 -2012-01-05 13:00:00,6759.2,0.0,38.11 -2012-01-05 14:00:00,6741.8,0.0,39.02 -2012-01-05 15:00:00,6755.1,0.0,39.16 -2012-01-05 16:00:00,6951.0,0.0,38.02 -2012-01-05 17:00:00,7188.0,0.0,38.23 -2012-01-05 18:00:00,6989.7,0.0,38.16 -2012-01-05 19:00:00,6808.6,0.0,37.49 -2012-01-05 20:00:00,6583.3,0.0,37.98 -2012-01-05 21:00:00,6304.3,0.0,37.31 -2012-01-05 22:00:00,5944.7,0.0,35.71 -2012-01-05 23:00:00,5469.6,0.0,35.92 -2012-01-06 00:00:00,5037.0,0.0,34.94 -2012-01-06 01:00:00,4765.6,0.0,36.19 -2012-01-06 02:00:00,4599.0,0.0,36.57 -2012-01-06 03:00:00,4528.8,0.0,36.8 -2012-01-06 04:00:00,4552.8,0.0,33.66 -2012-01-06 05:00:00,4790.7,0.0,36.35 -2012-01-06 06:00:00,5367.3,0.0,36.59 -2012-01-06 07:00:00,5922.9,0.0,38.0 -2012-01-06 08:00:00,6238.2,0.0,39.17 -2012-01-06 09:00:00,6451.5,0.0,38.83 -2012-01-06 10:00:00,6527.2,0.0,39.61 -2012-01-06 11:00:00,6544.1,0.0,42.12 -2012-01-06 12:00:00,6526.5,0.0,45.05 -2012-01-06 13:00:00,6496.2,0.0,47.5 -2012-01-06 14:00:00,6462.0,0.0,51.1 -2012-01-06 15:00:00,6500.9,0.0,51.94 -2012-01-06 16:00:00,6651.4,0.0,49.26 -2012-01-06 17:00:00,6835.0,0.0,50.15 -2012-01-06 18:00:00,6628.1,0.0,50.64 -2012-01-06 19:00:00,6412.9,0.0,50.84 -2012-01-06 20:00:00,6169.0,0.0,51.01 -2012-01-06 21:00:00,5937.7,0.0,50.16 -2012-01-06 22:00:00,5628.3,0.0,46.58 -2012-01-06 23:00:00,5247.8,0.0,48.56 -2012-01-07 00:00:00,4873.9,0.0,49.24 -2012-01-07 01:00:00,4613.0,0.0,48.4 -2012-01-07 02:00:00,4439.0,0.0,48.3 -2012-01-07 03:00:00,4349.0,0.0,46.79 -2012-01-07 04:00:00,4314.7,0.0,42.92 -2012-01-07 05:00:00,4385.0,0.0,44.81 -2012-01-07 06:00:00,4564.1,0.0,44.94 -2012-01-07 07:00:00,4749.1,0.0,45.42 -2012-01-07 08:00:00,5022.5,0.0,45.42 -2012-01-07 09:00:00,5269.0,0.0,48.05 -2012-01-07 10:00:00,5459.2,0.0,50.23 -2012-01-07 11:00:00,5539.3,0.0,53.49 -2012-01-07 12:00:00,5550.0,0.0,56.83 -2012-01-07 13:00:00,5514.5,0.0,58.6 -2012-01-07 14:00:00,5475.7,0.0,59.66 -2012-01-07 15:00:00,5467.2,0.0,61.32 -2012-01-07 16:00:00,5580.5,0.0,53.05 -2012-01-07 17:00:00,5864.9,0.0,58.81 -2012-01-07 18:00:00,5894.3,0.0,57.75 -2012-01-07 19:00:00,5799.5,0.0,56.66 -2012-01-07 20:00:00,5657.1,0.0,54.41 -2012-01-07 21:00:00,5513.0,0.0,53.75 -2012-01-07 22:00:00,5315.5,0.0,49.09 -2012-01-07 23:00:00,5048.6,0.0,48.01 -2012-01-08 00:00:00,4750.4,0.0,46.75 -2012-01-08 01:00:00,4507.7,0.0,45.08 -2012-01-08 02:00:00,4333.3,0.0,44.38 -2012-01-08 03:00:00,4231.0,0.0,43.7 -2012-01-08 04:00:00,4193.4,0.0,42.07 -2012-01-08 05:00:00,4243.6,0.0,42.89 -2012-01-08 06:00:00,4366.1,0.0,41.96 -2012-01-08 07:00:00,4483.6,0.0,40.95 -2012-01-08 08:00:00,4710.1,0.0,40.85 -2012-01-08 09:00:00,4988.2,0.0,42.33 -2012-01-08 10:00:00,5198.5,0.0,43.22 -2012-01-08 11:00:00,5318.4,0.0,43.18 -2012-01-08 12:00:00,5387.2,0.0,44.0 -2012-01-08 13:00:00,5431.3,0.0,43.28 -2012-01-08 14:00:00,5456.0,0.0,43.1 -2012-01-08 15:00:00,5504.0,0.0,43.03 -2012-01-08 16:00:00,5659.5,0.0,42.1 -2012-01-08 17:00:00,5974.2,0.0,41.17 -2012-01-08 18:00:00,6036.4,0.0,39.5 -2012-01-08 19:00:00,5989.3,0.0,38.5 -2012-01-08 20:00:00,5878.9,0.0,37.23 -2012-01-08 21:00:00,5718.9,0.0,36.17 -2012-01-08 22:00:00,5444.8,0.0,35.72 -2012-01-08 23:00:00,5088.2,0.0,34.05 -2012-01-09 00:00:00,4778.0,0.0,33.22 -2012-01-09 01:00:00,4569.1,0.0,32.22 -2012-01-09 02:00:00,4443.1,0.0,32.07 -2012-01-09 03:00:00,4388.1,0.0,31.5 -2012-01-09 04:00:00,4434.9,0.0,32.55 -2012-01-09 05:00:00,4703.0,0.0,31.98 -2012-01-09 06:00:00,5301.4,0.0,31.91 -2012-01-09 07:00:00,5900.3,0.0,32.01 -2012-01-09 08:00:00,6245.0,0.0,31.74 -2012-01-09 09:00:00,6476.7,0.0,33.5 -2012-01-09 10:00:00,6569.1,0.0,34.31 -2012-01-09 11:00:00,6589.0,0.0,35.0 -2012-01-09 12:00:00,6580.8,0.0,37.58 -2012-01-09 13:00:00,6568.2,0.0,39.31 -2012-01-09 14:00:00,6539.3,0.0,40.14 -2012-01-09 15:00:00,6563.6,0.0,39.84 -2012-01-09 16:00:00,6727.1,0.0,36.65 -2012-01-09 17:00:00,6994.9,0.0,37.43 -2012-01-09 18:00:00,6819.9,0.0,37.11 -2012-01-09 19:00:00,6636.1,0.0,37.68 -2012-01-09 20:00:00,6419.0,0.0,37.85 -2012-01-09 21:00:00,6125.5,0.0,38.07 -2012-01-09 22:00:00,5741.9,0.0,37.5 -2012-01-09 23:00:00,5265.7,0.0,37.47 -2012-01-10 00:00:00,4856.8,0.0,37.23 -2012-01-10 01:00:00,4611.8,0.0,37.31 -2012-01-10 02:00:00,4470.0,0.0,37.14 -2012-01-10 03:00:00,4414.1,0.0,36.31 -2012-01-10 04:00:00,4450.1,0.0,38.65 -2012-01-10 05:00:00,4716.0,0.0,34.96 -2012-01-10 06:00:00,5317.1,0.0,34.77 -2012-01-10 07:00:00,5901.4,0.0,34.21 -2012-01-10 08:00:00,6242.3,0.0,34.3 -2012-01-10 09:00:00,6436.9,0.0,35.39 -2012-01-10 10:00:00,6516.5,0.0,40.63 -2012-01-10 11:00:00,6537.0,0.0,40.35 -2012-01-10 12:00:00,6522.6,0.0,43.11 -2012-01-10 13:00:00,6516.0,0.0,45.59 -2012-01-10 14:00:00,6510.4,0.0,46.57 -2012-01-10 15:00:00,6592.5,0.0,46.0 -2012-01-10 16:00:00,6741.3,0.0,44.28 -2012-01-10 17:00:00,6935.3,0.0,45.66 -2012-01-10 18:00:00,6748.2,0.0,44.91 -2012-01-10 19:00:00,6560.0,0.0,44.16 -2012-01-10 20:00:00,6333.9,0.0,43.91 -2012-01-10 21:00:00,6076.3,0.0,43.32 -2012-01-10 22:00:00,5678.3,0.0,42.25 -2012-01-10 23:00:00,5225.5,0.0,41.07 -2012-01-11 00:00:00,4810.2,0.0,40.53 -2012-01-11 01:00:00,4566.0,0.0,39.78 -2012-01-11 02:00:00,4424.4,0.0,39.42 -2012-01-11 03:00:00,4366.2,0.0,38.64 -2012-01-11 04:00:00,4401.7,0.0,36.94 -2012-01-11 05:00:00,4665.5,0.0,37.48 -2012-01-11 06:00:00,5258.5,0.0,37.74 -2012-01-11 07:00:00,5848.1,0.0,36.94 -2012-01-11 08:00:00,6191.2,0.0,37.73 -2012-01-11 09:00:00,6389.2,0.0,39.83 -2012-01-11 10:00:00,6454.5,0.0,40.84 -2012-01-11 11:00:00,6484.0,0.0,43.48 -2012-01-11 12:00:00,6481.8,0.0,45.57 -2012-01-11 13:00:00,6477.8,0.0,46.6 -2012-01-11 14:00:00,6478.4,0.0,46.35 -2012-01-11 15:00:00,6499.8,0.0,45.09 -2012-01-11 16:00:00,6685.7,0.0,42.06 -2012-01-11 17:00:00,6915.5,0.0,44.19 -2012-01-11 18:00:00,6746.1,0.0,44.7 -2012-01-11 19:00:00,6547.6,0.0,44.54 -2012-01-11 20:00:00,6310.7,0.0,44.03 -2012-01-11 21:00:00,6035.4,0.0,43.77 -2012-01-11 22:00:00,5657.2,0.0,43.02 -2012-01-11 23:00:00,5200.6,0.01,41.38 -2012-01-12 00:00:00,4800.8,0.0589,41.44 -2012-01-12 01:00:00,4555.7,0.0923,42.46 -2012-01-12 02:00:00,4405.7,0.0958,42.44 -2012-01-12 03:00:00,4344.4,0.0864,43.35 -2012-01-12 04:00:00,4372.9,0.0981,45.2 -2012-01-12 05:00:00,4629.7,0.09,45.26 -2012-01-12 06:00:00,5225.6,0.1249,45.38 -2012-01-12 07:00:00,5862.0,0.1108,43.87 -2012-01-12 08:00:00,6290.2,0.0595,43.51 -2012-01-12 09:00:00,6501.6,0.1582,43.44 -2012-01-12 10:00:00,6565.7,0.1588,45.1 -2012-01-12 11:00:00,6638.0,0.0,44.37 -2012-01-12 12:00:00,6663.5,0.0069,43.61 -2012-01-12 13:00:00,6661.8,0.0089,43.63 -2012-01-12 14:00:00,6637.9,0.0,43.62 -2012-01-12 15:00:00,6675.9,0.0,43.19 -2012-01-12 16:00:00,6812.9,0.0,42.93 -2012-01-12 17:00:00,6964.4,0.0,42.0 -2012-01-12 18:00:00,6741.6,0.0,42.19 -2012-01-12 19:00:00,6536.2,0.0,42.19 -2012-01-12 20:00:00,6309.8,0.0,42.39 -2012-01-12 21:00:00,6029.6,0.0,42.79 -2012-01-12 22:00:00,5662.2,0.0,42.96 -2012-01-12 23:00:00,5204.1,0.0,42.69 -2012-01-13 00:00:00,4795.4,0.0,42.05 -2012-01-13 01:00:00,4534.1,0.0228,42.62 -2012-01-13 02:00:00,4383.2,0.0,42.45 -2012-01-13 03:00:00,4314.7,0.0,44.16 -2012-01-13 04:00:00,4333.3,0.0,45.23 -2012-01-13 05:00:00,4586.4,0.0,46.65 -2012-01-13 06:00:00,5168.0,0.0,48.32 -2012-01-13 07:00:00,5746.2,0.0,48.86 -2012-01-13 08:00:00,6100.1,0.0,42.22 -2012-01-13 09:00:00,6392.7,0.0,41.06 -2012-01-13 10:00:00,6524.8,0.0,45.84 -2012-01-13 11:00:00,6612.6,0.0,35.69 -2012-01-13 12:00:00,6652.8,0.0,34.41 -2012-01-13 13:00:00,6673.2,0.0,33.07 -2012-01-13 14:00:00,6663.4,0.0,32.42 -2012-01-13 15:00:00,6715.1,0.0,32.52 -2012-01-13 16:00:00,6848.2,0.0,36.8 -2012-01-13 17:00:00,7056.3,0.0,29.33 -2012-01-13 18:00:00,6890.3,0.0,29.59 -2012-01-13 19:00:00,6678.7,0.0,29.59 -2012-01-13 20:00:00,6444.2,0.0,29.33 -2012-01-13 21:00:00,6188.3,0.0,29.33 -2012-01-13 22:00:00,5889.2,0.0,32.2 -2012-01-13 23:00:00,5514.8,0.0,29.33 -2012-01-14 00:00:00,5147.2,0.0,28.66 -2012-01-14 01:00:00,4892.9,0.0,28.57 -2012-01-14 02:00:00,4711.9,0.0,28.57 -2012-01-14 03:00:00,4625.8,0.0,28.5 -2012-01-14 04:00:00,4599.2,0.0,32.35 -2012-01-14 05:00:00,4670.2,0.0,28.33 -2012-01-14 06:00:00,4845.3,0.0,28.42 -2012-01-14 07:00:00,5043.5,0.0,29.16 -2012-01-14 08:00:00,5339.5,0.0,29.23 -2012-01-14 09:00:00,5625.5,0.0,29.26 -2012-01-14 10:00:00,5836.1,0.0,32.13 -2012-01-14 11:00:00,5950.8,0.0,30.19 -2012-01-14 12:00:00,5987.4,0.0,31.09 -2012-01-14 13:00:00,6001.8,0.0,31.1 -2012-01-14 14:00:00,5986.9,0.0,31.43 -2012-01-14 15:00:00,5989.0,0.0,32.07 -2012-01-14 16:00:00,6089.1,0.0,33.79 -2012-01-14 17:00:00,6304.4,0.0,32.16 -2012-01-14 18:00:00,6295.4,0.0,32.07 -2012-01-14 19:00:00,6176.1,0.0,32.16 -2012-01-14 20:00:00,6031.5,0.0,31.34 -2012-01-14 21:00:00,5888.7,0.0,30.16 -2012-01-14 22:00:00,5701.1,0.0,29.16 -2012-01-14 23:00:00,5420.3,0.0,28.16 -2012-01-15 00:00:00,5119.6,0.0,27.16 -2012-01-15 01:00:00,4892.6,0.0,26.43 -2012-01-15 02:00:00,4731.0,0.0,25.24 -2012-01-15 03:00:00,4662.6,0.0,23.41 -2012-01-15 04:00:00,4652.6,0.0,21.39 -2012-01-15 05:00:00,4710.9,0.0,18.4 -2012-01-15 06:00:00,4844.4,0.0,17.4 -2012-01-15 07:00:00,4979.1,0.0,16.56 -2012-01-15 08:00:00,5231.4,0.0,15.83 -2012-01-15 09:00:00,5513.9,0.0,15.85 -2012-01-15 10:00:00,5749.6,0.0,16.39 -2012-01-15 11:00:00,5888.8,0.0,18.35 -2012-01-15 12:00:00,5934.2,0.0,20.93 -2012-01-15 13:00:00,5939.5,0.0,22.18 -2012-01-15 14:00:00,5943.9,0.0,23.43 -2012-01-15 15:00:00,5956.2,0.0,23.85 -2012-01-15 16:00:00,6083.9,0.0,21.29 -2012-01-15 17:00:00,6383.5,0.0,23.4 -2012-01-15 18:00:00,6436.0,0.0,22.57 -2012-01-15 19:00:00,6348.4,0.0,21.47 -2012-01-15 20:00:00,6254.4,0.0,20.57 -2012-01-15 21:00:00,6104.9,0.0,20.14 -2012-01-15 22:00:00,5889.9,0.0,17.68 -2012-01-15 23:00:00,5577.7,0.0,18.4 -2012-01-16 00:00:00,5265.8,0.0,17.4 -2012-01-16 01:00:00,5033.2,0.0,16.5 -2012-01-16 02:00:00,4872.1,0.0,16.41 -2012-01-16 03:00:00,4797.6,0.0,16.31 -2012-01-16 04:00:00,4813.9,0.0,17.46 -2012-01-16 05:00:00,4972.5,0.0,16.22 -2012-01-16 06:00:00,5304.4,0.0,16.29 -2012-01-16 07:00:00,5640.1,0.0,16.49 -2012-01-16 08:00:00,5976.8,0.0,17.35 -2012-01-16 09:00:00,6289.5,0.0,18.84 -2012-01-16 10:00:00,6488.9,0.0,23.06 -2012-01-16 11:00:00,6560.3,0.0,23.85 -2012-01-16 12:00:00,6555.7,0.0,27.36 -2012-01-16 13:00:00,6518.7,0.0,29.63 -2012-01-16 14:00:00,6491.3,0.0,31.9 -2012-01-16 15:00:00,6483.3,0.0,33.66 -2012-01-16 16:00:00,6590.4,0.0,31.99 -2012-01-16 17:00:00,6889.1,0.0,34.26 -2012-01-16 18:00:00,6823.8,0.0,34.07 -2012-01-16 19:00:00,6655.4,0.0,35.53 -2012-01-16 20:00:00,6442.4,0.0,35.74 -2012-01-16 21:00:00,6193.5,0.0011,36.07 -2012-01-16 22:00:00,5855.9,0.0,39.48 -2012-01-16 23:00:00,5405.0,0.0159,36.07 -2012-01-17 00:00:00,5013.7,0.0189,36.08 -2012-01-17 01:00:00,4773.5,0.011,36.89 -2012-01-17 02:00:00,4612.7,0.02,36.24 -2012-01-17 03:00:00,4549.7,0.0,36.98 -2012-01-17 04:00:00,4581.1,0.0,37.07 -2012-01-17 05:00:00,4838.6,0.0011,37.07 -2012-01-17 06:00:00,5418.0,0.0089,37.4 -2012-01-17 07:00:00,5994.5,0.0,38.14 -2012-01-17 08:00:00,6289.9,0.0,38.14 -2012-01-17 09:00:00,6516.6,0.0,39.24 -2012-01-17 10:00:00,6647.6,0.0,43.18 -2012-01-17 11:00:00,6726.8,0.0,41.24 -2012-01-17 12:00:00,6761.3,0.0259,41.07 -2012-01-17 13:00:00,6799.8,0.0261,42.6 -2012-01-17 14:00:00,6827.1,0.0041,42.66 -2012-01-17 15:00:00,6826.7,0.0141,42.93 -2012-01-17 16:00:00,6876.0,0.0089,44.13 -2012-01-17 17:00:00,7038.0,0.0,45.57 -2012-01-17 18:00:00,6852.4,0.0,46.09 -2012-01-17 19:00:00,6640.4,0.0,46.58 -2012-01-17 20:00:00,6394.2,0.0,47.97 -2012-01-17 21:00:00,6128.1,0.0,49.1 -2012-01-17 22:00:00,5735.2,0.0,48.04 -2012-01-17 23:00:00,5254.6,0.0,51.2 -2012-01-18 00:00:00,4826.0,0.0,51.81 -2012-01-18 01:00:00,4556.8,0.0,52.36 -2012-01-18 02:00:00,4410.0,0.0,53.81 -2012-01-18 03:00:00,4351.7,0.0,50.14 -2012-01-18 04:00:00,4388.1,0.0,47.89 -2012-01-18 05:00:00,4667.5,0.0,45.04 -2012-01-18 06:00:00,5279.4,0.0,42.92 -2012-01-18 07:00:00,5890.5,0.0,40.17 -2012-01-18 08:00:00,6239.0,0.0,39.16 -2012-01-18 09:00:00,6458.3,0.0,38.59 -2012-01-18 10:00:00,6559.6,0.0,41.97 -2012-01-18 11:00:00,6596.9,0.0,38.1 -2012-01-18 12:00:00,6614.4,0.0,37.43 -2012-01-18 13:00:00,6618.0,0.0,37.1 -2012-01-18 14:00:00,6615.8,0.0,36.61 -2012-01-18 15:00:00,6661.0,0.0,34.71 -2012-01-18 16:00:00,6830.7,0.0,35.99 -2012-01-18 17:00:00,7114.6,0.0,32.17 -2012-01-18 18:00:00,7027.1,0.0,30.4 -2012-01-18 19:00:00,6845.0,0.0,29.23 -2012-01-18 20:00:00,6605.6,0.0,28.14 -2012-01-18 21:00:00,6357.2,0.0,27.31 -2012-01-18 22:00:00,6007.0,0.0,27.86 -2012-01-18 23:00:00,5525.9,0.0,25.14 -2012-01-19 00:00:00,5115.3,0.0,24.31 -2012-01-19 01:00:00,4878.3,0.0,23.41 -2012-01-19 02:00:00,4739.2,0.0,23.07 -2012-01-19 03:00:00,4681.7,0.0,22.17 -2012-01-19 04:00:00,4727.4,0.0,24.89 -2012-01-19 05:00:00,4988.8,0.0,21.17 -2012-01-19 06:00:00,5572.9,0.0,20.46 -2012-01-19 07:00:00,6167.5,0.0,20.24 -2012-01-19 08:00:00,6501.0,0.0,21.28 -2012-01-19 09:00:00,6723.2,0.0,23.17 -2012-01-19 10:00:00,6812.9,0.0,28.7 -2012-01-19 11:00:00,6817.6,0.0,27.67 -2012-01-19 12:00:00,6816.6,0.0,29.1 -2012-01-19 13:00:00,6811.4,0.0,31.25 -2012-01-19 14:00:00,6786.9,0.0,31.35 -2012-01-19 15:00:00,6831.1,0.0,32.0 -2012-01-19 16:00:00,6990.0,0.0,32.45 -2012-01-19 17:00:00,7190.0,0.0,33.12 -2012-01-19 18:00:00,6976.2,0.0,34.96 -2012-01-19 19:00:00,6786.3,0.0,36.03 -2012-01-19 20:00:00,6545.0,0.0,37.01 -2012-01-19 21:00:00,6276.0,0.0,36.23 -2012-01-19 22:00:00,5912.5,0.0,36.62 -2012-01-19 23:00:00,5452.4,0.0,36.72 -2012-01-20 00:00:00,5040.4,0.0,36.31 -2012-01-20 01:00:00,4772.0,0.0,36.14 -2012-01-20 02:00:00,4624.4,0.0,35.98 -2012-01-20 03:00:00,4561.3,0.0,35.14 -2012-01-20 04:00:00,4600.1,0.0,34.05 -2012-01-20 05:00:00,4878.3,0.0,33.31 -2012-01-20 06:00:00,5461.3,0.0,31.48 -2012-01-20 07:00:00,6067.4,0.0,29.65 -2012-01-20 08:00:00,6425.4,0.0,26.41 -2012-01-20 09:00:00,6693.7,0.0,24.49 -2012-01-20 10:00:00,6785.2,0.0,31.0 -2012-01-20 11:00:00,6821.0,0.0,26.42 -2012-01-20 12:00:00,6813.4,0.0,27.42 -2012-01-20 13:00:00,6797.3,0.0,29.09 -2012-01-20 14:00:00,6763.7,0.0,29.54 -2012-01-20 15:00:00,6771.8,0.0,30.29 -2012-01-20 16:00:00,6868.8,0.0,30.26 -2012-01-20 17:00:00,7110.5,0.0,30.1 -2012-01-20 18:00:00,6968.8,0.0,29.26 -2012-01-20 19:00:00,6732.7,0.0,28.59 -2012-01-20 20:00:00,6502.9,0.0,28.34 -2012-01-20 21:00:00,6250.7,0.0,28.16 -2012-01-20 22:00:00,5967.5,0.0,28.74 -2012-01-20 23:00:00,5589.3,0.0,28.16 -2012-01-21 00:00:00,5230.5,0.0,28.2 -2012-01-21 01:00:00,4957.4,0.0,28.1 -2012-01-21 02:00:00,4788.1,0.0,28.1 -2012-01-21 03:00:00,4722.4,0.0,26.64 -2012-01-21 04:00:00,4708.8,0.01,24.92 -2012-01-21 05:00:00,4791.7,0.0369,24.01 -2012-01-21 06:00:00,4973.8,0.028,23.92 -2012-01-21 07:00:00,5208.7,0.0131,24.33 -2012-01-21 08:00:00,5531.4,0.0201,23.58 -2012-01-21 09:00:00,5853.8,0.043,23.25 -2012-01-21 10:00:00,6129.4,0.026,24.47 -2012-01-21 11:00:00,6273.0,0.0306,24.98 -2012-01-21 12:00:00,6332.4,0.0525,25.84 -2012-01-21 13:00:00,6307.9,0.0217,25.61 -2012-01-21 14:00:00,6288.9,0.0,26.28 -2012-01-21 15:00:00,6277.7,0.0,26.68 -2012-01-21 16:00:00,6335.0,0.0,30.26 -2012-01-21 17:00:00,6531.6,0.0,26.98 -2012-01-21 18:00:00,6552.8,0.0,25.68 -2012-01-21 19:00:00,6447.2,0.0,26.34 -2012-01-21 20:00:00,6274.1,0.0,26.23 -2012-01-21 21:00:00,6086.3,0.0,26.4 -2012-01-21 22:00:00,5866.2,0.0,31.22 -2012-01-21 23:00:00,5594.8,0.0,23.83 -2012-01-22 00:00:00,5290.3,0.0,22.31 -2012-01-22 01:00:00,5050.8,0.0,21.41 -2012-01-22 02:00:00,4892.1,0.0,21.15 -2012-01-22 03:00:00,4791.0,0.0,21.01 -2012-01-22 04:00:00,4762.4,0.0,26.5 -2012-01-22 05:00:00,4814.9,0.0,19.27 -2012-01-22 06:00:00,4929.9,0.0,19.25 -2012-01-22 07:00:00,5050.6,0.0,18.6 -2012-01-22 08:00:00,5293.8,0.0,19.6 -2012-01-22 09:00:00,5584.4,0.0,20.93 -2012-01-22 10:00:00,5832.7,0.0,28.01 -2012-01-22 11:00:00,5970.6,0.0,24.67 -2012-01-22 12:00:00,6023.0,0.0,26.1 -2012-01-22 13:00:00,6021.3,0.0,27.26 -2012-01-22 14:00:00,6020.6,0.0,28.44 -2012-01-22 15:00:00,6048.3,0.0,29.93 -2012-01-22 16:00:00,6161.4,0.0,32.15 -2012-01-22 17:00:00,6406.6,0.0,31.36 -2012-01-22 18:00:00,6420.3,0.0,32.03 -2012-01-22 19:00:00,6318.3,0.0,33.03 -2012-01-22 20:00:00,6186.8,0.0,33.53 -2012-01-22 21:00:00,6007.5,0.0,34.03 -2012-01-22 22:00:00,5762.9,0.0,34.02 -2012-01-22 23:00:00,5397.7,0.0,34.19 -2012-01-23 00:00:00,5032.4,0.0,33.29 -2012-01-23 01:00:00,4790.4,0.0,33.86 -2012-01-23 02:00:00,4630.0,0.0,33.86 -2012-01-23 03:00:00,4559.4,0.0,35.34 -2012-01-23 04:00:00,4603.2,0.0,36.83 -2012-01-23 05:00:00,4867.0,0.0,35.59 -2012-01-23 06:00:00,5437.9,0.0,35.45 -2012-01-23 07:00:00,6021.4,0.0,35.37 -2012-01-23 08:00:00,6399.0,0.0011,36.02 -2012-01-23 09:00:00,6630.0,0.0,36.78 -2012-01-23 10:00:00,6754.7,0.0089,37.31 -2012-01-23 11:00:00,6795.2,0.0,38.66 -2012-01-23 12:00:00,6808.9,0.0069,39.47 -2012-01-23 13:00:00,6784.3,0.0,41.68 -2012-01-23 14:00:00,6755.9,0.0011,43.56 -2012-01-23 15:00:00,6798.0,0.002,44.52 -2012-01-23 16:00:00,6933.4,0.0133,46.88 -2012-01-23 17:00:00,7044.5,0.1203,49.83 -2012-01-23 18:00:00,6861.8,0.0548,50.05 -2012-01-23 19:00:00,6664.9,0.0392,50.13 -2012-01-23 20:00:00,6414.6,0.0131,50.26 -2012-01-23 21:00:00,6131.6,0.0206,50.92 -2012-01-23 22:00:00,5744.9,0.0011,48.4 -2012-01-23 23:00:00,5256.5,0.0011,51.78 -2012-01-24 00:00:00,4820.1,0.0031,52.12 -2012-01-24 01:00:00,4574.6,0.0,51.59 -2012-01-24 02:00:00,4415.9,0.0,50.6 -2012-01-24 03:00:00,4350.7,0.0,49.81 -2012-01-24 04:00:00,4387.3,0.0011,46.75 -2012-01-24 05:00:00,4636.5,0.0,46.41 -2012-01-24 06:00:00,5222.7,0.0,44.89 -2012-01-24 07:00:00,5802.8,0.0,43.87 -2012-01-24 08:00:00,6139.1,0.0,42.7 -2012-01-24 09:00:00,6349.5,0.0,43.92 -2012-01-24 10:00:00,6425.2,0.0,46.66 -2012-01-24 11:00:00,6464.9,0.0,48.49 -2012-01-24 12:00:00,6482.9,0.0,50.69 -2012-01-24 13:00:00,6454.2,0.0,51.69 -2012-01-24 14:00:00,6425.7,0.0,51.48 -2012-01-24 15:00:00,6389.8,0.0,50.67 -2012-01-24 16:00:00,6373.4,0.0,46.99 -2012-01-24 17:00:00,6700.6,0.0,48.94 -2012-01-24 18:00:00,6660.1,0.0,47.55 -2012-01-24 19:00:00,6505.3,0.0,46.71 -2012-01-24 20:00:00,6274.3,0.0,46.25 -2012-01-24 21:00:00,6006.6,0.0,45.15 -2012-01-24 22:00:00,5665.2,0.0,43.57 -2012-01-24 23:00:00,5211.0,0.0,43.81 -2012-01-25 00:00:00,4773.2,0.0,43.81 -2012-01-25 01:00:00,4535.6,0.0,43.1 -2012-01-25 02:00:00,4390.9,0.0,41.77 -2012-01-25 03:00:00,4336.9,0.0,40.1 -2012-01-25 04:00:00,4379.7,0.0,39.83 -2012-01-25 05:00:00,4637.0,0.0,39.16 -2012-01-25 06:00:00,5228.1,0.0,39.0 -2012-01-25 07:00:00,5818.0,0.0,38.74 -2012-01-25 08:00:00,6191.6,0.0,38.1 -2012-01-25 09:00:00,6420.0,0.0,38.1 -2012-01-25 10:00:00,6494.0,0.0,40.9 -2012-01-25 11:00:00,6527.3,0.0,40.02 -2012-01-25 12:00:00,6518.4,0.0,40.85 -2012-01-25 13:00:00,6515.3,0.0,42.02 -2012-01-25 14:00:00,6484.3,0.0,42.21 -2012-01-25 15:00:00,6489.9,0.0,43.12 -2012-01-25 16:00:00,6582.1,0.0,41.98 -2012-01-25 17:00:00,6840.4,0.0,42.2 -2012-01-25 18:00:00,6751.6,0.0,40.94 -2012-01-25 19:00:00,6559.7,0.0,40.11 -2012-01-25 20:00:00,6350.8,0.0,38.17 -2012-01-25 21:00:00,6088.2,0.0,37.16 -2012-01-25 22:00:00,5708.4,0.0,37.1 -2012-01-25 23:00:00,5278.8,0.0,37.01 -2012-01-26 00:00:00,4868.9,0.0,36.34 -2012-01-26 01:00:00,4601.9,0.0,36.43 -2012-01-26 02:00:00,4453.8,0.0,37.0 -2012-01-26 03:00:00,4408.6,0.01,35.24 -2012-01-26 04:00:00,4442.2,0.0011,34.01 -2012-01-26 05:00:00,4698.2,0.0,33.36 -2012-01-26 06:00:00,5272.9,0.0,34.03 -2012-01-26 07:00:00,5863.2,0.0,34.86 -2012-01-26 08:00:00,6222.2,0.0,35.58 -2012-01-26 09:00:00,6457.2,0.0,37.35 -2012-01-26 10:00:00,6560.0,0.0,37.6 -2012-01-26 11:00:00,6624.4,0.0,38.43 -2012-01-26 12:00:00,6678.4,0.0,38.71 -2012-01-26 13:00:00,6751.6,0.0,37.78 -2012-01-26 14:00:00,6757.2,0.0,37.29 -2012-01-26 15:00:00,6812.6,0.008,37.1 -2012-01-26 16:00:00,6935.9,0.0111,36.29 -2012-01-26 17:00:00,7036.1,0.012,37.11 -2012-01-26 18:00:00,6858.3,0.0089,37.2 -2012-01-26 19:00:00,6631.1,0.01,37.2 -2012-01-26 20:00:00,6389.7,0.0369,37.29 -2012-01-26 21:00:00,6106.9,0.0072,37.21 -2012-01-26 22:00:00,5746.5,0.009,40.55 -2012-01-26 23:00:00,5298.3,0.023,39.29 -2012-01-27 00:00:00,4870.1,0.0231,40.03 -2012-01-27 01:00:00,4599.5,0.0,41.98 -2012-01-27 02:00:00,4446.4,0.0,42.51 -2012-01-27 03:00:00,4366.2,0.0,41.85 -2012-01-27 04:00:00,4387.6,0.0,43.59 -2012-01-27 05:00:00,4627.7,0.0,43.69 -2012-01-27 06:00:00,5189.2,0.0,45.26 -2012-01-27 07:00:00,5803.8,0.0011,47.91 -2012-01-27 08:00:00,6204.9,0.0472,50.53 -2012-01-27 09:00:00,6481.5,0.055,52.4 -2012-01-27 10:00:00,6626.9,0.0307,53.39 -2012-01-27 11:00:00,6727.9,0.0354,53.94 -2012-01-27 12:00:00,6723.5,0.0089,55.87 -2012-01-27 13:00:00,6692.0,0.011,56.74 -2012-01-27 14:00:00,6614.7,0.0,58.14 -2012-01-27 15:00:00,6563.0,0.0011,56.63 -2012-01-27 16:00:00,6614.4,0.0,54.69 -2012-01-27 17:00:00,6711.4,0.0,52.9 -2012-01-27 18:00:00,6570.4,0.0,51.07 -2012-01-27 19:00:00,6358.3,0.0,48.84 -2012-01-27 20:00:00,6124.6,0.0,47.9 -2012-01-27 21:00:00,5890.8,0.0,45.83 -2012-01-27 22:00:00,5602.6,0.0,44.52 -2012-01-27 23:00:00,5217.7,0.0,44.83 -2012-01-28 00:00:00,4850.6,0.0,44.1 -2012-01-28 01:00:00,4595.4,0.0,43.67 -2012-01-28 02:00:00,4431.5,0.0,42.84 -2012-01-28 03:00:00,4343.9,0.0,42.74 -2012-01-28 04:00:00,4317.0,0.0,40.69 -2012-01-28 05:00:00,4388.7,0.0,40.16 -2012-01-28 06:00:00,4554.4,0.0,39.07 -2012-01-28 07:00:00,4759.1,0.0,38.15 -2012-01-28 08:00:00,5085.1,0.0,38.7 -2012-01-28 09:00:00,5370.0,0.0,39.81 -2012-01-28 10:00:00,5533.9,0.0,42.47 -2012-01-28 11:00:00,5606.3,0.0,40.93 -2012-01-28 12:00:00,5618.2,0.0,43.1 -2012-01-28 13:00:00,5576.6,0.0,44.23 -2012-01-28 14:00:00,5542.5,0.0,44.48 -2012-01-28 15:00:00,5528.8,0.0,44.5 -2012-01-28 16:00:00,5576.2,0.0,43.2 -2012-01-28 17:00:00,5844.0,0.0,45.11 -2012-01-28 18:00:00,5959.1,0.0,44.06 -2012-01-28 19:00:00,5870.1,0.0,44.24 -2012-01-28 20:00:00,5731.9,0.0,44.61 -2012-01-28 21:00:00,5574.8,0.0,43.71 -2012-01-28 22:00:00,5374.2,0.0,43.66 -2012-01-28 23:00:00,5134.2,0.0,42.94 -2012-01-29 00:00:00,4851.2,0.0,40.94 -2012-01-29 01:00:00,4616.2,0.0,40.35 -2012-01-29 02:00:00,4448.3,0.0,39.16 -2012-01-29 03:00:00,4358.9,0.0,38.54 -2012-01-29 04:00:00,4331.1,0.0,39.44 -2012-01-29 05:00:00,4386.9,0.0,36.33 -2012-01-29 06:00:00,4486.0,0.0,35.52 -2012-01-29 07:00:00,4610.8,0.0,34.33 -2012-01-29 08:00:00,4859.2,0.0,34.39 -2012-01-29 09:00:00,5107.5,0.0,35.21 -2012-01-29 10:00:00,5326.3,0.0,39.05 -2012-01-29 11:00:00,5442.4,0.0,38.04 -2012-01-29 12:00:00,5485.8,0.0,39.44 -2012-01-29 13:00:00,5489.2,0.0,40.6 -2012-01-29 14:00:00,5473.4,0.0,41.83 -2012-01-29 15:00:00,5484.9,0.0,42.6 -2012-01-29 16:00:00,5590.5,0.0,40.61 -2012-01-29 17:00:00,5887.0,0.0,42.77 -2012-01-29 18:00:00,6018.2,0.0,42.35 -2012-01-29 19:00:00,5963.8,0.0,40.89 -2012-01-29 20:00:00,5862.1,0.0,40.08 -2012-01-29 21:00:00,5698.1,0.0,39.68 -2012-01-29 22:00:00,5432.3,0.0,39.54 -2012-01-29 23:00:00,5063.8,0.0,39.13 -2012-01-30 00:00:00,4751.0,0.0,39.29 -2012-01-30 01:00:00,4537.7,0.0,39.71 -2012-01-30 02:00:00,4409.2,0.0,38.5 -2012-01-30 03:00:00,4365.3,0.0,37.54 -2012-01-30 04:00:00,4422.4,0.0,39.27 -2012-01-30 05:00:00,4699.6,0.0,36.1 -2012-01-30 06:00:00,5287.3,0.0,36.16 -2012-01-30 07:00:00,5862.2,0.0,34.94 -2012-01-30 08:00:00,6235.2,0.0,34.79 -2012-01-30 09:00:00,6480.4,0.0,35.21 -2012-01-30 10:00:00,6581.0,0.0,37.96 -2012-01-30 11:00:00,6638.5,0.0,36.21 -2012-01-30 12:00:00,6644.1,0.0,36.84 -2012-01-30 13:00:00,6633.2,0.0,37.46 -2012-01-30 14:00:00,6591.5,0.0,37.84 -2012-01-30 15:00:00,6596.4,0.0,37.98 -2012-01-30 16:00:00,6681.0,0.0,38.0 -2012-01-30 17:00:00,6932.2,0.0,38.0 -2012-01-30 18:00:00,6874.1,0.0,37.39 -2012-01-30 19:00:00,6668.6,0.0,36.94 -2012-01-30 20:00:00,6449.9,0.0,36.31 -2012-01-30 21:00:00,6179.0,0.0,36.52 -2012-01-30 22:00:00,5795.4,0.0,34.59 -2012-01-30 23:00:00,5307.5,0.0,37.35 -2012-01-31 00:00:00,4878.4,0.0,37.56 -2012-01-31 01:00:00,4610.8,0.0,37.79 -2012-01-31 02:00:00,4468.1,0.0,37.5 -2012-01-31 03:00:00,4403.5,0.0,38.5 -2012-01-31 04:00:00,4430.9,0.0,35.13 -2012-01-31 05:00:00,4701.3,0.0,40.0 -2012-01-31 06:00:00,5300.9,0.0,39.45 -2012-01-31 07:00:00,5864.2,0.0,38.45 -2012-01-31 08:00:00,6207.8,0.0,38.42 -2012-01-31 09:00:00,6401.2,0.0,41.1 -2012-01-31 10:00:00,6455.5,0.0,45.42 -2012-01-31 11:00:00,6479.8,0.0,46.41 -2012-01-31 12:00:00,6466.0,0.0,50.27 -2012-01-31 13:00:00,6454.3,0.0,54.51 -2012-01-31 14:00:00,6413.4,0.0,56.24 -2012-01-31 15:00:00,6400.4,0.0,56.96 -2012-01-31 16:00:00,6470.3,0.0,49.75 -2012-01-31 17:00:00,6684.2,0.0,56.63 -2012-01-31 18:00:00,6610.3,0.0,55.54 -2012-01-31 19:00:00,6427.7,0.0,55.41 -2012-01-31 20:00:00,6189.4,0.0,55.41 -2012-01-31 21:00:00,5923.0,0.0,54.02 -2012-01-31 22:00:00,5573.6,0.0,46.26 -2012-01-31 23:00:00,5095.8,0.0,53.36 -2012-02-01 00:00:00,4684.2,0.0,52.35 -2012-02-01 01:00:00,4424.2,0.0,51.62 -2012-02-01 02:00:00,4281.6,0.0,51.51 -2012-02-01 03:00:00,4223.9,0.0,52.18 -2012-02-01 04:00:00,4249.8,0.0,47.19 -2012-02-01 05:00:00,4508.3,0.0,51.54 -2012-02-01 06:00:00,5120.9,0.0,51.54 -2012-02-01 07:00:00,5722.8,0.0301,48.7 -2012-02-01 08:00:00,6092.7,0.002,49.64 -2012-02-01 09:00:00,6302.9,0.0,50.09 -2012-02-01 10:00:00,6360.8,0.0,49.61 -2012-02-01 11:00:00,6378.5,0.0,54.52 -2012-02-01 12:00:00,6373.0,0.0,57.75 -2012-02-01 13:00:00,6375.3,0.0,60.18 -2012-02-01 14:00:00,6358.3,0.0,60.94 -2012-02-01 15:00:00,6357.2,0.0,61.7 -2012-02-01 16:00:00,6417.0,0.0,53.37 -2012-02-01 17:00:00,6630.3,0.0,59.08 -2012-02-01 18:00:00,6535.0,0.0,58.65 -2012-02-01 19:00:00,6348.7,0.0,57.68 -2012-02-01 20:00:00,6137.5,0.0,57.18 -2012-02-01 21:00:00,5879.9,0.0,56.9 -2012-02-01 22:00:00,5502.8,0.0,49.56 -2012-02-01 23:00:00,5044.8,0.0,52.78 -2012-02-02 00:00:00,4632.7,0.0,49.9 -2012-02-02 01:00:00,4375.5,0.0,47.87 -2012-02-02 02:00:00,4228.4,0.0,46.01 -2012-02-02 03:00:00,4180.1,0.0,44.34 -2012-02-02 04:00:00,4214.9,0.0,42.06 -2012-02-02 05:00:00,4485.3,0.0,42.28 -2012-02-02 06:00:00,5096.6,0.0,41.57 -2012-02-02 07:00:00,5684.4,0.0,41.52 -2012-02-02 08:00:00,6064.0,0.0,41.06 -2012-02-02 09:00:00,6282.2,0.0,41.81 -2012-02-02 10:00:00,6404.7,0.0,42.61 -2012-02-02 11:00:00,6444.0,0.0,41.93 -2012-02-02 12:00:00,6443.8,0.0,42.61 -2012-02-02 13:00:00,6440.1,0.0,43.5 -2012-02-02 14:00:00,6423.4,0.0,43.84 -2012-02-02 15:00:00,6475.0,0.0,43.93 -2012-02-02 16:00:00,6626.4,0.0,40.99 -2012-02-02 17:00:00,6838.9,0.0,43.03 -2012-02-02 18:00:00,6698.8,0.0,42.27 -2012-02-02 19:00:00,6517.3,0.0,41.34 -2012-02-02 20:00:00,6297.6,0.0,40.34 -2012-02-02 21:00:00,6033.9,0.0,39.24 -2012-02-02 22:00:00,5689.6,0.0,37.59 -2012-02-02 23:00:00,5247.7,0.0,37.34 -2012-02-03 00:00:00,4859.7,0.0,36.24 -2012-02-03 01:00:00,4621.5,0.0,34.4 -2012-02-03 02:00:00,4485.1,0.0,33.4 -2012-02-03 03:00:00,4441.2,0.0,32.4 -2012-02-03 04:00:00,4480.9,0.0,32.82 -2012-02-03 05:00:00,4732.8,0.0,31.5 -2012-02-03 06:00:00,5331.8,0.0,31.34 -2012-02-03 07:00:00,5884.2,0.0,31.24 -2012-02-03 08:00:00,6246.6,0.0,31.43 -2012-02-03 09:00:00,6475.8,0.0,32.52 -2012-02-03 10:00:00,6556.2,0.0,33.39 -2012-02-03 11:00:00,6578.9,0.0,36.45 -2012-02-03 12:00:00,6558.8,0.0,38.9 -2012-02-03 13:00:00,6514.1,0.0,40.52 -2012-02-03 14:00:00,6464.2,0.0,42.59 -2012-02-03 15:00:00,6459.0,0.0,43.28 -2012-02-03 16:00:00,6516.1,0.0,37.62 -2012-02-03 17:00:00,6681.8,0.0,43.1 -2012-02-03 18:00:00,6599.1,0.0,42.18 -2012-02-03 19:00:00,6389.3,0.0,41.75 -2012-02-03 20:00:00,6169.3,0.0,41.18 -2012-02-03 21:00:00,5930.8,0.0,40.24 -2012-02-03 22:00:00,5628.8,0.0,35.37 -2012-02-03 23:00:00,5269.5,0.0,39.81 -2012-02-04 00:00:00,4901.7,0.0,39.25 -2012-02-04 01:00:00,4655.5,0.0,39.95 -2012-02-04 02:00:00,4484.4,0.0,40.12 -2012-02-04 03:00:00,4393.5,0.0,40.12 -2012-02-04 04:00:00,4357.7,0.0,38.97 -2012-02-04 05:00:00,4440.3,0.0,39.2 -2012-02-04 06:00:00,4614.2,0.0,38.46 -2012-02-04 07:00:00,4808.8,0.0,38.11 -2012-02-04 08:00:00,5098.8,0.0,38.28 -2012-02-04 09:00:00,5379.2,0.0,40.04 -2012-02-04 10:00:00,5558.8,0.0,41.93 -2012-02-04 11:00:00,5636.5,0.0,42.35 -2012-02-04 12:00:00,5655.2,0.0,43.92 -2012-02-04 13:00:00,5626.9,0.0,44.94 -2012-02-04 14:00:00,5591.5,0.0,44.89 -2012-02-04 15:00:00,5582.9,0.0,45.36 -2012-02-04 16:00:00,5666.5,0.0,42.53 -2012-02-04 17:00:00,5903.5,0.0,44.93 -2012-02-04 18:00:00,5988.5,0.0,44.17 -2012-02-04 19:00:00,5910.1,0.0,43.37 -2012-02-04 20:00:00,5775.3,0.0,42.18 -2012-02-04 21:00:00,5624.8,0.0,40.6 -2012-02-04 22:00:00,5413.0,0.0,37.14 -2012-02-04 23:00:00,5146.9,0.0,37.53 -2012-02-05 00:00:00,4856.8,0.0,36.11 -2012-02-05 01:00:00,4622.8,0.0,34.54 -2012-02-05 02:00:00,4457.8,0.0,34.37 -2012-02-05 03:00:00,4369.8,0.0,33.53 -2012-02-05 04:00:00,4338.2,0.0,32.28 -2012-02-05 05:00:00,4389.4,0.0,33.2 -2012-02-05 06:00:00,4499.5,0.0,33.11 -2012-02-05 07:00:00,4635.7,0.0,33.01 -2012-02-05 08:00:00,4898.2,0.0,33.11 -2012-02-05 09:00:00,5150.7,0.0,32.91 -2012-02-05 10:00:00,5365.4,0.0,33.74 -2012-02-05 11:00:00,5499.9,0.0,34.84 -2012-02-05 12:00:00,5550.7,0.0,34.93 -2012-02-05 13:00:00,5556.2,0.0,36.84 -2012-02-05 14:00:00,5545.9,0.0,37.61 -2012-02-05 15:00:00,5547.7,0.0,39.28 -2012-02-05 16:00:00,5632.9,0.0,36.07 -2012-02-05 17:00:00,5874.8,0.0,39.55 -2012-02-05 18:00:00,5990.9,0.0,38.04 -2012-02-05 19:00:00,5890.0,0.0,38.04 -2012-02-05 20:00:00,5758.6,0.0,36.58 -2012-02-05 21:00:00,5616.5,0.0,35.49 -2012-02-05 22:00:00,5429.8,0.0,31.47 -2012-02-05 23:00:00,5126.7,0.0,34.95 -2012-02-06 00:00:00,4798.0,0.0,34.3 -2012-02-06 01:00:00,4574.0,0.0,34.2 -2012-02-06 02:00:00,4443.5,0.0,34.29 -2012-02-06 03:00:00,4381.9,0.0,34.17 -2012-02-06 04:00:00,4411.2,0.0,30.66 -2012-02-06 05:00:00,4691.2,0.0,33.74 -2012-02-06 06:00:00,5260.5,0.0,33.09 -2012-02-06 07:00:00,5822.6,0.0,32.93 -2012-02-06 08:00:00,6173.2,0.0,34.2 -2012-02-06 09:00:00,6419.2,0.0,36.22 -2012-02-06 10:00:00,6510.9,0.0,40.55 -2012-02-06 11:00:00,6522.1,0.0,41.02 -2012-02-06 12:00:00,6506.4,0.0,44.69 -2012-02-06 13:00:00,6486.2,0.0,47.22 -2012-02-06 14:00:00,6447.3,0.0,48.86 -2012-02-06 15:00:00,6430.5,0.0,50.5 -2012-02-06 16:00:00,6485.5,0.0,46.81 -2012-02-06 17:00:00,6655.8,0.0,49.68 -2012-02-06 18:00:00,6645.7,0.0,49.07 -2012-02-06 19:00:00,6507.8,0.0,48.17 -2012-02-06 20:00:00,6291.0,0.0,47.3 -2012-02-06 21:00:00,6023.2,0.0,46.41 -2012-02-06 22:00:00,5640.7,0.0,43.82 -2012-02-06 23:00:00,5170.8,0.0,43.55 -2012-02-07 00:00:00,4756.6,0.0,42.55 -2012-02-07 01:00:00,4498.3,0.0,41.86 -2012-02-07 02:00:00,4349.3,0.0,41.09 -2012-02-07 03:00:00,4296.4,0.0,40.4 -2012-02-07 04:00:00,4338.0,0.0,40.55 -2012-02-07 05:00:00,4624.2,0.0,39.64 -2012-02-07 06:00:00,5212.7,0.0,39.37 -2012-02-07 07:00:00,5795.5,0.0,40.16 -2012-02-07 08:00:00,6124.1,0.0,40.76 -2012-02-07 09:00:00,6336.6,0.0,42.59 -2012-02-07 10:00:00,6414.2,0.0,44.93 -2012-02-07 11:00:00,6434.4,0.0,45.86 -2012-02-07 12:00:00,6435.7,0.0,47.34 -2012-02-07 13:00:00,6436.8,0.0,47.02 -2012-02-07 14:00:00,6416.9,0.0,46.84 -2012-02-07 15:00:00,6428.8,0.0,45.46 -2012-02-07 16:00:00,6502.3,0.0,44.97 -2012-02-07 17:00:00,6709.8,0.0,45.01 -2012-02-07 18:00:00,6675.5,0.0,44.1 -2012-02-07 19:00:00,6510.9,0.0,43.27 -2012-02-07 20:00:00,6264.4,0.0,43.1 -2012-02-07 21:00:00,6011.0,0.0,42.28 -2012-02-07 22:00:00,5649.9,0.0,39.62 -2012-02-07 23:00:00,5187.3,0.0,40.18 -2012-02-08 00:00:00,4778.5,0.0,38.58 -2012-02-08 01:00:00,4544.1,0.0,37.51 -2012-02-08 02:00:00,4410.6,0.0,36.42 -2012-02-08 03:00:00,4359.9,0.0,35.01 -2012-02-08 04:00:00,4398.9,0.0,33.43 -2012-02-08 05:00:00,4684.9,0.0,32.43 -2012-02-08 06:00:00,5284.1,0.0,32.11 -2012-02-08 07:00:00,5872.3,0.0,32.11 -2012-02-08 08:00:00,6250.8,0.0,32.11 -2012-02-08 09:00:00,6487.7,0.0,32.2 -2012-02-08 10:00:00,6545.6,0.0,34.75 -2012-02-08 11:00:00,6583.6,0.0,34.12 -2012-02-08 12:00:00,6601.5,0.0,34.85 -2012-02-08 13:00:00,6641.9,0.0,35.53 -2012-02-08 14:00:00,6654.3,0.0,35.53 -2012-02-08 15:00:00,6689.1,0.0,35.79 -2012-02-08 16:00:00,6791.6,0.0,36.36 -2012-02-08 17:00:00,6960.1,0.0,35.16 -2012-02-08 18:00:00,6892.0,0.0,34.14 -2012-02-08 19:00:00,6678.8,0.0,33.38 -2012-02-08 20:00:00,6449.1,0.0,32.54 -2012-02-08 21:00:00,6184.7,0.0,32.13 -2012-02-08 22:00:00,5797.0,0.002,32.07 -2012-02-08 23:00:00,5338.1,0.0,31.29 -2012-02-09 00:00:00,4917.5,0.0,31.17 -2012-02-09 01:00:00,4675.4,0.0,31.51 -2012-02-09 02:00:00,4528.3,0.0,31.48 -2012-02-09 03:00:00,4472.6,0.0,31.32 -2012-02-09 04:00:00,4511.0,0.0,33.79 -2012-02-09 05:00:00,4770.2,0.0,32.06 -2012-02-09 06:00:00,5361.9,0.0,32.39 -2012-02-09 07:00:00,5919.7,0.0,32.31 -2012-02-09 08:00:00,6277.4,0.0,32.34 -2012-02-09 09:00:00,6503.9,0.0,33.43 -2012-02-09 10:00:00,6588.4,0.0,38.03 -2012-02-09 11:00:00,6596.9,0.0,37.19 -2012-02-09 12:00:00,6591.5,0.0,39.19 -2012-02-09 13:00:00,6559.3,0.0,41.19 -2012-02-09 14:00:00,6509.2,0.0,43.19 -2012-02-09 15:00:00,6504.1,0.0,44.95 -2012-02-09 16:00:00,6560.3,0.0,43.41 -2012-02-09 17:00:00,6727.2,0.0,45.53 -2012-02-09 18:00:00,6715.7,0.0,43.47 -2012-02-09 19:00:00,6557.4,0.0,42.21 -2012-02-09 20:00:00,6342.2,0.0,41.12 -2012-02-09 21:00:00,6083.9,0.0,39.55 -2012-02-09 22:00:00,5704.1,0.0,37.97 -2012-02-09 23:00:00,5260.9,0.0,38.02 -2012-02-10 00:00:00,4864.7,0.0,37.02 -2012-02-10 01:00:00,4619.0,0.0,36.75 -2012-02-10 02:00:00,4472.0,0.0,36.45 -2012-02-10 03:00:00,4412.0,0.0,35.54 -2012-02-10 04:00:00,4439.8,0.0,32.5 -2012-02-10 05:00:00,4698.3,0.0,34.76 -2012-02-10 06:00:00,5280.7,0.0,34.72 -2012-02-10 07:00:00,5850.6,0.0,34.18 -2012-02-10 08:00:00,6188.7,0.0,35.11 -2012-02-10 09:00:00,6396.3,0.0,37.15 -2012-02-10 10:00:00,6471.3,0.0,42.44 -2012-02-10 11:00:00,6509.2,0.0,40.9 -2012-02-10 12:00:00,6499.4,0.0,42.07 -2012-02-10 13:00:00,6474.2,0.0,43.67 -2012-02-10 14:00:00,6419.0,0.0,44.12 -2012-02-10 15:00:00,6409.2,0.0,44.11 -2012-02-10 16:00:00,6495.7,0.0,44.38 -2012-02-10 17:00:00,6647.5,0.0,44.26 -2012-02-10 18:00:00,6578.0,0.0,43.44 -2012-02-10 19:00:00,6377.9,0.0,42.3 -2012-02-10 20:00:00,6157.9,0.0,41.51 -2012-02-10 21:00:00,5919.9,0.0,39.43 -2012-02-10 22:00:00,5637.3,0.0,40.87 -2012-02-10 23:00:00,5276.0,0.0,37.26 -2012-02-11 00:00:00,4910.2,0.0,37.1 -2012-02-11 01:00:00,4673.1,0.0,37.07 -2012-02-11 02:00:00,4518.6,0.0,36.6 -2012-02-11 03:00:00,4441.4,0.0069,34.16 -2012-02-11 04:00:00,4420.4,0.0031,38.02 -2012-02-11 05:00:00,4482.0,0.0237,33.26 -2012-02-11 06:00:00,4661.4,0.012,33.19 -2012-02-11 07:00:00,4889.1,0.0022,33.84 -2012-02-11 08:00:00,5204.3,0.0,33.43 -2012-02-11 09:00:00,5499.9,0.0089,34.34 -2012-02-11 10:00:00,5743.5,0.002,34.35 -2012-02-11 11:00:00,5841.7,0.0,35.41 -2012-02-11 12:00:00,5882.4,0.0,35.93 -2012-02-11 13:00:00,5888.5,0.0,36.16 -2012-02-11 14:00:00,5873.8,0.0,36.93 -2012-02-11 15:00:00,5842.2,0.0,37.93 -2012-02-11 16:00:00,5875.0,0.0,36.37 -2012-02-11 17:00:00,6022.1,0.0,38.0 -2012-02-11 18:00:00,6129.8,0.0,37.52 -2012-02-11 19:00:00,6071.5,0.0,37.16 -2012-02-11 20:00:00,5935.8,0.0,36.34 -2012-02-11 21:00:00,5760.1,0.0,36.16 -2012-02-11 22:00:00,5551.0,0.0,36.01 -2012-02-11 23:00:00,5289.5,0.0,33.5 -2012-02-12 00:00:00,5013.3,0.0,31.25 -2012-02-12 01:00:00,4794.3,0.0,30.38 -2012-02-12 02:00:00,4667.7,0.0,26.68 -2012-02-12 03:00:00,4601.2,0.0,23.13 -2012-02-12 04:00:00,4577.3,0.0,26.97 -2012-02-12 05:00:00,4627.9,0.0,21.89 -2012-02-12 06:00:00,4735.8,0.0,21.35 -2012-02-12 07:00:00,4873.7,0.0,21.35 -2012-02-12 08:00:00,5133.7,0.0,22.4 -2012-02-12 09:00:00,5395.5,0.0,23.62 -2012-02-12 10:00:00,5608.5,0.0,26.11 -2012-02-12 11:00:00,5757.9,0.0,28.35 -2012-02-12 12:00:00,5848.3,0.0,29.17 -2012-02-12 13:00:00,5836.4,0.0,29.45 -2012-02-12 14:00:00,5827.3,0.0,31.55 -2012-02-12 15:00:00,5868.4,0.0,30.66 -2012-02-12 16:00:00,5917.9,0.0,30.34 -2012-02-12 17:00:00,6179.0,0.0,31.27 -2012-02-12 18:00:00,6351.3,0.0,28.77 -2012-02-12 19:00:00,6319.2,0.0,28.31 -2012-02-12 20:00:00,6218.5,0.0,26.76 -2012-02-12 21:00:00,6020.6,0.0,26.67 -2012-02-12 22:00:00,5752.7,0.0,26.67 -2012-02-12 23:00:00,5380.4,0.0,27.34 -2012-02-13 00:00:00,5017.5,0.0,28.27 -2012-02-13 01:00:00,4787.0,0.0,28.67 -2012-02-13 02:00:00,4642.5,0.0,28.67 -2012-02-13 03:00:00,4596.9,0.0,28.83 -2012-02-13 04:00:00,4639.5,0.0,24.81 -2012-02-13 05:00:00,4913.0,0.0,29.79 -2012-02-13 06:00:00,5462.5,0.0,29.94 -2012-02-13 07:00:00,6016.6,0.0,28.57 -2012-02-13 08:00:00,6369.7,0.0,29.59 -2012-02-13 09:00:00,6591.8,0.0,31.16 -2012-02-13 10:00:00,6695.6,0.0,35.79 -2012-02-13 11:00:00,6710.5,0.0,35.19 -2012-02-13 12:00:00,6687.0,0.0,36.85 -2012-02-13 13:00:00,6645.5,0.0,39.02 -2012-02-13 14:00:00,6600.0,0.0,41.12 -2012-02-13 15:00:00,6595.5,0.0,43.03 -2012-02-13 16:00:00,6652.5,0.0,40.23 -2012-02-13 17:00:00,6814.8,0.0,42.41 -2012-02-13 18:00:00,6825.0,0.0,41.24 -2012-02-13 19:00:00,6660.4,0.0,40.57 -2012-02-13 20:00:00,6439.7,0.0,40.21 -2012-02-13 21:00:00,6185.4,0.0,39.28 -2012-02-13 22:00:00,5823.4,0.0,39.46 -2012-02-13 23:00:00,5339.4,0.0,39.01 -2012-02-14 00:00:00,4909.6,0.0,38.38 -2012-02-14 01:00:00,4647.4,0.0,38.38 -2012-02-14 02:00:00,4505.8,0.0,38.2 -2012-02-14 03:00:00,4446.9,0.0,37.38 -2012-02-14 04:00:00,4475.2,0.0,37.09 -2012-02-14 05:00:00,4749.4,0.0,37.31 -2012-02-14 06:00:00,5322.8,0.0,37.13 -2012-02-14 07:00:00,5909.4,0.0,36.4 -2012-02-14 08:00:00,6260.9,0.0,37.98 -2012-02-14 09:00:00,6455.7,0.0,39.46 -2012-02-14 10:00:00,6544.8,0.0,41.7 -2012-02-14 11:00:00,6576.9,0.0,40.98 -2012-02-14 12:00:00,6572.6,0.0,43.06 -2012-02-14 13:00:00,6549.6,0.0,44.18 -2012-02-14 14:00:00,6508.5,0.0011,45.65 -2012-02-14 15:00:00,6495.3,0.0,46.44 -2012-02-14 16:00:00,6562.6,0.0,43.53 -2012-02-14 17:00:00,6731.3,0.0,43.78 -2012-02-14 18:00:00,6694.6,0.0,43.26 -2012-02-14 19:00:00,6509.5,0.0,43.29 -2012-02-14 20:00:00,6264.7,0.0,44.1 -2012-02-14 21:00:00,6003.6,0.0,44.82 -2012-02-14 22:00:00,5650.9,0.0148,42.05 -2012-02-14 23:00:00,5214.2,0.0,41.57 -2012-02-15 00:00:00,4799.7,0.0,41.78 -2012-02-15 01:00:00,4548.2,0.0,40.93 -2012-02-15 02:00:00,4403.0,0.0,41.03 -2012-02-15 03:00:00,4347.8,0.0,40.2 -2012-02-15 04:00:00,4364.9,0.0,40.68 -2012-02-15 05:00:00,4636.8,0.0,40.61 -2012-02-15 06:00:00,5217.8,0.0,40.61 -2012-02-15 07:00:00,5817.0,0.0,40.25 -2012-02-15 08:00:00,6208.0,0.0011,40.51 -2012-02-15 09:00:00,6478.7,0.0,40.61 -2012-02-15 10:00:00,6570.9,0.0069,43.55 -2012-02-15 11:00:00,6607.1,0.0011,41.3 -2012-02-15 12:00:00,6606.7,0.0,41.96 -2012-02-15 13:00:00,6592.3,0.0,42.89 -2012-02-15 14:00:00,6565.2,0.0,44.43 -2012-02-15 15:00:00,6571.1,0.0,43.96 -2012-02-15 16:00:00,6596.9,0.0,44.86 -2012-02-15 17:00:00,6730.3,0.0,44.96 -2012-02-15 18:00:00,6710.2,0.0,44.71 -2012-02-15 19:00:00,6542.3,0.0,44.8 -2012-02-15 20:00:00,6337.3,0.0,43.94 -2012-02-15 21:00:00,6076.2,0.0,42.93 -2012-02-15 22:00:00,5710.3,0.0,41.24 -2012-02-15 23:00:00,5234.7,0.0,40.91 -2012-02-16 00:00:00,4825.7,0.0,39.93 -2012-02-16 01:00:00,4559.3,0.0,39.09 -2012-02-16 02:00:00,4419.0,0.0,38.05 -2012-02-16 03:00:00,4374.4,0.0,37.14 -2012-02-16 04:00:00,4397.1,0.0,36.76 -2012-02-16 05:00:00,4669.4,0.0,36.26 -2012-02-16 06:00:00,5244.7,0.0,37.09 -2012-02-16 07:00:00,5822.8,0.0,37.18 -2012-02-16 08:00:00,6214.6,0.0,38.56 -2012-02-16 09:00:00,6433.3,0.0,39.82 -2012-02-16 10:00:00,6545.7,0.0,42.75 -2012-02-16 11:00:00,6585.3,0.0,40.88 -2012-02-16 12:00:00,6626.6,0.0137,40.29 -2012-02-16 13:00:00,6656.6,0.018,41.18 -2012-02-16 14:00:00,6616.5,0.0141,40.93 -2012-02-16 15:00:00,6660.2,0.0137,41.44 -2012-02-16 16:00:00,6759.9,0.0069,42.77 -2012-02-16 17:00:00,6847.5,0.0069,42.17 -2012-02-16 18:00:00,6743.8,0.0,42.09 -2012-02-16 19:00:00,6570.3,0.0178,41.44 -2012-02-16 20:00:00,6339.4,0.0131,41.61 -2012-02-16 21:00:00,6071.1,0.0278,42.02 -2012-02-16 22:00:00,5711.4,0.0137,43.27 -2012-02-16 23:00:00,5251.7,0.0,42.93 -2012-02-17 00:00:00,4825.7,0.0,44.15 -2012-02-17 01:00:00,4558.7,0.0,44.01 -2012-02-17 02:00:00,4404.7,0.0,44.65 -2012-02-17 03:00:00,4339.4,0.0,44.35 -2012-02-17 04:00:00,4349.7,0.0148,42.29 -2012-02-17 05:00:00,4607.1,0.0,43.92 -2012-02-17 06:00:00,5169.3,0.0,43.88 -2012-02-17 07:00:00,5732.2,0.0089,43.52 -2012-02-17 08:00:00,6085.4,0.0,44.01 -2012-02-17 09:00:00,6310.9,0.0,45.02 -2012-02-17 10:00:00,6401.6,0.0,44.72 -2012-02-17 11:00:00,6423.9,0.0,46.71 -2012-02-17 12:00:00,6409.8,0.0,48.62 -2012-02-17 13:00:00,6379.1,0.0,48.81 -2012-02-17 14:00:00,6332.8,0.0,49.86 -2012-02-17 15:00:00,6322.7,0.0,49.7 -2012-02-17 16:00:00,6361.6,0.0,47.33 -2012-02-17 17:00:00,6470.9,0.0,47.3 -2012-02-17 18:00:00,6449.5,0.0,45.27 -2012-02-17 19:00:00,6282.6,0.0,44.19 -2012-02-17 20:00:00,6066.6,0.0,44.18 -2012-02-17 21:00:00,5838.3,0.0,43.72 -2012-02-17 22:00:00,5556.4,0.0,40.57 -2012-02-17 23:00:00,5206.6,0.0,43.04 -2012-02-18 00:00:00,4826.7,0.0,41.03 -2012-02-18 01:00:00,4599.7,0.0,40.09 -2012-02-18 02:00:00,4444.8,0.0,39.06 -2012-02-18 03:00:00,4364.6,0.0,38.31 -2012-02-18 04:00:00,4344.9,0.0,36.67 -2012-02-18 05:00:00,4416.9,0.0,36.49 -2012-02-18 06:00:00,4563.4,0.0,36.41 -2012-02-18 07:00:00,4755.3,0.0,35.58 -2012-02-18 08:00:00,5035.9,0.0,36.34 -2012-02-18 09:00:00,5299.4,0.0,37.59 -2012-02-18 10:00:00,5483.6,0.0,40.17 -2012-02-18 11:00:00,5556.1,0.0,41.83 -2012-02-18 12:00:00,5580.0,0.0,43.87 -2012-02-18 13:00:00,5519.5,0.0,45.43 -2012-02-18 14:00:00,5511.2,0.0,45.69 -2012-02-18 15:00:00,5495.9,0.0,46.3 -2012-02-18 16:00:00,5526.8,0.0,43.87 -2012-02-18 17:00:00,5725.2,0.0,46.29 -2012-02-18 18:00:00,5866.5,0.0,46.14 -2012-02-18 19:00:00,5812.1,0.0022,40.82 -2012-02-18 20:00:00,5672.8,0.02,41.17 -2012-02-18 21:00:00,5521.1,0.0,41.32 -2012-02-18 22:00:00,5323.5,0.0,41.15 -2012-02-18 23:00:00,5051.1,0.0,39.67 -2012-02-19 00:00:00,4787.3,0.0,39.15 -2012-02-19 01:00:00,4562.5,0.0,38.15 -2012-02-19 02:00:00,4402.0,0.0,37.39 -2012-02-19 03:00:00,4310.4,0.0,37.24 -2012-02-19 04:00:00,4276.4,0.0,36.51 -2012-02-19 05:00:00,4323.2,0.0,36.42 -2012-02-19 06:00:00,4396.0,0.0,35.81 -2012-02-19 07:00:00,4518.3,0.0,35.11 -2012-02-19 08:00:00,4763.5,0.0,35.37 -2012-02-19 09:00:00,5013.3,0.0,36.93 -2012-02-19 10:00:00,5209.8,0.0,38.77 -2012-02-19 11:00:00,5329.6,0.0,39.08 -2012-02-19 12:00:00,5377.6,0.0,40.76 -2012-02-19 13:00:00,5375.8,0.0,42.64 -2012-02-19 14:00:00,5350.5,0.0,42.91 -2012-02-19 15:00:00,5338.4,0.0,43.02 -2012-02-19 16:00:00,5370.6,0.0,41.31 -2012-02-19 17:00:00,5567.5,0.0,43.38 -2012-02-19 18:00:00,5780.9,0.0,41.55 -2012-02-19 19:00:00,5731.8,0.0,41.2 -2012-02-19 20:00:00,5636.9,0.0,40.97 -2012-02-19 21:00:00,5506.1,0.0,40.71 -2012-02-19 22:00:00,5301.3,0.0,34.44 -2012-02-19 23:00:00,5028.9,0.0,37.2 -2012-02-20 00:00:00,4745.0,0.0,36.26 -2012-02-20 01:00:00,4538.6,0.0,35.43 -2012-02-20 02:00:00,4396.3,0.0,34.43 -2012-02-20 03:00:00,4337.6,0.0,34.34 -2012-02-20 04:00:00,4351.2,0.0,34.01 -2012-02-20 05:00:00,4486.3,0.0,33.16 -2012-02-20 06:00:00,4737.5,0.0,32.34 -2012-02-20 07:00:00,5015.8,0.0,31.6 -2012-02-20 08:00:00,5348.8,0.0,32.1 -2012-02-20 09:00:00,5639.7,0.0,33.0 -2012-02-20 10:00:00,5848.7,0.0,35.81 -2012-02-20 11:00:00,5940.5,0.0,35.93 -2012-02-20 12:00:00,5945.1,0.0,40.1 -2012-02-20 13:00:00,5903.6,0.0,42.36 -2012-02-20 14:00:00,5870.3,0.0,43.38 -2012-02-20 15:00:00,5847.3,0.0,45.53 -2012-02-20 16:00:00,5881.7,0.0,40.7 -2012-02-20 17:00:00,6038.1,0.0,43.47 -2012-02-20 18:00:00,6216.3,0.0,41.37 -2012-02-20 19:00:00,6139.4,0.0,40.2 -2012-02-20 20:00:00,6005.7,0.0,38.46 -2012-02-20 21:00:00,5825.3,0.0,37.28 -2012-02-20 22:00:00,5548.2,0.0,36.1 -2012-02-20 23:00:00,5169.9,0.0,36.03 -2012-02-21 00:00:00,4821.3,0.0,35.51 -2012-02-21 01:00:00,4587.1,0.0,34.99 -2012-02-21 02:00:00,4439.8,0.0,34.1 -2012-02-21 03:00:00,4380.6,0.0,33.59 -2012-02-21 04:00:00,4419.3,0.0,31.95 -2012-02-21 05:00:00,4666.8,0.0,32.41 -2012-02-21 06:00:00,5160.5,0.0,32.41 -2012-02-21 07:00:00,5671.3,0.0,32.54 -2012-02-21 08:00:00,6085.9,0.0,33.54 -2012-02-21 09:00:00,6323.9,0.0,36.36 -2012-02-21 10:00:00,6437.5,0.0,38.95 -2012-02-21 11:00:00,6464.3,0.0,42.3 -2012-02-21 12:00:00,6475.4,0.0,44.54 -2012-02-21 13:00:00,6500.5,0.0,43.76 -2012-02-21 14:00:00,6456.5,0.0,44.12 -2012-02-21 15:00:00,6468.4,0.0,44.28 -2012-02-21 16:00:00,6617.7,0.0,41.8 -2012-02-21 17:00:00,6755.4,0.0,44.19 -2012-02-21 18:00:00,6668.8,0.0,45.01 -2012-02-21 19:00:00,6481.5,0.0,45.17 -2012-02-21 20:00:00,6236.8,0.0,45.17 -2012-02-21 21:00:00,5985.3,0.0,45.41 -2012-02-21 22:00:00,5620.6,0.0,42.99 -2012-02-21 23:00:00,5174.8,0.0,45.44 -2012-02-22 00:00:00,4770.0,0.0,45.7 -2012-02-22 01:00:00,4501.4,0.0,45.8 -2012-02-22 02:00:00,4346.6,0.0,44.96 -2012-02-22 03:00:00,4282.8,0.0,45.05 -2012-02-22 04:00:00,4301.9,0.0,42.65 -2012-02-22 05:00:00,4552.9,0.0,44.94 -2012-02-22 06:00:00,5047.9,0.0,43.75 -2012-02-22 07:00:00,5545.7,0.0,43.71 -2012-02-22 08:00:00,5957.4,0.0,44.47 -2012-02-22 09:00:00,6217.6,0.0,46.89 -2012-02-22 10:00:00,6322.9,0.0,48.01 -2012-02-22 11:00:00,6346.7,0.0,51.6 -2012-02-22 12:00:00,6338.5,0.0,53.49 -2012-02-22 13:00:00,6345.9,0.0,53.65 -2012-02-22 14:00:00,6309.0,0.0,54.59 -2012-02-22 15:00:00,6281.3,0.0,54.86 -2012-02-22 16:00:00,6354.3,0.0,50.29 -2012-02-22 17:00:00,6461.4,0.0,52.53 -2012-02-22 18:00:00,6481.9,0.0,49.7 -2012-02-22 19:00:00,6313.2,0.0,48.61 -2012-02-22 20:00:00,6113.9,0.0,50.68 -2012-02-22 21:00:00,5875.7,0.0,50.44 -2012-02-22 22:00:00,5535.6,0.0,45.18 -2012-02-22 23:00:00,5096.3,0.0,48.61 -2012-02-23 00:00:00,4678.4,0.0,48.28 -2012-02-23 01:00:00,4419.4,0.0,47.76 -2012-02-23 02:00:00,4267.6,0.0,47.67 -2012-02-23 03:00:00,4209.4,0.0,48.58 -2012-02-23 04:00:00,4221.5,0.0,46.37 -2012-02-23 05:00:00,4468.2,0.0,48.57 -2012-02-23 06:00:00,4953.8,0.0,48.55 -2012-02-23 07:00:00,5462.9,0.0,48.34 -2012-02-23 08:00:00,5872.8,0.0,49.81 -2012-02-23 09:00:00,6125.7,0.0,51.89 -2012-02-23 10:00:00,6228.4,0.0,50.58 -2012-02-23 11:00:00,6263.2,0.0,55.87 -2012-02-23 12:00:00,6298.3,0.0,56.59 -2012-02-23 13:00:00,6283.7,0.0,56.19 -2012-02-23 14:00:00,6265.3,0.0,54.74 -2012-02-23 15:00:00,6264.6,0.0,54.09 -2012-02-23 16:00:00,6298.8,0.0,50.45 -2012-02-23 17:00:00,6424.7,0.0,52.57 -2012-02-23 18:00:00,6433.2,0.0,51.0 -2012-02-23 19:00:00,6272.2,0.0,49.82 -2012-02-23 20:00:00,6063.5,0.0,48.8 -2012-02-23 21:00:00,5822.0,0.0,47.96 -2012-02-23 22:00:00,5495.6,0.0,44.56 -2012-02-23 23:00:00,5074.7,0.0,46.62 -2012-02-24 00:00:00,4673.7,0.0,45.79 -2012-02-24 01:00:00,4411.5,0.0,45.12 -2012-02-24 02:00:00,4257.5,0.0,45.03 -2012-02-24 03:00:00,4219.1,0.0011,41.58 -2012-02-24 04:00:00,4255.0,0.0582,38.35 -2012-02-24 05:00:00,4503.1,0.0377,36.62 -2012-02-24 06:00:00,4988.7,0.1912,36.52 -2012-02-24 07:00:00,5548.7,0.0033,37.2 -2012-02-24 08:00:00,6022.3,0.0,37.63 -2012-02-24 09:00:00,6308.9,0.0,39.03 -2012-02-24 10:00:00,6472.3,0.0289,38.46 -2012-02-24 11:00:00,6553.9,0.009,39.1 -2012-02-24 12:00:00,6566.2,0.0,39.43 -2012-02-24 13:00:00,6561.7,0.0,40.94 -2012-02-24 14:00:00,6546.7,0.0,40.94 -2012-02-24 15:00:00,6544.8,0.0031,41.11 -2012-02-24 16:00:00,6622.3,0.002,42.41 -2012-02-24 17:00:00,6698.1,0.0031,42.48 -2012-02-24 18:00:00,6537.1,0.1131,43.09 -2012-02-24 19:00:00,6327.3,0.0718,43.26 -2012-02-24 20:00:00,6083.5,0.0542,42.18 -2012-02-24 21:00:00,5825.7,0.002,42.48 -2012-02-24 22:00:00,5540.2,0.0,45.14 -2012-02-24 23:00:00,5182.0,0.0,43.99 -2012-02-25 00:00:00,4816.5,0.0,44.57 -2012-02-25 01:00:00,4571.2,0.0,43.43 -2012-02-25 02:00:00,4414.4,0.0,42.34 -2012-02-25 03:00:00,4326.1,0.0,41.49 -2012-02-25 04:00:00,4312.3,0.0,41.07 -2012-02-25 05:00:00,4370.4,0.0,39.66 -2012-02-25 06:00:00,4518.1,0.0,39.4 -2012-02-25 07:00:00,4717.1,0.0,39.15 -2012-02-25 08:00:00,5011.6,0.0,39.15 -2012-02-25 09:00:00,5276.3,0.0,40.17 -2012-02-25 10:00:00,5489.4,0.0,43.06 -2012-02-25 11:00:00,5596.8,0.0,42.16 -2012-02-25 12:00:00,5642.7,0.0,43.01 -2012-02-25 13:00:00,5611.3,0.0,43.66 -2012-02-25 14:00:00,5593.9,0.0,42.6 -2012-02-25 15:00:00,5589.6,0.0,42.87 -2012-02-25 16:00:00,5622.4,0.0,43.5 -2012-02-25 17:00:00,5771.5,0.0,39.76 -2012-02-25 18:00:00,5990.7,0.0,40.17 -2012-02-25 19:00:00,5948.7,0.0,38.11 -2012-02-25 20:00:00,5819.1,0.0,37.76 -2012-02-25 21:00:00,5677.2,0.0,37.52 -2012-02-25 22:00:00,5481.0,0.0,35.76 -2012-02-25 23:00:00,5227.3,0.0,35.43 -2012-02-26 00:00:00,4926.9,0.0,34.59 -2012-02-26 01:00:00,4707.4,0.0,33.76 -2012-02-26 02:00:00,4542.3,0.0,33.43 -2012-02-26 03:00:00,4456.2,0.0,31.76 -2012-02-26 04:00:00,4428.9,0.0,31.34 -2012-02-26 05:00:00,4468.2,0.0,30.67 -2012-02-26 06:00:00,4540.0,0.0,30.34 -2012-02-26 07:00:00,4659.8,0.0,29.76 -2012-02-26 08:00:00,4896.5,0.0,30.51 -2012-02-26 09:00:00,5133.7,0.0,31.51 -2012-02-26 10:00:00,5336.5,0.0,35.17 -2012-02-26 11:00:00,5456.2,0.0,36.02 -2012-02-26 12:00:00,5495.0,0.0,38.67 -2012-02-26 13:00:00,5482.1,0.0,39.95 -2012-02-26 14:00:00,5452.1,0.0,41.28 -2012-02-26 15:00:00,5433.8,0.0,42.19 -2012-02-26 16:00:00,5474.2,0.0,41.88 -2012-02-26 17:00:00,5637.1,0.0,43.39 -2012-02-26 18:00:00,5923.5,0.0,41.78 -2012-02-26 19:00:00,5917.9,0.0,41.18 -2012-02-26 20:00:00,5811.1,0.0,40.19 -2012-02-26 21:00:00,5645.4,0.0,39.45 -2012-02-26 22:00:00,5386.2,0.0,36.47 -2012-02-26 23:00:00,5059.3,0.0,36.68 -2012-02-27 00:00:00,4716.0,0.0,37.07 -2012-02-27 01:00:00,4492.3,0.0,36.67 -2012-02-27 02:00:00,4351.1,0.0,36.42 -2012-02-27 03:00:00,4303.8,0.0,36.26 -2012-02-27 04:00:00,4353.3,0.0,30.4 -2012-02-27 05:00:00,4628.8,0.0,36.05 -2012-02-27 06:00:00,5186.2,0.0,36.69 -2012-02-27 07:00:00,5734.7,0.0,37.55 -2012-02-27 08:00:00,6088.4,0.0,39.13 -2012-02-27 09:00:00,6317.4,0.0,42.3 -2012-02-27 10:00:00,6412.2,0.0,44.65 -2012-02-27 11:00:00,6424.3,0.0,47.03 -2012-02-27 12:00:00,6421.9,0.0,50.14 -2012-02-27 13:00:00,6440.3,0.0,51.41 -2012-02-27 14:00:00,6350.2,0.0,54.49 -2012-02-27 15:00:00,6361.6,0.0,54.54 -2012-02-27 16:00:00,6463.5,0.0,48.02 -2012-02-27 17:00:00,6548.4,0.0,52.62 -2012-02-27 18:00:00,6567.6,0.0,53.65 -2012-02-27 19:00:00,6423.7,0.0,52.2 -2012-02-27 20:00:00,6216.6,0.0,50.65 -2012-02-27 21:00:00,5940.5,0.0,51.73 -2012-02-27 22:00:00,5571.9,0.0,46.76 -2012-02-27 23:00:00,5105.8,0.0,51.06 -2012-02-28 00:00:00,4688.8,0.0,50.48 -2012-02-28 01:00:00,4435.4,0.0,47.94 -2012-02-28 02:00:00,4311.8,0.0,45.85 -2012-02-28 03:00:00,4274.8,0.0,42.41 -2012-02-28 04:00:00,4310.6,0.0,42.22 -2012-02-28 05:00:00,4577.3,0.0,40.34 -2012-02-28 06:00:00,5136.0,0.0,40.34 -2012-02-28 07:00:00,5699.5,0.0,40.24 -2012-02-28 08:00:00,6059.7,0.0,40.34 -2012-02-28 09:00:00,6260.4,0.0,41.45 -2012-02-28 10:00:00,6367.2,0.0,43.25 -2012-02-28 11:00:00,6398.9,0.0,43.02 -2012-02-28 12:00:00,6401.1,0.0,44.96 -2012-02-28 13:00:00,6382.2,0.0,46.52 -2012-02-28 14:00:00,6346.8,0.0,47.79 -2012-02-28 15:00:00,6344.9,0.0,48.13 -2012-02-28 16:00:00,6403.3,0.0,47.14 -2012-02-28 17:00:00,6500.5,0.0,47.37 -2012-02-28 18:00:00,6560.7,0.0,46.3 -2012-02-28 19:00:00,6417.8,0.0,45.3 -2012-02-28 20:00:00,6211.3,0.0,44.37 -2012-02-28 21:00:00,5958.5,0.0,42.92 -2012-02-28 22:00:00,5588.3,0.0,35.69 -2012-02-28 23:00:00,5116.4,0.0,41.04 -2012-02-29 00:00:00,4708.5,0.0,41.03 -2012-02-29 01:00:00,4453.8,0.0,40.78 -2012-02-29 02:00:00,4316.4,0.0,40.13 -2012-02-29 03:00:00,4271.9,0.0,39.13 -2012-02-29 04:00:00,4318.3,0.0,34.11 -2012-02-29 05:00:00,4585.3,0.0,38.03 -2012-02-29 06:00:00,5146.5,0.0,37.77 -2012-02-29 07:00:00,5735.7,0.0,37.73 -2012-02-29 08:00:00,6102.6,0.0,39.21 -2012-02-29 09:00:00,6362.9,0.0,40.96 -2012-02-29 10:00:00,6522.8,0.0,41.95 -2012-02-29 11:00:00,6584.2,0.0,41.29 -2012-02-29 12:00:00,6629.3,0.0159,38.55 -2012-02-29 13:00:00,6661.1,0.063,39.98 -2012-02-29 14:00:00,6670.1,0.0191,39.96 -2012-02-29 15:00:00,6704.2,0.058,39.78 -2012-02-29 16:00:00,6786.2,0.03,39.7 -2012-02-29 17:00:00,6876.5,0.0331,39.79 -2012-02-29 18:00:00,6819.0,0.01,40.77 -2012-02-29 19:00:00,6581.2,0.01,39.79 -2012-02-29 20:00:00,6342.0,0.0031,40.1 -2012-02-29 21:00:00,6058.6,0.0,39.35 -2012-02-29 22:00:00,5670.2,0.0031,40.17 -2012-02-29 23:00:00,5200.0,0.0148,39.45 -2012-03-01 00:00:00,4796.8,0.012,40.02 -2012-03-01 01:00:00,4543.0,0.0527,40.2 -2012-03-01 02:00:00,4400.7,0.0,38.3 -2012-03-01 03:00:00,4337.7,0.0133,37.54 -2012-03-01 04:00:00,4371.6,0.0159,40.75 -2012-03-01 05:00:00,4624.9,0.0,38.35 -2012-03-01 06:00:00,5199.2,0.01,38.19 -2012-03-01 07:00:00,5808.3,0.0,38.36 -2012-03-01 08:00:00,6218.1,0.0,39.03 -2012-03-01 09:00:00,6439.9,0.0,38.63 -2012-03-01 10:00:00,6546.2,0.0122,41.57 -2012-03-01 11:00:00,6577.8,0.009,40.11 -2012-03-01 12:00:00,6599.4,0.0,40.61 -2012-03-01 13:00:00,6606.6,0.0,40.29 -2012-03-01 14:00:00,6583.6,0.0,40.53 -2012-03-01 15:00:00,6589.8,0.0,40.53 -2012-03-01 16:00:00,6646.8,0.0,42.66 -2012-03-01 17:00:00,6703.4,0.0,39.88 -2012-03-01 18:00:00,6676.4,0.0,39.71 -2012-03-01 19:00:00,6514.5,0.0,39.43 -2012-03-01 20:00:00,6299.5,0.0,39.37 -2012-03-01 21:00:00,6046.5,0.0,39.27 -2012-03-01 22:00:00,5675.4,0.0,37.88 -2012-03-01 23:00:00,5215.4,0.0,37.64 -2012-03-02 00:00:00,4818.9,0.0,36.98 -2012-03-02 01:00:00,4569.3,0.0,36.04 -2012-03-02 02:00:00,4426.7,0.0,35.31 -2012-03-02 03:00:00,4366.7,0.0,35.12 -2012-03-02 04:00:00,4395.6,0.0,34.7 -2012-03-02 05:00:00,4655.4,0.0,33.46 -2012-03-02 06:00:00,5198.0,0.0,33.19 -2012-03-02 07:00:00,5795.7,0.0,33.12 -2012-03-02 08:00:00,6187.6,0.0,33.46 -2012-03-02 09:00:00,6445.3,0.0,34.7 -2012-03-02 10:00:00,6542.3,0.0,37.11 -2012-03-02 11:00:00,6586.9,0.0,36.79 -2012-03-02 12:00:00,6594.5,0.0,37.12 -2012-03-02 13:00:00,6581.9,0.0,38.1 -2012-03-02 14:00:00,6538.3,0.0,38.36 -2012-03-02 15:00:00,6573.2,0.0,40.27 -2012-03-02 16:00:00,6644.3,0.0,38.94 -2012-03-02 17:00:00,6710.4,0.0,40.35 -2012-03-02 18:00:00,6616.8,0.0,40.35 -2012-03-02 19:00:00,6429.0,0.0,41.3 -2012-03-02 20:00:00,6195.1,0.0,42.19 -2012-03-02 21:00:00,5959.7,0.0,42.1 -2012-03-02 22:00:00,5669.9,0.0444,40.46 -2012-03-02 23:00:00,5285.4,0.0224,40.93 -2012-03-03 00:00:00,4907.9,0.0636,42.6 -2012-03-03 01:00:00,4630.1,0.06,43.11 -2012-03-03 02:00:00,4436.3,0.01,44.08 -2012-03-03 03:00:00,4342.6,0.0,44.34 -2012-03-03 04:00:00,4299.2,0.0,44.67 -2012-03-03 05:00:00,4367.2,0.0,44.89 -2012-03-03 06:00:00,4509.6,0.0,44.98 -2012-03-03 07:00:00,4728.9,0.0011,44.15 -2012-03-03 08:00:00,5073.6,0.0031,44.45 -2012-03-03 09:00:00,5376.1,0.0159,45.37 -2012-03-03 10:00:00,5591.1,0.0164,46.62 -2012-03-03 11:00:00,5660.6,0.011,47.71 -2012-03-03 12:00:00,5637.5,0.0,49.61 -2012-03-03 13:00:00,5590.6,0.0,51.74 -2012-03-03 14:00:00,5527.2,0.0,52.19 -2012-03-03 15:00:00,5457.0,0.0,53.92 -2012-03-03 16:00:00,5451.4,0.0,50.6 -2012-03-03 17:00:00,5539.7,0.0,55.74 -2012-03-03 18:00:00,5781.7,0.0,54.26 -2012-03-03 19:00:00,5779.5,0.0,53.98 -2012-03-03 20:00:00,5658.7,0.0,53.06 -2012-03-03 21:00:00,5518.3,0.0,51.04 -2012-03-03 22:00:00,5303.0,0.0,48.22 -2012-03-03 23:00:00,5050.2,0.0,47.06 -2012-03-04 00:00:00,4744.0,0.0,45.43 -2012-03-04 01:00:00,4497.4,0.0,44.41 -2012-03-04 02:00:00,4329.8,0.0,43.24 -2012-03-04 03:00:00,4223.4,0.0,42.15 -2012-03-04 04:00:00,4184.1,0.0,41.91 -2012-03-04 05:00:00,4244.4,0.0,41.15 -2012-03-04 06:00:00,4323.5,0.0,40.34 -2012-03-04 07:00:00,4471.4,0.0,39.34 -2012-03-04 08:00:00,4762.6,0.0,39.34 -2012-03-04 09:00:00,5037.0,0.0,40.0 -2012-03-04 10:00:00,5266.2,0.0,40.74 -2012-03-04 11:00:00,5389.3,0.0,40.66 -2012-03-04 12:00:00,5411.9,0.0,41.59 -2012-03-04 13:00:00,5411.5,0.0,42.67 -2012-03-04 14:00:00,5414.8,0.0,42.84 -2012-03-04 15:00:00,5437.7,0.0,43.35 -2012-03-04 16:00:00,5509.7,0.0,40.87 -2012-03-04 17:00:00,5638.2,0.0,43.0 -2012-03-04 18:00:00,5903.0,0.0,41.51 -2012-03-04 19:00:00,5891.5,0.0,41.24 -2012-03-04 20:00:00,5805.4,0.0,40.48 -2012-03-04 21:00:00,5675.2,0.0,39.03 -2012-03-04 22:00:00,5389.5,0.0,34.85 -2012-03-04 23:00:00,5028.3,0.0,36.4 -2012-03-05 00:00:00,4707.1,0.0,36.34 -2012-03-05 01:00:00,4485.9,0.0,35.4 -2012-03-05 02:00:00,4358.4,0.0,34.31 -2012-03-05 03:00:00,4315.8,0.0,33.5 -2012-03-05 04:00:00,4379.7,0.0,33.4 -2012-03-05 05:00:00,4664.2,0.0,32.67 -2012-03-05 06:00:00,5191.1,0.0,32.41 -2012-03-05 07:00:00,5762.1,0.0,32.24 -2012-03-05 08:00:00,6155.8,0.0,32.43 -2012-03-05 09:00:00,6362.5,0.0,33.52 -2012-03-05 10:00:00,6465.0,0.0,37.58 -2012-03-05 11:00:00,6499.4,0.0,37.19 -2012-03-05 12:00:00,6503.3,0.0,40.18 -2012-03-05 13:00:00,6483.7,0.0,41.6 -2012-03-05 14:00:00,6426.1,0.0,42.19 -2012-03-05 15:00:00,6422.2,0.0,43.28 -2012-03-05 16:00:00,6490.8,0.0,40.15 -2012-03-05 17:00:00,6581.1,0.0,41.43 -2012-03-05 18:00:00,6693.9,0.0,39.34 -2012-03-05 19:00:00,6608.0,0.0,36.5 -2012-03-05 20:00:00,6409.6,0.0,34.67 -2012-03-05 21:00:00,6161.7,0.0,32.74 -2012-03-05 22:00:00,5837.5,0.0,33.03 -2012-03-05 23:00:00,5364.9,0.0,30.22 -2012-03-06 00:00:00,4967.6,0.0,28.74 -2012-03-06 01:00:00,4714.0,0.0,28.24 -2012-03-06 02:00:00,4566.9,0.0,27.4 -2012-03-06 03:00:00,4514.1,0.0,26.5 -2012-03-06 04:00:00,4557.5,0.0,27.72 -2012-03-06 05:00:00,4832.5,0.0,26.4 -2012-03-06 06:00:00,5370.2,0.0,26.24 -2012-03-06 07:00:00,5934.0,0.0,26.34 -2012-03-06 08:00:00,6327.1,0.0,27.43 -2012-03-06 09:00:00,6533.1,0.0,29.35 -2012-03-06 10:00:00,6612.1,0.0,30.2 -2012-03-06 11:00:00,6623.4,0.0,33.95 -2012-03-06 12:00:00,6599.6,0.0,36.66 -2012-03-06 13:00:00,6566.3,0.0,38.75 -2012-03-06 14:00:00,6509.4,0.0,41.34 -2012-03-06 15:00:00,6511.6,0.0,42.19 -2012-03-06 16:00:00,6567.3,0.0,38.59 -2012-03-06 17:00:00,6637.1,0.0,40.2 -2012-03-06 18:00:00,6714.7,0.0,38.45 -2012-03-06 19:00:00,6579.5,0.0,39.1 -2012-03-06 20:00:00,6376.8,0.0,39.91 -2012-03-06 21:00:00,6121.6,0.0,40.56 -2012-03-06 22:00:00,5737.6,0.0,35.97 -2012-03-06 23:00:00,5277.5,0.0,39.72 -2012-03-07 00:00:00,4841.5,0.0,37.98 -2012-03-07 01:00:00,4589.8,0.0,37.73 -2012-03-07 02:00:00,4441.3,0.0,37.64 -2012-03-07 03:00:00,4376.9,0.0,38.47 -2012-03-07 04:00:00,4410.2,0.0,38.54 -2012-03-07 05:00:00,4678.2,0.0,38.54 -2012-03-07 06:00:00,5208.7,0.0,37.88 -2012-03-07 07:00:00,5771.6,0.0,38.36 -2012-03-07 08:00:00,6134.3,0.0,40.23 -2012-03-07 09:00:00,6343.6,0.0,41.57 -2012-03-07 10:00:00,6412.7,0.0,45.38 -2012-03-07 11:00:00,6421.9,0.0,48.67 -2012-03-07 12:00:00,6408.2,0.0,52.24 -2012-03-07 13:00:00,6386.8,0.0,56.34 -2012-03-07 14:00:00,6347.4,0.0,58.09 -2012-03-07 15:00:00,6345.7,0.0,59.39 -2012-03-07 16:00:00,6382.4,0.0,53.0 -2012-03-07 17:00:00,6431.1,0.0,59.94 -2012-03-07 18:00:00,6478.3,0.0,58.11 -2012-03-07 19:00:00,6354.3,0.0,57.14 -2012-03-07 20:00:00,6166.0,0.0,56.56 -2012-03-07 21:00:00,5884.7,0.0,55.48 -2012-03-07 22:00:00,5537.9,0.0,48.66 -2012-03-07 23:00:00,5073.7,0.0,54.62 -2012-03-08 00:00:00,4656.9,0.0,53.78 -2012-03-08 01:00:00,4390.3,0.0,53.38 -2012-03-08 02:00:00,4246.5,0.0,52.76 -2012-03-08 03:00:00,4186.7,0.0,52.95 -2012-03-08 04:00:00,4221.7,0.0,50.2 -2012-03-08 05:00:00,4459.8,0.0,52.61 -2012-03-08 06:00:00,4970.7,0.0,52.93 -2012-03-08 07:00:00,5548.8,0.0,53.19 -2012-03-08 08:00:00,5955.8,0.0,54.54 -2012-03-08 09:00:00,6180.6,0.0,56.46 -2012-03-08 10:00:00,6279.7,0.0,58.6 -2012-03-08 11:00:00,6334.4,0.0,62.14 -2012-03-08 12:00:00,6346.5,0.0,65.01 -2012-03-08 13:00:00,6352.8,0.0,66.74 -2012-03-08 14:00:00,6336.1,0.0,68.54 -2012-03-08 15:00:00,6345.2,0.0,68.68 -2012-03-08 16:00:00,6364.9,0.0,68.96 -2012-03-08 17:00:00,6424.4,0.0,67.29 -2012-03-08 18:00:00,6460.2,0.0,65.4 -2012-03-08 19:00:00,6325.2,0.0,63.45 -2012-03-08 20:00:00,6096.5,0.0,63.19 -2012-03-08 21:00:00,5808.1,0.0,61.34 -2012-03-08 22:00:00,5457.0,0.0,53.12 -2012-03-08 23:00:00,4999.7,0.0,61.1 -2012-03-09 00:00:00,4592.6,0.0,62.17 -2012-03-09 01:00:00,4348.0,0.0,60.55 -2012-03-09 02:00:00,4183.6,0.02,46.82 -2012-03-09 03:00:00,4109.2,0.0,45.84 -2012-03-09 04:00:00,4141.6,0.0,48.12 -2012-03-09 05:00:00,4408.1,0.0,43.1 -2012-03-09 06:00:00,4963.9,0.0,42.1 -2012-03-09 07:00:00,5568.8,0.0,41.34 -2012-03-09 08:00:00,5964.0,0.0,41.27 -2012-03-09 09:00:00,6212.2,0.0,41.76 -2012-03-09 10:00:00,6314.3,0.0,41.19 -2012-03-09 11:00:00,6358.1,0.0,42.6 -2012-03-09 12:00:00,6345.4,0.0,43.02 -2012-03-09 13:00:00,6330.1,0.0,46.48 -2012-03-09 14:00:00,6284.7,0.0,47.68 -2012-03-09 15:00:00,6287.2,0.0,49.44 -2012-03-09 16:00:00,6320.4,0.0,48.87 -2012-03-09 17:00:00,6382.9,0.0,47.94 -2012-03-09 18:00:00,6420.7,0.0,45.58 -2012-03-09 19:00:00,6285.6,0.0,43.24 -2012-03-09 20:00:00,6067.4,0.0,42.15 -2012-03-09 21:00:00,5847.8,0.0,41.24 -2012-03-09 22:00:00,5533.7,0.0,37.95 -2012-03-09 23:00:00,5168.4,0.0,37.51 -2012-03-10 00:00:00,4812.0,0.0,37.18 -2012-03-10 01:00:00,4565.4,0.0,35.51 -2012-03-10 02:00:00,4430.3,0.0,33.74 -2012-03-10 03:00:00,4359.5,0.0,32.57 -2012-03-10 04:00:00,4340.8,0.0,33.8 -2012-03-10 05:00:00,4422.0,0.0,30.38 -2012-03-10 06:00:00,4566.5,0.0,29.57 -2012-03-10 07:00:00,4834.5,0.0,29.34 -2012-03-10 08:00:00,5171.2,0.0,29.6 -2012-03-10 09:00:00,5471.9,0.0,31.26 -2012-03-10 10:00:00,5613.9,0.0,33.67 -2012-03-10 11:00:00,5678.1,0.0,36.23 -2012-03-10 12:00:00,5670.8,0.0,37.02 -2012-03-10 13:00:00,5618.7,0.0,39.43 -2012-03-10 14:00:00,5548.8,0.0,40.66 -2012-03-10 15:00:00,5501.4,0.0,41.08 -2012-03-10 16:00:00,5511.9,0.0,39.94 -2012-03-10 17:00:00,5608.3,0.0,41.36 -2012-03-10 18:00:00,5857.7,0.0,40.69 -2012-03-10 19:00:00,5861.4,0.0,40.09 -2012-03-10 20:00:00,5737.8,0.0,39.19 -2012-03-10 21:00:00,5562.7,0.0,39.19 -2012-03-10 22:00:00,5340.5,0.0,33.84 -2012-03-10 23:00:00,5067.7,0.0,38.66 -2012-03-11 00:00:00,4775.6,0.0,38.88 -2012-03-11 01:00:00,4540.3,0.0,37.78 -2012-03-11 03:00:00,4383.6,0.0,37.46 -2012-03-11 04:00:00,4296.6,0.0,31.71 -2012-03-11 05:00:00,4294.2,0.0,37.46 -2012-03-11 06:00:00,4382.7,0.0,36.31 -2012-03-11 07:00:00,4476.3,0.0,36.31 -2012-03-11 08:00:00,4673.5,0.0,36.3 -2012-03-11 09:00:00,4919.6,0.0,38.32 -2012-03-11 10:00:00,5144.4,0.0,40.31 -2012-03-11 11:00:00,5279.0,0.0,44.02 -2012-03-11 12:00:00,5334.2,0.0,47.76 -2012-03-11 13:00:00,5336.9,0.0,50.37 -2012-03-11 14:00:00,5309.1,0.0,54.26 -2012-03-11 15:00:00,5266.1,0.0,56.36 -2012-03-11 16:00:00,5253.1,0.0,58.41 -2012-03-11 17:00:00,5277.0,0.0,50.82 -2012-03-11 18:00:00,5360.9,0.0,59.02 -2012-03-11 19:00:00,5627.8,0.0,56.76 -2012-03-11 20:00:00,5668.7,0.0,55.42 -2012-03-11 21:00:00,5542.5,0.0,54.3 -2012-03-11 22:00:00,5292.3,0.0,52.69 -2012-03-11 23:00:00,4928.8,0.0,46.7 -2012-03-12 00:00:00,4578.0,0.0,51.5 -2012-03-12 01:00:00,4345.7,0.0,50.1 -2012-03-12 02:00:00,4195.7,0.0,49.13 -2012-03-12 03:00:00,4131.4,0.0,48.79 -2012-03-12 04:00:00,4159.2,0.0,48.33 -2012-03-12 05:00:00,4390.9,0.0,44.99 -2012-03-12 06:00:00,4971.7,0.0,47.09 -2012-03-12 07:00:00,5571.5,0.0,46.93 -2012-03-12 08:00:00,5930.6,0.0,46.84 -2012-03-12 09:00:00,6163.5,0.0,49.11 -2012-03-12 10:00:00,6259.4,0.0,50.88 -2012-03-12 11:00:00,6296.8,0.0,52.92 -2012-03-12 12:00:00,6311.7,0.0,59.21 -2012-03-12 13:00:00,6331.2,0.0,63.52 -2012-03-12 14:00:00,6308.2,0.0,66.89 -2012-03-12 15:00:00,6312.1,0.0,68.75 -2012-03-12 16:00:00,6317.8,0.0,65.15 -2012-03-12 17:00:00,6279.3,0.0,55.48 -2012-03-12 18:00:00,6144.3,0.0,62.49 -2012-03-12 19:00:00,6219.7,0.0,60.13 -2012-03-12 20:00:00,6086.1,0.0,60.29 -2012-03-12 21:00:00,5838.3,0.0,60.8 -2012-03-12 22:00:00,5496.8,0.0,59.26 -2012-03-12 23:00:00,5023.9,0.0,60.19 -2012-03-13 00:00:00,4587.9,0.0,59.29 -2012-03-13 01:00:00,4317.2,0.0,58.29 -2012-03-13 02:00:00,4157.5,0.0,58.53 -2012-03-13 03:00:00,4083.0,0.0,56.88 -2012-03-13 04:00:00,4101.8,0.0,57.54 -2012-03-13 05:00:00,4334.3,0.0342,48.63 -2012-03-13 06:00:00,4913.2,0.0089,54.88 -2012-03-13 07:00:00,5561.6,0.0,54.78 -2012-03-13 08:00:00,5980.1,0.0,55.01 -2012-03-13 09:00:00,6202.3,0.0,55.54 -2012-03-13 10:00:00,6296.1,0.0,56.54 -2012-03-13 11:00:00,6355.9,0.0,51.68 -2012-03-13 12:00:00,6394.9,0.0,60.51 -2012-03-13 13:00:00,6439.3,0.0,63.45 -2012-03-13 14:00:00,6458.0,0.0,67.12 -2012-03-13 15:00:00,6493.6,0.0,70.38 -2012-03-13 16:00:00,6522.2,0.0,70.81 -2012-03-13 17:00:00,6495.5,0.0,71.87 -2012-03-13 18:00:00,6292.5,0.0,71.19 -2012-03-13 19:00:00,6340.4,0.0,70.09 -2012-03-13 20:00:00,6180.2,0.0,68.63 -2012-03-13 21:00:00,5934.1,0.0,68.06 -2012-03-13 22:00:00,5575.7,0.0,67.19 -2012-03-13 23:00:00,5121.3,0.0,66.18 -2012-03-14 00:00:00,4671.1,0.0,65.48 -2012-03-14 01:00:00,4380.7,0.0,64.85 -2012-03-14 02:00:00,4213.9,0.0,63.79 -2012-03-14 03:00:00,4135.6,0.0,63.06 -2012-03-14 04:00:00,4123.6,0.0,60.47 -2012-03-14 05:00:00,4340.8,0.0,52.59 -2012-03-14 06:00:00,4933.1,0.0,58.86 -2012-03-14 07:00:00,5536.9,0.0,57.96 -2012-03-14 08:00:00,5921.0,0.0,57.63 -2012-03-14 09:00:00,6161.9,0.0,58.58 -2012-03-14 10:00:00,6292.1,0.0,60.49 -2012-03-14 11:00:00,6352.1,0.0,61.72 -2012-03-14 12:00:00,6363.2,0.0,64.06 -2012-03-14 13:00:00,6398.8,0.0,64.93 -2012-03-14 14:00:00,6404.0,0.0,66.65 -2012-03-14 15:00:00,6401.4,0.0,68.64 -2012-03-14 16:00:00,6423.0,0.0,68.95 -2012-03-14 17:00:00,6383.3,0.0,68.43 -2012-03-14 18:00:00,6163.8,0.0,67.16 -2012-03-14 19:00:00,6183.0,0.0,66.5 -2012-03-14 20:00:00,6063.1,0.0,64.21 -2012-03-14 21:00:00,5820.9,0.0,63.69 -2012-03-14 22:00:00,5477.7,0.0,61.26 -2012-03-14 23:00:00,5009.2,0.0,59.42 -2012-03-15 00:00:00,4571.5,0.0,55.93 -2012-03-15 01:00:00,4279.3,0.0,49.47 -2012-03-15 02:00:00,4121.7,0.0,47.57 -2012-03-15 03:00:00,4056.3,0.0,46.08 -2012-03-15 04:00:00,4069.8,0.0,44.46 -2012-03-15 05:00:00,4312.8,0.0,42.47 -2012-03-15 06:00:00,4911.4,0.0,44.1 -2012-03-15 07:00:00,5549.1,0.0,44.27 -2012-03-15 08:00:00,5955.6,0.0,44.01 -2012-03-15 09:00:00,6199.3,0.0,45.03 -2012-03-15 10:00:00,6296.8,0.0,45.18 -2012-03-15 11:00:00,6356.5,0.0,46.51 -2012-03-15 12:00:00,6350.8,0.0,47.26 -2012-03-15 13:00:00,6344.9,0.0,48.03 -2012-03-15 14:00:00,6324.7,0.0,48.27 -2012-03-15 15:00:00,6314.5,0.0,49.11 -2012-03-15 16:00:00,6352.7,0.0,49.77 -2012-03-15 17:00:00,6358.8,0.0,44.24 -2012-03-15 18:00:00,6275.0,0.0,47.19 -2012-03-15 19:00:00,6285.3,0.0,46.18 -2012-03-15 20:00:00,6113.4,0.0,45.93 -2012-03-15 21:00:00,5870.8,0.0,45.02 -2012-03-15 22:00:00,5518.9,0.0,44.36 -2012-03-15 23:00:00,5072.9,0.0,40.49 -2012-03-16 00:00:00,4649.1,0.0,43.93 -2012-03-16 01:00:00,4372.0,0.0,44.02 -2012-03-16 02:00:00,4213.3,0.0,43.36 -2012-03-16 03:00:00,4148.6,0.0,43.36 -2012-03-16 04:00:00,4160.1,0.0,43.19 -2012-03-16 05:00:00,4410.0,0.0041,39.17 -2012-03-16 06:00:00,4991.8,0.0189,43.12 -2012-03-16 07:00:00,5610.2,0.0,43.29 -2012-03-16 08:00:00,6010.5,0.0,43.19 -2012-03-16 09:00:00,6269.7,0.0,43.1 -2012-03-16 10:00:00,6395.1,0.0,43.76 -2012-03-16 11:00:00,6446.3,0.0069,43.85 -2012-03-16 12:00:00,6459.6,0.002,44.19 -2012-03-16 13:00:00,6441.1,0.0,44.62 -2012-03-16 14:00:00,6373.9,0.0,45.46 -2012-03-16 15:00:00,6350.0,0.0,47.12 -2012-03-16 16:00:00,6346.7,0.0,48.69 -2012-03-16 17:00:00,6299.7,0.0,43.69 -2012-03-16 18:00:00,6141.1,0.0,49.05 -2012-03-16 19:00:00,6150.0,0.0,49.44 -2012-03-16 20:00:00,6029.5,0.0,49.45 -2012-03-16 21:00:00,5804.1,0.0,49.14 -2012-03-16 22:00:00,5519.2,0.0,48.71 -2012-03-16 23:00:00,5144.7,0.0,43.86 -2012-03-17 00:00:00,4746.1,0.0,48.1 -2012-03-17 01:00:00,4465.8,0.0,48.35 -2012-03-17 02:00:00,4291.8,0.0,48.11 -2012-03-17 03:00:00,4191.1,0.0,46.97 -2012-03-17 04:00:00,4156.7,0.0,45.38 -2012-03-17 05:00:00,4218.9,0.0,43.64 -2012-03-17 06:00:00,4388.8,0.0,45.53 -2012-03-17 07:00:00,4609.2,0.0,45.61 -2012-03-17 08:00:00,4914.5,0.0,46.45 -2012-03-17 09:00:00,5186.2,0.0,49.78 -2012-03-17 10:00:00,5369.4,0.0,52.84 -2012-03-17 11:00:00,5456.1,0.0,49.29 -2012-03-17 12:00:00,5485.0,0.0,57.72 -2012-03-17 13:00:00,5438.6,0.0,58.15 -2012-03-17 14:00:00,5388.7,0.0,57.97 -2012-03-17 15:00:00,5356.9,0.0,59.13 -2012-03-17 16:00:00,5315.3,0.0,58.25 -2012-03-17 17:00:00,5302.2,0.0,51.92 -2012-03-17 18:00:00,5330.7,0.0,54.38 -2012-03-17 19:00:00,5534.6,0.0,51.75 -2012-03-17 20:00:00,5563.5,0.0,50.35 -2012-03-17 21:00:00,5426.5,0.0,48.42 -2012-03-17 22:00:00,5209.2,0.0,47.65 -2012-03-17 23:00:00,4933.6,0.0,47.26 -2012-03-18 00:00:00,4631.2,0.0,46.74 -2012-03-18 01:00:00,4376.5,0.0,46.74 -2012-03-18 02:00:00,4206.4,0.0,46.9 -2012-03-18 03:00:00,4100.7,0.0,46.73 -2012-03-18 04:00:00,4050.9,0.0,46.66 -2012-03-18 05:00:00,4080.7,0.0,42.82 -2012-03-18 06:00:00,4188.0,0.0,46.17 -2012-03-18 07:00:00,4312.1,0.0,46.26 -2012-03-18 08:00:00,4573.6,0.0,47.01 -2012-03-18 09:00:00,4845.6,0.0,47.07 -2012-03-18 10:00:00,5053.2,0.0,47.91 -2012-03-18 11:00:00,5183.9,0.0,48.88 -2012-03-18 12:00:00,5237.7,0.0,51.49 -2012-03-18 13:00:00,5234.4,0.0,53.74 -2012-03-18 14:00:00,5219.4,0.0,56.38 -2012-03-18 15:00:00,5202.5,0.0,59.37 -2012-03-18 16:00:00,5202.3,0.0,61.11 -2012-03-18 17:00:00,5226.1,0.0,61.12 -2012-03-18 18:00:00,5293.5,0.0,60.71 -2012-03-18 19:00:00,5536.0,0.0,55.16 -2012-03-18 20:00:00,5574.6,0.0,52.76 -2012-03-18 21:00:00,5443.1,0.0,51.36 -2012-03-18 22:00:00,5187.1,0.0,51.64 -2012-03-18 23:00:00,4820.1,0.0,46.58 -2012-03-19 00:00:00,4476.5,0.0,51.17 -2012-03-19 01:00:00,4253.4,0.0,54.78 -2012-03-19 02:00:00,4114.1,0.0,55.51 -2012-03-19 03:00:00,4055.0,0.0,54.99 -2012-03-19 04:00:00,4080.3,0.0,54.23 -2012-03-19 05:00:00,4334.4,0.0,46.99 -2012-03-19 06:00:00,4932.2,0.0,54.13 -2012-03-19 07:00:00,5505.9,0.0,54.28 -2012-03-19 08:00:00,5899.6,0.0,54.67 -2012-03-19 09:00:00,6176.1,0.0,57.04 -2012-03-19 10:00:00,6316.9,0.0,60.61 -2012-03-19 11:00:00,6399.3,0.0,59.45 -2012-03-19 12:00:00,6450.5,0.0,67.48 -2012-03-19 13:00:00,6493.0,0.0,70.05 -2012-03-19 14:00:00,6490.4,0.0,71.02 -2012-03-19 15:00:00,6497.4,0.0,69.83 -2012-03-19 16:00:00,6505.4,0.0,69.84 -2012-03-19 17:00:00,6417.2,0.0,59.91 -2012-03-19 18:00:00,6189.3,0.0,67.69 -2012-03-19 19:00:00,6223.9,0.0,66.02 -2012-03-19 20:00:00,6103.9,0.0,63.74 -2012-03-19 21:00:00,5847.3,0.0,62.27 -2012-03-19 22:00:00,5497.4,0.0,62.25 -2012-03-19 23:00:00,5015.9,0.0,61.65 -2012-03-20 00:00:00,4585.5,0.0,60.22 -2012-03-20 01:00:00,4319.2,0.0,59.77 -2012-03-20 02:00:00,4165.8,0.0,57.97 -2012-03-20 03:00:00,4095.7,0.0,56.77 -2012-03-20 04:00:00,4112.8,0.0,56.22 -2012-03-20 05:00:00,4346.0,0.0,56.09 -2012-03-20 06:00:00,4953.8,0.0,55.57 -2012-03-20 07:00:00,5561.6,0.0,54.43 -2012-03-20 08:00:00,5988.0,0.0,55.38 -2012-03-20 09:00:00,6226.4,0.0,56.45 -2012-03-20 10:00:00,6382.2,0.0,58.61 -2012-03-20 11:00:00,6484.4,0.0,60.45 -2012-03-20 12:00:00,6560.6,0.0,64.19 -2012-03-20 13:00:00,6619.5,0.0,67.29 -2012-03-20 14:00:00,6623.2,0.0,68.45 -2012-03-20 15:00:00,6650.7,0.0,68.88 -2012-03-20 16:00:00,6671.2,0.0,68.55 -2012-03-20 17:00:00,6616.7,0.0,70.22 -2012-03-20 18:00:00,6332.7,0.0,68.05 -2012-03-20 19:00:00,6331.4,0.0,65.94 -2012-03-20 20:00:00,6212.9,0.0,61.15 -2012-03-20 21:00:00,5927.2,0.0,61.4 -2012-03-20 22:00:00,5559.8,0.0,60.2 -2012-03-20 23:00:00,5084.8,0.0,60.2 -2012-03-21 00:00:00,4631.6,0.0,59.89 -2012-03-21 01:00:00,4363.7,0.0,59.11 -2012-03-21 02:00:00,4214.3,0.0,58.48 -2012-03-21 03:00:00,4145.9,0.0,58.4 -2012-03-21 04:00:00,4162.1,0.0,58.09 -2012-03-21 05:00:00,4392.4,0.0,57.29 -2012-03-21 06:00:00,4995.6,0.0,57.05 -2012-03-21 07:00:00,5648.1,0.0,56.86 -2012-03-21 08:00:00,6057.0,0.0,56.41 -2012-03-21 09:00:00,6316.0,0.0,56.96 -2012-03-21 10:00:00,6418.1,0.0,56.88 -2012-03-21 11:00:00,6473.1,0.0,57.97 -2012-03-21 12:00:00,6518.3,0.0,60.78 -2012-03-21 13:00:00,6542.6,0.0,62.65 -2012-03-21 14:00:00,6535.9,0.0,63.43 -2012-03-21 15:00:00,6554.2,0.0,64.2 -2012-03-21 16:00:00,6565.1,0.0,64.09 -2012-03-21 17:00:00,6521.2,0.0,62.36 -2012-03-21 18:00:00,6318.6,0.0,61.1 -2012-03-21 19:00:00,6281.8,0.0,60.64 -2012-03-21 20:00:00,6135.2,0.0,58.4 -2012-03-21 21:00:00,5862.7,0.0,56.58 -2012-03-21 22:00:00,5507.8,0.0,56.32 -2012-03-21 23:00:00,5042.8,0.0,56.66 -2012-03-22 00:00:00,4610.6,0.0,56.71 -2012-03-22 01:00:00,4334.4,0.0,56.57 -2012-03-22 02:00:00,4179.0,0.0,56.26 -2012-03-22 03:00:00,4115.3,0.0,56.17 -2012-03-22 04:00:00,4123.3,0.0,56.33 -2012-03-22 05:00:00,4359.0,0.0,51.17 -2012-03-22 06:00:00,4944.6,0.0,55.76 -2012-03-22 07:00:00,5585.6,0.0,55.92 -2012-03-22 08:00:00,6012.8,0.0,55.94 -2012-03-22 09:00:00,6297.2,0.0,56.77 -2012-03-22 10:00:00,6437.4,0.0,61.11 -2012-03-22 11:00:00,6566.1,0.0,56.05 -2012-03-22 12:00:00,6635.2,0.0,66.96 -2012-03-22 13:00:00,6704.6,0.0,69.29 -2012-03-22 14:00:00,6748.1,0.0,72.96 -2012-03-22 15:00:00,6780.2,0.0,74.16 -2012-03-22 16:00:00,6781.5,0.0,74.52 -2012-03-22 17:00:00,6692.7,0.0,71.9 -2012-03-22 18:00:00,6399.0,0.0,69.42 -2012-03-22 19:00:00,6364.9,0.0,68.13 -2012-03-22 20:00:00,6252.4,0.0,65.11 -2012-03-22 21:00:00,5967.5,0.0,64.55 -2012-03-22 22:00:00,5631.6,0.0,65.69 -2012-03-22 23:00:00,5189.1,0.0,65.69 -2012-03-23 00:00:00,4754.6,0.0,65.49 -2012-03-23 01:00:00,4484.1,0.0,65.13 -2012-03-23 02:00:00,4318.6,0.0,64.47 -2012-03-23 03:00:00,4248.8,0.0,64.1 -2012-03-23 04:00:00,4245.8,0.0,63.14 -2012-03-23 05:00:00,4472.9,0.0,56.52 -2012-03-23 06:00:00,5062.7,0.0,60.98 -2012-03-23 07:00:00,5682.4,0.0,60.36 -2012-03-23 08:00:00,6145.5,0.0,63.23 -2012-03-23 09:00:00,6490.6,0.0,66.05 -2012-03-23 10:00:00,6642.4,0.0,69.15 -2012-03-23 11:00:00,6740.3,0.0,64.55 -2012-03-23 12:00:00,6818.9,0.0,73.42 -2012-03-23 13:00:00,6818.6,0.0,74.6 -2012-03-23 14:00:00,6749.1,0.0,72.06 -2012-03-23 15:00:00,6683.6,0.0,70.9 -2012-03-23 16:00:00,6586.4,0.0,70.38 -2012-03-23 17:00:00,6434.7,0.0,67.57 -2012-03-23 18:00:00,6150.3,0.0,64.89 -2012-03-23 19:00:00,6130.0,0.0,63.25 -2012-03-23 20:00:00,5990.9,0.0,61.61 -2012-03-23 21:00:00,5731.2,0.0,59.42 -2012-03-23 22:00:00,5445.4,0.0,59.0 -2012-03-23 23:00:00,5059.4,0.0,55.18 -2012-03-24 00:00:00,4680.7,0.0,58.45 -2012-03-24 01:00:00,4403.9,0.0,57.86 -2012-03-24 02:00:00,4234.7,0.0,56.89 -2012-03-24 03:00:00,4131.8,0.0,57.82 -2012-03-24 04:00:00,4087.0,0.0,56.39 -2012-03-24 05:00:00,4122.3,0.0,52.0 -2012-03-24 06:00:00,4269.7,0.0,57.63 -2012-03-24 07:00:00,4470.4,0.0,56.68 -2012-03-24 08:00:00,4817.5,0.0,57.93 -2012-03-24 09:00:00,5091.9,0.0,59.09 -2012-03-24 10:00:00,5309.9,0.0,59.76 -2012-03-24 11:00:00,5421.5,0.0,54.65 -2012-03-24 12:00:00,5437.4,0.0,61.0 -2012-03-24 13:00:00,5400.8,0.0,62.63 -2012-03-24 14:00:00,5352.6,0.0,60.72 -2012-03-24 15:00:00,5301.3,0.0,59.98 -2012-03-24 16:00:00,5299.3,0.0,58.89 -2012-03-24 17:00:00,5282.7,0.0,52.52 -2012-03-24 18:00:00,5321.5,0.0,57.93 -2012-03-24 19:00:00,5473.1,0.0,56.26 -2012-03-24 20:00:00,5481.1,0.0,55.09 -2012-03-24 21:00:00,5337.8,0.0,54.09 -2012-03-24 22:00:00,5134.3,0.0,53.19 -2012-03-24 23:00:00,4858.9,0.0,47.83 -2012-03-25 00:00:00,4546.4,0.002,49.78 -2012-03-25 01:00:00,4302.0,0.0455,47.04 -2012-03-25 02:00:00,4124.7,0.0477,46.46 -2012-03-25 03:00:00,4022.6,0.0,46.1 -2012-03-25 04:00:00,3967.4,0.0,46.03 -2012-03-25 05:00:00,3993.8,0.0,44.85 -2012-03-25 06:00:00,4108.0,0.0,46.1 -2012-03-25 07:00:00,4258.6,0.0,46.1 -2012-03-25 08:00:00,4526.5,0.0,46.44 -2012-03-25 09:00:00,4832.8,0.0,46.01 -2012-03-25 10:00:00,5065.5,0.0,46.1 -2012-03-25 11:00:00,5226.2,0.0,44.55 -2012-03-25 12:00:00,5290.3,0.0,47.02 -2012-03-25 13:00:00,5313.7,0.0,48.2 -2012-03-25 14:00:00,5332.4,0.0,48.47 -2012-03-25 15:00:00,5314.3,0.0,49.29 -2012-03-25 16:00:00,5306.4,0.0,50.29 -2012-03-25 17:00:00,5316.0,0.0,48.03 -2012-03-25 18:00:00,5349.1,0.0,50.71 -2012-03-25 19:00:00,5495.3,0.0,50.9 -2012-03-25 20:00:00,5565.5,0.0,50.04 -2012-03-25 21:00:00,5415.6,0.0,49.5 -2012-03-25 22:00:00,5168.5,0.0,48.5 -2012-03-25 23:00:00,4791.3,0.0,46.03 -2012-03-26 00:00:00,4452.8,0.0,49.36 -2012-03-26 01:00:00,4232.4,0.0,49.92 -2012-03-26 02:00:00,4078.9,0.0,50.21 -2012-03-26 03:00:00,4014.0,0.0,50.34 -2012-03-26 04:00:00,4037.5,0.0,49.91 -2012-03-26 05:00:00,4289.3,0.0,46.08 -2012-03-26 06:00:00,4874.4,0.0,50.99 -2012-03-26 07:00:00,5436.8,0.0,51.55 -2012-03-26 08:00:00,5836.4,0.0,53.37 -2012-03-26 09:00:00,6098.7,0.0,53.29 -2012-03-26 10:00:00,6197.0,0.0,52.78 -2012-03-26 11:00:00,6234.6,0.0,50.64 -2012-03-26 12:00:00,6251.4,0.0,51.76 -2012-03-26 13:00:00,6240.8,0.0,50.13 -2012-03-26 14:00:00,6193.5,0.0,49.87 -2012-03-26 15:00:00,6202.0,0.0,48.96 -2012-03-26 16:00:00,6229.9,0.0,48.87 -2012-03-26 17:00:00,6209.6,0.0,45.06 -2012-03-26 18:00:00,6081.8,0.0,44.69 -2012-03-26 19:00:00,6201.4,0.0,42.5 -2012-03-26 20:00:00,6183.6,0.0,40.41 -2012-03-26 21:00:00,5958.4,0.0,38.5 -2012-03-26 22:00:00,5617.7,0.0,37.31 -2012-03-26 23:00:00,5135.2,0.0,36.67 -2012-03-27 00:00:00,4710.2,0.0,35.67 -2012-03-27 01:00:00,4446.2,0.0,35.31 -2012-03-27 02:00:00,4305.9,0.0,34.74 -2012-03-27 03:00:00,4251.0,0.0,33.65 -2012-03-27 04:00:00,4283.4,0.0,33.31 -2012-03-27 05:00:00,4542.3,0.0,31.74 -2012-03-27 06:00:00,5121.8,0.0,31.31 -2012-03-27 07:00:00,5701.8,0.0,30.58 -2012-03-27 08:00:00,6100.8,0.0,30.83 -2012-03-27 09:00:00,6354.7,0.0,31.75 -2012-03-27 10:00:00,6446.6,0.0,33.78 -2012-03-27 11:00:00,6462.3,0.0,37.19 -2012-03-27 12:00:00,6462.2,0.0,40.09 -2012-03-27 13:00:00,6433.9,0.0,43.69 -2012-03-27 14:00:00,6398.9,0.0,46.69 -2012-03-27 15:00:00,6379.1,0.0,49.11 -2012-03-27 16:00:00,6379.6,0.0,50.43 -2012-03-27 17:00:00,6335.0,0.0,50.96 -2012-03-27 18:00:00,6153.6,0.0,50.36 -2012-03-27 19:00:00,6207.8,0.0,50.28 -2012-03-27 20:00:00,6164.8,0.0,48.03 -2012-03-27 21:00:00,5914.0,0.0,47.68 -2012-03-27 22:00:00,5552.6,0.0,47.19 -2012-03-27 23:00:00,5073.1,0.0,47.53 -2012-03-28 00:00:00,4635.2,0.0,47.44 -2012-03-28 01:00:00,4367.7,0.0,46.59 -2012-03-28 02:00:00,4214.1,0.0,46.26 -2012-03-28 03:00:00,4145.6,0.0,45.81 -2012-03-28 04:00:00,4161.5,0.0,45.06 -2012-03-28 05:00:00,4419.7,0.0,39.8 -2012-03-28 06:00:00,4995.1,0.0,45.06 -2012-03-28 07:00:00,5586.5,0.0,44.97 -2012-03-28 08:00:00,5963.7,0.0,45.41 -2012-03-28 09:00:00,6187.4,0.0,47.33 -2012-03-28 10:00:00,6262.7,0.0,50.27 -2012-03-28 11:00:00,6291.5,0.0,50.05 -2012-03-28 12:00:00,6338.5,0.0,55.44 -2012-03-28 13:00:00,6392.8,0.0,56.61 -2012-03-28 14:00:00,6346.1,0.0111,54.68 -2012-03-28 15:00:00,6316.8,0.0,58.69 -2012-03-28 16:00:00,6346.5,0.0011,61.7 -2012-03-28 17:00:00,6331.6,0.0,64.52 -2012-03-28 18:00:00,6150.0,0.0,66.56 -2012-03-28 19:00:00,6175.2,0.0,66.16 -2012-03-28 20:00:00,6098.4,0.0,64.68 -2012-03-28 21:00:00,5880.6,0.0,64.24 -2012-03-28 22:00:00,5542.4,0.0041,63.07 -2012-03-28 23:00:00,5063.8,0.0069,62.3 -2012-03-29 00:00:00,4616.5,0.0,61.47 -2012-03-29 01:00:00,4331.5,0.0,61.5 -2012-03-29 02:00:00,4166.2,0.0,59.76 -2012-03-29 03:00:00,4088.8,0.0,57.96 -2012-03-29 04:00:00,4112.0,0.0,55.37 -2012-03-29 05:00:00,4341.6,0.0,49.35 -2012-03-29 06:00:00,4913.9,0.0,52.36 -2012-03-29 07:00:00,5522.9,0.0,51.36 -2012-03-29 08:00:00,5926.0,0.0,51.0 -2012-03-29 09:00:00,6170.8,0.0,50.36 -2012-03-29 10:00:00,6271.5,0.0,50.45 -2012-03-29 11:00:00,6312.3,0.0,51.86 -2012-03-29 12:00:00,6316.5,0.0,51.62 -2012-03-29 13:00:00,6321.2,0.0,53.28 -2012-03-29 14:00:00,6288.9,0.0,55.3 -2012-03-29 15:00:00,6300.7,0.0,54.29 -2012-03-29 16:00:00,6315.9,0.0,54.2 -2012-03-29 17:00:00,6292.1,0.0,53.8 -2012-03-29 18:00:00,6135.5,0.0,51.1 -2012-03-29 19:00:00,6135.0,0.0,49.52 -2012-03-29 20:00:00,6068.0,0.0,48.24 -2012-03-29 21:00:00,5826.2,0.0,46.34 -2012-03-29 22:00:00,5500.7,0.0,46.08 -2012-03-29 23:00:00,5043.5,0.0,44.76 -2012-03-30 00:00:00,4624.4,0.0,44.34 -2012-03-30 01:00:00,4354.5,0.0,44.24 -2012-03-30 02:00:00,4212.6,0.0,43.34 -2012-03-30 03:00:00,4142.5,0.0,43.34 -2012-03-30 04:00:00,4162.9,0.0,42.59 -2012-03-30 05:00:00,4393.1,0.0,41.19 -2012-03-30 06:00:00,4958.1,0.0,41.15 -2012-03-30 07:00:00,5523.2,0.0,40.58 -2012-03-30 08:00:00,5918.5,0.0,40.85 -2012-03-30 09:00:00,6167.1,0.0,41.52 -2012-03-30 10:00:00,6246.9,0.0,42.62 -2012-03-30 11:00:00,6259.9,0.0,45.19 -2012-03-30 12:00:00,6265.5,0.0,47.4 -2012-03-30 13:00:00,6244.4,0.0,50.07 -2012-03-30 14:00:00,6192.5,0.0,52.04 -2012-03-30 15:00:00,6170.4,0.0,53.29 -2012-03-30 16:00:00,6158.4,0.0,55.05 -2012-03-30 17:00:00,6099.1,0.0,49.93 -2012-03-30 18:00:00,5905.5,0.0,54.13 -2012-03-30 19:00:00,5955.3,0.0,48.92 -2012-03-30 20:00:00,5899.3,0.0,47.0 -2012-03-30 21:00:00,5692.0,0.0,47.0 -2012-03-30 22:00:00,5426.5,0.0,46.93 -2012-03-30 23:00:00,5063.0,0.0,44.06 -2012-03-31 00:00:00,4686.4,0.0169,45.28 -2012-03-31 01:00:00,4449.9,0.1025,40.28 -2012-03-31 02:00:00,4284.0,0.1031,39.36 -2012-03-31 03:00:00,4197.5,0.0,39.46 -2012-03-31 04:00:00,4161.1,0.0211,38.78 -2012-03-31 05:00:00,4213.0,0.0042,39.1 -2012-03-31 06:00:00,4374.4,0.0169,38.78 -2012-03-31 07:00:00,4625.1,0.002,39.27 -2012-03-31 08:00:00,4955.1,0.0069,39.36 -2012-03-31 09:00:00,5277.8,0.0011,40.26 -2012-03-31 10:00:00,5497.9,0.0069,40.36 -2012-03-31 11:00:00,5619.1,0.0089,40.78 -2012-03-31 12:00:00,5657.9,0.0,41.45 -2012-03-31 13:00:00,5639.7,0.0,41.63 -2012-03-31 14:00:00,5608.0,0.0,42.12 -2012-03-31 15:00:00,5588.6,0.0,41.55 -2012-03-31 16:00:00,5587.1,0.0,41.52 -2012-03-31 17:00:00,5603.0,0.0,41.04 -2012-03-31 18:00:00,5629.7,0.0,41.61 -2012-03-31 19:00:00,5695.3,0.0,42.36 -2012-03-31 20:00:00,5641.7,0.0,42.36 -2012-03-31 21:00:00,5507.7,0.0,43.1 -2012-03-31 22:00:00,5293.1,0.0,43.34 -2012-03-31 23:00:00,5005.8,0.0,38.1 -2012-04-01 00:00:00,4705.0,0.0,43.27 -2012-04-01 01:00:00,4448.9,0.0,43.1 -2012-04-01 02:00:00,4265.5,0.0,43.0 -2012-04-01 03:00:00,4159.4,0.0,42.68 -2012-04-01 04:00:00,4104.2,0.0,42.6 -2012-04-01 05:00:00,4133.7,0.0,36.85 -2012-04-01 06:00:00,4230.4,0.0,42.51 -2012-04-01 07:00:00,4376.1,0.0,43.17 -2012-04-01 08:00:00,4625.6,0.0,44.08 -2012-04-01 09:00:00,4880.0,0.0,44.26 -2012-04-01 10:00:00,5077.1,0.0,46.1 -2012-04-01 11:00:00,5185.4,0.0,46.85 -2012-04-01 12:00:00,5228.6,0.0,49.66 -2012-04-01 13:00:00,5252.8,0.0,51.25 -2012-04-01 14:00:00,5275.0,0.0,51.0 -2012-04-01 15:00:00,5316.6,0.0,50.76 -2012-04-01 16:00:00,5338.6,0.0,50.43 -2012-04-01 17:00:00,5419.0,0.0011,46.15 -2012-04-01 18:00:00,5557.8,0.0406,47.55 -2012-04-01 19:00:00,5674.7,0.1663,46.79 -2012-04-01 20:00:00,5642.8,0.0341,47.46 -2012-04-01 21:00:00,5495.1,0.0069,47.46 -2012-04-01 22:00:00,5221.2,0.0011,48.0 -2012-04-01 23:00:00,4851.7,0.0442,47.15 -2012-04-02 00:00:00,4512.0,0.0284,47.08 -2012-04-02 01:00:00,4293.5,0.0199,45.59 -2012-04-02 02:00:00,4152.6,0.0307,45.43 -2012-04-02 03:00:00,4104.5,0.0,44.76 -2012-04-02 04:00:00,4140.3,0.0,43.43 -2012-04-02 05:00:00,4397.6,0.0,42.43 -2012-04-02 06:00:00,4960.1,0.0,41.6 -2012-04-02 07:00:00,5524.8,0.0,41.42 -2012-04-02 08:00:00,5919.0,0.0,41.86 -2012-04-02 09:00:00,6191.5,0.0,43.43 -2012-04-02 10:00:00,6296.8,0.0,46.34 -2012-04-02 11:00:00,6341.1,0.0,46.63 -2012-04-02 12:00:00,6346.7,0.0,49.03 -2012-04-02 13:00:00,6325.2,0.0,50.52 -2012-04-02 14:00:00,6293.1,0.0,52.11 -2012-04-02 15:00:00,6287.9,0.0,53.93 -2012-04-02 16:00:00,6303.9,0.0,54.98 -2012-04-02 17:00:00,6240.4,0.0,49.55 -2012-04-02 18:00:00,6056.0,0.0,55.48 -2012-04-02 19:00:00,6116.0,0.0,54.37 -2012-04-02 20:00:00,6132.9,0.0,52.6 -2012-04-02 21:00:00,5914.3,0.0,51.43 -2012-04-02 22:00:00,5566.5,0.0,49.43 -2012-04-02 23:00:00,5072.2,0.0,43.08 -2012-04-03 00:00:00,4638.0,0.0,46.58 -2012-04-03 01:00:00,4366.6,0.0,45.49 -2012-04-03 02:00:00,4222.2,0.0,44.49 -2012-04-03 03:00:00,4163.7,0.0,43.64 -2012-04-03 04:00:00,4188.3,0.0,43.3 -2012-04-03 05:00:00,4440.6,0.0,40.68 -2012-04-03 06:00:00,4993.9,0.0,41.56 -2012-04-03 07:00:00,5567.5,0.0,40.82 -2012-04-03 08:00:00,5954.5,0.0,41.76 -2012-04-03 09:00:00,6173.7,0.0,44.45 -2012-04-03 10:00:00,6253.7,0.0,46.93 -2012-04-03 11:00:00,6284.5,0.0,46.92 -2012-04-03 12:00:00,6270.4,0.0,52.43 -2012-04-03 13:00:00,6267.2,0.0,55.46 -2012-04-03 14:00:00,6252.4,0.0,57.71 -2012-04-03 15:00:00,6263.3,0.0,60.38 -2012-04-03 16:00:00,6285.4,0.0,62.46 -2012-04-03 17:00:00,6255.5,0.0,62.9 -2012-04-03 18:00:00,6058.6,0.0,62.82 -2012-04-03 19:00:00,6095.6,0.0,61.25 -2012-04-03 20:00:00,6083.6,0.0,60.9 -2012-04-03 21:00:00,5849.5,0.0,59.84 -2012-04-03 22:00:00,5493.0,0.0,59.04 -2012-04-03 23:00:00,5026.1,0.0,58.64 -2012-04-04 00:00:00,4587.1,0.0,56.97 -2012-04-04 01:00:00,4325.9,0.0,57.01 -2012-04-04 02:00:00,4160.8,0.0,56.78 -2012-04-04 03:00:00,4091.7,0.0,55.74 -2012-04-04 04:00:00,4102.5,0.0,55.74 -2012-04-04 05:00:00,4333.9,0.0,48.98 -2012-04-04 06:00:00,4899.4,0.0,54.98 -2012-04-04 07:00:00,5499.1,0.0,54.38 -2012-04-04 08:00:00,5896.3,0.0,55.37 -2012-04-04 09:00:00,6153.8,0.0,56.39 -2012-04-04 10:00:00,6263.5,0.0,57.41 -2012-04-04 11:00:00,6317.5,0.0,54.61 -2012-04-04 12:00:00,6362.6,0.0,61.73 -2012-04-04 13:00:00,6401.0,0.0,64.63 -2012-04-04 14:00:00,6389.0,0.0,66.3 -2012-04-04 15:00:00,6401.8,0.0,66.52 -2012-04-04 16:00:00,6416.0,0.0,66.01 -2012-04-04 17:00:00,6347.3,0.0,57.69 -2012-04-04 18:00:00,6092.6,0.0,64.25 -2012-04-04 19:00:00,6072.7,0.0,62.52 -2012-04-04 20:00:00,6058.6,0.0,61.06 -2012-04-04 21:00:00,5813.0,0.0,56.2 -2012-04-04 22:00:00,5474.0,0.0,53.43 -2012-04-04 23:00:00,4997.3,0.0,50.6 -2012-04-05 00:00:00,4570.9,0.0,48.43 -2012-04-05 01:00:00,4305.6,0.0,47.43 -2012-04-05 02:00:00,4145.3,0.0,45.67 -2012-04-05 03:00:00,4081.5,0.0,44.67 -2012-04-05 04:00:00,4096.9,0.0,44.4 -2012-04-05 05:00:00,4342.3,0.0,42.92 -2012-04-05 06:00:00,4870.1,0.0,43.22 -2012-04-05 07:00:00,5439.8,0.0,42.58 -2012-04-05 08:00:00,5833.8,0.0,43.6 -2012-04-05 09:00:00,6108.2,0.0,45.33 -2012-04-05 10:00:00,6237.6,0.0,46.42 -2012-04-05 11:00:00,6277.6,0.0,47.68 -2012-04-05 12:00:00,6286.5,0.0,50.6 -2012-04-05 13:00:00,6284.7,0.0,52.57 -2012-04-05 14:00:00,6250.1,0.0,55.01 -2012-04-05 15:00:00,6246.3,0.0,55.86 -2012-04-05 16:00:00,6253.1,0.0,56.35 -2012-04-05 17:00:00,6206.4,0.0,50.74 -2012-04-05 18:00:00,5980.1,0.0,56.3 -2012-04-05 19:00:00,5962.4,0.0,54.53 -2012-04-05 20:00:00,5976.0,0.0,53.18 -2012-04-05 21:00:00,5773.0,0.0,50.77 -2012-04-05 22:00:00,5450.5,0.0,49.24 -2012-04-05 23:00:00,5038.7,0.0,42.11 -2012-04-06 00:00:00,4636.0,0.0,44.58 -2012-04-06 01:00:00,4373.8,0.0,42.41 -2012-04-06 02:00:00,4211.5,0.0,41.44 -2012-04-06 03:00:00,4129.2,0.0,41.16 -2012-04-06 04:00:00,4122.9,0.0,39.59 -2012-04-06 05:00:00,4314.4,0.0,38.82 -2012-04-06 06:00:00,4696.2,0.0,38.82 -2012-04-06 07:00:00,5146.1,0.0,38.65 -2012-04-06 08:00:00,5569.4,0.0,39.83 -2012-04-06 09:00:00,5838.8,0.0,42.16 -2012-04-06 10:00:00,5974.7,0.0,45.41 -2012-04-06 11:00:00,6032.7,0.0,47.83 -2012-04-06 12:00:00,6026.9,0.0,49.76 -2012-04-06 13:00:00,6000.2,0.0,51.76 -2012-04-06 14:00:00,5953.7,0.0011,54.57 -2012-04-06 15:00:00,5903.3,0.0,55.61 -2012-04-06 16:00:00,5883.5,0.0,56.88 -2012-04-06 17:00:00,5846.5,0.0,51.57 -2012-04-06 18:00:00,5672.1,0.0,56.46 -2012-04-06 19:00:00,5681.8,0.0,54.64 -2012-04-06 20:00:00,5687.3,0.0,52.62 -2012-04-06 21:00:00,5526.4,0.0,51.46 -2012-04-06 22:00:00,5298.1,0.0,50.28 -2012-04-06 23:00:00,4981.3,0.0,40.63 -2012-04-07 00:00:00,4639.0,0.0,46.83 -2012-04-07 01:00:00,4387.1,0.0,45.74 -2012-04-07 02:00:00,4218.6,0.0,44.82 -2012-04-07 03:00:00,4131.6,0.0,44.3 -2012-04-07 04:00:00,4099.8,0.0,43.49 -2012-04-07 05:00:00,4162.0,0.0,42.22 -2012-04-07 06:00:00,4290.2,0.0,42.12 -2012-04-07 07:00:00,4496.0,0.0,41.57 -2012-04-07 08:00:00,4794.8,0.0,42.92 -2012-04-07 09:00:00,5055.7,0.0,45.61 -2012-04-07 10:00:00,5246.9,0.0,48.1 -2012-04-07 11:00:00,5332.7,0.0,48.72 -2012-04-07 12:00:00,5345.0,0.0,52.19 -2012-04-07 13:00:00,5304.0,0.0,53.98 -2012-04-07 14:00:00,5259.4,0.0,57.26 -2012-04-07 15:00:00,5218.5,0.0,58.63 -2012-04-07 16:00:00,5211.0,0.0,59.63 -2012-04-07 17:00:00,5211.0,0.0,59.99 -2012-04-07 18:00:00,5220.0,0.0,59.22 -2012-04-07 19:00:00,5317.0,0.0,58.13 -2012-04-07 20:00:00,5414.3,0.0,55.55 -2012-04-07 21:00:00,5308.2,0.0,54.43 -2012-04-07 22:00:00,5126.4,0.0,53.34 -2012-04-07 23:00:00,4876.2,0.0,45.44 -2012-04-08 00:00:00,4581.2,0.0,51.34 -2012-04-08 01:00:00,4323.6,0.0,50.6 -2012-04-08 02:00:00,4156.7,0.0,50.24 -2012-04-08 03:00:00,4057.9,0.0,49.51 -2012-04-08 04:00:00,4015.4,0.0,47.73 -2012-04-08 05:00:00,4056.7,0.0,43.82 -2012-04-08 06:00:00,4122.8,0.0,45.7 -2012-04-08 07:00:00,4267.5,0.0,45.49 -2012-04-08 08:00:00,4490.4,0.0,46.69 -2012-04-08 09:00:00,4715.6,0.0,48.62 -2012-04-08 10:00:00,4899.6,0.0,51.38 -2012-04-08 11:00:00,4992.6,0.0,50.29 -2012-04-08 12:00:00,5019.1,0.0,56.88 -2012-04-08 13:00:00,5021.7,0.0,59.3 -2012-04-08 14:00:00,5010.5,0.0,61.39 -2012-04-08 15:00:00,4992.7,0.0,63.03 -2012-04-08 16:00:00,4992.7,0.0,64.08 -2012-04-08 17:00:00,4996.9,0.0,65.65 -2012-04-08 18:00:00,5028.5,0.0,66.06 -2012-04-08 19:00:00,5165.0,0.0,65.32 -2012-04-08 20:00:00,5325.8,0.0,63.03 -2012-04-08 21:00:00,5262.7,0.0,62.25 -2012-04-08 22:00:00,5067.8,0.0,61.83 -2012-04-08 23:00:00,4751.4,0.0,51.53 -2012-04-09 00:00:00,4432.4,0.0,57.43 -2012-04-09 01:00:00,4207.2,0.0,54.67 -2012-04-09 02:00:00,4062.9,0.0,53.43 -2012-04-09 03:00:00,3997.6,0.0,52.42 -2012-04-09 04:00:00,4022.8,0.0,51.48 -2012-04-09 05:00:00,4240.7,0.0,48.95 -2012-04-09 06:00:00,4697.0,0.0,50.34 -2012-04-09 07:00:00,5198.5,0.0,49.57 -2012-04-09 08:00:00,5651.7,0.0,50.5 -2012-04-09 09:00:00,5920.2,0.0,52.28 -2012-04-09 10:00:00,6061.8,0.0,53.78 -2012-04-09 11:00:00,6132.3,0.0,54.57 -2012-04-09 12:00:00,6156.6,0.0,57.96 -2012-04-09 13:00:00,6166.3,0.0,60.44 -2012-04-09 14:00:00,6139.3,0.0,61.44 -2012-04-09 15:00:00,6126.1,0.0,61.27 -2012-04-09 16:00:00,6127.5,0.0,61.96 -2012-04-09 17:00:00,6094.0,0.0,55.6 -2012-04-09 18:00:00,5914.4,0.0,61.27 -2012-04-09 19:00:00,5901.9,0.0,60.43 -2012-04-09 20:00:00,5905.9,0.0,59.5 -2012-04-09 21:00:00,5684.0,0.0,57.74 -2012-04-09 22:00:00,5360.1,0.0,57.23 -2012-04-09 23:00:00,4918.8,0.0,50.48 -2012-04-10 00:00:00,4504.4,0.0,54.38 -2012-04-10 01:00:00,4239.3,0.0,53.12 -2012-04-10 02:00:00,4083.8,0.0,52.21 -2012-04-10 03:00:00,4011.8,0.0,51.17 -2012-04-10 04:00:00,4027.9,0.0,50.27 -2012-04-10 05:00:00,4248.8,0.0,47.33 -2012-04-10 06:00:00,4710.7,0.0,49.02 -2012-04-10 07:00:00,5230.6,0.0,48.17 -2012-04-10 08:00:00,5684.1,0.0,48.65 -2012-04-10 09:00:00,5956.8,0.0,50.19 -2012-04-10 10:00:00,6078.0,0.0,52.47 -2012-04-10 11:00:00,6150.4,0.0,53.4 -2012-04-10 12:00:00,6176.5,0.0,56.28 -2012-04-10 13:00:00,6178.0,0.0,54.5 -2012-04-10 14:00:00,6169.2,0.0,56.11 -2012-04-10 15:00:00,6172.0,0.0,57.36 -2012-04-10 16:00:00,6162.6,0.0,58.39 -2012-04-10 17:00:00,6135.5,0.0,53.51 -2012-04-10 18:00:00,5937.8,0.0,56.91 -2012-04-10 19:00:00,5931.0,0.0,55.28 -2012-04-10 20:00:00,5913.6,0.0,53.19 -2012-04-10 21:00:00,5705.9,0.0,51.61 -2012-04-10 22:00:00,5364.4,0.0,50.49 -2012-04-10 23:00:00,4947.1,0.0,47.28 -2012-04-11 00:00:00,4541.4,0.0,47.73 -2012-04-11 01:00:00,4273.3,0.0,46.56 -2012-04-11 02:00:00,4123.6,0.0,44.88 -2012-04-11 03:00:00,4056.2,0.0,44.64 -2012-04-11 04:00:00,4079.0,0.0,45.42 -2012-04-11 05:00:00,4308.5,0.0,39.45 -2012-04-11 06:00:00,4769.8,0.0,44.34 -2012-04-11 07:00:00,5304.5,0.0,44.34 -2012-04-11 08:00:00,5739.9,0.0,44.34 -2012-04-11 09:00:00,6015.8,0.0,44.24 -2012-04-11 10:00:00,6135.2,0.0,45.25 -2012-04-11 11:00:00,6175.9,0.0,47.78 -2012-04-11 12:00:00,6201.9,0.0,49.79 -2012-04-11 13:00:00,6200.7,0.0,50.02 -2012-04-11 14:00:00,6177.6,0.0,50.47 -2012-04-11 15:00:00,6164.0,0.0,51.07 -2012-04-11 16:00:00,6183.5,0.0,51.26 -2012-04-11 17:00:00,6161.0,0.0,51.26 -2012-04-11 18:00:00,5992.3,0.0,51.17 -2012-04-11 19:00:00,5962.2,0.0,50.51 -2012-04-11 20:00:00,5962.2,0.0,50.34 -2012-04-11 21:00:00,5762.6,0.0,49.38 -2012-04-11 22:00:00,5434.6,0.0,48.57 -2012-04-11 23:00:00,4994.9,0.0,46.61 -2012-04-12 00:00:00,4602.2,0.0,47.57 -2012-04-12 01:00:00,4333.2,0.0,46.57 -2012-04-12 02:00:00,4180.7,0.0,46.48 -2012-04-12 03:00:00,4110.9,0.0,45.48 -2012-04-12 04:00:00,4122.1,0.0,44.55 -2012-04-12 05:00:00,4351.4,0.0,44.8 -2012-04-12 06:00:00,4795.7,0.0,43.55 -2012-04-12 07:00:00,5325.4,0.0,43.65 -2012-04-12 08:00:00,5760.0,0.0,44.75 -2012-04-12 09:00:00,6032.2,0.0,47.71 -2012-04-12 10:00:00,6141.0,0.0,50.44 -2012-04-12 11:00:00,6190.2,0.0,50.63 -2012-04-12 12:00:00,6201.9,0.0,55.69 -2012-04-12 13:00:00,6205.8,0.0,55.55 -2012-04-12 14:00:00,6186.5,0.0,56.34 -2012-04-12 15:00:00,6187.5,0.0,56.58 -2012-04-12 16:00:00,6181.8,0.0,58.39 -2012-04-12 17:00:00,6143.4,0.0,52.05 -2012-04-12 18:00:00,5947.6,0.0,57.2 -2012-04-12 19:00:00,5919.0,0.0,55.63 -2012-04-12 20:00:00,5934.9,0.0,53.79 -2012-04-12 21:00:00,5720.1,0.0,53.46 -2012-04-12 22:00:00,5410.6,0.0,52.37 -2012-04-12 23:00:00,5008.5,0.0,47.49 -2012-04-13 00:00:00,4609.5,0.0,51.19 -2012-04-13 01:00:00,4340.0,0.0,50.54 -2012-04-13 02:00:00,4176.6,0.0,48.37 -2012-04-13 03:00:00,4101.8,0.0,47.36 -2012-04-13 04:00:00,4109.5,0.0,46.73 -2012-04-13 05:00:00,4329.5,0.0,43.46 -2012-04-13 06:00:00,4750.9,0.0,44.92 -2012-04-13 07:00:00,5267.9,0.0,44.66 -2012-04-13 08:00:00,5716.1,0.0,46.09 -2012-04-13 09:00:00,5961.1,0.0,48.92 -2012-04-13 10:00:00,6102.0,0.0,52.11 -2012-04-13 11:00:00,6163.0,0.0,53.23 -2012-04-13 12:00:00,6175.2,0.0,56.67 -2012-04-13 13:00:00,6166.9,0.0,59.23 -2012-04-13 14:00:00,6161.0,0.0,59.59 -2012-04-13 15:00:00,6156.5,0.0,61.5 -2012-04-13 16:00:00,6146.1,0.0,62.76 -2012-04-13 17:00:00,6087.9,0.0,56.19 -2012-04-13 18:00:00,5856.5,0.0,63.9 -2012-04-13 19:00:00,5817.2,0.0,59.16 -2012-04-13 20:00:00,5816.7,0.0,57.27 -2012-04-13 21:00:00,5623.9,0.0,58.28 -2012-04-13 22:00:00,5362.8,0.0,57.14 -2012-04-13 23:00:00,5007.5,0.0,50.64 -2012-04-14 00:00:00,4620.9,0.0,56.44 -2012-04-14 01:00:00,4352.7,0.0,55.08 -2012-04-14 02:00:00,4180.5,0.0,53.89 -2012-04-14 03:00:00,4070.4,0.0,53.48 -2012-04-14 04:00:00,4019.5,0.0,53.28 -2012-04-14 05:00:00,4065.6,0.0,48.9 -2012-04-14 06:00:00,4183.4,0.0,51.36 -2012-04-14 07:00:00,4420.9,0.0,49.91 -2012-04-14 08:00:00,4731.0,0.0,51.93 -2012-04-14 09:00:00,5006.6,0.0,55.35 -2012-04-14 10:00:00,5214.0,0.0,59.05 -2012-04-14 11:00:00,5338.7,0.0,60.58 -2012-04-14 12:00:00,5383.1,0.0,64.43 -2012-04-14 13:00:00,5367.3,0.0,66.36 -2012-04-14 14:00:00,5343.6,0.0,68.46 -2012-04-14 15:00:00,5333.8,0.0,69.77 -2012-04-14 16:00:00,5311.0,0.0,69.88 -2012-04-14 17:00:00,5303.5,0.0,67.52 -2012-04-14 18:00:00,5318.2,0.0,66.83 -2012-04-14 19:00:00,5435.1,0.0,65.46 -2012-04-14 20:00:00,5520.5,0.0,67.32 -2012-04-14 21:00:00,5401.3,0.0,67.07 -2012-04-14 22:00:00,5217.5,0.0,66.21 -2012-04-14 23:00:00,4920.9,0.0,64.9 -2012-04-15 00:00:00,4616.0,0.0,65.24 -2012-04-15 01:00:00,4381.8,0.0,65.0 -2012-04-15 02:00:00,4189.9,0.0,64.33 -2012-04-15 03:00:00,4080.1,0.0,63.04 -2012-04-15 04:00:00,4019.6,0.0,63.53 -2012-04-15 05:00:00,4035.6,0.0,59.81 -2012-04-15 06:00:00,4093.8,0.0,59.96 -2012-04-15 07:00:00,4254.5,0.0,60.51 -2012-04-15 08:00:00,4532.6,0.0,61.87 -2012-04-15 09:00:00,4838.1,0.0,63.48 -2012-04-15 10:00:00,5129.1,0.0,64.05 -2012-04-15 11:00:00,5321.7,0.0,59.86 -2012-04-15 12:00:00,5453.6,0.0,70.86 -2012-04-15 13:00:00,5482.8,0.0,71.55 -2012-04-15 14:00:00,5496.3,0.0,72.72 -2012-04-15 15:00:00,5512.2,0.0,72.44 -2012-04-15 16:00:00,5536.5,0.0,73.43 -2012-04-15 17:00:00,5564.8,0.0,74.07 -2012-04-15 18:00:00,5584.4,0.0,75.96 -2012-04-15 19:00:00,5701.4,0.0,74.84 -2012-04-15 20:00:00,5862.2,0.0,74.0 -2012-04-15 21:00:00,5748.8,0.0,73.25 -2012-04-15 22:00:00,5473.3,0.0,70.23 -2012-04-15 23:00:00,5092.2,0.0,68.9 -2012-04-16 00:00:00,4744.8,0.0,70.36 -2012-04-16 01:00:00,4496.4,0.0,69.69 -2012-04-16 02:00:00,4350.1,0.0,69.16 -2012-04-16 03:00:00,4282.3,0.0,68.88 -2012-04-16 04:00:00,4316.6,0.0,67.31 -2012-04-16 05:00:00,4572.9,0.0,58.21 -2012-04-16 06:00:00,5131.3,0.0,65.73 -2012-04-16 07:00:00,5829.7,0.0,65.4 -2012-04-16 08:00:00,6356.3,0.0,67.05 -2012-04-16 09:00:00,6766.3,0.0,68.54 -2012-04-16 10:00:00,7005.8,0.0,71.01 -2012-04-16 11:00:00,7180.9,0.0,75.69 -2012-04-16 12:00:00,7318.6,0.0,81.08 -2012-04-16 13:00:00,7431.0,0.0,82.15 -2012-04-16 14:00:00,7504.9,0.0,84.05 -2012-04-16 15:00:00,7531.5,0.0,84.38 -2012-04-16 16:00:00,7506.0,0.0,78.13 -2012-04-16 17:00:00,7342.2,0.0,77.03 -2012-04-16 18:00:00,6942.4,0.0,75.66 -2012-04-16 19:00:00,6784.3,0.0,74.61 -2012-04-16 20:00:00,6762.8,0.0,74.2 -2012-04-16 21:00:00,6536.0,0.0,73.69 -2012-04-16 22:00:00,6181.9,0.0,74.82 -2012-04-16 23:00:00,5710.1,0.0,74.98 -2012-04-17 00:00:00,5237.0,0.0,74.1 -2012-04-17 01:00:00,4937.5,0.0,74.33 -2012-04-17 02:00:00,4737.9,0.0,72.47 -2012-04-17 03:00:00,4652.2,0.0,72.38 -2012-04-17 04:00:00,4673.2,0.0,70.75 -2012-04-17 05:00:00,4944.1,0.0,71.02 -2012-04-17 06:00:00,5506.6,0.0,70.34 -2012-04-17 07:00:00,6142.2,0.0,69.23 -2012-04-17 08:00:00,6578.7,0.0,68.23 -2012-04-17 09:00:00,6851.8,0.0,67.72 -2012-04-17 10:00:00,6971.2,0.0,68.25 -2012-04-17 11:00:00,7048.3,0.0,72.26 -2012-04-17 12:00:00,7094.9,0.0,71.32 -2012-04-17 13:00:00,7160.9,0.0,73.99 -2012-04-17 14:00:00,7202.9,0.0,75.18 -2012-04-17 15:00:00,7257.5,0.0,76.41 -2012-04-17 16:00:00,7302.6,0.0,76.71 -2012-04-17 17:00:00,7240.5,0.0,74.68 -2012-04-17 18:00:00,6873.2,0.0,75.93 -2012-04-17 19:00:00,6696.5,0.0,73.56 -2012-04-17 20:00:00,6625.2,0.0,71.79 -2012-04-17 21:00:00,6358.3,0.0,69.75 -2012-04-17 22:00:00,5923.4,0.0,68.03 -2012-04-17 23:00:00,5401.6,0.0,65.18 -2012-04-18 00:00:00,4861.4,0.0,62.55 -2012-04-18 01:00:00,4546.3,0.0,61.13 -2012-04-18 02:00:00,4349.0,0.0,59.13 -2012-04-18 03:00:00,4251.5,0.0,57.06 -2012-04-18 04:00:00,4224.1,0.0,54.32 -2012-04-18 05:00:00,4431.6,0.0,53.35 -2012-04-18 06:00:00,4941.9,0.0,50.37 -2012-04-18 07:00:00,5563.1,0.0,49.43 -2012-04-18 08:00:00,5944.2,0.0,49.34 -2012-04-18 09:00:00,6174.3,0.0,50.26 -2012-04-18 10:00:00,6290.9,0.0,52.42 -2012-04-18 11:00:00,6377.5,0.0,55.07 -2012-04-18 12:00:00,6401.9,0.0,57.55 -2012-04-18 13:00:00,6410.0,0.0,59.2 -2012-04-18 14:00:00,6402.2,0.0,59.5 -2012-04-18 15:00:00,6419.1,0.0,59.8 -2012-04-18 16:00:00,6449.3,0.0,59.91 -2012-04-18 17:00:00,6415.3,0.0,53.68 -2012-04-18 18:00:00,6204.4,0.0,59.16 -2012-04-18 19:00:00,6143.8,0.0,56.93 -2012-04-18 20:00:00,6074.4,0.0,55.93 -2012-04-18 21:00:00,5812.1,0.0,55.01 -2012-04-18 22:00:00,5434.1,0.0,54.17 -2012-04-18 23:00:00,4985.4,0.0,49.24 -2012-04-19 00:00:00,4554.4,0.0089,51.18 -2012-04-19 01:00:00,4287.5,0.002,51.02 -2012-04-19 02:00:00,4128.2,0.028,49.18 -2012-04-19 03:00:00,4072.1,0.0143,48.66 -2012-04-19 04:00:00,4099.3,0.0011,48.93 -2012-04-19 05:00:00,4332.0,0.0,50.25 -2012-04-19 06:00:00,4869.9,0.0,50.42 -2012-04-19 07:00:00,5506.6,0.0,50.44 -2012-04-19 08:00:00,5928.9,0.0,51.34 -2012-04-19 09:00:00,6181.8,0.0,52.19 -2012-04-19 10:00:00,6317.1,0.0,55.5 -2012-04-19 11:00:00,6393.4,0.0,54.96 -2012-04-19 12:00:00,6449.5,0.0,61.01 -2012-04-19 13:00:00,6498.7,0.0,62.84 -2012-04-19 14:00:00,6522.0,0.0,66.16 -2012-04-19 15:00:00,6562.8,0.0,66.74 -2012-04-19 16:00:00,6578.9,0.0,67.79 -2012-04-19 17:00:00,6498.5,0.0,56.76 -2012-04-19 18:00:00,6190.4,0.0,61.55 -2012-04-19 19:00:00,6084.7,0.0,59.39 -2012-04-19 20:00:00,6085.1,0.0,57.3 -2012-04-19 21:00:00,5856.9,0.0,57.15 -2012-04-19 22:00:00,5497.1,0.0,57.8 -2012-04-19 23:00:00,5054.9,0.0,50.95 -2012-04-20 00:00:00,4614.6,0.0,56.51 -2012-04-20 01:00:00,4341.5,0.0,56.26 -2012-04-20 02:00:00,4172.0,0.0,55.67 -2012-04-20 03:00:00,4099.0,0.0,55.25 -2012-04-20 04:00:00,4112.9,0.0,54.88 -2012-04-20 05:00:00,4333.1,0.0,54.31 -2012-04-20 06:00:00,4841.2,0.0,53.8 -2012-04-20 07:00:00,5485.7,0.0,54.06 -2012-04-20 08:00:00,5941.1,0.0,56.67 -2012-04-20 09:00:00,6270.5,0.0,60.1 -2012-04-20 10:00:00,6445.8,0.0,62.47 -2012-04-20 11:00:00,6562.0,0.0,59.36 -2012-04-20 12:00:00,6603.8,0.0,67.38 -2012-04-20 13:00:00,6595.9,0.0,68.27 -2012-04-20 14:00:00,6556.6,0.0,67.34 -2012-04-20 15:00:00,6529.2,0.0,66.86 -2012-04-20 16:00:00,6504.3,0.0,65.8 -2012-04-20 17:00:00,6409.3,0.0,58.68 -2012-04-20 18:00:00,6151.0,0.0,64.43 -2012-04-20 19:00:00,6024.2,0.0,61.66 -2012-04-20 20:00:00,5959.4,0.0,59.68 -2012-04-20 21:00:00,5744.1,0.0,58.78 -2012-04-20 22:00:00,5462.9,0.0,59.19 -2012-04-20 23:00:00,5072.2,0.0,53.74 -2012-04-21 00:00:00,4697.2,0.0,57.34 -2012-04-21 01:00:00,4431.0,0.0,57.0 -2012-04-21 02:00:00,4257.6,0.0,56.84 -2012-04-21 03:00:00,4160.7,0.0,57.57 -2012-04-21 04:00:00,4125.2,0.0,57.5 -2012-04-21 05:00:00,4163.0,0.0,54.49 -2012-04-21 06:00:00,4274.6,0.0,57.85 -2012-04-21 07:00:00,4562.2,0.0,58.44 -2012-04-21 08:00:00,4927.4,0.0,60.62 -2012-04-21 09:00:00,5250.2,0.0,61.34 -2012-04-21 10:00:00,5468.7,0.0,62.12 -2012-04-21 11:00:00,5580.9,0.0,58.4 -2012-04-21 12:00:00,5624.1,0.0,65.64 -2012-04-21 13:00:00,5628.5,0.0,65.04 -2012-04-21 14:00:00,5642.8,0.0,67.5 -2012-04-21 15:00:00,5639.2,0.0,69.61 -2012-04-21 16:00:00,5627.3,0.0,69.55 -2012-04-21 17:00:00,5598.7,0.0,60.1 -2012-04-21 18:00:00,5577.7,0.0,66.46 -2012-04-21 19:00:00,5613.5,0.0,65.39 -2012-04-21 20:00:00,5676.0,0.0,63.2 -2012-04-21 21:00:00,5546.8,0.0,61.27 -2012-04-21 22:00:00,5337.2,0.0,61.03 -2012-04-21 23:00:00,5055.5,0.0137,60.85 -2012-04-22 00:00:00,4719.2,0.0849,56.93 -2012-04-22 01:00:00,4435.8,0.0806,55.2 -2012-04-22 02:00:00,4226.8,0.0041,53.46 -2012-04-22 03:00:00,4094.3,0.0,52.52 -2012-04-22 04:00:00,4026.2,0.0,51.52 -2012-04-22 05:00:00,4032.8,0.0,52.34 -2012-04-22 06:00:00,4065.4,0.0,50.26 -2012-04-22 07:00:00,4243.4,0.0,49.52 -2012-04-22 08:00:00,4520.9,0.0,50.1 -2012-04-22 09:00:00,4797.6,0.0,50.28 -2012-04-22 10:00:00,5050.9,0.0,50.45 -2012-04-22 11:00:00,5205.7,0.0,52.72 -2012-04-22 12:00:00,5291.6,0.0575,49.43 -2012-04-22 13:00:00,5336.6,0.04,48.42 -2012-04-22 14:00:00,5369.4,0.0652,47.86 -2012-04-22 15:00:00,5390.7,0.1008,47.34 -2012-04-22 16:00:00,5394.9,0.06,47.34 -2012-04-22 17:00:00,5441.3,0.0263,47.34 -2012-04-22 18:00:00,5525.3,0.0886,47.34 -2012-04-22 19:00:00,5616.7,0.1651,48.17 -2012-04-22 20:00:00,5620.2,0.0738,49.4 -2012-04-22 21:00:00,5453.1,0.2262,49.5 -2012-04-22 22:00:00,5164.9,0.2998,49.34 -2012-04-22 23:00:00,4802.1,0.3111,52.62 -2012-04-23 00:00:00,4464.5,0.412,48.6 -2012-04-23 01:00:00,4241.4,0.041,49.18 -2012-04-23 02:00:00,4107.8,0.086,49.18 -2012-04-23 03:00:00,4042.1,0.0153,49.34 -2012-04-23 04:00:00,4065.2,0.0384,49.92 -2012-04-23 05:00:00,4323.6,0.027,53.8 -2012-04-23 06:00:00,4865.9,0.0011,51.67 -2012-04-23 07:00:00,5482.8,0.01,53.21 -2012-04-23 08:00:00,5918.8,0.0011,53.18 -2012-04-23 09:00:00,6175.1,0.0011,53.26 -2012-04-23 10:00:00,6253.8,0.0,50.83 -2012-04-23 11:00:00,6310.8,0.0,50.42 -2012-04-23 12:00:00,6337.8,0.0,50.33 -2012-04-23 13:00:00,6328.9,0.0,49.75 -2012-04-23 14:00:00,6304.9,0.0,49.57 -2012-04-23 15:00:00,6313.2,0.0,50.59 -2012-04-23 16:00:00,6360.2,0.0,50.69 -2012-04-23 17:00:00,6371.3,0.0,51.15 -2012-04-23 18:00:00,6210.9,0.0,48.2 -2012-04-23 19:00:00,6152.5,0.0,48.76 -2012-04-23 20:00:00,6086.9,0.0,48.94 -2012-04-23 21:00:00,5834.9,0.0,47.48 -2012-04-23 22:00:00,5462.2,0.0,46.6 -2012-04-23 23:00:00,4986.6,0.0,48.46 -2012-04-24 00:00:00,4565.3,0.0,44.07 -2012-04-24 01:00:00,4306.9,0.0,42.76 -2012-04-24 02:00:00,4149.4,0.0,43.34 -2012-04-24 03:00:00,4087.8,0.0,43.51 -2012-04-24 04:00:00,4115.3,0.0,42.76 -2012-04-24 05:00:00,4369.3,0.0,42.59 -2012-04-24 06:00:00,4887.9,0.0,42.5 -2012-04-24 07:00:00,5479.2,0.0,41.76 -2012-04-24 08:00:00,5888.2,0.0,43.42 -2012-04-24 09:00:00,6127.2,0.0,44.52 -2012-04-24 10:00:00,6212.6,0.0,46.61 -2012-04-24 11:00:00,6243.1,0.0,51.18 -2012-04-24 12:00:00,6246.5,0.0,52.12 -2012-04-24 13:00:00,6243.7,0.0,54.12 -2012-04-24 14:00:00,6217.9,0.0,56.2 -2012-04-24 15:00:00,6214.2,0.0,57.27 -2012-04-24 16:00:00,6250.2,0.0,57.52 -2012-04-24 17:00:00,6218.6,0.0,58.3 -2012-04-24 18:00:00,6046.1,0.0,57.38 -2012-04-24 19:00:00,6011.3,0.0,56.15 -2012-04-24 20:00:00,6033.4,0.0,56.37 -2012-04-24 21:00:00,5811.9,0.0,55.42 -2012-04-24 22:00:00,5433.1,0.0,53.82 -2012-04-24 23:00:00,4974.5,0.0,50.74 -2012-04-25 00:00:00,4549.3,0.0,49.41 -2012-04-25 01:00:00,4280.1,0.0,48.97 -2012-04-25 02:00:00,4125.1,0.0,48.47 -2012-04-25 03:00:00,4064.3,0.0,47.55 -2012-04-25 04:00:00,4079.7,0.0,45.97 -2012-04-25 05:00:00,4331.1,0.0,48.47 -2012-04-25 06:00:00,4851.7,0.0,44.16 -2012-04-25 07:00:00,5454.3,0.0,45.92 -2012-04-25 08:00:00,5864.7,0.0,49.47 -2012-04-25 09:00:00,6090.1,0.0,51.12 -2012-04-25 10:00:00,6164.1,0.0,53.46 -2012-04-25 11:00:00,6196.0,0.0,55.24 -2012-04-25 12:00:00,6217.0,0.0,58.83 -2012-04-25 13:00:00,6215.8,0.0,60.59 -2012-04-25 14:00:00,6207.1,0.0,59.08 -2012-04-25 15:00:00,6237.7,0.0,57.28 -2012-04-25 16:00:00,6270.3,0.0,58.46 -2012-04-25 17:00:00,6263.3,0.0,56.17 -2012-04-25 18:00:00,6030.5,0.0,59.23 -2012-04-25 19:00:00,5930.3,0.0,58.46 -2012-04-25 20:00:00,5980.3,0.0,57.37 -2012-04-25 21:00:00,5775.6,0.0,55.13 -2012-04-25 22:00:00,5421.7,0.0,53.81 -2012-04-25 23:00:00,4951.1,0.0,51.93 -2012-04-26 00:00:00,4533.5,0.0,50.8 -2012-04-26 01:00:00,4269.4,0.0,50.13 -2012-04-26 02:00:00,4116.3,0.0,48.9 -2012-04-26 03:00:00,4051.4,0.0,47.4 -2012-04-26 04:00:00,4070.8,0.0,46.5 -2012-04-26 05:00:00,4312.3,0.0,44.35 -2012-04-26 06:00:00,4834.9,0.0,45.31 -2012-04-26 07:00:00,5466.6,0.0,47.54 -2012-04-26 08:00:00,5878.6,0.0,48.78 -2012-04-26 09:00:00,6129.4,0.0,50.12 -2012-04-26 10:00:00,6233.4,0.0,52.12 -2012-04-26 11:00:00,6277.2,0.0,53.12 -2012-04-26 12:00:00,6284.1,0.0,57.13 -2012-04-26 13:00:00,6311.7,0.0,59.34 -2012-04-26 14:00:00,6324.8,0.0,59.77 -2012-04-26 15:00:00,6363.4,0.0,57.93 -2012-04-26 16:00:00,6425.9,0.0069,55.58 -2012-04-26 17:00:00,6422.3,0.0178,55.01 -2012-04-26 18:00:00,6265.5,0.002,54.78 -2012-04-26 19:00:00,6164.8,0.0011,54.43 -2012-04-26 20:00:00,6073.2,0.0,54.52 -2012-04-26 21:00:00,5835.1,0.0,55.26 -2012-04-26 22:00:00,5481.0,0.0,55.09 -2012-04-26 23:00:00,5016.8,0.0,55.57 -2012-04-27 00:00:00,4594.4,0.0,56.01 -2012-04-27 01:00:00,4330.7,0.0316,56.1 -2012-04-27 02:00:00,4155.6,0.0316,54.0 -2012-04-27 03:00:00,4071.5,0.0,51.86 -2012-04-27 04:00:00,4081.0,0.0,49.67 -2012-04-27 05:00:00,4309.9,0.0,50.54 -2012-04-27 06:00:00,4810.9,0.0,47.67 -2012-04-27 07:00:00,5406.0,0.0,46.76 -2012-04-27 08:00:00,5824.8,0.0,47.6 -2012-04-27 09:00:00,6083.4,0.0,48.43 -2012-04-27 10:00:00,6179.8,0.0,48.69 -2012-04-27 11:00:00,6217.5,0.0,53.07 -2012-04-27 12:00:00,6220.8,0.0,49.93 -2012-04-27 13:00:00,6193.2,0.0,49.67 -2012-04-27 14:00:00,6148.8,0.0,49.88 -2012-04-27 15:00:00,6150.6,0.0,50.09 -2012-04-27 16:00:00,6147.9,0.0,48.59 -2012-04-27 17:00:00,6088.6,0.0,52.69 -2012-04-27 18:00:00,5886.9,0.0,47.78 -2012-04-27 19:00:00,5818.8,0.0,46.78 -2012-04-27 20:00:00,5865.2,0.0,45.58 -2012-04-27 21:00:00,5706.0,0.0,44.58 -2012-04-27 22:00:00,5428.4,0.0,43.68 -2012-04-27 23:00:00,5057.1,0.0,43.19 -2012-04-28 00:00:00,4665.1,0.0,42.48 -2012-04-28 01:00:00,4405.4,0.0,41.48 -2012-04-28 02:00:00,4238.4,0.0,41.38 -2012-04-28 03:00:00,4143.2,0.0,40.48 -2012-04-28 04:00:00,4109.2,0.0,40.38 -2012-04-28 05:00:00,4164.5,0.0,40.38 -2012-04-28 06:00:00,4281.3,0.0,39.48 -2012-04-28 07:00:00,4543.2,0.0,39.58 -2012-04-28 08:00:00,4849.0,0.0,40.77 -2012-04-28 09:00:00,5108.3,0.0,42.38 -2012-04-28 10:00:00,5291.0,0.0,44.38 -2012-04-28 11:00:00,5372.2,0.0,47.89 -2012-04-28 12:00:00,5375.2,0.0,50.48 -2012-04-28 13:00:00,5336.7,0.0,52.22 -2012-04-28 14:00:00,5298.9,0.0,55.22 -2012-04-28 15:00:00,5260.2,0.0,57.22 -2012-04-28 16:00:00,5239.2,0.0,58.31 -2012-04-28 17:00:00,5230.7,0.0,52.33 -2012-04-28 18:00:00,5263.9,0.0,58.63 -2012-04-28 19:00:00,5349.0,0.0,57.52 -2012-04-28 20:00:00,5425.4,0.0,56.31 -2012-04-28 21:00:00,5333.8,0.0,54.63 -2012-04-28 22:00:00,5127.0,0.0,53.52 -2012-04-28 23:00:00,4858.7,0.0,50.45 -2012-04-29 00:00:00,4555.3,0.0,52.41 -2012-04-29 01:00:00,4307.1,0.0,51.41 -2012-04-29 02:00:00,4133.6,0.0,50.5 -2012-04-29 03:00:00,4034.5,0.0,48.6 -2012-04-29 04:00:00,3990.7,0.0,47.49 -2012-04-29 05:00:00,4013.9,0.0,45.71 -2012-04-29 06:00:00,4069.9,0.0,44.5 -2012-04-29 07:00:00,4250.7,0.0,45.3 -2012-04-29 08:00:00,4514.4,0.0,45.83 -2012-04-29 09:00:00,4777.4,0.0,47.63 -2012-04-29 10:00:00,5004.8,0.0,50.53 -2012-04-29 11:00:00,5117.7,0.0,52.63 -2012-04-29 12:00:00,5166.0,0.0,57.37 -2012-04-29 13:00:00,5165.9,0.0,59.48 -2012-04-29 14:00:00,5159.2,0.0,60.9 -2012-04-29 15:00:00,5163.1,0.0,62.0 -2012-04-29 16:00:00,5166.7,0.0,62.0 -2012-04-29 17:00:00,5174.9,0.0,56.13 -2012-04-29 18:00:00,5200.9,0.0,61.42 -2012-04-29 19:00:00,5275.3,0.0,60.31 -2012-04-29 20:00:00,5467.9,0.0,57.52 -2012-04-29 21:00:00,5392.1,0.0,56.41 -2012-04-29 22:00:00,5126.1,0.0,53.52 -2012-04-29 23:00:00,4754.7,0.0,45.11 -2012-04-30 00:00:00,4419.0,0.0,50.19 -2012-04-30 01:00:00,4191.8,0.0,48.08 -2012-04-30 02:00:00,4052.2,0.0,47.29 -2012-04-30 03:00:00,4004.7,0.0,47.08 -2012-04-30 04:00:00,4037.0,0.0,46.77 -2012-04-30 05:00:00,4270.5,0.0,44.4 -2012-04-30 06:00:00,4790.0,0.0,44.18 -2012-04-30 07:00:00,5392.1,0.0,45.34 -2012-04-30 08:00:00,5761.2,0.0,48.28 -2012-04-30 09:00:00,6081.2,0.0,50.22 -2012-04-30 10:00:00,6183.4,0.0,52.13 -2012-04-30 11:00:00,6230.8,0.0,52.68 -2012-04-30 12:00:00,6230.6,0.0,57.34 -2012-04-30 13:00:00,6237.4,0.0,58.23 -2012-04-30 14:00:00,6216.1,0.0,58.79 -2012-04-30 15:00:00,6217.4,0.0,58.96 -2012-04-30 16:00:00,6241.0,0.0,57.79 -2012-04-30 17:00:00,6210.6,0.0,56.23 -2012-04-30 18:00:00,6018.6,0.0,54.23 -2012-04-30 19:00:00,5973.0,0.0,53.76 -2012-04-30 20:00:00,6026.0,0.0,52.2 -2012-04-30 21:00:00,5813.8,0.0,52.39 -2012-04-30 22:00:00,5450.0,0.0,53.03 -2012-04-30 23:00:00,4962.8,0.0,53.1 -2012-05-01 00:00:00,4527.9,0.0,52.65 -2012-05-01 01:00:00,4249.0,0.0,53.29 -2012-05-01 02:00:00,4098.9,0.0,53.29 -2012-05-01 03:00:00,4039.0,0.0,53.46 -2012-05-01 04:00:00,4054.0,0.0,53.65 -2012-05-01 05:00:00,4304.8,0.0572,52.09 -2012-05-01 06:00:00,4858.8,0.2306,51.36 -2012-05-01 07:00:00,5538.0,0.0529,52.21 -2012-05-01 08:00:00,5974.2,0.1036,52.72 -2012-05-01 09:00:00,6250.6,0.0152,54.43 -2012-05-01 10:00:00,6366.5,0.0,54.86 -2012-05-01 11:00:00,6416.9,0.0,56.87 -2012-05-01 12:00:00,6440.2,0.0,57.18 -2012-05-01 13:00:00,6454.6,0.0,60.2 -2012-05-01 14:00:00,6484.8,0.0,61.31 -2012-05-01 15:00:00,6526.4,0.0,64.99 -2012-05-01 16:00:00,6568.6,0.0,66.08 -2012-05-01 17:00:00,6539.1,0.0,67.68 -2012-05-01 18:00:00,6286.6,0.0,67.26 -2012-05-01 19:00:00,6146.9,0.0,66.64 -2012-05-01 20:00:00,6147.4,0.0,63.98 -2012-05-01 21:00:00,5918.1,0.0,62.41 -2012-05-01 22:00:00,5550.1,0.0,60.74 -2012-05-01 23:00:00,5046.0,0.0,52.25 -2012-05-02 00:00:00,4584.9,0.0,55.41 -2012-05-02 01:00:00,4298.8,0.0,53.55 -2012-05-02 02:00:00,4137.7,0.0,52.62 -2012-05-02 03:00:00,4062.1,0.0,52.29 -2012-05-02 04:00:00,4076.7,0.0,52.19 -2012-05-02 05:00:00,4297.1,0.0,49.16 -2012-05-02 06:00:00,4831.6,0.0,51.37 -2012-05-02 07:00:00,5471.5,0.0,51.46 -2012-05-02 08:00:00,5916.0,0.0,51.86 -2012-05-02 09:00:00,6170.0,0.0,51.46 -2012-05-02 10:00:00,6277.6,0.01,51.26 -2012-05-02 11:00:00,6328.4,0.0069,51.29 -2012-05-02 12:00:00,6353.1,0.0,51.12 -2012-05-02 13:00:00,6386.9,0.0,51.12 -2012-05-02 14:00:00,6369.1,0.0158,50.38 -2012-05-02 15:00:00,6390.6,0.0158,50.63 -2012-05-02 16:00:00,6404.1,0.0069,50.55 -2012-05-02 17:00:00,6372.8,0.0,51.54 -2012-05-02 18:00:00,6203.9,0.0,52.53 -2012-05-02 19:00:00,6104.6,0.0,52.36 -2012-05-02 20:00:00,6072.6,0.0,51.96 -2012-05-02 21:00:00,5849.5,0.0,52.53 -2012-05-02 22:00:00,5481.8,0.0,52.62 -2012-05-02 23:00:00,5008.9,0.0,48.91 -2012-05-03 00:00:00,4573.1,0.0,52.52 -2012-05-03 01:00:00,4292.7,0.0,51.78 -2012-05-03 02:00:00,4149.3,0.2302,50.85 -2012-05-03 03:00:00,4083.6,0.0536,50.85 -2012-05-03 04:00:00,4097.5,0.0082,51.26 -2012-05-03 05:00:00,4322.8,0.0,49.06 -2012-05-03 06:00:00,4847.3,0.0,51.54 -2012-05-03 07:00:00,5499.6,0.0,51.45 -2012-05-03 08:00:00,5921.4,0.0,51.78 -2012-05-03 09:00:00,6180.4,0.0,53.27 -2012-05-03 10:00:00,6298.8,0.0,53.43 -2012-05-03 11:00:00,6334.3,0.0,54.87 -2012-05-03 12:00:00,6349.8,0.0,55.11 -2012-05-03 13:00:00,6341.6,0.0,55.92 -2012-05-03 14:00:00,6326.8,0.0,56.43 -2012-05-03 15:00:00,6340.6,0.0,56.61 -2012-05-03 16:00:00,6369.9,0.0,57.02 -2012-05-03 17:00:00,6339.2,0.0,53.57 -2012-05-03 18:00:00,6123.8,0.0,57.68 -2012-05-03 19:00:00,6079.8,0.0,56.78 -2012-05-03 20:00:00,6044.6,0.0,56.38 -2012-05-03 21:00:00,5819.3,0.0,55.18 -2012-05-03 22:00:00,5475.8,0.0,54.93 -2012-05-03 23:00:00,5022.3,0.0,51.49 -2012-05-04 00:00:00,4593.8,0.0,54.09 -2012-05-04 01:00:00,4322.0,0.0,54.09 -2012-05-04 02:00:00,4159.3,0.0,54.0 -2012-05-04 03:00:00,4093.0,0.0,54.09 -2012-05-04 04:00:00,4107.4,0.0,54.09 -2012-05-04 05:00:00,4313.7,0.0,51.79 -2012-05-04 06:00:00,4866.2,0.0684,54.36 -2012-05-04 07:00:00,5483.1,0.0619,54.36 -2012-05-04 08:00:00,5898.9,0.0,55.93 -2012-05-04 09:00:00,6191.1,0.0,56.83 -2012-05-04 10:00:00,6346.3,0.0,59.19 -2012-05-04 11:00:00,6432.8,0.0,60.17 -2012-05-04 12:00:00,6471.9,0.0,61.19 -2012-05-04 13:00:00,6504.2,0.0,62.93 -2012-05-04 14:00:00,6553.8,0.0,67.78 -2012-05-04 15:00:00,6635.1,0.0,69.75 -2012-05-04 16:00:00,6667.8,0.0,71.55 -2012-05-04 17:00:00,6601.0,0.0,71.02 -2012-05-04 18:00:00,6315.4,0.0,72.14 -2012-05-04 19:00:00,6142.5,0.0,69.88 -2012-05-04 20:00:00,6107.7,0.0,67.35 -2012-05-04 21:00:00,5871.4,0.0,64.16 -2012-05-04 22:00:00,5562.8,0.0,62.09 -2012-05-04 23:00:00,5160.1,0.0,54.27 -2012-05-05 00:00:00,4756.4,0.0,60.7 -2012-05-05 01:00:00,4458.2,0.0,59.85 -2012-05-05 02:00:00,4281.8,0.0,59.3 -2012-05-05 03:00:00,4166.5,0.0,58.39 -2012-05-05 04:00:00,4115.6,0.0,57.61 -2012-05-05 05:00:00,4143.4,0.0,51.61 -2012-05-05 06:00:00,4263.5,0.0,55.78 -2012-05-05 07:00:00,4541.0,0.0,55.85 -2012-05-05 08:00:00,4887.8,0.0,55.85 -2012-05-05 09:00:00,5211.7,0.0,55.85 -2012-05-05 10:00:00,5430.9,0.0,55.86 -2012-05-05 11:00:00,5541.2,0.0,57.12 -2012-05-05 12:00:00,5589.0,0.0,56.86 -2012-05-05 13:00:00,5558.9,0.0,58.37 -2012-05-05 14:00:00,5517.1,0.0,60.96 -2012-05-05 15:00:00,5485.9,0.0,60.74 -2012-05-05 16:00:00,5469.4,0.0,62.23 -2012-05-05 17:00:00,5463.8,0.0,55.23 -2012-05-05 18:00:00,5456.4,0.0,60.78 -2012-05-05 19:00:00,5459.7,0.0,57.56 -2012-05-05 20:00:00,5495.2,0.0,57.32 -2012-05-05 21:00:00,5398.9,0.0,57.11 -2012-05-05 22:00:00,5186.6,0.0,57.1 -2012-05-05 23:00:00,4906.8,0.0,53.09 -2012-05-06 00:00:00,4605.0,0.0,57.69 -2012-05-06 01:00:00,4348.1,0.0,57.41 -2012-05-06 02:00:00,4176.4,0.0,56.93 -2012-05-06 03:00:00,4050.1,0.0,56.93 -2012-05-06 04:00:00,3996.2,0.0,56.93 -2012-05-06 05:00:00,3996.0,0.0,50.92 -2012-05-06 06:00:00,4043.2,0.0,56.02 -2012-05-06 07:00:00,4222.8,0.0,55.92 -2012-05-06 08:00:00,4496.8,0.0,56.85 -2012-05-06 09:00:00,4761.1,0.0,56.92 -2012-05-06 10:00:00,4988.9,0.0,58.19 -2012-05-06 11:00:00,5143.1,0.0,57.34 -2012-05-06 12:00:00,5223.6,0.0,59.38 -2012-05-06 13:00:00,5247.0,0.0,62.35 -2012-05-06 14:00:00,5250.0,0.0,63.26 -2012-05-06 15:00:00,5241.4,0.0,62.11 -2012-05-06 16:00:00,5240.9,0.0,62.69 -2012-05-06 17:00:00,5229.0,0.0,61.11 -2012-05-06 18:00:00,5226.2,0.0,59.63 -2012-05-06 19:00:00,5260.6,0.0,58.51 -2012-05-06 20:00:00,5424.2,0.0,56.35 -2012-05-06 21:00:00,5377.4,0.0,55.26 -2012-05-06 22:00:00,5128.3,0.0,54.28 -2012-05-06 23:00:00,4756.5,0.0,46.7 -2012-05-07 00:00:00,4400.2,0.0,53.44 -2012-05-07 01:00:00,4172.0,0.0,53.44 -2012-05-07 02:00:00,4034.3,0.0,53.28 -2012-05-07 03:00:00,3971.1,0.0,53.19 -2012-05-07 04:00:00,4000.5,0.0,53.12 -2012-05-07 05:00:00,4218.3,0.0,53.77 -2012-05-07 06:00:00,4744.4,0.0,54.25 -2012-05-07 07:00:00,5384.9,0.0,55.07 -2012-05-07 08:00:00,5813.1,0.0,56.92 -2012-05-07 09:00:00,6108.2,0.0,58.56 -2012-05-07 10:00:00,6237.8,0.0,59.72 -2012-05-07 11:00:00,6314.1,0.0,61.38 -2012-05-07 12:00:00,6369.4,0.0,63.2 -2012-05-07 13:00:00,6378.5,0.0,62.79 -2012-05-07 14:00:00,6344.4,0.0,61.01 -2012-05-07 15:00:00,6335.5,0.0,60.85 -2012-05-07 16:00:00,6337.2,0.0,60.46 -2012-05-07 17:00:00,6314.9,0.0,58.2 -2012-05-07 18:00:00,6117.2,0.0,56.84 -2012-05-07 19:00:00,6018.0,0.0069,55.11 -2012-05-07 20:00:00,5986.7,0.0,55.43 -2012-05-07 21:00:00,5763.7,0.0,55.45 -2012-05-07 22:00:00,5398.9,0.0,56.02 -2012-05-07 23:00:00,4931.2,0.0,56.02 -2012-05-08 00:00:00,4486.6,0.0,56.09 -2012-05-08 01:00:00,4230.2,0.0,56.09 -2012-05-08 02:00:00,4087.5,0.0,55.43 -2012-05-08 03:00:00,4012.3,0.0,55.43 -2012-05-08 04:00:00,4024.2,0.0,55.43 -2012-05-08 05:00:00,4246.7,0.0,52.64 -2012-05-08 06:00:00,4784.9,0.0,55.52 -2012-05-08 07:00:00,5444.9,0.0,56.26 -2012-05-08 08:00:00,5888.4,0.0,56.45 -2012-05-08 09:00:00,6152.0,0.0,57.42 -2012-05-08 10:00:00,6291.8,0.0,59.76 -2012-05-08 11:00:00,6364.7,0.0,55.75 -2012-05-08 12:00:00,6396.4,0.0,61.95 -2012-05-08 13:00:00,6427.8,0.0,63.28 -2012-05-08 14:00:00,6440.3,0.0,64.79 -2012-05-08 15:00:00,6459.6,0.0,64.38 -2012-05-08 16:00:00,6508.6,0.0,63.8 -2012-05-08 17:00:00,6472.0,0.0,58.22 -2012-05-08 18:00:00,6267.7,0.0011,60.97 -2012-05-08 19:00:00,6193.6,0.0,61.13 -2012-05-08 20:00:00,6107.1,0.0,61.21 -2012-05-08 21:00:00,5869.2,0.0169,59.71 -2012-05-08 22:00:00,5495.7,0.0,58.8 -2012-05-08 23:00:00,5016.2,0.0069,56.0 -2012-05-09 00:00:00,4576.2,0.0142,58.45 -2012-05-09 01:00:00,4313.2,0.0031,58.46 -2012-05-09 02:00:00,4155.9,0.03,58.46 -2012-05-09 03:00:00,4093.4,0.0382,59.29 -2012-05-09 04:00:00,4115.6,0.0,60.39 -2012-05-09 05:00:00,4355.0,0.0,56.68 -2012-05-09 06:00:00,4953.3,0.002,61.43 -2012-05-09 07:00:00,5674.4,0.0523,61.79 -2012-05-09 08:00:00,6163.5,0.0617,61.88 -2012-05-09 09:00:00,6497.6,0.0283,62.69 -2012-05-09 10:00:00,6637.7,0.011,62.62 -2012-05-09 11:00:00,6724.4,0.0,64.05 -2012-05-09 12:00:00,6783.1,0.0,64.95 -2012-05-09 13:00:00,6806.7,0.0,65.64 -2012-05-09 14:00:00,6796.6,0.0,67.39 -2012-05-09 15:00:00,6811.0,0.0,67.0 -2012-05-09 16:00:00,6834.0,0.0,67.55 -2012-05-09 17:00:00,6781.3,0.0,67.5 -2012-05-09 18:00:00,6522.0,0.0,67.52 -2012-05-09 19:00:00,6375.9,0.0,67.65 -2012-05-09 20:00:00,6343.7,0.0,66.05 -2012-05-09 21:00:00,6095.6,0.0,65.21 -2012-05-09 22:00:00,5713.8,0.0,64.43 -2012-05-09 23:00:00,5181.8,0.0181,61.73 -2012-05-10 00:00:00,4698.4,0.0706,59.24 -2012-05-10 01:00:00,4400.1,0.0052,58.31 -2012-05-10 02:00:00,4222.0,0.03,57.47 -2012-05-10 03:00:00,4143.6,0.0559,56.63 -2012-05-10 04:00:00,4137.4,0.022,56.43 -2012-05-10 05:00:00,4335.9,0.0163,55.69 -2012-05-10 06:00:00,4869.8,0.0,55.44 -2012-05-10 07:00:00,5506.4,0.0069,54.93 -2012-05-10 08:00:00,5946.6,0.0,55.69 -2012-05-10 09:00:00,6250.5,0.0,57.71 -2012-05-10 10:00:00,6383.0,0.0,59.38 -2012-05-10 11:00:00,6433.8,0.0,58.59 -2012-05-10 12:00:00,6435.9,0.0,62.76 -2012-05-10 13:00:00,6429.5,0.0,61.53 -2012-05-10 14:00:00,6396.6,0.0,59.49 -2012-05-10 15:00:00,6402.4,0.0,61.87 -2012-05-10 16:00:00,6404.7,0.0,60.62 -2012-05-10 17:00:00,6337.9,0.0,59.07 -2012-05-10 18:00:00,6066.7,0.0,61.29 -2012-05-10 19:00:00,5894.1,0.0,60.37 -2012-05-10 20:00:00,5909.2,0.0,57.7 -2012-05-10 21:00:00,5745.4,0.0,56.19 -2012-05-10 22:00:00,5403.3,0.0,54.85 -2012-05-10 23:00:00,4951.8,0.0,53.34 -2012-05-11 00:00:00,4514.7,0.0,53.64 -2012-05-11 01:00:00,4236.7,0.0,53.46 -2012-05-11 02:00:00,4070.0,0.0,51.89 -2012-05-11 03:00:00,3999.8,0.0,52.46 -2012-05-11 04:00:00,4005.6,0.0,51.58 -2012-05-11 05:00:00,4190.0,0.0,50.49 -2012-05-11 06:00:00,4701.3,0.0,50.49 -2012-05-11 07:00:00,5337.4,0.0,50.67 -2012-05-11 08:00:00,5770.7,0.0,52.69 -2012-05-11 09:00:00,6068.4,0.0,55.46 -2012-05-11 10:00:00,6203.9,0.0,58.29 -2012-05-11 11:00:00,6308.3,0.0,57.99 -2012-05-11 12:00:00,6319.3,0.0,63.09 -2012-05-11 13:00:00,6346.6,0.0,63.31 -2012-05-11 14:00:00,6351.5,0.0,65.6 -2012-05-11 15:00:00,6377.3,0.0,66.87 -2012-05-11 16:00:00,6371.5,0.0,67.87 -2012-05-11 17:00:00,6306.4,0.0,61.42 -2012-05-11 18:00:00,6028.0,0.0,68.49 -2012-05-11 19:00:00,5868.0,0.0,67.49 -2012-05-11 20:00:00,5842.4,0.0,66.4 -2012-05-11 21:00:00,5695.3,0.0,64.54 -2012-05-11 22:00:00,5413.2,0.0,63.31 -2012-05-11 23:00:00,5007.1,0.0,55.37 -2012-05-12 00:00:00,4596.5,0.0,59.37 -2012-05-12 01:00:00,4321.8,0.0,57.67 -2012-05-12 02:00:00,4144.8,0.0,56.78 -2012-05-12 03:00:00,4047.5,0.0,56.28 -2012-05-12 04:00:00,3993.8,0.0,54.5 -2012-05-12 05:00:00,4003.3,0.0,48.03 -2012-05-12 06:00:00,4120.1,0.0,54.13 -2012-05-12 07:00:00,4418.5,0.0,55.32 -2012-05-12 08:00:00,4786.3,0.0,57.65 -2012-05-12 09:00:00,5133.4,0.0,60.82 -2012-05-12 10:00:00,5393.4,0.0,64.58 -2012-05-12 11:00:00,5534.6,0.0,67.56 -2012-05-12 12:00:00,5608.3,0.0,72.34 -2012-05-12 13:00:00,5615.2,0.0,74.05 -2012-05-12 14:00:00,5623.3,0.0,75.18 -2012-05-12 15:00:00,5626.4,0.0,75.76 -2012-05-12 16:00:00,5627.2,0.0,76.09 -2012-05-12 17:00:00,5599.0,0.0,76.72 -2012-05-12 18:00:00,5560.3,0.0,75.42 -2012-05-12 19:00:00,5546.5,0.0,74.4 -2012-05-12 20:00:00,5636.2,0.0,72.68 -2012-05-12 21:00:00,5579.6,0.0,70.93 -2012-05-12 22:00:00,5393.6,0.0,70.55 -2012-05-12 23:00:00,5118.4,0.0,61.76 -2012-05-13 00:00:00,4797.1,0.0,68.95 -2012-05-13 01:00:00,4521.9,0.0,67.51 -2012-05-13 02:00:00,4319.9,0.0,66.46 -2012-05-13 03:00:00,4179.0,0.0,65.38 -2012-05-13 04:00:00,4109.4,0.0,64.37 -2012-05-13 05:00:00,4083.3,0.0,57.33 -2012-05-13 06:00:00,4135.5,0.0,63.03 -2012-05-13 07:00:00,4340.7,0.0,63.88 -2012-05-13 08:00:00,4665.4,0.0,65.32 -2012-05-13 09:00:00,4979.8,0.0,67.76 -2012-05-13 10:00:00,5295.6,0.0,69.41 -2012-05-13 11:00:00,5524.4,0.0,73.96 -2012-05-13 12:00:00,5652.7,0.0,75.82 -2012-05-13 13:00:00,5712.0,0.0,77.6 -2012-05-13 14:00:00,5735.9,0.0,78.37 -2012-05-13 15:00:00,5760.5,0.0,79.21 -2012-05-13 16:00:00,5787.1,0.0,78.85 -2012-05-13 17:00:00,5772.9,0.0,78.34 -2012-05-13 18:00:00,5730.7,0.0,75.62 -2012-05-13 19:00:00,5733.8,0.0,73.96 -2012-05-13 20:00:00,5893.1,0.0,73.39 -2012-05-13 21:00:00,5900.7,0.0,72.85 -2012-05-13 22:00:00,5674.8,0.0,72.24 -2012-05-13 23:00:00,5312.4,0.0,71.13 -2012-05-14 00:00:00,4957.9,0.0,70.13 -2012-05-14 01:00:00,4710.5,0.0,70.04 -2012-05-14 02:00:00,4557.5,0.0,69.33 -2012-05-14 03:00:00,4479.5,0.0011,68.25 -2012-05-14 04:00:00,4503.5,0.0,67.33 -2012-05-14 05:00:00,4733.1,0.0,59.93 -2012-05-14 06:00:00,5307.0,0.0,65.99 -2012-05-14 07:00:00,6013.6,0.0,66.07 -2012-05-14 08:00:00,6487.6,0.0,66.82 -2012-05-14 09:00:00,6822.9,0.0,67.84 -2012-05-14 10:00:00,6969.5,0.0,68.77 -2012-05-14 11:00:00,7033.2,0.0,62.83 -2012-05-14 12:00:00,7078.2,0.0,67.84 -2012-05-14 13:00:00,7077.5,0.0,70.08 -2012-05-14 14:00:00,7021.1,0.0,68.43 -2012-05-14 15:00:00,6991.6,0.0,65.36 -2012-05-14 16:00:00,6994.2,0.002,64.34 -2012-05-14 17:00:00,6922.8,0.0,62.74 -2012-05-14 18:00:00,6624.5,0.0,65.43 -2012-05-14 19:00:00,6496.7,0.0011,64.93 -2012-05-14 20:00:00,6429.4,0.0043,64.44 -2012-05-14 21:00:00,6195.0,0.0,64.27 -2012-05-14 22:00:00,5824.5,0.0,64.84 -2012-05-14 23:00:00,5324.1,0.0,59.43 -2012-05-15 00:00:00,4869.8,0.0,64.02 -2012-05-15 01:00:00,4577.3,0.0011,62.93 -2012-05-15 02:00:00,4412.5,0.0043,62.34 -2012-05-15 03:00:00,4335.4,0.0022,62.43 -2012-05-15 04:00:00,4347.0,0.0,62.33 -2012-05-15 05:00:00,4573.7,0.0,57.73 -2012-05-15 06:00:00,5162.7,0.0,62.5 -2012-05-15 07:00:00,5880.4,0.0,63.23 -2012-05-15 08:00:00,6351.7,0.0,61.94 -2012-05-15 09:00:00,6680.6,0.0,63.69 -2012-05-15 10:00:00,6806.1,0.0,63.66 -2012-05-15 11:00:00,6875.3,0.0,63.42 -2012-05-15 12:00:00,6899.3,0.0342,62.33 -2012-05-15 13:00:00,6912.4,0.0862,62.59 -2012-05-15 14:00:00,6911.8,0.0206,62.59 -2012-05-15 15:00:00,6914.3,0.0359,62.59 -2012-05-15 16:00:00,6947.1,0.0333,62.35 -2012-05-15 17:00:00,6896.0,0.0,63.28 -2012-05-15 18:00:00,6625.3,0.0,64.15 -2012-05-15 19:00:00,6462.1,0.0,63.88 -2012-05-15 20:00:00,6365.9,0.0,63.2 -2012-05-15 21:00:00,6134.7,0.0,62.3 -2012-05-15 22:00:00,5772.8,0.0069,62.28 -2012-05-15 23:00:00,5274.4,0.008,62.04 -2012-05-16 00:00:00,4839.9,0.0379,62.19 -2012-05-16 01:00:00,4544.7,0.0011,61.28 -2012-05-16 02:00:00,4367.7,0.0,61.21 -2012-05-16 03:00:00,4297.6,0.0,61.18 -2012-05-16 04:00:00,4319.3,0.0143,61.11 -2012-05-16 05:00:00,4558.2,0.011,61.21 -2012-05-16 06:00:00,5167.4,0.0069,61.82 -2012-05-16 07:00:00,5916.7,0.008,62.23 -2012-05-16 08:00:00,6457.4,0.0,63.94 -2012-05-16 09:00:00,6793.0,0.0,65.43 -2012-05-16 10:00:00,6969.4,0.0,66.36 -2012-05-16 11:00:00,7107.9,0.0,69.72 -2012-05-16 12:00:00,7220.8,0.0,71.73 -2012-05-16 13:00:00,7321.0,0.0,71.84 -2012-05-16 14:00:00,7429.6,0.0,73.88 -2012-05-16 15:00:00,7506.4,0.0,76.41 -2012-05-16 16:00:00,7527.6,0.0,77.06 -2012-05-16 17:00:00,7387.3,0.0,74.24 -2012-05-16 18:00:00,7023.3,0.0,72.56 -2012-05-16 19:00:00,6757.4,0.0,72.0 -2012-05-16 20:00:00,6695.2,0.0,71.44 -2012-05-16 21:00:00,6523.0,0.0,70.99 -2012-05-16 22:00:00,6128.4,0.0,70.14 -2012-05-16 23:00:00,5611.4,0.0,70.73 -2012-05-17 00:00:00,5104.3,0.0,71.09 -2012-05-17 01:00:00,4758.7,0.0,68.97 -2012-05-17 02:00:00,4553.5,0.0,66.39 -2012-05-17 03:00:00,4427.4,0.0,65.3 -2012-05-17 04:00:00,4349.4,0.0,62.32 -2012-05-17 05:00:00,4484.6,0.0,57.26 -2012-05-17 06:00:00,4971.1,0.0,56.32 -2012-05-17 07:00:00,5582.4,0.0,54.41 -2012-05-17 08:00:00,6038.9,0.0,54.6 -2012-05-17 09:00:00,6336.5,0.0,56.5 -2012-05-17 10:00:00,6470.1,0.0,58.52 -2012-05-17 11:00:00,6602.7,0.0,60.8 -2012-05-17 12:00:00,6628.8,0.0,63.57 -2012-05-17 13:00:00,6684.2,0.0,66.17 -2012-05-17 14:00:00,6718.8,0.0,69.01 -2012-05-17 15:00:00,6776.1,0.0,70.2 -2012-05-17 16:00:00,6824.5,0.0,69.96 -2012-05-17 17:00:00,6762.6,0.0,66.61 -2012-05-17 18:00:00,6459.7,0.0,69.63 -2012-05-17 19:00:00,6240.4,0.0,69.27 -2012-05-17 20:00:00,6179.5,0.0,66.58 -2012-05-17 21:00:00,5993.2,0.0,64.1 -2012-05-17 22:00:00,5652.4,0.0,63.13 -2012-05-17 23:00:00,5211.3,0.0,54.49 -2012-05-18 00:00:00,4770.6,0.0,60.11 -2012-05-18 01:00:00,4478.4,0.0,60.05 -2012-05-18 02:00:00,4302.2,0.0,58.14 -2012-05-18 03:00:00,4216.0,0.0,57.34 -2012-05-18 04:00:00,4215.4,0.0,58.07 -2012-05-18 05:00:00,4375.6,0.0,49.42 -2012-05-18 06:00:00,4893.3,0.0,54.58 -2012-05-18 07:00:00,5560.1,0.0,55.83 -2012-05-18 08:00:00,6061.8,0.0,58.32 -2012-05-18 09:00:00,6372.9,0.0,59.74 -2012-05-18 10:00:00,6584.2,0.0,61.83 -2012-05-18 11:00:00,6722.4,0.0,62.79 -2012-05-18 12:00:00,6772.1,0.0,68.57 -2012-05-18 13:00:00,6765.6,0.0,69.27 -2012-05-18 14:00:00,6747.0,0.0,69.75 -2012-05-18 15:00:00,6733.3,0.0,68.73 -2012-05-18 16:00:00,6712.8,0.0,67.53 -2012-05-18 17:00:00,6589.5,0.0,63.38 -2012-05-18 18:00:00,6246.4,0.0,65.68 -2012-05-18 19:00:00,6017.0,0.0,63.84 -2012-05-18 20:00:00,5944.1,0.0,61.78 -2012-05-18 21:00:00,5812.4,0.0,60.02 -2012-05-18 22:00:00,5517.7,0.0,58.93 -2012-05-18 23:00:00,5129.9,0.0,54.79 -2012-05-19 00:00:00,4740.6,0.0,57.87 -2012-05-19 01:00:00,4453.2,0.0,57.06 -2012-05-19 02:00:00,4273.4,0.0,56.22 -2012-05-19 03:00:00,4165.5,0.0,55.56 -2012-05-19 04:00:00,4119.6,0.0,56.03 -2012-05-19 05:00:00,4108.0,0.0,50.36 -2012-05-19 06:00:00,4243.7,0.0,54.38 -2012-05-19 07:00:00,4566.6,0.0,56.13 -2012-05-19 08:00:00,4956.8,0.0,59.45 -2012-05-19 09:00:00,5313.7,0.0,63.01 -2012-05-19 10:00:00,5585.0,0.0,65.95 -2012-05-19 11:00:00,5762.5,0.0,64.72 -2012-05-19 12:00:00,5855.3,0.0,72.65 -2012-05-19 13:00:00,5881.1,0.0,75.15 -2012-05-19 14:00:00,5874.0,0.0,76.86 -2012-05-19 15:00:00,5868.1,0.0,76.79 -2012-05-19 16:00:00,5857.2,0.0,75.84 -2012-05-19 17:00:00,5828.3,0.0,67.76 -2012-05-19 18:00:00,5726.1,0.0,73.34 -2012-05-19 19:00:00,5621.4,0.0,70.04 -2012-05-19 20:00:00,5636.6,0.0,67.01 -2012-05-19 21:00:00,5587.4,0.0,64.17 -2012-05-19 22:00:00,5377.5,0.0,63.04 -2012-05-19 23:00:00,5097.6,0.0,57.15 -2012-05-20 00:00:00,4793.0,0.0,62.15 -2012-05-20 01:00:00,4520.8,0.0,61.9 -2012-05-20 02:00:00,4320.3,0.0,61.31 -2012-05-20 03:00:00,4208.4,0.0,60.34 -2012-05-20 04:00:00,4149.1,0.0,59.48 -2012-05-20 05:00:00,4118.5,0.0,52.33 -2012-05-20 06:00:00,4196.6,0.0,58.3 -2012-05-20 07:00:00,4440.9,0.0,60.72 -2012-05-20 08:00:00,4794.5,0.0,64.3 -2012-05-20 09:00:00,5127.8,0.0,66.79 -2012-05-20 10:00:00,5415.0,0.0,69.12 -2012-05-20 11:00:00,5588.2,0.0,67.53 -2012-05-20 12:00:00,5673.3,0.0,73.87 -2012-05-20 13:00:00,5697.5,0.0,74.71 -2012-05-20 14:00:00,5699.5,0.0,75.71 -2012-05-20 15:00:00,5714.6,0.0,75.04 -2012-05-20 16:00:00,5740.2,0.0,74.54 -2012-05-20 17:00:00,5744.8,0.0,69.14 -2012-05-20 18:00:00,5720.1,0.0,73.03 -2012-05-20 19:00:00,5697.0,0.0,69.97 -2012-05-20 20:00:00,5800.9,0.0,67.28 -2012-05-20 21:00:00,5742.8,0.0,66.71 -2012-05-20 22:00:00,5500.7,0.0,65.25 -2012-05-20 23:00:00,5148.0,0.0,56.99 -2012-05-21 00:00:00,4808.8,0.0,62.88 -2012-05-21 01:00:00,4569.4,0.0,61.98 -2012-05-21 02:00:00,4418.1,0.0,61.31 -2012-05-21 03:00:00,4347.7,0.0,60.29 -2012-05-21 04:00:00,4370.9,0.0,59.38 -2012-05-21 05:00:00,4584.7,0.0,56.82 -2012-05-21 06:00:00,5147.5,0.0,58.71 -2012-05-21 07:00:00,5838.2,0.0,58.21 -2012-05-21 08:00:00,6353.1,0.0,58.89 -2012-05-21 09:00:00,6678.3,0.2084,57.95 -2012-05-21 10:00:00,6788.6,0.1036,58.02 -2012-05-21 11:00:00,6834.6,0.1415,58.99 -2012-05-21 12:00:00,6862.3,0.2178,60.32 -2012-05-21 13:00:00,6878.9,0.0638,59.97 -2012-05-21 14:00:00,6850.3,0.0259,59.89 -2012-05-21 15:00:00,6864.3,0.0236,60.61 -2012-05-21 16:00:00,6897.2,0.0,61.28 -2012-05-21 17:00:00,6850.4,0.0,61.21 -2012-05-21 18:00:00,6546.1,0.01,61.85 -2012-05-21 19:00:00,6404.6,0.0041,61.14 -2012-05-21 20:00:00,6310.3,0.0101,61.12 -2012-05-21 21:00:00,6070.4,0.0,61.14 -2012-05-21 22:00:00,5701.3,0.0275,60.3 -2012-05-21 23:00:00,5231.1,0.1045,58.87 -2012-05-22 00:00:00,4795.6,0.0339,60.38 -2012-05-22 01:00:00,4494.0,0.0011,60.15 -2012-05-22 02:00:00,4331.0,0.013,60.22 -2012-05-22 03:00:00,4258.9,0.0261,60.12 -2012-05-22 04:00:00,4278.7,0.0437,59.95 -2012-05-22 05:00:00,4483.0,0.0111,60.11 -2012-05-22 06:00:00,5070.3,0.035,60.38 -2012-05-22 07:00:00,5797.7,0.0141,61.28 -2012-05-22 08:00:00,6298.3,0.0217,61.38 -2012-05-22 09:00:00,6621.7,0.0,62.14 -2012-05-22 10:00:00,6790.6,0.0,62.95 -2012-05-22 11:00:00,6878.8,0.0011,61.07 -2012-05-22 12:00:00,6963.1,0.0043,65.04 -2012-05-22 13:00:00,7039.3,0.0,66.97 -2012-05-22 14:00:00,7080.4,0.0,67.95 -2012-05-22 15:00:00,7080.8,0.0,69.36 -2012-05-22 16:00:00,7097.7,0.0,68.75 -2012-05-22 17:00:00,7035.6,0.0,68.59 -2012-05-22 18:00:00,6753.9,0.0,67.44 -2012-05-22 19:00:00,6581.2,0.0,67.85 -2012-05-22 20:00:00,6510.2,0.0,66.88 -2012-05-22 21:00:00,6334.0,0.0,67.31 -2012-05-22 22:00:00,5971.0,0.0,66.37 -2012-05-22 23:00:00,5492.1,0.0,66.08 -2012-05-23 00:00:00,5021.0,0.0,65.63 -2012-05-23 01:00:00,4722.7,0.0,65.63 -2012-05-23 02:00:00,4554.7,0.0,65.62 -2012-05-23 03:00:00,4475.4,0.0,66.27 -2012-05-23 04:00:00,4489.8,0.0,66.19 -2012-05-23 05:00:00,4712.3,0.0152,65.53 -2012-05-23 06:00:00,5344.3,0.0228,65.05 -2012-05-23 07:00:00,6121.9,0.002,65.19 -2012-05-23 08:00:00,6720.2,0.0,66.9 -2012-05-23 09:00:00,7097.7,0.0,69.43 -2012-05-23 10:00:00,7293.7,0.0,70.64 -2012-05-23 11:00:00,7411.8,0.0,72.51 -2012-05-23 12:00:00,7425.7,0.0,72.88 -2012-05-23 13:00:00,7414.0,0.0,69.67 -2012-05-23 14:00:00,7414.6,0.0,70.11 -2012-05-23 15:00:00,7469.6,0.0,70.84 -2012-05-23 16:00:00,7479.3,0.0,71.57 -2012-05-23 17:00:00,7375.6,0.0,66.56 -2012-05-23 18:00:00,6985.7,0.0,70.13 -2012-05-23 19:00:00,6754.3,0.0,68.93 -2012-05-23 20:00:00,6632.8,0.0,67.43 -2012-05-23 21:00:00,6432.5,0.0,66.02 -2012-05-23 22:00:00,6047.2,0.0,64.69 -2012-05-23 23:00:00,5551.8,0.0,58.51 -2012-05-24 00:00:00,5088.2,0.0,64.92 -2012-05-24 01:00:00,4784.4,0.0,64.61 -2012-05-24 02:00:00,4605.9,0.0,64.79 -2012-05-24 03:00:00,4527.5,0.0,64.78 -2012-05-24 04:00:00,4537.7,0.0,64.85 -2012-05-24 05:00:00,4760.9,0.0069,57.49 -2012-05-24 06:00:00,5403.3,0.0159,64.18 -2012-05-24 07:00:00,6136.6,0.0011,63.54 -2012-05-24 08:00:00,6674.2,0.0,64.84 -2012-05-24 09:00:00,6976.1,0.0069,64.95 -2012-05-24 10:00:00,7107.3,0.0,65.31 -2012-05-24 11:00:00,7186.6,0.0412,65.14 -2012-05-24 12:00:00,7205.4,0.0628,65.25 -2012-05-24 13:00:00,7191.8,0.0448,64.21 -2012-05-24 14:00:00,7150.2,0.0442,64.78 -2012-05-24 15:00:00,7153.8,0.0189,65.89 -2012-05-24 16:00:00,7156.9,0.0,65.92 -2012-05-24 17:00:00,7068.6,0.0,67.3 -2012-05-24 18:00:00,6776.4,0.0275,65.68 -2012-05-24 19:00:00,6579.0,0.1223,64.77 -2012-05-24 20:00:00,6455.8,0.0061,63.88 -2012-05-24 21:00:00,6236.1,0.0308,63.43 -2012-05-24 22:00:00,5870.3,0.0,62.92 -2012-05-24 23:00:00,5397.1,0.0042,56.51 -2012-05-25 00:00:00,4959.1,0.0,62.26 -2012-05-25 01:00:00,4660.8,0.0,61.84 -2012-05-25 02:00:00,4471.4,0.0,61.02 -2012-05-25 03:00:00,4382.2,0.0,60.93 -2012-05-25 04:00:00,4388.0,0.0,60.35 -2012-05-25 05:00:00,4571.3,0.0,60.29 -2012-05-25 06:00:00,5149.9,0.0,60.29 -2012-05-25 07:00:00,5848.0,0.0,60.29 -2012-05-25 08:00:00,6352.1,0.0,61.11 -2012-05-25 09:00:00,6673.9,0.0,61.21 -2012-05-25 10:00:00,6827.3,0.0,61.95 -2012-05-25 11:00:00,6940.6,0.0,63.88 -2012-05-25 12:00:00,6997.1,0.0,64.65 -2012-05-25 13:00:00,7101.0,0.0,66.67 -2012-05-25 14:00:00,7201.2,0.0,70.79 -2012-05-25 15:00:00,7230.9,0.0,71.28 -2012-05-25 16:00:00,7266.2,0.0,71.85 -2012-05-25 17:00:00,7156.7,0.0,64.77 -2012-05-25 18:00:00,6802.0,0.0,71.89 -2012-05-25 19:00:00,6597.9,0.0,70.44 -2012-05-25 20:00:00,6492.1,0.0,68.84 -2012-05-25 21:00:00,6342.8,0.0,68.51 -2012-05-25 22:00:00,6034.2,0.0,68.35 -2012-05-25 23:00:00,5638.6,0.0,61.78 -2012-05-26 00:00:00,5224.4,0.0,66.84 -2012-05-26 01:00:00,4946.1,0.0,67.02 -2012-05-26 02:00:00,4753.9,0.0,67.68 -2012-05-26 03:00:00,4629.0,0.0,68.02 -2012-05-26 04:00:00,4565.6,0.0,67.44 -2012-05-26 05:00:00,4553.6,0.0,61.54 -2012-05-26 06:00:00,4715.1,0.0,66.78 -2012-05-26 07:00:00,5068.6,0.0,68.12 -2012-05-26 08:00:00,5495.4,0.0,70.19 -2012-05-26 09:00:00,5934.2,0.0,71.63 -2012-05-26 10:00:00,6309.8,0.0,74.58 -2012-05-26 11:00:00,6585.8,0.0,77.22 -2012-05-26 12:00:00,6770.8,0.0,80.52 -2012-05-26 13:00:00,6845.0,0.0,82.5 -2012-05-26 14:00:00,6843.7,0.0,83.6 -2012-05-26 15:00:00,6740.3,0.0,80.39 -2012-05-26 16:00:00,6688.0,0.0,79.95 -2012-05-26 17:00:00,6644.5,0.0,69.21 -2012-05-26 18:00:00,6581.9,0.0178,73.41 -2012-05-26 19:00:00,6557.8,0.0,74.22 -2012-05-26 20:00:00,6584.7,0.0,75.74 -2012-05-26 21:00:00,6556.3,0.0,75.19 -2012-05-26 22:00:00,6360.0,0.0,73.79 -2012-05-26 23:00:00,6046.5,0.0,65.84 -2012-05-27 00:00:00,5681.6,0.0,72.4 -2012-05-27 01:00:00,5373.2,0.0,72.35 -2012-05-27 02:00:00,5161.7,0.0,72.27 -2012-05-27 03:00:00,5007.6,0.0,71.67 -2012-05-27 04:00:00,4934.1,0.0,70.77 -2012-05-27 05:00:00,4885.3,0.0,63.89 -2012-05-27 06:00:00,4914.2,0.0,70.23 -2012-05-27 07:00:00,5022.2,0.0275,67.03 -2012-05-27 08:00:00,5191.1,0.0425,66.45 -2012-05-27 09:00:00,5479.0,0.0,67.11 -2012-05-27 10:00:00,5797.1,0.0,69.77 -2012-05-27 11:00:00,6060.7,0.0,71.86 -2012-05-27 12:00:00,6210.9,0.0,76.33 -2012-05-27 13:00:00,6316.7,0.0,77.66 -2012-05-27 14:00:00,6399.5,0.0,80.54 -2012-05-27 15:00:00,6403.7,0.0,78.76 -2012-05-27 16:00:00,6384.9,0.0,78.68 -2012-05-27 17:00:00,6289.9,0.0,72.39 -2012-05-27 18:00:00,6200.0,0.0,74.56 -2012-05-27 19:00:00,6151.8,0.0,74.22 -2012-05-27 20:00:00,6233.2,0.0,74.2 -2012-05-27 21:00:00,6270.2,0.0,72.36 -2012-05-27 22:00:00,6174.8,0.0,72.39 -2012-05-27 23:00:00,5942.9,0.0145,72.87 -2012-05-28 00:00:00,5639.5,0.0011,71.52 -2012-05-28 01:00:00,5375.3,0.0,71.95 -2012-05-28 02:00:00,5179.0,0.0,71.49 -2012-05-28 03:00:00,5060.3,0.0,72.2 -2012-05-28 04:00:00,5024.7,0.0,72.18 -2012-05-28 05:00:00,5027.6,0.0,65.78 -2012-05-28 06:00:00,5188.2,0.0,71.09 -2012-05-28 07:00:00,5511.1,0.0,71.17 -2012-05-28 08:00:00,5902.3,0.0,72.12 -2012-05-28 09:00:00,6315.3,0.0,73.42 -2012-05-28 10:00:00,6715.1,0.0,75.26 -2012-05-28 11:00:00,7006.1,0.0,71.61 -2012-05-28 12:00:00,7202.5,0.0,81.52 -2012-05-28 13:00:00,7366.4,0.0,83.4 -2012-05-28 14:00:00,7498.1,0.0,84.4 -2012-05-28 15:00:00,7619.0,0.0,87.45 -2012-05-28 16:00:00,7677.1,0.0,86.26 -2012-05-28 17:00:00,7714.8,0.0,86.61 -2012-05-28 18:00:00,7626.9,0.0,85.28 -2012-05-28 19:00:00,7495.7,0.0,81.79 -2012-05-28 20:00:00,7515.7,0.0,79.63 -2012-05-28 21:00:00,7551.4,0.0,78.2 -2012-05-28 22:00:00,7327.8,0.0,77.32 -2012-05-28 23:00:00,6898.1,0.0,77.49 -2012-05-29 00:00:00,6488.1,0.0,77.31 -2012-05-29 01:00:00,6209.1,0.0,77.62 -2012-05-29 02:00:00,6026.8,0.0,77.54 -2012-05-29 03:00:00,5930.3,0.0,77.51 -2012-05-29 04:00:00,5971.7,0.0,76.87 -2012-05-29 05:00:00,6189.9,0.0,76.22 -2012-05-29 06:00:00,6795.4,0.0,75.95 -2012-05-29 07:00:00,7617.1,0.0,76.54 -2012-05-29 08:00:00,8331.5,0.0,78.02 -2012-05-29 09:00:00,8885.2,0.0,79.49 -2012-05-29 10:00:00,9226.3,0.0,81.95 -2012-05-29 11:00:00,9489.2,0.0,84.84 -2012-05-29 12:00:00,9644.1,0.0,86.86 -2012-05-29 13:00:00,9697.1,0.0,87.63 -2012-05-29 14:00:00,9733.8,0.0,87.76 -2012-05-29 15:00:00,9805.8,0.0,87.13 -2012-05-29 16:00:00,9887.9,0.0,86.8 -2012-05-29 17:00:00,9838.1,0.0,86.48 -2012-05-29 18:00:00,9447.6,0.0,85.92 -2012-05-29 19:00:00,9172.1,0.0,84.32 -2012-05-29 20:00:00,8987.6,0.0,82.81 -2012-05-29 21:00:00,8567.0,0.1179,72.86 -2012-05-29 22:00:00,8031.1,0.147,71.73 -2012-05-29 23:00:00,7380.7,0.0131,65.66 -2012-05-30 00:00:00,6747.5,0.0022,69.82 -2012-05-30 01:00:00,6349.0,0.0,69.31 -2012-05-30 02:00:00,6088.2,0.009,69.3 -2012-05-30 03:00:00,5950.9,0.0,69.0 -2012-05-30 04:00:00,5956.6,0.0,69.16 -2012-05-30 05:00:00,6139.5,0.0,65.56 -2012-05-30 06:00:00,6697.1,0.0,69.34 -2012-05-30 07:00:00,7345.1,0.0,69.43 -2012-05-30 08:00:00,7825.1,0.0,70.24 -2012-05-30 09:00:00,8146.0,0.0,70.66 -2012-05-30 10:00:00,8315.6,0.0,72.19 -2012-05-30 11:00:00,8371.8,0.0,73.62 -2012-05-30 12:00:00,8402.3,0.0,74.12 -2012-05-30 13:00:00,8445.8,0.0,74.97 -2012-05-30 14:00:00,8402.8,0.0,75.12 -2012-05-30 15:00:00,8395.5,0.0,74.54 -2012-05-30 16:00:00,8500.0,0.0,75.29 -2012-05-30 17:00:00,8473.3,0.0,71.29 -2012-05-30 18:00:00,8106.0,0.0,75.56 -2012-05-30 19:00:00,7823.4,0.0,75.05 -2012-05-30 20:00:00,7706.0,0.0,74.69 -2012-05-30 21:00:00,7597.0,0.0,73.54 -2012-05-30 22:00:00,7219.9,0.0,73.04 -2012-05-30 23:00:00,6705.1,0.0,66.58 -2012-05-31 00:00:00,6175.0,0.0,70.39 -2012-05-31 01:00:00,5806.3,0.0,69.69 -2012-05-31 02:00:00,5577.2,0.0,69.35 -2012-05-31 03:00:00,5443.4,0.0,68.61 -2012-05-31 04:00:00,5407.5,0.0,67.7 -2012-05-31 05:00:00,5533.7,0.0,62.55 -2012-05-31 06:00:00,6112.0,0.0,66.97 -2012-05-31 07:00:00,6825.8,0.0,67.23 -2012-05-31 08:00:00,7310.7,0.0,68.7 -2012-05-31 09:00:00,7691.5,0.0,70.62 -2012-05-31 10:00:00,7875.9,0.0,72.28 -2012-05-31 11:00:00,7993.3,0.0,74.28 -2012-05-31 12:00:00,8074.3,0.0,76.63 -2012-05-31 13:00:00,8143.6,0.0,77.69 -2012-05-31 14:00:00,8188.8,0.0,78.36 -2012-05-31 15:00:00,8257.3,0.0,77.99 -2012-05-31 16:00:00,8304.1,0.0,77.75 -2012-05-31 17:00:00,8184.4,0.0,76.53 -2012-05-31 18:00:00,7770.5,0.0,76.75 -2012-05-31 19:00:00,7459.9,0.0,75.56 -2012-05-31 20:00:00,7279.1,0.0,74.57 -2012-05-31 21:00:00,7145.2,0.0,73.14 -2012-05-31 22:00:00,6762.5,0.0,71.54 -2012-05-31 23:00:00,6231.9,0.0,69.79 -2012-06-01 00:00:00,5710.3,0.0,68.04 -2012-06-01 01:00:00,5328.9,0.0,67.95 -2012-06-01 02:00:00,5075.2,0.0,65.71 -2012-06-01 03:00:00,4931.9,0.0,65.22 -2012-06-01 04:00:00,4882.4,0.0,64.11 -2012-06-01 05:00:00,5037.2,0.0,59.09 -2012-06-01 06:00:00,5604.0,0.0,62.47 -2012-06-01 07:00:00,6313.1,0.0,62.63 -2012-06-01 08:00:00,6846.9,0.0,64.52 -2012-06-01 09:00:00,7232.3,0.0,66.05 -2012-06-01 10:00:00,7442.1,0.0,67.81 -2012-06-01 11:00:00,7562.1,0.0,65.87 -2012-06-01 12:00:00,7613.9,0.0,71.5 -2012-06-01 13:00:00,7587.3,0.0,72.76 -2012-06-01 14:00:00,7409.7,0.0,69.59 -2012-06-01 15:00:00,7273.2,0.0,68.04 -2012-06-01 16:00:00,7194.7,0.0,67.61 -2012-06-01 17:00:00,7063.4,0.0,63.17 -2012-06-01 18:00:00,6718.0,0.0,66.52 -2012-06-01 19:00:00,6513.9,0.0,65.28 -2012-06-01 20:00:00,6408.1,0.0,63.45 -2012-06-01 21:00:00,6228.0,0.0,63.27 -2012-06-01 22:00:00,5938.9,0.0,63.54 -2012-06-01 23:00:00,5591.9,0.0,57.7 -2012-06-02 00:00:00,5210.6,0.009,64.44 -2012-06-02 01:00:00,4965.1,0.1555,64.52 -2012-06-02 02:00:00,4821.0,0.1138,65.43 -2012-06-02 03:00:00,4724.2,0.1213,65.36 -2012-06-02 04:00:00,4680.3,0.0199,65.28 -2012-06-02 05:00:00,4714.7,0.0267,65.51 -2012-06-02 06:00:00,4912.3,0.0,66.58 -2012-06-02 07:00:00,5222.9,0.0,66.51 -2012-06-02 08:00:00,5558.2,0.002,63.82 -2012-06-02 09:00:00,5898.8,0.002,63.84 -2012-06-02 10:00:00,6238.0,0.0,66.26 -2012-06-02 11:00:00,6417.1,0.0,64.16 -2012-06-02 12:00:00,6494.9,0.0,72.77 -2012-06-02 13:00:00,6504.2,0.0,73.86 -2012-06-02 14:00:00,6444.9,0.0,74.35 -2012-06-02 15:00:00,6362.4,0.0,72.93 -2012-06-02 16:00:00,6252.4,0.0,71.75 -2012-06-02 17:00:00,6161.6,0.0,65.11 -2012-06-02 18:00:00,6036.6,0.0,69.75 -2012-06-02 19:00:00,5912.8,0.0,68.83 -2012-06-02 20:00:00,5891.9,0.0,67.67 -2012-06-02 21:00:00,5866.4,0.0,66.58 -2012-06-02 22:00:00,5675.8,0.0,65.76 -2012-06-02 23:00:00,5394.2,0.0,64.73 -2012-06-03 00:00:00,5018.2,0.0,63.18 -2012-06-03 01:00:00,4749.5,0.0,62.15 -2012-06-03 02:00:00,4555.4,0.0,61.16 -2012-06-03 03:00:00,4428.1,0.0,60.77 -2012-06-03 04:00:00,4368.9,0.0,59.94 -2012-06-03 05:00:00,4393.5,0.0,57.6 -2012-06-03 06:00:00,4413.7,0.0,58.94 -2012-06-03 07:00:00,4600.4,0.0,59.89 -2012-06-03 08:00:00,4946.7,0.0,62.0 -2012-06-03 09:00:00,5292.9,0.0,64.28 -2012-06-03 10:00:00,5605.2,0.0,66.78 -2012-06-03 11:00:00,5815.8,0.0,66.67 -2012-06-03 12:00:00,5921.4,0.0,72.63 -2012-06-03 13:00:00,5989.5,0.0,74.14 -2012-06-03 14:00:00,5967.9,0.0,76.14 -2012-06-03 15:00:00,5891.1,0.0,66.57 -2012-06-03 16:00:00,5944.8,0.0,69.94 -2012-06-03 17:00:00,5932.8,0.0173,65.1 -2012-06-03 18:00:00,5907.5,0.0325,68.31 -2012-06-03 19:00:00,5841.6,0.0414,66.57 -2012-06-03 20:00:00,5909.8,0.0,65.68 -2012-06-03 21:00:00,5901.5,0.0,65.58 -2012-06-03 22:00:00,5675.1,0.0,65.39 -2012-06-03 23:00:00,5303.0,0.0,59.4 -2012-06-04 00:00:00,4940.7,0.0,63.84 -2012-06-04 01:00:00,4683.4,0.0,63.48 -2012-06-04 02:00:00,4517.0,0.0,62.01 -2012-06-04 03:00:00,4444.9,0.0,61.51 -2012-06-04 04:00:00,4465.3,0.0,60.7 -2012-06-04 05:00:00,4674.8,0.0,55.78 -2012-06-04 06:00:00,5218.1,0.0,59.1 -2012-06-04 07:00:00,5875.8,0.0,59.37 -2012-06-04 08:00:00,6298.2,0.0,59.12 -2012-06-04 09:00:00,6596.3,0.0,58.6 -2012-06-04 10:00:00,6663.5,0.0259,56.92 -2012-06-04 11:00:00,6702.3,0.0423,56.27 -2012-06-04 12:00:00,6709.8,0.0112,56.93 -2012-06-04 13:00:00,6733.7,0.0159,58.96 -2012-06-04 14:00:00,6732.8,0.0,60.91 -2012-06-04 15:00:00,6722.0,0.0,60.94 -2012-06-04 16:00:00,6724.6,0.0,61.28 -2012-06-04 17:00:00,6629.9,0.0,55.95 -2012-06-04 18:00:00,6326.4,0.0,60.96 -2012-06-04 19:00:00,6102.8,0.0,58.9 -2012-06-04 20:00:00,6004.6,0.0,57.9 -2012-06-04 21:00:00,5859.2,0.0,56.77 -2012-06-04 22:00:00,5508.1,0.0,56.27 -2012-06-04 23:00:00,5038.0,0.0,53.07 -2012-06-05 00:00:00,4585.2,0.0,54.6 -2012-06-05 01:00:00,4317.1,0.0,54.37 -2012-06-05 02:00:00,4166.9,0.0,53.53 -2012-06-05 03:00:00,4095.6,0.0,52.77 -2012-06-05 04:00:00,4104.6,0.0,53.25 -2012-06-05 05:00:00,4280.6,0.0,52.08 -2012-06-05 06:00:00,4803.9,0.0,52.74 -2012-06-05 07:00:00,5461.9,0.0,54.51 -2012-06-05 08:00:00,5939.0,0.0,56.65 -2012-06-05 09:00:00,6242.4,0.0,57.35 -2012-06-05 10:00:00,6379.5,0.0,58.51 -2012-06-05 11:00:00,6447.3,0.0,57.57 -2012-06-05 12:00:00,6488.4,0.0,61.03 -2012-06-05 13:00:00,6539.1,0.0,61.53 -2012-06-05 14:00:00,6559.5,0.0,63.04 -2012-06-05 15:00:00,6551.0,0.0,61.85 -2012-06-05 16:00:00,6558.9,0.0,61.75 -2012-06-05 17:00:00,6510.1,0.0069,60.28 -2012-06-05 18:00:00,6228.6,0.0,61.79 -2012-06-05 19:00:00,6044.0,0.0,61.45 -2012-06-05 20:00:00,5990.2,0.0,61.05 -2012-06-05 21:00:00,5870.8,0.0,60.38 -2012-06-05 22:00:00,5538.2,0.0,59.85 -2012-06-05 23:00:00,5088.7,0.0,55.19 -2012-06-06 00:00:00,4634.9,0.0,58.45 -2012-06-06 01:00:00,4362.4,0.0,56.88 -2012-06-06 02:00:00,4191.2,0.0,56.03 -2012-06-06 03:00:00,4115.7,0.0,56.27 -2012-06-06 04:00:00,4126.8,0.0,55.69 -2012-06-06 05:00:00,4296.3,0.0,55.03 -2012-06-06 06:00:00,4882.3,0.0,54.94 -2012-06-06 07:00:00,5600.1,0.0,56.53 -2012-06-06 08:00:00,6134.1,0.0,59.51 -2012-06-06 09:00:00,6481.0,0.0,62.09 -2012-06-06 10:00:00,6633.3,0.0,64.23 -2012-06-06 11:00:00,6740.0,0.0,63.3 -2012-06-06 12:00:00,6802.3,0.0,68.41 -2012-06-06 13:00:00,6855.3,0.0,69.31 -2012-06-06 14:00:00,6880.1,0.0,70.22 -2012-06-06 15:00:00,6912.0,0.0,70.08 -2012-06-06 16:00:00,6928.0,0.0,69.88 -2012-06-06 17:00:00,6856.0,0.0,62.57 -2012-06-06 18:00:00,6532.6,0.0,69.64 -2012-06-06 19:00:00,6354.1,0.0,67.54 -2012-06-06 20:00:00,6227.6,0.0069,65.37 -2012-06-06 21:00:00,6084.3,0.0,61.08 -2012-06-06 22:00:00,5765.9,0.0,61.91 -2012-06-06 23:00:00,5287.0,0.0,62.58 -2012-06-07 00:00:00,4859.8,0.0,62.43 -2012-06-07 01:00:00,4564.6,0.0,61.74 -2012-06-07 02:00:00,4407.5,0.0,61.97 -2012-06-07 03:00:00,4319.0,0.009,60.17 -2012-06-07 04:00:00,4342.3,0.0,59.94 -2012-06-07 05:00:00,4516.5,0.0,58.96 -2012-06-07 06:00:00,5056.0,0.0,59.11 -2012-06-07 07:00:00,5750.5,0.0,60.1 -2012-06-07 08:00:00,6319.5,0.0,62.02 -2012-06-07 09:00:00,6716.0,0.0,64.84 -2012-06-07 10:00:00,6958.1,0.0,67.61 -2012-06-07 11:00:00,7114.2,0.0,66.17 -2012-06-07 12:00:00,7198.4,0.0,72.66 -2012-06-07 13:00:00,7268.5,0.0,74.68 -2012-06-07 14:00:00,7319.0,0.0,74.53 -2012-06-07 15:00:00,7346.9,0.0,76.13 -2012-06-07 16:00:00,7330.7,0.0,74.71 -2012-06-07 17:00:00,7196.8,0.0,65.67 -2012-06-07 18:00:00,6828.8,0.0011,70.46 -2012-06-07 19:00:00,6572.7,0.0163,69.51 -2012-06-07 20:00:00,6430.7,0.0041,68.21 -2012-06-07 21:00:00,6351.6,0.0,67.16 -2012-06-07 22:00:00,6015.1,0.0,67.62 -2012-06-07 23:00:00,5527.1,0.0,60.77 -2012-06-08 00:00:00,5060.7,0.0,64.95 -2012-06-08 01:00:00,4755.5,0.0,64.27 -2012-06-08 02:00:00,4563.6,0.0,64.84 -2012-06-08 03:00:00,4461.1,0.0,63.34 -2012-06-08 04:00:00,4453.6,0.0,62.82 -2012-06-08 05:00:00,4611.8,0.0,55.77 -2012-06-08 06:00:00,5225.4,0.0,60.68 -2012-06-08 07:00:00,5971.1,0.0,62.62 -2012-06-08 08:00:00,6535.7,0.0,65.16 -2012-06-08 09:00:00,6945.5,0.0,67.09 -2012-06-08 10:00:00,7198.1,0.0,70.52 -2012-06-08 11:00:00,7368.9,0.0,73.17 -2012-06-08 12:00:00,7486.8,0.0,76.43 -2012-06-08 13:00:00,7570.6,0.0,78.86 -2012-06-08 14:00:00,7584.6,0.0,78.52 -2012-06-08 15:00:00,7631.7,0.0,79.39 -2012-06-08 16:00:00,7684.6,0.0,80.4 -2012-06-08 17:00:00,7590.3,0.0,80.38 -2012-06-08 18:00:00,7218.2,0.0,78.72 -2012-06-08 19:00:00,6957.8,0.0,76.08 -2012-06-08 20:00:00,6782.7,0.0,75.61 -2012-06-08 21:00:00,6700.2,0.0,75.04 -2012-06-08 22:00:00,6414.2,0.0,74.6 -2012-06-08 23:00:00,6008.9,0.0,65.23 -2012-06-09 00:00:00,5554.3,0.0,72.47 -2012-06-09 01:00:00,5228.8,0.0,69.67 -2012-06-09 02:00:00,4998.0,0.0,69.36 -2012-06-09 03:00:00,4852.2,0.0,69.48 -2012-06-09 04:00:00,4778.7,0.0,69.45 -2012-06-09 05:00:00,4740.4,0.0,65.69 -2012-06-09 06:00:00,4902.1,0.0,68.7 -2012-06-09 07:00:00,5234.5,0.0,69.04 -2012-06-09 08:00:00,5589.3,0.0,68.91 -2012-06-09 09:00:00,5896.8,0.0,69.57 -2012-06-09 10:00:00,6097.0,0.0,69.09 -2012-06-09 11:00:00,6247.9,0.0,70.93 -2012-06-09 12:00:00,6396.9,0.0,72.34 -2012-06-09 13:00:00,6376.5,0.0,72.59 -2012-06-09 14:00:00,6404.2,0.0,72.57 -2012-06-09 15:00:00,6460.4,0.0,75.64 -2012-06-09 16:00:00,6527.8,0.0,77.09 -2012-06-09 17:00:00,6503.4,0.0,71.04 -2012-06-09 18:00:00,6457.7,0.0,75.68 -2012-06-09 19:00:00,6393.2,0.0,75.88 -2012-06-09 20:00:00,6382.9,0.0,75.59 -2012-06-09 21:00:00,6437.4,0.0,74.64 -2012-06-09 22:00:00,6275.3,0.0,73.64 -2012-06-09 23:00:00,5990.5,0.0,72.5 -2012-06-10 00:00:00,5641.9,0.0,71.84 -2012-06-10 01:00:00,5354.4,0.0,70.34 -2012-06-10 02:00:00,5137.3,0.0,69.35 -2012-06-10 03:00:00,5003.9,0.0,70.08 -2012-06-10 04:00:00,4921.3,0.0052,68.04 -2012-06-10 05:00:00,4875.6,0.0,61.65 -2012-06-10 06:00:00,4948.4,0.0,68.51 -2012-06-10 07:00:00,5187.3,0.0,68.53 -2012-06-10 08:00:00,5566.4,0.0,70.19 -2012-06-10 09:00:00,5977.3,0.0,73.02 -2012-06-10 10:00:00,6382.4,0.0,74.21 -2012-06-10 11:00:00,6638.4,0.0,73.41 -2012-06-10 12:00:00,6854.7,0.0,79.51 -2012-06-10 13:00:00,6990.4,0.0,81.45 -2012-06-10 14:00:00,7031.1,0.0,80.42 -2012-06-10 15:00:00,7052.2,0.0,79.2 -2012-06-10 16:00:00,7036.1,0.0,78.96 -2012-06-10 17:00:00,6942.0,0.0,72.8 -2012-06-10 18:00:00,6854.5,0.0,75.36 -2012-06-10 19:00:00,6732.3,0.0,74.01 -2012-06-10 20:00:00,6732.5,0.0,72.59 -2012-06-10 21:00:00,6735.0,0.0,71.78 -2012-06-10 22:00:00,6486.6,0.0,71.35 -2012-06-10 23:00:00,6098.9,0.0,70.38 -2012-06-11 00:00:00,5685.8,0.0,69.45 -2012-06-11 01:00:00,5396.1,0.0,69.28 -2012-06-11 02:00:00,5212.3,0.0,69.12 -2012-06-11 03:00:00,5114.6,0.0,68.29 -2012-06-11 04:00:00,5139.2,0.0,67.46 -2012-06-11 05:00:00,5369.8,0.0,58.91 -2012-06-11 06:00:00,5955.8,0.0,66.88 -2012-06-11 07:00:00,6654.2,0.0,68.05 -2012-06-11 08:00:00,7157.2,0.0,68.45 -2012-06-11 09:00:00,7554.9,0.0,71.1 -2012-06-11 10:00:00,7696.1,0.0,71.6 -2012-06-11 11:00:00,7758.2,0.0,67.67 -2012-06-11 12:00:00,7808.4,0.0,74.67 -2012-06-11 13:00:00,7823.4,0.0,76.4 -2012-06-11 14:00:00,7796.1,0.0,75.09 -2012-06-11 15:00:00,7692.5,0.0,73.83 -2012-06-11 16:00:00,7598.3,0.0,71.89 -2012-06-11 17:00:00,7449.8,0.0,64.81 -2012-06-11 18:00:00,7064.9,0.0,69.49 -2012-06-11 19:00:00,6832.1,0.0,69.1 -2012-06-11 20:00:00,6691.8,0.0,68.25 -2012-06-11 21:00:00,6562.3,0.0,66.69 -2012-06-11 22:00:00,6204.3,0.0,65.62 -2012-06-11 23:00:00,5748.7,0.0,65.36 -2012-06-12 00:00:00,5303.5,0.0,64.38 -2012-06-12 01:00:00,5014.8,0.0,65.12 -2012-06-12 02:00:00,4840.4,0.0,65.29 -2012-06-12 03:00:00,4770.4,0.0,65.96 -2012-06-12 04:00:00,4786.3,0.0,66.02 -2012-06-12 05:00:00,5002.3,0.0,66.19 -2012-06-12 06:00:00,5628.0,0.0,66.53 -2012-06-12 07:00:00,6372.7,0.0,66.45 -2012-06-12 08:00:00,6900.6,0.0,67.35 -2012-06-12 09:00:00,7275.5,0.0,69.08 -2012-06-12 10:00:00,7470.4,0.0,70.3 -2012-06-12 11:00:00,7597.5,0.0,66.19 -2012-06-12 12:00:00,7605.3,0.0,70.69 -2012-06-12 13:00:00,7597.7,0.0348,69.01 -2012-06-12 14:00:00,7560.6,0.0301,67.94 -2012-06-12 15:00:00,7560.9,0.0884,67.95 -2012-06-12 16:00:00,7571.6,0.0545,68.05 -2012-06-12 17:00:00,7489.9,0.0802,67.88 -2012-06-12 18:00:00,7180.7,0.0288,66.96 -2012-06-12 19:00:00,6978.4,0.0111,66.94 -2012-06-12 20:00:00,6870.6,0.0189,66.85 -2012-06-12 21:00:00,6658.8,0.0661,66.67 -2012-06-12 22:00:00,6281.8,0.161,66.34 -2012-06-12 23:00:00,5794.2,0.1384,65.69 -2012-06-13 00:00:00,5318.3,0.1146,64.95 -2012-06-13 01:00:00,4999.1,0.0804,64.51 -2012-06-13 02:00:00,4822.6,0.1124,64.61 -2012-06-13 03:00:00,4743.7,0.0367,64.78 -2012-06-13 04:00:00,4750.9,0.0429,64.61 -2012-06-13 05:00:00,4980.1,0.0,61.91 -2012-06-13 06:00:00,5593.5,0.0,65.46 -2012-06-13 07:00:00,6342.6,0.0,65.46 -2012-06-13 08:00:00,6886.8,0.0,65.72 -2012-06-13 09:00:00,7237.6,0.0,67.04 -2012-06-13 10:00:00,7391.1,0.0,67.79 -2012-06-13 11:00:00,7411.8,0.0011,67.09 -2012-06-13 12:00:00,7466.6,0.0069,67.39 -2012-06-13 13:00:00,7485.6,0.0219,67.76 -2012-06-13 14:00:00,7441.2,0.0,68.67 -2012-06-13 15:00:00,7395.7,0.0,67.85 -2012-06-13 16:00:00,7408.5,0.0,67.88 -2012-06-13 17:00:00,7335.5,0.0,67.72 -2012-06-13 18:00:00,6994.2,0.0,68.47 -2012-06-13 19:00:00,6785.5,0.0,68.3 -2012-06-13 20:00:00,6638.8,0.0,67.95 -2012-06-13 21:00:00,6552.1,0.0,66.44 -2012-06-13 22:00:00,6202.4,0.0,66.2 -2012-06-13 23:00:00,5720.0,0.0,65.38 -2012-06-14 00:00:00,5260.1,0.0,64.54 -2012-06-14 01:00:00,4959.6,0.0,65.36 -2012-06-14 02:00:00,4768.5,0.0,65.18 -2012-06-14 03:00:00,4688.5,0.0,65.37 -2012-06-14 04:00:00,4689.8,0.0,65.18 -2012-06-14 05:00:00,4864.9,0.0,61.17 -2012-06-14 06:00:00,5449.1,0.0,64.35 -2012-06-14 07:00:00,6167.0,0.0,64.63 -2012-06-14 08:00:00,6707.7,0.0,66.03 -2012-06-14 09:00:00,7124.2,0.0,67.61 -2012-06-14 10:00:00,7262.7,0.0,68.01 -2012-06-14 11:00:00,7339.7,0.0,68.73 -2012-06-14 12:00:00,7422.1,0.0,72.12 -2012-06-14 13:00:00,7520.7,0.0,74.26 -2012-06-14 14:00:00,7584.9,0.0,75.43 -2012-06-14 15:00:00,7628.3,0.0,75.05 -2012-06-14 16:00:00,7644.4,0.0,74.27 -2012-06-14 17:00:00,7522.5,0.0,74.23 -2012-06-14 18:00:00,7140.3,0.0,72.72 -2012-06-14 19:00:00,6872.1,0.0,71.45 -2012-06-14 20:00:00,6694.0,0.0,69.06 -2012-06-14 21:00:00,6561.5,0.0,66.75 -2012-06-14 22:00:00,6229.5,0.0,64.85 -2012-06-14 23:00:00,5753.3,0.0,58.21 -2012-06-15 00:00:00,5290.3,0.0,63.12 -2012-06-15 01:00:00,4963.2,0.0,63.69 -2012-06-15 02:00:00,4750.5,0.0,63.54 -2012-06-15 03:00:00,4639.7,0.0,62.79 -2012-06-15 04:00:00,4627.2,0.0,61.97 -2012-06-15 05:00:00,4785.8,0.0,61.07 -2012-06-15 06:00:00,5383.2,0.0,63.71 -2012-06-15 07:00:00,6126.3,0.0,65.35 -2012-06-15 08:00:00,6736.9,0.0,66.68 -2012-06-15 09:00:00,7132.1,0.0,69.67 -2012-06-15 10:00:00,7320.2,0.0,71.8 -2012-06-15 11:00:00,7395.8,0.0,69.45 -2012-06-15 12:00:00,7452.2,0.0,74.97 -2012-06-15 13:00:00,7513.8,0.0,76.62 -2012-06-15 14:00:00,7555.0,0.0,77.29 -2012-06-15 15:00:00,7600.0,0.0,77.7 -2012-06-15 16:00:00,7592.1,0.0,77.54 -2012-06-15 17:00:00,7431.9,0.0,69.57 -2012-06-15 18:00:00,7009.3,0.0,73.99 -2012-06-15 19:00:00,6717.0,0.0,72.01 -2012-06-15 20:00:00,6516.2,0.0,70.02 -2012-06-15 21:00:00,6409.6,0.0,68.02 -2012-06-15 22:00:00,6105.1,0.0,67.53 -2012-06-15 23:00:00,5696.6,0.0,61.19 -2012-06-16 00:00:00,5297.3,0.0,65.72 -2012-06-16 01:00:00,4992.3,0.0,65.32 -2012-06-16 02:00:00,4778.2,0.0,63.57 -2012-06-16 03:00:00,4646.1,0.0,62.64 -2012-06-16 04:00:00,4573.8,0.0,62.8 -2012-06-16 05:00:00,4538.4,0.0,58.97 -2012-06-16 06:00:00,4720.8,0.0,62.41 -2012-06-16 07:00:00,5081.0,0.0,63.5 -2012-06-16 08:00:00,5514.7,0.0,67.06 -2012-06-16 09:00:00,5891.6,0.0,69.71 -2012-06-16 10:00:00,6179.4,0.0,72.11 -2012-06-16 11:00:00,6326.7,0.0,68.14 -2012-06-16 12:00:00,6378.2,0.0,75.53 -2012-06-16 13:00:00,6389.1,0.0,75.93 -2012-06-16 14:00:00,6392.3,0.0,77.86 -2012-06-16 15:00:00,6376.5,0.0,78.05 -2012-06-16 16:00:00,6340.5,0.0,73.88 -2012-06-16 17:00:00,6237.9,0.0,72.54 -2012-06-16 18:00:00,6131.0,0.0,70.53 -2012-06-16 19:00:00,6000.0,0.0,69.04 -2012-06-16 20:00:00,5938.2,0.0,67.52 -2012-06-16 21:00:00,5950.2,0.0,65.45 -2012-06-16 22:00:00,5752.8,0.0,63.61 -2012-06-16 23:00:00,5455.4,0.0,63.46 -2012-06-17 00:00:00,5140.6,0.0,64.02 -2012-06-17 01:00:00,4879.4,0.0,64.09 -2012-06-17 02:00:00,4687.9,0.0,63.45 -2012-06-17 03:00:00,4568.1,0.0,63.29 -2012-06-17 04:00:00,4499.4,0.0,63.12 -2012-06-17 05:00:00,4451.3,0.0,59.1 -2012-06-17 06:00:00,4513.3,0.0,62.45 -2012-06-17 07:00:00,4679.5,0.0,62.21 -2012-06-17 08:00:00,4951.2,0.0,62.48 -2012-06-17 09:00:00,5212.0,0.0,63.21 -2012-06-17 10:00:00,5474.3,0.0,64.58 -2012-06-17 11:00:00,5664.7,0.0,64.11 -2012-06-17 12:00:00,5765.9,0.0,68.07 -2012-06-17 13:00:00,5770.4,0.0,69.73 -2012-06-17 14:00:00,5771.8,0.0,67.46 -2012-06-17 15:00:00,5762.8,0.0,68.03 -2012-06-17 16:00:00,5759.5,0.0,68.21 -2012-06-17 17:00:00,5728.2,0.0,63.35 -2012-06-17 18:00:00,5641.7,0.0,66.45 -2012-06-17 19:00:00,5565.9,0.0,64.77 -2012-06-17 20:00:00,5627.2,0.0,63.52 -2012-06-17 21:00:00,5707.4,0.0,61.78 -2012-06-17 22:00:00,5520.0,0.0,61.36 -2012-06-17 23:00:00,5188.8,0.0,59.96 -2012-06-18 00:00:00,4858.7,0.0,59.6 -2012-06-18 01:00:00,4606.8,0.0,58.96 -2012-06-18 02:00:00,4452.8,0.0,57.88 -2012-06-18 03:00:00,4385.1,0.0,57.97 -2012-06-18 04:00:00,4408.9,0.0,59.11 -2012-06-18 05:00:00,4602.8,0.0,57.22 -2012-06-18 06:00:00,5158.6,0.0,58.96 -2012-06-18 07:00:00,5822.9,0.0,59.99 -2012-06-18 08:00:00,6353.2,0.0,61.53 -2012-06-18 09:00:00,6717.7,0.0,62.96 -2012-06-18 10:00:00,6917.9,0.0,64.12 -2012-06-18 11:00:00,7032.9,0.0,63.15 -2012-06-18 12:00:00,7106.1,0.0,67.59 -2012-06-18 13:00:00,7166.5,0.0,69.3 -2012-06-18 14:00:00,7189.3,0.0,69.52 -2012-06-18 15:00:00,7211.2,0.0,68.2 -2012-06-18 16:00:00,7201.2,0.0,67.9 -2012-06-18 17:00:00,7050.4,0.0,64.19 -2012-06-18 18:00:00,6682.9,0.0,66.11 -2012-06-18 19:00:00,6437.6,0.0,65.7 -2012-06-18 20:00:00,6332.6,0.0,64.61 -2012-06-18 21:00:00,6253.8,0.0,63.61 -2012-06-18 22:00:00,5924.2,0.0,62.78 -2012-06-18 23:00:00,5462.7,0.0,56.97 -2012-06-19 00:00:00,5027.0,0.0,62.78 -2012-06-19 01:00:00,4773.3,0.0,63.36 -2012-06-19 02:00:00,4605.6,0.0,63.36 -2012-06-19 03:00:00,4534.5,0.0,64.1 -2012-06-19 04:00:00,4555.8,0.0,64.1 -2012-06-19 05:00:00,4777.2,0.0,64.1 -2012-06-19 06:00:00,5407.0,0.0,64.34 -2012-06-19 07:00:00,6115.5,0.0,64.6 -2012-06-19 08:00:00,6618.7,0.0,65.43 -2012-06-19 09:00:00,6963.6,0.0,66.34 -2012-06-19 10:00:00,7142.6,0.0,67.52 -2012-06-19 11:00:00,7259.3,0.0,67.96 -2012-06-19 12:00:00,7358.9,0.0,68.97 -2012-06-19 13:00:00,7499.8,0.0,72.14 -2012-06-19 14:00:00,7603.9,0.0,73.77 -2012-06-19 15:00:00,7777.1,0.0,74.89 -2012-06-19 16:00:00,7875.4,0.0,76.06 -2012-06-19 17:00:00,7838.1,0.0,76.07 -2012-06-19 18:00:00,7466.9,0.0,74.33 -2012-06-19 19:00:00,7179.8,0.0,72.48 -2012-06-19 20:00:00,7028.9,0.0,72.14 -2012-06-19 21:00:00,6958.4,0.0,70.54 -2012-06-19 22:00:00,6671.9,0.0,69.78 -2012-06-19 23:00:00,6220.7,0.0,64.07 -2012-06-20 00:00:00,5729.8,0.0,70.37 -2012-06-20 01:00:00,5414.2,0.0,70.44 -2012-06-20 02:00:00,5214.8,0.0,71.1 -2012-06-20 03:00:00,5154.5,0.0,70.51 -2012-06-20 04:00:00,5205.0,0.0,71.25 -2012-06-20 05:00:00,5455.6,0.0,66.08 -2012-06-20 06:00:00,6110.0,0.0,71.32 -2012-06-20 07:00:00,6995.3,0.0,73.18 -2012-06-20 08:00:00,7793.8,0.0,74.62 -2012-06-20 09:00:00,8473.9,0.0,78.25 -2012-06-20 10:00:00,8944.1,0.0,82.56 -2012-06-20 11:00:00,9358.5,0.0,86.43 -2012-06-20 12:00:00,9610.4,0.0,90.21 -2012-06-20 13:00:00,9785.4,0.0,91.9 -2012-06-20 14:00:00,9806.5,0.0,92.22 -2012-06-20 15:00:00,9995.0,0.0,92.94 -2012-06-20 16:00:00,10138.8,0.0,92.97 -2012-06-20 17:00:00,10126.5,0.0,85.37 -2012-06-20 18:00:00,10000.6,0.0,92.02 -2012-06-20 19:00:00,9810.1,0.0,92.6 -2012-06-20 20:00:00,9660.7,0.0,91.16 -2012-06-20 21:00:00,9597.7,0.0,89.48 -2012-06-20 22:00:00,9189.7,0.0,88.18 -2012-06-20 23:00:00,8569.2,0.0,86.71 -2012-06-21 00:00:00,7946.5,0.0,85.49 -2012-06-21 01:00:00,7508.1,0.0,83.71 -2012-06-21 02:00:00,7214.7,0.0,83.35 -2012-06-21 03:00:00,7044.8,0.0,82.07 -2012-06-21 04:00:00,7023.5,0.0,81.03 -2012-06-21 05:00:00,7165.1,0.0,75.33 -2012-06-21 06:00:00,7703.5,0.0,79.97 -2012-06-21 07:00:00,8475.5,0.0,81.09 -2012-06-21 08:00:00,9143.0,0.0,82.08 -2012-06-21 09:00:00,9664.4,0.0,84.54 -2012-06-21 10:00:00,9999.8,0.0,86.64 -2012-06-21 11:00:00,10191.5,0.0,88.34 -2012-06-21 12:00:00,10223.3,0.0,90.46 -2012-06-21 13:00:00,10301.2,0.0,92.3 -2012-06-21 14:00:00,10409.6,0.0,92.05 -2012-06-21 15:00:00,10585.6,0.0,93.39 -2012-06-21 16:00:00,10685.4,0.0,93.26 -2012-06-21 17:00:00,10658.1,0.0,91.74 -2012-06-21 18:00:00,10504.8,0.0,92.37 -2012-06-21 19:00:00,10240.0,0.0,91.9 -2012-06-21 20:00:00,10048.4,0.0,90.57 -2012-06-21 21:00:00,9959.2,0.0,89.24 -2012-06-21 22:00:00,9571.0,0.0,87.83 -2012-06-21 23:00:00,8997.9,0.0,87.25 -2012-06-22 00:00:00,8399.1,0.0,86.32 -2012-06-22 01:00:00,7984.7,0.0,84.72 -2012-06-22 02:00:00,7629.1,0.0,84.12 -2012-06-22 03:00:00,7443.4,0.0,83.21 -2012-06-22 04:00:00,7403.9,0.0,81.97 -2012-06-22 05:00:00,7537.7,0.0,74.0 -2012-06-22 06:00:00,8048.3,0.0,80.34 -2012-06-22 07:00:00,8714.4,0.0,80.71 -2012-06-22 08:00:00,9349.1,0.0,80.32 -2012-06-22 09:00:00,9885.8,0.0,83.28 -2012-06-22 10:00:00,10242.5,0.0,85.45 -2012-06-22 11:00:00,10431.6,0.0,85.22 -2012-06-22 12:00:00,10425.8,0.0,88.93 -2012-06-22 13:00:00,10263.0,0.0,88.98 -2012-06-22 14:00:00,9704.0,0.0,87.7 -2012-06-22 15:00:00,9422.0,0.0061,75.49 -2012-06-22 16:00:00,9441.0,0.002,75.46 -2012-06-22 17:00:00,9504.8,0.0,78.33 -2012-06-22 18:00:00,8981.6,0.0423,73.66 -2012-06-22 19:00:00,8600.7,0.0433,71.66 -2012-06-22 20:00:00,8427.5,0.0,71.55 -2012-06-22 21:00:00,8274.7,0.0,70.98 -2012-06-22 22:00:00,7946.2,0.0,70.99 -2012-06-22 23:00:00,7494.1,0.0089,73.28 -2012-06-23 00:00:00,7042.4,0.0089,71.6 -2012-06-23 01:00:00,6701.8,0.0,70.96 -2012-06-23 02:00:00,6455.1,0.0,71.02 -2012-06-23 03:00:00,6270.4,0.0204,71.53 -2012-06-23 04:00:00,6185.5,0.002,71.53 -2012-06-23 05:00:00,6092.4,0.0,70.46 -2012-06-23 06:00:00,6200.1,0.0,70.16 -2012-06-23 07:00:00,6538.6,0.0,71.02 -2012-06-23 08:00:00,6897.8,0.0,71.11 -2012-06-23 09:00:00,7248.7,0.0,72.21 -2012-06-23 10:00:00,7567.9,0.0,74.4 -2012-06-23 11:00:00,7739.0,0.0,74.19 -2012-06-23 12:00:00,7791.4,0.0,81.12 -2012-06-23 13:00:00,7753.8,0.0,81.93 -2012-06-23 14:00:00,7739.0,0.0,81.98 -2012-06-23 15:00:00,7751.5,0.0,82.25 -2012-06-23 16:00:00,7753.0,0.0,82.72 -2012-06-23 17:00:00,7711.3,0.0,82.49 -2012-06-23 18:00:00,7574.3,0.0,82.32 -2012-06-23 19:00:00,7416.5,0.0,81.75 -2012-06-23 20:00:00,7298.0,0.0,80.4 -2012-06-23 21:00:00,7301.3,0.0,78.81 -2012-06-23 22:00:00,7105.9,0.0,75.59 -2012-06-23 23:00:00,6812.1,0.0,69.14 -2012-06-24 00:00:00,6439.7,0.0,73.22 -2012-06-24 01:00:00,6103.3,0.0,71.57 -2012-06-24 02:00:00,5840.7,0.0,70.48 -2012-06-24 03:00:00,5658.3,0.0,69.72 -2012-06-24 04:00:00,5527.1,0.0,68.54 -2012-06-24 05:00:00,5407.1,0.0,64.45 -2012-06-24 06:00:00,5481.1,0.0,66.97 -2012-06-24 07:00:00,5754.0,0.0,68.55 -2012-06-24 08:00:00,6125.2,0.0,70.33 -2012-06-24 09:00:00,6511.2,0.0,72.86 -2012-06-24 10:00:00,6857.1,0.0,75.74 -2012-06-24 11:00:00,7068.8,0.0,77.13 -2012-06-24 12:00:00,7187.1,0.0,80.85 -2012-06-24 13:00:00,7242.2,0.0,81.49 -2012-06-24 14:00:00,7291.8,0.0,81.89 -2012-06-24 15:00:00,7333.6,0.0,80.46 -2012-06-24 16:00:00,7345.5,0.0,81.31 -2012-06-24 17:00:00,7270.2,0.0,75.77 -2012-06-24 18:00:00,7148.1,0.0,78.73 -2012-06-24 19:00:00,7110.7,0.0,77.46 -2012-06-24 20:00:00,7223.1,0.0,76.62 -2012-06-24 21:00:00,7365.7,0.0,75.36 -2012-06-24 22:00:00,7223.9,0.0,75.1 -2012-06-24 23:00:00,6873.7,0.0,69.09 -2012-06-25 00:00:00,6492.6,0.0525,69.56 -2012-06-25 01:00:00,6186.1,0.0,70.17 -2012-06-25 02:00:00,5991.3,0.009,69.72 -2012-06-25 03:00:00,5938.6,0.0,69.56 -2012-06-25 04:00:00,6037.0,0.0,70.96 -2012-06-25 05:00:00,6287.9,0.0,71.69 -2012-06-25 06:00:00,6802.9,0.0,71.86 -2012-06-25 07:00:00,7330.8,0.0542,69.85 -2012-06-25 08:00:00,7603.0,0.0502,67.05 -2012-06-25 09:00:00,7860.1,0.0173,64.77 -2012-06-25 10:00:00,7978.9,0.0064,65.32 -2012-06-25 11:00:00,8063.7,0.0,67.32 -2012-06-25 12:00:00,8126.7,0.0,68.4 -2012-06-25 13:00:00,8155.7,0.0,69.81 -2012-06-25 14:00:00,8131.4,0.0,71.77 -2012-06-25 15:00:00,8222.6,0.0,72.49 -2012-06-25 16:00:00,8223.7,0.052,72.82 -2012-06-25 17:00:00,7995.1,0.0969,66.56 -2012-06-25 18:00:00,7585.7,0.0022,66.87 -2012-06-25 19:00:00,7278.1,0.021,65.74 -2012-06-25 20:00:00,7069.6,0.0,65.51 -2012-06-25 21:00:00,6946.0,0.0,64.67 -2012-06-25 22:00:00,6638.8,0.0,65.73 -2012-06-25 23:00:00,6069.9,0.0,63.73 -2012-06-26 00:00:00,5520.0,0.0,63.68 -2012-06-26 01:00:00,5145.9,0.0,62.59 -2012-06-26 02:00:00,4897.7,0.0,61.68 -2012-06-26 03:00:00,4760.9,0.0,60.58 -2012-06-26 04:00:00,4736.5,0.0,59.42 -2012-06-26 05:00:00,4873.5,0.0,60.3 -2012-06-26 06:00:00,5296.5,0.0,58.58 -2012-06-26 07:00:00,5954.2,0.0,59.51 -2012-06-26 08:00:00,6539.6,0.0,61.26 -2012-06-26 09:00:00,6857.1,0.0,62.6 -2012-06-26 10:00:00,7022.3,0.0,63.96 -2012-06-26 11:00:00,7100.1,0.0,66.69 -2012-06-26 12:00:00,7176.2,0.0,67.97 -2012-06-26 13:00:00,7237.0,0.0,69.2 -2012-06-26 14:00:00,7243.3,0.0,70.13 -2012-06-26 15:00:00,7244.1,0.0,69.72 -2012-06-26 16:00:00,7240.7,0.0,69.99 -2012-06-26 17:00:00,7157.9,0.0,69.66 -2012-06-26 18:00:00,6850.4,0.0,72.0 -2012-06-26 19:00:00,6603.2,0.0,71.73 -2012-06-26 20:00:00,6466.9,0.0,70.7 -2012-06-26 21:00:00,6403.2,0.0,70.03 -2012-06-26 22:00:00,6120.4,0.0,70.09 -2012-06-26 23:00:00,5664.3,0.0,65.98 -2012-06-27 00:00:00,5212.0,0.0,67.25 -2012-06-27 01:00:00,4909.6,0.0,66.73 -2012-06-27 02:00:00,4712.5,0.0,65.87 -2012-06-27 03:00:00,4619.1,0.0,65.24 -2012-06-27 04:00:00,4627.1,0.0,65.72 -2012-06-27 05:00:00,4802.8,0.0,64.38 -2012-06-27 06:00:00,5382.4,0.0,63.48 -2012-06-27 07:00:00,6098.8,0.0,64.05 -2012-06-27 08:00:00,6707.9,0.0,66.19 -2012-06-27 09:00:00,7120.3,0.0,68.76 -2012-06-27 10:00:00,7342.7,0.0,70.97 -2012-06-27 11:00:00,7475.6,0.0,71.81 -2012-06-27 12:00:00,7589.4,0.0,75.79 -2012-06-27 13:00:00,7678.9,0.0,77.73 -2012-06-27 14:00:00,7792.0,0.0,78.12 -2012-06-27 15:00:00,7914.0,0.0,80.8 -2012-06-27 16:00:00,7998.5,0.0,81.32 -2012-06-27 17:00:00,7949.2,0.0,75.41 -2012-06-27 18:00:00,7590.9,0.0,81.26 -2012-06-27 19:00:00,7294.4,0.0,79.99 -2012-06-27 20:00:00,7109.7,0.0,79.3 -2012-06-27 21:00:00,7053.2,0.0,78.28 -2012-06-27 22:00:00,6760.2,0.0,76.25 -2012-06-27 23:00:00,6320.1,0.0,70.6 -2012-06-28 00:00:00,5857.1,0.0,73.5 -2012-06-28 01:00:00,5518.6,0.0,73.44 -2012-06-28 02:00:00,5277.1,0.0,71.66 -2012-06-28 03:00:00,5142.7,0.0,70.47 -2012-06-28 04:00:00,5128.1,0.0,69.73 -2012-06-28 05:00:00,5296.6,0.0,66.91 -2012-06-28 06:00:00,5852.4,0.0,69.13 -2012-06-28 07:00:00,6578.8,0.0,69.74 -2012-06-28 08:00:00,7184.3,0.0,71.62 -2012-06-28 09:00:00,7686.4,0.0,73.74 -2012-06-28 10:00:00,7995.8,0.0,75.98 -2012-06-28 11:00:00,8223.1,0.0,75.43 -2012-06-28 12:00:00,8397.2,0.0,81.57 -2012-06-28 13:00:00,8608.0,0.0,83.38 -2012-06-28 14:00:00,8837.2,0.0,85.99 -2012-06-28 15:00:00,9008.7,0.0,86.8 -2012-06-28 16:00:00,9124.2,0.0,87.26 -2012-06-28 17:00:00,9109.5,0.0,87.83 -2012-06-28 18:00:00,8781.2,0.0,87.64 -2012-06-28 19:00:00,8521.2,0.0,86.74 -2012-06-28 20:00:00,8358.6,0.0,85.55 -2012-06-28 21:00:00,8325.6,0.0,84.58 -2012-06-28 22:00:00,8055.2,0.0,82.99 -2012-06-28 23:00:00,7588.8,0.0,82.41 -2012-06-29 00:00:00,7058.7,0.0,81.76 -2012-06-29 01:00:00,6642.8,0.0,80.56 -2012-06-29 02:00:00,6358.9,0.0,79.73 -2012-06-29 03:00:00,6204.1,0.0,78.31 -2012-06-29 04:00:00,6170.3,0.0,77.5 -2012-06-29 05:00:00,6267.6,0.1375,71.92 -2012-06-29 06:00:00,6730.1,0.1994,70.46 -2012-06-29 07:00:00,7371.8,0.0,71.46 -2012-06-29 08:00:00,7931.0,0.0,72.92 -2012-06-29 09:00:00,8417.8,0.0,74.29 -2012-06-29 10:00:00,8851.3,0.0,77.07 -2012-06-29 11:00:00,9291.0,0.0,75.56 -2012-06-29 12:00:00,9661.0,0.0,86.46 -2012-06-29 13:00:00,9951.1,0.0,89.56 -2012-06-29 14:00:00,10181.7,0.0,91.54 -2012-06-29 15:00:00,10405.0,0.0,92.64 -2012-06-29 16:00:00,10504.1,0.0,92.49 -2012-06-29 17:00:00,10463.6,0.0,93.27 -2012-06-29 18:00:00,10103.2,0.0,92.02 -2012-06-29 19:00:00,9785.3,0.0,92.03 -2012-06-29 20:00:00,9546.1,0.0,90.58 -2012-06-29 21:00:00,9431.3,0.0,89.58 -2012-06-29 22:00:00,9116.0,0.0,89.0 -2012-06-29 23:00:00,8681.4,0.0,88.33 -2012-06-30 00:00:00,8146.2,0.0,86.89 -2012-06-30 01:00:00,7660.7,0.0,84.74 -2012-06-30 02:00:00,7252.2,0.0,83.78 -2012-06-30 03:00:00,6979.9,0.0,82.33 -2012-06-30 04:00:00,6815.0,0.0,81.44 -2012-06-30 05:00:00,6680.7,0.0,70.87 -2012-06-30 06:00:00,6767.3,0.0,78.38 -2012-06-30 07:00:00,7141.1,0.0,78.44 -2012-06-30 08:00:00,7657.4,0.0,79.65 -2012-06-30 09:00:00,8136.2,0.0,81.45 -2012-06-30 10:00:00,8501.6,0.0,83.71 -2012-06-30 11:00:00,8676.3,0.0,86.68 -2012-06-30 12:00:00,8791.7,0.0,89.9 -2012-06-30 13:00:00,8844.1,0.0,90.97 -2012-06-30 14:00:00,8915.6,0.0,92.34 -2012-06-30 15:00:00,8955.7,0.0,91.85 -2012-06-30 16:00:00,8874.8,0.0,91.52 -2012-06-30 17:00:00,8669.8,0.0,89.91 -2012-06-30 18:00:00,8511.7,0.0,88.55 -2012-06-30 19:00:00,8401.7,0.0,87.08 -2012-06-30 20:00:00,8309.1,0.0,85.55 -2012-06-30 21:00:00,8371.4,0.0,83.89 -2012-06-30 22:00:00,8207.8,0.0,83.36 -2012-06-30 23:00:00,7878.7,0.0,74.91 -2012-07-01 00:00:00,7468.3,0.0,80.94 -2012-07-01 01:00:00,7096.4,0.0,79.43 -2012-07-01 02:00:00,6808.7,0.0,78.5 -2012-07-01 03:00:00,6591.5,0.0,77.39 -2012-07-01 04:00:00,6431.7,0.0,76.72 -2012-07-01 05:00:00,6297.2,0.0,70.21 -2012-07-01 06:00:00,6335.0,0.0,75.09 -2012-07-01 07:00:00,6625.4,0.0,76.14 -2012-07-01 08:00:00,7048.6,0.0,78.49 -2012-07-01 09:00:00,7541.5,0.0,81.32 -2012-07-01 10:00:00,8013.3,0.0,83.23 -2012-07-01 11:00:00,8386.2,0.0,82.25 -2012-07-01 12:00:00,8633.3,0.0,88.64 -2012-07-01 13:00:00,8811.7,0.0,91.93 -2012-07-01 14:00:00,8938.6,0.0,91.97 -2012-07-01 15:00:00,9016.8,0.0,93.13 -2012-07-01 16:00:00,9076.2,0.0,92.91 -2012-07-01 17:00:00,9037.3,0.0,82.15 -2012-07-01 18:00:00,8818.9,0.0,87.23 -2012-07-01 19:00:00,8700.4,0.0,86.12 -2012-07-01 20:00:00,8679.4,0.0,86.1 -2012-07-01 21:00:00,8727.9,0.0,84.9 -2012-07-01 22:00:00,8495.1,0.0,82.54 -2012-07-01 23:00:00,8046.2,0.0,75.66 -2012-07-02 00:00:00,7559.7,0.0,80.12 -2012-07-02 01:00:00,7154.8,0.0,78.79 -2012-07-02 02:00:00,6851.8,0.0,77.56 -2012-07-02 03:00:00,6652.2,0.0,75.39 -2012-07-02 04:00:00,6602.3,0.0,73.92 -2012-07-02 05:00:00,6708.6,0.0,69.93 -2012-07-02 06:00:00,7122.4,0.0,73.71 -2012-07-02 07:00:00,7750.0,0.0,73.73 -2012-07-02 08:00:00,8350.6,0.0,75.31 -2012-07-02 09:00:00,8833.0,0.0,77.98 -2012-07-02 10:00:00,9136.0,0.0,79.68 -2012-07-02 11:00:00,9310.0,0.0,79.51 -2012-07-02 12:00:00,9395.3,0.0,83.59 -2012-07-02 13:00:00,9459.3,0.0,84.69 -2012-07-02 14:00:00,9508.8,0.0,86.65 -2012-07-02 15:00:00,9598.0,0.0,84.8 -2012-07-02 16:00:00,9657.0,0.0,85.48 -2012-07-02 17:00:00,9571.5,0.0,80.29 -2012-07-02 18:00:00,9213.6,0.0,85.02 -2012-07-02 19:00:00,8900.9,0.0,84.49 -2012-07-02 20:00:00,8662.1,0.0,83.13 -2012-07-02 21:00:00,8604.4,0.0,81.9 -2012-07-02 22:00:00,8294.8,0.0,80.05 -2012-07-02 23:00:00,7763.2,0.0,72.58 -2012-07-03 00:00:00,7211.8,0.0,77.74 -2012-07-03 01:00:00,6805.1,0.0,76.13 -2012-07-03 02:00:00,6532.6,0.0,74.33 -2012-07-03 03:00:00,6372.3,0.0,73.9 -2012-07-03 04:00:00,6328.9,0.0,72.91 -2012-07-03 05:00:00,6438.5,0.0,66.75 -2012-07-03 06:00:00,6934.1,0.0,71.68 -2012-07-03 07:00:00,7650.9,0.0,73.35 -2012-07-03 08:00:00,8239.4,0.0,75.53 -2012-07-03 09:00:00,8716.6,0.0,76.91 -2012-07-03 10:00:00,9039.2,0.0,80.55 -2012-07-03 11:00:00,9268.7,0.0,80.02 -2012-07-03 12:00:00,9413.6,0.0,85.78 -2012-07-03 13:00:00,9531.6,0.0,86.7 -2012-07-03 14:00:00,9602.7,0.0,87.22 -2012-07-03 15:00:00,9672.5,0.0,86.62 -2012-07-03 16:00:00,9645.4,0.0,87.87 -2012-07-03 17:00:00,9448.6,0.0,78.45 -2012-07-03 18:00:00,8982.9,0.0,84.64 -2012-07-03 19:00:00,8693.9,0.0,83.22 -2012-07-03 20:00:00,8573.1,0.0,82.15 -2012-07-03 21:00:00,8558.1,0.0,81.2 -2012-07-03 22:00:00,8312.0,0.0,80.23 -2012-07-03 23:00:00,7914.2,0.0,80.13 -2012-07-04 00:00:00,7474.0,0.0,79.95 -2012-07-04 01:00:00,7128.4,0.0,80.28 -2012-07-04 02:00:00,6857.4,0.0,80.19 -2012-07-04 03:00:00,6687.7,0.0,81.02 -2012-07-04 04:00:00,6587.5,0.0,80.42 -2012-07-04 05:00:00,6529.2,0.0,72.86 -2012-07-04 06:00:00,6546.7,0.0,76.44 -2012-07-04 07:00:00,6665.2,0.04,72.05 -2012-07-04 08:00:00,6893.0,0.0158,71.48 -2012-07-04 09:00:00,7267.3,0.0,72.12 -2012-07-04 10:00:00,7682.8,0.0,74.88 -2012-07-04 11:00:00,7993.2,0.0,73.85 -2012-07-04 12:00:00,8202.4,0.0,82.83 -2012-07-04 13:00:00,8404.3,0.0,85.8 -2012-07-04 14:00:00,8558.2,0.0,88.32 -2012-07-04 15:00:00,8691.4,0.0,90.61 -2012-07-04 16:00:00,8765.3,0.0,90.85 -2012-07-04 17:00:00,8788.5,0.0,91.01 -2012-07-04 18:00:00,8674.1,0.0,91.4 -2012-07-04 19:00:00,8539.0,0.0,89.96 -2012-07-04 20:00:00,8531.5,0.0,87.81 -2012-07-04 21:00:00,8610.0,0.0,87.77 -2012-07-04 22:00:00,8586.5,0.0,87.22 -2012-07-04 23:00:00,8391.5,0.0,86.55 -2012-07-05 00:00:00,8042.9,0.0,85.01 -2012-07-05 01:00:00,7698.0,0.0,84.5 -2012-07-05 02:00:00,7438.4,0.0,83.45 -2012-07-05 03:00:00,7310.5,0.0,82.73 -2012-07-05 04:00:00,7307.7,0.0,81.95 -2012-07-05 05:00:00,7434.3,0.0,74.07 -2012-07-05 06:00:00,7927.7,0.0,79.97 -2012-07-05 07:00:00,8651.8,0.0,80.92 -2012-07-05 08:00:00,9283.7,0.0,81.98 -2012-07-05 09:00:00,9783.8,0.0,83.31 -2012-07-05 10:00:00,10086.9,0.0,85.69 -2012-07-05 11:00:00,10281.8,0.0,81.38 -2012-07-05 12:00:00,10347.4,0.0,89.93 -2012-07-05 13:00:00,10412.3,0.0,91.78 -2012-07-05 14:00:00,10472.0,0.0,92.34 -2012-07-05 15:00:00,10553.4,0.0,93.23 -2012-07-05 16:00:00,10501.4,0.0,92.94 -2012-07-05 17:00:00,10346.9,0.0,91.89 -2012-07-05 18:00:00,10010.7,0.0,91.79 -2012-07-05 19:00:00,9696.7,0.0,89.0 -2012-07-05 20:00:00,9502.0,0.0,86.27 -2012-07-05 21:00:00,9416.3,0.0,83.55 -2012-07-05 22:00:00,9029.3,0.0,81.65 -2012-07-05 23:00:00,8440.8,0.0,80.03 -2012-07-06 00:00:00,7841.4,0.0,79.0 -2012-07-06 01:00:00,7382.3,0.0,78.56 -2012-07-06 02:00:00,7079.7,0.0,76.76 -2012-07-06 03:00:00,6899.3,0.0,74.45 -2012-07-06 04:00:00,6852.9,0.0,74.09 -2012-07-06 05:00:00,6980.7,0.0,69.99 -2012-07-06 06:00:00,7461.0,0.0,73.72 -2012-07-06 07:00:00,8148.4,0.0,74.72 -2012-07-06 08:00:00,8759.6,0.0,76.83 -2012-07-06 09:00:00,9231.2,0.0,79.08 -2012-07-06 10:00:00,9529.8,0.0,80.86 -2012-07-06 11:00:00,9721.4,0.0,81.44 -2012-07-06 12:00:00,9834.0,0.0,85.37 -2012-07-06 13:00:00,9928.5,0.0,88.52 -2012-07-06 14:00:00,9995.9,0.0,89.92 -2012-07-06 15:00:00,10054.9,0.0,90.0 -2012-07-06 16:00:00,10083.1,0.0,90.19 -2012-07-06 17:00:00,10018.8,0.0,81.98 -2012-07-06 18:00:00,9655.4,0.0,87.59 -2012-07-06 19:00:00,9294.0,0.0,85.38 -2012-07-06 20:00:00,9078.1,0.0,83.17 -2012-07-06 21:00:00,8985.0,0.0,82.15 -2012-07-06 22:00:00,8694.7,0.0,81.99 -2012-07-06 23:00:00,8287.2,0.0,74.74 -2012-07-07 00:00:00,7831.5,0.0,82.43 -2012-07-07 01:00:00,7474.6,0.0,81.95 -2012-07-07 02:00:00,7218.1,0.0,81.29 -2012-07-07 03:00:00,7037.5,0.0,80.17 -2012-07-07 04:00:00,6933.9,0.0,80.02 -2012-07-07 05:00:00,6870.4,0.0,74.1 -2012-07-07 06:00:00,7002.2,0.0,79.15 -2012-07-07 07:00:00,7401.3,0.0,79.34 -2012-07-07 08:00:00,7909.0,0.0,80.63 -2012-07-07 09:00:00,8395.3,0.0,83.42 -2012-07-07 10:00:00,8821.3,0.0,86.15 -2012-07-07 11:00:00,9198.5,0.0,82.84 -2012-07-07 12:00:00,9461.3,0.0,92.05 -2012-07-07 13:00:00,9580.4,0.0,94.14 -2012-07-07 14:00:00,9405.1,0.0,94.11 -2012-07-07 15:00:00,9233.5,0.0,89.8 -2012-07-07 16:00:00,9256.6,0.0,87.85 -2012-07-07 17:00:00,9244.5,0.0,82.74 -2012-07-07 18:00:00,9080.9,0.0,89.56 -2012-07-07 19:00:00,8920.6,0.0,88.56 -2012-07-07 20:00:00,8822.6,0.0,86.82 -2012-07-07 21:00:00,8803.5,0.0,84.8 -2012-07-07 22:00:00,8603.1,0.0,83.55 -2012-07-07 23:00:00,8269.1,0.0,76.15 -2012-07-08 00:00:00,7700.3,0.2097,75.99 -2012-07-08 01:00:00,7290.0,0.2107,74.24 -2012-07-08 02:00:00,7061.7,0.0154,74.15 -2012-07-08 03:00:00,6914.8,0.0,74.32 -2012-07-08 04:00:00,6807.1,0.0,74.49 -2012-07-08 05:00:00,6698.4,0.0,72.59 -2012-07-08 06:00:00,6694.1,0.0,74.73 -2012-07-08 07:00:00,6889.7,0.0,75.17 -2012-07-08 08:00:00,7204.7,0.0,76.74 -2012-07-08 09:00:00,7605.7,0.0,77.5 -2012-07-08 10:00:00,7976.4,0.0,79.88 -2012-07-08 11:00:00,8215.6,0.0,81.64 -2012-07-08 12:00:00,8368.1,0.0,84.6 -2012-07-08 13:00:00,8461.4,0.0,86.98 -2012-07-08 14:00:00,8550.5,0.0,89.04 -2012-07-08 15:00:00,8643.4,0.0,88.79 -2012-07-08 16:00:00,8718.1,0.0,88.15 -2012-07-08 17:00:00,8698.9,0.0,81.81 -2012-07-08 18:00:00,8610.7,0.0,85.66 -2012-07-08 19:00:00,8504.4,0.0,84.19 -2012-07-08 20:00:00,8584.0,0.0,82.95 -2012-07-08 21:00:00,8783.3,0.0,80.98 -2012-07-08 22:00:00,8660.5,0.0,80.32 -2012-07-08 23:00:00,8244.6,0.0,75.48 -2012-07-09 00:00:00,7731.8,0.0,81.17 -2012-07-09 01:00:00,7292.4,0.0,79.4 -2012-07-09 02:00:00,7000.0,0.0,77.4 -2012-07-09 03:00:00,6808.8,0.0,77.14 -2012-07-09 04:00:00,6741.2,0.0,76.14 -2012-07-09 05:00:00,6837.2,0.0,71.13 -2012-07-09 06:00:00,7180.6,0.0,73.31 -2012-07-09 07:00:00,7693.0,0.0,73.88 -2012-07-09 08:00:00,8090.1,0.0,73.75 -2012-07-09 09:00:00,8457.4,0.0,74.96 -2012-07-09 10:00:00,8687.5,0.0,75.67 -2012-07-09 11:00:00,8880.0,0.0,76.86 -2012-07-09 12:00:00,9005.5,0.0,79.54 -2012-07-09 13:00:00,9157.9,0.0,82.34 -2012-07-09 14:00:00,9281.1,0.0,82.9 -2012-07-09 15:00:00,9367.8,0.0,83.2 -2012-07-09 16:00:00,9415.0,0.0,82.02 -2012-07-09 17:00:00,9326.3,0.0,80.4 -2012-07-09 18:00:00,8905.3,0.0,81.32 -2012-07-09 19:00:00,8554.0,0.0,79.17 -2012-07-09 20:00:00,8335.1,0.0,77.71 -2012-07-09 21:00:00,8286.6,0.0,76.36 -2012-07-09 22:00:00,8003.8,0.0,75.63 -2012-07-09 23:00:00,7500.8,0.0,67.4 -2012-07-10 00:00:00,6979.3,0.0,74.7 -2012-07-10 01:00:00,6598.7,0.0,74.04 -2012-07-10 02:00:00,6352.4,0.0,74.09 -2012-07-10 03:00:00,6214.4,0.0,73.5 -2012-07-10 04:00:00,6190.5,0.0,72.52 -2012-07-10 05:00:00,6320.7,0.0,67.19 -2012-07-10 06:00:00,6792.2,0.0,71.22 -2012-07-10 07:00:00,7432.7,0.0,71.63 -2012-07-10 08:00:00,7933.1,0.0,73.59 -2012-07-10 09:00:00,8320.1,0.0,74.24 -2012-07-10 10:00:00,8551.4,0.0,75.52 -2012-07-10 11:00:00,8726.7,0.0,76.52 -2012-07-10 12:00:00,8841.3,0.0,79.57 -2012-07-10 13:00:00,8971.5,0.0,81.64 -2012-07-10 14:00:00,9105.0,0.0,83.62 -2012-07-10 15:00:00,9233.0,0.0,84.12 -2012-07-10 16:00:00,9320.1,0.0,81.67 -2012-07-10 17:00:00,9206.7,0.0,78.27 -2012-07-10 18:00:00,8757.7,0.0,81.7 -2012-07-10 19:00:00,8443.9,0.0,79.55 -2012-07-10 20:00:00,8310.5,0.0,77.54 -2012-07-10 21:00:00,8311.3,0.0,75.88 -2012-07-10 22:00:00,8059.2,0.0,76.46 -2012-07-10 23:00:00,7604.2,0.0,69.82 -2012-07-11 00:00:00,7089.2,0.0,74.89 -2012-07-11 01:00:00,6696.5,0.0,74.35 -2012-07-11 02:00:00,6420.4,0.0,73.03 -2012-07-11 03:00:00,6297.9,0.0,72.87 -2012-07-11 04:00:00,6273.5,0.0,72.54 -2012-07-11 05:00:00,6481.0,0.0,68.58 -2012-07-11 06:00:00,7053.4,0.0,73.02 -2012-07-11 07:00:00,7705.4,0.0,73.28 -2012-07-11 08:00:00,8293.1,0.0,73.87 -2012-07-11 09:00:00,8685.8,0.0,76.08 -2012-07-11 10:00:00,8930.7,0.0,77.55 -2012-07-11 11:00:00,9097.0,0.0,77.23 -2012-07-11 12:00:00,9133.3,0.0,80.9 -2012-07-11 13:00:00,9226.3,0.0,82.78 -2012-07-11 14:00:00,9304.0,0.0,83.43 -2012-07-11 15:00:00,9343.9,0.0,83.7 -2012-07-11 16:00:00,9375.7,0.0,82.05 -2012-07-11 17:00:00,9288.8,0.0,75.23 -2012-07-11 18:00:00,8884.6,0.0,80.28 -2012-07-11 19:00:00,8528.0,0.0,79.19 -2012-07-11 20:00:00,8283.0,0.0,76.84 -2012-07-11 21:00:00,8215.4,0.0,75.45 -2012-07-11 22:00:00,7925.0,0.0,74.36 -2012-07-11 23:00:00,7437.9,0.0,67.95 -2012-07-12 00:00:00,6926.1,0.0,73.63 -2012-07-12 01:00:00,6561.6,0.0,73.27 -2012-07-12 02:00:00,6295.7,0.0,71.96 -2012-07-12 03:00:00,6150.5,0.0,72.54 -2012-07-12 04:00:00,6127.8,0.0,71.77 -2012-07-12 05:00:00,6303.4,0.0,63.58 -2012-07-12 06:00:00,6867.4,0.0,70.81 -2012-07-12 07:00:00,7558.7,0.0,72.28 -2012-07-12 08:00:00,8148.1,0.0,73.72 -2012-07-12 09:00:00,8588.6,0.0,76.16 -2012-07-12 10:00:00,8849.6,0.0,78.22 -2012-07-12 11:00:00,9053.5,0.0,78.87 -2012-07-12 12:00:00,9207.6,0.0,85.14 -2012-07-12 13:00:00,9321.8,0.0,85.8 -2012-07-12 14:00:00,9411.8,0.0,85.96 -2012-07-12 15:00:00,9454.0,0.0,87.13 -2012-07-12 16:00:00,9446.2,0.0,84.82 -2012-07-12 17:00:00,9298.4,0.0,77.56 -2012-07-12 18:00:00,8856.0,0.0,81.66 -2012-07-12 19:00:00,8483.8,0.0,79.73 -2012-07-12 20:00:00,8252.6,0.0,77.71 -2012-07-12 21:00:00,8192.4,0.0,76.81 -2012-07-12 22:00:00,7886.1,0.0,76.79 -2012-07-12 23:00:00,7416.4,0.0,69.54 -2012-07-13 00:00:00,6929.4,0.0,76.25 -2012-07-13 01:00:00,6577.1,0.0,75.52 -2012-07-13 02:00:00,6341.0,0.0,75.45 -2012-07-13 03:00:00,6199.4,0.0,75.18 -2012-07-13 04:00:00,6175.0,0.0,74.61 -2012-07-13 05:00:00,6359.9,0.0,67.95 -2012-07-13 06:00:00,6885.5,0.0,74.09 -2012-07-13 07:00:00,7553.2,0.0,74.51 -2012-07-13 08:00:00,8078.5,0.0,76.41 -2012-07-13 09:00:00,8565.0,0.0,78.34 -2012-07-13 10:00:00,8902.4,0.0,80.33 -2012-07-13 11:00:00,9205.4,0.0,78.4 -2012-07-13 12:00:00,9361.7,0.0,85.71 -2012-07-13 13:00:00,9384.6,0.0,86.51 -2012-07-13 14:00:00,9374.0,0.0,85.15 -2012-07-13 15:00:00,9380.1,0.0,85.22 -2012-07-13 16:00:00,9332.8,0.0,84.98 -2012-07-13 17:00:00,9122.4,0.0,76.31 -2012-07-13 18:00:00,8718.8,0.0,81.57 -2012-07-13 19:00:00,8478.5,0.0,80.31 -2012-07-13 20:00:00,8356.0,0.0,79.47 -2012-07-13 21:00:00,8279.0,0.0,79.32 -2012-07-13 22:00:00,8042.1,0.0,77.69 -2012-07-13 23:00:00,7665.4,0.0,72.72 -2012-07-14 00:00:00,7235.2,0.0,78.46 -2012-07-14 01:00:00,6909.4,0.0,77.61 -2012-07-14 02:00:00,6670.9,0.0,78.18 -2012-07-14 03:00:00,6483.1,0.0,78.17 -2012-07-14 04:00:00,6265.7,0.0,77.27 -2012-07-14 05:00:00,6144.0,0.0011,70.95 -2012-07-14 06:00:00,6222.1,0.0,73.68 -2012-07-14 07:00:00,6532.7,0.0,73.94 -2012-07-14 08:00:00,6953.3,0.0,76.17 -2012-07-14 09:00:00,7327.3,0.0,78.92 -2012-07-14 10:00:00,7515.3,0.0,79.62 -2012-07-14 11:00:00,7704.4,0.0,79.26 -2012-07-14 12:00:00,7848.3,0.0,80.44 -2012-07-14 13:00:00,7920.4,0.0,81.93 -2012-07-14 14:00:00,7991.0,0.0,82.71 -2012-07-14 15:00:00,7940.8,0.0,82.6 -2012-07-14 16:00:00,7919.1,0.0,81.92 -2012-07-14 17:00:00,7861.8,0.0,80.04 -2012-07-14 18:00:00,7749.0,0.0,81.26 -2012-07-14 19:00:00,7587.4,0.0,80.6 -2012-07-14 20:00:00,7524.7,0.0,79.76 -2012-07-14 21:00:00,7595.5,0.0,77.74 -2012-07-14 22:00:00,7472.0,0.0,76.76 -2012-07-14 23:00:00,7237.4,0.0,74.2 -2012-07-15 00:00:00,6940.3,0.0,76.5 -2012-07-15 01:00:00,6662.3,0.0,76.41 -2012-07-15 02:00:00,6432.7,0.0,76.5 -2012-07-15 03:00:00,6278.0,0.0,76.34 -2012-07-15 04:00:00,6168.3,0.0,75.67 -2012-07-15 05:00:00,6118.0,0.0,72.9 -2012-07-15 06:00:00,6155.0,0.0,74.94 -2012-07-15 07:00:00,6362.6,0.0043,75.97 -2012-07-15 08:00:00,6667.8,0.013,76.14 -2012-07-15 09:00:00,7081.5,0.0043,76.81 -2012-07-15 10:00:00,7621.6,0.0,78.98 -2012-07-15 11:00:00,8054.0,0.0,80.78 -2012-07-15 12:00:00,8320.0,0.0,84.96 -2012-07-15 13:00:00,8430.3,0.0,84.72 -2012-07-15 14:00:00,8585.8,0.0,86.85 -2012-07-15 15:00:00,8588.2,0.0,86.08 -2012-07-15 16:00:00,8642.0,0.0,84.22 -2012-07-15 17:00:00,8752.4,0.0,79.11 -2012-07-15 18:00:00,8721.0,0.0,85.72 -2012-07-15 19:00:00,8645.9,0.0,82.41 -2012-07-15 20:00:00,8767.9,0.0,82.27 -2012-07-15 21:00:00,8624.5,0.0159,78.13 -2012-07-15 22:00:00,8130.9,0.2235,74.7 -2012-07-15 23:00:00,7676.5,0.0199,73.77 -2012-07-16 00:00:00,7224.7,0.0069,73.43 -2012-07-16 01:00:00,6886.7,0.0,72.33 -2012-07-16 02:00:00,6661.2,0.0,72.17 -2012-07-16 03:00:00,6541.4,0.0,71.93 -2012-07-16 04:00:00,6551.8,0.0,71.83 -2012-07-16 05:00:00,6713.4,0.0,71.26 -2012-07-16 06:00:00,7187.7,0.0,71.83 -2012-07-16 07:00:00,7895.6,0.0,72.74 -2012-07-16 08:00:00,8545.4,0.0,74.01 -2012-07-16 09:00:00,9080.5,0.0,76.58 -2012-07-16 10:00:00,9450.7,0.0,79.38 -2012-07-16 11:00:00,9732.1,0.0,81.28 -2012-07-16 12:00:00,9908.7,0.0,85.82 -2012-07-16 13:00:00,10028.6,0.0,86.09 -2012-07-16 14:00:00,10155.6,0.0,87.22 -2012-07-16 15:00:00,10227.6,0.0,87.05 -2012-07-16 16:00:00,10332.4,0.0,89.23 -2012-07-16 17:00:00,10278.7,0.0,84.89 -2012-07-16 18:00:00,9971.3,0.0,88.08 -2012-07-16 19:00:00,9740.8,0.0,88.06 -2012-07-16 20:00:00,9609.3,0.0,87.87 -2012-07-16 21:00:00,9589.4,0.0,86.21 -2012-07-16 22:00:00,9251.7,0.0,84.9 -2012-07-16 23:00:00,8618.7,0.0,83.35 -2012-07-17 00:00:00,7973.4,0.0,82.24 -2012-07-17 01:00:00,7483.5,0.0,80.59 -2012-07-17 02:00:00,7131.2,0.0,79.39 -2012-07-17 03:00:00,6931.8,0.0,78.29 -2012-07-17 04:00:00,6884.7,0.0,77.27 -2012-07-17 05:00:00,7010.2,0.0,72.83 -2012-07-17 06:00:00,7497.1,0.0,76.28 -2012-07-17 07:00:00,8187.8,0.0,76.03 -2012-07-17 08:00:00,8811.4,0.0,77.68 -2012-07-17 09:00:00,9324.4,0.0,80.5 -2012-07-17 10:00:00,9692.2,0.0,83.29 -2012-07-17 11:00:00,10001.5,0.0,84.52 -2012-07-17 12:00:00,10171.7,0.0,89.79 -2012-07-17 13:00:00,10296.3,0.0,90.64 -2012-07-17 14:00:00,10446.2,0.0,93.53 -2012-07-17 15:00:00,10560.1,0.0,91.39 -2012-07-17 16:00:00,10721.7,0.0,93.95 -2012-07-17 17:00:00,10732.6,0.0,93.9 -2012-07-17 18:00:00,10512.9,0.0,93.62 -2012-07-17 19:00:00,10319.2,0.0,92.42 -2012-07-17 20:00:00,10200.7,0.0,91.2 -2012-07-17 21:00:00,10163.5,0.0,89.6 -2012-07-17 22:00:00,9815.0,0.0,89.31 -2012-07-17 23:00:00,9220.5,0.0,80.34 -2012-07-18 00:00:00,8594.9,0.0,87.67 -2012-07-18 01:00:00,8179.2,0.0,87.14 -2012-07-18 02:00:00,7891.2,0.0,86.45 -2012-07-18 03:00:00,7708.8,0.0,85.35 -2012-07-18 04:00:00,7674.4,0.0,83.71 -2012-07-18 05:00:00,7820.2,0.0,78.69 -2012-07-18 06:00:00,8295.3,0.0,82.42 -2012-07-18 07:00:00,8984.9,0.0,82.68 -2012-07-18 08:00:00,9558.0,0.0,83.38 -2012-07-18 09:00:00,10056.5,0.0,85.04 -2012-07-18 10:00:00,10517.5,0.0,87.53 -2012-07-18 11:00:00,10917.1,0.0,88.13 -2012-07-18 12:00:00,11098.4,0.0,97.23 -2012-07-18 13:00:00,11079.0,0.0,96.8 -2012-07-18 14:00:00,11111.5,0.0,95.46 -2012-07-18 15:00:00,10921.4,0.0,92.95 -2012-07-18 16:00:00,10355.0,0.5963,77.86 -2012-07-18 17:00:00,9945.3,0.3736,75.52 -2012-07-18 18:00:00,9765.5,0.0956,74.7 -2012-07-18 19:00:00,9524.0,0.0557,75.11 -2012-07-18 20:00:00,9361.7,0.0,75.22 -2012-07-18 21:00:00,9265.4,0.0,75.0 -2012-07-18 22:00:00,8904.1,0.0,75.6 -2012-07-18 23:00:00,8328.2,0.0,75.03 -2012-07-19 00:00:00,7764.3,0.0,74.28 -2012-07-19 01:00:00,7371.3,0.0,74.13 -2012-07-19 02:00:00,7128.6,0.0,74.7 -2012-07-19 03:00:00,7001.1,0.0,74.73 -2012-07-19 04:00:00,6996.7,0.0,74.91 -2012-07-19 05:00:00,7161.8,0.0,73.92 -2012-07-19 06:00:00,7597.5,0.0,75.11 -2012-07-19 07:00:00,8084.3,0.0,74.4 -2012-07-19 08:00:00,8391.9,0.0,74.05 -2012-07-19 09:00:00,8585.0,0.0,73.72 -2012-07-19 10:00:00,8582.5,0.0,73.24 -2012-07-19 11:00:00,8612.7,0.0,70.97 -2012-07-19 12:00:00,8639.0,0.0,73.85 -2012-07-19 13:00:00,8622.0,0.0,74.8 -2012-07-19 14:00:00,8518.7,0.0089,71.59 -2012-07-19 15:00:00,8485.2,0.0069,70.8 -2012-07-19 16:00:00,8505.2,0.0,72.22 -2012-07-19 17:00:00,8438.5,0.0,73.0 -2012-07-19 18:00:00,8140.2,0.0,74.68 -2012-07-19 19:00:00,7934.6,0.0,74.03 -2012-07-19 20:00:00,7816.6,0.0,74.02 -2012-07-19 21:00:00,7692.7,0.0,73.19 -2012-07-19 22:00:00,7403.2,0.0,73.36 -2012-07-19 23:00:00,6970.5,0.0,67.81 -2012-07-20 00:00:00,6540.6,0.0,72.55 -2012-07-20 01:00:00,6212.2,0.0,72.38 -2012-07-20 02:00:00,6011.5,0.0,72.12 -2012-07-20 03:00:00,5901.3,0.0,71.46 -2012-07-20 04:00:00,5872.3,0.0,71.12 -2012-07-20 05:00:00,6042.1,0.0329,66.91 -2012-07-20 06:00:00,6500.5,0.1009,67.86 -2012-07-20 07:00:00,7019.8,0.002,67.06 -2012-07-20 08:00:00,7403.5,0.0011,66.79 -2012-07-20 09:00:00,7643.0,0.0101,66.87 -2012-07-20 10:00:00,7719.9,0.0467,66.13 -2012-07-20 11:00:00,7717.7,0.0123,65.05 -2012-07-20 12:00:00,7655.1,0.0,64.98 -2012-07-20 13:00:00,7576.3,0.0011,65.71 -2012-07-20 14:00:00,7418.5,0.0921,62.64 -2012-07-20 15:00:00,7283.1,0.0331,62.78 -2012-07-20 16:00:00,7224.4,0.0073,63.45 -2012-07-20 17:00:00,7096.9,0.0133,65.99 -2012-07-20 18:00:00,6803.5,0.0,63.46 -2012-07-20 19:00:00,6626.2,0.0,63.63 -2012-07-20 20:00:00,6511.4,0.0069,64.04 -2012-07-20 21:00:00,6361.4,0.0,63.62 -2012-07-20 22:00:00,6094.7,0.0069,63.62 -2012-07-20 23:00:00,5762.1,0.0,63.96 -2012-07-21 00:00:00,5405.4,0.0,63.79 -2012-07-21 01:00:00,5150.0,0.0,63.56 -2012-07-21 02:00:00,4959.7,0.0,63.96 -2012-07-21 03:00:00,4849.1,0.0,63.79 -2012-07-21 04:00:00,4791.1,0.0,63.13 -2012-07-21 05:00:00,4783.7,0.0,60.66 -2012-07-21 06:00:00,4919.7,0.0,63.77 -2012-07-21 07:00:00,5216.0,0.0,65.11 -2012-07-21 08:00:00,5614.2,0.0,66.45 -2012-07-21 09:00:00,5956.0,0.0,67.81 -2012-07-21 10:00:00,6219.9,0.0,69.64 -2012-07-21 11:00:00,6379.1,0.0,71.54 -2012-07-21 12:00:00,6454.4,0.0,73.79 -2012-07-21 13:00:00,6455.6,0.0,75.38 -2012-07-21 14:00:00,6456.7,0.0,75.99 -2012-07-21 15:00:00,6469.1,0.0,76.23 -2012-07-21 16:00:00,6488.0,0.0,74.55 -2012-07-21 17:00:00,6448.6,0.0,72.22 -2012-07-21 18:00:00,6356.6,0.0,73.93 -2012-07-21 19:00:00,6254.1,0.0,72.88 -2012-07-21 20:00:00,6244.3,0.0,71.78 -2012-07-21 21:00:00,6247.8,0.0,70.02 -2012-07-21 22:00:00,6084.9,0.0,69.12 -2012-07-21 23:00:00,5856.7,0.0,63.38 -2012-07-22 00:00:00,5573.6,0.0,69.53 -2012-07-22 01:00:00,5351.1,0.0,69.53 -2012-07-22 02:00:00,5176.4,0.0,69.53 -2012-07-22 03:00:00,5049.8,0.0,68.77 -2012-07-22 04:00:00,4973.4,0.0,67.87 -2012-07-22 05:00:00,4920.1,0.0,60.31 -2012-07-22 06:00:00,4969.0,0.0,66.95 -2012-07-22 07:00:00,5221.2,0.0,67.8 -2012-07-22 08:00:00,5562.9,0.0,70.55 -2012-07-22 09:00:00,5925.4,0.0,72.32 -2012-07-22 10:00:00,6291.7,0.0,74.02 -2012-07-22 11:00:00,6516.9,0.0,73.14 -2012-07-22 12:00:00,6673.4,0.0,79.06 -2012-07-22 13:00:00,6780.7,0.0,80.6 -2012-07-22 14:00:00,6852.0,0.0,79.63 -2012-07-22 15:00:00,6934.6,0.0,81.71 -2012-07-22 16:00:00,6985.1,0.0,80.11 -2012-07-22 17:00:00,6938.3,0.0,73.78 -2012-07-22 18:00:00,6849.9,0.0,76.8 -2012-07-22 19:00:00,6706.8,0.0,75.2 -2012-07-22 20:00:00,6759.5,0.0,73.88 -2012-07-22 21:00:00,6848.4,0.0,73.11 -2012-07-22 22:00:00,6740.3,0.0,72.85 -2012-07-22 23:00:00,6482.2,0.0,68.16 -2012-07-23 00:00:00,6147.5,0.0,73.33 -2012-07-23 01:00:00,5907.2,0.0,72.6 -2012-07-23 02:00:00,5737.9,0.0,72.34 -2012-07-23 03:00:00,5665.3,0.0,71.74 -2012-07-23 04:00:00,5702.9,0.0,71.51 -2012-07-23 05:00:00,5966.8,0.0,68.06 -2012-07-23 06:00:00,6477.5,0.0,71.51 -2012-07-23 07:00:00,7113.4,0.0011,71.68 -2012-07-23 08:00:00,7766.4,0.0,72.77 -2012-07-23 09:00:00,8329.2,0.0,75.52 -2012-07-23 10:00:00,8685.9,0.0,78.01 -2012-07-23 11:00:00,8965.6,0.0,75.22 -2012-07-23 12:00:00,9260.8,0.0,82.34 -2012-07-23 13:00:00,9486.5,0.0,85.16 -2012-07-23 14:00:00,9453.2,0.0,83.12 -2012-07-23 15:00:00,9348.1,0.0,79.81 -2012-07-23 16:00:00,9326.6,0.008,78.34 -2012-07-23 17:00:00,9352.5,0.008,76.28 -2012-07-23 18:00:00,9132.6,0.0,81.59 -2012-07-23 19:00:00,8949.4,0.0,81.83 -2012-07-23 20:00:00,8921.2,0.0,81.71 -2012-07-23 21:00:00,8618.7,0.027,77.16 -2012-07-23 22:00:00,8107.9,0.0315,74.03 -2012-07-23 23:00:00,7549.6,0.008,73.02 -2012-07-24 00:00:00,7028.7,0.0,74.71 -2012-07-24 01:00:00,6679.9,0.0,75.41 -2012-07-24 02:00:00,6473.1,0.0,75.63 -2012-07-24 03:00:00,6355.9,0.0,75.37 -2012-07-24 04:00:00,6349.7,0.0,75.29 -2012-07-24 05:00:00,6584.1,0.0,72.36 -2012-07-24 06:00:00,7117.1,0.0,74.59 -2012-07-24 07:00:00,7854.6,0.0,75.32 -2012-07-24 08:00:00,8507.0,0.0,76.94 -2012-07-24 09:00:00,9064.5,0.0,79.04 -2012-07-24 10:00:00,9476.8,0.0,81.07 -2012-07-24 11:00:00,9727.0,0.0,79.47 -2012-07-24 12:00:00,9889.0,0.0,87.85 -2012-07-24 13:00:00,9999.3,0.0,88.73 -2012-07-24 14:00:00,10104.5,0.0,89.68 -2012-07-24 15:00:00,10181.1,0.0,90.1 -2012-07-24 16:00:00,10243.3,0.0,89.87 -2012-07-24 17:00:00,10208.9,0.0,90.05 -2012-07-24 18:00:00,9834.6,0.0,89.62 -2012-07-24 19:00:00,9417.5,0.0,85.56 -2012-07-24 20:00:00,9223.2,0.0,84.04 -2012-07-24 21:00:00,9047.9,0.0,83.11 -2012-07-24 22:00:00,8553.8,0.0,81.57 -2012-07-24 23:00:00,7893.9,0.0,79.4 -2012-07-25 00:00:00,7223.4,0.0,77.54 -2012-07-25 01:00:00,6707.9,0.0,76.28 -2012-07-25 02:00:00,6295.3,0.0,73.53 -2012-07-25 03:00:00,6061.3,0.0,71.61 -2012-07-25 04:00:00,5968.1,0.0,70.43 -2012-07-25 05:00:00,6088.0,0.0,68.92 -2012-07-25 06:00:00,6514.8,0.0,68.73 -2012-07-25 07:00:00,7108.4,0.0,68.18 -2012-07-25 08:00:00,7606.7,0.0,69.26 -2012-07-25 09:00:00,7978.4,0.0,70.88 -2012-07-25 10:00:00,8198.7,0.0,72.78 -2012-07-25 11:00:00,8355.2,0.0,74.3 -2012-07-25 12:00:00,8468.8,0.0,78.43 -2012-07-25 13:00:00,8604.6,0.0,80.26 -2012-07-25 14:00:00,8744.3,0.0,81.18 -2012-07-25 15:00:00,8885.0,0.0,82.93 -2012-07-25 16:00:00,9015.7,0.0,83.45 -2012-07-25 17:00:00,9008.0,0.0,79.76 -2012-07-25 18:00:00,8700.5,0.0,83.52 -2012-07-25 19:00:00,8390.8,0.0,82.99 -2012-07-25 20:00:00,8251.6,0.0,80.82 -2012-07-25 21:00:00,8207.5,0.0,80.74 -2012-07-25 22:00:00,7917.7,0.0,77.54 -2012-07-25 23:00:00,7431.2,0.0,72.06 -2012-07-26 00:00:00,6922.0,0.0,77.46 -2012-07-26 01:00:00,6541.5,0.0,76.63 -2012-07-26 02:00:00,6281.6,0.0,76.65 -2012-07-26 03:00:00,6127.6,0.0,75.74 -2012-07-26 04:00:00,6077.1,0.0,74.81 -2012-07-26 05:00:00,6258.2,0.0,73.98 -2012-07-26 06:00:00,6774.4,0.0,73.71 -2012-07-26 07:00:00,7391.4,0.0,73.55 -2012-07-26 08:00:00,7980.7,0.0,74.06 -2012-07-26 09:00:00,8393.9,0.002,73.99 -2012-07-26 10:00:00,8489.5,0.0265,71.2 -2012-07-26 11:00:00,8780.9,0.0327,73.71 -2012-07-26 12:00:00,9091.6,0.0,75.95 -2012-07-26 13:00:00,9429.7,0.0,80.01 -2012-07-26 14:00:00,9713.5,0.0,82.62 -2012-07-26 15:00:00,9987.9,0.0,86.6 -2012-07-26 16:00:00,10180.4,0.0,87.62 -2012-07-26 17:00:00,10246.7,0.0,88.17 -2012-07-26 18:00:00,9958.1,0.0,88.17 -2012-07-26 19:00:00,9723.9,0.0,86.86 -2012-07-26 20:00:00,8956.5,0.2964,73.89 -2012-07-26 21:00:00,8676.7,0.1443,72.21 -2012-07-26 22:00:00,8267.7,0.0699,72.96 -2012-07-26 23:00:00,7695.9,0.0,73.09 -2012-07-27 00:00:00,7157.1,0.0,72.33 -2012-07-27 01:00:00,6790.8,0.0,72.42 -2012-07-27 02:00:00,6533.9,0.0,72.83 -2012-07-27 03:00:00,6399.0,0.0,72.93 -2012-07-27 04:00:00,6382.5,0.0,72.98 -2012-07-27 05:00:00,6588.7,0.0,71.66 -2012-07-27 06:00:00,7078.9,0.0,72.74 -2012-07-27 07:00:00,7739.5,0.0,72.9 -2012-07-27 08:00:00,8272.1,0.0,74.67 -2012-07-27 09:00:00,8724.1,0.0,75.76 -2012-07-27 10:00:00,9141.5,0.0,77.62 -2012-07-27 11:00:00,9436.1,0.0,78.67 -2012-07-27 12:00:00,9656.2,0.0,83.41 -2012-07-27 13:00:00,9735.5,0.0,84.17 -2012-07-27 14:00:00,9710.9,0.0,83.81 -2012-07-27 15:00:00,9805.6,0.0,85.0 -2012-07-27 16:00:00,9869.4,0.0,85.93 -2012-07-27 17:00:00,9845.9,0.0,80.97 -2012-07-27 18:00:00,9517.6,0.0,86.24 -2012-07-27 19:00:00,9233.3,0.0,86.06 -2012-07-27 20:00:00,9049.1,0.0,84.49 -2012-07-27 21:00:00,8907.6,0.0,84.1 -2012-07-27 22:00:00,8572.2,0.0,82.8 -2012-07-27 23:00:00,8118.6,0.0,74.33 -2012-07-28 00:00:00,7627.5,0.0,81.15 -2012-07-28 01:00:00,7222.8,0.0,80.58 -2012-07-28 02:00:00,6917.1,0.0,78.1 -2012-07-28 03:00:00,6686.0,0.0,75.93 -2012-07-28 04:00:00,6560.9,0.0,73.93 -2012-07-28 05:00:00,6511.6,0.0,70.58 -2012-07-28 06:00:00,6577.3,0.0,74.1 -2012-07-28 07:00:00,6820.8,0.0,73.43 -2012-07-28 08:00:00,7153.7,0.0,73.52 -2012-07-28 09:00:00,7466.7,0.0,73.43 -2012-07-28 10:00:00,7705.8,0.0,73.26 -2012-07-28 11:00:00,7886.9,0.0,71.97 -2012-07-28 12:00:00,7974.8,0.0,76.01 -2012-07-28 13:00:00,7975.2,0.0,77.43 -2012-07-28 14:00:00,7916.4,0.0069,76.44 -2012-07-28 15:00:00,7874.4,0.0,76.35 -2012-07-28 16:00:00,7757.5,0.0574,75.25 -2012-07-28 17:00:00,7519.5,0.12,70.98 -2012-07-28 18:00:00,7383.2,0.0022,71.32 -2012-07-28 19:00:00,7249.3,0.0,70.72 -2012-07-28 20:00:00,7230.8,0.0,69.89 -2012-07-28 21:00:00,7165.7,0.0,70.64 -2012-07-28 22:00:00,6940.6,0.0,69.99 -2012-07-28 23:00:00,6663.2,0.0,68.83 -2012-07-29 00:00:00,6296.8,0.0,69.55 -2012-07-29 01:00:00,6016.5,0.0,68.88 -2012-07-29 02:00:00,5811.7,0.0,70.13 -2012-07-29 03:00:00,5684.3,0.0,69.22 -2012-07-29 04:00:00,5588.9,0.0,69.62 -2012-07-29 05:00:00,5546.2,0.0,68.95 -2012-07-29 06:00:00,5559.6,0.0,69.43 -2012-07-29 07:00:00,5732.3,0.0,69.69 -2012-07-29 08:00:00,6008.6,0.0,70.36 -2012-07-29 09:00:00,6306.7,0.0,71.1 -2012-07-29 10:00:00,6597.9,0.0,72.95 -2012-07-29 11:00:00,6741.6,0.0,72.36 -2012-07-29 12:00:00,6852.2,0.0,73.21 -2012-07-29 13:00:00,6923.5,0.0,73.45 -2012-07-29 14:00:00,7077.1,0.0,77.12 -2012-07-29 15:00:00,7172.2,0.0,78.01 -2012-07-29 16:00:00,7229.6,0.0,78.57 -2012-07-29 17:00:00,7220.7,0.0231,71.83 -2012-07-29 18:00:00,7212.0,0.0,74.31 -2012-07-29 19:00:00,7158.6,0.0,76.11 -2012-07-29 20:00:00,7253.7,0.0,74.6 -2012-07-29 21:00:00,7339.4,0.0,74.11 -2012-07-29 22:00:00,7184.4,0.0,73.95 -2012-07-29 23:00:00,6872.4,0.0,73.2 -2012-07-30 00:00:00,6503.9,0.0,72.87 -2012-07-30 01:00:00,6191.5,0.0,71.15 -2012-07-30 02:00:00,5978.8,0.0,70.16 -2012-07-30 03:00:00,5859.6,0.0,70.4 -2012-07-30 04:00:00,5867.7,0.0,70.12 -2012-07-30 05:00:00,6057.4,0.0,67.09 -2012-07-30 06:00:00,6517.7,0.0,69.32 -2012-07-30 07:00:00,7116.6,0.0,69.96 -2012-07-30 08:00:00,7609.5,0.0,70.43 -2012-07-30 09:00:00,7997.2,0.0,72.07 -2012-07-30 10:00:00,8271.8,0.0,74.6 -2012-07-30 11:00:00,8479.9,0.0,73.14 -2012-07-30 12:00:00,8605.6,0.0,77.65 -2012-07-30 13:00:00,8703.2,0.0,77.34 -2012-07-30 14:00:00,8768.5,0.0,78.36 -2012-07-30 15:00:00,8824.9,0.0,77.11 -2012-07-30 16:00:00,8868.3,0.0,79.02 -2012-07-30 17:00:00,8754.4,0.0,74.32 -2012-07-30 18:00:00,8274.7,0.0,76.1 -2012-07-30 19:00:00,7917.8,0.0,74.78 -2012-07-30 20:00:00,7793.3,0.0,73.11 -2012-07-30 21:00:00,7673.2,0.0,73.21 -2012-07-30 22:00:00,7355.5,0.0,71.88 -2012-07-30 23:00:00,6901.7,0.0,65.97 -2012-07-31 00:00:00,6417.7,0.0,70.91 -2012-07-31 01:00:00,6075.2,0.0,70.75 -2012-07-31 02:00:00,5839.5,0.0,71.23 -2012-07-31 03:00:00,5744.1,0.0,70.4 -2012-07-31 04:00:00,5745.8,0.0,71.04 -2012-07-31 05:00:00,5984.1,0.0,71.23 -2012-07-31 06:00:00,6498.3,0.0,71.06 -2012-07-31 07:00:00,7143.0,0.0,71.06 -2012-07-31 08:00:00,7661.7,0.0,72.12 -2012-07-31 09:00:00,8079.4,0.0,72.55 -2012-07-31 10:00:00,8289.3,0.0,74.45 -2012-07-31 11:00:00,8396.4,0.0,71.7 -2012-07-31 12:00:00,8462.3,0.0,75.64 -2012-07-31 13:00:00,8521.0,0.0,78.97 -2012-07-31 14:00:00,8598.5,0.0,78.12 -2012-07-31 15:00:00,8677.2,0.0,78.48 -2012-07-31 16:00:00,8661.7,0.0,77.17 -2012-07-31 17:00:00,8532.6,0.0,70.87 -2012-07-31 18:00:00,8160.1,0.0,75.4 -2012-07-31 19:00:00,7914.4,0.0,74.61 -2012-07-31 20:00:00,7820.2,0.0,74.02 -2012-07-31 21:00:00,7711.5,0.0,72.98 -2012-07-31 22:00:00,7403.8,0.0,72.22 -2012-07-31 23:00:00,6974.8,0.0,72.53 -2012-08-01 00:00:00,6501.7,0.0,72.44 -2012-08-01 01:00:00,6168.7,0.0,72.27 -2012-08-01 02:00:00,5962.3,0.0,72.34 -2012-08-01 03:00:00,5846.5,0.0,72.34 -2012-08-01 04:00:00,5846.1,0.0,71.84 -2012-08-01 05:00:00,6102.5,0.0,72.24 -2012-08-01 06:00:00,6693.1,0.0141,72.9 -2012-08-01 07:00:00,7333.1,0.1671,70.3 -2012-08-01 08:00:00,7884.3,0.0158,72.22 -2012-08-01 09:00:00,8346.4,0.0089,72.83 -2012-08-01 10:00:00,8675.3,0.0137,74.35 -2012-08-01 11:00:00,8834.3,0.0069,76.76 -2012-08-01 12:00:00,8762.7,0.0069,74.9 -2012-08-01 13:00:00,8664.5,0.0069,74.57 -2012-08-01 14:00:00,8584.5,0.012,72.56 -2012-08-01 15:00:00,8631.2,0.0297,73.41 -2012-08-01 16:00:00,8653.6,0.0175,73.36 -2012-08-01 17:00:00,8581.3,0.0054,74.17 -2012-08-01 18:00:00,8239.4,0.0069,73.16 -2012-08-01 19:00:00,8030.5,0.0,73.78 -2012-08-01 20:00:00,7927.9,0.0,71.03 -2012-08-01 21:00:00,7782.7,0.0,70.7 -2012-08-01 22:00:00,7458.1,0.0,70.97 -2012-08-01 23:00:00,7000.4,0.0,70.54 -2012-08-02 00:00:00,6539.4,0.0069,69.4 -2012-08-02 01:00:00,6200.3,0.0,69.33 -2012-08-02 02:00:00,5970.2,0.0,70.22 -2012-08-02 03:00:00,5838.5,0.0,71.27 -2012-08-02 04:00:00,5831.8,0.0,71.02 -2012-08-02 05:00:00,6059.4,0.0,70.66 -2012-08-02 06:00:00,6576.7,0.0,70.58 -2012-08-02 07:00:00,7273.0,0.0069,70.89 -2012-08-02 08:00:00,7900.2,0.0,71.6 -2012-08-02 09:00:00,8431.4,0.0,73.42 -2012-08-02 10:00:00,8810.9,0.0,77.33 -2012-08-02 11:00:00,9094.7,0.0,76.31 -2012-08-02 12:00:00,9294.2,0.0,78.56 -2012-08-02 13:00:00,9464.0,0.0,77.93 -2012-08-02 14:00:00,9600.7,0.0,86.23 -2012-08-02 15:00:00,9726.8,0.0,80.02 -2012-08-02 16:00:00,9741.2,0.0,80.16 -2012-08-02 17:00:00,9536.5,0.0,79.03 -2012-08-02 18:00:00,9344.5,0.0,78.53 -2012-08-02 19:00:00,9105.4,0.0,77.8 -2012-08-02 20:00:00,8994.2,0.0,75.87 -2012-08-02 21:00:00,8912.3,0.0,75.07 -2012-08-02 22:00:00,8559.3,0.0,75.87 -2012-08-02 23:00:00,8034.1,0.0,74.53 -2012-08-03 00:00:00,7461.1,0.0,74.17 -2012-08-03 01:00:00,7062.8,0.0,74.08 -2012-08-03 02:00:00,6771.9,0.0,73.99 -2012-08-03 03:00:00,6617.1,0.0,73.54 -2012-08-03 04:00:00,6579.4,0.0,73.3 -2012-08-03 05:00:00,6777.3,0.0,72.71 -2012-08-03 06:00:00,7276.5,0.0,72.53 -2012-08-03 07:00:00,8002.6,0.0,73.7 -2012-08-03 08:00:00,8650.5,0.0,75.12 -2012-08-03 09:00:00,9204.9,0.0,76.47 -2012-08-03 10:00:00,9629.9,0.0,77.37 -2012-08-03 11:00:00,9943.3,0.0,80.08 -2012-08-03 12:00:00,10130.3,0.0,81.22 -2012-08-03 13:00:00,10192.0,0.0,82.93 -2012-08-03 14:00:00,10223.8,0.0,83.43 -2012-08-03 15:00:00,10278.7,0.0,81.74 -2012-08-03 16:00:00,10286.0,0.0,80.32 -2012-08-03 17:00:00,10078.5,0.0,78.96 -2012-08-03 18:00:00,9584.4,0.0,78.08 -2012-08-03 19:00:00,9245.6,0.0,77.42 -2012-08-03 20:00:00,9064.7,0.0,76.9 -2012-08-03 21:00:00,8902.9,0.0,76.56 -2012-08-03 22:00:00,8561.4,0.0,76.37 -2012-08-03 23:00:00,8106.7,0.0,76.01 -2012-08-04 00:00:00,7600.0,0.0,75.92 -2012-08-04 01:00:00,7213.1,0.0,75.58 -2012-08-04 02:00:00,6933.3,0.0,75.13 -2012-08-04 03:00:00,6735.3,0.0,74.8 -2012-08-04 04:00:00,6617.5,0.0,74.47 -2012-08-04 05:00:00,6588.0,0.0,74.29 -2012-08-04 06:00:00,6672.9,0.0,74.05 -2012-08-04 07:00:00,7046.9,0.0,74.04 -2012-08-04 08:00:00,7578.2,0.0,74.83 -2012-08-04 09:00:00,8137.6,0.0,76.15 -2012-08-04 10:00:00,8605.5,0.0,82.55 -2012-08-04 11:00:00,8906.2,0.0,79.64 -2012-08-04 12:00:00,9067.7,0.0,80.66 -2012-08-04 13:00:00,9058.8,0.0,80.94 -2012-08-04 14:00:00,8999.7,0.0,82.79 -2012-08-04 15:00:00,8986.9,0.0,82.88 -2012-08-04 16:00:00,8929.5,0.0,80.23 -2012-08-04 17:00:00,8735.9,0.0,79.46 -2012-08-04 18:00:00,8588.4,0.0,77.11 -2012-08-04 19:00:00,8467.5,0.0,76.44 -2012-08-04 20:00:00,8499.0,0.0,74.87 -2012-08-04 21:00:00,8487.3,0.0,74.61 -2012-08-04 22:00:00,8312.8,0.0,74.18 -2012-08-04 23:00:00,8006.3,0.0,75.15 -2012-08-05 00:00:00,7603.8,0.0,78.6 -2012-08-05 01:00:00,7262.2,0.0,75.15 -2012-08-05 02:00:00,7018.3,0.0,73.83 -2012-08-05 03:00:00,6855.3,0.0,74.01 -2012-08-05 04:00:00,6746.5,0.0,78.6 -2012-08-05 05:00:00,6729.4,0.0,74.99 -2012-08-05 06:00:00,6746.8,0.0,74.99 -2012-08-05 07:00:00,6957.7,0.0,75.05 -2012-08-05 08:00:00,7313.6,0.0,79.16 -2012-08-05 09:00:00,7801.6,0.0,75.83 -2012-08-05 10:00:00,8321.8,0.0,81.71 -2012-08-05 11:00:00,8696.9,0.0,80.04 -2012-08-05 12:00:00,8861.0,0.0,80.73 -2012-08-05 13:00:00,9051.5,0.0,81.27 -2012-08-05 14:00:00,9137.5,0.0,81.87 -2012-08-05 15:00:00,9187.7,0.0,82.21 -2012-08-05 16:00:00,9183.3,0.0,80.83 -2012-08-05 17:00:00,9188.5,0.0,80.84 -2012-08-05 18:00:00,9086.9,0.0,79.68 -2012-08-05 19:00:00,8965.0,0.0,78.07 -2012-08-05 20:00:00,8679.8,0.1649,76.08 -2012-08-05 21:00:00,8567.9,0.1066,74.62 -2012-08-05 22:00:00,8258.7,0.0031,74.02 -2012-08-05 23:00:00,7849.4,0.0089,74.02 -2012-08-06 00:00:00,7412.9,0.002,74.09 -2012-08-06 01:00:00,7075.1,0.0,74.69 -2012-08-06 02:00:00,6895.8,0.0,73.92 -2012-08-06 03:00:00,6821.3,0.0,74.19 -2012-08-06 04:00:00,6840.6,0.057,73.51 -2012-08-06 05:00:00,7071.6,0.0,74.09 -2012-08-06 06:00:00,7522.8,0.0412,73.59 -2012-08-06 07:00:00,8197.6,0.1512,73.51 -2012-08-06 08:00:00,8808.6,0.1512,74.32 -2012-08-06 09:00:00,9251.1,0.0,75.36 -2012-08-06 10:00:00,9537.1,0.0069,76.34 -2012-08-06 11:00:00,9673.6,0.0,77.25 -2012-08-06 12:00:00,9717.3,0.0,81.05 -2012-08-06 13:00:00,9721.0,0.0,82.86 -2012-08-06 14:00:00,9786.4,0.0,79.93 -2012-08-06 15:00:00,9813.9,0.0,81.77 -2012-08-06 16:00:00,9841.4,0.0,83.16 -2012-08-06 17:00:00,9717.4,0.0,82.93 -2012-08-06 18:00:00,9245.0,0.0,83.39 -2012-08-06 19:00:00,8873.0,0.0,78.38 -2012-08-06 20:00:00,8683.2,0.0,75.68 -2012-08-06 21:00:00,8470.5,0.0,74.83 -2012-08-06 22:00:00,8020.8,0.0,74.29 -2012-08-06 23:00:00,7454.3,0.0,72.82 -2012-08-07 00:00:00,6884.1,0.0,71.01 -2012-08-07 01:00:00,6484.1,0.0,69.76 -2012-08-07 02:00:00,6218.6,0.0,69.26 -2012-08-07 03:00:00,6073.9,0.0,67.42 -2012-08-07 04:00:00,6040.4,0.0,67.09 -2012-08-07 05:00:00,6209.6,0.0,67.24 -2012-08-07 06:00:00,6695.4,0.0,67.65 -2012-08-07 07:00:00,7356.3,0.0,69.24 -2012-08-07 08:00:00,7930.3,0.0,72.12 -2012-08-07 09:00:00,8333.8,0.0,73.55 -2012-08-07 10:00:00,8610.3,0.0,75.29 -2012-08-07 11:00:00,8768.8,0.0,76.47 -2012-08-07 12:00:00,8864.5,0.0,78.22 -2012-08-07 13:00:00,8945.8,0.0,78.67 -2012-08-07 14:00:00,9008.9,0.0,78.76 -2012-08-07 15:00:00,9078.3,0.0,76.43 -2012-08-07 16:00:00,9107.0,0.0,76.68 -2012-08-07 17:00:00,8988.6,0.0,75.87 -2012-08-07 18:00:00,8671.1,0.0,75.26 -2012-08-07 19:00:00,8403.5,0.0,72.88 -2012-08-07 20:00:00,8358.7,0.0,71.28 -2012-08-07 21:00:00,8279.8,0.0,69.8 -2012-08-07 22:00:00,7987.3,0.0,70.79 -2012-08-07 23:00:00,7475.9,0.0,71.75 -2012-08-08 00:00:00,6969.9,0.0,71.49 -2012-08-08 01:00:00,6621.7,0.0,70.18 -2012-08-08 02:00:00,6398.5,0.0,71.14 -2012-08-08 03:00:00,6289.2,0.0,69.83 -2012-08-08 04:00:00,6304.5,0.0,74.27 -2012-08-08 05:00:00,6548.7,0.0,68.91 -2012-08-08 06:00:00,7100.9,0.0,69.29 -2012-08-08 07:00:00,7814.9,0.0,70.21 -2012-08-08 08:00:00,8444.6,0.0,75.76 -2012-08-08 09:00:00,8920.2,0.0,74.23 -2012-08-08 10:00:00,9159.8,0.0,75.58 -2012-08-08 11:00:00,9324.1,0.0,76.54 -2012-08-08 12:00:00,9472.5,0.0,78.22 -2012-08-08 13:00:00,9598.2,0.0,78.86 -2012-08-08 14:00:00,9685.5,0.0,78.91 -2012-08-08 15:00:00,9734.8,0.0,79.44 -2012-08-08 16:00:00,9722.8,0.0,78.05 -2012-08-08 17:00:00,9615.3,0.0,77.39 -2012-08-08 18:00:00,9273.8,0.0,76.34 -2012-08-08 19:00:00,9090.0,0.0,76.11 -2012-08-08 20:00:00,9041.9,0.0,74.71 -2012-08-08 21:00:00,8925.6,0.0,72.87 -2012-08-08 22:00:00,8584.7,0.0,71.47 -2012-08-08 23:00:00,8082.5,0.0,71.78 -2012-08-09 00:00:00,7532.0,0.0,70.95 -2012-08-09 01:00:00,7137.3,0.0,70.92 -2012-08-09 02:00:00,6870.9,0.0,69.61 -2012-08-09 03:00:00,6710.0,0.0,69.19 -2012-08-09 04:00:00,6671.1,0.0,70.34 -2012-08-09 05:00:00,6887.1,0.0,68.36 -2012-08-09 06:00:00,7372.3,0.0,73.68 -2012-08-09 07:00:00,8049.0,0.0,70.9 -2012-08-09 08:00:00,8668.8,0.0,74.24 -2012-08-09 09:00:00,9181.1,0.0,75.25 -2012-08-09 10:00:00,9511.6,0.0,76.93 -2012-08-09 11:00:00,9744.8,0.0,79.06 -2012-08-09 12:00:00,9887.1,0.0,78.37 -2012-08-09 13:00:00,10012.8,0.0,80.86 -2012-08-09 14:00:00,10098.0,0.0,78.85 -2012-08-09 15:00:00,10164.9,0.0,79.63 -2012-08-09 16:00:00,10133.0,0.0,78.13 -2012-08-09 17:00:00,9860.1,0.0,76.78 -2012-08-09 18:00:00,9408.5,0.0,76.02 -2012-08-09 19:00:00,9188.6,0.0,79.88 -2012-08-09 20:00:00,9107.8,0.0,74.45 -2012-08-09 21:00:00,8992.2,0.0,78.87 -2012-08-09 22:00:00,8645.0,0.0,73.83 -2012-08-09 23:00:00,8157.1,0.0,72.6 -2012-08-10 00:00:00,7625.7,0.0,71.45 -2012-08-10 01:00:00,7262.1,0.0,73.67 -2012-08-10 02:00:00,7023.4,0.0,77.51 -2012-08-10 03:00:00,6893.9,0.0,73.49 -2012-08-10 04:00:00,6879.6,0.0,73.32 -2012-08-10 05:00:00,7140.1,0.0,73.32 -2012-08-10 06:00:00,7686.7,0.0,73.58 -2012-08-10 07:00:00,8321.4,0.0,74.72 -2012-08-10 08:00:00,8831.6,0.0,78.33 -2012-08-10 09:00:00,9257.5,0.0,75.5 -2012-08-10 10:00:00,9462.8,0.0,76.34 -2012-08-10 11:00:00,9541.4,0.0,79.87 -2012-08-10 12:00:00,9363.3,0.0275,78.59 -2012-08-10 13:00:00,8980.6,0.0958,71.61 -2012-08-10 14:00:00,9016.8,0.0451,73.05 -2012-08-10 15:00:00,9161.2,0.0011,74.96 -2012-08-10 16:00:00,9260.8,0.0,76.87 -2012-08-10 17:00:00,9213.4,0.0,75.0 -2012-08-10 18:00:00,8867.7,0.055,75.51 -2012-08-10 19:00:00,8641.3,0.0412,74.99 -2012-08-10 20:00:00,8581.2,0.0,74.82 -2012-08-10 21:00:00,8460.2,0.0069,75.23 -2012-08-10 22:00:00,8147.8,0.1925,74.73 -2012-08-10 23:00:00,7721.6,0.2337,74.72 -2012-08-11 00:00:00,7272.8,0.0069,74.38 -2012-08-11 01:00:00,6948.9,0.0,74.78 -2012-08-11 02:00:00,6693.7,0.0,74.78 -2012-08-11 03:00:00,6528.2,0.0,73.96 -2012-08-11 04:00:00,6427.0,0.0,74.05 -2012-08-11 05:00:00,6414.1,0.0,73.69 -2012-08-11 06:00:00,6517.5,0.0,74.36 -2012-08-11 07:00:00,6825.8,0.0,76.65 -2012-08-11 08:00:00,7274.0,0.0069,74.99 -2012-08-11 09:00:00,7713.8,0.0069,74.75 -2012-08-11 10:00:00,8059.8,0.0,75.82 -2012-08-11 11:00:00,8330.9,0.0,80.58 -2012-08-11 12:00:00,8543.5,0.0,83.17 -2012-08-11 13:00:00,8627.1,0.0,78.53 -2012-08-11 14:00:00,8664.9,0.0,79.22 -2012-08-11 15:00:00,8706.8,0.0,79.14 -2012-08-11 16:00:00,8711.7,0.0,80.3 -2012-08-11 17:00:00,8584.0,0.0,79.63 -2012-08-11 18:00:00,8393.8,0.0,77.98 -2012-08-11 19:00:00,8209.8,0.0,77.29 -2012-08-11 20:00:00,8190.2,0.0,76.59 -2012-08-11 21:00:00,8072.6,0.0,75.24 -2012-08-11 22:00:00,7837.3,0.0,75.08 -2012-08-11 23:00:00,7516.8,0.0,75.23 -2012-08-12 00:00:00,7150.2,0.0,74.87 -2012-08-12 01:00:00,6816.0,0.0,76.17 -2012-08-12 02:00:00,6567.0,0.0,73.87 -2012-08-12 03:00:00,6405.1,0.0,73.62 -2012-08-12 04:00:00,6299.3,0.0,73.69 -2012-08-12 05:00:00,6229.2,0.2887,73.33 -2012-08-12 06:00:00,6153.1,0.0137,73.36 -2012-08-12 07:00:00,6251.9,0.0069,73.27 -2012-08-12 08:00:00,6544.3,0.0137,73.78 -2012-08-12 09:00:00,6937.6,0.0,74.23 -2012-08-12 10:00:00,7309.2,0.0206,75.31 -2012-08-12 11:00:00,7591.1,0.0137,75.83 -2012-08-12 12:00:00,7783.6,0.0,77.16 -2012-08-12 13:00:00,7899.8,0.0,78.93 -2012-08-12 14:00:00,7963.1,0.0,79.29 -2012-08-12 15:00:00,8009.2,0.0,79.26 -2012-08-12 16:00:00,8039.6,0.0,79.53 -2012-08-12 17:00:00,8017.8,0.0,79.07 -2012-08-12 18:00:00,7919.6,0.0,77.79 -2012-08-12 19:00:00,7798.0,0.0,76.87 -2012-08-12 20:00:00,7891.8,0.0,76.08 -2012-08-12 21:00:00,7893.0,0.0,75.57 -2012-08-12 22:00:00,7672.2,0.0,75.3 -2012-08-12 23:00:00,7301.6,0.0,74.52 -2012-08-13 00:00:00,6902.0,0.0,74.1 -2012-08-13 01:00:00,6576.0,0.0,74.15 -2012-08-13 02:00:00,6337.6,0.0,73.15 -2012-08-13 03:00:00,6209.4,0.0,72.73 -2012-08-13 04:00:00,6198.3,0.0,72.39 -2012-08-13 05:00:00,6387.9,0.0,72.03 -2012-08-13 06:00:00,6749.4,0.0,71.69 -2012-08-13 07:00:00,7332.7,0.0,70.48 -2012-08-13 08:00:00,7905.8,0.0,72.84 -2012-08-13 09:00:00,8360.1,0.0,75.89 -2012-08-13 10:00:00,8650.5,0.0,77.91 -2012-08-13 11:00:00,8860.3,0.0,78.49 -2012-08-13 12:00:00,8976.4,0.0,79.38 -2012-08-13 13:00:00,9052.8,0.0,80.67 -2012-08-13 14:00:00,9134.3,0.0,81.09 -2012-08-13 15:00:00,9197.0,0.0,79.66 -2012-08-13 16:00:00,9220.3,0.0,79.72 -2012-08-13 17:00:00,9154.4,0.0,79.59 -2012-08-13 18:00:00,8787.5,0.0,79.03 -2012-08-13 19:00:00,8510.6,0.0,77.6 -2012-08-13 20:00:00,8462.0,0.0,76.44 -2012-08-13 21:00:00,8307.3,0.0,75.86 -2012-08-13 22:00:00,7937.7,0.0,75.34 -2012-08-13 23:00:00,7426.7,0.0,74.07 -2012-08-14 00:00:00,6886.7,0.0,73.42 -2012-08-14 01:00:00,6518.6,0.0,74.11 -2012-08-14 02:00:00,6277.1,0.0,73.59 -2012-08-14 03:00:00,6125.6,0.0,73.12 -2012-08-14 04:00:00,6114.1,0.0,71.74 -2012-08-14 05:00:00,6364.6,0.0,71.57 -2012-08-14 06:00:00,6905.0,0.0,71.5 -2012-08-14 07:00:00,7547.5,0.0,72.93 -2012-08-14 08:00:00,8104.4,0.0,73.95 -2012-08-14 09:00:00,8506.8,0.0,75.58 -2012-08-14 10:00:00,8717.0,0.0,78.13 -2012-08-14 11:00:00,8835.5,0.0,79.09 -2012-08-14 12:00:00,8866.4,0.0,79.52 -2012-08-14 13:00:00,8898.1,0.0171,79.04 -2012-08-14 14:00:00,8891.6,0.0,79.58 -2012-08-14 15:00:00,8876.7,0.0,78.63 -2012-08-14 16:00:00,8874.1,0.0,78.86 -2012-08-14 17:00:00,8806.0,0.0,77.69 -2012-08-14 18:00:00,8502.6,0.0,76.54 -2012-08-14 19:00:00,8333.2,0.0,75.3 -2012-08-14 20:00:00,8368.8,0.0,76.66 -2012-08-14 21:00:00,8277.5,0.0,76.6 -2012-08-14 22:00:00,8012.4,0.0,76.6 -2012-08-14 23:00:00,7568.7,0.0,72.9 -2012-08-15 00:00:00,7081.1,0.0,76.34 -2012-08-15 01:00:00,6734.7,0.0,71.75 -2012-08-15 02:00:00,6489.1,0.0,71.66 -2012-08-15 03:00:00,6386.5,0.0,72.57 -2012-08-15 04:00:00,6398.3,0.0,72.57 -2012-08-15 05:00:00,6639.7,0.0,71.39 -2012-08-15 06:00:00,7113.3,0.0,71.21 -2012-08-15 07:00:00,7746.1,0.0,71.07 -2012-08-15 08:00:00,8255.9,0.0,73.06 -2012-08-15 09:00:00,8636.7,0.0,73.97 -2012-08-15 10:00:00,8990.5,0.0,74.81 -2012-08-15 11:00:00,9247.4,0.0,76.96 -2012-08-15 12:00:00,9299.7,0.0,76.85 -2012-08-15 13:00:00,9211.6,0.0,76.44 -2012-08-15 14:00:00,9073.3,0.0607,72.39 -2012-08-15 15:00:00,8947.6,0.0452,72.34 -2012-08-15 16:00:00,8673.0,0.0265,74.76 -2012-08-15 17:00:00,8552.8,0.0239,73.45 -2012-08-15 18:00:00,8232.7,0.1671,72.73 -2012-08-15 19:00:00,8059.6,0.0211,71.89 -2012-08-15 20:00:00,7924.6,0.0446,71.56 -2012-08-15 21:00:00,7696.5,0.002,71.33 -2012-08-15 22:00:00,7322.8,0.0,70.38 -2012-08-15 23:00:00,6858.2,0.0069,70.31 -2012-08-16 00:00:00,6387.1,0.0069,70.32 -2012-08-16 01:00:00,6078.3,0.0,70.25 -2012-08-16 02:00:00,5847.3,0.0,68.65 -2012-08-16 03:00:00,5736.6,0.0,68.24 -2012-08-16 04:00:00,5726.1,0.0,68.15 -2012-08-16 05:00:00,5938.9,0.0,69.78 -2012-08-16 06:00:00,6410.1,0.0,69.7 -2012-08-16 07:00:00,7026.4,0.0,70.15 -2012-08-16 08:00:00,7549.1,0.0,72.23 -2012-08-16 09:00:00,7995.6,0.0,73.89 -2012-08-16 10:00:00,8305.8,0.0,74.99 -2012-08-16 11:00:00,8493.2,0.0,77.02 -2012-08-16 12:00:00,8625.3,0.0,79.28 -2012-08-16 13:00:00,8739.0,0.0,78.75 -2012-08-16 14:00:00,8835.7,0.0,80.56 -2012-08-16 15:00:00,8914.4,0.0,78.69 -2012-08-16 16:00:00,8927.5,0.0,77.99 -2012-08-16 17:00:00,8851.4,0.0,78.69 -2012-08-16 18:00:00,8442.0,0.0,77.62 -2012-08-16 19:00:00,8163.2,0.0,77.37 -2012-08-16 20:00:00,8071.4,0.0,75.83 -2012-08-16 21:00:00,7881.3,0.0,75.22 -2012-08-16 22:00:00,7532.4,0.0,74.98 -2012-08-16 23:00:00,7065.5,0.0,73.77 -2012-08-17 00:00:00,6581.5,0.0,73.76 -2012-08-17 01:00:00,6216.2,0.0,73.25 -2012-08-17 02:00:00,5962.9,0.0,73.0 -2012-08-17 03:00:00,5819.0,0.0,72.62 -2012-08-17 04:00:00,5795.3,0.0,71.12 -2012-08-17 05:00:00,5996.4,0.0,70.81 -2012-08-17 06:00:00,6479.6,0.0,70.67 -2012-08-17 07:00:00,7102.7,0.0,71.96 -2012-08-17 08:00:00,7716.4,0.0,73.33 -2012-08-17 09:00:00,8247.5,0.0,75.74 -2012-08-17 10:00:00,8610.7,0.0,79.5 -2012-08-17 11:00:00,8896.4,0.0,80.31 -2012-08-17 12:00:00,9116.0,0.0,82.38 -2012-08-17 13:00:00,9296.4,0.0,81.86 -2012-08-17 14:00:00,9403.6,0.0,83.44 -2012-08-17 15:00:00,9446.7,0.0,83.68 -2012-08-17 16:00:00,9459.2,0.0,82.56 -2012-08-17 17:00:00,9334.0,0.0,81.73 -2012-08-17 18:00:00,8917.7,0.0,80.39 -2012-08-17 19:00:00,8695.5,0.0069,80.53 -2012-08-17 20:00:00,8540.3,0.0756,76.87 -2012-08-17 21:00:00,8174.3,0.0,74.65 -2012-08-17 22:00:00,7801.6,0.0,74.25 -2012-08-17 23:00:00,7351.0,0.0,74.0 -2012-08-18 00:00:00,6837.3,0.0,73.57 -2012-08-18 01:00:00,6272.7,0.077,67.62 -2012-08-18 02:00:00,5967.8,0.0948,70.47 -2012-08-18 03:00:00,5790.2,0.0154,70.64 -2012-08-18 04:00:00,5678.2,0.0154,65.72 -2012-08-18 05:00:00,5596.3,0.0299,65.1 -2012-08-18 06:00:00,5635.7,0.0089,69.96 -2012-08-18 07:00:00,5825.0,0.0337,70.03 -2012-08-18 08:00:00,6094.3,0.0227,65.05 -2012-08-18 09:00:00,6332.6,0.0403,64.95 -2012-08-18 10:00:00,6559.3,0.0171,71.62 -2012-08-18 11:00:00,6792.6,0.0,71.59 -2012-08-18 12:00:00,6901.1,0.0,71.52 -2012-08-18 13:00:00,6966.5,0.0,73.14 -2012-08-18 14:00:00,7027.3,0.0,73.57 -2012-08-18 15:00:00,7028.0,0.0,73.9 -2012-08-18 16:00:00,7032.7,0.0756,73.24 -2012-08-18 17:00:00,7002.3,0.1512,73.01 -2012-08-18 18:00:00,6867.2,0.0069,74.12 -2012-08-18 19:00:00,6764.2,0.0,77.05 -2012-08-18 20:00:00,6743.5,0.0,70.42 -2012-08-18 21:00:00,6600.3,0.0,69.74 -2012-08-18 22:00:00,6371.8,0.0,69.06 -2012-08-18 23:00:00,6079.3,0.0,69.3 -2012-08-19 00:00:00,5765.3,0.0,67.94 -2012-08-19 01:00:00,5503.0,0.0,68.49 -2012-08-19 02:00:00,5292.3,0.0,68.31 -2012-08-19 03:00:00,5152.3,0.0,66.67 -2012-08-19 04:00:00,5046.8,0.0,66.09 -2012-08-19 05:00:00,5006.6,0.0,66.5 -2012-08-19 06:00:00,4997.2,0.0,65.49 -2012-08-19 07:00:00,5159.7,0.0,65.58 -2012-08-19 08:00:00,5467.3,0.0,68.65 -2012-08-19 09:00:00,5772.1,0.0,70.66 -2012-08-19 10:00:00,6030.0,0.0,71.44 -2012-08-19 11:00:00,6156.8,0.0,71.93 -2012-08-19 12:00:00,6213.5,0.0,72.37 -2012-08-19 13:00:00,6218.8,0.0,72.84 -2012-08-19 14:00:00,6203.2,0.0,73.17 -2012-08-19 15:00:00,6224.3,0.0,73.43 -2012-08-19 16:00:00,6213.1,0.0,73.69 -2012-08-19 17:00:00,6200.6,0.0,73.05 -2012-08-19 18:00:00,6194.4,0.0,71.64 -2012-08-19 19:00:00,6229.4,0.0,70.23 -2012-08-19 20:00:00,6380.2,0.0,68.93 -2012-08-19 21:00:00,6364.5,0.0,67.52 -2012-08-19 22:00:00,6211.6,0.0,67.45 -2012-08-19 23:00:00,5943.7,0.0,67.84 -2012-08-20 00:00:00,5653.6,0.0,68.32 -2012-08-20 01:00:00,5410.3,0.0,67.96 -2012-08-20 02:00:00,5259.0,0.0,67.9 -2012-08-20 03:00:00,5184.9,0.0,67.65 -2012-08-20 04:00:00,5225.4,0.0,67.12 -2012-08-20 05:00:00,5480.7,0.0,66.28 -2012-08-20 06:00:00,5919.9,0.0,66.61 -2012-08-20 07:00:00,6477.3,0.0,66.43 -2012-08-20 08:00:00,7035.8,0.0,68.19 -2012-08-20 09:00:00,7485.9,0.0,69.55 -2012-08-20 10:00:00,7709.6,0.0,71.37 -2012-08-20 11:00:00,7793.4,0.0,71.41 -2012-08-20 12:00:00,7855.2,0.0,72.22 -2012-08-20 13:00:00,7932.2,0.0,72.62 -2012-08-20 14:00:00,7973.4,0.0,71.9 -2012-08-20 15:00:00,8074.3,0.0,73.23 -2012-08-20 16:00:00,8143.3,0.0,73.07 -2012-08-20 17:00:00,8041.8,0.0,72.18 -2012-08-20 18:00:00,7628.6,0.0,71.86 -2012-08-20 19:00:00,7386.8,0.0,70.28 -2012-08-20 20:00:00,7353.6,0.0,68.69 -2012-08-20 21:00:00,7157.7,0.0,68.36 -2012-08-20 22:00:00,6840.3,0.0,68.01 -2012-08-20 23:00:00,6414.3,0.0,66.5 -2012-08-21 00:00:00,5971.3,0.0,65.93 -2012-08-21 01:00:00,5672.1,0.0,66.75 -2012-08-21 02:00:00,5469.5,0.0,66.4 -2012-08-21 03:00:00,5346.9,0.0,66.97 -2012-08-21 04:00:00,5346.7,0.0,67.85 -2012-08-21 05:00:00,5557.2,0.0,67.26 -2012-08-21 06:00:00,6020.4,0.0,66.0 -2012-08-21 07:00:00,6563.6,0.0,67.01 -2012-08-21 08:00:00,7095.3,0.0,69.3 -2012-08-21 09:00:00,7539.0,0.0,71.48 -2012-08-21 10:00:00,7813.1,0.0,72.91 -2012-08-21 11:00:00,7968.5,0.0,75.11 -2012-08-21 12:00:00,8053.1,0.0,76.84 -2012-08-21 13:00:00,8142.4,0.0,77.35 -2012-08-21 14:00:00,8227.9,0.0,76.7 -2012-08-21 15:00:00,8322.2,0.0,78.45 -2012-08-21 16:00:00,8308.3,0.0,77.48 -2012-08-21 17:00:00,8172.4,0.0,77.19 -2012-08-21 18:00:00,7805.1,0.0,75.57 -2012-08-21 19:00:00,7592.9,0.0,77.04 -2012-08-21 20:00:00,7565.0,0.0,72.91 -2012-08-21 21:00:00,7377.4,0.0,72.23 -2012-08-21 22:00:00,7053.9,0.0,72.05 -2012-08-21 23:00:00,6606.2,0.0,70.63 -2012-08-22 00:00:00,6142.7,0.0,71.69 -2012-08-22 01:00:00,5820.7,0.0,70.12 -2012-08-22 02:00:00,5606.5,0.0,68.79 -2012-08-22 03:00:00,5495.3,0.0,68.45 -2012-08-22 04:00:00,5491.0,0.0,67.94 -2012-08-22 05:00:00,5728.7,0.0,67.02 -2012-08-22 06:00:00,6247.9,0.0,66.06 -2012-08-22 07:00:00,6872.0,0.0,66.08 -2012-08-22 08:00:00,7445.5,0.0,72.16 -2012-08-22 09:00:00,7934.7,0.0,74.55 -2012-08-22 10:00:00,8196.5,0.0,76.68 -2012-08-22 11:00:00,8319.1,0.0,77.88 -2012-08-22 12:00:00,8406.5,0.0,79.69 -2012-08-22 13:00:00,8472.3,0.0,77.47 -2012-08-22 14:00:00,8530.7,0.0,76.98 -2012-08-22 15:00:00,8594.3,0.0,77.12 -2012-08-22 16:00:00,8558.2,0.0022,75.55 -2012-08-22 17:00:00,8393.5,0.0033,75.86 -2012-08-22 18:00:00,8013.1,0.0,74.46 -2012-08-22 19:00:00,7787.2,0.0,73.06 -2012-08-22 20:00:00,7741.9,0.0,70.25 -2012-08-22 21:00:00,7567.1,0.0,69.82 -2012-08-22 22:00:00,7246.6,0.0,68.43 -2012-08-22 23:00:00,6790.8,0.0,68.18 -2012-08-23 00:00:00,6322.1,0.0,67.25 -2012-08-23 01:00:00,5979.3,0.0,67.07 -2012-08-23 02:00:00,5752.0,0.0,67.57 -2012-08-23 03:00:00,5628.5,0.0,66.39 -2012-08-23 04:00:00,5621.5,0.0,66.96 -2012-08-23 05:00:00,5840.1,0.0,67.47 -2012-08-23 06:00:00,6330.7,0.0,66.71 -2012-08-23 07:00:00,6955.2,0.0,67.95 -2012-08-23 08:00:00,7503.2,0.0,72.26 -2012-08-23 09:00:00,7875.1,0.0,72.76 -2012-08-23 10:00:00,8227.8,0.0,75.39 -2012-08-23 11:00:00,8468.8,0.0,76.35 -2012-08-23 12:00:00,8576.4,0.0,77.19 -2012-08-23 13:00:00,8700.4,0.0,78.23 -2012-08-23 14:00:00,8839.8,0.0,76.95 -2012-08-23 15:00:00,8914.6,0.0,78.18 -2012-08-23 16:00:00,8915.9,0.0,78.64 -2012-08-23 17:00:00,8757.8,0.0,77.62 -2012-08-23 18:00:00,8316.9,0.0,76.36 -2012-08-23 19:00:00,8053.1,0.0,75.44 -2012-08-23 20:00:00,7982.4,0.0,73.44 -2012-08-23 21:00:00,7796.6,0.0,71.93 -2012-08-23 22:00:00,7476.0,0.0,72.82 -2012-08-23 23:00:00,7021.6,0.0,71.42 -2012-08-24 00:00:00,6546.7,0.0,69.92 -2012-08-24 01:00:00,6198.3,0.0,69.57 -2012-08-24 02:00:00,5960.0,0.0,69.32 -2012-08-24 03:00:00,5823.5,0.0,68.96 -2012-08-24 04:00:00,5794.4,0.0,68.96 -2012-08-24 05:00:00,5999.6,0.0,68.72 -2012-08-24 06:00:00,6468.7,0.0,68.47 -2012-08-24 07:00:00,7082.5,0.0,69.35 -2012-08-24 08:00:00,7647.3,0.0,72.52 -2012-08-24 09:00:00,8102.8,0.0,74.95 -2012-08-24 10:00:00,8382.7,0.0,78.04 -2012-08-24 11:00:00,8568.6,0.0,79.17 -2012-08-24 12:00:00,8726.3,0.0,80.12 -2012-08-24 13:00:00,8840.2,0.0,79.83 -2012-08-24 14:00:00,8906.1,0.0,79.85 -2012-08-24 15:00:00,8965.7,0.0,78.7 -2012-08-24 16:00:00,8975.5,0.0,78.95 -2012-08-24 17:00:00,8832.4,0.0,78.18 -2012-08-24 18:00:00,8398.8,0.0,77.78 -2012-08-24 19:00:00,8138.1,0.0,76.25 -2012-08-24 20:00:00,8035.0,0.0,74.0 -2012-08-24 21:00:00,7801.7,0.0,73.42 -2012-08-24 22:00:00,7457.6,0.0,73.18 -2012-08-24 23:00:00,7101.6,0.0,71.51 -2012-08-25 00:00:00,6705.5,0.0,71.42 -2012-08-25 01:00:00,6394.3,0.0,70.08 -2012-08-25 02:00:00,6165.4,0.0,68.61 -2012-08-25 03:00:00,5989.9,0.0,68.5 -2012-08-25 04:00:00,5904.9,0.0,68.38 -2012-08-25 05:00:00,5908.1,0.0,67.25 -2012-08-25 06:00:00,5999.9,0.0,67.5 -2012-08-25 07:00:00,6289.5,0.0069,67.5 -2012-08-25 08:00:00,6719.4,0.0,70.25 -2012-08-25 09:00:00,7116.1,0.0,73.63 -2012-08-25 10:00:00,7488.2,0.0,75.13 -2012-08-25 11:00:00,7739.5,0.0,77.27 -2012-08-25 12:00:00,7879.2,0.0,77.29 -2012-08-25 13:00:00,7883.2,0.0,77.31 -2012-08-25 14:00:00,7833.9,0.0,78.62 -2012-08-25 15:00:00,7721.0,0.0,78.17 -2012-08-25 16:00:00,7542.3,0.0,77.39 -2012-08-25 17:00:00,7378.7,0.0,76.22 -2012-08-25 18:00:00,7223.7,0.0,75.33 -2012-08-25 19:00:00,7161.7,0.0,73.6 -2012-08-25 20:00:00,7166.7,0.0,70.52 -2012-08-25 21:00:00,7016.5,0.0,70.12 -2012-08-25 22:00:00,6779.3,0.0,69.37 -2012-08-25 23:00:00,6506.6,0.0,68.3 -2012-08-26 00:00:00,6188.7,0.0,67.47 -2012-08-26 01:00:00,5913.8,0.0,67.04 -2012-08-26 02:00:00,5699.2,0.0,66.79 -2012-08-26 03:00:00,5549.4,0.0,66.12 -2012-08-26 04:00:00,5465.7,0.0,66.67 -2012-08-26 05:00:00,5447.2,0.0,64.68 -2012-08-26 06:00:00,5449.6,0.0,65.74 -2012-08-26 07:00:00,5630.2,0.0,69.87 -2012-08-26 08:00:00,5951.8,0.0,69.3 -2012-08-26 09:00:00,6283.4,0.0,71.11 -2012-08-26 10:00:00,6617.0,0.0,73.02 -2012-08-26 11:00:00,6894.2,0.0,74.42 -2012-08-26 12:00:00,7080.9,0.0,74.78 -2012-08-26 13:00:00,7206.9,0.0,75.22 -2012-08-26 14:00:00,7271.9,0.0,76.68 -2012-08-26 15:00:00,7273.9,0.0,75.76 -2012-08-26 16:00:00,7289.3,0.0,75.63 -2012-08-26 17:00:00,7216.6,0.0,75.57 -2012-08-26 18:00:00,7112.3,0.0,74.47 -2012-08-26 19:00:00,7062.3,0.0,70.25 -2012-08-26 20:00:00,7197.4,0.0,68.29 -2012-08-26 21:00:00,7162.6,0.0,66.64 -2012-08-26 22:00:00,6963.5,0.0,66.38 -2012-08-26 23:00:00,6640.9,0.0,65.41 -2012-08-27 00:00:00,6315.2,0.0,64.83 -2012-08-27 01:00:00,6064.6,0.0,71.54 -2012-08-27 02:00:00,5902.0,0.0,64.74 -2012-08-27 03:00:00,5854.2,0.0,71.66 -2012-08-27 04:00:00,5924.6,0.0,72.05 -2012-08-27 05:00:00,6212.0,0.0069,64.4 -2012-08-27 06:00:00,6701.2,0.0,63.44 -2012-08-27 07:00:00,7322.5,0.0,63.44 -2012-08-27 08:00:00,7962.0,0.0,69.45 -2012-08-27 09:00:00,8441.1,0.0,72.94 -2012-08-27 10:00:00,8735.1,0.0,73.58 -2012-08-27 11:00:00,8910.0,0.0,80.51 -2012-08-27 12:00:00,8788.2,0.0011,74.96 -2012-08-27 13:00:00,8611.6,0.4187,71.89 -2012-08-27 14:00:00,8709.5,0.0304,72.23 -2012-08-27 15:00:00,8870.3,0.0,74.12 -2012-08-27 16:00:00,9004.5,0.0,75.37 -2012-08-27 17:00:00,8913.4,0.0,78.16 -2012-08-27 18:00:00,8600.1,0.0,77.69 -2012-08-27 19:00:00,8455.0,0.0,77.55 -2012-08-27 20:00:00,8478.8,0.0,73.17 -2012-08-27 21:00:00,8330.9,0.0,76.86 -2012-08-27 22:00:00,7993.0,0.0,73.15 -2012-08-27 23:00:00,7477.3,0.0,76.5 -2012-08-28 00:00:00,6969.1,0.0,74.03 -2012-08-28 01:00:00,6617.5,0.0,74.2 -2012-08-28 02:00:00,6388.1,0.0,73.94 -2012-08-28 03:00:00,6271.8,0.0,73.94 -2012-08-28 04:00:00,6262.1,0.0011,74.28 -2012-08-28 05:00:00,6539.9,0.008,73.51 -2012-08-28 06:00:00,7084.4,0.0122,73.51 -2012-08-28 07:00:00,7681.5,0.1154,73.85 -2012-08-28 08:00:00,8186.8,0.0263,73.78 -2012-08-28 09:00:00,8572.0,0.0,76.0 -2012-08-28 10:00:00,8834.8,0.0,77.73 -2012-08-28 11:00:00,9024.6,0.0,75.46 -2012-08-28 12:00:00,9168.8,0.0,76.62 -2012-08-28 13:00:00,9271.3,0.0,78.43 -2012-08-28 14:00:00,9323.6,0.0,79.31 -2012-08-28 15:00:00,9354.7,0.0,81.77 -2012-08-28 16:00:00,9330.3,0.0,81.76 -2012-08-28 17:00:00,9155.4,0.0,82.17 -2012-08-28 18:00:00,8701.2,0.0,81.23 -2012-08-28 19:00:00,8417.0,0.0,81.96 -2012-08-28 20:00:00,8341.8,0.0,76.56 -2012-08-28 21:00:00,8118.7,0.0,76.3 -2012-08-28 22:00:00,7747.4,0.0,75.64 -2012-08-28 23:00:00,7195.9,0.0,74.95 -2012-08-29 00:00:00,6630.4,0.0,73.79 -2012-08-29 01:00:00,6226.7,0.0,73.49 -2012-08-29 02:00:00,5927.8,0.0,72.49 -2012-08-29 03:00:00,5764.3,0.0,70.82 -2012-08-29 04:00:00,5710.0,0.0,70.23 -2012-08-29 05:00:00,5910.3,0.0,68.34 -2012-08-29 06:00:00,6317.5,0.0,67.1 -2012-08-29 07:00:00,6832.8,0.0,66.77 -2012-08-29 08:00:00,7281.2,0.0,69.42 -2012-08-29 09:00:00,7626.6,0.0,69.84 -2012-08-29 10:00:00,7817.6,0.0,71.77 -2012-08-29 11:00:00,7904.0,0.0,72.05 -2012-08-29 12:00:00,7964.1,0.0,72.68 -2012-08-29 13:00:00,8035.2,0.0,73.2 -2012-08-29 14:00:00,8122.3,0.0,73.75 -2012-08-29 15:00:00,8206.6,0.0,74.44 -2012-08-29 16:00:00,8256.4,0.0,74.77 -2012-08-29 17:00:00,8182.6,0.0,74.34 -2012-08-29 18:00:00,7811.4,0.0,73.87 -2012-08-29 19:00:00,7583.6,0.0,72.3 -2012-08-29 20:00:00,7529.0,0.0,68.82 -2012-08-29 21:00:00,7317.3,0.0,66.68 -2012-08-29 22:00:00,6966.7,0.0,64.28 -2012-08-29 23:00:00,6515.0,0.0,66.56 -2012-08-30 00:00:00,6027.3,0.0,65.69 -2012-08-30 01:00:00,5666.5,0.0,66.33 -2012-08-30 02:00:00,5420.2,0.0,65.82 -2012-08-30 03:00:00,5286.6,0.0,63.89 -2012-08-30 04:00:00,5269.7,0.0,63.54 -2012-08-30 05:00:00,5468.0,0.0,62.03 -2012-08-30 06:00:00,5949.6,0.0,62.67 -2012-08-30 07:00:00,6533.0,0.0,64.47 -2012-08-30 08:00:00,7083.3,0.0,68.88 -2012-08-30 09:00:00,7477.9,0.0,72.15 -2012-08-30 10:00:00,7721.5,0.0,72.67 -2012-08-30 11:00:00,7857.3,0.0,74.13 -2012-08-30 12:00:00,7981.6,0.0,74.4 -2012-08-30 13:00:00,8096.7,0.0,76.4 -2012-08-30 14:00:00,8209.8,0.0,77.25 -2012-08-30 15:00:00,8310.1,0.0,76.62 -2012-08-30 16:00:00,8373.9,0.0,76.93 -2012-08-30 17:00:00,8293.7,0.0,77.27 -2012-08-30 18:00:00,7918.2,0.0,76.5 -2012-08-30 19:00:00,7734.2,0.0,74.93 -2012-08-30 20:00:00,7686.4,0.0,74.42 -2012-08-30 21:00:00,7487.1,0.0,73.69 -2012-08-30 22:00:00,7186.9,0.0,72.07 -2012-08-30 23:00:00,6752.7,0.0,71.76 -2012-08-31 00:00:00,6289.7,0.0,72.58 -2012-08-31 01:00:00,5921.2,0.0,72.13 -2012-08-31 02:00:00,5680.9,0.0,71.59 -2012-08-31 03:00:00,5529.4,0.0,71.11 -2012-08-31 04:00:00,5519.4,0.0,70.11 -2012-08-31 05:00:00,5748.2,0.0,70.02 -2012-08-31 06:00:00,6247.0,0.0,70.02 -2012-08-31 07:00:00,6850.2,0.0,69.94 -2012-08-31 08:00:00,7461.1,0.0,71.99 -2012-08-31 09:00:00,7978.8,0.0,74.45 -2012-08-31 10:00:00,8388.2,0.0,76.87 -2012-08-31 11:00:00,8669.8,0.0,78.65 -2012-08-31 12:00:00,8842.0,0.0,79.09 -2012-08-31 13:00:00,8988.2,0.0,81.31 -2012-08-31 14:00:00,9099.1,0.0,81.7 -2012-08-31 15:00:00,9166.7,0.0,82.21 -2012-08-31 16:00:00,9200.9,0.0,81.4 -2012-08-31 17:00:00,9093.0,0.0,81.27 -2012-08-31 18:00:00,8723.4,0.0,79.62 -2012-08-31 19:00:00,8503.0,0.0,78.53 -2012-08-31 20:00:00,8407.7,0.0,78.02 -2012-08-31 21:00:00,8169.2,0.0,77.57 -2012-08-31 22:00:00,7843.5,0.0,77.14 -2012-08-31 23:00:00,7440.7,0.0,76.64 -2012-09-01 00:00:00,6993.4,0.0,76.29 -2012-09-01 01:00:00,6652.5,0.0,76.59 -2012-09-01 02:00:00,6390.6,0.0,75.76 -2012-09-01 03:00:00,6215.4,0.0,75.4 -2012-09-01 04:00:00,6104.7,0.0,74.73 -2012-09-01 05:00:00,6099.1,0.0,74.46 -2012-09-01 06:00:00,6184.3,0.0,75.31 -2012-09-01 07:00:00,6441.3,0.0,74.68 -2012-09-01 08:00:00,6848.0,0.0,74.92 -2012-09-01 09:00:00,7256.8,0.0,76.1 -2012-09-01 10:00:00,7603.8,0.0,77.83 -2012-09-01 11:00:00,7893.8,0.0,79.08 -2012-09-01 12:00:00,8113.1,0.0,78.99 -2012-09-01 13:00:00,8228.1,0.0,79.61 -2012-09-01 14:00:00,8271.3,0.0,78.89 -2012-09-01 15:00:00,8256.6,0.0,78.86 -2012-09-01 16:00:00,8198.5,0.0,78.24 -2012-09-01 17:00:00,8066.8,0.0,76.67 -2012-09-01 18:00:00,7886.9,0.0,75.13 -2012-09-01 19:00:00,7813.1,0.0,72.07 -2012-09-01 20:00:00,7810.6,0.0,69.67 -2012-09-01 21:00:00,7684.8,0.0,69.01 -2012-09-01 22:00:00,7471.8,0.0,68.96 -2012-09-01 23:00:00,7176.0,0.0,68.71 -2012-09-02 00:00:00,6820.7,0.0,68.97 -2012-09-02 01:00:00,6512.5,0.0,74.45 -2012-09-02 02:00:00,6245.3,0.0,68.04 -2012-09-02 03:00:00,6053.8,0.0,67.71 -2012-09-02 04:00:00,5931.2,0.0,67.53 -2012-09-02 05:00:00,5914.2,0.0,72.55 -2012-09-02 06:00:00,5896.5,0.0,67.22 -2012-09-02 07:00:00,6010.6,0.0,66.8 -2012-09-02 08:00:00,6308.9,0.0,67.56 -2012-09-02 09:00:00,6652.8,0.0,69.17 -2012-09-02 10:00:00,6976.7,0.0,75.61 -2012-09-02 11:00:00,7257.4,0.0,72.3 -2012-09-02 12:00:00,7386.6,0.0,79.03 -2012-09-02 13:00:00,7398.2,0.0,73.5 -2012-09-02 14:00:00,7398.0,0.0,73.86 -2012-09-02 15:00:00,7343.7,0.0,74.32 -2012-09-02 16:00:00,7287.2,0.0,72.76 -2012-09-02 17:00:00,7265.1,0.0,72.91 -2012-09-02 18:00:00,7216.6,0.0,72.27 -2012-09-02 19:00:00,7262.8,0.0,70.85 -2012-09-02 20:00:00,7371.9,0.0,68.87 -2012-09-02 21:00:00,7316.8,0.0,68.28 -2012-09-02 22:00:00,7169.1,0.0,74.44 -2012-09-02 23:00:00,6905.5,0.0,74.53 -2012-09-03 00:00:00,6598.4,0.0,65.75 -2012-09-03 01:00:00,6332.7,0.0,74.2 -2012-09-03 02:00:00,6141.0,0.0,73.87 -2012-09-03 03:00:00,5993.6,0.0,73.12 -2012-09-03 04:00:00,5917.8,0.0,63.78 -2012-09-03 05:00:00,5940.2,0.0,63.36 -2012-09-03 06:00:00,6047.8,0.0,65.8 -2012-09-03 07:00:00,6175.9,0.0,72.02 -2012-09-03 08:00:00,6415.5,0.0,67.43 -2012-09-03 09:00:00,6674.9,0.0,68.91 -2012-09-03 10:00:00,6882.2,0.0,73.92 -2012-09-03 11:00:00,7008.9,0.0,72.71 -2012-09-03 12:00:00,7071.3,0.0,73.52 -2012-09-03 13:00:00,7076.7,0.0,74.04 -2012-09-03 14:00:00,7092.0,0.0,74.05 -2012-09-03 15:00:00,7062.6,0.0,73.25 -2012-09-03 16:00:00,7022.4,0.0,73.16 -2012-09-03 17:00:00,7042.4,0.0,71.5 -2012-09-03 18:00:00,7040.5,0.0,69.5 -2012-09-03 19:00:00,7102.7,0.0,67.53 -2012-09-03 20:00:00,7160.0,0.0,72.52 -2012-09-03 21:00:00,7073.1,0.0,66.64 -2012-09-03 22:00:00,6853.8,0.0,65.94 -2012-09-03 23:00:00,6494.1,0.0,65.68 -2012-09-04 00:00:00,6173.1,0.0,67.02 -2012-09-04 01:00:00,5958.0,0.0,66.95 -2012-09-04 02:00:00,5795.1,0.002,67.27 -2012-09-04 03:00:00,5730.2,0.0112,70.69 -2012-09-04 04:00:00,5784.0,0.0,71.36 -2012-09-04 05:00:00,6093.1,0.0,68.49 -2012-09-04 06:00:00,6667.0,0.0069,70.88 -2012-09-04 07:00:00,7319.0,0.0,68.76 -2012-09-04 08:00:00,7932.3,0.0,71.72 -2012-09-04 09:00:00,8378.4,0.0,73.79 -2012-09-04 10:00:00,8693.8,0.0,71.99 -2012-09-04 11:00:00,8863.7,0.0,74.75 -2012-09-04 12:00:00,9012.7,0.0082,74.38 -2012-09-04 13:00:00,9119.6,0.0,74.73 -2012-09-04 14:00:00,9216.3,0.0,75.79 -2012-09-04 15:00:00,9157.5,0.0,77.4 -2012-09-04 16:00:00,9065.9,0.002,75.15 -2012-09-04 17:00:00,9003.4,0.0,74.8 -2012-09-04 18:00:00,8732.4,0.045,74.01 -2012-09-04 19:00:00,8725.6,0.0228,75.02 -2012-09-04 20:00:00,8699.6,0.0,74.3 -2012-09-04 21:00:00,8490.7,0.0011,76.27 -2012-09-04 22:00:00,8099.5,0.0239,75.92 -2012-09-04 23:00:00,7563.5,0.0022,73.55 -2012-09-05 00:00:00,7032.2,0.0,74.04 -2012-09-05 01:00:00,6682.0,0.0,74.13 -2012-09-05 02:00:00,6452.2,0.0069,74.2 -2012-09-05 03:00:00,6341.8,0.011,74.13 -2012-09-05 04:00:00,6362.9,0.0,74.13 -2012-09-05 05:00:00,6673.1,0.0,74.13 -2012-09-05 06:00:00,7330.5,0.0,76.49 -2012-09-05 07:00:00,8018.1,0.0,77.24 -2012-09-05 08:00:00,8613.7,0.0,74.55 -2012-09-05 09:00:00,9009.0,0.0919,75.12 -2012-09-05 10:00:00,9282.0,0.0919,78.57 -2012-09-05 11:00:00,9416.4,0.0087,75.86 -2012-09-05 12:00:00,9311.8,0.0155,75.36 -2012-09-05 13:00:00,9351.8,0.0328,76.17 -2012-09-05 14:00:00,9290.5,0.0,76.36 -2012-09-05 15:00:00,9218.0,0.0,75.22 -2012-09-05 16:00:00,9309.9,0.0,75.57 -2012-09-05 17:00:00,9284.5,0.0,76.66 -2012-09-05 18:00:00,8904.6,0.0,76.83 -2012-09-05 19:00:00,8737.1,0.165,76.0 -2012-09-05 20:00:00,8601.9,0.0412,74.97 -2012-09-05 21:00:00,8262.6,0.0481,74.77 -2012-09-05 22:00:00,7782.4,0.0687,71.46 -2012-09-05 23:00:00,7232.2,0.0,70.55 -2012-09-06 00:00:00,6663.0,0.0,69.54 -2012-09-06 01:00:00,6274.3,0.0,69.38 -2012-09-06 02:00:00,6030.5,0.0,69.03 -2012-09-06 03:00:00,5899.0,0.0,68.95 -2012-09-06 04:00:00,5892.8,0.0,67.63 -2012-09-06 05:00:00,6141.4,0.0,66.73 -2012-09-06 06:00:00,6715.6,0.0,66.54 -2012-09-06 07:00:00,7339.7,0.0,67.24 -2012-09-06 08:00:00,7800.2,0.0,69.63 -2012-09-06 09:00:00,8160.3,0.0,71.31 -2012-09-06 10:00:00,8333.8,0.0,72.64 -2012-09-06 11:00:00,8442.7,0.0,72.8 -2012-09-06 12:00:00,8569.9,0.0,73.16 -2012-09-06 13:00:00,8727.8,0.0,73.48 -2012-09-06 14:00:00,8785.0,0.0,74.53 -2012-09-06 15:00:00,8853.9,0.0,73.35 -2012-09-06 16:00:00,8867.7,0.0,74.23 -2012-09-06 17:00:00,8784.4,0.0,72.94 -2012-09-06 18:00:00,8459.6,0.0,71.53 -2012-09-06 19:00:00,8383.2,0.0,71.63 -2012-09-06 20:00:00,8316.7,0.0,71.03 -2012-09-06 21:00:00,8051.4,0.0,70.42 -2012-09-06 22:00:00,7662.2,0.0,70.02 -2012-09-06 23:00:00,7155.5,0.0,69.74 -2012-09-07 00:00:00,6640.8,0.0,69.33 -2012-09-07 01:00:00,6283.0,0.0,69.4 -2012-09-07 02:00:00,6039.0,0.0,69.61 -2012-09-07 03:00:00,5914.4,0.0,67.62 -2012-09-07 04:00:00,5920.1,0.0,70.11 -2012-09-07 05:00:00,6171.0,0.0,69.5 -2012-09-07 06:00:00,6786.1,0.0,69.94 -2012-09-07 07:00:00,7472.9,0.0,69.96 -2012-09-07 08:00:00,8061.2,0.0,72.87 -2012-09-07 09:00:00,8568.1,0.0,73.61 -2012-09-07 10:00:00,8937.6,0.0,76.46 -2012-09-07 11:00:00,9220.1,0.0,76.82 -2012-09-07 12:00:00,9440.9,0.0,77.77 -2012-09-07 13:00:00,9602.2,0.0,78.52 -2012-09-07 14:00:00,9747.1,0.0,80.11 -2012-09-07 15:00:00,9896.3,0.0,79.31 -2012-09-07 16:00:00,9952.4,0.0,79.33 -2012-09-07 17:00:00,9807.4,0.0,78.75 -2012-09-07 18:00:00,9382.6,0.0,78.01 -2012-09-07 19:00:00,9211.9,0.0,77.04 -2012-09-07 20:00:00,9016.9,0.0,76.07 -2012-09-07 21:00:00,8690.6,0.0,74.7 -2012-09-07 22:00:00,8203.3,0.0,74.6 -2012-09-07 23:00:00,7640.7,0.0,73.84 -2012-09-08 00:00:00,7060.3,0.0,73.15 -2012-09-08 01:00:00,6658.7,0.0,72.7 -2012-09-08 02:00:00,6387.6,0.0,72.18 -2012-09-08 03:00:00,6224.2,0.0,71.85 -2012-09-08 04:00:00,6143.2,0.0,71.49 -2012-09-08 05:00:00,6161.5,0.0,71.42 -2012-09-08 06:00:00,6292.0,0.0,71.76 -2012-09-08 07:00:00,6600.5,0.0,71.78 -2012-09-08 08:00:00,7069.9,0.0,75.74 -2012-09-08 09:00:00,7501.1,0.0,75.04 -2012-09-08 10:00:00,7745.9,0.0143,75.55 -2012-09-08 11:00:00,8031.4,0.1546,75.68 -2012-09-08 12:00:00,8302.8,0.0111,78.08 -2012-09-08 13:00:00,8452.6,0.0358,77.31 -2012-09-08 14:00:00,8540.3,0.0336,78.73 -2012-09-08 15:00:00,8593.0,0.0,79.26 -2012-09-08 16:00:00,8568.2,0.0,78.03 -2012-09-08 17:00:00,8466.0,0.0,77.96 -2012-09-08 18:00:00,8041.3,0.0683,72.44 -2012-09-08 19:00:00,7938.0,0.1013,72.24 -2012-09-08 20:00:00,7656.2,0.0,70.43 -2012-09-08 21:00:00,7225.6,0.0375,71.64 -2012-09-08 22:00:00,6869.5,0.02,70.93 -2012-09-08 23:00:00,6480.4,0.01,70.59 -2012-09-09 00:00:00,6073.3,0.0,70.6 -2012-09-09 01:00:00,5764.8,0.0,70.52 -2012-09-09 02:00:00,5536.5,0.0206,70.03 -2012-09-09 03:00:00,5363.9,0.0275,69.79 -2012-09-09 04:00:00,5261.9,0.0,68.54 -2012-09-09 05:00:00,5231.0,0.0,66.73 -2012-09-09 06:00:00,5252.6,0.0,65.97 -2012-09-09 07:00:00,5342.0,0.0,65.7 -2012-09-09 08:00:00,5631.2,0.0,65.7 -2012-09-09 09:00:00,6001.9,0.0,67.72 -2012-09-09 10:00:00,6328.8,0.0,69.57 -2012-09-09 11:00:00,6501.5,0.0,69.7 -2012-09-09 12:00:00,6612.9,0.0069,68.65 -2012-09-09 13:00:00,6678.8,0.0,69.43 -2012-09-09 14:00:00,6726.5,0.0,70.02 -2012-09-09 15:00:00,6768.6,0.0,70.71 -2012-09-09 16:00:00,6785.5,0.0069,69.29 -2012-09-09 17:00:00,6764.0,0.0275,69.61 -2012-09-09 18:00:00,6694.6,0.0412,69.11 -2012-09-09 19:00:00,6782.5,0.0206,67.11 -2012-09-09 20:00:00,6814.7,0.0069,66.68 -2012-09-09 21:00:00,6608.8,0.0,63.32 -2012-09-09 22:00:00,6329.2,0.0,62.16 -2012-09-09 23:00:00,5922.4,0.0,60.77 -2012-09-10 00:00:00,5538.8,0.0,59.91 -2012-09-10 01:00:00,5239.6,0.0,59.56 -2012-09-10 02:00:00,5045.8,0.0,59.22 -2012-09-10 03:00:00,4928.3,0.0,62.31 -2012-09-10 04:00:00,4916.3,0.0,59.42 -2012-09-10 05:00:00,5141.0,0.0,61.46 -2012-09-10 06:00:00,5656.9,0.0,61.03 -2012-09-10 07:00:00,6214.9,0.0,62.52 -2012-09-10 08:00:00,6694.4,0.0,64.18 -2012-09-10 09:00:00,7056.8,0.0,65.12 -2012-09-10 10:00:00,7232.0,0.0,64.92 -2012-09-10 11:00:00,7336.8,0.0,68.35 -2012-09-10 12:00:00,7379.8,0.0,68.78 -2012-09-10 13:00:00,7428.9,0.0,68.07 -2012-09-10 14:00:00,7422.2,0.0,68.3 -2012-09-10 15:00:00,7427.2,0.0,68.65 -2012-09-10 16:00:00,7437.9,0.0,68.46 -2012-09-10 17:00:00,7290.2,0.0,68.55 -2012-09-10 18:00:00,6899.6,0.0,69.19 -2012-09-10 19:00:00,6769.4,0.0,66.21 -2012-09-10 20:00:00,6639.8,0.0,65.34 -2012-09-10 21:00:00,6327.0,0.0,64.41 -2012-09-10 22:00:00,5907.6,0.0,63.68 -2012-09-10 23:00:00,5393.7,0.0,61.82 -2012-09-11 00:00:00,4933.4,0.0,60.99 -2012-09-11 01:00:00,4645.5,0.0,60.47 -2012-09-11 02:00:00,4466.1,0.0,60.19 -2012-09-11 03:00:00,4389.6,0.0,57.64 -2012-09-11 04:00:00,4395.5,0.0,57.46 -2012-09-11 05:00:00,4629.8,0.0,57.86 -2012-09-11 06:00:00,5193.0,0.0,56.92 -2012-09-11 07:00:00,5796.5,0.0,56.82 -2012-09-11 08:00:00,6265.3,0.0,59.66 -2012-09-11 09:00:00,6606.1,0.0,61.77 -2012-09-11 10:00:00,6784.5,0.0,62.79 -2012-09-11 11:00:00,6889.3,0.0,64.66 -2012-09-11 12:00:00,6964.0,0.0,66.0 -2012-09-11 13:00:00,7032.8,0.0,65.46 -2012-09-11 14:00:00,7088.1,0.0,67.76 -2012-09-11 15:00:00,7165.3,0.0,69.3 -2012-09-11 16:00:00,7230.2,0.0,69.0 -2012-09-11 17:00:00,7181.5,0.0,69.87 -2012-09-11 18:00:00,6881.2,0.0,67.62 -2012-09-11 19:00:00,6797.2,0.0,65.86 -2012-09-11 20:00:00,6663.6,0.0,62.74 -2012-09-11 21:00:00,6386.4,0.0,60.83 -2012-09-11 22:00:00,6003.6,0.0,60.12 -2012-09-11 23:00:00,5529.3,0.0,60.81 -2012-09-12 00:00:00,5090.6,0.0,59.61 -2012-09-12 01:00:00,4797.5,0.0,60.52 -2012-09-12 02:00:00,4624.4,0.0,60.14 -2012-09-12 03:00:00,4544.7,0.0,59.59 -2012-09-12 04:00:00,4546.1,0.0,58.47 -2012-09-12 05:00:00,4786.3,0.0,57.85 -2012-09-12 06:00:00,5383.9,0.0,57.79 -2012-09-12 07:00:00,6037.4,0.0,59.12 -2012-09-12 08:00:00,6573.9,0.0,63.09 -2012-09-12 09:00:00,6978.5,0.0,67.45 -2012-09-12 10:00:00,7214.9,0.0,69.9 -2012-09-12 11:00:00,7395.9,0.0,71.72 -2012-09-12 12:00:00,7524.2,0.0,72.1 -2012-09-12 13:00:00,7627.9,0.0,73.96 -2012-09-12 14:00:00,7677.9,0.0,73.07 -2012-09-12 15:00:00,7746.1,0.0,73.69 -2012-09-12 16:00:00,7791.8,0.0,73.43 -2012-09-12 17:00:00,7682.7,0.0,72.87 -2012-09-12 18:00:00,7263.8,0.0,70.37 -2012-09-12 19:00:00,7127.1,0.0,68.1 -2012-09-12 20:00:00,6946.9,0.0,67.5 -2012-09-12 21:00:00,6671.6,0.0,67.24 -2012-09-12 22:00:00,6283.1,0.0,66.38 -2012-09-12 23:00:00,5780.2,0.0,65.37 -2012-09-13 00:00:00,5320.5,0.0,65.35 -2012-09-13 01:00:00,5020.5,0.0,65.01 -2012-09-13 02:00:00,4850.7,0.0,64.68 -2012-09-13 03:00:00,4767.9,0.0,64.41 -2012-09-13 04:00:00,4768.5,0.0,64.16 -2012-09-13 05:00:00,5029.5,0.0,63.64 -2012-09-13 06:00:00,5624.1,0.0,63.64 -2012-09-13 07:00:00,6276.0,0.0,64.05 -2012-09-13 08:00:00,6831.3,0.0,65.83 -2012-09-13 09:00:00,7254.3,0.0,68.3 -2012-09-13 10:00:00,7491.0,0.0,70.57 -2012-09-13 11:00:00,7661.0,0.0,71.87 -2012-09-13 12:00:00,7812.8,0.0,73.84 -2012-09-13 13:00:00,7908.8,0.0,74.19 -2012-09-13 14:00:00,7970.5,0.0,74.57 -2012-09-13 15:00:00,8049.8,0.0,74.58 -2012-09-13 16:00:00,8095.6,0.0,74.41 -2012-09-13 17:00:00,7944.7,0.0,72.85 -2012-09-13 18:00:00,7512.5,0.0,72.24 -2012-09-13 19:00:00,7385.0,0.0,68.1 -2012-09-13 20:00:00,7217.7,0.0,67.5 -2012-09-13 21:00:00,6930.5,0.0,66.89 -2012-09-13 22:00:00,6542.1,0.0,66.8 -2012-09-13 23:00:00,6046.9,0.0,65.97 -2012-09-14 00:00:00,5573.9,0.0,66.18 -2012-09-14 01:00:00,5269.5,0.0,65.56 -2012-09-14 02:00:00,5063.5,0.0,65.49 -2012-09-14 03:00:00,4949.3,0.0,65.31 -2012-09-14 04:00:00,4932.7,0.0,64.32 -2012-09-14 05:00:00,5170.9,0.0,61.29 -2012-09-14 06:00:00,5783.2,0.0,59.41 -2012-09-14 07:00:00,6448.9,0.0,59.22 -2012-09-14 08:00:00,6989.7,0.0,66.35 -2012-09-14 09:00:00,7419.5,0.0,69.64 -2012-09-14 10:00:00,7695.5,0.0,70.57 -2012-09-14 11:00:00,7868.0,0.0,72.44 -2012-09-14 12:00:00,7968.1,0.0,73.78 -2012-09-14 13:00:00,8036.6,0.0,74.41 -2012-09-14 14:00:00,8042.7,0.0,74.15 -2012-09-14 15:00:00,8098.7,0.0,74.58 -2012-09-14 16:00:00,8082.3,0.0,74.44 -2012-09-14 17:00:00,7856.3,0.0,73.02 -2012-09-14 18:00:00,7471.5,0.0,70.58 -2012-09-14 19:00:00,7358.6,0.0,68.98 -2012-09-14 20:00:00,7159.9,0.0,67.47 -2012-09-14 21:00:00,6897.7,0.0,67.13 -2012-09-14 22:00:00,6554.9,0.0,68.28 -2012-09-14 23:00:00,6129.0,0.0,67.85 -2012-09-15 00:00:00,5687.5,0.0,67.67 -2012-09-15 01:00:00,5389.7,0.0,67.33 -2012-09-15 02:00:00,5183.0,0.0,67.33 -2012-09-15 03:00:00,5035.7,0.0,67.32 -2012-09-15 04:00:00,4927.9,0.0,65.76 -2012-09-15 05:00:00,4880.5,0.0,65.65 -2012-09-15 06:00:00,4946.8,0.009,63.44 -2012-09-15 07:00:00,5101.2,0.0069,64.16 -2012-09-15 08:00:00,5430.3,0.0,66.74 -2012-09-15 09:00:00,5757.1,0.0,67.38 -2012-09-15 10:00:00,6003.9,0.0,69.35 -2012-09-15 11:00:00,6136.4,0.0,69.55 -2012-09-15 12:00:00,6210.2,0.0,70.65 -2012-09-15 13:00:00,6221.5,0.0,70.25 -2012-09-15 14:00:00,6221.0,0.0,68.29 -2012-09-15 15:00:00,6212.8,0.0,70.78 -2012-09-15 16:00:00,6188.4,0.0,71.11 -2012-09-15 17:00:00,6125.2,0.0,71.2 -2012-09-15 18:00:00,6035.4,0.0,70.79 -2012-09-15 19:00:00,6090.4,0.0,67.71 -2012-09-15 20:00:00,6037.8,0.0,66.09 -2012-09-15 21:00:00,5860.8,0.0,65.68 -2012-09-15 22:00:00,5641.9,0.0,65.06 -2012-09-15 23:00:00,5342.6,0.0,64.55 -2012-09-16 00:00:00,5029.6,0.0,64.12 -2012-09-16 01:00:00,4757.6,0.0,63.19 -2012-09-16 02:00:00,4566.2,0.0,62.93 -2012-09-16 03:00:00,4450.3,0.0,59.14 -2012-09-16 04:00:00,4376.8,0.0,58.89 -2012-09-16 05:00:00,4375.5,0.0,58.63 -2012-09-16 06:00:00,4424.9,0.0,58.11 -2012-09-16 07:00:00,4580.2,0.0,56.56 -2012-09-16 08:00:00,4922.7,0.0,62.45 -2012-09-16 09:00:00,5260.4,0.0,63.87 -2012-09-16 10:00:00,5560.3,0.0,64.89 -2012-09-16 11:00:00,5753.1,0.0,67.58 -2012-09-16 12:00:00,5874.0,0.0,67.65 -2012-09-16 13:00:00,5931.9,0.0,68.07 -2012-09-16 14:00:00,5971.1,0.0,69.98 -2012-09-16 15:00:00,5984.2,0.0,71.59 -2012-09-16 16:00:00,6013.5,0.0,71.73 -2012-09-16 17:00:00,6002.5,0.0,70.3 -2012-09-16 18:00:00,5993.1,0.0,69.16 -2012-09-16 19:00:00,6087.3,0.0,67.49 -2012-09-16 20:00:00,6076.9,0.0,66.13 -2012-09-16 21:00:00,5929.6,0.0,65.7 -2012-09-16 22:00:00,5670.0,0.0,65.34 -2012-09-16 23:00:00,5317.2,0.0,63.58 -2012-09-17 00:00:00,4975.8,0.0,61.65 -2012-09-17 01:00:00,4732.3,0.0,60.37 -2012-09-17 02:00:00,4573.4,0.0,58.96 -2012-09-17 03:00:00,4495.3,0.0,57.64 -2012-09-17 04:00:00,4519.8,0.0,56.09 -2012-09-17 05:00:00,4754.4,0.0,53.96 -2012-09-17 06:00:00,5240.7,0.0,53.35 -2012-09-17 07:00:00,5775.0,0.0,56.69 -2012-09-17 08:00:00,6302.5,0.0,63.12 -2012-09-17 09:00:00,6687.2,0.0,67.1 -2012-09-17 10:00:00,6904.1,0.0,68.99 -2012-09-17 11:00:00,7085.4,0.0,69.24 -2012-09-17 12:00:00,7210.3,0.0,71.6 -2012-09-17 13:00:00,7308.0,0.0,71.05 -2012-09-17 14:00:00,7360.3,0.0,72.82 -2012-09-17 15:00:00,7387.4,0.0,72.64 -2012-09-17 16:00:00,7386.9,0.0,71.5 -2012-09-17 17:00:00,7279.4,0.0,70.24 -2012-09-17 18:00:00,6891.5,0.0,68.09 -2012-09-17 19:00:00,6848.6,0.0,65.68 -2012-09-17 20:00:00,6669.3,0.0,65.17 -2012-09-17 21:00:00,6427.8,0.0,64.81 -2012-09-17 22:00:00,6127.1,0.0,64.55 -2012-09-17 23:00:00,5731.2,0.0,62.74 -2012-09-18 00:00:00,5345.4,0.0,65.82 -2012-09-18 01:00:00,5106.3,0.0,65.1 -2012-09-18 02:00:00,4966.5,0.0,65.17 -2012-09-18 03:00:00,4919.9,0.0,66.55 -2012-09-18 04:00:00,4950.5,0.0011,70.28 -2012-09-18 05:00:00,5236.1,0.0,66.83 -2012-09-18 06:00:00,5882.5,0.0397,69.62 -2012-09-18 07:00:00,6545.0,0.0648,66.59 -2012-09-18 08:00:00,7071.1,0.0367,68.55 -2012-09-18 09:00:00,7433.8,0.0112,68.89 -2012-09-18 10:00:00,7635.2,0.0181,71.34 -2012-09-18 11:00:00,7755.0,0.0123,72.03 -2012-09-18 12:00:00,7824.5,0.0,73.58 -2012-09-18 13:00:00,7900.4,0.0,73.69 -2012-09-18 14:00:00,7951.2,0.0,73.99 -2012-09-18 15:00:00,7997.3,0.0,74.17 -2012-09-18 16:00:00,8020.9,0.0,74.1 -2012-09-18 17:00:00,8004.6,0.0,74.2 -2012-09-18 18:00:00,7805.5,0.0,72.37 -2012-09-18 19:00:00,7716.4,0.0069,72.29 -2012-09-18 20:00:00,7355.0,0.6879,69.55 -2012-09-18 21:00:00,7033.5,0.3318,70.07 -2012-09-18 22:00:00,6617.3,0.133,68.69 -2012-09-18 23:00:00,6119.4,0.0189,67.94 -2012-09-19 00:00:00,5636.6,0.0,69.66 -2012-09-19 01:00:00,5326.6,0.0,70.89 -2012-09-19 02:00:00,5129.7,0.0,70.96 -2012-09-19 03:00:00,4856.3,0.0,63.55 -2012-09-19 04:00:00,4766.1,0.0,68.22 -2012-09-19 05:00:00,4934.5,0.0069,66.81 -2012-09-19 06:00:00,5491.1,0.2887,65.33 -2012-09-19 07:00:00,6035.9,0.0137,64.02 -2012-09-19 08:00:00,6414.6,0.0137,65.17 -2012-09-19 09:00:00,6693.4,0.0,65.26 -2012-09-19 10:00:00,6866.5,0.0,63.57 -2012-09-19 11:00:00,6964.5,0.0,65.74 -2012-09-19 12:00:00,7003.8,0.0,67.31 -2012-09-19 13:00:00,7024.4,0.0,70.03 -2012-09-19 14:00:00,7052.5,0.0,69.4 -2012-09-19 15:00:00,7098.8,0.0,69.67 -2012-09-19 16:00:00,7101.5,0.0,69.99 -2012-09-19 17:00:00,7002.4,0.0,69.52 -2012-09-19 18:00:00,6681.2,0.0,67.36 -2012-09-19 19:00:00,6652.6,0.0,63.81 -2012-09-19 20:00:00,6455.9,0.0,60.8 -2012-09-19 21:00:00,6167.7,0.0,60.28 -2012-09-19 22:00:00,5794.7,0.0,62.01 -2012-09-19 23:00:00,5291.7,0.0,60.95 -2012-09-20 00:00:00,4829.9,0.0,61.08 -2012-09-20 01:00:00,4541.4,0.0,60.56 -2012-09-20 02:00:00,4356.9,0.0,57.77 -2012-09-20 03:00:00,4284.2,0.0,57.51 -2012-09-20 04:00:00,4294.7,0.0,57.41 -2012-09-20 05:00:00,4528.4,0.0,58.78 -2012-09-20 06:00:00,5100.4,0.0,58.11 -2012-09-20 07:00:00,5686.4,0.0,56.9 -2012-09-20 08:00:00,6170.5,0.0,59.88 -2012-09-20 09:00:00,6521.8,0.0,61.95 -2012-09-20 10:00:00,6713.4,0.0,63.46 -2012-09-20 11:00:00,6842.8,0.0,64.89 -2012-09-20 12:00:00,6935.4,0.0,64.78 -2012-09-20 13:00:00,6984.4,0.0,66.54 -2012-09-20 14:00:00,6959.1,0.0,65.37 -2012-09-20 15:00:00,6948.1,0.0,65.37 -2012-09-20 16:00:00,6972.2,0.0,65.71 -2012-09-20 17:00:00,6895.6,0.0,66.22 -2012-09-20 18:00:00,6624.8,0.0,65.53 -2012-09-20 19:00:00,6582.1,0.0,59.79 -2012-09-20 20:00:00,6392.9,0.0,59.27 -2012-09-20 21:00:00,6106.7,0.0,58.95 -2012-09-20 22:00:00,5740.8,0.0,58.22 -2012-09-20 23:00:00,5296.9,0.0,57.39 -2012-09-21 00:00:00,4852.5,0.0,57.96 -2012-09-21 01:00:00,4585.5,0.0,57.62 -2012-09-21 02:00:00,4421.4,0.0,56.71 -2012-09-21 03:00:00,4342.5,0.0,56.71 -2012-09-21 04:00:00,4347.4,0.0,56.11 -2012-09-21 05:00:00,4594.6,0.0,61.19 -2012-09-21 06:00:00,5215.1,0.0,60.61 -2012-09-21 07:00:00,5827.1,0.0,58.9 -2012-09-21 08:00:00,6288.3,0.0,60.42 -2012-09-21 09:00:00,6670.8,0.0,62.33 -2012-09-21 10:00:00,6877.8,0.0,63.41 -2012-09-21 11:00:00,7011.4,0.0,65.33 -2012-09-21 12:00:00,7103.2,0.0,65.94 -2012-09-21 13:00:00,7163.1,0.0,66.45 -2012-09-21 14:00:00,7185.1,0.0,66.68 -2012-09-21 15:00:00,7185.7,0.0,66.88 -2012-09-21 16:00:00,7148.4,0.0,65.56 -2012-09-21 17:00:00,6988.4,0.0,65.03 -2012-09-21 18:00:00,6666.7,0.0,65.09 -2012-09-21 19:00:00,6602.8,0.0,63.89 -2012-09-21 20:00:00,6376.7,0.0,62.97 -2012-09-21 21:00:00,6135.5,0.0,62.73 -2012-09-21 22:00:00,5805.1,0.0,63.73 -2012-09-21 23:00:00,5408.1,0.0,63.49 -2012-09-22 00:00:00,5007.9,0.0,63.3 -2012-09-22 01:00:00,4727.7,0.0,62.96 -2012-09-22 02:00:00,4561.5,0.0,62.94 -2012-09-22 03:00:00,4457.6,0.0,62.54 -2012-09-22 04:00:00,4391.4,0.0,62.28 -2012-09-22 05:00:00,4422.8,0.0,62.13 -2012-09-22 06:00:00,4590.9,0.0,62.01 -2012-09-22 07:00:00,4833.7,0.0,61.5 -2012-09-22 08:00:00,5208.3,0.0,62.55 -2012-09-22 09:00:00,5563.3,0.0,63.55 -2012-09-22 10:00:00,5885.0,0.0,64.67 -2012-09-22 11:00:00,6123.5,0.0,67.35 -2012-09-22 12:00:00,6235.8,0.0,71.55 -2012-09-22 13:00:00,6291.0,0.0,67.67 -2012-09-22 14:00:00,6368.3,0.0,68.22 -2012-09-22 15:00:00,6404.6,0.0,68.74 -2012-09-22 16:00:00,6406.6,0.0,68.8 -2012-09-22 17:00:00,6389.6,0.0,68.54 -2012-09-22 18:00:00,6397.4,0.0,68.28 -2012-09-22 19:00:00,6510.6,0.0033,67.26 -2012-09-22 20:00:00,6423.4,0.0,66.83 -2012-09-22 21:00:00,6228.1,0.0,71.93 -2012-09-22 22:00:00,5907.2,0.1643,65.91 -2012-09-22 23:00:00,5595.3,0.0289,65.09 -2012-09-23 00:00:00,5246.6,0.0031,65.19 -2012-09-23 01:00:00,4974.7,0.0,65.36 -2012-09-23 02:00:00,4770.7,0.0,66.55 -2012-09-23 03:00:00,4610.9,0.0,66.53 -2012-09-23 04:00:00,4490.8,0.0,66.01 -2012-09-23 05:00:00,4450.0,0.0,66.43 -2012-09-23 06:00:00,4431.9,0.0,65.13 -2012-09-23 07:00:00,4509.5,0.0,62.56 -2012-09-23 08:00:00,4779.2,0.0,62.32 -2012-09-23 09:00:00,5077.0,0.0,62.83 -2012-09-23 10:00:00,5316.2,0.0,64.95 -2012-09-23 11:00:00,5479.1,0.0,65.2 -2012-09-23 12:00:00,5560.5,0.0,66.56 -2012-09-23 13:00:00,5596.0,0.0,67.07 -2012-09-23 14:00:00,5618.9,0.0,68.55 -2012-09-23 15:00:00,5623.1,0.0,70.14 -2012-09-23 16:00:00,5631.9,0.0,70.14 -2012-09-23 17:00:00,5627.3,0.0,66.52 -2012-09-23 18:00:00,5647.7,0.0,64.97 -2012-09-23 19:00:00,5811.3,0.0,60.66 -2012-09-23 20:00:00,5773.3,0.0,58.9 -2012-09-23 21:00:00,5601.0,0.0,59.76 -2012-09-23 22:00:00,5305.9,0.0,58.11 -2012-09-23 23:00:00,4944.5,0.0,58.65 -2012-09-24 00:00:00,4598.6,0.0,56.83 -2012-09-24 01:00:00,4362.1,0.0,57.66 -2012-09-24 02:00:00,4222.4,0.0,57.1 -2012-09-24 03:00:00,4157.0,0.0,57.03 -2012-09-24 04:00:00,4171.5,0.0,56.7 -2012-09-24 05:00:00,4425.4,0.0,55.93 -2012-09-24 06:00:00,5004.3,0.0,55.28 -2012-09-24 07:00:00,5589.3,0.0,55.3 -2012-09-24 08:00:00,6001.6,0.0,59.02 -2012-09-24 09:00:00,6307.7,0.0,60.83 -2012-09-24 10:00:00,6463.3,0.0,61.72 -2012-09-24 11:00:00,6563.4,0.0,63.58 -2012-09-24 12:00:00,6612.8,0.0,63.64 -2012-09-24 13:00:00,6673.8,0.0,65.17 -2012-09-24 14:00:00,6689.4,0.0,65.87 -2012-09-24 15:00:00,6698.6,0.0,64.87 -2012-09-24 16:00:00,6710.4,0.0,64.77 -2012-09-24 17:00:00,6641.3,0.0,64.44 -2012-09-24 18:00:00,6385.8,0.0,63.06 -2012-09-24 19:00:00,6384.7,0.0,60.04 -2012-09-24 20:00:00,6191.3,0.0,58.63 -2012-09-24 21:00:00,5904.9,0.0,59.62 -2012-09-24 22:00:00,5527.1,0.0,59.17 -2012-09-24 23:00:00,5044.1,0.0,59.87 -2012-09-25 00:00:00,4611.0,0.0,60.41 -2012-09-25 01:00:00,4342.8,0.0,59.92 -2012-09-25 02:00:00,4190.2,0.0,55.96 -2012-09-25 03:00:00,4110.3,0.0,55.99 -2012-09-25 04:00:00,4124.5,0.0,51.64 -2012-09-25 05:00:00,4360.9,0.0,50.07 -2012-09-25 06:00:00,4951.1,0.0,49.91 -2012-09-25 07:00:00,5542.1,0.0,54.6 -2012-09-25 08:00:00,6004.0,0.0,60.47 -2012-09-25 09:00:00,6354.3,0.0,62.07 -2012-09-25 10:00:00,6525.6,0.0,64.17 -2012-09-25 11:00:00,6651.2,0.0,65.72 -2012-09-25 12:00:00,6740.3,0.0,68.39 -2012-09-25 13:00:00,6829.8,0.0,69.6 -2012-09-25 14:00:00,6876.3,0.0,70.21 -2012-09-25 15:00:00,6912.0,0.0,70.87 -2012-09-25 16:00:00,6941.5,0.0,70.06 -2012-09-25 17:00:00,6850.1,0.0,69.15 -2012-09-25 18:00:00,6595.7,0.0,67.27 -2012-09-25 19:00:00,6569.2,0.0,66.16 -2012-09-25 20:00:00,6329.3,0.0,65.7 -2012-09-25 21:00:00,6044.4,0.0,65.26 -2012-09-25 22:00:00,5670.2,0.0,65.0 -2012-09-25 23:00:00,5229.1,0.0,64.64 -2012-09-26 00:00:00,4811.1,0.0,64.66 -2012-09-26 01:00:00,4560.1,0.0,64.0 -2012-09-26 02:00:00,4405.7,0.0,64.19 -2012-09-26 03:00:00,4345.9,0.0,64.0 -2012-09-26 04:00:00,4372.4,0.0,64.67 -2012-09-26 05:00:00,4615.7,0.0,65.0 -2012-09-26 06:00:00,5184.4,0.0011,65.24 -2012-09-26 07:00:00,5742.0,0.0,65.33 -2012-09-26 08:00:00,6224.7,0.0,66.4 -2012-09-26 09:00:00,6548.9,0.0,68.87 -2012-09-26 10:00:00,6698.1,0.0,68.79 -2012-09-26 11:00:00,6817.2,0.0,69.72 -2012-09-26 12:00:00,6929.7,0.0,70.83 -2012-09-26 13:00:00,7078.3,0.0,70.88 -2012-09-26 14:00:00,7127.9,0.0,73.12 -2012-09-26 15:00:00,7148.8,0.0069,71.97 -2012-09-26 16:00:00,7193.6,0.0,71.66 -2012-09-26 17:00:00,7196.5,0.0,70.58 -2012-09-26 18:00:00,6985.5,0.0,70.59 -2012-09-26 19:00:00,6890.1,0.0,68.88 -2012-09-26 20:00:00,6699.8,0.0069,68.27 -2012-09-26 21:00:00,6430.5,0.0,68.44 -2012-09-26 22:00:00,6068.5,0.0,68.18 -2012-09-26 23:00:00,5606.0,0.0,68.21 -2012-09-27 00:00:00,5167.7,0.0,67.83 -2012-09-27 01:00:00,4882.3,0.0,67.9 -2012-09-27 02:00:00,4716.4,0.0,67.49 -2012-09-27 03:00:00,4614.4,0.0,67.69 -2012-09-27 04:00:00,4627.2,0.0,67.33 -2012-09-27 05:00:00,4899.9,0.0,67.64 -2012-09-27 06:00:00,5567.7,0.039,65.5 -2012-09-27 07:00:00,6254.9,0.008,65.0 -2012-09-27 08:00:00,6748.7,0.0,66.24 -2012-09-27 09:00:00,7058.6,0.0069,67.62 -2012-09-27 10:00:00,7193.7,0.0,68.17 -2012-09-27 11:00:00,7336.3,0.0,70.5 -2012-09-27 12:00:00,7454.3,0.0,70.78 -2012-09-27 13:00:00,7531.0,0.0,69.08 -2012-09-27 14:00:00,7475.7,0.0,69.49 -2012-09-27 15:00:00,7493.7,0.0,68.32 -2012-09-27 16:00:00,7518.9,0.0,68.41 -2012-09-27 17:00:00,7431.8,0.0,67.11 -2012-09-27 18:00:00,7187.1,0.0,66.21 -2012-09-27 19:00:00,7111.6,0.0,63.49 -2012-09-27 20:00:00,6862.1,0.0,61.74 -2012-09-27 21:00:00,6584.5,0.0,61.4 -2012-09-27 22:00:00,6178.3,0.0,60.4 -2012-09-27 23:00:00,5705.5,0.0,60.71 -2012-09-28 00:00:00,5240.6,0.0,58.32 -2012-09-28 01:00:00,4934.8,0.0011,59.29 -2012-09-28 02:00:00,4754.0,0.0011,58.61 -2012-09-28 03:00:00,4677.4,0.0199,59.26 -2012-09-28 04:00:00,4697.1,0.19,64.5 -2012-09-28 05:00:00,4989.8,0.0275,59.84 -2012-09-28 06:00:00,5650.5,0.0011,64.73 -2012-09-28 07:00:00,6351.0,0.0031,61.13 -2012-09-28 08:00:00,6854.0,0.0033,65.99 -2012-09-28 09:00:00,7202.1,0.6501,66.63 -2012-09-28 10:00:00,7396.8,0.2372,66.04 -2012-09-28 11:00:00,7483.2,0.4629,64.53 -2012-09-28 12:00:00,7519.3,0.0082,65.03 -2012-09-28 13:00:00,7533.7,0.0184,66.95 -2012-09-28 14:00:00,7504.7,0.0,67.12 -2012-09-28 15:00:00,7505.9,0.0,67.51 -2012-09-28 16:00:00,7504.8,0.0,68.16 -2012-09-28 17:00:00,7387.8,0.0,67.54 -2012-09-28 18:00:00,7090.6,0.0,66.73 -2012-09-28 19:00:00,6959.0,0.0069,63.38 -2012-09-28 20:00:00,6626.0,0.0069,64.36 -2012-09-28 21:00:00,6319.2,0.0,62.69 -2012-09-28 22:00:00,5958.9,0.0069,63.59 -2012-09-28 23:00:00,5532.1,0.0619,64.64 -2012-09-29 00:00:00,5085.8,0.0619,64.44 -2012-09-29 01:00:00,4787.2,0.0,64.12 -2012-09-29 02:00:00,4585.7,0.0,64.02 -2012-09-29 03:00:00,4459.7,0.0,62.63 -2012-09-29 04:00:00,4393.3,0.0,63.59 -2012-09-29 05:00:00,4421.3,0.0481,62.12 -2012-09-29 06:00:00,4574.8,0.0687,62.21 -2012-09-29 07:00:00,4783.0,0.0275,62.04 -2012-09-29 08:00:00,5118.3,0.0206,58.43 -2012-09-29 09:00:00,5404.4,0.1444,61.99 -2012-09-29 10:00:00,5624.5,0.1444,62.23 -2012-09-29 11:00:00,5722.7,0.0,60.73 -2012-09-29 12:00:00,5754.8,0.0,65.11 -2012-09-29 13:00:00,5741.5,0.0,63.17 -2012-09-29 14:00:00,5707.8,0.0,62.86 -2012-09-29 15:00:00,5669.5,0.0,63.29 -2012-09-29 16:00:00,5641.7,0.0,62.38 -2012-09-29 17:00:00,5632.0,0.0,62.31 -2012-09-29 18:00:00,5729.0,0.0,61.95 -2012-09-29 19:00:00,5831.3,0.0,59.67 -2012-09-29 20:00:00,5742.1,0.0,60.72 -2012-09-29 21:00:00,5576.4,0.0,60.55 -2012-09-29 22:00:00,5381.3,0.0,60.45 -2012-09-29 23:00:00,5101.8,0.0,60.3 -2012-09-30 00:00:00,4795.1,0.0,60.01 -2012-09-30 01:00:00,4531.2,0.0,60.54 -2012-09-30 02:00:00,4340.8,0.0069,57.83 -2012-09-30 03:00:00,4226.5,0.0069,57.56 -2012-09-30 04:00:00,4159.6,0.0137,59.41 -2012-09-30 05:00:00,4194.0,0.0412,56.97 -2012-09-30 06:00:00,4291.8,0.0619,59.69 -2012-09-30 07:00:00,4426.0,0.0481,59.52 -2012-09-30 08:00:00,4700.0,0.0206,57.64 -2012-09-30 09:00:00,5005.9,0.0275,58.66 -2012-09-30 10:00:00,5272.4,0.0275,59.84 -2012-09-30 11:00:00,5416.6,0.0,60.79 -2012-09-30 12:00:00,5511.7,0.0275,62.62 -2012-09-30 13:00:00,5550.9,0.0,64.4 -2012-09-30 14:00:00,5560.4,0.0069,63.46 -2012-09-30 15:00:00,5554.6,0.0293,62.91 -2012-09-30 16:00:00,5533.2,0.0141,62.97 -2012-09-30 17:00:00,5524.0,0.0,62.76 -2012-09-30 18:00:00,5603.3,0.0,61.37 -2012-09-30 19:00:00,5800.9,0.0,59.87 -2012-09-30 20:00:00,5708.4,0.0,60.83 -2012-09-30 21:00:00,5531.5,0.0,61.53 -2012-09-30 22:00:00,5262.5,0.0,60.71 -2012-09-30 23:00:00,4912.2,0.0,60.76 -2012-10-01 00:00:00,4549.4,0.0,61.34 -2012-10-01 01:00:00,4283.9,0.0,59.66 -2012-10-01 02:00:00,4145.4,0.0,59.24 -2012-10-01 03:00:00,4089.0,0.0,60.04 -2012-10-01 04:00:00,4111.1,0.0,59.14 -2012-10-01 05:00:00,4346.3,0.0,59.05 -2012-10-01 06:00:00,4918.1,0.0,58.27 -2012-10-01 07:00:00,5473.1,0.0,58.37 -2012-10-01 08:00:00,5875.7,0.0,60.13 -2012-10-01 09:00:00,6192.5,0.0,60.91 -2012-10-01 10:00:00,6342.4,0.0,62.72 -2012-10-01 11:00:00,6464.6,0.0,64.25 -2012-10-01 12:00:00,6538.7,0.0,65.5 -2012-10-01 13:00:00,6609.6,0.0,66.19 -2012-10-01 14:00:00,6657.7,0.0,66.97 -2012-10-01 15:00:00,6685.7,0.0,67.63 -2012-10-01 16:00:00,6730.0,0.0,67.89 -2012-10-01 17:00:00,6669.0,0.0,67.56 -2012-10-01 18:00:00,6479.6,0.0,66.32 -2012-10-01 19:00:00,6494.2,0.0,65.61 -2012-10-01 20:00:00,6291.4,0.0,65.28 -2012-10-01 21:00:00,5996.1,0.0,64.82 -2012-10-01 22:00:00,5614.9,0.0,64.62 -2012-10-01 23:00:00,5156.8,0.0,63.51 -2012-10-02 00:00:00,4729.9,0.0,62.78 -2012-10-02 01:00:00,4471.4,0.0,62.45 -2012-10-02 02:00:00,4322.8,0.0,62.44 -2012-10-02 03:00:00,4260.1,0.0,63.68 -2012-10-02 04:00:00,4282.3,0.0,63.65 -2012-10-02 05:00:00,4537.8,0.0,61.87 -2012-10-02 06:00:00,5170.2,0.0,62.71 -2012-10-02 07:00:00,5831.7,0.0,63.85 -2012-10-02 08:00:00,6269.9,0.0,64.54 -2012-10-02 09:00:00,6570.8,0.0,66.11 -2012-10-02 10:00:00,6708.6,0.0,68.11 -2012-10-02 11:00:00,6804.9,0.0,68.69 -2012-10-02 12:00:00,6843.4,0.0203,69.3 -2012-10-02 13:00:00,6831.5,0.0586,63.86 -2012-10-02 14:00:00,6816.3,0.0587,63.22 -2012-10-02 15:00:00,6838.4,0.0342,62.88 -2012-10-02 16:00:00,6892.4,0.0869,63.37 -2012-10-02 17:00:00,6916.3,0.0278,65.73 -2012-10-02 18:00:00,6745.5,0.0033,64.92 -2012-10-02 19:00:00,6642.0,0.0069,62.46 -2012-10-02 20:00:00,6434.6,0.002,63.37 -2012-10-02 21:00:00,6167.4,0.0011,63.34 -2012-10-02 22:00:00,5787.8,0.0894,63.6 -2012-10-02 23:00:00,5330.1,0.0344,64.34 -2012-10-03 00:00:00,4890.3,0.0481,64.34 -2012-10-03 01:00:00,4616.5,0.0,64.17 -2012-10-03 02:00:00,4457.6,0.0,64.11 -2012-10-03 03:00:00,4382.6,0.0069,63.34 -2012-10-03 04:00:00,4400.9,0.0069,63.5 -2012-10-03 05:00:00,4677.6,0.0,63.5 -2012-10-03 06:00:00,5372.3,0.0,63.67 -2012-10-03 07:00:00,6065.3,0.0,64.07 -2012-10-03 08:00:00,6560.2,0.055,64.34 -2012-10-03 09:00:00,6908.6,0.0,64.67 -2012-10-03 10:00:00,7078.9,0.0,66.1 -2012-10-03 11:00:00,7173.5,0.0,66.93 -2012-10-03 12:00:00,7261.5,0.0,69.04 -2012-10-03 13:00:00,7362.8,0.0,71.28 -2012-10-03 14:00:00,7382.7,0.0,67.11 -2012-10-03 15:00:00,7403.4,0.0,66.84 -2012-10-03 16:00:00,7465.8,0.0,67.64 -2012-10-03 17:00:00,7424.6,0.0,67.55 -2012-10-03 18:00:00,7238.3,0.0,66.5 -2012-10-03 19:00:00,7168.1,0.0,69.47 -2012-10-03 20:00:00,6929.5,0.0,66.4 -2012-10-03 21:00:00,6641.2,0.0,66.49 -2012-10-03 22:00:00,6275.9,0.0,66.15 -2012-10-03 23:00:00,5782.5,0.0,66.05 -2012-10-04 00:00:00,5311.3,0.0,67.2 -2012-10-04 01:00:00,5003.1,0.0,69.34 -2012-10-04 02:00:00,4818.6,0.0069,65.98 -2012-10-04 03:00:00,4723.4,0.0,66.33 -2012-10-04 04:00:00,4746.7,0.0,66.07 -2012-10-04 05:00:00,5030.2,0.0,66.37 -2012-10-04 06:00:00,5738.6,0.0,65.8 -2012-10-04 07:00:00,6437.5,0.0,68.35 -2012-10-04 08:00:00,6949.1,0.0,69.1 -2012-10-04 09:00:00,7304.5,0.0,70.62 -2012-10-04 10:00:00,7477.8,0.0,66.77 -2012-10-04 11:00:00,7594.4,0.0,71.62 -2012-10-04 12:00:00,7647.0,0.0,68.35 -2012-10-04 13:00:00,7655.9,0.0,72.12 -2012-10-04 14:00:00,7651.8,0.0,67.26 -2012-10-04 15:00:00,7660.3,0.0,67.54 -2012-10-04 16:00:00,7672.3,0.0,73.4 -2012-10-04 17:00:00,7596.5,0.0,67.03 -2012-10-04 18:00:00,7382.5,0.0,67.02 -2012-10-04 19:00:00,7332.5,0.0,70.69 -2012-10-04 20:00:00,7097.6,0.0,70.24 -2012-10-04 21:00:00,6773.6,0.0,70.27 -2012-10-04 22:00:00,6356.5,0.0,65.54 -2012-10-04 23:00:00,5842.6,0.0,64.4 -2012-10-05 00:00:00,5351.9,0.0,64.04 -2012-10-05 01:00:00,5025.6,0.0,63.28 -2012-10-05 02:00:00,4808.8,0.0,63.1 -2012-10-05 03:00:00,4702.8,0.0,62.76 -2012-10-05 04:00:00,4692.2,0.0,62.48 -2012-10-05 05:00:00,4921.5,0.0,62.22 -2012-10-05 06:00:00,5529.5,0.0,63.02 -2012-10-05 07:00:00,6138.9,0.0,63.29 -2012-10-05 08:00:00,6581.2,0.0,63.54 -2012-10-05 09:00:00,6958.7,0.0,64.5 -2012-10-05 10:00:00,7158.4,0.0,65.9 -2012-10-05 11:00:00,7313.2,0.0,67.52 -2012-10-05 12:00:00,7412.2,0.0,69.23 -2012-10-05 13:00:00,7485.5,0.0,69.94 -2012-10-05 14:00:00,7533.0,0.0,71.19 -2012-10-05 15:00:00,7590.0,0.0,71.33 -2012-10-05 16:00:00,7598.2,0.0,71.47 -2012-10-05 17:00:00,7461.8,0.0,70.23 -2012-10-05 18:00:00,7176.7,0.0,68.56 -2012-10-05 19:00:00,7068.7,0.0,67.88 -2012-10-05 20:00:00,6802.9,0.0,67.03 -2012-10-05 21:00:00,6505.2,0.0,65.02 -2012-10-05 22:00:00,6168.6,0.0,64.76 -2012-10-05 23:00:00,5769.1,0.0,64.93 -2012-10-06 00:00:00,5326.9,0.0,63.35 -2012-10-06 01:00:00,5017.4,0.0,64.06 -2012-10-06 02:00:00,4793.9,0.0069,65.03 -2012-10-06 03:00:00,4679.1,0.0,64.59 -2012-10-06 04:00:00,4610.6,0.0,64.23 -2012-10-06 05:00:00,4646.8,0.0,63.85 -2012-10-06 06:00:00,4796.2,0.0,63.8 -2012-10-06 07:00:00,5018.3,0.0,63.73 -2012-10-06 08:00:00,5414.8,0.0,64.68 -2012-10-06 09:00:00,5810.6,0.0,66.5 -2012-10-06 10:00:00,6115.2,0.0,68.18 -2012-10-06 11:00:00,6289.1,0.0,70.19 -2012-10-06 12:00:00,6381.7,0.0,71.88 -2012-10-06 13:00:00,6386.3,0.0,73.57 -2012-10-06 14:00:00,6337.1,0.0,72.57 -2012-10-06 15:00:00,6243.6,0.0,72.19 -2012-10-06 16:00:00,6113.1,0.0,71.45 -2012-10-06 17:00:00,5903.3,0.0,67.63 -2012-10-06 18:00:00,5833.8,0.0,65.24 -2012-10-06 19:00:00,5859.6,0.0,63.94 -2012-10-06 20:00:00,5691.6,0.0,63.0 -2012-10-06 21:00:00,5505.1,0.0206,62.66 -2012-10-06 22:00:00,5273.0,0.0275,62.21 -2012-10-06 23:00:00,4974.4,0.0,59.27 -2012-10-07 00:00:00,4651.9,0.0,59.09 -2012-10-07 01:00:00,4404.0,0.0,56.55 -2012-10-07 02:00:00,4185.9,0.0,56.19 -2012-10-07 03:00:00,4098.1,0.0,56.12 -2012-10-07 04:00:00,4049.6,0.0,54.26 -2012-10-07 05:00:00,4058.6,0.0,53.92 -2012-10-07 06:00:00,4124.2,0.0,52.98 -2012-10-07 07:00:00,4240.4,0.0,53.1 -2012-10-07 08:00:00,4508.2,0.0,53.87 -2012-10-07 09:00:00,4788.0,0.0,55.35 -2012-10-07 10:00:00,5024.3,0.0,56.67 -2012-10-07 11:00:00,5176.4,0.0,56.83 -2012-10-07 12:00:00,5281.3,0.0237,57.81 -2012-10-07 13:00:00,5310.4,0.0378,55.21 -2012-10-07 14:00:00,5303.3,0.01,54.97 -2012-10-07 15:00:00,5279.4,0.0,52.36 -2012-10-07 16:00:00,5306.6,0.0069,54.51 -2012-10-07 17:00:00,5389.8,0.0206,53.84 -2012-10-07 18:00:00,5516.2,0.0639,52.34 -2012-10-07 19:00:00,5547.9,0.0069,52.24 -2012-10-07 20:00:00,5453.8,0.0083,50.19 -2012-10-07 21:00:00,5320.8,0.0052,51.48 -2012-10-07 22:00:00,5103.6,0.0244,50.07 -2012-10-07 23:00:00,4783.8,0.008,50.15 -2012-10-08 00:00:00,4463.1,0.0137,49.98 -2012-10-08 01:00:00,4223.3,0.0206,50.66 -2012-10-08 02:00:00,4081.8,0.0,50.58 -2012-10-08 03:00:00,4009.8,0.0,50.51 -2012-10-08 04:00:00,4015.3,0.0,50.16 -2012-10-08 05:00:00,4188.1,0.0,49.01 -2012-10-08 06:00:00,4576.9,0.0,47.34 -2012-10-08 07:00:00,4989.8,0.0,48.75 -2012-10-08 08:00:00,5385.9,0.0,50.0 -2012-10-08 09:00:00,5682.1,0.0,51.92 -2012-10-08 10:00:00,5825.7,0.0,53.2 -2012-10-08 11:00:00,5907.8,0.0,54.44 -2012-10-08 12:00:00,5961.5,0.0,54.48 -2012-10-08 13:00:00,5978.0,0.0,54.57 -2012-10-08 14:00:00,5986.2,0.0,54.9 -2012-10-08 15:00:00,5997.9,0.0,54.99 -2012-10-08 16:00:00,6066.2,0.0,55.0 -2012-10-08 17:00:00,6118.8,0.0,54.6 -2012-10-08 18:00:00,6114.1,0.0011,54.34 -2012-10-08 19:00:00,6084.1,0.0,52.94 -2012-10-08 20:00:00,5910.4,0.0,54.09 -2012-10-08 21:00:00,5673.1,0.0,52.6 -2012-10-08 22:00:00,5350.2,0.0069,52.61 -2012-10-08 23:00:00,4914.1,0.0,52.54 -2012-10-09 00:00:00,4503.8,0.0,53.6 -2012-10-09 01:00:00,4239.7,0.0069,53.6 -2012-10-09 02:00:00,4089.7,0.0344,53.6 -2012-10-09 03:00:00,4029.3,0.0412,53.5 -2012-10-09 04:00:00,4053.2,0.0206,53.63 -2012-10-09 05:00:00,4294.0,0.0069,53.66 -2012-10-09 06:00:00,4891.3,0.0069,53.98 -2012-10-09 07:00:00,5497.4,0.0,53.98 -2012-10-09 08:00:00,5893.5,0.002,53.92 -2012-10-09 09:00:00,6122.9,0.01,54.42 -2012-10-09 10:00:00,6247.8,0.0069,56.09 -2012-10-09 11:00:00,6323.0,0.0069,56.48 -2012-10-09 12:00:00,6352.6,0.0,55.86 -2012-10-09 13:00:00,6378.8,0.0,56.29 -2012-10-09 14:00:00,6347.0,0.0069,56.47 -2012-10-09 15:00:00,6355.3,0.0,56.3 -2012-10-09 16:00:00,6411.5,0.0,57.69 -2012-10-09 17:00:00,6446.2,0.0,56.64 -2012-10-09 18:00:00,6389.2,0.0,56.55 -2012-10-09 19:00:00,6320.8,0.0,56.55 -2012-10-09 20:00:00,6124.9,0.0,56.38 -2012-10-09 21:00:00,5837.9,0.0,57.44 -2012-10-09 22:00:00,5473.1,0.0,57.27 -2012-10-09 23:00:00,4986.2,0.0,56.28 -2012-10-10 00:00:00,4553.9,0.0,56.12 -2012-10-10 01:00:00,4289.9,0.0069,55.95 -2012-10-10 02:00:00,4127.2,0.0069,56.82 -2012-10-10 03:00:00,4059.7,0.002,56.41 -2012-10-10 04:00:00,4078.1,0.0364,56.22 -2012-10-10 05:00:00,4320.8,0.0492,53.93 -2012-10-10 06:00:00,4940.4,0.0616,53.83 -2012-10-10 07:00:00,5559.8,0.021,57.21 -2012-10-10 08:00:00,5966.0,0.0148,58.42 -2012-10-10 09:00:00,6227.9,0.0069,55.6 -2012-10-10 10:00:00,6353.8,0.0069,57.73 -2012-10-10 11:00:00,6425.3,0.0,61.76 -2012-10-10 12:00:00,6474.1,0.0,62.07 -2012-10-10 13:00:00,6519.8,0.0,64.08 -2012-10-10 14:00:00,6522.9,0.0,64.04 -2012-10-10 15:00:00,6530.1,0.0,64.46 -2012-10-10 16:00:00,6544.5,0.0,64.97 -2012-10-10 17:00:00,6469.6,0.0,63.69 -2012-10-10 18:00:00,6370.7,0.0,64.0 -2012-10-10 19:00:00,6353.0,0.0,63.31 -2012-10-10 20:00:00,6104.6,0.0,63.12 -2012-10-10 21:00:00,5845.5,0.0,62.7 -2012-10-10 22:00:00,5473.3,0.0,62.46 -2012-10-10 23:00:00,4974.0,0.0,60.94 -2012-10-11 00:00:00,4522.1,0.0,59.09 -2012-10-11 01:00:00,4252.0,0.0,58.15 -2012-10-11 02:00:00,4087.9,0.0,55.6 -2012-10-11 03:00:00,4027.3,0.0,54.18 -2012-10-11 04:00:00,4037.4,0.0,52.03 -2012-10-11 05:00:00,4271.3,0.0,51.13 -2012-10-11 06:00:00,4861.2,0.0,50.12 -2012-10-11 07:00:00,5460.1,0.0,50.94 -2012-10-11 08:00:00,5833.5,0.0,50.78 -2012-10-11 09:00:00,6097.3,0.0,52.2 -2012-10-11 10:00:00,6199.4,0.0,52.8 -2012-10-11 11:00:00,6246.8,0.0,54.07 -2012-10-11 12:00:00,6278.5,0.0,55.74 -2012-10-11 13:00:00,6291.9,0.0,56.59 -2012-10-11 14:00:00,6280.4,0.0,57.02 -2012-10-11 15:00:00,6287.6,0.0,57.35 -2012-10-11 16:00:00,6333.0,0.0,58.32 -2012-10-11 17:00:00,6318.4,0.0,57.7 -2012-10-11 18:00:00,6248.5,0.0,56.29 -2012-10-11 19:00:00,6251.8,0.0,53.39 -2012-10-11 20:00:00,6057.7,0.0,54.19 -2012-10-11 21:00:00,5802.3,0.0,53.93 -2012-10-11 22:00:00,5452.3,0.0,54.64 -2012-10-11 23:00:00,5027.9,0.0,53.32 -2012-10-12 00:00:00,4581.1,0.0,54.04 -2012-10-12 01:00:00,4293.2,0.0,53.69 -2012-10-12 02:00:00,4130.1,0.0,53.83 -2012-10-12 03:00:00,4056.0,0.0,53.22 -2012-10-12 04:00:00,4064.4,0.0,53.86 -2012-10-12 05:00:00,4293.5,0.0,53.64 -2012-10-12 06:00:00,4875.1,0.0,53.46 -2012-10-12 07:00:00,5447.1,0.0,53.44 -2012-10-12 08:00:00,5837.1,0.0,53.62 -2012-10-12 09:00:00,6095.1,0.0,57.18 -2012-10-12 10:00:00,6224.3,0.0,59.56 -2012-10-12 11:00:00,6302.0,0.0,58.67 -2012-10-12 12:00:00,6290.1,0.0,58.84 -2012-10-12 13:00:00,6263.5,0.0,59.63 -2012-10-12 14:00:00,6229.8,0.0,55.0 -2012-10-12 15:00:00,6210.1,0.0,53.87 -2012-10-12 16:00:00,6235.1,0.0,52.04 -2012-10-12 17:00:00,6244.3,0.0,51.83 -2012-10-12 18:00:00,6167.8,0.0,50.93 -2012-10-12 19:00:00,6144.7,0.0,50.74 -2012-10-12 20:00:00,5951.2,0.0,51.37 -2012-10-12 21:00:00,5720.4,0.0,49.7 -2012-10-12 22:00:00,5405.7,0.0,47.77 -2012-10-12 23:00:00,5026.5,0.0,46.77 -2012-10-13 00:00:00,4647.2,0.0,45.11 -2012-10-13 01:00:00,4385.3,0.0,44.61 -2012-10-13 02:00:00,4221.3,0.0,44.1 -2012-10-13 03:00:00,4126.9,0.0,43.84 -2012-10-13 04:00:00,4088.6,0.0,42.34 -2012-10-13 05:00:00,4144.3,0.0,41.99 -2012-10-13 06:00:00,4327.8,0.0,40.87 -2012-10-13 07:00:00,4546.1,0.0,39.41 -2012-10-13 08:00:00,4861.7,0.0,43.33 -2012-10-13 09:00:00,5133.9,0.0,45.1 -2012-10-13 10:00:00,5313.5,0.0,46.34 -2012-10-13 11:00:00,5408.1,0.0,48.57 -2012-10-13 12:00:00,5422.8,0.0,48.42 -2012-10-13 13:00:00,5369.0,0.0,47.96 -2012-10-13 14:00:00,5333.5,0.0,49.45 -2012-10-13 15:00:00,5306.0,0.0,50.78 -2012-10-13 16:00:00,5300.9,0.0,49.99 -2012-10-13 17:00:00,5327.3,0.0,49.89 -2012-10-13 18:00:00,5534.6,0.0,47.57 -2012-10-13 19:00:00,5643.2,0.0,47.32 -2012-10-13 20:00:00,5547.3,0.0,47.85 -2012-10-13 21:00:00,5405.5,0.0,48.22 -2012-10-13 22:00:00,5199.3,0.0,48.39 -2012-10-13 23:00:00,4929.7,0.0,50.5 -2012-10-14 00:00:00,4644.0,0.0,51.43 -2012-10-14 01:00:00,4384.8,0.0,52.83 -2012-10-14 02:00:00,4195.8,0.0,52.83 -2012-10-14 03:00:00,4086.7,0.0,53.98 -2012-10-14 04:00:00,4042.1,0.0,54.15 -2012-10-14 05:00:00,4065.6,0.0,55.15 -2012-10-14 06:00:00,4174.0,0.0,56.39 -2012-10-14 07:00:00,4311.2,0.0,56.46 -2012-10-14 08:00:00,4589.9,0.0,57.61 -2012-10-14 09:00:00,4858.6,0.0,59.27 -2012-10-14 10:00:00,5070.5,0.0,61.02 -2012-10-14 11:00:00,5210.6,0.0,61.23 -2012-10-14 12:00:00,5267.7,0.0,63.21 -2012-10-14 13:00:00,5314.0,0.0,65.58 -2012-10-14 14:00:00,5345.6,0.0,65.73 -2012-10-14 15:00:00,5380.6,0.0,65.88 -2012-10-14 16:00:00,5398.2,0.0,67.2 -2012-10-14 17:00:00,5450.3,0.0,67.42 -2012-10-14 18:00:00,5664.2,0.0,65.95 -2012-10-14 19:00:00,5761.2,0.0,64.91 -2012-10-14 20:00:00,5681.9,0.0,64.47 -2012-10-14 21:00:00,5501.4,0.0,63.85 -2012-10-14 22:00:00,5236.9,0.0,63.83 -2012-10-14 23:00:00,4882.4,0.0,63.86 -2012-10-15 00:00:00,4546.0,0.0,63.57 -2012-10-15 01:00:00,4320.4,0.0,63.31 -2012-10-15 02:00:00,4190.0,0.0,63.14 -2012-10-15 03:00:00,4137.6,0.0,63.24 -2012-10-15 04:00:00,4167.6,0.0,63.34 -2012-10-15 05:00:00,4435.4,0.0,62.93 -2012-10-15 06:00:00,5100.4,0.0,63.69 -2012-10-15 07:00:00,5739.0,0.0,63.7 -2012-10-15 08:00:00,6160.7,0.0,64.34 -2012-10-15 09:00:00,6467.2,0.0,65.12 -2012-10-15 10:00:00,6653.9,0.0,65.8 -2012-10-15 11:00:00,6747.3,0.0,68.97 -2012-10-15 12:00:00,6803.1,0.0,69.31 -2012-10-15 13:00:00,6821.5,0.0,70.44 -2012-10-15 14:00:00,6808.4,0.0,69.12 -2012-10-15 15:00:00,6815.0,0.0,67.77 -2012-10-15 16:00:00,6894.6,0.0,67.4 -2012-10-15 17:00:00,6916.0,0.0054,66.24 -2012-10-15 18:00:00,6795.2,0.0052,64.6 -2012-10-15 19:00:00,6642.7,0.0317,63.02 -2012-10-15 20:00:00,6352.2,0.0225,63.14 -2012-10-15 21:00:00,6037.1,0.0137,63.15 -2012-10-15 22:00:00,5616.8,0.0,62.87 -2012-10-15 23:00:00,5128.2,0.0,62.23 -2012-10-16 00:00:00,4666.2,0.0,62.27 -2012-10-16 01:00:00,4387.8,0.0,62.03 -2012-10-16 02:00:00,4211.7,0.0,61.18 -2012-10-16 03:00:00,4108.3,0.0,60.76 -2012-10-16 04:00:00,4113.6,0.0137,59.18 -2012-10-16 05:00:00,4341.5,0.0069,58.6 -2012-10-16 06:00:00,4955.3,0.0344,58.17 -2012-10-16 07:00:00,5536.8,0.0,57.58 -2012-10-16 08:00:00,5896.4,0.0,53.97 -2012-10-16 09:00:00,6117.9,0.0,54.32 -2012-10-16 10:00:00,6233.7,0.0,55.56 -2012-10-16 11:00:00,6276.8,0.0,56.56 -2012-10-16 12:00:00,6306.7,0.0,56.5 -2012-10-16 13:00:00,6329.1,0.0,56.95 -2012-10-16 14:00:00,6338.7,0.0,57.55 -2012-10-16 15:00:00,6342.6,0.0,57.78 -2012-10-16 16:00:00,6368.6,0.0,57.69 -2012-10-16 17:00:00,6358.7,0.0,57.12 -2012-10-16 18:00:00,6315.6,0.0,55.35 -2012-10-16 19:00:00,6278.7,0.0,52.28 -2012-10-16 20:00:00,6071.7,0.0,53.43 -2012-10-16 21:00:00,5812.0,0.0,53.01 -2012-10-16 22:00:00,5466.6,0.0,52.4 -2012-10-16 23:00:00,5009.3,0.0,52.03 -2012-10-17 00:00:00,4553.6,0.0,51.7 -2012-10-17 01:00:00,4274.3,0.0,51.1 -2012-10-17 02:00:00,4118.6,0.0,49.88 -2012-10-17 03:00:00,4042.7,0.0,48.14 -2012-10-17 04:00:00,4062.2,0.0,47.71 -2012-10-17 05:00:00,4305.3,0.0,45.33 -2012-10-17 06:00:00,4932.8,0.0,45.74 -2012-10-17 07:00:00,5505.8,0.0,46.1 -2012-10-17 08:00:00,5876.8,0.0,47.67 -2012-10-17 09:00:00,6139.7,0.0,50.81 -2012-10-17 10:00:00,6235.6,0.0,53.05 -2012-10-17 11:00:00,6284.6,0.0,53.17 -2012-10-17 12:00:00,6312.4,0.0,54.61 -2012-10-17 13:00:00,6321.3,0.0,55.44 -2012-10-17 14:00:00,6306.6,0.0,56.59 -2012-10-17 15:00:00,6322.7,0.0,57.24 -2012-10-17 16:00:00,6365.9,0.0,58.0 -2012-10-17 17:00:00,6372.9,0.0,57.59 -2012-10-17 18:00:00,6375.7,0.0,55.33 -2012-10-17 19:00:00,6299.5,0.0,52.21 -2012-10-17 20:00:00,6095.5,0.0,52.13 -2012-10-17 21:00:00,5830.8,0.0,50.7 -2012-10-17 22:00:00,5449.7,0.0,49.53 -2012-10-17 23:00:00,4971.8,0.0,50.02 -2012-10-18 00:00:00,4552.1,0.0,49.72 -2012-10-18 01:00:00,4285.4,0.0,50.03 -2012-10-18 02:00:00,4134.8,0.0,48.39 -2012-10-18 03:00:00,4070.3,0.0,48.35 -2012-10-18 04:00:00,4089.1,0.0,47.35 -2012-10-18 05:00:00,4329.7,0.0,48.0 -2012-10-18 06:00:00,4955.0,0.0,46.23 -2012-10-18 07:00:00,5549.9,0.0,46.49 -2012-10-18 08:00:00,5927.5,0.0,51.87 -2012-10-18 09:00:00,6198.0,0.0,56.04 -2012-10-18 10:00:00,6328.3,0.0,57.85 -2012-10-18 11:00:00,6426.2,0.0,60.4 -2012-10-18 12:00:00,6473.1,0.0,61.06 -2012-10-18 13:00:00,6478.6,0.0,62.29 -2012-10-18 14:00:00,6474.3,0.0,62.56 -2012-10-18 15:00:00,6480.8,0.0,62.46 -2012-10-18 16:00:00,6522.3,0.0,62.73 -2012-10-18 17:00:00,6545.9,0.0,61.94 -2012-10-18 18:00:00,6497.0,0.0,58.28 -2012-10-18 19:00:00,6392.1,0.0,58.08 -2012-10-18 20:00:00,6166.8,0.0,57.85 -2012-10-18 21:00:00,5882.8,0.0,58.21 -2012-10-18 22:00:00,5524.6,0.0,62.29 -2012-10-18 23:00:00,5084.7,0.0,59.0 -2012-10-19 00:00:00,4672.5,0.0,63.34 -2012-10-19 01:00:00,4418.2,0.0102,59.98 -2012-10-19 02:00:00,4276.9,0.0137,59.98 -2012-10-19 03:00:00,4199.7,0.0069,62.75 -2012-10-19 04:00:00,4226.6,0.0,62.78 -2012-10-19 05:00:00,4478.1,0.0,61.7 -2012-10-19 06:00:00,5120.7,0.0041,62.7 -2012-10-19 07:00:00,5844.1,0.1859,62.79 -2012-10-19 08:00:00,6320.6,0.0089,63.88 -2012-10-19 09:00:00,6637.6,0.077,63.77 -2012-10-19 10:00:00,6778.4,0.0962,64.11 -2012-10-19 11:00:00,6858.4,0.002,64.75 -2012-10-19 12:00:00,6902.5,0.0282,64.75 -2012-10-19 13:00:00,6886.9,0.0247,64.75 -2012-10-19 14:00:00,6872.9,0.0492,65.33 -2012-10-19 15:00:00,6861.3,0.0069,65.21 -2012-10-19 16:00:00,6860.8,0.0,64.81 -2012-10-19 17:00:00,6804.5,0.0,65.54 -2012-10-19 18:00:00,6684.3,0.0,66.11 -2012-10-19 19:00:00,6542.0,0.0,65.03 -2012-10-19 20:00:00,6259.1,0.0,64.37 -2012-10-19 21:00:00,6012.7,0.0,64.41 -2012-10-19 22:00:00,5695.7,0.0,63.94 -2012-10-19 23:00:00,5302.3,0.0,63.84 -2012-10-20 00:00:00,4884.8,0.0,64.04 -2012-10-20 01:00:00,4606.9,0.0,63.68 -2012-10-20 02:00:00,4428.1,0.0,63.81 -2012-10-20 03:00:00,4312.3,0.0,63.2 -2012-10-20 04:00:00,4252.3,0.0,63.55 -2012-10-20 05:00:00,4280.4,0.0,60.42 -2012-10-20 06:00:00,4476.6,0.0275,62.1 -2012-10-20 07:00:00,4708.4,0.0137,61.94 -2012-10-20 08:00:00,5028.7,0.0206,59.32 -2012-10-20 09:00:00,5330.4,0.0,62.13 -2012-10-20 10:00:00,5564.4,0.0,62.48 -2012-10-20 11:00:00,5702.9,0.0,64.06 -2012-10-20 12:00:00,5751.6,0.0,64.78 -2012-10-20 13:00:00,5702.6,0.0,65.55 -2012-10-20 14:00:00,5641.9,0.0,66.41 -2012-10-20 15:00:00,5607.1,0.0,66.36 -2012-10-20 16:00:00,5549.1,0.0,64.84 -2012-10-20 17:00:00,5524.0,0.0,63.75 -2012-10-20 18:00:00,5673.1,0.0,62.16 -2012-10-20 19:00:00,5695.5,0.0,61.48 -2012-10-20 20:00:00,5544.8,0.0,61.06 -2012-10-20 21:00:00,5385.2,0.0,60.54 -2012-10-20 22:00:00,5169.3,0.0,60.02 -2012-10-20 23:00:00,4882.3,0.0,59.25 -2012-10-21 00:00:00,4575.3,0.0,59.22 -2012-10-21 01:00:00,4319.3,0.0,57.85 -2012-10-21 02:00:00,4143.1,0.0,56.18 -2012-10-21 03:00:00,4039.4,0.0,54.8 -2012-10-21 04:00:00,3992.1,0.0,53.8 -2012-10-21 05:00:00,4020.7,0.0,52.58 -2012-10-21 06:00:00,4137.7,0.0,52.22 -2012-10-21 07:00:00,4266.0,0.0,51.88 -2012-10-21 08:00:00,4516.6,0.0,54.65 -2012-10-21 09:00:00,4803.8,0.0,53.94 -2012-10-21 10:00:00,5023.3,0.0,55.98 -2012-10-21 11:00:00,5168.7,0.0,58.84 -2012-10-21 12:00:00,5254.1,0.0,60.43 -2012-10-21 13:00:00,5279.5,0.0,61.7 -2012-10-21 14:00:00,5289.1,0.0,62.39 -2012-10-21 15:00:00,5289.0,0.0,62.55 -2012-10-21 16:00:00,5306.6,0.0,62.67 -2012-10-21 17:00:00,5358.6,0.0,60.82 -2012-10-21 18:00:00,5591.9,0.0,59.92 -2012-10-21 19:00:00,5661.8,0.0,59.35 -2012-10-21 20:00:00,5569.5,0.0,58.73 -2012-10-21 21:00:00,5400.0,0.0,56.82 -2012-10-21 22:00:00,5119.5,0.0,56.4 -2012-10-21 23:00:00,4744.3,0.0,57.12 -2012-10-22 00:00:00,4405.4,0.0,57.63 -2012-10-22 01:00:00,4192.9,0.0,56.24 -2012-10-22 02:00:00,4070.1,0.0,55.79 -2012-10-22 03:00:00,3999.0,0.0,55.46 -2012-10-22 04:00:00,4029.8,0.0,54.94 -2012-10-22 05:00:00,4300.4,0.0,54.52 -2012-10-22 06:00:00,4922.2,0.0,54.35 -2012-10-22 07:00:00,5527.9,0.0,54.18 -2012-10-22 08:00:00,5888.0,0.0,54.11 -2012-10-22 09:00:00,6152.9,0.0,55.78 -2012-10-22 10:00:00,6282.6,0.0,58.86 -2012-10-22 11:00:00,6351.8,0.0,60.5 -2012-10-22 12:00:00,6409.0,0.0,62.1 -2012-10-22 13:00:00,6442.1,0.0,63.02 -2012-10-22 14:00:00,6441.3,0.0,64.47 -2012-10-22 15:00:00,6481.6,0.0,65.16 -2012-10-22 16:00:00,6520.0,0.0,65.09 -2012-10-22 17:00:00,6498.9,0.0,64.75 -2012-10-22 18:00:00,6486.5,0.0,62.77 -2012-10-22 19:00:00,6386.6,0.0,61.02 -2012-10-22 20:00:00,6159.5,0.0,59.31 -2012-10-22 21:00:00,5878.0,0.0,60.12 -2012-10-22 22:00:00,5494.7,0.0,59.21 -2012-10-22 23:00:00,5018.2,0.0,58.62 -2012-10-23 00:00:00,4559.1,0.0,58.54 -2012-10-23 01:00:00,4283.3,0.0,58.09 -2012-10-23 02:00:00,4129.2,0.0,56.36 -2012-10-23 03:00:00,4060.6,0.0,55.85 -2012-10-23 04:00:00,4087.0,0.0,55.41 -2012-10-23 05:00:00,4326.0,0.0,54.25 -2012-10-23 06:00:00,4946.8,0.0,54.82 -2012-10-23 07:00:00,5567.8,0.0,55.08 -2012-10-23 08:00:00,5944.9,0.0,55.7 -2012-10-23 09:00:00,6242.9,0.0,57.93 -2012-10-23 10:00:00,6368.1,0.0,58.8 -2012-10-23 11:00:00,6428.4,0.0,60.19 -2012-10-23 12:00:00,6474.8,0.0,61.86 -2012-10-23 13:00:00,6500.6,0.0,62.51 -2012-10-23 14:00:00,6504.0,0.0,61.74 -2012-10-23 15:00:00,6513.4,0.0,62.09 -2012-10-23 16:00:00,6556.3,0.0,59.7 -2012-10-23 17:00:00,6546.9,0.0,59.69 -2012-10-23 18:00:00,6530.1,0.0,58.37 -2012-10-23 19:00:00,6394.8,0.0,58.32 -2012-10-23 20:00:00,6145.6,0.0,58.32 -2012-10-23 21:00:00,5851.6,0.0,56.98 -2012-10-23 22:00:00,5396.7,0.0189,56.65 -2012-10-23 23:00:00,4966.2,0.0011,56.55 -2012-10-24 00:00:00,4576.2,0.0137,57.63 -2012-10-24 01:00:00,4304.4,0.0275,56.55 -2012-10-24 02:00:00,4165.9,0.0069,56.38 -2012-10-24 03:00:00,4101.0,0.0,57.37 -2012-10-24 04:00:00,4116.2,0.0,56.79 -2012-10-24 05:00:00,4366.7,0.0,56.52 -2012-10-24 06:00:00,4995.4,0.0,55.95 -2012-10-24 07:00:00,5654.1,0.0,55.95 -2012-10-24 08:00:00,6062.6,0.0,56.43 -2012-10-24 09:00:00,6350.6,0.0,55.95 -2012-10-24 10:00:00,6447.3,0.0,57.16 -2012-10-24 11:00:00,6487.7,0.0042,56.86 -2012-10-24 12:00:00,6501.9,0.0,56.64 -2012-10-24 13:00:00,6508.6,0.0,58.64 -2012-10-24 14:00:00,6484.8,0.0,56.73 -2012-10-24 15:00:00,6477.4,0.0,58.34 -2012-10-24 16:00:00,6507.8,0.0,56.8 -2012-10-24 17:00:00,6566.7,0.0,55.99 -2012-10-24 18:00:00,6525.9,0.0,55.99 -2012-10-24 19:00:00,6374.7,0.0,55.8 -2012-10-24 20:00:00,6147.6,0.0,54.76 -2012-10-24 21:00:00,5861.4,0.0,55.73 -2012-10-24 22:00:00,5484.0,0.0,54.59 -2012-10-24 23:00:00,5014.5,0.0,57.46 -2012-10-25 00:00:00,4574.2,0.0,51.07 -2012-10-25 01:00:00,4303.6,0.0,56.46 -2012-10-25 02:00:00,4152.3,0.0,50.71 -2012-10-25 03:00:00,4086.5,0.0,56.46 -2012-10-25 04:00:00,4106.6,0.0,56.39 -2012-10-25 05:00:00,4353.0,0.0,49.95 -2012-10-25 06:00:00,4976.2,0.0,50.35 -2012-10-25 07:00:00,5615.4,0.0,49.88 -2012-10-25 08:00:00,6014.5,0.0,51.7 -2012-10-25 09:00:00,6273.7,0.0,56.05 -2012-10-25 10:00:00,6377.2,0.0,57.72 -2012-10-25 11:00:00,6437.9,0.0,59.36 -2012-10-25 12:00:00,6457.9,0.0,60.76 -2012-10-25 13:00:00,6470.1,0.0,60.83 -2012-10-25 14:00:00,6448.3,0.0,61.2 -2012-10-25 15:00:00,6483.4,0.0,61.28 -2012-10-25 16:00:00,6531.7,0.0,60.54 -2012-10-25 17:00:00,6570.6,0.0,59.29 -2012-10-25 18:00:00,6527.1,0.0,56.18 -2012-10-25 19:00:00,6376.9,0.0,54.71 -2012-10-25 20:00:00,6140.7,0.0,53.64 -2012-10-25 21:00:00,5854.6,0.0,52.41 -2012-10-25 22:00:00,5486.4,0.0,53.47 -2012-10-25 23:00:00,5047.9,0.0,53.47 -2012-10-26 00:00:00,4611.5,0.0,52.25 -2012-10-26 01:00:00,4335.6,0.0,59.05 -2012-10-26 02:00:00,4186.9,0.0,51.97 -2012-10-26 03:00:00,4117.3,0.0,51.17 -2012-10-26 04:00:00,4128.0,0.0,51.26 -2012-10-26 05:00:00,4375.1,0.0,48.39 -2012-10-26 06:00:00,5003.3,0.0,49.03 -2012-10-26 07:00:00,5657.7,0.0,51.33 -2012-10-26 08:00:00,6069.2,0.0,53.05 -2012-10-26 09:00:00,6330.3,0.0,57.21 -2012-10-26 10:00:00,6468.8,0.0,59.1 -2012-10-26 11:00:00,6557.5,0.0,60.89 -2012-10-26 12:00:00,6597.8,0.0,60.84 -2012-10-26 13:00:00,6590.5,0.0,62.28 -2012-10-26 14:00:00,6544.6,0.0,61.46 -2012-10-26 15:00:00,6570.7,0.0,61.72 -2012-10-26 16:00:00,6618.5,0.0,60.6 -2012-10-26 17:00:00,6641.0,0.0,60.33 -2012-10-26 18:00:00,6533.6,0.0,58.33 -2012-10-26 19:00:00,6328.3,0.0,56.91 -2012-10-26 20:00:00,6076.9,0.0,55.01 -2012-10-26 21:00:00,5817.1,0.0,55.8 -2012-10-26 22:00:00,5535.4,0.0,53.6 -2012-10-26 23:00:00,5144.4,0.0,52.77 -2012-10-27 00:00:00,4753.5,0.0,52.6 -2012-10-27 01:00:00,4475.6,0.0,52.6 -2012-10-27 02:00:00,4294.7,0.0,51.36 -2012-10-27 03:00:00,4192.1,0.0,52.91 -2012-10-27 04:00:00,4149.1,0.0,52.74 -2012-10-27 05:00:00,4206.4,0.0,52.65 -2012-10-27 06:00:00,4403.9,0.0,52.65 -2012-10-27 07:00:00,4661.0,0.0,53.8 -2012-10-27 08:00:00,4978.4,0.0,61.45 -2012-10-27 09:00:00,5280.5,0.0,61.36 -2012-10-27 10:00:00,5495.1,0.0,61.78 -2012-10-27 11:00:00,5607.3,0.0,62.92 -2012-10-27 12:00:00,5637.3,0.0,63.76 -2012-10-27 13:00:00,5600.1,0.0,63.61 -2012-10-27 14:00:00,5563.0,0.0,62.46 -2012-10-27 15:00:00,5528.3,0.0,63.7 -2012-10-27 16:00:00,5513.8,0.0,62.47 -2012-10-27 17:00:00,5581.7,0.0,60.55 -2012-10-27 18:00:00,5802.5,0.0,58.27 -2012-10-27 19:00:00,5793.2,0.0,58.01 -2012-10-27 20:00:00,5652.4,0.0,61.63 -2012-10-27 21:00:00,5489.9,0.0,57.35 -2012-10-27 22:00:00,5285.1,0.0,57.08 -2012-10-27 23:00:00,4993.2,0.0,57.32 -2012-10-28 00:00:00,4677.4,0.0,57.23 -2012-10-28 01:00:00,4411.1,0.0,57.07 -2012-10-28 02:00:00,4235.4,0.0,57.06 -2012-10-28 03:00:00,4121.8,0.0,57.06 -2012-10-28 04:00:00,4061.3,0.0,56.8 -2012-10-28 05:00:00,4069.1,0.0,57.31 -2012-10-28 06:00:00,4182.2,0.0,57.52 -2012-10-28 07:00:00,4358.2,0.0,56.61 -2012-10-28 08:00:00,4600.9,0.0,57.03 -2012-10-28 09:00:00,4895.7,0.0,57.2 -2012-10-28 10:00:00,5123.9,0.0,57.17 -2012-10-28 11:00:00,5295.6,0.0,58.78 -2012-10-28 12:00:00,5402.0,0.0,58.93 -2012-10-28 13:00:00,5447.4,0.0,57.78 -2012-10-28 14:00:00,5469.4,0.0,58.87 -2012-10-28 15:00:00,5506.1,0.0,57.78 -2012-10-28 16:00:00,5530.9,0.0,57.61 -2012-10-28 17:00:00,5602.2,0.0,57.85 -2012-10-28 18:00:00,5733.1,0.0,57.69 -2012-10-28 19:00:00,5632.8,0.0,56.61 -2012-10-28 20:00:00,5446.4,0.0,56.55 -2012-10-28 21:00:00,5231.8,0.0,56.37 -2012-10-28 22:00:00,5001.6,0.0,56.28 -2012-10-28 23:00:00,4703.7,0.0,56.04 -2012-10-29 00:00:00,4391.8,0.0,55.86 -2012-10-29 01:00:00,4147.2,0.0,55.34 -2012-10-29 02:00:00,3995.7,0.0,55.03 -2012-10-29 03:00:00,3922.4,0.0,54.93 -2012-10-29 04:00:00,3916.7,0.0,56.24 -2012-10-29 05:00:00,4024.0,0.0,56.48 -2012-10-29 06:00:00,4258.3,0.0,56.48 -2012-10-29 07:00:00,4515.8,0.0069,56.58 -2012-10-29 08:00:00,4778.0,0.0069,57.8 -2012-10-29 09:00:00,5056.0,0.0042,58.95 -2012-10-29 10:00:00,5233.7,0.0022,59.57 -2012-10-29 11:00:00,5360.8,0.0,60.47 -2012-10-29 12:00:00,5396.5,0.019,56.93 -2012-10-29 13:00:00,5398.3,0.0112,61.69 -2012-10-29 14:00:00,5349.4,0.0054,58.77 -2012-10-29 15:00:00,5300.6,0.0206,62.51 -2012-10-29 16:00:00,5285.2,0.008,63.06 -2012-10-29 17:00:00,5370.0,0.0134,62.97 -2012-10-29 18:00:00,5393.4,0.0101,61.91 -2012-10-29 19:00:00,5193.8,0.3929,60.54 -2012-10-29 20:00:00,4715.7,0.8936,62.67 -2012-10-29 21:00:00,4084.2,0.0069,60.97 -2012-10-29 22:00:00,3811.0,0.0137,60.6 -2012-10-29 23:00:00,3522.5,0.0022,59.8 -2012-10-30 00:00:00,3273.6,0.0181,55.01 -2012-10-30 01:00:00,3069.1,0.0033,59.84 -2012-10-30 02:00:00,2930.6,0.0087,57.18 -2012-10-30 03:00:00,2879.7,0.0022,59.53 -2012-10-30 04:00:00,2859.6,0.025,59.53 -2012-10-30 05:00:00,2917.7,0.0318,59.43 -2012-10-30 06:00:00,3066.2,0.0,59.01 -2012-10-30 07:00:00,3199.9,0.0,59.17 -2012-10-30 08:00:00,3426.6,0.0011,58.66 -2012-10-30 09:00:00,3629.7,0.0011,52.54 -2012-10-30 10:00:00,3801.9,0.0387,60.14 -2012-10-30 11:00:00,3918.0,0.063,52.81 -2012-10-30 12:00:00,3979.3,0.008,60.74 -2012-10-30 13:00:00,4038.1,0.0,60.63 -2012-10-30 14:00:00,4069.6,0.0069,54.72 -2012-10-30 15:00:00,4083.5,0.0206,54.45 -2012-10-30 16:00:00,4157.6,0.0,58.98 -2012-10-30 17:00:00,4278.4,0.0,52.52 -2012-10-30 18:00:00,4385.8,0.0069,52.42 -2012-10-30 19:00:00,4354.6,0.0,58.34 -2012-10-30 20:00:00,4253.1,0.0,57.1 -2012-10-30 21:00:00,4004.1,0.0,55.46 -2012-10-30 22:00:00,3779.1,0.0,55.25 -2012-10-30 23:00:00,3558.5,0.0,55.0 -2012-10-31 00:00:00,3346.0,0.0,50.11 -2012-10-31 01:00:00,3185.7,0.0,56.47 -2012-10-31 02:00:00,3075.9,0.0011,55.85 -2012-10-31 03:00:00,3003.2,0.0069,55.56 -2012-10-31 04:00:00,3003.2,0.0,54.4 -2012-10-31 05:00:00,3003.2,0.0,53.1 -2012-10-31 06:00:00,3003.2,0.0,53.92 -2012-10-31 07:00:00,3636.7,0.0,53.73 -2012-10-31 08:00:00,3892.2,0.0069,46.73 -2012-10-31 09:00:00,4139.9,0.0,46.64 -2012-10-31 10:00:00,4336.2,0.0,53.93 -2012-10-31 11:00:00,4493.3,0.0,53.27 -2012-10-31 12:00:00,4576.9,0.0,52.83 -2012-10-31 13:00:00,4587.1,0.0,52.64 -2012-10-31 14:00:00,4585.2,0.0,53.11 -2012-10-31 15:00:00,4579.9,0.0206,52.55 -2012-10-31 16:00:00,4611.7,0.0,52.55 -2012-10-31 17:00:00,4689.4,0.0,52.26 -2012-10-31 18:00:00,4741.2,0.0,52.33 -2012-10-31 19:00:00,4694.8,0.0,52.45 -2012-10-31 20:00:00,4586.8,0.0,51.97 -2012-10-31 21:00:00,4412.2,0.0,51.79 -2012-10-31 22:00:00,4220.6,0.0,52.14 -2012-10-31 23:00:00,3920.9,0.0,51.14 -2012-11-01 00:00:00,3622.2,0.0,50.85 -2012-11-01 01:00:00,3420.8,0.0,50.75 -2012-11-01 02:00:00,3301.6,0.0,50.56 -2012-11-01 03:00:00,3236.8,0.0,50.39 -2012-11-01 04:00:00,3238.5,0.0,50.39 -2012-11-01 05:00:00,3352.8,0.0,49.68 -2012-11-01 06:00:00,3628.7,0.0,48.56 -2012-11-01 07:00:00,3957.2,0.0,48.84 -2012-11-01 08:00:00,4247.4,0.0,48.94 -2012-11-01 09:00:00,4520.0,0.0,50.99 -2012-11-01 10:00:00,4701.3,0.0,52.77 -2012-11-01 11:00:00,4803.4,0.0,53.67 -2012-11-01 12:00:00,4841.6,0.0,54.67 -2012-11-01 13:00:00,4859.1,0.0,54.75 -2012-11-01 14:00:00,4859.9,0.0,55.01 -2012-11-01 15:00:00,4850.1,0.0,53.55 -2012-11-01 16:00:00,4860.2,0.0,53.39 -2012-11-01 17:00:00,4930.0,0.0,52.64 -2012-11-01 18:00:00,5021.9,0.0,52.88 -2012-11-01 19:00:00,4969.7,0.0,52.43 -2012-11-01 20:00:00,4837.6,0.0,52.33 -2012-11-01 21:00:00,4674.0,0.0,52.04 -2012-11-01 22:00:00,4419.7,0.0,51.78 -2012-11-01 23:00:00,4088.3,0.0,51.24 -2012-11-02 00:00:00,3755.1,0.0,50.51 -2012-11-02 01:00:00,3526.6,0.0,50.51 -2012-11-02 02:00:00,3360.5,0.0,50.51 -2012-11-02 03:00:00,3253.0,0.0,50.24 -2012-11-02 04:00:00,3296.3,0.0,49.06 -2012-11-02 05:00:00,3447.0,0.0,49.16 -2012-11-02 06:00:00,3780.9,0.0,49.25 -2012-11-02 07:00:00,4124.4,0.0,48.16 -2012-11-02 08:00:00,4428.1,0.0,49.44 -2012-11-02 09:00:00,4715.0,0.0,49.54 -2012-11-02 10:00:00,4881.5,0.0,49.83 -2012-11-02 11:00:00,4963.3,0.0069,51.3 -2012-11-02 12:00:00,5006.8,0.0,52.03 -2012-11-02 13:00:00,5030.1,0.0,51.83 -2012-11-02 14:00:00,5029.2,0.0,53.0 -2012-11-02 15:00:00,4974.6,0.0,51.74 -2012-11-02 16:00:00,4983.9,0.0,51.73 -2012-11-02 17:00:00,5120.0,0.0,50.9 -2012-11-02 18:00:00,5240.3,0.0,50.16 -2012-11-02 19:00:00,5264.0,0.0,49.7 -2012-11-02 20:00:00,5126.8,0.0,47.68 -2012-11-02 21:00:00,4979.5,0.0,47.51 -2012-11-02 22:00:00,4755.4,0.0,46.88 -2012-11-02 23:00:00,4474.7,0.0,46.71 -2012-11-03 00:00:00,4175.2,0.0,46.63 -2012-11-03 01:00:00,3971.2,0.0,44.97 -2012-11-03 02:00:00,3812.1,0.0,45.17 -2012-11-03 03:00:00,3715.1,0.0,44.51 -2012-11-03 04:00:00,3744.7,0.0,44.34 -2012-11-03 05:00:00,3844.3,0.0,44.44 -2012-11-03 06:00:00,3992.0,0.0,44.34 -2012-11-03 07:00:00,4170.3,0.0,44.44 -2012-11-03 08:00:00,4420.8,0.0,44.44 -2012-11-03 09:00:00,4683.7,0.0,45.46 -2012-11-03 10:00:00,4907.4,0.0,47.39 -2012-11-03 11:00:00,5025.5,0.0,47.93 -2012-11-03 12:00:00,5074.9,0.0,48.29 -2012-11-03 13:00:00,5076.3,0.0,48.55 -2012-11-03 14:00:00,5060.3,0.0,50.0 -2012-11-03 15:00:00,5061.8,0.0,51.46 -2012-11-03 16:00:00,5093.5,0.0,51.17 -2012-11-03 17:00:00,5199.4,0.0,50.44 -2012-11-03 18:00:00,5429.7,0.0,48.16 -2012-11-03 19:00:00,5441.1,0.0,49.07 -2012-11-03 20:00:00,5334.5,0.0,49.88 -2012-11-03 21:00:00,5180.8,0.0,46.78 -2012-11-03 22:00:00,4997.1,0.0,45.07 -2012-11-03 23:00:00,4743.8,0.0,45.07 -2012-11-04 00:00:00,4460.7,0.0,44.78 -2012-11-04 01:00:00,4228.6,0.0,44.07 -2012-11-04 02:00:00,3944.3,0.0,43.97 -2012-11-04 03:00:00,3889.1,0.0,43.97 -2012-11-04 04:00:00,3882.3,0.0,42.34 -2012-11-04 05:00:00,3940.8,0.0,43.07 -2012-11-04 06:00:00,4023.1,0.0,42.24 -2012-11-04 07:00:00,4213.6,0.0,42.24 -2012-11-04 08:00:00,4488.0,0.0,43.91 -2012-11-04 09:00:00,4710.1,0.0,45.3 -2012-11-04 10:00:00,4879.9,0.0,47.2 -2012-11-04 11:00:00,4987.9,0.0,47.66 -2012-11-04 12:00:00,5013.4,0.0,49.66 -2012-11-04 13:00:00,5020.8,0.0,50.22 -2012-11-04 14:00:00,5029.5,0.0,51.54 -2012-11-04 15:00:00,5067.4,0.0,50.19 -2012-11-04 16:00:00,5227.9,0.0,48.87 -2012-11-04 17:00:00,5530.9,0.0,46.43 -2012-11-04 18:00:00,5583.5,0.0,41.61 -2012-11-04 19:00:00,5515.8,0.0,45.16 -2012-11-04 20:00:00,5382.4,0.0,47.07 -2012-11-04 21:00:00,5179.0,0.0,46.88 -2012-11-04 22:00:00,4915.9,0.0,46.07 -2012-11-04 23:00:00,4574.8,0.0,45.17 -2012-11-05 00:00:00,4276.4,0.0,45.07 -2012-11-05 01:00:00,4063.1,0.0,44.44 -2012-11-05 02:00:00,3959.3,0.0,44.15 -2012-11-05 03:00:00,3921.4,0.0,44.07 -2012-11-05 04:00:00,3973.4,0.0,43.36 -2012-11-05 05:00:00,4204.1,0.0,43.55 -2012-11-05 06:00:00,4676.5,0.0,43.45 -2012-11-05 07:00:00,5209.2,0.0,43.08 -2012-11-05 08:00:00,5564.5,0.0,43.08 -2012-11-05 09:00:00,5826.0,0.0,43.72 -2012-11-05 10:00:00,5960.6,0.0,43.57 -2012-11-05 11:00:00,6026.4,0.0,43.67 -2012-11-05 12:00:00,6038.7,0.0,44.3 -2012-11-05 13:00:00,6031.7,0.0069,43.39 -2012-11-05 14:00:00,6008.9,0.0137,43.84 -2012-11-05 15:00:00,6016.3,0.0206,43.93 -2012-11-05 16:00:00,6136.4,0.0,43.82 -2012-11-05 17:00:00,6358.6,0.0,43.06 -2012-11-05 18:00:00,6306.9,0.0,42.34 -2012-11-05 19:00:00,6172.1,0.0,42.05 -2012-11-05 20:00:00,5981.0,0.0,41.78 -2012-11-05 21:00:00,5738.8,0.0,41.51 -2012-11-05 22:00:00,5402.0,0.0,39.31 -2012-11-05 23:00:00,4976.6,0.0,38.24 -2012-11-06 00:00:00,4581.8,0.0,38.05 -2012-11-06 01:00:00,4335.7,0.0,37.58 -2012-11-06 02:00:00,4207.7,0.0,36.21 -2012-11-06 03:00:00,4156.5,0.0,36.13 -2012-11-06 04:00:00,4198.5,0.0,36.48 -2012-11-06 05:00:00,4445.2,0.0,35.57 -2012-11-06 06:00:00,4891.2,0.0,35.03 -2012-11-06 07:00:00,5369.0,0.0,35.67 -2012-11-06 08:00:00,5717.0,0.0,40.08 -2012-11-06 09:00:00,5966.9,0.0,38.44 -2012-11-06 10:00:00,6097.4,0.0,40.56 -2012-11-06 11:00:00,6146.3,0.0,41.65 -2012-11-06 12:00:00,6182.1,0.0,42.01 -2012-11-06 13:00:00,6221.9,0.0,42.3 -2012-11-06 14:00:00,6153.9,0.0,43.94 -2012-11-06 15:00:00,6118.2,0.0,42.84 -2012-11-06 16:00:00,6204.0,0.0,40.64 -2012-11-06 17:00:00,6406.8,0.0,37.82 -2012-11-06 18:00:00,6373.6,0.0,34.76 -2012-11-06 19:00:00,6221.2,0.0,37.13 -2012-11-06 20:00:00,6069.8,0.0,37.69 -2012-11-06 21:00:00,5868.2,0.0,37.59 -2012-11-06 22:00:00,5523.5,0.0,40.3 -2012-11-06 23:00:00,5131.5,0.0,42.49 -2012-11-07 00:00:00,4759.7,0.0,42.63 -2012-11-07 01:00:00,4496.2,0.0,42.88 -2012-11-07 02:00:00,4306.4,0.0,43.0 -2012-11-07 03:00:00,4226.2,0.0,42.69 -2012-11-07 04:00:00,4255.4,0.0,43.25 -2012-11-07 05:00:00,4484.5,0.0,43.36 -2012-11-07 06:00:00,4993.5,0.0,43.53 -2012-11-07 07:00:00,5561.9,0.0,43.72 -2012-11-07 08:00:00,5916.9,0.0,45.08 -2012-11-07 09:00:00,6184.5,0.0,45.37 -2012-11-07 10:00:00,6328.1,0.0069,45.0 -2012-11-07 11:00:00,6415.4,0.0481,38.61 -2012-11-07 12:00:00,6467.0,0.0299,42.89 -2012-11-07 13:00:00,6532.4,0.1467,37.16 -2012-11-07 14:00:00,6575.2,0.1669,33.96 -2012-11-07 15:00:00,6626.5,0.0617,41.6 -2012-11-07 16:00:00,6755.9,0.1072,39.95 -2012-11-07 17:00:00,6839.9,0.1299,39.88 -2012-11-07 18:00:00,6691.7,0.0537,39.8 -2012-11-07 19:00:00,6509.6,0.0246,39.41 -2012-11-07 20:00:00,6305.2,0.0069,40.88 -2012-11-07 21:00:00,6027.8,0.0189,41.08 -2012-11-07 22:00:00,5649.9,0.0358,41.0 -2012-11-07 23:00:00,5199.5,0.0561,33.11 -2012-11-08 00:00:00,4808.9,0.002,32.92 -2012-11-08 01:00:00,4573.6,0.0508,32.99 -2012-11-08 02:00:00,4427.5,0.0405,33.64 -2012-11-08 03:00:00,4356.4,0.066,34.62 -2012-11-08 04:00:00,4379.3,0.2131,45.16 -2012-11-08 05:00:00,4623.7,0.165,45.7 -2012-11-08 06:00:00,5100.5,0.1787,45.7 -2012-11-08 07:00:00,5610.1,0.0206,48.42 -2012-11-08 08:00:00,5951.5,0.0137,49.15 -2012-11-08 09:00:00,6207.0,0.0206,49.45 -2012-11-08 10:00:00,6343.6,0.0,50.45 -2012-11-08 11:00:00,6420.4,0.0,50.27 -2012-11-08 12:00:00,6406.5,0.0,50.19 -2012-11-08 13:00:00,6367.5,0.0,50.84 -2012-11-08 14:00:00,6310.6,0.0,50.34 -2012-11-08 15:00:00,6310.8,0.0,50.66 -2012-11-08 16:00:00,6472.9,0.0,49.53 -2012-11-08 17:00:00,6703.2,0.0069,47.44 -2012-11-08 18:00:00,6561.1,0.0,47.26 -2012-11-08 19:00:00,6388.4,0.0,46.81 -2012-11-08 20:00:00,6184.0,0.0,45.15 -2012-11-08 21:00:00,5914.7,0.0,44.97 -2012-11-08 22:00:00,5565.1,0.0,43.68 -2012-11-08 23:00:00,5115.8,0.0069,43.42 -2012-11-09 00:00:00,4722.5,0.0069,43.06 -2012-11-09 01:00:00,4481.5,0.0,42.88 -2012-11-09 02:00:00,4336.2,0.0,42.78 -2012-11-09 03:00:00,4274.2,0.0,42.62 -2012-11-09 04:00:00,4310.3,0.0,41.35 -2012-11-09 05:00:00,4558.0,0.0,41.35 -2012-11-09 06:00:00,5065.2,0.0,41.53 -2012-11-09 07:00:00,5579.1,0.0,40.34 -2012-11-09 08:00:00,5912.2,0.0,40.9 -2012-11-09 09:00:00,6148.1,0.0,42.93 -2012-11-09 10:00:00,6256.9,0.0,44.39 -2012-11-09 11:00:00,6285.9,0.0,46.39 -2012-11-09 12:00:00,6274.1,0.0,48.68 -2012-11-09 13:00:00,6250.4,0.0,49.31 -2012-11-09 14:00:00,6216.1,0.0,51.04 -2012-11-09 15:00:00,6233.2,0.0,51.48 -2012-11-09 16:00:00,6327.3,0.0,50.54 -2012-11-09 17:00:00,6508.0,0.0,48.27 -2012-11-09 18:00:00,6363.8,0.0,47.98 -2012-11-09 19:00:00,6182.8,0.0,46.62 -2012-11-09 20:00:00,5977.7,0.0,48.26 -2012-11-09 21:00:00,5732.6,0.0,46.53 -2012-11-09 22:00:00,5424.2,0.0,46.43 -2012-11-09 23:00:00,5046.2,0.0,46.33 -2012-11-10 00:00:00,4693.1,0.0,45.51 -2012-11-10 01:00:00,4442.7,0.0,43.84 -2012-11-10 02:00:00,4289.8,0.0,43.85 -2012-11-10 03:00:00,4192.9,0.0,43.85 -2012-11-10 04:00:00,4165.7,0.0,43.78 -2012-11-10 05:00:00,4235.1,0.0,43.39 -2012-11-10 06:00:00,4399.9,0.0,44.76 -2012-11-10 07:00:00,4622.4,0.0,44.86 -2012-11-10 08:00:00,4921.1,0.0,47.44 -2012-11-10 09:00:00,5185.3,0.0,47.83 -2012-11-10 10:00:00,5377.7,0.0,50.03 -2012-11-10 11:00:00,5444.1,0.0,50.46 -2012-11-10 12:00:00,5446.2,0.0,52.32 -2012-11-10 13:00:00,5421.6,0.0,52.75 -2012-11-10 14:00:00,5434.4,0.0,51.48 -2012-11-10 15:00:00,5463.7,0.0,51.48 -2012-11-10 16:00:00,5603.4,0.0,50.11 -2012-11-10 17:00:00,5787.3,0.0,46.92 -2012-11-10 18:00:00,5780.1,0.0,46.75 -2012-11-10 19:00:00,5671.8,0.0,45.29 -2012-11-10 20:00:00,5519.1,0.0,43.81 -2012-11-10 21:00:00,5362.6,0.0,46.0 -2012-11-10 22:00:00,5165.7,0.0,44.15 -2012-11-10 23:00:00,4890.1,0.0,42.69 -2012-11-11 00:00:00,4607.7,0.0,40.98 -2012-11-11 01:00:00,4401.8,0.0,45.17 -2012-11-11 02:00:00,4194.7,0.0,43.7 -2012-11-11 03:00:00,4102.8,0.0,44.88 -2012-11-11 04:00:00,4055.2,0.0,43.81 -2012-11-11 05:00:00,4053.2,0.0,47.42 -2012-11-11 06:00:00,4184.0,0.0,46.82 -2012-11-11 07:00:00,4324.7,0.0,49.08 -2012-11-11 08:00:00,4589.2,0.0,51.51 -2012-11-11 09:00:00,4852.0,0.0,53.75 -2012-11-11 10:00:00,5050.2,0.0,55.35 -2012-11-11 11:00:00,5145.9,0.0,56.39 -2012-11-11 12:00:00,5185.9,0.0,58.32 -2012-11-11 13:00:00,5197.0,0.0,58.86 -2012-11-11 14:00:00,5194.0,0.0,57.6 -2012-11-11 15:00:00,5200.5,0.0,57.41 -2012-11-11 16:00:00,5345.9,0.0,56.88 -2012-11-11 17:00:00,5649.6,0.0,55.39 -2012-11-11 18:00:00,5680.3,0.0,54.93 -2012-11-11 19:00:00,5600.3,0.0,54.73 -2012-11-11 20:00:00,5477.1,0.0,54.63 -2012-11-11 21:00:00,5318.9,0.0,54.16 -2012-11-11 22:00:00,5073.4,0.0,53.89 -2012-11-11 23:00:00,4743.4,0.0,53.7 -2012-11-12 00:00:00,4419.6,0.0,53.44 -2012-11-12 01:00:00,4204.3,0.0,51.76 -2012-11-12 02:00:00,4074.2,0.0,52.93 -2012-11-12 03:00:00,4007.1,0.0,51.17 -2012-11-12 04:00:00,4010.7,0.0,51.62 -2012-11-12 05:00:00,4192.8,0.0,51.44 -2012-11-12 06:00:00,4615.7,0.0,51.73 -2012-11-12 07:00:00,5099.5,0.0,48.11 -2012-11-12 08:00:00,5506.9,0.0,50.76 -2012-11-12 09:00:00,5797.2,0.0,55.23 -2012-11-12 10:00:00,5984.4,0.0,58.19 -2012-11-12 11:00:00,6087.8,0.0,61.65 -2012-11-12 12:00:00,6176.1,0.0,63.07 -2012-11-12 13:00:00,6185.7,0.0,63.32 -2012-11-12 14:00:00,6176.3,0.0,62.43 -2012-11-12 15:00:00,6170.1,0.0,62.42 -2012-11-12 16:00:00,6337.5,0.0,58.86 -2012-11-12 17:00:00,6576.8,0.0,60.74 -2012-11-12 18:00:00,6366.1,0.0,56.83 -2012-11-12 19:00:00,6063.2,0.0,57.11 -2012-11-12 20:00:00,5865.5,0.0,60.83 -2012-11-12 21:00:00,5681.1,0.0,58.35 -2012-11-12 22:00:00,5349.9,0.0,58.58 -2012-11-12 23:00:00,4933.2,0.0,58.51 -2012-11-13 00:00:00,4523.2,0.0,58.22 -2012-11-13 01:00:00,4240.6,0.0,59.76 -2012-11-13 02:00:00,4087.8,0.0344,60.47 -2012-11-13 03:00:00,4071.6,0.0412,59.13 -2012-11-13 04:00:00,4026.5,0.0,56.64 -2012-11-13 05:00:00,4277.7,0.0423,57.85 -2012-11-13 06:00:00,4847.7,0.0011,50.73 -2012-11-13 07:00:00,5459.9,0.002,49.25 -2012-11-13 08:00:00,5844.1,0.0,55.45 -2012-11-13 09:00:00,6087.3,0.0011,56.51 -2012-11-13 10:00:00,6213.7,0.009,46.89 -2012-11-13 11:00:00,6247.6,0.0011,46.6 -2012-11-13 12:00:00,6242.2,0.0,51.25 -2012-11-13 13:00:00,6255.7,0.008,49.72 -2012-11-13 14:00:00,6232.4,0.0148,49.82 -2012-11-13 15:00:00,6267.4,0.0137,46.1 -2012-11-13 16:00:00,6376.3,0.0756,48.76 -2012-11-13 17:00:00,6613.6,0.0481,47.36 -2012-11-13 18:00:00,6423.1,0.0069,47.17 -2012-11-13 19:00:00,6331.2,0.0,47.17 -2012-11-13 20:00:00,5989.1,0.0,45.8 -2012-11-13 21:00:00,5703.9,0.0137,44.62 -2012-11-13 22:00:00,5264.3,0.0,44.26 -2012-11-13 23:00:00,4847.3,0.0,44.25 -2012-11-14 00:00:00,4572.0,0.0069,44.08 -2012-11-14 01:00:00,4329.8,0.0275,43.89 -2012-11-14 02:00:00,4187.2,0.0206,43.69 -2012-11-14 03:00:00,4108.2,0.0,43.52 -2012-11-14 04:00:00,4127.0,0.0,43.42 -2012-11-14 05:00:00,4366.5,0.0,42.58 -2012-11-14 06:00:00,4957.9,0.0,43.24 -2012-11-14 07:00:00,5451.9,0.0,43.05 -2012-11-14 08:00:00,5775.3,0.0,43.01 -2012-11-14 09:00:00,5989.5,0.0,43.65 -2012-11-14 10:00:00,6055.5,0.0069,45.47 -2012-11-14 11:00:00,6048.2,0.0,45.2 -2012-11-14 12:00:00,6140.3,0.0,45.93 -2012-11-14 13:00:00,6237.8,0.0,47.03 -2012-11-14 14:00:00,6169.4,0.0,47.46 -2012-11-14 15:00:00,6300.0,0.0,47.44 -2012-11-14 16:00:00,6468.2,0.0,46.06 -2012-11-14 17:00:00,6732.0,0.0,45.26 -2012-11-14 18:00:00,6538.4,0.0,44.9 -2012-11-14 19:00:00,6325.9,0.0,44.8 -2012-11-14 20:00:00,6121.9,0.0,44.34 -2012-11-14 21:00:00,5833.9,0.0,44.07 -2012-11-14 22:00:00,5527.0,0.0,43.61 -2012-11-14 23:00:00,5094.7,0.0,43.96 -2012-11-15 00:00:00,4679.8,0.0,43.12 -2012-11-15 01:00:00,4440.1,0.0,42.94 -2012-11-15 02:00:00,4340.6,0.0,42.78 -2012-11-15 03:00:00,4294.3,0.0,43.13 -2012-11-15 04:00:00,4212.2,0.0,43.13 -2012-11-15 05:00:00,4496.7,0.0,43.08 -2012-11-15 06:00:00,5160.1,0.0,42.79 -2012-11-15 07:00:00,5576.3,0.0,42.72 -2012-11-15 08:00:00,5898.7,0.0,43.18 -2012-11-15 09:00:00,6126.8,0.0,43.92 -2012-11-15 10:00:00,6272.5,0.0,45.93 -2012-11-15 11:00:00,6294.1,0.0,44.5 -2012-11-15 12:00:00,6294.1,0.0,44.94 -2012-11-15 13:00:00,6314.1,0.0,46.31 -2012-11-15 14:00:00,6307.3,0.0,46.57 -2012-11-15 15:00:00,6342.2,0.0,45.5 -2012-11-15 16:00:00,6517.1,0.0,46.04 -2012-11-15 17:00:00,6716.7,0.0,45.11 -2012-11-15 18:00:00,6562.5,0.0,44.28 -2012-11-15 19:00:00,6357.9,0.0,43.86 -2012-11-15 20:00:00,6157.7,0.0,43.86 -2012-11-15 21:00:00,5895.3,0.0,43.77 -2012-11-15 22:00:00,5547.1,0.0,43.42 -2012-11-15 23:00:00,5118.2,0.0,43.14 -2012-11-16 00:00:00,4723.2,0.0,42.97 -2012-11-16 01:00:00,4432.9,0.0,42.94 -2012-11-16 02:00:00,4288.4,0.0,42.68 -2012-11-16 03:00:00,4225.3,0.0,41.36 -2012-11-16 04:00:00,4213.2,0.0,41.84 -2012-11-16 05:00:00,4359.9,0.0,42.32 -2012-11-16 06:00:00,4993.7,0.0,42.44 -2012-11-16 07:00:00,5596.9,0.0,42.11 -2012-11-16 08:00:00,5962.2,0.0,43.11 -2012-11-16 09:00:00,6181.9,0.0,43.62 -2012-11-16 10:00:00,6271.1,0.0,44.31 -2012-11-16 11:00:00,6305.4,0.0,45.23 -2012-11-16 12:00:00,6327.2,0.0,46.39 -2012-11-16 13:00:00,6285.2,0.0,45.57 -2012-11-16 14:00:00,6276.6,0.0,46.02 -2012-11-16 15:00:00,6293.3,0.0,46.61 -2012-11-16 16:00:00,6438.1,0.0,45.8 -2012-11-16 17:00:00,6631.7,0.0,45.37 -2012-11-16 18:00:00,6438.8,0.0,44.92 -2012-11-16 19:00:00,6239.3,0.0,44.59 -2012-11-16 20:00:00,6026.1,0.0,42.92 -2012-11-16 21:00:00,5808.6,0.0,42.39 -2012-11-16 22:00:00,5507.4,0.0,41.65 -2012-11-16 23:00:00,5145.8,0.0,41.96 -2012-11-17 00:00:00,4760.8,0.0,42.03 -2012-11-17 01:00:00,4509.0,0.0,41.85 -2012-11-17 02:00:00,4356.8,0.0,41.94 -2012-11-17 03:00:00,4264.5,0.0,42.92 -2012-11-17 04:00:00,4236.5,0.0,41.61 -2012-11-17 05:00:00,4307.6,0.0,42.85 -2012-11-17 06:00:00,4457.6,0.0,42.43 -2012-11-17 07:00:00,4674.5,0.0,43.01 -2012-11-17 08:00:00,4973.0,0.0,43.98 -2012-11-17 09:00:00,5230.6,0.0,45.02 -2012-11-17 10:00:00,5421.3,0.0,47.27 -2012-11-17 11:00:00,5501.2,0.0,48.02 -2012-11-17 12:00:00,5506.8,0.0,49.59 -2012-11-17 13:00:00,5469.9,0.0,49.27 -2012-11-17 14:00:00,5431.7,0.0,49.63 -2012-11-17 15:00:00,5422.1,0.0,48.91 -2012-11-17 16:00:00,5542.8,0.0,47.91 -2012-11-17 17:00:00,5807.7,0.0,47.49 -2012-11-17 18:00:00,5804.8,0.0,44.38 -2012-11-17 19:00:00,5720.3,0.0,42.85 -2012-11-17 20:00:00,5590.4,0.0,41.38 -2012-11-17 21:00:00,5438.8,0.0,40.96 -2012-11-17 22:00:00,5220.4,0.0,42.35 -2012-11-17 23:00:00,4947.3,0.0,40.0 -2012-11-18 00:00:00,4662.4,0.0,39.68 -2012-11-18 01:00:00,4438.1,0.0,39.42 -2012-11-18 02:00:00,4278.8,0.0,39.06 -2012-11-18 03:00:00,4179.2,0.0,38.8 -2012-11-18 04:00:00,4141.9,0.0,40.36 -2012-11-18 05:00:00,4187.3,0.0,39.51 -2012-11-18 06:00:00,4271.8,0.0,39.42 -2012-11-18 07:00:00,4412.5,0.0,38.12 -2012-11-18 08:00:00,4671.1,0.0,43.06 -2012-11-18 09:00:00,4924.6,0.0,44.4 -2012-11-18 10:00:00,5116.4,0.0,46.49 -2012-11-18 11:00:00,5232.3,0.0,47.33 -2012-11-18 12:00:00,5286.7,0.0,47.76 -2012-11-18 13:00:00,5298.9,0.0,48.12 -2012-11-18 14:00:00,5294.5,0.0,48.12 -2012-11-18 15:00:00,5320.1,0.0,47.04 -2012-11-18 16:00:00,5512.5,0.0,46.79 -2012-11-18 17:00:00,5805.6,0.0,44.64 -2012-11-18 18:00:00,5829.6,0.0,45.69 -2012-11-18 19:00:00,5766.2,0.0,45.54 -2012-11-18 20:00:00,5663.1,0.0,45.12 -2012-11-18 21:00:00,5489.7,0.0,44.79 -2012-11-18 22:00:00,5211.6,0.0,44.96 -2012-11-18 23:00:00,4863.9,0.0,44.67 -2012-11-19 00:00:00,4535.7,0.0,44.82 -2012-11-19 01:00:00,4322.3,0.0,44.01 -2012-11-19 02:00:00,4195.8,0.0,43.74 -2012-11-19 03:00:00,4142.9,0.0,43.8 -2012-11-19 04:00:00,4180.6,0.0,44.01 -2012-11-19 05:00:00,4456.1,0.0,43.28 -2012-11-19 06:00:00,5038.0,0.0,43.02 -2012-11-19 07:00:00,5585.8,0.0,42.92 -2012-11-19 08:00:00,5931.0,0.0,39.66 -2012-11-19 09:00:00,6176.3,0.0,41.17 -2012-11-19 10:00:00,6308.1,0.0,47.81 -2012-11-19 11:00:00,6347.0,0.0,48.46 -2012-11-19 12:00:00,6351.4,0.0,50.2 -2012-11-19 13:00:00,6357.1,0.0,46.79 -2012-11-19 14:00:00,6342.6,0.0,49.91 -2012-11-19 15:00:00,6365.4,0.0,47.47 -2012-11-19 16:00:00,6537.5,0.0,48.19 -2012-11-19 17:00:00,6734.1,0.0,46.12 -2012-11-19 18:00:00,6563.2,0.0,45.69 -2012-11-19 19:00:00,6369.3,0.0,45.69 -2012-11-19 20:00:00,6175.5,0.0,45.19 -2012-11-19 21:00:00,5911.8,0.0,46.98 -2012-11-19 22:00:00,5537.7,0.0,47.11 -2012-11-19 23:00:00,5077.9,0.0,43.09 -2012-11-20 00:00:00,4659.1,0.0,46.85 -2012-11-20 01:00:00,4394.0,0.0,46.52 -2012-11-20 02:00:00,4246.5,0.0,45.0 -2012-11-20 03:00:00,4192.1,0.0,44.94 -2012-11-20 04:00:00,4228.4,0.0,44.43 -2012-11-20 05:00:00,4498.7,0.0,43.24 -2012-11-20 06:00:00,5066.2,0.0,42.6 -2012-11-20 07:00:00,5594.4,0.0,43.32 -2012-11-20 08:00:00,5930.0,0.0,44.67 -2012-11-20 09:00:00,6137.2,0.0,45.71 -2012-11-20 10:00:00,6245.2,0.0,47.36 -2012-11-20 11:00:00,6264.1,0.0,49.55 -2012-11-20 12:00:00,6266.4,0.0,49.07 -2012-11-20 13:00:00,6249.5,0.0,48.4 -2012-11-20 14:00:00,6242.2,0.0,48.8 -2012-11-20 15:00:00,6284.0,0.0,48.8 -2012-11-20 16:00:00,6488.0,0.0,47.97 -2012-11-20 17:00:00,6667.7,0.0,46.6 -2012-11-20 18:00:00,6479.7,0.0,46.17 -2012-11-20 19:00:00,6300.9,0.0,45.9 -2012-11-20 20:00:00,6104.7,0.0,45.96 -2012-11-20 21:00:00,5858.8,0.0,45.54 -2012-11-20 22:00:00,5500.9,0.0,45.86 -2012-11-20 23:00:00,5065.3,0.0,45.76 -2012-11-21 00:00:00,4636.7,0.0,45.6 -2012-11-21 01:00:00,4391.1,0.0,45.51 -2012-11-21 02:00:00,4261.2,0.0,45.41 -2012-11-21 03:00:00,4176.5,0.0,45.15 -2012-11-21 04:00:00,4160.2,0.0,44.25 -2012-11-21 05:00:00,4424.7,0.0,42.84 -2012-11-21 06:00:00,5006.3,0.0,42.49 -2012-11-21 07:00:00,5516.1,0.0,43.55 -2012-11-21 08:00:00,5886.3,0.0,45.9 -2012-11-21 09:00:00,6131.8,0.0,47.71 -2012-11-21 10:00:00,6206.1,0.0,49.96 -2012-11-21 11:00:00,6236.7,0.0,50.98 -2012-11-21 12:00:00,6221.9,0.0,51.4 -2012-11-21 13:00:00,6205.6,0.0,53.23 -2012-11-21 14:00:00,6176.2,0.0,53.33 -2012-11-21 15:00:00,6130.2,0.0,52.67 -2012-11-21 16:00:00,6257.1,0.0,51.39 -2012-11-21 17:00:00,6462.2,0.0,49.6 -2012-11-21 18:00:00,6285.3,0.0,48.55 -2012-11-21 19:00:00,6104.6,0.0,49.44 -2012-11-21 20:00:00,5918.2,0.0,48.12 -2012-11-21 21:00:00,5697.9,0.0,48.95 -2012-11-21 22:00:00,5396.7,0.0,47.45 -2012-11-21 23:00:00,5030.0,0.0,47.04 -2012-11-22 00:00:00,4678.7,0.0,46.58 -2012-11-22 01:00:00,4433.0,0.0,44.68 -2012-11-22 02:00:00,4277.8,0.0,44.91 -2012-11-22 03:00:00,4198.4,0.0,44.61 -2012-11-22 04:00:00,4181.4,0.0,42.43 -2012-11-22 05:00:00,4239.6,0.0,43.62 -2012-11-22 06:00:00,4342.6,0.0,43.43 -2012-11-22 07:00:00,4519.8,0.0,44.03 -2012-11-22 08:00:00,4773.6,0.0,43.58 -2012-11-22 09:00:00,5008.0,0.0,49.17 -2012-11-22 10:00:00,5202.4,0.0,51.47 -2012-11-22 11:00:00,5314.5,0.0,52.11 -2012-11-22 12:00:00,5310.2,0.0,52.8 -2012-11-22 13:00:00,5283.9,0.0,53.3 -2012-11-22 14:00:00,5235.4,0.0,53.62 -2012-11-22 15:00:00,5167.2,0.0,52.53 -2012-11-22 16:00:00,5240.1,0.0,51.45 -2012-11-22 17:00:00,5353.4,0.0,47.55 -2012-11-22 18:00:00,5242.8,0.0,45.47 -2012-11-22 19:00:00,5127.7,0.0,45.22 -2012-11-22 20:00:00,5064.7,0.0,45.06 -2012-11-22 21:00:00,5007.1,0.0,43.31 -2012-11-22 22:00:00,4893.8,0.0,44.37 -2012-11-22 23:00:00,4695.3,0.0,41.88 -2012-11-23 00:00:00,4465.1,0.0,41.61 -2012-11-23 01:00:00,4286.0,0.0,42.67 -2012-11-23 02:00:00,4165.3,0.0,40.76 -2012-11-23 03:00:00,4091.1,0.0,44.04 -2012-11-23 04:00:00,4105.0,0.0,43.62 -2012-11-23 05:00:00,4258.2,0.0,43.38 -2012-11-23 06:00:00,4553.3,0.0,43.09 -2012-11-23 07:00:00,4889.0,0.0,39.97 -2012-11-23 08:00:00,5199.2,0.0,44.12 -2012-11-23 09:00:00,5428.0,0.0,48.28 -2012-11-23 10:00:00,5567.9,0.0,50.68 -2012-11-23 11:00:00,5633.0,0.0,51.55 -2012-11-23 12:00:00,5654.1,0.0,52.33 -2012-11-23 13:00:00,5647.4,0.0,51.46 -2012-11-23 14:00:00,5620.8,0.0,51.65 -2012-11-23 15:00:00,5641.0,0.0,50.07 -2012-11-23 16:00:00,5829.1,0.0,49.65 -2012-11-23 17:00:00,6044.5,0.0,49.3 -2012-11-23 18:00:00,5966.3,0.0,49.03 -2012-11-23 19:00:00,5837.2,0.0,47.46 -2012-11-23 20:00:00,5693.8,0.0,48.11 -2012-11-23 21:00:00,5506.9,0.0,48.38 -2012-11-23 22:00:00,5261.2,0.0041,48.51 -2012-11-23 23:00:00,4989.3,0.0089,48.66 -2012-11-24 00:00:00,4703.0,0.0,48.66 -2012-11-24 01:00:00,4469.0,0.0,48.91 -2012-11-24 02:00:00,4331.7,0.0,49.79 -2012-11-24 03:00:00,4245.4,0.0,48.78 -2012-11-24 04:00:00,4210.8,0.0,45.63 -2012-11-24 05:00:00,4212.8,0.0,42.81 -2012-11-24 06:00:00,4315.9,0.0,45.76 -2012-11-24 07:00:00,4514.6,0.0,44.03 -2012-11-24 08:00:00,4812.0,0.0,45.1 -2012-11-24 09:00:00,5068.6,0.0,45.28 -2012-11-24 10:00:00,5267.1,0.0,45.13 -2012-11-24 11:00:00,5400.5,0.0,44.08 -2012-11-24 12:00:00,5447.6,0.0,44.47 -2012-11-24 13:00:00,5431.8,0.0,44.83 -2012-11-24 14:00:00,5426.7,0.0,44.89 -2012-11-24 15:00:00,5454.9,0.0,44.06 -2012-11-24 16:00:00,5598.8,0.0,41.77 -2012-11-24 17:00:00,5831.3,0.0,41.24 -2012-11-24 18:00:00,5823.2,0.0,40.82 -2012-11-24 19:00:00,5751.0,0.0,39.42 -2012-11-24 20:00:00,5617.4,0.0,38.01 -2012-11-24 21:00:00,5484.2,0.0,37.67 -2012-11-24 22:00:00,5321.2,0.0,37.24 -2012-11-24 23:00:00,5062.6,0.0,36.58 -2012-11-25 00:00:00,4766.5,0.0,36.15 -2012-11-25 01:00:00,4506.0,0.0,36.51 -2012-11-25 02:00:00,4342.0,0.0,35.52 -2012-11-25 03:00:00,4249.6,0.0,35.1 -2012-11-25 04:00:00,4218.0,0.0,35.1 -2012-11-25 05:00:00,4236.5,0.0,34.74 -2012-11-25 06:00:00,4326.1,0.0,34.67 -2012-11-25 07:00:00,4467.2,0.0,34.76 -2012-11-25 08:00:00,4723.2,0.0,36.17 -2012-11-25 09:00:00,4986.5,0.0,37.26 -2012-11-25 10:00:00,5193.2,0.0,38.26 -2012-11-25 11:00:00,5337.2,0.0,39.29 -2012-11-25 12:00:00,5405.9,0.0,39.45 -2012-11-25 13:00:00,5437.5,0.0,40.66 -2012-11-25 14:00:00,5455.6,0.0,39.6 -2012-11-25 15:00:00,5469.4,0.0,40.57 -2012-11-25 16:00:00,5664.3,0.0,39.7 -2012-11-25 17:00:00,5953.7,0.0,39.16 -2012-11-25 18:00:00,5982.3,0.0,38.89 -2012-11-25 19:00:00,5944.2,0.0,38.81 -2012-11-25 20:00:00,5858.0,0.0,37.4 -2012-11-25 21:00:00,5673.0,0.0,37.34 -2012-11-25 22:00:00,5381.7,0.0,37.79 -2012-11-25 23:00:00,5010.7,0.0,38.39 -2012-11-26 00:00:00,4667.0,0.0,38.55 -2012-11-26 01:00:00,4449.5,0.0,38.62 -2012-11-26 02:00:00,4320.1,0.0,38.71 -2012-11-26 03:00:00,4268.2,0.0,38.68 -2012-11-26 04:00:00,4301.9,0.0,38.45 -2012-11-26 05:00:00,4573.8,0.0,39.34 -2012-11-26 06:00:00,5123.2,0.0,38.64 -2012-11-26 07:00:00,5679.6,0.0,38.94 -2012-11-26 08:00:00,6016.8,0.0,39.29 -2012-11-26 09:00:00,6248.1,0.0,42.21 -2012-11-26 10:00:00,6344.0,0.0,43.38 -2012-11-26 11:00:00,6379.0,0.0,45.43 -2012-11-26 12:00:00,6402.7,0.0,46.02 -2012-11-26 13:00:00,6390.3,0.0,46.35 -2012-11-26 14:00:00,6351.1,0.0,46.88 -2012-11-26 15:00:00,6371.1,0.0,47.14 -2012-11-26 16:00:00,6562.9,0.0,45.31 -2012-11-26 17:00:00,6796.9,0.0,43.64 -2012-11-26 18:00:00,6688.7,0.0,41.89 -2012-11-26 19:00:00,6616.0,0.0,40.43 -2012-11-26 20:00:00,6441.7,0.0,41.14 -2012-11-26 21:00:00,6174.8,0.0,40.64 -2012-11-26 22:00:00,5795.9,0.0,39.07 -2012-11-26 23:00:00,5322.7,0.0,38.22 -2012-11-27 00:00:00,4895.2,0.0,38.53 -2012-11-27 01:00:00,4472.0,0.0,38.46 -2012-11-27 02:00:00,4242.1,0.0,38.55 -2012-11-27 03:00:00,4237.7,0.0,36.99 -2012-11-27 04:00:00,4243.7,0.0,37.5 -2012-11-27 05:00:00,4523.5,0.0,37.08 -2012-11-27 06:00:00,5107.5,0.0,38.23 -2012-11-27 07:00:00,5706.6,0.0,38.9 -2012-11-27 08:00:00,6083.5,0.0011,39.45 -2012-11-27 09:00:00,6355.4,0.008,41.22 -2012-11-27 10:00:00,6515.4,0.0295,37.17 -2012-11-27 11:00:00,6615.7,0.0647,36.42 -2012-11-27 12:00:00,6665.6,0.0232,34.84 -2012-11-27 13:00:00,6681.1,0.022,34.54 -2012-11-27 14:00:00,6694.6,0.039,35.44 -2012-11-27 15:00:00,6765.5,0.0567,35.1 -2012-11-27 16:00:00,6923.2,0.0408,34.83 -2012-11-27 17:00:00,7009.6,0.0337,36.83 -2012-11-27 18:00:00,6821.2,0.0344,38.16 -2012-11-27 19:00:00,6606.0,0.0412,38.42 -2012-11-27 20:00:00,6381.0,0.0069,36.53 -2012-11-27 21:00:00,6103.7,0.0069,36.77 -2012-11-27 22:00:00,5732.3,0.0275,37.07 -2012-11-27 23:00:00,5250.6,0.0137,37.34 -2012-11-28 00:00:00,4817.8,0.0069,37.24 -2012-11-28 01:00:00,4577.6,0.0206,38.39 -2012-11-28 02:00:00,4428.6,0.0206,39.37 -2012-11-28 03:00:00,4368.7,0.0137,39.45 -2012-11-28 04:00:00,4447.8,0.0069,39.38 -2012-11-28 05:00:00,4703.9,0.0,40.53 -2012-11-28 06:00:00,5213.7,0.0,40.34 -2012-11-28 07:00:00,5778.3,0.0,40.08 -2012-11-28 08:00:00,6113.4,0.0,40.26 -2012-11-28 09:00:00,6338.0,0.0,40.68 -2012-11-28 10:00:00,6427.3,0.0,41.11 -2012-11-28 11:00:00,6456.4,0.0,42.71 -2012-11-28 12:00:00,6465.7,0.0,42.05 -2012-11-28 13:00:00,6459.5,0.0069,40.84 -2012-11-28 14:00:00,6472.3,0.0,41.1 -2012-11-28 15:00:00,6519.8,0.0,39.34 -2012-11-28 16:00:00,6719.6,0.0,39.08 -2012-11-28 17:00:00,6948.3,0.0,37.24 -2012-11-28 18:00:00,6795.7,0.0,37.09 -2012-11-28 19:00:00,6613.6,0.0,36.42 -2012-11-28 20:00:00,6394.3,0.0,36.24 -2012-11-28 21:00:00,6150.1,0.0,36.12 -2012-11-28 22:00:00,5787.3,0.0,36.12 -2012-11-28 23:00:00,5338.5,0.0,36.18 -2012-11-29 00:00:00,4877.5,0.0,36.3 -2012-11-29 01:00:00,4607.6,0.0,36.2 -2012-11-29 02:00:00,4461.9,0.0,36.2 -2012-11-29 03:00:00,4427.9,0.0,35.05 -2012-11-29 04:00:00,4566.5,0.0,34.98 -2012-11-29 05:00:00,4696.0,0.0,34.8 -2012-11-29 06:00:00,5243.4,0.0,34.96 -2012-11-29 07:00:00,5835.6,0.0,35.05 -2012-11-29 08:00:00,6172.8,0.0,36.29 -2012-11-29 09:00:00,6376.2,0.0,38.63 -2012-11-29 10:00:00,6497.5,0.0,39.56 -2012-11-29 11:00:00,6537.0,0.0,40.68 -2012-11-29 12:00:00,6520.0,0.0,42.51 -2012-11-29 13:00:00,6510.9,0.0,42.76 -2012-11-29 14:00:00,6474.9,0.0,42.99 -2012-11-29 15:00:00,6517.1,0.0,43.26 -2012-11-29 16:00:00,6720.9,0.0,42.12 -2012-11-29 17:00:00,6917.4,0.0,41.76 -2012-11-29 18:00:00,6759.9,0.0,42.65 -2012-11-29 19:00:00,6564.6,0.0,42.63 -2012-11-29 20:00:00,6345.2,0.0,42.73 -2012-11-29 21:00:00,6091.6,0.0,42.63 -2012-11-29 22:00:00,5746.4,0.0,42.52 -2012-11-29 23:00:00,5274.8,0.0,42.5 -2012-11-30 00:00:00,4848.5,0.0,43.04 -2012-11-30 01:00:00,4584.2,0.0,42.62 -2012-11-30 02:00:00,4424.5,0.0,42.88 -2012-11-30 03:00:00,4417.3,0.0,42.34 -2012-11-30 04:00:00,4370.8,0.0,41.1 -2012-11-30 05:00:00,4578.9,0.0,39.38 -2012-11-30 06:00:00,5203.1,0.0,38.17 -2012-11-30 07:00:00,5734.5,0.0,36.68 -2012-11-30 08:00:00,6077.8,0.0,38.54 -2012-11-30 09:00:00,6323.5,0.0,39.32 -2012-11-30 10:00:00,6432.8,0.0,41.51 -2012-11-30 11:00:00,6453.4,0.0,41.86 -2012-11-30 12:00:00,6426.2,0.0,41.22 -2012-11-30 13:00:00,6443.1,0.0,41.81 -2012-11-30 14:00:00,6438.4,0.0,40.59 -2012-11-30 15:00:00,6454.3,0.0,40.5 -2012-11-30 16:00:00,6607.1,0.0,40.13 -2012-11-30 17:00:00,6766.2,0.0,39.71 -2012-11-30 18:00:00,6569.4,0.0,39.27 -2012-11-30 19:00:00,6372.9,0.0,39.0 -2012-11-30 20:00:00,6177.0,0.0,38.62 -2012-11-30 21:00:00,5954.3,0.0,37.74 -2012-11-30 22:00:00,5653.7,0.0,37.24 -2012-11-30 23:00:00,5255.1,0.0,37.39 -2012-12-01 00:00:00,4879.0,0.0,39.18 -2012-12-01 01:00:00,4626.0,0.0,37.93 -2012-12-01 02:00:00,4458.4,0.0,38.51 -2012-12-01 03:00:00,4367.4,0.0,37.93 -2012-12-01 04:00:00,4330.7,0.0,37.7 -2012-12-01 05:00:00,4408.0,0.0,36.8 -2012-12-01 06:00:00,4585.5,0.0,37.45 -2012-12-01 07:00:00,4812.0,0.0,37.51 -2012-12-01 08:00:00,5162.6,0.0,38.59 -2012-12-01 09:00:00,5473.6,0.0069,38.68 -2012-12-01 10:00:00,5693.5,0.0206,37.46 -2012-12-01 11:00:00,5792.7,0.0137,40.02 -2012-12-01 12:00:00,5812.0,0.0069,40.35 -2012-12-01 13:00:00,5820.7,0.0069,41.76 -2012-12-01 14:00:00,5816.3,0.0069,40.43 -2012-12-01 15:00:00,5849.6,0.0,39.46 -2012-12-01 16:00:00,6009.6,0.0,41.18 -2012-12-01 17:00:00,6165.1,0.0,42.9 -2012-12-01 18:00:00,6116.4,0.0,43.33 -2012-12-01 19:00:00,6006.8,0.0,43.24 -2012-12-01 20:00:00,5859.8,0.0,44.0 -2012-12-01 21:00:00,5701.9,0.0,44.0 -2012-12-01 22:00:00,5451.0,0.0,44.55 -2012-12-01 23:00:00,5162.0,0.0,43.98 -2012-12-02 00:00:00,4847.5,0.0,45.03 -2012-12-02 01:00:00,4581.9,0.0,41.25 -2012-12-02 02:00:00,4401.2,0.0,45.27 -2012-12-02 03:00:00,4294.4,0.0,41.82 -2012-12-02 04:00:00,4248.9,0.0,45.84 -2012-12-02 05:00:00,4295.0,0.0,41.24 -2012-12-02 06:00:00,4406.2,0.0,46.22 -2012-12-02 07:00:00,4547.7,0.0,41.82 -2012-12-02 08:00:00,4817.7,0.0,42.48 -2012-12-02 09:00:00,5094.6,0.0,43.41 -2012-12-02 10:00:00,5317.4,0.0,49.42 -2012-12-02 11:00:00,5427.3,0.0,45.71 -2012-12-02 12:00:00,5442.9,0.0,49.17 -2012-12-02 13:00:00,5471.9,0.0,50.0 -2012-12-02 14:00:00,5466.7,0.0,51.52 -2012-12-02 15:00:00,5519.0,0.0,50.72 -2012-12-02 16:00:00,5755.3,0.0,50.08 -2012-12-02 17:00:00,5985.6,0.0,50.75 -2012-12-02 18:00:00,6004.5,0.0,50.83 -2012-12-02 19:00:00,5942.5,0.0,51.14 -2012-12-02 20:00:00,5832.8,0.0,49.99 -2012-12-02 21:00:00,5641.7,0.0095,50.7 -2012-12-02 22:00:00,5335.6,0.0358,50.94 -2012-12-02 23:00:00,4957.9,0.0,49.08 -2012-12-03 00:00:00,4606.0,0.0,49.89 -2012-12-03 01:00:00,4357.6,0.0,49.96 -2012-12-03 02:00:00,4222.8,0.0,49.96 -2012-12-03 03:00:00,4176.3,0.0,49.96 -2012-12-03 04:00:00,4209.3,0.0,50.04 -2012-12-03 05:00:00,4464.6,0.0,49.63 -2012-12-03 06:00:00,5060.5,0.0,49.37 -2012-12-03 07:00:00,5600.5,0.0,49.1 -2012-12-03 08:00:00,5939.0,0.0,50.25 -2012-12-03 09:00:00,6181.9,0.0,52.83 -2012-12-03 10:00:00,6277.7,0.0,54.38 -2012-12-03 11:00:00,6304.5,0.0,55.6 -2012-12-03 12:00:00,6320.8,0.0,56.02 -2012-12-03 13:00:00,6330.6,0.0,56.95 -2012-12-03 14:00:00,6332.4,0.0,57.11 -2012-12-03 15:00:00,6318.2,0.0,57.1 -2012-12-03 16:00:00,6513.4,0.0,55.97 -2012-12-03 17:00:00,6735.0,0.0,52.37 -2012-12-03 18:00:00,6559.3,0.0,49.92 -2012-12-03 19:00:00,6391.6,0.0,45.47 -2012-12-03 20:00:00,6184.5,0.0,44.38 -2012-12-03 21:00:00,5927.4,0.0,44.17 -2012-12-03 22:00:00,5546.1,0.0,43.34 -2012-12-03 23:00:00,5073.1,0.0,43.26 -2012-12-04 00:00:00,4619.8,0.0,43.1 -2012-12-04 01:00:00,4344.5,0.0,41.62 -2012-12-04 02:00:00,4203.3,0.0,41.26 -2012-12-04 03:00:00,4138.2,0.0,44.7 -2012-12-04 04:00:00,4171.8,0.0,43.78 -2012-12-04 05:00:00,4415.0,0.0,44.76 -2012-12-04 06:00:00,5021.1,0.0076,48.48 -2012-12-04 07:00:00,5624.8,0.0413,48.06 -2012-12-04 08:00:00,6001.8,0.0178,47.01 -2012-12-04 09:00:00,6248.7,0.002,50.81 -2012-12-04 10:00:00,6331.6,0.008,53.59 -2012-12-04 11:00:00,6351.0,0.0,52.79 -2012-12-04 12:00:00,6362.7,0.0,53.68 -2012-12-04 13:00:00,6364.8,0.0,54.83 -2012-12-04 14:00:00,6362.8,0.0,53.64 -2012-12-04 15:00:00,6393.4,0.0,53.8 -2012-12-04 16:00:00,6604.3,0.0,53.55 -2012-12-04 17:00:00,6764.6,0.0,51.72 -2012-12-04 18:00:00,6618.4,0.0069,51.99 -2012-12-04 19:00:00,6423.6,0.0,52.18 -2012-12-04 20:00:00,6208.0,0.0,51.67 -2012-12-04 21:00:00,5927.9,0.0,51.76 -2012-12-04 22:00:00,5581.3,0.0,51.23 -2012-12-04 23:00:00,5150.0,0.0,52.46 -2012-12-05 00:00:00,4703.3,0.0,52.81 -2012-12-05 01:00:00,4376.0,0.0011,52.79 -2012-12-05 02:00:00,4222.9,0.0,52.81 -2012-12-05 03:00:00,4160.6,0.002,53.16 -2012-12-05 04:00:00,4180.1,0.0,55.98 -2012-12-05 05:00:00,4409.2,0.0,55.2 -2012-12-05 06:00:00,4968.8,0.0,54.1 -2012-12-05 07:00:00,5561.2,0.0,53.67 -2012-12-05 08:00:00,5944.0,0.0,53.25 -2012-12-05 09:00:00,6164.0,0.0,53.27 -2012-12-05 10:00:00,6266.6,0.0069,52.82 -2012-12-05 11:00:00,6302.4,0.0,52.66 -2012-12-05 12:00:00,6305.8,0.0,53.01 -2012-12-05 13:00:00,6313.5,0.0,53.2 -2012-12-05 14:00:00,6304.8,0.0,53.87 -2012-12-05 15:00:00,6345.1,0.0,51.94 -2012-12-05 16:00:00,6564.7,0.0,50.28 -2012-12-05 17:00:00,6788.7,0.0,47.58 -2012-12-05 18:00:00,6655.2,0.0,45.42 -2012-12-05 19:00:00,6505.1,0.0,43.54 -2012-12-05 20:00:00,6304.2,0.0,41.97 -2012-12-05 21:00:00,6065.1,0.0,41.47 -2012-12-05 22:00:00,5707.7,0.0,39.07 -2012-12-05 23:00:00,5212.5,0.0,37.97 -2012-12-06 00:00:00,4778.1,0.0,37.7 -2012-12-06 01:00:00,4515.7,0.0,36.55 -2012-12-06 02:00:00,4380.9,0.0,36.39 -2012-12-06 03:00:00,4332.8,0.0,34.24 -2012-12-06 04:00:00,4373.0,0.0,33.22 -2012-12-06 05:00:00,4644.0,0.0,33.39 -2012-12-06 06:00:00,5218.0,0.0,33.14 -2012-12-06 07:00:00,5785.2,0.0,32.97 -2012-12-06 08:00:00,6128.4,0.0,32.89 -2012-12-06 09:00:00,6364.2,0.0,34.56 -2012-12-06 10:00:00,6479.1,0.0,36.05 -2012-12-06 11:00:00,6508.9,0.0,36.17 -2012-12-06 12:00:00,6487.3,0.0,36.9 -2012-12-06 13:00:00,6470.0,0.0,38.6 -2012-12-06 14:00:00,6446.3,0.0,39.35 -2012-12-06 15:00:00,6499.9,0.0,38.56 -2012-12-06 16:00:00,6728.4,0.0,37.8 -2012-12-06 17:00:00,6946.8,0.0,36.26 -2012-12-06 18:00:00,6781.9,0.0,35.03 -2012-12-06 19:00:00,6596.8,0.0,33.79 -2012-12-06 20:00:00,6388.4,0.0,31.47 -2012-12-06 21:00:00,6128.9,0.0,32.13 -2012-12-06 22:00:00,5758.5,0.0,31.79 -2012-12-06 23:00:00,5275.2,0.0,30.87 -2012-12-07 00:00:00,4827.8,0.0,33.47 -2012-12-07 01:00:00,4564.4,0.0,32.31 -2012-12-07 02:00:00,4400.3,0.0,32.1 -2012-12-07 03:00:00,4332.6,0.0,35.85 -2012-12-07 04:00:00,4349.1,0.0,36.12 -2012-12-07 05:00:00,4627.1,0.0,37.45 -2012-12-07 06:00:00,5171.3,0.0,37.88 -2012-12-07 07:00:00,5741.8,0.0,38.06 -2012-12-07 08:00:00,6106.5,0.0,39.63 -2012-12-07 09:00:00,6351.9,0.0,40.59 -2012-12-07 10:00:00,6482.7,0.008,43.66 -2012-12-07 11:00:00,6539.0,0.0011,40.94 -2012-12-07 12:00:00,6534.6,0.0169,40.81 -2012-12-07 13:00:00,6534.8,0.0178,42.13 -2012-12-07 14:00:00,6530.0,0.0169,46.0 -2012-12-07 15:00:00,6601.4,0.012,42.71 -2012-12-07 16:00:00,6748.9,0.008,42.68 -2012-12-07 17:00:00,6810.7,0.01,42.68 -2012-12-07 18:00:00,6619.7,0.002,46.4 -2012-12-07 19:00:00,6414.8,0.0169,44.88 -2012-12-07 20:00:00,6193.4,0.0041,46.77 -2012-12-07 21:00:00,5952.2,0.0,46.58 -2012-12-07 22:00:00,5637.6,0.0,46.6 -2012-12-07 23:00:00,5232.5,0.0011,46.71 -2012-12-08 00:00:00,4856.2,0.0141,44.15 -2012-12-08 01:00:00,4584.9,0.032,46.47 -2012-12-08 02:00:00,4404.4,0.0203,44.18 -2012-12-08 03:00:00,4317.1,0.0135,46.4 -2012-12-08 04:00:00,4272.9,0.0206,46.64 -2012-12-08 05:00:00,4362.7,0.0412,46.64 -2012-12-08 06:00:00,4516.2,0.0894,44.92 -2012-12-08 07:00:00,4746.1,0.0619,47.72 -2012-12-08 08:00:00,5048.9,0.055,49.12 -2012-12-08 09:00:00,5397.2,0.0,45.58 -2012-12-08 10:00:00,5563.0,0.0137,50.34 -2012-12-08 11:00:00,5645.7,0.0,50.76 -2012-12-08 12:00:00,5694.8,0.0,51.69 -2012-12-08 13:00:00,5676.9,0.0,51.62 -2012-12-08 14:00:00,5676.8,0.0,50.81 -2012-12-08 15:00:00,5699.8,0.0,52.39 -2012-12-08 16:00:00,5858.4,0.0,51.25 -2012-12-08 17:00:00,6062.2,0.0,50.87 -2012-12-08 18:00:00,6030.8,0.0,50.8 -2012-12-08 19:00:00,5933.7,0.0,48.15 -2012-12-08 20:00:00,5789.3,0.0,48.26 -2012-12-08 21:00:00,5606.1,0.0,48.44 -2012-12-08 22:00:00,5378.5,0.0011,48.5 -2012-12-08 23:00:00,5086.0,0.0178,48.6 -2012-12-09 00:00:00,4774.9,0.022,48.51 -2012-12-09 01:00:00,4513.1,0.002,48.74 -2012-12-09 02:00:00,4328.2,0.0,48.48 -2012-12-09 03:00:00,4206.5,0.0,48.32 -2012-12-09 04:00:00,4159.1,0.0,48.74 -2012-12-09 05:00:00,4210.0,0.0,47.89 -2012-12-09 06:00:00,4311.3,0.0,47.7 -2012-12-09 07:00:00,4446.6,0.0,46.37 -2012-12-09 08:00:00,4725.5,0.0,47.3 -2012-12-09 09:00:00,5030.1,0.0,47.61 -2012-12-09 10:00:00,5313.0,0.0,47.34 -2012-12-09 11:00:00,5481.5,0.0,46.49 -2012-12-09 12:00:00,5542.5,0.0069,47.54 -2012-12-09 13:00:00,5587.9,0.002,46.66 -2012-12-09 14:00:00,5627.4,0.0,46.5 -2012-12-09 15:00:00,5716.3,0.0011,45.18 -2012-12-09 16:00:00,5935.1,0.0069,43.54 -2012-12-09 17:00:00,6090.5,0.0041,44.99 -2012-12-09 18:00:00,6094.1,0.0093,42.6 -2012-12-09 19:00:00,5998.4,0.0089,43.35 -2012-12-09 20:00:00,5886.0,0.0148,43.99 -2012-12-09 21:00:00,5706.3,0.0064,45.42 -2012-12-09 22:00:00,5390.7,0.0111,45.61 -2012-12-09 23:00:00,4997.7,0.0193,43.69 -2012-12-10 00:00:00,4649.3,0.062,45.61 -2012-12-10 01:00:00,4408.0,0.0148,45.2 -2012-12-10 02:00:00,4250.2,0.0148,45.93 -2012-12-10 03:00:00,4188.7,0.0412,46.11 -2012-12-10 04:00:00,4231.3,0.0866,48.3 -2012-12-10 05:00:00,4487.8,0.0137,46.82 -2012-12-10 06:00:00,5082.5,0.0206,47.3 -2012-12-10 07:00:00,5676.9,0.0206,51.54 -2012-12-10 08:00:00,6064.4,0.0206,51.61 -2012-12-10 09:00:00,6319.3,0.0069,53.59 -2012-12-10 10:00:00,6447.3,0.0,54.89 -2012-12-10 11:00:00,6501.5,0.0069,56.47 -2012-12-10 12:00:00,6517.0,0.0,54.58 -2012-12-10 13:00:00,6527.4,0.0,56.96 -2012-12-10 14:00:00,6541.8,0.0,57.51 -2012-12-10 15:00:00,6602.1,0.0137,57.51 -2012-12-10 16:00:00,6794.1,0.0481,56.05 -2012-12-10 17:00:00,6913.3,0.0,56.22 -2012-12-10 18:00:00,6705.3,0.0,56.42 -2012-12-10 19:00:00,6512.1,0.0344,57.63 -2012-12-10 20:00:00,6299.1,0.0137,57.91 -2012-12-10 21:00:00,6030.1,0.0,57.62 -2012-12-10 22:00:00,5653.2,0.0,55.37 -2012-12-10 23:00:00,5156.9,0.0069,55.23 -2012-12-11 00:00:00,4690.1,0.0069,55.02 -2012-12-11 01:00:00,4403.9,0.008,53.19 -2012-12-11 02:00:00,4239.7,0.0,51.85 -2012-12-11 03:00:00,4178.9,0.008,50.21 -2012-12-11 04:00:00,4199.6,0.0069,49.71 -2012-12-11 05:00:00,4477.7,0.0,50.76 -2012-12-11 06:00:00,5067.8,0.0011,46.8 -2012-12-11 07:00:00,5665.3,0.0158,46.53 -2012-12-11 08:00:00,6024.4,0.0069,46.53 -2012-12-11 09:00:00,6238.2,0.0,47.87 -2012-12-11 10:00:00,6324.3,0.0,47.39 -2012-12-11 11:00:00,6373.3,0.0,48.56 -2012-12-11 12:00:00,6382.5,0.0,47.41 -2012-12-11 13:00:00,6394.6,0.0,47.51 -2012-12-11 14:00:00,6391.0,0.0,47.75 -2012-12-11 15:00:00,6437.6,0.0,47.74 -2012-12-11 16:00:00,6662.0,0.0,45.69 -2012-12-11 17:00:00,6881.5,0.0,44.12 -2012-12-11 18:00:00,6708.5,0.0,43.86 -2012-12-11 19:00:00,6524.2,0.0,43.76 -2012-12-11 20:00:00,6323.4,0.0,43.34 -2012-12-11 21:00:00,6093.6,0.0,43.24 -2012-12-11 22:00:00,5707.0,0.0,41.76 -2012-12-11 23:00:00,5209.9,0.0,40.52 -2012-12-12 00:00:00,4760.0,0.0,39.04 -2012-12-12 01:00:00,4501.9,0.0,38.43 -2012-12-12 02:00:00,4349.7,0.0,37.34 -2012-12-12 03:00:00,4297.7,0.0,37.01 -2012-12-12 04:00:00,4326.5,0.0,36.85 -2012-12-12 05:00:00,4595.8,0.0,36.73 -2012-12-12 06:00:00,5179.2,0.0,35.52 -2012-12-12 07:00:00,5759.0,0.0,36.66 -2012-12-12 08:00:00,6083.0,0.0,36.93 -2012-12-12 09:00:00,6301.9,0.0,39.57 -2012-12-12 10:00:00,6376.1,0.0,39.37 -2012-12-12 11:00:00,6412.8,0.0,40.45 -2012-12-12 12:00:00,6434.0,0.0,40.55 -2012-12-12 13:00:00,6435.4,0.0,40.54 -2012-12-12 14:00:00,6429.5,0.0,40.79 -2012-12-12 15:00:00,6485.2,0.0,39.66 -2012-12-12 16:00:00,6729.8,0.0,40.04 -2012-12-12 17:00:00,6940.5,0.0,39.22 -2012-12-12 18:00:00,6761.4,0.0,38.63 -2012-12-12 19:00:00,6580.0,0.0,38.97 -2012-12-12 20:00:00,6380.2,0.0,38.97 -2012-12-12 21:00:00,6119.3,0.0,38.72 -2012-12-12 22:00:00,5756.1,0.0,38.36 -2012-12-12 23:00:00,5280.0,0.0,38.36 -2012-12-13 00:00:00,4826.3,0.0,38.27 -2012-12-13 01:00:00,4561.7,0.0,37.82 -2012-12-13 02:00:00,4403.7,0.0,37.69 -2012-12-13 03:00:00,4338.9,0.0,38.49 -2012-12-13 04:00:00,4369.4,0.0,38.3 -2012-12-13 05:00:00,4636.8,0.0,38.32 -2012-12-13 06:00:00,5206.7,0.0,38.23 -2012-12-13 07:00:00,5771.7,0.0,39.01 -2012-12-13 08:00:00,6118.0,0.0,39.31 -2012-12-13 09:00:00,6330.9,0.0,41.38 -2012-12-13 10:00:00,6420.9,0.0,42.33 -2012-12-13 11:00:00,6459.0,0.0,44.15 -2012-12-13 12:00:00,6468.0,0.0,44.57 -2012-12-13 13:00:00,6460.0,0.0,44.76 -2012-12-13 14:00:00,6449.6,0.0,45.33 -2012-12-13 15:00:00,6480.7,0.0,44.11 -2012-12-13 16:00:00,6670.7,0.0,41.05 -2012-12-13 17:00:00,6933.4,0.0,39.25 -2012-12-13 18:00:00,6752.4,0.0,37.94 -2012-12-13 19:00:00,6568.8,0.0,37.5 -2012-12-13 20:00:00,6367.5,0.0,36.1 -2012-12-13 21:00:00,6102.6,0.0,35.66 -2012-12-13 22:00:00,5743.6,0.0,34.66 -2012-12-13 23:00:00,5262.7,0.0,33.94 -2012-12-14 00:00:00,4855.6,0.0,33.47 -2012-12-14 01:00:00,4612.3,0.0,34.17 -2012-12-14 02:00:00,4437.6,0.0,32.66 -2012-12-14 03:00:00,4325.4,0.0,33.81 -2012-12-14 04:00:00,4346.7,0.0,35.03 -2012-12-14 05:00:00,4605.7,0.0,35.73 -2012-12-14 06:00:00,5174.2,0.0,34.69 -2012-12-14 07:00:00,5739.2,0.0,33.55 -2012-12-14 08:00:00,6083.6,0.0,36.1 -2012-12-14 09:00:00,6328.6,0.0,38.85 -2012-12-14 10:00:00,6423.4,0.0,42.75 -2012-12-14 11:00:00,6451.5,0.0,44.88 -2012-12-14 12:00:00,6441.2,0.0,45.67 -2012-12-14 13:00:00,6419.9,0.0,46.25 -2012-12-14 14:00:00,6387.4,0.0,46.85 -2012-12-14 15:00:00,6408.6,0.0,47.37 -2012-12-14 16:00:00,6576.6,0.0,46.96 -2012-12-14 17:00:00,6806.5,0.0,46.52 -2012-12-14 18:00:00,6610.7,0.0,45.11 -2012-12-14 19:00:00,6400.8,0.0,44.5 -2012-12-14 20:00:00,6182.4,0.0,44.27 -2012-12-14 21:00:00,5962.1,0.0,43.81 -2012-12-14 22:00:00,5662.5,0.0,41.96 -2012-12-14 23:00:00,5256.7,0.0,41.7 -2012-12-15 00:00:00,4871.6,0.0,40.63 -2012-12-15 01:00:00,4599.9,0.0,41.28 -2012-12-15 02:00:00,4419.0,0.0,42.17 -2012-12-15 03:00:00,4324.0,0.0,40.24 -2012-12-15 04:00:00,4297.5,0.0,40.18 -2012-12-15 05:00:00,4362.6,0.0,38.78 -2012-12-15 06:00:00,4558.3,0.0,38.62 -2012-12-15 07:00:00,4784.4,0.0,38.48 -2012-12-15 08:00:00,5104.6,0.0,38.57 -2012-12-15 09:00:00,5373.6,0.0,41.92 -2012-12-15 10:00:00,5557.9,0.0,43.01 -2012-12-15 11:00:00,5620.0,0.0,45.02 -2012-12-15 12:00:00,5632.1,0.0,45.19 -2012-12-15 13:00:00,5591.2,0.0,45.28 -2012-12-15 14:00:00,5564.1,0.0,44.82 -2012-12-15 15:00:00,5572.4,0.0,43.38 -2012-12-15 16:00:00,5763.3,0.0,41.41 -2012-12-15 17:00:00,6041.4,0.0,38.53 -2012-12-15 18:00:00,6044.0,0.0,38.29 -2012-12-15 19:00:00,5961.0,0.0,38.39 -2012-12-15 20:00:00,5810.2,0.0,38.22 -2012-12-15 21:00:00,5653.9,0.0,35.92 -2012-12-15 22:00:00,5432.4,0.0,37.65 -2012-12-15 23:00:00,5132.3,0.0,36.01 -2012-12-16 00:00:00,4802.5,0.0,37.16 -2012-12-16 01:00:00,4533.5,0.0,44.12 -2012-12-16 02:00:00,4344.3,0.0,35.99 -2012-12-16 03:00:00,4238.9,0.0,38.35 -2012-12-16 04:00:00,4187.4,0.0,39.29 -2012-12-16 05:00:00,4226.9,0.0,39.86 -2012-12-16 06:00:00,4347.1,0.0,38.71 -2012-12-16 07:00:00,4504.3,0.0,40.29 -2012-12-16 08:00:00,4786.3,0.0,40.69 -2012-12-16 09:00:00,5112.6,0.0,40.94 -2012-12-16 10:00:00,5397.5,0.0,42.43 -2012-12-16 11:00:00,5559.2,0.0011,42.51 -2012-12-16 12:00:00,5654.1,0.0,42.58 -2012-12-16 13:00:00,5726.8,0.0031,45.43 -2012-12-16 14:00:00,5774.9,0.0063,45.37 -2012-12-16 15:00:00,5808.4,0.0052,44.43 -2012-12-16 16:00:00,5968.9,0.0072,43.79 -2012-12-16 17:00:00,6095.4,0.002,41.49 -2012-12-16 18:00:00,6098.1,0.0189,41.23 -2012-12-16 19:00:00,6020.4,0.01,41.42 -2012-12-16 20:00:00,5897.8,0.002,41.33 -2012-12-16 21:00:00,5734.9,0.0206,42.28 -2012-12-16 22:00:00,5429.1,0.0137,43.6 -2012-12-16 23:00:00,5058.4,0.0389,43.6 -2012-12-17 00:00:00,4703.4,0.0476,44.41 -2012-12-17 01:00:00,4452.0,0.0219,44.01 -2012-12-17 02:00:00,4296.3,0.0163,43.82 -2012-12-17 03:00:00,4236.1,0.0259,44.39 -2012-12-17 04:00:00,4273.0,0.0233,44.07 -2012-12-17 05:00:00,4535.8,0.0069,44.23 -2012-12-17 06:00:00,5135.5,0.0344,44.15 -2012-12-17 07:00:00,5732.4,0.0306,44.21 -2012-12-17 08:00:00,6135.8,0.0344,45.3 -2012-12-17 09:00:00,6407.7,0.0069,45.39 -2012-12-17 10:00:00,6525.4,0.0,45.48 -2012-12-17 11:00:00,6574.0,0.0,45.9 -2012-12-17 12:00:00,6598.2,0.0,46.07 -2012-12-17 13:00:00,6631.3,0.0,46.88 -2012-12-17 14:00:00,6633.7,0.0,46.88 -2012-12-17 15:00:00,6683.6,0.0,42.29 -2012-12-17 16:00:00,6874.2,0.0069,42.46 -2012-12-17 17:00:00,6985.7,0.0,45.97 -2012-12-17 18:00:00,6792.4,0.0,46.0 -2012-12-17 19:00:00,6611.1,0.0,43.13 -2012-12-17 20:00:00,6407.0,0.0011,47.24 -2012-12-17 21:00:00,6150.0,0.0069,42.55 -2012-12-17 22:00:00,5761.3,0.0031,47.21 -2012-12-17 23:00:00,5269.6,0.0115,43.38 -2012-12-18 00:00:00,4820.4,0.0113,47.66 -2012-12-18 01:00:00,4539.3,0.0371,43.81 -2012-12-18 02:00:00,4370.4,0.0603,44.57 -2012-12-18 03:00:00,4306.1,0.0953,44.88 -2012-12-18 04:00:00,4344.2,0.1079,49.34 -2012-12-18 05:00:00,4575.9,0.0084,45.29 -2012-12-18 06:00:00,5140.1,0.0481,46.1 -2012-12-18 07:00:00,5736.2,0.0344,48.3 -2012-12-18 08:00:00,6126.7,0.0,48.3 -2012-12-18 09:00:00,6357.7,0.0069,47.01 -2012-12-18 10:00:00,6432.8,0.0069,50.24 -2012-12-18 11:00:00,6438.0,0.0,51.27 -2012-12-18 12:00:00,6425.6,0.0,50.76 -2012-12-18 13:00:00,6416.9,0.0,52.1 -2012-12-18 14:00:00,6404.4,0.0,52.69 -2012-12-18 15:00:00,6447.4,0.0,54.1 -2012-12-18 16:00:00,6640.5,0.0,50.9 -2012-12-18 17:00:00,6853.4,0.002,49.75 -2012-12-18 18:00:00,6709.2,0.0,49.09 -2012-12-18 19:00:00,6530.8,0.0,48.26 -2012-12-18 20:00:00,6316.6,0.0,47.02 -2012-12-18 21:00:00,6071.0,0.0,45.76 -2012-12-18 22:00:00,5707.3,0.0,45.43 -2012-12-18 23:00:00,5228.6,0.0,45.91 -2012-12-19 00:00:00,4771.6,0.0,45.72 -2012-12-19 01:00:00,4489.0,0.0,45.39 -2012-12-19 02:00:00,4335.9,0.0,44.55 -2012-12-19 03:00:00,4274.1,0.0,44.48 -2012-12-19 04:00:00,4305.2,0.0,43.24 -2012-12-19 05:00:00,4566.8,0.0,42.81 -2012-12-19 06:00:00,5163.9,0.0,42.81 -2012-12-19 07:00:00,5750.1,0.0,42.71 -2012-12-19 08:00:00,6102.4,0.0,42.71 -2012-12-19 09:00:00,6327.5,0.0,42.88 -2012-12-19 10:00:00,6426.1,0.0,43.36 -2012-12-19 11:00:00,6455.2,0.0,42.54 -2012-12-19 12:00:00,6442.1,0.0,45.29 -2012-12-19 13:00:00,6430.5,0.0,44.47 -2012-12-19 14:00:00,6403.9,0.0,45.88 -2012-12-19 15:00:00,6439.0,0.0,46.02 -2012-12-19 16:00:00,6645.4,0.0,44.55 -2012-12-19 17:00:00,6908.5,0.0069,43.76 -2012-12-19 18:00:00,6741.6,0.0,43.51 -2012-12-19 19:00:00,6577.1,0.0,42.1 -2012-12-19 20:00:00,6380.9,0.0,43.08 -2012-12-19 21:00:00,6126.5,0.0,41.67 -2012-12-19 22:00:00,5759.1,0.0,41.34 -2012-12-19 23:00:00,5280.8,0.0,41.09 -2012-12-20 00:00:00,4838.9,0.0,40.66 -2012-12-20 01:00:00,4562.9,0.0,39.33 -2012-12-20 02:00:00,4405.9,0.0,39.06 -2012-12-20 03:00:00,4341.0,0.0069,39.0 -2012-12-20 04:00:00,4372.1,0.0,38.4 -2012-12-20 05:00:00,4621.7,0.0,38.15 -2012-12-20 06:00:00,5194.3,0.0,37.7 -2012-12-20 07:00:00,5756.1,0.0,37.88 -2012-12-20 08:00:00,6086.5,0.0,37.97 -2012-12-20 09:00:00,6350.6,0.0,39.54 -2012-12-20 10:00:00,6437.2,0.0,40.9 -2012-12-20 11:00:00,6490.0,0.0,41.66 -2012-12-20 12:00:00,6519.5,0.0,42.9 -2012-12-20 13:00:00,6497.2,0.0,43.06 -2012-12-20 14:00:00,6463.2,0.0,42.51 -2012-12-20 15:00:00,6524.9,0.0,42.66 -2012-12-20 16:00:00,6753.8,0.0,42.03 -2012-12-20 17:00:00,6934.4,0.0,40.65 -2012-12-20 18:00:00,6750.1,0.0,40.9 -2012-12-20 19:00:00,6567.3,0.0,42.96 -2012-12-20 20:00:00,6345.2,0.0,44.22 -2012-12-20 21:00:00,6099.6,0.0,42.73 -2012-12-20 22:00:00,5710.0,0.0,43.26 -2012-12-20 23:00:00,5250.3,0.0,45.08 -2012-12-21 00:00:00,4822.8,0.0201,44.98 -2012-12-21 01:00:00,4541.6,0.0122,46.55 -2012-12-21 02:00:00,4366.5,0.0054,47.33 -2012-12-21 03:00:00,4308.4,0.0106,47.82 -2012-12-21 04:00:00,4336.0,0.125,51.26 -2012-12-21 05:00:00,4570.9,0.0794,52.45 -2012-12-21 06:00:00,5103.5,0.0137,54.26 -2012-12-21 07:00:00,5690.3,0.1078,55.17 -2012-12-21 08:00:00,6089.3,0.0339,56.33 -2012-12-21 09:00:00,6339.9,0.0163,51.73 -2012-12-21 10:00:00,6372.4,0.0082,50.12 -2012-12-21 11:00:00,6395.3,0.0,50.83 -2012-12-21 12:00:00,6437.2,0.0069,50.73 -2012-12-21 13:00:00,6441.1,0.0069,50.07 -2012-12-21 14:00:00,6428.4,0.1856,48.5 -2012-12-21 15:00:00,6499.0,0.2131,48.16 -2012-12-21 16:00:00,6659.4,0.0,47.49 -2012-12-21 17:00:00,6761.9,0.0069,44.93 -2012-12-21 18:00:00,6586.9,0.0,43.78 -2012-12-21 19:00:00,6406.2,0.0,43.14 -2012-12-21 20:00:00,6208.5,0.0,42.97 -2012-12-21 21:00:00,5977.3,0.0069,41.63 -2012-12-21 22:00:00,5691.6,0.0,40.89 -2012-12-21 23:00:00,5312.9,0.0,37.76 -2012-12-22 00:00:00,4926.6,0.0,36.92 -2012-12-22 01:00:00,4649.8,0.0,36.59 -2012-12-22 02:00:00,4509.0,0.0,36.49 -2012-12-22 03:00:00,4388.4,0.0,40.61 -2012-12-22 04:00:00,4351.7,0.0,39.46 -2012-12-22 05:00:00,4419.0,0.0,36.76 -2012-12-22 06:00:00,4619.3,0.0,38.32 -2012-12-22 07:00:00,4846.3,0.0,38.48 -2012-12-22 08:00:00,5117.5,0.0,39.55 -2012-12-22 09:00:00,5399.0,0.0,38.33 -2012-12-22 10:00:00,5609.5,0.0069,38.48 -2012-12-22 11:00:00,5728.6,0.0069,38.65 -2012-12-22 12:00:00,5756.0,0.0,38.48 -2012-12-22 13:00:00,5724.1,0.0,38.57 -2012-12-22 14:00:00,5709.4,0.0,37.6 -2012-12-22 15:00:00,5704.8,0.0,37.69 -2012-12-22 16:00:00,5848.4,0.0,37.12 -2012-12-22 17:00:00,6117.3,0.0,37.1 -2012-12-22 18:00:00,6112.4,0.0,36.93 -2012-12-22 19:00:00,6036.0,0.0,35.71 -2012-12-22 20:00:00,5908.3,0.0,35.88 -2012-12-22 21:00:00,5759.4,0.0,35.88 -2012-12-22 22:00:00,5557.6,0.0,35.21 -2012-12-22 23:00:00,5251.4,0.0,35.52 -2012-12-23 00:00:00,4922.8,0.0,35.61 -2012-12-23 01:00:00,4659.3,0.0,35.52 -2012-12-23 02:00:00,4457.6,0.0,35.61 -2012-12-23 03:00:00,4355.7,0.0,35.78 -2012-12-23 04:00:00,4317.7,0.0,36.19 -2012-12-23 05:00:00,4365.2,0.0,36.76 -2012-12-23 06:00:00,4476.2,0.0,36.67 -2012-12-23 07:00:00,4607.1,0.0,36.13 -2012-12-23 08:00:00,4850.3,0.0,36.8 -2012-12-23 09:00:00,5093.3,0.0,37.17 -2012-12-23 10:00:00,5296.3,0.0,38.74 -2012-12-23 11:00:00,5384.8,0.0,40.08 -2012-12-23 12:00:00,5407.6,0.0,40.41 -2012-12-23 13:00:00,5399.8,0.0,39.43 -2012-12-23 14:00:00,5403.1,0.0,39.69 -2012-12-23 15:00:00,5415.1,0.0,40.47 -2012-12-23 16:00:00,5610.0,0.0,40.55 -2012-12-23 17:00:00,5917.7,0.0,40.27 -2012-12-23 18:00:00,5937.3,0.0,40.18 -2012-12-23 19:00:00,5879.5,0.0,41.04 -2012-12-23 20:00:00,5792.2,0.0,40.88 -2012-12-23 21:00:00,5684.3,0.0,39.46 -2012-12-23 22:00:00,5446.8,0.0,39.01 -2012-12-23 23:00:00,5144.3,0.0,39.37 -2012-12-24 00:00:00,4811.6,0.0,37.34 -2012-12-24 01:00:00,4581.7,0.0,36.47 -2012-12-24 02:00:00,4421.7,0.0,35.32 -2012-12-24 03:00:00,4347.6,0.0,34.71 -2012-12-24 04:00:00,4373.1,0.0,33.98 -2012-12-24 05:00:00,4565.9,0.0,33.12 -2012-12-24 06:00:00,4922.1,0.0,34.36 -2012-12-24 07:00:00,5279.3,0.0,33.02 -2012-12-24 08:00:00,5589.2,0.0,34.1 -2012-12-24 09:00:00,5847.1,0.0,37.68 -2012-12-24 10:00:00,5976.7,0.0,38.06 -2012-12-24 11:00:00,6031.2,0.0,38.32 -2012-12-24 12:00:00,6033.3,0.0,38.56 -2012-12-24 13:00:00,6003.0,0.0,38.74 -2012-12-24 14:00:00,5951.0,0.0,38.93 -2012-12-24 15:00:00,5951.7,0.0,38.93 -2012-12-24 16:00:00,6134.3,0.0,37.21 -2012-12-24 17:00:00,6342.2,0.0,37.05 -2012-12-24 18:00:00,6129.5,0.0,34.68 -2012-12-24 19:00:00,5964.5,0.0,36.17 -2012-12-24 20:00:00,5783.7,0.02,34.1 -2012-12-24 21:00:00,5591.8,0.0199,35.18 -2012-12-24 22:00:00,5426.7,0.0206,33.73 -2012-12-24 23:00:00,5171.5,0.0,36.02 -2012-12-25 00:00:00,4897.5,0.0011,36.36 -2012-12-25 01:00:00,4661.2,0.002,36.51 -2012-12-25 02:00:00,4484.8,0.0011,36.76 -2012-12-25 03:00:00,4383.6,0.0011,37.17 -2012-12-25 04:00:00,4348.7,0.0031,36.45 -2012-12-25 05:00:00,4384.5,0.0011,36.42 -2012-12-25 06:00:00,4512.9,0.002,40.12 -2012-12-25 07:00:00,4628.7,0.0,41.32 -2012-12-25 08:00:00,4802.3,0.0,35.6 -2012-12-25 09:00:00,4996.8,0.0,42.08 -2012-12-25 10:00:00,5134.8,0.0,42.59 -2012-12-25 11:00:00,5225.0,0.0069,43.21 -2012-12-25 12:00:00,5258.2,0.0481,40.77 -2012-12-25 13:00:00,5260.0,0.0206,40.52 -2012-12-25 14:00:00,5273.1,0.0069,41.8 -2012-12-25 15:00:00,5302.8,0.0069,41.66 -2012-12-25 16:00:00,5449.2,0.0,38.6 -2012-12-25 17:00:00,5624.2,0.0,38.27 -2012-12-25 18:00:00,5587.1,0.0,38.84 -2012-12-25 19:00:00,5531.4,0.0,38.67 -2012-12-25 20:00:00,5486.5,0.0,35.79 -2012-12-25 21:00:00,5415.4,0.0,36.25 -2012-12-25 22:00:00,5249.2,0.0,36.16 -2012-12-25 23:00:00,5001.2,0.0,35.16 -2012-12-26 00:00:00,4727.4,0.0,34.83 -2012-12-26 01:00:00,4521.3,0.0,35.21 -2012-12-26 02:00:00,4400.4,0.0,34.79 -2012-12-26 03:00:00,4346.7,0.0,34.53 -2012-12-26 04:00:00,4377.4,0.0,33.53 -2012-12-26 05:00:00,4581.6,0.0,33.46 -2012-12-26 06:00:00,5012.3,0.0,33.36 -2012-12-26 07:00:00,5431.4,0.0,32.07 -2012-12-26 08:00:00,5823.0,0.0,33.39 -2012-12-26 09:00:00,6147.5,0.0,34.13 -2012-12-26 10:00:00,6341.5,0.0,35.44 -2012-12-26 11:00:00,6430.3,0.0,36.3 -2012-12-26 12:00:00,6490.6,0.0,36.56 -2012-12-26 13:00:00,6532.1,0.0,36.81 -2012-12-26 14:00:00,6582.6,0.0,34.54 -2012-12-26 15:00:00,6644.0,0.008,33.85 -2012-12-26 16:00:00,6800.6,0.0626,32.8 -2012-12-26 17:00:00,6927.7,0.0752,33.39 -2012-12-26 18:00:00,6744.5,0.035,37.31 -2012-12-26 19:00:00,6573.8,0.0524,37.74 -2012-12-26 20:00:00,6360.5,0.0303,36.37 -2012-12-26 21:00:00,6142.8,0.1131,37.42 -2012-12-26 22:00:00,5791.3,0.0497,39.15 -2012-12-26 23:00:00,5378.3,0.0348,39.42 -2012-12-27 00:00:00,4962.2,0.0729,39.66 -2012-12-27 01:00:00,4704.3,0.109,41.89 -2012-12-27 02:00:00,4539.6,0.0261,43.28 -2012-12-27 03:00:00,4470.9,0.0445,39.15 -2012-12-27 04:00:00,4480.8,0.069,38.51 -2012-12-27 05:00:00,4676.0,0.0453,44.51 -2012-12-27 06:00:00,5069.1,0.0395,44.78 -2012-12-27 07:00:00,5496.2,0.0,45.47 -2012-12-27 08:00:00,5905.3,0.0,38.48 -2012-12-27 09:00:00,6209.0,0.1444,46.25 -2012-12-27 10:00:00,6388.5,0.0089,36.49 -2012-12-27 11:00:00,6464.9,0.0206,44.63 -2012-12-27 12:00:00,6459.8,0.0137,38.36 -2012-12-27 13:00:00,6486.9,0.0,44.14 -2012-12-27 14:00:00,6463.9,0.0206,43.89 -2012-12-27 15:00:00,6469.9,0.0,43.82 -2012-12-27 16:00:00,6662.0,0.0,42.24 -2012-12-27 17:00:00,6840.1,0.0,41.81 -2012-12-27 18:00:00,6691.8,0.0,34.67 -2012-12-27 19:00:00,6547.4,0.0,38.26 -2012-12-27 20:00:00,6374.1,0.0137,35.44 -2012-12-27 21:00:00,6144.8,0.0137,31.31 -2012-12-27 22:00:00,5827.7,0.0,32.96 -2012-12-27 23:00:00,5438.2,0.0,32.94 -2012-12-28 00:00:00,5056.4,0.0,32.87 -2012-12-28 01:00:00,4796.2,0.0,32.87 -2012-12-28 02:00:00,4633.5,0.0,33.03 -2012-12-28 03:00:00,4547.8,0.0,33.06 -2012-12-28 04:00:00,4549.6,0.0,32.48 -2012-12-28 05:00:00,4742.6,0.0,31.91 -2012-12-28 06:00:00,5160.1,0.0,30.76 -2012-12-28 07:00:00,5575.9,0.0,30.76 -2012-12-28 08:00:00,5949.5,0.0,30.83 -2012-12-28 09:00:00,6226.5,0.0,32.33 -2012-12-28 10:00:00,6376.8,0.0,32.75 -2012-12-28 11:00:00,6435.0,0.0,34.33 -2012-12-28 12:00:00,6434.0,0.0,36.0 -2012-12-28 13:00:00,6417.8,0.0,36.6 -2012-12-28 14:00:00,6394.0,0.0,37.0 -2012-12-28 15:00:00,6388.8,0.0,37.18 -2012-12-28 16:00:00,6523.8,0.0,36.43 -2012-12-28 17:00:00,6756.9,0.0,34.77 -2012-12-28 18:00:00,6623.2,0.0,33.25 -2012-12-28 19:00:00,6443.9,0.0,33.98 -2012-12-28 20:00:00,6242.4,0.0,33.82 -2012-12-28 21:00:00,6047.8,0.0,34.45 -2012-12-28 22:00:00,5780.4,0.0,33.39 -2012-12-28 23:00:00,5444.3,0.0,33.2 -2012-12-29 00:00:00,5080.7,0.0,31.46 -2012-12-29 01:00:00,4814.5,0.0,31.73 -2012-12-29 02:00:00,4632.2,0.0,29.43 -2012-12-29 03:00:00,4520.9,0.0,29.59 -2012-12-29 04:00:00,4494.3,0.0,27.97 -2012-12-29 05:00:00,4544.9,0.0,29.52 -2012-12-29 06:00:00,4701.1,0.0,30.87 -2012-12-29 07:00:00,4895.8,0.0,32.28 -2012-12-29 08:00:00,5162.4,0.0,32.28 -2012-12-29 09:00:00,5466.5,0.0,33.49 -2012-12-29 10:00:00,5699.4,0.0,34.42 -2012-12-29 11:00:00,5860.5,0.0,36.0 -2012-12-29 12:00:00,5955.7,0.0161,33.21 -2012-12-29 13:00:00,5961.7,0.0572,33.34 -2012-12-29 14:00:00,5972.5,0.0577,39.35 -2012-12-29 15:00:00,5996.9,0.0041,38.54 -2012-12-29 16:00:00,6138.3,0.0172,39.39 -2012-12-29 17:00:00,6278.1,0.0983,32.64 -2012-12-29 18:00:00,6268.9,0.1386,32.64 -2012-12-29 19:00:00,6176.9,0.0962,39.63 -2012-12-29 20:00:00,6025.6,0.0962,31.57 -2012-12-29 21:00:00,5866.6,0.0719,31.59 -2012-12-29 22:00:00,5653.4,0.0275,34.92 -2012-12-29 23:00:00,5368.5,0.0275,34.77 -2012-12-30 00:00:00,5042.9,0.0344,32.69 -2012-12-30 01:00:00,4801.0,0.0069,34.97 -2012-12-30 02:00:00,4632.9,0.0069,34.87 -2012-12-30 03:00:00,4531.7,0.0,33.72 -2012-12-30 04:00:00,4497.1,0.0,32.89 -2012-12-30 05:00:00,4535.4,0.0,31.82 -2012-12-30 06:00:00,4640.1,0.0,31.72 -2012-12-30 07:00:00,4755.7,0.0,32.54 -2012-12-30 08:00:00,4987.0,0.0,31.75 -2012-12-30 09:00:00,5228.8,0.0,30.76 -2012-12-30 10:00:00,5467.2,0.0,31.6 -2012-12-30 11:00:00,5597.8,0.0,32.51 -2012-12-30 12:00:00,5656.2,0.0,32.86 -2012-12-30 13:00:00,5675.7,0.0,33.12 -2012-12-30 14:00:00,5690.0,0.0,34.51 -2012-12-30 15:00:00,5719.6,0.0,33.36 -2012-12-30 16:00:00,5894.0,0.0,33.1 -2012-12-30 17:00:00,6211.3,0.0,31.19 -2012-12-30 18:00:00,6261.8,0.0,31.1 -2012-12-30 19:00:00,6210.9,0.0,35.32 -2012-12-30 20:00:00,6118.6,0.0,37.57 -2012-12-30 21:00:00,5959.0,0.0,38.89 -2012-12-30 22:00:00,5745.7,0.0,39.15 -2012-12-30 23:00:00,5429.7,0.0,39.15 -2012-12-31 00:00:00,5114.0,0.0,39.38 -2012-12-31 01:00:00,4862.7,0.0,38.24 -2012-12-31 02:00:00,4688.9,0.0,38.07 -2012-12-31 03:00:00,4596.7,0.0,39.32 -2012-12-31 04:00:00,4600.3,0.0,39.48 -2012-12-31 05:00:00,4792.6,0.0,39.48 -2012-12-31 06:00:00,5120.4,0.0,38.25 -2012-12-31 07:00:00,5502.6,0.0,38.09 -2012-12-31 08:00:00,5836.5,0.0,39.24 -2012-12-31 09:00:00,6105.9,0.0,39.24 -2012-12-31 10:00:00,6258.8,0.0,39.91 -2012-12-31 11:00:00,6314.3,0.0,39.34 -2012-12-31 12:00:00,6326.9,0.0,38.73 -2012-12-31 13:00:00,6293.9,0.0,37.53 -2012-12-31 14:00:00,6274.7,0.0,37.34 -2012-12-31 15:00:00,6296.6,0.0,37.6 -2012-12-31 16:00:00,6458.3,0.0,36.51 -2012-12-31 17:00:00,6714.3,0.0,36.67 -2012-12-31 18:00:00,6567.8,0.0,34.67 -2012-12-31 19:00:00,6348.5,0.0,30.63 -2012-12-31 20:00:00,6101.4,0.0,31.28 -2012-12-31 21:00:00,5846.7,0.0,30.77 -2012-12-31 22:00:00,5578.9,0.0,29.5 -2012-12-31 23:00:00,5337.8,0.0,28.24 -2013-01-01 00:00:00,5107.0,0.0,38.09 -2013-01-01 01:00:00,4916.5,0.0,39.24 -2013-01-01 02:00:00,4715.9,0.0,39.24 -2013-01-01 03:00:00,4551.0,0.0,39.91 -2013-01-01 04:00:00,4471.6,0.0,39.34 -2013-01-01 05:00:00,4489.0,0.0,38.73 -2013-01-01 06:00:00,4572.2,0.0,37.53 -2013-01-01 07:00:00,4643.3,0.0,37.34 -2013-01-01 08:00:00,4769.7,0.0,37.6 -2013-01-01 09:00:00,4965.0,0.0,36.51 -2013-01-01 10:00:00,5175.2,0.0,36.67 -2013-01-01 11:00:00,5368.1,0.0,34.67 -2013-01-01 12:00:00,5534.6,0.0,30.63 -2013-01-01 13:00:00,5627.6,0.0,31.28 -2013-01-01 14:00:00,5640.6,0.0,30.77 -2013-01-01 15:00:00,5639.2,0.0,29.5 -2013-01-01 16:00:00,5792.6,0.0,28.24 -2013-01-01 17:00:00,6082.8,0.0,27.24 -2013-01-01 18:00:00,6120.0,0.0,26.82 -2013-01-01 19:00:00,6078.2,0.0,26.82 -2013-01-01 20:00:00,5986.4,0.0,25.24 -2013-01-01 21:00:00,5842.8,0.0,24.24 -2013-01-01 22:00:00,5599.6,0.0,23.4 -2013-01-01 23:00:00,5249.6,0.0,22.19 -2013-01-02 00:00:00,4928.8,0.0,27.24 -2013-01-02 01:00:00,4722.9,0.0,26.82 -2013-01-02 02:00:00,4584.5,0.0,26.82 -2013-01-02 03:00:00,4518.5,0.0,25.24 -2013-01-02 04:00:00,4567.2,0.0,24.24 -2013-01-02 05:00:00,4781.1,0.0,23.4 -2013-01-02 06:00:00,5351.8,0.0,22.19 -2013-01-02 07:00:00,5936.7,0.0,22.03 -2013-01-02 08:00:00,6314.4,0.0,23.24 -2013-01-02 09:00:00,6572.7,0.0,24.84 -2013-01-02 10:00:00,6692.3,0.0,26.68 -2013-01-02 11:00:00,6751.0,0.0,28.89 -2013-01-02 12:00:00,6772.3,0.0,29.6 -2013-01-02 13:00:00,6754.0,0.0,31.41 -2013-01-02 14:00:00,6717.0,0.0,30.78 -2013-01-02 15:00:00,6730.6,0.0,31.45 -2013-01-02 16:00:00,6882.8,0.0,31.19 -2013-01-02 17:00:00,7165.2,0.0,31.0 -2013-01-02 18:00:00,6999.5,0.0,30.76 -2013-01-02 19:00:00,6814.5,0.0,27.8 -2013-01-02 20:00:00,6608.8,0.0,29.28 -2013-01-02 21:00:00,6346.2,0.0,29.19 -2013-01-02 22:00:00,5965.6,0.0,28.52 -2013-01-02 23:00:00,5507.3,0.0,28.52 -2013-01-03 00:00:00,5077.8,0.0,27.2 -2013-01-03 01:00:00,4823.1,0.0,25.8 -2013-01-03 02:00:00,4662.0,0.0,24.55 -2013-01-03 03:00:00,4597.2,0.0,24.32 -2013-01-03 04:00:00,4627.8,0.0,22.91 -2013-01-03 05:00:00,4878.0,0.0,22.08 -2013-01-03 06:00:00,5445.5,0.0,21.65 -2013-01-03 07:00:00,5985.9,0.0,21.32 -2013-01-03 08:00:00,6343.1,0.0,21.16 -2013-01-03 09:00:00,6592.5,0.0,21.0 -2013-01-03 10:00:00,6682.0,0.0,21.16 -2013-01-03 11:00:00,6724.9,0.0,22.18 -2013-01-03 12:00:00,6731.3,0.0,24.34 -2013-01-03 13:00:00,6709.0,0.0,25.12 -2013-01-03 14:00:00,6672.6,0.0,25.61 -2013-01-03 15:00:00,6689.8,0.0,28.24 -2013-01-03 16:00:00,6858.1,0.0,27.83 -2013-01-03 17:00:00,7187.8,0.0,25.93 -2013-01-03 18:00:00,6967.7,0.0,26.91 -2013-01-03 19:00:00,6791.7,0.0,34.85 -2013-01-03 20:00:00,6574.4,0.0,28.13 -2013-01-03 21:00:00,6311.1,0.0,29.44 -2013-01-03 22:00:00,5950.1,0.0,29.28 -2013-01-03 23:00:00,5469.7,0.0,30.11 -2013-01-04 00:00:00,5066.4,0.0,29.6 -2013-01-04 01:00:00,4819.4,0.0,29.79 -2013-01-04 02:00:00,4654.5,0.0,29.58 -2013-01-04 03:00:00,4585.5,0.0,30.15 -2013-01-04 04:00:00,4610.1,0.0,30.09 -2013-01-04 05:00:00,4842.4,0.0,30.27 -2013-01-04 06:00:00,5399.9,0.0,30.51 -2013-01-04 07:00:00,5939.8,0.0,30.8 -2013-01-04 08:00:00,6329.9,0.0,32.1 -2013-01-04 09:00:00,6567.6,0.0,35.48 -2013-01-04 10:00:00,6649.6,0.0,36.15 -2013-01-04 11:00:00,6697.2,0.0,36.51 -2013-01-04 12:00:00,6700.1,0.0,37.72 -2013-01-04 13:00:00,6661.9,0.0,36.84 -2013-01-04 14:00:00,6615.2,0.0,37.26 -2013-01-04 15:00:00,6621.1,0.0,37.26 -2013-01-04 16:00:00,6757.1,0.0,37.81 -2013-01-04 17:00:00,6974.3,0.0,36.91 -2013-01-04 18:00:00,6796.4,0.0,36.98 -2013-01-04 19:00:00,6608.4,0.0,35.16 -2013-01-04 20:00:00,6402.2,0.0,36.89 -2013-01-04 21:00:00,6160.4,0.0,36.65 -2013-01-04 22:00:00,5856.6,0.0,36.39 -2013-01-04 23:00:00,5473.4,0.0,36.3 -2013-01-05 00:00:00,5112.4,0.0,35.54 -2013-01-05 01:00:00,4860.1,0.0,35.63 -2013-01-05 02:00:00,4682.6,0.0,34.31 -2013-01-05 03:00:00,4587.2,0.0,34.15 -2013-01-05 04:00:00,4558.2,0.0,33.89 -2013-01-05 05:00:00,4617.6,0.0,33.79 -2013-01-05 06:00:00,4800.6,0.0,33.88 -2013-01-05 07:00:00,5004.7,0.0,35.03 -2013-01-05 08:00:00,5254.0,0.0,35.51 -2013-01-05 09:00:00,5491.7,0.0,37.28 -2013-01-05 10:00:00,5698.5,0.0,39.39 -2013-01-05 11:00:00,5787.7,0.0,41.56 -2013-01-05 12:00:00,5798.4,0.0,41.92 -2013-01-05 13:00:00,5779.8,0.0,42.34 -2013-01-05 14:00:00,5663.9,0.0,42.67 -2013-01-05 15:00:00,5690.9,0.0,41.78 -2013-01-05 16:00:00,5848.7,0.0,40.64 -2013-01-05 17:00:00,6117.1,0.0,38.12 -2013-01-05 18:00:00,6130.4,0.0,37.54 -2013-01-05 19:00:00,6051.9,0.0,37.59 -2013-01-05 20:00:00,5926.5,0.0,35.32 -2013-01-05 21:00:00,5767.6,0.0,33.12 -2013-01-05 22:00:00,5554.7,0.0,30.48 -2013-01-05 23:00:00,5271.2,0.0,32.69 -2013-01-06 00:00:00,4957.5,0.0,30.74 -2013-01-06 01:00:00,4701.4,0.0,31.03 -2013-01-06 02:00:00,4526.6,0.0,31.34 -2013-01-06 03:00:00,4428.1,0.0,32.25 -2013-01-06 04:00:00,4394.9,0.0,34.24 -2013-01-06 05:00:00,4423.3,0.0,35.45 -2013-01-06 06:00:00,4521.7,0.0,35.97 -2013-01-06 07:00:00,4667.0,0.0,37.28 -2013-01-06 08:00:00,4915.1,0.0,36.3 -2013-01-06 09:00:00,5168.2,0.0,37.6 -2013-01-06 10:00:00,5353.7,0.0,38.97 -2013-01-06 11:00:00,5469.9,0.0,40.97 -2013-01-06 12:00:00,5513.8,0.0,40.75 -2013-01-06 13:00:00,5519.1,0.0,42.66 -2013-01-06 14:00:00,5506.6,0.0,44.6 -2013-01-06 15:00:00,5520.3,0.0,44.04 -2013-01-06 16:00:00,5685.1,0.0,42.96 -2013-01-06 17:00:00,6012.1,0.0,41.63 -2013-01-06 18:00:00,6046.7,0.0,40.13 -2013-01-06 19:00:00,5973.0,0.0,35.94 -2013-01-06 20:00:00,5849.2,0.0,39.13 -2013-01-06 21:00:00,5647.8,0.0,39.06 -2013-01-06 22:00:00,5382.4,0.0,38.4 -2013-01-06 23:00:00,5011.5,0.0,37.46 -2013-01-07 00:00:00,4684.5,0.0,38.54 -2013-01-07 01:00:00,4475.0,0.0,35.8 -2013-01-07 02:00:00,4346.9,0.0,34.31 -2013-01-07 03:00:00,4292.0,0.0,37.34 -2013-01-07 04:00:00,4358.6,0.0,36.67 -2013-01-07 05:00:00,4610.0,0.0,37.24 -2013-01-07 06:00:00,5201.3,0.0,37.15 -2013-01-07 07:00:00,5762.0,0.0,36.98 -2013-01-07 08:00:00,6107.0,0.0,37.33 -2013-01-07 09:00:00,6328.4,0.0,38.7 -2013-01-07 10:00:00,6439.0,0.0,40.21 -2013-01-07 11:00:00,6476.7,0.0,41.78 -2013-01-07 12:00:00,6467.8,0.0,41.97 -2013-01-07 13:00:00,6458.1,0.0,42.4 -2013-01-07 14:00:00,6426.9,0.0,41.39 -2013-01-07 15:00:00,6434.6,0.0,41.48 -2013-01-07 16:00:00,6560.8,0.0,40.48 -2013-01-07 17:00:00,6803.4,0.0,37.75 -2013-01-07 18:00:00,6661.2,0.0,35.85 -2013-01-07 19:00:00,6511.9,0.0,40.47 -2013-01-07 20:00:00,6284.8,0.0,32.51 -2013-01-07 21:00:00,6043.1,0.0,31.82 -2013-01-07 22:00:00,5662.4,0.0,33.05 -2013-01-07 23:00:00,5192.2,0.0,33.61 -2013-01-08 00:00:00,4780.7,0.0,36.09 -2013-01-08 01:00:00,4545.1,0.0,36.68 -2013-01-08 02:00:00,4399.5,0.0,36.58 -2013-01-08 03:00:00,4366.0,0.0,36.34 -2013-01-08 04:00:00,4395.3,0.0,36.66 -2013-01-08 05:00:00,4657.2,0.0,36.0 -2013-01-08 06:00:00,5233.8,0.0,37.05 -2013-01-08 07:00:00,5794.5,0.0,38.17 -2013-01-08 08:00:00,6130.5,0.0,39.86 -2013-01-08 09:00:00,6345.5,0.0,41.92 -2013-01-08 10:00:00,6406.7,0.0,42.88 -2013-01-08 11:00:00,6433.9,0.0,43.82 -2013-01-08 12:00:00,6422.6,0.0,45.06 -2013-01-08 13:00:00,6411.0,0.0,47.15 -2013-01-08 14:00:00,6398.9,0.0,46.42 -2013-01-08 15:00:00,6388.4,0.0,46.69 -2013-01-08 16:00:00,6528.8,0.0,45.54 -2013-01-08 17:00:00,6781.7,0.0,44.59 -2013-01-08 18:00:00,6653.5,0.0,43.02 -2013-01-08 19:00:00,6462.3,0.0,44.79 -2013-01-08 20:00:00,6246.4,0.0,43.02 -2013-01-08 21:00:00,5971.3,0.0,43.14 -2013-01-08 22:00:00,5590.3,0.0,40.48 -2013-01-08 23:00:00,5127.5,0.0,39.7 -2013-01-09 00:00:00,4716.9,0.0,39.54 -2013-01-09 01:00:00,4476.5,0.0,38.7 -2013-01-09 02:00:00,4337.3,0.0,37.44 -2013-01-09 03:00:00,4282.9,0.0,33.16 -2013-01-09 04:00:00,4314.2,0.0,34.5 -2013-01-09 05:00:00,4579.5,0.0,33.21 -2013-01-09 06:00:00,5160.8,0.0,36.24 -2013-01-09 07:00:00,5727.4,0.0,32.83 -2013-01-09 08:00:00,6076.8,0.0,35.76 -2013-01-09 09:00:00,6283.3,0.0,38.16 -2013-01-09 10:00:00,6347.3,0.0,42.73 -2013-01-09 11:00:00,6394.2,0.0,44.68 -2013-01-09 12:00:00,6451.1,0.0,45.06 -2013-01-09 13:00:00,6466.4,0.0,45.48 -2013-01-09 14:00:00,6491.3,0.0,45.6 -2013-01-09 15:00:00,6553.9,0.0,45.77 -2013-01-09 16:00:00,6658.4,0.0,44.95 -2013-01-09 17:00:00,6831.2,0.0,45.4 -2013-01-09 18:00:00,6632.9,0.0,46.41 -2013-01-09 19:00:00,6437.3,0.0,41.3 -2013-01-09 20:00:00,6231.9,0.0,46.98 -2013-01-09 21:00:00,5960.7,0.0,46.82 -2013-01-09 22:00:00,5580.9,0.0,47.29 -2013-01-09 23:00:00,5137.7,0.0,46.55 -2013-01-10 00:00:00,4719.1,0.0,45.74 -2013-01-10 01:00:00,4463.8,0.0,45.32 -2013-01-10 02:00:00,4322.6,0.0,45.07 -2013-01-10 03:00:00,4274.3,0.0,43.8 -2013-01-10 04:00:00,4305.4,0.0,43.72 -2013-01-10 05:00:00,4566.4,0.0,43.09 -2013-01-10 06:00:00,5152.6,0.0,41.58 -2013-01-10 07:00:00,5714.0,0.0,40.1 -2013-01-10 08:00:00,6078.6,0.0,41.24 -2013-01-10 09:00:00,6263.0,0.0,42.84 -2013-01-10 10:00:00,6358.6,0.0,43.84 -2013-01-10 11:00:00,6390.4,0.0,44.51 -2013-01-10 12:00:00,6388.9,0.0,44.87 -2013-01-10 13:00:00,6387.2,0.0,45.38 -2013-01-10 14:00:00,6364.8,0.0,46.36 -2013-01-10 15:00:00,6365.1,0.0,46.05 -2013-01-10 16:00:00,6495.2,0.0,45.31 -2013-01-10 17:00:00,6776.4,0.0,44.13 -2013-01-10 18:00:00,6593.6,0.0,41.4 -2013-01-10 19:00:00,6432.4,0.0,41.18 -2013-01-10 20:00:00,6221.0,0.0,39.83 -2013-01-10 21:00:00,5960.8,0.0,39.67 -2013-01-10 22:00:00,5597.9,0.0,39.49 -2013-01-10 23:00:00,5148.9,0.0,38.42 -2013-01-11 00:00:00,4751.7,0.0,38.22 -2013-01-11 01:00:00,4505.1,0.0,35.9 -2013-01-11 02:00:00,4362.6,0.0,36.17 -2013-01-11 03:00:00,4306.5,0.0,35.66 -2013-01-11 04:00:00,4341.6,0.0,35.41 -2013-01-11 05:00:00,4588.6,0.0,35.17 -2013-01-11 06:00:00,5185.1,0.0,34.44 -2013-01-11 07:00:00,5744.6,0.0,35.58 -2013-01-11 08:00:00,6096.8,0.0,36.74 -2013-01-11 09:00:00,6361.2,0.0,39.04 -2013-01-11 10:00:00,6467.5,0.0,41.04 -2013-01-11 11:00:00,6492.2,0.0,42.1 -2013-01-11 12:00:00,6495.4,0.0,43.5 -2013-01-11 13:00:00,6514.4,0.0035,42.53 -2013-01-11 14:00:00,6487.1,0.0,42.63 -2013-01-11 15:00:00,6479.4,0.0,42.49 -2013-01-11 16:00:00,6664.0,0.0065,40.77 -2013-01-11 17:00:00,6780.2,0.0065,40.36 -2013-01-11 18:00:00,6555.0,0.0331,39.93 -2013-01-11 19:00:00,6358.6,0.0673,44.63 -2013-01-11 20:00:00,6133.2,0.0358,41.13 -2013-01-11 21:00:00,5894.3,0.0115,40.56 -2013-01-11 22:00:00,5574.9,0.0344,41.32 -2013-01-11 23:00:00,5196.9,0.018,42.46 -2013-01-12 00:00:00,4826.1,0.0575,42.18 -2013-01-12 01:00:00,4557.3,0.0041,42.32 -2013-01-12 02:00:00,4389.1,0.01,42.49 -2013-01-12 03:00:00,4288.9,0.012,41.04 -2013-01-12 04:00:00,4250.7,0.0069,42.38 -2013-01-12 05:00:00,4316.2,0.0,42.45 -2013-01-12 06:00:00,4504.8,0.0,42.45 -2013-01-12 07:00:00,4728.9,0.0,43.6 -2013-01-12 08:00:00,5034.2,0.0,43.6 -2013-01-12 09:00:00,5341.1,0.0,43.61 -2013-01-12 10:00:00,5551.4,0.0,44.28 -2013-01-12 11:00:00,5661.3,0.0069,44.95 -2013-01-12 12:00:00,5673.1,0.0069,45.15 -2013-01-12 13:00:00,5659.0,0.0,45.22 -2013-01-12 14:00:00,5623.3,0.0,45.07 -2013-01-12 15:00:00,5649.4,0.0,45.14 -2013-01-12 16:00:00,5755.1,0.0,45.55 -2013-01-12 17:00:00,5954.4,0.0,45.04 -2013-01-12 18:00:00,5956.2,0.0,45.19 -2013-01-12 19:00:00,5861.1,0.0,45.1 -2013-01-12 20:00:00,5710.0,0.0,45.0 -2013-01-12 21:00:00,5551.5,0.0,44.19 -2013-01-12 22:00:00,5342.2,0.0,44.76 -2013-01-12 23:00:00,5052.9,0.0,44.76 -2013-01-13 00:00:00,4748.2,0.0,44.29 -2013-01-13 01:00:00,4494.9,0.0,44.19 -2013-01-13 02:00:00,4317.0,0.0,44.19 -2013-01-13 03:00:00,4220.8,0.0,44.29 -2013-01-13 04:00:00,4177.9,0.0,44.6 -2013-01-13 05:00:00,4218.7,0.0,44.6 -2013-01-13 06:00:00,4338.1,0.0,44.74 -2013-01-13 07:00:00,4463.7,0.0,44.33 -2013-01-13 08:00:00,4721.8,0.0,44.33 -2013-01-13 09:00:00,5012.0,0.0,44.34 -2013-01-13 10:00:00,5243.7,0.0,44.67 -2013-01-13 11:00:00,5384.6,0.0,44.84 -2013-01-13 12:00:00,5447.0,0.0,45.76 -2013-01-13 13:00:00,5484.5,0.0,45.67 -2013-01-13 14:00:00,5499.1,0.0,46.52 -2013-01-13 15:00:00,5543.0,0.0,46.52 -2013-01-13 16:00:00,5648.4,0.0,46.45 -2013-01-13 17:00:00,5907.0,0.0,46.28 -2013-01-13 18:00:00,5907.8,0.0,46.69 -2013-01-13 19:00:00,5843.4,0.0,47.69 -2013-01-13 20:00:00,5709.3,0.0,46.72 -2013-01-13 21:00:00,5529.5,0.0,46.82 -2013-01-13 22:00:00,5252.4,0.0035,46.24 -2013-01-13 23:00:00,4884.0,0.0,45.63 -2013-01-14 00:00:00,4550.9,0.0,46.61 -2013-01-14 01:00:00,4331.6,0.0,46.72 -2013-01-14 02:00:00,4199.7,0.0,47.03 -2013-01-14 03:00:00,4147.6,0.0,46.83 -2013-01-14 04:00:00,4184.6,0.0,48.59 -2013-01-14 05:00:00,4440.9,0.0,48.07 -2013-01-14 06:00:00,5035.7,0.0065,48.64 -2013-01-14 07:00:00,5644.8,0.0,47.05 -2013-01-14 08:00:00,5996.0,0.0,47.44 -2013-01-14 09:00:00,6229.3,0.0,48.09 -2013-01-14 10:00:00,6293.6,0.0,51.05 -2013-01-14 11:00:00,6328.5,0.0,50.14 -2013-01-14 12:00:00,6348.9,0.0,50.97 -2013-01-14 13:00:00,6361.3,0.0,52.94 -2013-01-14 14:00:00,6337.0,0.0,50.46 -2013-01-14 15:00:00,6389.5,0.0,49.07 -2013-01-14 16:00:00,6538.1,0.0,49.19 -2013-01-14 17:00:00,6701.3,0.0,48.26 -2013-01-14 18:00:00,6530.8,0.0,47.9 -2013-01-14 19:00:00,6344.8,0.0,44.76 -2013-01-14 20:00:00,6112.5,0.0,47.94 -2013-01-14 21:00:00,5863.0,0.0,47.34 -2013-01-14 22:00:00,5498.5,0.0104,45.67 -2013-01-14 23:00:00,5049.8,0.0335,43.64 -2013-01-15 00:00:00,4549.9,0.0041,42.48 -2013-01-15 01:00:00,4419.0,0.0011,41.24 -2013-01-15 02:00:00,4287.2,0.0172,39.76 -2013-01-15 03:00:00,4240.6,0.0263,39.21 -2013-01-15 04:00:00,4277.2,0.0137,39.0 -2013-01-15 05:00:00,4537.4,0.0206,37.92 -2013-01-15 06:00:00,5122.9,0.0481,37.99 -2013-01-15 07:00:00,5741.7,0.0069,37.99 -2013-01-15 08:00:00,6113.9,0.0,38.15 -2013-01-15 09:00:00,6369.7,0.0,39.21 -2013-01-15 10:00:00,6462.6,0.0,40.36 -2013-01-15 11:00:00,6520.9,0.0,40.62 -2013-01-15 12:00:00,6530.0,0.0,39.56 -2013-01-15 13:00:00,6548.9,0.0,39.72 -2013-01-15 14:00:00,6547.4,0.0,40.96 -2013-01-15 15:00:00,6567.4,0.0,40.96 -2013-01-15 16:00:00,6684.7,0.0069,40.08 -2013-01-15 17:00:00,6861.1,0.0,40.08 -2013-01-15 18:00:00,6694.2,0.0,39.99 -2013-01-15 19:00:00,6502.5,0.0,38.84 -2013-01-15 20:00:00,6282.5,0.0,38.74 -2013-01-15 21:00:00,6009.2,0.0,39.82 -2013-01-15 22:00:00,5634.7,0.0,39.25 -2013-01-15 23:00:00,5196.3,0.01,38.25 -2013-01-16 00:00:00,4788.9,0.02,37.82 -2013-01-16 01:00:00,4567.1,0.0147,37.21 -2013-01-16 02:00:00,4437.6,0.0225,37.7 -2013-01-16 03:00:00,4384.5,0.0388,37.87 -2013-01-16 04:00:00,4423.6,0.0384,38.85 -2013-01-16 05:00:00,4680.2,0.0393,38.92 -2013-01-16 06:00:00,5254.7,0.0667,38.92 -2013-01-16 07:00:00,5865.6,0.0866,39.02 -2013-01-16 08:00:00,6232.2,0.0434,39.18 -2013-01-16 09:00:00,6506.9,0.1289,38.21 -2013-01-16 10:00:00,6625.8,0.0502,38.27 -2013-01-16 11:00:00,6704.8,0.0158,38.26 -2013-01-16 12:00:00,6717.9,0.01,38.1 -2013-01-16 13:00:00,6727.0,0.002,40.48 -2013-01-16 14:00:00,6736.8,0.0,40.75 -2013-01-16 15:00:00,6750.0,0.0137,40.82 -2013-01-16 16:00:00,6875.0,0.0,40.25 -2013-01-16 17:00:00,6984.8,0.0,41.18 -2013-01-16 18:00:00,6786.6,0.0,40.1 -2013-01-16 19:00:00,6584.9,0.0,37.06 -2013-01-16 20:00:00,6338.2,0.0,38.3 -2013-01-16 21:00:00,6059.9,0.0,38.27 -2013-01-16 22:00:00,5687.1,0.0,38.85 -2013-01-16 23:00:00,5220.5,0.0,38.36 -2013-01-17 00:00:00,4805.9,0.0,38.6 -2013-01-17 01:00:00,4551.8,0.0,38.7 -2013-01-17 02:00:00,4404.0,0.0,38.96 -2013-01-17 03:00:00,4337.9,0.0,39.24 -2013-01-17 04:00:00,4370.0,0.0,40.06 -2013-01-17 05:00:00,4619.5,0.0,39.21 -2013-01-17 06:00:00,5150.1,0.0,39.31 -2013-01-17 07:00:00,5767.0,0.0,38.0 -2013-01-17 08:00:00,6116.9,0.0,39.15 -2013-01-17 09:00:00,6364.9,0.0,38.0 -2013-01-17 10:00:00,6444.8,0.0,39.69 -2013-01-17 11:00:00,6481.6,0.0,40.84 -2013-01-17 12:00:00,6472.8,0.0,40.11 -2013-01-17 13:00:00,6470.5,0.0,40.7 -2013-01-17 14:00:00,6461.8,0.0,40.55 -2013-01-17 15:00:00,6531.3,0.0,40.55 -2013-01-17 16:00:00,6695.8,0.0,40.28 -2013-01-17 17:00:00,6859.7,0.0,40.12 -2013-01-17 18:00:00,6681.7,0.0,38.71 -2013-01-17 19:00:00,6478.2,0.0,26.55 -2013-01-17 20:00:00,6260.4,0.0,39.6 -2013-01-17 21:00:00,6005.1,0.0,39.24 -2013-01-17 22:00:00,5666.6,0.0,38.58 -2013-01-17 23:00:00,5229.0,0.0,36.28 -2013-01-18 00:00:00,4835.7,0.0,35.85 -2013-01-18 01:00:00,4607.1,0.0,31.98 -2013-01-18 02:00:00,4474.4,0.0,30.05 -2013-01-18 03:00:00,4426.7,0.0,29.55 -2013-01-18 04:00:00,4458.6,0.0069,28.86 -2013-01-18 05:00:00,4717.4,0.0,28.25 -2013-01-18 06:00:00,5301.4,0.0,27.93 -2013-01-18 07:00:00,5879.0,0.0,27.43 -2013-01-18 08:00:00,6248.8,0.0,26.68 -2013-01-18 09:00:00,6511.7,0.0,26.66 -2013-01-18 10:00:00,6611.0,0.0,25.61 -2013-01-18 11:00:00,6656.1,0.0,26.04 -2013-01-18 12:00:00,6655.7,0.0,25.06 -2013-01-18 13:00:00,6628.9,0.0,25.39 -2013-01-18 14:00:00,6586.1,0.0,26.87 -2013-01-18 15:00:00,6593.9,0.0,26.96 -2013-01-18 16:00:00,6680.1,0.0,27.06 -2013-01-18 17:00:00,6886.9,0.0,25.56 -2013-01-18 18:00:00,6753.2,0.0,24.95 -2013-01-18 19:00:00,6554.8,0.0,38.43 -2013-01-18 20:00:00,6296.7,0.0,22.75 -2013-01-18 21:00:00,6123.1,0.0,24.56 -2013-01-18 22:00:00,5798.5,0.0,24.66 -2013-01-18 23:00:00,5428.9,0.0,24.75 -2013-01-19 00:00:00,5073.9,0.0,23.84 -2013-01-19 01:00:00,4830.0,0.0,28.53 -2013-01-19 02:00:00,4660.4,0.0,30.22 -2013-01-19 03:00:00,4560.7,0.0,30.41 -2013-01-19 04:00:00,4514.4,0.0,32.37 -2013-01-19 05:00:00,4582.2,0.0,34.36 -2013-01-19 06:00:00,4753.3,0.0,34.99 -2013-01-19 07:00:00,4945.0,0.0,35.18 -2013-01-19 08:00:00,5252.7,0.0,36.76 -2013-01-19 09:00:00,5490.5,0.0,38.66 -2013-01-19 10:00:00,5679.4,0.0,40.28 -2013-01-19 11:00:00,5741.8,0.0,41.8 -2013-01-19 12:00:00,5721.8,0.0,44.34 -2013-01-19 13:00:00,5643.0,0.0,45.91 -2013-01-19 14:00:00,5594.8,0.0,46.76 -2013-01-19 15:00:00,5562.2,0.0,47.61 -2013-01-19 16:00:00,5615.3,0.0,47.37 -2013-01-19 17:00:00,5871.3,0.0,47.28 -2013-01-19 18:00:00,5920.0,0.0,46.47 -2013-01-19 19:00:00,5843.9,0.0,46.56 -2013-01-19 20:00:00,5710.7,0.0,44.66 -2013-01-19 21:00:00,5551.3,0.0,45.38 -2013-01-19 22:00:00,5333.8,0.0,45.62 -2013-01-19 23:00:00,5087.8,0.0,45.05 -2013-01-20 00:00:00,4804.2,0.0,44.62 -2013-01-20 01:00:00,4571.4,0.0,44.68 -2013-01-20 02:00:00,4410.6,0.0,44.18 -2013-01-20 03:00:00,4313.3,0.0,43.81 -2013-01-20 04:00:00,4273.4,0.0,43.17 -2013-01-20 05:00:00,4315.5,0.0,41.84 -2013-01-20 06:00:00,4425.6,0.0,42.99 -2013-01-20 07:00:00,4548.6,0.0,43.08 -2013-01-20 08:00:00,4780.5,0.0,43.92 -2013-01-20 09:00:00,5010.3,0.0,44.77 -2013-01-20 10:00:00,5192.6,0.0,48.21 -2013-01-20 11:00:00,5307.9,0.0,50.17 -2013-01-20 12:00:00,5340.3,0.0,50.76 -2013-01-20 13:00:00,5345.4,0.0,51.12 -2013-01-20 14:00:00,5338.4,0.0,49.8 -2013-01-20 15:00:00,5353.0,0.0,49.62 -2013-01-20 16:00:00,5455.6,0.0,48.55 -2013-01-20 17:00:00,5749.6,0.0,46.93 -2013-01-20 18:00:00,5844.5,0.0,45.24 -2013-01-20 19:00:00,5796.1,0.0,34.93 -2013-01-20 20:00:00,5705.6,0.0,41.28 -2013-01-20 21:00:00,5572.6,0.0,37.97 -2013-01-20 22:00:00,5388.7,0.0,35.88 -2013-01-20 23:00:00,5100.1,0.0,34.54 -2013-01-21 00:00:00,4829.3,0.0,32.7 -2013-01-21 01:00:00,4625.6,0.0,31.03 -2013-01-21 02:00:00,4484.1,0.0,29.72 -2013-01-21 03:00:00,4416.9,0.0,29.39 -2013-01-21 04:00:00,4442.8,0.0,28.82 -2013-01-21 05:00:00,4609.4,0.0,27.98 -2013-01-21 06:00:00,4969.2,0.0,27.64 -2013-01-21 07:00:00,5298.3,0.0,27.24 -2013-01-21 08:00:00,5652.0,0.0,27.15 -2013-01-21 09:00:00,5979.4,0.0,28.05 -2013-01-21 10:00:00,6207.9,0.0,28.81 -2013-01-21 11:00:00,6303.0,0.0,29.65 -2013-01-21 12:00:00,6335.0,0.0,30.07 -2013-01-21 13:00:00,6366.7,0.0,30.17 -2013-01-21 14:00:00,6351.8,0.0,30.6 -2013-01-21 15:00:00,6397.2,0.0,29.45 -2013-01-21 16:00:00,6525.3,0.0,30.6 -2013-01-21 17:00:00,6717.3,0.0,30.34 -2013-01-21 18:00:00,6646.7,0.0,30.6 -2013-01-21 19:00:00,6469.8,0.0,25.49 -2013-01-21 20:00:00,6295.1,0.0137,31.82 -2013-01-21 21:00:00,6055.2,0.0069,29.98 -2013-01-21 22:00:00,5733.1,0.0,30.15 -2013-01-21 23:00:00,5331.3,0.0069,29.89 -2013-01-22 00:00:00,4991.7,0.0,29.39 -2013-01-22 01:00:00,4778.3,0.0,28.97 -2013-01-22 02:00:00,4658.9,0.0,27.3 -2013-01-22 03:00:00,4616.5,0.0069,26.97 -2013-01-22 04:00:00,4674.9,0.0,26.54 -2013-01-22 05:00:00,4954.1,0.0,25.54 -2013-01-22 06:00:00,5523.4,0.0,25.35 -2013-01-22 07:00:00,6118.4,0.0,24.76 -2013-01-22 08:00:00,6506.7,0.0,24.32 -2013-01-22 09:00:00,6762.9,0.0,23.12 -2013-01-22 10:00:00,6882.0,0.0,22.46 -2013-01-22 11:00:00,6954.4,0.0,23.23 -2013-01-22 12:00:00,6946.7,0.0,23.32 -2013-01-22 13:00:00,6958.5,0.0,23.49 -2013-01-22 14:00:00,6960.1,0.0,23.66 -2013-01-22 15:00:00,6946.4,0.0,22.65 -2013-01-22 16:00:00,7074.2,0.0,21.65 -2013-01-22 17:00:00,7344.5,0.0,20.48 -2013-01-22 18:00:00,7303.9,0.0,19.15 -2013-01-22 19:00:00,7144.2,0.0,17.1 -2013-01-22 20:00:00,6937.2,0.0,19.61 -2013-01-22 21:00:00,6664.4,0.0,18.12 -2013-01-22 22:00:00,6302.0,0.0,18.54 -2013-01-22 23:00:00,5827.9,0.0,17.61 -2013-01-23 00:00:00,5432.6,0.0,16.54 -2013-01-23 01:00:00,5179.2,0.0,16.37 -2013-01-23 02:00:00,5027.6,0.0,15.07 -2013-01-23 03:00:00,4975.0,0.0,15.07 -2013-01-23 04:00:00,5003.9,0.0,14.97 -2013-01-23 05:00:00,5259.0,0.0,13.46 -2013-01-23 06:00:00,5814.4,0.0,13.63 -2013-01-23 07:00:00,6386.7,0.0,12.24 -2013-01-23 08:00:00,6753.2,0.0,13.48 -2013-01-23 09:00:00,7008.7,0.0,13.81 -2013-01-23 10:00:00,7134.9,0.0,14.26 -2013-01-23 11:00:00,7180.8,0.0,15.93 -2013-01-23 12:00:00,7183.5,0.0,16.52 -2013-01-23 13:00:00,7195.0,0.0,16.61 -2013-01-23 14:00:00,7184.7,0.0,18.1 -2013-01-23 15:00:00,7207.9,0.0,18.69 -2013-01-23 16:00:00,7302.1,0.0,17.55 -2013-01-23 17:00:00,7535.2,0.0,17.19 -2013-01-23 18:00:00,7446.6,0.0,17.03 -2013-01-23 19:00:00,7288.7,0.0,18.39 -2013-01-23 20:00:00,7060.6,0.0,16.74 -2013-01-23 21:00:00,6787.9,0.0,15.16 -2013-01-23 22:00:00,6389.6,0.0,15.67 -2013-01-23 23:00:00,5908.4,0.0,13.86 -2013-01-24 00:00:00,5490.1,0.0,13.86 -2013-01-24 01:00:00,5216.1,0.0,13.77 -2013-01-24 02:00:00,5074.8,0.0,13.86 -2013-01-24 03:00:00,5029.4,0.0,13.43 -2013-01-24 04:00:00,5068.6,0.0,12.68 -2013-01-24 05:00:00,5306.9,0.0,12.19 -2013-01-24 06:00:00,5830.2,0.0,12.18 -2013-01-24 07:00:00,6419.1,0.0,11.92 -2013-01-24 08:00:00,6784.0,0.0,11.85 -2013-01-24 09:00:00,7040.5,0.0,13.45 -2013-01-24 10:00:00,7158.4,0.0,14.27 -2013-01-24 11:00:00,7191.4,0.0,15.24 -2013-01-24 12:00:00,7199.5,0.0,18.15 -2013-01-24 13:00:00,7211.2,0.0,20.3 -2013-01-24 14:00:00,7176.4,0.0,20.7 -2013-01-24 15:00:00,7170.1,0.0,20.81 -2013-01-24 16:00:00,7263.0,0.0,20.8 -2013-01-24 17:00:00,7503.5,0.0,20.52 -2013-01-24 18:00:00,7455.5,0.0,20.36 -2013-01-24 19:00:00,7314.8,0.0,24.5 -2013-01-24 20:00:00,7102.4,0.0,19.24 -2013-01-24 21:00:00,6834.2,0.0,18.24 -2013-01-24 22:00:00,6458.0,0.0,18.07 -2013-01-24 23:00:00,5989.8,0.0,16.67 -2013-01-25 00:00:00,5577.6,0.0,16.48 -2013-01-25 01:00:00,5316.9,0.0,16.15 -2013-01-25 02:00:00,5154.0,0.0,15.82 -2013-01-25 03:00:00,5089.3,0.0,14.24 -2013-01-25 04:00:00,5120.4,0.0,14.24 -2013-01-25 05:00:00,5361.6,0.0,14.24 -2013-01-25 06:00:00,5885.3,0.0,14.24 -2013-01-25 07:00:00,6469.1,0.0,15.39 -2013-01-25 08:00:00,6860.3,0.0,15.72 -2013-01-25 09:00:00,7118.3,0.0,16.96 -2013-01-25 10:00:00,7233.9,0.0,18.66 -2013-01-25 11:00:00,7257.6,0.0,19.98 -2013-01-25 12:00:00,7239.4,0.0,20.58 -2013-01-25 13:00:00,7215.3,0.0,20.84 -2013-01-25 14:00:00,7171.1,0.0,23.56 -2013-01-25 15:00:00,7177.0,0.0,23.98 -2013-01-25 16:00:00,7288.0,0.0,23.74 -2013-01-25 17:00:00,7416.0,0.0,24.41 -2013-01-25 18:00:00,7260.1,0.0065,24.1 -2013-01-25 19:00:00,7060.6,0.01,21.8 -2013-01-25 20:00:00,6853.0,0.0065,24.84 -2013-01-25 21:00:00,6602.2,0.01,24.83 -2013-01-25 22:00:00,6291.0,0.0,24.17 -2013-01-25 23:00:00,5914.4,0.0,23.82 -2013-01-26 00:00:00,5532.5,0.0,22.32 -2013-01-26 01:00:00,5280.5,0.0,22.41 -2013-01-26 02:00:00,5118.3,0.0,20.91 -2013-01-26 03:00:00,5025.3,0.0,21.99 -2013-01-26 04:00:00,5006.0,0.0,21.22 -2013-01-26 05:00:00,5067.8,0.0,21.89 -2013-01-26 06:00:00,5253.5,0.0,20.51 -2013-01-26 07:00:00,5458.3,0.0,20.41 -2013-01-26 08:00:00,5755.8,0.0,20.59 -2013-01-26 09:00:00,6041.8,0.0,21.14 -2013-01-26 10:00:00,6249.7,0.0,21.63 -2013-01-26 11:00:00,6328.0,0.0,22.5 -2013-01-26 12:00:00,6350.8,0.0,23.92 -2013-01-26 13:00:00,6315.9,0.0,24.65 -2013-01-26 14:00:00,6260.0,0.0,25.26 -2013-01-26 15:00:00,6227.9,0.0,25.78 -2013-01-26 16:00:00,6278.9,0.0,26.54 -2013-01-26 17:00:00,6551.4,0.0,26.1 -2013-01-26 18:00:00,6662.2,0.0,25.41 -2013-01-26 19:00:00,6593.3,0.0,24.89 -2013-01-26 20:00:00,6434.9,0.0,22.16 -2013-01-26 21:00:00,6271.2,0.0,22.1 -2013-01-26 22:00:00,6035.4,0.0,21.1 -2013-01-26 23:00:00,5755.2,0.0,20.16 -2013-01-27 00:00:00,5456.9,0.0,19.43 -2013-01-27 01:00:00,5216.2,0.0,19.33 -2013-01-27 02:00:00,5052.0,0.0,19.43 -2013-01-27 03:00:00,4949.3,0.0,19.43 -2013-01-27 04:00:00,4905.5,0.0,18.59 -2013-01-27 05:00:00,4938.5,0.0,18.92 -2013-01-27 06:00:00,5053.2,0.0,18.98 -2013-01-27 07:00:00,5186.3,0.0,19.33 -2013-01-27 08:00:00,5435.5,0.0,20.1 -2013-01-27 09:00:00,5666.3,0.0,20.7 -2013-01-27 10:00:00,5871.2,0.0,22.82 -2013-01-27 11:00:00,5976.3,0.0,24.99 -2013-01-27 12:00:00,6007.2,0.0,26.99 -2013-01-27 13:00:00,5990.0,0.0,28.88 -2013-01-27 14:00:00,5963.9,0.0,29.82 -2013-01-27 15:00:00,5954.5,0.0,30.51 -2013-01-27 16:00:00,6027.8,0.0,31.25 -2013-01-27 17:00:00,6331.7,0.0,29.83 -2013-01-27 18:00:00,6449.4,0.0,29.64 -2013-01-27 19:00:00,6393.5,0.0,32.18 -2013-01-27 20:00:00,6272.0,0.0,28.13 -2013-01-27 21:00:00,6092.9,0.0,29.03 -2013-01-27 22:00:00,5807.3,0.0,28.59 -2013-01-27 23:00:00,5449.0,0.0,28.58 -2013-01-28 00:00:00,5116.3,0.0,27.98 -2013-01-28 01:00:00,4896.8,0.0,26.83 -2013-01-28 02:00:00,4753.4,0.0,26.92 -2013-01-28 03:00:00,4694.4,0.0,26.74 -2013-01-28 04:00:00,4739.6,0.0,25.94 -2013-01-28 05:00:00,5002.2,0.0,26.79 -2013-01-28 06:00:00,5545.5,0.0,26.14 -2013-01-28 07:00:00,6128.7,0.0,26.24 -2013-01-28 08:00:00,6518.2,0.0,27.81 -2013-01-28 09:00:00,6779.0,0.0,29.86 -2013-01-28 10:00:00,6904.2,0.0135,29.48 -2013-01-28 11:00:00,6992.0,0.0035,30.53 -2013-01-28 12:00:00,7030.4,0.0,31.19 -2013-01-28 13:00:00,7046.7,0.0235,31.12 -2013-01-28 14:00:00,7032.9,0.0,31.45 -2013-01-28 15:00:00,7083.6,0.01,31.7 -2013-01-28 16:00:00,7171.3,0.0208,32.19 -2013-01-28 17:00:00,7293.2,0.0,32.16 -2013-01-28 18:00:00,7100.0,0.0,33.12 -2013-01-28 19:00:00,6906.7,0.0169,35.65 -2013-01-28 20:00:00,6665.2,0.0189,34.34 -2013-01-28 21:00:00,6375.7,0.0,34.6 -2013-01-28 22:00:00,5969.2,0.0069,35.82 -2013-01-28 23:00:00,5477.0,0.0,35.89 -2013-01-29 00:00:00,5036.0,0.0069,36.15 -2013-01-29 01:00:00,4759.5,0.0,36.15 -2013-01-29 02:00:00,4609.1,0.0069,36.42 -2013-01-29 03:00:00,4538.8,0.0,36.74 -2013-01-29 04:00:00,4567.6,0.0,36.93 -2013-01-29 05:00:00,4823.5,0.0,38.42 -2013-01-29 06:00:00,5401.9,0.0,37.47 -2013-01-29 07:00:00,5960.5,0.0,37.58 -2013-01-29 08:00:00,6295.5,0.0,37.81 -2013-01-29 09:00:00,6462.5,0.0,38.69 -2013-01-29 10:00:00,6516.1,0.0,39.18 -2013-01-29 11:00:00,6520.0,0.0,38.66 -2013-01-29 12:00:00,6508.2,0.0,38.93 -2013-01-29 13:00:00,6516.0,0.0,38.84 -2013-01-29 14:00:00,6525.5,0.0,38.4 -2013-01-29 15:00:00,6567.8,0.0,38.55 -2013-01-29 16:00:00,6708.0,0.0,39.44 -2013-01-29 17:00:00,6895.5,0.0,37.89 -2013-01-29 18:00:00,6773.3,0.0069,37.39 -2013-01-29 19:00:00,6586.1,0.0669,43.26 -2013-01-29 20:00:00,6387.5,0.0135,38.63 -2013-01-29 21:00:00,6120.4,0.0065,38.39 -2013-01-29 22:00:00,5740.5,0.0,39.8 -2013-01-29 23:00:00,5256.5,0.0,40.03 -2013-01-30 00:00:00,4843.1,0.0,40.49 -2013-01-30 01:00:00,4593.1,0.0137,40.09 -2013-01-30 02:00:00,4447.9,0.0,39.72 -2013-01-30 03:00:00,4378.5,0.0,39.65 -2013-01-30 04:00:00,4415.1,0.0,39.86 -2013-01-30 05:00:00,4672.3,0.0,40.05 -2013-01-30 06:00:00,5254.9,0.0069,40.9 -2013-01-30 07:00:00,5831.3,0.0,42.49 -2013-01-30 08:00:00,6170.9,0.0,44.38 -2013-01-30 09:00:00,6394.8,0.0,45.51 -2013-01-30 10:00:00,6492.9,0.0,46.95 -2013-01-30 11:00:00,6500.4,0.0,47.39 -2013-01-30 12:00:00,6494.4,0.0,49.51 -2013-01-30 13:00:00,6508.2,0.0,50.56 -2013-01-30 14:00:00,6510.5,0.0,49.06 -2013-01-30 15:00:00,6559.2,0.0035,50.44 -2013-01-30 16:00:00,6676.8,0.0,50.19 -2013-01-30 17:00:00,6843.1,0.0035,49.04 -2013-01-30 18:00:00,6696.6,0.0135,48.41 -2013-01-30 19:00:00,6485.6,0.0277,44.84 -2013-01-30 20:00:00,6279.7,0.0,49.99 -2013-01-30 21:00:00,6020.8,0.0035,50.4 -2013-01-30 22:00:00,5631.8,0.0,53.39 -2013-01-30 23:00:00,5165.6,0.0065,54.21 -2013-01-31 00:00:00,4762.7,0.01,55.04 -2013-01-31 01:00:00,4509.9,0.0931,56.88 -2013-01-31 02:00:00,4349.6,0.0604,57.04 -2013-01-31 03:00:00,4298.8,0.06,57.12 -2013-01-31 04:00:00,4336.4,0.1601,57.22 -2013-01-31 05:00:00,4563.8,0.3727,58.13 -2013-01-31 06:00:00,5142.2,0.0275,52.98 -2013-01-31 07:00:00,5739.3,0.0192,51.75 -2013-01-31 08:00:00,6027.3,0.0247,50.67 -2013-01-31 09:00:00,6295.9,0.0,50.98 -2013-01-31 10:00:00,6394.9,0.0137,49.34 -2013-01-31 11:00:00,6427.4,0.0,45.3 -2013-01-31 12:00:00,6449.1,0.0,45.42 -2013-01-31 13:00:00,6467.4,0.0,45.25 -2013-01-31 14:00:00,6460.2,0.0,45.06 -2013-01-31 15:00:00,6479.3,0.0,44.31 -2013-01-31 16:00:00,6611.1,0.0,42.39 -2013-01-31 17:00:00,6861.7,0.0,39.24 -2013-01-31 18:00:00,6832.4,0.0,37.7 -2013-01-31 19:00:00,6651.2,0.0,32.28 -2013-01-31 20:00:00,6455.2,0.0,37.12 -2013-01-31 21:00:00,6239.2,0.0,35.18 -2013-01-31 22:00:00,5887.9,0.0,34.27 -2013-01-31 23:00:00,5446.3,0.0,33.95 -2013-02-01 00:00:00,5057.1,0.0,32.63 -2013-02-01 01:00:00,4801.1,0.0,32.54 -2013-02-01 02:00:00,4652.7,0.0,31.12 -2013-02-01 03:00:00,4580.3,0.0,31.03 -2013-02-01 04:00:00,4629.3,0.0,30.85 -2013-02-01 05:00:00,4883.0,0.0,29.89 -2013-02-01 06:00:00,5460.0,0.0,29.98 -2013-02-01 07:00:00,6039.2,0.0,30.06 -2013-02-01 08:00:00,6395.8,0.0,30.97 -2013-02-01 09:00:00,6650.3,0.0,32.14 -2013-02-01 10:00:00,6790.0,0.0,31.87 -2013-02-01 11:00:00,6810.4,0.0,33.11 -2013-02-01 12:00:00,6815.9,0.0,32.39 -2013-02-01 13:00:00,6820.3,0.0,32.56 -2013-02-01 14:00:00,6802.9,0.0,31.4 -2013-02-01 15:00:00,6809.4,0.0,32.39 -2013-02-01 16:00:00,6870.8,0.0,31.57 -2013-02-01 17:00:00,7044.1,0.0,29.74 -2013-02-01 18:00:00,6992.7,0.0,29.2 -2013-02-01 19:00:00,6800.4,0.0,32.41 -2013-02-01 20:00:00,6582.3,0.0,28.7 -2013-02-01 21:00:00,6351.2,0.0,27.3 -2013-02-01 22:00:00,6053.8,0.0,27.06 -2013-02-01 23:00:00,5688.8,0.0,26.22 -2013-02-02 00:00:00,5320.4,0.0,26.22 -2013-02-02 01:00:00,5087.6,0.0,24.91 -2013-02-02 02:00:00,4934.8,0.0,24.65 -2013-02-02 03:00:00,4848.2,0.0,24.12 -2013-02-02 04:00:00,4817.9,0.0,23.29 -2013-02-02 05:00:00,4892.1,0.0,22.19 -2013-02-02 06:00:00,5084.5,0.0,22.03 -2013-02-02 07:00:00,5302.3,0.0,21.8 -2013-02-02 08:00:00,5597.4,0.0,23.11 -2013-02-02 09:00:00,5865.2,0.0,24.61 -2013-02-02 10:00:00,6058.5,0.0,25.11 -2013-02-02 11:00:00,6119.1,0.0,26.21 -2013-02-02 12:00:00,6122.8,0.0,27.29 -2013-02-02 13:00:00,6108.8,0.0,29.15 -2013-02-02 14:00:00,6061.2,0.0,29.25 -2013-02-02 15:00:00,6049.9,0.0,28.36 -2013-02-02 16:00:00,6139.2,0.0,29.57 -2013-02-02 17:00:00,6354.7,0.0,30.63 -2013-02-02 18:00:00,6440.1,0.0,31.69 -2013-02-02 19:00:00,6364.5,0.0,29.3 -2013-02-02 20:00:00,6217.1,0.0,32.39 -2013-02-02 21:00:00,6039.5,0.0,31.83 -2013-02-02 22:00:00,5822.1,0.0035,31.32 -2013-02-02 23:00:00,5543.6,0.01,31.15 -2013-02-03 00:00:00,5240.2,0.0011,29.91 -2013-02-03 01:00:00,5007.5,0.002,27.78 -2013-02-03 02:00:00,4832.3,0.002,26.72 -2013-02-03 03:00:00,4729.8,0.0041,26.99 -2013-02-03 04:00:00,4687.7,0.0,26.24 -2013-02-03 05:00:00,4737.1,0.0,26.0 -2013-02-03 06:00:00,4867.3,0.0,26.07 -2013-02-03 07:00:00,5002.3,0.0,25.97 -2013-02-03 08:00:00,5257.5,0.0,26.57 -2013-02-03 09:00:00,5538.7,0.0,26.82 -2013-02-03 10:00:00,5800.5,0.0,27.83 -2013-02-03 11:00:00,5929.4,0.0,28.46 -2013-02-03 12:00:00,5985.9,0.0,28.89 -2013-02-03 13:00:00,5985.4,0.0,30.3 -2013-02-03 14:00:00,5963.1,0.0,30.98 -2013-02-03 15:00:00,5967.1,0.0,31.3 -2013-02-03 16:00:00,6038.7,0.0,30.84 -2013-02-03 17:00:00,6275.0,0.0,30.17 -2013-02-03 18:00:00,6383.0,0.0,29.99 -2013-02-03 19:00:00,6284.3,0.0,28.48 -2013-02-03 20:00:00,6139.2,0.0,29.3 -2013-02-03 21:00:00,5993.3,0.0,29.3 -2013-02-03 22:00:00,5751.1,0.0,29.2 -2013-02-03 23:00:00,5425.4,0.0,28.06 -2013-02-04 00:00:00,5097.9,0.0,28.48 -2013-02-04 01:00:00,4885.3,0.0,27.74 -2013-02-04 02:00:00,4760.4,0.0,28.24 -2013-02-04 03:00:00,4720.0,0.0,27.82 -2013-02-04 04:00:00,4767.8,0.0,26.82 -2013-02-04 05:00:00,5044.5,0.0,26.46 -2013-02-04 06:00:00,5624.0,0.0,26.03 -2013-02-04 07:00:00,6102.5,0.0,25.97 -2013-02-04 08:00:00,6416.7,0.0,26.53 -2013-02-04 09:00:00,6693.5,0.0,26.89 -2013-02-04 10:00:00,6813.7,0.0,28.56 -2013-02-04 11:00:00,6840.4,0.0,28.83 -2013-02-04 12:00:00,6846.6,0.0,29.34 -2013-02-04 13:00:00,6837.3,0.0,29.41 -2013-02-04 14:00:00,6811.2,0.0,29.68 -2013-02-04 15:00:00,6807.7,0.0,29.84 -2013-02-04 16:00:00,6891.4,0.0,30.17 -2013-02-04 17:00:00,7109.4,0.0,28.85 -2013-02-04 18:00:00,7113.7,0.0,28.4 -2013-02-04 19:00:00,6942.9,0.0,30.7 -2013-02-04 20:00:00,6708.0,0.0,28.4 -2013-02-04 21:00:00,6427.0,0.0,28.31 -2013-02-04 22:00:00,6016.8,0.0,29.06 -2013-02-04 23:00:00,5527.6,0.0,28.48 -2013-02-05 00:00:00,5097.3,0.0,28.57 -2013-02-05 01:00:00,4855.8,0.0,27.93 -2013-02-05 02:00:00,4717.5,0.0,27.76 -2013-02-05 03:00:00,4656.0,0.0,28.07 -2013-02-05 04:00:00,4689.7,0.01,28.34 -2013-02-05 05:00:00,4944.8,0.0,28.18 -2013-02-05 06:00:00,5495.4,0.0035,27.7 -2013-02-05 07:00:00,6124.3,0.0,27.5 -2013-02-05 08:00:00,6529.2,0.0,27.34 -2013-02-05 09:00:00,6768.5,0.0,28.11 -2013-02-05 10:00:00,6874.5,0.0,28.43 -2013-02-05 11:00:00,6940.9,0.0,28.69 -2013-02-05 12:00:00,6962.9,0.0069,28.88 -2013-02-05 13:00:00,6972.9,0.0,28.88 -2013-02-05 14:00:00,6961.9,0.0,28.88 -2013-02-05 15:00:00,7000.8,0.0,30.03 -2013-02-05 16:00:00,7081.4,0.0,30.03 -2013-02-05 17:00:00,7202.6,0.0,31.25 -2013-02-05 18:00:00,7099.3,0.0,31.42 -2013-02-05 19:00:00,6909.1,0.0,32.75 -2013-02-05 20:00:00,6680.1,0.0069,32.66 -2013-02-05 21:00:00,6426.5,0.0,32.58 -2013-02-05 22:00:00,6031.8,0.0,33.73 -2013-02-05 23:00:00,5543.8,0.0,33.88 -2013-02-06 00:00:00,5113.1,0.0,32.49 -2013-02-06 01:00:00,4876.8,0.0035,32.39 -2013-02-06 02:00:00,4730.1,0.0035,31.25 -2013-02-06 03:00:00,4659.9,0.0,32.33 -2013-02-06 04:00:00,4691.3,0.0,31.66 -2013-02-06 05:00:00,4963.4,0.0,32.56 -2013-02-06 06:00:00,5551.0,0.0,32.6 -2013-02-06 07:00:00,6102.7,0.0,32.78 -2013-02-06 08:00:00,6427.9,0.0,32.88 -2013-02-06 09:00:00,6626.9,0.0,34.72 -2013-02-06 10:00:00,6701.2,0.0,35.24 -2013-02-06 11:00:00,6718.2,0.0,35.84 -2013-02-06 12:00:00,6752.2,0.0,36.53 -2013-02-06 13:00:00,6761.8,0.0,36.93 -2013-02-06 14:00:00,6739.7,0.0,38.41 -2013-02-06 15:00:00,6721.1,0.0,37.69 -2013-02-06 16:00:00,6794.6,0.0,37.51 -2013-02-06 17:00:00,6973.5,0.0,37.43 -2013-02-06 18:00:00,6988.0,0.0,35.19 -2013-02-06 19:00:00,6839.9,0.0,30.81 -2013-02-06 20:00:00,6616.7,0.0,34.24 -2013-02-06 21:00:00,6364.7,0.0,33.82 -2013-02-06 22:00:00,6009.2,0.0,32.65 -2013-02-06 23:00:00,5578.1,0.0,31.58 -2013-02-07 00:00:00,5146.6,0.0,30.24 -2013-02-07 01:00:00,4890.1,0.0,29.73 -2013-02-07 02:00:00,4757.2,0.0,29.38 -2013-02-07 03:00:00,4696.6,0.0,27.97 -2013-02-07 04:00:00,4742.5,0.0,27.73 -2013-02-07 05:00:00,4966.1,0.0,27.54 -2013-02-07 06:00:00,5564.0,0.0,26.73 -2013-02-07 07:00:00,6155.5,0.0,27.33 -2013-02-07 08:00:00,6541.4,0.0,27.42 -2013-02-07 09:00:00,6752.2,0.0,28.66 -2013-02-07 10:00:00,6842.3,0.0,28.85 -2013-02-07 11:00:00,6881.0,0.0,29.43 -2013-02-07 12:00:00,6868.3,0.0,28.81 -2013-02-07 13:00:00,6862.3,0.0,30.12 -2013-02-07 14:00:00,6847.0,0.0,28.97 -2013-02-07 15:00:00,6858.5,0.0,29.24 -2013-02-07 16:00:00,6951.2,0.0,29.41 -2013-02-07 17:00:00,7128.2,0.0,28.73 -2013-02-07 18:00:00,7052.9,0.0,28.75 -2013-02-07 19:00:00,6881.0,0.0,34.32 -2013-02-07 20:00:00,6662.0,0.0,28.58 -2013-02-07 21:00:00,6418.2,0.0,29.32 -2013-02-07 22:00:00,6071.7,0.0,30.3 -2013-02-07 23:00:00,5642.2,0.0,32.85 -2013-02-08 00:00:00,5185.1,0.0,33.18 -2013-02-08 01:00:00,4909.4,0.0,33.6 -2013-02-08 02:00:00,4754.8,0.0,33.7 -2013-02-08 03:00:00,4706.7,0.0,33.77 -2013-02-08 04:00:00,4724.2,0.0,33.7 -2013-02-08 05:00:00,4978.6,0.0,33.61 -2013-02-08 06:00:00,5543.8,0.0,33.75 -2013-02-08 07:00:00,6126.7,0.0,33.34 -2013-02-08 08:00:00,6517.2,0.0165,35.25 -2013-02-08 09:00:00,6782.0,0.0135,35.42 -2013-02-08 10:00:00,6938.0,0.0084,35.59 -2013-02-08 11:00:00,7019.8,0.0185,35.25 -2013-02-08 12:00:00,7060.3,0.0341,35.58 -2013-02-08 13:00:00,7048.1,0.035,35.58 -2013-02-08 14:00:00,6996.6,0.0359,35.66 -2013-02-08 15:00:00,6969.1,0.0633,35.59 -2013-02-08 16:00:00,7020.2,0.0559,34.9 -2013-02-08 17:00:00,7107.4,0.1043,34.83 -2013-02-08 18:00:00,6990.2,0.01,35.41 -2013-02-08 19:00:00,6781.0,0.01,26.75 -2013-02-08 20:00:00,6562.2,0.0505,34.45 -2013-02-08 21:00:00,6283.4,0.1379,33.71 -2013-02-08 22:00:00,5980.1,0.1703,32.78 -2013-02-08 23:00:00,5644.1,0.1389,31.59 -2013-02-09 00:00:00,5296.6,0.1172,31.36 -2013-02-09 01:00:00,5057.7,0.0177,31.09 -2013-02-09 02:00:00,4893.5,0.0669,31.26 -2013-02-09 03:00:00,4809.2,0.0557,31.45 -2013-02-09 04:00:00,4783.0,0.0035,28.12 -2013-02-09 05:00:00,4834.6,0.0,27.36 -2013-02-09 06:00:00,4979.0,0.0,27.79 -2013-02-09 07:00:00,5143.5,0.0,27.86 -2013-02-09 08:00:00,5427.4,0.0,25.56 -2013-02-09 09:00:00,5716.3,0.0,24.95 -2013-02-09 10:00:00,5945.9,0.0,25.86 -2013-02-09 11:00:00,6055.2,0.0,25.89 -2013-02-09 12:00:00,6086.1,0.0,25.66 -2013-02-09 13:00:00,6064.2,0.0,26.32 -2013-02-09 14:00:00,6028.7,0.0,27.91 -2013-02-09 15:00:00,6023.0,0.0,28.49 -2013-02-09 16:00:00,6066.2,0.0,28.32 -2013-02-09 17:00:00,6321.7,0.0,27.99 -2013-02-09 18:00:00,6545.1,0.0,26.22 -2013-02-09 19:00:00,6474.9,0.0,28.5 -2013-02-09 20:00:00,6321.8,0.0,27.57 -2013-02-09 21:00:00,6162.6,0.0,26.52 -2013-02-09 22:00:00,5934.2,0.0,25.52 -2013-02-09 23:00:00,5665.8,0.0,24.08 -2013-02-10 00:00:00,5371.6,0.0,22.92 -2013-02-10 01:00:00,5126.9,0.0,22.13 -2013-02-10 02:00:00,4964.1,0.0,20.97 -2013-02-10 03:00:00,4878.4,0.0,20.7 -2013-02-10 04:00:00,4840.1,0.0,20.72 -2013-02-10 05:00:00,4883.8,0.0,20.39 -2013-02-10 06:00:00,4978.3,0.0,19.85 -2013-02-10 07:00:00,5105.8,0.0,20.12 -2013-02-10 08:00:00,5370.6,0.0,22.89 -2013-02-10 09:00:00,5612.4,0.0,23.8 -2013-02-10 10:00:00,5810.3,0.0,23.67 -2013-02-10 11:00:00,5912.1,0.0,25.83 -2013-02-10 12:00:00,5944.4,0.0,28.44 -2013-02-10 13:00:00,5934.5,0.0,30.01 -2013-02-10 14:00:00,5891.8,0.0,32.07 -2013-02-10 15:00:00,5887.0,0.0,34.28 -2013-02-10 16:00:00,5941.4,0.0,33.27 -2013-02-10 17:00:00,6182.8,0.0,32.63 -2013-02-10 18:00:00,6397.0,0.0,30.31 -2013-02-10 19:00:00,6344.6,0.0,39.2 -2013-02-10 20:00:00,6245.8,0.0,29.3 -2013-02-10 21:00:00,6045.9,0.0,29.06 -2013-02-10 22:00:00,5784.6,0.0,28.97 -2013-02-10 23:00:00,5408.4,0.0,29.15 -2013-02-11 00:00:00,5056.5,0.0,29.48 -2013-02-11 01:00:00,4825.4,0.0,28.58 -2013-02-11 02:00:00,4679.9,0.0,29.9 -2013-02-11 03:00:00,4629.3,0.0,30.57 -2013-02-11 04:00:00,4656.0,0.0,34.36 -2013-02-11 05:00:00,4929.5,0.0,35.45 -2013-02-11 06:00:00,5486.4,0.0365,36.2 -2013-02-11 07:00:00,6060.0,0.0665,36.81 -2013-02-11 08:00:00,6457.1,0.0627,38.3 -2013-02-11 09:00:00,6715.8,0.1731,39.18 -2013-02-11 10:00:00,6869.3,0.0439,41.23 -2013-02-11 11:00:00,6913.9,0.0169,41.75 -2013-02-11 12:00:00,6893.5,0.0148,42.52 -2013-02-11 13:00:00,6868.6,0.0089,41.99 -2013-02-11 14:00:00,6824.3,0.0137,43.26 -2013-02-11 15:00:00,6814.5,0.0423,43.46 -2013-02-11 16:00:00,6861.0,0.0069,43.59 -2013-02-11 17:00:00,6970.5,0.0412,44.44 -2013-02-11 18:00:00,6878.2,0.055,44.43 -2013-02-11 19:00:00,6699.4,0.0035,38.78 -2013-02-11 20:00:00,6459.0,0.0206,43.5 -2013-02-11 21:00:00,6234.3,0.0,42.81 -2013-02-11 22:00:00,5850.7,0.0065,42.63 -2013-02-11 23:00:00,5359.4,0.0065,42.84 -2013-02-12 00:00:00,4938.5,0.0069,42.62 -2013-02-12 01:00:00,4691.7,0.0,41.82 -2013-02-12 02:00:00,4565.5,0.0,40.84 -2013-02-12 03:00:00,4517.2,0.0,40.36 -2013-02-12 04:00:00,4557.5,0.0,39.36 -2013-02-12 05:00:00,4826.6,0.0,39.66 -2013-02-12 06:00:00,5382.3,0.0,38.45 -2013-02-12 07:00:00,5963.1,0.0,38.11 -2013-02-12 08:00:00,6315.2,0.0,38.45 -2013-02-12 09:00:00,6518.7,0.0,41.16 -2013-02-12 10:00:00,6588.9,0.0,42.83 -2013-02-12 11:00:00,6615.6,0.0,43.73 -2013-02-12 12:00:00,6621.9,0.0,43.98 -2013-02-12 13:00:00,6583.1,0.0,44.15 -2013-02-12 14:00:00,6508.4,0.0,44.15 -2013-02-12 15:00:00,6514.1,0.0,43.1 -2013-02-12 16:00:00,6570.9,0.0,42.43 -2013-02-12 17:00:00,6762.7,0.0,40.45 -2013-02-12 18:00:00,6772.1,0.0,38.8 -2013-02-12 19:00:00,6608.0,0.0,33.28 -2013-02-12 20:00:00,6422.1,0.0,39.41 -2013-02-12 21:00:00,6169.8,0.0,39.08 -2013-02-12 22:00:00,5813.5,0.0,37.66 -2013-02-12 23:00:00,5363.4,0.0,36.84 -2013-02-13 00:00:00,4929.4,0.0,35.33 -2013-02-13 01:00:00,4701.9,0.0,33.76 -2013-02-13 02:00:00,4547.1,0.0,34.81 -2013-02-13 03:00:00,4478.2,0.0,34.55 -2013-02-13 04:00:00,4521.8,0.0,33.95 -2013-02-13 05:00:00,4802.9,0.0,33.74 -2013-02-13 06:00:00,5383.1,0.0,33.86 -2013-02-13 07:00:00,5936.3,0.0,32.95 -2013-02-13 08:00:00,6258.3,0.0,35.35 -2013-02-13 09:00:00,6458.1,0.0,37.14 -2013-02-13 10:00:00,6534.4,0.0,39.14 -2013-02-13 11:00:00,6570.4,0.0,38.84 -2013-02-13 12:00:00,6552.9,0.0,40.39 -2013-02-13 13:00:00,6537.4,0.0,39.47 -2013-02-13 14:00:00,6507.6,0.0,40.3 -2013-02-13 15:00:00,6526.3,0.0,40.15 -2013-02-13 16:00:00,6634.9,0.0,39.76 -2013-02-13 17:00:00,6814.3,0.0,37.61 -2013-02-13 18:00:00,6759.9,0.0,36.2 -2013-02-13 19:00:00,6597.1,0.0,34.28 -2013-02-13 20:00:00,6411.7,0.0,33.85 -2013-02-13 21:00:00,6154.1,0.0,34.4 -2013-02-13 22:00:00,5797.8,0.0035,35.51 -2013-02-13 23:00:00,5373.8,0.0069,35.92 -2013-02-14 00:00:00,4946.4,0.002,35.82 -2013-02-14 01:00:00,4706.0,0.008,34.27 -2013-02-14 02:00:00,4555.6,0.0137,34.44 -2013-02-14 03:00:00,4487.3,0.0,35.65 -2013-02-14 04:00:00,4528.9,0.0137,34.34 -2013-02-14 05:00:00,4788.0,0.0137,34.18 -2013-02-14 06:00:00,5372.1,0.0,35.24 -2013-02-14 07:00:00,5912.1,0.0,35.05 -2013-02-14 08:00:00,6248.4,0.0,35.24 -2013-02-14 09:00:00,6465.4,0.0,36.74 -2013-02-14 10:00:00,6536.0,0.0,38.51 -2013-02-14 11:00:00,6544.2,0.0,39.17 -2013-02-14 12:00:00,6532.5,0.0,42.13 -2013-02-14 13:00:00,6491.2,0.0,42.48 -2013-02-14 14:00:00,6448.1,0.0,43.66 -2013-02-14 15:00:00,6450.8,0.0,43.89 -2013-02-14 16:00:00,6499.2,0.0,42.94 -2013-02-14 17:00:00,6613.5,0.0,41.09 -2013-02-14 18:00:00,6549.5,0.0,36.09 -2013-02-14 19:00:00,6462.5,0.0,39.72 -2013-02-14 20:00:00,6278.1,0.0,34.11 -2013-02-14 21:00:00,6037.4,0.0,35.14 -2013-02-14 22:00:00,5678.0,0.0,32.84 -2013-02-14 23:00:00,5271.3,0.0,33.57 -2013-02-15 00:00:00,4869.6,0.0,36.83 -2013-02-15 01:00:00,4624.8,0.0,36.57 -2013-02-15 02:00:00,4486.8,0.0,36.56 -2013-02-15 03:00:00,4427.9,0.0,36.68 -2013-02-15 04:00:00,4473.8,0.0,35.34 -2013-02-15 05:00:00,4737.2,0.0,35.18 -2013-02-15 06:00:00,5260.4,0.0,36.45 -2013-02-15 07:00:00,5787.9,0.0,36.74 -2013-02-15 08:00:00,6152.4,0.0,39.3 -2013-02-15 09:00:00,6363.3,0.0,41.09 -2013-02-15 10:00:00,6453.7,0.0,42.95 -2013-02-15 11:00:00,6464.0,0.0,45.06 -2013-02-15 12:00:00,6446.2,0.0,46.19 -2013-02-15 13:00:00,6401.1,0.0,47.85 -2013-02-15 14:00:00,6348.5,0.0,48.43 -2013-02-15 15:00:00,6327.8,0.0,48.18 -2013-02-15 16:00:00,6381.9,0.0,46.87 -2013-02-15 17:00:00,6505.4,0.0,44.22 -2013-02-15 18:00:00,6481.5,0.0,42.47 -2013-02-15 19:00:00,6294.8,0.0,40.91 -2013-02-15 20:00:00,6074.7,0.0,40.71 -2013-02-15 21:00:00,5858.0,0.0,42.55 -2013-02-15 22:00:00,5555.7,0.0,44.27 -2013-02-15 23:00:00,5212.7,0.0,45.18 -2013-02-16 00:00:00,4843.2,0.0,41.8 -2013-02-16 01:00:00,4623.2,0.0,38.96 -2013-02-16 02:00:00,4475.9,0.0069,38.22 -2013-02-16 03:00:00,4406.5,0.0135,36.91 -2013-02-16 04:00:00,4389.9,0.0065,37.16 -2013-02-16 05:00:00,4468.7,0.0,35.67 -2013-02-16 06:00:00,4660.2,0.0,35.58 -2013-02-16 07:00:00,4874.8,0.0,35.48 -2013-02-16 08:00:00,5195.7,0.0,38.29 -2013-02-16 09:00:00,5470.8,0.0,36.97 -2013-02-16 10:00:00,5680.8,0.0,39.04 -2013-02-16 11:00:00,5754.7,0.0,39.68 -2013-02-16 12:00:00,5741.5,0.0,40.04 -2013-02-16 13:00:00,5690.7,0.0,40.54 -2013-02-16 14:00:00,5652.0,0.0,39.55 -2013-02-16 15:00:00,5661.2,0.0,38.51 -2013-02-16 16:00:00,5751.1,0.0,38.25 -2013-02-16 17:00:00,5924.6,0.0,36.67 -2013-02-16 18:00:00,6042.0,0.0,36.67 -2013-02-16 19:00:00,5990.3,0.0,30.41 -2013-02-16 20:00:00,5861.6,0.0,35.82 -2013-02-16 21:00:00,5722.5,0.0,36.45 -2013-02-16 22:00:00,5519.8,0.0,36.12 -2013-02-16 23:00:00,5282.8,0.0,34.97 -2013-02-17 00:00:00,5021.0,0.0,34.71 -2013-02-17 01:00:00,4810.4,0.0,34.36 -2013-02-17 02:00:00,4663.3,0.0,34.18 -2013-02-17 03:00:00,4581.9,0.0,33.18 -2013-02-17 04:00:00,4551.2,0.0,31.78 -2013-02-17 05:00:00,4589.4,0.0,31.61 -2013-02-17 06:00:00,4681.5,0.0,30.39 -2013-02-17 07:00:00,4822.8,0.0,29.08 -2013-02-17 08:00:00,5109.1,0.0,27.91 -2013-02-17 09:00:00,5367.9,0.0,27.24 -2013-02-17 10:00:00,5567.7,0.0,26.28 -2013-02-17 11:00:00,5700.2,0.0,26.54 -2013-02-17 12:00:00,5729.3,0.0,25.91 -2013-02-17 13:00:00,5735.6,0.0,27.23 -2013-02-17 14:00:00,5725.6,0.0,27.3 -2013-02-17 15:00:00,5746.8,0.0,26.24 -2013-02-17 16:00:00,5823.6,0.0,26.21 -2013-02-17 17:00:00,6027.2,0.0,27.24 -2013-02-17 18:00:00,6237.8,0.0,26.82 -2013-02-17 19:00:00,6242.2,0.0,27.76 -2013-02-17 20:00:00,6166.3,0.0,24.22 -2013-02-17 21:00:00,6052.7,0.0,23.54 -2013-02-17 22:00:00,5853.5,0.0,21.37 -2013-02-17 23:00:00,5557.3,0.0,20.06 -2013-02-18 00:00:00,5251.5,0.0,18.94 -2013-02-18 01:00:00,5028.2,0.0,19.15 -2013-02-18 02:00:00,4881.1,0.0,19.15 -2013-02-18 03:00:00,4816.6,0.0,19.15 -2013-02-18 04:00:00,4825.2,0.0,19.55 -2013-02-18 05:00:00,4951.9,0.0,18.98 -2013-02-18 06:00:00,5205.7,0.0,18.72 -2013-02-18 07:00:00,5479.7,0.0,18.89 -2013-02-18 08:00:00,5790.8,0.0,20.12 -2013-02-18 09:00:00,6085.1,0.0,21.78 -2013-02-18 10:00:00,6282.7,0.0,23.98 -2013-02-18 11:00:00,6374.1,0.0,26.25 -2013-02-18 12:00:00,6369.5,0.0,28.03 -2013-02-18 13:00:00,6327.4,0.0,28.88 -2013-02-18 14:00:00,6264.4,0.0,30.88 -2013-02-18 15:00:00,6220.8,0.0,32.86 -2013-02-18 16:00:00,6250.7,0.0,32.81 -2013-02-18 17:00:00,6402.0,0.0,32.4 -2013-02-18 18:00:00,6544.7,0.0,32.04 -2013-02-18 19:00:00,6449.6,0.0,39.32 -2013-02-18 20:00:00,6295.9,0.0,31.59 -2013-02-18 21:00:00,6092.2,0.0,31.59 -2013-02-18 22:00:00,5789.0,0.0,32.01 -2013-02-18 23:00:00,5386.2,0.0,31.5 -2013-02-19 00:00:00,5027.5,0.0,31.42 -2013-02-19 01:00:00,4785.7,0.0,31.18 -2013-02-19 02:00:00,4642.6,0.0,32.3 -2013-02-19 03:00:00,4575.6,0.0,33.12 -2013-02-19 04:00:00,4598.8,0.0,33.03 -2013-02-19 05:00:00,4840.3,0.0,33.36 -2013-02-19 06:00:00,5302.3,0.0,31.41 -2013-02-19 07:00:00,5787.6,0.0,32.2 -2013-02-19 08:00:00,6191.7,0.0,36.09 -2013-02-19 09:00:00,6454.8,0.0,39.05 -2013-02-19 10:00:00,6547.9,0.0,40.24 -2013-02-19 11:00:00,6596.9,0.0,41.89 -2013-02-19 12:00:00,6639.3,0.0,44.07 -2013-02-19 13:00:00,6732.7,0.01,44.72 -2013-02-19 14:00:00,6734.5,0.0469,43.41 -2013-02-19 15:00:00,6746.2,0.02,44.18 -2013-02-19 16:00:00,6807.8,0.0,43.65 -2013-02-19 17:00:00,6880.3,0.0094,43.56 -2013-02-19 18:00:00,6764.2,0.0083,43.53 -2013-02-19 19:00:00,6566.6,0.0196,36.46 -2013-02-19 20:00:00,6330.8,0.0069,45.24 -2013-02-19 21:00:00,6080.7,0.0206,44.73 -2013-02-19 22:00:00,5717.3,0.0619,45.04 -2013-02-19 23:00:00,5284.9,0.1856,44.02 -2013-02-20 00:00:00,4885.5,0.0137,42.59 -2013-02-20 01:00:00,4647.5,0.0,40.86 -2013-02-20 02:00:00,4500.7,0.0,39.12 -2013-02-20 03:00:00,4455.6,0.0069,37.54 -2013-02-20 04:00:00,4530.4,0.0069,37.02 -2013-02-20 05:00:00,4803.3,0.0,35.12 -2013-02-20 06:00:00,5375.0,0.0,34.78 -2013-02-20 07:00:00,5948.1,0.0,34.69 -2013-02-20 08:00:00,6351.3,0.0,33.95 -2013-02-20 09:00:00,6572.6,0.0,33.78 -2013-02-20 10:00:00,6667.3,0.0,33.3 -2013-02-20 11:00:00,6713.8,0.0,34.62 -2013-02-20 12:00:00,6734.1,0.0,34.28 -2013-02-20 13:00:00,6766.7,0.0,34.28 -2013-02-20 14:00:00,6753.5,0.0,33.98 -2013-02-20 15:00:00,6775.1,0.0,34.04 -2013-02-20 16:00:00,6839.8,0.0,33.3 -2013-02-20 17:00:00,6969.2,0.0,32.72 -2013-02-20 18:00:00,7040.0,0.0,31.39 -2013-02-20 19:00:00,6878.7,0.0,31.23 -2013-02-20 20:00:00,6679.1,0.0,29.39 -2013-02-20 21:00:00,6416.7,0.0,29.06 -2013-02-20 22:00:00,6062.4,0.0,28.3 -2013-02-20 23:00:00,5605.7,0.0,27.48 -2013-02-21 00:00:00,5178.3,0.0,27.39 -2013-02-21 01:00:00,4926.4,0.0,27.06 -2013-02-21 02:00:00,4782.6,0.0,27.06 -2013-02-21 03:00:00,4719.5,0.0,26.97 -2013-02-21 04:00:00,4755.2,0.0,27.47 -2013-02-21 05:00:00,5008.8,0.0,27.06 -2013-02-21 06:00:00,5550.8,0.0,27.06 -2013-02-21 07:00:00,6087.0,0.0,27.06 -2013-02-21 08:00:00,6482.9,0.0,28.56 -2013-02-21 09:00:00,6705.0,0.0,28.98 -2013-02-21 10:00:00,6763.4,0.0,30.82 -2013-02-21 11:00:00,6797.4,0.0,30.1 -2013-02-21 12:00:00,6798.1,0.0,32.92 -2013-02-21 13:00:00,6780.6,0.0,33.19 -2013-02-21 14:00:00,6733.2,0.0,33.6 -2013-02-21 15:00:00,6722.8,0.0,33.87 -2013-02-21 16:00:00,6805.5,0.0,33.93 -2013-02-21 17:00:00,6937.0,0.0,32.37 -2013-02-21 18:00:00,7013.9,0.0,31.58 -2013-02-21 19:00:00,6895.4,0.0,33.26 -2013-02-21 20:00:00,6715.6,0.0,30.44 -2013-02-21 21:00:00,6455.4,0.0,29.93 -2013-02-21 22:00:00,6115.9,0.0,29.59 -2013-02-21 23:00:00,5655.0,0.0,29.23 -2013-02-22 00:00:00,5237.0,0.0,29.5 -2013-02-22 01:00:00,4986.4,0.0,29.57 -2013-02-22 02:00:00,4827.8,0.0,29.47 -2013-02-22 03:00:00,4762.2,0.0,29.67 -2013-02-22 04:00:00,4777.7,0.0,30.82 -2013-02-22 05:00:00,5012.3,0.0,30.85 -2013-02-22 06:00:00,5524.4,0.0,32.18 -2013-02-22 07:00:00,6067.6,0.0,31.12 -2013-02-22 08:00:00,6444.4,0.0,33.2 -2013-02-22 09:00:00,6704.0,0.0,33.72 -2013-02-22 10:00:00,6752.6,0.0,34.55 -2013-02-22 11:00:00,6761.4,0.0,36.23 -2013-02-22 12:00:00,6750.5,0.0,36.66 -2013-02-22 13:00:00,6715.8,0.0,37.08 -2013-02-22 14:00:00,6671.0,0.0,37.61 -2013-02-22 15:00:00,6675.0,0.0,36.7 -2013-02-22 16:00:00,6742.1,0.0,36.53 -2013-02-22 17:00:00,6871.8,0.0,35.85 -2013-02-22 18:00:00,6773.4,0.0,36.49 -2013-02-22 19:00:00,6592.9,0.0206,38.08 -2013-02-22 20:00:00,6347.6,0.0,36.36 -2013-02-22 21:00:00,6107.6,0.0,35.21 -2013-02-22 22:00:00,5802.0,0.0,35.88 -2013-02-22 23:00:00,5396.5,0.0,35.31 -2013-02-23 00:00:00,5032.5,0.0,35.41 -2013-02-23 01:00:00,4792.8,0.0035,35.24 -2013-02-23 02:00:00,4617.8,0.0035,35.22 -2013-02-23 03:00:00,4530.6,0.0035,35.13 -2013-02-23 04:00:00,4501.6,0.0,35.79 -2013-02-23 05:00:00,4573.2,0.0,35.05 -2013-02-23 06:00:00,4722.2,0.0,34.81 -2013-02-23 07:00:00,4943.5,0.0,34.81 -2013-02-23 08:00:00,5272.6,0.0,36.7 -2013-02-23 09:00:00,5576.2,0.0,38.11 -2013-02-23 10:00:00,5803.4,0.0,38.85 -2013-02-23 11:00:00,5913.5,0.01,38.55 -2013-02-23 12:00:00,5939.5,0.0131,40.3 -2013-02-23 13:00:00,5906.9,0.01,39.61 -2013-02-23 14:00:00,5893.8,0.0165,39.93 -2013-02-23 15:00:00,5897.8,0.0331,39.76 -2013-02-23 16:00:00,5935.7,0.0331,39.33 -2013-02-23 17:00:00,6063.5,0.0072,37.83 -2013-02-23 18:00:00,6147.5,0.0152,37.3 -2013-02-23 19:00:00,6063.1,0.0137,37.2 -2013-02-23 20:00:00,5923.7,0.0137,38.08 -2013-02-23 21:00:00,5764.6,0.0,38.17 -2013-02-23 22:00:00,5537.6,0.0344,39.25 -2013-02-23 23:00:00,5258.9,0.057,39.06 -2013-02-24 00:00:00,4949.8,0.0217,40.48 -2013-02-24 01:00:00,4709.3,0.1052,40.81 -2013-02-24 02:00:00,4548.8,0.1179,40.71 -2013-02-24 03:00:00,4452.6,0.0639,41.59 -2013-02-24 04:00:00,4410.8,0.008,41.69 -2013-02-24 05:00:00,4449.8,0.0344,41.86 -2013-02-24 06:00:00,4520.3,0.0619,41.77 -2013-02-24 07:00:00,4675.8,0.1031,41.69 -2013-02-24 08:00:00,4921.9,0.1719,41.95 -2013-02-24 09:00:00,5163.8,0.0069,42.64 -2013-02-24 10:00:00,5366.4,0.0275,42.9 -2013-02-24 11:00:00,5476.6,0.0,43.82 -2013-02-24 12:00:00,5538.2,0.0069,45.3 -2013-02-24 13:00:00,5542.2,0.0137,43.59 -2013-02-24 14:00:00,5556.9,0.0069,44.03 -2013-02-24 15:00:00,5580.6,0.0069,42.48 -2013-02-24 16:00:00,5699.0,0.0137,41.88 -2013-02-24 17:00:00,5899.5,0.0,38.55 -2013-02-24 18:00:00,6064.9,0.0,37.6 -2013-02-24 19:00:00,6025.5,0.0,36.76 -2013-02-24 20:00:00,5942.0,0.0206,36.91 -2013-02-24 21:00:00,5778.9,0.0,34.76 -2013-02-24 22:00:00,5533.8,0.0137,35.17 -2013-02-24 23:00:00,5222.4,0.0,34.34 -2013-02-25 00:00:00,4905.2,0.0137,35.3 -2013-02-25 01:00:00,4670.6,0.0069,35.06 -2013-02-25 02:00:00,4532.2,0.0069,35.06 -2013-02-25 03:00:00,4482.3,0.0,34.97 -2013-02-25 04:00:00,4517.9,0.0,34.88 -2013-02-25 05:00:00,4805.3,0.0,34.54 -2013-02-25 06:00:00,5328.3,0.0,34.54 -2013-02-25 07:00:00,5848.7,0.0,34.62 -2013-02-25 08:00:00,6196.5,0.0,36.01 -2013-02-25 09:00:00,6410.0,0.0,38.27 -2013-02-25 10:00:00,6488.0,0.0,39.43 -2013-02-25 11:00:00,6509.1,0.0,40.79 -2013-02-25 12:00:00,6504.9,0.0,42.37 -2013-02-25 13:00:00,6499.9,0.0,42.84 -2013-02-25 14:00:00,6484.4,0.0,43.09 -2013-02-25 15:00:00,6513.5,0.0,42.87 -2013-02-25 16:00:00,6597.1,0.0,41.72 -2013-02-25 17:00:00,6708.5,0.0,39.33 -2013-02-25 18:00:00,6707.9,0.0,38.52 -2013-02-25 19:00:00,6551.2,0.0,40.08 -2013-02-25 20:00:00,6328.7,0.0,37.11 -2013-02-25 21:00:00,6076.4,0.0,35.97 -2013-02-25 22:00:00,5690.5,0.0,33.95 -2013-02-25 23:00:00,5217.5,0.0,34.07 -2013-02-26 00:00:00,4824.4,0.0,32.47 -2013-02-26 01:00:00,4590.0,0.0,32.22 -2013-02-26 02:00:00,4451.1,0.0,31.73 -2013-02-26 03:00:00,4404.5,0.0,31.54 -2013-02-26 04:00:00,4449.2,0.0,30.45 -2013-02-26 05:00:00,4731.0,0.0,30.51 -2013-02-26 06:00:00,5279.6,0.0,30.86 -2013-02-26 07:00:00,5822.0,0.0,30.86 -2013-02-26 08:00:00,6158.3,0.0,36.62 -2013-02-26 09:00:00,6391.2,0.0,38.53 -2013-02-26 10:00:00,6479.8,0.0,41.19 -2013-02-26 11:00:00,6526.7,0.0,41.99 -2013-02-26 12:00:00,6527.0,0.0,42.13 -2013-02-26 13:00:00,6529.7,0.0,42.54 -2013-02-26 14:00:00,6510.9,0.0,43.17 -2013-02-26 15:00:00,6550.7,0.0,41.85 -2013-02-26 16:00:00,6652.2,0.0,41.02 -2013-02-26 17:00:00,6800.1,0.0,38.86 -2013-02-26 18:00:00,6777.5,0.0,38.37 -2013-02-26 19:00:00,6594.2,0.0,42.8 -2013-02-26 20:00:00,6386.9,0.0,39.1 -2013-02-26 21:00:00,6125.0,0.0065,38.83 -2013-02-26 22:00:00,5758.6,0.0,39.4 -2013-02-26 23:00:00,5319.3,0.0665,39.13 -2013-02-27 00:00:00,4904.6,0.04,40.31 -2013-02-27 01:00:00,4678.0,0.045,40.54 -2013-02-27 02:00:00,4538.3,0.0333,41.69 -2013-02-27 03:00:00,4477.3,0.022,41.78 -2013-02-27 04:00:00,4506.6,0.0105,42.04 -2013-02-27 05:00:00,4765.3,0.021,42.04 -2013-02-27 06:00:00,5341.8,0.0566,42.97 -2013-02-27 07:00:00,5907.6,0.0956,43.34 -2013-02-27 08:00:00,6289.1,0.0318,43.57 -2013-02-27 09:00:00,6548.1,0.0321,44.12 -2013-02-27 10:00:00,6674.3,0.0183,43.86 -2013-02-27 11:00:00,6697.5,0.0169,43.69 -2013-02-27 12:00:00,6688.4,0.0,44.09 -2013-02-27 13:00:00,6654.6,0.0,44.08 -2013-02-27 14:00:00,6606.3,0.0069,44.09 -2013-02-27 15:00:00,6592.9,0.0069,44.56 -2013-02-27 16:00:00,6661.6,0.0069,45.37 -2013-02-27 17:00:00,6730.1,0.0069,46.1 -2013-02-27 18:00:00,6726.7,0.0,46.13 -2013-02-27 19:00:00,6542.4,0.0,41.37 -2013-02-27 20:00:00,6305.3,0.0,44.56 -2013-02-27 21:00:00,6052.2,0.0,43.63 -2013-02-27 22:00:00,5688.8,0.0,43.77 -2013-02-27 23:00:00,5221.1,0.0,43.27 -2013-02-28 00:00:00,4808.3,0.0,43.09 -2013-02-28 01:00:00,4551.2,0.0,42.12 -2013-02-28 02:00:00,4400.2,0.0,42.18 -2013-02-28 03:00:00,4339.9,0.0,40.6 -2013-02-28 04:00:00,4372.6,0.0,40.93 -2013-02-28 05:00:00,4634.5,0.0,40.86 -2013-02-28 06:00:00,5191.2,0.0,40.5 -2013-02-28 07:00:00,5745.4,0.0,40.6 -2013-02-28 08:00:00,6124.5,0.0,41.74 -2013-02-28 09:00:00,6357.9,0.0,41.95 -2013-02-28 10:00:00,6398.9,0.0,42.61 -2013-02-28 11:00:00,6399.0,0.0,43.18 -2013-02-28 12:00:00,6389.9,0.0,46.61 -2013-02-28 13:00:00,6408.3,0.0069,45.19 -2013-02-28 14:00:00,6417.7,0.0,43.86 -2013-02-28 15:00:00,6449.8,0.0,44.67 -2013-02-28 16:00:00,6522.8,0.0,44.15 -2013-02-28 17:00:00,6638.3,0.0,41.59 -2013-02-28 18:00:00,6632.2,0.0,41.09 -2013-02-28 19:00:00,6481.1,0.0,39.59 -2013-02-28 20:00:00,6254.7,0.0069,40.64 -2013-02-28 21:00:00,6009.4,0.0137,40.45 -2013-02-28 22:00:00,5655.7,0.0206,39.93 -2013-02-28 23:00:00,5218.0,0.0,38.42 -2013-03-01 00:00:00,4816.0,0.0,39.24 -2013-03-01 01:00:00,4580.1,0.0,38.75 -2013-03-01 02:00:00,4438.8,0.0,38.3 -2013-03-01 03:00:00,4385.3,0.0,38.3 -2013-03-01 04:00:00,4420.6,0.0,38.14 -2013-03-01 05:00:00,4684.4,0.0,36.82 -2013-03-01 06:00:00,5214.5,0.0,36.73 -2013-03-01 07:00:00,5741.4,0.0,36.84 -2013-03-01 08:00:00,6107.8,0.0,38.44 -2013-03-01 09:00:00,6340.6,0.0,39.28 -2013-03-01 10:00:00,6450.0,0.0,39.88 -2013-03-01 11:00:00,6517.7,0.0,40.21 -2013-03-01 12:00:00,6518.5,0.0,42.43 -2013-03-01 13:00:00,6491.8,0.0,42.96 -2013-03-01 14:00:00,6470.1,0.0,42.14 -2013-03-01 15:00:00,6517.4,0.0,40.8 -2013-03-01 16:00:00,6586.0,0.0,41.14 -2013-03-01 17:00:00,6665.6,0.0,40.48 -2013-03-01 18:00:00,6593.6,0.0,38.97 -2013-03-01 19:00:00,6408.9,0.0,38.37 -2013-03-01 20:00:00,6183.0,0.0,38.12 -2013-03-01 21:00:00,5949.0,0.0,37.95 -2013-03-01 22:00:00,5660.8,0.0,38.27 -2013-03-01 23:00:00,5293.6,0.0,37.34 -2013-03-02 00:00:00,4927.7,0.0,37.15 -2013-03-02 01:00:00,4686.8,0.0,36.91 -2013-03-02 02:00:00,4526.3,0.0,36.39 -2013-03-02 03:00:00,4443.6,0.0,36.39 -2013-03-02 04:00:00,4423.8,0.0,36.06 -2013-03-02 05:00:00,4492.6,0.0,35.96 -2013-03-02 06:00:00,4638.3,0.0,35.39 -2013-03-02 07:00:00,4876.7,0.0,35.7 -2013-03-02 08:00:00,5198.3,0.0,35.96 -2013-03-02 09:00:00,5449.5,0.0,36.05 -2013-03-02 10:00:00,5613.5,0.0,38.65 -2013-03-02 11:00:00,5703.6,0.0,38.66 -2013-03-02 12:00:00,5757.7,0.0,39.98 -2013-03-02 13:00:00,5753.7,0.0,38.57 -2013-03-02 14:00:00,5708.1,0.0,38.57 -2013-03-02 15:00:00,5696.6,0.0,38.57 -2013-03-02 16:00:00,5716.0,0.0,38.57 -2013-03-02 17:00:00,5847.1,0.0,37.34 -2013-03-02 18:00:00,6024.7,0.0,36.91 -2013-03-02 19:00:00,5972.1,0.0,36.17 -2013-03-02 20:00:00,5857.6,0.0,35.71 -2013-03-02 21:00:00,5699.5,0.0,35.3 -2013-03-02 22:00:00,5500.1,0.0,35.54 -2013-03-02 23:00:00,5235.1,0.0,34.87 -2013-03-03 00:00:00,4958.0,0.0,34.78 -2013-03-03 01:00:00,4739.3,0.0,34.62 -2013-03-03 02:00:00,4560.2,0.0,34.45 -2013-03-03 03:00:00,4461.6,0.0,34.36 -2013-03-03 04:00:00,4443.1,0.0,34.02 -2013-03-03 05:00:00,4477.5,0.0,34.29 -2013-03-03 06:00:00,4549.3,0.0,33.36 -2013-03-03 07:00:00,4713.8,0.0,33.36 -2013-03-03 08:00:00,4979.4,0.0,33.86 -2013-03-03 09:00:00,5250.4,0.0,34.19 -2013-03-03 10:00:00,5459.4,0.0,34.28 -2013-03-03 11:00:00,5567.2,0.0,34.71 -2013-03-03 12:00:00,5599.4,0.0,36.56 -2013-03-03 13:00:00,5584.4,0.0,37.13 -2013-03-03 14:00:00,5553.7,0.0,36.83 -2013-03-03 15:00:00,5540.1,0.0,37.68 -2013-03-03 16:00:00,5587.0,0.0,37.93 -2013-03-03 17:00:00,5740.7,0.0,36.6 -2013-03-03 18:00:00,6035.0,0.0,35.84 -2013-03-03 19:00:00,6058.4,0.0,37.14 -2013-03-03 20:00:00,5990.0,0.0,34.9 -2013-03-03 21:00:00,5833.2,0.0,35.05 -2013-03-03 22:00:00,5564.6,0.0,34.59 -2013-03-03 23:00:00,5215.5,0.0,34.17 -2013-03-04 00:00:00,4917.8,0.0,33.17 -2013-03-04 01:00:00,4710.9,0.0,33.1 -2013-03-04 02:00:00,4592.1,0.0,32.93 -2013-03-04 03:00:00,4551.7,0.0,31.53 -2013-03-04 04:00:00,4592.8,0.0,32.76 -2013-03-04 05:00:00,4860.1,0.0,31.68 -2013-03-04 06:00:00,5395.6,0.0,32.04 -2013-03-04 07:00:00,5953.9,0.0,32.13 -2013-03-04 08:00:00,6295.7,0.0,32.47 -2013-03-04 09:00:00,6525.5,0.0,34.22 -2013-03-04 10:00:00,6616.2,0.0,34.56 -2013-03-04 11:00:00,6652.2,0.0,35.92 -2013-03-04 12:00:00,6628.3,0.0,38.11 -2013-03-04 13:00:00,6588.5,0.0,41.33 -2013-03-04 14:00:00,6541.1,0.0,41.49 -2013-03-04 15:00:00,6549.7,0.0,39.2 -2013-03-04 16:00:00,6595.9,0.0,39.6 -2013-03-04 17:00:00,6679.0,0.0,38.96 -2013-03-04 18:00:00,6765.8,0.0,37.37 -2013-03-04 19:00:00,6654.9,0.0,37.76 -2013-03-04 20:00:00,6468.4,0.0,37.66 -2013-03-04 21:00:00,6239.6,0.0,36.09 -2013-03-04 22:00:00,5852.0,0.0,35.09 -2013-03-04 23:00:00,5390.6,0.0,34.99 -2013-03-05 00:00:00,4983.4,0.0,34.9 -2013-03-05 01:00:00,4744.9,0.0,34.63 -2013-03-05 02:00:00,4603.1,0.0,34.63 -2013-03-05 03:00:00,4544.8,0.0,34.63 -2013-03-05 04:00:00,4583.2,0.0,34.63 -2013-03-05 05:00:00,4849.6,0.0,34.57 -2013-03-05 06:00:00,5354.4,0.0,34.38 -2013-03-05 07:00:00,5911.1,0.0,34.47 -2013-03-05 08:00:00,6255.8,0.0,35.56 -2013-03-05 09:00:00,6460.4,0.0,37.32 -2013-03-05 10:00:00,6532.1,0.0,40.16 -2013-03-05 11:00:00,6542.7,0.0,41.75 -2013-03-05 12:00:00,6517.0,0.0,42.8 -2013-03-05 13:00:00,6491.7,0.0,43.31 -2013-03-05 14:00:00,6434.4,0.0,43.89 -2013-03-05 15:00:00,6427.6,0.0,43.41 -2013-03-05 16:00:00,6464.4,0.0,43.44 -2013-03-05 17:00:00,6549.8,0.0,43.42 -2013-03-05 18:00:00,6617.4,0.0,41.89 -2013-03-05 19:00:00,6512.8,0.0,42.41 -2013-03-05 20:00:00,6295.5,0.0,40.7 -2013-03-05 21:00:00,6045.4,0.0,39.51 -2013-03-05 22:00:00,5682.9,0.0,38.81 -2013-03-05 23:00:00,5211.0,0.0,38.81 -2013-03-06 00:00:00,4806.0,0.0,35.76 -2013-03-06 01:00:00,4568.7,0.0,37.99 -2013-03-06 02:00:00,4436.5,0.0,37.5 -2013-03-06 03:00:00,4384.1,0.0069,37.88 -2013-03-06 04:00:00,4426.2,0.0,37.62 -2013-03-06 05:00:00,4698.2,0.0069,37.78 -2013-03-06 06:00:00,5257.9,0.0,38.82 -2013-03-06 07:00:00,5888.8,0.0,39.03 -2013-03-06 08:00:00,6272.0,0.0,39.12 -2013-03-06 09:00:00,6520.5,0.0,40.53 -2013-03-06 10:00:00,6627.1,0.0,40.51 -2013-03-06 11:00:00,6661.7,0.0,42.08 -2013-03-06 12:00:00,6668.7,0.0,42.2 -2013-03-06 13:00:00,6684.9,0.0,42.58 -2013-03-06 14:00:00,6676.5,0.0,42.26 -2013-03-06 15:00:00,6720.1,0.0035,42.0 -2013-03-06 16:00:00,6831.9,0.0,40.6 -2013-03-06 17:00:00,6897.4,0.0,41.12 -2013-03-06 18:00:00,6861.6,0.0,41.13 -2013-03-06 19:00:00,6704.3,0.0412,38.73 -2013-03-06 20:00:00,6473.0,0.0,40.61 -2013-03-06 21:00:00,6198.5,0.0,40.25 -2013-03-06 22:00:00,5799.3,0.0,40.18 -2013-03-06 23:00:00,5340.8,0.0206,38.79 -2013-03-07 00:00:00,4945.2,0.0275,38.46 -2013-03-07 01:00:00,4699.1,0.0069,38.1 -2013-03-07 02:00:00,4545.3,0.055,36.79 -2013-03-07 03:00:00,4496.5,0.1031,38.27 -2013-03-07 04:00:00,4530.0,0.0687,38.18 -2013-03-07 05:00:00,4797.1,0.0756,38.08 -2013-03-07 06:00:00,5344.7,0.11,36.93 -2013-03-07 07:00:00,5948.5,0.1306,36.84 -2013-03-07 08:00:00,6316.1,0.0,37.59 -2013-03-07 09:00:00,6548.6,0.0825,37.32 -2013-03-07 10:00:00,6655.4,0.0687,37.92 -2013-03-07 11:00:00,6695.0,0.0412,36.76 -2013-03-07 12:00:00,6723.2,0.0481,37.28 -2013-03-07 13:00:00,6713.7,0.055,37.03 -2013-03-07 14:00:00,6702.3,0.0825,37.0 -2013-03-07 15:00:00,6709.1,0.0423,36.52 -2013-03-07 16:00:00,6786.1,0.0492,36.03 -2013-03-07 17:00:00,6888.8,0.0317,35.93 -2013-03-07 18:00:00,6898.7,0.0572,35.84 -2013-03-07 19:00:00,6732.7,0.0011,38.54 -2013-03-07 20:00:00,6513.3,0.0158,36.17 -2013-03-07 21:00:00,6227.5,0.0286,35.82 -2013-03-07 22:00:00,5865.7,0.0523,36.3 -2013-03-07 23:00:00,5398.8,0.0122,35.63 -2013-03-08 00:00:00,5012.3,0.011,35.56 -2013-03-08 01:00:00,4774.6,0.0089,35.56 -2013-03-08 02:00:00,4625.2,0.0148,35.56 -2013-03-08 03:00:00,4567.9,0.0364,34.8 -2013-03-08 04:00:00,4605.7,0.0355,34.63 -2013-03-08 05:00:00,4857.5,0.0406,35.31 -2013-03-08 06:00:00,5402.4,0.0228,34.3 -2013-03-08 07:00:00,5968.0,0.0258,34.87 -2013-03-08 08:00:00,6359.4,0.029,34.87 -2013-03-08 09:00:00,6655.8,0.0263,34.71 -2013-03-08 10:00:00,6810.2,0.0367,34.77 -2013-03-08 11:00:00,6859.2,0.0169,35.21 -2013-03-08 12:00:00,6875.1,0.0313,35.39 -2013-03-08 13:00:00,6853.6,0.01,35.73 -2013-03-08 14:00:00,6791.4,0.0237,35.9 -2013-03-08 15:00:00,6767.0,0.0355,36.42 -2013-03-08 16:00:00,6754.3,0.0206,37.65 -2013-03-08 17:00:00,6762.1,0.0206,37.87 -2013-03-08 18:00:00,6773.6,0.0137,39.55 -2013-03-08 19:00:00,6592.5,0.0,38.9 -2013-03-08 20:00:00,6358.1,0.0,41.39 -2013-03-08 21:00:00,6100.4,0.0,41.98 -2013-03-08 22:00:00,5790.4,0.0,40.73 -2013-03-08 23:00:00,5411.2,0.0,40.66 -2013-03-09 00:00:00,5028.0,0.0,39.27 -2013-03-09 01:00:00,4790.6,0.0,38.85 -2013-03-09 02:00:00,4626.9,0.0,37.45 -2013-03-09 03:00:00,4541.8,0.0,36.99 -2013-03-09 04:00:00,4518.8,0.0,37.33 -2013-03-09 05:00:00,4586.1,0.0,36.59 -2013-03-09 06:00:00,4715.0,0.0,36.59 -2013-03-09 07:00:00,4958.7,0.0,36.59 -2013-03-09 08:00:00,5251.7,0.0,37.25 -2013-03-09 09:00:00,5490.1,0.0,39.16 -2013-03-09 10:00:00,5639.8,0.0,40.62 -2013-03-09 11:00:00,5701.8,0.0,41.1 -2013-03-09 12:00:00,5692.4,0.0,41.95 -2013-03-09 13:00:00,5623.0,0.0,42.89 -2013-03-09 14:00:00,5539.6,0.0,43.77 -2013-03-09 15:00:00,5494.3,0.0,44.69 -2013-03-09 16:00:00,5500.9,0.0,45.17 -2013-03-09 17:00:00,5572.7,0.0,44.12 -2013-03-09 18:00:00,5812.5,0.0,43.2 -2013-03-09 19:00:00,5818.5,0.0,41.85 -2013-03-09 20:00:00,5703.6,0.0,42.07 -2013-03-09 21:00:00,5554.9,0.0,41.56 -2013-03-09 22:00:00,5340.6,0.0,40.44 -2013-03-09 23:00:00,5084.6,0.0,39.72 -2013-03-10 00:00:00,4810.4,0.0,38.07 -2013-03-10 01:00:00,4579.0,0.0,38.86 -2013-03-10 03:00:00,4427.5,0.0,36.6 -2013-03-10 04:00:00,4342.4,0.0,37.62 -2013-03-10 05:00:00,4347.9,0.0,36.18 -2013-03-10 06:00:00,4451.8,0.0,36.1 -2013-03-10 07:00:00,4546.6,0.0,36.1 -2013-03-10 08:00:00,4744.9,0.0,37.19 -2013-03-10 09:00:00,4987.3,0.0,38.28 -2013-03-10 10:00:00,5197.2,0.0,40.13 -2013-03-10 11:00:00,5334.3,0.0,40.41 -2013-03-10 12:00:00,5398.2,0.0,41.7 -2013-03-10 13:00:00,5401.1,0.0,43.07 -2013-03-10 14:00:00,5369.7,0.0,42.05 -2013-03-10 15:00:00,5366.9,0.0,42.2 -2013-03-10 16:00:00,5371.3,0.0,42.13 -2013-03-10 17:00:00,5422.4,0.0,41.72 -2013-03-10 18:00:00,5539.8,0.0,39.32 -2013-03-10 19:00:00,5811.5,0.0,37.96 -2013-03-10 20:00:00,5837.4,0.0,40.25 -2013-03-10 21:00:00,5716.3,0.0,37.69 -2013-03-10 22:00:00,5461.7,0.0,37.21 -2013-03-10 23:00:00,5100.9,0.0,37.78 -2013-03-11 00:00:00,4775.2,0.0,37.93 -2013-03-11 01:00:00,4537.0,0.0,38.02 -2013-03-11 02:00:00,4389.0,0.0,38.12 -2013-03-11 03:00:00,4323.3,0.0,38.45 -2013-03-11 04:00:00,4338.5,0.0,38.45 -2013-03-11 05:00:00,4571.5,0.0,38.55 -2013-03-11 06:00:00,5143.7,0.0,38.81 -2013-03-11 07:00:00,5745.6,0.0,39.15 -2013-03-11 08:00:00,6100.2,0.0,39.32 -2013-03-11 09:00:00,6336.9,0.0,40.89 -2013-03-11 10:00:00,6450.7,0.0,43.55 -2013-03-11 11:00:00,6458.6,0.0,43.6 -2013-03-11 12:00:00,6440.8,0.0,46.22 -2013-03-11 13:00:00,6401.7,0.0,46.72 -2013-03-11 14:00:00,6352.4,0.0,47.52 -2013-03-11 15:00:00,6348.4,0.0,47.61 -2013-03-11 16:00:00,6392.0,0.0,47.74 -2013-03-11 17:00:00,6408.9,0.0,46.5 -2013-03-11 18:00:00,6318.2,0.0,46.14 -2013-03-11 19:00:00,6404.6,0.0,44.47 -2013-03-11 20:00:00,6246.8,0.0,48.69 -2013-03-11 21:00:00,6006.8,0.0,44.47 -2013-03-11 22:00:00,5644.5,0.0,44.23 -2013-03-11 23:00:00,5175.7,0.0,44.87 -2013-03-12 00:00:00,4741.0,0.0,45.24 -2013-03-12 01:00:00,4470.4,0.0,45.34 -2013-03-12 02:00:00,4312.6,0.0,46.97 -2013-03-12 03:00:00,4242.5,0.0,47.05 -2013-03-12 04:00:00,4253.4,0.0,47.08 -2013-03-12 05:00:00,4492.7,0.0,46.31 -2013-03-12 06:00:00,5063.1,0.0269,46.74 -2013-03-12 07:00:00,5699.6,0.0269,46.85 -2013-03-12 08:00:00,6095.0,0.0435,47.43 -2013-03-12 09:00:00,6349.2,0.02,47.63 -2013-03-12 10:00:00,6467.1,0.04,48.86 -2013-03-12 11:00:00,6532.5,0.0635,49.28 -2013-03-12 12:00:00,6579.4,0.0727,49.18 -2013-03-12 13:00:00,6596.7,0.0527,49.83 -2013-03-12 14:00:00,6607.4,0.0969,50.89 -2013-03-12 15:00:00,6607.7,0.0296,50.0 -2013-03-12 16:00:00,6613.0,0.1023,49.83 -2013-03-12 17:00:00,6578.1,0.0069,50.51 -2013-03-12 18:00:00,6435.2,0.0104,50.15 -2013-03-12 19:00:00,6413.7,0.0065,50.29 -2013-03-12 20:00:00,6233.7,0.0,45.65 -2013-03-12 21:00:00,5994.2,0.0069,48.82 -2013-03-12 22:00:00,5628.2,0.0137,48.82 -2013-03-12 23:00:00,5160.0,0.0,48.07 -2013-03-13 00:00:00,4729.0,0.0,46.3 -2013-03-13 01:00:00,4473.3,0.0069,45.98 -2013-03-13 02:00:00,4318.6,0.0619,46.77 -2013-03-13 03:00:00,4246.6,0.0825,45.3 -2013-03-13 04:00:00,4265.7,0.0344,43.89 -2013-03-13 05:00:00,4522.4,0.0,43.62 -2013-03-13 06:00:00,5113.0,0.0069,43.62 -2013-03-13 07:00:00,5692.0,0.0137,42.96 -2013-03-13 08:00:00,6025.6,0.0,41.87 -2013-03-13 09:00:00,6246.8,0.0,42.51 -2013-03-13 10:00:00,6331.1,0.0,44.08 -2013-03-13 11:00:00,6360.1,0.0,44.97 -2013-03-13 12:00:00,6371.1,0.0,46.66 -2013-03-13 13:00:00,6353.7,0.0,46.36 -2013-03-13 14:00:00,6323.4,0.0,46.43 -2013-03-13 15:00:00,6325.6,0.0,47.31 -2013-03-13 16:00:00,6329.9,0.0,47.29 -2013-03-13 17:00:00,6329.2,0.0,47.12 -2013-03-13 18:00:00,6226.6,0.0,44.87 -2013-03-13 19:00:00,6321.9,0.0,43.12 -2013-03-13 20:00:00,6211.8,0.0,35.94 -2013-03-13 21:00:00,5991.7,0.0,42.89 -2013-03-13 22:00:00,5642.9,0.0,42.47 -2013-03-13 23:00:00,5198.8,0.0,41.25 -2013-03-14 00:00:00,4789.2,0.0,38.42 -2013-03-14 01:00:00,4539.4,0.0,37.57 -2013-03-14 02:00:00,4395.9,0.0,35.52 -2013-03-14 03:00:00,4346.8,0.0,36.55 -2013-03-14 04:00:00,4375.3,0.0,36.39 -2013-03-14 05:00:00,4666.1,0.0,35.44 -2013-03-14 06:00:00,5239.1,0.0,34.85 -2013-03-14 07:00:00,5866.7,0.0,34.21 -2013-03-14 08:00:00,6311.3,0.0,34.38 -2013-03-14 09:00:00,6538.5,0.0,35.41 -2013-03-14 10:00:00,6628.7,0.0,35.18 -2013-03-14 11:00:00,6673.4,0.0,33.71 -2013-03-14 12:00:00,6681.9,0.0,34.62 -2013-03-14 13:00:00,6643.9,0.0,36.31 -2013-03-14 14:00:00,6601.3,0.0,36.8 -2013-03-14 15:00:00,6582.8,0.0,36.61 -2013-03-14 16:00:00,6559.9,0.0,37.08 -2013-03-14 17:00:00,6532.2,0.0,36.69 -2013-03-14 18:00:00,6407.0,0.0,36.76 -2013-03-14 19:00:00,6521.4,0.0,36.31 -2013-03-14 20:00:00,6429.3,0.0,38.75 -2013-03-14 21:00:00,6200.9,0.0,32.99 -2013-03-14 22:00:00,5862.5,0.0,32.73 -2013-03-14 23:00:00,5411.6,0.0,31.56 -2013-03-15 00:00:00,5009.6,0.0,30.73 -2013-03-15 01:00:00,4746.2,0.0,29.89 -2013-03-15 02:00:00,4590.6,0.0,29.37 -2013-03-15 03:00:00,4522.1,0.0,29.28 -2013-03-15 04:00:00,4537.1,0.0,28.95 -2013-03-15 05:00:00,4780.5,0.0,28.37 -2013-03-15 06:00:00,5348.8,0.0,28.78 -2013-03-15 07:00:00,5933.5,0.0,27.63 -2013-03-15 08:00:00,6258.5,0.0,28.61 -2013-03-15 09:00:00,6479.2,0.0,29.54 -2013-03-15 10:00:00,6571.0,0.0,31.31 -2013-03-15 11:00:00,6579.4,0.0,32.37 -2013-03-15 12:00:00,6542.1,0.0,35.38 -2013-03-15 13:00:00,6538.2,0.0,37.31 -2013-03-15 14:00:00,6541.1,0.0,38.45 -2013-03-15 15:00:00,6509.1,0.0,38.87 -2013-03-15 16:00:00,6488.2,0.0,39.67 -2013-03-15 17:00:00,6491.0,0.0,40.74 -2013-03-15 18:00:00,6359.0,0.0,40.78 -2013-03-15 19:00:00,6309.0,0.0,40.94 -2013-03-15 20:00:00,6121.8,0.0,40.43 -2013-03-15 21:00:00,5902.2,0.0,42.18 -2013-03-15 22:00:00,5609.9,0.0,41.79 -2013-03-15 23:00:00,5242.1,0.0,41.99 -2013-03-16 00:00:00,4875.9,0.0,40.28 -2013-03-16 01:00:00,4635.0,0.0,38.88 -2013-03-16 02:00:00,4467.8,0.0,38.36 -2013-03-16 03:00:00,4381.3,0.0,38.1 -2013-03-16 04:00:00,4364.8,0.0,37.58 -2013-03-16 05:00:00,4417.3,0.0,36.19 -2013-03-16 06:00:00,4614.7,0.0,36.24 -2013-03-16 07:00:00,4854.1,0.0,35.01 -2013-03-16 08:00:00,5159.1,0.0,35.84 -2013-03-16 09:00:00,5456.6,0.0,36.2 -2013-03-16 10:00:00,5665.4,0.0,36.61 -2013-03-16 11:00:00,5759.7,0.0,36.61 -2013-03-16 12:00:00,5770.5,0.0,36.7 -2013-03-16 13:00:00,5762.3,0.0,36.51 -2013-03-16 14:00:00,5773.9,0.0065,37.04 -2013-03-16 15:00:00,5764.6,0.0135,36.71 -2013-03-16 16:00:00,5795.6,0.0231,35.39 -2013-03-16 17:00:00,5844.9,0.01,35.32 -2013-03-16 18:00:00,5892.8,0.0035,34.92 -2013-03-16 19:00:00,5959.4,0.0,35.01 -2013-03-16 20:00:00,5865.5,0.0065,33.79 -2013-03-16 21:00:00,5726.7,0.0,34.92 -2013-03-16 22:00:00,5515.6,0.0,34.99 -2013-03-16 23:00:00,5238.5,0.0,34.01 -2013-03-17 00:00:00,4938.5,0.0,34.1 -2013-03-17 01:00:00,4680.8,0.0,34.17 -2013-03-17 02:00:00,4508.1,0.0,33.99 -2013-03-17 03:00:00,4420.2,0.0,33.75 -2013-03-17 04:00:00,4390.6,0.0,31.1 -2013-03-17 05:00:00,4440.4,0.0,30.33 -2013-03-17 06:00:00,4558.3,0.0,31.82 -2013-03-17 07:00:00,4699.1,0.0,30.24 -2013-03-17 08:00:00,4946.7,0.0,29.81 -2013-03-17 09:00:00,5193.9,0.0,34.19 -2013-03-17 10:00:00,5404.0,0.0,35.86 -2013-03-17 11:00:00,5532.9,0.0,36.29 -2013-03-17 12:00:00,5592.2,0.0,35.4 -2013-03-17 13:00:00,5589.9,0.0,35.56 -2013-03-17 14:00:00,5577.5,0.0,35.92 -2013-03-17 15:00:00,5561.6,0.0,37.49 -2013-03-17 16:00:00,5560.1,0.0,36.77 -2013-03-17 17:00:00,5611.7,0.0,37.17 -2013-03-17 18:00:00,5690.9,0.0,36.36 -2013-03-17 19:00:00,5889.5,0.0,35.19 -2013-03-17 20:00:00,5893.8,0.0,35.19 -2013-03-17 21:00:00,5758.7,0.0,32.8 -2013-03-17 22:00:00,5519.0,0.0,32.63 -2013-03-17 23:00:00,5159.6,0.0,34.51 -2013-03-18 00:00:00,4836.6,0.0,34.21 -2013-03-18 01:00:00,4625.6,0.0,32.34 -2013-03-18 02:00:00,4490.5,0.0,30.8 -2013-03-18 03:00:00,4439.6,0.0,30.37 -2013-03-18 04:00:00,4487.9,0.0,28.89 -2013-03-18 05:00:00,4748.0,0.0,28.53 -2013-03-18 06:00:00,5325.4,0.0,27.7 -2013-03-18 07:00:00,5914.8,0.0,27.87 -2013-03-18 08:00:00,6287.2,0.0,29.86 -2013-03-18 09:00:00,6515.8,0.0,32.41 -2013-03-18 10:00:00,6613.0,0.0,32.99 -2013-03-18 11:00:00,6656.9,0.0,33.75 -2013-03-18 12:00:00,6665.3,0.0,35.14 -2013-03-18 13:00:00,6673.0,0.0,35.11 -2013-03-18 14:00:00,6679.6,0.0,35.28 -2013-03-18 15:00:00,6716.8,0.0,33.94 -2013-03-18 16:00:00,6783.4,0.0,35.19 -2013-03-18 17:00:00,6847.3,0.0,33.08 -2013-03-18 18:00:00,6781.4,0.0135,32.97 -2013-03-18 19:00:00,6757.8,0.02,32.9 -2013-03-18 20:00:00,6599.4,0.0908,35.86 -2013-03-18 21:00:00,6334.5,0.1065,32.99 -2013-03-18 22:00:00,5928.5,0.0231,33.0 -2013-03-18 23:00:00,5474.2,0.0904,34.08 -2013-03-19 00:00:00,5071.5,0.0665,35.08 -2013-03-19 01:00:00,4805.2,0.05,35.18 -2013-03-19 02:00:00,4652.2,0.04,35.27 -2013-03-19 03:00:00,4585.8,0.0302,35.6 -2013-03-19 04:00:00,4613.1,0.0459,35.67 -2013-03-19 05:00:00,4857.0,0.0433,36.57 -2013-03-19 06:00:00,5421.9,0.0914,36.67 -2013-03-19 07:00:00,5978.5,0.055,36.91 -2013-03-19 08:00:00,6357.0,0.0481,37.99 -2013-03-19 09:00:00,6612.0,0.0619,38.23 -2013-03-19 10:00:00,6733.4,0.0206,40.62 -2013-03-19 11:00:00,6812.4,0.009,40.12 -2013-03-19 12:00:00,6824.8,0.0521,40.29 -2013-03-19 13:00:00,6734.4,0.009,41.43 -2013-03-19 14:00:00,6637.8,0.0206,41.95 -2013-03-19 15:00:00,6613.5,0.0,42.38 -2013-03-19 16:00:00,6592.3,0.0,42.66 -2013-03-19 17:00:00,6500.0,0.0,42.47 -2013-03-19 18:00:00,6341.0,0.0,43.32 -2013-03-19 19:00:00,6424.2,0.0,42.08 -2013-03-19 20:00:00,6333.2,0.0,39.72 -2013-03-19 21:00:00,6097.6,0.0,39.17 -2013-03-19 22:00:00,5760.6,0.0,38.51 -2013-03-19 23:00:00,5305.1,0.0,38.03 -2013-03-20 00:00:00,4895.8,0.0,37.1 -2013-03-20 01:00:00,4649.2,0.0,36.34 -2013-03-20 02:00:00,4498.5,0.0,35.03 -2013-03-20 03:00:00,4450.2,0.0,34.6 -2013-03-20 04:00:00,4487.5,0.0,34.24 -2013-03-20 05:00:00,4751.6,0.0,32.83 -2013-03-20 06:00:00,5335.5,0.0,33.63 -2013-03-20 07:00:00,5890.7,0.0,32.48 -2013-03-20 08:00:00,6251.4,0.0,33.98 -2013-03-20 09:00:00,6471.2,0.0,35.74 -2013-03-20 10:00:00,6546.1,0.0,36.1 -2013-03-20 11:00:00,6569.0,0.0,37.59 -2013-03-20 12:00:00,6537.9,0.0,38.3 -2013-03-20 13:00:00,6513.4,0.0,39.3 -2013-03-20 14:00:00,6467.9,0.0,40.14 -2013-03-20 15:00:00,6454.4,0.0,42.05 -2013-03-20 16:00:00,6476.7,0.0,41.07 -2013-03-20 17:00:00,6460.1,0.0,41.54 -2013-03-20 18:00:00,6327.4,0.0,41.05 -2013-03-20 19:00:00,6364.2,0.0,39.8 -2013-03-20 20:00:00,6277.7,0.0,39.39 -2013-03-20 21:00:00,6043.3,0.0,38.82 -2013-03-20 22:00:00,5692.6,0.0,38.81 -2013-03-20 23:00:00,5244.7,0.0,38.12 -2013-03-21 00:00:00,4839.1,0.0,37.46 -2013-03-21 01:00:00,4599.8,0.0,37.26 -2013-03-21 02:00:00,4460.2,0.0,37.9 -2013-03-21 03:00:00,4409.9,0.0,35.88 -2013-03-21 04:00:00,4446.2,0.0,31.35 -2013-03-21 05:00:00,4703.1,0.0,30.13 -2013-03-21 06:00:00,5280.3,0.0,32.6 -2013-03-21 07:00:00,5894.5,0.0,31.19 -2013-03-21 08:00:00,6268.7,0.0,34.44 -2013-03-21 09:00:00,6509.7,0.0,37.34 -2013-03-21 10:00:00,6585.6,0.0,38.55 -2013-03-21 11:00:00,6616.5,0.0,38.34 -2013-03-21 12:00:00,6618.1,0.0,40.32 -2013-03-21 13:00:00,6627.7,0.0,39.33 -2013-03-21 14:00:00,6604.5,0.0,39.01 -2013-03-21 15:00:00,6626.5,0.0,39.57 -2013-03-21 16:00:00,6591.0,0.0,40.17 -2013-03-21 17:00:00,6521.8,0.0,39.04 -2013-03-21 18:00:00,6368.6,0.0,38.51 -2013-03-21 19:00:00,6446.4,0.0,37.2 -2013-03-21 20:00:00,6372.5,0.0,36.98 -2013-03-21 21:00:00,6153.9,0.0206,36.3 -2013-03-21 22:00:00,5827.8,0.0206,34.15 -2013-03-21 23:00:00,5389.4,0.0,33.72 -2013-03-22 00:00:00,4992.2,0.0069,33.3 -2013-03-22 01:00:00,4744.8,0.0137,32.97 -2013-03-22 02:00:00,4590.8,0.0,32.54 -2013-03-22 03:00:00,4518.2,0.0,32.63 -2013-03-22 04:00:00,4541.6,0.0,31.3 -2013-03-22 05:00:00,4783.2,0.0,30.17 -2013-03-22 06:00:00,5334.4,0.0,29.98 -2013-03-22 07:00:00,5901.4,0.0,29.88 -2013-03-22 08:00:00,6261.4,0.0,30.05 -2013-03-22 09:00:00,6473.0,0.0,30.69 -2013-03-22 10:00:00,6563.4,0.0,33.6 -2013-03-22 11:00:00,6612.3,0.0,34.28 -2013-03-22 12:00:00,6585.6,0.0,36.03 -2013-03-22 13:00:00,6580.4,0.0,36.46 -2013-03-22 14:00:00,6608.6,0.0,36.97 -2013-03-22 15:00:00,6566.2,0.0,37.62 -2013-03-22 16:00:00,6529.6,0.0,38.22 -2013-03-22 17:00:00,6472.2,0.0,38.95 -2013-03-22 18:00:00,6319.0,0.0,38.47 -2013-03-22 19:00:00,6343.2,0.0,38.36 -2013-03-22 20:00:00,6230.2,0.0,39.34 -2013-03-22 21:00:00,6031.5,0.0,38.0 -2013-03-22 22:00:00,5745.1,0.0,37.57 -2013-03-22 23:00:00,5362.8,0.0,37.72 -2013-03-23 00:00:00,4984.1,0.0,36.79 -2013-03-23 01:00:00,4732.5,0.0,36.14 -2013-03-23 02:00:00,4557.8,0.0,34.99 -2013-03-23 03:00:00,4482.8,0.0,34.92 -2013-03-23 04:00:00,4473.8,0.0,34.66 -2013-03-23 05:00:00,4538.1,0.0,34.0 -2013-03-23 06:00:00,4715.5,0.0,34.15 -2013-03-23 07:00:00,4940.4,0.0,34.05 -2013-03-23 08:00:00,5231.4,0.0,35.48 -2013-03-23 09:00:00,5485.2,0.0,36.74 -2013-03-23 10:00:00,5668.8,0.0,38.41 -2013-03-23 11:00:00,5738.9,0.0,39.6 -2013-03-23 12:00:00,5758.5,0.0,40.94 -2013-03-23 13:00:00,5710.9,0.0,42.43 -2013-03-23 14:00:00,5657.8,0.0,42.69 -2013-03-23 15:00:00,5613.1,0.0,44.11 -2013-03-23 16:00:00,5572.8,0.0,44.62 -2013-03-23 17:00:00,5567.1,0.0,44.04 -2013-03-23 18:00:00,5619.4,0.0,43.3 -2013-03-23 19:00:00,5784.4,0.0,41.69 -2013-03-23 20:00:00,5816.7,0.0,38.31 -2013-03-23 21:00:00,5714.4,0.0,39.7 -2013-03-23 22:00:00,5536.9,0.0,39.18 -2013-03-23 23:00:00,5263.6,0.0,38.18 -2013-03-24 00:00:00,4967.6,0.0,37.27 -2013-03-24 01:00:00,4727.7,0.0,36.82 -2013-03-24 02:00:00,4540.4,0.0,35.91 -2013-03-24 03:00:00,4424.9,0.0,35.75 -2013-03-24 04:00:00,4385.1,0.0,35.39 -2013-03-24 05:00:00,4428.5,0.0,34.63 -2013-03-24 06:00:00,4527.3,0.0,35.2 -2013-03-24 07:00:00,4676.3,0.0,34.88 -2013-03-24 08:00:00,4917.7,0.0,35.8 -2013-03-24 09:00:00,5145.7,0.0,37.56 -2013-03-24 10:00:00,5329.5,0.0,39.49 -2013-03-24 11:00:00,5432.4,0.0,41.08 -2013-03-24 12:00:00,5461.1,0.0,42.07 -2013-03-24 13:00:00,5442.4,0.0,43.91 -2013-03-24 14:00:00,5421.3,0.0,43.28 -2013-03-24 15:00:00,5406.7,0.0,45.05 -2013-03-24 16:00:00,5421.4,0.0,45.1 -2013-03-24 17:00:00,5471.9,0.0,43.81 -2013-03-24 18:00:00,5569.4,0.0,42.5 -2013-03-24 19:00:00,5752.0,0.0,39.98 -2013-03-24 20:00:00,5769.9,0.0,38.54 -2013-03-24 21:00:00,5645.0,0.0,36.75 -2013-03-24 22:00:00,5432.7,0.0,36.49 -2013-03-24 23:00:00,5084.6,0.0,37.55 -2013-03-25 00:00:00,4756.7,0.0,37.71 -2013-03-25 01:00:00,4522.2,0.0,36.42 -2013-03-25 02:00:00,4386.3,0.0,36.33 -2013-03-25 03:00:00,4307.9,0.0,35.01 -2013-03-25 04:00:00,4343.2,0.0,34.85 -2013-03-25 05:00:00,4588.4,0.0,35.73 -2013-03-25 06:00:00,5090.9,0.0,36.88 -2013-03-25 07:00:00,5625.8,0.0,35.73 -2013-03-25 08:00:00,6096.2,0.0,37.46 -2013-03-25 09:00:00,6400.9,0.0,41.4 -2013-03-25 10:00:00,6566.0,0.0,41.32 -2013-03-25 11:00:00,6659.4,0.0,42.8 -2013-03-25 12:00:00,6693.4,0.0,42.6 -2013-03-25 13:00:00,6695.6,0.0,42.77 -2013-03-25 14:00:00,6674.3,0.0,40.63 -2013-03-25 15:00:00,6664.7,0.002,40.62 -2013-03-25 16:00:00,6661.3,0.01,41.04 -2013-03-25 17:00:00,6634.7,0.0231,39.25 -2013-03-25 18:00:00,6485.4,0.0196,38.25 -2013-03-25 19:00:00,6457.4,0.0165,38.34 -2013-03-25 20:00:00,6321.8,0.0265,36.69 -2013-03-25 21:00:00,6085.1,0.0,38.84 -2013-03-25 22:00:00,5764.9,0.002,37.37 -2013-03-25 23:00:00,5313.4,0.0137,38.06 -2013-03-26 00:00:00,4934.9,0.0,37.76 -2013-03-26 01:00:00,4616.2,0.0,37.88 -2013-03-26 02:00:00,4459.9,0.0069,37.6 -2013-03-26 03:00:00,4389.2,0.0,37.6 -2013-03-26 04:00:00,4407.7,0.0,37.39 -2013-03-26 05:00:00,4620.8,0.0,38.42 -2013-03-26 06:00:00,5086.4,0.0,36.73 -2013-03-26 07:00:00,5595.5,0.0,37.39 -2013-03-26 08:00:00,5982.2,0.0,37.74 -2013-03-26 09:00:00,6216.7,0.0,40.55 -2013-03-26 10:00:00,6283.3,0.0,41.26 -2013-03-26 11:00:00,6299.7,0.0,42.9 -2013-03-26 12:00:00,6306.8,0.0,44.49 -2013-03-26 13:00:00,6287.1,0.0,45.44 -2013-03-26 14:00:00,6247.8,0.0,46.59 -2013-03-26 15:00:00,6295.6,0.0,46.5 -2013-03-26 16:00:00,6307.1,0.0,46.53 -2013-03-26 17:00:00,6276.8,0.0,46.77 -2013-03-26 18:00:00,6097.9,0.0,44.76 -2013-03-26 19:00:00,6128.9,0.0,41.04 -2013-03-26 20:00:00,6071.4,0.0,43.8 -2013-03-26 21:00:00,5875.9,0.0,40.19 -2013-03-26 22:00:00,5559.7,0.0,41.25 -2013-03-26 23:00:00,5171.3,0.0,40.63 -2013-03-27 00:00:00,4777.2,0.0,40.3 -2013-03-27 01:00:00,4519.9,0.0,38.7 -2013-03-27 02:00:00,4383.2,0.0,38.27 -2013-03-27 03:00:00,4325.5,0.0,37.94 -2013-03-27 04:00:00,4345.8,0.0,37.67 -2013-03-27 05:00:00,4574.2,0.0,36.93 -2013-03-27 06:00:00,5038.2,0.0,36.75 -2013-03-27 07:00:00,5545.7,0.0,35.43 -2013-03-27 08:00:00,5941.3,0.0,38.65 -2013-03-27 09:00:00,6175.2,0.0,41.65 -2013-03-27 10:00:00,6268.3,0.0,43.94 -2013-03-27 11:00:00,6307.1,0.0,46.58 -2013-03-27 12:00:00,6307.5,0.0,48.11 -2013-03-27 13:00:00,6299.3,0.0,47.77 -2013-03-27 14:00:00,6266.3,0.0,46.37 -2013-03-27 15:00:00,6233.1,0.0,47.12 -2013-03-27 16:00:00,6222.4,0.0,48.82 -2013-03-27 17:00:00,6179.7,0.0,48.4 -2013-03-27 18:00:00,6027.9,0.0,47.2 -2013-03-27 19:00:00,6092.3,0.0,45.52 -2013-03-27 20:00:00,6066.5,0.0,44.61 -2013-03-27 21:00:00,5867.8,0.0,43.6 -2013-03-27 22:00:00,5579.4,0.0,40.98 -2013-03-27 23:00:00,5150.3,0.0,40.55 -2013-03-28 00:00:00,4760.2,0.0,41.15 -2013-03-28 01:00:00,4516.5,0.0,40.82 -2013-03-28 02:00:00,4357.7,0.0,39.24 -2013-03-28 03:00:00,4294.6,0.0069,39.18 -2013-03-28 04:00:00,4312.5,0.0,38.92 -2013-03-28 05:00:00,4537.5,0.0,38.82 -2013-03-28 06:00:00,5002.8,0.0,38.75 -2013-03-28 07:00:00,5495.0,0.0069,38.73 -2013-03-28 08:00:00,5906.8,0.0,39.08 -2013-03-28 09:00:00,6145.6,0.0069,39.88 -2013-03-28 10:00:00,6253.9,0.0069,42.05 -2013-03-28 11:00:00,6296.4,0.0,44.86 -2013-03-28 12:00:00,6303.7,0.0,45.96 -2013-03-28 13:00:00,6299.9,0.0,47.7 -2013-03-28 14:00:00,6286.2,0.0,47.68 -2013-03-28 15:00:00,6274.1,0.0,48.03 -2013-03-28 16:00:00,6295.5,0.0,47.69 -2013-03-28 17:00:00,6266.2,0.0,46.45 -2013-03-28 18:00:00,6140.6,0.0035,46.05 -2013-03-28 19:00:00,6145.0,0.0,44.74 -2013-03-28 20:00:00,6031.8,0.0,43.33 -2013-03-28 21:00:00,5827.8,0.0,44.48 -2013-03-28 22:00:00,5563.3,0.0,44.15 -2013-03-28 23:00:00,5175.1,0.0,43.22 -2013-03-29 00:00:00,4789.0,0.0,42.45 -2013-03-29 01:00:00,4518.0,0.0,43.32 -2013-03-29 02:00:00,4355.6,0.0,42.03 -2013-03-29 03:00:00,4270.8,0.0,40.88 -2013-03-29 04:00:00,4284.6,0.0,41.94 -2013-03-29 05:00:00,4471.6,0.0,41.51 -2013-03-29 06:00:00,4849.8,0.0,39.94 -2013-03-29 07:00:00,5259.5,0.0,39.78 -2013-03-29 08:00:00,5647.3,0.0,43.57 -2013-03-29 09:00:00,5900.7,0.0,44.92 -2013-03-29 10:00:00,6020.0,0.0,47.01 -2013-03-29 11:00:00,6067.4,0.0,49.84 -2013-03-29 12:00:00,6045.2,0.0,52.48 -2013-03-29 13:00:00,5997.9,0.0,51.48 -2013-03-29 14:00:00,5946.6,0.0,51.95 -2013-03-29 15:00:00,5911.9,0.0,50.88 -2013-03-29 16:00:00,5899.3,0.0,51.99 -2013-03-29 17:00:00,5880.4,0.0,50.4 -2013-03-29 18:00:00,5793.1,0.0,47.67 -2013-03-29 19:00:00,5826.7,0.0,46.58 -2013-03-29 20:00:00,5772.5,0.0,42.77 -2013-03-29 21:00:00,5606.3,0.0,43.4 -2013-03-29 22:00:00,5358.1,0.0,44.39 -2013-03-29 23:00:00,5035.5,0.0,44.03 -2013-03-30 00:00:00,4699.8,0.0,42.52 -2013-03-30 01:00:00,4467.4,0.0,41.38 -2013-03-30 02:00:00,4287.7,0.0,42.71 -2013-03-30 03:00:00,4204.0,0.0,42.62 -2013-03-30 04:00:00,4173.8,0.0,42.44 -2013-03-30 05:00:00,4240.3,0.0,41.38 -2013-03-30 06:00:00,4397.6,0.0,41.78 -2013-03-30 07:00:00,4599.3,0.0,39.49 -2013-03-30 08:00:00,4876.8,0.0,41.18 -2013-03-30 09:00:00,5122.6,0.0,44.44 -2013-03-30 10:00:00,5303.1,0.0,46.22 -2013-03-30 11:00:00,5367.7,0.0,48.46 -2013-03-30 12:00:00,5377.5,0.0,49.12 -2013-03-30 13:00:00,5325.4,0.0,51.21 -2013-03-30 14:00:00,5268.5,0.0,52.8 -2013-03-30 15:00:00,5226.1,0.0,53.35 -2013-03-30 16:00:00,5205.8,0.0,52.24 -2013-03-30 17:00:00,5214.4,0.0,51.77 -2013-03-30 18:00:00,5258.9,0.0,50.06 -2013-03-30 19:00:00,5402.1,0.0,47.17 -2013-03-30 20:00:00,5458.0,0.0,47.45 -2013-03-30 21:00:00,5361.5,0.0,43.76 -2013-03-30 22:00:00,5184.1,0.0,42.39 -2013-03-30 23:00:00,4955.4,0.0,42.66 -2013-03-31 00:00:00,4665.7,0.0,41.75 -2013-03-31 01:00:00,4412.6,0.0,41.42 -2013-03-31 02:00:00,4248.6,0.0,40.91 -2013-03-31 03:00:00,4135.5,0.0,39.82 -2013-03-31 04:00:00,4065.7,0.0,39.72 -2013-03-31 05:00:00,4117.9,0.0,38.89 -2013-03-31 06:00:00,4187.9,0.0,37.89 -2013-03-31 07:00:00,4328.2,0.0,38.06 -2013-03-31 08:00:00,4556.9,0.0,42.49 -2013-03-31 09:00:00,4764.6,0.0,45.16 -2013-03-31 10:00:00,4938.4,0.0,47.69 -2013-03-31 11:00:00,5035.0,0.0,48.71 -2013-03-31 12:00:00,5093.8,0.0,49.49 -2013-03-31 13:00:00,5093.2,0.0,49.79 -2013-03-31 14:00:00,5115.6,0.0,48.74 -2013-03-31 15:00:00,5117.3,0.0,49.43 -2013-03-31 16:00:00,5148.0,0.0,49.61 -2013-03-31 17:00:00,5203.7,0.0,48.02 -2013-03-31 18:00:00,5314.9,0.0,47.74 -2013-03-31 19:00:00,5452.5,0.0,46.42 -2013-03-31 20:00:00,5449.8,0.0296,46.39 -2013-03-31 21:00:00,5371.3,0.0427,45.77 -2013-03-31 22:00:00,5171.8,0.0461,46.0 -2013-03-31 23:00:00,4886.1,0.0104,46.0 -2013-04-01 00:00:00,4588.3,0.0,44.69 -2013-04-01 01:00:00,4360.5,0.0,44.86 -2013-04-01 02:00:00,4202.6,0.0,45.49 -2013-04-01 03:00:00,4132.9,0.0,46.15 -2013-04-01 04:00:00,4156.5,0.0,45.53 -2013-04-01 05:00:00,4383.1,0.0,44.95 -2013-04-01 06:00:00,4852.9,0.0,44.76 -2013-04-01 07:00:00,5342.8,0.0,45.11 -2013-04-01 08:00:00,5746.7,0.0,46.82 -2013-04-01 09:00:00,6013.7,0.0,48.61 -2013-04-01 10:00:00,6120.9,0.0,52.14 -2013-04-01 11:00:00,6130.8,0.0,52.81 -2013-04-01 12:00:00,6159.4,0.0,55.89 -2013-04-01 13:00:00,6150.5,0.0,58.89 -2013-04-01 14:00:00,6122.5,0.0,58.6 -2013-04-01 15:00:00,6080.7,0.0,59.13 -2013-04-01 16:00:00,6150.4,0.0,56.62 -2013-04-01 17:00:00,6192.7,0.0,46.87 -2013-04-01 18:00:00,5996.6,0.0065,44.84 -2013-04-01 19:00:00,6001.9,0.0,46.47 -2013-04-01 20:00:00,6005.5,0.0,46.69 -2013-04-01 21:00:00,5821.9,0.0,44.42 -2013-04-01 22:00:00,5516.0,0.0,41.8 -2013-04-01 23:00:00,5094.8,0.0,40.02 -2013-04-02 00:00:00,4707.7,0.0,38.57 -2013-04-02 01:00:00,4465.6,0.0,37.36 -2013-04-02 02:00:00,4318.2,0.0,36.36 -2013-04-02 03:00:00,4252.2,0.0,35.76 -2013-04-02 04:00:00,4278.8,0.0,35.15 -2013-04-02 05:00:00,4513.4,0.0,34.34 -2013-04-02 06:00:00,4994.9,0.0,34.15 -2013-04-02 07:00:00,5531.0,0.0,33.59 -2013-04-02 08:00:00,5944.3,0.0,34.19 -2013-04-02 09:00:00,6221.0,0.0,34.61 -2013-04-02 10:00:00,6340.2,0.0,35.61 -2013-04-02 11:00:00,6395.2,0.0,36.46 -2013-04-02 12:00:00,6407.3,0.0,37.46 -2013-04-02 13:00:00,6375.7,0.0,38.67 -2013-04-02 14:00:00,6337.0,0.0,40.7 -2013-04-02 15:00:00,6300.9,0.0,41.5 -2013-04-02 16:00:00,6298.1,0.0,42.07 -2013-04-02 17:00:00,6286.4,0.0,43.07 -2013-04-02 18:00:00,6129.6,0.0,43.46 -2013-04-02 19:00:00,6192.0,0.0,42.19 -2013-04-02 20:00:00,6167.9,0.0,41.98 -2013-04-02 21:00:00,5980.4,0.0,41.21 -2013-04-02 22:00:00,5632.0,0.0,39.99 -2013-04-02 23:00:00,5191.5,0.0,39.21 -2013-04-03 00:00:00,4819.1,0.0,38.36 -2013-04-03 01:00:00,4557.6,0.0,36.76 -2013-04-03 02:00:00,4413.7,0.0,36.36 -2013-04-03 03:00:00,4347.3,0.0,35.57 -2013-04-03 04:00:00,4368.3,0.0,35.13 -2013-04-03 05:00:00,4589.9,0.0,34.36 -2013-04-03 06:00:00,5143.3,0.0,34.15 -2013-04-03 07:00:00,5700.6,0.0,34.13 -2013-04-03 08:00:00,6098.3,0.0,34.4 -2013-04-03 09:00:00,6323.7,0.0,34.84 -2013-04-03 10:00:00,6408.8,0.0,36.46 -2013-04-03 11:00:00,6439.3,0.0,38.28 -2013-04-03 12:00:00,6437.1,0.0,39.5 -2013-04-03 13:00:00,6427.4,0.0,41.07 -2013-04-03 14:00:00,6393.2,0.0,42.74 -2013-04-03 15:00:00,6363.5,0.0,44.07 -2013-04-03 16:00:00,6372.2,0.0,45.09 -2013-04-03 17:00:00,6360.7,0.0,44.69 -2013-04-03 18:00:00,6191.6,0.0,44.47 -2013-04-03 19:00:00,6240.9,0.0,43.26 -2013-04-03 20:00:00,6243.7,0.0,41.42 -2013-04-03 21:00:00,6031.1,0.0,40.21 -2013-04-03 22:00:00,5694.7,0.0,39.21 -2013-04-03 23:00:00,5260.6,0.0,37.98 -2013-04-04 00:00:00,4836.6,0.0,36.98 -2013-04-04 01:00:00,4580.9,0.0,36.42 -2013-04-04 02:00:00,4427.4,0.0,35.79 -2013-04-04 03:00:00,4362.8,0.0,35.57 -2013-04-04 04:00:00,4391.4,0.0,34.99 -2013-04-04 05:00:00,4644.7,0.0,33.72 -2013-04-04 06:00:00,5174.7,0.0,33.94 -2013-04-04 07:00:00,5738.4,0.0,33.94 -2013-04-04 08:00:00,6142.5,0.0,34.96 -2013-04-04 09:00:00,6368.9,0.0,36.17 -2013-04-04 10:00:00,6408.2,0.0,38.41 -2013-04-04 11:00:00,6390.3,0.0,40.19 -2013-04-04 12:00:00,6386.1,0.0,42.98 -2013-04-04 13:00:00,6359.5,0.0,44.84 -2013-04-04 14:00:00,6317.5,0.0,47.34 -2013-04-04 15:00:00,6288.2,0.0,48.27 -2013-04-04 16:00:00,6301.4,0.0,47.71 -2013-04-04 17:00:00,6273.6,0.0,45.72 -2013-04-04 18:00:00,6149.5,0.0,44.72 -2013-04-04 19:00:00,6194.8,0.0,43.92 -2013-04-04 20:00:00,6132.6,0.0,44.34 -2013-04-04 21:00:00,5913.7,0.0,44.97 -2013-04-04 22:00:00,5564.7,0.0,45.3 -2013-04-04 23:00:00,5112.0,0.0,43.67 -2013-04-05 00:00:00,4690.4,0.0,43.17 -2013-04-05 01:00:00,4440.1,0.0,42.4 -2013-04-05 02:00:00,4281.5,0.0,41.4 -2013-04-05 03:00:00,4211.0,0.0,41.4 -2013-04-05 04:00:00,4242.1,0.0,41.4 -2013-04-05 05:00:00,4480.6,0.0,41.4 -2013-04-05 06:00:00,5022.8,0.0,41.56 -2013-04-05 07:00:00,5621.2,0.0,41.8 -2013-04-05 08:00:00,6001.6,0.0,42.01 -2013-04-05 09:00:00,6210.0,0.0,42.63 -2013-04-05 10:00:00,6284.9,0.0,44.61 -2013-04-05 11:00:00,6314.6,0.0,47.05 -2013-04-05 12:00:00,6301.2,0.0,50.78 -2013-04-05 13:00:00,6268.9,0.0,54.71 -2013-04-05 14:00:00,6216.9,0.0,58.18 -2013-04-05 15:00:00,6181.8,0.0,60.05 -2013-04-05 16:00:00,6159.5,0.0,60.57 -2013-04-05 17:00:00,6101.8,0.0,59.81 -2013-04-05 18:00:00,5905.7,0.0,57.6 -2013-04-05 19:00:00,5903.4,0.0,56.78 -2013-04-05 20:00:00,5893.3,0.0,53.33 -2013-04-05 21:00:00,5708.6,0.0,51.09 -2013-04-05 22:00:00,5439.6,0.0,48.65 -2013-04-05 23:00:00,5075.5,0.0,45.42 -2013-04-06 00:00:00,4709.4,0.0,43.02 -2013-04-06 01:00:00,4471.6,0.0,41.57 -2013-04-06 02:00:00,4318.7,0.0,40.42 -2013-04-06 03:00:00,4234.0,0.0,39.42 -2013-04-06 04:00:00,4210.9,0.0,37.98 -2013-04-06 05:00:00,4279.1,0.0,37.57 -2013-04-06 06:00:00,4435.6,0.0,36.57 -2013-04-06 07:00:00,4674.4,0.0,36.13 -2013-04-06 08:00:00,4977.7,0.0,37.17 -2013-04-06 09:00:00,5258.1,0.0,38.21 -2013-04-06 10:00:00,5425.9,0.0,39.04 -2013-04-06 11:00:00,5497.0,0.0,41.04 -2013-04-06 12:00:00,5485.9,0.0,42.21 -2013-04-06 13:00:00,5434.9,0.0,44.24 -2013-04-06 14:00:00,5379.9,0.0,45.86 -2013-04-06 15:00:00,5331.1,0.0,47.74 -2013-04-06 16:00:00,5303.9,0.0,49.35 -2013-04-06 17:00:00,5287.2,0.0,50.61 -2013-04-06 18:00:00,5312.4,0.0,48.34 -2013-04-06 19:00:00,5465.2,0.0,45.67 -2013-04-06 20:00:00,5556.2,0.0,43.46 -2013-04-06 21:00:00,5456.0,0.0,43.06 -2013-04-06 22:00:00,5257.1,0.0,42.29 -2013-04-06 23:00:00,4982.1,0.0,41.63 -2013-04-07 00:00:00,4674.6,0.0,41.19 -2013-04-07 01:00:00,4438.1,0.0,40.75 -2013-04-07 02:00:00,4269.5,0.0,40.35 -2013-04-07 03:00:00,4180.2,0.0,39.98 -2013-04-07 04:00:00,4138.9,0.0,39.98 -2013-04-07 05:00:00,4169.8,0.0,39.98 -2013-04-07 06:00:00,4251.1,0.0,40.59 -2013-04-07 07:00:00,4422.9,0.0,41.59 -2013-04-07 08:00:00,4665.3,0.0,42.59 -2013-04-07 09:00:00,4911.2,0.0,44.57 -2013-04-07 10:00:00,5087.6,0.0,46.07 -2013-04-07 11:00:00,5199.5,0.0,48.3 -2013-04-07 12:00:00,5248.0,0.0,50.14 -2013-04-07 13:00:00,5244.8,0.0,51.57 -2013-04-07 14:00:00,5220.3,0.0,52.14 -2013-04-07 15:00:00,5224.9,0.0,52.49 -2013-04-07 16:00:00,5222.6,0.0,51.5 -2013-04-07 17:00:00,5252.5,0.0,51.52 -2013-04-07 18:00:00,5370.9,0.0,51.54 -2013-04-07 19:00:00,5539.4,0.0,51.37 -2013-04-07 20:00:00,5586.9,0.0,51.0 -2013-04-07 21:00:00,5454.4,0.0,51.46 -2013-04-07 22:00:00,5194.2,0.0,51.01 -2013-04-07 23:00:00,4827.4,0.0,51.01 -2013-04-08 00:00:00,4485.3,0.0,50.43 -2013-04-08 01:00:00,4274.1,0.0,50.01 -2013-04-08 02:00:00,4130.5,0.0,49.8 -2013-04-08 03:00:00,4071.9,0.0,49.82 -2013-04-08 04:00:00,4098.0,0.0,48.86 -2013-04-08 05:00:00,4369.2,0.0,48.18 -2013-04-08 06:00:00,4904.3,0.0,49.87 -2013-04-08 07:00:00,5483.1,0.0,48.96 -2013-04-08 08:00:00,5876.5,0.0,49.23 -2013-04-08 09:00:00,6105.9,0.0,52.48 -2013-04-08 10:00:00,6202.4,0.0,53.79 -2013-04-08 11:00:00,6247.5,0.0,59.55 -2013-04-08 12:00:00,6284.7,0.0,63.22 -2013-04-08 13:00:00,6312.6,0.0,65.45 -2013-04-08 14:00:00,6303.6,0.0,67.56 -2013-04-08 15:00:00,6319.2,0.0,67.81 -2013-04-08 16:00:00,6308.9,0.0,70.62 -2013-04-08 17:00:00,6220.7,0.0,66.81 -2013-04-08 18:00:00,5987.1,0.0,62.95 -2013-04-08 19:00:00,6010.7,0.0,61.65 -2013-04-08 20:00:00,5983.8,0.0,59.86 -2013-04-08 21:00:00,5750.6,0.0,57.44 -2013-04-08 22:00:00,5383.1,0.0,56.44 -2013-04-08 23:00:00,4906.8,0.0,55.55 -2013-04-09 00:00:00,4479.3,0.0,54.25 -2013-04-09 01:00:00,4227.7,0.0,52.48 -2013-04-09 02:00:00,4084.3,0.0,52.71 -2013-04-09 03:00:00,4036.0,0.0,51.78 -2013-04-09 04:00:00,4063.8,0.0065,51.23 -2013-04-09 05:00:00,4295.9,0.0,49.64 -2013-04-09 06:00:00,4854.9,0.0,48.07 -2013-04-09 07:00:00,5454.6,0.0,49.08 -2013-04-09 08:00:00,5886.4,0.0,52.39 -2013-04-09 09:00:00,6193.8,0.0,59.78 -2013-04-09 10:00:00,6360.6,0.0,69.09 -2013-04-09 11:00:00,6466.2,0.0,72.63 -2013-04-09 12:00:00,6511.1,0.0,73.63 -2013-04-09 13:00:00,6566.1,0.0,75.64 -2013-04-09 14:00:00,6601.1,0.0,76.22 -2013-04-09 15:00:00,6637.2,0.0,77.99 -2013-04-09 16:00:00,6673.9,0.0,78.54 -2013-04-09 17:00:00,6618.3,0.0,79.0 -2013-04-09 18:00:00,6350.1,0.0,78.7 -2013-04-09 19:00:00,6267.6,0.0,77.73 -2013-04-09 20:00:00,6230.2,0.0,72.99 -2013-04-09 21:00:00,5972.9,0.0,74.15 -2013-04-09 22:00:00,5576.0,0.0,69.27 -2013-04-09 23:00:00,5087.9,0.0,67.44 -2013-04-10 00:00:00,4646.7,0.0,66.03 -2013-04-10 01:00:00,4391.8,0.0,65.24 -2013-04-10 02:00:00,4237.8,0.0,62.88 -2013-04-10 03:00:00,4177.5,0.0,62.53 -2013-04-10 04:00:00,4166.5,0.0,60.24 -2013-04-10 05:00:00,4376.6,0.0,58.91 -2013-04-10 06:00:00,4922.0,0.0,55.6 -2013-04-10 07:00:00,5511.9,0.0,54.1 -2013-04-10 08:00:00,5966.7,0.0,54.41 -2013-04-10 09:00:00,6240.5,0.0,55.71 -2013-04-10 10:00:00,6385.9,0.0,58.39 -2013-04-10 11:00:00,6474.3,0.0,59.9 -2013-04-10 12:00:00,6538.7,0.0,62.75 -2013-04-10 13:00:00,6586.3,0.0,62.91 -2013-04-10 14:00:00,6605.2,0.0,67.22 -2013-04-10 15:00:00,6607.1,0.0,67.94 -2013-04-10 16:00:00,6556.5,0.0,66.43 -2013-04-10 17:00:00,6423.2,0.0,65.21 -2013-04-10 18:00:00,6167.8,0.0,60.35 -2013-04-10 19:00:00,6230.9,0.0139,57.39 -2013-04-10 20:00:00,6111.9,0.1539,58.61 -2013-04-10 21:00:00,5821.8,0.0131,59.26 -2013-04-10 22:00:00,5427.0,0.0347,57.26 -2013-04-10 23:00:00,4974.5,0.1185,57.96 -2013-04-11 00:00:00,4567.8,0.0261,57.47 -2013-04-11 01:00:00,4314.8,0.0065,56.5 -2013-04-11 02:00:00,4165.1,0.0,56.88 -2013-04-11 03:00:00,4107.9,0.0,56.86 -2013-04-11 04:00:00,4127.5,0.0,56.56 -2013-04-11 05:00:00,4357.8,0.0,56.79 -2013-04-11 06:00:00,4898.4,0.0,54.94 -2013-04-11 07:00:00,5490.7,0.0,53.67 -2013-04-11 08:00:00,5893.4,0.0,53.78 -2013-04-11 09:00:00,6149.6,0.0,52.7 -2013-04-11 10:00:00,6235.6,0.0,54.09 -2013-04-11 11:00:00,6272.3,0.0,54.27 -2013-04-11 12:00:00,6286.9,0.0,56.69 -2013-04-11 13:00:00,6301.0,0.0,58.16 -2013-04-11 14:00:00,6280.5,0.0,58.98 -2013-04-11 15:00:00,6290.1,0.0,59.21 -2013-04-11 16:00:00,6313.5,0.0,59.39 -2013-04-11 17:00:00,6289.2,0.0,56.75 -2013-04-11 18:00:00,6118.5,0.0,53.6 -2013-04-11 19:00:00,6065.3,0.0,50.75 -2013-04-11 20:00:00,5962.2,0.0,48.65 -2013-04-11 21:00:00,5727.3,0.0,49.41 -2013-04-11 22:00:00,5351.4,0.0,48.23 -2013-04-11 23:00:00,4897.4,0.0,48.23 -2013-04-12 00:00:00,4495.3,0.0,47.46 -2013-04-12 01:00:00,4235.5,0.0,47.46 -2013-04-12 02:00:00,4088.7,0.0,46.67 -2013-04-12 03:00:00,4028.1,0.0,46.46 -2013-04-12 04:00:00,4055.0,0.0,46.56 -2013-04-12 05:00:00,4305.3,0.0,45.0 -2013-04-12 06:00:00,4868.9,0.0,43.79 -2013-04-12 07:00:00,5515.6,0.0,44.4 -2013-04-12 08:00:00,5945.5,0.0135,43.23 -2013-04-12 09:00:00,6242.4,0.0735,42.42 -2013-04-12 10:00:00,6392.4,0.1715,41.63 -2013-04-12 11:00:00,6453.5,0.1308,41.63 -2013-04-12 12:00:00,6464.6,0.08,42.63 -2013-04-12 13:00:00,6446.9,0.03,42.63 -2013-04-12 14:00:00,6417.0,0.01,42.8 -2013-04-12 15:00:00,6402.0,0.0427,42.86 -2013-04-12 16:00:00,6387.3,0.0,42.86 -2013-04-12 17:00:00,6354.2,0.0,43.07 -2013-04-12 18:00:00,6174.2,0.0,42.63 -2013-04-12 19:00:00,6116.9,0.0,42.84 -2013-04-12 20:00:00,6002.2,0.0,43.07 -2013-04-12 21:00:00,5776.2,0.0,43.47 -2013-04-12 22:00:00,5483.6,0.0,43.07 -2013-04-12 23:00:00,5088.0,0.0,42.86 -2013-04-13 00:00:00,4710.7,0.0069,43.07 -2013-04-13 01:00:00,4457.1,0.01,42.42 -2013-04-13 02:00:00,4287.1,0.0065,41.63 -2013-04-13 03:00:00,4185.9,0.0,42.06 -2013-04-13 04:00:00,4154.1,0.0,42.03 -2013-04-13 05:00:00,4220.3,0.0,42.42 -2013-04-13 06:00:00,4346.4,0.0,41.63 -2013-04-13 07:00:00,4597.8,0.0,41.42 -2013-04-13 08:00:00,4890.4,0.0,42.4 -2013-04-13 09:00:00,5144.3,0.0,44.61 -2013-04-13 10:00:00,5361.5,0.0,46.31 -2013-04-13 11:00:00,5478.2,0.0,47.28 -2013-04-13 12:00:00,5461.5,0.0,49.21 -2013-04-13 13:00:00,5394.1,0.0,50.65 -2013-04-13 14:00:00,5339.3,0.0,52.45 -2013-04-13 15:00:00,5292.3,0.0,54.45 -2013-04-13 16:00:00,5268.0,0.0,55.07 -2013-04-13 17:00:00,5276.7,0.0,54.41 -2013-04-13 18:00:00,5283.3,0.0,53.31 -2013-04-13 19:00:00,5363.9,0.0,52.14 -2013-04-13 20:00:00,5491.1,0.0,50.71 -2013-04-13 21:00:00,5390.9,0.0,49.48 -2013-04-13 22:00:00,5175.4,0.0,49.27 -2013-04-13 23:00:00,4902.0,0.0,48.88 -2013-04-14 00:00:00,4585.2,0.0,48.67 -2013-04-14 01:00:00,4347.7,0.0,48.86 -2013-04-14 02:00:00,4175.2,0.0,49.01 -2013-04-14 03:00:00,4070.8,0.0,49.31 -2013-04-14 04:00:00,4021.3,0.0,49.66 -2013-04-14 05:00:00,4058.9,0.0,49.38 -2013-04-14 06:00:00,4130.4,0.0,49.19 -2013-04-14 07:00:00,4290.8,0.0,50.01 -2013-04-14 08:00:00,4550.4,0.0,51.27 -2013-04-14 09:00:00,4797.7,0.0,51.19 -2013-04-14 10:00:00,5014.5,0.0,51.44 -2013-04-14 11:00:00,5131.3,0.0,52.06 -2013-04-14 12:00:00,5177.8,0.0,53.07 -2013-04-14 13:00:00,5169.7,0.0,54.0 -2013-04-14 14:00:00,5151.7,0.0,54.3 -2013-04-14 15:00:00,5134.5,0.0,54.53 -2013-04-14 16:00:00,5136.0,0.0,55.35 -2013-04-14 17:00:00,5155.4,0.0,55.35 -2013-04-14 18:00:00,5193.2,0.0,54.92 -2013-04-14 19:00:00,5350.2,0.0,53.38 -2013-04-14 20:00:00,5512.7,0.0,52.7 -2013-04-14 21:00:00,5371.9,0.0,51.65 -2013-04-14 22:00:00,5188.4,0.0,50.0 -2013-04-14 23:00:00,4879.8,0.0,48.65 -2013-04-15 00:00:00,4469.7,0.0,47.65 -2013-04-15 01:00:00,4245.4,0.0,46.86 -2013-04-15 02:00:00,4120.6,0.0,45.65 -2013-04-15 03:00:00,4064.2,0.0,45.7 -2013-04-15 04:00:00,4091.4,0.0,44.7 -2013-04-15 05:00:00,4334.3,0.0,44.92 -2013-04-15 06:00:00,4877.7,0.0,44.86 -2013-04-15 07:00:00,5478.2,0.0,44.7 -2013-04-15 08:00:00,5873.9,0.0,45.07 -2013-04-15 09:00:00,6140.5,0.0,46.73 -2013-04-15 10:00:00,6212.3,0.0,48.11 -2013-04-15 11:00:00,6231.2,0.0,48.92 -2013-04-15 12:00:00,6240.2,0.0,50.32 -2013-04-15 13:00:00,6227.1,0.0,51.69 -2013-04-15 14:00:00,6196.3,0.0,52.52 -2013-04-15 15:00:00,6189.0,0.0,53.88 -2013-04-15 16:00:00,6215.5,0.0,54.61 -2013-04-15 17:00:00,6179.2,0.0,54.21 -2013-04-15 18:00:00,6009.2,0.0,53.15 -2013-04-15 19:00:00,6000.5,0.0,52.01 -2013-04-15 20:00:00,6036.0,0.0,49.98 -2013-04-15 21:00:00,5803.3,0.0,49.38 -2013-04-15 22:00:00,5432.2,0.0,48.46 -2013-04-15 23:00:00,4970.3,0.0,48.06 -2013-04-16 00:00:00,4542.7,0.0,47.9 -2013-04-16 01:00:00,4285.7,0.0,47.9 -2013-04-16 02:00:00,4139.9,0.0,47.9 -2013-04-16 03:00:00,4084.2,0.0,47.9 -2013-04-16 04:00:00,4109.0,0.0,48.53 -2013-04-16 05:00:00,4360.4,0.0,47.73 -2013-04-16 06:00:00,4919.4,0.0,47.73 -2013-04-16 07:00:00,5531.8,0.0,47.96 -2013-04-16 08:00:00,5902.8,0.0,49.13 -2013-04-16 09:00:00,6115.0,0.0,53.3 -2013-04-16 10:00:00,6217.5,0.0,56.63 -2013-04-16 11:00:00,6270.5,0.0,58.01 -2013-04-16 12:00:00,6289.0,0.0,58.44 -2013-04-16 13:00:00,6297.9,0.0,58.67 -2013-04-16 14:00:00,6287.5,0.0,58.88 -2013-04-16 15:00:00,6304.7,0.0,59.48 -2013-04-16 16:00:00,6354.8,0.0,58.71 -2013-04-16 17:00:00,6324.7,0.0,58.75 -2013-04-16 18:00:00,6105.9,0.0,59.81 -2013-04-16 19:00:00,6072.0,0.0,59.21 -2013-04-16 20:00:00,6072.5,0.0,58.72 -2013-04-16 21:00:00,5838.4,0.0,58.63 -2013-04-16 22:00:00,5466.1,0.0,58.47 -2013-04-16 23:00:00,4994.0,0.0,58.04 -2013-04-17 00:00:00,4569.3,0.0,57.57 -2013-04-17 01:00:00,4311.2,0.0,58.8 -2013-04-17 02:00:00,4158.9,0.0,59.76 -2013-04-17 03:00:00,4085.6,0.0,60.76 -2013-04-17 04:00:00,4112.2,0.0,60.99 -2013-04-17 05:00:00,4360.3,0.0,61.64 -2013-04-17 06:00:00,4943.4,0.01,57.23 -2013-04-17 07:00:00,5584.4,0.0131,56.09 -2013-04-17 08:00:00,5963.0,0.0,55.15 -2013-04-17 09:00:00,6193.1,0.0,55.58 -2013-04-17 10:00:00,6262.7,0.0,56.13 -2013-04-17 11:00:00,6313.4,0.0,58.86 -2013-04-17 12:00:00,6353.1,0.0,60.25 -2013-04-17 13:00:00,6390.0,0.0,63.5 -2013-04-17 14:00:00,6399.4,0.0,64.55 -2013-04-17 15:00:00,6428.8,0.0,66.7 -2013-04-17 16:00:00,6469.7,0.0,67.27 -2013-04-17 17:00:00,6415.2,0.0,68.29 -2013-04-17 18:00:00,6160.4,0.0,66.61 -2013-04-17 19:00:00,6042.4,0.0,66.98 -2013-04-17 20:00:00,6052.7,0.0,63.1 -2013-04-17 21:00:00,5823.1,0.0,60.89 -2013-04-17 22:00:00,5425.1,0.0,57.79 -2013-04-17 23:00:00,4955.6,0.0,56.66 -2013-04-18 00:00:00,4528.3,0.0,56.28 -2013-04-18 01:00:00,4271.4,0.0,54.24 -2013-04-18 02:00:00,4113.5,0.0,53.62 -2013-04-18 03:00:00,4050.8,0.0,52.45 -2013-04-18 04:00:00,4071.3,0.0,51.49 -2013-04-18 05:00:00,4311.2,0.0,51.15 -2013-04-18 06:00:00,4839.9,0.0,50.38 -2013-04-18 07:00:00,5457.9,0.0,50.36 -2013-04-18 08:00:00,5874.2,0.0,51.52 -2013-04-18 09:00:00,6120.9,0.0,55.8 -2013-04-18 10:00:00,6203.8,0.0,57.94 -2013-04-18 11:00:00,6255.4,0.0,57.37 -2013-04-18 12:00:00,6280.2,0.0,58.57 -2013-04-18 13:00:00,6291.8,0.0,56.77 -2013-04-18 14:00:00,6275.3,0.0,56.77 -2013-04-18 15:00:00,6290.8,0.0,56.6 -2013-04-18 16:00:00,6355.5,0.0,56.34 -2013-04-18 17:00:00,6352.6,0.0035,55.57 -2013-04-18 18:00:00,6185.7,0.0065,54.17 -2013-04-18 19:00:00,6113.5,0.0,54.38 -2013-04-18 20:00:00,6051.0,0.0,55.01 -2013-04-18 21:00:00,5797.1,0.0,55.78 -2013-04-18 22:00:00,5424.7,0.0,55.57 -2013-04-18 23:00:00,4972.2,0.0,54.7 -2013-04-19 00:00:00,4560.8,0.0,54.37 -2013-04-19 01:00:00,4293.5,0.0,54.43 -2013-04-19 02:00:00,4151.0,0.0,53.98 -2013-04-19 03:00:00,4085.5,0.0,54.06 -2013-04-19 04:00:00,4106.8,0.0,55.1 -2013-04-19 05:00:00,4342.6,0.0,56.0 -2013-04-19 06:00:00,4882.0,0.0,55.71 -2013-04-19 07:00:00,5526.2,0.0,56.75 -2013-04-19 08:00:00,5958.9,0.0,57.55 -2013-04-19 09:00:00,6261.2,0.0,60.25 -2013-04-19 10:00:00,6404.4,0.0,62.07 -2013-04-19 11:00:00,6519.3,0.0,64.99 -2013-04-19 12:00:00,6519.0,0.0,66.57 -2013-04-19 13:00:00,6518.9,0.0,64.98 -2013-04-19 14:00:00,6513.9,0.0,67.01 -2013-04-19 15:00:00,6509.7,0.0,68.25 -2013-04-19 16:00:00,6457.6,0.0,65.9 -2013-04-19 17:00:00,6373.3,0.0,62.86 -2013-04-19 18:00:00,6132.1,0.0,63.34 -2013-04-19 19:00:00,6061.3,0.0,62.4 -2013-04-19 20:00:00,5994.0,0.0,62.65 -2013-04-19 21:00:00,5788.2,0.0,61.17 -2013-04-19 22:00:00,5498.2,0.0,63.05 -2013-04-19 23:00:00,5103.7,0.0173,62.87 -2013-04-20 00:00:00,4695.0,0.01,62.42 -2013-04-20 01:00:00,4367.2,0.0069,56.55 -2013-04-20 02:00:00,4172.7,0.0,55.61 -2013-04-20 03:00:00,4070.1,0.0135,53.36 -2013-04-20 04:00:00,4037.3,0.04,51.63 -2013-04-20 05:00:00,4087.5,0.0,51.8 -2013-04-20 06:00:00,4222.1,0.0065,51.57 -2013-04-20 07:00:00,4478.8,0.0,50.94 -2013-04-20 08:00:00,4804.4,0.0,51.4 -2013-04-20 09:00:00,5060.9,0.0,51.4 -2013-04-20 10:00:00,5236.4,0.0,51.4 -2013-04-20 11:00:00,5327.8,0.0,52.23 -2013-04-20 12:00:00,5347.8,0.0,51.4 -2013-04-20 13:00:00,5303.9,0.0,51.67 -2013-04-20 14:00:00,5263.2,0.0,53.86 -2013-04-20 15:00:00,5226.2,0.0,56.27 -2013-04-20 16:00:00,5205.0,0.0,57.07 -2013-04-20 17:00:00,5187.9,0.0,58.07 -2013-04-20 18:00:00,5189.7,0.0,57.86 -2013-04-20 19:00:00,5239.9,0.0,56.8 -2013-04-20 20:00:00,5377.7,0.0,55.19 -2013-04-20 21:00:00,5277.1,0.0,54.35 -2013-04-20 22:00:00,5075.2,0.0,52.57 -2013-04-20 23:00:00,4800.5,0.0,49.8 -2013-04-21 00:00:00,4509.0,0.0,47.75 -2013-04-21 01:00:00,4267.2,0.0,44.52 -2013-04-21 02:00:00,4108.1,0.0,42.36 -2013-04-21 03:00:00,4005.2,0.0,41.13 -2013-04-21 04:00:00,3985.1,0.0,39.73 -2013-04-21 05:00:00,4018.3,0.0,38.73 -2013-04-21 06:00:00,4087.5,0.0,37.92 -2013-04-21 07:00:00,4282.9,0.0,38.35 -2013-04-21 08:00:00,4548.8,0.0,39.33 -2013-04-21 09:00:00,4796.5,0.0,40.77 -2013-04-21 10:00:00,4996.4,0.0,42.6 -2013-04-21 11:00:00,5107.2,0.0,44.04 -2013-04-21 12:00:00,5138.6,0.0,45.81 -2013-04-21 13:00:00,5137.0,0.0,47.21 -2013-04-21 14:00:00,5118.1,0.0,48.42 -2013-04-21 15:00:00,5107.9,0.0,50.69 -2013-04-21 16:00:00,5106.3,0.0,52.06 -2013-04-21 17:00:00,5127.7,0.0,52.44 -2013-04-21 18:00:00,5170.0,0.0,52.6 -2013-04-21 19:00:00,5303.6,0.0,50.04 -2013-04-21 20:00:00,5489.1,0.0,48.27 -2013-04-21 21:00:00,5374.4,0.0,47.26 -2013-04-21 22:00:00,5106.9,0.0,46.84 -2013-04-21 23:00:00,4746.2,0.0,46.46 -2013-04-22 00:00:00,4412.3,0.0,45.47 -2013-04-22 01:00:00,4190.6,0.0,45.07 -2013-04-22 02:00:00,4066.1,0.0,44.07 -2013-04-22 03:00:00,4011.4,0.0,43.15 -2013-04-22 04:00:00,4053.9,0.0,42.7 -2013-04-22 05:00:00,4312.4,0.0,41.92 -2013-04-22 06:00:00,4846.7,0.0,41.49 -2013-04-22 07:00:00,5441.8,0.0,42.56 -2013-04-22 08:00:00,5831.4,0.0,44.47 -2013-04-22 09:00:00,6091.5,0.0,46.0 -2013-04-22 10:00:00,6177.4,0.0,47.61 -2013-04-22 11:00:00,6218.7,0.0,48.7 -2013-04-22 12:00:00,6221.3,0.0,49.67 -2013-04-22 13:00:00,6229.9,0.0,49.46 -2013-04-22 14:00:00,6206.4,0.0,50.46 -2013-04-22 15:00:00,6198.5,0.0,51.83 -2013-04-22 16:00:00,6191.8,0.0,51.83 -2013-04-22 17:00:00,6162.3,0.0,52.43 -2013-04-22 18:00:00,5966.7,0.0,53.34 -2013-04-22 19:00:00,5914.0,0.0,51.96 -2013-04-22 20:00:00,5998.4,0.0,50.38 -2013-04-22 21:00:00,5790.9,0.0,48.82 -2013-04-22 22:00:00,5440.2,0.0,47.26 -2013-04-22 23:00:00,4941.5,0.0,46.26 -2013-04-23 00:00:00,4534.5,0.0,45.07 -2013-04-23 01:00:00,4288.9,0.0,44.07 -2013-04-23 02:00:00,4146.4,0.0,43.23 -2013-04-23 03:00:00,4088.6,0.0,42.63 -2013-04-23 04:00:00,4118.5,0.0,42.02 -2013-04-23 05:00:00,4375.5,0.0,41.42 -2013-04-23 06:00:00,4931.2,0.0,41.42 -2013-04-23 07:00:00,5563.8,0.0,42.03 -2013-04-23 08:00:00,5962.8,0.0,41.86 -2013-04-23 09:00:00,6225.0,0.0,42.63 -2013-04-23 10:00:00,6339.8,0.0,43.07 -2013-04-23 11:00:00,6383.7,0.0,43.29 -2013-04-23 12:00:00,6409.4,0.0,44.06 -2013-04-23 13:00:00,6396.9,0.0,45.07 -2013-04-23 14:00:00,6376.3,0.0,46.5 -2013-04-23 15:00:00,6361.3,0.0,47.61 -2013-04-23 16:00:00,6349.7,0.0,49.23 -2013-04-23 17:00:00,6287.9,0.0,50.23 -2013-04-23 18:00:00,6097.1,0.0,51.01 -2013-04-23 19:00:00,6053.4,0.0,51.46 -2013-04-23 20:00:00,6067.5,0.0,51.47 -2013-04-23 21:00:00,5842.9,0.0,51.07 -2013-04-23 22:00:00,5465.4,0.0,49.86 -2013-04-23 23:00:00,4998.9,0.0,48.86 -2013-04-24 00:00:00,4572.9,0.0,47.65 -2013-04-24 01:00:00,4304.4,0.0,46.22 -2013-04-24 02:00:00,4156.3,0.0,45.99 -2013-04-24 03:00:00,4102.2,0.0,45.61 -2013-04-24 04:00:00,4128.2,0.0,44.35 -2013-04-24 05:00:00,4370.5,0.0,44.76 -2013-04-24 06:00:00,4894.6,0.0,44.78 -2013-04-24 07:00:00,5495.7,0.0,45.42 -2013-04-24 08:00:00,5866.2,0.0,47.64 -2013-04-24 09:00:00,6106.1,0.0,49.23 -2013-04-24 10:00:00,6196.3,0.0,53.24 -2013-04-24 11:00:00,6241.9,0.0,56.95 -2013-04-24 12:00:00,6278.8,0.0,59.92 -2013-04-24 13:00:00,6282.9,0.0,63.19 -2013-04-24 14:00:00,6281.9,0.0,60.88 -2013-04-24 15:00:00,6329.0,0.0,62.93 -2013-04-24 16:00:00,6309.6,0.0,61.84 -2013-04-24 17:00:00,6242.8,0.0,60.07 -2013-04-24 18:00:00,6049.5,0.0,56.46 -2013-04-24 19:00:00,5993.1,0.0,54.68 -2013-04-24 20:00:00,6003.9,0.0,53.46 -2013-04-24 21:00:00,5767.4,0.0,53.86 -2013-04-24 22:00:00,5408.5,0.0,54.84 -2013-04-24 23:00:00,4939.9,0.0,53.81 -2013-04-25 00:00:00,4524.0,0.0,53.58 -2013-04-25 01:00:00,4271.3,0.0,55.01 -2013-04-25 02:00:00,4119.3,0.0,58.04 -2013-04-25 03:00:00,4050.0,0.0,58.8 -2013-04-25 04:00:00,4061.3,0.0,55.26 -2013-04-25 05:00:00,4293.7,0.0,51.63 -2013-04-25 06:00:00,4814.8,0.0,49.42 -2013-04-25 07:00:00,5431.0,0.0,47.57 -2013-04-25 08:00:00,5824.9,0.0,47.61 -2013-04-25 09:00:00,6056.3,0.0,48.6 -2013-04-25 10:00:00,6152.0,0.0,50.44 -2013-04-25 11:00:00,6185.7,0.0,52.5 -2013-04-25 12:00:00,6196.0,0.0,55.51 -2013-04-25 13:00:00,6199.6,0.0,56.65 -2013-04-25 14:00:00,6196.2,0.0,58.88 -2013-04-25 15:00:00,6220.8,0.0,61.28 -2013-04-25 16:00:00,6249.0,0.0,61.81 -2013-04-25 17:00:00,6218.4,0.0,63.38 -2013-04-25 18:00:00,5982.1,0.0,64.88 -2013-04-25 19:00:00,5889.4,0.0,61.55 -2013-04-25 20:00:00,5927.9,0.0,57.87 -2013-04-25 21:00:00,5719.1,0.0,55.24 -2013-04-25 22:00:00,5370.7,0.0,54.03 -2013-04-25 23:00:00,4927.3,0.0,53.22 -2013-04-26 00:00:00,4501.5,0.0,52.78 -2013-04-26 01:00:00,4243.6,0.0,52.15 -2013-04-26 02:00:00,4092.3,0.0,50.53 -2013-04-26 03:00:00,4023.3,0.0,50.79 -2013-04-26 04:00:00,4041.3,0.0,49.12 -2013-04-26 05:00:00,4261.4,0.0,50.27 -2013-04-26 06:00:00,4773.0,0.0,48.4 -2013-04-26 07:00:00,5355.7,0.0,49.74 -2013-04-26 08:00:00,5761.6,0.0,52.56 -2013-04-26 09:00:00,6010.6,0.0,53.83 -2013-04-26 10:00:00,6145.3,0.0,55.67 -2013-04-26 11:00:00,6194.1,0.0,57.44 -2013-04-26 12:00:00,6216.4,0.0,59.6 -2013-04-26 13:00:00,6215.7,0.0,60.82 -2013-04-26 14:00:00,6187.2,0.0,61.94 -2013-04-26 15:00:00,6174.7,0.0,63.38 -2013-04-26 16:00:00,6179.2,0.0,64.44 -2013-04-26 17:00:00,6123.8,0.0,63.77 -2013-04-26 18:00:00,5871.2,0.0,64.14 -2013-04-26 19:00:00,5767.1,0.0,63.24 -2013-04-26 20:00:00,5777.4,0.0,59.45 -2013-04-26 21:00:00,5596.5,0.0,58.3 -2013-04-26 22:00:00,5318.9,0.0,55.8 -2013-04-26 23:00:00,4927.1,0.0,55.07 -2013-04-27 00:00:00,4544.4,0.0,54.49 -2013-04-27 01:00:00,4285.0,0.0,53.65 -2013-04-27 02:00:00,4112.6,0.0,51.88 -2013-04-27 03:00:00,4019.3,0.0,50.88 -2013-04-27 04:00:00,3985.4,0.0,49.66 -2013-04-27 05:00:00,4031.0,0.0,48.64 -2013-04-27 06:00:00,4157.4,0.0,47.64 -2013-04-27 07:00:00,4428.1,0.0,48.28 -2013-04-27 08:00:00,4732.4,0.0,50.7 -2013-04-27 09:00:00,5003.7,0.0,53.3 -2013-04-27 10:00:00,5183.1,0.0,55.74 -2013-04-27 11:00:00,5288.5,0.0,58.2 -2013-04-27 12:00:00,5322.2,0.0,61.38 -2013-04-27 13:00:00,5299.2,0.0,62.42 -2013-04-27 14:00:00,5276.8,0.0,63.38 -2013-04-27 15:00:00,5258.9,0.0,65.18 -2013-04-27 16:00:00,5247.0,0.0,65.12 -2013-04-27 17:00:00,5232.1,0.0,65.98 -2013-04-27 18:00:00,5215.2,0.0,63.78 -2013-04-27 19:00:00,5226.7,0.0,60.95 -2013-04-27 20:00:00,5340.9,0.0,58.97 -2013-04-27 21:00:00,5244.4,0.0,57.57 -2013-04-27 22:00:00,5036.4,0.0,56.93 -2013-04-27 23:00:00,4756.4,0.0,56.89 -2013-04-28 00:00:00,4453.0,0.0,56.12 -2013-04-28 01:00:00,4205.4,0.0,54.72 -2013-04-28 02:00:00,4045.3,0.0,53.29 -2013-04-28 03:00:00,3949.0,0.0,52.1 -2013-04-28 04:00:00,3908.6,0.0,51.31 -2013-04-28 05:00:00,3919.4,0.0,50.27 -2013-04-28 06:00:00,3977.2,0.0,49.64 -2013-04-28 07:00:00,4173.1,0.0,50.45 -2013-04-28 08:00:00,4438.5,0.0,52.64 -2013-04-28 09:00:00,4703.4,0.0,55.17 -2013-04-28 10:00:00,4946.6,0.0,57.24 -2013-04-28 11:00:00,5078.7,0.0,59.98 -2013-04-28 12:00:00,5140.2,0.0,62.06 -2013-04-28 13:00:00,5150.1,0.0,64.48 -2013-04-28 14:00:00,5133.0,0.0,65.07 -2013-04-28 15:00:00,5105.0,0.0,63.5 -2013-04-28 16:00:00,5098.7,0.0,63.2 -2013-04-28 17:00:00,5104.9,0.0,60.9 -2013-04-28 18:00:00,5151.5,0.0,59.65 -2013-04-28 19:00:00,5272.3,0.0,58.44 -2013-04-28 20:00:00,5404.8,0.0,57.04 -2013-04-28 21:00:00,5285.3,0.0,56.27 -2013-04-28 22:00:00,5021.1,0.0,55.83 -2013-04-28 23:00:00,4657.8,0.0,55.67 -2013-04-29 00:00:00,4342.4,0.0,55.06 -2013-04-29 01:00:00,4134.0,0.0,55.3 -2013-04-29 02:00:00,4010.8,0.0,56.0 -2013-04-29 03:00:00,3948.9,0.0,55.23 -2013-04-29 04:00:00,3983.9,0.0,55.46 -2013-04-29 05:00:00,4225.3,0.0,55.35 -2013-04-29 06:00:00,4770.1,0.0,54.61 -2013-04-29 07:00:00,5414.1,0.0035,54.0 -2013-04-29 08:00:00,5837.2,0.0,54.0 -2013-04-29 09:00:00,6094.1,0.0035,53.84 -2013-04-29 10:00:00,6207.5,0.0,54.01 -2013-04-29 11:00:00,6265.1,0.0035,54.65 -2013-04-29 12:00:00,6292.9,0.0,54.56 -2013-04-29 13:00:00,6307.7,0.01,55.65 -2013-04-29 14:00:00,6287.9,0.0135,55.31 -2013-04-29 15:00:00,6300.6,0.01,54.77 -2013-04-29 16:00:00,6319.9,0.0,55.65 -2013-04-29 17:00:00,6301.9,0.0,57.96 -2013-04-29 18:00:00,6104.0,0.0,56.61 -2013-04-29 19:00:00,6025.0,0.0,56.61 -2013-04-29 20:00:00,5969.9,0.0,55.98 -2013-04-29 21:00:00,5730.3,0.0,55.61 -2013-04-29 22:00:00,5360.0,0.0,54.54 -2013-04-29 23:00:00,4888.0,0.0,54.61 -2013-04-30 00:00:00,4464.3,0.0,53.98 -2013-04-30 01:00:00,4203.2,0.0,53.38 -2013-04-30 02:00:00,4060.9,0.0,52.79 -2013-04-30 03:00:00,3995.6,0.0,52.77 -2013-04-30 04:00:00,4019.0,0.0,52.79 -2013-04-30 05:00:00,4249.3,0.0,52.23 -2013-04-30 06:00:00,4803.0,0.0,52.23 -2013-04-30 07:00:00,5428.6,0.0,51.83 -2013-04-30 08:00:00,5830.5,0.0,52.44 -2013-04-30 09:00:00,6071.2,0.0,53.27 -2013-04-30 10:00:00,6152.9,0.0,54.94 -2013-04-30 11:00:00,6224.1,0.0,56.94 -2013-04-30 12:00:00,6257.1,0.0,59.75 -2013-04-30 13:00:00,6261.4,0.0,61.39 -2013-04-30 14:00:00,6239.0,0.0,63.77 -2013-04-30 15:00:00,6246.9,0.0,63.81 -2013-04-30 16:00:00,6263.0,0.0,63.98 -2013-04-30 17:00:00,6218.3,0.0,63.79 -2013-04-30 18:00:00,5984.5,0.0,61.74 -2013-04-30 19:00:00,5859.5,0.0,60.98 -2013-04-30 20:00:00,5906.4,0.0,51.44 -2013-04-30 21:00:00,5718.9,0.0,50.52 -2013-04-30 22:00:00,5352.8,0.0,49.45 -2013-04-30 23:00:00,4884.3,0.0,48.88 -2013-05-01 00:00:00,4452.3,0.0,48.37 -2013-05-01 01:00:00,4190.5,0.0,47.77 -2013-05-01 02:00:00,4044.3,0.0,43.8 -2013-05-01 03:00:00,3983.9,0.0,47.17 -2013-05-01 04:00:00,4000.6,0.0,46.94 -2013-05-01 05:00:00,4227.1,0.0,46.49 -2013-05-01 06:00:00,4757.0,0.0,46.25 -2013-05-01 07:00:00,5352.2,0.0,46.76 -2013-05-01 08:00:00,5757.9,0.0,48.11 -2013-05-01 09:00:00,6022.9,0.0,49.7 -2013-05-01 10:00:00,6103.0,0.0,54.46 -2013-05-01 11:00:00,6114.3,0.0,56.37 -2013-05-01 12:00:00,6142.2,0.0,58.71 -2013-05-01 13:00:00,6178.4,0.0,58.97 -2013-05-01 14:00:00,6196.9,0.0,59.64 -2013-05-01 15:00:00,6203.0,0.0,59.63 -2013-05-01 16:00:00,6237.5,0.0,59.61 -2013-05-01 17:00:00,6177.4,0.0,60.57 -2013-05-01 18:00:00,5930.8,0.0,57.95 -2013-05-01 19:00:00,5822.8,0.0,55.56 -2013-05-01 20:00:00,5891.1,0.0,51.96 -2013-05-01 21:00:00,5692.0,0.0,49.42 -2013-05-01 22:00:00,5341.5,0.0,47.67 -2013-05-01 23:00:00,4886.1,0.0,47.44 -2013-05-02 00:00:00,4450.0,0.0,46.99 -2013-05-02 01:00:00,4186.3,0.0,46.82 -2013-05-02 02:00:00,4033.0,0.0,44.21 -2013-05-02 03:00:00,3978.1,0.0,46.34 -2013-05-02 04:00:00,3998.4,0.0,44.69 -2013-05-02 05:00:00,4212.8,0.0,43.3 -2013-05-02 06:00:00,4731.7,0.0,43.13 -2013-05-02 07:00:00,5340.9,0.0,48.1 -2013-05-02 08:00:00,5784.1,0.0,53.54 -2013-05-02 09:00:00,6063.1,0.0,55.47 -2013-05-02 10:00:00,6193.9,0.0,59.77 -2013-05-02 11:00:00,6284.0,0.0,58.71 -2013-05-02 12:00:00,6322.5,0.0,60.48 -2013-05-02 13:00:00,6344.5,0.0,60.06 -2013-05-02 14:00:00,6348.6,0.0,61.43 -2013-05-02 15:00:00,6365.0,0.0,61.62 -2013-05-02 16:00:00,6384.2,0.0,63.04 -2013-05-02 17:00:00,6305.8,0.0,61.71 -2013-05-02 18:00:00,6026.1,0.0,57.28 -2013-05-02 19:00:00,5866.0,0.0,55.5 -2013-05-02 20:00:00,5885.9,0.0,51.61 -2013-05-02 21:00:00,5700.1,0.0,53.01 -2013-05-02 22:00:00,5338.8,0.0,51.22 -2013-05-02 23:00:00,4883.8,0.0,48.56 -2013-05-03 00:00:00,4457.8,0.0,49.01 -2013-05-03 01:00:00,4190.6,0.0,47.28 -2013-05-03 02:00:00,4036.1,0.0,45.87 -2013-05-03 03:00:00,3965.2,0.0,47.71 -2013-05-03 04:00:00,3969.4,0.0,47.71 -2013-05-03 05:00:00,4178.6,0.0,47.6 -2013-05-03 06:00:00,4689.0,0.0,48.18 -2013-05-03 07:00:00,5293.2,0.0,48.85 -2013-05-03 08:00:00,5725.8,0.0,50.25 -2013-05-03 09:00:00,5986.7,0.0,51.73 -2013-05-03 10:00:00,6101.3,0.0,53.57 -2013-05-03 11:00:00,6149.7,0.0,53.05 -2013-05-03 12:00:00,6163.5,0.0,53.27 -2013-05-03 13:00:00,6172.9,0.0,55.17 -2013-05-03 14:00:00,6156.2,0.0,55.52 -2013-05-03 15:00:00,6124.7,0.0,54.87 -2013-05-03 16:00:00,6114.5,0.0,55.46 -2013-05-03 17:00:00,6044.6,0.0,54.0 -2013-05-03 18:00:00,5815.5,0.0,51.94 -2013-05-03 19:00:00,5689.2,0.0,49.82 -2013-05-03 20:00:00,5702.3,0.0,48.48 -2013-05-03 21:00:00,5537.9,0.0,46.81 -2013-05-03 22:00:00,5270.5,0.0,47.63 -2013-05-03 23:00:00,4881.6,0.0,47.31 -2013-05-04 00:00:00,4493.2,0.0,47.23 -2013-05-04 01:00:00,4237.9,0.0,47.24 -2013-05-04 02:00:00,4074.6,0.0,47.15 -2013-05-04 03:00:00,3978.4,0.0,47.06 -2013-05-04 04:00:00,3949.7,0.0,47.03 -2013-05-04 05:00:00,3977.7,0.0,46.3 -2013-05-04 06:00:00,4117.3,0.0,46.54 -2013-05-04 07:00:00,4406.6,0.0,47.72 -2013-05-04 08:00:00,4740.6,0.0,50.07 -2013-05-04 09:00:00,5013.8,0.0,52.33 -2013-05-04 10:00:00,5197.1,0.0,54.83 -2013-05-04 11:00:00,5294.4,0.0,56.94 -2013-05-04 12:00:00,5318.2,0.0,57.09 -2013-05-04 13:00:00,5297.9,0.0,57.4 -2013-05-04 14:00:00,5267.5,0.0,56.97 -2013-05-04 15:00:00,5215.9,0.0,55.91 -2013-05-04 16:00:00,5172.1,0.0,55.09 -2013-05-04 17:00:00,5158.9,0.0,53.35 -2013-05-04 18:00:00,5128.2,0.0,51.59 -2013-05-04 19:00:00,5141.1,0.0,49.76 -2013-05-04 20:00:00,5272.4,0.0,48.91 -2013-05-04 21:00:00,5204.7,0.0,47.58 -2013-05-04 22:00:00,5015.6,0.0,47.16 -2013-05-04 23:00:00,4730.6,0.0,46.42 -2013-05-05 00:00:00,4427.4,0.0,45.33 -2013-05-05 01:00:00,4183.5,0.0,45.09 -2013-05-05 02:00:00,3998.3,0.0,44.84 -2013-05-05 03:00:00,3913.0,0.0,45.73 -2013-05-05 04:00:00,3868.0,0.0,46.01 -2013-05-05 05:00:00,3872.3,0.0,46.29 -2013-05-05 06:00:00,3930.7,0.0,46.11 -2013-05-05 07:00:00,4117.3,0.0,46.45 -2013-05-05 08:00:00,4382.4,0.0,48.3 -2013-05-05 09:00:00,4644.9,0.0,48.88 -2013-05-05 10:00:00,4853.7,0.0,53.08 -2013-05-05 11:00:00,4977.0,0.0,53.69 -2013-05-05 12:00:00,5013.3,0.0,55.02 -2013-05-05 13:00:00,5014.2,0.0,54.65 -2013-05-05 14:00:00,5029.8,0.0,55.34 -2013-05-05 15:00:00,5008.9,0.0,54.94 -2013-05-05 16:00:00,5047.3,0.0,53.15 -2013-05-05 17:00:00,5076.4,0.0,52.77 -2013-05-05 18:00:00,5099.0,0.0,51.54 -2013-05-05 19:00:00,5138.6,0.0,50.13 -2013-05-05 20:00:00,5322.0,0.0,49.12 -2013-05-05 21:00:00,5258.8,0.0,47.72 -2013-05-05 22:00:00,4983.2,0.0,47.66 -2013-05-05 23:00:00,4625.8,0.0,46.51 -2013-05-06 00:00:00,4309.2,0.0,46.84 -2013-05-06 01:00:00,4099.7,0.0,46.33 -2013-05-06 02:00:00,3968.8,0.0,46.15 -2013-05-06 03:00:00,3909.5,0.0,46.08 -2013-05-06 04:00:00,3938.1,0.0,46.07 -2013-05-06 05:00:00,4164.1,0.0,45.43 -2013-05-06 06:00:00,4696.4,0.0,46.43 -2013-05-06 07:00:00,5318.5,0.0,46.74 -2013-05-06 08:00:00,5731.5,0.0,48.0 -2013-05-06 09:00:00,5966.3,0.0,49.47 -2013-05-06 10:00:00,6061.9,0.0,52.43 -2013-05-06 11:00:00,6118.2,0.0,53.07 -2013-05-06 12:00:00,6171.3,0.0,57.57 -2013-05-06 13:00:00,6218.4,0.0,58.08 -2013-05-06 14:00:00,6236.1,0.0,59.86 -2013-05-06 15:00:00,6267.2,0.0,59.48 -2013-05-06 16:00:00,6306.0,0.0,60.3 -2013-05-06 17:00:00,6260.8,0.0,59.59 -2013-05-06 18:00:00,6016.0,0.0,58.09 -2013-05-06 19:00:00,5887.4,0.0,52.68 -2013-05-06 20:00:00,5919.3,0.0,56.3 -2013-05-06 21:00:00,5721.9,0.0,50.93 -2013-05-06 22:00:00,5358.4,0.0,50.24 -2013-05-06 23:00:00,4878.6,0.0,50.27 -2013-05-07 00:00:00,4459.4,0.0,49.75 -2013-05-07 01:00:00,4196.7,0.0,50.76 -2013-05-07 02:00:00,4051.5,0.0,49.52 -2013-05-07 03:00:00,3990.0,0.0,49.1 -2013-05-07 04:00:00,4000.4,0.0,50.18 -2013-05-07 05:00:00,4210.5,0.0,50.09 -2013-05-07 06:00:00,4747.6,0.0,51.0 -2013-05-07 07:00:00,5374.4,0.0,52.65 -2013-05-07 08:00:00,5766.9,0.0,54.48 -2013-05-07 09:00:00,6050.4,0.0,57.43 -2013-05-07 10:00:00,6194.5,0.0,61.33 -2013-05-07 11:00:00,6287.6,0.0,60.98 -2013-05-07 12:00:00,6369.2,0.0,63.55 -2013-05-07 13:00:00,6432.2,0.0,64.37 -2013-05-07 14:00:00,6481.5,0.0,63.99 -2013-05-07 15:00:00,6512.8,0.0,65.46 -2013-05-07 16:00:00,6531.0,0.0,65.63 -2013-05-07 17:00:00,6487.4,0.0,64.5 -2013-05-07 18:00:00,6204.9,0.0,64.01 -2013-05-07 19:00:00,6066.4,0.0,60.79 -2013-05-07 20:00:00,6061.8,0.0,60.82 -2013-05-07 21:00:00,5851.9,0.0,58.18 -2013-05-07 22:00:00,5470.8,0.0,59.03 -2013-05-07 23:00:00,4992.6,0.0,58.76 -2013-05-08 00:00:00,4560.9,0.0,58.98 -2013-05-08 01:00:00,4293.3,0.0,57.19 -2013-05-08 02:00:00,4138.3,0.0,56.77 -2013-05-08 03:00:00,4068.0,0.0135,56.28 -2013-05-08 04:00:00,4087.6,0.1081,55.83 -2013-05-08 05:00:00,4325.5,0.0362,55.83 -2013-05-08 06:00:00,4885.3,0.0927,56.69 -2013-05-08 07:00:00,5593.6,0.1835,57.2 -2013-05-08 08:00:00,6075.1,0.248,58.18 -2013-05-08 09:00:00,6298.4,0.0269,61.22 -2013-05-08 10:00:00,6436.8,0.0139,63.23 -2013-05-08 11:00:00,6540.4,0.0,65.01 -2013-05-08 12:00:00,6610.5,0.0131,64.95 -2013-05-08 13:00:00,6611.2,0.0661,62.99 -2013-05-08 14:00:00,6554.0,0.0414,62.53 -2013-05-08 15:00:00,6548.0,0.0,62.4 -2013-05-08 16:00:00,6578.7,0.0,59.56 -2013-05-08 17:00:00,6526.3,0.0,60.82 -2013-05-08 18:00:00,6210.8,0.0,61.77 -2013-05-08 19:00:00,6014.3,0.0,60.09 -2013-05-08 20:00:00,5989.6,0.0,55.48 -2013-05-08 21:00:00,5776.2,0.0,56.71 -2013-05-08 22:00:00,5358.7,0.0,56.28 -2013-05-08 23:00:00,4861.2,0.0069,55.84 -2013-05-09 00:00:00,4452.6,0.0069,55.18 -2013-05-09 01:00:00,4195.9,0.0,54.99 -2013-05-09 02:00:00,4045.5,0.0,55.03 -2013-05-09 03:00:00,3987.9,0.0,54.76 -2013-05-09 04:00:00,4002.6,0.0,54.68 -2013-05-09 05:00:00,4217.1,0.0,54.85 -2013-05-09 06:00:00,4746.5,0.0,55.29 -2013-05-09 07:00:00,5393.5,0.0131,54.62 -2013-05-09 08:00:00,5899.9,0.0,56.34 -2013-05-09 09:00:00,6223.8,0.0104,56.44 -2013-05-09 10:00:00,6381.8,0.1697,58.71 -2013-05-09 11:00:00,6446.0,0.0543,59.4 -2013-05-09 12:00:00,6447.2,0.0065,56.96 -2013-05-09 13:00:00,6451.9,0.0,60.87 -2013-05-09 14:00:00,6468.3,0.0,60.42 -2013-05-09 15:00:00,6515.3,0.0,61.22 -2013-05-09 16:00:00,6555.5,0.0,62.24 -2013-05-09 17:00:00,6502.7,0.0,63.18 -2013-05-09 18:00:00,6245.6,0.0,60.39 -2013-05-09 19:00:00,6066.9,0.0,59.88 -2013-05-09 20:00:00,6056.7,0.0,59.11 -2013-05-09 21:00:00,5869.2,0.0,57.57 -2013-05-09 22:00:00,5537.1,0.0,57.22 -2013-05-09 23:00:00,5069.1,0.0,56.72 -2013-05-10 00:00:00,4660.3,0.0,56.45 -2013-05-10 01:00:00,4343.9,0.0,56.96 -2013-05-10 02:00:00,4176.8,0.0,55.65 -2013-05-10 03:00:00,4103.1,0.0,55.36 -2013-05-10 04:00:00,4098.8,0.0,55.44 -2013-05-10 05:00:00,4305.6,0.0,56.02 -2013-05-10 06:00:00,4842.9,0.0,55.77 -2013-05-10 07:00:00,5528.0,0.0,56.18 -2013-05-10 08:00:00,6028.6,0.0,57.94 -2013-05-10 09:00:00,6398.6,0.0,63.62 -2013-05-10 10:00:00,6591.2,0.0,64.83 -2013-05-10 11:00:00,6732.3,0.0,65.04 -2013-05-10 12:00:00,6781.8,0.0,67.93 -2013-05-10 13:00:00,6838.3,0.0,68.71 -2013-05-10 14:00:00,6850.8,0.0,67.73 -2013-05-10 15:00:00,6841.2,0.0,66.79 -2013-05-10 16:00:00,6794.0,0.0,65.65 -2013-05-10 17:00:00,6638.7,0.0,64.8 -2013-05-10 18:00:00,6287.4,0.0,62.67 -2013-05-10 19:00:00,6120.5,0.0,60.4 -2013-05-10 20:00:00,6059.4,0.0,61.13 -2013-05-10 21:00:00,5858.7,0.0,58.95 -2013-05-10 22:00:00,5558.0,0.0,58.54 -2013-05-10 23:00:00,5168.5,0.0,58.41 -2013-05-11 00:00:00,4786.8,0.0,58.42 -2013-05-11 01:00:00,4517.7,0.0139,57.85 -2013-05-11 02:00:00,4344.6,0.1243,58.53 -2013-05-11 03:00:00,4249.6,0.0265,58.17 -2013-05-11 04:00:00,4196.6,0.0065,57.94 -2013-05-11 05:00:00,4220.1,0.0,57.33 -2013-05-11 06:00:00,4350.8,0.0065,59.49 -2013-05-11 07:00:00,4656.4,0.0,58.27 -2013-05-11 08:00:00,5020.4,0.0,59.61 -2013-05-11 09:00:00,5353.9,0.0261,59.93 -2013-05-11 10:00:00,5600.7,0.0069,60.36 -2013-05-11 11:00:00,5718.6,0.0,61.77 -2013-05-11 12:00:00,5763.1,0.0,63.59 -2013-05-11 13:00:00,5738.5,0.0,62.6 -2013-05-11 14:00:00,5722.2,0.0035,63.13 -2013-05-11 15:00:00,5696.0,0.0275,61.52 -2013-05-11 16:00:00,5702.5,0.204,60.01 -2013-05-11 17:00:00,5662.7,0.14,60.21 -2013-05-11 18:00:00,5628.6,0.0069,58.94 -2013-05-11 19:00:00,5612.7,0.0344,59.75 -2013-05-11 20:00:00,5679.0,0.0,58.03 -2013-05-11 21:00:00,5574.0,0.0069,59.46 -2013-05-11 22:00:00,5379.0,0.0069,59.09 -2013-05-11 23:00:00,5091.4,0.0,59.13 -2013-05-12 00:00:00,4754.8,0.0619,59.41 -2013-05-12 01:00:00,4468.4,0.1306,58.76 -2013-05-12 02:00:00,4264.6,0.0412,58.98 -2013-05-12 03:00:00,4124.4,0.0206,58.4 -2013-05-12 04:00:00,4059.6,0.0275,58.06 -2013-05-12 05:00:00,4049.9,0.0412,59.21 -2013-05-12 06:00:00,4091.3,0.0651,58.67 -2013-05-12 07:00:00,4275.9,0.1395,58.1 -2013-05-12 08:00:00,4543.9,0.0275,57.57 -2013-05-12 09:00:00,4853.4,0.0069,56.96 -2013-05-12 10:00:00,5092.1,0.0,57.92 -2013-05-12 11:00:00,5233.9,0.0,59.61 -2013-05-12 12:00:00,5296.8,0.0,59.44 -2013-05-12 13:00:00,5288.1,0.0,59.96 -2013-05-12 14:00:00,5246.1,0.0069,59.76 -2013-05-12 15:00:00,5198.5,0.0,59.52 -2013-05-12 16:00:00,5174.5,0.0,60.58 -2013-05-12 17:00:00,5141.7,0.0,60.8 -2013-05-12 18:00:00,5109.3,0.0,59.8 -2013-05-12 19:00:00,5118.1,0.0,57.9 -2013-05-12 20:00:00,5273.9,0.0,55.4 -2013-05-12 21:00:00,5232.2,0.0,56.43 -2013-05-12 22:00:00,5018.8,0.0,55.18 -2013-05-12 23:00:00,4659.6,0.0,52.5 -2013-05-13 00:00:00,4310.9,0.0,54.3 -2013-05-13 01:00:00,4084.7,0.0,53.21 -2013-05-13 02:00:00,3943.8,0.0,51.54 -2013-05-13 03:00:00,3888.4,0.0,51.2 -2013-05-13 04:00:00,3914.9,0.0,48.39 -2013-05-13 05:00:00,4124.1,0.0,47.37 -2013-05-13 06:00:00,4650.2,0.0,46.73 -2013-05-13 07:00:00,5269.7,0.0,50.29 -2013-05-13 08:00:00,5687.6,0.0,52.36 -2013-05-13 09:00:00,5962.1,0.0,52.88 -2013-05-13 10:00:00,6079.5,0.0,53.15 -2013-05-13 11:00:00,6137.9,0.0,54.46 -2013-05-13 12:00:00,6148.5,0.0,53.64 -2013-05-13 13:00:00,6151.2,0.0,54.06 -2013-05-13 14:00:00,6122.1,0.0,54.51 -2013-05-13 15:00:00,6124.4,0.0,54.65 -2013-05-13 16:00:00,6135.0,0.0,54.68 -2013-05-13 17:00:00,6100.6,0.0,54.94 -2013-05-13 18:00:00,5901.5,0.0,52.86 -2013-05-13 19:00:00,5788.4,0.0,52.6 -2013-05-13 20:00:00,5829.3,0.0,52.36 -2013-05-13 21:00:00,5673.9,0.0,50.57 -2013-05-13 22:00:00,5314.2,0.0,49.76 -2013-05-13 23:00:00,4833.1,0.0,48.71 -2013-05-14 00:00:00,4428.7,0.0,47.69 -2013-05-14 01:00:00,4189.8,0.0,46.69 -2013-05-14 02:00:00,4043.7,0.0,45.71 -2013-05-14 03:00:00,3976.7,0.0,45.11 -2013-05-14 04:00:00,3996.7,0.0,44.71 -2013-05-14 05:00:00,4201.3,0.0,44.32 -2013-05-14 06:00:00,4724.5,0.0,43.55 -2013-05-14 07:00:00,5318.5,0.0,44.96 -2013-05-14 08:00:00,5726.7,0.0,46.17 -2013-05-14 09:00:00,5979.7,0.0,49.01 -2013-05-14 10:00:00,6092.7,0.0,51.23 -2013-05-14 11:00:00,6128.5,0.0,52.61 -2013-05-14 12:00:00,6126.0,0.0,54.3 -2013-05-14 13:00:00,6150.6,0.0,55.23 -2013-05-14 14:00:00,6135.9,0.0,57.0 -2013-05-14 15:00:00,6127.7,0.0,57.61 -2013-05-14 16:00:00,6161.4,0.0,58.86 -2013-05-14 17:00:00,6119.2,0.0,59.77 -2013-05-14 18:00:00,5902.0,0.0,61.01 -2013-05-14 19:00:00,5793.2,0.0,60.63 -2013-05-14 20:00:00,5836.6,0.0,58.95 -2013-05-14 21:00:00,5696.8,0.0,57.58 -2013-05-14 22:00:00,5342.0,0.0,56.55 -2013-05-14 23:00:00,4886.1,0.0,54.75 -2013-05-15 00:00:00,4471.8,0.0,53.94 -2013-05-15 01:00:00,4216.6,0.0,52.98 -2013-05-15 02:00:00,4067.6,0.0,52.81 -2013-05-15 03:00:00,4011.6,0.0,51.97 -2013-05-15 04:00:00,4025.7,0.0,52.18 -2013-05-15 05:00:00,4224.4,0.0,52.61 -2013-05-15 06:00:00,4743.4,0.0,53.53 -2013-05-15 07:00:00,5348.7,0.0,53.76 -2013-05-15 08:00:00,5742.7,0.0,54.8 -2013-05-15 09:00:00,6029.6,0.0,57.86 -2013-05-15 10:00:00,6139.1,0.0,60.3 -2013-05-15 11:00:00,6205.1,0.0,60.23 -2013-05-15 12:00:00,6230.5,0.0,59.6 -2013-05-15 13:00:00,6244.6,0.0,59.63 -2013-05-15 14:00:00,6246.1,0.0,61.07 -2013-05-15 15:00:00,6281.9,0.0,62.16 -2013-05-15 16:00:00,6325.4,0.0,63.52 -2013-05-15 17:00:00,6321.9,0.0,65.18 -2013-05-15 18:00:00,6111.1,0.0,66.85 -2013-05-15 19:00:00,5972.8,0.0,66.05 -2013-05-15 20:00:00,6007.1,0.0,67.03 -2013-05-15 21:00:00,5866.8,0.0,66.71 -2013-05-15 22:00:00,5528.0,0.0,66.94 -2013-05-15 23:00:00,5075.2,0.0131,67.69 -2013-05-16 00:00:00,4642.6,0.0,67.58 -2013-05-16 01:00:00,4374.4,0.0,67.5 -2013-05-16 02:00:00,4216.1,0.0,65.94 -2013-05-16 03:00:00,4146.5,0.0,63.68 -2013-05-16 04:00:00,4147.0,0.0,63.32 -2013-05-16 05:00:00,4327.9,0.0,62.88 -2013-05-16 06:00:00,4885.6,0.0,62.66 -2013-05-16 07:00:00,5580.3,0.0,63.51 -2013-05-16 08:00:00,6064.9,0.0,65.18 -2013-05-16 09:00:00,6348.7,0.0,64.9 -2013-05-16 10:00:00,6472.7,0.0,66.4 -2013-05-16 11:00:00,6573.9,0.0,68.71 -2013-05-16 12:00:00,6658.1,0.0,71.84 -2013-05-16 13:00:00,6721.0,0.0,73.24 -2013-05-16 14:00:00,6773.3,0.0,74.75 -2013-05-16 15:00:00,6820.3,0.0,76.28 -2013-05-16 16:00:00,6863.8,0.0,76.33 -2013-05-16 17:00:00,6804.0,0.0,76.22 -2013-05-16 18:00:00,6480.7,0.0,75.89 -2013-05-16 19:00:00,6262.9,0.0,73.65 -2013-05-16 20:00:00,6209.9,0.0,71.18 -2013-05-16 21:00:00,6056.5,0.0,70.44 -2013-05-16 22:00:00,5735.4,0.0,69.63 -2013-05-16 23:00:00,5250.2,0.0,68.06 -2013-05-17 00:00:00,4783.0,0.0,67.17 -2013-05-17 01:00:00,4472.9,0.0,68.35 -2013-05-17 02:00:00,4274.1,0.0,66.96 -2013-05-17 03:00:00,4164.2,0.0,65.28 -2013-05-17 04:00:00,4153.8,0.0,63.28 -2013-05-17 05:00:00,4325.9,0.0,61.59 -2013-05-17 06:00:00,4876.6,0.0,60.05 -2013-05-17 07:00:00,5512.2,0.0,59.82 -2013-05-17 08:00:00,5984.6,0.0,60.24 -2013-05-17 09:00:00,6274.4,0.0,61.79 -2013-05-17 10:00:00,6385.9,0.0,61.19 -2013-05-17 11:00:00,6467.3,0.0,62.24 -2013-05-17 12:00:00,6496.1,0.0,64.01 -2013-05-17 13:00:00,6510.7,0.0,65.03 -2013-05-17 14:00:00,6518.1,0.0,66.63 -2013-05-17 15:00:00,6556.2,0.0,68.44 -2013-05-17 16:00:00,6609.1,0.0,69.77 -2013-05-17 17:00:00,6540.8,0.0,70.75 -2013-05-17 18:00:00,6263.8,0.0,71.58 -2013-05-17 19:00:00,6069.2,0.0,71.5 -2013-05-17 20:00:00,5989.2,0.0,70.63 -2013-05-17 21:00:00,5819.9,0.0,67.86 -2013-05-17 22:00:00,5523.4,0.0,66.18 -2013-05-17 23:00:00,5137.2,0.0,64.84 -2013-05-18 00:00:00,4722.6,0.0,64.62 -2013-05-18 01:00:00,4449.6,0.0,61.47 -2013-05-18 02:00:00,4268.5,0.0,59.22 -2013-05-18 03:00:00,4165.1,0.0,59.43 -2013-05-18 04:00:00,4121.1,0.0,57.74 -2013-05-18 05:00:00,4118.7,0.0,56.14 -2013-05-18 06:00:00,4258.6,0.0,55.75 -2013-05-18 07:00:00,4555.5,0.0,55.95 -2013-05-18 08:00:00,4909.4,0.0,57.15 -2013-05-18 09:00:00,5215.7,0.0,59.34 -2013-05-18 10:00:00,5436.7,0.0,61.73 -2013-05-18 11:00:00,5534.9,0.0,63.68 -2013-05-18 12:00:00,5560.0,0.0,63.94 -2013-05-18 13:00:00,5527.5,0.0,63.94 -2013-05-18 14:00:00,5497.0,0.0,63.34 -2013-05-18 15:00:00,5474.4,0.0035,61.56 -2013-05-18 16:00:00,5459.7,0.0,61.38 -2013-05-18 17:00:00,5464.8,0.0,61.63 -2013-05-18 18:00:00,5463.9,0.0,60.61 -2013-05-18 19:00:00,5434.5,0.0,60.61 -2013-05-18 20:00:00,5469.0,0.0,60.61 -2013-05-18 21:00:00,5386.9,0.0,60.17 -2013-05-18 22:00:00,5165.8,0.0,59.56 -2013-05-18 23:00:00,4885.0,0.0,59.19 -2013-05-19 00:00:00,4570.5,0.0,59.19 -2013-05-19 01:00:00,4324.7,0.0,58.57 -2013-05-19 02:00:00,4154.8,0.0,58.4 -2013-05-19 03:00:00,4045.7,0.0,57.16 -2013-05-19 04:00:00,3993.9,0.0131,55.54 -2013-05-19 05:00:00,3995.4,0.0065,56.19 -2013-05-19 06:00:00,4066.8,0.0131,56.61 -2013-05-19 07:00:00,4265.1,0.0035,56.19 -2013-05-19 08:00:00,4558.5,0.02,56.4 -2013-05-19 09:00:00,4870.2,0.0035,56.84 -2013-05-19 10:00:00,5114.0,0.01,57.0 -2013-05-19 11:00:00,5269.8,0.0196,57.4 -2013-05-19 12:00:00,5352.3,0.0261,57.83 -2013-05-19 13:00:00,5372.3,0.03,57.61 -2013-05-19 14:00:00,5372.7,0.0165,57.58 -2013-05-19 15:00:00,5381.2,0.0431,57.98 -2013-05-19 16:00:00,5398.9,0.0069,58.38 -2013-05-19 17:00:00,5433.7,0.0135,58.17 -2013-05-19 18:00:00,5461.7,0.0231,57.98 -2013-05-19 19:00:00,5470.5,0.0165,58.03 -2013-05-19 20:00:00,5507.9,0.0065,57.23 -2013-05-19 21:00:00,5408.9,0.0,58.19 -2013-05-19 22:00:00,5136.0,0.0065,57.16 -2013-05-19 23:00:00,4778.2,0.0,58.0 -2013-05-20 00:00:00,4437.6,0.0065,57.39 -2013-05-20 01:00:00,4223.4,0.0,57.6 -2013-05-20 02:00:00,4094.3,0.0,57.79 -2013-05-20 03:00:00,4035.9,0.0,57.84 -2013-05-20 04:00:00,4070.9,0.0,57.63 -2013-05-20 05:00:00,4307.3,0.0,57.79 -2013-05-20 06:00:00,4878.6,0.0,57.23 -2013-05-20 07:00:00,5557.2,0.0,58.0 -2013-05-20 08:00:00,6035.0,0.0,59.84 -2013-05-20 09:00:00,6365.2,0.0,61.04 -2013-05-20 10:00:00,6573.5,0.0,63.98 -2013-05-20 11:00:00,6733.5,0.0,66.8 -2013-05-20 12:00:00,6875.1,0.0,71.83 -2013-05-20 13:00:00,6973.4,0.0,73.67 -2013-05-20 14:00:00,7020.4,0.0,74.45 -2013-05-20 15:00:00,7078.0,0.0,75.35 -2013-05-20 16:00:00,7164.7,0.0,76.2 -2013-05-20 17:00:00,7120.0,0.0,76.48 -2013-05-20 18:00:00,6803.8,0.0,76.21 -2013-05-20 19:00:00,6585.0,0.0,75.3 -2013-05-20 20:00:00,6507.2,0.0,74.47 -2013-05-20 21:00:00,6350.2,0.0,72.4 -2013-05-20 22:00:00,5991.9,0.0,69.92 -2013-05-20 23:00:00,5481.5,0.0,70.39 -2013-05-21 00:00:00,5021.8,0.0,70.15 -2013-05-21 01:00:00,4721.3,0.0,68.66 -2013-05-21 02:00:00,4554.5,0.0,67.57 -2013-05-21 03:00:00,4467.1,0.0,67.2 -2013-05-21 04:00:00,4489.0,0.0,67.18 -2013-05-21 05:00:00,4716.9,0.0,67.05 -2013-05-21 06:00:00,5357.6,0.0,66.22 -2013-05-21 07:00:00,6157.6,0.0,66.64 -2013-05-21 08:00:00,6708.1,0.0,70.12 -2013-05-21 09:00:00,7160.2,0.0,71.53 -2013-05-21 10:00:00,7463.1,0.0,74.84 -2013-05-21 11:00:00,7684.5,0.0,77.7 -2013-05-21 12:00:00,7849.9,0.0,79.37 -2013-05-21 13:00:00,7980.4,0.0,81.79 -2013-05-21 14:00:00,8072.1,0.0,82.79 -2013-05-21 15:00:00,8160.7,0.0,82.24 -2013-05-21 16:00:00,8240.6,0.0,83.08 -2013-05-21 17:00:00,8197.1,0.0,82.81 -2013-05-21 18:00:00,7826.2,0.0,82.2 -2013-05-21 19:00:00,7557.5,0.0,81.77 -2013-05-21 20:00:00,7472.6,0.0,80.15 -2013-05-21 21:00:00,7271.6,0.0,77.25 -2013-05-21 22:00:00,6830.9,0.0,76.04 -2013-05-21 23:00:00,6273.6,0.0,75.2 -2013-05-22 00:00:00,5735.8,0.0,73.43 -2013-05-22 01:00:00,5394.6,0.0,72.2 -2013-05-22 02:00:00,5178.4,0.0,72.73 -2013-05-22 03:00:00,5046.0,0.0,71.49 -2013-05-22 04:00:00,4960.8,0.0,66.26 -2013-05-22 05:00:00,5092.0,0.0,63.63 -2013-05-22 06:00:00,5592.5,0.0,61.26 -2013-05-22 07:00:00,6200.8,0.0,58.67 -2013-05-22 08:00:00,6615.1,0.0,58.27 -2013-05-22 09:00:00,6881.2,0.0,59.96 -2013-05-22 10:00:00,7024.3,0.0,61.34 -2013-05-22 11:00:00,7171.5,0.0,62.62 -2013-05-22 12:00:00,7301.2,0.0,63.98 -2013-05-22 13:00:00,7438.6,0.0,67.72 -2013-05-22 14:00:00,7541.1,0.0,69.25 -2013-05-22 15:00:00,7625.6,0.0,70.89 -2013-05-22 16:00:00,7785.1,0.0,73.25 -2013-05-22 17:00:00,7797.2,0.0,76.11 -2013-05-22 18:00:00,7432.7,0.0,78.69 -2013-05-22 19:00:00,7105.9,0.0,75.54 -2013-05-22 20:00:00,6978.0,0.0,73.4 -2013-05-22 21:00:00,6814.5,0.0,71.23 -2013-05-22 22:00:00,6482.2,0.0,71.2 -2013-05-22 23:00:00,6010.0,0.0,71.81 -2013-05-23 00:00:00,5532.5,0.0,70.86 -2013-05-23 01:00:00,5196.6,0.0,70.41 -2013-05-23 02:00:00,4963.3,0.0,69.17 -2013-05-23 03:00:00,4860.0,0.0,67.84 -2013-05-23 04:00:00,4863.0,0.0,67.46 -2013-05-23 05:00:00,5076.7,0.0,67.46 -2013-05-23 06:00:00,5757.4,0.0,67.23 -2013-05-23 07:00:00,6521.5,0.0,68.61 -2013-05-23 08:00:00,7067.7,0.0,69.85 -2013-05-23 09:00:00,7498.8,0.0,70.46 -2013-05-23 10:00:00,7784.0,0.0,74.11 -2013-05-23 11:00:00,7926.9,0.0,76.44 -2013-05-23 12:00:00,7998.0,0.0,75.98 -2013-05-23 13:00:00,8078.0,0.0,75.27 -2013-05-23 14:00:00,8048.0,0.0,76.92 -2013-05-23 15:00:00,7890.2,0.0173,72.5 -2013-05-23 16:00:00,7731.8,0.2619,68.59 -2013-05-23 17:00:00,7537.7,0.0035,68.17 -2013-05-23 18:00:00,7171.3,0.0,68.59 -2013-05-23 19:00:00,6947.6,0.0485,67.51 -2013-05-23 20:00:00,6826.7,0.2011,66.86 -2013-05-23 21:00:00,6582.4,0.0,67.02 -2013-05-23 22:00:00,6174.1,0.0,65.58 -2013-05-23 23:00:00,5668.5,0.0,65.72 -2013-05-24 00:00:00,5211.0,0.0,64.34 -2013-05-24 01:00:00,4915.7,0.0,64.55 -2013-05-24 02:00:00,4726.0,0.01,63.69 -2013-05-24 03:00:00,4637.1,0.0373,63.7 -2013-05-24 04:00:00,4640.3,0.0,63.4 -2013-05-24 05:00:00,4849.0,0.0131,63.24 -2013-05-24 06:00:00,5423.6,0.0,63.64 -2013-05-24 07:00:00,6106.4,0.0,63.8 -2013-05-24 08:00:00,6588.6,0.0,64.17 -2013-05-24 09:00:00,6901.8,0.0,64.41 -2013-05-24 10:00:00,6897.9,0.0,63.48 -2013-05-24 11:00:00,6767.9,0.0,58.57 -2013-05-24 12:00:00,6654.8,0.0,57.35 -2013-05-24 13:00:00,6512.5,0.0,55.68 -2013-05-24 14:00:00,6370.3,0.0135,52.36 -2013-05-24 15:00:00,6292.4,0.0273,51.56 -2013-05-24 16:00:00,6241.0,0.0165,51.56 -2013-05-24 17:00:00,6147.7,0.0661,51.96 -2013-05-24 18:00:00,5931.4,0.0065,50.45 -2013-05-24 19:00:00,5795.3,0.01,49.5 -2013-05-24 20:00:00,5720.9,0.0,48.73 -2013-05-24 21:00:00,5531.3,0.0,48.35 -2013-05-24 22:00:00,5243.5,0.0,48.57 -2013-05-24 23:00:00,4881.5,0.0104,47.9 -2013-05-25 00:00:00,4539.8,0.0131,46.7 -2013-05-25 01:00:00,4290.0,0.0339,46.35 -2013-05-25 02:00:00,4126.2,0.0543,46.35 -2013-05-25 03:00:00,4038.4,0.0139,46.17 -2013-05-25 04:00:00,4005.9,0.0069,46.17 -2013-05-25 05:00:00,4013.8,0.0104,46.02 -2013-05-25 06:00:00,4136.6,0.0139,46.02 -2013-05-25 07:00:00,4374.0,0.0347,46.02 -2013-05-25 08:00:00,4670.6,0.0339,46.79 -2013-05-25 09:00:00,4945.9,0.0035,47.63 -2013-05-25 10:00:00,5138.3,0.0,50.06 -2013-05-25 11:00:00,5231.4,0.0,51.61 -2013-05-25 12:00:00,5268.4,0.0,51.71 -2013-05-25 13:00:00,5254.7,0.0,51.31 -2013-05-25 14:00:00,5211.4,0.0065,52.79 -2013-05-25 15:00:00,5168.4,0.0,53.57 -2013-05-25 16:00:00,5158.8,0.0,54.19 -2013-05-25 17:00:00,5160.7,0.0035,53.35 -2013-05-25 18:00:00,5158.3,0.0035,52.79 -2013-05-25 19:00:00,5165.2,0.0,53.02 -2013-05-25 20:00:00,5236.3,0.0,53.02 -2013-05-25 21:00:00,5200.6,0.0,52.8 -2013-05-25 22:00:00,5030.3,0.0,52.36 -2013-05-25 23:00:00,4770.8,0.0,51.17 -2013-05-26 00:00:00,4483.7,0.0,50.57 -2013-05-26 01:00:00,4238.2,0.0,49.8 -2013-05-26 02:00:00,4076.2,0.0,49.57 -2013-05-26 03:00:00,3977.3,0.0,49.13 -2013-05-26 04:00:00,3936.7,0.0,49.13 -2013-05-26 05:00:00,3917.2,0.0,49.21 -2013-05-26 06:00:00,3984.7,0.0,49.36 -2013-05-26 07:00:00,4160.3,0.0,49.94 -2013-05-26 08:00:00,4402.9,0.0,51.23 -2013-05-26 09:00:00,4641.1,0.0,53.46 -2013-05-26 10:00:00,4845.9,0.0,56.07 -2013-05-26 11:00:00,4950.9,0.0,58.3 -2013-05-26 12:00:00,4992.5,0.0,59.86 -2013-05-26 13:00:00,5012.1,0.0,61.7 -2013-05-26 14:00:00,4996.5,0.0,63.51 -2013-05-26 15:00:00,4977.4,0.0,63.86 -2013-05-26 16:00:00,4973.5,0.0,64.93 -2013-05-26 17:00:00,4979.3,0.0,65.55 -2013-05-26 18:00:00,4964.3,0.0,65.47 -2013-05-26 19:00:00,4949.6,0.0,65.33 -2013-05-26 20:00:00,5043.1,0.0,63.86 -2013-05-26 21:00:00,5059.3,0.0,61.28 -2013-05-26 22:00:00,4913.2,0.0,59.85 -2013-05-26 23:00:00,4655.0,0.0,58.62 -2013-05-27 00:00:00,4380.6,0.0,57.2 -2013-05-27 01:00:00,4157.2,0.0,56.87 -2013-05-27 02:00:00,4006.8,0.0,55.98 -2013-05-27 03:00:00,3928.6,0.0,54.53 -2013-05-27 04:00:00,3899.2,0.0,53.73 -2013-05-27 05:00:00,3898.8,0.0,52.89 -2013-05-27 06:00:00,4026.8,0.0,52.99 -2013-05-27 07:00:00,4251.3,0.0,53.64 -2013-05-27 08:00:00,4520.7,0.0,56.47 -2013-05-27 09:00:00,4810.3,0.0,59.38 -2013-05-27 10:00:00,5046.9,0.0,61.45 -2013-05-27 11:00:00,5184.7,0.0,64.3 -2013-05-27 12:00:00,5244.9,0.0,66.3 -2013-05-27 13:00:00,5254.3,0.0,67.85 -2013-05-27 14:00:00,5264.1,0.0,70.1 -2013-05-27 15:00:00,5279.7,0.0,72.14 -2013-05-27 16:00:00,5323.4,0.0,71.29 -2013-05-27 17:00:00,5352.9,0.0,72.78 -2013-05-27 18:00:00,5339.6,0.0,72.55 -2013-05-27 19:00:00,5326.0,0.0,71.94 -2013-05-27 20:00:00,5421.7,0.0,69.89 -2013-05-27 21:00:00,5415.9,0.0,68.89 -2013-05-27 22:00:00,5186.8,0.0,67.99 -2013-05-27 23:00:00,4823.9,0.0,66.56 -2013-05-28 00:00:00,4478.1,0.0,65.12 -2013-05-28 01:00:00,4235.5,0.0,63.93 -2013-05-28 02:00:00,4102.7,0.0,62.72 -2013-05-28 03:00:00,4039.2,0.0,61.31 -2013-05-28 04:00:00,4066.9,0.0,61.19 -2013-05-28 05:00:00,4267.4,0.0,58.83 -2013-05-28 06:00:00,4807.2,0.0,57.07 -2013-05-28 07:00:00,5480.2,0.0,58.1 -2013-05-28 08:00:00,5977.7,0.0,59.93 -2013-05-28 09:00:00,6298.8,0.0,62.3 -2013-05-28 10:00:00,6494.2,0.0,65.57 -2013-05-28 11:00:00,6546.5,0.0,68.03 -2013-05-28 12:00:00,6541.2,0.0,64.22 -2013-05-28 13:00:00,6518.1,0.0235,61.19 -2013-05-28 14:00:00,6474.9,0.0269,59.84 -2013-05-28 15:00:00,6485.5,0.0396,57.39 -2013-05-28 16:00:00,6549.5,0.0431,57.0 -2013-05-28 17:00:00,6526.4,0.0165,57.23 -2013-05-28 18:00:00,6335.2,0.01,57.67 -2013-05-28 19:00:00,6177.9,0.0196,58.82 -2013-05-28 20:00:00,6046.2,0.01,59.59 -2013-05-28 21:00:00,5845.1,0.0,59.59 -2013-05-28 22:00:00,5486.6,0.0,58.84 -2013-05-28 23:00:00,5029.5,0.0,58.84 -2013-05-29 00:00:00,4610.1,0.0,58.84 -2013-05-29 01:00:00,4342.5,0.0,58.84 -2013-05-29 02:00:00,4201.0,0.0,59.07 -2013-05-29 03:00:00,4140.1,0.0,58.67 -2013-05-29 04:00:00,4158.5,0.0,58.23 -2013-05-29 05:00:00,4375.8,0.0,58.02 -2013-05-29 06:00:00,4976.8,0.0,57.83 -2013-05-29 07:00:00,5689.8,0.0,58.02 -2013-05-29 08:00:00,6170.8,0.0,59.87 -2013-05-29 09:00:00,6505.6,0.0,60.3 -2013-05-29 10:00:00,6712.5,0.0,62.31 -2013-05-29 11:00:00,6919.1,0.0,66.31 -2013-05-29 12:00:00,7069.1,0.0,70.61 -2013-05-29 13:00:00,7197.0,0.0,73.11 -2013-05-29 14:00:00,7315.3,0.0,74.53 -2013-05-29 15:00:00,7478.5,0.0,76.23 -2013-05-29 16:00:00,7631.7,0.0,77.93 -2013-05-29 17:00:00,7615.4,0.0,79.67 -2013-05-29 18:00:00,7303.7,0.0,79.67 -2013-05-29 19:00:00,7042.0,0.0,80.17 -2013-05-29 20:00:00,6932.5,0.0,80.09 -2013-05-29 21:00:00,6819.9,0.0,78.47 -2013-05-29 22:00:00,6498.6,0.0,77.85 -2013-05-29 23:00:00,6016.9,0.0,78.39 -2013-05-30 00:00:00,5537.1,0.0,77.38 -2013-05-30 01:00:00,5215.7,0.0,76.91 -2013-05-30 02:00:00,4994.8,0.0,75.08 -2013-05-30 03:00:00,4872.0,0.0,74.85 -2013-05-30 04:00:00,4899.0,0.0,73.09 -2013-05-30 05:00:00,5129.6,0.0,73.01 -2013-05-30 06:00:00,5824.8,0.0,72.38 -2013-05-30 07:00:00,6665.6,0.0,73.57 -2013-05-30 08:00:00,7350.8,0.0,75.66 -2013-05-30 09:00:00,7852.7,0.0,79.68 -2013-05-30 10:00:00,8175.3,0.0,81.68 -2013-05-30 11:00:00,8441.4,0.0,83.76 -2013-05-30 12:00:00,8634.5,0.0,86.87 -2013-05-30 13:00:00,8762.2,0.0,87.61 -2013-05-30 14:00:00,8825.6,0.0,88.08 -2013-05-30 15:00:00,8911.1,0.0,88.32 -2013-05-30 16:00:00,8998.9,0.0,89.24 -2013-05-30 17:00:00,8906.2,0.0,87.34 -2013-05-30 18:00:00,8522.2,0.0,86.4 -2013-05-30 19:00:00,8239.1,0.0,86.87 -2013-05-30 20:00:00,8071.7,0.0,84.99 -2013-05-30 21:00:00,7950.3,0.0,84.43 -2013-05-30 22:00:00,7552.4,0.0,83.89 -2013-05-30 23:00:00,6980.5,0.0,82.3 -2013-05-31 00:00:00,6445.8,0.0,81.91 -2013-05-31 01:00:00,6084.7,0.0,80.15 -2013-05-31 02:00:00,5838.7,0.0,79.04 -2013-05-31 03:00:00,5687.9,0.0,77.95 -2013-05-31 04:00:00,5665.8,0.0,77.01 -2013-05-31 05:00:00,5860.2,0.0,74.65 -2013-05-31 06:00:00,6480.9,0.0,74.56 -2013-05-31 07:00:00,7309.2,0.0,75.62 -2013-05-31 08:00:00,7978.6,0.0,78.37 -2013-05-31 09:00:00,8522.7,0.0,81.03 -2013-05-31 10:00:00,8909.9,0.0,85.21 -2013-05-31 11:00:00,9193.8,0.0,86.65 -2013-05-31 12:00:00,9358.8,0.0,88.1 -2013-05-31 13:00:00,9444.1,0.0,88.4 -2013-05-31 14:00:00,9413.2,0.0,89.32 -2013-05-31 15:00:00,9405.3,0.0,85.62 -2013-05-31 16:00:00,9430.7,0.0,85.93 -2013-05-31 17:00:00,9293.2,0.0,87.31 -2013-05-31 18:00:00,8833.8,0.0,86.7 -2013-05-31 19:00:00,8473.4,0.0,84.91 -2013-05-31 20:00:00,8282.2,0.0,84.33 -2013-05-31 21:00:00,8143.5,0.0,82.3 -2013-05-31 22:00:00,7771.8,0.0,81.46 -2013-05-31 23:00:00,7293.5,0.0,81.03 -2013-06-01 00:00:00,6783.5,0.0,79.71 -2013-06-01 01:00:00,6407.5,0.0,77.86 -2013-06-01 02:00:00,6136.5,0.0,76.68 -2013-06-01 03:00:00,5954.3,0.0,75.46 -2013-06-01 04:00:00,5849.2,0.0,74.31 -2013-06-01 05:00:00,5779.9,0.0,73.46 -2013-06-01 06:00:00,5946.9,0.0,73.04 -2013-06-01 07:00:00,6371.3,0.0,73.89 -2013-06-01 08:00:00,6879.3,0.0,76.1 -2013-06-01 09:00:00,7365.9,0.0,77.53 -2013-06-01 10:00:00,7770.1,0.0,79.74 -2013-06-01 11:00:00,8051.1,0.0,82.68 -2013-06-01 12:00:00,8190.3,0.0,83.45 -2013-06-01 13:00:00,8227.5,0.0,85.21 -2013-06-01 14:00:00,8265.7,0.0,85.98 -2013-06-01 15:00:00,8291.3,0.0,86.5 -2013-06-01 16:00:00,8299.6,0.0,87.48 -2013-06-01 17:00:00,8253.6,0.0,86.61 -2013-06-01 18:00:00,8050.9,0.0,85.58 -2013-06-01 19:00:00,7827.9,0.0,83.58 -2013-06-01 20:00:00,7769.9,0.0,81.75 -2013-06-01 21:00:00,7730.5,0.0,79.71 -2013-06-01 22:00:00,7494.8,0.0,77.87 -2013-06-01 23:00:00,7129.5,0.0,75.91 -2013-06-02 00:00:00,6719.5,0.0,75.03 -2013-06-02 01:00:00,6356.6,0.0,74.83 -2013-06-02 02:00:00,6083.9,0.0,73.8 -2013-06-02 03:00:00,5891.5,0.0,73.44 -2013-06-02 04:00:00,5783.6,0.0,72.48 -2013-06-02 05:00:00,5673.8,0.0,71.66 -2013-06-02 06:00:00,5776.2,0.0,70.47 -2013-06-02 07:00:00,6102.9,0.0,72.67 -2013-06-02 08:00:00,6529.1,0.0,74.81 -2013-06-02 09:00:00,6994.6,0.0,77.44 -2013-06-02 10:00:00,7374.5,0.0,79.37 -2013-06-02 11:00:00,7641.5,0.0,81.32 -2013-06-02 12:00:00,7814.6,0.0,82.38 -2013-06-02 13:00:00,7930.4,0.0,83.55 -2013-06-02 14:00:00,7997.3,0.0,84.6 -2013-06-02 15:00:00,7983.9,0.0,84.71 -2013-06-02 16:00:00,7977.7,0.0,83.14 -2013-06-02 17:00:00,7939.6,0.0,82.82 -2013-06-02 18:00:00,7823.0,0.0,80.75 -2013-06-02 19:00:00,7736.5,0.0,82.08 -2013-06-02 20:00:00,7836.0,0.0,81.05 -2013-06-02 21:00:00,7821.8,0.0104,77.19 -2013-06-02 22:00:00,7555.2,0.0,76.34 -2013-06-02 23:00:00,6998.4,0.0069,75.89 -2013-06-03 00:00:00,6478.5,0.0396,72.11 -2013-06-03 01:00:00,6213.3,0.0427,72.09 -2013-06-03 02:00:00,6016.4,0.0,72.03 -2013-06-03 03:00:00,5882.0,0.0139,71.65 -2013-06-03 04:00:00,5874.0,0.0235,70.57 -2013-06-03 05:00:00,6066.8,0.0065,71.31 -2013-06-03 06:00:00,6649.7,0.0035,71.31 -2013-06-03 07:00:00,7296.3,0.0208,70.0 -2013-06-03 08:00:00,7771.8,0.0361,69.72 -2013-06-03 09:00:00,8047.1,0.0461,70.26 -2013-06-03 10:00:00,8206.8,0.0165,69.64 -2013-06-03 11:00:00,8342.1,0.0131,71.01 -2013-06-03 12:00:00,8442.8,0.0,72.07 -2013-06-03 13:00:00,8576.5,0.0,73.74 -2013-06-03 14:00:00,8580.9,0.0,75.37 -2013-06-03 15:00:00,8545.1,0.0,77.04 -2013-06-03 16:00:00,8574.8,0.0,75.44 -2013-06-03 17:00:00,8424.3,0.0,74.83 -2013-06-03 18:00:00,8072.0,0.1045,71.32 -2013-06-03 19:00:00,7856.4,0.0327,71.36 -2013-06-03 20:00:00,7741.2,0.0,71.44 -2013-06-03 21:00:00,7597.5,0.0,71.5 -2013-06-03 22:00:00,7096.9,0.0,71.7 -2013-06-03 23:00:00,6382.7,0.0,70.49 -2013-06-04 00:00:00,5760.6,0.0,69.05 -2013-06-04 01:00:00,5336.0,0.0,67.05 -2013-06-04 02:00:00,5049.3,0.0,65.43 -2013-06-04 03:00:00,4878.5,0.0,63.43 -2013-06-04 04:00:00,4808.8,0.0,61.21 -2013-06-04 05:00:00,4922.8,0.0,60.21 -2013-06-04 06:00:00,5438.3,0.0,58.36 -2013-06-04 07:00:00,6054.4,0.0,58.57 -2013-06-04 08:00:00,6477.9,0.0,59.63 -2013-06-04 09:00:00,6781.2,0.0,60.84 -2013-06-04 10:00:00,6920.5,0.0,62.17 -2013-06-04 11:00:00,7017.4,0.0,63.46 -2013-06-04 12:00:00,7101.8,0.0,66.14 -2013-06-04 13:00:00,7166.0,0.0,68.07 -2013-06-04 14:00:00,7218.2,0.0,69.51 -2013-06-04 15:00:00,7308.1,0.0,71.7 -2013-06-04 16:00:00,7403.6,0.0,73.14 -2013-06-04 17:00:00,7370.3,0.0,74.16 -2013-06-04 18:00:00,7062.1,0.0,74.47 -2013-06-04 19:00:00,6782.1,0.0,73.49 -2013-06-04 20:00:00,6626.8,0.0,71.95 -2013-06-04 21:00:00,6533.6,0.0,71.07 -2013-06-04 22:00:00,6141.1,0.0,69.52 -2013-06-04 23:00:00,5630.0,0.0,67.68 -2013-06-05 00:00:00,5132.1,0.0,66.28 -2013-06-05 01:00:00,4809.2,0.0,64.84 -2013-06-05 02:00:00,4603.0,0.0,62.85 -2013-06-05 03:00:00,4485.6,0.0,61.08 -2013-06-05 04:00:00,4463.1,0.0,60.85 -2013-06-05 05:00:00,4653.8,0.0,59.03 -2013-06-05 06:00:00,5234.4,0.0,58.26 -2013-06-05 07:00:00,5928.1,0.0,60.52 -2013-06-05 08:00:00,6448.6,0.0,62.53 -2013-06-05 09:00:00,6808.0,0.0,63.73 -2013-06-05 10:00:00,7001.4,0.0,65.86 -2013-06-05 11:00:00,7124.3,0.0,68.27 -2013-06-05 12:00:00,7165.0,0.0,68.17 -2013-06-05 13:00:00,7193.4,0.0,69.67 -2013-06-05 14:00:00,7225.1,0.0,71.46 -2013-06-05 15:00:00,7251.8,0.0,70.98 -2013-06-05 16:00:00,7243.2,0.0,71.19 -2013-06-05 17:00:00,7130.0,0.0,70.4 -2013-06-05 18:00:00,6773.2,0.0,69.55 -2013-06-05 19:00:00,6487.2,0.0,68.07 -2013-06-05 20:00:00,6348.9,0.0,67.07 -2013-06-05 21:00:00,6239.6,0.0,65.23 -2013-06-05 22:00:00,5890.2,0.0,62.83 -2013-06-05 23:00:00,5456.1,0.0,61.87 -2013-06-06 00:00:00,5027.6,0.0,61.09 -2013-06-06 01:00:00,4741.8,0.0,60.66 -2013-06-06 02:00:00,4567.9,0.0,60.26 -2013-06-06 03:00:00,4487.0,0.0,60.05 -2013-06-06 04:00:00,4482.4,0.0,59.61 -2013-06-06 05:00:00,4665.0,0.0,59.39 -2013-06-06 06:00:00,5230.0,0.0,59.45 -2013-06-06 07:00:00,5892.6,0.0,60.46 -2013-06-06 08:00:00,6417.7,0.0,61.98 -2013-06-06 09:00:00,6822.1,0.0,63.78 -2013-06-06 10:00:00,7041.0,0.0,66.55 -2013-06-06 11:00:00,7138.2,0.0,69.01 -2013-06-06 12:00:00,7128.7,0.0,69.21 -2013-06-06 13:00:00,7090.6,0.0,70.0 -2013-06-06 14:00:00,7087.6,0.0,69.77 -2013-06-06 15:00:00,7049.6,0.0,69.21 -2013-06-06 16:00:00,7028.6,0.0,68.0 -2013-06-06 17:00:00,6939.2,0.0,66.78 -2013-06-06 18:00:00,6649.1,0.0,67.21 -2013-06-06 19:00:00,6473.0,0.0,66.23 -2013-06-06 20:00:00,6378.1,0.0,64.8 -2013-06-06 21:00:00,6180.5,0.01,64.4 -2013-06-06 22:00:00,5825.0,0.01,63.4 -2013-06-06 23:00:00,5381.7,0.0304,62.56 -2013-06-07 00:00:00,4967.5,0.0369,61.84 -2013-06-07 01:00:00,4687.2,0.0196,62.06 -2013-06-07 02:00:00,4525.3,0.01,61.23 -2013-06-07 03:00:00,4445.9,0.0035,61.23 -2013-06-07 04:00:00,4459.6,0.0431,61.23 -2013-06-07 05:00:00,4677.2,0.2069,61.63 -2013-06-07 06:00:00,5241.7,0.1461,61.63 -2013-06-07 07:00:00,5910.4,0.0585,61.23 -2013-06-07 08:00:00,6401.0,0.0612,61.82 -2013-06-07 09:00:00,6684.3,0.0469,62.21 -2013-06-07 10:00:00,6853.4,0.1388,62.57 -2013-06-07 11:00:00,6911.5,0.0761,63.42 -2013-06-07 12:00:00,6931.4,0.0857,63.4 -2013-06-07 13:00:00,6934.5,0.1849,63.19 -2013-06-07 14:00:00,6900.8,0.1788,62.57 -2013-06-07 15:00:00,6864.4,0.0508,61.77 -2013-06-07 16:00:00,6837.1,0.0843,61.62 -2013-06-07 17:00:00,6716.2,0.09,61.07 -2013-06-07 18:00:00,6436.5,0.0931,60.29 -2013-06-07 19:00:00,6247.2,0.0643,60.24 -2013-06-07 20:00:00,6118.4,0.1312,60.24 -2013-06-07 21:00:00,5945.0,0.2204,60.84 -2013-06-07 22:00:00,5641.0,0.2708,60.84 -2013-06-07 23:00:00,5255.8,0.16,61.0 -2013-06-08 00:00:00,4858.4,0.0853,60.42 -2013-06-08 01:00:00,4575.4,0.1211,59.03 -2013-06-08 02:00:00,4400.4,0.1015,58.8 -2013-06-08 03:00:00,4287.6,0.0235,57.62 -2013-06-08 04:00:00,4228.8,0.0,57.23 -2013-06-08 05:00:00,4214.9,0.0,58.03 -2013-06-08 06:00:00,4374.6,0.0,58.42 -2013-06-08 07:00:00,4680.3,0.0,60.24 -2013-06-08 08:00:00,5061.8,0.0,61.24 -2013-06-08 09:00:00,5433.3,0.0,64.07 -2013-06-08 10:00:00,5752.8,0.0,66.71 -2013-06-08 11:00:00,5996.1,0.0,70.18 -2013-06-08 12:00:00,6121.8,0.0,72.68 -2013-06-08 13:00:00,6156.0,0.0,74.24 -2013-06-08 14:00:00,6134.0,0.0,74.84 -2013-06-08 15:00:00,6106.3,0.0,74.36 -2013-06-08 16:00:00,6113.8,0.0,73.96 -2013-06-08 17:00:00,6122.6,0.0,74.4 -2013-06-08 18:00:00,6101.9,0.0,74.63 -2013-06-08 19:00:00,6041.9,0.0,74.64 -2013-06-08 20:00:00,6033.6,0.0,74.0 -2013-06-08 21:00:00,6070.8,0.0,72.62 -2013-06-08 22:00:00,5860.9,0.0,70.32 -2013-06-08 23:00:00,5597.6,0.0,70.71 -2013-06-09 00:00:00,5250.3,0.0,67.94 -2013-06-09 01:00:00,4958.0,0.0,67.8 -2013-06-09 02:00:00,4744.3,0.0,67.14 -2013-06-09 03:00:00,4595.3,0.0,66.57 -2013-06-09 04:00:00,4502.6,0.0,65.51 -2013-06-09 05:00:00,4435.1,0.0,63.61 -2013-06-09 06:00:00,4540.7,0.0,63.47 -2013-06-09 07:00:00,4817.8,0.0,64.5 -2013-06-09 08:00:00,5164.7,0.0,67.79 -2013-06-09 09:00:00,5532.1,0.0,69.4 -2013-06-09 10:00:00,5839.6,0.0,71.14 -2013-06-09 11:00:00,6081.4,0.0,73.24 -2013-06-09 12:00:00,6213.4,0.0,75.59 -2013-06-09 13:00:00,6274.1,0.0,76.01 -2013-06-09 14:00:00,6329.3,0.0,77.93 -2013-06-09 15:00:00,6372.5,0.0,78.13 -2013-06-09 16:00:00,6413.5,0.0,78.64 -2013-06-09 17:00:00,6423.3,0.0,78.56 -2013-06-09 18:00:00,6371.1,0.0,77.99 -2013-06-09 19:00:00,6292.6,0.0,76.76 -2013-06-09 20:00:00,6354.2,0.0,74.58 -2013-06-09 21:00:00,6423.5,0.0,72.63 -2013-06-09 22:00:00,6216.5,0.0,71.38 -2013-06-09 23:00:00,5840.8,0.0,70.84 -2013-06-10 00:00:00,5471.0,0.0,70.41 -2013-06-10 01:00:00,5218.3,0.0,68.7 -2013-06-10 02:00:00,5041.5,0.0,68.05 -2013-06-10 03:00:00,4950.7,0.0,67.97 -2013-06-10 04:00:00,4984.6,0.0,67.2 -2013-06-10 05:00:00,5216.0,0.0,66.97 -2013-06-10 06:00:00,5818.4,0.0,66.34 -2013-06-10 07:00:00,6494.2,0.0,66.34 -2013-06-10 08:00:00,7027.1,0.0,67.19 -2013-06-10 09:00:00,7344.9,0.0,67.11 -2013-06-10 10:00:00,7476.4,0.0035,67.56 -2013-06-10 11:00:00,7486.4,0.0239,68.73 -2013-06-10 12:00:00,7480.6,0.06,67.19 -2013-06-10 13:00:00,7422.4,0.0412,66.21 -2013-06-10 14:00:00,7338.6,0.0204,65.19 -2013-06-10 15:00:00,7286.1,0.02,65.84 -2013-06-10 16:00:00,7275.1,0.0296,65.61 -2013-06-10 17:00:00,7196.9,0.0561,65.61 -2013-06-10 18:00:00,6948.8,0.0312,65.83 -2013-06-10 19:00:00,6760.5,0.0639,65.24 -2013-06-10 20:00:00,6606.9,0.1069,64.84 -2013-06-10 21:00:00,6377.1,0.0639,63.85 -2013-06-10 22:00:00,6013.1,0.0589,64.09 -2013-06-10 23:00:00,5543.6,0.0065,63.29 -2013-06-11 00:00:00,5151.8,0.0,63.69 -2013-06-11 01:00:00,4892.7,0.0035,64.9 -2013-06-11 02:00:00,4728.2,0.0065,65.46 -2013-06-11 03:00:00,4670.1,0.0069,65.23 -2013-06-11 04:00:00,4725.5,0.0,64.92 -2013-06-11 05:00:00,4997.6,0.0,65.31 -2013-06-11 06:00:00,5663.3,0.0,65.39 -2013-06-11 07:00:00,6438.9,0.0,68.38 -2013-06-11 08:00:00,7030.4,0.0,70.84 -2013-06-11 09:00:00,7424.4,0.0,71.68 -2013-06-11 10:00:00,7646.5,0.0,73.45 -2013-06-11 11:00:00,7839.0,0.0,74.7 -2013-06-11 12:00:00,7951.5,0.0,76.07 -2013-06-11 13:00:00,8038.3,0.0,77.26 -2013-06-11 14:00:00,8041.3,0.0,78.47 -2013-06-11 15:00:00,8018.8,0.0,77.57 -2013-06-11 16:00:00,8065.4,0.0165,76.65 -2013-06-11 17:00:00,8043.8,0.0,78.68 -2013-06-11 18:00:00,7699.2,0.0,79.03 -2013-06-11 19:00:00,7361.8,0.0,74.42 -2013-06-11 20:00:00,7165.6,0.0,75.09 -2013-06-11 21:00:00,7000.4,0.0,74.43 -2013-06-11 22:00:00,6584.2,0.0,72.66 -2013-06-11 23:00:00,6066.7,0.0,71.42 -2013-06-12 00:00:00,5554.9,0.0,70.82 -2013-06-12 01:00:00,5220.7,0.0,70.21 -2013-06-12 02:00:00,5041.8,0.0,69.76 -2013-06-12 03:00:00,4940.6,0.0,69.66 -2013-06-12 04:00:00,4919.5,0.0,68.42 -2013-06-12 05:00:00,5041.3,0.0,68.02 -2013-06-12 06:00:00,5560.1,0.0,66.8 -2013-06-12 07:00:00,6221.0,0.0,65.63 -2013-06-12 08:00:00,6690.2,0.0,65.63 -2013-06-12 09:00:00,6999.5,0.0,66.46 -2013-06-12 10:00:00,7167.9,0.0,68.09 -2013-06-12 11:00:00,7285.1,0.0,70.35 -2013-06-12 12:00:00,7401.7,0.0,71.06 -2013-06-12 13:00:00,7482.2,0.0,72.74 -2013-06-12 14:00:00,7520.4,0.0,74.16 -2013-06-12 15:00:00,7575.2,0.0,74.2 -2013-06-12 16:00:00,7622.4,0.0,74.53 -2013-06-12 17:00:00,7561.5,0.0,74.76 -2013-06-12 18:00:00,7235.5,0.0,74.76 -2013-06-12 19:00:00,6954.3,0.0,75.39 -2013-06-12 20:00:00,6791.7,0.0,74.33 -2013-06-12 21:00:00,6705.9,0.0,72.3 -2013-06-12 22:00:00,6396.2,0.0,72.49 -2013-06-12 23:00:00,5903.0,0.0,70.85 -2013-06-13 00:00:00,5423.8,0.0,68.25 -2013-06-13 01:00:00,5099.8,0.0,68.4 -2013-06-13 02:00:00,4901.2,0.0,67.25 -2013-06-13 03:00:00,4800.1,0.0,66.6 -2013-06-13 04:00:00,4804.1,0.0,66.02 -2013-06-13 05:00:00,5012.2,0.0,66.62 -2013-06-13 06:00:00,5588.4,0.0,67.02 -2013-06-13 07:00:00,6256.2,0.0,67.6 -2013-06-13 08:00:00,6713.8,0.0035,67.47 -2013-06-13 09:00:00,6991.4,0.0165,66.66 -2013-06-13 10:00:00,7087.3,0.0416,66.61 -2013-06-13 11:00:00,7107.9,0.1671,65.05 -2013-06-13 12:00:00,7100.2,0.2516,63.03 -2013-06-13 13:00:00,7085.9,0.0,63.87 -2013-06-13 14:00:00,7040.9,0.0,63.63 -2013-06-13 15:00:00,7021.9,0.0,63.21 -2013-06-13 16:00:00,7043.8,0.0069,63.82 -2013-06-13 17:00:00,7012.8,0.0035,65.83 -2013-06-13 18:00:00,6727.7,0.0,65.42 -2013-06-13 19:00:00,6580.7,0.0243,64.42 -2013-06-13 20:00:00,6434.2,0.0535,63.05 -2013-06-13 21:00:00,6162.9,0.2156,61.3 -2013-06-13 22:00:00,5742.3,0.01,59.07 -2013-06-13 23:00:00,5272.5,0.01,58.42 -2013-06-14 00:00:00,4818.0,0.0327,57.63 -2013-06-14 01:00:00,4530.3,0.0547,56.02 -2013-06-14 02:00:00,4359.3,0.0431,55.17 -2013-06-14 03:00:00,4278.8,0.0461,55.42 -2013-06-14 04:00:00,4274.5,0.0069,55.02 -2013-06-14 05:00:00,4438.5,0.0,55.02 -2013-06-14 06:00:00,4936.0,0.0,55.19 -2013-06-14 07:00:00,5535.0,0.0,55.57 -2013-06-14 08:00:00,5984.0,0.0,56.4 -2013-06-14 09:00:00,6275.6,0.0,58.4 -2013-06-14 10:00:00,6391.8,0.0,59.23 -2013-06-14 11:00:00,6464.0,0.0,60.24 -2013-06-14 12:00:00,6526.6,0.0,62.67 -2013-06-14 13:00:00,6611.3,0.0,64.06 -2013-06-14 14:00:00,6680.1,0.0,66.67 -2013-06-14 15:00:00,6772.5,0.0,67.87 -2013-06-14 16:00:00,6837.5,0.0,70.57 -2013-06-14 17:00:00,6712.7,0.0,71.4 -2013-06-14 18:00:00,6441.5,0.0,69.77 -2013-06-14 19:00:00,6220.8,0.0,69.57 -2013-06-14 20:00:00,6042.6,0.0,68.59 -2013-06-14 21:00:00,5967.4,0.0,67.03 -2013-06-14 22:00:00,5711.3,0.0,66.32 -2013-06-14 23:00:00,5333.3,0.0,65.55 -2013-06-15 00:00:00,4945.5,0.0,65.16 -2013-06-15 01:00:00,4679.1,0.0,64.92 -2013-06-15 02:00:00,4512.8,0.0,64.12 -2013-06-15 03:00:00,4423.4,0.0,64.35 -2013-06-15 04:00:00,4361.1,0.0,64.34 -2013-06-15 05:00:00,4324.4,0.0,63.84 -2013-06-15 06:00:00,4472.5,0.0,63.76 -2013-06-15 07:00:00,4807.6,0.0,64.19 -2013-06-15 08:00:00,5225.2,0.0,65.77 -2013-06-15 09:00:00,5610.9,0.0,68.4 -2013-06-15 10:00:00,5877.6,0.0,71.23 -2013-06-15 11:00:00,6043.2,0.0,73.23 -2013-06-15 12:00:00,6121.3,0.0,74.7 -2013-06-15 13:00:00,6153.2,0.0,75.7 -2013-06-15 14:00:00,6178.6,0.0,76.72 -2013-06-15 15:00:00,6214.7,0.0,78.0 -2013-06-15 16:00:00,6243.8,0.0,78.37 -2013-06-15 17:00:00,6239.3,0.0,78.94 -2013-06-15 18:00:00,6161.3,0.0,78.15 -2013-06-15 19:00:00,6059.5,0.0,79.1 -2013-06-15 20:00:00,6033.7,0.0,77.2 -2013-06-15 21:00:00,6064.4,0.0,75.05 -2013-06-15 22:00:00,5906.2,0.0,73.25 -2013-06-15 23:00:00,5638.9,0.0,73.32 -2013-06-16 00:00:00,5289.7,0.0,70.35 -2013-06-16 01:00:00,4985.3,0.0,69.91 -2013-06-16 02:00:00,4774.6,0.0,69.08 -2013-06-16 03:00:00,4629.5,0.0,67.45 -2013-06-16 04:00:00,4555.9,0.0,66.37 -2013-06-16 05:00:00,4471.6,0.0,66.98 -2013-06-16 06:00:00,4559.8,0.0,65.79 -2013-06-16 07:00:00,4760.8,0.0,66.97 -2013-06-16 08:00:00,5047.7,0.0,67.55 -2013-06-16 09:00:00,5367.2,0.0,68.92 -2013-06-16 10:00:00,5659.0,0.0,70.9 -2013-06-16 11:00:00,5934.5,0.0,74.66 -2013-06-16 12:00:00,6093.4,0.0,77.62 -2013-06-16 13:00:00,6153.2,0.0,78.7 -2013-06-16 14:00:00,6230.7,0.0,78.76 -2013-06-16 15:00:00,6319.0,0.0,78.97 -2013-06-16 16:00:00,6384.9,0.0,79.44 -2013-06-16 17:00:00,6428.2,0.0,80.24 -2013-06-16 18:00:00,6425.6,0.0,80.17 -2013-06-16 19:00:00,6390.9,0.0,79.41 -2013-06-16 20:00:00,6452.6,0.0,78.26 -2013-06-16 21:00:00,6582.2,0.0,76.8 -2013-06-16 22:00:00,6453.2,0.0,75.76 -2013-06-16 23:00:00,6098.5,0.0,74.59 -2013-06-17 00:00:00,5704.2,0.0,73.59 -2013-06-17 01:00:00,5422.4,0.0,72.79 -2013-06-17 02:00:00,5235.8,0.0,71.24 -2013-06-17 03:00:00,5141.5,0.0,70.88 -2013-06-17 04:00:00,5168.2,0.0,69.95 -2013-06-17 05:00:00,5378.2,0.0,69.16 -2013-06-17 06:00:00,5959.6,0.0,69.38 -2013-06-17 07:00:00,6674.3,0.0,70.15 -2013-06-17 08:00:00,7290.8,0.0,71.57 -2013-06-17 09:00:00,7769.6,0.0,73.99 -2013-06-17 10:00:00,8036.6,0.0,76.36 -2013-06-17 11:00:00,8370.6,0.0,78.47 -2013-06-17 12:00:00,8525.9,0.0,80.61 -2013-06-17 13:00:00,8638.1,0.0,81.85 -2013-06-17 14:00:00,8766.9,0.0,83.22 -2013-06-17 15:00:00,8638.4,0.0,83.43 -2013-06-17 16:00:00,8555.3,0.0,76.33 -2013-06-17 17:00:00,8580.3,0.0,80.8 -2013-06-17 18:00:00,8286.0,0.0,82.76 -2013-06-17 19:00:00,7952.8,0.0,84.02 -2013-06-17 20:00:00,7773.2,0.0,78.34 -2013-06-17 21:00:00,7664.5,0.0,77.45 -2013-06-17 22:00:00,7276.5,0.0,76.64 -2013-06-17 23:00:00,6719.8,0.0,75.01 -2013-06-18 00:00:00,6208.1,0.0,73.8 -2013-06-18 01:00:00,5839.7,0.0,72.82 -2013-06-18 02:00:00,5576.1,0.0,70.31 -2013-06-18 03:00:00,5418.1,0.0,68.76 -2013-06-18 04:00:00,5378.6,0.0,67.53 -2013-06-18 05:00:00,5497.3,0.0,66.32 -2013-06-18 06:00:00,6134.9,0.0,66.3 -2013-06-18 07:00:00,6889.2,0.0,67.52 -2013-06-18 08:00:00,7488.4,0.0,69.4 -2013-06-18 09:00:00,7967.2,0.0,71.0 -2013-06-18 10:00:00,8273.3,0.0,73.05 -2013-06-18 11:00:00,8516.3,0.0,74.29 -2013-06-18 12:00:00,8669.3,0.0,75.49 -2013-06-18 13:00:00,8696.1,0.0,77.92 -2013-06-18 14:00:00,8525.6,0.0,78.58 -2013-06-18 15:00:00,8459.8,0.0,76.95 -2013-06-18 16:00:00,8370.5,0.0131,73.84 -2013-06-18 17:00:00,8086.6,0.1552,71.04 -2013-06-18 18:00:00,7676.3,0.1652,68.3 -2013-06-18 19:00:00,7405.4,0.0992,69.33 -2013-06-18 20:00:00,7207.0,0.0165,68.56 -2013-06-18 21:00:00,7043.0,0.0,66.17 -2013-06-18 22:00:00,6662.3,0.0,66.23 -2013-06-18 23:00:00,6161.1,0.0,66.21 -2013-06-19 00:00:00,5682.8,0.0,66.43 -2013-06-19 01:00:00,5297.5,0.0,64.63 -2013-06-19 02:00:00,5065.8,0.0,63.79 -2013-06-19 03:00:00,4915.4,0.0,63.86 -2013-06-19 04:00:00,4878.5,0.0,62.88 -2013-06-19 05:00:00,5011.1,0.0,61.59 -2013-06-19 06:00:00,5545.5,0.0,60.73 -2013-06-19 07:00:00,6163.8,0.0,61.19 -2013-06-19 08:00:00,6676.4,0.0,62.75 -2013-06-19 09:00:00,6999.3,0.0,64.75 -2013-06-19 10:00:00,7203.9,0.0,67.01 -2013-06-19 11:00:00,7360.4,0.0,69.23 -2013-06-19 12:00:00,7403.5,0.0,71.23 -2013-06-19 13:00:00,7463.9,0.0,73.41 -2013-06-19 14:00:00,7495.2,0.0,73.3 -2013-06-19 15:00:00,7553.6,0.0,74.23 -2013-06-19 16:00:00,7614.4,0.0,75.46 -2013-06-19 17:00:00,7548.9,0.0,75.23 -2013-06-19 18:00:00,7209.7,0.0,75.63 -2013-06-19 19:00:00,6928.8,0.0,75.44 -2013-06-19 20:00:00,6718.7,0.0,75.07 -2013-06-19 21:00:00,6633.7,0.0,69.43 -2013-06-19 22:00:00,6300.4,0.0,68.24 -2013-06-19 23:00:00,5831.5,0.0,67.8 -2013-06-20 00:00:00,5338.5,0.0,66.75 -2013-06-20 01:00:00,5013.9,0.0,65.53 -2013-06-20 02:00:00,4805.1,0.0,64.92 -2013-06-20 03:00:00,4692.7,0.0,64.11 -2013-06-20 04:00:00,4684.9,0.0,63.49 -2013-06-20 05:00:00,4866.5,0.0,63.14 -2013-06-20 06:00:00,5469.4,0.0,62.97 -2013-06-20 07:00:00,6186.1,0.0,64.99 -2013-06-20 08:00:00,6755.0,0.0,66.55 -2013-06-20 09:00:00,7154.0,0.0,68.74 -2013-06-20 10:00:00,7387.0,0.0,71.51 -2013-06-20 11:00:00,7541.8,0.0,72.4 -2013-06-20 12:00:00,7656.2,0.0,74.45 -2013-06-20 13:00:00,7738.0,0.0,75.24 -2013-06-20 14:00:00,7798.6,0.0,76.43 -2013-06-20 15:00:00,7859.4,0.0,76.47 -2013-06-20 16:00:00,7868.4,0.0,76.34 -2013-06-20 17:00:00,7747.1,0.0,76.51 -2013-06-20 18:00:00,7335.9,0.0,75.36 -2013-06-20 19:00:00,6993.7,0.0,74.36 -2013-06-20 20:00:00,6798.9,0.0,72.74 -2013-06-20 21:00:00,6700.0,0.0,71.29 -2013-06-20 22:00:00,6367.4,0.0,70.29 -2013-06-20 23:00:00,5906.6,0.0,68.84 -2013-06-21 00:00:00,5428.1,0.0,68.4 -2013-06-21 01:00:00,5067.6,0.0,67.59 -2013-06-21 02:00:00,4851.1,0.0,66.76 -2013-06-21 03:00:00,4730.7,0.0,65.76 -2013-06-21 04:00:00,4698.6,0.0,65.32 -2013-06-21 05:00:00,4876.9,0.0,64.71 -2013-06-21 06:00:00,5453.1,0.0,64.32 -2013-06-21 07:00:00,6162.5,0.0,65.55 -2013-06-21 08:00:00,6681.9,0.0,67.74 -2013-06-21 09:00:00,7134.8,0.0,71.1 -2013-06-21 10:00:00,7388.6,0.0,72.61 -2013-06-21 11:00:00,7579.4,0.0,75.07 -2013-06-21 12:00:00,7719.1,0.0,76.82 -2013-06-21 13:00:00,7821.6,0.0,78.94 -2013-06-21 14:00:00,7880.3,0.0,78.68 -2013-06-21 15:00:00,7910.4,0.0,81.35 -2013-06-21 16:00:00,7888.6,0.0,81.69 -2013-06-21 17:00:00,7710.9,0.0,77.79 -2013-06-21 18:00:00,7313.4,0.0,76.57 -2013-06-21 19:00:00,6997.5,0.0,75.64 -2013-06-21 20:00:00,6772.4,0.0,73.95 -2013-06-21 21:00:00,6661.7,0.0,72.53 -2013-06-21 22:00:00,6358.9,0.0,71.69 -2013-06-21 23:00:00,5969.7,0.0,70.64 -2013-06-22 00:00:00,5523.8,0.0,70.2 -2013-06-22 01:00:00,5191.9,0.0,69.59 -2013-06-22 02:00:00,4964.6,0.0,68.38 -2013-06-22 03:00:00,4829.8,0.0,67.78 -2013-06-22 04:00:00,4754.3,0.0,66.53 -2013-06-22 05:00:00,4725.0,0.0,65.79 -2013-06-22 06:00:00,4904.0,0.0,64.79 -2013-06-22 07:00:00,5268.6,0.0,65.59 -2013-06-22 08:00:00,5701.2,0.0,67.97 -2013-06-22 09:00:00,6103.2,0.0,70.8 -2013-06-22 10:00:00,6459.5,0.0,73.19 -2013-06-22 11:00:00,6704.1,0.0,75.84 -2013-06-22 12:00:00,6859.6,0.0,78.05 -2013-06-22 13:00:00,6923.6,0.0,80.31 -2013-06-22 14:00:00,6954.8,0.0,80.78 -2013-06-22 15:00:00,6945.9,0.0,80.74 -2013-06-22 16:00:00,6890.9,0.0,78.08 -2013-06-22 17:00:00,6789.2,0.0,76.29 -2013-06-22 18:00:00,6623.2,0.0,75.71 -2013-06-22 19:00:00,6405.9,0.0,74.32 -2013-06-22 20:00:00,6321.9,0.0,73.48 -2013-06-22 21:00:00,6321.5,0.0,71.9 -2013-06-22 22:00:00,6147.4,0.0,71.69 -2013-06-22 23:00:00,5907.4,0.0,71.24 -2013-06-23 00:00:00,5606.7,0.0,71.05 -2013-06-23 01:00:00,5349.1,0.0,70.99 -2013-06-23 02:00:00,5160.1,0.0,70.99 -2013-06-23 03:00:00,5033.0,0.0,70.32 -2013-06-23 04:00:00,4962.1,0.0,69.78 -2013-06-23 05:00:00,4905.1,0.0,69.78 -2013-06-23 06:00:00,5006.2,0.0,69.15 -2013-06-23 07:00:00,5307.6,0.0,70.2 -2013-06-23 08:00:00,5729.1,0.0,72.41 -2013-06-23 09:00:00,6202.8,0.0,74.84 -2013-06-23 10:00:00,6656.2,0.0,79.14 -2013-06-23 11:00:00,7003.9,0.0,80.9 -2013-06-23 12:00:00,7248.4,0.0,82.12 -2013-06-23 13:00:00,7389.9,0.0,84.29 -2013-06-23 14:00:00,7499.8,0.0,83.27 -2013-06-23 15:00:00,7584.7,0.0,83.65 -2013-06-23 16:00:00,7587.5,0.0,83.43 -2013-06-23 17:00:00,7517.9,0.0,81.7 -2013-06-23 18:00:00,7472.0,0.0,80.28 -2013-06-23 19:00:00,7395.1,0.0,79.97 -2013-06-23 20:00:00,7403.2,0.0,77.88 -2013-06-23 21:00:00,7508.8,0.0,76.36 -2013-06-23 22:00:00,7339.8,0.0,75.93 -2013-06-23 23:00:00,6956.4,0.0,75.3 -2013-06-24 00:00:00,6577.4,0.0,74.47 -2013-06-24 01:00:00,6281.0,0.0,74.41 -2013-06-24 02:00:00,6074.9,0.0,73.97 -2013-06-24 03:00:00,6002.3,0.0,74.2 -2013-06-24 04:00:00,6036.0,0.0,74.36 -2013-06-24 05:00:00,6258.5,0.0,74.15 -2013-06-24 06:00:00,6861.6,0.0,74.36 -2013-06-24 07:00:00,7640.1,0.0,75.13 -2013-06-24 08:00:00,8363.6,0.0,77.43 -2013-06-24 09:00:00,8931.5,0.0,79.44 -2013-06-24 10:00:00,9279.2,0.0,81.49 -2013-06-24 11:00:00,9574.9,0.0,84.2 -2013-06-24 12:00:00,9865.6,0.0,87.69 -2013-06-24 13:00:00,9970.8,0.0,88.14 -2013-06-24 14:00:00,10044.7,0.0,89.35 -2013-06-24 15:00:00,10060.6,0.0,90.69 -2013-06-24 16:00:00,9932.1,0.0,90.04 -2013-06-24 17:00:00,9763.5,0.0,87.77 -2013-06-24 18:00:00,9425.1,0.0,85.31 -2013-06-24 19:00:00,9083.1,0.0,84.91 -2013-06-24 20:00:00,8858.1,0.0,83.57 -2013-06-24 21:00:00,8624.9,0.0,80.91 -2013-06-24 22:00:00,8175.9,0.0,78.01 -2013-06-24 23:00:00,7596.9,0.0,77.62 -2013-06-25 00:00:00,7051.8,0.0,77.97 -2013-06-25 01:00:00,6656.9,0.0,77.56 -2013-06-25 02:00:00,6429.8,0.0,77.55 -2013-06-25 03:00:00,6289.0,0.0,76.39 -2013-06-25 04:00:00,6267.2,0.0,75.26 -2013-06-25 05:00:00,6397.7,0.0,74.47 -2013-06-25 06:00:00,6961.4,0.0,72.92 -2013-06-25 07:00:00,7708.5,0.0,74.13 -2013-06-25 08:00:00,8354.8,0.0,76.19 -2013-06-25 09:00:00,8876.6,0.0,78.01 -2013-06-25 10:00:00,9239.5,0.0,80.71 -2013-06-25 11:00:00,9553.8,0.0,83.67 -2013-06-25 12:00:00,9815.3,0.0,86.35 -2013-06-25 13:00:00,9989.1,0.0,88.31 -2013-06-25 14:00:00,10040.7,0.0,88.34 -2013-06-25 15:00:00,10168.1,0.0,89.64 -2013-06-25 16:00:00,10227.9,0.0,89.08 -2013-06-25 17:00:00,9820.3,0.0,88.44 -2013-06-25 18:00:00,9480.7,0.0,81.87 -2013-06-25 19:00:00,9297.4,0.0,85.01 -2013-06-25 20:00:00,9113.6,0.0,84.76 -2013-06-25 21:00:00,9022.2,0.0,83.2 -2013-06-25 22:00:00,8633.2,0.0,82.6 -2013-06-25 23:00:00,8014.5,0.0,82.37 -2013-06-26 00:00:00,7412.4,0.0,80.23 -2013-06-26 01:00:00,7031.1,0.0065,78.43 -2013-06-26 02:00:00,6743.4,0.0,77.52 -2013-06-26 03:00:00,6580.9,0.0,77.06 -2013-06-26 04:00:00,6512.5,0.0,75.97 -2013-06-26 05:00:00,6642.8,0.0,75.34 -2013-06-26 06:00:00,7179.2,0.0,75.13 -2013-06-26 07:00:00,7868.2,0.0,75.19 -2013-06-26 08:00:00,8488.4,0.0,76.4 -2013-06-26 09:00:00,8957.6,0.0,78.78 -2013-06-26 10:00:00,9271.5,0.0,80.85 -2013-06-26 11:00:00,9398.2,0.0,81.78 -2013-06-26 12:00:00,9310.4,0.0,82.07 -2013-06-26 13:00:00,9416.1,0.0,81.74 -2013-06-26 14:00:00,9452.1,0.0,81.74 -2013-06-26 15:00:00,9562.7,0.0,82.1 -2013-06-26 16:00:00,9743.3,0.0,84.48 -2013-06-26 17:00:00,9673.4,0.0,85.26 -2013-06-26 18:00:00,9305.8,0.0,85.06 -2013-06-26 19:00:00,8981.1,0.0065,85.23 -2013-06-26 20:00:00,8776.0,0.0,82.86 -2013-06-26 21:00:00,8682.5,0.0,79.84 -2013-06-26 22:00:00,8327.7,0.0,78.75 -2013-06-26 23:00:00,7740.3,0.0,77.41 -2013-06-27 00:00:00,7174.2,0.0,75.44 -2013-06-27 01:00:00,6817.7,0.0,75.03 -2013-06-27 02:00:00,6581.6,0.0,73.71 -2013-06-27 03:00:00,6457.1,0.0,74.23 -2013-06-27 04:00:00,6448.4,0.0,73.4 -2013-06-27 05:00:00,6640.0,0.0,72.64 -2013-06-27 06:00:00,7184.4,0.0,73.41 -2013-06-27 07:00:00,7828.0,0.0,73.23 -2013-06-27 08:00:00,8409.8,0.0,74.13 -2013-06-27 09:00:00,8961.5,0.0,75.74 -2013-06-27 10:00:00,9290.6,0.0,77.88 -2013-06-27 11:00:00,9508.4,0.0,79.55 -2013-06-27 12:00:00,9637.5,0.0,79.07 -2013-06-27 13:00:00,9716.4,0.0,80.04 -2013-06-27 14:00:00,9724.5,0.0,81.23 -2013-06-27 15:00:00,9802.8,0.0,81.28 -2013-06-27 16:00:00,9792.4,0.0,80.95 -2013-06-27 17:00:00,9643.2,0.0,81.31 -2013-06-27 18:00:00,9120.9,0.0,80.82 -2013-06-27 19:00:00,8738.3,0.0,77.82 -2013-06-27 20:00:00,8557.9,0.0,77.19 -2013-06-27 21:00:00,8398.3,0.0936,75.8 -2013-06-27 22:00:00,8084.4,0.1675,74.67 -2013-06-27 23:00:00,7598.6,0.0843,74.18 -2013-06-28 00:00:00,7087.6,0.0173,73.65 -2013-06-28 01:00:00,6715.6,0.0,74.75 -2013-06-28 02:00:00,6474.5,0.0,74.43 -2013-06-28 03:00:00,6327.1,0.0,73.5 -2013-06-28 04:00:00,6311.7,0.0,74.09 -2013-06-28 05:00:00,6470.2,0.0,73.7 -2013-06-28 06:00:00,7038.0,0.0,73.06 -2013-06-28 07:00:00,7719.9,0.0,73.38 -2013-06-28 08:00:00,8284.7,0.0,74.38 -2013-06-28 09:00:00,8733.3,0.0,75.81 -2013-06-28 10:00:00,8957.8,0.0,77.63 -2013-06-28 11:00:00,9091.5,0.0,78.55 -2013-06-28 12:00:00,9255.2,0.0,80.41 -2013-06-28 13:00:00,9351.2,0.0,81.99 -2013-06-28 14:00:00,9426.8,0.0,82.47 -2013-06-28 15:00:00,9482.9,0.0,84.15 -2013-06-28 16:00:00,9507.9,0.0,84.52 -2013-06-28 17:00:00,9279.9,0.0,84.97 -2013-06-28 18:00:00,8866.8,0.0,81.91 -2013-06-28 19:00:00,8541.6,0.0,81.27 -2013-06-28 20:00:00,8343.9,0.0,79.01 -2013-06-28 21:00:00,8131.0,0.0,77.74 -2013-06-28 22:00:00,7729.4,0.0,77.4 -2013-06-28 23:00:00,7245.1,0.0,75.96 -2013-06-29 00:00:00,6779.3,0.0,75.99 -2013-06-29 01:00:00,6441.9,0.0,74.73 -2013-06-29 02:00:00,6187.8,0.0,73.24 -2013-06-29 03:00:00,6018.3,0.0,72.64 -2013-06-29 04:00:00,5919.2,0.0,71.59 -2013-06-29 05:00:00,5827.8,0.0,71.59 -2013-06-29 06:00:00,5970.8,0.0,71.36 -2013-06-29 07:00:00,6264.5,0.0,71.78 -2013-06-29 08:00:00,6608.0,0.0,72.01 -2013-06-29 09:00:00,6993.2,0.0,73.03 -2013-06-29 10:00:00,7340.5,0.0,74.64 -2013-06-29 11:00:00,7637.5,0.0,76.85 -2013-06-29 12:00:00,7810.7,0.0,79.53 -2013-06-29 13:00:00,7859.2,0.0,81.07 -2013-06-29 14:00:00,7884.2,0.0,81.54 -2013-06-29 15:00:00,7931.7,0.0,80.37 -2013-06-29 16:00:00,7956.2,0.0,81.81 -2013-06-29 17:00:00,7899.3,0.0,81.37 -2013-06-29 18:00:00,7749.6,0.0,79.34 -2013-06-29 19:00:00,7569.6,0.0,79.22 -2013-06-29 20:00:00,7499.3,0.0,77.54 -2013-06-29 21:00:00,7608.2,0.0,77.13 -2013-06-29 22:00:00,7495.9,0.0,77.12 -2013-06-29 23:00:00,7253.1,0.0,76.87 -2013-06-30 00:00:00,6865.5,0.0,76.64 -2013-06-30 01:00:00,6548.8,0.0,76.43 -2013-06-30 02:00:00,6280.7,0.0,75.05 -2013-06-30 03:00:00,6087.2,0.0,74.09 -2013-06-30 04:00:00,5960.2,0.0,73.47 -2013-06-30 05:00:00,5868.0,0.0,73.1 -2013-06-30 06:00:00,5930.2,0.0,73.32 -2013-06-30 07:00:00,6164.4,0.0,73.3 -2013-06-30 08:00:00,6598.4,0.0,74.7 -2013-06-30 09:00:00,7038.9,0.0,77.86 -2013-06-30 10:00:00,7476.5,0.0,77.68 -2013-06-30 11:00:00,7849.1,0.0,78.32 -2013-06-30 12:00:00,8039.9,0.0,81.72 -2013-06-30 13:00:00,8001.4,0.0,82.82 -2013-06-30 14:00:00,7788.2,0.0,79.15 -2013-06-30 15:00:00,7693.6,0.0,77.27 -2013-06-30 16:00:00,7624.8,0.0,76.08 -2013-06-30 17:00:00,7634.9,0.0,75.71 -2013-06-30 18:00:00,7583.9,0.0,75.92 -2013-06-30 19:00:00,7528.7,0.0,76.72 -2013-06-30 20:00:00,7551.0,0.0,75.44 -2013-06-30 21:00:00,7597.9,0.0,74.02 -2013-06-30 22:00:00,7396.7,0.0,74.23 -2013-06-30 23:00:00,7060.5,0.0,73.0 -2013-07-01 00:00:00,6688.7,0.0,73.29 -2013-07-01 01:00:00,6423.6,0.0,74.06 -2013-07-01 02:00:00,6237.6,0.0,74.06 -2013-07-01 03:00:00,6139.8,0.0,74.06 -2013-07-01 04:00:00,6179.0,0.0,73.46 -2013-07-01 05:00:00,6411.6,0.0,73.69 -2013-07-01 06:00:00,6927.1,0.0,73.69 -2013-07-01 07:00:00,7579.3,0.0,74.7 -2013-07-01 08:00:00,8105.6,0.0,74.67 -2013-07-01 09:00:00,8529.4,0.0,75.51 -2013-07-01 10:00:00,8668.5,0.5591,73.85 -2013-07-01 11:00:00,8677.1,0.0208,74.03 -2013-07-01 12:00:00,8718.2,0.1437,73.4 -2013-07-01 13:00:00,8774.0,0.0131,74.27 -2013-07-01 14:00:00,8767.3,0.0461,74.84 -2013-07-01 15:00:00,8736.4,0.0412,74.84 -2013-07-01 16:00:00,8721.9,0.0,75.11 -2013-07-01 17:00:00,8628.6,0.0,74.84 -2013-07-01 18:00:00,8245.4,0.0,73.65 -2013-07-01 19:00:00,8039.0,0.0,73.9 -2013-07-01 20:00:00,7914.8,0.0,74.3 -2013-07-01 21:00:00,7805.7,0.0,73.65 -2013-07-01 22:00:00,7498.7,0.0,73.9 -2013-07-01 23:00:00,7008.2,0.0,73.9 -2013-07-02 00:00:00,6525.3,0.0,73.47 -2013-07-02 01:00:00,6195.0,0.0,73.27 -2013-07-02 02:00:00,5982.5,0.0,73.07 -2013-07-02 03:00:00,5875.8,0.0,73.06 -2013-07-02 04:00:00,5903.7,0.0,72.84 -2013-07-02 05:00:00,6130.9,0.0,72.69 -2013-07-02 06:00:00,6694.6,0.0,72.84 -2013-07-02 07:00:00,7367.1,0.0,73.27 -2013-07-02 08:00:00,7880.3,0.0,74.3 -2013-07-02 09:00:00,8223.7,0.0,74.69 -2013-07-02 10:00:00,8449.5,0.0,75.3 -2013-07-02 11:00:00,8635.9,0.0,77.76 -2013-07-02 12:00:00,8714.3,0.0,76.72 -2013-07-02 13:00:00,8828.4,0.0,78.14 -2013-07-02 14:00:00,9053.4,0.0,78.76 -2013-07-02 15:00:00,9164.3,0.0,81.54 -2013-07-02 16:00:00,9208.7,0.0,79.5 -2013-07-02 17:00:00,9128.7,0.0,80.85 -2013-07-02 18:00:00,8781.4,0.0,81.31 -2013-07-02 19:00:00,8507.9,0.0,80.8 -2013-07-02 20:00:00,8383.2,0.0,79.24 -2013-07-02 21:00:00,8140.5,0.0065,75.79 -2013-07-02 22:00:00,7796.8,0.0,75.3 -2013-07-02 23:00:00,7276.8,0.0,75.7 -2013-07-03 00:00:00,6742.3,0.0,75.64 -2013-07-03 01:00:00,6363.0,0.0,74.86 -2013-07-03 02:00:00,6117.2,0.0,74.64 -2013-07-03 03:00:00,5984.1,0.0,74.24 -2013-07-03 04:00:00,5975.2,0.0,74.24 -2013-07-03 05:00:00,6168.2,0.0,73.24 -2013-07-03 06:00:00,6748.7,0.0,73.64 -2013-07-03 07:00:00,7424.3,0.0,73.64 -2013-07-03 08:00:00,7965.7,0.0,74.64 -2013-07-03 09:00:00,8353.3,0.0,75.82 -2013-07-03 10:00:00,8640.7,0.0,77.03 -2013-07-03 11:00:00,8890.7,0.0,79.03 -2013-07-03 12:00:00,9095.6,0.0,80.03 -2013-07-03 13:00:00,9214.2,0.0,82.3 -2013-07-03 14:00:00,9130.6,0.0035,80.75 -2013-07-03 15:00:00,9174.8,0.1211,78.67 -2013-07-03 16:00:00,9322.2,0.0784,80.91 -2013-07-03 17:00:00,9284.7,0.052,82.35 -2013-07-03 18:00:00,8821.5,0.0901,82.09 -2013-07-03 19:00:00,8468.5,0.1045,79.65 -2013-07-03 20:00:00,8269.2,0.1111,78.27 -2013-07-03 21:00:00,8194.4,0.0653,78.32 -2013-07-03 22:00:00,7899.1,0.0,76.93 -2013-07-03 23:00:00,7486.4,0.0,76.53 -2013-07-04 00:00:00,7029.1,0.0,77.49 -2013-07-04 01:00:00,6686.2,0.0,77.09 -2013-07-04 02:00:00,6430.9,0.0,76.64 -2013-07-04 03:00:00,6264.1,0.0,76.8 -2013-07-04 04:00:00,6179.1,0.0,76.4 -2013-07-04 05:00:00,6153.4,0.0,75.96 -2013-07-04 06:00:00,6341.8,0.0,75.64 -2013-07-04 07:00:00,6625.3,0.0,76.23 -2013-07-04 08:00:00,6985.4,0.0,77.0 -2013-07-04 09:00:00,7371.3,0.0,78.68 -2013-07-04 10:00:00,7711.3,0.0,80.7 -2013-07-04 11:00:00,7943.2,0.0,82.3 -2013-07-04 12:00:00,8100.1,0.0,83.91 -2013-07-04 13:00:00,8212.3,0.0,84.85 -2013-07-04 14:00:00,8230.9,0.0,85.64 -2013-07-04 15:00:00,8254.2,0.0,85.97 -2013-07-04 16:00:00,8250.7,0.0,86.92 -2013-07-04 17:00:00,8206.9,0.0,87.5 -2013-07-04 18:00:00,8073.5,0.0,87.15 -2013-07-04 19:00:00,7882.9,0.0,86.38 -2013-07-04 20:00:00,7766.9,0.0,85.71 -2013-07-04 21:00:00,7784.7,0.0,83.94 -2013-07-04 22:00:00,7687.8,0.0,82.71 -2013-07-04 23:00:00,7501.8,0.0,81.5 -2013-07-05 00:00:00,7193.2,0.0,80.26 -2013-07-05 01:00:00,6884.4,0.0,79.57 -2013-07-05 02:00:00,6662.3,0.0,78.33 -2013-07-05 03:00:00,6522.9,0.0,77.96 -2013-07-05 04:00:00,6492.4,0.0,77.12 -2013-07-05 05:00:00,6608.9,0.0,76.75 -2013-07-05 06:00:00,7095.5,0.0,75.75 -2013-07-05 07:00:00,7731.7,0.0,76.57 -2013-07-05 08:00:00,8270.1,0.0,78.24 -2013-07-05 09:00:00,8713.1,0.0,79.64 -2013-07-05 10:00:00,9083.2,0.0,81.31 -2013-07-05 11:00:00,9350.7,0.0,83.22 -2013-07-05 12:00:00,9523.3,0.0,86.01 -2013-07-05 13:00:00,9685.9,0.0,87.01 -2013-07-05 14:00:00,9738.5,0.0,87.71 -2013-07-05 15:00:00,9806.8,0.0,88.13 -2013-07-05 16:00:00,9858.7,0.0,88.11 -2013-07-05 17:00:00,9805.0,0.0,88.5 -2013-07-05 18:00:00,9466.8,0.0,89.03 -2013-07-05 19:00:00,9177.0,0.0,89.26 -2013-07-05 20:00:00,8938.4,0.0,87.33 -2013-07-05 21:00:00,8858.1,0.0,85.33 -2013-07-05 22:00:00,8553.3,0.0,84.12 -2013-07-05 23:00:00,8126.3,0.0,83.73 -2013-07-06 00:00:00,7632.0,0.0,82.97 -2013-07-06 01:00:00,7238.5,0.0,81.97 -2013-07-06 02:00:00,6950.0,0.0,81.36 -2013-07-06 03:00:00,6752.3,0.0,80.13 -2013-07-06 04:00:00,6639.3,0.0,79.29 -2013-07-06 05:00:00,6575.4,0.0,78.36 -2013-07-06 06:00:00,6707.8,0.0,77.73 -2013-07-06 07:00:00,7132.6,0.0,78.63 -2013-07-06 08:00:00,7654.6,0.0,80.76 -2013-07-06 09:00:00,8145.4,0.0,82.07 -2013-07-06 10:00:00,8558.7,0.0,83.37 -2013-07-06 11:00:00,8816.0,0.0,85.52 -2013-07-06 12:00:00,8972.5,0.0,87.15 -2013-07-06 13:00:00,9009.4,0.0,88.71 -2013-07-06 14:00:00,9050.7,0.0,89.64 -2013-07-06 15:00:00,9071.0,0.0,91.56 -2013-07-06 16:00:00,9098.4,0.0,91.12 -2013-07-06 17:00:00,9067.7,0.0,91.43 -2013-07-06 18:00:00,8986.6,0.0,91.04 -2013-07-06 19:00:00,8854.7,0.0,90.27 -2013-07-06 20:00:00,8751.0,0.0,89.66 -2013-07-06 21:00:00,8788.5,0.0,87.75 -2013-07-06 22:00:00,8634.5,0.0,88.15 -2013-07-06 23:00:00,8341.0,0.0,86.46 -2013-07-07 00:00:00,7952.3,0.0,85.97 -2013-07-07 01:00:00,7585.3,0.0,84.29 -2013-07-07 02:00:00,7315.7,0.0,83.6 -2013-07-07 03:00:00,7122.6,0.0,82.68 -2013-07-07 04:00:00,6969.7,0.0,82.2 -2013-07-07 05:00:00,6854.1,0.0,81.65 -2013-07-07 06:00:00,6892.2,0.0,79.99 -2013-07-07 07:00:00,7176.5,0.0,80.73 -2013-07-07 08:00:00,7583.0,0.0,81.86 -2013-07-07 09:00:00,8040.3,0.0,81.91 -2013-07-07 10:00:00,8467.0,0.0,84.31 -2013-07-07 11:00:00,8785.4,0.0,86.85 -2013-07-07 12:00:00,8967.4,0.0,89.47 -2013-07-07 13:00:00,9083.4,0.0,89.32 -2013-07-07 14:00:00,9188.7,0.0,90.61 -2013-07-07 15:00:00,9306.2,0.0,90.97 -2013-07-07 16:00:00,9396.0,0.0,91.0 -2013-07-07 17:00:00,9460.5,0.0,90.43 -2013-07-07 18:00:00,9446.6,0.0,91.13 -2013-07-07 19:00:00,9351.7,0.0,91.47 -2013-07-07 20:00:00,9407.9,0.0,89.59 -2013-07-07 21:00:00,9430.9,0.0069,85.66 -2013-07-07 22:00:00,9041.5,0.0069,83.12 -2013-07-07 23:00:00,8502.6,0.0,81.94 -2013-07-08 00:00:00,7969.4,0.0,79.55 -2013-07-08 01:00:00,7583.5,0.0,79.18 -2013-07-08 02:00:00,7284.0,0.0,77.55 -2013-07-08 03:00:00,7115.3,0.0,75.78 -2013-07-08 04:00:00,7058.6,0.0,74.78 -2013-07-08 05:00:00,7160.8,0.0,74.15 -2013-07-08 06:00:00,7576.5,0.0,74.15 -2013-07-08 07:00:00,8250.2,0.0,74.2 -2013-07-08 08:00:00,8853.1,0.0,75.63 -2013-07-08 09:00:00,9355.6,0.0,77.76 -2013-07-08 10:00:00,9707.8,0.0,79.51 -2013-07-08 11:00:00,9938.0,0.0,82.52 -2013-07-08 12:00:00,10107.0,0.0,84.08 -2013-07-08 13:00:00,10228.7,0.0,85.07 -2013-07-08 14:00:00,10306.2,0.0,85.97 -2013-07-08 15:00:00,10399.8,0.0,86.24 -2013-07-08 16:00:00,10464.5,0.0,87.24 -2013-07-08 17:00:00,10397.9,0.0,87.41 -2013-07-08 18:00:00,9998.9,0.0,86.07 -2013-07-08 19:00:00,9731.6,0.0,86.01 -2013-07-08 20:00:00,9488.5,0.0,82.04 -2013-07-08 21:00:00,9426.8,0.0,81.66 -2013-07-08 22:00:00,8998.5,0.0,80.96 -2013-07-08 23:00:00,8342.5,0.0,80.53 -2013-07-09 00:00:00,7709.9,0.0,79.13 -2013-07-09 01:00:00,7300.8,0.0,78.27 -2013-07-09 02:00:00,7016.6,0.0,77.39 -2013-07-09 03:00:00,6864.8,0.0,76.83 -2013-07-09 04:00:00,6830.3,0.0,75.6 -2013-07-09 05:00:00,6996.1,0.0,74.93 -2013-07-09 06:00:00,7503.2,0.0,75.55 -2013-07-09 07:00:00,8166.1,0.0,75.76 -2013-07-09 08:00:00,8745.9,0.0,76.36 -2013-07-09 09:00:00,9259.2,0.0,78.8 -2013-07-09 10:00:00,9613.3,0.0,82.41 -2013-07-09 11:00:00,9865.7,0.0,83.35 -2013-07-09 12:00:00,10037.0,0.0,84.8 -2013-07-09 13:00:00,10155.9,0.0,86.27 -2013-07-09 14:00:00,10273.4,0.0,85.72 -2013-07-09 15:00:00,10369.9,0.0,86.25 -2013-07-09 16:00:00,10378.9,0.0392,84.52 -2013-07-09 17:00:00,10285.8,0.0,84.96 -2013-07-09 18:00:00,9942.0,0.0,85.53 -2013-07-09 19:00:00,9648.1,0.0,85.08 -2013-07-09 20:00:00,9519.6,0.0,83.96 -2013-07-09 21:00:00,9383.4,0.0,81.87 -2013-07-09 22:00:00,8970.2,0.0,79.8 -2013-07-09 23:00:00,8360.7,0.0,80.01 -2013-07-10 00:00:00,7788.7,0.0,79.8 -2013-07-10 01:00:00,7315.1,0.0,78.96 -2013-07-10 02:00:00,7037.5,0.0131,75.81 -2013-07-10 03:00:00,6907.8,0.0,75.93 -2013-07-10 04:00:00,6877.1,0.0,75.37 -2013-07-10 05:00:00,7043.2,0.0,75.32 -2013-07-10 06:00:00,7595.4,0.0,74.69 -2013-07-10 07:00:00,8304.5,0.0,75.3 -2013-07-10 08:00:00,8864.4,0.0,77.08 -2013-07-10 09:00:00,9302.0,0.0,78.28 -2013-07-10 10:00:00,9633.6,0.0,79.9 -2013-07-10 11:00:00,9826.8,0.0,81.48 -2013-07-10 12:00:00,9967.8,0.0,82.21 -2013-07-10 13:00:00,9972.0,0.0,82.35 -2013-07-10 14:00:00,10059.7,0.0,81.36 -2013-07-10 15:00:00,10169.0,0.0,83.2 -2013-07-10 16:00:00,10255.4,0.0,85.38 -2013-07-10 17:00:00,10207.3,0.0,85.35 -2013-07-10 18:00:00,9865.5,0.0,85.3 -2013-07-10 19:00:00,9573.1,0.0,86.37 -2013-07-10 20:00:00,9436.8,0.0,85.43 -2013-07-10 21:00:00,9371.8,0.0,83.87 -2013-07-10 22:00:00,9039.1,0.0,83.9 -2013-07-10 23:00:00,8483.3,0.0,82.64 -2013-07-11 00:00:00,7947.2,0.0,81.87 -2013-07-11 01:00:00,7558.0,0.0,81.86 -2013-07-11 02:00:00,7304.3,0.0,81.41 -2013-07-11 03:00:00,7177.1,0.0,80.03 -2013-07-11 04:00:00,7162.3,0.0,79.47 -2013-07-11 05:00:00,7340.3,0.0,79.68 -2013-07-11 06:00:00,7814.5,0.0,78.63 -2013-07-11 07:00:00,8418.4,0.0035,78.27 -2013-07-11 08:00:00,8869.6,0.0,78.63 -2013-07-11 09:00:00,9132.4,0.0,78.47 -2013-07-11 10:00:00,9210.4,0.0,77.06 -2013-07-11 11:00:00,9237.2,0.0,77.18 -2013-07-11 12:00:00,9254.0,0.0,77.95 -2013-07-11 13:00:00,9317.7,0.0,79.54 -2013-07-11 14:00:00,9447.4,0.0,80.67 -2013-07-11 15:00:00,9603.5,0.0,81.72 -2013-07-11 16:00:00,9684.7,0.0,83.38 -2013-07-11 17:00:00,9636.8,0.0,82.99 -2013-07-11 18:00:00,9302.7,0.0,83.58 -2013-07-11 19:00:00,8997.1,0.0,83.11 -2013-07-11 20:00:00,8757.2,0.0,81.49 -2013-07-11 21:00:00,8651.7,0.0,80.33 -2013-07-11 22:00:00,8260.9,0.0,78.53 -2013-07-11 23:00:00,7706.0,0.0,77.53 -2013-07-12 00:00:00,7162.1,0.0,76.48 -2013-07-12 01:00:00,6772.8,0.0,74.87 -2013-07-12 02:00:00,6505.8,0.0,74.69 -2013-07-12 03:00:00,6361.5,0.0,73.62 -2013-07-12 04:00:00,6313.2,0.0,73.09 -2013-07-12 05:00:00,6447.4,0.0,73.32 -2013-07-12 06:00:00,6895.7,0.0,72.93 -2013-07-12 07:00:00,7455.0,0.0,72.93 -2013-07-12 08:00:00,7930.9,0.0,73.3 -2013-07-12 09:00:00,8315.7,0.0,74.52 -2013-07-12 10:00:00,8524.9,0.0,75.29 -2013-07-12 11:00:00,8647.5,0.0,75.88 -2013-07-12 12:00:00,8612.6,0.0,75.88 -2013-07-12 13:00:00,8565.8,0.0,75.84 -2013-07-12 14:00:00,8511.7,0.0,76.69 -2013-07-12 15:00:00,8454.7,0.0,76.06 -2013-07-12 16:00:00,8409.8,0.0,75.47 -2013-07-12 17:00:00,8302.1,0.0,74.67 -2013-07-12 18:00:00,7997.2,0.0,74.83 -2013-07-12 19:00:00,7809.6,0.0065,73.81 -2013-07-12 20:00:00,7600.6,0.0261,72.39 -2013-07-12 21:00:00,7381.5,0.0653,70.65 -2013-07-12 22:00:00,7035.6,0.0277,69.84 -2013-07-12 23:00:00,6618.4,0.01,69.63 -2013-07-13 00:00:00,6201.7,0.0231,69.26 -2013-07-13 01:00:00,5917.8,0.0265,69.42 -2013-07-13 02:00:00,5714.2,0.0,69.42 -2013-07-13 03:00:00,5609.7,0.0,68.57 -2013-07-13 04:00:00,5558.3,0.0,69.02 -2013-07-13 05:00:00,5566.7,0.01,69.02 -2013-07-13 06:00:00,5707.3,0.0,69.63 -2013-07-13 07:00:00,6007.3,0.0,69.83 -2013-07-13 08:00:00,6371.2,0.0065,70.23 -2013-07-13 09:00:00,6749.1,0.0135,70.85 -2013-07-13 10:00:00,7115.3,0.0,72.0 -2013-07-13 11:00:00,7403.1,0.0,73.67 -2013-07-13 12:00:00,7624.3,0.0,76.21 -2013-07-13 13:00:00,7689.3,0.0,77.11 -2013-07-13 14:00:00,7735.0,0.0,76.54 -2013-07-13 15:00:00,7655.3,0.0069,77.29 -2013-07-13 16:00:00,7587.7,0.0104,75.98 -2013-07-13 17:00:00,7505.2,0.0,75.51 -2013-07-13 18:00:00,7456.8,0.0,76.07 -2013-07-13 19:00:00,7416.6,0.0,75.31 -2013-07-13 20:00:00,7430.1,0.0,74.93 -2013-07-13 21:00:00,7479.6,0.0,74.63 -2013-07-13 22:00:00,7305.7,0.0,74.23 -2013-07-13 23:00:00,7035.0,0.0,74.07 -2013-07-14 00:00:00,6713.1,0.0,74.0 -2013-07-14 01:00:00,6439.8,0.0,72.94 -2013-07-14 02:00:00,6227.8,0.0,73.1 -2013-07-14 03:00:00,6099.5,0.0,73.57 -2013-07-14 04:00:00,6016.4,0.0069,73.4 -2013-07-14 05:00:00,5959.6,0.0,73.09 -2013-07-14 06:00:00,6052.9,0.0,73.6 -2013-07-14 07:00:00,6369.0,0.0,74.64 -2013-07-14 08:00:00,6777.4,0.0,76.69 -2013-07-14 09:00:00,7261.2,0.0,78.74 -2013-07-14 10:00:00,7708.1,0.0,80.68 -2013-07-14 11:00:00,8031.5,0.0,82.58 -2013-07-14 12:00:00,8294.9,0.0,84.41 -2013-07-14 13:00:00,8439.1,0.0,85.17 -2013-07-14 14:00:00,8547.8,0.0,87.52 -2013-07-14 15:00:00,8651.3,0.0,89.48 -2013-07-14 16:00:00,8746.8,0.0,89.5 -2013-07-14 17:00:00,8777.9,0.0,89.24 -2013-07-14 18:00:00,8748.5,0.0,88.54 -2013-07-14 19:00:00,8647.0,0.0,87.63 -2013-07-14 20:00:00,8646.3,0.0,87.34 -2013-07-14 21:00:00,8765.5,0.0,86.36 -2013-07-14 22:00:00,8605.5,0.0,85.13 -2013-07-14 23:00:00,8236.1,0.0,84.29 -2013-07-15 00:00:00,7820.0,0.0,83.05 -2013-07-15 01:00:00,7479.8,0.0,82.39 -2013-07-15 02:00:00,7208.3,0.0,81.55 -2013-07-15 03:00:00,7079.1,0.0,80.6 -2013-07-15 04:00:00,7080.0,0.0,79.99 -2013-07-15 05:00:00,7224.4,0.0,78.83 -2013-07-15 06:00:00,7672.3,0.0,78.62 -2013-07-15 07:00:00,8390.5,0.0,78.64 -2013-07-15 08:00:00,9090.1,0.0,79.9 -2013-07-15 09:00:00,9647.5,0.0,82.53 -2013-07-15 10:00:00,10055.7,0.0,85.65 -2013-07-15 11:00:00,10356.7,0.0,87.34 -2013-07-15 12:00:00,10513.3,0.0,89.72 -2013-07-15 13:00:00,10540.7,0.0,91.61 -2013-07-15 14:00:00,10605.9,0.0,92.04 -2013-07-15 15:00:00,10704.9,0.0,92.61 -2013-07-15 16:00:00,10764.6,0.0,92.86 -2013-07-15 17:00:00,10756.2,0.0,92.2 -2013-07-15 18:00:00,10565.5,0.0,93.37 -2013-07-15 19:00:00,10372.2,0.0,91.96 -2013-07-15 20:00:00,10207.5,0.0,90.11 -2013-07-15 21:00:00,10097.5,0.0,87.99 -2013-07-15 22:00:00,9702.1,0.0,86.23 -2013-07-15 23:00:00,9080.4,0.0,84.63 -2013-07-16 00:00:00,8492.4,0.0,82.92 -2013-07-16 01:00:00,8043.3,0.0,82.6 -2013-07-16 02:00:00,7722.3,0.0,81.48 -2013-07-16 03:00:00,7535.8,0.0,80.04 -2013-07-16 04:00:00,7470.3,0.0,79.49 -2013-07-16 05:00:00,7559.6,0.0,79.05 -2013-07-16 06:00:00,7993.5,0.0,78.31 -2013-07-16 07:00:00,8666.5,0.0,78.66 -2013-07-16 08:00:00,9253.5,0.0,80.64 -2013-07-16 09:00:00,9715.4,0.0,82.7 -2013-07-16 10:00:00,10060.8,0.0,84.88 -2013-07-16 11:00:00,10266.7,0.0,87.13 -2013-07-16 12:00:00,10329.2,0.0,88.88 -2013-07-16 13:00:00,10370.2,0.0,90.72 -2013-07-16 14:00:00,10422.0,0.0,91.51 -2013-07-16 15:00:00,10510.2,0.0,91.84 -2013-07-16 16:00:00,10573.5,0.0,92.0 -2013-07-16 17:00:00,10553.2,0.0,91.93 -2013-07-16 18:00:00,10389.2,0.0,91.39 -2013-07-16 19:00:00,10159.5,0.0,90.81 -2013-07-16 20:00:00,9959.6,0.0,89.15 -2013-07-16 21:00:00,9899.4,0.0,87.52 -2013-07-16 22:00:00,9515.8,0.0,85.71 -2013-07-16 23:00:00,8955.7,0.0,85.35 -2013-07-17 00:00:00,8369.8,0.0,84.58 -2013-07-17 01:00:00,7948.3,0.0,83.58 -2013-07-17 02:00:00,7663.8,0.0,82.42 -2013-07-17 03:00:00,7488.1,0.0,81.82 -2013-07-17 04:00:00,7478.9,0.0,80.74 -2013-07-17 05:00:00,7631.8,0.0,79.79 -2013-07-17 06:00:00,8154.2,0.0,79.39 -2013-07-17 07:00:00,8907.6,0.0,79.81 -2013-07-17 08:00:00,9549.4,0.0,82.95 -2013-07-17 09:00:00,10071.8,0.0,85.14 -2013-07-17 10:00:00,10408.9,0.0,86.76 -2013-07-17 11:00:00,10631.3,0.0,89.16 -2013-07-17 12:00:00,10694.3,0.0,91.07 -2013-07-17 13:00:00,10716.7,0.0,92.4 -2013-07-17 14:00:00,10783.7,0.0,93.19 -2013-07-17 15:00:00,10827.4,0.0,92.22 -2013-07-17 16:00:00,10834.5,0.0,92.82 -2013-07-17 17:00:00,10715.5,0.0,92.25 -2013-07-17 18:00:00,10477.2,0.0,89.58 -2013-07-17 19:00:00,10207.1,0.0,88.02 -2013-07-17 20:00:00,10044.5,0.0,86.36 -2013-07-17 21:00:00,9990.3,0.0,86.14 -2013-07-17 22:00:00,9648.6,0.0,85.09 -2013-07-17 23:00:00,9093.2,0.0,84.89 -2013-07-18 00:00:00,8527.0,0.0,83.99 -2013-07-18 01:00:00,8086.2,0.0,83.73 -2013-07-18 02:00:00,7815.4,0.0,83.13 -2013-07-18 03:00:00,7668.4,0.0,82.5 -2013-07-18 04:00:00,7654.4,0.0,82.07 -2013-07-18 05:00:00,7837.6,0.0,82.33 -2013-07-18 06:00:00,8324.0,0.0,82.12 -2013-07-18 07:00:00,9089.6,0.0,81.78 -2013-07-18 08:00:00,9767.5,0.0,82.92 -2013-07-18 09:00:00,10317.5,0.0,86.04 -2013-07-18 10:00:00,10746.9,0.0,87.88 -2013-07-18 11:00:00,10974.4,0.0,89.76 -2013-07-18 12:00:00,11009.5,0.0,93.44 -2013-07-18 13:00:00,11098.0,0.0,94.28 -2013-07-18 14:00:00,11146.1,0.0,95.14 -2013-07-18 15:00:00,11226.0,0.0,95.37 -2013-07-18 16:00:00,11270.1,0.0,97.26 -2013-07-18 17:00:00,11204.6,0.0,95.6 -2013-07-18 18:00:00,11028.2,0.0,95.11 -2013-07-18 19:00:00,10812.5,0.0,94.16 -2013-07-18 20:00:00,10651.2,0.0,92.24 -2013-07-18 21:00:00,10612.1,0.0,92.52 -2013-07-18 22:00:00,10264.2,0.0,89.89 -2013-07-18 23:00:00,9686.0,0.0,89.85 -2013-07-19 00:00:00,9098.9,0.0,89.4 -2013-07-19 01:00:00,8687.3,0.0,87.8 -2013-07-19 02:00:00,8410.9,0.0,85.99 -2013-07-19 03:00:00,8263.5,0.0,85.05 -2013-07-19 04:00:00,8227.3,0.0,84.23 -2013-07-19 05:00:00,8366.9,0.0,84.08 -2013-07-19 06:00:00,8805.1,0.0,83.23 -2013-07-19 07:00:00,9550.5,0.0,84.0 -2013-07-19 08:00:00,10189.5,0.0,84.96 -2013-07-19 09:00:00,10742.5,0.0,87.48 -2013-07-19 10:00:00,11128.1,0.0,90.48 -2013-07-19 11:00:00,11359.8,0.0,91.8 -2013-07-19 12:00:00,11359.9,0.0,91.91 -2013-07-19 13:00:00,11412.8,0.0,92.98 -2013-07-19 14:00:00,11417.5,0.0,94.78 -2013-07-19 15:00:00,11442.9,0.0,95.24 -2013-07-19 16:00:00,11456.0,0.0,95.78 -2013-07-19 17:00:00,11345.6,0.0,95.32 -2013-07-19 18:00:00,11079.0,0.0,94.52 -2013-07-19 19:00:00,10814.0,0.0,92.09 -2013-07-19 20:00:00,10594.2,0.0,91.48 -2013-07-19 21:00:00,10475.9,0.0,90.48 -2013-07-19 22:00:00,10115.8,0.0,89.31 -2013-07-19 23:00:00,9574.8,0.0,88.17 -2013-07-20 00:00:00,9062.0,0.0,87.19 -2013-07-20 01:00:00,8646.4,0.0,86.33 -2013-07-20 02:00:00,8308.1,0.0,85.97 -2013-07-20 03:00:00,8027.9,0.0,84.53 -2013-07-20 04:00:00,7828.9,0.0,83.3 -2013-07-20 05:00:00,7720.0,0.0,81.82 -2013-07-20 06:00:00,7787.6,0.0,80.97 -2013-07-20 07:00:00,8049.7,0.0,81.13 -2013-07-20 08:00:00,8422.5,0.0,81.59 -2013-07-20 09:00:00,8931.5,0.0,83.01 -2013-07-20 10:00:00,9294.1,0.0,84.22 -2013-07-20 11:00:00,9546.9,0.0,85.45 -2013-07-20 12:00:00,9723.1,0.0,86.69 -2013-07-20 13:00:00,9793.1,0.0,88.99 -2013-07-20 14:00:00,9827.3,0.0,89.58 -2013-07-20 15:00:00,9845.5,0.0,90.89 -2013-07-20 16:00:00,9849.6,0.0,91.33 -2013-07-20 17:00:00,9801.9,0.0,91.7 -2013-07-20 18:00:00,9557.4,0.0,90.87 -2013-07-20 19:00:00,9128.9,0.0,87.44 -2013-07-20 20:00:00,9037.9,0.0,85.35 -2013-07-20 21:00:00,8996.2,0.0,82.94 -2013-07-20 22:00:00,8743.3,0.0,81.54 -2013-07-20 23:00:00,8434.2,0.0,80.96 -2013-07-21 00:00:00,8054.6,0.0,81.8 -2013-07-21 01:00:00,7724.5,0.0139,80.99 -2013-07-21 02:00:00,7472.4,0.0,79.92 -2013-07-21 03:00:00,7293.3,0.0,78.75 -2013-07-21 04:00:00,7163.2,0.0,78.83 -2013-07-21 05:00:00,7053.9,0.0,77.86 -2013-07-21 06:00:00,6972.9,0.0,76.84 -2013-07-21 07:00:00,7097.9,0.0,77.7 -2013-07-21 08:00:00,7314.3,0.0,78.86 -2013-07-21 09:00:00,7579.1,0.0,79.15 -2013-07-21 10:00:00,7843.0,0.0,79.1 -2013-07-21 11:00:00,8114.9,0.0,81.34 -2013-07-21 12:00:00,8244.3,0.0,82.93 -2013-07-21 13:00:00,8314.9,0.0,83.23 -2013-07-21 14:00:00,8411.8,0.0,85.03 -2013-07-21 15:00:00,8441.9,0.0,83.49 -2013-07-21 16:00:00,8471.8,0.0,83.59 -2013-07-21 17:00:00,8443.1,0.0,84.71 -2013-07-21 18:00:00,8318.5,0.0,83.79 -2013-07-21 19:00:00,8221.1,0.0,82.41 -2013-07-21 20:00:00,8336.4,0.0,80.43 -2013-07-21 21:00:00,8480.8,0.0,78.7 -2013-07-21 22:00:00,8315.1,0.0,77.64 -2013-07-21 23:00:00,7974.3,0.0,77.47 -2013-07-22 00:00:00,7585.4,0.0,77.1 -2013-07-22 01:00:00,7215.2,0.0,76.36 -2013-07-22 02:00:00,7108.1,0.0,75.74 -2013-07-22 03:00:00,7047.9,0.0,75.52 -2013-07-22 04:00:00,7068.3,0.0,75.92 -2013-07-22 05:00:00,7267.4,0.0,75.07 -2013-07-22 06:00:00,7704.0,0.0,75.07 -2013-07-22 07:00:00,8282.8,0.0,75.07 -2013-07-22 08:00:00,8770.6,0.0,75.73 -2013-07-22 09:00:00,9165.7,0.0,75.88 -2013-07-22 10:00:00,9538.8,0.0,78.3 -2013-07-22 11:00:00,9772.0,0.0,78.93 -2013-07-22 12:00:00,9818.4,0.0,80.33 -2013-07-22 13:00:00,9866.9,0.0261,77.88 -2013-07-22 14:00:00,10009.7,0.0196,78.04 -2013-07-22 15:00:00,10031.8,0.0,79.83 -2013-07-22 16:00:00,9948.7,0.0,80.19 -2013-07-22 17:00:00,9807.2,0.0,78.79 -2013-07-22 18:00:00,9476.7,0.0,78.84 -2013-07-22 19:00:00,9289.5,0.0,79.36 -2013-07-22 20:00:00,9168.6,0.0035,77.8 -2013-07-22 21:00:00,9001.6,0.0,77.44 -2013-07-22 22:00:00,8603.2,0.0169,76.61 -2013-07-22 23:00:00,8078.8,0.0296,76.03 -2013-07-23 00:00:00,7539.2,0.0,75.88 -2013-07-23 01:00:00,7167.8,0.0,75.07 -2013-07-23 02:00:00,6973.4,0.0104,75.29 -2013-07-23 03:00:00,6891.6,0.0035,75.84 -2013-07-23 04:00:00,6896.6,0.0535,76.19 -2013-07-23 05:00:00,7073.6,0.0196,76.19 -2013-07-23 06:00:00,7487.7,0.0131,74.71 -2013-07-23 07:00:00,8074.5,0.0,74.19 -2013-07-23 08:00:00,8602.7,0.0,74.8 -2013-07-23 09:00:00,8906.8,0.0,75.57 -2013-07-23 10:00:00,9206.2,0.0,76.6 -2013-07-23 11:00:00,9462.3,0.0,78.85 -2013-07-23 12:00:00,9680.2,0.0,81.28 -2013-07-23 13:00:00,9856.9,0.0,82.91 -2013-07-23 14:00:00,10040.8,0.0,84.91 -2013-07-23 15:00:00,10168.8,0.0,86.41 -2013-07-23 16:00:00,10210.4,0.0,86.38 -2013-07-23 17:00:00,10086.5,0.0,86.49 -2013-07-23 18:00:00,9776.6,0.0,85.42 -2013-07-23 19:00:00,9488.1,0.0,84.48 -2013-07-23 20:00:00,9285.0,0.0,82.76 -2013-07-23 21:00:00,9164.6,0.0,79.25 -2013-07-23 22:00:00,8793.7,0.0,79.23 -2013-07-23 23:00:00,8232.1,0.0,79.48 -2013-07-24 00:00:00,7641.5,0.0,77.75 -2013-07-24 01:00:00,7234.3,0.0,77.31 -2013-07-24 02:00:00,6937.3,0.0,77.84 -2013-07-24 03:00:00,6789.3,0.0,77.01 -2013-07-24 04:00:00,6766.2,0.0,76.41 -2013-07-24 05:00:00,6947.6,0.0,76.41 -2013-07-24 06:00:00,7418.8,0.0,75.24 -2013-07-24 07:00:00,8055.1,0.0,75.22 -2013-07-24 08:00:00,8571.7,0.0,76.24 -2013-07-24 09:00:00,8954.6,0.0,77.46 -2013-07-24 10:00:00,9172.2,0.0,78.83 -2013-07-24 11:00:00,9334.6,0.0,80.95 -2013-07-24 12:00:00,9319.8,0.0,80.48 -2013-07-24 13:00:00,9296.3,0.0,79.2 -2013-07-24 14:00:00,9364.2,0.0,80.23 -2013-07-24 15:00:00,9417.8,0.0,80.64 -2013-07-24 16:00:00,9361.7,0.0,80.86 -2013-07-24 17:00:00,9174.3,0.0,80.3 -2013-07-24 18:00:00,8782.5,0.0,79.24 -2013-07-24 19:00:00,8419.7,0.0,79.24 -2013-07-24 20:00:00,8171.3,0.0,77.65 -2013-07-24 21:00:00,7989.9,0.0,76.21 -2013-07-24 22:00:00,7551.4,0.0,74.13 -2013-07-24 23:00:00,6929.8,0.0,72.02 -2013-07-25 00:00:00,6347.9,0.0,69.8 -2013-07-25 01:00:00,5951.5,0.0,68.57 -2013-07-25 02:00:00,5688.9,0.0,67.42 -2013-07-25 03:00:00,5541.7,0.0,66.31 -2013-07-25 04:00:00,5510.1,0.0,66.25 -2013-07-25 05:00:00,5660.6,0.0,66.05 -2013-07-25 06:00:00,6072.2,0.0,65.25 -2013-07-25 07:00:00,6559.3,0.0,65.25 -2013-07-25 08:00:00,6910.3,0.0,65.25 -2013-07-25 09:00:00,7136.2,0.0,65.65 -2013-07-25 10:00:00,7207.3,0.0,66.1 -2013-07-25 11:00:00,7193.4,0.0,65.7 -2013-07-25 12:00:00,7178.1,0.0,65.69 -2013-07-25 13:00:00,7154.9,0.0,66.24 -2013-07-25 14:00:00,7129.7,0.0,65.84 -2013-07-25 15:00:00,7118.7,0.0,66.13 -2013-07-25 16:00:00,7088.8,0.0,65.41 -2013-07-25 17:00:00,6993.9,0.0,65.97 -2013-07-25 18:00:00,6726.2,0.0,66.34 -2013-07-25 19:00:00,6564.4,0.0,66.53 -2013-07-25 20:00:00,6455.4,0.0,67.32 -2013-07-25 21:00:00,6315.5,0.0,67.29 -2013-07-25 22:00:00,6026.0,0.0,66.92 -2013-07-25 23:00:00,5634.1,0.0065,66.73 -2013-07-26 00:00:00,5270.7,0.0065,65.52 -2013-07-26 01:00:00,5014.2,0.0,65.52 -2013-07-26 02:00:00,4853.4,0.0,65.52 -2013-07-26 03:00:00,4778.2,0.0,65.29 -2013-07-26 04:00:00,4812.7,0.0,66.29 -2013-07-26 05:00:00,5065.5,0.0,66.63 -2013-07-26 06:00:00,5570.5,0.0,67.23 -2013-07-26 07:00:00,6169.4,0.0,67.63 -2013-07-26 08:00:00,6639.2,0.0,68.07 -2013-07-26 09:00:00,6990.5,0.0,68.59 -2013-07-26 10:00:00,7263.5,0.0,70.87 -2013-07-26 11:00:00,7475.4,0.0,73.07 -2013-07-26 12:00:00,7594.1,0.0,76.66 -2013-07-26 13:00:00,7723.9,0.0,77.19 -2013-07-26 14:00:00,7836.8,0.0,79.74 -2013-07-26 15:00:00,7954.9,0.0,80.22 -2013-07-26 16:00:00,8028.0,0.0,80.72 -2013-07-26 17:00:00,7940.6,0.0,81.25 -2013-07-26 18:00:00,7584.7,0.0,80.38 -2013-07-26 19:00:00,7334.3,0.0,80.84 -2013-07-26 20:00:00,7176.0,0.0,79.4 -2013-07-26 21:00:00,7064.8,0.0,76.97 -2013-07-26 22:00:00,6813.0,0.0,75.55 -2013-07-26 23:00:00,6463.2,0.0,74.43 -2013-07-27 00:00:00,6062.5,0.0,73.38 -2013-07-27 01:00:00,5755.8,0.0,72.38 -2013-07-27 02:00:00,5533.6,0.0,71.75 -2013-07-27 03:00:00,5377.9,0.0,70.96 -2013-07-27 04:00:00,5306.0,0.0,69.82 -2013-07-27 05:00:00,5286.0,0.0,69.61 -2013-07-27 06:00:00,5409.5,0.0,69.61 -2013-07-27 07:00:00,5769.9,0.0,69.99 -2013-07-27 08:00:00,6208.6,0.0,71.99 -2013-07-27 09:00:00,6636.6,0.0,74.34 -2013-07-27 10:00:00,6975.0,0.0,76.6 -2013-07-27 11:00:00,7166.9,0.0,79.19 -2013-07-27 12:00:00,7243.5,0.0,80.45 -2013-07-27 13:00:00,7258.8,0.0,80.87 -2013-07-27 14:00:00,7268.0,0.0,80.9 -2013-07-27 15:00:00,7274.3,0.0,80.9 -2013-07-27 16:00:00,7255.7,0.0,81.11 -2013-07-27 17:00:00,7095.3,0.0,81.28 -2013-07-27 18:00:00,6937.6,0.0,78.28 -2013-07-27 19:00:00,6799.2,0.0,77.44 -2013-07-27 20:00:00,6789.8,0.0,75.61 -2013-07-27 21:00:00,6796.2,0.0,73.63 -2013-07-27 22:00:00,6627.3,0.0,72.79 -2013-07-27 23:00:00,6385.8,0.0,72.63 -2013-07-28 00:00:00,6081.8,0.0,71.21 -2013-07-28 01:00:00,5813.1,0.0,71.26 -2013-07-28 02:00:00,5641.2,0.0,71.1 -2013-07-28 03:00:00,5507.3,0.0,71.24 -2013-07-28 04:00:00,5429.9,0.0,70.87 -2013-07-28 05:00:00,5395.0,0.0,70.32 -2013-07-28 06:00:00,5440.7,0.0,70.87 -2013-07-28 07:00:00,5626.5,0.0,71.24 -2013-07-28 08:00:00,5923.9,0.0,72.4 -2013-07-28 09:00:00,6205.4,0.0,74.44 -2013-07-28 10:00:00,6503.1,0.0,74.44 -2013-07-28 11:00:00,6729.8,0.0,75.84 -2013-07-28 12:00:00,6783.2,0.0,76.55 -2013-07-28 13:00:00,6760.1,0.0,76.37 -2013-07-28 14:00:00,6788.5,0.0,75.0 -2013-07-28 15:00:00,6913.7,0.0,76.05 -2013-07-28 16:00:00,6966.1,0.0,78.64 -2013-07-28 17:00:00,7009.6,0.0,78.68 -2013-07-28 18:00:00,7057.6,0.0243,77.15 -2013-07-28 19:00:00,7094.1,0.0208,75.35 -2013-07-28 20:00:00,7135.2,0.0235,74.35 -2013-07-28 21:00:00,7104.5,0.0131,73.56 -2013-07-28 22:00:00,6934.0,0.0035,73.16 -2013-07-28 23:00:00,6608.9,0.0035,73.56 -2013-07-29 00:00:00,6250.4,0.0035,72.56 -2013-07-29 01:00:00,5975.8,0.0065,72.56 -2013-07-29 02:00:00,5787.3,0.0,71.94 -2013-07-29 03:00:00,5713.2,0.0,72.12 -2013-07-29 04:00:00,5766.5,0.0,72.13 -2013-07-29 05:00:00,5985.8,0.0,71.57 -2013-07-29 06:00:00,6457.2,0.0,70.8 -2013-07-29 07:00:00,7128.4,0.0,71.21 -2013-07-29 08:00:00,7648.1,0.0,71.93 -2013-07-29 09:00:00,8103.6,0.0,74.69 -2013-07-29 10:00:00,8366.8,0.0,77.01 -2013-07-29 11:00:00,8571.4,0.0,78.3 -2013-07-29 12:00:00,8713.9,0.0,80.03 -2013-07-29 13:00:00,8857.1,0.0,81.61 -2013-07-29 14:00:00,8957.7,0.0,83.4 -2013-07-29 15:00:00,9014.1,0.0,84.48 -2013-07-29 16:00:00,9022.3,0.0,83.45 -2013-07-29 17:00:00,8884.2,0.0,83.4 -2013-07-29 18:00:00,8363.2,0.0,82.41 -2013-07-29 19:00:00,7965.4,0.0,81.41 -2013-07-29 20:00:00,7749.7,0.0,79.75 -2013-07-29 21:00:00,7612.9,0.0,78.32 -2013-07-29 22:00:00,7214.8,0.0,76.92 -2013-07-29 23:00:00,6689.3,0.0,75.49 -2013-07-30 00:00:00,6197.1,0.0,73.94 -2013-07-30 01:00:00,5830.9,0.0,72.72 -2013-07-30 02:00:00,5578.7,0.0,71.72 -2013-07-30 03:00:00,5446.7,0.0,70.55 -2013-07-30 04:00:00,5434.2,0.0,69.49 -2013-07-30 05:00:00,5617.7,0.0,68.28 -2013-07-30 06:00:00,6082.9,0.0,67.76 -2013-07-30 07:00:00,6720.7,0.0,68.74 -2013-07-30 08:00:00,7236.8,0.0,70.19 -2013-07-30 09:00:00,7628.3,0.0,71.83 -2013-07-30 10:00:00,7877.2,0.0,73.46 -2013-07-30 11:00:00,8010.9,0.0,75.23 -2013-07-30 12:00:00,8109.6,0.0,77.0 -2013-07-30 13:00:00,8199.3,0.0,78.28 -2013-07-30 14:00:00,8256.7,0.0,78.44 -2013-07-30 15:00:00,8287.6,0.0,78.63 -2013-07-30 16:00:00,8300.3,0.0,79.2 -2013-07-30 17:00:00,8241.2,0.0,79.41 -2013-07-30 18:00:00,7872.9,0.0,79.66 -2013-07-30 19:00:00,7591.6,0.0,78.42 -2013-07-30 20:00:00,7451.6,0.0,77.42 -2013-07-30 21:00:00,7357.0,0.0,75.96 -2013-07-30 22:00:00,7060.7,0.0,74.96 -2013-07-30 23:00:00,6605.1,0.0,74.39 -2013-07-31 00:00:00,6135.1,0.0,73.57 -2013-07-31 01:00:00,5785.9,0.0,72.71 -2013-07-31 02:00:00,5559.3,0.0,71.94 -2013-07-31 03:00:00,5433.1,0.0,70.72 -2013-07-31 04:00:00,5430.1,0.0,69.51 -2013-07-31 05:00:00,5625.8,0.0,69.72 -2013-07-31 06:00:00,6097.3,0.0,68.97 -2013-07-31 07:00:00,6739.8,0.0,68.95 -2013-07-31 08:00:00,7312.8,0.0,71.38 -2013-07-31 09:00:00,7726.9,0.0,73.4 -2013-07-31 10:00:00,7983.7,0.0,74.93 -2013-07-31 11:00:00,8134.2,0.0,77.07 -2013-07-31 12:00:00,8211.9,0.0,78.46 -2013-07-31 13:00:00,8297.2,0.0,79.68 -2013-07-31 14:00:00,8363.0,0.0,80.34 -2013-07-31 15:00:00,8400.9,0.0,80.58 -2013-07-31 16:00:00,8372.6,0.0,80.0 -2013-07-31 17:00:00,8267.3,0.0,79.47 -2013-07-31 18:00:00,7903.3,0.0,78.67 -2013-07-31 19:00:00,7607.8,0.0,77.61 -2013-07-31 20:00:00,7527.4,0.0,77.0 -2013-07-31 21:00:00,7416.8,0.0,75.24 -2013-07-31 22:00:00,7110.2,0.0,74.8 -2013-07-31 23:00:00,6688.5,0.0,74.59 -2013-08-01 00:00:00,6260.8,0.0,73.75 -2013-08-01 01:00:00,5947.5,0.0,73.75 -2013-08-01 02:00:00,5745.3,0.0,72.98 -2013-08-01 03:00:00,5639.5,0.0,73.19 -2013-08-01 04:00:00,5651.7,0.0,73.03 -2013-08-01 05:00:00,5889.3,0.0,73.19 -2013-08-01 06:00:00,6358.6,0.0,73.19 -2013-08-01 07:00:00,6999.7,0.0,73.24 -2013-08-01 08:00:00,7530.1,0.0,74.01 -2013-08-01 09:00:00,7879.8,0.0,75.82 -2013-08-01 10:00:00,8008.1,0.0,74.57 -2013-08-01 11:00:00,7957.5,0.0035,73.03 -2013-08-01 12:00:00,7870.4,0.0308,70.56 -2013-08-01 13:00:00,7804.6,0.0731,70.4 -2013-08-01 14:00:00,7769.8,0.0735,68.84 -2013-08-01 15:00:00,7724.7,0.0392,69.47 -2013-08-01 16:00:00,7687.5,0.0231,68.86 -2013-08-01 17:00:00,7623.9,0.0196,70.74 -2013-08-01 18:00:00,7372.0,0.0035,71.3 -2013-08-01 19:00:00,7227.8,0.0,71.24 -2013-08-01 20:00:00,7157.5,0.1241,70.65 -2013-08-01 21:00:00,7029.2,0.0173,71.03 -2013-08-01 22:00:00,6743.0,0.0065,70.79 -2013-08-01 23:00:00,6359.2,0.0,71.03 -2013-08-02 00:00:00,5969.7,0.0,71.19 -2013-08-02 01:00:00,5682.0,0.0,71.19 -2013-08-02 02:00:00,5486.3,0.0,70.96 -2013-08-02 03:00:00,5373.4,0.0,69.71 -2013-08-02 04:00:00,5366.8,0.0,69.35 -2013-08-02 05:00:00,5575.5,0.0,68.72 -2013-08-02 06:00:00,6046.6,0.0,68.49 -2013-08-02 07:00:00,6643.3,0.0,68.28 -2013-08-02 08:00:00,7193.4,0.0,69.92 -2013-08-02 09:00:00,7617.6,0.0,72.5 -2013-08-02 10:00:00,7873.5,0.0,75.35 -2013-08-02 11:00:00,8048.3,0.0,76.61 -2013-08-02 12:00:00,8161.4,0.0,78.41 -2013-08-02 13:00:00,8238.3,0.0,79.84 -2013-08-02 14:00:00,8304.9,0.0,81.05 -2013-08-02 15:00:00,8366.1,0.0,82.67 -2013-08-02 16:00:00,8371.9,0.0,83.45 -2013-08-02 17:00:00,8184.5,0.0,83.03 -2013-08-02 18:00:00,7790.5,0.0,82.19 -2013-08-02 19:00:00,7556.7,0.0,81.63 -2013-08-02 20:00:00,7478.5,0.0,80.57 -2013-08-02 21:00:00,7373.4,0.0,79.97 -2013-08-02 22:00:00,7115.2,0.0,79.52 -2013-08-02 23:00:00,6694.6,0.0,78.15 -2013-08-03 00:00:00,6257.2,0.0,77.27 -2013-08-03 01:00:00,5918.3,0.0,76.09 -2013-08-03 02:00:00,5668.9,0.0,75.11 -2013-08-03 03:00:00,5524.4,0.0,74.11 -2013-08-03 04:00:00,5432.7,0.0,73.88 -2013-08-03 05:00:00,5436.1,0.0,73.88 -2013-08-03 06:00:00,5520.3,0.0,72.92 -2013-08-03 07:00:00,5745.7,0.0,72.71 -2013-08-03 08:00:00,6019.3,0.0035,71.55 -2013-08-03 09:00:00,6265.6,0.0,71.61 -2013-08-03 10:00:00,6446.2,0.0,71.21 -2013-08-03 11:00:00,6553.4,0.0035,70.53 -2013-08-03 12:00:00,6601.9,0.01,70.96 -2013-08-03 13:00:00,6592.6,0.0069,71.19 -2013-08-03 14:00:00,6668.5,0.0,72.17 -2013-08-03 15:00:00,6771.7,0.0,75.21 -2013-08-03 16:00:00,6836.5,0.0,76.84 -2013-08-03 17:00:00,6832.8,0.0,77.44 -2013-08-03 18:00:00,6788.7,0.0,78.4 -2013-08-03 19:00:00,6679.8,0.0,77.34 -2013-08-03 20:00:00,6685.5,0.0,75.52 -2013-08-03 21:00:00,6654.1,0.0,74.12 -2013-08-03 22:00:00,6482.9,0.0,74.19 -2013-08-03 23:00:00,6222.6,0.0,73.75 -2013-08-04 00:00:00,5897.4,0.0,72.55 -2013-08-04 01:00:00,5617.7,0.0,71.55 -2013-08-04 02:00:00,5403.8,0.0,70.55 -2013-08-04 03:00:00,5234.3,0.0,69.3 -2013-08-04 04:00:00,5112.1,0.0,69.97 -2013-08-04 05:00:00,5042.3,0.0,69.18 -2013-08-04 06:00:00,5032.2,0.0,67.97 -2013-08-04 07:00:00,5233.6,0.0,68.18 -2013-08-04 08:00:00,5528.0,0.0,70.12 -2013-08-04 09:00:00,5859.2,0.0,70.93 -2013-08-04 10:00:00,6176.4,0.0,72.83 -2013-08-04 11:00:00,6387.8,0.0,75.04 -2013-08-04 12:00:00,6495.0,0.0,76.38 -2013-08-04 13:00:00,6515.7,0.0,76.83 -2013-08-04 14:00:00,6523.3,0.0,77.06 -2013-08-04 15:00:00,6557.9,0.0,78.07 -2013-08-04 16:00:00,6602.2,0.0,78.88 -2013-08-04 17:00:00,6600.7,0.0,79.51 -2013-08-04 18:00:00,6519.4,0.0,77.43 -2013-08-04 19:00:00,6437.5,0.0,77.15 -2013-08-04 20:00:00,6471.2,0.0,75.42 -2013-08-04 21:00:00,6447.2,0.0,74.42 -2013-08-04 22:00:00,6232.4,0.0,72.76 -2013-08-04 23:00:00,5874.0,0.0,70.76 -2013-08-05 00:00:00,5516.8,0.0,69.53 -2013-08-05 01:00:00,5230.1,0.0,67.71 -2013-08-05 02:00:00,5030.4,0.0,66.55 -2013-08-05 03:00:00,4946.5,0.0,65.71 -2013-08-05 04:00:00,4956.8,0.0,64.71 -2013-08-05 05:00:00,5163.3,0.0,63.71 -2013-08-05 06:00:00,5568.0,0.0,63.11 -2013-08-05 07:00:00,6158.2,0.0,63.98 -2013-08-05 08:00:00,6674.6,0.0,65.35 -2013-08-05 09:00:00,7022.0,0.0,67.56 -2013-08-05 10:00:00,7214.3,0.0,69.83 -2013-08-05 11:00:00,7304.7,0.0,70.98 -2013-08-05 12:00:00,7350.2,0.0,72.44 -2013-08-05 13:00:00,7402.2,0.0,73.61 -2013-08-05 14:00:00,7464.0,0.0,74.6 -2013-08-05 15:00:00,7576.0,0.0,75.44 -2013-08-05 16:00:00,7652.7,0.0,77.23 -2013-08-05 17:00:00,7598.8,0.0,77.23 -2013-08-05 18:00:00,7251.0,0.0,76.79 -2013-08-05 19:00:00,6981.1,0.0,76.19 -2013-08-05 20:00:00,6904.9,0.0,74.82 -2013-08-05 21:00:00,6765.0,0.0,74.05 -2013-08-05 22:00:00,6465.6,0.0,73.06 -2013-08-05 23:00:00,6066.4,0.0,71.22 -2013-08-06 00:00:00,5657.7,0.0,71.01 -2013-08-06 01:00:00,5366.8,0.0,70.42 -2013-08-06 02:00:00,5164.9,0.0,70.02 -2013-08-06 03:00:00,5044.1,0.0,69.42 -2013-08-06 04:00:00,5033.4,0.0,67.65 -2013-08-06 05:00:00,5238.9,0.0,66.44 -2013-08-06 06:00:00,5728.9,0.0,65.6 -2013-08-06 07:00:00,6378.7,0.0,65.41 -2013-08-06 08:00:00,6956.4,0.0,67.98 -2013-08-06 09:00:00,7397.3,0.0,70.83 -2013-08-06 10:00:00,7654.0,0.0,72.44 -2013-08-06 11:00:00,7748.6,0.0,74.69 -2013-08-06 12:00:00,7757.1,0.0,75.46 -2013-08-06 13:00:00,7837.2,0.0,76.67 -2013-08-06 14:00:00,7914.5,0.0,78.85 -2013-08-06 15:00:00,7968.7,0.0,79.11 -2013-08-06 16:00:00,7983.0,0.0,78.45 -2013-08-06 17:00:00,7818.1,0.0,77.82 -2013-08-06 18:00:00,7432.2,0.0,76.51 -2013-08-06 19:00:00,7153.3,0.0,75.23 -2013-08-06 20:00:00,7077.7,0.0,74.01 -2013-08-06 21:00:00,6948.0,0.0,72.84 -2013-08-06 22:00:00,6638.1,0.0,72.24 -2013-08-06 23:00:00,6235.8,0.0,71.63 -2013-08-07 00:00:00,5836.8,0.0,72.09 -2013-08-07 01:00:00,5552.4,0.0,72.09 -2013-08-07 02:00:00,5369.3,0.0,71.24 -2013-08-07 03:00:00,5285.7,0.0,71.64 -2013-08-07 04:00:00,5303.8,0.0,70.45 -2013-08-07 05:00:00,5523.2,0.0,70.87 -2013-08-07 06:00:00,6054.0,0.0,70.87 -2013-08-07 07:00:00,6637.1,0.0,71.32 -2013-08-07 08:00:00,7128.2,0.0,72.46 -2013-08-07 09:00:00,7461.7,0.0,73.06 -2013-08-07 10:00:00,7624.3,0.0,73.61 -2013-08-07 11:00:00,7730.9,0.0,74.41 -2013-08-07 12:00:00,7816.9,0.0,75.01 -2013-08-07 13:00:00,7971.6,0.0,75.01 -2013-08-07 14:00:00,8102.7,0.0,77.26 -2013-08-07 15:00:00,8128.7,0.0,78.45 -2013-08-07 16:00:00,8047.3,0.0,76.23 -2013-08-07 17:00:00,7929.5,0.0,76.03 -2013-08-07 18:00:00,7599.3,0.0,75.44 -2013-08-07 19:00:00,7424.8,0.0065,73.96 -2013-08-07 20:00:00,7358.4,0.0,73.8 -2013-08-07 21:00:00,7223.1,0.0,72.83 -2013-08-07 22:00:00,6940.3,0.0,72.83 -2013-08-07 23:00:00,6540.6,0.0,72.61 -2013-08-08 00:00:00,6123.0,0.0,73.0 -2013-08-08 01:00:00,5847.4,0.0,73.4 -2013-08-08 02:00:00,5641.7,0.0,73.4 -2013-08-08 03:00:00,5494.1,0.0065,71.98 -2013-08-08 04:00:00,5484.2,0.0065,70.79 -2013-08-08 05:00:00,5772.0,0.0,71.47 -2013-08-08 06:00:00,6362.2,0.0,71.63 -2013-08-08 07:00:00,6991.7,0.0,72.61 -2013-08-08 08:00:00,7420.3,0.0,72.84 -2013-08-08 09:00:00,7784.9,0.0,74.23 -2013-08-08 10:00:00,8103.1,0.0,74.46 -2013-08-08 11:00:00,8336.0,0.0,76.91 -2013-08-08 12:00:00,8448.0,0.0,78.49 -2013-08-08 13:00:00,8588.3,0.0,79.31 -2013-08-08 14:00:00,8656.2,0.0,80.07 -2013-08-08 15:00:00,8461.8,0.0,79.5 -2013-08-08 16:00:00,8519.7,0.0932,78.14 -2013-08-08 17:00:00,8444.6,0.0165,77.28 -2013-08-08 18:00:00,8053.9,0.0,75.37 -2013-08-08 19:00:00,7885.8,0.0065,74.61 -2013-08-08 20:00:00,7827.6,0.0065,74.83 -2013-08-08 21:00:00,7682.5,0.0,75.07 -2013-08-08 22:00:00,7318.8,0.0,76.27 -2013-08-08 23:00:00,6859.7,0.0,74.84 -2013-08-09 00:00:00,6402.9,0.0,74.23 -2013-08-09 01:00:00,6085.0,0.0,74.23 -2013-08-09 02:00:00,5877.5,0.0,74.0 -2013-08-09 03:00:00,5789.7,0.0,73.79 -2013-08-09 04:00:00,5819.2,0.0035,74.0 -2013-08-09 05:00:00,6103.4,0.0,74.61 -2013-08-09 06:00:00,6653.3,0.0,75.0 -2013-08-09 07:00:00,7231.6,0.01,73.81 -2013-08-09 08:00:00,7745.4,0.0,74.84 -2013-08-09 09:00:00,8180.3,0.0,75.65 -2013-08-09 10:00:00,8446.1,0.0,76.5 -2013-08-09 11:00:00,8635.2,0.0,77.46 -2013-08-09 12:00:00,8869.1,0.0,80.44 -2013-08-09 13:00:00,9033.5,0.0,82.41 -2013-08-09 14:00:00,9106.5,0.0265,82.5 -2013-08-09 15:00:00,9174.2,0.0,85.61 -2013-08-09 16:00:00,9210.6,0.0,85.4 -2013-08-09 17:00:00,9084.3,0.0,84.61 -2013-08-09 18:00:00,8716.1,0.1313,81.11 -2013-08-09 19:00:00,8487.3,0.0347,81.25 -2013-08-09 20:00:00,8352.6,0.0,80.18 -2013-08-09 21:00:00,8167.4,0.0,78.92 -2013-08-09 22:00:00,7812.5,0.0,78.76 -2013-08-09 23:00:00,7356.3,0.0,78.15 -2013-08-10 00:00:00,6880.8,0.0,77.15 -2013-08-10 01:00:00,6510.0,0.0,76.53 -2013-08-10 02:00:00,6214.6,0.0,75.65 -2013-08-10 03:00:00,5990.0,0.0,74.42 -2013-08-10 04:00:00,5815.8,0.0,73.36 -2013-08-10 05:00:00,5743.9,0.0,72.38 -2013-08-10 06:00:00,5795.4,0.0,71.36 -2013-08-10 07:00:00,6091.9,0.0,71.57 -2013-08-10 08:00:00,6460.7,0.0,73.63 -2013-08-10 09:00:00,6744.6,0.0,74.61 -2013-08-10 10:00:00,6997.6,0.0,75.44 -2013-08-10 11:00:00,7159.7,0.0,78.06 -2013-08-10 12:00:00,7194.2,0.0,78.32 -2013-08-10 13:00:00,7220.7,0.0,79.88 -2013-08-10 14:00:00,7234.5,0.0,80.67 -2013-08-10 15:00:00,7296.9,0.0,81.26 -2013-08-10 16:00:00,7339.1,0.0,82.07 -2013-08-10 17:00:00,7303.4,0.0,83.51 -2013-08-10 18:00:00,7194.8,0.0,82.3 -2013-08-10 19:00:00,7057.9,0.0,81.32 -2013-08-10 20:00:00,7053.7,0.0,79.28 -2013-08-10 21:00:00,6980.5,0.0,78.12 -2013-08-10 22:00:00,6750.9,0.0,76.47 -2013-08-10 23:00:00,6417.6,0.0,75.12 -2013-08-11 00:00:00,6033.6,0.0,73.51 -2013-08-11 01:00:00,5728.3,0.0,71.85 -2013-08-11 02:00:00,5481.7,0.0,71.25 -2013-08-11 03:00:00,5302.5,0.0,70.18 -2013-08-11 04:00:00,5176.1,0.0,67.94 -2013-08-11 05:00:00,5124.2,0.0,67.62 -2013-08-11 06:00:00,5089.5,0.0,66.47 -2013-08-11 07:00:00,5279.9,0.0,66.22 -2013-08-11 08:00:00,5575.8,0.0,67.65 -2013-08-11 09:00:00,5910.1,0.0,69.98 -2013-08-11 10:00:00,6189.6,0.0,71.24 -2013-08-11 11:00:00,6378.8,0.0,73.98 -2013-08-11 12:00:00,6465.6,0.0,75.05 -2013-08-11 13:00:00,6572.9,0.0,76.6 -2013-08-11 14:00:00,6665.8,0.0,77.92 -2013-08-11 15:00:00,6760.4,0.0,78.38 -2013-08-11 16:00:00,6793.7,0.0,80.15 -2013-08-11 17:00:00,6755.3,0.0,79.98 -2013-08-11 18:00:00,6693.5,0.0,77.84 -2013-08-11 19:00:00,6696.2,0.0,76.84 -2013-08-11 20:00:00,6814.2,0.0,75.23 -2013-08-11 21:00:00,6804.1,0.0,74.61 -2013-08-11 22:00:00,6670.4,0.0,73.4 -2013-08-11 23:00:00,6393.7,0.0,73.4 -2013-08-12 00:00:00,6114.1,0.0,73.4 -2013-08-12 01:00:00,5915.8,0.0,72.79 -2013-08-12 02:00:00,5775.3,0.0,72.56 -2013-08-12 03:00:00,5706.5,0.0,72.56 -2013-08-12 04:00:00,5763.8,0.0,72.4 -2013-08-12 05:00:00,6037.9,0.0,71.82 -2013-08-12 06:00:00,6524.1,0.0,72.03 -2013-08-12 07:00:00,7038.2,0.0261,71.19 -2013-08-12 08:00:00,7434.2,0.0623,70.56 -2013-08-12 09:00:00,7820.2,0.0,71.61 -2013-08-12 10:00:00,8040.9,0.0,72.61 -2013-08-12 11:00:00,8137.0,0.0,73.07 -2013-08-12 12:00:00,8152.4,0.0,74.92 -2013-08-12 13:00:00,8282.3,0.0,75.54 -2013-08-12 14:00:00,8442.5,0.0,75.85 -2013-08-12 15:00:00,8562.4,0.0,78.19 -2013-08-12 16:00:00,8645.9,0.0,79.44 -2013-08-12 17:00:00,8605.6,0.0,79.37 -2013-08-12 18:00:00,8243.5,0.0,80.02 -2013-08-12 19:00:00,7961.7,0.0,77.81 -2013-08-12 20:00:00,7899.1,0.0,76.46 -2013-08-12 21:00:00,7720.7,0.0,74.84 -2013-08-12 22:00:00,7367.3,0.0,73.63 -2013-08-12 23:00:00,6900.4,0.0,73.47 -2013-08-13 00:00:00,6428.3,0.0,73.26 -2013-08-13 01:00:00,6106.0,0.0,73.03 -2013-08-13 02:00:00,5895.9,0.0,72.87 -2013-08-13 03:00:00,5800.5,0.0,73.03 -2013-08-13 04:00:00,5823.9,0.0,72.47 -2013-08-13 05:00:00,6096.0,0.0,72.47 -2013-08-13 06:00:00,6648.6,0.0,72.63 -2013-08-13 07:00:00,7278.4,0.0,73.4 -2013-08-13 08:00:00,7757.5,0.0135,74.03 -2013-08-13 09:00:00,8044.7,0.0269,73.96 -2013-08-13 10:00:00,8042.5,0.0547,72.38 -2013-08-13 11:00:00,8041.2,0.1731,71.12 -2013-08-13 12:00:00,7998.9,0.1188,70.84 -2013-08-13 13:00:00,8027.8,0.0523,70.68 -2013-08-13 14:00:00,8086.7,0.0,72.69 -2013-08-13 15:00:00,8124.0,0.0,73.25 -2013-08-13 16:00:00,8232.7,0.0,74.25 -2013-08-13 17:00:00,8235.9,0.0,75.14 -2013-08-13 18:00:00,7913.1,0.0,76.44 -2013-08-13 19:00:00,7649.5,0.0,76.55 -2013-08-13 20:00:00,7547.2,0.0,74.46 -2013-08-13 21:00:00,7367.1,0.0,73.06 -2013-08-13 22:00:00,7054.0,0.0728,71.98 -2013-08-13 23:00:00,6558.9,0.0955,70.09 -2013-08-14 00:00:00,6084.7,0.0,70.21 -2013-08-14 01:00:00,5691.6,0.0,70.36 -2013-08-14 02:00:00,5387.3,0.0,69.13 -2013-08-14 03:00:00,5213.9,0.0,67.73 -2013-08-14 04:00:00,5107.8,0.0,65.98 -2013-08-14 05:00:00,5208.3,0.0,64.36 -2013-08-14 06:00:00,5564.1,0.0,62.15 -2013-08-14 07:00:00,6077.9,0.0,61.73 -2013-08-14 08:00:00,6502.6,0.0,62.79 -2013-08-14 09:00:00,6781.1,0.0,63.61 -2013-08-14 10:00:00,6949.6,0.0,65.61 -2013-08-14 11:00:00,7051.1,0.0,67.67 -2013-08-14 12:00:00,7116.7,0.0,68.88 -2013-08-14 13:00:00,7196.5,0.0,70.04 -2013-08-14 14:00:00,7224.9,0.0,71.67 -2013-08-14 15:00:00,7273.6,0.0,72.03 -2013-08-14 16:00:00,7312.3,0.0,73.46 -2013-08-14 17:00:00,7244.0,0.0,73.61 -2013-08-14 18:00:00,6895.3,0.0,72.84 -2013-08-14 19:00:00,6606.4,0.0,72.63 -2013-08-14 20:00:00,6515.4,0.0,70.57 -2013-08-14 21:00:00,6351.0,0.0,69.36 -2013-08-14 22:00:00,6025.2,0.0,68.36 -2013-08-14 23:00:00,5595.6,0.0,66.71 -2013-08-15 00:00:00,5178.4,0.0,65.27 -2013-08-15 01:00:00,4892.2,0.0,64.92 -2013-08-15 02:00:00,4692.8,0.0,63.71 -2013-08-15 03:00:00,4598.1,0.0,62.92 -2013-08-15 04:00:00,4593.6,0.0,62.71 -2013-08-15 05:00:00,4809.8,0.0,61.84 -2013-08-15 06:00:00,5243.8,0.0,60.64 -2013-08-15 07:00:00,5829.9,0.0,61.49 -2013-08-15 08:00:00,6331.1,0.0,63.75 -2013-08-15 09:00:00,6738.1,0.0,66.33 -2013-08-15 10:00:00,6965.0,0.0,68.75 -2013-08-15 11:00:00,7103.1,0.0,71.6 -2013-08-15 12:00:00,7186.9,0.0,73.42 -2013-08-15 13:00:00,7263.1,0.0,74.5 -2013-08-15 14:00:00,7330.0,0.0,75.51 -2013-08-15 15:00:00,7403.6,0.0,76.21 -2013-08-15 16:00:00,7443.1,0.0,76.9 -2013-08-15 17:00:00,7361.6,0.0,76.83 -2013-08-15 18:00:00,7010.7,0.0,76.61 -2013-08-15 19:00:00,6748.8,0.0,75.63 -2013-08-15 20:00:00,6672.0,0.0,73.42 -2013-08-15 21:00:00,6509.0,0.0,72.61 -2013-08-15 22:00:00,6197.7,0.0,71.57 -2013-08-15 23:00:00,5798.4,0.0,70.92 -2013-08-16 00:00:00,5396.2,0.0,68.53 -2013-08-16 01:00:00,5106.2,0.0,67.32 -2013-08-16 02:00:00,4911.5,0.0,66.65 -2013-08-16 03:00:00,4808.8,0.0,65.97 -2013-08-16 04:00:00,4805.1,0.0,65.34 -2013-08-16 05:00:00,5000.9,0.0,64.53 -2013-08-16 06:00:00,5458.0,0.0,64.31 -2013-08-16 07:00:00,6057.0,0.0,64.58 -2013-08-16 08:00:00,6591.5,0.0,67.65 -2013-08-16 09:00:00,6957.1,0.0,69.46 -2013-08-16 10:00:00,7202.3,0.0,72.4 -2013-08-16 11:00:00,7334.7,0.0,74.97 -2013-08-16 12:00:00,7401.5,0.0,76.04 -2013-08-16 13:00:00,7463.3,0.0,76.17 -2013-08-16 14:00:00,7495.6,0.0,77.65 -2013-08-16 15:00:00,7494.9,0.0,77.2 -2013-08-16 16:00:00,7497.6,0.0,77.44 -2013-08-16 17:00:00,7411.9,0.0,77.44 -2013-08-16 18:00:00,6998.5,0.0,76.23 -2013-08-16 19:00:00,6730.6,0.0,74.43 -2013-08-16 20:00:00,6654.7,0.0,73.0 -2013-08-16 21:00:00,6469.2,0.0,72.42 -2013-08-16 22:00:00,6201.2,0.0,71.21 -2013-08-16 23:00:00,5868.8,0.0,70.61 -2013-08-17 00:00:00,5497.8,0.0,69.61 -2013-08-17 01:00:00,5214.8,0.0,69.16 -2013-08-17 02:00:00,5020.0,0.0,68.11 -2013-08-17 03:00:00,4882.4,0.0,67.53 -2013-08-17 04:00:00,4814.0,0.0,67.16 -2013-08-17 05:00:00,4832.4,0.0,66.14 -2013-08-17 06:00:00,4926.4,0.0,66.2 -2013-08-17 07:00:00,5221.0,0.0,66.02 -2013-08-17 08:00:00,5604.5,0.0,68.92 -2013-08-17 09:00:00,5968.8,0.0,70.02 -2013-08-17 10:00:00,6289.6,0.0,72.69 -2013-08-17 11:00:00,6519.1,0.0,75.5 -2013-08-17 12:00:00,6603.2,0.0,77.17 -2013-08-17 13:00:00,6609.1,0.0,78.67 -2013-08-17 14:00:00,6627.1,0.0,79.64 -2013-08-17 15:00:00,6654.1,0.0,80.05 -2013-08-17 16:00:00,6652.8,0.0,79.51 -2013-08-17 17:00:00,6607.8,0.0,78.91 -2013-08-17 18:00:00,6448.7,0.0,78.01 -2013-08-17 19:00:00,6338.0,0.0,76.46 -2013-08-17 20:00:00,6363.8,0.0,74.19 -2013-08-17 21:00:00,6270.3,0.0,73.42 -2013-08-17 22:00:00,6098.8,0.0,72.87 -2013-08-17 23:00:00,5842.4,0.0,72.43 -2013-08-18 00:00:00,5566.9,0.0,71.59 -2013-08-18 01:00:00,5315.8,0.0,71.38 -2013-08-18 02:00:00,5139.2,0.0,70.45 -2013-08-18 03:00:00,5028.2,0.0,69.89 -2013-08-18 04:00:00,4963.0,0.0,69.29 -2013-08-18 05:00:00,4971.5,0.0,69.29 -2013-08-18 06:00:00,5011.6,0.0,68.29 -2013-08-18 07:00:00,5164.2,0.0,68.29 -2013-08-18 08:00:00,5414.1,0.0,69.09 -2013-08-18 09:00:00,5689.2,0.0,70.44 -2013-08-18 10:00:00,5943.7,0.0,71.88 -2013-08-18 11:00:00,6126.1,0.0,73.1 -2013-08-18 12:00:00,6192.1,0.0,74.29 -2013-08-18 13:00:00,6273.8,0.0,74.8 -2013-08-18 14:00:00,6276.7,0.0,75.96 -2013-08-18 15:00:00,6235.5,0.0,74.73 -2013-08-18 16:00:00,6207.4,0.0,75.13 -2013-08-18 17:00:00,6186.3,0.0,75.07 -2013-08-18 18:00:00,6139.2,0.0,73.7 -2013-08-18 19:00:00,6170.0,0.0,73.32 -2013-08-18 20:00:00,6300.8,0.0,72.23 -2013-08-18 21:00:00,6261.3,0.0,71.86 -2013-08-18 22:00:00,6087.0,0.0,70.24 -2013-08-18 23:00:00,5807.5,0.0,69.82 -2013-08-19 00:00:00,5494.0,0.0,69.38 -2013-08-19 01:00:00,5237.3,0.0,68.76 -2013-08-19 02:00:00,5068.8,0.0,67.78 -2013-08-19 03:00:00,4993.2,0.0,67.36 -2013-08-19 04:00:00,5020.5,0.0,67.48 -2013-08-19 05:00:00,5295.9,0.0,67.08 -2013-08-19 06:00:00,5728.9,0.0,67.48 -2013-08-19 07:00:00,6311.6,0.0,67.69 -2013-08-19 08:00:00,6812.3,0.0,68.3 -2013-08-19 09:00:00,7217.4,0.0,70.94 -2013-08-19 10:00:00,7530.0,0.0,73.0 -2013-08-19 11:00:00,7684.5,0.0,75.21 -2013-08-19 12:00:00,7764.8,0.0,76.82 -2013-08-19 13:00:00,7825.9,0.0,78.01 -2013-08-19 14:00:00,7842.7,0.0,77.75 -2013-08-19 15:00:00,7851.1,0.0,77.77 -2013-08-19 16:00:00,7890.9,0.0,78.82 -2013-08-19 17:00:00,7765.1,0.0,77.55 -2013-08-19 18:00:00,7398.6,0.0,76.57 -2013-08-19 19:00:00,7187.3,0.0,75.78 -2013-08-19 20:00:00,7159.4,0.0,74.73 -2013-08-19 21:00:00,6986.0,0.0,73.96 -2013-08-19 22:00:00,6691.4,0.0,73.3 -2013-08-19 23:00:00,6291.6,0.0,72.69 -2013-08-20 00:00:00,5860.0,0.0,71.88 -2013-08-20 01:00:00,5565.0,0.0,71.69 -2013-08-20 02:00:00,5360.5,0.0,70.69 -2013-08-20 03:00:00,5254.7,0.0,69.71 -2013-08-20 04:00:00,5259.4,0.0,69.05 -2013-08-20 05:00:00,5492.0,0.0,68.49 -2013-08-20 06:00:00,5987.1,0.0,68.26 -2013-08-20 07:00:00,6616.7,0.0,68.48 -2013-08-20 08:00:00,7196.9,0.0,70.89 -2013-08-20 09:00:00,7654.8,0.0,73.62 -2013-08-20 10:00:00,7999.3,0.0,76.21 -2013-08-20 11:00:00,8238.8,0.0,80.05 -2013-08-20 12:00:00,8424.2,0.0,81.29 -2013-08-20 13:00:00,8563.1,0.0,82.88 -2013-08-20 14:00:00,8669.8,0.0,84.13 -2013-08-20 15:00:00,8761.8,0.0,86.12 -2013-08-20 16:00:00,8811.9,0.0,85.73 -2013-08-20 17:00:00,8748.7,0.0,85.29 -2013-08-20 18:00:00,8388.9,0.0,84.75 -2013-08-20 19:00:00,8142.4,0.0,82.36 -2013-08-20 20:00:00,8093.4,0.0,80.91 -2013-08-20 21:00:00,7943.1,0.0,80.11 -2013-08-20 22:00:00,7640.5,0.0,78.94 -2013-08-20 23:00:00,7177.5,0.0,78.5 -2013-08-21 00:00:00,6666.6,0.0,78.1 -2013-08-21 01:00:00,6302.7,0.0,77.46 -2013-08-21 02:00:00,6048.8,0.0,74.64 -2013-08-21 03:00:00,5891.0,0.0,74.33 -2013-08-21 04:00:00,5837.7,0.0,72.85 -2013-08-21 05:00:00,6031.7,0.0,72.64 -2013-08-21 06:00:00,6479.5,0.0,71.83 -2013-08-21 07:00:00,7083.6,0.0,71.75 -2013-08-21 08:00:00,7662.8,0.0,73.6 -2013-08-21 09:00:00,8139.7,0.0,76.58 -2013-08-21 10:00:00,8473.8,0.0,79.62 -2013-08-21 11:00:00,8722.6,0.0,83.07 -2013-08-21 12:00:00,8867.7,0.0,84.36 -2013-08-21 13:00:00,9020.4,0.0,85.91 -2013-08-21 14:00:00,9135.4,0.0,86.98 -2013-08-21 15:00:00,9230.9,0.0,87.54 -2013-08-21 16:00:00,9217.2,0.0,87.75 -2013-08-21 17:00:00,9101.2,0.0,85.44 -2013-08-21 18:00:00,8734.1,0.0,83.94 -2013-08-21 19:00:00,8470.9,0.0,82.28 -2013-08-21 20:00:00,8436.4,0.0,80.07 -2013-08-21 21:00:00,8264.5,0.0,79.14 -2013-08-21 22:00:00,7933.0,0.0,77.87 -2013-08-21 23:00:00,7438.7,0.0,77.5 -2013-08-22 00:00:00,6974.4,0.0,77.39 -2013-08-22 01:00:00,6633.4,0.0,76.99 -2013-08-22 02:00:00,6404.3,0.0,76.59 -2013-08-22 03:00:00,6273.1,0.0,76.15 -2013-08-22 04:00:00,6267.2,0.0,75.75 -2013-08-22 05:00:00,6522.3,0.0,75.75 -2013-08-22 06:00:00,6999.3,0.0,75.97 -2013-08-22 07:00:00,7599.9,0.0,75.2 -2013-08-22 08:00:00,8099.8,0.0,76.23 -2013-08-22 09:00:00,8391.3,0.3398,75.09 -2013-08-22 10:00:00,8415.7,0.4179,72.33 -2013-08-22 11:00:00,8596.9,0.0761,73.0 -2013-08-22 12:00:00,8760.8,0.0035,74.59 -2013-08-22 13:00:00,8785.7,0.0208,76.55 -2013-08-22 14:00:00,8692.1,0.0035,74.27 -2013-08-22 15:00:00,8636.3,0.0231,74.19 -2013-08-22 16:00:00,8633.9,0.0165,74.36 -2013-08-22 17:00:00,8640.3,0.0,75.57 -2013-08-22 18:00:00,8245.6,0.0,76.13 -2013-08-22 19:00:00,8022.2,0.0,75.54 -2013-08-22 20:00:00,7980.9,0.0,74.96 -2013-08-22 21:00:00,7820.4,0.0,75.96 -2013-08-22 22:00:00,7508.1,0.0,75.31 -2013-08-22 23:00:00,7075.9,0.0,73.8 -2013-08-23 00:00:00,6618.2,0.0,74.13 -2013-08-23 01:00:00,6242.7,0.0,74.3 -2013-08-23 02:00:00,5972.8,0.0,73.31 -2013-08-23 03:00:00,5827.5,0.0,73.31 -2013-08-23 04:00:00,5823.5,0.0,73.31 -2013-08-23 05:00:00,6027.9,0.0,72.31 -2013-08-23 06:00:00,6459.5,0.0,72.21 -2013-08-23 07:00:00,7020.3,0.0,71.57 -2013-08-23 08:00:00,7498.2,0.0,72.19 -2013-08-23 09:00:00,7823.1,0.0,73.84 -2013-08-23 10:00:00,7945.7,0.0,74.84 -2013-08-23 11:00:00,8077.0,0.0,77.27 -2013-08-23 12:00:00,8147.6,0.0,79.23 -2013-08-23 13:00:00,8157.0,0.0,79.93 -2013-08-23 14:00:00,8138.7,0.0,79.69 -2013-08-23 15:00:00,8104.1,0.0,79.06 -2013-08-23 16:00:00,8022.8,0.0,79.32 -2013-08-23 17:00:00,7878.8,0.0,78.84 -2013-08-23 18:00:00,7560.2,0.0,78.07 -2013-08-23 19:00:00,7324.9,0.0,78.07 -2013-08-23 20:00:00,7223.2,0.0,76.07 -2013-08-23 21:00:00,7000.5,0.0,74.7 -2013-08-23 22:00:00,6668.6,0.0,73.28 -2013-08-23 23:00:00,6276.1,0.0,72.43 -2013-08-24 00:00:00,5873.6,0.0,71.22 -2013-08-24 01:00:00,5554.8,0.0,69.97 -2013-08-24 02:00:00,5319.5,0.0,68.9 -2013-08-24 03:00:00,5140.6,0.0,69.03 -2013-08-24 04:00:00,5008.9,0.0,66.82 -2013-08-24 05:00:00,4983.4,0.0,65.26 -2013-08-24 06:00:00,5043.5,0.0,64.82 -2013-08-24 07:00:00,5283.8,0.0,64.26 -2013-08-24 08:00:00,5622.0,0.0,66.09 -2013-08-24 09:00:00,5950.9,0.0,67.9 -2013-08-24 10:00:00,6206.2,0.0,69.44 -2013-08-24 11:00:00,6394.3,0.0,71.06 -2013-08-24 12:00:00,6483.5,0.0,73.11 -2013-08-24 13:00:00,6519.5,0.0,74.43 -2013-08-24 14:00:00,6552.1,0.0,76.5 -2013-08-24 15:00:00,6562.4,0.0,77.84 -2013-08-24 16:00:00,6572.1,0.0,77.12 -2013-08-24 17:00:00,6550.1,0.0,76.18 -2013-08-24 18:00:00,6422.8,0.0,74.88 -2013-08-24 19:00:00,6320.0,0.0,73.21 -2013-08-24 20:00:00,6357.2,0.0,71.0 -2013-08-24 21:00:00,6259.4,0.0,70.03 -2013-08-24 22:00:00,6069.7,0.0,69.61 -2013-08-24 23:00:00,5839.4,0.0,69.05 -2013-08-25 00:00:00,5533.6,0.0,68.45 -2013-08-25 01:00:00,5275.4,0.0,67.6 -2013-08-25 02:00:00,5092.5,0.0,67.45 -2013-08-25 03:00:00,4956.1,0.0,66.58 -2013-08-25 04:00:00,4865.1,0.0,65.97 -2013-08-25 05:00:00,4849.3,0.0,65.6 -2013-08-25 06:00:00,4869.6,0.0,65.16 -2013-08-25 07:00:00,5057.9,0.0,65.76 -2013-08-25 08:00:00,5375.3,0.0,67.55 -2013-08-25 09:00:00,5714.3,0.0,70.2 -2013-08-25 10:00:00,6052.7,0.0,73.0 -2013-08-25 11:00:00,6278.1,0.0,75.15 -2013-08-25 12:00:00,6428.3,0.0,77.55 -2013-08-25 13:00:00,6513.1,0.0,79.21 -2013-08-25 14:00:00,6588.8,0.0,80.54 -2013-08-25 15:00:00,6668.8,0.0,80.99 -2013-08-25 16:00:00,6726.4,0.0,81.4 -2013-08-25 17:00:00,6722.1,0.0,81.17 -2013-08-25 18:00:00,6619.0,0.0,80.03 -2013-08-25 19:00:00,6569.4,0.0,76.67 -2013-08-25 20:00:00,6650.1,0.0,75.07 -2013-08-25 21:00:00,6540.2,0.0,74.01 -2013-08-25 22:00:00,6315.2,0.0,72.96 -2013-08-25 23:00:00,6013.9,0.0,71.53 -2013-08-26 00:00:00,5690.4,0.0,71.9 -2013-08-26 01:00:00,5427.5,0.0,71.27 -2013-08-26 02:00:00,5250.4,0.0,70.5 -2013-08-26 03:00:00,5171.4,0.0,69.9 -2013-08-26 04:00:00,5208.0,0.0,69.67 -2013-08-26 05:00:00,5458.9,0.0,69.27 -2013-08-26 06:00:00,5896.1,0.0,68.9 -2013-08-26 07:00:00,6418.6,0.0,69.12 -2013-08-26 08:00:00,6876.8,0.0,69.12 -2013-08-26 09:00:00,7211.2,0.0,70.33 -2013-08-26 10:00:00,7507.3,0.0,71.78 -2013-08-26 11:00:00,7725.1,0.0,74.78 -2013-08-26 12:00:00,7946.6,0.0,75.78 -2013-08-26 13:00:00,8133.7,0.0,78.63 -2013-08-26 14:00:00,8295.2,0.0,80.03 -2013-08-26 15:00:00,8370.1,0.0,81.04 -2013-08-26 16:00:00,8343.4,0.0,80.76 -2013-08-26 17:00:00,8293.5,0.0,80.19 -2013-08-26 18:00:00,8004.4,0.0,80.43 -2013-08-26 19:00:00,7927.2,0.0,80.64 -2013-08-26 20:00:00,7925.7,0.0,80.03 -2013-08-26 21:00:00,7740.2,0.0,79.94 -2013-08-26 22:00:00,7380.3,0.0,78.22 -2013-08-26 23:00:00,6893.0,0.0069,76.38 -2013-08-27 00:00:00,6420.5,0.0069,74.97 -2013-08-27 01:00:00,6093.6,0.0,74.75 -2013-08-27 02:00:00,5866.3,0.0,74.9 -2013-08-27 03:00:00,5752.3,0.0,73.71 -2013-08-27 04:00:00,5766.2,0.0065,73.35 -2013-08-27 05:00:00,6008.3,0.0,74.12 -2013-08-27 06:00:00,6533.8,0.0,73.56 -2013-08-27 07:00:00,7094.0,0.0,73.19 -2013-08-27 08:00:00,7545.3,0.0,73.0 -2013-08-27 09:00:00,7925.9,0.0,73.23 -2013-08-27 10:00:00,8232.7,0.0,75.07 -2013-08-27 11:00:00,8490.5,0.0,77.27 -2013-08-27 12:00:00,8697.2,0.0,79.71 -2013-08-27 13:00:00,8864.8,0.0,80.88 -2013-08-27 14:00:00,8985.9,0.0,82.51 -2013-08-27 15:00:00,9099.0,0.0,83.51 -2013-08-27 16:00:00,9184.6,0.0,84.88 -2013-08-27 17:00:00,9148.6,0.0,85.11 -2013-08-27 18:00:00,8802.0,0.0,84.97 -2013-08-27 19:00:00,8590.4,0.0,83.36 -2013-08-27 20:00:00,8524.5,0.0,81.29 -2013-08-27 21:00:00,8304.8,0.0,80.24 -2013-08-27 22:00:00,7907.3,0.0,79.33 -2013-08-27 23:00:00,7397.4,0.0,78.06 -2013-08-28 00:00:00,6876.2,0.0,78.43 -2013-08-28 01:00:00,6485.9,0.0,77.22 -2013-08-28 02:00:00,6227.4,0.0,76.06 -2013-08-28 03:00:00,6078.4,0.0,75.87 -2013-08-28 04:00:00,6062.8,0.0,74.85 -2013-08-28 05:00:00,6308.8,0.0,73.28 -2013-08-28 06:00:00,6825.6,0.0,72.07 -2013-08-28 07:00:00,7477.9,0.0,72.65 -2013-08-28 08:00:00,8081.9,0.0,74.63 -2013-08-28 09:00:00,8588.7,0.0,76.83 -2013-08-28 10:00:00,8944.4,0.0,79.32 -2013-08-28 11:00:00,9183.6,0.0,81.16 -2013-08-28 12:00:00,9155.8,0.0,80.98 -2013-08-28 13:00:00,8981.7,0.0763,78.48 -2013-08-28 14:00:00,8908.8,0.0588,75.63 -2013-08-28 15:00:00,8843.2,0.0,76.16 -2013-08-28 16:00:00,8814.8,0.0035,75.12 -2013-08-28 17:00:00,8772.0,0.01,76.21 -2013-08-28 18:00:00,8458.9,0.0,76.4 -2013-08-28 19:00:00,8328.2,0.0,76.63 -2013-08-28 20:00:00,8305.0,0.0035,76.03 -2013-08-28 21:00:00,8086.2,0.0,75.65 -2013-08-28 22:00:00,7744.6,0.0,74.86 -2013-08-28 23:00:00,7191.8,0.0,74.25 -2013-08-29 00:00:00,6662.9,0.0,73.65 -2013-08-29 01:00:00,6337.2,0.0,73.25 -2013-08-29 02:00:00,6093.3,0.0,73.11 -2013-08-29 03:00:00,5964.4,0.0,72.86 -2013-08-29 04:00:00,5937.7,0.0,72.07 -2013-08-29 05:00:00,6170.9,0.0,71.86 -2013-08-29 06:00:00,6678.8,0.0,72.07 -2013-08-29 07:00:00,7216.6,0.0,72.47 -2013-08-29 08:00:00,7618.5,0.0,71.84 -2013-08-29 09:00:00,7918.0,0.0,72.0 -2013-08-29 10:00:00,8118.6,0.0,72.69 -2013-08-29 11:00:00,8238.3,0.0,73.65 -2013-08-29 12:00:00,8391.0,0.0,75.66 -2013-08-29 13:00:00,8525.8,0.0,76.3 -2013-08-29 14:00:00,8576.2,0.0,78.06 -2013-08-29 15:00:00,8574.1,0.0,77.84 -2013-08-29 16:00:00,8551.9,0.0,78.0 -2013-08-29 17:00:00,8402.7,0.0,77.84 -2013-08-29 18:00:00,8038.7,0.0,77.54 -2013-08-29 19:00:00,7852.9,0.0,75.54 -2013-08-29 20:00:00,7744.1,0.0,75.01 -2013-08-29 21:00:00,7491.8,0.0,73.01 -2013-08-29 22:00:00,7132.3,0.0,72.41 -2013-08-29 23:00:00,6682.5,0.0,71.61 -2013-08-30 00:00:00,6247.4,0.0,71.4 -2013-08-30 01:00:00,5893.1,0.0,70.65 -2013-08-30 02:00:00,5648.8,0.0,70.27 -2013-08-30 03:00:00,5531.5,0.0,69.84 -2013-08-30 04:00:00,5527.0,0.0,69.4 -2013-08-30 05:00:00,5771.3,0.0,69.63 -2013-08-30 06:00:00,6297.6,0.0,69.84 -2013-08-30 07:00:00,6823.6,0.0,70.4 -2013-08-30 08:00:00,7276.3,0.0,70.77 -2013-08-30 09:00:00,7648.5,0.0,71.61 -2013-08-30 10:00:00,7925.1,0.0,72.77 -2013-08-30 11:00:00,8174.1,0.0,75.46 -2013-08-30 12:00:00,8329.6,0.0,76.79 -2013-08-30 13:00:00,8505.9,0.0,78.61 -2013-08-30 14:00:00,8627.9,0.0,80.27 -2013-08-30 15:00:00,8724.7,0.0,81.61 -2013-08-30 16:00:00,8774.9,0.0,83.21 -2013-08-30 17:00:00,8704.9,0.0,83.17 -2013-08-30 18:00:00,8315.7,0.0,82.73 -2013-08-30 19:00:00,8113.7,0.0,81.34 -2013-08-30 20:00:00,8051.9,0.0,80.34 -2013-08-30 21:00:00,7840.7,0.0,78.94 -2013-08-30 22:00:00,7493.7,0.0,77.73 -2013-08-30 23:00:00,7095.8,0.0,76.94 -2013-08-31 00:00:00,6663.7,0.0,76.17 -2013-08-31 01:00:00,6317.9,0.0,75.56 -2013-08-31 02:00:00,6081.3,0.0,74.71 -2013-08-31 03:00:00,5897.7,0.0,74.35 -2013-08-31 04:00:00,5798.0,0.0,73.71 -2013-08-31 05:00:00,5805.2,0.0,72.93 -2013-08-31 06:00:00,5918.2,0.0,73.16 -2013-08-31 07:00:00,6133.0,0.0,73.56 -2013-08-31 08:00:00,6469.0,0.0,73.77 -2013-08-31 09:00:00,6771.6,0.0,74.38 -2013-08-31 10:00:00,7063.8,0.0,75.38 -2013-08-31 11:00:00,7304.6,0.0,77.0 -2013-08-31 12:00:00,7519.7,0.0,79.62 -2013-08-31 13:00:00,7707.3,0.0,80.24 -2013-08-31 14:00:00,7853.4,0.0,82.45 -2013-08-31 15:00:00,7929.9,0.0,83.46 -2013-08-31 16:00:00,7943.4,0.0,83.72 -2013-08-31 17:00:00,7901.2,0.0,83.3 -2013-08-31 18:00:00,7838.1,0.0,83.36 -2013-08-31 19:00:00,7857.4,0.0,82.97 -2013-08-31 20:00:00,7887.1,0.0,82.93 -2013-08-31 21:00:00,7733.6,0.0,80.51 -2013-08-31 22:00:00,7490.9,0.0,79.67 -2013-08-31 23:00:00,7196.0,0.0,79.07 -2013-09-01 00:00:00,6839.6,0.0,78.64 -2013-09-01 01:00:00,6525.4,0.0,78.86 -2013-09-01 02:00:00,6276.1,0.0,77.86 -2013-09-01 03:00:00,6096.3,0.0,76.8 -2013-09-01 04:00:00,5983.7,0.0,76.03 -2013-09-01 05:00:00,5943.4,0.0,75.57 -2013-09-01 06:00:00,5962.0,0.0,73.96 -2013-09-01 07:00:00,6102.7,0.0,74.4 -2013-09-01 08:00:00,6460.5,0.0,75.64 -2013-09-01 09:00:00,6797.3,0.0,77.84 -2013-09-01 10:00:00,7043.2,0.0035,77.19 -2013-09-01 11:00:00,7284.0,0.0,76.17 -2013-09-01 12:00:00,7564.5,0.0,79.26 -2013-09-01 13:00:00,7732.2,0.0,81.0 -2013-09-01 14:00:00,7789.1,0.0,82.19 -2013-09-01 15:00:00,7822.8,0.0,82.91 -2013-09-01 16:00:00,7775.9,0.0,81.65 -2013-09-01 17:00:00,7687.6,0.0,81.23 -2013-09-01 18:00:00,7559.1,0.0,78.48 -2013-09-01 19:00:00,7559.8,0.0,78.67 -2013-09-01 20:00:00,7626.8,0.0,76.87 -2013-09-01 21:00:00,7534.4,0.0,77.44 -2013-09-01 22:00:00,7329.6,0.0,76.02 -2013-09-01 23:00:00,7006.4,0.0,75.83 -2013-09-02 00:00:00,6690.8,0.0,75.0 -2013-09-02 01:00:00,6421.6,0.0,75.0 -2013-09-02 02:00:00,6215.9,0.0,75.0 -2013-09-02 03:00:00,6106.3,0.0,74.84 -2013-09-02 04:00:00,6063.1,0.0,75.47 -2013-09-02 05:00:00,6141.0,0.0,75.24 -2013-09-02 06:00:00,6291.5,0.0,75.46 -2013-09-02 07:00:00,6495.1,0.0,74.84 -2013-09-02 08:00:00,6776.6,0.0,75.38 -2013-09-02 09:00:00,7160.0,0.0,76.98 -2013-09-02 10:00:00,7572.3,0.0,78.57 -2013-09-02 11:00:00,7828.3,0.0,78.66 -2013-09-02 12:00:00,7929.8,0.0,79.91 -2013-09-02 13:00:00,7834.4,0.2156,76.46 -2013-09-02 14:00:00,7791.6,0.4216,76.78 -2013-09-02 15:00:00,7799.8,0.0135,75.21 -2013-09-02 16:00:00,7924.2,0.0165,77.43 -2013-09-02 17:00:00,8007.6,0.0,79.86 -2013-09-02 18:00:00,7970.6,0.0,79.79 -2013-09-02 19:00:00,7989.7,0.0,79.01 -2013-09-02 20:00:00,8061.3,0.0,76.56 -2013-09-02 21:00:00,7910.9,0.0,75.96 -2013-09-02 22:00:00,7598.8,0.0,75.8 -2013-09-02 23:00:00,7173.9,0.0,75.19 -2013-09-03 00:00:00,6772.0,0.0,74.96 -2013-09-03 01:00:00,6472.4,0.0,74.35 -2013-09-03 02:00:00,6236.2,0.0,73.98 -2013-09-03 03:00:00,6138.0,0.0588,73.21 -2013-09-03 04:00:00,6171.5,0.0,72.38 -2013-09-03 05:00:00,6416.0,0.0,72.17 -2013-09-03 06:00:00,6923.6,0.0,71.94 -2013-09-03 07:00:00,7536.1,0.0,72.36 -2013-09-03 08:00:00,8045.4,0.0,72.36 -2013-09-03 09:00:00,8434.5,0.0,73.23 -2013-09-03 10:00:00,8684.0,0.0,74.0 -2013-09-03 11:00:00,8723.0,0.0,74.94 -2013-09-03 12:00:00,8754.7,0.0,75.71 -2013-09-03 13:00:00,8813.2,0.0,77.65 -2013-09-03 14:00:00,8868.9,0.0,78.9 -2013-09-03 15:00:00,8926.1,0.0,80.07 -2013-09-03 16:00:00,8922.3,0.0,80.67 -2013-09-03 17:00:00,8763.5,0.0,80.86 -2013-09-03 18:00:00,8313.7,0.0,79.69 -2013-09-03 19:00:00,8071.1,0.0,78.03 -2013-09-03 20:00:00,7889.0,0.0,76.63 -2013-09-03 21:00:00,7558.2,0.0,74.21 -2013-09-03 22:00:00,7130.1,0.0,72.36 -2013-09-03 23:00:00,6582.6,0.0,71.15 -2013-09-04 00:00:00,6057.3,0.0,70.15 -2013-09-04 01:00:00,5700.5,0.0,69.15 -2013-09-04 02:00:00,5460.3,0.0,68.15 -2013-09-04 03:00:00,5324.9,0.0,67.31 -2013-09-04 04:00:00,5299.6,0.0,66.49 -2013-09-04 05:00:00,5524.7,0.0,66.31 -2013-09-04 06:00:00,5998.5,0.0,66.15 -2013-09-04 07:00:00,6585.8,0.0,66.13 -2013-09-04 08:00:00,7102.6,0.0,66.79 -2013-09-04 09:00:00,7486.2,0.0,68.4 -2013-09-04 10:00:00,7681.1,0.0,70.61 -2013-09-04 11:00:00,7828.5,0.0,72.38 -2013-09-04 12:00:00,7953.9,0.0,74.88 -2013-09-04 13:00:00,8092.6,0.0,76.83 -2013-09-04 14:00:00,8230.6,0.0,78.05 -2013-09-04 15:00:00,8334.3,0.0,79.45 -2013-09-04 16:00:00,8386.1,0.0,80.45 -2013-09-04 17:00:00,8324.5,0.0,80.0 -2013-09-04 18:00:00,7954.4,0.0,79.46 -2013-09-04 19:00:00,7740.7,0.0,79.01 -2013-09-04 20:00:00,7612.4,0.0,77.73 -2013-09-04 21:00:00,7381.4,0.0,76.52 -2013-09-04 22:00:00,7025.8,0.0,75.9 -2013-09-04 23:00:00,6551.1,0.0,75.09 -2013-09-05 00:00:00,6083.4,0.0,74.04 -2013-09-05 01:00:00,5735.7,0.0,73.44 -2013-09-05 02:00:00,5489.2,0.0,71.19 -2013-09-05 03:00:00,5357.8,0.0,70.59 -2013-09-05 04:00:00,5328.2,0.0,70.04 -2013-09-05 05:00:00,5528.7,0.0,69.04 -2013-09-05 06:00:00,5956.9,0.0,68.19 -2013-09-05 07:00:00,6512.9,0.0,67.26 -2013-09-05 08:00:00,7009.2,0.0,69.86 -2013-09-05 09:00:00,7379.0,0.0,71.12 -2013-09-05 10:00:00,7605.1,0.0,72.77 -2013-09-05 11:00:00,7718.7,0.0,73.39 -2013-09-05 12:00:00,7802.8,0.0,74.43 -2013-09-05 13:00:00,7828.4,0.0,76.04 -2013-09-05 14:00:00,7821.3,0.0,75.98 -2013-09-05 15:00:00,7835.2,0.0,76.23 -2013-09-05 16:00:00,7815.4,0.0,76.46 -2013-09-05 17:00:00,7662.7,0.0,75.69 -2013-09-05 18:00:00,7226.2,0.0,73.84 -2013-09-05 19:00:00,6998.2,0.0,72.42 -2013-09-05 20:00:00,6861.6,0.0,70.21 -2013-09-05 21:00:00,6587.3,0.0,68.65 -2013-09-05 22:00:00,6210.4,0.0,67.66 -2013-09-05 23:00:00,5775.0,0.0,66.22 -2013-09-06 00:00:00,5331.9,0.0,64.58 -2013-09-06 01:00:00,4999.2,0.0,63.17 -2013-09-06 02:00:00,4778.2,0.0,60.88 -2013-09-06 03:00:00,4657.1,0.0,59.72 -2013-09-06 04:00:00,4615.6,0.0,58.34 -2013-09-06 05:00:00,4793.1,0.0,57.17 -2013-09-06 06:00:00,5179.2,0.0,56.34 -2013-09-06 07:00:00,5676.8,0.0,56.75 -2013-09-06 08:00:00,6127.9,0.0,57.8 -2013-09-06 09:00:00,6422.4,0.0,61.25 -2013-09-06 10:00:00,6594.2,0.0,63.3 -2013-09-06 11:00:00,6710.4,0.0,64.06 -2013-09-06 12:00:00,6787.2,0.0,65.46 -2013-09-06 13:00:00,6874.0,0.0,66.67 -2013-09-06 14:00:00,6908.7,0.0,68.04 -2013-09-06 15:00:00,6928.4,0.0,69.21 -2013-09-06 16:00:00,6951.0,0.0,70.14 -2013-09-06 17:00:00,6874.3,0.0,70.6 -2013-09-06 18:00:00,6540.4,0.0,69.35 -2013-09-06 19:00:00,6407.9,0.0,68.06 -2013-09-06 20:00:00,6299.5,0.0,66.07 -2013-09-06 21:00:00,6066.9,0.0,65.47 -2013-09-06 22:00:00,5776.2,0.0,63.64 -2013-09-06 23:00:00,5420.2,0.0,63.41 -2013-09-07 00:00:00,5037.9,0.0,63.41 -2013-09-07 01:00:00,4747.6,0.0,62.23 -2013-09-07 02:00:00,4570.3,0.0,61.44 -2013-09-07 03:00:00,4458.5,0.0,60.78 -2013-09-07 04:00:00,4407.0,0.0,60.34 -2013-09-07 05:00:00,4437.1,0.0,59.63 -2013-09-07 06:00:00,4598.3,0.0,59.63 -2013-09-07 07:00:00,4788.7,0.0,58.91 -2013-09-07 08:00:00,5138.3,0.0,61.94 -2013-09-07 09:00:00,5503.0,0.0,64.3 -2013-09-07 10:00:00,5768.3,0.0,67.38 -2013-09-07 11:00:00,5956.6,0.0,70.87 -2013-09-07 12:00:00,6075.6,0.0,72.5 -2013-09-07 13:00:00,6132.0,0.0,74.45 -2013-09-07 14:00:00,6177.9,0.0,76.45 -2013-09-07 15:00:00,6209.6,0.0,76.82 -2013-09-07 16:00:00,6233.6,0.0,76.88 -2013-09-07 17:00:00,6189.1,0.0,75.94 -2013-09-07 18:00:00,6110.7,0.0,73.88 -2013-09-07 19:00:00,6172.2,0.0,72.27 -2013-09-07 20:00:00,6181.5,0.0,71.29 -2013-09-07 21:00:00,6067.9,0.0,71.69 -2013-09-07 22:00:00,5875.1,0.0,70.77 -2013-09-07 23:00:00,5615.5,0.0,71.17 -2013-09-08 00:00:00,5316.8,0.0,70.59 -2013-09-08 01:00:00,5054.8,0.0,70.4 -2013-09-08 02:00:00,4885.3,0.0,70.73 -2013-09-08 03:00:00,4772.0,0.0,69.9 -2013-09-08 04:00:00,4713.1,0.0,69.9 -2013-09-08 05:00:00,4719.4,0.0,69.13 -2013-09-08 06:00:00,4771.3,0.0,68.69 -2013-09-08 07:00:00,4929.0,0.0,68.38 -2013-09-08 08:00:00,5258.3,0.0,69.75 -2013-09-08 09:00:00,5642.8,0.0,71.15 -2013-09-08 10:00:00,6039.4,0.0,73.06 -2013-09-08 11:00:00,6361.9,0.0,75.65 -2013-09-08 12:00:00,6583.2,0.0,78.67 -2013-09-08 13:00:00,6668.2,0.0,78.06 -2013-09-08 14:00:00,6712.0,0.0,78.83 -2013-09-08 15:00:00,6718.9,0.0,79.67 -2013-09-08 16:00:00,6720.9,0.0,80.06 -2013-09-08 17:00:00,6662.9,0.0,78.44 -2013-09-08 18:00:00,6508.0,0.0,77.63 -2013-09-08 19:00:00,6465.7,0.0,75.26 -2013-09-08 20:00:00,6456.9,0.0,72.26 -2013-09-08 21:00:00,6228.9,0.0,69.86 -2013-09-08 22:00:00,5882.3,0.0,67.65 -2013-09-08 23:00:00,5457.6,0.0,65.8 -2013-09-09 00:00:00,5050.4,0.0,64.43 -2013-09-09 01:00:00,4769.4,0.0,62.82 -2013-09-09 02:00:00,4601.6,0.0,61.82 -2013-09-09 03:00:00,4515.0,0.0,60.82 -2013-09-09 04:00:00,4530.1,0.0,59.61 -2013-09-09 05:00:00,4788.9,0.0,59.7 -2013-09-09 06:00:00,5334.1,0.0,58.52 -2013-09-09 07:00:00,5894.8,0.0,58.31 -2013-09-09 08:00:00,6326.5,0.0,59.82 -2013-09-09 09:00:00,6689.5,0.0,63.09 -2013-09-09 10:00:00,6877.5,0.0,64.44 -2013-09-09 11:00:00,6990.0,0.0,66.32 -2013-09-09 12:00:00,7059.4,0.0,67.47 -2013-09-09 13:00:00,7115.2,0.0,70.01 -2013-09-09 14:00:00,7110.5,0.0,69.05 -2013-09-09 15:00:00,7146.2,0.0,68.83 -2013-09-09 16:00:00,7200.3,0.0,69.86 -2013-09-09 17:00:00,7116.9,0.0,70.84 -2013-09-09 18:00:00,6786.3,0.0,69.23 -2013-09-09 19:00:00,6735.5,0.0,67.84 -2013-09-09 20:00:00,6610.8,0.0,67.63 -2013-09-09 21:00:00,6389.5,0.0,67.79 -2013-09-09 22:00:00,6052.6,0.0,67.79 -2013-09-09 23:00:00,5610.4,0.0,68.35 -2013-09-10 00:00:00,5225.5,0.0,68.56 -2013-09-10 01:00:00,4984.2,0.0,68.56 -2013-09-10 02:00:00,4838.9,0.0,68.96 -2013-09-10 03:00:00,4783.0,0.0,69.33 -2013-09-10 04:00:00,4831.3,0.0,69.12 -2013-09-10 05:00:00,5179.5,0.0,69.56 -2013-09-10 06:00:00,5884.3,0.0,69.56 -2013-09-10 07:00:00,6591.5,0.0,70.4 -2013-09-10 08:00:00,7079.8,0.0,70.56 -2013-09-10 09:00:00,7472.7,0.0,72.17 -2013-09-10 10:00:00,7786.5,0.0,73.44 -2013-09-10 11:00:00,7983.9,0.0,76.19 -2013-09-10 12:00:00,8164.8,0.0,77.61 -2013-09-10 13:00:00,8382.9,0.0,79.45 -2013-09-10 14:00:00,8575.4,0.0,81.08 -2013-09-10 15:00:00,8841.6,0.0,81.45 -2013-09-10 16:00:00,9096.9,0.0,84.35 -2013-09-10 17:00:00,9126.9,0.0,85.01 -2013-09-10 18:00:00,8800.3,0.0,85.14 -2013-09-10 19:00:00,8749.4,0.0,83.14 -2013-09-10 20:00:00,8644.1,0.0,81.03 -2013-09-10 21:00:00,8406.9,0.0,79.95 -2013-09-10 22:00:00,8008.3,0.0,79.7 -2013-09-10 23:00:00,7396.8,0.0,79.07 -2013-09-11 00:00:00,6858.0,0.0,78.47 -2013-09-11 01:00:00,6507.4,0.0,78.47 -2013-09-11 02:00:00,6271.4,0.0,77.57 -2013-09-11 03:00:00,6124.1,0.0,77.52 -2013-09-11 04:00:00,6137.0,0.0,77.15 -2013-09-11 05:00:00,6417.2,0.0,76.36 -2013-09-11 06:00:00,7058.8,0.0,76.36 -2013-09-11 07:00:00,7738.9,0.0,75.59 -2013-09-11 08:00:00,8327.0,0.0,76.57 -2013-09-11 09:00:00,8883.7,0.0,79.74 -2013-09-11 10:00:00,9321.1,0.0,83.75 -2013-09-11 11:00:00,9700.3,0.0,87.4 -2013-09-11 12:00:00,9979.6,0.0,87.55 -2013-09-11 13:00:00,10242.1,0.0,91.11 -2013-09-11 14:00:00,10401.8,0.0,91.64 -2013-09-11 15:00:00,10529.8,0.0,91.69 -2013-09-11 16:00:00,10610.9,0.0,91.46 -2013-09-11 17:00:00,10465.2,0.0,89.52 -2013-09-11 18:00:00,10035.9,0.0,88.75 -2013-09-11 19:00:00,9932.4,0.0,86.28 -2013-09-11 20:00:00,9775.0,0.0,85.67 -2013-09-11 21:00:00,9446.6,0.0,87.03 -2013-09-11 22:00:00,8901.6,0.0,83.95 -2013-09-11 23:00:00,8201.3,0.0,83.48 -2013-09-12 00:00:00,7611.2,0.0,81.26 -2013-09-12 01:00:00,7172.5,0.0,80.03 -2013-09-12 02:00:00,6874.0,0.0,79.03 -2013-09-12 03:00:00,6696.2,0.0,78.41 -2013-09-12 04:00:00,6639.2,0.0,77.01 -2013-09-12 05:00:00,6878.4,0.0,76.41 -2013-09-12 06:00:00,7443.0,0.0,75.41 -2013-09-12 07:00:00,8038.8,0.0,75.01 -2013-09-12 08:00:00,8547.2,0.0,75.23 -2013-09-12 09:00:00,8941.8,0.0,77.44 -2013-09-12 10:00:00,9255.9,0.0,78.82 -2013-09-12 11:00:00,9520.2,0.0,80.09 -2013-09-12 12:00:00,9714.3,0.0,82.69 -2013-09-12 13:00:00,9548.0,0.0,80.75 -2013-09-12 14:00:00,9396.9,0.0,78.63 -2013-09-12 15:00:00,9513.7,0.0,78.59 -2013-09-12 16:00:00,9657.9,0.0,81.39 -2013-09-12 17:00:00,9602.6,0.0,80.17 -2013-09-12 18:00:00,9219.8,0.0,80.36 -2013-09-12 19:00:00,8921.1,0.1397,76.16 -2013-09-12 20:00:00,8451.3,0.1707,72.13 -2013-09-12 21:00:00,8123.0,0.1484,70.73 -2013-09-12 22:00:00,7683.4,0.0231,71.38 -2013-09-12 23:00:00,7119.0,0.0,71.83 -2013-09-13 00:00:00,6571.6,0.0,70.56 -2013-09-13 01:00:00,6211.9,0.0,70.96 -2013-09-13 02:00:00,5966.9,0.0,70.35 -2013-09-13 03:00:00,5836.5,0.0,69.94 -2013-09-13 04:00:00,5773.8,0.0169,69.5 -2013-09-13 05:00:00,5985.2,0.0235,68.79 -2013-09-13 06:00:00,6562.5,0.0,68.13 -2013-09-13 07:00:00,7125.3,0.0,67.97 -2013-09-13 08:00:00,7525.0,0.0,68.98 -2013-09-13 09:00:00,7804.3,0.0,69.56 -2013-09-13 10:00:00,7938.3,0.0,70.56 -2013-09-13 11:00:00,7912.9,0.0,70.56 -2013-09-13 12:00:00,7794.4,0.0,69.56 -2013-09-13 13:00:00,7804.5,0.0,70.43 -2013-09-13 14:00:00,7916.4,0.0,73.11 -2013-09-13 15:00:00,7953.4,0.0,75.44 -2013-09-13 16:00:00,7911.6,0.0,74.24 -2013-09-13 17:00:00,7727.9,0.0,73.84 -2013-09-13 18:00:00,7245.3,0.0,72.32 -2013-09-13 19:00:00,6998.1,0.0,69.19 -2013-09-13 20:00:00,6724.8,0.0,67.36 -2013-09-13 21:00:00,6376.4,0.0,65.13 -2013-09-13 22:00:00,5966.2,0.0,62.73 -2013-09-13 23:00:00,5516.6,0.0,61.52 -2013-09-14 00:00:00,5093.4,0.0,60.13 -2013-09-14 01:00:00,4794.3,0.0,59.13 -2013-09-14 02:00:00,4601.1,0.0,58.13 -2013-09-14 03:00:00,4469.3,0.0,57.36 -2013-09-14 04:00:00,4400.5,0.0,56.52 -2013-09-14 05:00:00,4423.6,0.0,56.08 -2013-09-14 06:00:00,4525.9,0.0,54.92 -2013-09-14 07:00:00,4737.0,0.0,54.86 -2013-09-14 08:00:00,5054.9,0.0,55.94 -2013-09-14 09:00:00,5345.6,0.0,57.6 -2013-09-14 10:00:00,5554.8,0.0,60.21 -2013-09-14 11:00:00,5687.0,0.0,61.21 -2013-09-14 12:00:00,5741.3,0.0,63.38 -2013-09-14 13:00:00,5709.9,0.0,64.4 -2013-09-14 14:00:00,5683.7,0.0,64.83 -2013-09-14 15:00:00,5663.0,0.0,65.6 -2013-09-14 16:00:00,5631.7,0.0,65.75 -2013-09-14 17:00:00,5612.4,0.0,65.56 -2013-09-14 18:00:00,5576.1,0.0,64.96 -2013-09-14 19:00:00,5648.9,0.0,62.29 -2013-09-14 20:00:00,5620.8,0.0,60.29 -2013-09-14 21:00:00,5463.4,0.0,59.71 -2013-09-14 22:00:00,5245.6,0.0,58.63 -2013-09-14 23:00:00,4959.8,0.0,57.63 -2013-09-15 00:00:00,4652.1,0.0,56.86 -2013-09-15 01:00:00,4418.2,0.0,55.86 -2013-09-15 02:00:00,4271.2,0.0,56.09 -2013-09-15 03:00:00,4160.6,0.0,54.86 -2013-09-15 04:00:00,4095.2,0.0,54.81 -2013-09-15 05:00:00,4092.3,0.0,53.88 -2013-09-15 06:00:00,4152.9,0.0,53.46 -2013-09-15 07:00:00,4307.0,0.0,52.81 -2013-09-15 08:00:00,4599.6,0.0,54.06 -2013-09-15 09:00:00,4892.4,0.0,56.39 -2013-09-15 10:00:00,5154.6,0.0,59.81 -2013-09-15 11:00:00,5327.7,0.0,63.11 -2013-09-15 12:00:00,5433.4,0.0,65.46 -2013-09-15 13:00:00,5499.1,0.0,67.28 -2013-09-15 14:00:00,5538.2,0.0,68.88 -2013-09-15 15:00:00,5545.8,0.0,69.67 -2013-09-15 16:00:00,5585.6,0.0,71.83 -2013-09-15 17:00:00,5601.3,0.0,71.61 -2013-09-15 18:00:00,5622.0,0.0,69.38 -2013-09-15 19:00:00,5808.9,0.0,67.0 -2013-09-15 20:00:00,5827.3,0.0,66.57 -2013-09-15 21:00:00,5688.3,0.0,65.59 -2013-09-15 22:00:00,5419.8,0.0,65.75 -2013-09-15 23:00:00,5069.2,0.0,65.55 -2013-09-16 00:00:00,4739.6,0.0,64.31 -2013-09-16 01:00:00,4511.8,0.0,64.13 -2013-09-16 02:00:00,4380.9,0.0,63.52 -2013-09-16 03:00:00,4319.9,0.0,63.15 -2013-09-16 04:00:00,4366.2,0.0,62.38 -2013-09-16 05:00:00,4672.2,0.0,62.92 -2013-09-16 06:00:00,5279.3,0.0,63.29 -2013-09-16 07:00:00,5890.1,0.0,63.25 -2013-09-16 08:00:00,6293.2,0.0035,63.52 -2013-09-16 09:00:00,6598.6,0.0165,62.5 -2013-09-16 10:00:00,6719.9,0.0,62.79 -2013-09-16 11:00:00,6748.5,0.0,63.39 -2013-09-16 12:00:00,6766.1,0.0,64.16 -2013-09-16 13:00:00,6827.9,0.0,67.25 -2013-09-16 14:00:00,6892.9,0.0,69.85 -2013-09-16 15:00:00,6914.3,0.0,71.41 -2013-09-16 16:00:00,6896.0,0.0,69.44 -2013-09-16 17:00:00,6784.7,0.0,69.23 -2013-09-16 18:00:00,6548.4,0.0,68.84 -2013-09-16 19:00:00,6504.8,0.0,67.23 -2013-09-16 20:00:00,6345.1,0.0,66.79 -2013-09-16 21:00:00,6033.9,0.0,64.98 -2013-09-16 22:00:00,5598.8,0.0,63.82 -2013-09-16 23:00:00,5089.8,0.0,61.02 -2013-09-17 00:00:00,4634.8,0.0,58.8 -2013-09-17 01:00:00,4355.2,0.0,56.57 -2013-09-17 02:00:00,4191.5,0.0,54.73 -2013-09-17 03:00:00,4091.8,0.0,53.57 -2013-09-17 04:00:00,4087.3,0.0,51.96 -2013-09-17 05:00:00,4320.7,0.0,51.25 -2013-09-17 06:00:00,4857.1,0.0,50.4 -2013-09-17 07:00:00,5403.0,0.0,50.02 -2013-09-17 08:00:00,5784.8,0.0,51.23 -2013-09-17 09:00:00,6047.1,0.0,53.23 -2013-09-17 10:00:00,6151.9,0.0,55.09 -2013-09-17 11:00:00,6229.7,0.0,57.09 -2013-09-17 12:00:00,6286.0,0.0,57.83 -2013-09-17 13:00:00,6332.1,0.0,59.27 -2013-09-17 14:00:00,6342.8,0.0,61.02 -2013-09-17 15:00:00,6399.2,0.0,62.43 -2013-09-17 16:00:00,6443.4,0.0,63.43 -2013-09-17 17:00:00,6404.7,0.0,64.21 -2013-09-17 18:00:00,6173.9,0.0,64.39 -2013-09-17 19:00:00,6181.1,0.0,62.17 -2013-09-17 20:00:00,6046.4,0.0,60.86 -2013-09-17 21:00:00,5762.1,0.0,59.05 -2013-09-17 22:00:00,5381.6,0.0,58.21 -2013-09-17 23:00:00,4928.3,0.0,57.78 -2013-09-18 00:00:00,4511.4,0.0,57.01 -2013-09-18 01:00:00,4257.7,0.0,56.57 -2013-09-18 02:00:00,4112.8,0.0,55.53 -2013-09-18 03:00:00,4041.8,0.0,55.01 -2013-09-18 04:00:00,4048.2,0.0,54.64 -2013-09-18 05:00:00,4277.3,0.0,54.01 -2013-09-18 06:00:00,4833.5,0.0,53.24 -2013-09-18 07:00:00,5408.2,0.0,53.46 -2013-09-18 08:00:00,5826.1,0.0,55.26 -2013-09-18 09:00:00,6107.5,0.0,58.29 -2013-09-18 10:00:00,6304.4,0.0,60.89 -2013-09-18 11:00:00,6423.0,0.0,63.44 -2013-09-18 12:00:00,6510.0,0.0,64.84 -2013-09-18 13:00:00,6569.5,0.0,66.86 -2013-09-18 14:00:00,6599.0,0.0,68.21 -2013-09-18 15:00:00,6643.4,0.0,69.37 -2013-09-18 16:00:00,6683.6,0.0,70.0 -2013-09-18 17:00:00,6621.0,0.0,70.27 -2013-09-18 18:00:00,6357.6,0.0,67.44 -2013-09-18 19:00:00,6321.7,0.0,64.61 -2013-09-18 20:00:00,6149.9,0.0,62.73 -2013-09-18 21:00:00,5873.6,0.0,62.35 -2013-09-18 22:00:00,5499.2,0.0,61.36 -2013-09-18 23:00:00,5046.3,0.0,60.71 -2013-09-19 00:00:00,4629.4,0.0,59.71 -2013-09-19 01:00:00,4370.9,0.0,59.08 -2013-09-19 02:00:00,4223.8,0.0,57.44 -2013-09-19 03:00:00,4148.6,0.0,57.49 -2013-09-19 04:00:00,4155.2,0.0,56.47 -2013-09-19 05:00:00,4379.0,0.0,56.08 -2013-09-19 06:00:00,4920.0,0.0,56.24 -2013-09-19 07:00:00,5494.5,0.0,55.28 -2013-09-19 08:00:00,5921.2,0.0,57.7 -2013-09-19 09:00:00,6261.0,0.0,62.35 -2013-09-19 10:00:00,6443.8,0.0,64.13 -2013-09-19 11:00:00,6591.1,0.0,66.21 -2013-09-19 12:00:00,6702.8,0.0,70.45 -2013-09-19 13:00:00,6781.4,0.0,71.44 -2013-09-19 14:00:00,6848.4,0.0,73.5 -2013-09-19 15:00:00,6916.0,0.0,74.84 -2013-09-19 16:00:00,6952.8,0.0,74.82 -2013-09-19 17:00:00,6868.8,0.0,73.31 -2013-09-19 18:00:00,6552.1,0.0,70.88 -2013-09-19 19:00:00,6512.1,0.0,67.84 -2013-09-19 20:00:00,6348.9,0.0,66.21 -2013-09-19 21:00:00,6076.1,0.0,65.98 -2013-09-19 22:00:00,5686.8,0.0,65.43 -2013-09-19 23:00:00,5245.8,0.0,64.38 -2013-09-20 00:00:00,4834.0,0.0,63.98 -2013-09-20 01:00:00,4557.3,0.0,62.55 -2013-09-20 02:00:00,4396.4,0.0,61.34 -2013-09-20 03:00:00,4309.0,0.0,61.05 -2013-09-20 04:00:00,4319.4,0.0,60.63 -2013-09-20 05:00:00,4556.1,0.0,59.7 -2013-09-20 06:00:00,5129.7,0.0,59.31 -2013-09-20 07:00:00,5721.4,0.0,59.31 -2013-09-20 08:00:00,6203.3,0.0,61.33 -2013-09-20 09:00:00,6584.8,0.0,64.92 -2013-09-20 10:00:00,6818.4,0.0,68.62 -2013-09-20 11:00:00,7003.2,0.0,71.41 -2013-09-20 12:00:00,7115.6,0.0,73.77 -2013-09-20 13:00:00,7176.6,0.0,74.68 -2013-09-20 14:00:00,7193.6,0.0,75.65 -2013-09-20 15:00:00,7216.6,0.0,75.71 -2013-09-20 16:00:00,7174.2,0.0,75.48 -2013-09-20 17:00:00,7028.2,0.0,73.28 -2013-09-20 18:00:00,6673.6,0.0,71.46 -2013-09-20 19:00:00,6592.7,0.0,68.85 -2013-09-20 20:00:00,6388.1,0.0,67.65 -2013-09-20 21:00:00,6116.8,0.0,67.06 -2013-09-20 22:00:00,5810.0,0.0,66.21 -2013-09-20 23:00:00,5401.5,0.0,65.98 -2013-09-21 00:00:00,5010.0,0.0,65.77 -2013-09-21 01:00:00,4712.6,0.0,64.94 -2013-09-21 02:00:00,4511.9,0.0,63.94 -2013-09-21 03:00:00,4389.2,0.0,62.79 -2013-09-21 04:00:00,4343.4,0.0,62.23 -2013-09-21 05:00:00,4370.8,0.0,61.65 -2013-09-21 06:00:00,4562.7,0.0,60.61 -2013-09-21 07:00:00,4817.1,0.0,61.59 -2013-09-21 08:00:00,5212.6,0.0,63.21 -2013-09-21 09:00:00,5551.1,0.0,65.0 -2013-09-21 10:00:00,5821.8,0.0,66.75 -2013-09-21 11:00:00,6039.2,0.0,69.43 -2013-09-21 12:00:00,6139.7,0.0,71.15 -2013-09-21 13:00:00,6215.1,0.0,72.94 -2013-09-21 14:00:00,6266.1,0.0,74.92 -2013-09-21 15:00:00,6252.1,0.0,75.52 -2013-09-21 16:00:00,6221.5,0.0,74.75 -2013-09-21 17:00:00,6184.8,0.0,73.91 -2013-09-21 18:00:00,6188.1,0.0,72.25 -2013-09-21 19:00:00,6331.4,0.0,71.41 -2013-09-21 20:00:00,6264.7,0.0,71.2 -2013-09-21 21:00:00,6144.4,0.0,71.75 -2013-09-21 22:00:00,5945.9,0.0035,70.79 -2013-09-21 23:00:00,5648.5,0.0312,70.58 -2013-09-22 00:00:00,5311.5,0.1441,70.43 -2013-09-22 01:00:00,4980.8,0.2312,66.68 -2013-09-22 02:00:00,4746.9,0.208,64.77 -2013-09-22 03:00:00,4600.6,0.1953,63.6 -2013-09-22 04:00:00,4528.3,0.0231,63.61 -2013-09-22 05:00:00,4520.4,0.0065,64.21 -2013-09-22 06:00:00,4587.4,0.0,64.0 -2013-09-22 07:00:00,4702.7,0.0,64.0 -2013-09-22 08:00:00,4960.5,0.0,63.56 -2013-09-22 09:00:00,5208.8,0.0,63.0 -2013-09-22 10:00:00,5440.3,0.0,64.2 -2013-09-22 11:00:00,5581.1,0.0,65.83 -2013-09-22 12:00:00,5648.3,0.0,66.48 -2013-09-22 13:00:00,5657.5,0.0,67.09 -2013-09-22 14:00:00,5643.3,0.0,67.43 -2013-09-22 15:00:00,5604.6,0.0,66.67 -2013-09-22 16:00:00,5571.6,0.0,66.46 -2013-09-22 17:00:00,5550.4,0.0,66.06 -2013-09-22 18:00:00,5562.5,0.0,64.83 -2013-09-22 19:00:00,5715.4,0.0,63.77 -2013-09-22 20:00:00,5667.5,0.0,61.56 -2013-09-22 21:00:00,5484.0,0.0,60.56 -2013-09-22 22:00:00,5188.9,0.0,58.94 -2013-09-22 23:00:00,4778.8,0.0,57.79 -2013-09-23 00:00:00,4422.9,0.0,56.35 -2013-09-23 01:00:00,4242.5,0.0,55.35 -2013-09-23 02:00:00,4104.3,0.0,54.36 -2013-09-23 03:00:00,4045.2,0.0,53.52 -2013-09-23 04:00:00,4073.2,0.0,53.08 -2013-09-23 05:00:00,4320.2,0.0,52.73 -2013-09-23 06:00:00,4861.7,0.0,52.36 -2013-09-23 07:00:00,5407.6,0.0,51.73 -2013-09-23 08:00:00,5811.6,0.0,52.56 -2013-09-23 09:00:00,6082.2,0.0,54.6 -2013-09-23 10:00:00,6222.1,0.0,56.27 -2013-09-23 11:00:00,6293.1,0.0,58.48 -2013-09-23 12:00:00,6351.2,0.0,59.79 -2013-09-23 13:00:00,6408.2,0.0,62.08 -2013-09-23 14:00:00,6416.3,0.0,64.04 -2013-09-23 15:00:00,6432.5,0.0,64.62 -2013-09-23 16:00:00,6464.1,0.0,65.41 -2013-09-23 17:00:00,6424.6,0.0,65.98 -2013-09-23 18:00:00,6223.6,0.0,65.21 -2013-09-23 19:00:00,6246.0,0.0,63.56 -2013-09-23 20:00:00,6056.7,0.0,62.27 -2013-09-23 21:00:00,5757.1,0.0,59.35 -2013-09-23 22:00:00,5372.4,0.0,57.35 -2013-09-23 23:00:00,4881.5,0.0,55.94 -2013-09-24 00:00:00,4390.3,0.0,54.73 -2013-09-24 01:00:00,4141.3,0.0,53.94 -2013-09-24 02:00:00,3997.6,0.0,52.94 -2013-09-24 03:00:00,3929.1,0.0,51.59 -2013-09-24 04:00:00,3939.8,0.0,51.03 -2013-09-24 05:00:00,4153.8,0.0,50.31 -2013-09-24 06:00:00,4793.7,0.0,49.46 -2013-09-24 07:00:00,5344.4,0.0,49.29 -2013-09-24 08:00:00,5743.5,0.0,50.56 -2013-09-24 09:00:00,6010.8,0.0,51.98 -2013-09-24 10:00:00,6129.6,0.0,54.48 -2013-09-24 11:00:00,6236.8,0.0,57.09 -2013-09-24 12:00:00,6322.7,0.0,60.38 -2013-09-24 13:00:00,6413.9,0.0,64.21 -2013-09-24 14:00:00,6489.5,0.0,68.31 -2013-09-24 15:00:00,6559.5,0.0,70.91 -2013-09-24 16:00:00,6630.8,0.0,73.09 -2013-09-24 17:00:00,6598.5,0.0,73.5 -2013-09-24 18:00:00,6389.9,0.0,72.5 -2013-09-24 19:00:00,6377.8,0.0,70.42 -2013-09-24 20:00:00,6157.0,0.0,68.57 -2013-09-24 21:00:00,5868.2,0.0,67.15 -2013-09-24 22:00:00,5483.7,0.0,64.94 -2013-09-24 23:00:00,5026.1,0.0,63.78 -2013-09-25 00:00:00,4594.0,0.0,62.36 -2013-09-25 01:00:00,4332.5,0.0,60.22 -2013-09-25 02:00:00,4182.1,0.0,58.32 -2013-09-25 03:00:00,4050.7,0.0,57.31 -2013-09-25 04:00:00,4056.2,0.0,55.99 -2013-09-25 05:00:00,4312.2,0.0,55.94 -2013-09-25 06:00:00,4876.5,0.0,54.88 -2013-09-25 07:00:00,5434.4,0.0,53.9 -2013-09-25 08:00:00,5851.1,0.0,56.19 -2013-09-25 09:00:00,6168.9,0.0,59.56 -2013-09-25 10:00:00,6320.7,0.0,62.38 -2013-09-25 11:00:00,6448.2,0.0,63.65 -2013-09-25 12:00:00,6544.4,0.0,66.42 -2013-09-25 13:00:00,6597.8,0.0,67.92 -2013-09-25 14:00:00,6614.3,0.0,69.08 -2013-09-25 15:00:00,6659.9,0.0,71.53 -2013-09-25 16:00:00,6695.6,0.0,71.58 -2013-09-25 17:00:00,6649.9,0.0,71.41 -2013-09-25 18:00:00,6440.2,0.0,71.25 -2013-09-25 19:00:00,6441.7,0.0,69.67 -2013-09-25 20:00:00,6241.0,0.0,68.06 -2013-09-25 21:00:00,5963.2,0.0,66.32 -2013-09-25 22:00:00,5586.2,0.0,64.64 -2013-09-25 23:00:00,5127.0,0.0,63.05 -2013-09-26 00:00:00,4718.4,0.0,62.68 -2013-09-26 01:00:00,4461.4,0.0,61.02 -2013-09-26 02:00:00,4278.7,0.0,60.21 -2013-09-26 03:00:00,4162.8,0.0,59.02 -2013-09-26 04:00:00,4173.7,0.0,58.95 -2013-09-26 05:00:00,4452.8,0.0,59.0 -2013-09-26 06:00:00,5034.9,0.0,58.77 -2013-09-26 07:00:00,5620.9,0.0,58.54 -2013-09-26 08:00:00,6042.9,0.0,60.17 -2013-09-26 09:00:00,6341.6,0.0,62.46 -2013-09-26 10:00:00,6513.8,0.0,64.29 -2013-09-26 11:00:00,6651.4,0.0,65.88 -2013-09-26 12:00:00,6677.9,0.0,67.15 -2013-09-26 13:00:00,6668.5,0.0,66.52 -2013-09-26 14:00:00,6664.2,0.0,67.24 -2013-09-26 15:00:00,6694.2,0.0,67.99 -2013-09-26 16:00:00,6705.6,0.0,68.02 -2013-09-26 17:00:00,6639.5,0.0,67.88 -2013-09-26 18:00:00,6436.1,0.0,66.48 -2013-09-26 19:00:00,6435.2,0.0,64.43 -2013-09-26 20:00:00,6217.3,0.0,63.88 -2013-09-26 21:00:00,5943.9,0.0,63.54 -2013-09-26 22:00:00,5571.9,0.0,62.4 -2013-09-26 23:00:00,5127.5,0.0,61.18 -2013-09-27 00:00:00,4717.1,0.0,60.53 -2013-09-27 01:00:00,4411.0,0.0,59.88 -2013-09-27 02:00:00,4236.0,0.0,59.22 -2013-09-27 03:00:00,4153.3,0.0,58.22 -2013-09-27 04:00:00,4160.5,0.0,57.42 -2013-09-27 05:00:00,4435.2,0.0,57.82 -2013-09-27 06:00:00,4994.3,0.0,58.03 -2013-09-27 07:00:00,5525.9,0.0,57.65 -2013-09-27 08:00:00,5905.5,0.0,57.67 -2013-09-27 09:00:00,6212.4,0.0,59.25 -2013-09-27 10:00:00,6378.8,0.0,61.25 -2013-09-27 11:00:00,6503.8,0.0,62.92 -2013-09-27 12:00:00,6577.0,0.0,64.45 -2013-09-27 13:00:00,6587.6,0.0,66.71 -2013-09-27 14:00:00,6531.7,0.0,66.29 -2013-09-27 15:00:00,6510.7,0.0,65.73 -2013-09-27 16:00:00,6492.5,0.0,65.71 -2013-09-27 17:00:00,6445.0,0.0,65.27 -2013-09-27 18:00:00,6277.7,0.0,64.71 -2013-09-27 19:00:00,6213.1,0.0,64.06 -2013-09-27 20:00:00,6007.5,0.0,64.06 -2013-09-27 21:00:00,5760.7,0.0,64.06 -2013-09-27 22:00:00,5475.5,0.0,63.73 -2013-09-27 23:00:00,5095.3,0.0,63.13 -2013-09-28 00:00:00,4721.8,0.0,62.88 -2013-09-28 01:00:00,4470.4,0.0,62.23 -2013-09-28 02:00:00,4295.4,0.0,61.46 -2013-09-28 03:00:00,4194.6,0.0,60.62 -2013-09-28 04:00:00,4156.4,0.0,59.85 -2013-09-28 05:00:00,4192.5,0.0,59.03 -2013-09-28 06:00:00,4325.0,0.0,58.42 -2013-09-28 07:00:00,4549.4,0.0,58.03 -2013-09-28 08:00:00,4921.5,0.0,58.79 -2013-09-28 09:00:00,5238.6,0.0,61.84 -2013-09-28 10:00:00,5501.2,0.0,64.27 -2013-09-28 11:00:00,5644.0,0.0,66.92 -2013-09-28 12:00:00,5718.3,0.0,69.08 -2013-09-28 13:00:00,5727.1,0.0,70.5 -2013-09-28 14:00:00,5723.8,0.0,71.48 -2013-09-28 15:00:00,5713.1,0.0,72.01 -2013-09-28 16:00:00,5698.5,0.0,72.33 -2013-09-28 17:00:00,5675.1,0.0,71.32 -2013-09-28 18:00:00,5692.5,0.0,71.37 -2013-09-28 19:00:00,5803.3,0.0,68.25 -2013-09-28 20:00:00,5689.9,0.0,66.03 -2013-09-28 21:00:00,5540.5,0.0,65.26 -2013-09-28 22:00:00,5334.6,0.0,65.24 -2013-09-28 23:00:00,5046.8,0.0,64.87 -2013-09-29 00:00:00,4717.1,0.0,63.49 -2013-09-29 01:00:00,4490.5,0.0,62.07 -2013-09-29 02:00:00,4323.4,0.0,61.29 -2013-09-29 03:00:00,4211.9,0.0,60.66 -2013-09-29 04:00:00,4155.6,0.0,59.87 -2013-09-29 05:00:00,4163.7,0.0,59.24 -2013-09-29 06:00:00,4244.0,0.0,58.66 -2013-09-29 07:00:00,4380.3,0.0,58.83 -2013-09-29 08:00:00,4683.0,0.0,59.84 -2013-09-29 09:00:00,4977.0,0.0,62.61 -2013-09-29 10:00:00,5249.3,0.0,65.64 -2013-09-29 11:00:00,5419.2,0.0,66.04 -2013-09-29 12:00:00,5535.1,0.0,67.08 -2013-09-29 13:00:00,5562.6,0.0,68.11 -2013-09-29 14:00:00,5574.6,0.0,69.25 -2013-09-29 15:00:00,5584.1,0.0,69.29 -2013-09-29 16:00:00,5596.4,0.0,69.11 -2013-09-29 17:00:00,5593.2,0.0,69.6 -2013-09-29 18:00:00,5635.8,0.0,67.52 -2013-09-29 19:00:00,5793.4,0.0,64.43 -2013-09-29 20:00:00,5700.1,0.0,63.06 -2013-09-29 21:00:00,5512.8,0.0,62.43 -2013-09-29 22:00:00,5250.3,0.0,61.26 -2013-09-29 23:00:00,4905.2,0.0,60.31 -2013-09-30 00:00:00,4576.8,0.0,59.91 -2013-09-30 01:00:00,4349.2,0.0,59.31 -2013-09-30 02:00:00,4190.8,0.0,58.45 -2013-09-30 03:00:00,4129.7,0.0,58.01 -2013-09-30 04:00:00,4163.2,0.0,58.41 -2013-09-30 05:00:00,4425.3,0.0,57.43 -2013-09-30 06:00:00,5006.5,0.0,57.18 -2013-09-30 07:00:00,5577.8,0.0,57.15 -2013-09-30 08:00:00,5998.2,0.0,58.61 -2013-09-30 09:00:00,6342.6,0.0,61.33 -2013-09-30 10:00:00,6545.3,0.0,63.58 -2013-09-30 11:00:00,6652.6,0.0,65.25 -2013-09-30 12:00:00,6727.8,0.0,67.91 -2013-09-30 13:00:00,6795.5,0.0,69.54 -2013-09-30 14:00:00,6810.0,0.0,70.86 -2013-09-30 15:00:00,6837.1,0.0,72.85 -2013-09-30 16:00:00,6872.1,0.0,71.18 -2013-09-30 17:00:00,6778.7,0.0,71.45 -2013-09-30 18:00:00,6562.8,0.0,69.02 -2013-09-30 19:00:00,6544.6,0.0,66.98 -2013-09-30 20:00:00,6303.0,0.0,65.85 -2013-09-30 21:00:00,6014.1,0.0,64.42 -2013-09-30 22:00:00,5626.4,0.0,64.4 -2013-09-30 23:00:00,5130.5,0.0,63.98 -2013-10-01 00:00:00,4714.7,0.0,63.12 -2013-10-01 01:00:00,4447.6,0.0,61.92 -2013-10-01 02:00:00,4283.8,0.0,60.42 -2013-10-01 03:00:00,4203.2,0.0,60.82 -2013-10-01 04:00:00,4229.1,0.0,60.61 -2013-10-01 05:00:00,4492.1,0.0,60.0 -2013-10-01 06:00:00,5106.5,0.0,59.61 -2013-10-01 07:00:00,5700.5,0.0,59.82 -2013-10-01 08:00:00,6153.8,0.0,61.09 -2013-10-01 09:00:00,6519.3,0.0,64.54 -2013-10-01 10:00:00,6729.7,0.0,67.97 -2013-10-01 11:00:00,6892.8,0.0,70.46 -2013-10-01 12:00:00,7051.9,0.0,73.9 -2013-10-01 13:00:00,7168.0,0.0,75.84 -2013-10-01 14:00:00,7248.5,0.0,77.24 -2013-10-01 15:00:00,7332.5,0.0,79.64 -2013-10-01 16:00:00,7386.9,0.0,80.08 -2013-10-01 17:00:00,7304.4,0.0,80.14 -2013-10-01 18:00:00,7055.6,0.0,77.33 -2013-10-01 19:00:00,7035.3,0.0,75.8 -2013-10-01 20:00:00,6796.5,0.0,74.79 -2013-10-01 21:00:00,6510.6,0.0,71.06 -2013-10-01 22:00:00,6086.4,0.0,68.0 -2013-10-01 23:00:00,5586.5,0.0,69.92 -2013-10-02 00:00:00,5143.8,0.0,69.29 -2013-10-02 01:00:00,4848.0,0.0,67.27 -2013-10-02 02:00:00,4668.2,0.0,65.81 -2013-10-02 03:00:00,4565.8,0.0,65.04 -2013-10-02 04:00:00,4569.4,0.0,64.6 -2013-10-02 05:00:00,4809.2,0.0,63.37 -2013-10-02 06:00:00,5430.6,0.0,63.1 -2013-10-02 07:00:00,6037.3,0.0,62.0 -2013-10-02 08:00:00,6529.6,0.0,63.59 -2013-10-02 09:00:00,6927.6,0.0,69.28 -2013-10-02 10:00:00,7167.9,0.0,71.34 -2013-10-02 11:00:00,7361.9,0.0,73.67 -2013-10-02 12:00:00,7521.3,0.0,76.32 -2013-10-02 13:00:00,7664.8,0.0,77.45 -2013-10-02 14:00:00,7764.9,0.0,80.24 -2013-10-02 15:00:00,7892.9,0.0,82.02 -2013-10-02 16:00:00,7981.0,0.0,82.86 -2013-10-02 17:00:00,7917.7,0.0,82.65 -2013-10-02 18:00:00,7648.2,0.0,81.63 -2013-10-02 19:00:00,7595.2,0.0,78.71 -2013-10-02 20:00:00,7366.4,0.0,78.69 -2013-10-02 21:00:00,7037.3,0.0,76.3 -2013-10-02 22:00:00,6588.5,0.0,74.93 -2013-10-02 23:00:00,6080.5,0.0,73.88 -2013-10-03 00:00:00,5608.2,0.0,72.29 -2013-10-03 01:00:00,5243.5,0.0,71.55 -2013-10-03 02:00:00,5029.9,0.0,70.82 -2013-10-03 03:00:00,4896.6,0.0,68.8 -2013-10-03 04:00:00,4866.4,0.0,67.91 -2013-10-03 05:00:00,5039.5,0.0,66.48 -2013-10-03 06:00:00,5673.8,0.0,64.7 -2013-10-03 07:00:00,6255.8,0.0,63.87 -2013-10-03 08:00:00,6718.3,0.0,65.68 -2013-10-03 09:00:00,7106.6,0.0,68.24 -2013-10-03 10:00:00,7294.1,0.0,70.23 -2013-10-03 11:00:00,7429.5,0.0,72.02 -2013-10-03 12:00:00,7508.7,0.0,73.16 -2013-10-03 13:00:00,7556.9,0.0,75.95 -2013-10-03 14:00:00,7545.8,0.0,76.35 -2013-10-03 15:00:00,7553.5,0.0,77.16 -2013-10-03 16:00:00,7513.6,0.0,77.44 -2013-10-03 17:00:00,7395.2,0.0,75.67 -2013-10-03 18:00:00,7201.3,0.0,73.21 -2013-10-03 19:00:00,7135.3,0.0,71.43 -2013-10-03 20:00:00,6872.0,0.0,71.46 -2013-10-03 21:00:00,6584.7,0.0,70.6 -2013-10-03 22:00:00,6196.5,0.0,70.17 -2013-10-03 23:00:00,5712.5,0.0,69.57 -2013-10-04 00:00:00,5286.3,0.0,69.01 -2013-10-04 01:00:00,5014.3,0.0,68.8 -2013-10-04 02:00:00,4837.6,0.0,68.03 -2013-10-04 03:00:00,4748.7,0.0,67.16 -2013-10-04 04:00:00,4764.8,0.0,66.61 -2013-10-04 05:00:00,5018.0,0.0,66.61 -2013-10-04 06:00:00,5686.7,0.0,66.22 -2013-10-04 07:00:00,6317.7,0.0,65.95 -2013-10-04 08:00:00,6787.1,0.0,67.01 -2013-10-04 09:00:00,7232.5,0.0,70.11 -2013-10-04 10:00:00,7514.9,0.0,73.21 -2013-10-04 11:00:00,7745.2,0.0,76.6 -2013-10-04 12:00:00,7983.6,0.0,79.85 -2013-10-04 13:00:00,8158.3,0.0,81.53 -2013-10-04 14:00:00,8240.6,0.0,83.11 -2013-10-04 15:00:00,8320.8,0.0,83.12 -2013-10-04 16:00:00,8295.8,0.0,82.59 -2013-10-04 17:00:00,8102.0,0.0,80.82 -2013-10-04 18:00:00,7834.3,0.0035,79.51 -2013-10-04 19:00:00,7705.5,0.0196,76.09 -2013-10-04 20:00:00,7425.4,0.0,75.07 -2013-10-04 21:00:00,7129.7,0.0,74.38 -2013-10-04 22:00:00,6738.9,0.0,71.75 -2013-10-04 23:00:00,6263.0,0.0,70.37 -2013-10-05 00:00:00,5789.4,0.0,69.33 -2013-10-05 01:00:00,5429.9,0.0,68.17 -2013-10-05 02:00:00,5180.1,0.0,67.1 -2013-10-05 03:00:00,5045.6,0.0,66.5 -2013-10-05 04:00:00,4970.3,0.0,65.87 -2013-10-05 05:00:00,4984.6,0.0,65.65 -2013-10-05 06:00:00,5157.9,0.0,65.04 -2013-10-05 07:00:00,5363.8,0.0,64.87 -2013-10-05 08:00:00,5679.7,0.0,65.43 -2013-10-05 09:00:00,5959.2,0.0,65.25 -2013-10-05 10:00:00,6171.6,0.0,65.25 -2013-10-05 11:00:00,6317.5,0.0,67.08 -2013-10-05 12:00:00,6412.9,0.0,68.29 -2013-10-05 13:00:00,6475.2,0.0,69.71 -2013-10-05 14:00:00,6546.7,0.0,71.34 -2013-10-05 15:00:00,6593.2,0.0,73.14 -2013-10-05 16:00:00,6591.4,0.0,73.28 -2013-10-05 17:00:00,6532.9,0.0,73.0 -2013-10-05 18:00:00,6514.7,0.0,72.62 -2013-10-05 19:00:00,6542.7,0.0,69.83 -2013-10-05 20:00:00,6401.2,0.0,68.46 -2013-10-05 21:00:00,6217.5,0.0,67.41 -2013-10-05 22:00:00,5978.4,0.0,67.25 -2013-10-05 23:00:00,5670.2,0.0,67.04 -2013-10-06 00:00:00,5351.3,0.0,66.41 -2013-10-06 01:00:00,5080.2,0.0,65.45 -2013-10-06 02:00:00,4880.7,0.0,65.64 -2013-10-06 03:00:00,4770.0,0.0,65.64 -2013-10-06 04:00:00,4707.0,0.0,65.64 -2013-10-06 05:00:00,4715.4,0.0,65.64 -2013-10-06 06:00:00,4819.8,0.0065,65.24 -2013-10-06 07:00:00,4981.8,0.0,65.64 -2013-10-06 08:00:00,5265.4,0.0,65.24 -2013-10-06 09:00:00,5585.3,0.0,65.65 -2013-10-06 10:00:00,5836.2,0.0,67.07 -2013-10-06 11:00:00,5991.2,0.0,67.27 -2013-10-06 12:00:00,6078.5,0.0,67.85 -2013-10-06 13:00:00,6110.9,0.0,68.27 -2013-10-06 14:00:00,6106.2,0.0,68.03 -2013-10-06 15:00:00,6100.3,0.0,68.11 -2013-10-06 16:00:00,6116.4,0.0,68.34 -2013-10-06 17:00:00,6174.6,0.0,68.29 -2013-10-06 18:00:00,6312.8,0.0,68.5 -2013-10-06 19:00:00,6405.0,0.0,68.9 -2013-10-06 20:00:00,6309.6,0.0,69.06 -2013-10-06 21:00:00,6148.9,0.0,69.46 -2013-10-06 22:00:00,5901.3,0.0,69.64 -2013-10-06 23:00:00,5548.4,0.0,69.64 -2013-10-07 00:00:00,5227.2,0.0,69.64 -2013-10-07 01:00:00,4995.7,0.0,69.43 -2013-10-07 02:00:00,4836.3,0.0,69.37 -2013-10-07 03:00:00,4775.5,0.0,69.77 -2013-10-07 04:00:00,4829.2,0.0,69.61 -2013-10-07 05:00:00,5148.5,0.0,69.37 -2013-10-07 06:00:00,5870.7,0.0,69.58 -2013-10-07 07:00:00,6554.3,0.0,69.79 -2013-10-07 08:00:00,7045.5,0.0,71.2 -2013-10-07 09:00:00,7411.2,0.0,71.41 -2013-10-07 10:00:00,7576.9,0.0,74.21 -2013-10-07 11:00:00,7639.2,0.0069,73.34 -2013-10-07 12:00:00,7681.4,0.0,73.04 -2013-10-07 13:00:00,7719.3,0.0173,73.08 -2013-10-07 14:00:00,7739.0,0.0,74.69 -2013-10-07 15:00:00,7792.0,0.0,74.92 -2013-10-07 16:00:00,7618.4,0.0208,70.56 -2013-10-07 17:00:00,7500.5,0.0777,66.58 -2013-10-07 18:00:00,7182.2,0.0035,65.09 -2013-10-07 19:00:00,6899.3,0.0,64.16 -2013-10-07 20:00:00,6578.8,0.0,63.93 -2013-10-07 21:00:00,6238.7,0.0,63.16 -2013-10-07 22:00:00,5818.1,0.0,62.94 -2013-10-07 23:00:00,5296.0,0.0,62.56 -2013-10-08 00:00:00,4834.6,0.0,61.94 -2013-10-08 01:00:00,4539.8,0.0,61.35 -2013-10-08 02:00:00,4367.7,0.0,60.57 -2013-10-08 03:00:00,4272.7,0.0,58.92 -2013-10-08 04:00:00,4271.0,0.0,58.73 -2013-10-08 05:00:00,4496.5,0.0,56.88 -2013-10-08 06:00:00,5062.1,0.0,56.52 -2013-10-08 07:00:00,5610.0,0.0,55.73 -2013-10-08 08:00:00,5997.9,0.0,55.94 -2013-10-08 09:00:00,6270.4,0.0,58.93 -2013-10-08 10:00:00,6374.6,0.0,60.21 -2013-10-08 11:00:00,6447.8,0.0,61.64 -2013-10-08 12:00:00,6509.7,0.0,62.85 -2013-10-08 13:00:00,6548.6,0.0,64.85 -2013-10-08 14:00:00,6563.1,0.0,65.89 -2013-10-08 15:00:00,6579.8,0.0,66.85 -2013-10-08 16:00:00,6575.8,0.0,66.87 -2013-10-08 17:00:00,6521.6,0.0,65.25 -2013-10-08 18:00:00,6429.6,0.0,64.65 -2013-10-08 19:00:00,6373.5,0.0,63.67 -2013-10-08 20:00:00,6127.1,0.0,63.02 -2013-10-08 21:00:00,5837.0,0.0,62.25 -2013-10-08 22:00:00,5452.9,0.0,60.88 -2013-10-08 23:00:00,4991.6,0.0,60.03 -2013-10-09 00:00:00,4581.0,0.0,59.66 -2013-10-09 01:00:00,4321.4,0.0,58.82 -2013-10-09 02:00:00,4174.1,0.0,57.98 -2013-10-09 03:00:00,4102.2,0.0,58.22 -2013-10-09 04:00:00,4101.5,0.0,57.38 -2013-10-09 05:00:00,4328.3,0.0,56.03 -2013-10-09 06:00:00,4927.4,0.0,55.43 -2013-10-09 07:00:00,5487.5,0.0,55.36 -2013-10-09 08:00:00,5881.1,0.0,54.77 -2013-10-09 09:00:00,6131.5,0.0,56.98 -2013-10-09 10:00:00,6218.8,0.0,58.03 -2013-10-09 11:00:00,6261.5,0.0,58.84 -2013-10-09 12:00:00,6293.4,0.0,59.9 -2013-10-09 13:00:00,6318.7,0.0,60.65 -2013-10-09 14:00:00,6311.7,0.0,62.21 -2013-10-09 15:00:00,6328.4,0.0,62.69 -2013-10-09 16:00:00,6342.8,0.0,62.29 -2013-10-09 17:00:00,6333.2,0.0,62.46 -2013-10-09 18:00:00,6299.6,0.0,61.69 -2013-10-09 19:00:00,6244.3,0.0,60.69 -2013-10-09 20:00:00,6022.6,0.0,60.53 -2013-10-09 21:00:00,5759.9,0.0,59.69 -2013-10-09 22:00:00,5378.5,0.0,59.13 -2013-10-09 23:00:00,4921.5,0.0,57.92 -2013-10-10 00:00:00,4508.4,0.0,57.76 -2013-10-10 01:00:00,4261.3,0.0,57.03 -2013-10-10 02:00:00,4110.4,0.0,56.44 -2013-10-10 03:00:00,4048.2,0.0,56.63 -2013-10-10 04:00:00,4051.1,0.0,55.6 -2013-10-10 05:00:00,4290.5,0.0,55.79 -2013-10-10 06:00:00,4891.3,0.0,55.39 -2013-10-10 07:00:00,5494.7,0.0,55.0 -2013-10-10 08:00:00,5892.3,0.0,55.21 -2013-10-10 09:00:00,6139.4,0.0,56.19 -2013-10-10 10:00:00,6255.9,0.0,57.63 -2013-10-10 11:00:00,6304.2,0.0,58.0 -2013-10-10 12:00:00,6330.4,0.0,59.06 -2013-10-10 13:00:00,6347.0,0.0,60.64 -2013-10-10 14:00:00,6335.2,0.0,61.84 -2013-10-10 15:00:00,6379.0,0.0,63.04 -2013-10-10 16:00:00,6439.4,0.0,63.83 -2013-10-10 17:00:00,6462.5,0.0,64.63 -2013-10-10 18:00:00,6406.9,0.0,64.63 -2013-10-10 19:00:00,6324.8,0.0,64.26 -2013-10-10 20:00:00,6090.7,0.0,63.63 -2013-10-10 21:00:00,5814.0,0.0,62.63 -2013-10-10 22:00:00,5431.5,0.0,62.84 -2013-10-10 23:00:00,5000.0,0.0,62.44 -2013-10-11 00:00:00,4588.5,0.0,62.06 -2013-10-11 01:00:00,4326.4,0.0,61.83 -2013-10-11 02:00:00,4179.9,0.0,61.44 -2013-10-11 03:00:00,4110.5,0.0,61.21 -2013-10-11 04:00:00,4112.9,0.0,61.21 -2013-10-11 05:00:00,4347.0,0.0,61.06 -2013-10-11 06:00:00,4949.1,0.0,61.0 -2013-10-11 07:00:00,5561.9,0.0,61.84 -2013-10-11 08:00:00,5993.9,0.0,62.46 -2013-10-11 09:00:00,6284.6,0.0,63.47 -2013-10-11 10:00:00,6423.2,0.0,64.3 -2013-10-11 11:00:00,6497.4,0.0,64.27 -2013-10-11 12:00:00,6521.8,0.0,65.06 -2013-10-11 13:00:00,6528.2,0.0,65.48 -2013-10-11 14:00:00,6512.9,0.0,66.27 -2013-10-11 15:00:00,6521.2,0.0,67.83 -2013-10-11 16:00:00,6529.7,0.0,67.85 -2013-10-11 17:00:00,6492.6,0.0,68.27 -2013-10-11 18:00:00,6428.4,0.0,68.67 -2013-10-11 19:00:00,6305.0,0.0,68.27 -2013-10-11 20:00:00,6066.7,0.0,68.06 -2013-10-11 21:00:00,5825.0,0.0,68.06 -2013-10-11 22:00:00,5510.0,0.0,67.43 -2013-10-11 23:00:00,5118.4,0.0,67.06 -2013-10-12 00:00:00,4724.4,0.0,66.29 -2013-10-12 01:00:00,4453.8,0.0,65.65 -2013-10-12 02:00:00,4290.5,0.0,64.5 -2013-10-12 03:00:00,4199.7,0.0,63.65 -2013-10-12 04:00:00,4132.3,0.0,63.06 -2013-10-12 05:00:00,4158.5,0.0,62.06 -2013-10-12 06:00:00,4310.3,0.0,62.06 -2013-10-12 07:00:00,4496.8,0.0,61.44 -2013-10-12 08:00:00,4808.2,0.0,61.0 -2013-10-12 09:00:00,5114.7,0.0,63.46 -2013-10-12 10:00:00,5329.3,0.0,63.87 -2013-10-12 11:00:00,5449.9,0.0,65.52 -2013-10-12 12:00:00,5519.7,0.0,66.74 -2013-10-12 13:00:00,5521.0,0.0,68.01 -2013-10-12 14:00:00,5497.3,0.0,69.29 -2013-10-12 15:00:00,5491.8,0.0,72.27 -2013-10-12 16:00:00,5492.2,0.0,72.11 -2013-10-12 17:00:00,5485.3,0.0,71.44 -2013-10-12 18:00:00,5580.9,0.0,68.92 -2013-10-12 19:00:00,5640.0,0.0,66.29 -2013-10-12 20:00:00,5542.6,0.0,64.87 -2013-10-12 21:00:00,5420.6,0.0,64.27 -2013-10-12 22:00:00,5180.3,0.0,63.29 -2013-10-12 23:00:00,4899.2,0.0,62.5 -2013-10-13 00:00:00,4615.1,0.0,62.06 -2013-10-13 01:00:00,4372.8,0.0,61.29 -2013-10-13 02:00:00,4202.7,0.0,60.5 -2013-10-13 03:00:00,4100.7,0.0,59.5 -2013-10-13 04:00:00,4041.0,0.0,58.84 -2013-10-13 05:00:00,4054.2,0.0,57.67 -2013-10-13 06:00:00,4150.8,0.0,57.84 -2013-10-13 07:00:00,4261.6,0.0,57.23 -2013-10-13 08:00:00,4525.4,0.0,57.23 -2013-10-13 09:00:00,4795.8,0.0,58.06 -2013-10-13 10:00:00,5005.1,0.0,58.6 -2013-10-13 11:00:00,5148.5,0.0,60.23 -2013-10-13 12:00:00,5239.5,0.0,61.44 -2013-10-13 13:00:00,5269.7,0.0,63.24 -2013-10-13 14:00:00,5277.4,0.0,63.04 -2013-10-13 15:00:00,5275.9,0.0,63.88 -2013-10-13 16:00:00,5276.8,0.0,63.94 -2013-10-13 17:00:00,5290.4,0.0,63.29 -2013-10-13 18:00:00,5445.8,0.0,62.7 -2013-10-13 19:00:00,5529.3,0.0,60.13 -2013-10-13 20:00:00,5436.5,0.0,59.13 -2013-10-13 21:00:00,5292.4,0.0,57.73 -2013-10-13 22:00:00,5061.2,0.0,57.74 -2013-10-13 23:00:00,4752.4,0.0,57.34 -2013-10-14 00:00:00,4437.8,0.0,57.13 -2013-10-14 01:00:00,4213.6,0.0,56.18 -2013-10-14 02:00:00,4076.3,0.0,54.92 -2013-10-14 03:00:00,4014.9,0.0,54.36 -2013-10-14 04:00:00,4021.1,0.0,53.7 -2013-10-14 05:00:00,4193.4,0.0,53.36 -2013-10-14 06:00:00,4589.5,0.0,53.36 -2013-10-14 07:00:00,5004.4,0.0,53.76 -2013-10-14 08:00:00,5436.0,0.0,54.99 -2013-10-14 09:00:00,5736.3,0.0,57.44 -2013-10-14 10:00:00,5895.5,0.0,58.13 -2013-10-14 11:00:00,5992.4,0.0,59.48 -2013-10-14 12:00:00,6051.2,0.0,60.69 -2013-10-14 13:00:00,6088.6,0.0,61.31 -2013-10-14 14:00:00,6102.1,0.0,62.92 -2013-10-14 15:00:00,6115.9,0.0,64.89 -2013-10-14 16:00:00,6141.0,0.0,64.22 -2013-10-14 17:00:00,6151.7,0.0,64.46 -2013-10-14 18:00:00,6139.8,0.0,62.25 -2013-10-14 19:00:00,6109.8,0.0,60.91 -2013-10-14 20:00:00,5904.4,0.0,59.06 -2013-10-14 21:00:00,5661.8,0.0,58.9 -2013-10-14 22:00:00,5328.8,0.0,57.92 -2013-10-14 23:00:00,4894.5,0.0,57.7 -2013-10-15 00:00:00,4517.8,0.0,57.49 -2013-10-15 01:00:00,4273.6,0.0,55.88 -2013-10-15 02:00:00,4123.6,0.0,56.09 -2013-10-15 03:00:00,4058.9,0.0,55.66 -2013-10-15 04:00:00,4073.8,0.0,55.66 -2013-10-15 05:00:00,4298.6,0.0,55.99 -2013-10-15 06:00:00,4886.4,0.0,55.24 -2013-10-15 07:00:00,5463.0,0.0,55.45 -2013-10-15 08:00:00,5829.3,0.0,55.89 -2013-10-15 09:00:00,6143.1,0.0,57.99 -2013-10-15 10:00:00,6305.1,0.0,60.18 -2013-10-15 11:00:00,6422.9,0.0,63.6 -2013-10-15 12:00:00,6502.3,0.0,64.89 -2013-10-15 13:00:00,6572.3,0.0,65.89 -2013-10-15 14:00:00,6587.9,0.0,66.9 -2013-10-15 15:00:00,6603.1,0.0,68.19 -2013-10-15 16:00:00,6630.0,0.0,68.82 -2013-10-15 17:00:00,6563.8,0.0,68.76 -2013-10-15 18:00:00,6449.3,0.0,65.79 -2013-10-15 19:00:00,6324.1,0.0,64.27 -2013-10-15 20:00:00,6069.1,0.0,62.14 -2013-10-15 21:00:00,5780.9,0.0,60.95 -2013-10-15 22:00:00,5390.7,0.0,59.18 -2013-10-15 23:00:00,4924.7,0.0,57.97 -2013-10-16 00:00:00,4527.0,0.0,57.57 -2013-10-16 01:00:00,4268.9,0.0,57.72 -2013-10-16 02:00:00,4138.1,0.0,57.49 -2013-10-16 03:00:00,4074.2,0.0,57.49 -2013-10-16 04:00:00,4090.0,0.0,57.49 -2013-10-16 05:00:00,4331.6,0.0,57.32 -2013-10-16 06:00:00,4935.3,0.0,57.42 -2013-10-16 07:00:00,5547.9,0.0,57.48 -2013-10-16 08:00:00,5939.6,0.0,57.85 -2013-10-16 09:00:00,6197.2,0.0,59.25 -2013-10-16 10:00:00,6326.7,0.0,60.21 -2013-10-16 11:00:00,6394.6,0.0,61.71 -2013-10-16 12:00:00,6470.0,0.0,62.83 -2013-10-16 13:00:00,6505.0,0.0,65.58 -2013-10-16 14:00:00,6490.9,0.0,64.58 -2013-10-16 15:00:00,6518.3,0.0,66.83 -2013-10-16 16:00:00,6553.3,0.0,64.31 -2013-10-16 17:00:00,6546.4,0.0,65.12 -2013-10-16 18:00:00,6486.5,0.0,63.88 -2013-10-16 19:00:00,6385.8,0.0,63.04 -2013-10-16 20:00:00,6146.2,0.0,62.43 -2013-10-16 21:00:00,5870.5,0.0,62.43 -2013-10-16 22:00:00,5490.2,0.0,62.81 -2013-10-16 23:00:00,5032.1,0.0,62.02 -2013-10-17 00:00:00,4624.1,0.0,61.58 -2013-10-17 01:00:00,4371.6,0.0,61.58 -2013-10-17 02:00:00,4224.9,0.0,61.98 -2013-10-17 03:00:00,4164.8,0.0,62.21 -2013-10-17 04:00:00,4183.0,0.0,62.61 -2013-10-17 05:00:00,4444.1,0.0,62.2 -2013-10-17 06:00:00,5075.1,0.0,62.21 -2013-10-17 07:00:00,5726.2,0.0,62.21 -2013-10-17 08:00:00,6177.6,0.0,62.43 -2013-10-17 09:00:00,6469.9,0.0,63.64 -2013-10-17 10:00:00,6604.2,0.0,65.45 -2013-10-17 11:00:00,6682.1,0.0,66.02 -2013-10-17 12:00:00,6739.5,0.0,68.64 -2013-10-17 13:00:00,6802.9,0.0,68.86 -2013-10-17 14:00:00,6849.2,0.0,71.08 -2013-10-17 15:00:00,6889.0,0.0,72.02 -2013-10-17 16:00:00,6885.9,0.0,71.64 -2013-10-17 17:00:00,6829.0,0.0,69.64 -2013-10-17 18:00:00,6721.8,0.0,67.68 -2013-10-17 19:00:00,6589.9,0.0,65.45 -2013-10-17 20:00:00,6318.5,0.0,65.29 -2013-10-17 21:00:00,6036.1,0.0035,65.21 -2013-10-17 22:00:00,5664.7,0.01,65.43 -2013-10-17 23:00:00,5215.3,0.0,65.43 -2013-10-18 00:00:00,4813.3,0.0035,65.44 -2013-10-18 01:00:00,4556.7,0.0035,66.06 -2013-10-18 02:00:00,4376.6,0.0,67.06 -2013-10-18 03:00:00,4251.9,0.0,66.7 -2013-10-18 04:00:00,4222.6,0.0,64.54 -2013-10-18 05:00:00,4439.4,0.0,61.93 -2013-10-18 06:00:00,4980.7,0.0,60.56 -2013-10-18 07:00:00,5518.7,0.0,59.96 -2013-10-18 08:00:00,5903.6,0.0,58.16 -2013-10-18 09:00:00,6194.6,0.0,58.98 -2013-10-18 10:00:00,6310.5,0.0,60.41 -2013-10-18 11:00:00,6398.6,0.0,62.25 -2013-10-18 12:00:00,6451.1,0.0,63.69 -2013-10-18 13:00:00,6482.2,0.0,65.85 -2013-10-18 14:00:00,6478.0,0.0,67.08 -2013-10-18 15:00:00,6482.5,0.0,67.86 -2013-10-18 16:00:00,6469.8,0.0,67.83 -2013-10-18 17:00:00,6414.2,0.0,67.04 -2013-10-18 18:00:00,6293.3,0.0,65.77 -2013-10-18 19:00:00,6166.5,0.0,64.35 -2013-10-18 20:00:00,5910.9,0.0,62.71 -2013-10-18 21:00:00,5663.6,0.0,61.56 -2013-10-18 22:00:00,5338.5,0.0,60.5 -2013-10-18 23:00:00,4957.4,0.0,58.9 -2013-10-19 00:00:00,4591.0,0.0,58.06 -2013-10-19 01:00:00,4336.5,0.0,56.85 -2013-10-19 02:00:00,4168.8,0.0,56.49 -2013-10-19 03:00:00,4074.3,0.0,54.72 -2013-10-19 04:00:00,4035.6,0.0,54.34 -2013-10-19 05:00:00,4085.0,0.0,53.35 -2013-10-19 06:00:00,4259.6,0.0,52.35 -2013-10-19 07:00:00,4468.4,0.0,53.76 -2013-10-19 08:00:00,4768.1,0.0,52.97 -2013-10-19 09:00:00,5032.4,0.0,54.18 -2013-10-19 10:00:00,5241.1,0.0,56.16 -2013-10-19 11:00:00,5358.4,0.0,59.34 -2013-10-19 12:00:00,5377.8,0.0,61.6 -2013-10-19 13:00:00,5352.0,0.0,62.6 -2013-10-19 14:00:00,5335.1,0.0,63.04 -2013-10-19 15:00:00,5324.5,0.0,63.04 -2013-10-19 16:00:00,5362.3,0.0,62.43 -2013-10-19 17:00:00,5426.1,0.0,62.43 -2013-10-19 18:00:00,5586.0,0.0,61.98 -2013-10-19 19:00:00,5594.0,0.0,61.43 -2013-10-19 20:00:00,5475.9,0.0,61.21 -2013-10-19 21:00:00,5314.9,0.0,60.37 -2013-10-19 22:00:00,5109.0,0.0,60.77 -2013-10-19 23:00:00,4847.5,0.0,60.77 -2013-10-20 00:00:00,4561.2,0.0,60.37 -2013-10-20 01:00:00,4302.8,0.0,59.33 -2013-10-20 02:00:00,4128.9,0.0,58.5 -2013-10-20 03:00:00,4014.4,0.0,56.94 -2013-10-20 04:00:00,3961.3,0.0,55.71 -2013-10-20 05:00:00,3977.5,0.0,53.94 -2013-10-20 06:00:00,4087.8,0.0,52.73 -2013-10-20 07:00:00,4214.8,0.0,51.5 -2013-10-20 08:00:00,4463.6,0.0,50.73 -2013-10-20 09:00:00,4721.4,0.0,52.98 -2013-10-20 10:00:00,4932.2,0.0,54.41 -2013-10-20 11:00:00,5052.7,0.0,56.41 -2013-10-20 12:00:00,5132.2,0.0,58.25 -2013-10-20 13:00:00,5156.8,0.0,60.25 -2013-10-20 14:00:00,5159.7,0.0,61.65 -2013-10-20 15:00:00,5160.3,0.0,62.65 -2013-10-20 16:00:00,5182.8,0.0,63.48 -2013-10-20 17:00:00,5248.4,0.0,63.48 -2013-10-20 18:00:00,5475.1,0.0,62.0 -2013-10-20 19:00:00,5549.8,0.0,60.35 -2013-10-20 20:00:00,5469.1,0.0,59.35 -2013-10-20 21:00:00,5290.6,0.0,58.08 -2013-10-20 22:00:00,5018.2,0.0,57.69 -2013-10-20 23:00:00,4668.8,0.0,56.63 -2013-10-21 00:00:00,4347.5,0.0,55.82 -2013-10-21 01:00:00,4139.7,0.0,55.3 -2013-10-21 02:00:00,4008.7,0.0,53.27 -2013-10-21 03:00:00,3971.5,0.0,53.25 -2013-10-21 04:00:00,3993.7,0.0,52.01 -2013-10-21 05:00:00,4126.8,0.0,51.55 -2013-10-21 06:00:00,4799.1,0.0,51.26 -2013-10-21 07:00:00,5371.1,0.0,50.91 -2013-10-21 08:00:00,5737.7,0.0,50.95 -2013-10-21 09:00:00,6001.2,0.0,54.3 -2013-10-21 10:00:00,6150.1,0.0,57.61 -2013-10-21 11:00:00,6232.6,0.0,61.44 -2013-10-21 12:00:00,6272.3,0.0,63.42 -2013-10-21 13:00:00,6292.5,0.0,64.25 -2013-10-21 14:00:00,6290.8,0.0,65.64 -2013-10-21 15:00:00,6304.1,0.0,65.86 -2013-10-21 16:00:00,6318.0,0.0,66.31 -2013-10-21 17:00:00,6303.6,0.0,63.92 -2013-10-21 18:00:00,6267.3,0.0,62.43 -2013-10-21 19:00:00,6220.2,0.0,60.81 -2013-10-21 20:00:00,5983.0,0.0,60.21 -2013-10-21 21:00:00,5717.2,0.0,58.94 -2013-10-21 22:00:00,5340.9,0.0,58.79 -2013-10-21 23:00:00,4860.4,0.0,57.94 -2013-10-22 00:00:00,4464.6,0.0,57.52 -2013-10-22 01:00:00,4210.0,0.0,57.52 -2013-10-22 02:00:00,4078.0,0.0,56.69 -2013-10-22 03:00:00,4028.5,0.0,55.48 -2013-10-22 04:00:00,4048.5,0.0,55.13 -2013-10-22 05:00:00,4293.5,0.0,54.14 -2013-10-22 06:00:00,4870.9,0.0,54.38 -2013-10-22 07:00:00,5472.5,0.0,55.32 -2013-10-22 08:00:00,5838.8,0.0,54.97 -2013-10-22 09:00:00,6107.1,0.0,58.31 -2013-10-22 10:00:00,6228.7,0.0,60.7 -2013-10-22 11:00:00,6288.9,0.0,63.37 -2013-10-22 12:00:00,6348.0,0.0,63.6 -2013-10-22 13:00:00,6376.9,0.0,65.0 -2013-10-22 14:00:00,6374.1,0.0,64.57 -2013-10-22 15:00:00,6366.6,0.0,62.33 -2013-10-22 16:00:00,6381.0,0.0,62.2 -2013-10-22 17:00:00,6358.7,0.0,61.98 -2013-10-22 18:00:00,6320.3,0.0,61.0 -2013-10-22 19:00:00,6213.8,0.0,60.16 -2013-10-22 20:00:00,5984.4,0.0,58.31 -2013-10-22 21:00:00,5701.7,0.0,58.29 -2013-10-22 22:00:00,5316.7,0.0,56.9 -2013-10-22 23:00:00,4853.8,0.0,54.98 -2013-10-23 00:00:00,4445.3,0.0,53.36 -2013-10-23 01:00:00,4206.5,0.0,51.46 -2013-10-23 02:00:00,4096.4,0.0,51.17 -2013-10-23 03:00:00,4013.3,0.0,50.0 -2013-10-23 04:00:00,4029.4,0.0,49.61 -2013-10-23 05:00:00,4284.1,0.0,49.77 -2013-10-23 06:00:00,4848.0,0.0,48.8 -2013-10-23 07:00:00,5457.3,0.0,48.66 -2013-10-23 08:00:00,5813.7,0.0,49.01 -2013-10-23 09:00:00,6057.1,0.0,50.59 -2013-10-23 10:00:00,6147.6,0.0,51.25 -2013-10-23 11:00:00,6197.9,0.0,52.07 -2013-10-23 12:00:00,6192.9,0.0,53.11 -2013-10-23 13:00:00,6215.4,0.0,52.9 -2013-10-23 14:00:00,6181.1,0.0,52.11 -2013-10-23 15:00:00,6127.0,0.0,52.91 -2013-10-23 16:00:00,6156.3,0.0,54.64 -2013-10-23 17:00:00,6256.0,0.0,53.56 -2013-10-23 18:00:00,6305.2,0.0,51.77 -2013-10-23 19:00:00,6176.9,0.0,52.14 -2013-10-23 20:00:00,5978.6,0.0,51.16 -2013-10-23 21:00:00,5704.6,0.0,49.93 -2013-10-23 22:00:00,5334.5,0.0,49.0 -2013-10-23 23:00:00,4873.3,0.0,47.94 -2013-10-24 00:00:00,4466.1,0.0,46.5 -2013-10-24 01:00:00,4222.0,0.0,46.57 -2013-10-24 02:00:00,4088.3,0.0,45.96 -2013-10-24 03:00:00,4029.4,0.0,45.71 -2013-10-24 04:00:00,4066.0,0.0,44.5 -2013-10-24 05:00:00,4310.0,0.0,43.73 -2013-10-24 06:00:00,4903.0,0.0,43.31 -2013-10-24 07:00:00,5490.9,0.0,42.73 -2013-10-24 08:00:00,5848.3,0.0,42.94 -2013-10-24 09:00:00,6080.9,0.0,44.6 -2013-10-24 10:00:00,6182.6,0.0,47.64 -2013-10-24 11:00:00,6226.3,0.0,49.25 -2013-10-24 12:00:00,6231.3,0.0,50.81 -2013-10-24 13:00:00,6238.5,0.0,51.46 -2013-10-24 14:00:00,6205.1,0.0,52.67 -2013-10-24 15:00:00,6207.1,0.0,53.88 -2013-10-24 16:00:00,6236.0,0.0,53.85 -2013-10-24 17:00:00,6283.5,0.0,52.84 -2013-10-24 18:00:00,6313.3,0.0,52.0 -2013-10-24 19:00:00,6238.4,0.0,50.73 -2013-10-24 20:00:00,6020.1,0.0,49.56 -2013-10-24 21:00:00,5779.1,0.0,47.94 -2013-10-24 22:00:00,5425.7,0.0,46.94 -2013-10-24 23:00:00,4975.3,0.0,46.94 -2013-10-25 00:00:00,4573.6,0.0,45.5 -2013-10-25 01:00:00,4335.6,0.0,44.73 -2013-10-25 02:00:00,4184.6,0.0,44.1 -2013-10-25 03:00:00,4123.0,0.0,43.29 -2013-10-25 04:00:00,4149.4,0.0,41.65 -2013-10-25 05:00:00,4393.6,0.0,41.0 -2013-10-25 06:00:00,4982.5,0.0,41.19 -2013-10-25 07:00:00,5556.4,0.0,41.85 -2013-10-25 08:00:00,5913.7,0.0,41.71 -2013-10-25 09:00:00,6130.0,0.0,44.14 -2013-10-25 10:00:00,6218.9,0.0,46.2 -2013-10-25 11:00:00,6261.1,0.0,48.18 -2013-10-25 12:00:00,6286.3,0.0,50.04 -2013-10-25 13:00:00,6271.3,0.0,50.62 -2013-10-25 14:00:00,6217.7,0.0,51.83 -2013-10-25 15:00:00,6206.9,0.0,52.41 -2013-10-25 16:00:00,6225.0,0.0,52.98 -2013-10-25 17:00:00,6231.4,0.0,53.44 -2013-10-25 18:00:00,6253.0,0.0,52.23 -2013-10-25 19:00:00,6146.1,0.0,52.38 -2013-10-25 20:00:00,5939.2,0.0,50.52 -2013-10-25 21:00:00,5696.1,0.0,50.35 -2013-10-25 22:00:00,5402.3,0.0,49.08 -2013-10-25 23:00:00,5033.0,0.0,48.29 -2013-10-26 00:00:00,4655.5,0.0,46.23 -2013-10-26 01:00:00,4410.0,0.0,46.26 -2013-10-26 02:00:00,4248.7,0.0,45.77 -2013-10-26 03:00:00,4163.5,0.0,44.31 -2013-10-26 04:00:00,4136.2,0.0,44.34 -2013-10-26 05:00:00,4205.6,0.0,43.0 -2013-10-26 06:00:00,4405.6,0.0,42.77 -2013-10-26 07:00:00,4632.9,0.0,42.14 -2013-10-26 08:00:00,4915.0,0.0,42.0 -2013-10-26 09:00:00,5167.9,0.0,43.62 -2013-10-26 10:00:00,5339.1,0.0,46.33 -2013-10-26 11:00:00,5421.2,0.0,49.15 -2013-10-26 12:00:00,5424.8,0.0,51.04 -2013-10-26 13:00:00,5385.5,0.0,52.88 -2013-10-26 14:00:00,5330.6,0.0,54.09 -2013-10-26 15:00:00,5298.5,0.0,55.04 -2013-10-26 16:00:00,5300.2,0.0,55.43 -2013-10-26 17:00:00,5372.5,0.0,55.43 -2013-10-26 18:00:00,5602.3,0.0,54.23 -2013-10-26 19:00:00,5617.5,0.0,54.0 -2013-10-26 20:00:00,5510.5,0.0,53.17 -2013-10-26 21:00:00,5354.1,0.0,52.12 -2013-10-26 22:00:00,5157.7,0.0,52.39 -2013-10-26 23:00:00,4880.8,0.0,52.16 -2013-10-27 00:00:00,4586.3,0.0,51.93 -2013-10-27 01:00:00,4343.0,0.0,51.94 -2013-10-27 02:00:00,4181.1,0.0,51.73 -2013-10-27 03:00:00,4084.8,0.0,50.94 -2013-10-27 04:00:00,4042.7,0.0,51.16 -2013-10-27 05:00:00,4082.5,0.0,50.08 -2013-10-27 06:00:00,4210.0,0.0,48.86 -2013-10-27 07:00:00,4350.3,0.0,48.86 -2013-10-27 08:00:00,4583.8,0.0,48.09 -2013-10-27 09:00:00,4831.8,0.0,49.58 -2013-10-27 10:00:00,5041.2,0.0,51.48 -2013-10-27 11:00:00,5166.6,0.0,53.31 -2013-10-27 12:00:00,5193.3,0.0,54.65 -2013-10-27 13:00:00,5206.6,0.0,55.69 -2013-10-27 14:00:00,5200.9,0.0,57.23 -2013-10-27 15:00:00,5195.8,0.0,58.09 -2013-10-27 16:00:00,5217.8,0.0,57.88 -2013-10-27 17:00:00,5316.0,0.0,56.83 -2013-10-27 18:00:00,5575.8,0.0,56.0 -2013-10-27 19:00:00,5624.6,0.0,54.79 -2013-10-27 20:00:00,5549.2,0.0,53.5 -2013-10-27 21:00:00,5387.0,0.0,52.5 -2013-10-27 22:00:00,5122.1,0.0,51.5 -2013-10-27 23:00:00,4762.1,0.0,50.5 -2013-10-28 00:00:00,4442.9,0.0,49.29 -2013-10-28 01:00:00,4225.9,0.0,48.08 -2013-10-28 02:00:00,4092.6,0.0,46.63 -2013-10-28 03:00:00,4036.7,0.0,46.01 -2013-10-28 04:00:00,4077.7,0.0,46.01 -2013-10-28 05:00:00,4339.1,0.0,44.04 -2013-10-28 06:00:00,4949.1,0.0,45.38 -2013-10-28 07:00:00,5525.2,0.0,44.47 -2013-10-28 08:00:00,5867.8,0.0,44.21 -2013-10-28 09:00:00,6131.1,0.0,47.86 -2013-10-28 10:00:00,6234.5,0.0,51.08 -2013-10-28 11:00:00,6276.6,0.0,53.79 -2013-10-28 12:00:00,6299.3,0.0,56.46 -2013-10-28 13:00:00,6280.9,0.0,58.92 -2013-10-28 14:00:00,6261.9,0.0,59.86 -2013-10-28 15:00:00,6265.0,0.0,60.86 -2013-10-28 16:00:00,6291.0,0.0,61.25 -2013-10-28 17:00:00,6345.3,0.0,60.81 -2013-10-28 18:00:00,6371.6,0.0,59.56 -2013-10-28 19:00:00,6266.7,0.0,58.77 -2013-10-28 20:00:00,6062.5,0.0,57.23 -2013-10-28 21:00:00,5798.4,0.0,55.79 -2013-10-28 22:00:00,5422.4,0.0,53.8 -2013-10-28 23:00:00,4958.5,0.0,53.59 -2013-10-29 00:00:00,4543.8,0.0,52.03 -2013-10-29 01:00:00,4301.0,0.0,50.03 -2013-10-29 02:00:00,4148.4,0.0,49.25 -2013-10-29 03:00:00,4075.0,0.0,49.02 -2013-10-29 04:00:00,4100.3,0.0,48.63 -2013-10-29 05:00:00,4358.6,0.0,47.83 -2013-10-29 06:00:00,4973.3,0.0,46.46 -2013-10-29 07:00:00,5569.1,0.0,45.62 -2013-10-29 08:00:00,5895.8,0.0,45.06 -2013-10-29 09:00:00,6132.4,0.0,46.04 -2013-10-29 10:00:00,6212.0,0.0,47.11 -2013-10-29 11:00:00,6238.6,0.0,49.08 -2013-10-29 12:00:00,6252.1,0.0,50.64 -2013-10-29 13:00:00,6260.4,0.0,52.85 -2013-10-29 14:00:00,6234.8,0.0,53.64 -2013-10-29 15:00:00,6220.1,0.0,54.69 -2013-10-29 16:00:00,6266.5,0.0,55.48 -2013-10-29 17:00:00,6303.8,0.0,54.73 -2013-10-29 18:00:00,6370.0,0.0,52.52 -2013-10-29 19:00:00,6254.3,0.0,51.76 -2013-10-29 20:00:00,6061.9,0.0,51.32 -2013-10-29 21:00:00,5805.6,0.0,50.07 -2013-10-29 22:00:00,5444.1,0.0,49.7 -2013-10-29 23:00:00,4972.2,0.0,48.93 -2013-10-30 00:00:00,4558.2,0.0,48.14 -2013-10-30 01:00:00,4319.3,0.0,48.08 -2013-10-30 02:00:00,4167.4,0.0,47.87 -2013-10-30 03:00:00,4103.9,0.0,47.62 -2013-10-30 04:00:00,4126.7,0.0,48.02 -2013-10-30 05:00:00,4387.0,0.0,47.62 -2013-10-30 06:00:00,4998.7,0.0,47.17 -2013-10-30 07:00:00,5594.3,0.0,47.62 -2013-10-30 08:00:00,5926.3,0.0,48.05 -2013-10-30 09:00:00,6170.5,0.0,49.82 -2013-10-30 10:00:00,6266.7,0.0,52.6 -2013-10-30 11:00:00,6293.0,0.0,54.23 -2013-10-30 12:00:00,6312.2,0.0,56.0 -2013-10-30 13:00:00,6313.8,0.0,56.6 -2013-10-30 14:00:00,6287.7,0.0,57.83 -2013-10-30 15:00:00,6306.0,0.0,58.98 -2013-10-30 16:00:00,6391.3,0.0,58.98 -2013-10-30 17:00:00,6442.2,0.0,59.41 -2013-10-30 18:00:00,6423.6,0.0,59.28 -2013-10-30 19:00:00,6278.7,0.0,57.63 -2013-10-30 20:00:00,6084.8,0.0,58.04 -2013-10-30 21:00:00,5838.5,0.0,57.24 -2013-10-30 22:00:00,5477.4,0.0,55.99 -2013-10-30 23:00:00,5027.2,0.0,55.97 -2013-10-31 00:00:00,4594.7,0.0,54.72 -2013-10-31 01:00:00,4332.8,0.0,53.57 -2013-10-31 02:00:00,4182.4,0.0,52.6 -2013-10-31 03:00:00,4111.6,0.0,53.2 -2013-10-31 04:00:00,4136.2,0.0,54.2 -2013-10-31 05:00:00,4356.1,0.0,54.57 -2013-10-31 06:00:00,4955.2,0.0,55.2 -2013-10-31 07:00:00,5612.1,0.0,55.41 -2013-10-31 08:00:00,5976.4,0.0,56.48 -2013-10-31 09:00:00,6238.5,0.0,57.61 -2013-10-31 10:00:00,6368.6,0.0,60.37 -2013-10-31 11:00:00,6441.2,0.0,62.59 -2013-10-31 12:00:00,6497.3,0.0,63.03 -2013-10-31 13:00:00,6524.1,0.0035,63.06 -2013-10-31 14:00:00,6507.6,0.0165,62.27 -2013-10-31 15:00:00,6498.8,0.0,62.64 -2013-10-31 16:00:00,6501.0,0.0,63.27 -2013-10-31 17:00:00,6527.8,0.0,63.88 -2013-10-31 18:00:00,6458.1,0.0,63.9 -2013-10-31 19:00:00,6288.7,0.0,64.31 -2013-10-31 20:00:00,6087.9,0.0,63.87 -2013-10-31 21:00:00,5808.3,0.0,63.25 -2013-10-31 22:00:00,5458.7,0.0,63.5 -2013-10-31 23:00:00,5047.7,0.0065,63.5 -2013-11-01 00:00:00,4668.1,0.0165,63.84 -2013-11-01 01:00:00,4424.1,0.0,63.44 -2013-11-01 02:00:00,4279.5,0.0,62.88 -2013-11-01 03:00:00,4213.1,0.0,64.71 -2013-11-01 04:00:00,4239.5,0.0,65.51 -2013-11-01 05:00:00,4491.2,0.0,65.95 -2013-11-01 06:00:00,5138.3,0.0035,67.58 -2013-11-01 07:00:00,5831.6,0.0,68.74 -2013-11-01 08:00:00,6229.2,0.0035,68.38 -2013-11-01 09:00:00,6546.5,0.0,68.34 -2013-11-01 10:00:00,6661.6,0.0643,66.42 -2013-11-01 11:00:00,6633.2,0.0361,64.75 -2013-11-01 12:00:00,6602.9,0.0,64.74 -2013-11-01 13:00:00,6595.7,0.0,64.74 -2013-11-01 14:00:00,6565.2,0.0,66.18 -2013-11-01 15:00:00,6567.5,0.0,68.0 -2013-11-01 16:00:00,6567.9,0.0,68.42 -2013-11-01 17:00:00,6518.4,0.0,68.79 -2013-11-01 18:00:00,6448.9,0.0,66.75 -2013-11-01 19:00:00,6292.1,0.0,65.54 -2013-11-01 20:00:00,6056.4,0.0,64.57 -2013-11-01 21:00:00,5788.3,0.0,62.94 -2013-11-01 22:00:00,5499.5,0.0,62.19 -2013-11-01 23:00:00,5116.8,0.0,60.92 -2013-11-02 00:00:00,4744.3,0.0,61.38 -2013-11-02 01:00:00,4459.0,0.0,59.78 -2013-11-02 02:00:00,4273.3,0.0,59.66 -2013-11-02 03:00:00,4171.5,0.0,58.8 -2013-11-02 04:00:00,4120.1,0.0,57.24 -2013-11-02 05:00:00,4153.9,0.0,57.07 -2013-11-02 06:00:00,4341.7,0.0,56.11 -2013-11-02 07:00:00,4571.1,0.0,55.45 -2013-11-02 08:00:00,4833.0,0.0,55.43 -2013-11-02 09:00:00,5105.5,0.0,57.62 -2013-11-02 10:00:00,5305.6,0.0,58.52 -2013-11-02 11:00:00,5417.9,0.0,61.13 -2013-11-02 12:00:00,5471.4,0.0,63.09 -2013-11-02 13:00:00,5452.3,0.0,63.81 -2013-11-02 14:00:00,5441.7,0.0,65.52 -2013-11-02 15:00:00,5408.3,0.0,66.14 -2013-11-02 16:00:00,5426.0,0.0,65.37 -2013-11-02 17:00:00,5514.0,0.0065,62.55 -2013-11-02 18:00:00,5687.6,0.0,62.83 -2013-11-02 19:00:00,5640.9,0.0,61.56 -2013-11-02 20:00:00,5493.0,0.0,60.16 -2013-11-02 21:00:00,5329.5,0.0,59.13 -2013-11-02 22:00:00,5113.4,0.0,57.73 -2013-11-02 23:00:00,4846.6,0.0,55.88 -2013-11-03 00:00:00,4552.5,0.0,56.35 -2013-11-03 01:00:00,4271.8,0.0,55.57 -2013-11-03 02:00:00,3988.4,0.0,53.92 -2013-11-03 03:00:00,3920.0,0.0,52.28 -2013-11-03 04:00:00,3930.1,0.0,51.73 -2013-11-03 05:00:00,4008.3,0.0,50.79 -2013-11-03 06:00:00,4149.8,0.0,47.65 -2013-11-03 07:00:00,4366.2,0.0,46.65 -2013-11-03 08:00:00,4677.5,0.0,46.65 -2013-11-03 09:00:00,4919.3,0.0,46.37 -2013-11-03 10:00:00,5081.3,0.0,47.48 -2013-11-03 11:00:00,5179.7,0.0,47.6 -2013-11-03 12:00:00,5221.8,0.0,47.74 -2013-11-03 13:00:00,5228.8,0.0,48.64 -2013-11-03 14:00:00,5241.9,0.0,49.85 -2013-11-03 15:00:00,5262.4,0.0,50.5 -2013-11-03 16:00:00,5390.5,0.0,48.69 -2013-11-03 17:00:00,5694.1,0.0,46.0 -2013-11-03 18:00:00,5764.7,0.0,43.79 -2013-11-03 19:00:00,5711.6,0.0,41.5 -2013-11-03 20:00:00,5586.2,0.0,40.26 -2013-11-03 21:00:00,5382.1,0.0,39.5 -2013-11-03 22:00:00,5094.1,0.0,38.87 -2013-11-03 23:00:00,4763.9,0.0,38.5 -2013-11-04 00:00:00,4478.1,0.0,37.89 -2013-11-04 01:00:00,4226.0,0.0,37.17 -2013-11-04 02:00:00,4116.2,0.0,36.83 -2013-11-04 03:00:00,4099.5,0.0,35.99 -2013-11-04 04:00:00,4157.1,0.0,35.77 -2013-11-04 05:00:00,4448.6,0.0,35.4 -2013-11-04 06:00:00,5038.2,0.0,35.0 -2013-11-04 07:00:00,5639.5,0.0,35.63 -2013-11-04 08:00:00,5987.3,0.0,37.27 -2013-11-04 09:00:00,6230.1,0.0,39.04 -2013-11-04 10:00:00,6312.1,0.0,40.83 -2013-11-04 11:00:00,6335.4,0.0,42.71 -2013-11-04 12:00:00,6341.7,0.0,43.43 -2013-11-04 13:00:00,6321.7,0.0,44.24 -2013-11-04 14:00:00,6300.3,0.0,44.87 -2013-11-04 15:00:00,6319.4,0.0,46.02 -2013-11-04 16:00:00,6455.9,0.0,45.65 -2013-11-04 17:00:00,6698.2,0.0,43.9 -2013-11-04 18:00:00,6539.3,0.0,43.13 -2013-11-04 19:00:00,6361.7,0.0,43.16 -2013-11-04 20:00:00,6138.8,0.0,42.6 -2013-11-04 21:00:00,5874.9,0.0,42.39 -2013-11-04 22:00:00,5484.9,0.0,42.36 -2013-11-04 23:00:00,5028.3,0.0,41.35 -2013-11-05 00:00:00,4613.5,0.0,41.35 -2013-11-05 01:00:00,4311.6,0.0,41.29 -2013-11-05 02:00:00,4188.0,0.0,41.91 -2013-11-05 03:00:00,4174.6,0.0,41.7 -2013-11-05 04:00:00,4225.6,0.0,41.08 -2013-11-05 05:00:00,4498.4,0.0,41.48 -2013-11-05 06:00:00,5007.3,0.0,41.24 -2013-11-05 07:00:00,5513.5,0.0,41.93 -2013-11-05 08:00:00,5906.2,0.0,45.19 -2013-11-05 09:00:00,6171.7,0.0,48.57 -2013-11-05 10:00:00,6233.2,0.0,50.44 -2013-11-05 11:00:00,6265.5,0.0,53.05 -2013-11-05 12:00:00,6298.5,0.0,52.83 -2013-11-05 13:00:00,6304.9,0.0,53.27 -2013-11-05 14:00:00,6294.6,0.0,53.43 -2013-11-05 15:00:00,6301.4,0.0,54.04 -2013-11-05 16:00:00,6443.0,0.0,53.04 -2013-11-05 17:00:00,6661.5,0.0,52.48 -2013-11-05 18:00:00,6488.0,0.0,51.71 -2013-11-05 19:00:00,6274.6,0.0,51.29 -2013-11-05 20:00:00,6059.0,0.0,51.69 -2013-11-05 21:00:00,5793.3,0.0,51.3 -2013-11-05 22:00:00,5418.9,0.0,51.49 -2013-11-05 23:00:00,4962.3,0.0,51.55 -2013-11-06 00:00:00,4566.7,0.0,50.93 -2013-11-06 01:00:00,4339.4,0.0,50.69 -2013-11-06 02:00:00,4224.3,0.0,49.28 -2013-11-06 03:00:00,4156.8,0.0,49.08 -2013-11-06 04:00:00,4186.6,0.0,48.05 -2013-11-06 05:00:00,4435.9,0.0,47.94 -2013-11-06 06:00:00,5017.8,0.0,47.82 -2013-11-06 07:00:00,5555.6,0.0,47.81 -2013-11-06 08:00:00,5931.2,0.0,51.66 -2013-11-06 09:00:00,6156.5,0.0,54.99 -2013-11-06 10:00:00,6225.1,0.0,56.4 -2013-11-06 11:00:00,6262.6,0.0,57.6 -2013-11-06 12:00:00,6274.6,0.0,58.81 -2013-11-06 13:00:00,6288.2,0.0,58.64 -2013-11-06 14:00:00,6264.0,0.0,59.48 -2013-11-06 15:00:00,6189.6,0.0,59.69 -2013-11-06 16:00:00,6409.6,0.0,58.51 -2013-11-06 17:00:00,6661.7,0.0,58.59 -2013-11-06 18:00:00,6498.6,0.0,57.29 -2013-11-06 19:00:00,6282.5,0.0,57.43 -2013-11-06 20:00:00,6054.4,0.0,56.98 -2013-11-06 21:00:00,5781.0,0.0,56.77 -2013-11-06 22:00:00,5418.4,0.0,56.93 -2013-11-06 23:00:00,4953.5,0.0,56.71 -2013-11-07 00:00:00,4561.9,0.0,56.5 -2013-11-07 01:00:00,4326.2,0.0,56.36 -2013-11-07 02:00:00,4197.2,0.0,57.42 -2013-11-07 03:00:00,4146.9,0.0,57.79 -2013-11-07 04:00:00,4171.1,0.0,58.63 -2013-11-07 05:00:00,4406.7,0.0,60.13 -2013-11-07 06:00:00,4983.9,0.0,61.33 -2013-11-07 07:00:00,5600.1,0.0,62.38 -2013-11-07 08:00:00,6025.7,0.0,62.75 -2013-11-07 09:00:00,6308.4,0.0,62.97 -2013-11-07 10:00:00,6430.8,0.0,62.54 -2013-11-07 11:00:00,6474.4,0.0035,61.37 -2013-11-07 12:00:00,6487.2,0.0231,60.2 -2013-11-07 13:00:00,6488.5,0.01,59.81 -2013-11-07 14:00:00,6458.2,0.0335,56.65 -2013-11-07 15:00:00,6460.4,0.0231,55.21 -2013-11-07 16:00:00,6504.3,0.0,51.93 -2013-11-07 17:00:00,6645.7,0.0,50.16 -2013-11-07 18:00:00,6478.4,0.0,49.77 -2013-11-07 19:00:00,6265.3,0.0,49.0 -2013-11-07 20:00:00,6031.6,0.0,47.56 -2013-11-07 21:00:00,5783.7,0.0,46.94 -2013-11-07 22:00:00,5387.1,0.0,46.13 -2013-11-07 23:00:00,4923.8,0.0,45.52 -2013-11-08 00:00:00,4565.8,0.0,44.5 -2013-11-08 01:00:00,4328.3,0.0,44.5 -2013-11-08 02:00:00,4208.0,0.0,44.36 -2013-11-08 03:00:00,4118.3,0.0,44.57 -2013-11-08 04:00:00,4128.4,0.0,44.16 -2013-11-08 05:00:00,4419.1,0.0,43.56 -2013-11-08 06:00:00,4978.2,0.0,42.5 -2013-11-08 07:00:00,5528.0,0.0,41.31 -2013-11-08 08:00:00,5897.1,0.0,42.37 -2013-11-08 09:00:00,6166.6,0.0,44.21 -2013-11-08 10:00:00,6247.7,0.0,45.43 -2013-11-08 11:00:00,6286.9,0.0,47.64 -2013-11-08 12:00:00,6311.2,0.0,48.83 -2013-11-08 13:00:00,6318.9,0.0,48.6 -2013-11-08 14:00:00,6294.0,0.0,48.61 -2013-11-08 15:00:00,6318.0,0.0,48.64 -2013-11-08 16:00:00,6433.7,0.0,49.21 -2013-11-08 17:00:00,6599.3,0.0,48.16 -2013-11-08 18:00:00,6402.4,0.0,46.23 -2013-11-08 19:00:00,6207.6,0.0,45.79 -2013-11-08 20:00:00,5980.7,0.0,44.93 -2013-11-08 21:00:00,5743.7,0.0,44.36 -2013-11-08 22:00:00,5439.3,0.0,43.73 -2013-11-08 23:00:00,5065.7,0.0,43.35 -2013-11-09 00:00:00,4704.9,0.0,42.73 -2013-11-09 01:00:00,4454.0,0.0,41.73 -2013-11-09 02:00:00,4309.4,0.0,41.94 -2013-11-09 03:00:00,4226.4,0.0,40.48 -2013-11-09 04:00:00,4208.4,0.0,40.08 -2013-11-09 05:00:00,4287.8,0.0,39.29 -2013-11-09 06:00:00,4435.3,0.0,39.08 -2013-11-09 07:00:00,4681.5,0.0,39.13 -2013-11-09 08:00:00,4978.3,0.0,40.7 -2013-11-09 09:00:00,5244.1,0.0,42.58 -2013-11-09 10:00:00,5470.8,0.0,43.44 -2013-11-09 11:00:00,5534.0,0.0,44.43 -2013-11-09 12:00:00,5510.4,0.0,46.48 -2013-11-09 13:00:00,5470.1,0.0,48.25 -2013-11-09 14:00:00,5447.4,0.0,49.25 -2013-11-09 15:00:00,5456.1,0.0,49.67 -2013-11-09 16:00:00,5604.7,0.0,49.43 -2013-11-09 17:00:00,5824.5,0.0,49.21 -2013-11-09 18:00:00,5812.4,0.0,49.21 -2013-11-09 19:00:00,5717.4,0.0,49.0 -2013-11-09 20:00:00,5576.2,0.0,49.0 -2013-11-09 21:00:00,5405.8,0.0,48.77 -2013-11-09 22:00:00,5198.2,0.0,48.77 -2013-11-09 23:00:00,4911.7,0.0,48.16 -2013-11-10 00:00:00,4623.1,0.0,48.56 -2013-11-10 01:00:00,4397.2,0.0,47.71 -2013-11-10 02:00:00,4236.2,0.0,47.1 -2013-11-10 03:00:00,4146.4,0.0,46.66 -2013-11-10 04:00:00,4108.0,0.0,46.29 -2013-11-10 05:00:00,4153.1,0.0,45.89 -2013-11-10 06:00:00,4244.0,0.0,44.68 -2013-11-10 07:00:00,4418.5,0.0,43.86 -2013-11-10 08:00:00,4672.1,0.0,45.5 -2013-11-10 09:00:00,4908.3,0.0,49.03 -2013-11-10 10:00:00,5098.4,0.0,54.22 -2013-11-10 11:00:00,5219.0,0.0,58.31 -2013-11-10 12:00:00,5288.4,0.0,59.42 -2013-11-10 13:00:00,5291.8,0.0,59.02 -2013-11-10 14:00:00,5377.7,0.0,52.92 -2013-11-10 15:00:00,5457.8,0.0,50.21 -2013-11-10 16:00:00,5520.5,0.0,50.37 -2013-11-10 17:00:00,5752.5,0.0,50.37 -2013-11-10 18:00:00,5768.7,0.0,50.6 -2013-11-10 19:00:00,5702.8,0.0,51.21 -2013-11-10 20:00:00,5570.2,0.0,50.81 -2013-11-10 21:00:00,5399.8,0.0,51.0 -2013-11-10 22:00:00,5135.8,0.0,50.21 -2013-11-10 23:00:00,4825.5,0.0,49.37 -2013-11-11 00:00:00,4519.7,0.0,48.98 -2013-11-11 01:00:00,4316.6,0.0,48.56 -2013-11-11 02:00:00,4176.8,0.0,47.37 -2013-11-11 03:00:00,4123.1,0.0,46.77 -2013-11-11 04:00:00,4151.9,0.0,46.16 -2013-11-11 05:00:00,4390.2,0.0,45.56 -2013-11-11 06:00:00,4811.8,0.0,44.35 -2013-11-11 07:00:00,5277.8,0.0,44.12 -2013-11-11 08:00:00,5694.8,0.0,44.58 -2013-11-11 09:00:00,5979.1,0.0,45.41 -2013-11-11 10:00:00,6097.8,0.0,46.2 -2013-11-11 11:00:00,6165.5,0.0,47.27 -2013-11-11 12:00:00,6171.5,0.0,48.48 -2013-11-11 13:00:00,6175.0,0.0,50.25 -2013-11-11 14:00:00,6171.7,0.0,51.04 -2013-11-11 15:00:00,6253.1,0.0,52.27 -2013-11-11 16:00:00,6438.1,0.0,52.65 -2013-11-11 17:00:00,6595.2,0.0,53.21 -2013-11-11 18:00:00,6427.7,0.0,53.43 -2013-11-11 19:00:00,6249.1,0.0,52.58 -2013-11-11 20:00:00,6033.5,0.0,52.37 -2013-11-11 21:00:00,5782.4,0.0,52.37 -2013-11-11 22:00:00,5407.4,0.0,52.37 -2013-11-11 23:00:00,4962.8,0.0,52.21 -2013-11-12 00:00:00,4579.2,0.0,51.6 -2013-11-12 01:00:00,4332.8,0.0,51.37 -2013-11-12 02:00:00,4178.8,0.0,51.37 -2013-11-12 03:00:00,4111.0,0.0,51.16 -2013-11-12 04:00:00,4154.6,0.0,51.16 -2013-11-12 05:00:00,4427.5,0.0,47.69 -2013-11-12 06:00:00,5045.7,0.0035,40.71 -2013-11-12 07:00:00,5661.7,0.0131,37.16 -2013-11-12 08:00:00,6062.8,0.0,36.16 -2013-11-12 09:00:00,6347.9,0.0,35.83 -2013-11-12 10:00:00,6455.1,0.0,36.43 -2013-11-12 11:00:00,6495.8,0.0,37.98 -2013-11-12 12:00:00,6511.1,0.0,38.37 -2013-11-12 13:00:00,6509.5,0.0,38.21 -2013-11-12 14:00:00,6504.7,0.0,37.77 -2013-11-12 15:00:00,6541.9,0.0,37.77 -2013-11-12 16:00:00,6712.3,0.0,37.37 -2013-11-12 17:00:00,6910.2,0.0,37.77 -2013-11-12 18:00:00,6753.7,0.0,37.16 -2013-11-12 19:00:00,6557.4,0.0,36.16 -2013-11-12 20:00:00,6343.3,0.0,34.94 -2013-11-12 21:00:00,6083.0,0.0,34.56 -2013-11-12 22:00:00,5713.0,0.0,33.56 -2013-11-12 23:00:00,5251.7,0.0,32.71 -2013-11-13 00:00:00,4847.7,0.0,32.56 -2013-11-13 01:00:00,4626.7,0.0,31.93 -2013-11-13 02:00:00,4478.9,0.0,31.35 -2013-11-13 03:00:00,4420.8,0.0,31.16 -2013-11-13 04:00:00,4458.6,0.0,30.56 -2013-11-13 05:00:00,4741.4,0.0,29.94 -2013-11-13 06:00:00,5282.5,0.0,30.16 -2013-11-13 07:00:00,5826.8,0.0,29.5 -2013-11-13 08:00:00,6168.7,0.0,30.76 -2013-11-13 09:00:00,6406.7,0.0,31.98 -2013-11-13 10:00:00,6501.3,0.0,32.79 -2013-11-13 11:00:00,6551.7,0.0,34.41 -2013-11-13 12:00:00,6543.2,0.0,36.01 -2013-11-13 13:00:00,6538.5,0.0,37.41 -2013-11-13 14:00:00,6507.6,0.0,39.04 -2013-11-13 15:00:00,6544.3,0.0,39.87 -2013-11-13 16:00:00,6692.2,0.0,39.44 -2013-11-13 17:00:00,6941.5,0.0,38.56 -2013-11-13 18:00:00,6778.4,0.0,37.79 -2013-11-13 19:00:00,6603.4,0.0,37.17 -2013-11-13 20:00:00,6366.4,0.0,36.54 -2013-11-13 21:00:00,6100.0,0.0,36.69 -2013-11-13 22:00:00,5736.2,0.0,36.88 -2013-11-13 23:00:00,5261.9,0.0,36.81 -2013-11-14 00:00:00,4852.9,0.0,36.41 -2013-11-14 01:00:00,4619.3,0.0,36.23 -2013-11-14 02:00:00,4477.1,0.0,35.25 -2013-11-14 03:00:00,4435.8,0.0,34.89 -2013-11-14 04:00:00,4463.8,0.0,34.91 -2013-11-14 05:00:00,4724.2,0.0,34.46 -2013-11-14 06:00:00,5269.1,0.0,34.46 -2013-11-14 07:00:00,5819.8,0.0,34.91 -2013-11-14 08:00:00,6161.5,0.0,36.1 -2013-11-14 09:00:00,6389.5,0.0,38.58 -2013-11-14 10:00:00,6466.3,0.0,40.85 -2013-11-14 11:00:00,6469.1,0.0,44.45 -2013-11-14 12:00:00,6474.4,0.0,47.46 -2013-11-14 13:00:00,6457.3,0.0,49.69 -2013-11-14 14:00:00,6427.1,0.0,52.46 -2013-11-14 15:00:00,6454.0,0.0,52.48 -2013-11-14 16:00:00,6595.9,0.0,52.43 -2013-11-14 17:00:00,6806.5,0.0,51.37 -2013-11-14 18:00:00,6614.6,0.0,50.73 -2013-11-14 19:00:00,6443.3,0.0,50.52 -2013-11-14 20:00:00,6337.1,0.0,49.31 -2013-11-14 21:00:00,6023.4,0.0,48.31 -2013-11-14 22:00:00,5611.7,0.0,47.54 -2013-11-14 23:00:00,5157.7,0.0,46.11 -2013-11-15 00:00:00,4753.6,0.0,45.67 -2013-11-15 01:00:00,4524.6,0.0,44.88 -2013-11-15 02:00:00,4389.0,0.0,43.51 -2013-11-15 03:00:00,4327.3,0.0,43.14 -2013-11-15 04:00:00,4355.7,0.0,41.66 -2013-11-15 05:00:00,4605.5,0.0,41.72 -2013-11-15 06:00:00,5157.4,0.0,40.72 -2013-11-15 07:00:00,5685.6,0.0,41.94 -2013-11-15 08:00:00,6033.3,0.0,43.09 -2013-11-15 09:00:00,6255.3,0.0,45.29 -2013-11-15 10:00:00,6311.0,0.0,48.1 -2013-11-15 11:00:00,6348.6,0.0,51.31 -2013-11-15 12:00:00,6347.2,0.0,53.69 -2013-11-15 13:00:00,6316.3,0.0,55.28 -2013-11-15 14:00:00,6264.1,0.0,55.5 -2013-11-15 15:00:00,6288.6,0.0,55.72 -2013-11-15 16:00:00,6445.5,0.0,54.75 -2013-11-15 17:00:00,6612.4,0.0,53.54 -2013-11-15 18:00:00,6414.5,0.0,51.47 -2013-11-15 19:00:00,6204.8,0.0,50.47 -2013-11-15 20:00:00,5969.6,0.0,49.3 -2013-11-15 21:00:00,5756.2,0.0,49.54 -2013-11-15 22:00:00,5454.1,0.0,49.71 -2013-11-15 23:00:00,5085.0,0.0,48.88 -2013-11-16 00:00:00,4713.5,0.0,48.01 -2013-11-16 01:00:00,4456.4,0.0,47.68 -2013-11-16 02:00:00,4305.9,0.0,49.07 -2013-11-16 03:00:00,4219.3,0.0,50.04 -2013-11-16 04:00:00,4188.1,0.0,50.48 -2013-11-16 05:00:00,4255.5,0.0035,49.5 -2013-11-16 06:00:00,4428.6,0.0065,48.21 -2013-11-16 07:00:00,4655.2,0.0231,46.88 -2013-11-16 08:00:00,4970.2,0.0065,47.09 -2013-11-16 09:00:00,5208.7,0.0,49.11 -2013-11-16 10:00:00,5366.7,0.0,52.0 -2013-11-16 11:00:00,5451.9,0.0,54.38 -2013-11-16 12:00:00,5465.7,0.0,57.1 -2013-11-16 13:00:00,5430.7,0.0,57.19 -2013-11-16 14:00:00,5398.1,0.0,57.46 -2013-11-16 15:00:00,5395.6,0.0,57.14 -2013-11-16 16:00:00,5525.1,0.0,55.73 -2013-11-16 17:00:00,5784.4,0.0,53.04 -2013-11-16 18:00:00,5780.4,0.0,51.69 -2013-11-16 19:00:00,5687.5,0.0,51.0 -2013-11-16 20:00:00,5549.0,0.0,50.31 -2013-11-16 21:00:00,5394.9,0.0,48.61 -2013-11-16 22:00:00,5187.9,0.0,48.92 -2013-11-16 23:00:00,4906.6,0.0,48.27 -2013-11-17 00:00:00,4620.6,0.0,48.0 -2013-11-17 01:00:00,4384.6,0.0,49.35 -2013-11-17 02:00:00,4225.1,0.0,49.35 -2013-11-17 03:00:00,4121.4,0.0,50.0 -2013-11-17 04:00:00,4082.1,0.0,49.69 -2013-11-17 05:00:00,4117.0,0.0,50.35 -2013-11-17 06:00:00,4227.5,0.0,50.35 -2013-11-17 07:00:00,4379.1,0.0,52.69 -2013-11-17 08:00:00,4658.0,0.0,52.69 -2013-11-17 09:00:00,4925.1,0.0,54.04 -2013-11-17 10:00:00,5149.0,0.0,55.39 -2013-11-17 11:00:00,5300.6,0.0,57.08 -2013-11-17 12:00:00,5382.7,0.0,55.73 -2013-11-17 13:00:00,5418.4,0.0,57.08 -2013-11-17 14:00:00,5441.3,0.0,59.12 -2013-11-17 15:00:00,5492.4,0.0,61.0 -2013-11-17 16:00:00,5647.2,0.0,60.39 -2013-11-17 17:00:00,5856.5,0.0,60.04 -2013-11-17 18:00:00,5854.7,0.0,59.69 -2013-11-17 19:00:00,5762.9,0.0,59.04 -2013-11-17 20:00:00,5637.8,0.0,58.39 -2013-11-17 21:00:00,5456.0,0.0,58.39 -2013-11-17 22:00:00,5174.2,0.0,57.08 -2013-11-17 23:00:00,4816.1,0.0,58.43 -2013-11-18 00:00:00,4491.9,0.0,59.08 -2013-11-18 01:00:00,4287.6,0.0,59.73 -2013-11-18 02:00:00,4161.8,0.0,59.73 -2013-11-18 03:00:00,4112.4,0.0069,59.08 -2013-11-18 04:00:00,4162.8,0.0688,60.39 -2013-11-18 05:00:00,4414.6,0.0131,60.31 -2013-11-18 06:00:00,4941.0,0.0,60.0 -2013-11-18 07:00:00,5462.4,0.0,59.65 -2013-11-18 08:00:00,5900.2,0.0,59.31 -2013-11-18 09:00:00,6138.1,0.0,60.15 -2013-11-18 10:00:00,6229.2,0.0,60.77 -2013-11-18 11:00:00,6277.6,0.0,62.27 -2013-11-18 12:00:00,6299.0,0.0,62.81 -2013-11-18 13:00:00,6303.4,0.0,63.5 -2013-11-18 14:00:00,6295.6,0.0,64.27 -2013-11-18 15:00:00,6311.8,0.0,63.82 -2013-11-18 16:00:00,6451.6,0.0,63.64 -2013-11-18 17:00:00,6658.0,0.0,62.15 -2013-11-18 18:00:00,6453.2,0.0,61.0 -2013-11-18 19:00:00,6260.5,0.0,59.54 -2013-11-18 20:00:00,6045.0,0.0,58.54 -2013-11-18 21:00:00,5778.0,0.0,57.38 -2013-11-18 22:00:00,5394.8,0.0,55.77 -2013-11-18 23:00:00,4942.2,0.0,53.56 -2013-11-19 00:00:00,4535.7,0.0,51.16 -2013-11-19 01:00:00,4298.8,0.0,50.37 -2013-11-19 02:00:00,4174.8,0.0,49.98 -2013-11-19 03:00:00,4099.1,0.0,47.0 -2013-11-19 04:00:00,4091.7,0.0,45.77 -2013-11-19 05:00:00,4341.3,0.0,44.77 -2013-11-19 06:00:00,4998.6,0.0,44.21 -2013-11-19 07:00:00,5569.4,0.0,43.37 -2013-11-19 08:00:00,5931.9,0.0,44.2 -2013-11-19 09:00:00,6168.2,0.0,44.64 -2013-11-19 10:00:00,6263.7,0.0,45.79 -2013-11-19 11:00:00,6297.9,0.0,46.85 -2013-11-19 12:00:00,6316.0,0.0,47.04 -2013-11-19 13:00:00,6326.3,0.0,46.91 -2013-11-19 14:00:00,6315.6,0.0,46.83 -2013-11-19 15:00:00,6345.3,0.0,46.61 -2013-11-19 16:00:00,6543.4,0.0,45.21 -2013-11-19 17:00:00,6778.0,0.0,43.37 -2013-11-19 18:00:00,6617.4,0.0,42.21 -2013-11-19 19:00:00,6435.3,0.0,41.37 -2013-11-19 20:00:00,6222.5,0.0,40.37 -2013-11-19 21:00:00,5959.4,0.0,40.0 -2013-11-19 22:00:00,5553.1,0.0,39.0 -2013-11-19 23:00:00,5123.0,0.0,38.0 -2013-11-20 00:00:00,4732.0,0.0,37.0 -2013-11-20 01:00:00,4511.7,0.0,36.16 -2013-11-20 02:00:00,4383.0,0.0,35.39 -2013-11-20 03:00:00,4340.7,0.0,35.0 -2013-11-20 04:00:00,4375.8,0.0,34.16 -2013-11-20 05:00:00,4645.7,0.0,33.79 -2013-11-20 06:00:00,5221.1,0.0,33.79 -2013-11-20 07:00:00,5784.6,0.0,32.83 -2013-11-20 08:00:00,6117.2,0.0,33.16 -2013-11-20 09:00:00,6368.5,0.0,34.6 -2013-11-20 10:00:00,6444.7,0.0,36.02 -2013-11-20 11:00:00,6460.4,0.0,38.58 -2013-11-20 12:00:00,6449.3,0.0,41.04 -2013-11-20 13:00:00,6446.2,0.0,42.6 -2013-11-20 14:00:00,6420.4,0.0,43.43 -2013-11-20 15:00:00,6457.6,0.0,44.65 -2013-11-20 16:00:00,6640.5,0.0,44.04 -2013-11-20 17:00:00,6859.1,0.0,42.29 -2013-11-20 18:00:00,6705.5,0.0,41.92 -2013-11-20 19:00:00,6514.2,0.0,40.86 -2013-11-20 20:00:00,6290.2,0.0,40.12 -2013-11-20 21:00:00,6031.8,0.0,38.88 -2013-11-20 22:00:00,5646.0,0.0,37.88 -2013-11-20 23:00:00,5194.2,0.0,37.66 -2013-11-21 00:00:00,4805.1,0.0,37.29 -2013-11-21 01:00:00,4549.1,0.0,36.29 -2013-11-21 02:00:00,4407.7,0.0,36.45 -2013-11-21 03:00:00,4346.7,0.0,35.94 -2013-11-21 04:00:00,4387.4,0.0,35.54 -2013-11-21 05:00:00,4658.2,0.0,35.63 -2013-11-21 06:00:00,5178.6,0.0,35.63 -2013-11-21 07:00:00,5755.9,0.0,36.44 -2013-11-21 08:00:00,6109.5,0.0,37.02 -2013-11-21 09:00:00,6326.5,0.0,41.21 -2013-11-21 10:00:00,6405.6,0.0,43.76 -2013-11-21 11:00:00,6392.7,0.0,46.04 -2013-11-21 12:00:00,6392.5,0.0,47.25 -2013-11-21 13:00:00,6410.2,0.0,49.24 -2013-11-21 14:00:00,6389.0,0.0,50.04 -2013-11-21 15:00:00,6476.7,0.0,50.25 -2013-11-21 16:00:00,6649.1,0.0,49.64 -2013-11-21 17:00:00,6826.6,0.0,49.87 -2013-11-21 18:00:00,6628.1,0.0,50.06 -2013-11-21 19:00:00,6418.4,0.0,50.06 -2013-11-21 20:00:00,6197.7,0.0,50.27 -2013-11-21 21:00:00,5920.5,0.0,50.84 -2013-11-21 22:00:00,5526.5,0.0,50.84 -2013-11-21 23:00:00,5093.7,0.0,50.61 -2013-11-22 00:00:00,4701.9,0.0,50.77 -2013-11-22 01:00:00,4439.8,0.0,50.54 -2013-11-22 02:00:00,4292.5,0.0,51.17 -2013-11-22 03:00:00,4230.4,0.0,51.17 -2013-11-22 04:00:00,4258.1,0.0,50.77 -2013-11-22 05:00:00,4512.9,0.0,51.17 -2013-11-22 06:00:00,5077.3,0.0035,50.8 -2013-11-22 07:00:00,5637.9,0.0,50.56 -2013-11-22 08:00:00,6043.1,0.0135,51.54 -2013-11-22 09:00:00,6342.1,0.0196,51.38 -2013-11-22 10:00:00,6458.8,0.0,51.77 -2013-11-22 11:00:00,6481.7,0.0196,51.77 -2013-11-22 12:00:00,6471.6,0.0,52.99 -2013-11-22 13:00:00,6415.8,0.0,54.66 -2013-11-22 14:00:00,6350.9,0.0,54.81 -2013-11-22 15:00:00,6366.5,0.0,56.25 -2013-11-22 16:00:00,6541.3,0.0,56.86 -2013-11-22 17:00:00,6662.8,0.0,56.04 -2013-11-22 18:00:00,6459.3,0.0,55.83 -2013-11-22 19:00:00,6237.9,0.0,56.38 -2013-11-22 20:00:00,6028.1,0.0,55.98 -2013-11-22 21:00:00,5768.6,0.0,55.35 -2013-11-22 22:00:00,5457.3,0.0,54.54 -2013-11-22 23:00:00,5080.5,0.0,54.75 -2013-11-23 00:00:00,4708.6,0.0,53.54 -2013-11-23 01:00:00,4458.9,0.0,54.43 -2013-11-23 02:00:00,4285.4,0.0,51.0 -2013-11-23 03:00:00,4193.4,0.0,48.21 -2013-11-23 04:00:00,4182.3,0.0,46.56 -2013-11-23 05:00:00,4282.5,0.0,44.0 -2013-11-23 06:00:00,4472.7,0.0,41.4 -2013-11-23 07:00:00,4699.0,0.0,39.77 -2013-11-23 08:00:00,5010.4,0.0,39.93 -2013-11-23 09:00:00,5278.7,0.0,40.58 -2013-11-23 10:00:00,5459.4,0.0,41.64 -2013-11-23 11:00:00,5542.4,0.0,43.25 -2013-11-23 12:00:00,5576.3,0.0,45.27 -2013-11-23 13:00:00,5533.1,0.0,46.27 -2013-11-23 14:00:00,5516.3,0.0,46.21 -2013-11-23 15:00:00,5545.4,0.0,45.84 -2013-11-23 16:00:00,5702.1,0.0,44.77 -2013-11-23 17:00:00,5949.0,0.0,43.37 -2013-11-23 18:00:00,5949.8,0.0,42.6 -2013-11-23 19:00:00,5870.9,0.0,41.63 -2013-11-23 20:00:00,5757.4,0.0131,35.12 -2013-11-23 21:00:00,5630.2,0.0131,35.16 -2013-11-23 22:00:00,5416.1,0.0,34.35 -2013-11-23 23:00:00,5173.8,0.0,33.35 -2013-11-24 00:00:00,4909.4,0.0,31.35 -2013-11-24 01:00:00,4708.9,0.0,29.71 -2013-11-24 02:00:00,4572.4,0.0,27.94 -2013-11-24 03:00:00,4503.5,0.0,26.71 -2013-11-24 04:00:00,4507.7,0.0,25.71 -2013-11-24 05:00:00,4559.5,0.0,25.16 -2013-11-24 06:00:00,4637.4,0.0,24.56 -2013-11-24 07:00:00,4763.7,0.0,24.16 -2013-11-24 08:00:00,5064.3,0.0,24.71 -2013-11-24 09:00:00,5355.2,0.0,25.21 -2013-11-24 10:00:00,5588.8,0.0,26.37 -2013-11-24 11:00:00,5746.3,0.0,26.98 -2013-11-24 12:00:00,5816.0,0.0,27.97 -2013-11-24 13:00:00,5831.1,0.0,29.2 -2013-11-24 14:00:00,5873.8,0.0,30.21 -2013-11-24 15:00:00,5905.7,0.0,29.98 -2013-11-24 16:00:00,6170.4,0.0,29.16 -2013-11-24 17:00:00,6454.9,0.0,28.08 -2013-11-24 18:00:00,6408.3,0.0,26.94 -2013-11-24 19:00:00,6324.2,0.0,27.16 -2013-11-24 20:00:00,6208.1,0.0,27.16 -2013-11-24 21:00:00,6015.3,0.0,26.39 -2013-11-24 22:00:00,5749.7,0.0,26.16 -2013-11-24 23:00:00,5375.6,0.0,25.16 -2013-11-25 00:00:00,5056.2,0.0,24.79 -2013-11-25 01:00:00,4845.5,0.0,24.94 -2013-11-25 02:00:00,4704.1,0.0,23.94 -2013-11-25 03:00:00,4645.7,0.0,24.02 -2013-11-25 04:00:00,4671.4,0.0,23.73 -2013-11-25 05:00:00,4948.8,0.0,23.73 -2013-11-25 06:00:00,5486.1,0.0,23.73 -2013-11-25 07:00:00,6050.5,0.0,23.73 -2013-11-25 08:00:00,6373.6,0.0,25.0 -2013-11-25 09:00:00,6620.8,0.0,26.35 -2013-11-25 10:00:00,6769.8,0.0,28.2 -2013-11-25 11:00:00,6778.0,0.0,29.41 -2013-11-25 12:00:00,6752.5,0.0,31.08 -2013-11-25 13:00:00,6731.3,0.0,33.25 -2013-11-25 14:00:00,6694.2,0.0,34.86 -2013-11-25 15:00:00,6723.5,0.0,35.64 -2013-11-25 16:00:00,6935.9,0.0,35.21 -2013-11-25 17:00:00,7124.5,0.0,34.81 -2013-11-25 18:00:00,6946.5,0.0,34.81 -2013-11-25 19:00:00,6779.0,0.0,34.37 -2013-11-25 20:00:00,6578.4,0.0,33.81 -2013-11-25 21:00:00,6320.9,0.0,33.37 -2013-11-25 22:00:00,5938.3,0.0,33.76 -2013-11-25 23:00:00,5459.4,0.0,34.0 -2013-11-26 00:00:00,5034.9,0.0,34.39 -2013-11-26 01:00:00,4777.6,0.0,34.39 -2013-11-26 02:00:00,4628.2,0.0,34.6 -2013-11-26 03:00:00,4560.4,0.0,34.6 -2013-11-26 04:00:00,4578.0,0.0,34.6 -2013-11-26 05:00:00,4832.0,0.0,35.0 -2013-11-26 06:00:00,5386.7,0.0,35.37 -2013-11-26 07:00:00,5962.4,0.0,36.16 -2013-11-26 08:00:00,6302.9,0.0,36.77 -2013-11-26 09:00:00,6519.2,0.0,37.54 -2013-11-26 10:00:00,6609.3,0.0,37.98 -2013-11-26 11:00:00,6635.5,0.0,38.98 -2013-11-26 12:00:00,6662.2,0.0,39.2 -2013-11-26 13:00:00,6667.6,0.0,39.75 -2013-11-26 14:00:00,6674.0,0.0,39.43 -2013-11-26 15:00:00,6717.8,0.0135,38.44 -2013-11-26 16:00:00,6901.9,0.0035,38.08 -2013-11-26 17:00:00,6994.1,0.01,37.27 -2013-11-26 18:00:00,6808.8,0.0231,37.9 -2013-11-26 19:00:00,6613.9,0.0065,37.88 -2013-11-26 20:00:00,6388.6,0.0335,39.92 -2013-11-26 21:00:00,6121.1,0.0469,40.73 -2013-11-26 22:00:00,5765.7,0.0804,43.34 -2013-11-26 23:00:00,5297.1,0.09,45.79 -2013-11-27 00:00:00,4888.2,0.1361,47.84 -2013-11-27 01:00:00,4630.6,0.1573,54.21 -2013-11-27 02:00:00,4469.3,0.3353,56.79 -2013-11-27 03:00:00,4389.1,0.1735,58.64 -2013-11-27 04:00:00,4374.4,0.2215,59.35 -2013-11-27 05:00:00,4580.3,0.1623,59.58 -2013-11-27 06:00:00,5099.3,0.0531,59.81 -2013-11-27 07:00:00,5670.1,0.0069,59.69 -2013-11-27 08:00:00,6059.1,0.0331,57.78 -2013-11-27 09:00:00,6339.1,0.04,53.01 -2013-11-27 10:00:00,6436.7,0.0135,50.31 -2013-11-27 11:00:00,6487.8,0.0131,47.37 -2013-11-27 12:00:00,6505.9,0.0,45.18 -2013-11-27 13:00:00,6491.8,0.0,44.21 -2013-11-27 14:00:00,6471.1,0.01,42.98 -2013-11-27 15:00:00,6502.0,0.0231,41.58 -2013-11-27 16:00:00,6639.0,0.0035,40.98 -2013-11-27 17:00:00,6732.1,0.0069,39.97 -2013-11-27 18:00:00,6553.2,0.0,39.16 -2013-11-27 19:00:00,6362.9,0.0,37.97 -2013-11-27 20:00:00,6151.9,0.0,39.58 -2013-11-27 21:00:00,5930.7,0.0,39.14 -2013-11-27 22:00:00,5643.1,0.0,37.37 -2013-11-27 23:00:00,5269.4,0.0,36.6 -2013-11-28 00:00:00,4938.8,0.0,35.93 -2013-11-28 01:00:00,4709.9,0.0,34.6 -2013-11-28 02:00:00,4564.9,0.0,34.0 -2013-11-28 03:00:00,4482.9,0.0,33.16 -2013-11-28 04:00:00,4474.2,0.0,32.37 -2013-11-28 05:00:00,4554.0,0.0,32.16 -2013-11-28 06:00:00,4711.2,0.0,32.16 -2013-11-28 07:00:00,4886.4,0.0,31.6 -2013-11-28 08:00:00,5141.8,0.0,31.21 -2013-11-28 09:00:00,5383.3,0.0,30.98 -2013-11-28 10:00:00,5541.0,0.0,31.61 -2013-11-28 11:00:00,5624.4,0.0,32.21 -2013-11-28 12:00:00,5644.1,0.0,33.43 -2013-11-28 13:00:00,5597.5,0.0,34.27 -2013-11-28 14:00:00,5535.7,0.0,35.06 -2013-11-28 15:00:00,5486.9,0.0,35.21 -2013-11-28 16:00:00,5553.3,0.0,34.84 -2013-11-28 17:00:00,5660.7,0.0,33.56 -2013-11-28 18:00:00,5572.8,0.0,33.63 -2013-11-28 19:00:00,5486.7,0.0,32.79 -2013-11-28 20:00:00,5403.0,0.0,32.35 -2013-11-28 21:00:00,5338.9,0.0,32.56 -2013-11-28 22:00:00,5241.7,0.0,32.57 -2013-11-28 23:00:00,5047.3,0.0,32.94 -2013-11-29 00:00:00,4836.3,0.0,32.94 -2013-11-29 01:00:00,4633.9,0.0,33.16 -2013-11-29 02:00:00,4506.2,0.0,33.16 -2013-11-29 03:00:00,4439.0,0.0,32.94 -2013-11-29 04:00:00,4454.2,0.0,33.16 -2013-11-29 05:00:00,4627.0,0.0,32.79 -2013-11-29 06:00:00,4935.4,0.0,31.94 -2013-11-29 07:00:00,5228.8,0.0,31.73 -2013-11-29 08:00:00,5543.8,0.0,32.16 -2013-11-29 09:00:00,5754.8,0.0,33.58 -2013-11-29 10:00:00,5879.9,0.0,34.43 -2013-11-29 11:00:00,5948.1,0.0,36.2 -2013-11-29 12:00:00,5965.4,0.0,37.43 -2013-11-29 13:00:00,5960.2,0.0,37.37 -2013-11-29 14:00:00,5962.5,0.0,37.84 -2013-11-29 15:00:00,6005.7,0.0,37.21 -2013-11-29 16:00:00,6185.1,0.0,36.6 -2013-11-29 17:00:00,6413.5,0.0,35.37 -2013-11-29 18:00:00,6308.8,0.0,34.56 -2013-11-29 19:00:00,6176.1,0.0,34.16 -2013-11-29 20:00:00,6020.9,0.0,33.35 -2013-11-29 21:00:00,5838.0,0.0,32.56 -2013-11-29 22:00:00,5604.1,0.0,31.75 -2013-11-29 23:00:00,5305.6,0.0,31.35 -2013-11-30 00:00:00,4999.5,0.0,30.35 -2013-11-30 01:00:00,4766.7,0.0,29.57 -2013-11-30 02:00:00,4611.6,0.0,28.73 -2013-11-30 03:00:00,4527.4,0.0,28.8 -2013-11-30 04:00:00,4500.1,0.0,27.4 -2013-11-30 05:00:00,4578.5,0.0,26.85 -2013-11-30 06:00:00,4742.0,0.0,26.62 -2013-11-30 07:00:00,4926.9,0.0,25.62 -2013-11-30 08:00:00,5189.6,0.0,26.85 -2013-11-30 09:00:00,5437.9,0.0,28.99 -2013-11-30 10:00:00,5616.3,0.0,30.83 -2013-11-30 11:00:00,5697.5,0.0,32.39 -2013-11-30 12:00:00,5716.7,0.0,34.04 -2013-11-30 13:00:00,5694.8,0.0,35.44 -2013-11-30 14:00:00,5669.7,0.0,36.0 -2013-11-30 15:00:00,5678.7,0.0,36.44 -2013-11-30 16:00:00,5882.1,0.0,36.84 -2013-11-30 17:00:00,6083.7,0.0,36.29 -2013-11-30 18:00:00,6078.6,0.0,35.88 -2013-11-30 19:00:00,5993.5,0.0,36.5 -2013-11-30 20:00:00,5855.7,0.0,36.5 -2013-11-30 21:00:00,5676.4,0.0,36.73 -2013-11-30 22:00:00,5393.0,0.0,36.96 -2013-11-30 23:00:00,5118.8,0.0,37.46 -2013-12-01 00:00:00,4818.0,0.0,37.86 -2013-12-01 01:00:00,4579.5,0.0,38.42 -2013-12-01 02:00:00,4421.9,0.0,38.19 -2013-12-01 03:00:00,4323.8,0.0,37.94 -2013-12-01 04:00:00,4287.7,0.0,37.39 -2013-12-01 05:00:00,4336.9,0.0,38.42 -2013-12-01 06:00:00,4414.6,0.0,38.21 -2013-12-01 07:00:00,4557.3,0.0,38.38 -2013-12-01 08:00:00,4819.8,0.0,39.19 -2013-12-01 09:00:00,5048.2,0.0,41.17 -2013-12-01 10:00:00,5265.7,0.0,43.17 -2013-12-01 11:00:00,5375.7,0.0,43.98 -2013-12-01 12:00:00,5426.4,0.0,45.58 -2013-12-01 13:00:00,5446.6,0.0,46.18 -2013-12-01 14:00:00,5429.7,0.0,47.2 -2013-12-01 15:00:00,5463.3,0.0,48.57 -2013-12-01 16:00:00,5712.5,0.0,47.54 -2013-12-01 17:00:00,5956.1,0.0,47.44 -2013-12-01 18:00:00,5967.2,0.0,46.83 -2013-12-01 19:00:00,5905.8,0.0,47.23 -2013-12-01 20:00:00,5811.1,0.0,47.38 -2013-12-01 21:00:00,5638.0,0.0,45.8 -2013-12-01 22:00:00,5346.9,0.0,45.19 -2013-12-01 23:00:00,4997.6,0.0,44.59 -2013-12-02 00:00:00,4657.1,0.0,44.03 -2013-12-02 01:00:00,4435.6,0.0,43.4 -2013-12-02 02:00:00,4270.6,0.0,42.96 -2013-12-02 03:00:00,4212.0,0.0,42.4 -2013-12-02 04:00:00,4273.1,0.0,42.4 -2013-12-02 05:00:00,4584.7,0.0,40.99 -2013-12-02 06:00:00,5148.7,0.0,41.63 -2013-12-02 07:00:00,5722.9,0.0,41.63 -2013-12-02 08:00:00,6091.3,0.0,41.86 -2013-12-02 09:00:00,6355.8,0.0,42.5 -2013-12-02 10:00:00,6457.5,0.0,43.52 -2013-12-02 11:00:00,6484.1,0.0,43.88 -2013-12-02 12:00:00,6466.6,0.0,44.88 -2013-12-02 13:00:00,6442.5,0.0,45.1 -2013-12-02 14:00:00,6406.0,0.0,46.1 -2013-12-02 15:00:00,6465.7,0.0,46.17 -2013-12-02 16:00:00,6661.3,0.0,45.75 -2013-12-02 17:00:00,6857.6,0.0,45.15 -2013-12-02 18:00:00,6681.7,0.0,44.38 -2013-12-02 19:00:00,6510.0,0.0,43.8 -2013-12-02 20:00:00,6310.9,0.0,42.97 -2013-12-02 21:00:00,6028.2,0.0,42.76 -2013-12-02 22:00:00,5664.4,0.0,41.38 -2013-12-02 23:00:00,5197.2,0.0,41.32 -2013-12-03 00:00:00,4775.1,0.0,41.26 -2013-12-03 01:00:00,4524.1,0.0,40.45 -2013-12-03 02:00:00,4386.6,0.0,39.61 -2013-12-03 03:00:00,4320.7,0.0,39.17 -2013-12-03 04:00:00,4357.5,0.0,38.34 -2013-12-03 05:00:00,4623.3,0.0,38.44 -2013-12-03 06:00:00,5200.7,0.0,38.28 -2013-12-03 07:00:00,5750.4,0.0,38.22 -2013-12-03 08:00:00,6099.1,0.0,39.59 -2013-12-03 09:00:00,6306.8,0.0,41.63 -2013-12-03 10:00:00,6385.6,0.0,42.58 -2013-12-03 11:00:00,6403.8,0.0,45.65 -2013-12-03 12:00:00,6402.9,0.0,48.25 -2013-12-03 13:00:00,6388.7,0.0,50.27 -2013-12-03 14:00:00,6368.6,0.0,52.41 -2013-12-03 15:00:00,6397.7,0.0,53.09 -2013-12-03 16:00:00,6604.7,0.0,54.04 -2013-12-03 17:00:00,6815.3,0.0,51.65 -2013-12-03 18:00:00,6632.7,0.0,50.29 -2013-12-03 19:00:00,6446.5,0.0,48.37 -2013-12-03 20:00:00,6247.0,0.0,46.32 -2013-12-03 21:00:00,5983.2,0.0,45.09 -2013-12-03 22:00:00,5597.3,0.0,43.93 -2013-12-03 23:00:00,5149.4,0.0,42.88 -2013-12-04 00:00:00,4732.0,0.0,42.09 -2013-12-04 01:00:00,4473.1,0.0,41.7 -2013-12-04 02:00:00,4326.2,0.0,41.09 -2013-12-04 03:00:00,4271.0,0.0,39.88 -2013-12-04 04:00:00,4302.0,0.0,40.26 -2013-12-04 05:00:00,4576.6,0.0,39.88 -2013-12-04 06:00:00,5159.8,0.0,40.25 -2013-12-04 07:00:00,5734.7,0.0,40.26 -2013-12-04 08:00:00,6068.9,0.0,40.32 -2013-12-04 09:00:00,6282.7,0.0,41.53 -2013-12-04 10:00:00,6350.3,0.0,44.11 -2013-12-04 11:00:00,6383.1,0.0,45.87 -2013-12-04 12:00:00,6421.0,0.0,46.69 -2013-12-04 13:00:00,6414.5,0.0,47.69 -2013-12-04 14:00:00,6401.0,0.0,48.41 -2013-12-04 15:00:00,6474.4,0.0,48.68 -2013-12-04 16:00:00,6658.6,0.0,48.72 -2013-12-04 17:00:00,6860.5,0.0,49.18 -2013-12-04 18:00:00,6645.9,0.0,47.98 -2013-12-04 19:00:00,6472.1,0.0,47.98 -2013-12-04 20:00:00,6245.2,0.0,48.38 -2013-12-04 21:00:00,5997.1,0.0,47.61 -2013-12-04 22:00:00,5612.5,0.0,47.05 -2013-12-04 23:00:00,5150.9,0.0,47.61 -2013-12-05 00:00:00,4718.9,0.0,47.79 -2013-12-05 01:00:00,4446.0,0.0,47.7 -2013-12-05 02:00:00,4295.7,0.0,48.16 -2013-12-05 03:00:00,4237.8,0.0035,47.73 -2013-12-05 04:00:00,4272.0,0.0065,47.27 -2013-12-05 05:00:00,4533.0,0.0,47.73 -2013-12-05 06:00:00,5112.2,0.0,47.5 -2013-12-05 07:00:00,5694.9,0.0,48.39 -2013-12-05 08:00:00,6061.1,0.0,49.14 -2013-12-05 09:00:00,6297.3,0.0,49.77 -2013-12-05 10:00:00,6402.4,0.0,48.76 -2013-12-05 11:00:00,6457.6,0.0,50.94 -2013-12-05 12:00:00,6465.6,0.0,53.6 -2013-12-05 13:00:00,6476.1,0.0,54.88 -2013-12-05 14:00:00,6482.5,0.0,55.81 -2013-12-05 15:00:00,6550.6,0.0,55.29 -2013-12-05 16:00:00,6728.4,0.0,55.43 -2013-12-05 17:00:00,6828.7,0.0,56.37 -2013-12-05 18:00:00,6623.6,0.0,55.5 -2013-12-05 19:00:00,6444.9,0.0,56.46 -2013-12-05 20:00:00,6225.1,0.0,57.72 -2013-12-05 21:00:00,5957.1,0.0,55.02 -2013-12-05 22:00:00,5613.6,0.0,54.71 -2013-12-05 23:00:00,5159.9,0.0,54.31 -2013-12-06 00:00:00,4760.1,0.0,54.31 -2013-12-06 01:00:00,4487.3,0.0,54.95 -2013-12-06 02:00:00,4335.6,0.0,54.29 -2013-12-06 03:00:00,4266.3,0.0035,54.36 -2013-12-06 04:00:00,4287.6,0.01,54.56 -2013-12-06 05:00:00,4530.1,0.0,55.57 -2013-12-06 06:00:00,5107.5,0.0069,55.38 -2013-12-06 07:00:00,5677.2,0.0104,52.44 -2013-12-06 08:00:00,6060.8,0.0069,52.16 -2013-12-06 09:00:00,6319.2,0.01,49.38 -2013-12-06 10:00:00,6440.7,0.0065,48.1 -2013-12-06 11:00:00,6504.8,0.04,46.46 -2013-12-06 12:00:00,6518.9,0.01,45.44 -2013-12-06 13:00:00,6534.8,0.0,44.83 -2013-12-06 14:00:00,6530.6,0.0035,44.65 -2013-12-06 15:00:00,6577.8,0.0135,45.27 -2013-12-06 16:00:00,6735.8,0.0235,44.43 -2013-12-06 17:00:00,6787.0,0.0,44.65 -2013-12-06 18:00:00,6595.3,0.0065,44.43 -2013-12-06 19:00:00,6407.0,0.01,43.65 -2013-12-06 20:00:00,6205.8,0.0655,40.47 -2013-12-06 21:00:00,5963.6,0.122,38.7 -2013-12-06 22:00:00,5676.8,0.0527,38.11 -2013-12-06 23:00:00,5311.3,0.0465,37.65 -2013-12-07 00:00:00,4925.2,0.0804,37.6 -2013-12-07 01:00:00,4660.4,0.0931,36.44 -2013-12-07 02:00:00,4466.5,0.0065,36.6 -2013-12-07 03:00:00,4374.3,0.01,36.37 -2013-12-07 04:00:00,4348.4,0.0065,36.21 -2013-12-07 05:00:00,4412.4,0.0,36.6 -2013-12-07 06:00:00,4600.9,0.0,37.21 -2013-12-07 07:00:00,4833.7,0.0,37.21 -2013-12-07 08:00:00,5128.6,0.0,37.0 -2013-12-07 09:00:00,5399.2,0.0,38.0 -2013-12-07 10:00:00,5572.3,0.0,38.21 -2013-12-07 11:00:00,5675.4,0.0,40.21 -2013-12-07 12:00:00,5729.3,0.0,38.98 -2013-12-07 13:00:00,5702.0,0.0,39.58 -2013-12-07 14:00:00,5674.9,0.0,40.61 -2013-12-07 15:00:00,5687.6,0.0,40.44 -2013-12-07 16:00:00,5889.1,0.0,39.77 -2013-12-07 17:00:00,6145.3,0.0,38.77 -2013-12-07 18:00:00,6149.5,0.0,37.79 -2013-12-07 19:00:00,6069.6,0.0,37.56 -2013-12-07 20:00:00,5940.3,0.0,36.56 -2013-12-07 21:00:00,5772.1,0.0,35.56 -2013-12-07 22:00:00,5577.4,0.0,34.56 -2013-12-07 23:00:00,5298.4,0.0,33.56 -2013-12-08 00:00:00,5010.3,0.0,32.56 -2013-12-08 01:00:00,4762.5,0.0,31.93 -2013-12-08 02:00:00,4589.2,0.0,31.16 -2013-12-08 03:00:00,4498.2,0.0,30.71 -2013-12-08 04:00:00,4447.8,0.0,29.94 -2013-12-08 05:00:00,4491.0,0.0,29.77 -2013-12-08 06:00:00,4597.4,0.0,29.77 -2013-12-08 07:00:00,4737.0,0.0,29.93 -2013-12-08 08:00:00,5021.7,0.0,29.93 -2013-12-08 09:00:00,5321.2,0.0,30.77 -2013-12-08 10:00:00,5586.3,0.0,32.07 -2013-12-08 11:00:00,5766.5,0.0,31.88 -2013-12-08 12:00:00,5872.8,0.0,32.44 -2013-12-08 13:00:00,5917.4,0.0,32.44 -2013-12-08 14:00:00,5919.1,0.0,32.81 -2013-12-08 15:00:00,5987.4,0.0,32.81 -2013-12-08 16:00:00,6208.0,0.0,32.79 -2013-12-08 17:00:00,6406.3,0.0035,29.59 -2013-12-08 18:00:00,6415.6,0.0065,29.2 -2013-12-08 19:00:00,6336.6,0.0065,29.6 -2013-12-08 20:00:00,6205.1,0.0,30.6 -2013-12-08 21:00:00,6012.4,0.0,30.39 -2013-12-08 22:00:00,5695.4,0.0,31.02 -2013-12-08 23:00:00,5319.7,0.0065,31.42 -2013-12-09 00:00:00,4957.3,0.0165,31.42 -2013-12-09 01:00:00,4725.9,0.0,31.88 -2013-12-09 02:00:00,4585.5,0.0131,32.86 -2013-12-09 03:00:00,4524.0,0.0069,33.63 -2013-12-09 04:00:00,4559.1,0.01,33.63 -2013-12-09 05:00:00,4845.8,0.0169,34.23 -2013-12-09 06:00:00,5400.1,0.0535,35.02 -2013-12-09 07:00:00,5976.5,0.03,35.8 -2013-12-09 08:00:00,6359.1,0.0431,34.22 -2013-12-09 09:00:00,6626.8,0.02,34.62 -2013-12-09 10:00:00,6748.6,0.0,36.63 -2013-12-09 11:00:00,6792.0,0.0,36.8 -2013-12-09 12:00:00,6778.0,0.0,36.4 -2013-12-09 13:00:00,6763.2,0.0,37.62 -2013-12-09 14:00:00,6758.0,0.0,37.56 -2013-12-09 15:00:00,6764.6,0.0,37.58 -2013-12-09 16:00:00,6935.7,0.0,38.38 -2013-12-09 17:00:00,7106.2,0.0,38.98 -2013-12-09 18:00:00,6939.3,0.0,38.93 -2013-12-09 19:00:00,6773.2,0.0,38.58 -2013-12-09 20:00:00,6565.3,0.0,37.91 -2013-12-09 21:00:00,6312.4,0.0,38.31 -2013-12-09 22:00:00,5933.6,0.0,37.94 -2013-12-09 23:00:00,5439.8,0.0,38.06 -2013-12-10 00:00:00,4988.9,0.0,37.85 -2013-12-10 01:00:00,4725.0,0.0,37.08 -2013-12-10 02:00:00,4567.5,0.0,36.63 -2013-12-10 03:00:00,4502.3,0.0,36.29 -2013-12-10 04:00:00,4532.9,0.0,35.73 -2013-12-10 05:00:00,4807.0,0.0,36.27 -2013-12-10 06:00:00,5362.9,0.0,35.87 -2013-12-10 07:00:00,5961.6,0.0,37.12 -2013-12-10 08:00:00,6395.4,0.03,34.16 -2013-12-10 09:00:00,6633.8,0.0235,32.81 -2013-12-10 10:00:00,6775.7,0.0235,32.81 -2013-12-10 11:00:00,6830.4,0.0,33.61 -2013-12-10 12:00:00,6873.1,0.0065,33.77 -2013-12-10 13:00:00,6880.9,0.0065,34.98 -2013-12-10 14:00:00,6853.2,0.0,34.58 -2013-12-10 15:00:00,6877.6,0.0,35.4 -2013-12-10 16:00:00,7021.7,0.0,34.6 -2013-12-10 17:00:00,7239.6,0.0,34.79 -2013-12-10 18:00:00,7099.2,0.0,33.81 -2013-12-10 19:00:00,6926.3,0.0,33.58 -2013-12-10 20:00:00,6721.6,0.0,32.71 -2013-12-10 21:00:00,6451.6,0.0,32.16 -2013-12-10 22:00:00,6076.2,0.0,31.71 -2013-12-10 23:00:00,5607.6,0.0,31.1 -2013-12-11 00:00:00,5183.5,0.0,30.5 -2013-12-11 01:00:00,4916.8,0.0,29.73 -2013-12-11 02:00:00,4767.3,0.0,29.96 -2013-12-11 03:00:00,4712.9,0.0,29.12 -2013-12-11 04:00:00,4737.1,0.0,28.68 -2013-12-11 05:00:00,5008.7,0.0,28.1 -2013-12-11 06:00:00,5602.6,0.0,27.89 -2013-12-11 07:00:00,6164.1,0.0,27.33 -2013-12-11 08:00:00,6490.0,0.0,27.94 -2013-12-11 09:00:00,6720.7,0.0,29.16 -2013-12-11 10:00:00,6806.0,0.0,29.37 -2013-12-11 11:00:00,6835.0,0.0,30.65 -2013-12-11 12:00:00,6826.9,0.0,31.83 -2013-12-11 13:00:00,6812.1,0.0,32.21 -2013-12-11 14:00:00,6779.4,0.0,33.2 -2013-12-11 15:00:00,6812.9,0.0,33.37 -2013-12-11 16:00:00,7056.0,0.0,33.21 -2013-12-11 17:00:00,7301.3,0.0,32.81 -2013-12-11 18:00:00,7137.0,0.0,32.37 -2013-12-11 19:00:00,6965.0,0.0,32.17 -2013-12-11 20:00:00,6766.6,0.0,31.73 -2013-12-11 21:00:00,6525.1,0.0,32.27 -2013-12-11 22:00:00,6144.3,0.0,32.31 -2013-12-11 23:00:00,5664.4,0.0,30.94 -2013-12-12 00:00:00,5230.1,0.0,29.71 -2013-12-12 01:00:00,4974.5,0.0,28.94 -2013-12-12 02:00:00,4826.5,0.0,28.16 -2013-12-12 03:00:00,4783.4,0.0,27.94 -2013-12-12 04:00:00,4815.6,0.0,26.56 -2013-12-12 05:00:00,5091.7,0.0,25.71 -2013-12-12 06:00:00,5687.7,0.0,25.16 -2013-12-12 07:00:00,6253.9,0.0,24.56 -2013-12-12 08:00:00,6594.8,0.0,24.16 -2013-12-12 09:00:00,6853.6,0.0,23.77 -2013-12-12 10:00:00,6949.4,0.0,23.74 -2013-12-12 11:00:00,6968.4,0.0,25.21 -2013-12-12 12:00:00,6962.1,0.0,26.14 -2013-12-12 13:00:00,6958.5,0.0,26.77 -2013-12-12 14:00:00,6925.1,0.0,27.4 -2013-12-12 15:00:00,6947.9,0.0,27.6 -2013-12-12 16:00:00,7155.8,0.0,27.23 -2013-12-12 17:00:00,7399.5,0.0,27.66 -2013-12-12 18:00:00,7240.7,0.0,26.76 -2013-12-12 19:00:00,7074.7,0.0,26.54 -2013-12-12 20:00:00,6874.6,0.0,25.54 -2013-12-12 21:00:00,6648.8,0.0,25.33 -2013-12-12 22:00:00,6282.9,0.0,25.17 -2013-12-12 23:00:00,5814.5,0.0,24.54 -2013-12-13 00:00:00,5377.7,0.0,24.1 -2013-12-13 01:00:00,5102.0,0.0,24.29 -2013-12-13 02:00:00,4948.9,0.0,24.06 -2013-12-13 03:00:00,4867.6,0.0,23.86 -2013-12-13 04:00:00,4892.6,0.0,24.02 -2013-12-13 05:00:00,5144.8,0.0,24.45 -2013-12-13 06:00:00,5700.4,0.0,25.45 -2013-12-13 07:00:00,6269.1,0.0,26.66 -2013-12-13 08:00:00,6633.4,0.0,26.66 -2013-12-13 09:00:00,6877.2,0.0,27.87 -2013-12-13 10:00:00,6960.3,0.0,29.16 -2013-12-13 11:00:00,6952.4,0.0,30.16 -2013-12-13 12:00:00,6886.6,0.0,31.84 -2013-12-13 13:00:00,6842.3,0.0,33.21 -2013-12-13 14:00:00,6787.4,0.0,34.21 -2013-12-13 15:00:00,6820.7,0.0,35.21 -2013-12-13 16:00:00,7001.7,0.0,34.6 -2013-12-13 17:00:00,7204.6,0.0,34.6 -2013-12-13 18:00:00,6999.1,0.0,34.39 -2013-12-13 19:00:00,6770.0,0.0,34.58 -2013-12-13 20:00:00,6552.9,0.0,33.73 -2013-12-13 21:00:00,6340.1,0.0,33.31 -2013-12-13 22:00:00,6048.6,0.0,33.71 -2013-12-13 23:00:00,5665.1,0.0,33.92 -2013-12-14 00:00:00,5288.4,0.0,33.71 -2013-12-14 01:00:00,5003.4,0.0,32.82 -2013-12-14 02:00:00,4843.5,0.0,30.53 -2013-12-14 03:00:00,4749.5,0.0,28.9 -2013-12-14 04:00:00,4727.8,0.0,28.23 -2013-12-14 05:00:00,4813.2,0.0,27.46 -2013-12-14 06:00:00,5019.3,0.0,26.46 -2013-12-14 07:00:00,5262.3,0.0,25.9 -2013-12-14 08:00:00,5624.0,0.0,26.29 -2013-12-14 09:00:00,5949.5,0.0,25.23 -2013-12-14 10:00:00,6192.9,0.0,26.42 -2013-12-14 11:00:00,6344.1,0.0065,26.02 -2013-12-14 12:00:00,6392.9,0.0035,25.07 -2013-12-14 13:00:00,6406.4,0.0,24.92 -2013-12-14 14:00:00,6416.6,0.0035,24.23 -2013-12-14 15:00:00,6445.3,0.0165,23.76 -2013-12-14 16:00:00,6631.8,0.0235,23.76 -2013-12-14 17:00:00,6808.2,0.0235,24.15 -2013-12-14 18:00:00,6778.8,0.0135,24.38 -2013-12-14 19:00:00,6673.7,0.0204,25.34 -2013-12-14 20:00:00,6523.4,0.0331,25.11 -2013-12-14 21:00:00,6333.5,0.05,26.16 -2013-12-14 22:00:00,6067.4,0.0392,28.73 -2013-12-14 23:00:00,5750.2,0.0196,32.69 -2013-12-15 00:00:00,5391.8,0.1331,35.6 -2013-12-15 01:00:00,5124.8,0.2715,36.46 -2013-12-15 02:00:00,4914.4,0.1803,37.63 -2013-12-15 03:00:00,4785.4,0.0035,36.35 -2013-12-15 04:00:00,4713.7,0.0,36.03 -2013-12-15 05:00:00,4766.1,0.0065,34.04 -2013-12-15 06:00:00,4878.1,0.0,31.73 -2013-12-15 07:00:00,5012.7,0.0,31.56 -2013-12-15 08:00:00,5287.4,0.0,31.16 -2013-12-15 09:00:00,5563.8,0.0,31.37 -2013-12-15 10:00:00,5771.2,0.0,32.21 -2013-12-15 11:00:00,5861.7,0.0,34.43 -2013-12-15 12:00:00,5920.4,0.0,35.65 -2013-12-15 13:00:00,5914.5,0.0,37.65 -2013-12-15 14:00:00,5896.0,0.0,39.04 -2013-12-15 15:00:00,5992.5,0.0,39.0 -2013-12-15 16:00:00,6239.2,0.0,38.21 -2013-12-15 17:00:00,6453.7,0.0,38.21 -2013-12-15 18:00:00,6430.8,0.0,38.21 -2013-12-15 19:00:00,6362.7,0.0,38.21 -2013-12-15 20:00:00,6277.5,0.0,37.37 -2013-12-15 21:00:00,6099.2,0.0,36.16 -2013-12-15 22:00:00,5816.4,0.0,34.53 -2013-12-15 23:00:00,5427.2,0.0,34.16 -2013-12-16 00:00:00,5067.7,0.0,33.76 -2013-12-16 01:00:00,4851.0,0.0,33.54 -2013-12-16 02:00:00,4694.7,0.0,33.16 -2013-12-16 03:00:00,4653.8,0.0,33.16 -2013-12-16 04:00:00,4713.0,0.0,32.77 -2013-12-16 05:00:00,5004.7,0.0,30.77 -2013-12-16 06:00:00,5574.0,0.0,29.37 -2013-12-16 07:00:00,6148.3,0.0,27.76 -2013-12-16 08:00:00,6542.7,0.0,27.16 -2013-12-16 09:00:00,6820.6,0.0,27.14 -2013-12-16 10:00:00,6942.5,0.0,26.77 -2013-12-16 11:00:00,6949.5,0.0,27.2 -2013-12-16 12:00:00,6929.7,0.0,28.61 -2013-12-16 13:00:00,6919.6,0.0,29.21 -2013-12-16 14:00:00,6896.7,0.0,30.06 -2013-12-16 15:00:00,6934.9,0.0,30.21 -2013-12-16 16:00:00,7133.8,0.0,29.44 -2013-12-16 17:00:00,7364.9,0.0,29.0 -2013-12-16 18:00:00,7274.8,0.0,28.39 -2013-12-16 19:00:00,7112.6,0.0,28.56 -2013-12-16 20:00:00,6915.7,0.0,27.93 -2013-12-16 21:00:00,6662.7,0.0,27.35 -2013-12-16 22:00:00,6295.3,0.0,26.5 -2013-12-16 23:00:00,5717.2,0.0,26.16 -2013-12-17 00:00:00,5286.6,0.0,25.73 -2013-12-17 01:00:00,5025.5,0.0,26.57 -2013-12-17 02:00:00,4863.4,0.0,26.65 -2013-12-17 03:00:00,4792.7,0.0,26.8 -2013-12-17 04:00:00,4814.5,0.0,27.02 -2013-12-17 05:00:00,5080.4,0.0,26.8 -2013-12-17 06:00:00,5680.5,0.0,25.39 -2013-12-17 07:00:00,6284.0,0.0035,24.44 -2013-12-17 08:00:00,6668.1,0.0,25.27 -2013-12-17 09:00:00,6943.5,0.0,25.65 -2013-12-17 10:00:00,7033.6,0.0035,27.06 -2013-12-17 11:00:00,7077.1,0.01,27.29 -2013-12-17 12:00:00,7065.0,0.0131,28.07 -2013-12-17 13:00:00,7087.4,0.0104,29.42 -2013-12-17 14:00:00,7094.4,0.0035,30.26 -2013-12-17 15:00:00,7140.2,0.0035,29.71 -2013-12-17 16:00:00,7299.8,0.01,29.13 -2013-12-17 17:00:00,7494.9,0.0,27.23 -2013-12-17 18:00:00,7303.1,0.0,26.02 -2013-12-17 19:00:00,7074.1,0.0,25.39 -2013-12-17 20:00:00,6928.0,0.0,25.39 -2013-12-17 21:00:00,6643.4,0.0,25.0 -2013-12-17 22:00:00,6258.5,0.0,24.39 -2013-12-17 23:00:00,5797.8,0.0,24.17 -2013-12-18 00:00:00,5359.3,0.0,23.73 -2013-12-18 01:00:00,5091.4,0.0,23.52 -2013-12-18 02:00:00,4930.4,0.0,24.35 -2013-12-18 03:00:00,4858.4,0.0,24.56 -2013-12-18 04:00:00,4881.9,0.0,24.93 -2013-12-18 05:00:00,5138.2,0.0,25.76 -2013-12-18 06:00:00,5697.9,0.0,25.39 -2013-12-18 07:00:00,6240.6,0.0,25.36 -2013-12-18 08:00:00,6562.8,0.0,24.88 -2013-12-18 09:00:00,6773.6,0.0,27.35 -2013-12-18 10:00:00,6866.3,0.0,29.98 -2013-12-18 11:00:00,6880.0,0.0,32.21 -2013-12-18 12:00:00,6844.7,0.0,34.5 -2013-12-18 13:00:00,6829.4,0.0,36.21 -2013-12-18 14:00:00,6789.0,0.0,36.81 -2013-12-18 15:00:00,6847.4,0.0,37.21 -2013-12-18 16:00:00,7044.0,0.0,37.0 -2013-12-18 17:00:00,7279.7,0.0,35.16 -2013-12-18 18:00:00,7130.5,0.0,34.39 -2013-12-18 19:00:00,6948.0,0.0,34.94 -2013-12-18 20:00:00,6759.7,0.0,34.94 -2013-12-18 21:00:00,6551.4,0.0,34.73 -2013-12-18 22:00:00,6207.8,0.0,33.52 -2013-12-18 23:00:00,5756.8,0.0,33.5 -2013-12-19 00:00:00,5267.2,0.0,33.27 -2013-12-19 01:00:00,4997.2,0.0,31.93 -2013-12-19 02:00:00,4829.9,0.0,31.29 -2013-12-19 03:00:00,4758.3,0.0,30.63 -2013-12-19 04:00:00,4784.9,0.0,30.04 -2013-12-19 05:00:00,5037.0,0.0,30.25 -2013-12-19 06:00:00,5611.5,0.0,30.34 -2013-12-19 07:00:00,6153.4,0.0,31.17 -2013-12-19 08:00:00,6457.7,0.0,31.94 -2013-12-19 09:00:00,6674.3,0.0,33.63 -2013-12-19 10:00:00,6752.9,0.0,35.85 -2013-12-19 11:00:00,6756.6,0.0,39.07 -2013-12-19 12:00:00,6736.7,0.0,39.35 -2013-12-19 13:00:00,6699.8,0.0,41.2 -2013-12-19 14:00:00,6677.4,0.0,42.6 -2013-12-19 15:00:00,6720.0,0.0,43.77 -2013-12-19 16:00:00,6912.5,0.0,44.64 -2013-12-19 17:00:00,7127.6,0.0,43.56 -2013-12-19 18:00:00,6933.4,0.0,43.35 -2013-12-19 19:00:00,6740.0,0.0,43.13 -2013-12-19 20:00:00,6549.3,0.0,43.29 -2013-12-19 21:00:00,6303.0,0.0,42.94 -2013-12-19 22:00:00,5936.4,0.0,42.69 -2013-12-19 23:00:00,5472.1,0.0,43.08 -2013-12-20 00:00:00,5052.9,0.0,42.08 -2013-12-20 01:00:00,4759.4,0.0,40.63 -2013-12-20 02:00:00,4582.8,0.0,40.46 -2013-12-20 03:00:00,4534.2,0.0,40.95 -2013-12-20 04:00:00,4556.8,0.0,39.22 -2013-12-20 05:00:00,4803.3,0.0,40.52 -2013-12-20 06:00:00,5357.2,0.0,40.95 -2013-12-20 07:00:00,5896.0,0.0,40.69 -2013-12-20 08:00:00,6210.1,0.0,40.81 -2013-12-20 09:00:00,6437.3,0.0,41.9 -2013-12-20 10:00:00,6533.2,0.0,44.16 -2013-12-20 11:00:00,6554.4,0.0,47.12 -2013-12-20 12:00:00,6533.9,0.0,47.54 -2013-12-20 13:00:00,6494.7,0.0,49.04 -2013-12-20 14:00:00,6454.2,0.0,49.38 -2013-12-20 15:00:00,6462.1,0.0,50.4 -2013-12-20 16:00:00,6630.3,0.0,51.43 -2013-12-20 17:00:00,6830.7,0.0,50.42 -2013-12-20 18:00:00,6636.8,0.0,50.13 -2013-12-20 19:00:00,6446.5,0.0,50.53 -2013-12-20 20:00:00,6235.8,0.0,50.15 -2013-12-20 21:00:00,5984.2,0.0,50.32 -2013-12-20 22:00:00,5727.3,0.0,49.32 -2013-12-20 23:00:00,5355.8,0.0,49.21 -2013-12-21 00:00:00,4976.2,0.0,49.39 -2013-12-21 01:00:00,4699.8,0.0,49.05 -2013-12-21 02:00:00,4520.8,0.0,49.05 -2013-12-21 03:00:00,4421.2,0.0,48.9 -2013-12-21 04:00:00,4383.8,0.0,48.68 -2013-12-21 05:00:00,4452.5,0.0,48.3 -2013-12-21 06:00:00,4643.1,0.0,49.49 -2013-12-21 07:00:00,4825.1,0.0,49.05 -2013-12-21 08:00:00,5105.9,0.0,49.9 -2013-12-21 09:00:00,5371.2,0.0,51.36 -2013-12-21 10:00:00,5536.5,0.0,53.41 -2013-12-21 11:00:00,5608.4,0.0,53.78 -2013-12-21 12:00:00,5612.6,0.0,55.98 -2013-12-21 13:00:00,5573.3,0.0035,57.44 -2013-12-21 14:00:00,5539.1,0.0,59.11 -2013-12-21 15:00:00,5545.9,0.0,58.25 -2013-12-21 16:00:00,5709.1,0.0,57.18 -2013-12-21 17:00:00,5983.1,0.0,55.18 -2013-12-21 18:00:00,5983.1,0.0,55.58 -2013-12-21 19:00:00,5891.2,0.0,55.81 -2013-12-21 20:00:00,5765.7,0.0,56.02 -2013-12-21 21:00:00,5611.9,0.0035,55.26 -2013-12-21 22:00:00,5407.4,0.0,55.96 -2013-12-21 23:00:00,5122.1,0.0,55.99 -2013-12-22 00:00:00,4818.1,0.0,54.83 -2013-12-22 01:00:00,4550.4,0.0,55.73 -2013-12-22 02:00:00,4374.2,0.0,54.89 -2013-12-22 03:00:00,4273.8,0.0,55.99 -2013-12-22 04:00:00,4236.8,0.0065,56.45 -2013-12-22 05:00:00,4276.4,0.0,58.15 -2013-12-22 06:00:00,4391.6,0.0069,57.86 -2013-12-22 07:00:00,4545.9,0.0035,59.08 -2013-12-22 08:00:00,4784.4,0.0035,59.06 -2013-12-22 09:00:00,5069.6,0.0,59.6 -2013-12-22 10:00:00,5310.0,0.0035,63.22 -2013-12-22 11:00:00,5464.9,0.0,66.22 -2013-12-22 12:00:00,5540.9,0.0,67.34 -2013-12-22 13:00:00,5537.8,0.0,66.79 -2013-12-22 14:00:00,5549.1,0.0,66.88 -2013-12-22 15:00:00,5549.5,0.0,62.05 -2013-12-22 16:00:00,5709.2,0.0,62.12 -2013-12-22 17:00:00,5926.8,0.0,62.67 -2013-12-22 18:00:00,5939.0,0.0,61.26 -2013-12-22 19:00:00,5877.5,0.0,63.38 -2013-12-22 20:00:00,5774.6,0.0,63.28 -2013-12-22 21:00:00,5641.2,0.0,62.7 -2013-12-22 22:00:00,5405.7,0.0,63.01 -2013-12-22 23:00:00,5066.3,0.0,62.09 -2013-12-23 00:00:00,4723.2,0.0,61.66 -2013-12-23 01:00:00,4480.8,0.0,60.7 -2013-12-23 02:00:00,4338.7,0.0,59.36 -2013-12-23 03:00:00,4276.9,0.0,59.33 -2013-12-23 04:00:00,4297.3,0.0,60.77 -2013-12-23 05:00:00,4505.3,0.0,60.3 -2013-12-23 06:00:00,4993.7,0.02,59.87 -2013-12-23 07:00:00,5485.4,0.0527,59.11 -2013-12-23 08:00:00,5918.8,0.0269,57.64 -2013-12-23 09:00:00,6248.4,0.0239,58.31 -2013-12-23 10:00:00,6402.8,0.0104,58.48 -2013-12-23 11:00:00,6459.6,0.01,58.12 -2013-12-23 12:00:00,6530.4,0.0604,58.54 -2013-12-23 13:00:00,6517.9,0.0643,53.71 -2013-12-23 14:00:00,6497.1,0.0169,52.18 -2013-12-23 15:00:00,6500.4,0.04,50.84 -2013-12-23 16:00:00,6616.1,0.03,50.84 -2013-12-23 17:00:00,6716.9,0.0331,50.94 -2013-12-23 18:00:00,6519.0,0.0,50.25 -2013-12-23 19:00:00,6325.7,0.0065,50.71 -2013-12-23 20:00:00,6144.6,0.0,47.25 -2013-12-23 21:00:00,5929.7,0.0,45.43 -2013-12-23 22:00:00,5637.8,0.0131,43.65 -2013-12-23 23:00:00,5261.4,0.0,43.06 -2013-12-24 00:00:00,4868.4,0.0,42.21 -2013-12-24 01:00:00,4590.8,0.0,40.84 -2013-12-24 02:00:00,4418.7,0.0,39.0 -2013-12-24 03:00:00,4351.8,0.0,38.16 -2013-12-24 04:00:00,4371.3,0.0,37.21 -2013-12-24 05:00:00,4566.9,0.0,36.37 -2013-12-24 06:00:00,4966.2,0.0,36.0 -2013-12-24 07:00:00,5383.7,0.0,35.0 -2013-12-24 08:00:00,5759.4,0.0,34.6 -2013-12-24 09:00:00,6036.9,0.0,34.44 -2013-12-24 10:00:00,6154.7,0.0,35.43 -2013-12-24 11:00:00,6181.4,0.0,36.64 -2013-12-24 12:00:00,6185.5,0.0,38.48 -2013-12-24 13:00:00,6128.9,0.0,39.5 -2013-12-24 14:00:00,6103.0,0.0,39.43 -2013-12-24 15:00:00,6112.6,0.0,38.77 -2013-12-24 16:00:00,6249.0,0.0,37.77 -2013-12-24 17:00:00,6449.8,0.0,36.37 -2013-12-24 18:00:00,6271.3,0.0,36.0 -2013-12-24 19:00:00,6105.9,0.0,35.08 -2013-12-24 20:00:00,5943.5,0.0,33.0 -2013-12-24 21:00:00,5757.1,0.0,31.77 -2013-12-24 22:00:00,5580.5,0.0,30.56 -2013-12-24 23:00:00,5354.7,0.0,28.56 -2013-12-25 00:00:00,5117.3,0.0,27.33 -2013-12-25 01:00:00,4936.7,0.0,25.56 -2013-12-25 02:00:00,4771.3,0.0,24.16 -2013-12-25 03:00:00,4681.3,0.0,23.16 -2013-12-25 04:00:00,4648.4,0.0,21.93 -2013-12-25 05:00:00,4701.8,0.0,20.77 -2013-12-25 06:00:00,4811.9,0.0,20.16 -2013-12-25 07:00:00,4916.4,0.0,20.16 -2013-12-25 08:00:00,5124.9,0.0,19.77 -2013-12-25 09:00:00,5317.0,0.0,20.37 -2013-12-25 10:00:00,5469.6,0.0,21.53 -2013-12-25 11:00:00,5550.4,0.0,23.14 -2013-12-25 12:00:00,5579.3,0.0,24.77 -2013-12-25 13:00:00,5576.5,0.0,25.98 -2013-12-25 14:00:00,5557.3,0.0,26.43 -2013-12-25 15:00:00,5573.4,0.0,27.21 -2013-12-25 16:00:00,5705.9,0.0,27.21 -2013-12-25 17:00:00,5906.9,0.0,27.44 -2013-12-25 18:00:00,5879.7,0.0,27.44 -2013-12-25 19:00:00,5813.1,0.0,27.65 -2013-12-25 20:00:00,5762.3,0.0,28.29 -2013-12-25 21:00:00,5672.5,0.0,28.44 -2013-12-25 22:00:00,5502.5,0.0,29.07 -2013-12-25 23:00:00,5240.4,0.0,29.92 -2013-12-26 00:00:00,4976.0,0.0,29.69 -2013-12-26 01:00:00,4747.8,0.0,30.09 -2013-12-26 02:00:00,4612.0,0.0,29.63 -2013-12-26 03:00:00,4551.4,0.0,29.84 -2013-12-26 04:00:00,4566.9,0.0,29.84 -2013-12-26 05:00:00,4847.1,0.0,30.24 -2013-12-26 06:00:00,5183.4,0.0,30.07 -2013-12-26 07:00:00,5577.2,0.0,30.44 -2013-12-26 08:00:00,5963.6,0.0,31.61 -2013-12-26 09:00:00,6239.8,0.0,31.77 -2013-12-26 10:00:00,6409.9,0.0,33.01 -2013-12-26 11:00:00,6505.1,0.0,33.83 -2013-12-26 12:00:00,6532.8,0.0,33.54 -2013-12-26 13:00:00,6507.8,0.0,33.56 -2013-12-26 14:00:00,6463.3,0.0,34.83 -2013-12-26 15:00:00,6468.6,0.0,35.61 -2013-12-26 16:00:00,6612.2,0.0,35.6 -2013-12-26 17:00:00,6866.5,0.0,35.37 -2013-12-26 18:00:00,6714.0,0.0,34.94 -2013-12-26 19:00:00,6540.0,0.0,35.17 -2013-12-26 20:00:00,6356.8,0.0,34.94 -2013-12-26 21:00:00,6128.8,0.0,35.56 -2013-12-26 22:00:00,5819.9,0.0,35.33 -2013-12-26 23:00:00,5441.5,0.0,34.71 -2013-12-27 00:00:00,5070.5,0.0,33.93 -2013-12-27 01:00:00,4822.4,0.0,33.48 -2013-12-27 02:00:00,4663.9,0.0,33.06 -2013-12-27 03:00:00,4583.7,0.0,32.08 -2013-12-27 04:00:00,4589.6,0.0,32.9 -2013-12-27 05:00:00,4775.0,0.0,32.5 -2013-12-27 06:00:00,5180.7,0.0,32.35 -2013-12-27 07:00:00,5571.6,0.0,32.12 -2013-12-27 08:00:00,5904.4,0.0,32.35 -2013-12-27 09:00:00,6162.9,0.0,33.14 -2013-12-27 10:00:00,6284.8,0.0,34.75 -2013-12-27 11:00:00,6338.9,0.0,35.6 -2013-12-27 12:00:00,6340.7,0.0,36.97 -2013-12-27 13:00:00,6349.9,0.0,37.98 -2013-12-27 14:00:00,6309.1,0.0,38.61 -2013-12-27 15:00:00,6339.8,0.0,39.21 -2013-12-27 16:00:00,6541.5,0.0,40.21 -2013-12-27 17:00:00,6748.4,0.0,40.0 -2013-12-27 18:00:00,6588.6,0.0,39.56 -2013-12-27 19:00:00,6412.9,0.0,39.12 -2013-12-27 20:00:00,6216.3,0.0,38.35 -2013-12-27 21:00:00,5993.7,0.0,38.35 -2013-12-27 22:00:00,5671.7,0.0,36.86 -2013-12-27 23:00:00,5385.0,0.0,37.08 -2013-12-28 00:00:00,5038.0,0.0,36.08 -2013-12-28 01:00:00,4785.6,0.0,35.49 -2013-12-28 02:00:00,4622.8,0.0,35.12 -2013-12-28 03:00:00,4536.4,0.0,35.11 -2013-12-28 04:00:00,4427.9,0.0,35.72 -2013-12-28 05:00:00,4472.2,0.0,35.05 -2013-12-28 06:00:00,4698.2,0.0,34.45 -2013-12-28 07:00:00,4894.8,0.0,34.37 -2013-12-28 08:00:00,5130.0,0.0,35.21 -2013-12-28 09:00:00,5364.1,0.0,38.14 -2013-12-28 10:00:00,5564.4,0.0,42.66 -2013-12-28 11:00:00,5626.5,0.0,44.75 -2013-12-28 12:00:00,5628.0,0.0,47.41 -2013-12-28 13:00:00,5567.5,0.0,49.83 -2013-12-28 14:00:00,5542.7,0.0,52.37 -2013-12-28 15:00:00,5502.7,0.0,53.61 -2013-12-28 16:00:00,5636.1,0.0,53.6 -2013-12-28 17:00:00,5915.0,0.0,52.61 -2013-12-28 18:00:00,5923.7,0.0,51.34 -2013-12-28 19:00:00,5855.7,0.0,48.71 -2013-12-28 20:00:00,5743.2,0.0,48.13 -2013-12-28 21:00:00,5609.5,0.0,47.29 -2013-12-28 22:00:00,5414.0,0.0,47.35 -2013-12-28 23:00:00,5132.5,0.0,47.53 -2013-12-29 00:00:00,4826.2,0.0,46.38 -2013-12-29 01:00:00,4595.2,0.0,44.84 -2013-12-29 02:00:00,4402.3,0.0,43.24 -2013-12-29 03:00:00,4310.3,0.0,44.05 -2013-12-29 04:00:00,4272.0,0.0,43.35 -2013-12-29 05:00:00,4315.9,0.0,43.38 -2013-12-29 06:00:00,4419.2,0.0,43.99 -2013-12-29 07:00:00,4547.4,0.0,42.95 -2013-12-29 08:00:00,4758.5,0.0,43.82 -2013-12-29 09:00:00,5046.9,0.0,44.8 -2013-12-29 10:00:00,5265.7,0.0,45.4 -2013-12-29 11:00:00,5441.3,0.0,46.06 -2013-12-29 12:00:00,5569.6,0.0304,43.77 -2013-12-29 13:00:00,5670.5,0.1061,41.88 -2013-12-29 14:00:00,5734.5,0.1169,41.31 -2013-12-29 15:00:00,5808.1,0.1576,41.65 -2013-12-29 16:00:00,5914.3,0.3229,42.27 -2013-12-29 17:00:00,6051.2,0.04,42.27 -2013-12-29 18:00:00,6031.8,0.0135,43.24 -2013-12-29 19:00:00,5942.0,0.0035,42.06 -2013-12-29 20:00:00,5834.1,0.0,41.43 -2013-12-29 21:00:00,5670.5,0.0,42.84 -2013-12-29 22:00:00,5427.9,0.0,42.23 -2013-12-29 23:00:00,5095.6,0.0,43.21 -2013-12-30 00:00:00,4797.6,0.0,43.0 -2013-12-30 01:00:00,4564.9,0.0,41.79 -2013-12-30 02:00:00,4416.1,0.0,41.5 -2013-12-30 03:00:00,4349.0,0.0,40.45 -2013-12-30 04:00:00,4383.6,0.0,41.3 -2013-12-30 05:00:00,4603.2,0.0,39.86 -2013-12-30 06:00:00,5052.7,0.0,40.24 -2013-12-30 07:00:00,5474.8,0.0,40.93 -2013-12-30 08:00:00,5868.3,0.0,42.25 -2013-12-30 09:00:00,6140.5,0.0,43.17 -2013-12-30 10:00:00,6291.6,0.0,44.21 -2013-12-30 11:00:00,6444.8,0.0,41.83 -2013-12-30 12:00:00,6468.9,0.0,40.06 -2013-12-30 13:00:00,6469.9,0.0,38.06 -2013-12-30 14:00:00,6455.9,0.0,37.06 -2013-12-30 15:00:00,6488.2,0.0,36.44 -2013-12-30 16:00:00,6660.9,0.0,34.07 -2013-12-30 17:00:00,6850.2,0.0,32.0 -2013-12-30 18:00:00,6762.4,0.0,30.77 -2013-12-30 19:00:00,6640.9,0.0,29.0 -2013-12-30 20:00:00,6479.7,0.0,28.0 -2013-12-30 21:00:00,6266.9,0.0,26.93 -2013-12-30 22:00:00,5982.9,0.0,25.37 -2013-12-30 23:00:00,5604.6,0.0,24.93 -2013-12-31 00:00:00,5235.2,0.0,24.0 -2013-12-31 01:00:00,4974.3,0.0,23.16 -2013-12-31 02:00:00,4793.2,0.0,22.6 -2013-12-31 03:00:00,4697.6,0.0,22.44 -2013-12-31 04:00:00,4702.3,0.0,22.04 -2013-12-31 05:00:00,4894.9,0.0,21.44 -2013-12-31 06:00:00,5291.1,0.0,22.21 -2013-12-31 07:00:00,5683.5,0.0,22.21 -2013-12-31 08:00:00,6069.7,0.0,22.84 -2013-12-31 09:00:00,6321.4,0.0,24.06 -2013-12-31 10:00:00,6454.8,0.0,25.61 -2013-12-31 11:00:00,6571.9,0.0,27.21 -2013-12-31 12:00:00,6569.1,0.0,28.21 -2013-12-31 13:00:00,6547.2,0.0,29.27 -2013-12-31 14:00:00,6535.7,0.0,30.84 -2013-12-31 15:00:00,6566.2,0.0,32.21 -2013-12-31 16:00:00,6642.6,0.0,31.37 -2013-12-31 17:00:00,6904.2,0.0,32.0 -2013-12-31 18:00:00,6780.2,0.0,32.37 -2013-12-31 19:00:00,6583.6,0.0,31.31 -2013-12-31 20:00:00,6323.6,0.0,31.16 -2013-12-31 21:00:00,6074.9,0.0,30.16 -2013-12-31 22:00:00,5825.1,0.0,29.0 -2013-12-31 23:00:00,5604.0,0.0,28.16 -2014-01-01 00:00:00,5371.5,0.0,27.0 -2014-01-01 01:00:00,5191.1,0.0,26.16 -2014-01-01 02:00:00,4998.2,0.0,25.6 -2014-01-01 03:00:00,4859.9,0.0,25.16 -2014-01-01 04:00:00,4785.2,0.0,24.79 -2014-01-01 05:00:00,4801.9,0.0,24.31 -2014-01-01 06:00:00,4898.7,0.0,24.75 -2014-01-01 07:00:00,4954.1,0.0,25.36 -2014-01-01 08:00:00,5068.3,0.0,26.08 -2014-01-01 09:00:00,5230.9,0.0,28.4 -2014-01-01 10:00:00,5432.4,0.0,29.21 -2014-01-01 11:00:00,5580.2,0.0,30.69 -2014-01-01 12:00:00,5676.1,0.0,30.43 -2014-01-01 13:00:00,5713.9,0.0,31.43 -2014-01-01 14:00:00,5739.0,0.0,32.21 -2014-01-01 15:00:00,5783.6,0.0,32.43 -2014-01-01 16:00:00,5954.9,0.0,32.83 -2014-01-01 17:00:00,6233.7,0.0,33.06 -2014-01-01 18:00:00,6249.3,0.0,32.9 -2014-01-01 19:00:00,6173.9,0.0,32.29 -2014-01-01 20:00:00,6088.3,0.0,32.52 -2014-01-01 21:00:00,5924.8,0.0,31.88 -2014-01-01 22:00:00,5653.9,0.0,32.29 -2014-01-01 23:00:00,5311.0,0.0,32.29 -2014-01-02 00:00:00,5002.6,0.0,32.51 -2014-01-02 01:00:00,4788.6,0.0,32.39 -2014-01-02 02:00:00,4647.8,0.0,32.32 -2014-01-02 03:00:00,4597.8,0.0,32.18 -2014-01-02 04:00:00,4658.1,0.0,29.78 -2014-01-02 05:00:00,4916.8,0.0,29.02 -2014-01-02 06:00:00,5458.7,0.01,28.02 -2014-01-02 07:00:00,6008.3,0.0,27.51 -2014-01-02 08:00:00,6427.7,0.0,27.32 -2014-01-02 09:00:00,6728.8,0.0,27.37 -2014-01-02 10:00:00,6913.7,0.0,27.37 -2014-01-02 11:00:00,7017.2,0.0,27.37 -2014-01-02 12:00:00,7089.7,0.0,27.25 -2014-01-02 13:00:00,7105.5,0.0,27.06 -2014-01-02 14:00:00,7095.3,0.0,26.16 -2014-01-02 15:00:00,7147.7,0.0,26.67 -2014-01-02 16:00:00,7313.5,0.0,26.97 -2014-01-02 17:00:00,7424.8,0.0,26.31 -2014-01-02 18:00:00,7265.8,0.0,25.62 -2014-01-02 19:00:00,7100.6,0.0,24.81 -2014-01-02 20:00:00,6876.1,0.0069,23.6 -2014-01-02 21:00:00,6629.3,0.0235,21.52 -2014-01-02 22:00:00,6300.9,0.0535,20.74 -2014-01-02 23:00:00,5910.4,0.0469,19.15 -2014-01-03 00:00:00,5530.2,0.0296,17.54 -2014-01-03 01:00:00,5284.1,0.0369,15.61 -2014-01-03 02:00:00,5154.2,0.0169,13.0 -2014-01-03 03:00:00,5092.0,0.0235,12.07 -2014-01-03 04:00:00,5136.6,0.0169,12.14 -2014-01-03 05:00:00,5297.0,0.0165,12.02 -2014-01-03 06:00:00,5612.0,0.0,12.46 -2014-01-03 07:00:00,5949.0,0.0035,12.26 -2014-01-03 08:00:00,6276.1,0.0,11.56 -2014-01-03 09:00:00,6565.9,0.0,11.82 -2014-01-03 10:00:00,6763.5,0.0,12.82 -2014-01-03 11:00:00,6818.2,0.0139,15.76 -2014-01-03 12:00:00,6928.0,0.0,17.93 -2014-01-03 13:00:00,6923.0,0.0,17.68 -2014-01-03 14:00:00,6912.3,0.0,18.23 -2014-01-03 15:00:00,6927.9,0.0,18.12 -2014-01-03 16:00:00,7059.5,0.0,16.77 -2014-01-03 17:00:00,7358.2,0.0,15.63 -2014-01-03 18:00:00,7298.9,0.0,14.75 -2014-01-03 19:00:00,7153.2,0.0,13.84 -2014-01-03 20:00:00,6960.3,0.0,13.1 -2014-01-03 21:00:00,6741.0,0.0,11.61 -2014-01-03 22:00:00,6458.4,0.0,12.07 -2014-01-03 23:00:00,6103.3,0.0,10.95 -2014-01-04 00:00:00,5733.8,0.0,10.14 -2014-01-04 01:00:00,5461.3,0.0,9.65 -2014-01-04 02:00:00,5288.8,0.0,9.95 -2014-01-04 03:00:00,5181.4,0.0,9.44 -2014-01-04 04:00:00,5135.8,0.0,9.6 -2014-01-04 05:00:00,5187.9,0.0,10.01 -2014-01-04 06:00:00,5361.5,0.0,10.22 -2014-01-04 07:00:00,5549.0,0.0,11.24 -2014-01-04 08:00:00,5801.3,0.0,11.46 -2014-01-04 09:00:00,6035.0,0.0,13.46 -2014-01-04 10:00:00,6240.6,0.0,16.12 -2014-01-04 11:00:00,6355.1,0.0,18.69 -2014-01-04 12:00:00,6364.9,0.0,20.63 -2014-01-04 13:00:00,6356.5,0.0,22.21 -2014-01-04 14:00:00,6326.9,0.0,23.65 -2014-01-04 15:00:00,6321.7,0.0,25.34 -2014-01-04 16:00:00,6425.6,0.0,26.39 -2014-01-04 17:00:00,6715.2,0.0,25.66 -2014-01-04 18:00:00,6749.3,0.0,25.93 -2014-01-04 19:00:00,6616.3,0.0,25.96 -2014-01-04 20:00:00,6462.3,0.0,26.91 -2014-01-04 21:00:00,6286.5,0.0,26.54 -2014-01-04 22:00:00,6078.2,0.0,25.54 -2014-01-04 23:00:00,5801.3,0.0,25.67 -2014-01-05 00:00:00,5463.2,0.0,25.58 -2014-01-05 01:00:00,5199.7,0.0,24.92 -2014-01-05 02:00:00,5013.3,0.0,24.92 -2014-01-05 03:00:00,4908.6,0.0,24.54 -2014-01-05 04:00:00,4860.5,0.0,24.82 -2014-01-05 05:00:00,4894.8,0.0,24.65 -2014-01-05 06:00:00,4986.7,0.0,24.56 -2014-01-05 07:00:00,5106.8,0.0,25.73 -2014-01-05 08:00:00,5320.6,0.0,26.66 -2014-01-05 09:00:00,5600.7,0.0,28.19 -2014-01-05 10:00:00,5858.6,0.0131,29.08 -2014-01-05 11:00:00,6032.5,0.0196,30.49 -2014-01-05 12:00:00,6110.4,0.0065,29.78 -2014-01-05 13:00:00,6150.3,0.01,30.52 -2014-01-05 14:00:00,6167.0,0.0035,31.59 -2014-01-05 15:00:00,6201.2,0.0,33.57 -2014-01-05 16:00:00,6349.0,0.0,34.28 -2014-01-05 17:00:00,6544.4,0.0,34.4 -2014-01-05 18:00:00,6523.9,0.0,34.74 -2014-01-05 19:00:00,6414.4,0.0,36.9 -2014-01-05 20:00:00,6271.7,0.0,37.21 -2014-01-05 21:00:00,6050.5,0.0169,38.07 -2014-01-05 22:00:00,5734.3,0.0035,38.55 -2014-01-05 23:00:00,5364.1,0.0,40.62 -2014-01-06 00:00:00,5024.2,0.0104,47.69 -2014-01-06 01:00:00,4802.7,0.0412,50.64 -2014-01-06 02:00:00,4661.3,0.0131,51.33 -2014-01-06 03:00:00,4585.6,0.0035,52.38 -2014-01-06 04:00:00,4605.8,0.0035,51.56 -2014-01-06 05:00:00,4877.7,0.0035,51.54 -2014-01-06 06:00:00,5406.3,0.01,51.99 -2014-01-06 07:00:00,5955.5,0.0035,52.59 -2014-01-06 08:00:00,6293.0,0.0069,53.05 -2014-01-06 09:00:00,6545.3,0.0392,49.79 -2014-01-06 10:00:00,6673.5,0.08,47.88 -2014-01-06 11:00:00,6685.2,0.0496,46.08 -2014-01-06 12:00:00,6748.3,0.0,45.85 -2014-01-06 13:00:00,6777.7,0.01,42.25 -2014-01-06 14:00:00,6743.4,0.0065,40.61 -2014-01-06 15:00:00,6735.0,0.0,40.73 -2014-01-06 16:00:00,6910.6,0.0,40.19 -2014-01-06 17:00:00,7115.0,0.0,38.98 -2014-01-06 18:00:00,7008.6,0.0,37.12 -2014-01-06 19:00:00,6869.4,0.0,36.0 -2014-01-06 20:00:00,6681.2,0.0,34.87 -2014-01-06 21:00:00,6494.3,0.0,32.36 -2014-01-06 22:00:00,6209.4,0.0,29.6 -2014-01-06 23:00:00,5833.6,0.0,25.6 -2014-01-07 00:00:00,5488.9,0.0,20.19 -2014-01-07 01:00:00,5295.2,0.0,15.04 -2014-01-07 02:00:00,5179.1,0.0,12.89 -2014-01-07 03:00:00,5129.4,0.0,11.7 -2014-01-07 04:00:00,5208.5,0.0,10.02 -2014-01-07 05:00:00,5488.1,0.0,8.55 -2014-01-07 06:00:00,6000.7,0.0,7.1 -2014-01-07 07:00:00,6578.7,0.0,5.87 -2014-01-07 08:00:00,6940.6,0.0,5.06 -2014-01-07 09:00:00,7219.0,0.0,5.41 -2014-01-07 10:00:00,7401.7,0.0,5.72 -2014-01-07 11:00:00,7478.6,0.0,6.83 -2014-01-07 12:00:00,7506.1,0.0,7.83 -2014-01-07 13:00:00,7506.4,0.0,8.69 -2014-01-07 14:00:00,7501.1,0.0,9.48 -2014-01-07 15:00:00,7529.2,0.0,10.34 -2014-01-07 16:00:00,7653.3,0.0,9.8 -2014-01-07 17:00:00,7895.5,0.0,9.67 -2014-01-07 18:00:00,7809.8,0.0,9.73 -2014-01-07 19:00:00,7652.8,0.0,9.67 -2014-01-07 20:00:00,7439.8,0.0,9.87 -2014-01-07 21:00:00,7131.0,0.0,9.53 -2014-01-07 22:00:00,6766.8,0.0,9.67 -2014-01-07 23:00:00,6268.8,0.0,9.53 -2014-01-08 00:00:00,5864.5,0.0,9.73 -2014-01-08 01:00:00,5604.5,0.0,9.67 -2014-01-08 02:00:00,5452.2,0.0,10.14 -2014-01-08 03:00:00,5391.1,0.0,9.88 -2014-01-08 04:00:00,5419.4,0.0,9.88 -2014-01-08 05:00:00,5662.6,0.0,10.02 -2014-01-08 06:00:00,6174.8,0.0,10.02 -2014-01-08 07:00:00,6735.0,0.0,9.88 -2014-01-08 08:00:00,7020.6,0.0,9.97 -2014-01-08 09:00:00,7255.3,0.0,11.26 -2014-01-08 10:00:00,7367.9,0.0,12.94 -2014-01-08 11:00:00,7398.9,0.0,14.44 -2014-01-08 12:00:00,7408.2,0.0,16.34 -2014-01-08 13:00:00,7379.4,0.0,17.98 -2014-01-08 14:00:00,7342.7,0.0,19.61 -2014-01-08 15:00:00,7349.2,0.0,21.05 -2014-01-08 16:00:00,7488.7,0.0,21.94 -2014-01-08 17:00:00,7728.3,0.0,21.48 -2014-01-08 18:00:00,7608.1,0.0,20.79 -2014-01-08 19:00:00,7453.9,0.0,21.33 -2014-01-08 20:00:00,7219.7,0.0,21.33 -2014-01-08 21:00:00,6905.9,0.0,21.94 -2014-01-08 22:00:00,6523.4,0.0,22.14 -2014-01-08 23:00:00,6033.8,0.0,22.68 -2014-01-09 00:00:00,5603.4,0.0,22.68 -2014-01-09 01:00:00,5328.6,0.0,23.49 -2014-01-09 02:00:00,5188.4,0.0,23.68 -2014-01-09 03:00:00,5107.7,0.0,24.02 -2014-01-09 04:00:00,5125.9,0.0,23.82 -2014-01-09 05:00:00,5359.8,0.0,23.68 -2014-01-09 06:00:00,5890.1,0.0,23.14 -2014-01-09 07:00:00,6455.0,0.0,22.76 -2014-01-09 08:00:00,6757.3,0.0,23.34 -2014-01-09 09:00:00,6969.0,0.0,24.21 -2014-01-09 10:00:00,7066.7,0.0,26.3 -2014-01-09 11:00:00,7065.9,0.0,27.28 -2014-01-09 12:00:00,7067.9,0.0,28.59 -2014-01-09 13:00:00,7042.6,0.0,30.68 -2014-01-09 14:00:00,6985.1,0.0,31.8 -2014-01-09 15:00:00,6992.5,0.0,32.52 -2014-01-09 16:00:00,7127.3,0.0,32.51 -2014-01-09 17:00:00,7363.8,0.0,31.24 -2014-01-09 18:00:00,7243.9,0.0,30.05 -2014-01-09 19:00:00,7067.6,0.0,29.51 -2014-01-09 20:00:00,6843.7,0.0,29.32 -2014-01-09 21:00:00,6580.7,0.0,28.99 -2014-01-09 22:00:00,6209.1,0.0,28.97 -2014-01-09 23:00:00,5755.7,0.0,28.97 -2014-01-10 00:00:00,5335.4,0.0,28.99 -2014-01-10 01:00:00,5085.2,0.0,28.47 -2014-01-10 02:00:00,4909.5,0.0,28.88 -2014-01-10 03:00:00,4834.3,0.0,29.08 -2014-01-10 04:00:00,4847.5,0.0,29.71 -2014-01-10 05:00:00,5096.5,0.0,29.59 -2014-01-10 06:00:00,5628.3,0.0,30.27 -2014-01-10 07:00:00,6218.4,0.0,30.27 -2014-01-10 08:00:00,6547.7,0.0,31.06 -2014-01-10 09:00:00,6834.3,0.02,30.46 -2014-01-10 10:00:00,6973.6,0.0265,30.52 -2014-01-10 11:00:00,6996.8,0.0261,31.04 -2014-01-10 12:00:00,6973.5,0.0,31.72 -2014-01-10 13:00:00,6965.4,0.0,32.25 -2014-01-10 14:00:00,6947.0,0.0,32.58 -2014-01-10 15:00:00,6973.2,0.0065,33.15 -2014-01-10 16:00:00,7069.0,0.0,33.74 -2014-01-10 17:00:00,7120.4,0.0,33.76 -2014-01-10 18:00:00,6931.4,0.0,33.93 -2014-01-10 19:00:00,6716.6,0.0,34.25 -2014-01-10 20:00:00,6480.3,0.0035,34.25 -2014-01-10 21:00:00,6241.7,0.0065,34.39 -2014-01-10 22:00:00,5935.3,0.0,34.58 -2014-01-10 23:00:00,5565.8,0.01,34.39 -2014-01-11 00:00:00,5186.4,0.01,34.49 -2014-01-11 01:00:00,4939.0,0.01,34.9 -2014-01-11 02:00:00,4765.0,0.01,34.63 -2014-01-11 03:00:00,4653.0,0.05,37.76 -2014-01-11 04:00:00,4610.0,0.0,38.36 -2014-01-11 05:00:00,4690.6,0.0139,40.12 -2014-01-11 06:00:00,4794.1,0.0065,47.46 -2014-01-11 07:00:00,5011.2,0.0,47.38 -2014-01-11 08:00:00,5281.6,0.0,50.92 -2014-01-11 09:00:00,5577.3,0.0035,51.17 -2014-01-11 10:00:00,5784.3,0.01,52.27 -2014-01-11 11:00:00,5917.1,0.01,54.09 -2014-01-11 12:00:00,5950.1,0.0169,54.42 -2014-01-11 13:00:00,5929.5,0.0361,53.63 -2014-01-11 14:00:00,5909.0,0.0392,54.13 -2014-01-11 15:00:00,5912.3,0.0069,52.85 -2014-01-11 16:00:00,6011.7,0.0,53.22 -2014-01-11 17:00:00,6142.9,0.0104,54.77 -2014-01-11 18:00:00,6133.8,0.1443,54.56 -2014-01-11 19:00:00,6024.8,0.1031,54.52 -2014-01-11 20:00:00,5868.9,0.0265,54.86 -2014-01-11 21:00:00,5685.5,0.0035,53.25 -2014-01-11 22:00:00,5461.4,0.0035,53.12 -2014-01-11 23:00:00,5172.8,0.0035,53.42 -2014-01-12 00:00:00,4871.3,0.0,53.12 -2014-01-12 01:00:00,4625.6,0.0235,51.25 -2014-01-12 02:00:00,4450.1,0.0,50.05 -2014-01-12 03:00:00,4350.5,0.0,49.14 -2014-01-12 04:00:00,4314.6,0.0,47.25 -2014-01-12 05:00:00,4362.5,0.0,45.47 -2014-01-12 06:00:00,4495.9,0.0,44.86 -2014-01-12 07:00:00,4634.8,0.0,44.1 -2014-01-12 08:00:00,4882.2,0.0,43.64 -2014-01-12 09:00:00,5157.4,0.0,43.46 -2014-01-12 10:00:00,5391.0,0.0,43.53 -2014-01-12 11:00:00,5527.7,0.0,43.59 -2014-01-12 12:00:00,5599.4,0.0,43.7 -2014-01-12 13:00:00,5623.5,0.0,43.03 -2014-01-12 14:00:00,5604.5,0.0,44.24 -2014-01-12 15:00:00,5623.8,0.0,44.78 -2014-01-12 16:00:00,5738.0,0.0,44.05 -2014-01-12 17:00:00,6047.6,0.0,43.13 -2014-01-12 18:00:00,6114.5,0.0,42.34 -2014-01-12 19:00:00,6064.7,0.0,41.6 -2014-01-12 20:00:00,5966.9,0.0,40.78 -2014-01-12 21:00:00,5785.5,0.0,39.54 -2014-01-12 22:00:00,5531.0,0.0,39.03 -2014-01-12 23:00:00,5158.0,0.0,39.29 -2014-01-13 00:00:00,4842.3,0.0,37.91 -2014-01-13 01:00:00,4635.5,0.0,36.98 -2014-01-13 02:00:00,4509.4,0.0,36.73 -2014-01-13 03:00:00,4454.7,0.0,36.8 -2014-01-13 04:00:00,4496.0,0.0,35.84 -2014-01-13 05:00:00,4771.4,0.0,34.96 -2014-01-13 06:00:00,5345.6,0.0,34.3 -2014-01-13 07:00:00,5886.2,0.0,34.47 -2014-01-13 08:00:00,6199.0,0.0,35.51 -2014-01-13 09:00:00,6398.9,0.0,38.21 -2014-01-13 10:00:00,6460.5,0.0,41.98 -2014-01-13 11:00:00,6481.3,0.0,45.42 -2014-01-13 12:00:00,6474.1,0.0,46.78 -2014-01-13 13:00:00,6495.4,0.0,47.51 -2014-01-13 14:00:00,6491.1,0.0,47.8 -2014-01-13 15:00:00,6488.2,0.0,47.78 -2014-01-13 16:00:00,6605.3,0.0,48.81 -2014-01-13 17:00:00,6847.8,0.0,48.14 -2014-01-13 18:00:00,6708.0,0.0,47.8 -2014-01-13 19:00:00,6536.9,0.0,47.34 -2014-01-13 20:00:00,6291.6,0.0,47.32 -2014-01-13 21:00:00,6034.3,0.0,45.59 -2014-01-13 22:00:00,5670.6,0.0,45.4 -2014-01-13 23:00:00,5198.1,0.0,46.06 -2014-01-14 00:00:00,4809.3,0.0,46.33 -2014-01-14 01:00:00,4556.8,0.0,45.02 -2014-01-14 02:00:00,4411.6,0.0,44.76 -2014-01-14 03:00:00,4347.4,0.0,45.89 -2014-01-14 04:00:00,4376.9,0.0065,46.22 -2014-01-14 05:00:00,4645.0,0.0065,45.59 -2014-01-14 06:00:00,5223.4,0.0,46.23 -2014-01-14 07:00:00,5817.7,0.0,45.77 -2014-01-14 08:00:00,6151.5,0.02,46.2 -2014-01-14 09:00:00,6387.9,0.0265,45.15 -2014-01-14 10:00:00,6494.5,0.0069,45.86 -2014-01-14 11:00:00,6572.9,0.01,47.51 -2014-01-14 12:00:00,6621.1,0.0165,47.23 -2014-01-14 13:00:00,6627.5,0.03,47.42 -2014-01-14 14:00:00,6629.8,0.0135,47.3 -2014-01-14 15:00:00,6680.7,0.0661,46.19 -2014-01-14 16:00:00,6775.4,0.0,45.49 -2014-01-14 17:00:00,6896.5,0.0239,45.56 -2014-01-14 18:00:00,6690.5,0.0331,45.42 -2014-01-14 19:00:00,6507.7,0.0,44.74 -2014-01-14 20:00:00,6275.1,0.0,46.06 -2014-01-14 21:00:00,6000.2,0.0,46.59 -2014-01-14 22:00:00,5623.3,0.0,45.87 -2014-01-14 23:00:00,5194.6,0.0,43.79 -2014-01-15 00:00:00,4803.8,0.0,41.74 -2014-01-15 01:00:00,4560.5,0.0,41.15 -2014-01-15 02:00:00,4418.1,0.0,40.73 -2014-01-15 03:00:00,4365.4,0.0,40.01 -2014-01-15 04:00:00,4401.1,0.0,39.82 -2014-01-15 05:00:00,4672.9,0.0,38.23 -2014-01-15 06:00:00,5247.3,0.0,35.41 -2014-01-15 07:00:00,5787.0,0.0,35.83 -2014-01-15 08:00:00,6113.3,0.0,34.22 -2014-01-15 09:00:00,6342.8,0.0,34.47 -2014-01-15 10:00:00,6428.7,0.0,36.1 -2014-01-15 11:00:00,6446.8,0.0,37.8 -2014-01-15 12:00:00,6463.7,0.0,41.36 -2014-01-15 13:00:00,6463.4,0.0,41.9 -2014-01-15 14:00:00,6446.7,0.0,43.14 -2014-01-15 15:00:00,6492.0,0.0,44.02 -2014-01-15 16:00:00,6613.9,0.0,43.85 -2014-01-15 17:00:00,6810.5,0.0,42.0 -2014-01-15 18:00:00,6660.0,0.0,41.33 -2014-01-15 19:00:00,6499.5,0.0,40.8 -2014-01-15 20:00:00,6282.1,0.0,39.84 -2014-01-15 21:00:00,6018.9,0.0,39.9 -2014-01-15 22:00:00,5668.7,0.0,39.75 -2014-01-15 23:00:00,5212.3,0.0,39.39 -2014-01-16 00:00:00,4821.8,0.0,39.73 -2014-01-16 01:00:00,4571.7,0.0,39.78 -2014-01-16 02:00:00,4418.4,0.0,39.44 -2014-01-16 03:00:00,4373.2,0.0,39.42 -2014-01-16 04:00:00,4408.9,0.0,40.08 -2014-01-16 05:00:00,4674.4,0.0,40.26 -2014-01-16 06:00:00,5242.8,0.0,39.15 -2014-01-16 07:00:00,5844.0,0.0,39.4 -2014-01-16 08:00:00,6206.4,0.0,38.72 -2014-01-16 09:00:00,6433.9,0.0,38.09 -2014-01-16 10:00:00,6519.7,0.0,37.7 -2014-01-16 11:00:00,6553.2,0.0,38.05 -2014-01-16 12:00:00,6579.4,0.0,38.24 -2014-01-16 13:00:00,6587.9,0.0,38.98 -2014-01-16 14:00:00,6585.3,0.0,39.1 -2014-01-16 15:00:00,6632.7,0.0,39.1 -2014-01-16 16:00:00,6757.2,0.0,39.06 -2014-01-16 17:00:00,6912.0,0.0,38.52 -2014-01-16 18:00:00,6751.3,0.0,38.71 -2014-01-16 19:00:00,6579.2,0.0,37.86 -2014-01-16 20:00:00,6349.9,0.0,37.1 -2014-01-16 21:00:00,6080.5,0.0,36.91 -2014-01-16 22:00:00,5720.9,0.0,36.69 -2014-01-16 23:00:00,5279.7,0.0,36.72 -2014-01-17 00:00:00,4915.0,0.0,35.82 -2014-01-17 01:00:00,4676.7,0.0,35.17 -2014-01-17 02:00:00,4534.2,0.0,34.07 -2014-01-17 03:00:00,4477.9,0.0,33.5 -2014-01-17 04:00:00,4518.7,0.0,32.96 -2014-01-17 05:00:00,4780.1,0.0,32.47 -2014-01-17 06:00:00,5333.2,0.0,32.54 -2014-01-17 07:00:00,5881.8,0.0,31.94 -2014-01-17 08:00:00,6196.3,0.0,32.59 -2014-01-17 09:00:00,6415.8,0.0,35.25 -2014-01-17 10:00:00,6498.4,0.0,37.24 -2014-01-17 11:00:00,6500.4,0.0,38.43 -2014-01-17 12:00:00,6477.7,0.0,40.84 -2014-01-17 13:00:00,6455.1,0.0,41.61 -2014-01-17 14:00:00,6404.3,0.0,43.17 -2014-01-17 15:00:00,6412.2,0.0,44.21 -2014-01-17 16:00:00,6506.3,0.0,43.86 -2014-01-17 17:00:00,6707.9,0.0,42.59 -2014-01-17 18:00:00,6562.0,0.0,42.01 -2014-01-17 19:00:00,6363.3,0.0,41.47 -2014-01-17 20:00:00,6140.5,0.0,40.4 -2014-01-17 21:00:00,5905.5,0.0,40.6 -2014-01-17 22:00:00,5612.1,0.0,39.27 -2014-01-17 23:00:00,5239.3,0.0,38.8 -2014-01-18 00:00:00,4904.9,0.0,38.54 -2014-01-18 01:00:00,4651.8,0.0,38.55 -2014-01-18 02:00:00,4492.5,0.0,38.47 -2014-01-18 03:00:00,4400.0,0.0,38.49 -2014-01-18 04:00:00,4382.4,0.0,38.61 -2014-01-18 05:00:00,4448.0,0.0,38.2 -2014-01-18 06:00:00,4608.3,0.0,37.73 -2014-01-18 07:00:00,4784.7,0.0,37.13 -2014-01-18 08:00:00,5098.0,0.0,37.52 -2014-01-18 09:00:00,5463.0,0.0,37.13 -2014-01-18 10:00:00,5734.7,0.0435,35.23 -2014-01-18 11:00:00,5862.9,0.01,35.28 -2014-01-18 12:00:00,5881.2,0.0035,35.85 -2014-01-18 13:00:00,5826.5,0.0,36.76 -2014-01-18 14:00:00,5774.5,0.0,37.58 -2014-01-18 15:00:00,5790.9,0.0,38.37 -2014-01-18 16:00:00,5907.7,0.0,37.19 -2014-01-18 17:00:00,6113.9,0.0,36.0 -2014-01-18 18:00:00,6140.8,0.0,34.0 -2014-01-18 19:00:00,6066.9,0.0,32.51 -2014-01-18 20:00:00,5929.6,0.0,32.0 -2014-01-18 21:00:00,5785.3,0.0,31.19 -2014-01-18 22:00:00,5577.6,0.0,30.65 -2014-01-18 23:00:00,5318.3,0.0,29.81 -2014-01-19 00:00:00,5071.5,0.0,29.01 -2014-01-19 01:00:00,4821.3,0.0,28.09 -2014-01-19 02:00:00,4677.5,0.0,27.56 -2014-01-19 03:00:00,4581.1,0.0,26.89 -2014-01-19 04:00:00,4556.3,0.0,26.63 -2014-01-19 05:00:00,4590.4,0.0,25.89 -2014-01-19 06:00:00,4712.6,0.0,25.89 -2014-01-19 07:00:00,4849.1,0.0,25.89 -2014-01-19 08:00:00,5108.4,0.0,25.58 -2014-01-19 09:00:00,5375.9,0.0,24.89 -2014-01-19 10:00:00,5542.7,0.0,26.07 -2014-01-19 11:00:00,5692.9,0.0,28.29 -2014-01-19 12:00:00,5757.0,0.0,29.61 -2014-01-19 13:00:00,5743.2,0.0,30.87 -2014-01-19 14:00:00,5726.0,0.0,33.26 -2014-01-19 15:00:00,5734.5,0.0,34.87 -2014-01-19 16:00:00,5813.2,0.0,36.19 -2014-01-19 17:00:00,6080.8,0.0,36.0 -2014-01-19 18:00:00,6150.8,0.0,36.0 -2014-01-19 19:00:00,6062.4,0.0,35.68 -2014-01-19 20:00:00,5943.4,0.0,36.14 -2014-01-19 21:00:00,5796.8,0.0,37.21 -2014-01-19 22:00:00,5561.5,0.0,37.93 -2014-01-19 23:00:00,5250.3,0.0,37.82 -2014-01-20 00:00:00,4940.7,0.0,37.63 -2014-01-20 01:00:00,4727.8,0.0,37.05 -2014-01-20 02:00:00,4580.6,0.0,36.76 -2014-01-20 03:00:00,4500.3,0.0,37.46 -2014-01-20 04:00:00,4509.7,0.0,37.94 -2014-01-20 05:00:00,4679.9,0.0,37.75 -2014-01-20 06:00:00,5015.9,0.0,36.95 -2014-01-20 07:00:00,5321.0,0.0,37.75 -2014-01-20 08:00:00,5703.5,0.0,37.75 -2014-01-20 09:00:00,6013.2,0.0,38.29 -2014-01-20 10:00:00,6205.9,0.0,39.29 -2014-01-20 11:00:00,6285.9,0.0,40.14 -2014-01-20 12:00:00,6289.8,0.0,41.51 -2014-01-20 13:00:00,6275.0,0.0,43.66 -2014-01-20 14:00:00,6223.4,0.0,44.54 -2014-01-20 15:00:00,6262.1,0.0,45.01 -2014-01-20 16:00:00,6383.9,0.0,43.8 -2014-01-20 17:00:00,6616.7,0.0,42.99 -2014-01-20 18:00:00,6562.1,0.0,42.47 -2014-01-20 19:00:00,6440.5,0.0,41.46 -2014-01-20 20:00:00,6251.6,0.0,40.47 -2014-01-20 21:00:00,6042.7,0.0,38.79 -2014-01-20 22:00:00,5724.1,0.0,36.12 -2014-01-20 23:00:00,5328.9,0.0,34.31 -2014-01-21 00:00:00,4991.0,0.0,32.12 -2014-01-21 01:00:00,4806.3,0.0,29.39 -2014-01-21 02:00:00,4677.8,0.0,27.8 -2014-01-21 03:00:00,4639.0,0.0,26.33 -2014-01-21 04:00:00,4687.3,0.0,25.94 -2014-01-21 05:00:00,4964.5,0.0,25.68 -2014-01-21 06:00:00,5540.4,0.0,25.53 -2014-01-21 07:00:00,6148.6,0.0,25.74 -2014-01-21 08:00:00,6529.5,0.0,25.25 -2014-01-21 09:00:00,6788.9,0.0035,22.16 -2014-01-21 10:00:00,6953.2,0.0131,21.88 -2014-01-21 11:00:00,7052.3,0.0231,21.15 -2014-01-21 12:00:00,7098.7,0.0361,19.67 -2014-01-21 13:00:00,7138.2,0.0065,18.2 -2014-01-21 14:00:00,7127.6,0.0165,17.52 -2014-01-21 15:00:00,7103.4,0.0269,16.53 -2014-01-21 16:00:00,7195.3,0.0065,16.34 -2014-01-21 17:00:00,7403.4,0.0169,15.48 -2014-01-21 18:00:00,7350.1,0.0065,15.33 -2014-01-21 19:00:00,7201.7,0.0165,14.49 -2014-01-21 20:00:00,7000.8,0.01,13.58 -2014-01-21 21:00:00,6743.9,0.01,12.8 -2014-01-21 22:00:00,6403.3,0.0,12.14 -2014-01-21 23:00:00,5995.5,0.0,12.62 -2014-01-22 00:00:00,5611.9,0.0,12.48 -2014-01-22 01:00:00,5367.2,0.0,12.62 -2014-01-22 02:00:00,5232.9,0.0069,12.43 -2014-01-22 03:00:00,5183.6,0.0,11.62 -2014-01-22 04:00:00,5239.9,0.0,11.0 -2014-01-22 05:00:00,5464.3,0.0,10.33 -2014-01-22 06:00:00,5920.1,0.0,9.44 -2014-01-22 07:00:00,6422.5,0.0,8.8 -2014-01-22 08:00:00,6787.8,0.0,7.49 -2014-01-22 09:00:00,7061.0,0.0,7.16 -2014-01-22 10:00:00,7240.2,0.0,7.9 -2014-01-22 11:00:00,7328.4,0.0,9.95 -2014-01-22 12:00:00,7333.0,0.0,12.0 -2014-01-22 13:00:00,7329.2,0.0,14.35 -2014-01-22 14:00:00,7291.8,0.0,15.77 -2014-01-22 15:00:00,7276.0,0.0,16.75 -2014-01-22 16:00:00,7356.1,0.0,17.9 -2014-01-22 17:00:00,7601.9,0.0,17.17 -2014-01-22 18:00:00,7591.5,0.0,16.49 -2014-01-22 19:00:00,7421.6,0.0,15.3 -2014-01-22 20:00:00,7211.0,0.0,14.1 -2014-01-22 21:00:00,6956.6,0.0,12.75 -2014-01-22 22:00:00,6589.1,0.0,11.75 -2014-01-22 23:00:00,6109.4,0.0,10.75 -2014-01-23 00:00:00,5714.6,0.0,10.14 -2014-01-23 01:00:00,5478.4,0.0,9.43 -2014-01-23 02:00:00,5344.6,0.0,9.09 -2014-01-23 03:00:00,5278.6,0.0,8.44 -2014-01-23 04:00:00,5324.6,0.0,8.3 -2014-01-23 05:00:00,5557.9,0.0,8.83 -2014-01-23 06:00:00,6082.7,0.0,8.69 -2014-01-23 07:00:00,6630.9,0.0,8.83 -2014-01-23 08:00:00,6941.7,0.0,9.0 -2014-01-23 09:00:00,7204.0,0.0,9.68 -2014-01-23 10:00:00,7329.6,0.0,11.74 -2014-01-23 11:00:00,7351.8,0.0,14.56 -2014-01-23 12:00:00,7350.7,0.0,16.83 -2014-01-23 13:00:00,7322.9,0.0,18.01 -2014-01-23 14:00:00,7302.4,0.0,19.46 -2014-01-23 15:00:00,7324.5,0.0,20.61 -2014-01-23 16:00:00,7426.9,0.0,20.39 -2014-01-23 17:00:00,7640.9,0.0,20.33 -2014-01-23 18:00:00,7600.7,0.0,20.21 -2014-01-23 19:00:00,7453.1,0.0,19.88 -2014-01-23 20:00:00,7230.7,0.0,18.42 -2014-01-23 21:00:00,6958.0,0.0,17.95 -2014-01-23 22:00:00,6611.1,0.0,17.3 -2014-01-23 23:00:00,6184.1,0.0,16.81 -2014-01-24 00:00:00,5784.2,0.0,15.76 -2014-01-24 01:00:00,5523.2,0.0,15.15 -2014-01-24 02:00:00,5382.4,0.0,14.51 -2014-01-24 03:00:00,5323.0,0.0,13.69 -2014-01-24 04:00:00,5359.9,0.0,12.95 -2014-01-24 05:00:00,5606.0,0.0,12.3 -2014-01-24 06:00:00,6139.1,0.0,11.95 -2014-01-24 07:00:00,6664.6,0.0,11.49 -2014-01-24 08:00:00,7001.0,0.0,11.48 -2014-01-24 09:00:00,7241.8,0.0,12.23 -2014-01-24 10:00:00,7390.7,0.0,12.39 -2014-01-24 11:00:00,7422.1,0.0,14.44 -2014-01-24 12:00:00,7379.5,0.0,15.87 -2014-01-24 13:00:00,7356.5,0.0,17.14 -2014-01-24 14:00:00,7287.8,0.0,18.46 -2014-01-24 15:00:00,7281.2,0.0,19.07 -2014-01-24 16:00:00,7373.3,0.0,19.72 -2014-01-24 17:00:00,7551.1,0.0,18.99 -2014-01-24 18:00:00,7468.7,0.0,18.67 -2014-01-24 19:00:00,7326.4,0.0,18.18 -2014-01-24 20:00:00,7132.8,0.0,17.34 -2014-01-24 21:00:00,6873.3,0.0,17.68 -2014-01-24 22:00:00,6582.0,0.0,17.68 -2014-01-24 23:00:00,6181.4,0.0,18.22 -2014-01-25 00:00:00,5768.9,0.0,19.04 -2014-01-25 01:00:00,5495.5,0.0,19.34 -2014-01-25 02:00:00,5326.3,0.0,19.67 -2014-01-25 03:00:00,5233.9,0.0,20.48 -2014-01-25 04:00:00,5206.0,0.0,20.48 -2014-01-25 05:00:00,5260.9,0.0,21.31 -2014-01-25 06:00:00,5417.5,0.0,21.29 -2014-01-25 07:00:00,5622.8,0.0,22.43 -2014-01-25 08:00:00,5884.8,0.0,22.68 -2014-01-25 09:00:00,6158.5,0.0,23.48 -2014-01-25 10:00:00,6389.8,0.0,25.02 -2014-01-25 11:00:00,6491.3,0.0,26.02 -2014-01-25 12:00:00,6494.4,0.0,26.88 -2014-01-25 13:00:00,6516.6,0.0,26.97 -2014-01-25 14:00:00,6508.9,0.0035,25.87 -2014-01-25 15:00:00,6511.7,0.0069,26.19 -2014-01-25 16:00:00,6585.5,0.0,26.07 -2014-01-25 17:00:00,6770.9,0.0065,25.72 -2014-01-25 18:00:00,6809.3,0.0035,25.51 -2014-01-25 19:00:00,6724.2,0.0,25.39 -2014-01-25 20:00:00,6560.8,0.0,25.14 -2014-01-25 21:00:00,6383.0,0.0,24.83 -2014-01-25 22:00:00,6131.8,0.0,24.46 -2014-01-25 23:00:00,5867.8,0.0,23.76 -2014-01-26 00:00:00,5554.0,0.0,23.76 -2014-01-26 01:00:00,5326.8,0.0,23.56 -2014-01-26 02:00:00,5144.6,0.0,24.02 -2014-01-26 03:00:00,5078.8,0.0,23.26 -2014-01-26 04:00:00,5049.9,0.0,21.95 -2014-01-26 05:00:00,5123.5,0.0,20.26 -2014-01-26 06:00:00,5248.5,0.0,18.95 -2014-01-26 07:00:00,5390.9,0.0,18.27 -2014-01-26 08:00:00,5646.6,0.0,18.15 -2014-01-26 09:00:00,5908.3,0.0,18.88 -2014-01-26 10:00:00,6130.8,0.0,19.07 -2014-01-26 11:00:00,6277.3,0.0,19.93 -2014-01-26 12:00:00,6329.9,0.0,20.61 -2014-01-26 13:00:00,6359.5,0.0,20.93 -2014-01-26 14:00:00,6423.4,0.0,21.39 -2014-01-26 15:00:00,6485.6,0.0,20.61 -2014-01-26 16:00:00,6506.9,0.0,21.06 -2014-01-26 17:00:00,6741.8,0.0,22.32 -2014-01-26 18:00:00,6804.1,0.0,23.69 -2014-01-26 19:00:00,6739.6,0.0,25.2 -2014-01-26 20:00:00,6578.1,0.0,26.34 -2014-01-26 21:00:00,6377.3,0.0,27.69 -2014-01-26 22:00:00,6074.2,0.0,28.86 -2014-01-26 23:00:00,5675.9,0.0,30.14 -2014-01-27 00:00:00,5306.1,0.0,30.82 -2014-01-27 01:00:00,5068.9,0.0,30.69 -2014-01-27 02:00:00,4927.4,0.0,29.78 -2014-01-27 03:00:00,4866.1,0.0,29.93 -2014-01-27 04:00:00,4891.8,0.0,29.42 -2014-01-27 05:00:00,5136.5,0.0,32.14 -2014-01-27 06:00:00,5643.0,0.0,32.46 -2014-01-27 07:00:00,6183.0,0.0,34.49 -2014-01-27 08:00:00,6521.2,0.0,36.5 -2014-01-27 09:00:00,6724.5,0.0,37.52 -2014-01-27 10:00:00,6821.9,0.0,37.87 -2014-01-27 11:00:00,6859.8,0.0,38.96 -2014-01-27 12:00:00,6811.7,0.0,41.36 -2014-01-27 13:00:00,6816.4,0.0,42.42 -2014-01-27 14:00:00,6851.6,0.0,40.01 -2014-01-27 15:00:00,6897.2,0.0,36.7 -2014-01-27 16:00:00,7065.0,0.0,31.66 -2014-01-27 17:00:00,7294.6,0.0,29.0 -2014-01-27 18:00:00,7228.2,0.0,28.33 -2014-01-27 19:00:00,7099.5,0.0,27.8 -2014-01-27 20:00:00,6902.0,0.0,26.14 -2014-01-27 21:00:00,6663.7,0.0,24.8 -2014-01-27 22:00:00,6311.8,0.0,23.61 -2014-01-27 23:00:00,5845.4,0.0,22.49 -2014-01-28 00:00:00,5453.7,0.0,21.26 -2014-01-28 01:00:00,5252.9,0.0,20.14 -2014-01-28 02:00:00,5119.5,0.0,19.12 -2014-01-28 03:00:00,5076.5,0.0,17.78 -2014-01-28 04:00:00,5124.0,0.0,16.61 -2014-01-28 05:00:00,5391.5,0.0,15.49 -2014-01-28 06:00:00,5937.5,0.0,14.68 -2014-01-28 07:00:00,6522.9,0.0,13.94 -2014-01-28 08:00:00,6893.3,0.0,13.49 -2014-01-28 09:00:00,7165.1,0.0,13.02 -2014-01-28 10:00:00,7265.2,0.0,13.21 -2014-01-28 11:00:00,7271.7,0.0,14.44 -2014-01-28 12:00:00,7260.9,0.0,15.95 -2014-01-28 13:00:00,7277.7,0.0,16.95 -2014-01-28 14:00:00,7254.6,0.0,17.39 -2014-01-28 15:00:00,7282.8,0.0,17.87 -2014-01-28 16:00:00,7378.1,0.0,18.07 -2014-01-28 17:00:00,7563.8,0.0,18.19 -2014-01-28 18:00:00,7496.3,0.0,18.33 -2014-01-28 19:00:00,7326.7,0.0,18.68 -2014-01-28 20:00:00,7107.2,0.0,18.56 -2014-01-28 21:00:00,6870.0,0.0,18.56 -2014-01-28 22:00:00,6514.3,0.0,18.56 -2014-01-28 23:00:00,6028.7,0.0,18.03 -2014-01-29 00:00:00,5618.3,0.0,17.56 -2014-01-29 01:00:00,5365.4,0.0,16.37 -2014-01-29 02:00:00,5237.9,0.01,15.36 -2014-01-29 03:00:00,5180.4,0.0035,15.1 -2014-01-29 04:00:00,5223.4,0.01,15.01 -2014-01-29 05:00:00,5469.4,0.0035,15.15 -2014-01-29 06:00:00,5984.0,0.0,14.68 -2014-01-29 07:00:00,6532.0,0.0,15.02 -2014-01-29 08:00:00,6914.4,0.0,14.69 -2014-01-29 09:00:00,7147.9,0.0,14.83 -2014-01-29 10:00:00,7234.9,0.0,15.56 -2014-01-29 11:00:00,7246.3,0.0,17.07 -2014-01-29 12:00:00,7237.7,0.0,18.49 -2014-01-29 13:00:00,7227.3,0.0,20.26 -2014-01-29 14:00:00,7177.5,0.0,21.75 -2014-01-29 15:00:00,7158.5,0.0,22.49 -2014-01-29 16:00:00,7251.8,0.0,22.95 -2014-01-29 17:00:00,7462.8,0.0,22.33 -2014-01-29 18:00:00,7456.7,0.0,22.14 -2014-01-29 19:00:00,7285.1,0.0,21.02 -2014-01-29 20:00:00,7104.8,0.0,20.48 -2014-01-29 21:00:00,6850.4,0.0,19.83 -2014-01-29 22:00:00,6482.3,0.0,20.19 -2014-01-29 23:00:00,6010.2,0.0,18.65 -2014-01-30 00:00:00,5597.2,0.0,18.44 -2014-01-30 01:00:00,5353.0,0.0,17.96 -2014-01-30 02:00:00,5208.5,0.0,17.44 -2014-01-30 03:00:00,5144.1,0.0,17.25 -2014-01-30 04:00:00,5172.0,0.0,16.55 -2014-01-30 05:00:00,5407.7,0.0,17.13 -2014-01-30 06:00:00,5940.4,0.0,16.49 -2014-01-30 07:00:00,6514.0,0.0,16.56 -2014-01-30 08:00:00,6868.5,0.0,17.49 -2014-01-30 09:00:00,7062.6,0.0,19.63 -2014-01-30 10:00:00,7147.8,0.0,20.95 -2014-01-30 11:00:00,7165.4,0.0,22.75 -2014-01-30 12:00:00,7135.3,0.0,24.22 -2014-01-30 13:00:00,7096.4,0.0,25.64 -2014-01-30 14:00:00,7044.5,0.0,26.83 -2014-01-30 15:00:00,7052.4,0.0,27.66 -2014-01-30 16:00:00,7120.4,0.0,27.0 -2014-01-30 17:00:00,7318.9,0.0,26.32 -2014-01-30 18:00:00,7279.7,0.0,25.51 -2014-01-30 19:00:00,7103.5,0.0,25.5 -2014-01-30 20:00:00,6883.4,0.0,25.69 -2014-01-30 21:00:00,6635.1,0.0,26.18 -2014-01-30 22:00:00,6290.7,0.0,25.34 -2014-01-30 23:00:00,5846.0,0.0,25.08 -2014-01-31 00:00:00,5449.8,0.0,25.49 -2014-01-31 01:00:00,5195.5,0.0,25.68 -2014-01-31 02:00:00,5035.5,0.0,25.32 -2014-01-31 03:00:00,4963.7,0.0,25.65 -2014-01-31 04:00:00,4973.6,0.0,27.19 -2014-01-31 05:00:00,5208.5,0.0,27.54 -2014-01-31 06:00:00,5737.5,0.0,27.68 -2014-01-31 07:00:00,6292.1,0.0,27.87 -2014-01-31 08:00:00,6622.5,0.0,28.34 -2014-01-31 09:00:00,6848.9,0.0,29.24 -2014-01-31 10:00:00,6938.8,0.0,30.98 -2014-01-31 11:00:00,6972.1,0.0,32.23 -2014-01-31 12:00:00,6947.5,0.0,33.22 -2014-01-31 13:00:00,6873.7,0.0,34.08 -2014-01-31 14:00:00,6784.9,0.0,36.6 -2014-01-31 15:00:00,6774.2,0.0,38.05 -2014-01-31 16:00:00,6814.4,0.0,38.73 -2014-01-31 17:00:00,6957.4,0.0,37.83 -2014-01-31 18:00:00,6866.9,0.0,37.68 -2014-01-31 19:00:00,6668.3,0.0,37.73 -2014-01-31 20:00:00,6451.2,0.0,37.13 -2014-01-31 21:00:00,6217.4,0.0,35.88 -2014-01-31 22:00:00,5917.9,0.0,36.08 -2014-01-31 23:00:00,5560.5,0.0,35.22 -2014-02-01 00:00:00,5202.4,0.0,35.1 -2014-02-01 01:00:00,4953.9,0.0,34.74 -2014-02-01 02:00:00,4794.1,0.0,34.07 -2014-02-01 03:00:00,4698.2,0.0,33.2 -2014-02-01 04:00:00,4668.3,0.0,34.4 -2014-02-01 05:00:00,4737.0,0.0,33.87 -2014-02-01 06:00:00,4901.6,0.0,33.94 -2014-02-01 07:00:00,5105.1,0.0,34.62 -2014-02-01 08:00:00,5396.1,0.0,33.81 -2014-02-01 09:00:00,5638.2,0.0,34.94 -2014-02-01 10:00:00,5796.0,0.0,36.64 -2014-02-01 11:00:00,5867.4,0.0,39.55 -2014-02-01 12:00:00,5878.2,0.0,40.96 -2014-02-01 13:00:00,5830.8,0.0,42.36 -2014-02-01 14:00:00,5786.5,0.0,42.68 -2014-02-01 15:00:00,5763.9,0.0,42.82 -2014-02-01 16:00:00,5831.8,0.0,42.29 -2014-02-01 17:00:00,6064.2,0.0,41.41 -2014-02-01 18:00:00,6172.2,0.0,39.52 -2014-02-01 19:00:00,6104.2,0.0,38.42 -2014-02-01 20:00:00,5956.0,0.0,38.27 -2014-02-01 21:00:00,5799.8,0.0,37.99 -2014-02-01 22:00:00,5599.2,0.0,36.34 -2014-02-01 23:00:00,5308.1,0.0,35.59 -2014-02-02 00:00:00,5010.8,0.0,34.92 -2014-02-02 01:00:00,4757.9,0.0,36.75 -2014-02-02 02:00:00,4595.0,0.0,34.23 -2014-02-02 03:00:00,4507.0,0.0,34.74 -2014-02-02 04:00:00,4475.7,0.0,32.61 -2014-02-02 05:00:00,4516.6,0.0,32.69 -2014-02-02 06:00:00,4613.2,0.0,31.06 -2014-02-02 07:00:00,4742.0,0.0,32.05 -2014-02-02 08:00:00,4981.4,0.0,33.53 -2014-02-02 09:00:00,5230.6,0.0,37.36 -2014-02-02 10:00:00,5407.6,0.0,40.15 -2014-02-02 11:00:00,5505.8,0.0,44.44 -2014-02-02 12:00:00,5535.9,0.0,48.91 -2014-02-02 13:00:00,5527.5,0.0,52.39 -2014-02-02 14:00:00,5570.0,0.0,53.72 -2014-02-02 15:00:00,5595.1,0.0,51.26 -2014-02-02 16:00:00,5665.7,0.0,51.47 -2014-02-02 17:00:00,5911.9,0.0,49.84 -2014-02-02 18:00:00,5963.1,0.0,48.73 -2014-02-02 19:00:00,5850.8,0.0,46.6 -2014-02-02 20:00:00,5736.8,0.0,45.09 -2014-02-02 21:00:00,5599.2,0.0,43.07 -2014-02-02 22:00:00,5374.2,0.0,43.58 -2014-02-02 23:00:00,5073.4,0.0,42.96 -2014-02-03 00:00:00,4771.8,0.0,41.96 -2014-02-03 01:00:00,4567.5,0.0035,40.77 -2014-02-03 02:00:00,4449.2,0.0,39.56 -2014-02-03 03:00:00,4428.6,0.0296,38.42 -2014-02-03 04:00:00,4491.7,0.03,35.34 -2014-02-03 05:00:00,4790.1,0.0331,33.83 -2014-02-03 06:00:00,5358.1,0.04,33.1 -2014-02-03 07:00:00,5946.1,0.0669,32.39 -2014-02-03 08:00:00,6315.2,0.0304,32.24 -2014-02-03 09:00:00,6582.9,0.0857,32.09 -2014-02-03 10:00:00,6788.2,0.0857,31.86 -2014-02-03 11:00:00,6880.1,0.0473,31.04 -2014-02-03 12:00:00,6924.3,0.0465,31.04 -2014-02-03 13:00:00,6925.6,0.0592,31.74 -2014-02-03 14:00:00,6887.9,0.0461,31.42 -2014-02-03 15:00:00,6871.5,0.0196,31.44 -2014-02-03 16:00:00,6939.3,0.0065,30.89 -2014-02-03 17:00:00,7106.7,0.0,30.37 -2014-02-03 18:00:00,7065.1,0.0457,30.37 -2014-02-03 19:00:00,6884.3,0.0,31.31 -2014-02-03 20:00:00,6641.6,0.0,30.65 -2014-02-03 21:00:00,6355.2,0.0,30.81 -2014-02-03 22:00:00,5948.7,0.0,29.74 -2014-02-03 23:00:00,5537.3,0.0,29.49 -2014-02-04 00:00:00,5143.2,0.0,28.5 -2014-02-04 01:00:00,4916.8,0.0,27.62 -2014-02-04 02:00:00,4786.9,0.0,27.36 -2014-02-04 03:00:00,4743.5,0.0,26.4 -2014-02-04 04:00:00,4800.9,0.0,25.62 -2014-02-04 05:00:00,5071.8,0.0,24.25 -2014-02-04 06:00:00,5568.9,0.0,24.08 -2014-02-04 07:00:00,6117.2,0.0,23.94 -2014-02-04 08:00:00,6431.6,0.0,23.89 -2014-02-04 09:00:00,6653.2,0.0,24.95 -2014-02-04 10:00:00,6755.4,0.0,26.86 -2014-02-04 11:00:00,6770.7,0.0,28.86 -2014-02-04 12:00:00,6773.9,0.0,30.25 -2014-02-04 13:00:00,6755.4,0.0,31.41 -2014-02-04 14:00:00,6718.5,0.0,32.74 -2014-02-04 15:00:00,6734.4,0.0,33.07 -2014-02-04 16:00:00,6834.5,0.0,33.32 -2014-02-04 17:00:00,7053.8,0.0,33.5 -2014-02-04 18:00:00,6979.6,0.0,32.07 -2014-02-04 19:00:00,6838.6,0.0,31.44 -2014-02-04 20:00:00,6621.5,0.0,31.74 -2014-02-04 21:00:00,6361.5,0.0,32.05 -2014-02-04 22:00:00,5999.4,0.0,32.44 -2014-02-04 23:00:00,5553.4,0.0,31.95 -2014-02-05 00:00:00,5144.7,0.0,31.41 -2014-02-05 01:00:00,4906.0,0.01,31.36 -2014-02-05 02:00:00,4778.8,0.0339,30.25 -2014-02-05 03:00:00,4739.9,0.0343,30.2 -2014-02-05 04:00:00,4783.4,0.1153,29.16 -2014-02-05 05:00:00,5025.6,0.0577,30.18 -2014-02-05 06:00:00,5528.5,0.1311,30.67 -2014-02-05 07:00:00,6028.2,0.1377,30.67 -2014-02-05 08:00:00,6419.9,0.1197,31.04 -2014-02-05 09:00:00,6675.0,0.0757,31.76 -2014-02-05 10:00:00,6871.5,0.0,32.44 -2014-02-05 11:00:00,6984.2,0.0,32.37 -2014-02-05 12:00:00,7005.4,0.0035,32.44 -2014-02-05 13:00:00,7000.3,0.01,33.98 -2014-02-05 14:00:00,6968.0,0.0065,33.27 -2014-02-05 15:00:00,6928.7,0.0065,33.27 -2014-02-05 16:00:00,6996.9,0.0035,33.9 -2014-02-05 17:00:00,7147.4,0.0,33.9 -2014-02-05 18:00:00,7064.1,0.0,33.5 -2014-02-05 19:00:00,6874.5,0.0,33.46 -2014-02-05 20:00:00,6632.9,0.0,32.5 -2014-02-05 21:00:00,6355.3,0.0,33.03 -2014-02-05 22:00:00,5988.7,0.0,31.91 -2014-02-05 23:00:00,5555.2,0.0,32.33 -2014-02-06 00:00:00,5179.2,0.0,31.42 -2014-02-06 01:00:00,4945.3,0.0,29.34 -2014-02-06 02:00:00,4809.3,0.0,29.42 -2014-02-06 03:00:00,4775.8,0.0,28.56 -2014-02-06 04:00:00,4822.5,0.0,27.4 -2014-02-06 05:00:00,5098.9,0.0,26.01 -2014-02-06 06:00:00,5648.3,0.0,24.35 -2014-02-06 07:00:00,6218.3,0.0,23.29 -2014-02-06 08:00:00,6555.5,0.0,22.37 -2014-02-06 09:00:00,6794.6,0.0,22.23 -2014-02-06 10:00:00,6896.8,0.0,22.24 -2014-02-06 11:00:00,6909.9,0.0,23.64 -2014-02-06 12:00:00,6898.9,0.0,25.15 -2014-02-06 13:00:00,6882.1,0.0,26.52 -2014-02-06 14:00:00,6848.2,0.0,28.01 -2014-02-06 15:00:00,6824.5,0.0,28.64 -2014-02-06 16:00:00,6876.6,0.0,30.22 -2014-02-06 17:00:00,7061.4,0.0,29.61 -2014-02-06 18:00:00,7035.9,0.0,28.59 -2014-02-06 19:00:00,6906.2,0.0,28.05 -2014-02-06 20:00:00,6714.4,0.0,28.1 -2014-02-06 21:00:00,6466.1,0.0,27.83 -2014-02-06 22:00:00,6092.8,0.0,27.44 -2014-02-06 23:00:00,5661.2,0.0,27.98 -2014-02-07 00:00:00,5258.6,0.0,27.29 -2014-02-07 01:00:00,5019.6,0.0,26.8 -2014-02-07 02:00:00,4885.2,0.0,26.8 -2014-02-07 03:00:00,4827.2,0.0,26.49 -2014-02-07 04:00:00,4860.8,0.0,26.14 -2014-02-07 05:00:00,5097.4,0.0,25.88 -2014-02-07 06:00:00,5661.8,0.0,25.14 -2014-02-07 07:00:00,6180.9,0.0,24.56 -2014-02-07 08:00:00,6502.0,0.0,25.02 -2014-02-07 09:00:00,6732.2,0.0,25.68 -2014-02-07 10:00:00,6829.2,0.0,26.61 -2014-02-07 11:00:00,6844.4,0.0,27.61 -2014-02-07 12:00:00,6838.5,0.0,29.15 -2014-02-07 13:00:00,6800.9,0.0,30.27 -2014-02-07 14:00:00,6749.8,0.0,31.69 -2014-02-07 15:00:00,6730.7,0.0,32.15 -2014-02-07 16:00:00,6784.2,0.0,32.05 -2014-02-07 17:00:00,6959.7,0.0,31.87 -2014-02-07 18:00:00,6937.1,0.0,31.19 -2014-02-07 19:00:00,6758.4,0.0,31.0 -2014-02-07 20:00:00,6546.7,0.0,30.34 -2014-02-07 21:00:00,6325.1,0.0,30.49 -2014-02-07 22:00:00,6035.2,0.0,30.1 -2014-02-07 23:00:00,5670.8,0.0,28.95 -2014-02-08 00:00:00,5321.0,0.0,28.3 -2014-02-08 01:00:00,5079.5,0.0,26.95 -2014-02-08 02:00:00,4927.0,0.0,25.95 -2014-02-08 03:00:00,4838.4,0.0,24.95 -2014-02-08 04:00:00,4829.5,0.0,24.12 -2014-02-08 05:00:00,4902.3,0.0,23.58 -2014-02-08 06:00:00,5077.2,0.0,22.39 -2014-02-08 07:00:00,5302.7,0.0,22.12 -2014-02-08 08:00:00,5635.5,0.0,21.95 -2014-02-08 09:00:00,5913.8,0.0,22.0 -2014-02-08 10:00:00,6087.3,0.0,22.68 -2014-02-08 11:00:00,6130.5,0.0,24.57 -2014-02-08 12:00:00,6156.9,0.0,25.66 -2014-02-08 13:00:00,6138.2,0.0,26.82 -2014-02-08 14:00:00,6120.0,0.0,27.59 -2014-02-08 15:00:00,6110.3,0.0,28.41 -2014-02-08 16:00:00,6127.7,0.0,28.94 -2014-02-08 17:00:00,6334.3,0.0,28.75 -2014-02-08 18:00:00,6453.0,0.0,28.01 -2014-02-08 19:00:00,6391.2,0.0,27.89 -2014-02-08 20:00:00,6241.1,0.0,27.56 -2014-02-08 21:00:00,6097.2,0.0,27.56 -2014-02-08 22:00:00,5869.3,0.0,26.63 -2014-02-08 23:00:00,5587.7,0.0,26.63 -2014-02-09 00:00:00,5299.8,0.0,26.3 -2014-02-09 01:00:00,5062.4,0.0,25.07 -2014-02-09 02:00:00,4903.6,0.0,24.81 -2014-02-09 03:00:00,4807.6,0.0,23.93 -2014-02-09 04:00:00,4783.8,0.0,23.12 -2014-02-09 05:00:00,4823.3,0.0,23.17 -2014-02-09 06:00:00,4937.5,0.0,22.2 -2014-02-09 07:00:00,5067.5,0.0,21.27 -2014-02-09 08:00:00,5333.6,0.0,21.37 -2014-02-09 09:00:00,5580.1,0.0,22.73 -2014-02-09 10:00:00,5768.1,0.0,24.24 -2014-02-09 11:00:00,5872.3,0.0,25.44 -2014-02-09 12:00:00,5914.7,0.0,26.84 -2014-02-09 13:00:00,5935.8,0.0,27.56 -2014-02-09 14:00:00,5941.4,0.0,28.12 -2014-02-09 15:00:00,5989.1,0.0,28.42 -2014-02-09 16:00:00,6137.1,0.0,28.41 -2014-02-09 17:00:00,6371.8,0.0,28.58 -2014-02-09 18:00:00,6473.7,0.0,27.31 -2014-02-09 19:00:00,6442.0,0.0196,25.7 -2014-02-09 20:00:00,6326.2,0.0035,26.28 -2014-02-09 21:00:00,6141.6,0.0135,26.03 -2014-02-09 22:00:00,5843.5,0.0065,26.17 -2014-02-09 23:00:00,5495.3,0.0,27.05 -2014-02-10 00:00:00,5169.8,0.0,26.44 -2014-02-10 01:00:00,4971.4,0.0,25.75 -2014-02-10 02:00:00,4851.6,0.0,25.29 -2014-02-10 03:00:00,4801.6,0.0,24.76 -2014-02-10 04:00:00,4872.6,0.0,24.95 -2014-02-10 05:00:00,5147.7,0.0,23.95 -2014-02-10 06:00:00,5686.9,0.0,22.75 -2014-02-10 07:00:00,6217.1,0.0,21.95 -2014-02-10 08:00:00,6578.9,0.0,21.63 -2014-02-10 09:00:00,6818.3,0.0,22.37 -2014-02-10 10:00:00,6941.2,0.0,23.24 -2014-02-10 11:00:00,6986.1,0.0,24.49 -2014-02-10 12:00:00,6964.6,0.0,26.49 -2014-02-10 13:00:00,6939.8,0.0,27.17 -2014-02-10 14:00:00,6900.3,0.0,27.96 -2014-02-10 15:00:00,6892.2,0.0,28.42 -2014-02-10 16:00:00,6971.1,0.0,28.74 -2014-02-10 17:00:00,7154.4,0.0,27.86 -2014-02-10 18:00:00,7202.8,0.0,27.0 -2014-02-10 19:00:00,7073.5,0.0,26.0 -2014-02-10 20:00:00,6865.8,0.0,25.61 -2014-02-10 21:00:00,6600.9,0.0,24.81 -2014-02-10 22:00:00,6213.9,0.0,24.3 -2014-02-10 23:00:00,5754.6,0.0,23.61 -2014-02-11 00:00:00,5345.5,0.0,22.05 -2014-02-11 01:00:00,5117.6,0.0,21.25 -2014-02-11 02:00:00,4940.3,0.0,21.24 -2014-02-11 03:00:00,4937.7,0.0,19.88 -2014-02-11 04:00:00,4991.1,0.0,19.42 -2014-02-11 05:00:00,5272.4,0.0,18.63 -2014-02-11 06:00:00,5819.8,0.0,17.63 -2014-02-11 07:00:00,6358.0,0.0,17.3 -2014-02-11 08:00:00,6709.6,0.0,17.3 -2014-02-11 09:00:00,6920.7,0.0,18.42 -2014-02-11 10:00:00,6998.5,0.0,19.89 -2014-02-11 11:00:00,7017.1,0.0,21.1 -2014-02-11 12:00:00,7006.3,0.0,22.3 -2014-02-11 13:00:00,6993.9,0.0,23.3 -2014-02-11 14:00:00,6965.4,0.0,24.49 -2014-02-11 15:00:00,6964.3,0.0,24.8 -2014-02-11 16:00:00,7041.2,0.0,26.07 -2014-02-11 17:00:00,7203.9,0.0,25.93 -2014-02-11 18:00:00,7265.7,0.0,25.0 -2014-02-11 19:00:00,7135.9,0.0,23.81 -2014-02-11 20:00:00,6958.2,0.0,22.61 -2014-02-11 21:00:00,6714.0,0.0,21.49 -2014-02-11 22:00:00,6337.2,0.0,20.49 -2014-02-11 23:00:00,5894.0,0.0,19.49 -2014-02-12 00:00:00,5470.9,0.0,18.63 -2014-02-12 01:00:00,5236.4,0.0,17.95 -2014-02-12 02:00:00,5108.1,0.0,17.32 -2014-02-12 03:00:00,5057.8,0.0,16.37 -2014-02-12 04:00:00,5093.6,0.0,15.27 -2014-02-12 05:00:00,5355.4,0.0,14.83 -2014-02-12 06:00:00,5895.4,0.0,14.34 -2014-02-12 07:00:00,6446.8,0.0,14.3 -2014-02-12 08:00:00,6761.5,0.0,15.68 -2014-02-12 09:00:00,6967.8,0.0,16.06 -2014-02-12 10:00:00,7073.5,0.0,17.86 -2014-02-12 11:00:00,7095.4,0.0,19.12 -2014-02-12 12:00:00,7078.9,0.0,20.36 -2014-02-12 13:00:00,7068.5,0.0,21.36 -2014-02-12 14:00:00,7027.0,0.0,23.17 -2014-02-12 15:00:00,7043.1,0.0,23.09 -2014-02-12 16:00:00,7110.4,0.0,23.39 -2014-02-12 17:00:00,7299.9,0.0,23.39 -2014-02-12 18:00:00,7267.4,0.0,22.9 -2014-02-12 19:00:00,7108.9,0.0,22.88 -2014-02-12 20:00:00,6913.0,0.0,23.44 -2014-02-12 21:00:00,6663.0,0.0,23.71 -2014-02-12 22:00:00,6292.2,0.0,24.24 -2014-02-12 23:00:00,5854.0,0.0,24.36 -2014-02-13 00:00:00,5440.0,0.0,25.27 -2014-02-13 01:00:00,5193.9,0.0,24.18 -2014-02-13 02:00:00,5043.1,0.01,24.79 -2014-02-13 03:00:00,4982.9,0.01,26.45 -2014-02-13 04:00:00,4993.2,0.0196,27.64 -2014-02-13 05:00:00,5199.0,0.0231,29.03 -2014-02-13 06:00:00,5667.9,0.0335,29.64 -2014-02-13 07:00:00,6104.6,0.04,30.0 -2014-02-13 08:00:00,6531.4,0.0543,29.34 -2014-02-13 09:00:00,6862.2,0.0443,29.66 -2014-02-13 10:00:00,7006.4,0.0885,30.35 -2014-02-13 11:00:00,7045.1,0.0924,31.66 -2014-02-13 12:00:00,7072.1,0.0343,32.94 -2014-02-13 13:00:00,7082.0,0.0135,35.07 -2014-02-13 14:00:00,7017.8,0.0069,35.96 -2014-02-13 15:00:00,6976.2,0.0165,35.35 -2014-02-13 16:00:00,7021.9,0.0,35.69 -2014-02-13 17:00:00,7150.5,0.0,35.0 -2014-02-13 18:00:00,7091.3,0.01,34.88 -2014-02-13 19:00:00,6923.4,0.0035,34.69 -2014-02-13 20:00:00,6684.7,0.0,34.9 -2014-02-13 21:00:00,6407.8,0.4193,34.71 -2014-02-13 22:00:00,6049.9,0.0473,34.12 -2014-02-13 23:00:00,5605.5,0.0035,33.54 -2014-02-14 00:00:00,5244.3,0.0035,33.74 -2014-02-14 01:00:00,4999.3,0.0504,32.24 -2014-02-14 02:00:00,4859.2,0.0304,32.24 -2014-02-14 03:00:00,4832.7,0.0396,31.92 -2014-02-14 04:00:00,4875.2,0.0,31.92 -2014-02-14 05:00:00,5149.1,0.0065,31.22 -2014-02-14 06:00:00,5590.2,0.0,31.47 -2014-02-14 07:00:00,6056.9,0.0,33.3 -2014-02-14 08:00:00,6351.2,0.0,34.73 -2014-02-14 09:00:00,6623.2,0.0,35.8 -2014-02-14 10:00:00,6776.7,0.0,36.48 -2014-02-14 11:00:00,6828.9,0.0,37.03 -2014-02-14 12:00:00,6818.7,0.0,38.1 -2014-02-14 13:00:00,6790.7,0.0,39.46 -2014-02-14 14:00:00,6712.9,0.0,39.57 -2014-02-14 15:00:00,6655.3,0.0,39.92 -2014-02-14 16:00:00,6665.7,0.0,40.05 -2014-02-14 17:00:00,6783.3,0.0,39.71 -2014-02-14 18:00:00,6777.3,0.0,38.99 -2014-02-14 19:00:00,6589.6,0.0,38.47 -2014-02-14 20:00:00,6391.5,0.0,38.34 -2014-02-14 21:00:00,6156.8,0.0,38.34 -2014-02-14 22:00:00,5860.1,0.0,36.78 -2014-02-14 23:00:00,5493.3,0.0,35.09 -2014-02-15 00:00:00,5156.6,0.0,35.16 -2014-02-15 01:00:00,4921.5,0.0,34.4 -2014-02-15 02:00:00,4758.5,0.0,33.08 -2014-02-15 03:00:00,4668.8,0.0,33.58 -2014-02-15 04:00:00,4638.1,0.0,32.89 -2014-02-15 05:00:00,4703.4,0.0,33.28 -2014-02-15 06:00:00,4859.5,0.0,32.69 -2014-02-15 07:00:00,5067.8,0.0,33.45 -2014-02-15 08:00:00,5351.7,0.0,33.46 -2014-02-15 09:00:00,5646.6,0.0,34.85 -2014-02-15 10:00:00,5887.2,0.0,35.38 -2014-02-15 11:00:00,6017.9,0.0,34.54 -2014-02-15 12:00:00,6055.5,0.0035,33.94 -2014-02-15 13:00:00,6048.6,0.0,35.42 -2014-02-15 14:00:00,6047.9,0.0,34.88 -2014-02-15 15:00:00,6053.0,0.0065,34.37 -2014-02-15 16:00:00,6118.6,0.0035,32.56 -2014-02-15 17:00:00,6299.2,0.0135,31.09 -2014-02-15 18:00:00,6401.4,0.01,31.92 -2014-02-15 19:00:00,6288.1,0.01,31.59 -2014-02-15 20:00:00,6135.6,0.0035,31.59 -2014-02-15 21:00:00,5977.7,0.0,32.35 -2014-02-15 22:00:00,5776.1,0.0,31.27 -2014-02-15 23:00:00,5518.6,0.0,29.61 -2014-02-16 00:00:00,5228.8,0.0,28.0 -2014-02-16 01:00:00,4991.9,0.0,26.94 -2014-02-16 02:00:00,4857.8,0.0,26.49 -2014-02-16 03:00:00,4779.1,0.0,25.14 -2014-02-16 04:00:00,4746.6,0.0,24.49 -2014-02-16 05:00:00,4809.8,0.0,23.61 -2014-02-16 06:00:00,4908.0,0.0,22.61 -2014-02-16 07:00:00,5037.0,0.0,21.75 -2014-02-16 08:00:00,5276.8,0.0,22.02 -2014-02-16 09:00:00,5509.3,0.0,22.91 -2014-02-16 10:00:00,5722.9,0.0,23.44 -2014-02-16 11:00:00,5845.4,0.0,24.44 -2014-02-16 12:00:00,5857.3,0.0,25.84 -2014-02-16 13:00:00,5868.5,0.0,27.3 -2014-02-16 14:00:00,5851.0,0.0,28.42 -2014-02-16 15:00:00,5864.5,0.0,28.93 -2014-02-16 16:00:00,5932.1,0.0,29.07 -2014-02-16 17:00:00,6118.1,0.0,28.8 -2014-02-16 18:00:00,6291.7,0.0,27.88 -2014-02-16 19:00:00,6259.1,0.0,26.47 -2014-02-16 20:00:00,6181.1,0.0,25.0 -2014-02-16 21:00:00,6052.3,0.0,24.0 -2014-02-16 22:00:00,5853.0,0.0,23.61 -2014-02-16 23:00:00,5564.3,0.0,22.94 -2014-02-17 00:00:00,5304.5,0.0,22.0 -2014-02-17 01:00:00,5065.6,0.0,21.49 -2014-02-17 02:00:00,4996.8,0.0,20.49 -2014-02-17 03:00:00,4910.4,0.0,19.95 -2014-02-17 04:00:00,4874.1,0.0,19.61 -2014-02-17 05:00:00,5049.5,0.0,19.51 -2014-02-17 06:00:00,5279.0,0.0,18.95 -2014-02-17 07:00:00,5571.0,0.0,18.81 -2014-02-17 08:00:00,5888.5,0.0,19.0 -2014-02-17 09:00:00,6166.1,0.0,20.36 -2014-02-17 10:00:00,6359.7,0.0,22.12 -2014-02-17 11:00:00,6430.6,0.0,24.42 -2014-02-17 12:00:00,6424.4,0.0,26.49 -2014-02-17 13:00:00,6399.4,0.0,28.1 -2014-02-17 14:00:00,6358.4,0.0,29.49 -2014-02-17 15:00:00,6334.9,0.0,31.35 -2014-02-17 16:00:00,6351.4,0.0,32.0 -2014-02-17 17:00:00,6479.0,0.0,32.32 -2014-02-17 18:00:00,6669.0,0.0,30.86 -2014-02-17 19:00:00,6559.4,0.0,29.79 -2014-02-17 20:00:00,6374.4,0.0,29.16 -2014-02-17 21:00:00,6213.2,0.0,28.62 -2014-02-17 22:00:00,5922.1,0.0,27.46 -2014-02-17 23:00:00,5552.9,0.0,27.81 -2014-02-18 00:00:00,5213.4,0.0,27.62 -2014-02-18 01:00:00,4962.7,0.0,27.82 -2014-02-18 02:00:00,4840.5,0.0,28.52 -2014-02-18 03:00:00,4763.9,0.0,29.0 -2014-02-18 04:00:00,4796.4,0.0,28.64 -2014-02-18 05:00:00,5033.8,0.0035,28.71 -2014-02-18 06:00:00,5477.6,0.03,27.3 -2014-02-18 07:00:00,5994.4,0.0065,28.12 -2014-02-18 08:00:00,6426.7,0.0131,28.62 -2014-02-18 09:00:00,6702.4,0.0169,29.44 -2014-02-18 10:00:00,6828.7,0.0065,31.19 -2014-02-18 11:00:00,6903.8,0.0,31.79 -2014-02-18 12:00:00,6894.9,0.0,32.47 -2014-02-18 13:00:00,6817.4,0.0,33.54 -2014-02-18 14:00:00,6754.8,0.0,35.89 -2014-02-18 15:00:00,6734.5,0.0,37.52 -2014-02-18 16:00:00,6751.4,0.0,39.35 -2014-02-18 17:00:00,6855.5,0.0,38.85 -2014-02-18 18:00:00,6872.0,0.0,37.66 -2014-02-18 19:00:00,6717.6,0.0,36.8 -2014-02-18 20:00:00,6512.0,0.0,36.41 -2014-02-18 21:00:00,6262.5,0.0,36.41 -2014-02-18 22:00:00,5914.7,0.0,35.03 -2014-02-18 23:00:00,5484.3,0.0,33.85 -2014-02-19 00:00:00,5094.0,0.0,32.74 -2014-02-19 01:00:00,4845.0,0.0,32.42 -2014-02-19 02:00:00,4703.7,0.0,30.51 -2014-02-19 03:00:00,4649.3,0.0,30.41 -2014-02-19 04:00:00,4663.2,0.0,32.13 -2014-02-19 05:00:00,4896.2,0.0,31.96 -2014-02-19 06:00:00,5361.6,0.0,31.03 -2014-02-19 07:00:00,5849.9,0.0,32.44 -2014-02-19 08:00:00,6223.4,0.0,34.48 -2014-02-19 09:00:00,6431.4,0.0,38.88 -2014-02-19 10:00:00,6569.9,0.0,42.59 -2014-02-19 11:00:00,6703.3,0.0035,38.02 -2014-02-19 12:00:00,6786.6,0.0931,37.79 -2014-02-19 13:00:00,6784.8,0.1096,37.48 -2014-02-19 14:00:00,6679.5,0.0,36.67 -2014-02-19 15:00:00,6618.5,0.0,39.25 -2014-02-19 16:00:00,6609.1,0.0,40.74 -2014-02-19 17:00:00,6744.3,0.0,40.63 -2014-02-19 18:00:00,6702.9,0.0,41.45 -2014-02-19 19:00:00,6566.5,0.0065,41.36 -2014-02-19 20:00:00,6363.9,0.0,41.35 -2014-02-19 21:00:00,6130.5,0.0,42.02 -2014-02-19 22:00:00,5775.0,0.0,42.34 -2014-02-19 23:00:00,5341.7,0.0,42.51 -2014-02-20 00:00:00,4969.4,0.0,43.24 -2014-02-20 01:00:00,4707.7,0.0,42.54 -2014-02-20 02:00:00,4573.1,0.0,41.35 -2014-02-20 03:00:00,4509.8,0.0,39.59 -2014-02-20 04:00:00,4537.3,0.0,38.5 -2014-02-20 05:00:00,4772.9,0.0,38.42 -2014-02-20 06:00:00,5214.7,0.0,37.89 -2014-02-20 07:00:00,5692.4,0.0,36.97 -2014-02-20 08:00:00,6083.7,0.0,37.57 -2014-02-20 09:00:00,6305.7,0.0,40.1 -2014-02-20 10:00:00,6403.6,0.0,41.19 -2014-02-20 11:00:00,6433.2,0.0,42.96 -2014-02-20 12:00:00,6425.9,0.0,45.41 -2014-02-20 13:00:00,6413.3,0.0,45.77 -2014-02-20 14:00:00,6398.7,0.0,47.68 -2014-02-20 15:00:00,6361.3,0.0,45.36 -2014-02-20 16:00:00,6370.5,0.0,43.55 -2014-02-20 17:00:00,6611.7,0.0,42.07 -2014-02-20 18:00:00,6591.8,0.0,41.42 -2014-02-20 19:00:00,6428.7,0.0,41.24 -2014-02-20 20:00:00,6224.4,0.0,41.24 -2014-02-20 21:00:00,6011.1,0.0035,38.17 -2014-02-20 22:00:00,5702.8,0.0035,37.82 -2014-02-20 23:00:00,5288.4,0.0,37.93 -2014-02-21 00:00:00,4925.9,0.0,37.6 -2014-02-21 01:00:00,4692.0,0.0,36.92 -2014-02-21 02:00:00,4531.5,0.0,36.72 -2014-02-21 03:00:00,4456.7,0.0,36.58 -2014-02-21 04:00:00,4478.4,0.0,36.26 -2014-02-21 05:00:00,4713.8,0.0,36.26 -2014-02-21 06:00:00,5164.6,0.0,35.75 -2014-02-21 07:00:00,5687.5,0.0,35.89 -2014-02-21 08:00:00,6143.0,0.0035,36.26 -2014-02-21 09:00:00,6442.8,0.0,36.46 -2014-02-21 10:00:00,6577.9,0.0035,36.46 -2014-02-21 11:00:00,6639.1,0.0035,36.44 -2014-02-21 12:00:00,6629.5,0.0,37.25 -2014-02-21 13:00:00,6593.5,0.0,37.9 -2014-02-21 14:00:00,6553.4,0.0,39.3 -2014-02-21 15:00:00,6622.8,0.0,45.76 -2014-02-21 16:00:00,6664.9,0.0131,43.16 -2014-02-21 17:00:00,6670.7,0.0165,44.55 -2014-02-21 18:00:00,6555.3,0.0,44.05 -2014-02-21 19:00:00,6344.1,0.0035,45.33 -2014-02-21 20:00:00,6126.9,0.0,45.32 -2014-02-21 21:00:00,5908.5,0.0,43.26 -2014-02-21 22:00:00,5608.9,0.0,41.46 -2014-02-21 23:00:00,5284.6,0.0,41.1 -2014-02-22 00:00:00,4950.2,0.0,39.42 -2014-02-22 01:00:00,4716.1,0.0,39.69 -2014-02-22 02:00:00,4566.8,0.0,39.36 -2014-02-22 03:00:00,4462.2,0.0,38.65 -2014-02-22 04:00:00,4435.2,0.0,38.71 -2014-02-22 05:00:00,4499.6,0.0,38.05 -2014-02-22 06:00:00,4662.7,0.0,37.94 -2014-02-22 07:00:00,4834.7,0.0,37.65 -2014-02-22 08:00:00,5141.1,0.0,38.57 -2014-02-22 09:00:00,5382.2,0.0,40.23 -2014-02-22 10:00:00,5534.9,0.0,43.12 -2014-02-22 11:00:00,5598.0,0.0,46.03 -2014-02-22 12:00:00,5597.5,0.0,47.81 -2014-02-22 13:00:00,5545.5,0.0,49.19 -2014-02-22 14:00:00,5471.7,0.0,50.5 -2014-02-22 15:00:00,5435.1,0.0,52.1 -2014-02-22 16:00:00,5458.0,0.0,52.85 -2014-02-22 17:00:00,5584.7,0.0,52.31 -2014-02-22 18:00:00,5808.5,0.0,50.67 -2014-02-22 19:00:00,5764.8,0.0,50.32 -2014-02-22 20:00:00,5666.4,0.0,49.65 -2014-02-22 21:00:00,5526.2,0.0,47.81 -2014-02-22 22:00:00,5297.2,0.0,46.71 -2014-02-22 23:00:00,5063.4,0.0,45.2 -2014-02-23 00:00:00,4790.7,0.0,45.15 -2014-02-23 01:00:00,4569.2,0.0,43.53 -2014-02-23 02:00:00,4414.7,0.0,42.22 -2014-02-23 03:00:00,4327.8,0.0,42.2 -2014-02-23 04:00:00,4287.6,0.0,41.86 -2014-02-23 05:00:00,4329.1,0.0,41.27 -2014-02-23 06:00:00,4414.4,0.0,38.23 -2014-02-23 07:00:00,4536.4,0.0,40.67 -2014-02-23 08:00:00,4774.3,0.0,42.14 -2014-02-23 09:00:00,4993.6,0.0,43.49 -2014-02-23 10:00:00,5177.5,0.0,46.75 -2014-02-23 11:00:00,5287.4,0.0,47.98 -2014-02-23 12:00:00,5336.1,0.0,48.7 -2014-02-23 13:00:00,5333.3,0.0,50.36 -2014-02-23 14:00:00,5304.6,0.0,49.4 -2014-02-23 15:00:00,5325.4,0.0,52.44 -2014-02-23 16:00:00,5399.4,0.0,53.02 -2014-02-23 17:00:00,5570.2,0.0,50.28 -2014-02-23 18:00:00,5765.6,0.0,49.39 -2014-02-23 19:00:00,5753.2,0.0,49.39 -2014-02-23 20:00:00,5684.6,0.0,48.74 -2014-02-23 21:00:00,5666.0,0.0,48.26 -2014-02-23 22:00:00,5395.5,0.0,47.52 -2014-02-23 23:00:00,4963.7,0.0,46.95 -2014-02-24 00:00:00,4643.0,0.0,42.97 -2014-02-24 01:00:00,4479.7,0.0,42.2 -2014-02-24 02:00:00,4322.8,0.0,42.02 -2014-02-24 03:00:00,4261.8,0.0,41.37 -2014-02-24 04:00:00,4332.0,0.0,41.19 -2014-02-24 05:00:00,4615.1,0.0,40.54 -2014-02-24 06:00:00,5180.1,0.0,38.3 -2014-02-24 07:00:00,5715.3,0.0,35.81 -2014-02-24 08:00:00,6083.0,0.0,34.19 -2014-02-24 09:00:00,6355.5,0.0,33.54 -2014-02-24 10:00:00,6460.8,0.0,34.19 -2014-02-24 11:00:00,6512.0,0.0,35.28 -2014-02-24 12:00:00,6526.0,0.0,34.74 -2014-02-24 13:00:00,6527.2,0.0,34.93 -2014-02-24 14:00:00,6510.6,0.0,35.76 -2014-02-24 15:00:00,6528.6,0.0,35.73 -2014-02-24 16:00:00,6598.6,0.0,35.19 -2014-02-24 17:00:00,6732.2,0.0,34.66 -2014-02-24 18:00:00,6813.7,0.0,33.46 -2014-02-24 19:00:00,6680.2,0.0,32.35 -2014-02-24 20:00:00,6491.5,0.0,31.66 -2014-02-24 21:00:00,6247.4,0.0,30.0 -2014-02-24 22:00:00,5881.6,0.0,29.0 -2014-02-24 23:00:00,5457.8,0.0,28.0 -2014-02-25 00:00:00,5082.3,0.0,28.0 -2014-02-25 01:00:00,4853.6,0.0,27.0 -2014-02-25 02:00:00,4718.7,0.0,26.67 -2014-02-25 03:00:00,4651.8,0.0,26.12 -2014-02-25 04:00:00,4685.7,0.0,25.63 -2014-02-25 05:00:00,4939.7,0.0,25.13 -2014-02-25 06:00:00,5484.5,0.0,25.13 -2014-02-25 07:00:00,6043.4,0.0,24.86 -2014-02-25 08:00:00,6404.7,0.0,25.0 -2014-02-25 09:00:00,6634.3,0.0,26.1 -2014-02-25 10:00:00,6716.9,0.0,27.74 -2014-02-25 11:00:00,6732.4,0.0,28.93 -2014-02-25 12:00:00,6756.6,0.0,29.74 -2014-02-25 13:00:00,6755.1,0.0,29.93 -2014-02-25 14:00:00,6744.2,0.0,30.93 -2014-02-25 15:00:00,6735.1,0.0,31.61 -2014-02-25 16:00:00,6822.7,0.0,31.73 -2014-02-25 17:00:00,6916.1,0.0,31.88 -2014-02-25 18:00:00,6964.3,0.0,31.43 -2014-02-25 19:00:00,6833.9,0.0,30.67 -2014-02-25 20:00:00,6619.6,0.0,29.86 -2014-02-25 21:00:00,6366.0,0.0,29.0 -2014-02-25 22:00:00,5970.5,0.0,28.0 -2014-02-25 23:00:00,5530.3,0.0,27.12 -2014-02-26 00:00:00,5128.5,0.0,26.3 -2014-02-26 01:00:00,4910.1,0.0,25.95 -2014-02-26 02:00:00,4765.4,0.0,26.3 -2014-02-26 03:00:00,4711.4,0.0,26.51 -2014-02-26 04:00:00,4742.6,0.0,27.12 -2014-02-26 05:00:00,4989.1,0.0,27.14 -2014-02-26 06:00:00,5537.1,0.0,27.0 -2014-02-26 07:00:00,6128.3,0.0,26.82 -2014-02-26 08:00:00,6463.0,0.0,25.75 -2014-02-26 09:00:00,6705.5,0.0,26.42 -2014-02-26 10:00:00,6841.4,0.0065,26.1 -2014-02-26 11:00:00,6884.7,0.0,26.42 -2014-02-26 12:00:00,6826.6,0.0,29.0 -2014-02-26 13:00:00,6824.7,0.0,28.44 -2014-02-26 14:00:00,6766.0,0.0,28.86 -2014-02-26 15:00:00,6754.3,0.0,29.88 -2014-02-26 16:00:00,6771.1,0.0,29.74 -2014-02-26 17:00:00,6919.6,0.0,28.74 -2014-02-26 18:00:00,7047.3,0.0,26.86 -2014-02-26 19:00:00,6938.8,0.0,25.12 -2014-02-26 20:00:00,6700.0,0.0,24.0 -2014-02-26 21:00:00,6451.5,0.0,23.0 -2014-02-26 22:00:00,6073.2,0.0,22.0 -2014-02-26 23:00:00,5645.5,0.0,21.46 -2014-02-27 00:00:00,5260.3,0.0,20.63 -2014-02-27 01:00:00,5008.3,0.0,20.13 -2014-02-27 02:00:00,4874.0,0.0,19.62 -2014-02-27 03:00:00,4836.5,0.0,20.13 -2014-02-27 04:00:00,4849.4,0.0,19.66 -2014-02-27 05:00:00,5099.3,0.0,19.07 -2014-02-27 06:00:00,5611.8,0.0,19.19 -2014-02-27 07:00:00,6120.1,0.0,20.62 -2014-02-27 08:00:00,6386.2,0.0,23.17 -2014-02-27 09:00:00,6641.5,0.0,25.76 -2014-02-27 10:00:00,6772.5,0.0,27.01 -2014-02-27 11:00:00,6770.8,0.0,28.62 -2014-02-27 12:00:00,6777.5,0.0,28.73 -2014-02-27 13:00:00,6838.9,0.0,30.41 -2014-02-27 14:00:00,6772.6,0.0,29.88 -2014-02-27 15:00:00,6769.8,0.0,30.23 -2014-02-27 16:00:00,6820.1,0.0,29.54 -2014-02-27 17:00:00,6936.7,0.0,29.39 -2014-02-27 18:00:00,7057.5,0.0,28.88 -2014-02-27 19:00:00,6967.6,0.0,26.95 -2014-02-27 20:00:00,6787.9,0.0,23.68 -2014-02-27 21:00:00,6577.9,0.0,21.12 -2014-02-27 22:00:00,6244.3,0.0,19.28 -2014-02-27 23:00:00,5817.1,0.0,16.29 -2014-02-28 00:00:00,5455.8,0.0,14.49 -2014-02-28 01:00:00,5278.8,0.0,13.14 -2014-02-28 02:00:00,5127.5,0.0,12.68 -2014-02-28 03:00:00,5091.7,0.0,11.88 -2014-02-28 04:00:00,5157.6,0.0,11.35 -2014-02-28 05:00:00,5367.9,0.0,10.68 -2014-02-28 06:00:00,5864.1,0.0,10.0 -2014-02-28 07:00:00,6404.7,0.0,10.14 -2014-02-28 08:00:00,6733.3,0.0,11.27 -2014-02-28 09:00:00,6964.4,0.0,12.42 -2014-02-28 10:00:00,7051.2,0.0,14.51 -2014-02-28 11:00:00,7075.4,0.0,16.49 -2014-02-28 12:00:00,7049.4,0.0,17.98 -2014-02-28 13:00:00,7012.8,0.0,19.63 -2014-02-28 14:00:00,6940.1,0.0,20.81 -2014-02-28 15:00:00,6894.3,0.0,23.17 -2014-02-28 16:00:00,6913.7,0.0,23.83 -2014-02-28 17:00:00,6992.7,0.0,23.95 -2014-02-28 18:00:00,7061.0,0.0,22.58 -2014-02-28 19:00:00,6935.9,0.0,22.44 -2014-02-28 20:00:00,6731.0,0.0,21.91 -2014-02-28 21:00:00,6488.8,0.0,21.6 -2014-02-28 22:00:00,6195.0,0.0,21.42 -2014-02-28 23:00:00,5811.9,0.0,21.37 -2014-03-01 00:00:00,5449.7,0.0,21.03 -2014-03-01 01:00:00,5178.5,0.0,20.85 -2014-03-01 02:00:00,5027.0,0.0,20.69 -2014-03-01 03:00:00,4944.6,0.0,20.98 -2014-03-01 04:00:00,4921.9,0.0,20.79 -2014-03-01 05:00:00,4954.4,0.0,20.79 -2014-03-01 06:00:00,5107.3,0.0,20.31 -2014-03-01 07:00:00,5331.4,0.0,20.38 -2014-03-01 08:00:00,5630.4,0.0,23.33 -2014-03-01 09:00:00,5843.0,0.0,24.98 -2014-03-01 10:00:00,5999.3,0.0,27.59 -2014-03-01 11:00:00,6052.6,0.0,29.64 -2014-03-01 12:00:00,6012.2,0.0,30.84 -2014-03-01 13:00:00,5952.9,0.0,32.34 -2014-03-01 14:00:00,5887.0,0.0,34.25 -2014-03-01 15:00:00,5896.4,0.0,36.01 -2014-03-01 16:00:00,5987.6,0.0,35.64 -2014-03-01 17:00:00,6074.0,0.0,35.71 -2014-03-01 18:00:00,6235.0,0.0,35.12 -2014-03-01 19:00:00,6180.4,0.0,34.93 -2014-03-01 20:00:00,6050.9,0.0,35.05 -2014-03-01 21:00:00,5888.7,0.0,35.54 -2014-03-01 22:00:00,5661.4,0.0,35.54 -2014-03-01 23:00:00,5379.9,0.0,35.01 -2014-03-02 00:00:00,5110.1,0.0,35.71 -2014-03-02 01:00:00,4878.1,0.0,35.3 -2014-03-02 02:00:00,4716.5,0.0,34.91 -2014-03-02 03:00:00,4614.3,0.0,34.44 -2014-03-02 04:00:00,4578.9,0.0,34.98 -2014-03-02 05:00:00,4579.6,0.0,34.61 -2014-03-02 06:00:00,4688.7,0.0,35.35 -2014-03-02 07:00:00,4841.4,0.0,35.84 -2014-03-02 08:00:00,5124.8,0.0,36.01 -2014-03-02 09:00:00,5406.7,0.0,35.87 -2014-03-02 10:00:00,5645.7,0.0,36.89 -2014-03-02 11:00:00,5742.4,0.0,37.01 -2014-03-02 12:00:00,5745.8,0.0,38.07 -2014-03-02 13:00:00,5809.6,0.0,38.59 -2014-03-02 14:00:00,5835.5,0.0,38.42 -2014-03-02 15:00:00,5822.9,0.0,38.63 -2014-03-02 16:00:00,5882.5,0.0,38.57 -2014-03-02 17:00:00,6085.7,0.0,38.05 -2014-03-02 18:00:00,6232.8,0.0,36.7 -2014-03-02 19:00:00,6187.3,0.0,36.41 -2014-03-02 20:00:00,6078.3,0.0,36.07 -2014-03-02 21:00:00,5890.8,0.0,35.86 -2014-03-02 22:00:00,5625.4,0.0,35.0 -2014-03-02 23:00:00,5328.9,0.0,33.86 -2014-03-03 00:00:00,5025.9,0.0,32.86 -2014-03-03 01:00:00,4815.9,0.0,31.05 -2014-03-03 02:00:00,4691.8,0.0,29.51 -2014-03-03 03:00:00,4685.1,0.0,26.07 -2014-03-03 04:00:00,4754.3,0.0,23.7 -2014-03-03 05:00:00,5063.2,0.0,22.28 -2014-03-03 06:00:00,5582.0,0.0,21.37 -2014-03-03 07:00:00,6162.6,0.0,21.66 -2014-03-03 08:00:00,6535.6,0.0,21.03 -2014-03-03 09:00:00,6797.9,0.0,20.68 -2014-03-03 10:00:00,6927.6,0.0,20.56 -2014-03-03 11:00:00,6996.6,0.0,20.56 -2014-03-03 12:00:00,7061.7,0.0,20.68 -2014-03-03 13:00:00,7087.5,0.0,20.17 -2014-03-03 14:00:00,7074.3,0.0,20.21 -2014-03-03 15:00:00,7067.0,0.0,21.01 -2014-03-03 16:00:00,7101.8,0.0,21.61 -2014-03-03 17:00:00,7187.0,0.0,22.12 -2014-03-03 18:00:00,7243.4,0.0,22.37 -2014-03-03 19:00:00,7147.5,0.0,22.19 -2014-03-03 20:00:00,6922.8,0.0,21.86 -2014-03-03 21:00:00,6664.6,0.0,21.18 -2014-03-03 22:00:00,6242.5,0.0,20.51 -2014-03-03 23:00:00,5820.3,0.0,19.46 -2014-03-04 00:00:00,5419.5,0.0,18.49 -2014-03-04 01:00:00,5213.0,0.0,17.49 -2014-03-04 02:00:00,5089.9,0.0,16.49 -2014-03-04 03:00:00,5056.3,0.0,15.49 -2014-03-04 04:00:00,5089.6,0.0,14.81 -2014-03-04 05:00:00,5375.7,0.0,14.01 -2014-03-04 06:00:00,5866.3,0.0,13.2 -2014-03-04 07:00:00,6393.4,0.0,13.0 -2014-03-04 08:00:00,6745.4,0.0,14.23 -2014-03-04 09:00:00,6982.2,0.0,15.76 -2014-03-04 10:00:00,7043.2,0.0,17.66 -2014-03-04 11:00:00,7087.0,0.0,19.12 -2014-03-04 12:00:00,7031.4,0.0,21.17 -2014-03-04 13:00:00,6986.0,0.0,23.35 -2014-03-04 14:00:00,6916.0,0.0,25.93 -2014-03-04 15:00:00,6958.1,0.0,26.98 -2014-03-04 16:00:00,7013.8,0.0,27.64 -2014-03-04 17:00:00,7106.4,0.0,28.27 -2014-03-04 18:00:00,7143.4,0.0,28.47 -2014-03-04 19:00:00,6991.3,0.0,28.27 -2014-03-04 20:00:00,6774.5,0.0,28.47 -2014-03-04 21:00:00,6504.6,0.0,28.42 -2014-03-04 22:00:00,6104.3,0.0,28.75 -2014-03-04 23:00:00,5640.8,0.0,28.54 -2014-03-05 00:00:00,5236.8,0.0,28.68 -2014-03-05 01:00:00,5018.4,0.0,28.54 -2014-03-05 02:00:00,4853.8,0.0,28.54 -2014-03-05 03:00:00,4806.2,0.0,27.84 -2014-03-05 04:00:00,4845.1,0.0,27.13 -2014-03-05 05:00:00,5090.8,0.0,27.32 -2014-03-05 06:00:00,5594.6,0.0,27.86 -2014-03-05 07:00:00,6142.3,0.0,28.54 -2014-03-05 08:00:00,6460.3,0.0,28.93 -2014-03-05 09:00:00,6632.0,0.0,30.07 -2014-03-05 10:00:00,6709.5,0.0,31.37 -2014-03-05 11:00:00,6737.9,0.0,32.93 -2014-03-05 12:00:00,6701.2,0.0,34.11 -2014-03-05 13:00:00,6668.5,0.0,34.76 -2014-03-05 14:00:00,6621.4,0.0,35.99 -2014-03-05 15:00:00,6673.6,0.0,34.91 -2014-03-05 16:00:00,6778.0,0.0,34.6 -2014-03-05 17:00:00,6845.7,0.0,34.26 -2014-03-05 18:00:00,6908.5,0.0,32.56 -2014-03-05 19:00:00,6789.9,0.0,32.18 -2014-03-05 20:00:00,6598.9,0.0,31.19 -2014-03-05 21:00:00,6379.1,0.0,30.17 -2014-03-05 22:00:00,6013.2,0.0,29.39 -2014-03-05 23:00:00,5586.9,0.0,28.51 -2014-03-06 00:00:00,5222.7,0.0,26.32 -2014-03-06 01:00:00,5002.8,0.0,24.01 -2014-03-06 02:00:00,4879.3,0.0,22.0 -2014-03-06 03:00:00,4835.3,0.0,20.81 -2014-03-06 04:00:00,4903.0,0.0,19.46 -2014-03-06 05:00:00,5161.7,0.0,17.81 -2014-03-06 06:00:00,5688.2,0.0,16.85 -2014-03-06 07:00:00,6230.4,0.0,16.61 -2014-03-06 08:00:00,6605.4,0.0,17.49 -2014-03-06 09:00:00,6808.5,0.0,18.76 -2014-03-06 10:00:00,6879.5,0.0,20.37 -2014-03-06 11:00:00,6868.2,0.0,22.3 -2014-03-06 12:00:00,6850.5,0.0,24.15 -2014-03-06 13:00:00,6826.3,0.0,26.36 -2014-03-06 14:00:00,6777.9,0.0,27.46 -2014-03-06 15:00:00,6749.2,0.0,28.75 -2014-03-06 16:00:00,6794.3,0.0,28.14 -2014-03-06 17:00:00,6895.5,0.0,28.28 -2014-03-06 18:00:00,6998.4,0.0,27.8 -2014-03-06 19:00:00,6874.7,0.0,27.96 -2014-03-06 20:00:00,6671.1,0.0,27.79 -2014-03-06 21:00:00,6426.6,0.0,27.6 -2014-03-06 22:00:00,6073.2,0.0,26.56 -2014-03-06 23:00:00,5614.6,0.0,26.56 -2014-03-07 00:00:00,5215.4,0.0,26.77 -2014-03-07 01:00:00,4966.0,0.0,26.76 -2014-03-07 02:00:00,4822.8,0.0,26.9 -2014-03-07 03:00:00,4754.7,0.0,27.18 -2014-03-07 04:00:00,4781.1,0.0,27.69 -2014-03-07 05:00:00,5014.7,0.0,27.64 -2014-03-07 06:00:00,5522.0,0.0,27.64 -2014-03-07 07:00:00,6063.3,0.0,28.08 -2014-03-07 08:00:00,6440.2,0.0,28.4 -2014-03-07 09:00:00,6676.2,0.0,29.45 -2014-03-07 10:00:00,6796.6,0.0,30.06 -2014-03-07 11:00:00,6818.3,0.0,30.32 -2014-03-07 12:00:00,6805.3,0.0,31.65 -2014-03-07 13:00:00,6766.8,0.0,32.15 -2014-03-07 14:00:00,6705.4,0.0,33.74 -2014-03-07 15:00:00,6689.0,0.0,34.48 -2014-03-07 16:00:00,6722.8,0.0,34.72 -2014-03-07 17:00:00,6812.6,0.0,35.14 -2014-03-07 18:00:00,6768.6,0.0,35.46 -2014-03-07 19:00:00,6597.1,0.0,36.51 -2014-03-07 20:00:00,6380.2,0.0,36.24 -2014-03-07 21:00:00,6133.7,0.0,35.63 -2014-03-07 22:00:00,5841.1,0.0,35.09 -2014-03-07 23:00:00,5458.4,0.0,35.44 -2014-03-08 00:00:00,5063.8,0.0,35.99 -2014-03-08 01:00:00,4824.1,0.0,36.26 -2014-03-08 02:00:00,4667.5,0.0,36.65 -2014-03-08 03:00:00,4571.0,0.0,36.47 -2014-03-08 04:00:00,4547.4,0.0,36.23 -2014-03-08 05:00:00,4626.2,0.0,35.42 -2014-03-08 06:00:00,4753.1,0.0,34.65 -2014-03-08 07:00:00,4971.4,0.0,34.56 -2014-03-08 08:00:00,5244.4,0.0,37.89 -2014-03-08 09:00:00,5458.1,0.0,39.64 -2014-03-08 10:00:00,5612.9,0.0,41.58 -2014-03-08 11:00:00,5642.3,0.0,45.37 -2014-03-08 12:00:00,5620.8,0.0,48.85 -2014-03-08 13:00:00,5571.3,0.0,52.03 -2014-03-08 14:00:00,5511.0,0.0,52.85 -2014-03-08 15:00:00,5463.2,0.0,53.7 -2014-03-08 16:00:00,5467.3,0.0,53.36 -2014-03-08 17:00:00,5609.5,0.0,51.99 -2014-03-08 18:00:00,5813.2,0.0,50.67 -2014-03-08 19:00:00,5789.8,0.0,49.02 -2014-03-08 20:00:00,5687.6,0.0,48.52 -2014-03-08 21:00:00,5529.7,0.0,47.07 -2014-03-08 22:00:00,5325.1,0.0,46.7 -2014-03-08 23:00:00,5051.3,0.0,44.55 -2014-03-09 00:00:00,4793.5,0.0,43.23 -2014-03-09 01:00:00,4584.6,0.0,41.91 -2014-03-09 03:00:00,4423.5,0.0,40.05 -2014-03-09 04:00:00,4353.7,0.0,39.05 -2014-03-09 05:00:00,4365.9,0.0,38.86 -2014-03-09 06:00:00,4458.3,0.0,37.86 -2014-03-09 07:00:00,4573.4,0.0,37.86 -2014-03-09 08:00:00,4795.1,0.0,36.68 -2014-03-09 09:00:00,5029.1,0.0,36.56 -2014-03-09 10:00:00,5287.7,0.0,36.93 -2014-03-09 11:00:00,5407.7,0.0,37.39 -2014-03-09 12:00:00,5492.7,0.0,38.49 -2014-03-09 13:00:00,5479.9,0.0,39.28 -2014-03-09 14:00:00,5461.0,0.0,40.28 -2014-03-09 15:00:00,5449.3,0.0,41.13 -2014-03-09 16:00:00,5451.2,0.0,41.79 -2014-03-09 17:00:00,5479.5,0.0,42.26 -2014-03-09 18:00:00,5588.7,0.0,41.91 -2014-03-09 19:00:00,5862.5,0.0,40.89 -2014-03-09 20:00:00,5866.7,0.0,40.23 -2014-03-09 21:00:00,5743.8,0.0,39.84 -2014-03-09 22:00:00,5460.2,0.0,39.18 -2014-03-09 23:00:00,5107.4,0.0,39.05 -2014-03-10 00:00:00,4795.8,0.0,39.01 -2014-03-10 01:00:00,4555.9,0.0,38.83 -2014-03-10 02:00:00,4424.7,0.0,38.29 -2014-03-10 03:00:00,4374.1,0.0,37.99 -2014-03-10 04:00:00,4401.8,0.0,37.8 -2014-03-10 05:00:00,4633.0,0.0,38.54 -2014-03-10 06:00:00,5198.7,0.0,38.53 -2014-03-10 07:00:00,5761.2,0.0,38.2 -2014-03-10 08:00:00,6129.9,0.0,38.8 -2014-03-10 09:00:00,6365.7,0.0,36.41 -2014-03-10 10:00:00,6452.2,0.0,38.38 -2014-03-10 11:00:00,6477.3,0.0,41.45 -2014-03-10 12:00:00,6485.8,0.0,43.39 -2014-03-10 13:00:00,6462.2,0.0,44.54 -2014-03-10 14:00:00,6392.7,0.0,45.25 -2014-03-10 15:00:00,6360.6,0.0,46.8 -2014-03-10 16:00:00,6353.5,0.0,48.74 -2014-03-10 17:00:00,6350.2,0.0,48.98 -2014-03-10 18:00:00,6212.3,0.0,49.83 -2014-03-10 19:00:00,6324.0,0.0,45.26 -2014-03-10 20:00:00,6223.5,0.0,44.24 -2014-03-10 21:00:00,5994.8,0.0,43.56 -2014-03-10 22:00:00,5635.0,0.0,43.54 -2014-03-10 23:00:00,5159.6,0.0,43.82 -2014-03-11 00:00:00,4725.3,0.0,44.72 -2014-03-11 01:00:00,4499.7,0.0,44.71 -2014-03-11 02:00:00,4327.1,0.0,45.12 -2014-03-11 03:00:00,4271.9,0.0,44.62 -2014-03-11 04:00:00,4307.5,0.0,43.96 -2014-03-11 05:00:00,4563.0,0.0,43.85 -2014-03-11 06:00:00,5112.0,0.0,44.22 -2014-03-11 07:00:00,5705.9,0.0,45.27 -2014-03-11 08:00:00,6015.8,0.0,47.63 -2014-03-11 09:00:00,6237.6,0.0,49.1 -2014-03-11 10:00:00,6293.5,0.0,51.03 -2014-03-11 11:00:00,6269.5,0.0,53.45 -2014-03-11 12:00:00,6289.2,0.0,56.52 -2014-03-11 13:00:00,6269.9,0.0,59.35 -2014-03-11 14:00:00,6269.1,0.0,61.15 -2014-03-11 15:00:00,6249.3,0.0,61.73 -2014-03-11 16:00:00,6233.5,0.0,61.94 -2014-03-11 17:00:00,6218.6,0.0,62.4 -2014-03-11 18:00:00,6083.4,0.0,61.21 -2014-03-11 19:00:00,6160.4,0.0,61.32 -2014-03-11 20:00:00,6059.8,0.0,58.68 -2014-03-11 21:00:00,5849.9,0.0,57.19 -2014-03-11 22:00:00,5495.6,0.0,53.35 -2014-03-11 23:00:00,5049.2,0.0,52.97 -2014-03-12 00:00:00,4645.4,0.0,51.45 -2014-03-12 01:00:00,4375.8,0.0,50.5 -2014-03-12 02:00:00,4236.5,0.0,48.37 -2014-03-12 03:00:00,4158.5,0.0,46.74 -2014-03-12 04:00:00,4193.1,0.0,45.73 -2014-03-12 05:00:00,4414.1,0.0,45.2 -2014-03-12 06:00:00,4995.6,0.0,44.08 -2014-03-12 07:00:00,5574.5,0.0,43.3 -2014-03-12 08:00:00,5926.9,0.0,42.93 -2014-03-12 09:00:00,6157.8,0.0,44.1 -2014-03-12 10:00:00,6210.8,0.0,46.02 -2014-03-12 11:00:00,6260.9,0.0,46.94 -2014-03-12 12:00:00,6315.0,0.0,52.03 -2014-03-12 13:00:00,6350.4,0.0,50.88 -2014-03-12 14:00:00,6353.6,0.0,51.58 -2014-03-12 15:00:00,6355.2,0.0,51.02 -2014-03-12 16:00:00,6401.8,0.0,52.22 -2014-03-12 17:00:00,6479.9,0.0065,51.01 -2014-03-12 18:00:00,6405.7,0.0661,51.03 -2014-03-12 19:00:00,6381.6,0.0457,50.22 -2014-03-12 20:00:00,6172.0,0.0208,48.97 -2014-03-12 21:00:00,5936.4,0.0531,50.06 -2014-03-12 22:00:00,5600.9,0.0492,48.16 -2014-03-12 23:00:00,5179.5,0.0327,41.67 -2014-03-13 00:00:00,4785.7,0.0,35.8 -2014-03-13 01:00:00,4606.1,0.0,32.34 -2014-03-13 02:00:00,4504.5,0.0,28.11 -2014-03-13 03:00:00,4464.4,0.0,25.97 -2014-03-13 04:00:00,4510.5,0.0,23.36 -2014-03-13 05:00:00,4791.4,0.0,21.82 -2014-03-13 06:00:00,5403.1,0.0,20.36 -2014-03-13 07:00:00,6031.9,0.0,19.34 -2014-03-13 08:00:00,6381.0,0.0,19.19 -2014-03-13 09:00:00,6670.3,0.0,19.87 -2014-03-13 10:00:00,6826.2,0.0,20.26 -2014-03-13 11:00:00,6841.5,0.0,20.75 -2014-03-13 12:00:00,6864.4,0.0,21.47 -2014-03-13 13:00:00,6846.7,0.0035,22.81 -2014-03-13 14:00:00,6798.6,0.0,24.35 -2014-03-13 15:00:00,6777.1,0.0,26.56 -2014-03-13 16:00:00,6780.3,0.0,27.47 -2014-03-13 17:00:00,6765.3,0.0,27.42 -2014-03-13 18:00:00,6683.5,0.0,27.19 -2014-03-13 19:00:00,6799.4,0.0,26.0 -2014-03-13 20:00:00,6720.6,0.0,25.12 -2014-03-13 21:00:00,6484.6,0.0,24.86 -2014-03-13 22:00:00,6141.9,0.0,23.51 -2014-03-13 23:00:00,5707.8,0.0,23.12 -2014-03-14 00:00:00,5297.5,0.0,22.86 -2014-03-14 01:00:00,5047.4,0.0,22.31 -2014-03-14 02:00:00,4874.7,0.0,22.51 -2014-03-14 03:00:00,4800.7,0.0,22.81 -2014-03-14 04:00:00,4807.6,0.0,23.12 -2014-03-14 05:00:00,5014.2,0.0,23.27 -2014-03-14 06:00:00,5556.7,0.0,23.81 -2014-03-14 07:00:00,6111.9,0.0,23.78 -2014-03-14 08:00:00,6417.7,0.0,25.51 -2014-03-14 09:00:00,6678.5,0.0,28.03 -2014-03-14 10:00:00,6783.8,0.0,29.36 -2014-03-14 11:00:00,6794.7,0.0,31.41 -2014-03-14 12:00:00,6748.6,0.0,32.76 -2014-03-14 13:00:00,6673.0,0.0,35.66 -2014-03-14 14:00:00,6573.0,0.0,38.57 -2014-03-14 15:00:00,6516.2,0.0,41.18 -2014-03-14 16:00:00,6476.8,0.0,43.01 -2014-03-14 17:00:00,6448.1,0.0,42.83 -2014-03-14 18:00:00,6346.4,0.0,41.34 -2014-03-14 19:00:00,6399.7,0.0,40.35 -2014-03-14 20:00:00,6224.2,0.0,39.93 -2014-03-14 21:00:00,6027.5,0.0,40.1 -2014-03-14 22:00:00,5722.0,0.0,39.24 -2014-03-14 23:00:00,5336.5,0.0,39.68 -2014-03-15 00:00:00,4963.3,0.0,40.7 -2014-03-15 01:00:00,4696.4,0.0,41.25 -2014-03-15 02:00:00,4525.3,0.0,41.91 -2014-03-15 03:00:00,4430.3,0.0,42.83 -2014-03-15 04:00:00,4380.9,0.0,43.68 -2014-03-15 05:00:00,4435.1,0.0,44.72 -2014-03-15 06:00:00,4603.9,0.0,45.4 -2014-03-15 07:00:00,4820.1,0.0,46.99 -2014-03-15 08:00:00,5088.1,0.0,47.52 -2014-03-15 09:00:00,5306.4,0.0,48.46 -2014-03-15 10:00:00,5488.8,0.0,50.1 -2014-03-15 11:00:00,5548.8,0.0,52.68 -2014-03-15 12:00:00,5557.4,0.0,54.77 -2014-03-15 13:00:00,5503.9,0.0,55.41 -2014-03-15 14:00:00,5451.2,0.0,54.69 -2014-03-15 15:00:00,5404.1,0.0,55.35 -2014-03-15 16:00:00,5371.2,0.0,55.59 -2014-03-15 17:00:00,5371.9,0.0,54.57 -2014-03-15 18:00:00,5427.5,0.0,53.66 -2014-03-15 19:00:00,5607.1,0.0,53.18 -2014-03-15 20:00:00,5600.3,0.0,52.32 -2014-03-15 21:00:00,5492.0,0.0,50.78 -2014-03-15 22:00:00,5318.3,0.0,48.46 -2014-03-15 23:00:00,5065.1,0.0,46.84 -2014-03-16 00:00:00,4787.5,0.0,44.3 -2014-03-16 01:00:00,4561.8,0.0,42.24 -2014-03-16 02:00:00,4406.0,0.0,40.24 -2014-03-16 03:00:00,4323.6,0.0,38.86 -2014-03-16 04:00:00,4302.9,0.0,36.66 -2014-03-16 05:00:00,4352.0,0.0,35.0 -2014-03-16 06:00:00,4489.1,0.0,33.12 -2014-03-16 07:00:00,4636.2,0.0,31.31 -2014-03-16 08:00:00,4896.1,0.0,31.19 -2014-03-16 09:00:00,5156.5,0.0,31.19 -2014-03-16 10:00:00,5358.5,0.0,31.37 -2014-03-16 11:00:00,5471.2,0.0,32.26 -2014-03-16 12:00:00,5511.8,0.0,32.8 -2014-03-16 13:00:00,5505.5,0.0,34.35 -2014-03-16 14:00:00,5513.1,0.0,34.93 -2014-03-16 15:00:00,5530.0,0.0,35.26 -2014-03-16 16:00:00,5570.6,0.0,35.73 -2014-03-16 17:00:00,5669.1,0.0,35.05 -2014-03-16 18:00:00,5781.3,0.0,34.19 -2014-03-16 19:00:00,5965.9,0.0,33.54 -2014-03-16 20:00:00,5947.6,0.0,33.07 -2014-03-16 21:00:00,5803.9,0.0,32.19 -2014-03-16 22:00:00,5571.2,0.0,32.19 -2014-03-16 23:00:00,5216.6,0.0,31.68 -2014-03-17 00:00:00,4914.8,0.0,31.6 -2014-03-17 01:00:00,4725.7,0.0,30.18 -2014-03-17 02:00:00,4612.5,0.0,28.71 -2014-03-17 03:00:00,4570.6,0.0,27.18 -2014-03-17 04:00:00,4618.4,0.0,26.4 -2014-03-17 05:00:00,4868.3,0.0,25.32 -2014-03-17 06:00:00,5440.3,0.0,24.66 -2014-03-17 07:00:00,6017.9,0.0,24.01 -2014-03-17 08:00:00,6404.5,0.0,24.01 -2014-03-17 09:00:00,6667.9,0.0,24.01 -2014-03-17 10:00:00,6772.7,0.0,24.54 -2014-03-17 11:00:00,6806.5,0.0,25.83 -2014-03-17 12:00:00,6838.4,0.0,26.83 -2014-03-17 13:00:00,6805.9,0.0,27.61 -2014-03-17 14:00:00,6747.0,0.0,28.95 -2014-03-17 15:00:00,6695.2,0.0,30.39 -2014-03-17 16:00:00,6714.7,0.0,30.76 -2014-03-17 17:00:00,6740.3,0.0,31.76 -2014-03-17 18:00:00,6649.7,0.0,31.76 -2014-03-17 19:00:00,6651.7,0.0,32.24 -2014-03-17 20:00:00,6500.8,0.0,32.44 -2014-03-17 21:00:00,6259.9,0.0,32.44 -2014-03-17 22:00:00,5873.3,0.0,31.88 -2014-03-17 23:00:00,5432.4,0.0,31.88 -2014-03-18 00:00:00,5035.0,0.0,31.04 -2014-03-18 01:00:00,4799.7,0.0,30.62 -2014-03-18 02:00:00,4662.5,0.0,29.62 -2014-03-18 03:00:00,4612.1,0.0,29.43 -2014-03-18 04:00:00,4632.0,0.0,28.93 -2014-03-18 05:00:00,4887.2,0.0,28.32 -2014-03-18 06:00:00,5474.0,0.0,27.77 -2014-03-18 07:00:00,6034.3,0.0,28.13 -2014-03-18 08:00:00,6355.8,0.0,28.44 -2014-03-18 09:00:00,6558.2,0.0,31.08 -2014-03-18 10:00:00,6644.8,0.0,32.34 -2014-03-18 11:00:00,6664.6,0.0,32.7 -2014-03-18 12:00:00,6654.1,0.0,33.36 -2014-03-18 13:00:00,6577.6,0.0,34.87 -2014-03-18 14:00:00,6516.9,0.0,36.53 -2014-03-18 15:00:00,6508.2,0.0,38.07 -2014-03-18 16:00:00,6508.1,0.0,39.14 -2014-03-18 17:00:00,6498.9,0.0,38.87 -2014-03-18 18:00:00,6367.1,0.0,39.07 -2014-03-18 19:00:00,6473.3,0.0,37.81 -2014-03-18 20:00:00,6405.4,0.0,36.63 -2014-03-18 21:00:00,6215.2,0.0,35.44 -2014-03-18 22:00:00,5847.0,0.0,35.47 -2014-03-18 23:00:00,5379.0,0.0,34.23 -2014-03-19 00:00:00,4987.6,0.0,33.74 -2014-03-19 01:00:00,4758.6,0.0,33.35 -2014-03-19 02:00:00,4612.1,0.0,32.49 -2014-03-19 03:00:00,4556.6,0.0,32.37 -2014-03-19 04:00:00,4585.5,0.0,32.04 -2014-03-19 05:00:00,4814.0,0.0,32.18 -2014-03-19 06:00:00,5369.4,0.0,31.69 -2014-03-19 07:00:00,5936.6,0.0,32.18 -2014-03-19 08:00:00,6284.6,0.0,33.18 -2014-03-19 09:00:00,6511.3,0.0,34.71 -2014-03-19 10:00:00,6585.4,0.0,36.24 -2014-03-19 11:00:00,6615.7,0.0,37.39 -2014-03-19 12:00:00,6602.7,0.0,37.95 -2014-03-19 13:00:00,6599.4,0.0,39.14 -2014-03-19 14:00:00,6555.1,0.0,40.07 -2014-03-19 15:00:00,6583.8,0.0,43.52 -2014-03-19 16:00:00,6637.6,0.0,42.29 -2014-03-19 17:00:00,6642.4,0.0169,41.12 -2014-03-19 18:00:00,6581.8,0.0035,41.23 -2014-03-19 19:00:00,6527.2,0.0104,41.18 -2014-03-19 20:00:00,6375.8,0.0,41.53 -2014-03-19 21:00:00,6148.5,0.0139,42.34 -2014-03-19 22:00:00,5768.3,0.0931,45.0 -2014-03-19 23:00:00,5304.9,0.2253,42.38 -2014-03-20 00:00:00,4911.4,0.3341,41.94 -2014-03-20 01:00:00,4666.5,0.0596,41.44 -2014-03-20 02:00:00,4517.4,0.0,40.32 -2014-03-20 03:00:00,4456.6,0.0,39.76 -2014-03-20 04:00:00,4427.5,0.0,40.05 -2014-03-20 05:00:00,4656.5,0.0,40.15 -2014-03-20 06:00:00,5208.4,0.0,41.26 -2014-03-20 07:00:00,5786.3,0.0,42.06 -2014-03-20 08:00:00,6112.1,0.0,42.92 -2014-03-20 09:00:00,6315.9,0.0,43.57 -2014-03-20 10:00:00,6373.4,0.0,45.57 -2014-03-20 11:00:00,6393.2,0.0,48.32 -2014-03-20 12:00:00,6391.7,0.0,49.52 -2014-03-20 13:00:00,6382.2,0.0,50.32 -2014-03-20 14:00:00,6337.6,0.0,50.57 -2014-03-20 15:00:00,6315.9,0.0,51.47 -2014-03-20 16:00:00,6333.0,0.0,51.05 -2014-03-20 17:00:00,6291.7,0.0,50.86 -2014-03-20 18:00:00,6145.8,0.0,50.0 -2014-03-20 19:00:00,6221.3,0.0,48.32 -2014-03-20 20:00:00,6141.2,0.0,46.46 -2014-03-20 21:00:00,5950.9,0.0,45.01 -2014-03-20 22:00:00,5631.0,0.0,43.46 -2014-03-20 23:00:00,5197.5,0.0,42.1 -2014-03-21 00:00:00,4824.9,0.0,41.66 -2014-03-21 01:00:00,4589.7,0.0,40.8 -2014-03-21 02:00:00,4443.1,0.0,40.47 -2014-03-21 03:00:00,4380.9,0.0,40.54 -2014-03-21 04:00:00,4404.8,0.0,39.99 -2014-03-21 05:00:00,4649.5,0.0,39.68 -2014-03-21 06:00:00,5195.7,0.0,39.19 -2014-03-21 07:00:00,5726.4,0.0,39.07 -2014-03-21 08:00:00,6061.2,0.0,39.22 -2014-03-21 09:00:00,6296.1,0.0,39.19 -2014-03-21 10:00:00,6363.9,0.0,40.86 -2014-03-21 11:00:00,6364.5,0.0,42.47 -2014-03-21 12:00:00,6349.4,0.0,43.81 -2014-03-21 13:00:00,6335.3,0.0,45.66 -2014-03-21 14:00:00,6270.6,0.0,47.87 -2014-03-21 15:00:00,6231.3,0.0,48.37 -2014-03-21 16:00:00,6211.9,0.0,49.54 -2014-03-21 17:00:00,6161.9,0.0,49.36 -2014-03-21 18:00:00,5993.0,0.0,49.67 -2014-03-21 19:00:00,6050.4,0.0,48.86 -2014-03-21 20:00:00,5974.1,0.0,47.47 -2014-03-21 21:00:00,5779.3,0.0,45.48 -2014-03-21 22:00:00,5524.1,0.0,44.87 -2014-03-21 23:00:00,5168.7,0.0,43.71 -2014-03-22 00:00:00,4806.1,0.0,41.2 -2014-03-22 01:00:00,4563.2,0.0,40.96 -2014-03-22 02:00:00,4410.7,0.0,39.75 -2014-03-22 03:00:00,4326.1,0.0,39.66 -2014-03-22 04:00:00,4300.5,0.0,39.57 -2014-03-22 05:00:00,4362.2,0.0,39.81 -2014-03-22 06:00:00,4524.2,0.0,40.41 -2014-03-22 07:00:00,4733.6,0.0,42.32 -2014-03-22 08:00:00,5036.4,0.0,43.72 -2014-03-22 09:00:00,5264.3,0.0,45.73 -2014-03-22 10:00:00,5420.0,0.0,47.19 -2014-03-22 11:00:00,5504.1,0.0,50.82 -2014-03-22 12:00:00,5520.5,0.0,51.34 -2014-03-22 13:00:00,5455.0,0.0,52.96 -2014-03-22 14:00:00,5390.9,0.0,57.21 -2014-03-22 15:00:00,5334.9,0.0,59.99 -2014-03-22 16:00:00,5300.3,0.0,60.57 -2014-03-22 17:00:00,5292.7,0.0,61.33 -2014-03-22 18:00:00,5320.7,0.0,61.63 -2014-03-22 19:00:00,5471.9,0.0,59.84 -2014-03-22 20:00:00,5510.8,0.0,56.22 -2014-03-22 21:00:00,5412.1,0.0,52.12 -2014-03-22 22:00:00,5219.2,0.0,48.21 -2014-03-22 23:00:00,4958.6,0.0,45.35 -2014-03-23 00:00:00,4681.6,0.0,43.84 -2014-03-23 01:00:00,4458.1,0.0,42.66 -2014-03-23 02:00:00,4299.5,0.0,41.18 -2014-03-23 03:00:00,4221.5,0.0,40.12 -2014-03-23 04:00:00,4189.8,0.0,39.51 -2014-03-23 05:00:00,4235.6,0.0,39.0 -2014-03-23 06:00:00,4347.2,0.0,39.05 -2014-03-23 07:00:00,4479.1,0.0,38.86 -2014-03-23 08:00:00,4762.4,0.0,39.05 -2014-03-23 09:00:00,5055.4,0.0,39.19 -2014-03-23 10:00:00,5261.1,0.0,39.19 -2014-03-23 11:00:00,5373.6,0.0,39.73 -2014-03-23 12:00:00,5431.6,0.0,40.24 -2014-03-23 13:00:00,5438.0,0.0,40.73 -2014-03-23 14:00:00,5425.7,0.0,40.93 -2014-03-23 15:00:00,5437.3,0.0,40.59 -2014-03-23 16:00:00,5465.8,0.0,39.37 -2014-03-23 17:00:00,5535.7,0.0,38.93 -2014-03-23 18:00:00,5631.0,0.0,37.49 -2014-03-23 19:00:00,5808.4,0.0,37.19 -2014-03-23 20:00:00,5849.8,0.0,35.26 -2014-03-23 21:00:00,5729.3,0.0,33.8 -2014-03-23 22:00:00,5487.1,0.0,31.94 -2014-03-23 23:00:00,5148.6,0.0,30.49 -2014-03-24 00:00:00,4865.4,0.0,28.68 -2014-03-24 01:00:00,4683.2,0.0,27.14 -2014-03-24 02:00:00,4577.9,0.0,24.9 -2014-03-24 03:00:00,4543.7,0.0,23.82 -2014-03-24 04:00:00,4589.3,0.0,23.02 -2014-03-24 05:00:00,4845.5,0.0,22.68 -2014-03-24 06:00:00,5414.7,0.0,22.14 -2014-03-24 07:00:00,5969.3,0.0,22.02 -2014-03-24 08:00:00,6357.7,0.0,22.07 -2014-03-24 09:00:00,6593.6,0.0,23.6 -2014-03-24 10:00:00,6676.3,0.0,24.39 -2014-03-24 11:00:00,6693.1,0.0,25.82 -2014-03-24 12:00:00,6680.9,0.0,27.15 -2014-03-24 13:00:00,6644.1,0.0,29.0 -2014-03-24 14:00:00,6590.5,0.0,30.49 -2014-03-24 15:00:00,6549.2,0.0,32.0 -2014-03-24 16:00:00,6564.8,0.0,33.49 -2014-03-24 17:00:00,6555.5,0.0,33.26 -2014-03-24 18:00:00,6465.6,0.0,33.07 -2014-03-24 19:00:00,6557.4,0.0,32.68 -2014-03-24 20:00:00,6453.4,0.0,31.68 -2014-03-24 21:00:00,6241.8,0.0,31.0 -2014-03-24 22:00:00,5883.1,0.0,30.46 -2014-03-24 23:00:00,5425.2,0.0,30.0 -2014-03-25 00:00:00,5032.8,0.0,29.12 -2014-03-25 01:00:00,4797.0,0.0,28.32 -2014-03-25 02:00:00,4649.7,0.0,28.0 -2014-03-25 03:00:00,4584.6,0.0,26.82 -2014-03-25 04:00:00,4621.6,0.0,26.62 -2014-03-25 05:00:00,4887.8,0.0,26.77 -2014-03-25 06:00:00,5437.0,0.0,27.13 -2014-03-25 07:00:00,5995.6,0.0,27.36 -2014-03-25 08:00:00,6342.1,0.0,28.43 -2014-03-25 09:00:00,6570.5,0.0,30.57 -2014-03-25 10:00:00,6620.2,0.0,32.62 -2014-03-25 11:00:00,6606.5,0.0,33.61 -2014-03-25 12:00:00,6567.3,0.0,35.5 -2014-03-25 13:00:00,6551.2,0.0,36.08 -2014-03-25 14:00:00,6525.9,0.0,36.46 -2014-03-25 15:00:00,6546.6,0.0,36.31 -2014-03-25 16:00:00,6584.8,0.0,36.66 -2014-03-25 17:00:00,6596.4,0.0,36.26 -2014-03-25 18:00:00,6521.9,0.0,36.26 -2014-03-25 19:00:00,6547.6,0.0,35.93 -2014-03-25 20:00:00,6420.4,0.0,35.37 -2014-03-25 21:00:00,6189.2,0.0,34.61 -2014-03-25 22:00:00,5817.3,0.0,33.9 -2014-03-25 23:00:00,5362.4,0.0,33.37 -2014-03-26 00:00:00,4978.1,0.0,33.26 -2014-03-26 01:00:00,4733.7,0.0,32.9 -2014-03-26 02:00:00,4599.7,0.0,33.26 -2014-03-26 03:00:00,4546.1,0.0,33.68 -2014-03-26 04:00:00,4572.4,0.0,33.68 -2014-03-26 05:00:00,4817.0,0.0,33.68 -2014-03-26 06:00:00,5370.2,0.0,33.19 -2014-03-26 07:00:00,5967.1,0.0,33.68 -2014-03-26 08:00:00,6342.7,0.0,33.19 -2014-03-26 09:00:00,6585.6,0.0,31.68 -2014-03-26 10:00:00,6633.7,0.0,32.07 -2014-03-26 11:00:00,6655.1,0.0,32.83 -2014-03-26 12:00:00,6632.6,0.0,34.0 -2014-03-26 13:00:00,6617.8,0.0,33.92 -2014-03-26 14:00:00,6601.9,0.0,34.12 -2014-03-26 15:00:00,6607.4,0.0,33.48 -2014-03-26 16:00:00,6638.9,0.0,33.42 -2014-03-26 17:00:00,6621.8,0.0,32.73 -2014-03-26 18:00:00,6524.7,0.0,32.74 -2014-03-26 19:00:00,6621.0,0.0,31.35 -2014-03-26 20:00:00,6595.4,0.0,29.68 -2014-03-26 21:00:00,6367.1,0.0,28.33 -2014-03-26 22:00:00,6016.9,0.0,27.68 -2014-03-26 23:00:00,5551.2,0.0,26.19 -2014-03-27 00:00:00,5172.7,0.0,25.33 -2014-03-27 01:00:00,4932.3,0.0,25.14 -2014-03-27 02:00:00,4787.2,0.0,25.0 -2014-03-27 03:00:00,4739.0,0.0,24.49 -2014-03-27 04:00:00,4761.4,0.0,24.14 -2014-03-27 05:00:00,5019.1,0.0,24.0 -2014-03-27 06:00:00,5561.1,0.0,23.69 -2014-03-27 07:00:00,6096.5,0.0,23.3 -2014-03-27 08:00:00,6436.1,0.0,24.07 -2014-03-27 09:00:00,6626.5,0.0,25.26 -2014-03-27 10:00:00,6675.9,0.0,27.28 -2014-03-27 11:00:00,6671.5,0.0,29.29 -2014-03-27 12:00:00,6641.9,0.0,32.75 -2014-03-27 13:00:00,6606.5,0.0,34.95 -2014-03-27 14:00:00,6541.5,0.0,36.64 -2014-03-27 15:00:00,6504.9,0.0,39.32 -2014-03-27 16:00:00,6500.6,0.0,40.08 -2014-03-27 17:00:00,6502.1,0.0,39.64 -2014-03-27 18:00:00,6368.5,0.0,39.35 -2014-03-27 19:00:00,6424.0,0.0,40.17 -2014-03-27 20:00:00,6336.0,0.0,40.1 -2014-03-27 21:00:00,6103.6,0.0,39.48 -2014-03-27 22:00:00,5757.7,0.0,38.55 -2014-03-27 23:00:00,5311.7,0.0,37.92 -2014-03-28 00:00:00,4934.8,0.0,37.54 -2014-03-28 01:00:00,4666.8,0.0,37.19 -2014-03-28 02:00:00,4515.4,0.0,37.49 -2014-03-28 03:00:00,4452.9,0.0,38.05 -2014-03-28 04:00:00,4467.6,0.0,38.32 -2014-03-28 05:00:00,4703.0,0.0,39.2 -2014-03-28 06:00:00,5222.9,0.0,39.65 -2014-03-28 07:00:00,5765.5,0.0,40.37 -2014-03-28 08:00:00,6097.5,0.0,42.55 -2014-03-28 09:00:00,6308.7,0.0,45.18 -2014-03-28 10:00:00,6385.1,0.0,49.24 -2014-03-28 11:00:00,6454.5,0.0069,50.28 -2014-03-28 12:00:00,6479.3,0.0231,49.55 -2014-03-28 13:00:00,6445.5,0.0,50.25 -2014-03-28 14:00:00,6430.4,0.0,51.65 -2014-03-28 15:00:00,6397.7,0.0,52.6 -2014-03-28 16:00:00,6422.2,0.0,53.92 -2014-03-28 17:00:00,6369.8,0.0,55.32 -2014-03-28 18:00:00,6169.3,0.0,58.45 -2014-03-28 19:00:00,6114.2,0.0,56.16 -2014-03-28 20:00:00,5999.6,0.0,56.25 -2014-03-28 21:00:00,5770.8,0.0,55.15 -2014-03-28 22:00:00,5497.9,0.0035,54.49 -2014-03-28 23:00:00,5122.3,0.0,54.95 -2014-03-29 00:00:00,4770.9,0.0,53.69 -2014-03-29 01:00:00,4515.0,0.0,54.71 -2014-03-29 02:00:00,4347.2,0.0,54.82 -2014-03-29 03:00:00,4247.6,0.0,53.08 -2014-03-29 04:00:00,4205.9,0.0,51.25 -2014-03-29 05:00:00,4273.8,0.0,48.99 -2014-03-29 06:00:00,4443.8,0.0,46.94 -2014-03-29 07:00:00,4670.2,0.0,46.17 -2014-03-29 08:00:00,4998.0,0.0,48.09 -2014-03-29 09:00:00,5310.2,0.0,48.23 -2014-03-29 10:00:00,5504.0,0.0,48.11 -2014-03-29 11:00:00,5588.1,0.02,46.88 -2014-03-29 12:00:00,5630.0,0.02,46.6 -2014-03-29 13:00:00,5639.7,0.03,46.41 -2014-03-29 14:00:00,5666.9,0.0661,45.73 -2014-03-29 15:00:00,5662.3,0.0961,44.43 -2014-03-29 16:00:00,5669.5,0.0461,44.43 -2014-03-29 17:00:00,5690.4,0.0908,44.07 -2014-03-29 18:00:00,5723.8,0.0716,44.41 -2014-03-29 19:00:00,5792.7,0.0551,44.29 -2014-03-29 20:00:00,5716.0,0.1027,44.76 -2014-03-29 21:00:00,5572.2,0.08,44.27 -2014-03-29 22:00:00,5384.1,0.1339,43.6 -2014-03-29 23:00:00,5103.8,0.2608,43.6 -2014-03-30 00:00:00,4808.4,0.2559,43.94 -2014-03-30 01:00:00,4563.1,0.172,44.6 -2014-03-30 02:00:00,4381.7,0.098,45.19 -2014-03-30 03:00:00,4267.3,0.0,46.16 -2014-03-30 04:00:00,4213.8,0.01,46.04 -2014-03-30 05:00:00,4248.8,0.0,46.29 -2014-03-30 06:00:00,4362.5,0.0131,46.17 -2014-03-30 07:00:00,4506.4,0.0065,45.38 -2014-03-30 08:00:00,4778.5,0.0,44.86 -2014-03-30 09:00:00,5059.3,0.0,45.25 -2014-03-30 10:00:00,5280.3,0.0,44.11 -2014-03-30 11:00:00,5403.1,0.0,44.86 -2014-03-30 12:00:00,5475.8,0.0,45.27 -2014-03-30 13:00:00,5492.8,0.0,45.5 -2014-03-30 14:00:00,5489.7,0.0,46.23 -2014-03-30 15:00:00,5504.5,0.0,46.18 -2014-03-30 16:00:00,5544.1,0.0,45.81 -2014-03-30 17:00:00,5627.7,0.0,45.49 -2014-03-30 18:00:00,5736.8,0.0,43.9 -2014-03-30 19:00:00,5822.1,0.0239,43.24 -2014-03-30 20:00:00,5803.4,0.0139,42.24 -2014-03-30 21:00:00,5635.0,0.0,41.74 -2014-03-30 22:00:00,5366.8,0.0035,40.88 -2014-03-30 23:00:00,5007.9,0.0,40.74 -2014-03-31 00:00:00,4690.4,0.0,40.35 -2014-03-31 01:00:00,4483.8,0.0,39.54 -2014-03-31 02:00:00,4359.6,0.0035,39.35 -2014-03-31 03:00:00,4312.5,0.0,38.33 -2014-03-31 04:00:00,4357.9,0.0035,38.76 -2014-03-31 05:00:00,4620.3,0.0392,38.54 -2014-03-31 06:00:00,5186.8,0.0,38.37 -2014-03-31 07:00:00,5803.7,0.0231,36.49 -2014-03-31 08:00:00,6178.4,0.0196,36.74 -2014-03-31 09:00:00,6422.1,0.0065,37.58 -2014-03-31 10:00:00,6555.4,0.0,38.47 -2014-03-31 11:00:00,6564.6,0.0,39.99 -2014-03-31 12:00:00,6492.7,0.0,42.2 -2014-03-31 13:00:00,6440.9,0.0,45.25 -2014-03-31 14:00:00,6369.8,0.0,47.22 -2014-03-31 15:00:00,6332.8,0.0,49.18 -2014-03-31 16:00:00,6317.2,0.0,52.0 -2014-03-31 17:00:00,6267.8,0.0,53.04 -2014-03-31 18:00:00,6104.9,0.0,53.16 -2014-03-31 19:00:00,6147.9,0.0,52.81 -2014-03-31 20:00:00,6122.4,0.0,51.46 -2014-03-31 21:00:00,5908.3,0.0,48.65 -2014-03-31 22:00:00,5582.1,0.0,44.01 -2014-03-31 23:00:00,5130.8,0.0,41.49 -2014-04-01 00:00:00,4738.9,0.0,40.86 -2014-04-01 01:00:00,4490.9,0.0,40.93 -2014-04-01 02:00:00,4337.5,0.0,40.45 -2014-04-01 03:00:00,4281.9,0.0,39.49 -2014-04-01 04:00:00,4318.8,0.0,38.98 -2014-04-01 05:00:00,4576.9,0.0,39.25 -2014-04-01 06:00:00,5137.2,0.0,38.88 -2014-04-01 07:00:00,5682.1,0.0,38.17 -2014-04-01 08:00:00,6006.5,0.0,39.54 -2014-04-01 09:00:00,6216.8,0.0,41.26 -2014-04-01 10:00:00,6274.6,0.0,43.82 -2014-04-01 11:00:00,6288.2,0.0,45.85 -2014-04-01 12:00:00,6263.4,0.0,47.37 -2014-04-01 13:00:00,6239.0,0.0,49.52 -2014-04-01 14:00:00,6218.9,0.0,53.32 -2014-04-01 15:00:00,6198.5,0.0,54.98 -2014-04-01 16:00:00,6210.2,0.0,56.65 -2014-04-01 17:00:00,6239.3,0.0,57.09 -2014-04-01 18:00:00,6105.7,0.0,52.07 -2014-04-01 19:00:00,6093.0,0.0,50.03 -2014-04-01 20:00:00,6068.0,0.0,47.05 -2014-04-01 21:00:00,5848.8,0.0,46.2 -2014-04-01 22:00:00,5501.4,0.0,44.68 -2014-04-01 23:00:00,5059.3,0.0,43.61 -2014-04-02 00:00:00,4652.6,0.0,43.22 -2014-04-02 01:00:00,4410.8,0.0,42.74 -2014-04-02 02:00:00,4272.4,0.0,42.35 -2014-04-02 03:00:00,4207.0,0.0,41.72 -2014-04-02 04:00:00,4234.9,0.0,41.72 -2014-04-02 05:00:00,4491.7,0.0,41.18 -2014-04-02 06:00:00,5023.9,0.0,41.77 -2014-04-02 07:00:00,5631.6,0.0,41.91 -2014-04-02 08:00:00,6003.4,0.0,42.52 -2014-04-02 09:00:00,6240.5,0.0,43.77 -2014-04-02 10:00:00,6321.3,0.0,43.44 -2014-04-02 11:00:00,6378.3,0.0,45.09 -2014-04-02 12:00:00,6379.7,0.0,46.27 -2014-04-02 13:00:00,6366.2,0.0,45.12 -2014-04-02 14:00:00,6352.7,0.0,46.9 -2014-04-02 15:00:00,6325.9,0.0,46.24 -2014-04-02 16:00:00,6300.2,0.0,46.92 -2014-04-02 17:00:00,6254.6,0.0,50.24 -2014-04-02 18:00:00,6117.2,0.0,51.69 -2014-04-02 19:00:00,6141.1,0.0,50.17 -2014-04-02 20:00:00,6106.0,0.0,48.49 -2014-04-02 21:00:00,5878.4,0.0,47.98 -2014-04-02 22:00:00,5531.3,0.0,47.79 -2014-04-02 23:00:00,5055.0,0.0,45.73 -2014-04-03 00:00:00,4658.9,0.0,44.14 -2014-04-03 01:00:00,4410.9,0.0,42.88 -2014-04-03 02:00:00,4264.1,0.0,43.46 -2014-04-03 03:00:00,4198.0,0.0,43.61 -2014-04-03 04:00:00,4214.2,0.0,44.06 -2014-04-03 05:00:00,4462.4,0.0,45.43 -2014-04-03 06:00:00,4988.7,0.0,45.61 -2014-04-03 07:00:00,5539.8,0.0,45.75 -2014-04-03 08:00:00,5884.8,0.0,46.43 -2014-04-03 09:00:00,6120.2,0.0,47.59 -2014-04-03 10:00:00,6182.3,0.0,48.68 -2014-04-03 11:00:00,6194.6,0.0,50.73 -2014-04-03 12:00:00,6188.6,0.0,53.0 -2014-04-03 13:00:00,6172.3,0.0,54.6 -2014-04-03 14:00:00,6161.7,0.0,57.34 -2014-04-03 15:00:00,6149.0,0.0,59.24 -2014-04-03 16:00:00,6162.4,0.0,61.09 -2014-04-03 17:00:00,6138.7,0.0,58.26 -2014-04-03 18:00:00,5991.1,0.0,58.64 -2014-04-03 19:00:00,6028.4,0.0,55.61 -2014-04-03 20:00:00,5974.8,0.0,52.2 -2014-04-03 21:00:00,5748.4,0.0,50.9 -2014-04-03 22:00:00,5412.6,0.0,51.36 -2014-04-03 23:00:00,4982.8,0.01,48.75 -2014-04-04 00:00:00,4586.9,0.04,47.07 -2014-04-04 01:00:00,4348.0,0.0165,47.0 -2014-04-04 02:00:00,4201.3,0.0035,45.49 -2014-04-04 03:00:00,4138.5,0.0,44.38 -2014-04-04 04:00:00,4165.9,0.0,43.53 -2014-04-04 05:00:00,4411.6,0.0,43.32 -2014-04-04 06:00:00,4952.2,0.0,43.32 -2014-04-04 07:00:00,5544.1,0.0035,43.09 -2014-04-04 08:00:00,5956.8,0.0131,43.74 -2014-04-04 09:00:00,6210.7,0.0,42.0 -2014-04-04 10:00:00,6331.9,0.0,42.88 -2014-04-04 11:00:00,6403.8,0.0,44.38 -2014-04-04 12:00:00,6416.5,0.0,44.08 -2014-04-04 13:00:00,6414.5,0.0,43.47 -2014-04-04 14:00:00,6400.7,0.0,43.03 -2014-04-04 15:00:00,6407.2,0.0,42.76 -2014-04-04 16:00:00,6419.9,0.0,41.47 -2014-04-04 17:00:00,6426.0,0.0,42.21 -2014-04-04 18:00:00,6286.8,0.0065,41.15 -2014-04-04 19:00:00,6216.9,0.0343,40.83 -2014-04-04 20:00:00,6043.6,0.01,40.27 -2014-04-04 21:00:00,5810.1,0.0165,41.32 -2014-04-04 22:00:00,5515.5,0.01,40.34 -2014-04-04 23:00:00,5145.1,0.01,39.76 -2014-04-05 00:00:00,4780.6,0.0757,40.02 -2014-04-05 01:00:00,4535.9,0.0688,39.95 -2014-04-05 02:00:00,4375.3,0.0,40.2 -2014-04-05 03:00:00,4271.9,0.0,41.05 -2014-04-05 04:00:00,4235.4,0.0,40.93 -2014-04-05 05:00:00,4302.7,0.0,40.21 -2014-04-05 06:00:00,4450.8,0.0,41.24 -2014-04-05 07:00:00,4667.9,0.0,41.94 -2014-04-05 08:00:00,4951.3,0.0,43.2 -2014-04-05 09:00:00,5177.4,0.0,46.14 -2014-04-05 10:00:00,5343.4,0.0,50.54 -2014-04-05 11:00:00,5421.5,0.0,50.22 -2014-04-05 12:00:00,5424.2,0.0,49.95 -2014-04-05 13:00:00,5386.7,0.0,50.35 -2014-04-05 14:00:00,5330.7,0.0,50.32 -2014-04-05 15:00:00,5286.0,0.0,51.62 -2014-04-05 16:00:00,5256.2,0.0,52.17 -2014-04-05 17:00:00,5256.4,0.0,51.69 -2014-04-05 18:00:00,5287.5,0.0,51.15 -2014-04-05 19:00:00,5417.7,0.0,49.72 -2014-04-05 20:00:00,5516.7,0.0,47.1 -2014-04-05 21:00:00,5434.9,0.0,44.63 -2014-04-05 22:00:00,5242.4,0.0,43.86 -2014-04-05 23:00:00,4981.9,0.0,42.32 -2014-04-06 00:00:00,4693.0,0.0,41.32 -2014-04-06 01:00:00,4462.3,0.0,40.12 -2014-04-06 02:00:00,4305.6,0.0,39.12 -2014-04-06 03:00:00,4212.2,0.0,38.8 -2014-04-06 04:00:00,4180.2,0.0,37.81 -2014-04-06 05:00:00,4232.5,0.0,37.49 -2014-04-06 06:00:00,4317.2,0.0,36.75 -2014-04-06 07:00:00,4467.6,0.0,36.49 -2014-04-06 08:00:00,4705.4,0.0,37.39 -2014-04-06 09:00:00,4951.1,0.0,39.14 -2014-04-06 10:00:00,5121.6,0.0,41.81 -2014-04-06 11:00:00,5208.2,0.0,43.66 -2014-04-06 12:00:00,5235.6,0.0,45.36 -2014-04-06 13:00:00,5213.6,0.0,48.62 -2014-04-06 14:00:00,5190.3,0.0,50.91 -2014-04-06 15:00:00,5160.8,0.0,53.47 -2014-04-06 16:00:00,5151.3,0.0,55.51 -2014-04-06 17:00:00,5170.0,0.0,58.03 -2014-04-06 18:00:00,5229.3,0.0,56.82 -2014-04-06 19:00:00,5422.5,0.0,51.25 -2014-04-06 20:00:00,5552.4,0.0,46.96 -2014-04-06 21:00:00,5445.2,0.0,46.08 -2014-04-06 22:00:00,5185.2,0.0,44.96 -2014-04-06 23:00:00,4838.0,0.0,44.42 -2014-04-07 00:00:00,4506.8,0.0,44.27 -2014-04-07 01:00:00,4297.9,0.0,44.48 -2014-04-07 02:00:00,4167.2,0.0,44.56 -2014-04-07 03:00:00,4113.0,0.0,43.33 -2014-04-07 04:00:00,4151.2,0.0,42.5 -2014-04-07 05:00:00,4421.4,0.0,42.12 -2014-04-07 06:00:00,4965.1,0.0,41.5 -2014-04-07 07:00:00,5532.4,0.0,40.89 -2014-04-07 08:00:00,5888.2,0.0,42.59 -2014-04-07 09:00:00,6120.7,0.0,44.09 -2014-04-07 10:00:00,6255.7,0.0,44.55 -2014-04-07 11:00:00,6268.2,0.0,46.42 -2014-04-07 12:00:00,6264.9,0.0,49.64 -2014-04-07 13:00:00,6250.8,0.0,49.66 -2014-04-07 14:00:00,6250.0,0.0,50.36 -2014-04-07 15:00:00,6263.2,0.0,50.36 -2014-04-07 16:00:00,6332.1,0.0,50.32 -2014-04-07 17:00:00,6427.2,0.0069,48.58 -2014-04-07 18:00:00,6292.8,0.02,45.56 -2014-04-07 19:00:00,6263.7,0.0431,45.89 -2014-04-07 20:00:00,6146.4,0.0696,45.3 -2014-04-07 21:00:00,5884.8,0.1345,44.76 -2014-04-07 22:00:00,5505.1,0.0727,44.02 -2014-04-07 23:00:00,5035.8,0.0461,44.17 -2014-04-08 00:00:00,4626.9,0.0296,44.88 -2014-04-08 01:00:00,4368.5,0.0035,45.35 -2014-04-08 02:00:00,4216.4,0.0,46.2 -2014-04-08 03:00:00,4150.5,0.0104,47.21 -2014-04-08 04:00:00,4178.6,0.0204,46.99 -2014-04-08 05:00:00,4436.1,0.1035,46.53 -2014-04-08 06:00:00,4973.0,0.0477,47.81 -2014-04-08 07:00:00,5585.2,0.0965,48.0 -2014-04-08 08:00:00,5971.1,0.0,49.0 -2014-04-08 09:00:00,6231.2,0.0,49.97 -2014-04-08 10:00:00,6296.0,0.0,53.61 -2014-04-08 11:00:00,6278.2,0.0,57.56 -2014-04-08 12:00:00,6284.6,0.0,60.27 -2014-04-08 13:00:00,6280.1,0.0,61.32 -2014-04-08 14:00:00,6253.7,0.0,62.18 -2014-04-08 15:00:00,6234.8,0.0,62.64 -2014-04-08 16:00:00,6233.3,0.0,60.61 -2014-04-08 17:00:00,6183.3,0.0,59.94 -2014-04-08 18:00:00,5959.3,0.0,58.4 -2014-04-08 19:00:00,5946.8,0.0,57.8 -2014-04-08 20:00:00,5972.5,0.0,56.59 -2014-04-08 21:00:00,5771.5,0.0,54.25 -2014-04-08 22:00:00,5421.7,0.0,52.17 -2014-04-08 23:00:00,4960.3,0.0,50.17 -2014-04-09 00:00:00,4561.9,0.0,49.37 -2014-04-09 01:00:00,4320.1,0.0,48.37 -2014-04-09 02:00:00,4172.3,0.0,47.63 -2014-04-09 03:00:00,4116.5,0.0,47.18 -2014-04-09 04:00:00,4142.9,0.0,46.4 -2014-04-09 05:00:00,4395.7,0.0,44.97 -2014-04-09 06:00:00,4940.2,0.0,44.48 -2014-04-09 07:00:00,5498.2,0.0,44.67 -2014-04-09 08:00:00,5842.4,0.0,46.05 -2014-04-09 09:00:00,6068.0,0.0,49.04 -2014-04-09 10:00:00,6144.3,0.0,51.63 -2014-04-09 11:00:00,6165.9,0.0,53.98 -2014-04-09 12:00:00,6172.2,0.0,55.37 -2014-04-09 13:00:00,6157.5,0.0,56.55 -2014-04-09 14:00:00,6126.4,0.0,57.38 -2014-04-09 15:00:00,6128.4,0.0,58.49 -2014-04-09 16:00:00,6140.4,0.0,57.82 -2014-04-09 17:00:00,6112.3,0.0,57.35 -2014-04-09 18:00:00,5915.1,0.0,55.61 -2014-04-09 19:00:00,5933.3,0.0,54.2 -2014-04-09 20:00:00,5948.9,0.0,52.23 -2014-04-09 21:00:00,5735.1,0.0,50.98 -2014-04-09 22:00:00,5404.0,0.0,49.84 -2014-04-09 23:00:00,4954.8,0.0,48.37 -2014-04-10 00:00:00,4551.4,0.0,47.18 -2014-04-10 01:00:00,4318.0,0.0,46.13 -2014-04-10 02:00:00,4173.9,0.0,44.93 -2014-04-10 03:00:00,4118.9,0.0,43.62 -2014-04-10 04:00:00,4142.0,0.0,42.17 -2014-04-10 05:00:00,4394.4,0.0,42.3 -2014-04-10 06:00:00,4908.8,0.0,41.46 -2014-04-10 07:00:00,5469.1,0.0,41.63 -2014-04-10 08:00:00,5823.3,0.0,44.87 -2014-04-10 09:00:00,6050.8,0.0,47.42 -2014-04-10 10:00:00,6135.5,0.0,49.53 -2014-04-10 11:00:00,6158.8,0.0,51.5 -2014-04-10 12:00:00,6154.3,0.0,53.25 -2014-04-10 13:00:00,6145.4,0.0,53.81 -2014-04-10 14:00:00,6117.7,0.0,54.23 -2014-04-10 15:00:00,6115.1,0.0,54.53 -2014-04-10 16:00:00,6132.0,0.0,54.66 -2014-04-10 17:00:00,6105.7,0.0,55.53 -2014-04-10 18:00:00,5928.2,0.0,54.53 -2014-04-10 19:00:00,5937.6,0.0,54.17 -2014-04-10 20:00:00,5934.6,0.0,53.79 -2014-04-10 21:00:00,5730.7,0.0,54.12 -2014-04-10 22:00:00,5393.5,0.0,53.42 -2014-04-10 23:00:00,4948.6,0.0,52.68 -2014-04-11 00:00:00,4554.2,0.0,53.82 -2014-04-11 01:00:00,4298.2,0.0,54.01 -2014-04-11 02:00:00,4152.0,0.0,53.72 -2014-04-11 03:00:00,4093.5,0.0,53.27 -2014-04-11 04:00:00,4111.0,0.0,52.4 -2014-04-11 05:00:00,4339.2,0.0,52.17 -2014-04-11 06:00:00,4845.2,0.0,52.71 -2014-04-11 07:00:00,5409.0,0.0,55.49 -2014-04-11 08:00:00,5789.9,0.0,56.88 -2014-04-11 09:00:00,6023.4,0.0,58.11 -2014-04-11 10:00:00,6120.7,0.0,60.0 -2014-04-11 11:00:00,6204.7,0.0,63.97 -2014-04-11 12:00:00,6246.0,0.0,66.42 -2014-04-11 13:00:00,6264.3,0.0,68.14 -2014-04-11 14:00:00,6268.7,0.0,71.15 -2014-04-11 15:00:00,6252.2,0.0,68.45 -2014-04-11 16:00:00,6220.4,0.0,68.84 -2014-04-11 17:00:00,6168.6,0.0,67.28 -2014-04-11 18:00:00,5996.8,0.0,64.18 -2014-04-11 19:00:00,5924.7,0.0,64.32 -2014-04-11 20:00:00,5845.6,0.0,61.77 -2014-04-11 21:00:00,5629.1,0.0,60.42 -2014-04-11 22:00:00,5339.4,0.0,60.26 -2014-04-11 23:00:00,4955.2,0.0,59.45 -2014-04-12 00:00:00,4587.7,0.0,56.78 -2014-04-12 01:00:00,4331.8,0.0,56.01 -2014-04-12 02:00:00,4163.9,0.0,55.85 -2014-04-12 03:00:00,4059.6,0.0,54.55 -2014-04-12 04:00:00,4024.3,0.0,52.98 -2014-04-12 05:00:00,4074.2,0.0,50.91 -2014-04-12 06:00:00,4199.1,0.0,49.91 -2014-04-12 07:00:00,4458.0,0.0,49.34 -2014-04-12 08:00:00,4777.9,0.0,51.37 -2014-04-12 09:00:00,5040.6,0.0,54.17 -2014-04-12 10:00:00,5229.3,0.0,56.58 -2014-04-12 11:00:00,5331.2,0.0,59.64 -2014-04-12 12:00:00,5360.5,0.0,63.1 -2014-04-12 13:00:00,5342.9,0.0,65.27 -2014-04-12 14:00:00,5306.2,0.0,65.21 -2014-04-12 15:00:00,5270.5,0.0,67.63 -2014-04-12 16:00:00,5246.8,0.0,64.29 -2014-04-12 17:00:00,5221.1,0.0,63.98 -2014-04-12 18:00:00,5215.1,0.0,63.27 -2014-04-12 19:00:00,5291.1,0.0,60.35 -2014-04-12 20:00:00,5378.3,0.0,57.77 -2014-04-12 21:00:00,5273.3,0.0,58.38 -2014-04-12 22:00:00,5073.3,0.0,57.63 -2014-04-12 23:00:00,4781.7,0.0,56.65 -2014-04-13 00:00:00,4489.4,0.0,55.61 -2014-04-13 01:00:00,4260.4,0.0,54.62 -2014-04-13 02:00:00,4096.7,0.0,53.39 -2014-04-13 03:00:00,4001.9,0.0,53.57 -2014-04-13 04:00:00,3957.0,0.0,52.74 -2014-04-13 05:00:00,3994.9,0.0,53.35 -2014-04-13 06:00:00,4051.1,0.0,52.33 -2014-04-13 07:00:00,4222.3,0.0,52.74 -2014-04-13 08:00:00,4503.3,0.0,54.2 -2014-04-13 09:00:00,4766.2,0.0,56.59 -2014-04-13 10:00:00,4989.3,0.0,57.56 -2014-04-13 11:00:00,5107.5,0.0,58.95 -2014-04-13 12:00:00,5188.1,0.0,61.7 -2014-04-13 13:00:00,5217.5,0.0,64.92 -2014-04-13 14:00:00,5243.6,0.0,68.2 -2014-04-13 15:00:00,5256.3,0.0,70.27 -2014-04-13 16:00:00,5294.1,0.0,71.04 -2014-04-13 17:00:00,5313.8,0.0,71.52 -2014-04-13 18:00:00,5323.7,0.0,70.57 -2014-04-13 19:00:00,5409.7,0.0,68.09 -2014-04-13 20:00:00,5530.4,0.0,66.45 -2014-04-13 21:00:00,5411.1,0.0,64.32 -2014-04-13 22:00:00,5184.2,0.0,62.47 -2014-04-13 23:00:00,4847.1,0.0,63.16 -2014-04-14 00:00:00,4535.4,0.0,62.45 -2014-04-14 01:00:00,4304.0,0.0,60.72 -2014-04-14 02:00:00,4165.4,0.0,60.0 -2014-04-14 03:00:00,4103.7,0.0,59.32 -2014-04-14 04:00:00,4121.9,0.0,58.42 -2014-04-14 05:00:00,4337.3,0.0,58.17 -2014-04-14 06:00:00,4809.9,0.0,58.17 -2014-04-14 07:00:00,5383.7,0.0,57.39 -2014-04-14 08:00:00,5844.1,0.0,59.8 -2014-04-14 09:00:00,6169.9,0.0,60.42 -2014-04-14 10:00:00,6320.3,0.0,62.6 -2014-04-14 11:00:00,6437.0,0.0,66.5 -2014-04-14 12:00:00,6507.9,0.0,68.27 -2014-04-14 13:00:00,6504.2,0.0,68.14 -2014-04-14 14:00:00,6496.4,0.0,69.7 -2014-04-14 15:00:00,6494.6,0.0,69.85 -2014-04-14 16:00:00,6471.1,0.0,67.76 -2014-04-14 17:00:00,6397.7,0.0,66.22 -2014-04-14 18:00:00,6116.4,0.0,65.66 -2014-04-14 19:00:00,6040.3,0.0,62.65 -2014-04-14 20:00:00,5985.3,0.0,61.92 -2014-04-14 21:00:00,5752.9,0.0,60.54 -2014-04-14 22:00:00,5427.7,0.0,59.48 -2014-04-14 23:00:00,5010.1,0.0,59.01 -2014-04-15 00:00:00,4599.7,0.0,57.77 -2014-04-15 01:00:00,4358.5,0.0,57.66 -2014-04-15 02:00:00,4199.6,0.0,57.99 -2014-04-15 03:00:00,4128.7,0.0,57.35 -2014-04-15 04:00:00,4153.5,0.0,57.88 -2014-04-15 05:00:00,4369.5,0.0361,57.58 -2014-04-15 06:00:00,4832.4,0.0431,58.45 -2014-04-15 07:00:00,5375.6,0.0431,57.37 -2014-04-15 08:00:00,5846.5,0.0,58.87 -2014-04-15 09:00:00,6147.8,0.0,59.72 -2014-04-15 10:00:00,6294.7,0.0915,58.77 -2014-04-15 11:00:00,6360.6,0.0623,58.89 -2014-04-15 12:00:00,6396.9,0.0165,58.83 -2014-04-15 13:00:00,6403.1,0.0196,58.41 -2014-04-15 14:00:00,6369.7,0.0035,58.15 -2014-04-15 15:00:00,6344.8,0.01,58.83 -2014-04-15 16:00:00,6359.7,0.0131,58.91 -2014-04-15 17:00:00,6364.7,0.0104,57.62 -2014-04-15 18:00:00,6115.4,0.0,51.31 -2014-04-15 19:00:00,5999.3,0.0131,46.81 -2014-04-15 20:00:00,5892.8,0.0269,44.08 -2014-04-15 21:00:00,5687.4,0.0565,41.44 -2014-04-15 22:00:00,5401.9,0.0561,37.74 -2014-04-15 23:00:00,5001.4,0.02,35.87 -2014-04-16 00:00:00,4653.8,0.03,34.72 -2014-04-16 01:00:00,4426.0,0.0169,34.39 -2014-04-16 02:00:00,4279.1,0.0069,35.46 -2014-04-16 03:00:00,4211.7,0.0,35.68 -2014-04-16 04:00:00,4237.2,0.0,35.54 -2014-04-16 05:00:00,4464.8,0.0,33.87 -2014-04-16 06:00:00,4923.6,0.0,32.68 -2014-04-16 07:00:00,5459.7,0.0,32.19 -2014-04-16 08:00:00,5860.5,0.0,32.26 -2014-04-16 09:00:00,6106.2,0.0,33.61 -2014-04-16 10:00:00,6218.3,0.0,35.14 -2014-04-16 11:00:00,6252.4,0.0,37.0 -2014-04-16 12:00:00,6234.5,0.0,39.19 -2014-04-16 13:00:00,6215.1,0.0,41.54 -2014-04-16 14:00:00,6182.7,0.0,43.74 -2014-04-16 15:00:00,6150.5,0.0,44.68 -2014-04-16 16:00:00,6132.9,0.0,45.88 -2014-04-16 17:00:00,6097.3,0.0,46.74 -2014-04-16 18:00:00,5910.5,0.0,47.0 -2014-04-16 19:00:00,5902.6,0.0,46.44 -2014-04-16 20:00:00,5967.0,0.0,45.56 -2014-04-16 21:00:00,5790.1,0.0,44.43 -2014-04-16 22:00:00,5495.0,0.0,42.88 -2014-04-16 23:00:00,5074.6,0.0,41.37 -2014-04-17 00:00:00,4685.1,0.0,40.69 -2014-04-17 01:00:00,4437.0,0.0,39.49 -2014-04-17 02:00:00,4286.8,0.0,39.18 -2014-04-17 03:00:00,4226.0,0.0,38.38 -2014-04-17 04:00:00,4251.2,0.0,38.18 -2014-04-17 05:00:00,4484.0,0.0,37.3 -2014-04-17 06:00:00,4907.6,0.0,37.18 -2014-04-17 07:00:00,5421.6,0.0,36.86 -2014-04-17 08:00:00,5793.6,0.0,37.39 -2014-04-17 09:00:00,6041.7,0.0,39.15 -2014-04-17 10:00:00,6176.2,0.0,40.17 -2014-04-17 11:00:00,6205.1,0.0,41.52 -2014-04-17 12:00:00,6203.4,0.0,42.24 -2014-04-17 13:00:00,6194.2,0.0,43.76 -2014-04-17 14:00:00,6172.0,0.0,43.69 -2014-04-17 15:00:00,6147.9,0.0,43.67 -2014-04-17 16:00:00,6132.5,0.0,44.18 -2014-04-17 17:00:00,6082.5,0.0,45.27 -2014-04-17 18:00:00,5899.8,0.0,45.34 -2014-04-17 19:00:00,5873.9,0.0,44.53 -2014-04-17 20:00:00,5925.0,0.0,42.0 -2014-04-17 21:00:00,5762.3,0.0,42.01 -2014-04-17 22:00:00,5477.2,0.0,40.63 -2014-04-17 23:00:00,5082.5,0.0,40.42 -2014-04-18 00:00:00,4697.7,0.0,39.42 -2014-04-18 01:00:00,4440.9,0.0,38.42 -2014-04-18 02:00:00,4289.9,0.0,37.49 -2014-04-18 03:00:00,4222.1,0.0,37.54 -2014-04-18 04:00:00,4241.0,0.0,37.18 -2014-04-18 05:00:00,4430.3,0.0,36.7 -2014-04-18 06:00:00,4788.6,0.0,36.06 -2014-04-18 07:00:00,5219.8,0.0,35.51 -2014-04-18 08:00:00,5596.9,0.0,36.58 -2014-04-18 09:00:00,5853.7,0.0,37.32 -2014-04-18 10:00:00,5969.1,0.0,38.71 -2014-04-18 11:00:00,5993.4,0.0,40.39 -2014-04-18 12:00:00,5988.3,0.0,40.7 -2014-04-18 13:00:00,5955.0,0.0,41.51 -2014-04-18 14:00:00,5916.4,0.0,42.55 -2014-04-18 15:00:00,5869.6,0.0,43.94 -2014-04-18 16:00:00,5839.1,0.0,44.38 -2014-04-18 17:00:00,5830.2,0.0,45.12 -2014-04-18 18:00:00,5720.2,0.0,45.48 -2014-04-18 19:00:00,5732.7,0.0,44.44 -2014-04-18 20:00:00,5724.3,0.0,43.51 -2014-04-18 21:00:00,5572.1,0.0,42.8 -2014-04-18 22:00:00,5336.6,0.0,42.24 -2014-04-18 23:00:00,5010.7,0.0,42.24 -2014-04-19 00:00:00,4669.5,0.0,42.07 -2014-04-19 01:00:00,4426.1,0.0,41.73 -2014-04-19 02:00:00,4270.6,0.0,41.56 -2014-04-19 03:00:00,4180.8,0.0,41.68 -2014-04-19 04:00:00,4149.6,0.0,41.68 -2014-04-19 05:00:00,4208.8,0.0,41.91 -2014-04-19 06:00:00,4318.7,0.0,41.66 -2014-04-19 07:00:00,4529.9,0.0,42.03 -2014-04-19 08:00:00,4796.1,0.0,44.85 -2014-04-19 09:00:00,5025.6,0.0,49.87 -2014-04-19 10:00:00,5166.3,0.0,54.76 -2014-04-19 11:00:00,5230.7,0.0,57.49 -2014-04-19 12:00:00,5237.1,0.0,59.57 -2014-04-19 13:00:00,5205.8,0.0,60.52 -2014-04-19 14:00:00,5166.9,0.0,60.78 -2014-04-19 15:00:00,5137.5,0.0,63.2 -2014-04-19 16:00:00,5121.6,0.0,64.07 -2014-04-19 17:00:00,5117.2,0.0,65.39 -2014-04-19 18:00:00,5122.9,0.0,64.31 -2014-04-19 19:00:00,5202.9,0.0,62.92 -2014-04-19 20:00:00,5331.1,0.0,57.98 -2014-04-19 21:00:00,5239.6,0.0,56.84 -2014-04-19 22:00:00,5052.6,0.0,55.65 -2014-04-19 23:00:00,4796.5,0.0,55.74 -2014-04-20 00:00:00,4517.1,0.0,53.74 -2014-04-20 01:00:00,4283.2,0.0,52.62 -2014-04-20 02:00:00,4116.8,0.0,51.81 -2014-04-20 03:00:00,4019.8,0.0,50.34 -2014-04-20 04:00:00,3988.0,0.0,48.52 -2014-04-20 05:00:00,4025.3,0.0,47.51 -2014-04-20 06:00:00,4080.6,0.0,46.81 -2014-04-20 07:00:00,4228.0,0.0,46.7 -2014-04-20 08:00:00,4469.6,0.0,47.58 -2014-04-20 09:00:00,4671.1,0.0,48.78 -2014-04-20 10:00:00,4834.4,0.0,49.99 -2014-04-20 11:00:00,4931.8,0.0,51.19 -2014-04-20 12:00:00,4953.5,0.0,51.87 -2014-04-20 13:00:00,4945.2,0.0,51.93 -2014-04-20 14:00:00,4916.7,0.0,52.81 -2014-04-20 15:00:00,4896.3,0.0,52.41 -2014-04-20 16:00:00,4899.3,0.0,51.9 -2014-04-20 17:00:00,4920.0,0.0,51.2 -2014-04-20 18:00:00,4953.3,0.0,50.66 -2014-04-20 19:00:00,5052.8,0.0,49.97 -2014-04-20 20:00:00,5245.6,0.0,48.55 -2014-04-20 21:00:00,5197.5,0.0,47.61 -2014-04-20 22:00:00,5039.0,0.0,46.91 -2014-04-20 23:00:00,4737.7,0.0,46.6 -2014-04-21 00:00:00,4446.5,0.0,45.37 -2014-04-21 01:00:00,4251.3,0.0,44.5 -2014-04-21 02:00:00,4125.2,0.0,44.37 -2014-04-21 03:00:00,4080.1,0.0,43.2 -2014-04-21 04:00:00,4106.7,0.0,42.86 -2014-04-21 05:00:00,4329.8,0.0,41.36 -2014-04-21 06:00:00,4744.3,0.0,41.11 -2014-04-21 07:00:00,5246.6,0.0,41.99 -2014-04-21 08:00:00,5640.1,0.0,44.78 -2014-04-21 09:00:00,5914.2,0.0,46.46 -2014-04-21 10:00:00,6011.6,0.0,48.68 -2014-04-21 11:00:00,6057.6,0.0,52.21 -2014-04-21 12:00:00,6078.0,0.0,54.0 -2014-04-21 13:00:00,6080.3,0.0,56.86 -2014-04-21 14:00:00,6056.8,0.0,58.63 -2014-04-21 15:00:00,6051.5,0.0,58.8 -2014-04-21 16:00:00,6056.3,0.0,60.04 -2014-04-21 17:00:00,6000.8,0.0,58.84 -2014-04-21 18:00:00,5814.2,0.0,57.19 -2014-04-21 19:00:00,5773.0,0.0,55.56 -2014-04-21 20:00:00,5827.2,0.0,53.94 -2014-04-21 21:00:00,5645.1,0.0,52.35 -2014-04-21 22:00:00,5333.0,0.0,51.81 -2014-04-21 23:00:00,4910.1,0.0,51.49 -2014-04-22 00:00:00,4517.1,0.0,50.98 -2014-04-22 01:00:00,4275.8,0.0,50.79 -2014-04-22 02:00:00,4137.5,0.0,50.06 -2014-04-22 03:00:00,4079.8,0.0,49.64 -2014-04-22 04:00:00,4095.0,0.0,49.89 -2014-04-22 05:00:00,4308.7,0.0,49.71 -2014-04-22 06:00:00,4725.7,0.0,50.15 -2014-04-22 07:00:00,5245.1,0.0,50.5 -2014-04-22 08:00:00,5662.3,0.0,52.22 -2014-04-22 09:00:00,5921.5,0.0,54.97 -2014-04-22 10:00:00,6029.2,0.0,57.83 -2014-04-22 11:00:00,6131.3,0.0,61.59 -2014-04-22 12:00:00,6189.2,0.0,62.44 -2014-04-22 13:00:00,6202.7,0.0,63.5 -2014-04-22 14:00:00,6211.6,0.0,63.88 -2014-04-22 15:00:00,6218.5,0.0,65.13 -2014-04-22 16:00:00,6223.9,0.0,64.25 -2014-04-22 17:00:00,6238.0,0.0035,60.76 -2014-04-22 18:00:00,6093.5,0.0,62.62 -2014-04-22 19:00:00,6023.2,0.0,62.9 -2014-04-22 20:00:00,5947.1,0.0,62.67 -2014-04-22 21:00:00,5703.5,0.0,62.9 -2014-04-22 22:00:00,5360.3,0.0,62.82 -2014-04-22 23:00:00,4915.4,0.0,62.22 -2014-04-23 00:00:00,4510.8,0.0,61.53 -2014-04-23 01:00:00,4252.5,0.0,59.97 -2014-04-23 02:00:00,4096.1,0.0,59.35 -2014-04-23 03:00:00,4030.1,0.0,57.32 -2014-04-23 04:00:00,4032.7,0.0,55.98 -2014-04-23 05:00:00,4263.5,0.0,53.81 -2014-04-23 06:00:00,4763.8,0.0,51.19 -2014-04-23 07:00:00,5332.3,0.0,50.05 -2014-04-23 08:00:00,5720.7,0.0,49.73 -2014-04-23 09:00:00,5958.2,0.0,50.24 -2014-04-23 10:00:00,6028.6,0.0,51.12 -2014-04-23 11:00:00,6101.3,0.0,50.61 -2014-04-23 12:00:00,6108.8,0.0,52.1 -2014-04-23 13:00:00,6125.0,0.0,54.31 -2014-04-23 14:00:00,6111.5,0.0,55.81 -2014-04-23 15:00:00,6105.6,0.0,57.2 -2014-04-23 16:00:00,6128.1,0.0,58.29 -2014-04-23 17:00:00,6095.6,0.0,56.91 -2014-04-23 18:00:00,5913.2,0.0,54.56 -2014-04-23 19:00:00,5867.2,0.0,50.96 -2014-04-23 20:00:00,5904.3,0.0,48.17 -2014-04-23 21:00:00,5700.7,0.0,47.19 -2014-04-23 22:00:00,5352.0,0.0,46.19 -2014-04-23 23:00:00,4904.8,0.0,46.19 -2014-04-24 00:00:00,4502.6,0.0,45.33 -2014-04-24 01:00:00,4263.3,0.0,45.0 -2014-04-24 02:00:00,4129.0,0.0,44.39 -2014-04-24 03:00:00,4056.2,0.0,44.0 -2014-04-24 04:00:00,4084.0,0.0,44.0 -2014-04-24 05:00:00,4324.4,0.0,43.8 -2014-04-24 06:00:00,4814.9,0.0,43.0 -2014-04-24 07:00:00,5390.3,0.0,43.19 -2014-04-24 08:00:00,5770.2,0.0,44.26 -2014-04-24 09:00:00,6012.1,0.0,45.56 -2014-04-24 10:00:00,6117.7,0.0,48.1 -2014-04-24 11:00:00,6139.7,0.0,50.49 -2014-04-24 12:00:00,6139.2,0.0,53.19 -2014-04-24 13:00:00,6129.1,0.0,55.05 -2014-04-24 14:00:00,6096.8,0.0,57.03 -2014-04-24 15:00:00,6093.9,0.0,58.49 -2014-04-24 16:00:00,6108.2,0.0,59.86 -2014-04-24 17:00:00,6075.4,0.0,59.81 -2014-04-24 18:00:00,5878.5,0.0,60.17 -2014-04-24 19:00:00,5786.8,0.0,58.56 -2014-04-24 20:00:00,5854.2,0.0,57.37 -2014-04-24 21:00:00,5671.6,0.0,56.03 -2014-04-24 22:00:00,5332.4,0.0,54.49 -2014-04-24 23:00:00,4897.3,0.0,52.49 -2014-04-25 00:00:00,4510.5,0.0,51.18 -2014-04-25 01:00:00,4250.0,0.0,49.67 -2014-04-25 02:00:00,4109.6,0.0,48.13 -2014-04-25 03:00:00,4041.2,0.0,47.3 -2014-04-25 04:00:00,4057.3,0.0,46.67 -2014-04-25 05:00:00,4293.2,0.0,45.99 -2014-04-25 06:00:00,4760.6,0.0,44.45 -2014-04-25 07:00:00,5322.7,0.0,46.23 -2014-04-25 08:00:00,5712.3,0.0,48.67 -2014-04-25 09:00:00,5942.8,0.0,50.54 -2014-04-25 10:00:00,6034.2,0.0,52.98 -2014-04-25 11:00:00,6080.6,0.0,54.46 -2014-04-25 12:00:00,6082.7,0.0,55.6 -2014-04-25 13:00:00,6068.1,0.0,56.73 -2014-04-25 14:00:00,6024.1,0.0,56.45 -2014-04-25 15:00:00,6001.6,0.0,56.88 -2014-04-25 16:00:00,5984.9,0.0,55.33 -2014-04-25 17:00:00,5942.8,0.0,53.81 -2014-04-25 18:00:00,5734.7,0.0,52.41 -2014-04-25 19:00:00,5692.3,0.0,51.55 -2014-04-25 20:00:00,5713.8,0.0,50.12 -2014-04-25 21:00:00,5508.7,0.0,50.14 -2014-04-25 22:00:00,5238.8,0.0,50.61 -2014-04-25 23:00:00,4875.2,0.0,50.71 -2014-04-26 00:00:00,4506.5,0.0,50.98 -2014-04-26 01:00:00,4258.7,0.0035,50.44 -2014-04-26 02:00:00,4096.9,0.0581,49.2 -2014-04-26 03:00:00,4013.6,0.1184,47.16 -2014-04-26 04:00:00,3994.7,0.1703,46.03 -2014-04-26 05:00:00,4056.5,0.0296,45.83 -2014-04-26 06:00:00,4193.0,0.0457,46.2 -2014-04-26 07:00:00,4437.3,0.0131,46.3 -2014-04-26 08:00:00,4734.2,0.0,46.44 -2014-04-26 09:00:00,4991.6,0.0,49.19 -2014-04-26 10:00:00,5158.0,0.0,52.04 -2014-04-26 11:00:00,5247.1,0.0,55.07 -2014-04-26 12:00:00,5306.9,0.0,57.23 -2014-04-26 13:00:00,5273.2,0.0,60.22 -2014-04-26 14:00:00,5250.1,0.0,62.2 -2014-04-26 15:00:00,5229.5,0.0,63.34 -2014-04-26 16:00:00,5251.7,0.0,62.31 -2014-04-26 17:00:00,5283.4,0.0265,56.55 -2014-04-26 18:00:00,5272.6,0.0135,54.87 -2014-04-26 19:00:00,5316.3,0.0065,50.73 -2014-04-26 20:00:00,5366.2,0.0069,49.85 -2014-04-26 21:00:00,5240.5,0.0035,49.1 -2014-04-26 22:00:00,5030.1,0.0,49.66 -2014-04-26 23:00:00,4761.0,0.0,49.46 -2014-04-27 00:00:00,4470.0,0.0,50.47 -2014-04-27 01:00:00,4223.1,0.0,50.86 -2014-04-27 02:00:00,4064.3,0.0,49.58 -2014-04-27 03:00:00,3974.5,0.0,48.58 -2014-04-27 04:00:00,3940.1,0.0,48.0 -2014-04-27 05:00:00,3963.0,0.0,47.24 -2014-04-27 06:00:00,4025.7,0.0,47.0 -2014-04-27 07:00:00,4199.4,0.0,47.93 -2014-04-27 08:00:00,4459.1,0.0,48.58 -2014-04-27 09:00:00,4714.4,0.0,50.09 -2014-04-27 10:00:00,4924.6,0.0,51.76 -2014-04-27 11:00:00,5021.5,0.0,52.72 -2014-04-27 12:00:00,5062.4,0.0,53.98 -2014-04-27 13:00:00,5059.3,0.0,54.58 -2014-04-27 14:00:00,5040.0,0.0,55.85 -2014-04-27 15:00:00,5037.2,0.0,56.12 -2014-04-27 16:00:00,5049.0,0.0,55.93 -2014-04-27 17:00:00,5088.7,0.0,55.78 -2014-04-27 18:00:00,5148.5,0.0,55.76 -2014-04-27 19:00:00,5231.5,0.0,55.56 -2014-04-27 20:00:00,5375.6,0.0,54.91 -2014-04-27 21:00:00,5275.1,0.0,54.38 -2014-04-27 22:00:00,5000.0,0.0,53.23 -2014-04-27 23:00:00,4663.0,0.0,52.03 -2014-04-28 00:00:00,4347.9,0.0,50.84 -2014-04-28 01:00:00,4125.0,0.0,49.98 -2014-04-28 02:00:00,4003.0,0.0,49.06 -2014-04-28 03:00:00,3965.9,0.0,47.98 -2014-04-28 04:00:00,3993.6,0.0,47.13 -2014-04-28 05:00:00,4221.6,0.0,46.49 -2014-04-28 06:00:00,4730.3,0.0,46.3 -2014-04-28 07:00:00,5294.0,0.0,46.74 -2014-04-28 08:00:00,5674.0,0.0,48.39 -2014-04-28 09:00:00,5925.6,0.0,50.07 -2014-04-28 10:00:00,6037.3,0.0,52.0 -2014-04-28 11:00:00,6067.5,0.0,54.0 -2014-04-28 12:00:00,6090.0,0.0,55.87 -2014-04-28 13:00:00,6082.9,0.0,57.85 -2014-04-28 14:00:00,6046.5,0.0,59.59 -2014-04-28 15:00:00,6084.8,0.0,60.94 -2014-04-28 16:00:00,6101.4,0.0,62.36 -2014-04-28 17:00:00,6050.4,0.0,62.27 -2014-04-28 18:00:00,5896.8,0.0,61.42 -2014-04-28 19:00:00,5888.2,0.0,58.85 -2014-04-28 20:00:00,5897.6,0.0,57.46 -2014-04-28 21:00:00,5672.0,0.0,55.89 -2014-04-28 22:00:00,5321.2,0.0,55.35 -2014-04-28 23:00:00,4846.0,0.0,54.83 -2014-04-29 00:00:00,4453.1,0.0,52.85 -2014-04-29 01:00:00,4207.2,0.0,51.31 -2014-04-29 02:00:00,4064.3,0.0,50.24 -2014-04-29 03:00:00,4006.7,0.0,49.92 -2014-04-29 04:00:00,4037.7,0.0,49.21 -2014-04-29 05:00:00,4264.3,0.0,49.44 -2014-04-29 06:00:00,4812.1,0.0,49.56 -2014-04-29 07:00:00,5430.2,0.0,48.48 -2014-04-29 08:00:00,5831.5,0.0,48.12 -2014-04-29 09:00:00,6088.1,0.0,47.94 -2014-04-29 10:00:00,6194.4,0.0,47.28 -2014-04-29 11:00:00,6237.9,0.0,47.66 -2014-04-29 12:00:00,6258.9,0.0,47.54 -2014-04-29 13:00:00,6256.0,0.0,48.12 -2014-04-29 14:00:00,6242.6,0.0,48.1 -2014-04-29 15:00:00,6261.3,0.0069,47.56 -2014-04-29 16:00:00,6300.3,0.0035,46.96 -2014-04-29 17:00:00,6310.0,0.0035,46.61 -2014-04-29 18:00:00,6178.8,0.0,46.05 -2014-04-29 19:00:00,6102.2,0.0065,45.12 -2014-04-29 20:00:00,6049.3,0.0,45.24 -2014-04-29 21:00:00,5811.8,0.0,44.37 -2014-04-29 22:00:00,5438.7,0.0035,44.37 -2014-04-29 23:00:00,4990.3,0.0304,43.56 -2014-04-30 00:00:00,4568.7,0.0,43.56 -2014-04-30 01:00:00,4328.8,0.0,43.35 -2014-04-30 02:00:00,4191.8,0.052,43.24 -2014-04-30 03:00:00,4138.4,0.0953,42.42 -2014-04-30 04:00:00,4166.8,0.0861,42.35 -2014-04-30 05:00:00,4414.2,0.0915,42.42 -2014-04-30 06:00:00,4942.2,0.0304,42.37 -2014-04-30 07:00:00,5569.6,0.0631,43.24 -2014-04-30 08:00:00,5971.5,0.0392,44.08 -2014-04-30 09:00:00,6236.2,0.0427,44.4 -2014-04-30 10:00:00,6373.7,0.0365,44.93 -2014-04-30 11:00:00,6432.3,0.0869,45.4 -2014-04-30 12:00:00,6479.3,0.1561,45.54 -2014-04-30 13:00:00,6490.8,0.1765,46.35 -2014-04-30 14:00:00,6471.5,0.1019,46.2 -2014-04-30 15:00:00,6464.0,0.0139,46.78 -2014-04-30 16:00:00,6484.2,0.072,46.78 -2014-04-30 17:00:00,6526.8,0.2135,46.96 -2014-04-30 18:00:00,6399.1,0.2616,47.2 -2014-04-30 19:00:00,6329.0,0.1553,47.59 -2014-04-30 20:00:00,6192.5,0.1336,48.03 -2014-04-30 21:00:00,5920.3,0.3469,49.57 -2014-04-30 22:00:00,5542.2,0.2684,49.86 -2014-04-30 23:00:00,5085.8,0.1935,50.69 -2014-05-01 00:00:00,4686.3,0.1515,50.78 -2014-05-01 01:00:00,4412.2,0.1603,51.86 -2014-05-01 02:00:00,4265.1,0.0757,55.0 -2014-05-01 03:00:00,4197.1,0.0165,55.11 -2014-05-01 04:00:00,4207.6,0.0135,55.72 -2014-05-01 05:00:00,4432.8,0.0,55.98 -2014-05-01 06:00:00,4936.7,0.0035,56.56 -2014-05-01 07:00:00,5553.1,0.0,56.56 -2014-05-01 08:00:00,5952.3,0.0,56.53 -2014-05-01 09:00:00,6230.4,0.0,57.35 -2014-05-01 10:00:00,6367.5,0.0,58.37 -2014-05-01 11:00:00,6419.4,0.0,63.14 -2014-05-01 12:00:00,6486.0,0.0,66.75 -2014-05-01 13:00:00,6516.3,0.0,67.33 -2014-05-01 14:00:00,6531.3,0.0,70.12 -2014-05-01 15:00:00,6554.3,0.0,73.38 -2014-05-01 16:00:00,6567.7,0.0,74.55 -2014-05-01 17:00:00,6499.8,0.0,73.3 -2014-05-01 18:00:00,6253.6,0.0,73.68 -2014-05-01 19:00:00,6103.0,0.0,71.42 -2014-05-01 20:00:00,6103.0,0.0,70.22 -2014-05-01 21:00:00,5919.6,0.0,66.85 -2014-05-01 22:00:00,5565.8,0.0277,63.52 -2014-05-01 23:00:00,5109.5,0.0065,63.65 -2014-05-02 00:00:00,4674.1,0.0,64.28 -2014-05-02 01:00:00,4378.1,0.0,62.91 -2014-05-02 02:00:00,4215.9,0.0,61.28 -2014-05-02 03:00:00,4123.8,0.0,59.55 -2014-05-02 04:00:00,4125.8,0.0,57.66 -2014-05-02 05:00:00,4325.7,0.0,56.72 -2014-05-02 06:00:00,4814.8,0.0,55.6 -2014-05-02 07:00:00,5410.3,0.0,56.1 -2014-05-02 08:00:00,5809.7,0.0,56.9 -2014-05-02 09:00:00,6096.1,0.0,58.59 -2014-05-02 10:00:00,6216.3,0.0,61.25 -2014-05-02 11:00:00,6260.6,0.0,62.79 -2014-05-02 12:00:00,6262.6,0.0,63.62 -2014-05-02 13:00:00,6245.3,0.0,64.1 -2014-05-02 14:00:00,6218.6,0.0,64.59 -2014-05-02 15:00:00,6227.5,0.0,65.47 -2014-05-02 16:00:00,6198.6,0.0,65.72 -2014-05-02 17:00:00,6134.9,0.0,65.28 -2014-05-02 18:00:00,5890.4,0.0,65.11 -2014-05-02 19:00:00,5765.0,0.0,64.57 -2014-05-02 20:00:00,5768.9,0.0,63.2 -2014-05-02 21:00:00,5603.7,0.0,62.46 -2014-05-02 22:00:00,5324.0,0.0,61.13 -2014-05-02 23:00:00,4957.1,0.0,60.54 -2014-05-03 00:00:00,4600.5,0.0,58.89 -2014-05-03 01:00:00,4339.7,0.0,58.3 -2014-05-03 02:00:00,4173.5,0.0,57.38 -2014-05-03 03:00:00,4084.7,0.0,55.97 -2014-05-03 04:00:00,4042.8,0.0,55.78 -2014-05-03 05:00:00,4058.1,0.0,55.08 -2014-05-03 06:00:00,4173.1,0.0,53.76 -2014-05-03 07:00:00,4437.7,0.0,54.47 -2014-05-03 08:00:00,4746.3,0.0,57.2 -2014-05-03 09:00:00,5033.2,0.0,59.69 -2014-05-03 10:00:00,5224.4,0.0,61.67 -2014-05-03 11:00:00,5337.5,0.0,62.36 -2014-05-03 12:00:00,5378.3,0.0,64.0 -2014-05-03 13:00:00,5364.5,0.0,65.11 -2014-05-03 14:00:00,5344.3,0.0,65.62 -2014-05-03 15:00:00,5304.7,0.0,64.88 -2014-05-03 16:00:00,5280.4,0.0,64.5 -2014-05-03 17:00:00,5287.8,0.0,64.22 -2014-05-03 18:00:00,5282.4,0.0,63.51 -2014-05-03 19:00:00,5350.3,0.0,61.66 -2014-05-03 20:00:00,5406.6,0.0131,60.01 -2014-05-03 21:00:00,5295.1,0.0065,58.15 -2014-05-03 22:00:00,5083.7,0.0,58.26 -2014-05-03 23:00:00,4818.8,0.0,57.57 -2014-05-04 00:00:00,4520.4,0.0,56.76 -2014-05-04 01:00:00,4286.8,0.0,56.5 -2014-05-04 02:00:00,4119.3,0.0,56.39 -2014-05-04 03:00:00,4015.8,0.0,56.46 -2014-05-04 04:00:00,3963.1,0.0,55.64 -2014-05-04 05:00:00,3964.3,0.0,55.1 -2014-05-04 06:00:00,4027.2,0.0,54.96 -2014-05-04 07:00:00,4221.2,0.0,55.34 -2014-05-04 08:00:00,4501.6,0.0,56.08 -2014-05-04 09:00:00,4773.6,0.0,56.73 -2014-05-04 10:00:00,4976.4,0.0,56.92 -2014-05-04 11:00:00,5095.7,0.0,58.64 -2014-05-04 12:00:00,5156.3,0.0,59.98 -2014-05-04 13:00:00,5175.8,0.0,60.35 -2014-05-04 14:00:00,5165.4,0.0,59.57 -2014-05-04 15:00:00,5147.0,0.0,60.32 -2014-05-04 16:00:00,5166.6,0.0,61.57 -2014-05-04 17:00:00,5198.1,0.0,60.18 -2014-05-04 18:00:00,5201.7,0.0,59.44 -2014-05-04 19:00:00,5217.9,0.0,60.9 -2014-05-04 20:00:00,5389.1,0.0,60.23 -2014-05-04 21:00:00,5315.8,0.0,59.17 -2014-05-04 22:00:00,5049.1,0.0,58.17 -2014-05-04 23:00:00,4691.1,0.0,56.63 -2014-05-05 00:00:00,4374.0,0.0,55.51 -2014-05-05 01:00:00,4164.4,0.0,54.51 -2014-05-05 02:00:00,4041.9,0.0,53.31 -2014-05-05 03:00:00,3991.3,0.0,52.31 -2014-05-05 04:00:00,4027.1,0.0,51.31 -2014-05-05 05:00:00,4247.0,0.0,51.0 -2014-05-05 06:00:00,4752.9,0.0,50.44 -2014-05-05 07:00:00,5343.1,0.0,51.19 -2014-05-05 08:00:00,5727.1,0.0,52.12 -2014-05-05 09:00:00,5987.0,0.0,53.8 -2014-05-05 10:00:00,6099.9,0.0,55.44 -2014-05-05 11:00:00,6154.6,0.0,57.98 -2014-05-05 12:00:00,6177.2,0.0,59.66 -2014-05-05 13:00:00,6192.2,0.0,60.98 -2014-05-05 14:00:00,6193.0,0.0,62.52 -2014-05-05 15:00:00,6212.1,0.0,64.73 -2014-05-05 16:00:00,6250.1,0.0,66.17 -2014-05-05 17:00:00,6207.5,0.0,66.51 -2014-05-05 18:00:00,5976.0,0.0,65.61 -2014-05-05 19:00:00,5896.2,0.0,64.79 -2014-05-05 20:00:00,5886.5,0.0,63.52 -2014-05-05 21:00:00,5679.6,0.0,62.54 -2014-05-05 22:00:00,5317.7,0.0,60.32 -2014-05-05 23:00:00,4863.9,0.0,59.02 -2014-05-06 00:00:00,4453.8,0.0,57.3 -2014-05-06 01:00:00,4200.6,0.0,56.65 -2014-05-06 02:00:00,4052.8,0.0,55.35 -2014-05-06 03:00:00,3972.2,0.0,54.02 -2014-05-06 04:00:00,4000.7,0.0,52.55 -2014-05-06 05:00:00,4211.1,0.0,52.49 -2014-05-06 06:00:00,4717.3,0.0,52.03 -2014-05-06 07:00:00,5313.5,0.0,52.74 -2014-05-06 08:00:00,5707.7,0.0,53.93 -2014-05-06 09:00:00,5954.1,0.0,55.95 -2014-05-06 10:00:00,6066.8,0.0,57.34 -2014-05-06 11:00:00,6126.8,0.0,59.69 -2014-05-06 12:00:00,6179.7,0.0,60.2 -2014-05-06 13:00:00,6217.3,0.0,61.95 -2014-05-06 14:00:00,6230.7,0.0,65.06 -2014-05-06 15:00:00,6250.6,0.0,65.19 -2014-05-06 16:00:00,6287.1,0.0,65.81 -2014-05-06 17:00:00,6247.4,0.0,65.81 -2014-05-06 18:00:00,6017.8,0.0,65.55 -2014-05-06 19:00:00,5874.2,0.0,64.62 -2014-05-06 20:00:00,5889.0,0.0,62.95 -2014-05-06 21:00:00,5688.3,0.0,61.89 -2014-05-06 22:00:00,5322.2,0.0,60.89 -2014-05-06 23:00:00,4852.3,0.0,58.65 -2014-05-07 00:00:00,4444.5,0.0,57.72 -2014-05-07 01:00:00,4169.1,0.0,56.07 -2014-05-07 02:00:00,4008.6,0.0,54.53 -2014-05-07 03:00:00,3943.3,0.0,53.65 -2014-05-07 04:00:00,3969.6,0.0,52.49 -2014-05-07 05:00:00,4164.0,0.0,51.43 -2014-05-07 06:00:00,4682.1,0.0,51.16 -2014-05-07 07:00:00,5286.4,0.0,51.72 -2014-05-07 08:00:00,5714.2,0.0,54.25 -2014-05-07 09:00:00,5999.3,0.0,56.61 -2014-05-07 10:00:00,6106.8,0.0,57.88 -2014-05-07 11:00:00,6156.5,0.0,58.86 -2014-05-07 12:00:00,6209.5,0.0,60.2 -2014-05-07 13:00:00,6251.7,0.0,62.49 -2014-05-07 14:00:00,6253.9,0.0,65.54 -2014-05-07 15:00:00,6250.0,0.0,63.91 -2014-05-07 16:00:00,6261.4,0.0,62.72 -2014-05-07 17:00:00,6202.7,0.0,61.91 -2014-05-07 18:00:00,6011.7,0.0,59.89 -2014-05-07 19:00:00,5944.5,0.0,58.2 -2014-05-07 20:00:00,5904.6,0.0,57.66 -2014-05-07 21:00:00,5695.3,0.0,58.42 -2014-05-07 22:00:00,5334.7,0.0,58.91 -2014-05-07 23:00:00,4878.3,0.0,58.6 -2014-05-08 00:00:00,4433.1,0.0,57.88 -2014-05-08 01:00:00,4174.9,0.0,57.22 -2014-05-08 02:00:00,4037.8,0.0,56.56 -2014-05-08 03:00:00,3985.9,0.0369,53.85 -2014-05-08 04:00:00,4008.8,0.0635,52.91 -2014-05-08 05:00:00,4235.5,0.1135,52.62 -2014-05-08 06:00:00,4774.7,0.02,53.49 -2014-05-08 07:00:00,5443.1,0.0296,53.47 -2014-05-08 08:00:00,5879.3,0.0335,53.49 -2014-05-08 09:00:00,6155.5,0.0231,53.61 -2014-05-08 10:00:00,6286.1,0.02,54.71 -2014-05-08 11:00:00,6335.8,0.01,55.64 -2014-05-08 12:00:00,6354.0,0.0,54.98 -2014-05-08 13:00:00,6355.5,0.0,55.0 -2014-05-08 14:00:00,6308.0,0.0,55.13 -2014-05-08 15:00:00,6306.5,0.0,54.73 -2014-05-08 16:00:00,6318.9,0.0,55.29 -2014-05-08 17:00:00,6275.4,0.0,55.6 -2014-05-08 18:00:00,6078.2,0.0,55.6 -2014-05-08 19:00:00,5989.4,0.0,55.88 -2014-05-08 20:00:00,5945.7,0.0,54.95 -2014-05-08 21:00:00,5726.3,0.0,55.07 -2014-05-08 22:00:00,5385.3,0.0,55.07 -2014-05-08 23:00:00,4934.1,0.0,54.59 -2014-05-09 00:00:00,4556.6,0.0,54.95 -2014-05-09 01:00:00,4271.2,0.0,54.81 -2014-05-09 02:00:00,4093.6,0.0,54.57 -2014-05-09 03:00:00,4015.3,0.0069,55.07 -2014-05-09 04:00:00,4044.9,0.02,54.59 -2014-05-09 05:00:00,4269.2,0.0,54.74 -2014-05-09 06:00:00,4810.3,0.0,54.95 -2014-05-09 07:00:00,5457.2,0.0,54.95 -2014-05-09 08:00:00,5888.2,0.0,55.27 -2014-05-09 09:00:00,6124.3,0.0,55.95 -2014-05-09 10:00:00,6269.5,0.0,58.28 -2014-05-09 11:00:00,6331.6,0.0,57.37 -2014-05-09 12:00:00,6342.2,0.0,57.39 -2014-05-09 13:00:00,6357.1,0.0,59.33 -2014-05-09 14:00:00,6319.2,0.0,57.86 -2014-05-09 15:00:00,6314.6,0.0,57.73 -2014-05-09 16:00:00,6310.4,0.0,57.37 -2014-05-09 17:00:00,6271.3,0.0,58.35 -2014-05-09 18:00:00,6087.4,0.0,58.74 -2014-05-09 19:00:00,5979.9,0.0,60.34 -2014-05-09 20:00:00,5909.8,0.0,61.02 -2014-05-09 21:00:00,5714.6,0.0,62.51 -2014-05-09 22:00:00,5434.8,0.0,62.52 -2014-05-09 23:00:00,5068.6,0.0,62.18 -2014-05-10 00:00:00,4684.9,0.0,60.82 -2014-05-10 01:00:00,4400.9,0.0,60.55 -2014-05-10 02:00:00,4203.3,0.0,58.72 -2014-05-10 03:00:00,4076.6,0.0,56.62 -2014-05-10 04:00:00,4034.0,0.0,55.87 -2014-05-10 05:00:00,4078.9,0.0,55.31 -2014-05-10 06:00:00,4225.7,0.0,56.74 -2014-05-10 07:00:00,4512.5,0.0,57.07 -2014-05-10 08:00:00,4877.2,0.0,58.55 -2014-05-10 09:00:00,5176.7,0.0,60.84 -2014-05-10 10:00:00,5429.3,0.0,64.11 -2014-05-10 11:00:00,5635.9,0.0,67.66 -2014-05-10 12:00:00,5758.1,0.0,72.75 -2014-05-10 13:00:00,5805.4,0.0,76.09 -2014-05-10 14:00:00,5819.5,0.0,79.5 -2014-05-10 15:00:00,5750.7,0.0,75.14 -2014-05-10 16:00:00,5724.4,0.0,72.21 -2014-05-10 17:00:00,5718.7,0.1981,69.68 -2014-05-10 18:00:00,5662.8,0.0,69.73 -2014-05-10 19:00:00,5621.1,0.0,70.18 -2014-05-10 20:00:00,5682.8,0.0,69.25 -2014-05-10 21:00:00,5597.5,0.0,68.4 -2014-05-10 22:00:00,5398.0,0.0,69.18 -2014-05-10 23:00:00,5105.9,0.0,67.98 -2014-05-11 00:00:00,4782.3,0.0035,67.05 -2014-05-11 01:00:00,4508.0,0.0369,64.64 -2014-05-11 02:00:00,4330.7,0.01,64.18 -2014-05-11 03:00:00,4196.3,0.0347,64.06 -2014-05-11 04:00:00,4112.4,0.0065,63.37 -2014-05-11 05:00:00,4071.0,0.0,62.61 -2014-05-11 06:00:00,4097.0,0.0,61.13 -2014-05-11 07:00:00,4295.7,0.0,61.37 -2014-05-11 08:00:00,4587.7,0.0,63.29 -2014-05-11 09:00:00,4875.8,0.0,65.18 -2014-05-11 10:00:00,5129.9,0.0,67.75 -2014-05-11 11:00:00,5278.2,0.0,70.17 -2014-05-11 12:00:00,5359.8,0.0,71.49 -2014-05-11 13:00:00,5378.1,0.0,73.08 -2014-05-11 14:00:00,5407.4,0.0,75.28 -2014-05-11 15:00:00,5419.7,0.0,75.96 -2014-05-11 16:00:00,5443.7,0.0,80.69 -2014-05-11 17:00:00,5476.4,0.0,79.01 -2014-05-11 18:00:00,5455.0,0.0,77.54 -2014-05-11 19:00:00,5459.8,0.0,77.26 -2014-05-11 20:00:00,5605.9,0.0,73.52 -2014-05-11 21:00:00,5594.8,0.0,73.94 -2014-05-11 22:00:00,5370.7,0.0,71.38 -2014-05-11 23:00:00,5014.2,0.0,70.46 -2014-05-12 00:00:00,4695.1,0.0,69.44 -2014-05-12 01:00:00,4466.9,0.0,67.3 -2014-05-12 02:00:00,4315.6,0.0,67.01 -2014-05-12 03:00:00,4256.4,0.0,66.18 -2014-05-12 04:00:00,4284.9,0.0,64.84 -2014-05-12 05:00:00,4493.8,0.0,64.21 -2014-05-12 06:00:00,5026.4,0.0,63.4 -2014-05-12 07:00:00,5686.2,0.0,63.59 -2014-05-12 08:00:00,6186.4,0.0,64.88 -2014-05-12 09:00:00,6580.6,0.0,69.08 -2014-05-12 10:00:00,6841.0,0.0,73.82 -2014-05-12 11:00:00,7013.3,0.0,75.83 -2014-05-12 12:00:00,7152.9,0.0,76.37 -2014-05-12 13:00:00,7263.1,0.0,78.9 -2014-05-12 14:00:00,7291.8,0.0,79.09 -2014-05-12 15:00:00,7337.3,0.0,77.21 -2014-05-12 16:00:00,7307.2,0.0,77.8 -2014-05-12 17:00:00,7214.4,0.0,74.74 -2014-05-12 18:00:00,6925.9,0.0,73.06 -2014-05-12 19:00:00,6752.5,0.0,71.8 -2014-05-12 20:00:00,6673.9,0.0,74.96 -2014-05-12 21:00:00,6469.3,0.0,73.85 -2014-05-12 22:00:00,6106.1,0.0,72.72 -2014-05-12 23:00:00,5630.4,0.0,72.67 -2014-05-13 00:00:00,5136.4,0.0,72.01 -2014-05-13 01:00:00,4867.3,0.0,69.01 -2014-05-13 02:00:00,4698.6,0.0,66.74 -2014-05-13 03:00:00,4620.7,0.0,66.2 -2014-05-13 04:00:00,4637.8,0.0,66.04 -2014-05-13 05:00:00,4844.3,0.0,64.79 -2014-05-13 06:00:00,5322.7,0.0,64.33 -2014-05-13 07:00:00,5836.5,0.0,62.25 -2014-05-13 08:00:00,6186.6,0.0,60.78 -2014-05-13 09:00:00,6419.5,0.0,60.78 -2014-05-13 10:00:00,6517.8,0.0,61.77 -2014-05-13 11:00:00,6576.7,0.0,62.72 -2014-05-13 12:00:00,6626.9,0.0,63.58 -2014-05-13 13:00:00,6676.6,0.0,65.08 -2014-05-13 14:00:00,6668.6,0.0,64.75 -2014-05-13 15:00:00,6663.0,0.0,65.68 -2014-05-13 16:00:00,6670.7,0.0,66.34 -2014-05-13 17:00:00,6592.7,0.0,66.63 -2014-05-13 18:00:00,6275.9,0.0,65.4 -2014-05-13 19:00:00,6021.7,0.0,63.31 -2014-05-13 20:00:00,5972.1,0.0,59.92 -2014-05-13 21:00:00,5779.7,0.0,56.85 -2014-05-13 22:00:00,5411.1,0.0,55.36 -2014-05-13 23:00:00,4947.9,0.0,54.17 -2014-05-14 00:00:00,4518.0,0.0,53.17 -2014-05-14 01:00:00,4272.2,0.0,52.96 -2014-05-14 02:00:00,4105.0,0.0,52.31 -2014-05-14 03:00:00,4029.7,0.0,51.74 -2014-05-14 04:00:00,4038.1,0.0,52.1 -2014-05-14 05:00:00,4243.7,0.0,51.74 -2014-05-14 06:00:00,4780.3,0.0,52.1 -2014-05-14 07:00:00,5392.1,0.0,51.88 -2014-05-14 08:00:00,5780.3,0.0,52.76 -2014-05-14 09:00:00,6039.8,0.0,53.97 -2014-05-14 10:00:00,6163.8,0.0,54.42 -2014-05-14 11:00:00,6236.9,0.0,56.77 -2014-05-14 12:00:00,6333.9,0.0,58.48 -2014-05-14 13:00:00,6422.4,0.0,61.73 -2014-05-14 14:00:00,6487.5,0.0,62.94 -2014-05-14 15:00:00,6449.1,0.0,62.17 -2014-05-14 16:00:00,6450.1,0.0,61.82 -2014-05-14 17:00:00,6385.3,0.0,60.19 -2014-05-14 18:00:00,6179.0,0.0,59.59 -2014-05-14 19:00:00,6083.0,0.0,59.78 -2014-05-14 20:00:00,6021.6,0.0,59.91 -2014-05-14 21:00:00,5809.5,0.0,58.5 -2014-05-14 22:00:00,5449.9,0.0,58.74 -2014-05-14 23:00:00,5000.2,0.0,58.75 -2014-05-15 00:00:00,4575.1,0.0,59.37 -2014-05-15 01:00:00,4302.7,0.0065,57.73 -2014-05-15 02:00:00,4156.7,0.0131,58.04 -2014-05-15 03:00:00,4100.9,0.0681,57.93 -2014-05-15 04:00:00,4134.1,0.0,57.87 -2014-05-15 05:00:00,4356.4,0.0069,58.28 -2014-05-15 06:00:00,4930.7,0.0135,59.15 -2014-05-15 07:00:00,5619.1,0.01,60.56 -2014-05-15 08:00:00,6107.3,0.0557,60.15 -2014-05-15 09:00:00,6399.3,0.0,61.03 -2014-05-15 10:00:00,6539.1,0.0,63.06 -2014-05-15 11:00:00,6640.1,0.0,63.91 -2014-05-15 12:00:00,6667.1,0.0,64.19 -2014-05-15 13:00:00,6693.4,0.0069,65.16 -2014-05-15 14:00:00,6673.6,0.0,66.25 -2014-05-15 15:00:00,6736.6,0.0,68.48 -2014-05-15 16:00:00,6832.5,0.0,70.19 -2014-05-15 17:00:00,6791.7,0.0,69.99 -2014-05-15 18:00:00,6531.7,0.0,67.58 -2014-05-15 19:00:00,6309.2,0.0,66.27 -2014-05-15 20:00:00,6214.8,0.0,66.11 -2014-05-15 21:00:00,6009.8,0.0,66.04 -2014-05-15 22:00:00,5656.4,0.0,66.24 -2014-05-15 23:00:00,5206.3,0.0,66.11 -2014-05-16 00:00:00,4796.2,0.0,65.31 -2014-05-16 01:00:00,4528.8,0.0,65.33 -2014-05-16 02:00:00,4354.7,0.0,65.33 -2014-05-16 03:00:00,4285.1,0.0069,65.21 -2014-05-16 04:00:00,4289.3,0.0069,64.16 -2014-05-16 05:00:00,4524.1,0.0065,64.53 -2014-05-16 06:00:00,5098.0,0.0,65.3 -2014-05-16 07:00:00,5794.4,0.0,66.31 -2014-05-16 08:00:00,6279.0,0.0,67.19 -2014-05-16 09:00:00,6558.6,0.0,66.82 -2014-05-16 10:00:00,6717.3,0.0,66.92 -2014-05-16 11:00:00,6812.0,0.0,67.81 -2014-05-16 12:00:00,6853.9,0.0,67.82 -2014-05-16 13:00:00,6869.9,0.0,68.5 -2014-05-16 14:00:00,6818.4,0.0035,68.23 -2014-05-16 15:00:00,6808.2,0.01,67.4 -2014-05-16 16:00:00,6818.4,0.0035,67.38 -2014-05-16 17:00:00,6781.0,0.0035,68.16 -2014-05-16 18:00:00,6511.7,0.0165,69.02 -2014-05-16 19:00:00,6318.0,0.0069,64.86 -2014-05-16 20:00:00,6183.1,0.0165,64.3 -2014-05-16 21:00:00,5978.1,0.1661,64.67 -2014-05-16 22:00:00,5655.5,0.3944,64.45 -2014-05-16 23:00:00,5268.0,0.0761,63.36 -2014-05-17 00:00:00,4833.3,0.0361,61.29 -2014-05-17 01:00:00,4525.2,0.0,59.85 -2014-05-17 02:00:00,4334.3,0.0,58.85 -2014-05-17 03:00:00,4155.3,0.0,58.19 -2014-05-17 04:00:00,4093.2,0.0,56.66 -2014-05-17 05:00:00,4099.4,0.0,55.8 -2014-05-17 06:00:00,4221.8,0.0,54.44 -2014-05-17 07:00:00,4506.3,0.0,54.88 -2014-05-17 08:00:00,4839.3,0.0,56.05 -2014-05-17 09:00:00,5127.2,0.0,57.44 -2014-05-17 10:00:00,5339.7,0.0,59.87 -2014-05-17 11:00:00,5438.7,0.0,61.39 -2014-05-17 12:00:00,5471.1,0.0,63.59 -2014-05-17 13:00:00,5451.4,0.0,65.01 -2014-05-17 14:00:00,5434.7,0.0,66.0 -2014-05-17 15:00:00,5410.9,0.0,66.51 -2014-05-17 16:00:00,5385.4,0.0,67.35 -2014-05-17 17:00:00,5366.7,0.0,67.79 -2014-05-17 18:00:00,5325.3,0.0,66.93 -2014-05-17 19:00:00,5282.2,0.0,65.83 -2014-05-17 20:00:00,5340.0,0.0,65.39 -2014-05-17 21:00:00,5308.5,0.0,64.32 -2014-05-17 22:00:00,5098.4,0.0,63.2 -2014-05-17 23:00:00,4834.7,0.0,62.07 -2014-05-18 00:00:00,4531.1,0.0,60.47 -2014-05-18 01:00:00,4279.1,0.0,59.23 -2014-05-18 02:00:00,4110.7,0.0,57.37 -2014-05-18 03:00:00,4009.4,0.0,56.16 -2014-05-18 04:00:00,3942.2,0.0,54.69 -2014-05-18 05:00:00,3896.5,0.0,53.81 -2014-05-18 06:00:00,3990.0,0.0,53.2 -2014-05-18 07:00:00,4184.3,0.0,54.27 -2014-05-18 08:00:00,4483.8,0.0,55.93 -2014-05-18 09:00:00,4755.2,0.0,57.12 -2014-05-18 10:00:00,4966.5,0.0,58.82 -2014-05-18 11:00:00,5084.1,0.0,60.31 -2014-05-18 12:00:00,5165.2,0.0,62.32 -2014-05-18 13:00:00,5183.1,0.0,62.51 -2014-05-18 14:00:00,5176.8,0.0,64.48 -2014-05-18 15:00:00,5168.9,0.0,63.88 -2014-05-18 16:00:00,5177.5,0.0,63.12 -2014-05-18 17:00:00,5192.1,0.0,64.35 -2014-05-18 18:00:00,5191.7,0.0,63.84 -2014-05-18 19:00:00,5191.8,0.0,63.44 -2014-05-18 20:00:00,5317.4,0.0,62.56 -2014-05-18 21:00:00,5273.1,0.0,60.63 -2014-05-18 22:00:00,5026.7,0.0,59.51 -2014-05-18 23:00:00,4677.1,0.0,58.24 -2014-05-19 00:00:00,4328.1,0.0,57.28 -2014-05-19 01:00:00,4116.7,0.0,55.93 -2014-05-19 02:00:00,3984.5,0.0,54.74 -2014-05-19 03:00:00,3948.4,0.0,53.93 -2014-05-19 04:00:00,3967.4,0.0,53.44 -2014-05-19 05:00:00,4180.9,0.0,52.06 -2014-05-19 06:00:00,4690.3,0.0,52.05 -2014-05-19 07:00:00,5284.4,0.0,52.81 -2014-05-19 08:00:00,5711.3,0.0,55.26 -2014-05-19 09:00:00,6022.2,0.0,57.83 -2014-05-19 10:00:00,6171.0,0.0,60.17 -2014-05-19 11:00:00,6274.8,0.0,62.5 -2014-05-19 12:00:00,6321.4,0.0,64.51 -2014-05-19 13:00:00,6362.9,0.0,66.74 -2014-05-19 14:00:00,6388.7,0.0,68.52 -2014-05-19 15:00:00,6407.9,0.0,68.83 -2014-05-19 16:00:00,6436.9,0.0,69.01 -2014-05-19 17:00:00,6395.5,0.0,69.46 -2014-05-19 18:00:00,6119.3,0.0,69.06 -2014-05-19 19:00:00,5929.9,0.0,67.17 -2014-05-19 20:00:00,5913.2,0.0,66.1 -2014-05-19 21:00:00,5752.6,0.0,64.28 -2014-05-19 22:00:00,5347.8,0.0,62.18 -2014-05-19 23:00:00,4886.5,0.0,61.41 -2014-05-20 00:00:00,4468.1,0.0,61.02 -2014-05-20 01:00:00,4214.2,0.0,59.33 -2014-05-20 02:00:00,4040.5,0.0,58.57 -2014-05-20 03:00:00,3954.3,0.0,57.72 -2014-05-20 04:00:00,3983.8,0.0,57.08 -2014-05-20 05:00:00,4181.9,0.0,57.2 -2014-05-20 06:00:00,4724.4,0.0,55.81 -2014-05-20 07:00:00,5376.6,0.0,57.33 -2014-05-20 08:00:00,5858.7,0.0,59.85 -2014-05-20 09:00:00,6199.7,0.0,62.96 -2014-05-20 10:00:00,6386.6,0.0,67.29 -2014-05-20 11:00:00,6501.8,0.0,70.56 -2014-05-20 12:00:00,6562.7,0.0,71.37 -2014-05-20 13:00:00,6624.5,0.0,72.65 -2014-05-20 14:00:00,6662.8,0.0,73.82 -2014-05-20 15:00:00,6702.7,0.0,74.83 -2014-05-20 16:00:00,6764.3,0.0,75.64 -2014-05-20 17:00:00,6724.8,0.0,76.11 -2014-05-20 18:00:00,6398.1,0.0,75.98 -2014-05-20 19:00:00,6198.9,0.0,73.98 -2014-05-20 20:00:00,6176.6,0.0,73.45 -2014-05-20 21:00:00,5983.7,0.0,72.26 -2014-05-20 22:00:00,5620.6,0.0,71.46 -2014-05-20 23:00:00,5160.3,0.0,69.64 -2014-05-21 00:00:00,4710.5,0.0,67.91 -2014-05-21 01:00:00,4451.2,0.0,68.39 -2014-05-21 02:00:00,4284.9,0.0,67.18 -2014-05-21 03:00:00,4217.9,0.0,65.98 -2014-05-21 04:00:00,4221.9,0.0,66.06 -2014-05-21 05:00:00,4453.7,0.0,64.7 -2014-05-21 06:00:00,5024.1,0.0,65.3 -2014-05-21 07:00:00,5711.5,0.0,66.65 -2014-05-21 08:00:00,6186.1,0.0,66.46 -2014-05-21 09:00:00,6487.1,0.0,66.28 -2014-05-21 10:00:00,6632.4,0.0,68.1 -2014-05-21 11:00:00,6724.4,0.0,70.83 -2014-05-21 12:00:00,6766.4,0.0,71.21 -2014-05-21 13:00:00,6797.9,0.0,71.36 -2014-05-21 14:00:00,6824.0,0.0,70.72 -2014-05-21 15:00:00,6865.4,0.0,72.78 -2014-05-21 16:00:00,6895.2,0.0,72.63 -2014-05-21 17:00:00,6808.2,0.0,72.59 -2014-05-21 18:00:00,6486.0,0.0,71.89 -2014-05-21 19:00:00,6279.1,0.0,69.51 -2014-05-21 20:00:00,6199.1,0.0,68.01 -2014-05-21 21:00:00,5985.6,0.0,67.08 -2014-05-21 22:00:00,5633.2,0.0,64.02 -2014-05-21 23:00:00,5191.3,0.0,63.68 -2014-05-22 00:00:00,4768.4,0.0,64.29 -2014-05-22 01:00:00,4524.1,0.0,64.47 -2014-05-22 02:00:00,4360.7,0.0,64.57 -2014-05-22 03:00:00,4304.5,0.0,63.86 -2014-05-22 04:00:00,4317.9,0.1461,62.44 -2014-05-22 05:00:00,4548.5,0.0996,61.57 -2014-05-22 06:00:00,5115.7,0.0,61.81 -2014-05-22 07:00:00,5744.9,0.0,61.37 -2014-05-22 08:00:00,6179.3,0.0,61.1 -2014-05-22 09:00:00,6442.7,0.0,61.22 -2014-05-22 10:00:00,6556.4,0.0,61.53 -2014-05-22 11:00:00,6620.6,0.0,61.57 -2014-05-22 12:00:00,6629.0,0.0,61.96 -2014-05-22 13:00:00,6611.1,0.0,61.34 -2014-05-22 14:00:00,6573.2,0.0,60.42 -2014-05-22 15:00:00,6572.0,0.0,61.83 -2014-05-22 16:00:00,6578.4,0.0,62.24 -2014-05-22 17:00:00,6538.0,0.0,62.37 -2014-05-22 18:00:00,6325.5,0.0,62.31 -2014-05-22 19:00:00,6126.4,0.0065,61.57 -2014-05-22 20:00:00,6036.5,0.0,59.63 -2014-05-22 21:00:00,5873.4,0.0,59.49 -2014-05-22 22:00:00,5492.0,0.0,60.03 -2014-05-22 23:00:00,5065.2,0.0,60.32 -2014-05-23 00:00:00,4667.4,0.0,59.92 -2014-05-23 01:00:00,4397.1,0.0,60.12 -2014-05-23 02:00:00,4241.7,0.0,58.9 -2014-05-23 03:00:00,4163.3,0.0,58.61 -2014-05-23 04:00:00,4179.6,0.0,58.39 -2014-05-23 05:00:00,4376.6,0.0,58.21 -2014-05-23 06:00:00,4907.5,0.0,58.27 -2014-05-23 07:00:00,5537.7,0.0,58.97 -2014-05-23 08:00:00,5973.7,0.0,59.02 -2014-05-23 09:00:00,6297.4,0.0,59.09 -2014-05-23 10:00:00,6420.8,0.0,61.04 -2014-05-23 11:00:00,6501.6,0.0,62.51 -2014-05-23 12:00:00,6571.1,0.0,63.79 -2014-05-23 13:00:00,6595.6,0.0,65.64 -2014-05-23 14:00:00,6545.4,0.0,66.44 -2014-05-23 15:00:00,6494.3,0.0659,64.55 -2014-05-23 16:00:00,6458.9,0.0104,63.37 -2014-05-23 17:00:00,6380.3,0.0308,62.81 -2014-05-23 18:00:00,6124.2,0.0131,64.21 -2014-05-23 19:00:00,6004.5,0.0,62.76 -2014-05-23 20:00:00,5882.9,0.0,60.56 -2014-05-23 21:00:00,5693.2,0.052,58.95 -2014-05-23 22:00:00,5376.0,0.0931,57.49 -2014-05-23 23:00:00,5041.8,0.0677,57.7 -2014-05-24 00:00:00,4628.2,0.1265,57.63 -2014-05-24 01:00:00,4387.6,0.0065,58.01 -2014-05-24 02:00:00,4208.8,0.0131,58.56 -2014-05-24 03:00:00,4090.0,0.0,58.05 -2014-05-24 04:00:00,4057.1,0.0,57.91 -2014-05-24 05:00:00,4078.0,0.0,57.56 -2014-05-24 06:00:00,4202.8,0.0,57.91 -2014-05-24 07:00:00,4446.9,0.0,58.24 -2014-05-24 08:00:00,4755.2,0.0,58.27 -2014-05-24 09:00:00,5031.6,0.0,58.72 -2014-05-24 10:00:00,5236.0,0.0,60.07 -2014-05-24 11:00:00,5367.1,0.0,63.33 -2014-05-24 12:00:00,5410.6,0.0,64.7 -2014-05-24 13:00:00,5422.1,0.0,65.8 -2014-05-24 14:00:00,5386.3,0.0,66.35 -2014-05-24 15:00:00,5350.6,0.0,67.19 -2014-05-24 16:00:00,5320.7,0.0069,64.84 -2014-05-24 17:00:00,5342.2,0.0069,62.63 -2014-05-24 18:00:00,5317.3,0.0065,61.09 -2014-05-24 19:00:00,5247.9,0.0,60.85 -2014-05-24 20:00:00,5279.1,0.0,61.12 -2014-05-24 21:00:00,5247.1,0.0065,60.31 -2014-05-24 22:00:00,5073.0,0.0,59.03 -2014-05-24 23:00:00,4829.3,0.0,58.93 -2014-05-25 00:00:00,4526.3,0.0,58.66 -2014-05-25 01:00:00,4295.4,0.0,58.86 -2014-05-25 02:00:00,4137.7,0.0,57.81 -2014-05-25 03:00:00,4014.8,0.0,57.49 -2014-05-25 04:00:00,3930.6,0.0,56.3 -2014-05-25 05:00:00,3903.4,0.0,55.63 -2014-05-25 06:00:00,3973.4,0.0,55.83 -2014-05-25 07:00:00,4194.8,0.0,57.18 -2014-05-25 08:00:00,4491.7,0.0,59.73 -2014-05-25 09:00:00,4782.3,0.0,62.8 -2014-05-25 10:00:00,5042.4,0.0,66.37 -2014-05-25 11:00:00,5218.4,0.0,69.78 -2014-05-25 12:00:00,5321.8,0.0,72.18 -2014-05-25 13:00:00,5385.8,0.0,74.57 -2014-05-25 14:00:00,5391.5,0.0,75.8 -2014-05-25 15:00:00,5382.0,0.0,76.76 -2014-05-25 16:00:00,5403.6,0.0,77.7 -2014-05-25 17:00:00,5422.6,0.0,77.94 -2014-05-25 18:00:00,5412.0,0.0,74.42 -2014-05-25 19:00:00,5355.6,0.0,73.92 -2014-05-25 20:00:00,5427.6,0.0,71.8 -2014-05-25 21:00:00,5415.6,0.0,70.09 -2014-05-25 22:00:00,5250.0,0.0,69.46 -2014-05-25 23:00:00,4988.9,0.0,67.75 -2014-05-26 00:00:00,4704.7,0.0,67.41 -2014-05-26 01:00:00,4479.0,0.0,66.78 -2014-05-26 02:00:00,4309.9,0.0,67.98 -2014-05-26 03:00:00,4182.0,0.0,66.01 -2014-05-26 04:00:00,4141.9,0.0,65.03 -2014-05-26 05:00:00,4177.0,0.0,66.08 -2014-05-26 06:00:00,4322.5,0.0,65.44 -2014-05-26 07:00:00,4562.8,0.0,66.41 -2014-05-26 08:00:00,4895.0,0.0,68.78 -2014-05-26 09:00:00,5237.9,0.0,71.55 -2014-05-26 10:00:00,5555.1,0.0,73.5 -2014-05-26 11:00:00,5768.9,0.0,77.4 -2014-05-26 12:00:00,5870.0,0.0,79.39 -2014-05-26 13:00:00,5944.0,0.0,80.84 -2014-05-26 14:00:00,6007.9,0.0,81.77 -2014-05-26 15:00:00,6069.7,0.0,82.77 -2014-05-26 16:00:00,6124.0,0.0,83.97 -2014-05-26 17:00:00,6159.7,0.0,83.5 -2014-05-26 18:00:00,6142.8,0.0,83.01 -2014-05-26 19:00:00,6093.9,0.0,82.21 -2014-05-26 20:00:00,6195.0,0.0,80.82 -2014-05-26 21:00:00,6222.9,0.0,79.89 -2014-05-26 22:00:00,5984.9,0.0,78.51 -2014-05-26 23:00:00,5626.7,0.0,77.85 -2014-05-27 00:00:00,5268.3,0.0,76.73 -2014-05-27 01:00:00,5008.4,0.0,75.61 -2014-05-27 02:00:00,4859.7,0.0,75.16 -2014-05-27 03:00:00,4784.2,0.0,74.13 -2014-05-27 04:00:00,4786.2,0.0,71.94 -2014-05-27 05:00:00,4984.0,0.0,71.94 -2014-05-27 06:00:00,5545.8,0.0,69.44 -2014-05-27 07:00:00,6241.0,0.0,71.99 -2014-05-27 08:00:00,6802.4,0.0,72.3 -2014-05-27 09:00:00,7232.6,0.0,75.06 -2014-05-27 10:00:00,7541.4,0.0,78.73 -2014-05-27 11:00:00,7753.2,0.0,80.99 -2014-05-27 12:00:00,7876.9,0.0,81.8 -2014-05-27 13:00:00,7945.9,0.0,82.07 -2014-05-27 14:00:00,7959.4,0.0,83.87 -2014-05-27 15:00:00,8046.0,0.0,80.91 -2014-05-27 16:00:00,8165.6,0.0,83.3 -2014-05-27 17:00:00,8124.7,0.0,84.3 -2014-05-27 18:00:00,7801.3,0.0,82.31 -2014-05-27 19:00:00,7624.5,0.0,81.86 -2014-05-27 20:00:00,7537.0,0.0,80.78 -2014-05-27 21:00:00,7304.5,0.0,77.86 -2014-05-27 22:00:00,6870.3,0.0,76.25 -2014-05-27 23:00:00,6284.1,0.0,73.69 -2014-05-28 00:00:00,5637.2,0.0,67.41 -2014-05-28 01:00:00,5166.3,0.0,64.18 -2014-05-28 02:00:00,4914.8,0.0,61.56 -2014-05-28 03:00:00,4791.0,0.0,61.56 -2014-05-28 04:00:00,4767.5,0.0,61.25 -2014-05-28 05:00:00,4921.8,0.0,60.0 -2014-05-28 06:00:00,5403.7,0.0,58.94 -2014-05-28 07:00:00,5964.6,0.0,57.84 -2014-05-28 08:00:00,6319.9,0.0,57.25 -2014-05-28 09:00:00,6510.0,0.0,56.51 -2014-05-28 10:00:00,6552.5,0.0,56.05 -2014-05-28 11:00:00,6564.7,0.0,55.7 -2014-05-28 12:00:00,6556.6,0.0,55.81 -2014-05-28 13:00:00,6537.3,0.0,56.8 -2014-05-28 14:00:00,6504.3,0.0,57.58 -2014-05-28 15:00:00,6481.4,0.0,58.78 -2014-05-28 16:00:00,6516.0,0.0,58.9 -2014-05-28 17:00:00,6467.4,0.0,58.42 -2014-05-28 18:00:00,6203.7,0.0,57.63 -2014-05-28 19:00:00,6043.7,0.0,56.98 -2014-05-28 20:00:00,5951.9,0.0,56.98 -2014-05-28 21:00:00,5739.1,0.0,55.63 -2014-05-28 22:00:00,5395.5,0.0,55.63 -2014-05-28 23:00:00,4943.5,0.0,55.24 -2014-05-29 00:00:00,4531.0,0.0,54.63 -2014-05-29 01:00:00,4269.9,0.0,53.88 -2014-05-29 02:00:00,4093.4,0.0,53.56 -2014-05-29 03:00:00,4033.3,0.0,53.24 -2014-05-29 04:00:00,4047.9,0.0,52.7 -2014-05-29 05:00:00,4227.0,0.0,52.24 -2014-05-29 06:00:00,4743.3,0.0,52.3 -2014-05-29 07:00:00,5353.3,0.0,52.44 -2014-05-29 08:00:00,5758.6,0.0,52.27 -2014-05-29 09:00:00,6021.8,0.0,53.05 -2014-05-29 10:00:00,6138.2,0.0,54.25 -2014-05-29 11:00:00,6202.6,0.0,56.09 -2014-05-29 12:00:00,6254.8,0.0,57.99 -2014-05-29 13:00:00,6304.6,0.0,58.8 -2014-05-29 14:00:00,6310.1,0.0,60.59 -2014-05-29 15:00:00,6328.7,0.0,61.21 -2014-05-29 16:00:00,6334.1,0.0,60.9 -2014-05-29 17:00:00,6272.3,0.0,60.22 -2014-05-29 18:00:00,6022.0,0.0,58.97 -2014-05-29 19:00:00,5872.5,0.0,57.87 -2014-05-29 20:00:00,5836.1,0.0,57.53 -2014-05-29 21:00:00,5699.9,0.0,56.87 -2014-05-29 22:00:00,5381.2,0.0,56.98 -2014-05-29 23:00:00,4955.5,0.0,56.8 -2014-05-30 00:00:00,4558.4,0.0,57.12 -2014-05-30 01:00:00,4299.5,0.0,56.92 -2014-05-30 02:00:00,4146.7,0.0,56.12 -2014-05-30 03:00:00,4076.4,0.0,56.12 -2014-05-30 04:00:00,4085.1,0.0,56.59 -2014-05-30 05:00:00,4262.8,0.0,56.91 -2014-05-30 06:00:00,4773.3,0.0,56.72 -2014-05-30 07:00:00,5379.6,0.0,57.79 -2014-05-30 08:00:00,5866.1,0.0,58.78 -2014-05-30 09:00:00,6216.5,0.0,61.83 -2014-05-30 10:00:00,6408.7,0.0,63.86 -2014-05-30 11:00:00,6531.3,0.0,65.93 -2014-05-30 12:00:00,6602.4,0.0,67.8 -2014-05-30 13:00:00,6645.3,0.0,69.22 -2014-05-30 14:00:00,6692.0,0.0,69.92 -2014-05-30 15:00:00,6728.1,0.0,71.44 -2014-05-30 16:00:00,6730.2,0.0,72.95 -2014-05-30 17:00:00,6660.6,0.0,72.75 -2014-05-30 18:00:00,6359.9,0.0,72.42 -2014-05-30 19:00:00,6174.4,0.0,69.65 -2014-05-30 20:00:00,6028.3,0.0196,65.77 -2014-05-30 21:00:00,5871.6,0.0,65.17 -2014-05-30 22:00:00,5584.8,0.0,65.02 -2014-05-30 23:00:00,5181.8,0.0,63.74 -2014-05-31 00:00:00,4766.2,0.0,62.42 -2014-05-31 01:00:00,4483.9,0.0,61.23 -2014-05-31 02:00:00,4234.3,0.0,60.21 -2014-05-31 03:00:00,4132.3,0.0,59.3 -2014-05-31 04:00:00,4092.0,0.0,58.84 -2014-05-31 05:00:00,4068.7,0.0,59.03 -2014-05-31 06:00:00,4220.3,0.0,59.03 -2014-05-31 07:00:00,4532.1,0.0,59.93 -2014-05-31 08:00:00,4920.4,0.0,62.0 -2014-05-31 09:00:00,5238.2,0.0,63.7 -2014-05-31 10:00:00,5455.8,0.0,65.7 -2014-05-31 11:00:00,5577.3,0.0,66.88 -2014-05-31 12:00:00,5622.7,0.0,67.74 -2014-05-31 13:00:00,5592.6,0.0,68.33 -2014-05-31 14:00:00,5571.2,0.0,68.72 -2014-05-31 15:00:00,5530.7,0.0,68.74 -2014-05-31 16:00:00,5506.2,0.0065,67.46 -2014-05-31 17:00:00,5512.4,0.0,66.87 -2014-05-31 18:00:00,5477.3,0.0,68.49 -2014-05-31 19:00:00,5409.3,0.0,66.96 -2014-05-31 20:00:00,5412.7,0.0,63.18 -2014-05-31 21:00:00,5372.8,0.0,61.01 -2014-05-31 22:00:00,5174.7,0.0,60.24 -2014-05-31 23:00:00,4907.5,0.0,59.98 -2014-06-01 00:00:00,4590.3,0.0,59.29 -2014-06-01 01:00:00,4343.6,0.0,58.44 -2014-06-01 02:00:00,4178.6,0.0,57.88 -2014-06-01 03:00:00,4078.1,0.0,58.4 -2014-06-01 04:00:00,3984.4,0.0,57.84 -2014-06-01 05:00:00,3925.4,0.0,57.51 -2014-06-01 06:00:00,4038.0,0.0,56.11 -2014-06-01 07:00:00,4266.8,0.0,58.3 -2014-06-01 08:00:00,4585.8,0.0,60.96 -2014-06-01 09:00:00,4910.7,0.0,63.75 -2014-06-01 10:00:00,5179.7,0.0,66.82 -2014-06-01 11:00:00,5355.7,0.0,69.11 -2014-06-01 12:00:00,5456.6,0.0,69.39 -2014-06-01 13:00:00,5496.9,0.0,71.62 -2014-06-01 14:00:00,5516.8,0.0,72.19 -2014-06-01 15:00:00,5534.2,0.0,73.93 -2014-06-01 16:00:00,5541.3,0.0,73.37 -2014-06-01 17:00:00,5549.1,0.0,72.95 -2014-06-01 18:00:00,5512.8,0.0,73.03 -2014-06-01 19:00:00,5470.3,0.0,71.12 -2014-06-01 20:00:00,5530.0,0.0,69.12 -2014-06-01 21:00:00,5530.8,0.0,67.35 -2014-06-01 22:00:00,5289.2,0.0,66.59 -2014-06-01 23:00:00,4948.4,0.0,65.96 -2014-06-02 00:00:00,4615.6,0.0,64.39 -2014-06-02 01:00:00,4389.8,0.0,63.94 -2014-06-02 02:00:00,4251.5,0.0,63.2 -2014-06-02 03:00:00,4186.4,0.0,62.12 -2014-06-02 04:00:00,4218.0,0.0,61.3 -2014-06-02 05:00:00,4409.8,0.0,60.47 -2014-06-02 06:00:00,4984.8,0.0,59.66 -2014-06-02 07:00:00,5659.7,0.0,60.94 -2014-06-02 08:00:00,6209.4,0.0,65.23 -2014-06-02 09:00:00,6577.0,0.0,67.2 -2014-06-02 10:00:00,6767.9,0.0,69.84 -2014-06-02 11:00:00,6895.8,0.0,72.3 -2014-06-02 12:00:00,6988.0,0.0,74.03 -2014-06-02 13:00:00,7080.9,0.0,74.65 -2014-06-02 14:00:00,7123.7,0.0,75.41 -2014-06-02 15:00:00,7182.4,0.0,75.39 -2014-06-02 16:00:00,7271.3,0.0,76.13 -2014-06-02 17:00:00,7260.7,0.0,77.38 -2014-06-02 18:00:00,6953.2,0.0,77.7 -2014-06-02 19:00:00,6746.7,0.0,77.7 -2014-06-02 20:00:00,6648.6,0.0,75.55 -2014-06-02 21:00:00,6530.3,0.0,74.91 -2014-06-02 22:00:00,6161.2,0.0,74.07 -2014-06-02 23:00:00,5649.9,0.0,73.24 -2014-06-03 00:00:00,5173.2,0.0,71.52 -2014-06-03 01:00:00,4876.2,0.0,70.55 -2014-06-03 02:00:00,4696.0,0.0,69.49 -2014-06-03 03:00:00,4611.0,0.0,69.09 -2014-06-03 04:00:00,4626.8,0.0,68.3 -2014-06-03 05:00:00,4818.0,0.0,67.37 -2014-06-03 06:00:00,5416.8,0.0,66.55 -2014-06-03 07:00:00,6165.7,0.0,67.96 -2014-06-03 08:00:00,6756.5,0.0,70.64 -2014-06-03 09:00:00,7231.7,0.0,72.94 -2014-06-03 10:00:00,7546.5,0.0,76.87 -2014-06-03 11:00:00,7785.6,0.0,79.36 -2014-06-03 12:00:00,7991.3,0.0,79.51 -2014-06-03 13:00:00,8149.2,0.0,81.27 -2014-06-03 14:00:00,8196.4,0.0,82.02 -2014-06-03 15:00:00,8181.2,0.0,81.12 -2014-06-03 16:00:00,8179.6,0.0,80.91 -2014-06-03 17:00:00,8105.2,0.0,77.14 -2014-06-03 18:00:00,7785.4,0.052,73.6 -2014-06-03 19:00:00,7557.3,0.0581,71.77 -2014-06-03 20:00:00,7422.3,0.0296,73.45 -2014-06-03 21:00:00,7197.4,0.0,72.32 -2014-06-03 22:00:00,6683.5,0.0,70.61 -2014-06-03 23:00:00,6080.5,0.0,68.15 -2014-06-04 00:00:00,5575.5,0.0,67.13 -2014-06-04 01:00:00,5229.9,0.0,65.56 -2014-06-04 02:00:00,5008.0,0.0,65.57 -2014-06-04 03:00:00,4899.2,0.0,65.5 -2014-06-04 04:00:00,4912.6,0.0,65.18 -2014-06-04 05:00:00,5074.2,0.0,63.78 -2014-06-04 06:00:00,5621.4,0.0,63.64 -2014-06-04 07:00:00,6297.1,0.0,63.93 -2014-06-04 08:00:00,6761.2,0.0,64.32 -2014-06-04 09:00:00,7160.0,0.0,66.58 -2014-06-04 10:00:00,7384.6,0.0,67.92 -2014-06-04 11:00:00,7569.1,0.0,71.88 -2014-06-04 12:00:00,7703.2,0.0,73.9 -2014-06-04 13:00:00,7820.6,0.0,76.6 -2014-06-04 14:00:00,7909.3,0.0,75.52 -2014-06-04 15:00:00,7968.1,0.0,76.79 -2014-06-04 16:00:00,7976.7,0.0,76.99 -2014-06-04 17:00:00,7805.5,0.0,77.61 -2014-06-04 18:00:00,7395.4,0.0,74.73 -2014-06-04 19:00:00,7141.2,0.0,73.11 -2014-06-04 20:00:00,7048.4,0.0,71.93 -2014-06-04 21:00:00,6899.7,0.0,71.97 -2014-06-04 22:00:00,6550.9,0.0,69.29 -2014-06-04 23:00:00,6056.6,0.0,68.78 -2014-06-05 00:00:00,5563.2,0.0,68.15 -2014-06-05 01:00:00,5225.7,0.0,66.99 -2014-06-05 02:00:00,5017.8,0.0035,65.95 -2014-06-05 03:00:00,4920.3,0.0065,66.13 -2014-06-05 04:00:00,4903.5,0.0165,65.43 -2014-06-05 05:00:00,5094.9,0.03,64.2 -2014-06-05 06:00:00,5634.0,0.0543,64.58 -2014-06-05 07:00:00,6215.2,0.0957,64.09 -2014-06-05 08:00:00,6642.0,0.0884,63.2 -2014-06-05 09:00:00,6886.5,0.0961,62.91 -2014-06-05 10:00:00,6997.3,0.0165,62.91 -2014-06-05 11:00:00,7038.3,0.0065,63.64 -2014-06-05 12:00:00,7067.2,0.0,64.33 -2014-06-05 13:00:00,7122.9,0.0,67.08 -2014-06-05 14:00:00,7201.9,0.0,69.01 -2014-06-05 15:00:00,7283.7,0.0,71.1 -2014-06-05 16:00:00,7354.8,0.0,73.1 -2014-06-05 17:00:00,7327.6,0.0,74.93 -2014-06-05 18:00:00,7028.3,0.0,75.84 -2014-06-05 19:00:00,6758.0,0.0,75.59 -2014-06-05 20:00:00,6576.1,0.0,73.94 -2014-06-05 21:00:00,6422.1,0.0,71.35 -2014-06-05 22:00:00,6034.8,0.0,69.49 -2014-06-05 23:00:00,5575.0,0.0,68.17 -2014-06-06 00:00:00,5106.5,0.0,66.7 -2014-06-06 01:00:00,4774.2,0.0,65.51 -2014-06-06 02:00:00,4564.2,0.0,64.0 -2014-06-06 03:00:00,4456.3,0.0,63.12 -2014-06-06 04:00:00,4458.8,0.0,63.0 -2014-06-06 05:00:00,4629.5,0.0,62.51 -2014-06-06 06:00:00,5167.7,0.0,61.67 -2014-06-06 07:00:00,5808.9,0.0,61.37 -2014-06-06 08:00:00,6304.0,0.0,62.12 -2014-06-06 09:00:00,6659.8,0.0,64.12 -2014-06-06 10:00:00,6838.5,0.0,66.0 -2014-06-06 11:00:00,6920.3,0.0,67.66 -2014-06-06 12:00:00,6952.8,0.0,68.31 -2014-06-06 13:00:00,6999.4,0.0,70.39 -2014-06-06 14:00:00,7023.2,0.0,71.34 -2014-06-06 15:00:00,7096.6,0.0,73.19 -2014-06-06 16:00:00,7121.0,0.0,73.83 -2014-06-06 17:00:00,7058.4,0.0,74.89 -2014-06-06 18:00:00,6737.5,0.0,74.49 -2014-06-06 19:00:00,6520.2,0.0,73.93 -2014-06-06 20:00:00,6377.8,0.0,73.42 -2014-06-06 21:00:00,6250.6,0.0,71.54 -2014-06-06 22:00:00,5956.9,0.0,69.99 -2014-06-06 23:00:00,5564.1,0.0,69.21 -2014-06-07 00:00:00,5148.1,0.0,68.11 -2014-06-07 01:00:00,4849.8,0.0,66.81 -2014-06-07 02:00:00,4634.7,0.0,65.42 -2014-06-07 03:00:00,4505.9,0.0,64.79 -2014-06-07 04:00:00,4443.3,0.0,63.54 -2014-06-07 05:00:00,4412.4,0.0,62.3 -2014-06-07 06:00:00,4580.7,0.0,62.58 -2014-06-07 07:00:00,4921.8,0.0,63.1 -2014-06-07 08:00:00,5328.0,0.0,65.53 -2014-06-07 09:00:00,5689.0,0.0,68.21 -2014-06-07 10:00:00,5991.7,0.0,70.03 -2014-06-07 11:00:00,6171.4,0.0,72.32 -2014-06-07 12:00:00,6262.7,0.0,74.41 -2014-06-07 13:00:00,6290.0,0.0,75.64 -2014-06-07 14:00:00,6345.9,0.0,77.29 -2014-06-07 15:00:00,6390.0,0.0,78.51 -2014-06-07 16:00:00,6447.6,0.0,80.02 -2014-06-07 17:00:00,6457.7,0.0,79.29 -2014-06-07 18:00:00,6405.9,0.0,79.23 -2014-06-07 19:00:00,6297.1,0.0,79.99 -2014-06-07 20:00:00,6234.5,0.0,77.2 -2014-06-07 21:00:00,6239.7,0.0,74.33 -2014-06-07 22:00:00,6046.1,0.0,74.21 -2014-06-07 23:00:00,5772.3,0.0,73.5 -2014-06-08 00:00:00,5441.7,0.0,72.39 -2014-06-08 01:00:00,5154.4,0.0,70.47 -2014-06-08 02:00:00,4931.0,0.0,70.2 -2014-06-08 03:00:00,4780.3,0.0,69.07 -2014-06-08 04:00:00,4698.1,0.0,68.03 -2014-06-08 05:00:00,4621.1,0.0,66.68 -2014-06-08 06:00:00,4731.2,0.0,66.4 -2014-06-08 07:00:00,5025.0,0.0,69.14 -2014-06-08 08:00:00,5408.1,0.0,71.12 -2014-06-08 09:00:00,5750.0,0.0,72.86 -2014-06-08 10:00:00,6145.3,0.0,74.26 -2014-06-08 11:00:00,6418.1,0.0,77.74 -2014-06-08 12:00:00,6561.0,0.0,81.89 -2014-06-08 13:00:00,6643.2,0.0,81.8 -2014-06-08 14:00:00,6701.1,0.0,82.64 -2014-06-08 15:00:00,6772.5,0.0,82.52 -2014-06-08 16:00:00,6760.4,0.0,81.13 -2014-06-08 17:00:00,6664.1,0.0,79.64 -2014-06-08 18:00:00,6508.6,0.0,78.11 -2014-06-08 19:00:00,6430.2,0.0,76.27 -2014-06-08 20:00:00,6478.5,0.0,74.4 -2014-06-08 21:00:00,6520.5,0.0,73.78 -2014-06-08 22:00:00,6303.6,0.0,73.21 -2014-06-08 23:00:00,5913.0,0.0,73.13 -2014-06-09 00:00:00,5543.8,0.0,72.6 -2014-06-09 01:00:00,5263.3,0.0,71.93 -2014-06-09 02:00:00,5069.0,0.0,71.01 -2014-06-09 03:00:00,4993.7,0.0,69.95 -2014-06-09 04:00:00,4988.2,0.0173,68.49 -2014-06-09 05:00:00,5184.6,0.1208,64.8 -2014-06-09 06:00:00,5730.7,0.1035,64.0 -2014-06-09 07:00:00,6351.9,0.1249,63.74 -2014-06-09 08:00:00,6788.9,0.0631,63.44 -2014-06-09 09:00:00,7080.0,0.1189,63.19 -2014-06-09 10:00:00,7232.7,0.1261,63.74 -2014-06-09 11:00:00,7309.4,0.0784,63.73 -2014-06-09 12:00:00,7372.8,0.0065,66.46 -2014-06-09 13:00:00,7409.3,0.0,66.24 -2014-06-09 14:00:00,7428.2,0.0,66.95 -2014-06-09 15:00:00,7422.8,0.0,68.18 -2014-06-09 16:00:00,7426.6,0.0,67.61 -2014-06-09 17:00:00,7345.8,0.0,67.29 -2014-06-09 18:00:00,7054.7,0.0,66.87 -2014-06-09 19:00:00,6838.7,0.0,65.97 -2014-06-09 20:00:00,6712.8,0.0,65.2 -2014-06-09 21:00:00,6523.2,0.0,65.2 -2014-06-09 22:00:00,6177.2,0.0,65.1 -2014-06-09 23:00:00,5705.4,0.0,65.22 -2014-06-10 00:00:00,5268.5,0.0,65.57 -2014-06-10 01:00:00,4985.4,0.0,65.34 -2014-06-10 02:00:00,4821.1,0.0,65.34 -2014-06-10 03:00:00,4739.3,0.0,65.34 -2014-06-10 04:00:00,4756.3,0.0,65.02 -2014-06-10 05:00:00,4966.6,0.0,64.53 -2014-06-10 06:00:00,5600.7,0.0,64.7 -2014-06-10 07:00:00,6305.8,0.0,64.9 -2014-06-10 08:00:00,6836.4,0.0,65.46 -2014-06-10 09:00:00,7194.4,0.0,67.52 -2014-06-10 10:00:00,7502.5,0.0,68.35 -2014-06-10 11:00:00,7679.8,0.0,71.44 -2014-06-10 12:00:00,7698.9,0.0,70.89 -2014-06-10 13:00:00,7720.5,0.0,70.51 -2014-06-10 14:00:00,7842.1,0.0,72.12 -2014-06-10 15:00:00,7950.2,0.0,73.07 -2014-06-10 16:00:00,8034.7,0.0,74.92 -2014-06-10 17:00:00,7958.1,0.0,75.01 -2014-06-10 18:00:00,7610.0,0.0,73.79 -2014-06-10 19:00:00,7371.8,0.0,74.43 -2014-06-10 20:00:00,7202.5,0.0,72.7 -2014-06-10 21:00:00,7071.4,0.0,71.73 -2014-06-10 22:00:00,6716.4,0.0,70.58 -2014-06-10 23:00:00,6187.6,0.0,69.99 -2014-06-11 00:00:00,5680.9,0.0,69.61 -2014-06-11 01:00:00,5360.0,0.0,68.41 -2014-06-11 02:00:00,5115.8,0.0,68.29 -2014-06-11 03:00:00,4945.2,0.0,65.97 -2014-06-11 04:00:00,4881.1,0.0,64.7 -2014-06-11 05:00:00,5049.6,0.0,64.7 -2014-06-11 06:00:00,5564.5,0.0,64.01 -2014-06-11 07:00:00,6181.1,0.0261,63.74 -2014-06-11 08:00:00,6593.5,0.0065,63.2 -2014-06-11 09:00:00,6831.3,0.0069,62.56 -2014-06-11 10:00:00,6927.2,0.0,62.56 -2014-06-11 11:00:00,6968.4,0.0,63.64 -2014-06-11 12:00:00,6991.2,0.0,64.8 -2014-06-11 13:00:00,7030.9,0.0,65.31 -2014-06-11 14:00:00,7042.5,0.0,67.41 -2014-06-11 15:00:00,7059.0,0.0,68.78 -2014-06-11 16:00:00,7079.5,0.0,67.87 -2014-06-11 17:00:00,7029.8,0.0,67.82 -2014-06-11 18:00:00,6713.5,0.0,67.63 -2014-06-11 19:00:00,6458.5,0.0,66.14 -2014-06-11 20:00:00,6365.5,0.0,64.9 -2014-06-11 21:00:00,6221.3,0.0,65.35 -2014-06-11 22:00:00,5876.6,0.0,64.61 -2014-06-11 23:00:00,5402.7,0.0,63.66 -2014-06-12 00:00:00,4969.2,0.0,61.88 -2014-06-12 01:00:00,4676.5,0.0,62.07 -2014-06-12 02:00:00,4501.8,0.0,61.88 -2014-06-12 03:00:00,4416.4,0.0,60.93 -2014-06-12 04:00:00,4421.4,0.0,60.88 -2014-06-12 05:00:00,4613.5,0.0,60.53 -2014-06-12 06:00:00,5183.4,0.0,60.2 -2014-06-12 07:00:00,5848.8,0.0,60.34 -2014-06-12 08:00:00,6332.5,0.0,61.2 -2014-06-12 09:00:00,6645.7,0.0065,62.09 -2014-06-12 10:00:00,6804.2,0.0,62.34 -2014-06-12 11:00:00,6900.1,0.0,62.39 -2014-06-12 12:00:00,6947.5,0.0,64.0 -2014-06-12 13:00:00,7049.3,0.0,65.24 -2014-06-12 14:00:00,7128.4,0.0,66.97 -2014-06-12 15:00:00,7188.4,0.0,68.85 -2014-06-12 16:00:00,7275.6,0.0,67.08 -2014-06-12 17:00:00,7257.5,0.0,72.54 -2014-06-12 18:00:00,6993.0,0.0,73.25 -2014-06-12 19:00:00,6831.8,0.0,72.52 -2014-06-12 20:00:00,6731.1,0.0035,69.61 -2014-06-12 21:00:00,6564.1,0.0,68.7 -2014-06-12 22:00:00,6213.8,0.0,68.47 -2014-06-12 23:00:00,5745.2,0.0069,67.44 -2014-06-13 00:00:00,5297.5,0.0,67.56 -2014-06-13 01:00:00,4985.7,0.0035,67.12 -2014-06-13 02:00:00,4792.0,0.0165,66.56 -2014-06-13 03:00:00,4706.9,0.0,66.61 -2014-06-13 04:00:00,4705.1,0.0065,66.12 -2014-06-13 05:00:00,4910.4,0.03,65.56 -2014-06-13 06:00:00,5479.2,0.0131,64.63 -2014-06-13 07:00:00,6152.1,0.0065,64.29 -2014-06-13 08:00:00,6639.8,0.0,64.24 -2014-06-13 09:00:00,6936.6,0.0727,64.46 -2014-06-13 10:00:00,7107.5,0.0957,65.22 -2014-06-13 11:00:00,7271.9,0.0165,65.36 -2014-06-13 12:00:00,7442.8,0.0165,67.04 -2014-06-13 13:00:00,7638.3,0.0,70.16 -2014-06-13 14:00:00,7768.8,0.0,73.08 -2014-06-13 15:00:00,7897.6,0.0,74.24 -2014-06-13 16:00:00,7964.6,0.0,73.85 -2014-06-13 17:00:00,7815.0,0.0,76.73 -2014-06-13 18:00:00,7390.3,0.09,70.15 -2014-06-13 19:00:00,7140.2,0.4116,68.85 -2014-06-13 20:00:00,6891.8,0.0949,69.19 -2014-06-13 21:00:00,6671.1,0.0261,68.95 -2014-06-13 22:00:00,6341.7,0.0,68.98 -2014-06-13 23:00:00,5954.6,0.0,69.39 -2014-06-14 00:00:00,5533.1,0.0,67.8 -2014-06-14 01:00:00,5215.4,0.0,68.24 -2014-06-14 02:00:00,5004.5,0.0,68.42 -2014-06-14 03:00:00,4878.2,0.0,68.79 -2014-06-14 04:00:00,4806.6,0.0,68.35 -2014-06-14 05:00:00,4770.6,0.0,68.35 -2014-06-14 06:00:00,4897.5,0.0,67.68 -2014-06-14 07:00:00,5195.3,0.0,67.2 -2014-06-14 08:00:00,5576.2,0.0,68.42 -2014-06-14 09:00:00,5964.0,0.0,70.17 -2014-06-14 10:00:00,6254.1,0.0,71.98 -2014-06-14 11:00:00,6381.4,0.0,72.66 -2014-06-14 12:00:00,6389.0,0.0,72.27 -2014-06-14 13:00:00,6325.4,0.0,72.1 -2014-06-14 14:00:00,6266.1,0.0,72.12 -2014-06-14 15:00:00,6184.5,0.0,72.33 -2014-06-14 16:00:00,6090.0,0.0,71.08 -2014-06-14 17:00:00,5971.5,0.0,69.93 -2014-06-14 18:00:00,5800.8,0.0,68.59 -2014-06-14 19:00:00,5654.3,0.0,67.05 -2014-06-14 20:00:00,5586.8,0.0,65.19 -2014-06-14 21:00:00,5589.7,0.0,63.44 -2014-06-14 22:00:00,5400.6,0.0,63.0 -2014-06-14 23:00:00,5116.2,0.0,62.19 -2014-06-15 00:00:00,4818.4,0.0,61.8 -2014-06-15 01:00:00,4574.0,0.0,61.49 -2014-06-15 02:00:00,4387.1,0.0,61.0 -2014-06-15 03:00:00,4277.3,0.0,60.69 -2014-06-15 04:00:00,4221.8,0.0,60.86 -2014-06-15 05:00:00,4175.0,0.0,61.0 -2014-06-15 06:00:00,4263.6,0.0,61.31 -2014-06-15 07:00:00,4498.9,0.0,62.24 -2014-06-15 08:00:00,4808.1,0.0,64.05 -2014-06-15 09:00:00,5123.7,0.0,66.39 -2014-06-15 10:00:00,5389.4,0.0,67.31 -2014-06-15 11:00:00,5576.4,0.0,69.44 -2014-06-15 12:00:00,5708.5,0.0,71.31 -2014-06-15 13:00:00,5780.0,0.0,73.98 -2014-06-15 14:00:00,5867.3,0.0,75.27 -2014-06-15 15:00:00,5948.2,0.0,77.34 -2014-06-15 16:00:00,6019.9,0.0,78.05 -2014-06-15 17:00:00,6053.6,0.0,78.68 -2014-06-15 18:00:00,6037.8,0.0,78.81 -2014-06-15 19:00:00,6002.5,0.0,78.49 -2014-06-15 20:00:00,6069.3,0.0,76.68 -2014-06-15 21:00:00,6157.8,0.0,75.21 -2014-06-15 22:00:00,5973.8,0.0,73.94 -2014-06-15 23:00:00,5647.6,0.0,72.97 -2014-06-16 00:00:00,5285.7,0.0,70.87 -2014-06-16 01:00:00,5010.5,0.0,69.7 -2014-06-16 02:00:00,4845.6,0.0,68.46 -2014-06-16 03:00:00,4756.1,0.0,67.34 -2014-06-16 04:00:00,4776.1,0.0,66.73 -2014-06-16 05:00:00,4970.0,0.0,64.53 -2014-06-16 06:00:00,5538.9,0.0,64.68 -2014-06-16 07:00:00,6211.8,0.0,66.28 -2014-06-16 08:00:00,6805.8,0.0,67.2 -2014-06-16 09:00:00,7220.4,0.0,69.57 -2014-06-16 10:00:00,7451.5,0.0,71.74 -2014-06-16 11:00:00,7589.1,0.0,72.27 -2014-06-16 12:00:00,7653.8,0.0,73.47 -2014-06-16 13:00:00,7690.4,0.0,75.24 -2014-06-16 14:00:00,7733.9,0.0,76.54 -2014-06-16 15:00:00,7800.6,0.0,76.25 -2014-06-16 16:00:00,7848.9,0.0,76.57 -2014-06-16 17:00:00,7739.4,0.0,75.8 -2014-06-16 18:00:00,7313.7,0.0,74.89 -2014-06-16 19:00:00,6996.5,0.0,73.1 -2014-06-16 20:00:00,6853.0,0.0,72.12 -2014-06-16 21:00:00,6755.3,0.0,71.35 -2014-06-16 22:00:00,6451.8,0.0,71.17 -2014-06-16 23:00:00,5977.6,0.0,70.81 -2014-06-17 00:00:00,5529.5,0.0,70.37 -2014-06-17 01:00:00,5251.7,0.0,70.49 -2014-06-17 02:00:00,5074.6,0.0,70.42 -2014-06-17 03:00:00,4993.5,0.0,70.3 -2014-06-17 04:00:00,5021.2,0.0,70.59 -2014-06-17 05:00:00,5266.4,0.0,70.59 -2014-06-17 06:00:00,5886.2,0.0,71.27 -2014-06-17 07:00:00,6630.3,0.0,71.47 -2014-06-17 08:00:00,7283.4,0.0,73.2 -2014-06-17 09:00:00,7759.1,0.0,76.65 -2014-06-17 10:00:00,8127.2,0.0,78.97 -2014-06-17 11:00:00,8402.4,0.0,80.51 -2014-06-17 12:00:00,8617.9,0.0,81.84 -2014-06-17 13:00:00,8821.2,0.0,82.51 -2014-06-17 14:00:00,8960.7,0.0,84.87 -2014-06-17 15:00:00,9097.4,0.0,85.59 -2014-06-17 16:00:00,9216.8,0.0,84.66 -2014-06-17 17:00:00,9162.1,0.0,83.72 -2014-06-17 18:00:00,8849.7,0.0,83.59 -2014-06-17 19:00:00,8575.1,0.0,82.17 -2014-06-17 20:00:00,8356.9,0.0,81.83 -2014-06-17 21:00:00,8259.5,0.0,80.96 -2014-06-17 22:00:00,7900.1,0.0,81.48 -2014-06-17 23:00:00,7379.0,0.0,83.04 -2014-06-18 00:00:00,6832.1,0.0,82.38 -2014-06-18 01:00:00,6474.2,0.0,81.57 -2014-06-18 02:00:00,6242.5,0.0,80.5 -2014-06-18 03:00:00,6161.0,0.0,79.7 -2014-06-18 04:00:00,6172.5,0.0,80.51 -2014-06-18 05:00:00,6381.2,0.0,80.4 -2014-06-18 06:00:00,6964.5,0.0,80.66 -2014-06-18 07:00:00,7691.5,0.0,81.18 -2014-06-18 08:00:00,8295.8,0.0,81.25 -2014-06-18 09:00:00,8708.7,0.0,80.83 -2014-06-18 10:00:00,9000.1,0.0,82.17 -2014-06-18 11:00:00,9203.6,0.0,83.22 -2014-06-18 12:00:00,9299.6,0.0,84.62 -2014-06-18 13:00:00,9446.7,0.0,84.94 -2014-06-18 14:00:00,9502.9,0.0,85.65 -2014-06-18 15:00:00,9586.8,0.0,86.87 -2014-06-18 16:00:00,9665.1,0.0,86.66 -2014-06-18 17:00:00,9606.7,0.0,86.81 -2014-06-18 18:00:00,9287.4,0.0,87.07 -2014-06-18 19:00:00,9006.6,0.0,87.47 -2014-06-18 20:00:00,8800.6,0.0,85.72 -2014-06-18 21:00:00,8697.8,0.0,83.64 -2014-06-18 22:00:00,8281.1,0.0,82.81 -2014-06-18 23:00:00,7644.8,0.0,81.41 -2014-06-19 00:00:00,7025.2,0.0,78.16 -2014-06-19 01:00:00,6605.4,0.0,76.48 -2014-06-19 02:00:00,6335.7,0.0,76.36 -2014-06-19 03:00:00,6171.5,0.0,75.64 -2014-06-19 04:00:00,6129.1,0.0,74.63 -2014-06-19 05:00:00,6274.7,0.0,73.1 -2014-06-19 06:00:00,6745.8,0.0,72.57 -2014-06-19 07:00:00,7277.5,0.0035,72.11 -2014-06-19 08:00:00,7616.8,0.0035,70.75 -2014-06-19 09:00:00,7838.5,0.0,69.11 -2014-06-19 10:00:00,7966.5,0.0,69.02 -2014-06-19 11:00:00,8120.0,0.0,70.13 -2014-06-19 12:00:00,8211.1,0.0,72.12 -2014-06-19 13:00:00,8248.9,0.0,72.96 -2014-06-19 14:00:00,8214.9,0.0,73.26 -2014-06-19 15:00:00,8214.6,0.0035,72.12 -2014-06-19 16:00:00,8310.7,0.0,74.32 -2014-06-19 17:00:00,8344.3,0.0,75.12 -2014-06-19 18:00:00,8110.0,0.0,76.86 -2014-06-19 19:00:00,7886.4,0.0,76.66 -2014-06-19 20:00:00,7704.6,0.0,76.05 -2014-06-19 21:00:00,7633.4,0.0,74.86 -2014-06-19 22:00:00,7294.9,0.0,74.03 -2014-06-19 23:00:00,6776.6,0.0,72.88 -2014-06-20 00:00:00,6223.4,0.0,72.03 -2014-06-20 01:00:00,5807.9,0.0,71.35 -2014-06-20 02:00:00,5466.7,0.0,69.82 -2014-06-20 03:00:00,5262.1,0.0,68.96 -2014-06-20 04:00:00,5189.3,0.0,67.46 -2014-06-20 05:00:00,5299.6,0.0,66.16 -2014-06-20 06:00:00,5820.1,0.0,64.99 -2014-06-20 07:00:00,6461.5,0.0,65.23 -2014-06-20 08:00:00,6983.7,0.0,67.42 -2014-06-20 09:00:00,7330.0,0.0,69.48 -2014-06-20 10:00:00,7532.7,0.0,72.0 -2014-06-20 11:00:00,7641.7,0.0,73.31 -2014-06-20 12:00:00,7709.3,0.0,74.85 -2014-06-20 13:00:00,7791.0,0.0,75.66 -2014-06-20 14:00:00,7848.0,0.0,77.19 -2014-06-20 15:00:00,7917.1,0.0,78.0 -2014-06-20 16:00:00,7943.2,0.0,78.54 -2014-06-20 17:00:00,7855.1,0.0,79.03 -2014-06-20 18:00:00,7469.6,0.0,79.18 -2014-06-20 19:00:00,7127.8,0.0,77.81 -2014-06-20 20:00:00,6935.4,0.0,76.09 -2014-06-20 21:00:00,6821.5,0.0,75.09 -2014-06-20 22:00:00,6519.4,0.0,74.33 -2014-06-20 23:00:00,6144.5,0.0,72.55 -2014-06-21 00:00:00,5706.3,0.0,71.25 -2014-06-21 01:00:00,5363.5,0.0,70.55 -2014-06-21 02:00:00,5105.5,0.0,68.91 -2014-06-21 03:00:00,4913.2,0.0,66.81 -2014-06-21 04:00:00,4808.3,0.0,65.02 -2014-06-21 05:00:00,4740.5,0.0,64.04 -2014-06-21 06:00:00,4890.4,0.0,63.86 -2014-06-21 07:00:00,5202.3,0.0,63.87 -2014-06-21 08:00:00,5580.5,0.0,65.66 -2014-06-21 09:00:00,5927.4,0.0,67.63 -2014-06-21 10:00:00,6178.4,0.0,68.75 -2014-06-21 11:00:00,6330.7,0.0,70.43 -2014-06-21 12:00:00,6399.7,0.0,70.29 -2014-06-21 13:00:00,6393.2,0.0,71.48 -2014-06-21 14:00:00,6395.8,0.0,71.97 -2014-06-21 15:00:00,6387.7,0.0,73.57 -2014-06-21 16:00:00,6377.1,0.0,72.69 -2014-06-21 17:00:00,6323.8,0.0,72.9 -2014-06-21 18:00:00,6244.6,0.0,72.39 -2014-06-21 19:00:00,6120.6,0.0,72.68 -2014-06-21 20:00:00,6020.6,0.0,71.1 -2014-06-21 21:00:00,6039.7,0.0,69.59 -2014-06-21 22:00:00,5885.9,0.0,67.73 -2014-06-21 23:00:00,5629.8,0.0,67.19 -2014-06-22 00:00:00,5353.8,0.0,66.47 -2014-06-22 01:00:00,5106.1,0.0,66.67 -2014-06-22 02:00:00,4925.2,0.0,66.7 -2014-06-22 03:00:00,4798.6,0.0,66.4 -2014-06-22 04:00:00,4721.4,0.0,65.36 -2014-06-22 05:00:00,4669.8,0.0,64.82 -2014-06-22 06:00:00,4765.1,0.0,64.73 -2014-06-22 07:00:00,4964.7,0.0,65.77 -2014-06-22 08:00:00,5251.2,0.0,67.41 -2014-06-22 09:00:00,5583.0,0.0,68.85 -2014-06-22 10:00:00,5906.3,0.0,70.59 -2014-06-22 11:00:00,6115.2,0.0,72.1 -2014-06-22 12:00:00,6252.0,0.0,74.25 -2014-06-22 13:00:00,6294.8,0.0,75.0 -2014-06-22 14:00:00,6328.7,0.0,75.7 -2014-06-22 15:00:00,6348.7,0.0,75.25 -2014-06-22 16:00:00,6344.3,0.0,75.78 -2014-06-22 17:00:00,6343.5,0.0,75.05 -2014-06-22 18:00:00,6287.2,0.0,74.38 -2014-06-22 19:00:00,6157.2,0.0,73.46 -2014-06-22 20:00:00,6131.0,0.0,71.63 -2014-06-22 21:00:00,6216.4,0.0,70.12 -2014-06-22 22:00:00,6044.5,0.0,68.93 -2014-06-22 23:00:00,5718.7,0.0,69.21 -2014-06-23 00:00:00,5384.8,0.0,68.69 -2014-06-23 01:00:00,5140.0,0.0,68.01 -2014-06-23 02:00:00,4971.7,0.0,67.33 -2014-06-23 03:00:00,4908.1,0.0,67.01 -2014-06-23 04:00:00,4938.3,0.0,66.33 -2014-06-23 05:00:00,5160.5,0.0,65.77 -2014-06-23 06:00:00,5745.7,0.0,65.53 -2014-06-23 07:00:00,6467.9,0.0,67.77 -2014-06-23 08:00:00,7075.0,0.0,70.9 -2014-06-23 09:00:00,7496.9,0.0,72.78 -2014-06-23 10:00:00,7763.2,0.0,75.72 -2014-06-23 11:00:00,7937.2,0.0,77.39 -2014-06-23 12:00:00,8072.5,0.0,78.46 -2014-06-23 13:00:00,8166.6,0.0,79.46 -2014-06-23 14:00:00,8202.5,0.0,79.22 -2014-06-23 15:00:00,8202.0,0.0,77.99 -2014-06-23 16:00:00,8135.6,0.0,78.13 -2014-06-23 17:00:00,7988.1,0.0,76.54 -2014-06-23 18:00:00,7544.1,0.0,76.13 -2014-06-23 19:00:00,7208.3,0.0,75.03 -2014-06-23 20:00:00,7041.4,0.0,73.92 -2014-06-23 21:00:00,6988.5,0.0,72.56 -2014-06-23 22:00:00,6675.7,0.0,71.49 -2014-06-23 23:00:00,6192.3,0.0,71.29 -2014-06-24 00:00:00,5713.3,0.0,70.74 -2014-06-24 01:00:00,5372.2,0.0,70.05 -2014-06-24 02:00:00,5165.5,0.0,69.4 -2014-06-24 03:00:00,5062.2,0.0,69.21 -2014-06-24 04:00:00,5073.7,0.0,68.17 -2014-06-24 05:00:00,5286.0,0.0,68.21 -2014-06-24 06:00:00,5909.8,0.0,67.89 -2014-06-24 07:00:00,6636.5,0.0,68.81 -2014-06-24 08:00:00,7206.6,0.0,70.56 -2014-06-24 09:00:00,7582.2,0.0,72.78 -2014-06-24 10:00:00,7807.5,0.0,73.76 -2014-06-24 11:00:00,7972.3,0.0,75.86 -2014-06-24 12:00:00,8119.8,0.0,76.92 -2014-06-24 13:00:00,8196.2,0.0,77.8 -2014-06-24 14:00:00,8203.5,0.0,76.95 -2014-06-24 15:00:00,8265.1,0.0,77.77 -2014-06-24 16:00:00,8327.8,0.0,77.25 -2014-06-24 17:00:00,8206.2,0.0,77.2 -2014-06-24 18:00:00,7816.9,0.0,76.04 -2014-06-24 19:00:00,7478.3,0.0,74.98 -2014-06-24 20:00:00,7247.8,0.0,73.99 -2014-06-24 21:00:00,7147.8,0.0,72.68 -2014-06-24 22:00:00,6788.1,0.0,71.81 -2014-06-24 23:00:00,6281.5,0.0,71.54 -2014-06-25 00:00:00,5835.3,0.0,71.57 -2014-06-25 01:00:00,5547.9,0.0,71.39 -2014-06-25 02:00:00,5371.3,0.0,70.73 -2014-06-25 03:00:00,5304.9,0.0,71.25 -2014-06-25 04:00:00,5332.0,0.0,70.73 -2014-06-25 05:00:00,5567.1,0.0,70.53 -2014-06-25 06:00:00,6218.8,0.0,70.59 -2014-06-25 07:00:00,6949.3,0.0,70.59 -2014-06-25 08:00:00,7507.4,0.0,71.74 -2014-06-25 09:00:00,7903.8,0.0,73.2 -2014-06-25 10:00:00,8203.0,0.0,74.48 -2014-06-25 11:00:00,8478.8,0.0,76.69 -2014-06-25 12:00:00,8719.7,0.0,79.21 -2014-06-25 13:00:00,8907.2,0.0,80.2 -2014-06-25 14:00:00,9078.4,0.0,81.5 -2014-06-25 15:00:00,9197.0,0.0,82.15 -2014-06-25 16:00:00,9175.7,0.0,80.91 -2014-06-25 17:00:00,9064.2,0.0,80.13 -2014-06-25 18:00:00,8635.0,0.0,78.84 -2014-06-25 19:00:00,8314.0,0.0,77.39 -2014-06-25 20:00:00,8153.1,0.0,75.75 -2014-06-25 21:00:00,8036.8,0.0,75.31 -2014-06-25 22:00:00,7631.8,0.0,75.42 -2014-06-25 23:00:00,7110.0,0.0,75.1 -2014-06-26 00:00:00,6536.5,0.0416,73.58 -2014-06-26 01:00:00,6153.4,0.0035,73.21 -2014-06-26 02:00:00,5901.6,0.0335,73.01 -2014-06-26 03:00:00,5787.4,0.0231,71.99 -2014-06-26 04:00:00,5786.4,0.01,72.2 -2014-06-26 05:00:00,5980.0,0.0,71.59 -2014-06-26 06:00:00,6564.7,0.0,71.94 -2014-06-26 07:00:00,7295.1,0.0,72.27 -2014-06-26 08:00:00,7883.0,0.0,73.34 -2014-06-26 09:00:00,8330.6,0.0,75.87 -2014-06-26 10:00:00,8590.2,0.0,77.86 -2014-06-26 11:00:00,8760.3,0.0,80.02 -2014-06-26 12:00:00,8924.2,0.0,80.94 -2014-06-26 13:00:00,9061.7,0.0,81.61 -2014-06-26 14:00:00,9141.1,0.0,83.48 -2014-06-26 15:00:00,9157.1,0.0,84.11 -2014-06-26 16:00:00,9093.3,0.0,84.05 -2014-06-26 17:00:00,9064.9,0.0,84.38 -2014-06-26 18:00:00,8713.8,0.0,84.14 -2014-06-26 19:00:00,8434.1,0.0,83.1 -2014-06-26 20:00:00,8254.9,0.0,82.3 -2014-06-26 21:00:00,8140.9,0.0,80.63 -2014-06-26 22:00:00,7736.5,0.0,79.42 -2014-06-26 23:00:00,7147.7,0.0,75.39 -2014-06-27 00:00:00,6544.4,0.0,71.76 -2014-06-27 01:00:00,6128.3,0.0,71.19 -2014-06-27 02:00:00,5838.8,0.0,71.12 -2014-06-27 03:00:00,5666.8,0.0,70.42 -2014-06-27 04:00:00,5623.4,0.0,69.76 -2014-06-27 05:00:00,5781.3,0.0,69.46 -2014-06-27 06:00:00,6261.2,0.0,69.02 -2014-06-27 07:00:00,6875.4,0.0,69.02 -2014-06-27 08:00:00,7379.4,0.0,70.15 -2014-06-27 09:00:00,7794.6,0.0,72.07 -2014-06-27 10:00:00,8026.0,0.0,74.02 -2014-06-27 11:00:00,8187.8,0.0,75.68 -2014-06-27 12:00:00,8275.7,0.0,75.85 -2014-06-27 13:00:00,8345.4,0.0,76.97 -2014-06-27 14:00:00,8410.6,0.0,78.46 -2014-06-27 15:00:00,8411.2,0.0,79.08 -2014-06-27 16:00:00,8379.6,0.0,78.68 -2014-06-27 17:00:00,8236.1,0.0,79.13 -2014-06-27 18:00:00,7789.1,0.0,77.89 -2014-06-27 19:00:00,7392.3,0.0,76.03 -2014-06-27 20:00:00,7117.0,0.0,73.68 -2014-06-27 21:00:00,6980.6,0.0,72.24 -2014-06-27 22:00:00,6691.6,0.0,70.96 -2014-06-27 23:00:00,6292.6,0.0,69.79 -2014-06-28 00:00:00,5880.0,0.0,69.6 -2014-06-28 01:00:00,5577.0,0.0,69.21 -2014-06-28 02:00:00,5350.6,0.0,68.91 -2014-06-28 03:00:00,5204.3,0.0,68.09 -2014-06-28 04:00:00,5115.6,0.0,67.68 -2014-06-28 05:00:00,5067.9,0.0,67.26 -2014-06-28 06:00:00,5244.1,0.0,67.07 -2014-06-28 07:00:00,5592.8,0.0,68.84 -2014-06-28 08:00:00,6028.6,0.0,72.09 -2014-06-28 09:00:00,6440.1,0.0,74.88 -2014-06-28 10:00:00,6823.5,0.0,77.33 -2014-06-28 11:00:00,7081.5,0.0,79.68 -2014-06-28 12:00:00,7207.0,0.0,81.09 -2014-06-28 13:00:00,7237.0,0.0,83.79 -2014-06-28 14:00:00,7243.7,0.0,85.03 -2014-06-28 15:00:00,7286.4,0.0,86.27 -2014-06-28 16:00:00,7274.8,0.0,84.08 -2014-06-28 17:00:00,7227.5,0.0,82.2 -2014-06-28 18:00:00,7003.1,0.0,79.14 -2014-06-28 19:00:00,6756.8,0.0,77.14 -2014-06-28 20:00:00,6640.5,0.0,74.73 -2014-06-28 21:00:00,6620.4,0.0,72.85 -2014-06-28 22:00:00,6422.2,0.0,71.79 -2014-06-28 23:00:00,6155.9,0.0,71.71 -2014-06-29 00:00:00,5841.2,0.0,71.26 -2014-06-29 01:00:00,5544.6,0.0,70.89 -2014-06-29 02:00:00,5309.9,0.0,70.28 -2014-06-29 03:00:00,5181.7,0.0,69.43 -2014-06-29 04:00:00,5090.2,0.0,68.7 -2014-06-29 05:00:00,5018.1,0.0,68.58 -2014-06-29 06:00:00,5107.0,0.0,68.51 -2014-06-29 07:00:00,5380.7,0.0,70.15 -2014-06-29 08:00:00,5770.8,0.0,72.6 -2014-06-29 09:00:00,6185.7,0.0,74.47 -2014-06-29 10:00:00,6536.4,0.0,76.37 -2014-06-29 11:00:00,6770.8,0.0,77.4 -2014-06-29 12:00:00,6923.3,0.0,78.41 -2014-06-29 13:00:00,6990.2,0.0,78.15 -2014-06-29 14:00:00,6987.5,0.0,79.12 -2014-06-29 15:00:00,6965.7,0.0,78.84 -2014-06-29 16:00:00,6944.7,0.0,78.54 -2014-06-29 17:00:00,6888.3,0.0,77.51 -2014-06-29 18:00:00,6784.0,0.0,76.53 -2014-06-29 19:00:00,6641.1,0.0,75.42 -2014-06-29 20:00:00,6595.6,0.0,74.56 -2014-06-29 21:00:00,6659.6,0.0,73.49 -2014-06-29 22:00:00,6500.7,0.0,73.44 -2014-06-29 23:00:00,6200.9,0.0,72.91 -2014-06-30 00:00:00,5889.4,0.0,72.57 -2014-06-30 01:00:00,5616.8,0.0,71.33 -2014-06-30 02:00:00,5423.1,0.0,70.4 -2014-06-30 03:00:00,5353.7,0.0,70.08 -2014-06-30 04:00:00,5396.9,0.0,68.89 -2014-06-30 05:00:00,5612.5,0.0,68.59 -2014-06-30 06:00:00,6171.7,0.0,68.21 -2014-06-30 07:00:00,6859.3,0.0,70.08 -2014-06-30 08:00:00,7424.0,0.0,71.09 -2014-06-30 09:00:00,7916.9,0.0,73.83 -2014-06-30 10:00:00,8243.5,0.0,75.81 -2014-06-30 11:00:00,8450.7,0.0,78.99 -2014-06-30 12:00:00,8581.7,0.0,80.54 -2014-06-30 13:00:00,8696.0,0.0,80.68 -2014-06-30 14:00:00,8827.8,0.0,80.65 -2014-06-30 15:00:00,8910.9,0.0,80.91 -2014-06-30 16:00:00,8952.1,0.0,80.94 -2014-06-30 17:00:00,8824.0,0.0,80.32 -2014-06-30 18:00:00,8397.8,0.0,79.83 -2014-06-30 19:00:00,8088.2,0.0,78.22 -2014-06-30 20:00:00,7915.2,0.0,76.61 -2014-06-30 21:00:00,7832.9,0.0,76.13 -2014-06-30 22:00:00,7541.7,0.0,75.74 -2014-06-30 23:00:00,7055.8,0.0,74.91 -2014-07-01 00:00:00,6525.2,0.0,75.06 -2014-07-01 01:00:00,6141.4,0.0,75.1 -2014-07-01 02:00:00,5906.3,0.0,74.44 -2014-07-01 03:00:00,5783.8,0.0,73.93 -2014-07-01 04:00:00,5791.7,0.0,72.94 -2014-07-01 05:00:00,5993.1,0.0,72.2 -2014-07-01 06:00:00,6575.0,0.0,72.2 -2014-07-01 07:00:00,7254.6,0.0,73.27 -2014-07-01 08:00:00,7815.0,0.0,74.62 -2014-07-01 09:00:00,8350.7,0.0,76.18 -2014-07-01 10:00:00,8746.1,0.0,78.71 -2014-07-01 11:00:00,9074.7,0.0,81.43 -2014-07-01 12:00:00,9319.2,0.0,83.7 -2014-07-01 13:00:00,9491.8,0.0,84.46 -2014-07-01 14:00:00,9590.6,0.0,85.65 -2014-07-01 15:00:00,9603.7,0.0,85.11 -2014-07-01 16:00:00,9629.0,0.0,84.5 -2014-07-01 17:00:00,9558.8,0.0,83.78 -2014-07-01 18:00:00,9158.8,0.0,84.08 -2014-07-01 19:00:00,8854.4,0.0,83.5 -2014-07-01 20:00:00,8645.7,0.0,81.77 -2014-07-01 21:00:00,8509.2,0.0,81.18 -2014-07-01 22:00:00,8100.4,0.0,81.37 -2014-07-01 23:00:00,7546.4,0.0,78.88 -2014-07-02 00:00:00,7002.4,0.0,77.99 -2014-07-02 01:00:00,6615.7,0.0,77.42 -2014-07-02 02:00:00,6371.6,0.0,77.3 -2014-07-02 03:00:00,6262.4,0.0,77.11 -2014-07-02 04:00:00,6252.8,0.0,76.72 -2014-07-02 05:00:00,6444.2,0.0,76.25 -2014-07-02 06:00:00,6995.1,0.0,76.06 -2014-07-02 07:00:00,7750.9,0.0,76.87 -2014-07-02 08:00:00,8438.2,0.0,78.17 -2014-07-02 09:00:00,8965.4,0.0,79.29 -2014-07-02 10:00:00,9382.1,0.0,81.69 -2014-07-02 11:00:00,9696.3,0.0,84.32 -2014-07-02 12:00:00,9849.3,0.0,85.74 -2014-07-02 13:00:00,9970.1,0.0,86.02 -2014-07-02 14:00:00,10053.9,0.0,86.73 -2014-07-02 15:00:00,10106.1,0.0,87.89 -2014-07-02 16:00:00,10133.2,0.0035,86.06 -2014-07-02 17:00:00,9940.4,0.0,84.28 -2014-07-02 18:00:00,9351.1,0.1899,78.1 -2014-07-02 19:00:00,8945.1,0.0273,77.05 -2014-07-02 20:00:00,8593.7,0.1768,73.43 -2014-07-02 21:00:00,8418.1,0.0104,74.2 -2014-07-02 22:00:00,7996.0,0.03,73.65 -2014-07-02 23:00:00,7461.3,0.0496,73.98 -2014-07-03 00:00:00,6935.9,0.0,73.66 -2014-07-03 01:00:00,6604.1,0.0,73.66 -2014-07-03 02:00:00,6375.3,0.0,74.08 -2014-07-03 03:00:00,6258.9,0.0,73.21 -2014-07-03 04:00:00,6254.6,0.0,74.08 -2014-07-03 05:00:00,6457.0,0.01,73.91 -2014-07-03 06:00:00,6979.5,0.01,73.45 -2014-07-03 07:00:00,7648.4,0.0,74.38 -2014-07-03 08:00:00,8248.9,0.0,75.76 -2014-07-03 09:00:00,8767.0,0.0,78.2 -2014-07-03 10:00:00,9116.0,0.0,79.91 -2014-07-03 11:00:00,9382.0,0.0,81.02 -2014-07-03 12:00:00,9558.7,0.0,83.51 -2014-07-03 13:00:00,9660.3,0.0,83.45 -2014-07-03 14:00:00,9741.6,0.0,85.88 -2014-07-03 15:00:00,9783.4,0.0,85.59 -2014-07-03 16:00:00,9781.5,0.0,85.91 -2014-07-03 17:00:00,9576.0,0.0,84.56 -2014-07-03 18:00:00,9096.5,0.0,81.93 -2014-07-03 19:00:00,8775.6,0.01,80.8 -2014-07-03 20:00:00,8340.8,0.4022,74.79 -2014-07-03 21:00:00,7852.7,0.2396,70.35 -2014-07-03 22:00:00,7494.3,0.1257,71.42 -2014-07-03 23:00:00,7062.0,0.0,71.3 -2014-07-04 00:00:00,6612.5,0.0,71.91 -2014-07-04 01:00:00,6288.9,0.0,71.91 -2014-07-04 02:00:00,6051.2,0.0,71.91 -2014-07-04 03:00:00,5908.3,0.0035,71.42 -2014-07-04 04:00:00,5839.4,0.0,71.62 -2014-07-04 05:00:00,5841.5,0.0,71.91 -2014-07-04 06:00:00,5980.8,0.0,71.79 -2014-07-04 07:00:00,6191.9,0.0,72.11 -2014-07-04 08:00:00,6330.7,0.0,72.72 -2014-07-04 09:00:00,6460.2,0.0,71.52 -2014-07-04 10:00:00,6644.1,0.0,71.93 -2014-07-04 11:00:00,6751.7,0.0,73.67 -2014-07-04 12:00:00,6703.1,0.0,73.65 -2014-07-04 13:00:00,6562.0,0.0131,71.76 -2014-07-04 14:00:00,6418.8,0.0104,69.93 -2014-07-04 15:00:00,6291.9,0.0231,67.6 -2014-07-04 16:00:00,6175.2,0.0069,67.22 -2014-07-04 17:00:00,6141.8,0.0069,66.74 -2014-07-04 18:00:00,6083.2,0.0,70.32 -2014-07-04 19:00:00,5979.6,0.0,72.0 -2014-07-04 20:00:00,5901.4,0.0,72.42 -2014-07-04 21:00:00,5821.5,0.0,71.17 -2014-07-04 22:00:00,5640.3,0.0,69.86 -2014-07-04 23:00:00,5443.5,0.0,69.05 -2014-07-05 00:00:00,5152.2,0.0,68.31 -2014-07-05 01:00:00,4906.6,0.0,67.31 -2014-07-05 02:00:00,4731.1,0.0,66.86 -2014-07-05 03:00:00,4619.9,0.0,66.32 -2014-07-05 04:00:00,4555.1,0.0,65.86 -2014-07-05 05:00:00,4519.9,0.0,65.0 -2014-07-05 06:00:00,4644.8,0.0,64.88 -2014-07-05 07:00:00,4941.5,0.0,65.19 -2014-07-05 08:00:00,5278.3,0.0,66.61 -2014-07-05 09:00:00,5609.5,0.0,68.19 -2014-07-05 10:00:00,5853.9,0.0,71.34 -2014-07-05 11:00:00,6008.4,0.0,73.24 -2014-07-05 12:00:00,6091.4,0.0,74.66 -2014-07-05 13:00:00,6127.1,0.0,75.98 -2014-07-05 14:00:00,6176.5,0.0,77.54 -2014-07-05 15:00:00,6241.7,0.0,79.4 -2014-07-05 16:00:00,6310.4,0.0,79.71 -2014-07-05 17:00:00,6345.4,0.0,80.72 -2014-07-05 18:00:00,6313.4,0.0,81.13 -2014-07-05 19:00:00,6224.3,0.0,80.84 -2014-07-05 20:00:00,6161.5,0.0,80.06 -2014-07-05 21:00:00,6192.8,0.0,77.99 -2014-07-05 22:00:00,6051.5,0.0,77.24 -2014-07-05 23:00:00,5811.8,0.0,75.69 -2014-07-06 00:00:00,5530.6,0.0,74.55 -2014-07-06 01:00:00,5276.0,0.0,73.36 -2014-07-06 02:00:00,5063.6,0.0,71.66 -2014-07-06 03:00:00,4915.6,0.0,70.41 -2014-07-06 04:00:00,4815.3,0.0,69.34 -2014-07-06 05:00:00,4743.0,0.0,67.77 -2014-07-06 06:00:00,4811.5,0.0,67.52 -2014-07-06 07:00:00,5032.7,0.0,68.09 -2014-07-06 08:00:00,5373.5,0.0,69.96 -2014-07-06 09:00:00,5725.4,0.0,73.16 -2014-07-06 10:00:00,6067.8,0.0,75.64 -2014-07-06 11:00:00,6316.9,0.0,80.69 -2014-07-06 12:00:00,6473.4,0.0,83.35 -2014-07-06 13:00:00,6579.4,0.0,82.2 -2014-07-06 14:00:00,6678.1,0.0,82.66 -2014-07-06 15:00:00,6792.8,0.0,82.89 -2014-07-06 16:00:00,6889.7,0.0,83.97 -2014-07-06 17:00:00,6942.0,0.0,83.7 -2014-07-06 18:00:00,6907.5,0.0,83.85 -2014-07-06 19:00:00,6828.9,0.0,81.78 -2014-07-06 20:00:00,6832.9,0.0,81.18 -2014-07-06 21:00:00,6950.3,0.0,79.98 -2014-07-06 22:00:00,6831.8,0.0,78.12 -2014-07-06 23:00:00,6510.8,0.0,76.23 -2014-07-07 00:00:00,6197.2,0.0,74.87 -2014-07-07 01:00:00,5954.2,0.0,74.88 -2014-07-07 02:00:00,5770.8,0.0,74.08 -2014-07-07 03:00:00,5683.1,0.0,73.59 -2014-07-07 04:00:00,5711.5,0.0,73.53 -2014-07-07 05:00:00,5919.9,0.0,73.27 -2014-07-07 06:00:00,6400.3,0.0,72.87 -2014-07-07 07:00:00,7046.3,0.0,73.41 -2014-07-07 08:00:00,7707.5,0.0,74.46 -2014-07-07 09:00:00,8216.6,0.0,78.39 -2014-07-07 10:00:00,8607.7,0.0,81.39 -2014-07-07 11:00:00,8881.9,0.0,82.77 -2014-07-07 12:00:00,9084.2,0.0,84.32 -2014-07-07 13:00:00,9249.1,0.0,85.81 -2014-07-07 14:00:00,9421.0,0.0,87.91 -2014-07-07 15:00:00,9590.2,0.0,88.45 -2014-07-07 16:00:00,9706.3,0.0,88.8 -2014-07-07 17:00:00,9686.5,0.0,89.11 -2014-07-07 18:00:00,9382.9,0.0,88.97 -2014-07-07 19:00:00,9109.8,0.0,88.3 -2014-07-07 20:00:00,8909.4,0.0,87.58 -2014-07-07 21:00:00,8794.4,0.0,86.44 -2014-07-07 22:00:00,8423.9,0.0,85.04 -2014-07-07 23:00:00,7891.7,0.0,83.64 -2014-07-08 00:00:00,7342.1,0.0,83.17 -2014-07-08 01:00:00,6760.2,0.0277,78.15 -2014-07-08 02:00:00,6501.2,0.0304,73.23 -2014-07-08 03:00:00,6374.5,0.0065,74.57 -2014-07-08 04:00:00,6366.4,0.0,74.88 -2014-07-08 05:00:00,6526.9,0.0,74.43 -2014-07-08 06:00:00,7056.1,0.0,74.5 -2014-07-08 07:00:00,7804.2,0.0,75.6 -2014-07-08 08:00:00,8333.6,0.0,77.95 -2014-07-08 09:00:00,8813.5,0.0,79.28 -2014-07-08 10:00:00,9221.0,0.0,82.61 -2014-07-08 11:00:00,9457.7,0.0,85.18 -2014-07-08 12:00:00,9707.8,0.0,87.99 -2014-07-08 13:00:00,9865.0,0.0,88.66 -2014-07-08 14:00:00,9953.7,0.0,89.44 -2014-07-08 15:00:00,10062.4,0.0,88.89 -2014-07-08 16:00:00,10144.6,0.0,88.56 -2014-07-08 17:00:00,10071.5,0.0,89.36 -2014-07-08 18:00:00,9628.6,0.0,88.03 -2014-07-08 19:00:00,9321.2,0.0,85.04 -2014-07-08 20:00:00,9129.6,0.0,82.79 -2014-07-08 21:00:00,9025.4,0.0,82.68 -2014-07-08 22:00:00,8474.9,0.0,80.66 -2014-07-08 23:00:00,7715.7,0.0,76.39 -2014-07-09 00:00:00,7110.0,0.0,75.09 -2014-07-09 01:00:00,6689.1,0.0,74.39 -2014-07-09 02:00:00,6407.3,0.0,73.71 -2014-07-09 03:00:00,6267.0,0.0,72.66 -2014-07-09 04:00:00,6233.1,0.0,72.36 -2014-07-09 05:00:00,6404.4,0.0,72.43 -2014-07-09 06:00:00,6912.8,0.0,72.57 -2014-07-09 07:00:00,7566.6,0.0,72.95 -2014-07-09 08:00:00,8189.7,0.0,74.2 -2014-07-09 09:00:00,8653.8,0.0,77.56 -2014-07-09 10:00:00,8892.3,0.0,79.47 -2014-07-09 11:00:00,9054.8,0.0,81.01 -2014-07-09 12:00:00,9168.4,0.0,82.81 -2014-07-09 13:00:00,9343.3,0.0,84.42 -2014-07-09 14:00:00,9462.9,0.0,85.0 -2014-07-09 15:00:00,9605.3,0.0,84.4 -2014-07-09 16:00:00,9694.8,0.0,84.1 -2014-07-09 17:00:00,9550.6,0.0,82.82 -2014-07-09 18:00:00,9112.4,0.0,81.66 -2014-07-09 19:00:00,8827.9,0.0,81.52 -2014-07-09 20:00:00,8580.6,0.0,80.54 -2014-07-09 21:00:00,8498.8,0.0,78.56 -2014-07-09 22:00:00,8170.0,0.0,79.29 -2014-07-09 23:00:00,7623.2,0.0,77.62 -2014-07-10 00:00:00,7080.5,0.0,76.76 -2014-07-10 01:00:00,6647.4,0.0,76.4 -2014-07-10 02:00:00,6351.1,0.0,75.18 -2014-07-10 03:00:00,6196.5,0.0,74.67 -2014-07-10 04:00:00,6137.4,0.0,73.52 -2014-07-10 05:00:00,6277.1,0.0,72.41 -2014-07-10 06:00:00,6733.9,0.0,71.69 -2014-07-10 07:00:00,7333.4,0.0,71.4 -2014-07-10 08:00:00,7781.5,0.0,72.15 -2014-07-10 09:00:00,8089.3,0.0,72.46 -2014-07-10 10:00:00,8291.4,0.0,73.48 -2014-07-10 11:00:00,8383.6,0.0,74.83 -2014-07-10 12:00:00,8419.5,0.0,75.49 -2014-07-10 13:00:00,8548.0,0.0,76.9 -2014-07-10 14:00:00,8692.9,0.0,78.59 -2014-07-10 15:00:00,8813.2,0.0,79.98 -2014-07-10 16:00:00,8871.7,0.0,80.02 -2014-07-10 17:00:00,8779.5,0.0,80.37 -2014-07-10 18:00:00,8359.2,0.0,80.24 -2014-07-10 19:00:00,7984.3,0.0,78.36 -2014-07-10 20:00:00,7798.2,0.0,76.14 -2014-07-10 21:00:00,7749.3,0.0,74.17 -2014-07-10 22:00:00,7454.8,0.0,74.37 -2014-07-10 23:00:00,6995.1,0.0,74.03 -2014-07-11 00:00:00,6544.9,0.0,73.68 -2014-07-11 01:00:00,6192.6,0.0,74.13 -2014-07-11 02:00:00,5966.1,0.0,72.62 -2014-07-11 03:00:00,5865.0,0.0,72.24 -2014-07-11 04:00:00,5855.1,0.0,72.76 -2014-07-11 05:00:00,6003.4,0.0,71.74 -2014-07-11 06:00:00,6443.3,0.0,71.62 -2014-07-11 07:00:00,6953.1,0.0,72.16 -2014-07-11 08:00:00,7465.5,0.0,74.38 -2014-07-11 09:00:00,7863.0,0.0,75.06 -2014-07-11 10:00:00,8127.4,0.0,76.71 -2014-07-11 11:00:00,8314.6,0.0,78.14 -2014-07-11 12:00:00,8401.9,0.0,81.07 -2014-07-11 13:00:00,8510.9,0.0,82.12 -2014-07-11 14:00:00,8590.9,0.0,82.46 -2014-07-11 15:00:00,8653.3,0.0,79.85 -2014-07-11 16:00:00,8683.6,0.0,80.57 -2014-07-11 17:00:00,8567.8,0.0,81.0 -2014-07-11 18:00:00,8157.4,0.0,79.48 -2014-07-11 19:00:00,7788.4,0.0,78.89 -2014-07-11 20:00:00,7572.9,0.0,76.44 -2014-07-11 21:00:00,7436.2,0.0,74.22 -2014-07-11 22:00:00,7124.9,0.0,72.56 -2014-07-11 23:00:00,6751.7,0.0,70.58 -2014-07-12 00:00:00,6364.2,0.0,70.39 -2014-07-12 01:00:00,6067.8,0.0,70.25 -2014-07-12 02:00:00,5830.8,0.0,70.06 -2014-07-12 03:00:00,5690.6,0.0,70.01 -2014-07-12 04:00:00,5607.4,0.0,70.01 -2014-07-12 05:00:00,5552.2,0.0,69.8 -2014-07-12 06:00:00,5688.9,0.0,69.19 -2014-07-12 07:00:00,6056.8,0.0,70.22 -2014-07-12 08:00:00,6470.2,0.0,72.07 -2014-07-12 09:00:00,6867.1,0.0,77.69 -2014-07-12 10:00:00,7197.3,0.0,80.35 -2014-07-12 11:00:00,7423.8,0.0,83.35 -2014-07-12 12:00:00,7520.4,0.0,84.35 -2014-07-12 13:00:00,7575.2,0.0,86.0 -2014-07-12 14:00:00,7602.1,0.0,86.04 -2014-07-12 15:00:00,7553.5,0.0,84.73 -2014-07-12 16:00:00,7511.5,0.0,85.04 -2014-07-12 17:00:00,7432.8,0.0,80.56 -2014-07-12 18:00:00,7271.6,0.0,79.17 -2014-07-12 19:00:00,7062.2,0.0,77.85 -2014-07-12 20:00:00,6963.1,0.0,75.95 -2014-07-12 21:00:00,6979.7,0.0,74.31 -2014-07-12 22:00:00,6825.7,0.0,73.98 -2014-07-12 23:00:00,6538.2,0.0,74.3 -2014-07-13 00:00:00,6230.7,0.0,73.57 -2014-07-13 01:00:00,5978.5,0.0,72.85 -2014-07-13 02:00:00,5773.7,0.0,71.85 -2014-07-13 03:00:00,5640.8,0.0,72.13 -2014-07-13 04:00:00,5563.9,0.0,71.39 -2014-07-13 05:00:00,5531.7,0.0,72.35 -2014-07-13 06:00:00,5576.1,0.0,72.35 -2014-07-13 07:00:00,5805.9,0.0,72.69 -2014-07-13 08:00:00,6142.8,0.0,73.69 -2014-07-13 09:00:00,6500.3,0.0,75.69 -2014-07-13 10:00:00,6722.7,0.0,77.04 -2014-07-13 11:00:00,6993.9,0.0065,76.04 -2014-07-13 12:00:00,7266.8,0.0,80.39 -2014-07-13 13:00:00,7428.9,0.0,82.39 -2014-07-13 14:00:00,7493.8,0.0,82.39 -2014-07-13 15:00:00,7519.1,0.0,82.77 -2014-07-13 16:00:00,7482.1,0.0,80.08 -2014-07-13 17:00:00,7464.3,0.0,80.12 -2014-07-13 18:00:00,7382.2,0.0,80.08 -2014-07-13 19:00:00,7376.5,0.0,79.43 -2014-07-13 20:00:00,7501.8,0.0,78.73 -2014-07-13 21:00:00,7590.6,0.0,77.25 -2014-07-13 22:00:00,7419.8,0.0,76.49 -2014-07-13 23:00:00,7095.4,0.0,76.84 -2014-07-14 00:00:00,6583.3,0.0173,74.93 -2014-07-14 01:00:00,6253.2,0.2127,72.55 -2014-07-14 02:00:00,6097.2,0.1561,72.12 -2014-07-14 03:00:00,6035.9,0.0,72.88 -2014-07-14 04:00:00,6055.9,0.0,72.66 -2014-07-14 05:00:00,6265.1,0.0,72.15 -2014-07-14 06:00:00,6780.4,0.0,72.52 -2014-07-14 07:00:00,7475.5,0.0,73.08 -2014-07-14 08:00:00,8055.9,0.0,75.32 -2014-07-14 09:00:00,8363.8,0.0,75.75 -2014-07-14 10:00:00,8588.0,0.0,76.16 -2014-07-14 11:00:00,8755.2,0.0069,76.79 -2014-07-14 12:00:00,8900.4,0.0277,77.17 -2014-07-14 13:00:00,9061.4,0.0,78.65 -2014-07-14 14:00:00,9254.1,0.0,80.37 -2014-07-14 15:00:00,9380.0,0.0,82.26 -2014-07-14 16:00:00,9454.8,0.0,82.12 -2014-07-14 17:00:00,9273.6,0.0,81.04 -2014-07-14 18:00:00,8857.9,0.0,78.42 -2014-07-14 19:00:00,8626.2,0.1456,76.54 -2014-07-14 20:00:00,8458.5,0.0928,75.79 -2014-07-14 21:00:00,8170.8,0.2507,74.41 -2014-07-14 22:00:00,7766.1,0.1316,74.1 -2014-07-14 23:00:00,7243.1,0.0919,73.73 -2014-07-15 00:00:00,6744.1,0.0692,73.35 -2014-07-15 01:00:00,6404.6,0.1111,72.78 -2014-07-15 02:00:00,6219.1,0.0,72.42 -2014-07-15 03:00:00,6111.8,0.0,72.66 -2014-07-15 04:00:00,6121.9,0.0,73.12 -2014-07-15 05:00:00,6337.4,0.0,73.78 -2014-07-15 06:00:00,6831.8,0.0,73.59 -2014-07-15 07:00:00,7518.6,0.0,74.2 -2014-07-15 08:00:00,8064.7,0.0,75.07 -2014-07-15 09:00:00,8498.1,0.0,76.25 -2014-07-15 10:00:00,8851.8,0.0,77.69 -2014-07-15 11:00:00,9018.2,0.0,77.12 -2014-07-15 12:00:00,9230.6,0.0,79.18 -2014-07-15 13:00:00,9487.5,0.0,82.53 -2014-07-15 14:00:00,9296.4,0.0,83.68 -2014-07-15 15:00:00,8995.6,0.1437,75.05 -2014-07-15 16:00:00,8939.4,0.0131,74.92 -2014-07-15 17:00:00,8874.9,0.0065,75.65 -2014-07-15 18:00:00,8536.1,0.0,75.59 -2014-07-15 19:00:00,8300.1,0.0469,73.49 -2014-07-15 20:00:00,8064.7,0.0585,73.17 -2014-07-15 21:00:00,7837.8,0.03,72.31 -2014-07-15 22:00:00,7453.1,0.0,72.31 -2014-07-15 23:00:00,6947.3,0.0,71.85 -2014-07-16 00:00:00,6462.9,0.0,71.49 -2014-07-16 01:00:00,6155.7,0.0,71.66 -2014-07-16 02:00:00,5941.7,0.0,71.37 -2014-07-16 03:00:00,5822.8,0.0,71.61 -2014-07-16 04:00:00,5824.9,0.0,71.73 -2014-07-16 05:00:00,6061.2,0.0,71.73 -2014-07-16 06:00:00,6630.9,0.0,72.2 -2014-07-16 07:00:00,7219.0,0.0,72.4 -2014-07-16 08:00:00,7478.3,0.0,71.31 -2014-07-16 09:00:00,7694.5,0.0,69.9 -2014-07-16 10:00:00,7749.0,0.0,69.56 -2014-07-16 11:00:00,7813.9,0.0,70.98 -2014-07-16 12:00:00,7899.7,0.0,72.56 -2014-07-16 13:00:00,7976.2,0.0,74.66 -2014-07-16 14:00:00,8101.6,0.0,76.5 -2014-07-16 15:00:00,8255.8,0.0,78.75 -2014-07-16 16:00:00,8388.2,0.0,79.94 -2014-07-16 17:00:00,8366.9,0.0,80.31 -2014-07-16 18:00:00,8012.7,0.0,79.38 -2014-07-16 19:00:00,7692.4,0.0,79.55 -2014-07-16 20:00:00,7487.5,0.0,78.35 -2014-07-16 21:00:00,7402.4,0.0,76.89 -2014-07-16 22:00:00,7076.9,0.0,76.06 -2014-07-16 23:00:00,6616.9,0.0,75.13 -2014-07-17 00:00:00,6142.2,0.0,74.52 -2014-07-17 01:00:00,5800.7,0.0,73.09 -2014-07-17 02:00:00,5559.5,0.0,71.69 -2014-07-17 03:00:00,5434.5,0.0,70.9 -2014-07-17 04:00:00,5390.3,0.0,69.16 -2014-07-17 05:00:00,5529.6,0.0,68.2 -2014-07-17 06:00:00,6000.6,0.0,68.01 -2014-07-17 07:00:00,6624.7,0.0,68.27 -2014-07-17 08:00:00,7164.5,0.0,70.13 -2014-07-17 09:00:00,7554.3,0.0,71.86 -2014-07-17 10:00:00,7801.6,0.0,73.44 -2014-07-17 11:00:00,7981.2,0.0,75.68 -2014-07-17 12:00:00,8068.4,0.0,77.03 -2014-07-17 13:00:00,8103.1,0.0,77.91 -2014-07-17 14:00:00,8076.8,0.0,77.8 -2014-07-17 15:00:00,8088.1,0.0,77.68 -2014-07-17 16:00:00,8114.9,0.0,79.41 -2014-07-17 17:00:00,8012.5,0.0,78.68 -2014-07-17 18:00:00,7689.9,0.0,79.04 -2014-07-17 19:00:00,7418.7,0.0,78.62 -2014-07-17 20:00:00,7236.1,0.0,77.97 -2014-07-17 21:00:00,7134.1,0.0,76.19 -2014-07-17 22:00:00,6838.9,0.0,74.84 -2014-07-17 23:00:00,6416.2,0.0,73.58 -2014-07-18 00:00:00,5955.0,0.0,72.33 -2014-07-18 01:00:00,5610.0,0.0,70.21 -2014-07-18 02:00:00,5375.3,0.0,68.79 -2014-07-18 03:00:00,5248.5,0.0,68.21 -2014-07-18 04:00:00,5218.3,0.0,67.35 -2014-07-18 05:00:00,5368.8,0.0,66.7 -2014-07-18 06:00:00,5842.5,0.0,66.4 -2014-07-18 07:00:00,6499.3,0.0,66.97 -2014-07-18 08:00:00,7028.7,0.0,69.79 -2014-07-18 09:00:00,7390.7,0.0,72.2 -2014-07-18 10:00:00,7584.0,0.0,74.39 -2014-07-18 11:00:00,7710.9,0.0,75.35 -2014-07-18 12:00:00,7785.7,0.0,76.34 -2014-07-18 13:00:00,7854.8,0.0,77.88 -2014-07-18 14:00:00,7897.0,0.0,78.68 -2014-07-18 15:00:00,7963.3,0.0,79.55 -2014-07-18 16:00:00,8006.8,0.0,80.12 -2014-07-18 17:00:00,7945.2,0.0,80.59 -2014-07-18 18:00:00,7562.8,0.0,80.93 -2014-07-18 19:00:00,7277.4,0.0,79.83 -2014-07-18 20:00:00,7116.5,0.0,77.84 -2014-07-18 21:00:00,6994.6,0.0,75.74 -2014-07-18 22:00:00,6702.7,0.0,74.76 -2014-07-18 23:00:00,6333.1,0.0,73.78 -2014-07-19 00:00:00,5939.8,0.0,72.72 -2014-07-19 01:00:00,5649.4,0.0,72.38 -2014-07-19 02:00:00,5433.6,0.0,72.18 -2014-07-19 03:00:00,5308.3,0.0,70.87 -2014-07-19 04:00:00,5227.2,0.0,70.58 -2014-07-19 05:00:00,5208.3,0.0,69.18 -2014-07-19 06:00:00,5326.2,0.0,69.18 -2014-07-19 07:00:00,5595.6,0.0,69.77 -2014-07-19 08:00:00,5927.9,0.0,69.75 -2014-07-19 09:00:00,6257.0,0.0,71.61 -2014-07-19 10:00:00,6503.1,0.0,73.19 -2014-07-19 11:00:00,6670.8,0.0,74.24 -2014-07-19 12:00:00,6733.5,0.0,74.47 -2014-07-19 13:00:00,6706.4,0.0,74.44 -2014-07-19 14:00:00,6675.7,0.0,75.02 -2014-07-19 15:00:00,6626.9,0.0,74.97 -2014-07-19 16:00:00,6588.2,0.0,75.6 -2014-07-19 17:00:00,6534.1,0.0,76.54 -2014-07-19 18:00:00,6464.2,0.0,76.19 -2014-07-19 19:00:00,6356.1,0.0,75.86 -2014-07-19 20:00:00,6289.9,0.0,74.44 -2014-07-19 21:00:00,6288.9,0.0,73.08 -2014-07-19 22:00:00,6116.2,0.0,71.6 -2014-07-19 23:00:00,5881.2,0.0,70.74 -2014-07-20 00:00:00,5591.1,0.0,70.05 -2014-07-20 01:00:00,5348.0,0.0,69.93 -2014-07-20 02:00:00,5182.8,0.0035,69.54 -2014-07-20 03:00:00,5078.7,0.0,69.37 -2014-07-20 04:00:00,5003.8,0.0,68.57 -2014-07-20 05:00:00,4960.8,0.0,67.83 -2014-07-20 06:00:00,4977.5,0.0,67.71 -2014-07-20 07:00:00,5106.9,0.0,67.83 -2014-07-20 08:00:00,5378.1,0.0,68.37 -2014-07-20 09:00:00,5676.0,0.0,69.76 -2014-07-20 10:00:00,6005.1,0.0,70.65 -2014-07-20 11:00:00,6253.4,0.0,72.41 -2014-07-20 12:00:00,6400.7,0.0,73.99 -2014-07-20 13:00:00,6464.4,0.0,74.61 -2014-07-20 14:00:00,6512.5,0.0,75.03 -2014-07-20 15:00:00,6550.6,0.0,75.36 -2014-07-20 16:00:00,6577.1,0.0,75.08 -2014-07-20 17:00:00,6574.6,0.0,76.12 -2014-07-20 18:00:00,6517.2,0.0,76.14 -2014-07-20 19:00:00,6433.5,0.0,74.82 -2014-07-20 20:00:00,6492.9,0.0,73.55 -2014-07-20 21:00:00,6568.5,0.0,72.03 -2014-07-20 22:00:00,6409.3,0.0,71.08 -2014-07-20 23:00:00,6109.1,0.0,70.37 -2014-07-21 00:00:00,5784.6,0.0,70.1 -2014-07-21 01:00:00,5538.3,0.0,69.26 -2014-07-21 02:00:00,5366.4,0.0,69.11 -2014-07-21 03:00:00,5289.6,0.0,68.6 -2014-07-21 04:00:00,5322.7,0.0,67.06 -2014-07-21 05:00:00,5544.4,0.0,67.41 -2014-07-21 06:00:00,6018.7,0.0,67.55 -2014-07-21 07:00:00,6644.8,0.0,68.09 -2014-07-21 08:00:00,7210.9,0.0,69.95 -2014-07-21 09:00:00,7638.7,0.0,72.12 -2014-07-21 10:00:00,7898.6,0.0,73.98 -2014-07-21 11:00:00,8079.1,0.0,75.99 -2014-07-21 12:00:00,8208.7,0.0,77.55 -2014-07-21 13:00:00,8332.5,0.0,79.34 -2014-07-21 14:00:00,8436.7,0.0,80.61 -2014-07-21 15:00:00,8555.5,0.0,81.71 -2014-07-21 16:00:00,8643.1,0.0,81.27 -2014-07-21 17:00:00,8550.4,0.0,81.94 -2014-07-21 18:00:00,8102.3,0.0,78.76 -2014-07-21 19:00:00,7800.9,0.0,77.34 -2014-07-21 20:00:00,7601.7,0.0,75.31 -2014-07-21 21:00:00,7495.9,0.0,74.14 -2014-07-21 22:00:00,7175.1,0.0,74.42 -2014-07-21 23:00:00,6703.6,0.0,73.92 -2014-07-22 00:00:00,6226.6,0.0,74.08 -2014-07-22 01:00:00,5888.6,0.0,73.21 -2014-07-22 02:00:00,5648.7,0.0,73.08 -2014-07-22 03:00:00,5529.4,0.0,72.42 -2014-07-22 04:00:00,5528.5,0.0,71.53 -2014-07-22 05:00:00,5725.5,0.0,71.52 -2014-07-22 06:00:00,6267.1,0.0,71.4 -2014-07-22 07:00:00,6978.5,0.0,71.91 -2014-07-22 08:00:00,7603.6,0.0,74.45 -2014-07-22 09:00:00,8094.8,0.0,76.95 -2014-07-22 10:00:00,8460.5,0.0,79.36 -2014-07-22 11:00:00,8728.5,0.0,81.22 -2014-07-22 12:00:00,8911.0,0.0,82.54 -2014-07-22 13:00:00,9098.7,0.0,83.56 -2014-07-22 14:00:00,9242.1,0.0,83.64 -2014-07-22 15:00:00,9311.3,0.0,83.89 -2014-07-22 16:00:00,9341.9,0.0,83.27 -2014-07-22 17:00:00,9215.6,0.0,82.8 -2014-07-22 18:00:00,8809.1,0.0,82.12 -2014-07-22 19:00:00,8506.2,0.0,80.91 -2014-07-22 20:00:00,8347.6,0.0,79.96 -2014-07-22 21:00:00,8225.6,0.0,78.79 -2014-07-22 22:00:00,7830.0,0.0,79.05 -2014-07-22 23:00:00,7267.5,0.0,77.9 -2014-07-23 00:00:00,6735.4,0.0,76.71 -2014-07-23 01:00:00,6336.5,0.0,76.53 -2014-07-23 02:00:00,6062.3,0.0,75.55 -2014-07-23 03:00:00,5929.1,0.0,75.03 -2014-07-23 04:00:00,5906.3,0.0,73.89 -2014-07-23 05:00:00,6110.2,0.0,73.34 -2014-07-23 06:00:00,6644.7,0.0,73.02 -2014-07-23 07:00:00,7335.5,0.0,73.1 -2014-07-23 08:00:00,7989.7,0.0,74.95 -2014-07-23 09:00:00,8496.2,0.0,77.29 -2014-07-23 10:00:00,8887.1,0.0,79.14 -2014-07-23 11:00:00,9201.9,0.0,81.66 -2014-07-23 12:00:00,9447.2,0.0,83.09 -2014-07-23 13:00:00,9657.1,0.0,84.48 -2014-07-23 14:00:00,9813.2,0.0,85.99 -2014-07-23 15:00:00,9927.7,0.0,85.97 -2014-07-23 16:00:00,10026.6,0.0,86.7 -2014-07-23 17:00:00,9950.6,0.0,86.05 -2014-07-23 18:00:00,9525.4,0.0,84.9 -2014-07-23 19:00:00,9267.1,0.0,83.45 -2014-07-23 20:00:00,9133.3,0.0,84.45 -2014-07-23 21:00:00,8709.5,0.0,82.88 -2014-07-23 22:00:00,8325.6,0.0784,78.01 -2014-07-23 23:00:00,7769.5,0.0,78.58 -2014-07-24 00:00:00,7241.5,0.0,77.35 -2014-07-24 01:00:00,6823.5,0.0,76.85 -2014-07-24 02:00:00,6512.7,0.0,75.51 -2014-07-24 03:00:00,6318.0,0.0,74.14 -2014-07-24 04:00:00,6264.4,0.0,74.05 -2014-07-24 05:00:00,6406.1,0.0,73.73 -2014-07-24 06:00:00,6865.6,0.0,73.19 -2014-07-24 07:00:00,7433.2,0.0,73.0 -2014-07-24 08:00:00,7856.1,0.0,72.87 -2014-07-24 09:00:00,8208.3,0.0,73.81 -2014-07-24 10:00:00,8375.5,0.0,74.61 -2014-07-24 11:00:00,8450.4,0.0,75.29 -2014-07-24 12:00:00,8454.3,0.0,75.94 -2014-07-24 13:00:00,8443.7,0.0,76.14 -2014-07-24 14:00:00,8474.3,0.0,76.63 -2014-07-24 15:00:00,8531.8,0.0,78.73 -2014-07-24 16:00:00,8595.5,0.0,79.61 -2014-07-24 17:00:00,8512.8,0.0,79.88 -2014-07-24 18:00:00,8138.8,0.0,79.47 -2014-07-24 19:00:00,7848.2,0.0,78.56 -2014-07-24 20:00:00,7676.9,0.0,77.3 -2014-07-24 21:00:00,7524.7,0.0,76.42 -2014-07-24 22:00:00,7188.0,0.0,75.77 -2014-07-24 23:00:00,6719.9,0.0,74.58 -2014-07-25 00:00:00,6194.9,0.0,72.67 -2014-07-25 01:00:00,5845.2,0.0,71.28 -2014-07-25 02:00:00,5606.5,0.0,70.28 -2014-07-25 03:00:00,5458.8,0.0,69.28 -2014-07-25 04:00:00,5419.1,0.0,68.67 -2014-07-25 05:00:00,5557.3,0.0,67.67 -2014-07-25 06:00:00,6008.9,0.0,67.01 -2014-07-25 07:00:00,6615.5,0.0,67.79 -2014-07-25 08:00:00,7132.6,0.0,69.88 -2014-07-25 09:00:00,7510.9,0.0,71.54 -2014-07-25 10:00:00,7732.9,0.0,73.73 -2014-07-25 11:00:00,7891.9,0.0,74.98 -2014-07-25 12:00:00,7985.8,0.0,76.85 -2014-07-25 13:00:00,8070.1,0.0,77.55 -2014-07-25 14:00:00,8153.5,0.0,78.94 -2014-07-25 15:00:00,8236.4,0.0,80.55 -2014-07-25 16:00:00,8295.6,0.0,80.8 -2014-07-25 17:00:00,8229.0,0.0,81.43 -2014-07-25 18:00:00,7850.6,0.0,80.6 -2014-07-25 19:00:00,7531.2,0.0,78.69 -2014-07-25 20:00:00,7344.2,0.0,77.49 -2014-07-25 21:00:00,7201.5,0.0,76.23 -2014-07-25 22:00:00,6908.6,0.0,74.92 -2014-07-25 23:00:00,6550.3,0.0,73.83 -2014-07-26 00:00:00,6181.4,0.0,73.4 -2014-07-26 01:00:00,5859.1,0.0,72.54 -2014-07-26 02:00:00,5633.4,0.0,71.56 -2014-07-26 03:00:00,5475.9,0.0,71.05 -2014-07-26 04:00:00,5381.1,0.0,70.91 -2014-07-26 05:00:00,5341.2,0.0,70.17 -2014-07-26 06:00:00,5435.3,0.0,69.98 -2014-07-26 07:00:00,5692.4,0.0,71.41 -2014-07-26 08:00:00,6087.9,0.0,72.39 -2014-07-26 09:00:00,6460.0,0.0,74.46 -2014-07-26 10:00:00,6698.3,0.0,76.14 -2014-07-26 11:00:00,6813.3,0.0,76.07 -2014-07-26 12:00:00,6891.4,0.0,76.08 -2014-07-26 13:00:00,6919.2,0.0,77.07 -2014-07-26 14:00:00,7020.6,0.0,78.81 -2014-07-26 15:00:00,6999.2,0.0,79.29 -2014-07-26 16:00:00,7047.6,0.0,78.64 -2014-07-26 17:00:00,7042.4,0.0,77.68 -2014-07-26 18:00:00,7051.1,0.0,77.42 -2014-07-26 19:00:00,6928.7,0.0,78.45 -2014-07-26 20:00:00,6905.1,0.0,76.9 -2014-07-26 21:00:00,6927.3,0.0,75.54 -2014-07-26 22:00:00,6768.7,0.0,75.1 -2014-07-26 23:00:00,6533.9,0.0,74.37 -2014-07-27 00:00:00,6243.7,0.0,74.17 -2014-07-27 01:00:00,5981.6,0.0,74.08 -2014-07-27 02:00:00,5761.2,0.0,73.34 -2014-07-27 03:00:00,5616.5,0.0,72.4 -2014-07-27 04:00:00,5528.0,0.0,71.86 -2014-07-27 05:00:00,5489.7,0.0,72.19 -2014-07-27 06:00:00,5542.2,0.0,72.19 -2014-07-27 07:00:00,5749.5,0.0,72.74 -2014-07-27 08:00:00,6065.7,0.0,73.26 -2014-07-27 09:00:00,6415.4,0.0,74.41 -2014-07-27 10:00:00,6765.0,0.0,76.7 -2014-07-27 11:00:00,7056.2,0.0,76.81 -2014-07-27 12:00:00,7254.0,0.0,78.89 -2014-07-27 13:00:00,7369.3,0.0,80.52 -2014-07-27 14:00:00,7557.3,0.0,81.64 -2014-07-27 15:00:00,7711.8,0.0,83.93 -2014-07-27 16:00:00,7855.6,0.0,83.46 -2014-07-27 17:00:00,7905.7,0.0,84.32 -2014-07-27 18:00:00,7887.3,0.0,85.07 -2014-07-27 19:00:00,7779.3,0.0,85.06 -2014-07-27 20:00:00,7843.1,0.0,83.75 -2014-07-27 21:00:00,7959.2,0.0,81.84 -2014-07-27 22:00:00,7827.2,0.0,81.35 -2014-07-27 23:00:00,7487.9,0.0,80.86 -2014-07-28 00:00:00,7050.8,0.0,80.0 -2014-07-28 01:00:00,6684.2,0.0104,77.74 -2014-07-28 02:00:00,6440.0,0.0827,75.89 -2014-07-28 03:00:00,6251.0,0.0,74.92 -2014-07-28 04:00:00,6106.9,0.0653,71.38 -2014-07-28 05:00:00,6295.7,0.0,70.93 -2014-07-28 06:00:00,6727.0,0.0,71.05 -2014-07-28 07:00:00,7313.9,0.0,71.59 -2014-07-28 08:00:00,7780.7,0.0,72.26 -2014-07-28 09:00:00,8147.5,0.0,72.94 -2014-07-28 10:00:00,8347.8,0.0,73.9 -2014-07-28 11:00:00,8512.4,0.0,74.8 -2014-07-28 12:00:00,8659.0,0.0,76.69 -2014-07-28 13:00:00,8753.1,0.0,78.86 -2014-07-28 14:00:00,8818.6,0.0,80.66 -2014-07-28 15:00:00,8828.0,0.0,82.34 -2014-07-28 16:00:00,8843.1,0.0,82.42 -2014-07-28 17:00:00,8754.0,0.0,82.0 -2014-07-28 18:00:00,8334.4,0.0,81.61 -2014-07-28 19:00:00,7882.7,0.0,79.64 -2014-07-28 20:00:00,7594.9,0.0,75.47 -2014-07-28 21:00:00,7376.1,0.0,73.15 -2014-07-28 22:00:00,6958.9,0.0,71.54 -2014-07-28 23:00:00,6413.3,0.0,70.54 -2014-07-29 00:00:00,5907.3,0.0,69.19 -2014-07-29 01:00:00,5556.6,0.0,68.54 -2014-07-29 02:00:00,5311.9,0.0,67.54 -2014-07-29 03:00:00,5167.7,0.0,66.8 -2014-07-29 04:00:00,5149.8,0.0,66.0 -2014-07-29 05:00:00,5320.7,0.0,65.0 -2014-07-29 06:00:00,5799.5,0.0,64.81 -2014-07-29 07:00:00,6394.9,0.0,65.0 -2014-07-29 08:00:00,6852.5,0.0,65.51 -2014-07-29 09:00:00,7217.5,0.0,67.12 -2014-07-29 10:00:00,7413.9,0.0,69.12 -2014-07-29 11:00:00,7510.0,0.0,70.61 -2014-07-29 12:00:00,7582.9,0.0,72.55 -2014-07-29 13:00:00,7637.6,0.0,72.6 -2014-07-29 14:00:00,7673.4,0.0,74.15 -2014-07-29 15:00:00,7677.4,0.0,74.96 -2014-07-29 16:00:00,7667.0,0.0,75.0 -2014-07-29 17:00:00,7545.3,0.0,74.87 -2014-07-29 18:00:00,7198.9,0.0,75.1 -2014-07-29 19:00:00,6954.9,0.0,74.05 -2014-07-29 20:00:00,6845.9,0.0,72.86 -2014-07-29 21:00:00,6692.9,0.0,71.47 -2014-07-29 22:00:00,6386.3,0.0,70.67 -2014-07-29 23:00:00,5935.8,0.0,69.81 -2014-07-30 00:00:00,5530.0,0.0,68.6 -2014-07-30 01:00:00,5248.7,0.0,68.24 -2014-07-30 02:00:00,5059.0,0.0,67.79 -2014-07-30 03:00:00,4951.6,0.0,67.32 -2014-07-30 04:00:00,4937.1,0.0,66.79 -2014-07-30 05:00:00,5130.5,0.0,65.54 -2014-07-30 06:00:00,5606.3,0.0,64.63 -2014-07-30 07:00:00,6232.9,0.0,64.37 -2014-07-30 08:00:00,6768.0,0.0,66.93 -2014-07-30 09:00:00,7146.7,0.0,69.24 -2014-07-30 10:00:00,7376.5,0.0,71.36 -2014-07-30 11:00:00,7516.3,0.0,73.17 -2014-07-30 12:00:00,7600.5,0.0,75.4 -2014-07-30 13:00:00,7689.9,0.0,77.43 -2014-07-30 14:00:00,7747.6,0.0,77.63 -2014-07-30 15:00:00,7799.1,0.0,78.91 -2014-07-30 16:00:00,7789.6,0.0,79.45 -2014-07-30 17:00:00,7700.7,0.0,78.81 -2014-07-30 18:00:00,7386.3,0.0,77.69 -2014-07-30 19:00:00,7111.8,0.0,76.05 -2014-07-30 20:00:00,7019.4,0.0,74.78 -2014-07-30 21:00:00,6927.5,0.0,73.92 -2014-07-30 22:00:00,6625.6,0.0,73.2 -2014-07-30 23:00:00,6221.8,0.0,72.47 -2014-07-31 00:00:00,5793.3,0.0,72.01 -2014-07-31 01:00:00,5480.5,0.0,70.7 -2014-07-31 02:00:00,5261.3,0.0,70.58 -2014-07-31 03:00:00,5141.5,0.0,70.14 -2014-07-31 04:00:00,5126.1,0.0,68.89 -2014-07-31 05:00:00,5328.2,0.0,68.86 -2014-07-31 06:00:00,5824.5,0.0,68.67 -2014-07-31 07:00:00,6468.8,0.0,68.38 -2014-07-31 08:00:00,7025.2,0.0,70.03 -2014-07-31 09:00:00,7359.9,0.0035,72.39 -2014-07-31 10:00:00,7612.9,0.0035,73.71 -2014-07-31 11:00:00,7833.3,0.0,75.62 -2014-07-31 12:00:00,7987.8,0.0,78.07 -2014-07-31 13:00:00,8135.0,0.0,79.3 -2014-07-31 14:00:00,8182.5,0.0,80.91 -2014-07-31 15:00:00,8197.3,0.0,79.88 -2014-07-31 16:00:00,8275.0,0.0,79.66 -2014-07-31 17:00:00,8211.3,0.0,79.74 -2014-07-31 18:00:00,7854.4,0.0,78.17 -2014-07-31 19:00:00,7567.5,0.0,78.5 -2014-07-31 20:00:00,7493.2,0.0,76.73 -2014-07-31 21:00:00,7419.9,0.0,75.74 -2014-07-31 22:00:00,7135.6,0.0,76.03 -2014-07-31 23:00:00,6706.7,0.0,75.17 -2014-08-01 00:00:00,6245.3,0.0,75.06 -2014-08-01 01:00:00,5921.6,0.0,74.2 -2014-08-01 02:00:00,5694.5,0.0,73.05 -2014-08-01 03:00:00,5582.8,0.0,72.54 -2014-08-01 04:00:00,5580.9,0.0,72.22 -2014-08-01 05:00:00,5792.3,0.0,71.68 -2014-08-01 06:00:00,6288.2,0.0,71.8 -2014-08-01 07:00:00,6924.5,0.0,72.23 -2014-08-01 08:00:00,7510.9,0.0,74.1 -2014-08-01 09:00:00,7971.1,0.0,75.64 -2014-08-01 10:00:00,8308.3,0.0,77.98 -2014-08-01 11:00:00,8568.9,0.0,79.56 -2014-08-01 12:00:00,8730.1,0.0,80.97 -2014-08-01 13:00:00,8716.2,0.0,80.85 -2014-08-01 14:00:00,8599.3,0.0,81.11 -2014-08-01 15:00:00,8462.5,0.0,78.75 -2014-08-01 16:00:00,8360.5,0.0,76.34 -2014-08-01 17:00:00,8211.2,0.0,75.5 -2014-08-01 18:00:00,7866.1,0.0,76.43 -2014-08-01 19:00:00,7610.4,0.0,75.61 -2014-08-01 20:00:00,7460.1,0.0,75.15 -2014-08-01 21:00:00,7307.5,0.0,74.8 -2014-08-01 22:00:00,7024.4,0.0,75.06 -2014-08-01 23:00:00,6634.9,0.0,74.54 -2014-08-02 00:00:00,6261.1,0.0,73.54 -2014-08-02 01:00:00,5947.3,0.0,72.86 -2014-08-02 02:00:00,5694.4,0.0,72.67 -2014-08-02 03:00:00,5534.1,0.0,72.54 -2014-08-02 04:00:00,5426.7,0.0065,71.49 -2014-08-02 05:00:00,5370.4,0.0365,70.02 -2014-08-02 06:00:00,5412.6,0.0569,68.22 -2014-08-02 07:00:00,5569.6,0.1004,66.91 -2014-08-02 08:00:00,5812.8,0.0996,65.74 -2014-08-02 09:00:00,6070.3,0.0396,66.44 -2014-08-02 10:00:00,6268.7,0.0,67.3 -2014-08-02 11:00:00,6440.7,0.0,68.59 -2014-08-02 12:00:00,6551.2,0.0,70.25 -2014-08-02 13:00:00,6548.4,0.0,72.27 -2014-08-02 14:00:00,6558.6,0.0,72.45 -2014-08-02 15:00:00,6527.0,0.0,72.97 -2014-08-02 16:00:00,6453.3,0.0,72.37 -2014-08-02 17:00:00,6402.4,0.0,72.38 -2014-08-02 18:00:00,6340.6,0.0,72.23 -2014-08-02 19:00:00,6209.3,0.0,70.95 -2014-08-02 20:00:00,6226.4,0.0,69.76 -2014-08-02 21:00:00,6190.7,0.0,68.68 -2014-08-02 22:00:00,6013.9,0.0,68.42 -2014-08-02 23:00:00,5755.3,0.0,67.37 -2014-08-03 00:00:00,5476.0,0.0,67.74 -2014-08-03 01:00:00,5246.9,0.0,67.74 -2014-08-03 02:00:00,5066.1,0.0,67.56 -2014-08-03 03:00:00,4957.5,0.0,67.2 -2014-08-03 04:00:00,4898.9,0.0,67.2 -2014-08-03 05:00:00,4897.5,0.0065,67.24 -2014-08-03 06:00:00,4940.7,0.0065,67.24 -2014-08-03 07:00:00,5097.0,0.0235,66.7 -2014-08-03 08:00:00,5345.2,0.0331,67.42 -2014-08-03 09:00:00,5636.5,0.0,67.76 -2014-08-03 10:00:00,5920.1,0.0,68.95 -2014-08-03 11:00:00,6129.4,0.0,70.51 -2014-08-03 12:00:00,6252.1,0.0,71.39 -2014-08-03 13:00:00,6313.4,0.0,71.89 -2014-08-03 14:00:00,6382.7,0.0,73.76 -2014-08-03 15:00:00,6415.6,0.0,74.61 -2014-08-03 16:00:00,6450.7,0.0,74.61 -2014-08-03 17:00:00,6451.8,0.0,74.19 -2014-08-03 18:00:00,6415.2,0.0,74.87 -2014-08-03 19:00:00,6390.3,0.0,74.41 -2014-08-03 20:00:00,6494.9,0.0,74.59 -2014-08-03 21:00:00,6531.2,0.0,72.1 -2014-08-03 22:00:00,6349.1,0.0,71.24 -2014-08-03 23:00:00,6051.4,0.0,71.08 -2014-08-04 00:00:00,5740.8,0.0,71.15 -2014-08-04 01:00:00,5519.9,0.0,71.59 -2014-08-04 02:00:00,5373.8,0.0,70.85 -2014-08-04 03:00:00,5315.1,0.0,71.42 -2014-08-04 04:00:00,5362.8,0.0,71.07 -2014-08-04 05:00:00,5622.7,0.0,71.07 -2014-08-04 06:00:00,6125.8,0.0,71.08 -2014-08-04 07:00:00,6756.0,0.0,71.22 -2014-08-04 08:00:00,7334.0,0.0,72.1 -2014-08-04 09:00:00,7791.1,0.0,74.57 -2014-08-04 10:00:00,8043.0,0.0,77.02 -2014-08-04 11:00:00,8229.6,0.0,77.96 -2014-08-04 12:00:00,8361.5,0.0,78.75 -2014-08-04 13:00:00,8504.5,0.0,79.9 -2014-08-04 14:00:00,8592.0,0.0,80.11 -2014-08-04 15:00:00,8680.1,0.0,81.22 -2014-08-04 16:00:00,8742.4,0.0,80.5 -2014-08-04 17:00:00,8693.2,0.0,79.27 -2014-08-04 18:00:00,8349.3,0.0,79.98 -2014-08-04 19:00:00,8073.8,0.0,79.71 -2014-08-04 20:00:00,7966.6,0.0,78.64 -2014-08-04 21:00:00,7824.3,0.0,76.66 -2014-08-04 22:00:00,7501.2,0.0,76.4 -2014-08-04 23:00:00,7017.4,0.0,75.99 -2014-08-05 00:00:00,6498.2,0.0,75.91 -2014-08-05 01:00:00,6139.3,0.0,75.32 -2014-08-05 02:00:00,5874.0,0.0,74.64 -2014-08-05 03:00:00,5743.3,0.0,74.26 -2014-08-05 04:00:00,5736.6,0.0,73.16 -2014-08-05 05:00:00,5931.8,0.0,72.87 -2014-08-05 06:00:00,6427.3,0.0,71.71 -2014-08-05 07:00:00,7070.2,0.0,72.18 -2014-08-05 08:00:00,7677.5,0.0,74.45 -2014-08-05 09:00:00,8139.7,0.0,77.27 -2014-08-05 10:00:00,8463.5,0.0,80.29 -2014-08-05 11:00:00,8648.5,0.0,81.82 -2014-08-05 12:00:00,8755.8,0.0,83.75 -2014-08-05 13:00:00,8869.5,0.0,85.36 -2014-08-05 14:00:00,8993.7,0.0,84.41 -2014-08-05 15:00:00,9099.5,0.0,85.6 -2014-08-05 16:00:00,9186.0,0.0,87.01 -2014-08-05 17:00:00,9112.9,0.0,84.81 -2014-08-05 18:00:00,8661.8,0.0,82.62 -2014-08-05 19:00:00,8288.5,0.0,80.33 -2014-08-05 20:00:00,8206.4,0.0,80.01 -2014-08-05 21:00:00,8109.9,0.0,80.69 -2014-08-05 22:00:00,7796.6,0.0,79.69 -2014-08-05 23:00:00,7301.8,0.0,79.35 -2014-08-06 00:00:00,6708.8,0.0,76.35 -2014-08-06 01:00:00,6288.1,0.0,74.35 -2014-08-06 02:00:00,6009.9,0.0,74.0 -2014-08-06 03:00:00,5872.8,0.0,73.0 -2014-08-06 04:00:00,5843.6,0.0,71.86 -2014-08-06 05:00:00,6035.4,0.0,71.86 -2014-08-06 06:00:00,6499.2,0.0,71.52 -2014-08-06 07:00:00,7068.0,0.0,71.54 -2014-08-06 08:00:00,7527.3,0.0,71.73 -2014-08-06 09:00:00,7869.1,0.0,72.73 -2014-08-06 10:00:00,8107.2,0.0,74.78 -2014-08-06 11:00:00,8264.5,0.0,77.55 -2014-08-06 12:00:00,8292.2,0.0,78.49 -2014-08-06 13:00:00,8357.4,0.0,78.61 -2014-08-06 14:00:00,8462.4,0.0,79.97 -2014-08-06 15:00:00,8583.2,0.0,80.42 -2014-08-06 16:00:00,8689.9,0.0,82.34 -2014-08-06 17:00:00,8655.1,0.0,82.98 -2014-08-06 18:00:00,8290.3,0.0,82.37 -2014-08-06 19:00:00,7896.6,0.0,79.71 -2014-08-06 20:00:00,7734.1,0.0,77.28 -2014-08-06 21:00:00,7584.7,0.0,76.69 -2014-08-06 22:00:00,7257.0,0.0,76.0 -2014-08-06 23:00:00,6781.1,0.0,75.0 -2014-08-07 00:00:00,6260.7,0.0,73.65 -2014-08-07 01:00:00,5866.2,0.0,72.65 -2014-08-07 02:00:00,5604.2,0.0,70.96 -2014-08-07 03:00:00,5442.2,0.0,70.31 -2014-08-07 04:00:00,5394.1,0.0,69.24 -2014-08-07 05:00:00,5559.1,0.0,68.42 -2014-08-07 06:00:00,5994.1,0.0,67.12 -2014-08-07 07:00:00,6581.2,0.0,67.05 -2014-08-07 08:00:00,7117.1,0.0,69.12 -2014-08-07 09:00:00,7505.7,0.0,72.12 -2014-08-07 10:00:00,7787.1,0.0,74.58 -2014-08-07 11:00:00,7953.8,0.0,76.19 -2014-08-07 12:00:00,8067.4,0.0,78.07 -2014-08-07 13:00:00,8166.6,0.0,79.53 -2014-08-07 14:00:00,8253.0,0.0,80.39 -2014-08-07 15:00:00,8290.6,0.0,80.72 -2014-08-07 16:00:00,8315.3,0.0,82.05 -2014-08-07 17:00:00,8198.1,0.0,81.45 -2014-08-07 18:00:00,7794.1,0.0,80.6 -2014-08-07 19:00:00,7438.0,0.0,78.91 -2014-08-07 20:00:00,7267.7,0.0,77.03 -2014-08-07 21:00:00,7066.6,0.0,74.65 -2014-08-07 22:00:00,6723.3,0.0,73.61 -2014-08-07 23:00:00,6274.3,0.0,72.35 -2014-08-08 00:00:00,5843.9,0.0,70.79 -2014-08-08 01:00:00,5516.1,0.0,69.63 -2014-08-08 02:00:00,5296.3,0.0,68.92 -2014-08-08 03:00:00,5172.8,0.0,68.24 -2014-08-08 04:00:00,5151.7,0.0,67.44 -2014-08-08 05:00:00,5334.0,0.0,66.79 -2014-08-08 06:00:00,5766.5,0.0,66.05 -2014-08-08 07:00:00,6335.6,0.0,66.61 -2014-08-08 08:00:00,6832.2,0.0,67.82 -2014-08-08 09:00:00,7237.6,0.0,69.99 -2014-08-08 10:00:00,7506.4,0.0,72.87 -2014-08-08 11:00:00,7671.0,0.0,75.55 -2014-08-08 12:00:00,7776.4,0.0,77.17 -2014-08-08 13:00:00,7857.7,0.0,78.66 -2014-08-08 14:00:00,7921.3,0.0,79.53 -2014-08-08 15:00:00,7975.7,0.0,80.48 -2014-08-08 16:00:00,7990.8,0.0,80.98 -2014-08-08 17:00:00,7905.2,0.0,80.98 -2014-08-08 18:00:00,7562.0,0.0,80.88 -2014-08-08 19:00:00,7305.0,0.0,79.83 -2014-08-08 20:00:00,7213.8,0.0,79.13 -2014-08-08 21:00:00,7069.7,0.0,77.56 -2014-08-08 22:00:00,6791.2,0.0,76.21 -2014-08-08 23:00:00,6395.8,0.0,75.68 -2014-08-09 00:00:00,5982.1,0.0,74.07 -2014-08-09 01:00:00,5659.3,0.0,72.63 -2014-08-09 02:00:00,5439.8,0.0,71.38 -2014-08-09 03:00:00,5294.3,0.0,70.56 -2014-08-09 04:00:00,5204.8,0.0,70.04 -2014-08-09 05:00:00,5190.5,0.0,69.21 -2014-08-09 06:00:00,5275.9,0.0,68.99 -2014-08-09 07:00:00,5563.6,0.0,69.28 -2014-08-09 08:00:00,5963.8,0.0,71.12 -2014-08-09 09:00:00,6350.6,0.0,73.68 -2014-08-09 10:00:00,6677.5,0.0,76.03 -2014-08-09 11:00:00,6900.5,0.0,78.45 -2014-08-09 12:00:00,6982.4,0.0,80.44 -2014-08-09 13:00:00,7009.0,0.0,81.67 -2014-08-09 14:00:00,7051.4,0.0,82.28 -2014-08-09 15:00:00,7075.0,0.0,83.34 -2014-08-09 16:00:00,7084.7,0.0,84.1 -2014-08-09 17:00:00,7054.7,0.0,83.68 -2014-08-09 18:00:00,6980.3,0.0,83.26 -2014-08-09 19:00:00,6853.8,0.0,81.99 -2014-08-09 20:00:00,6869.9,0.0,80.63 -2014-08-09 21:00:00,6850.1,0.0,78.62 -2014-08-09 22:00:00,6695.5,0.0,77.74 -2014-08-09 23:00:00,6445.9,0.0,76.87 -2014-08-10 00:00:00,6123.2,0.0,75.6 -2014-08-10 01:00:00,5847.5,0.0,74.41 -2014-08-10 02:00:00,5599.2,0.0,73.22 -2014-08-10 03:00:00,5423.2,0.0,71.87 -2014-08-10 04:00:00,5331.0,0.0,71.39 -2014-08-10 05:00:00,5306.8,0.0,70.54 -2014-08-10 06:00:00,5326.3,0.0,69.34 -2014-08-10 07:00:00,5535.7,0.0,70.12 -2014-08-10 08:00:00,5907.8,0.0,72.84 -2014-08-10 09:00:00,6294.8,0.0,75.64 -2014-08-10 10:00:00,6656.1,0.0,77.56 -2014-08-10 11:00:00,6903.7,0.0,80.3 -2014-08-10 12:00:00,7056.7,0.0,82.02 -2014-08-10 13:00:00,7137.6,0.0,83.93 -2014-08-10 14:00:00,7214.1,0.0,83.65 -2014-08-10 15:00:00,7273.9,0.0,85.15 -2014-08-10 16:00:00,7310.8,0.0,83.77 -2014-08-10 17:00:00,7286.4,0.0,83.58 -2014-08-10 18:00:00,7205.6,0.0,83.1 -2014-08-10 19:00:00,7125.1,0.0,81.9 -2014-08-10 20:00:00,7238.4,0.0,79.66 -2014-08-10 21:00:00,7253.5,0.0,78.38 -2014-08-10 22:00:00,7061.0,0.0,77.67 -2014-08-10 23:00:00,6742.1,0.0,77.11 -2014-08-11 00:00:00,6386.1,0.0,75.96 -2014-08-11 01:00:00,6121.7,0.0,75.31 -2014-08-11 02:00:00,5930.8,0.0,74.55 -2014-08-11 03:00:00,5822.3,0.0,74.01 -2014-08-11 04:00:00,5813.8,0.0,73.68 -2014-08-11 05:00:00,6020.2,0.0,72.55 -2014-08-11 06:00:00,6431.2,0.0,71.75 -2014-08-11 07:00:00,7068.8,0.0,72.41 -2014-08-11 08:00:00,7671.2,0.0,74.93 -2014-08-11 09:00:00,8118.9,0.0,77.3 -2014-08-11 10:00:00,8437.7,0.0,78.94 -2014-08-11 11:00:00,8639.2,0.0,80.41 -2014-08-11 12:00:00,8711.6,0.0,81.5 -2014-08-11 13:00:00,8781.3,0.0,82.5 -2014-08-11 14:00:00,8794.8,0.0,83.22 -2014-08-11 15:00:00,8765.8,0.0,81.09 -2014-08-11 16:00:00,8746.7,0.0,80.93 -2014-08-11 17:00:00,8576.8,0.0,80.54 -2014-08-11 18:00:00,8135.7,0.0,79.45 -2014-08-11 19:00:00,7880.4,0.0,78.11 -2014-08-11 20:00:00,7879.4,0.0,75.98 -2014-08-11 21:00:00,7784.8,0.0,75.27 -2014-08-11 22:00:00,7446.7,0.0,74.81 -2014-08-11 23:00:00,6982.1,0.0,74.61 -2014-08-12 00:00:00,6510.6,0.0,74.12 -2014-08-12 01:00:00,6172.3,0.0,74.24 -2014-08-12 02:00:00,5940.7,0.0,73.57 -2014-08-12 03:00:00,5831.2,0.0,73.08 -2014-08-12 04:00:00,5834.5,0.0,73.08 -2014-08-12 05:00:00,6081.6,0.0,73.1 -2014-08-12 06:00:00,6600.1,0.0,73.3 -2014-08-12 07:00:00,7187.4,0.0,73.56 -2014-08-12 08:00:00,7657.2,0.0,74.59 -2014-08-12 09:00:00,7960.0,0.0,74.92 -2014-08-12 10:00:00,8164.5,0.0,75.31 -2014-08-12 11:00:00,8332.3,0.0,77.34 -2014-08-12 12:00:00,8450.4,0.0,78.41 -2014-08-12 13:00:00,8524.7,0.0,78.69 -2014-08-12 14:00:00,8523.9,0.0,78.27 -2014-08-12 15:00:00,8502.7,0.0065,77.27 -2014-08-12 16:00:00,8497.7,0.0,76.37 -2014-08-12 17:00:00,8423.4,0.0,76.92 -2014-08-12 18:00:00,8074.5,0.0,75.55 -2014-08-12 19:00:00,7859.1,0.0,74.68 -2014-08-12 20:00:00,7739.5,0.0069,74.2 -2014-08-12 21:00:00,7525.8,0.0035,74.0 -2014-08-12 22:00:00,7139.5,0.0065,74.19 -2014-08-12 23:00:00,6637.3,0.0131,72.35 -2014-08-13 00:00:00,6203.3,0.0165,72.17 -2014-08-13 01:00:00,5884.2,0.0961,71.72 -2014-08-13 02:00:00,5633.1,0.1888,69.37 -2014-08-13 03:00:00,5525.4,0.0823,69.63 -2014-08-13 04:00:00,5514.9,0.1176,69.56 -2014-08-13 05:00:00,5746.3,0.0392,69.76 -2014-08-13 06:00:00,6251.9,0.0035,69.78 -2014-08-13 07:00:00,6829.8,0.01,69.86 -2014-08-13 08:00:00,7308.3,0.0169,69.86 -2014-08-13 09:00:00,7665.1,0.0508,70.56 -2014-08-13 10:00:00,7872.4,0.0,71.35 -2014-08-13 11:00:00,7980.4,0.0,71.59 -2014-08-13 12:00:00,8093.0,0.0,73.24 -2014-08-13 13:00:00,8155.9,0.0,74.37 -2014-08-13 14:00:00,8296.2,0.0,75.74 -2014-08-13 15:00:00,8496.2,0.0,79.19 -2014-08-13 16:00:00,8555.2,0.0,80.78 -2014-08-13 17:00:00,8509.1,0.0,81.83 -2014-08-13 18:00:00,7994.2,0.0961,76.91 -2014-08-13 19:00:00,7685.7,0.0719,75.74 -2014-08-13 20:00:00,7592.5,0.0,75.57 -2014-08-13 21:00:00,7393.9,0.0,74.93 -2014-08-13 22:00:00,7039.2,0.0,74.42 -2014-08-13 23:00:00,6532.8,0.0,74.1 -2014-08-14 00:00:00,6009.3,0.0,72.56 -2014-08-14 01:00:00,5616.4,0.0,71.35 -2014-08-14 02:00:00,5325.1,0.0,69.74 -2014-08-14 03:00:00,5163.1,0.0,68.05 -2014-08-14 04:00:00,5108.5,0.0,66.76 -2014-08-14 05:00:00,5282.3,0.0,65.69 -2014-08-14 06:00:00,5708.6,0.0,64.58 -2014-08-14 07:00:00,6229.4,0.0,63.81 -2014-08-14 08:00:00,6674.8,0.0,64.35 -2014-08-14 09:00:00,6977.0,0.0,65.42 -2014-08-14 10:00:00,7155.7,0.0,67.14 -2014-08-14 11:00:00,7283.0,0.0,69.15 -2014-08-14 12:00:00,7394.6,0.0,71.2 -2014-08-14 13:00:00,7476.3,0.0,73.18 -2014-08-14 14:00:00,7536.3,0.0,74.62 -2014-08-14 15:00:00,7596.0,0.0,76.2 -2014-08-14 16:00:00,7639.4,0.0,76.69 -2014-08-14 17:00:00,7577.1,0.0,77.62 -2014-08-14 18:00:00,7250.2,0.0,77.27 -2014-08-14 19:00:00,6985.2,0.0,76.89 -2014-08-14 20:00:00,6930.4,0.0,75.96 -2014-08-14 21:00:00,6759.3,0.0,74.96 -2014-08-14 22:00:00,6461.9,0.0,73.98 -2014-08-14 23:00:00,6023.2,0.0,71.98 -2014-08-15 00:00:00,5578.0,0.0,69.81 -2014-08-15 01:00:00,5231.2,0.0,67.42 -2014-08-15 02:00:00,5002.9,0.0,66.25 -2014-08-15 03:00:00,4858.4,0.0,65.25 -2014-08-15 04:00:00,4819.7,0.0,64.39 -2014-08-15 05:00:00,4981.2,0.0,63.32 -2014-08-15 06:00:00,5407.2,0.0,62.94 -2014-08-15 07:00:00,5963.3,0.0,62.62 -2014-08-15 08:00:00,6451.4,0.0,64.07 -2014-08-15 09:00:00,6782.7,0.0,66.44 -2014-08-15 10:00:00,6959.1,0.0,67.61 -2014-08-15 11:00:00,7065.2,0.0,69.01 -2014-08-15 12:00:00,7124.4,0.0,70.35 -2014-08-15 13:00:00,7131.0,0.0,71.01 -2014-08-15 14:00:00,7116.4,0.0,70.96 -2014-08-15 15:00:00,7047.7,0.0,71.28 -2014-08-15 16:00:00,6966.4,0.0,71.1 -2014-08-15 17:00:00,6827.6,0.0,70.54 -2014-08-15 18:00:00,6546.9,0.0,70.35 -2014-08-15 19:00:00,6358.8,0.0,70.0 -2014-08-15 20:00:00,6288.6,0.0,69.81 -2014-08-15 21:00:00,6111.5,0.0,69.69 -2014-08-15 22:00:00,5854.6,0.0,69.49 -2014-08-15 23:00:00,5534.6,0.0,69.3 -2014-08-16 00:00:00,5191.2,0.0,69.13 -2014-08-16 01:00:00,4951.1,0.0,68.81 -2014-08-16 02:00:00,4769.5,0.0,67.22 -2014-08-16 03:00:00,4658.6,0.0,66.42 -2014-08-16 04:00:00,4595.1,0.0,65.44 -2014-08-16 05:00:00,4613.1,0.0,64.79 -2014-08-16 06:00:00,4697.5,0.0,63.93 -2014-08-16 07:00:00,4955.0,0.0,64.22 -2014-08-16 08:00:00,5312.9,0.0,66.03 -2014-08-16 09:00:00,5638.4,0.0,67.8 -2014-08-16 10:00:00,5878.6,0.0,69.45 -2014-08-16 11:00:00,6051.1,0.0,71.96 -2014-08-16 12:00:00,6154.9,0.0,74.35 -2014-08-16 13:00:00,6187.8,0.0,75.54 -2014-08-16 14:00:00,6227.7,0.0,76.16 -2014-08-16 15:00:00,6214.3,0.0,76.81 -2014-08-16 16:00:00,6229.2,0.0,76.08 -2014-08-16 17:00:00,6255.7,0.0,77.03 -2014-08-16 18:00:00,6205.6,0.0,77.76 -2014-08-16 19:00:00,6146.2,0.0,76.69 -2014-08-16 20:00:00,6212.5,0.0,75.3 -2014-08-16 21:00:00,6129.8,0.0,74.11 -2014-08-16 22:00:00,5956.7,0.0,73.67 -2014-08-16 23:00:00,5698.6,0.0,73.78 -2014-08-17 00:00:00,5442.7,0.0,73.33 -2014-08-17 01:00:00,5208.6,0.0,72.45 -2014-08-17 02:00:00,5039.8,0.0,71.93 -2014-08-17 03:00:00,4915.6,0.0,71.54 -2014-08-17 04:00:00,4837.1,0.0,70.3 -2014-08-17 05:00:00,4816.6,0.0,69.42 -2014-08-17 06:00:00,4839.9,0.0,67.93 -2014-08-17 07:00:00,5021.3,0.0,68.63 -2014-08-17 08:00:00,5260.8,0.0,69.48 -2014-08-17 09:00:00,5509.8,0.0035,68.63 -2014-08-17 10:00:00,5878.6,0.0065,70.29 -2014-08-17 11:00:00,6179.4,0.0,73.58 -2014-08-17 12:00:00,6366.6,0.0,74.93 -2014-08-17 13:00:00,6456.8,0.0,77.85 -2014-08-17 14:00:00,6494.3,0.0,78.63 -2014-08-17 15:00:00,6551.2,0.0,79.76 -2014-08-17 16:00:00,6577.5,0.0,80.96 -2014-08-17 17:00:00,6565.4,0.0,80.49 -2014-08-17 18:00:00,6499.7,0.0,80.25 -2014-08-17 19:00:00,6434.7,0.0,79.18 -2014-08-17 20:00:00,6524.2,0.0,77.35 -2014-08-17 21:00:00,6466.4,0.0,75.61 -2014-08-17 22:00:00,6236.9,0.0,74.28 -2014-08-17 23:00:00,5884.8,0.0,72.42 -2014-08-18 00:00:00,5523.6,0.0,70.74 -2014-08-18 01:00:00,5247.9,0.0,69.63 -2014-08-18 02:00:00,5057.2,0.0,68.49 -2014-08-18 03:00:00,4963.7,0.0,67.22 -2014-08-18 04:00:00,4963.2,0.0,66.44 -2014-08-18 05:00:00,5174.2,0.0,65.44 -2014-08-18 06:00:00,5587.3,0.0,64.06 -2014-08-18 07:00:00,6148.4,0.0,63.71 -2014-08-18 08:00:00,6669.5,0.0,66.23 -2014-08-18 09:00:00,7048.5,0.0,68.14 -2014-08-18 10:00:00,7318.0,0.0,70.8 -2014-08-18 11:00:00,7483.7,0.0,72.68 -2014-08-18 12:00:00,7581.5,0.0,74.19 -2014-08-18 13:00:00,7675.7,0.0,75.12 -2014-08-18 14:00:00,7758.2,0.0,76.98 -2014-08-18 15:00:00,7827.2,0.0,77.66 -2014-08-18 16:00:00,7888.8,0.0,79.05 -2014-08-18 17:00:00,7838.1,0.0,79.67 -2014-08-18 18:00:00,7501.6,0.0,80.18 -2014-08-18 19:00:00,7245.5,0.0,79.45 -2014-08-18 20:00:00,7182.8,0.0,77.16 -2014-08-18 21:00:00,7011.5,0.0,75.36 -2014-08-18 22:00:00,6689.3,0.0,74.53 -2014-08-18 23:00:00,6230.9,0.0,73.46 -2014-08-19 00:00:00,5775.5,0.0,71.26 -2014-08-19 01:00:00,5456.2,0.0,69.5 -2014-08-19 02:00:00,5227.1,0.0,68.92 -2014-08-19 03:00:00,5108.3,0.0,68.26 -2014-08-19 04:00:00,5098.6,0.0,67.14 -2014-08-19 05:00:00,5303.0,0.0,66.16 -2014-08-19 06:00:00,5739.2,0.0,65.63 -2014-08-19 07:00:00,6317.4,0.0,65.94 -2014-08-19 08:00:00,6836.4,0.0,67.47 -2014-08-19 09:00:00,7240.3,0.0,70.29 -2014-08-19 10:00:00,7523.7,0.0,72.12 -2014-08-19 11:00:00,7739.1,0.0,73.32 -2014-08-19 12:00:00,7887.5,0.0,74.64 -2014-08-19 13:00:00,7906.8,0.0,75.76 -2014-08-19 14:00:00,7801.0,0.0,76.63 -2014-08-19 15:00:00,8018.6,0.0,77.94 -2014-08-19 16:00:00,8147.6,0.0,78.19 -2014-08-19 17:00:00,8106.9,0.0,76.95 -2014-08-19 18:00:00,7737.5,0.0,76.75 -2014-08-19 19:00:00,7461.9,0.0,75.68 -2014-08-19 20:00:00,7385.3,0.0,73.92 -2014-08-19 21:00:00,7216.7,0.0,73.4 -2014-08-19 22:00:00,6902.6,0.0,72.72 -2014-08-19 23:00:00,6465.2,0.0,71.91 -2014-08-20 00:00:00,6005.3,0.0,71.72 -2014-08-20 01:00:00,5697.5,0.0,71.4 -2014-08-20 02:00:00,5491.7,0.0,70.65 -2014-08-20 03:00:00,5383.3,0.0,70.35 -2014-08-20 04:00:00,5380.8,0.0,70.54 -2014-08-20 05:00:00,5635.1,0.0,70.67 -2014-08-20 06:00:00,6144.3,0.0,70.54 -2014-08-20 07:00:00,6747.2,0.0,71.6 -2014-08-20 08:00:00,7267.1,0.0,72.2 -2014-08-20 09:00:00,7673.7,0.0,73.42 -2014-08-20 10:00:00,7940.3,0.0,74.83 -2014-08-20 11:00:00,8125.8,0.0,76.85 -2014-08-20 12:00:00,8231.4,0.0,78.8 -2014-08-20 13:00:00,8325.7,0.0,79.02 -2014-08-20 14:00:00,8375.2,0.0,79.71 -2014-08-20 15:00:00,8404.1,0.0,79.95 -2014-08-20 16:00:00,8400.2,0.0,79.41 -2014-08-20 17:00:00,8267.5,0.0,79.41 -2014-08-20 18:00:00,7790.8,0.0,78.34 -2014-08-20 19:00:00,7479.0,0.0,76.03 -2014-08-20 20:00:00,7392.9,0.0,74.61 -2014-08-20 21:00:00,7197.9,0.0,73.19 -2014-08-20 22:00:00,6886.1,0.0,72.6 -2014-08-20 23:00:00,6473.8,0.0,72.74 -2014-08-21 00:00:00,6070.4,0.0,72.54 -2014-08-21 01:00:00,5753.2,0.0,72.57 -2014-08-21 02:00:00,5553.8,0.0,72.42 -2014-08-21 03:00:00,5439.2,0.0,72.03 -2014-08-21 04:00:00,5431.4,0.0,72.1 -2014-08-21 05:00:00,5630.8,0.0277,70.9 -2014-08-21 06:00:00,6120.3,0.0527,69.02 -2014-08-21 07:00:00,6699.6,0.0,69.37 -2014-08-21 08:00:00,7261.0,0.0,71.15 -2014-08-21 09:00:00,7709.2,0.0,73.1 -2014-08-21 10:00:00,7946.6,0.0,74.45 -2014-08-21 11:00:00,8122.0,0.0,76.51 -2014-08-21 12:00:00,8249.1,0.0,78.01 -2014-08-21 13:00:00,8341.9,0.0,76.91 -2014-08-21 14:00:00,8339.1,0.0,78.34 -2014-08-21 15:00:00,8284.9,0.0,78.0 -2014-08-21 16:00:00,8214.8,0.0,78.51 -2014-08-21 17:00:00,8016.6,0.0,76.75 -2014-08-21 18:00:00,7592.6,0.0,76.71 -2014-08-21 19:00:00,7346.3,0.0,75.15 -2014-08-21 20:00:00,7321.1,0.0,74.08 -2014-08-21 21:00:00,7169.0,0.0,72.73 -2014-08-21 22:00:00,6894.8,0.0,72.54 -2014-08-21 23:00:00,6443.8,0.0235,71.8 -2014-08-22 00:00:00,5964.7,0.0804,69.5 -2014-08-22 01:00:00,5644.5,0.7198,67.57 -2014-08-22 02:00:00,5433.4,0.0231,67.86 -2014-08-22 03:00:00,5318.2,0.0,68.17 -2014-08-22 04:00:00,5318.5,0.0,67.74 -2014-08-22 05:00:00,5549.8,0.0,67.88 -2014-08-22 06:00:00,6033.3,0.0,68.11 -2014-08-22 07:00:00,6601.0,0.0,68.42 -2014-08-22 08:00:00,7094.3,0.0,69.74 -2014-08-22 09:00:00,7419.3,0.0,70.19 -2014-08-22 10:00:00,7582.0,0.0,71.97 -2014-08-22 11:00:00,7641.8,0.0,71.83 -2014-08-22 12:00:00,7735.3,0.0,73.12 -2014-08-22 13:00:00,7815.9,0.0,74.74 -2014-08-22 14:00:00,7830.2,0.0,74.37 -2014-08-22 15:00:00,7771.5,0.0,74.71 -2014-08-22 16:00:00,7655.3,0.0,72.98 -2014-08-22 17:00:00,7415.6,0.0065,69.81 -2014-08-22 18:00:00,7071.8,0.0065,69.61 -2014-08-22 19:00:00,6891.4,0.0,70.74 -2014-08-22 20:00:00,6810.6,0.0,71.19 -2014-08-22 21:00:00,6597.4,0.0,70.91 -2014-08-22 22:00:00,6325.7,0.0,70.91 -2014-08-22 23:00:00,5979.1,0.0,70.7 -2014-08-23 00:00:00,5605.7,0.0,70.37 -2014-08-23 01:00:00,5319.0,0.0,69.37 -2014-08-23 02:00:00,5120.8,0.0,68.91 -2014-08-23 03:00:00,4998.3,0.0,67.98 -2014-08-23 04:00:00,4947.6,0.0,67.54 -2014-08-23 05:00:00,4975.4,0.0,67.18 -2014-08-23 06:00:00,5073.1,0.0,66.99 -2014-08-23 07:00:00,5322.9,0.0,67.56 -2014-08-23 08:00:00,5641.2,0.0,68.37 -2014-08-23 09:00:00,5929.6,0.0,68.95 -2014-08-23 10:00:00,6132.1,0.0,69.74 -2014-08-23 11:00:00,6247.8,0.0,70.6 -2014-08-23 12:00:00,6296.7,0.0,70.78 -2014-08-23 13:00:00,6261.0,0.0,71.95 -2014-08-23 14:00:00,6229.5,0.0,72.76 -2014-08-23 15:00:00,6212.3,0.0,72.8 -2014-08-23 16:00:00,6167.9,0.0,72.85 -2014-08-23 17:00:00,6126.2,0.0,71.34 -2014-08-23 18:00:00,6065.4,0.0,70.92 -2014-08-23 19:00:00,6053.8,0.0,70.5 -2014-08-23 20:00:00,6112.1,0.0,70.17 -2014-08-23 21:00:00,6026.7,0.0,69.84 -2014-08-23 22:00:00,5859.4,0.0,70.03 -2014-08-23 23:00:00,5641.8,0.0,70.03 -2014-08-24 00:00:00,5383.3,0.0,70.01 -2014-08-24 01:00:00,5140.6,0.0,68.89 -2014-08-24 02:00:00,4941.7,0.0,68.41 -2014-08-24 03:00:00,4801.2,0.0,67.48 -2014-08-24 04:00:00,4729.6,0.0,66.62 -2014-08-24 05:00:00,4722.5,0.0,65.47 -2014-08-24 06:00:00,4735.3,0.0,64.84 -2014-08-24 07:00:00,4940.6,0.0,64.99 -2014-08-24 08:00:00,5250.6,0.0,67.37 -2014-08-24 09:00:00,5587.7,0.0,69.61 -2014-08-24 10:00:00,5913.3,0.0,72.03 -2014-08-24 11:00:00,6133.0,0.0,74.53 -2014-08-24 12:00:00,6283.4,0.0,75.98 -2014-08-24 13:00:00,6319.2,0.0,78.07 -2014-08-24 14:00:00,6309.2,0.0,78.2 -2014-08-24 15:00:00,6356.2,0.0,76.71 -2014-08-24 16:00:00,6386.6,0.0,77.33 -2014-08-24 17:00:00,6375.8,0.0,75.83 -2014-08-24 18:00:00,6301.3,0.0,74.8 -2014-08-24 19:00:00,6244.8,0.0,73.17 -2014-08-24 20:00:00,6345.5,0.0,71.23 -2014-08-24 21:00:00,6290.6,0.0,70.35 -2014-08-24 22:00:00,6099.4,0.0,69.67 -2014-08-24 23:00:00,5804.8,0.0,69.35 -2014-08-25 00:00:00,5501.5,0.0,69.15 -2014-08-25 01:00:00,5244.1,0.0,68.65 -2014-08-25 02:00:00,5083.5,0.0,67.93 -2014-08-25 03:00:00,5005.7,0.0,67.28 -2014-08-25 04:00:00,5030.5,0.0,66.82 -2014-08-25 05:00:00,5280.1,0.0,66.11 -2014-08-25 06:00:00,5718.7,0.0,66.18 -2014-08-25 07:00:00,6316.9,0.0,66.92 -2014-08-25 08:00:00,6901.5,0.0,68.62 -2014-08-25 09:00:00,7359.8,0.0,71.86 -2014-08-25 10:00:00,7686.6,0.0,75.51 -2014-08-25 11:00:00,7877.8,0.0,78.57 -2014-08-25 12:00:00,8021.5,0.0,80.91 -2014-08-25 13:00:00,8196.1,0.0,82.15 -2014-08-25 14:00:00,8336.7,0.0,83.39 -2014-08-25 15:00:00,8456.5,0.0,84.43 -2014-08-25 16:00:00,8520.9,0.0,85.06 -2014-08-25 17:00:00,8452.7,0.0,84.27 -2014-08-25 18:00:00,8101.6,0.0,84.23 -2014-08-25 19:00:00,7875.9,0.0,84.56 -2014-08-25 20:00:00,7813.5,0.0,82.49 -2014-08-25 21:00:00,7617.6,0.0,81.25 -2014-08-25 22:00:00,7266.5,0.0,79.65 -2014-08-25 23:00:00,6809.1,0.0,78.65 -2014-08-26 00:00:00,6342.5,0.0,76.76 -2014-08-26 01:00:00,5999.2,0.0,75.41 -2014-08-26 02:00:00,5748.0,0.0,74.68 -2014-08-26 03:00:00,5624.7,0.0,73.5 -2014-08-26 04:00:00,5624.0,0.0,72.29 -2014-08-26 05:00:00,5862.2,0.0,71.18 -2014-08-26 06:00:00,6352.0,0.0,70.53 -2014-08-26 07:00:00,7009.4,0.0,71.45 -2014-08-26 08:00:00,7618.8,0.0,73.01 -2014-08-26 09:00:00,8081.6,0.0,75.08 -2014-08-26 10:00:00,8415.7,0.0,76.7 -2014-08-26 11:00:00,8668.1,0.0,78.59 -2014-08-26 12:00:00,8820.2,0.0,80.34 -2014-08-26 13:00:00,8921.2,0.0,81.56 -2014-08-26 14:00:00,9028.7,0.0,82.23 -2014-08-26 15:00:00,9058.3,0.0,83.38 -2014-08-26 16:00:00,9026.1,0.0,82.47 -2014-08-26 17:00:00,8857.6,0.0,81.47 -2014-08-26 18:00:00,8379.1,0.0,80.17 -2014-08-26 19:00:00,8050.4,0.0,78.1 -2014-08-26 20:00:00,7948.3,0.0,75.65 -2014-08-26 21:00:00,7714.6,0.0,74.74 -2014-08-26 22:00:00,7324.7,0.0,74.19 -2014-08-26 23:00:00,6793.2,0.0,73.49 -2014-08-27 00:00:00,6270.2,0.0,73.15 -2014-08-27 01:00:00,5910.6,0.0,72.3 -2014-08-27 02:00:00,5682.8,0.0,71.61 -2014-08-27 03:00:00,5575.1,0.0,71.4 -2014-08-27 04:00:00,5588.9,0.0,71.38 -2014-08-27 05:00:00,5837.7,0.0,70.84 -2014-08-27 06:00:00,6322.6,0.0,70.31 -2014-08-27 07:00:00,6964.3,0.0,70.52 -2014-08-27 08:00:00,7587.4,0.0,72.88 -2014-08-27 09:00:00,8071.0,0.0,75.29 -2014-08-27 10:00:00,8396.5,0.0,79.13 -2014-08-27 11:00:00,8652.4,0.0,80.04 -2014-08-27 12:00:00,8886.6,0.0,82.51 -2014-08-27 13:00:00,9058.5,0.0,84.74 -2014-08-27 14:00:00,9211.7,0.0,86.18 -2014-08-27 15:00:00,9341.0,0.0,86.74 -2014-08-27 16:00:00,9408.0,0.0,86.55 -2014-08-27 17:00:00,9315.4,0.0,86.59 -2014-08-27 18:00:00,8938.6,0.0,85.59 -2014-08-27 19:00:00,8672.7,0.0,85.11 -2014-08-27 20:00:00,8562.9,0.0,82.52 -2014-08-27 21:00:00,8323.9,0.0,80.47 -2014-08-27 22:00:00,7934.4,0.0,79.54 -2014-08-27 23:00:00,7416.9,0.0,78.18 -2014-08-28 00:00:00,6930.4,0.0,77.77 -2014-08-28 01:00:00,6579.5,0.0139,76.67 -2014-08-28 02:00:00,6336.4,0.0,75.86 -2014-08-28 03:00:00,6160.3,0.0,75.67 -2014-08-28 04:00:00,6031.8,0.0,74.96 -2014-08-28 05:00:00,6117.2,0.0,73.1 -2014-08-28 06:00:00,6467.1,0.0,71.1 -2014-08-28 07:00:00,6946.1,0.0,69.74 -2014-08-28 08:00:00,7368.5,0.0,69.35 -2014-08-28 09:00:00,7712.7,0.0,70.76 -2014-08-28 10:00:00,7954.2,0.0,72.3 -2014-08-28 11:00:00,8098.0,0.0,74.02 -2014-08-28 12:00:00,8218.9,0.0,76.22 -2014-08-28 13:00:00,8311.7,0.0,77.8 -2014-08-28 14:00:00,8345.0,0.0,78.61 -2014-08-28 15:00:00,8358.2,0.0,79.17 -2014-08-28 16:00:00,8343.9,0.0,79.54 -2014-08-28 17:00:00,8207.4,0.0,79.17 -2014-08-28 18:00:00,7759.4,0.0,78.42 -2014-08-28 19:00:00,7450.8,0.0,76.67 -2014-08-28 20:00:00,7312.6,0.0,75.28 -2014-08-28 21:00:00,6960.3,0.0,72.76 -2014-08-28 22:00:00,6529.9,0.0,70.42 -2014-08-28 23:00:00,6068.5,0.0,68.76 -2014-08-29 00:00:00,5640.7,0.0,67.76 -2014-08-29 01:00:00,5342.5,0.0,66.93 -2014-08-29 02:00:00,5134.5,0.0,65.93 -2014-08-29 03:00:00,5012.9,0.0,64.93 -2014-08-29 04:00:00,4987.2,0.0,64.2 -2014-08-29 05:00:00,5169.3,0.0,63.74 -2014-08-29 06:00:00,5607.5,0.0,62.88 -2014-08-29 07:00:00,6155.0,0.0,62.93 -2014-08-29 08:00:00,6656.1,0.0,65.05 -2014-08-29 09:00:00,7012.5,0.0,66.75 -2014-08-29 10:00:00,7226.7,0.0,69.29 -2014-08-29 11:00:00,7350.1,0.0,71.17 -2014-08-29 12:00:00,7406.7,0.0,72.69 -2014-08-29 13:00:00,7483.1,0.0,72.94 -2014-08-29 14:00:00,7541.6,0.0,74.85 -2014-08-29 15:00:00,7571.9,0.0,76.21 -2014-08-29 16:00:00,7550.8,0.0,76.31 -2014-08-29 17:00:00,7408.6,0.0,75.15 -2014-08-29 18:00:00,6996.3,0.0,73.54 -2014-08-29 19:00:00,6779.4,0.0,71.92 -2014-08-29 20:00:00,6669.6,0.0,70.71 -2014-08-29 21:00:00,6452.0,0.0,69.72 -2014-08-29 22:00:00,6148.3,0.0,69.4 -2014-08-29 23:00:00,5795.2,0.0,69.04 -2014-08-30 00:00:00,5471.0,0.0,68.72 -2014-08-30 01:00:00,5214.5,0.0,66.97 -2014-08-30 02:00:00,5029.5,0.0,67.16 -2014-08-30 03:00:00,4912.1,0.0,67.02 -2014-08-30 04:00:00,4857.2,0.0,66.29 -2014-08-30 05:00:00,4888.1,0.0,66.29 -2014-08-30 06:00:00,4975.1,0.0,65.72 -2014-08-30 07:00:00,5235.2,0.0,65.85 -2014-08-30 08:00:00,5631.4,0.0,68.16 -2014-08-30 09:00:00,5969.4,0.0,72.11 -2014-08-30 10:00:00,6243.3,0.0,71.96 -2014-08-30 11:00:00,6429.8,0.0,73.39 -2014-08-30 12:00:00,6535.2,0.0,74.93 -2014-08-30 13:00:00,6535.1,0.0,75.07 -2014-08-30 14:00:00,6525.9,0.0,75.03 -2014-08-30 15:00:00,6502.9,0.0,75.34 -2014-08-30 16:00:00,6449.0,0.0,75.15 -2014-08-30 17:00:00,6425.3,0.0,74.47 -2014-08-30 18:00:00,6401.9,0.0,74.47 -2014-08-30 19:00:00,6466.0,0.0,74.4 -2014-08-30 20:00:00,6525.8,0.0,74.05 -2014-08-30 21:00:00,6452.7,0.0,74.19 -2014-08-30 22:00:00,6278.0,0.0,73.68 -2014-08-30 23:00:00,6051.9,0.0,73.54 -2014-08-31 00:00:00,5789.7,0.0,73.68 -2014-08-31 01:00:00,5554.1,0.0,73.29 -2014-08-31 02:00:00,5380.3,0.0,73.35 -2014-08-31 03:00:00,5272.6,0.0,72.81 -2014-08-31 04:00:00,5211.1,0.0,73.14 -2014-08-31 05:00:00,5233.8,0.0,73.49 -2014-08-31 06:00:00,5305.0,0.0,73.26 -2014-08-31 07:00:00,5488.2,0.0,73.61 -2014-08-31 08:00:00,5800.6,0.0,74.35 -2014-08-31 09:00:00,6170.8,0.0,74.68 -2014-08-31 10:00:00,6620.4,0.0,76.54 -2014-08-31 11:00:00,7071.1,0.0,79.62 -2014-08-31 12:00:00,7412.6,0.0,82.41 -2014-08-31 13:00:00,7632.6,0.0,84.67 -2014-08-31 14:00:00,7840.2,0.0,86.32 -2014-08-31 15:00:00,7897.9,0.0,87.23 -2014-08-31 16:00:00,7747.1,0.052,83.78 -2014-08-31 17:00:00,7444.4,0.3859,74.77 -2014-08-31 18:00:00,7405.1,0.0069,76.35 -2014-08-31 19:00:00,7460.3,0.0,77.6 -2014-08-31 20:00:00,7557.3,0.0,77.93 -2014-08-31 21:00:00,7513.1,0.0,77.59 -2014-08-31 22:00:00,7323.4,0.0035,78.08 -2014-08-31 23:00:00,7009.0,0.0,77.96 -2014-09-01 00:00:00,6639.2,0.0,77.29 -2014-09-01 01:00:00,6326.0,0.0,77.15 -2014-09-01 02:00:00,6090.6,0.0,76.17 -2014-09-01 03:00:00,5929.9,0.0,75.49 -2014-09-01 04:00:00,5877.0,0.0,75.17 -2014-09-01 05:00:00,5959.4,0.0,74.84 -2014-09-01 06:00:00,6100.4,0.0,74.96 -2014-09-01 07:00:00,6299.3,0.0,74.84 -2014-09-01 08:00:00,6675.0,0.0,75.52 -2014-09-01 09:00:00,7082.4,0.0,77.39 -2014-09-01 10:00:00,7545.9,0.0,79.41 -2014-09-01 11:00:00,7886.1,0.0,80.61 -2014-09-01 12:00:00,8089.8,0.0,82.49 -2014-09-01 13:00:00,8186.6,0.0,83.78 -2014-09-01 14:00:00,8288.9,0.0,84.2 -2014-09-01 15:00:00,8352.5,0.0,84.67 -2014-09-01 16:00:00,8389.7,0.0,85.13 -2014-09-01 17:00:00,8362.2,0.0,84.13 -2014-09-01 18:00:00,8334.8,0.0,82.39 -2014-09-01 19:00:00,8372.9,0.0,82.52 -2014-09-01 20:00:00,8508.3,0.0,81.32 -2014-09-01 21:00:00,8417.6,0.0,81.62 -2014-09-01 22:00:00,8138.3,0.0,81.3 -2014-09-01 23:00:00,7709.7,0.0,80.2 -2014-09-02 00:00:00,7277.5,0.0,79.5 -2014-09-02 01:00:00,6968.7,0.0,79.39 -2014-09-02 02:00:00,6758.2,0.0,78.64 -2014-09-02 03:00:00,6647.6,0.0,78.32 -2014-09-02 04:00:00,6640.7,0.0,77.98 -2014-09-02 05:00:00,6893.4,0.0,76.94 -2014-09-02 06:00:00,7398.8,0.0,77.13 -2014-09-02 07:00:00,8082.7,0.0,77.41 -2014-09-02 08:00:00,8816.0,0.0,78.93 -2014-09-02 09:00:00,9349.0,0.0,81.88 -2014-09-02 10:00:00,9746.4,0.0,82.12 -2014-09-02 11:00:00,10061.5,0.0,84.47 -2014-09-02 12:00:00,10301.6,0.0,86.68 -2014-09-02 13:00:00,10457.5,0.0,87.43 -2014-09-02 14:00:00,10525.2,0.0,88.71 -2014-09-02 15:00:00,10566.8,0.0,89.43 -2014-09-02 16:00:00,10572.0,0.0,89.72 -2014-09-02 17:00:00,10473.5,0.0,89.09 -2014-09-02 18:00:00,10119.6,0.0,88.9 -2014-09-02 19:00:00,9923.8,0.0,88.04 -2014-09-02 20:00:00,9859.1,0.0,87.06 -2014-09-02 21:00:00,9610.1,0.0,85.59 -2014-09-02 22:00:00,9123.6,0.0,85.14 -2014-09-02 23:00:00,8371.2,0.0,83.93 -2014-09-03 00:00:00,7681.5,0.0,81.76 -2014-09-03 01:00:00,7210.7,0.0,79.27 -2014-09-03 02:00:00,6847.7,0.0,77.84 -2014-09-03 03:00:00,6582.8,0.0,75.93 -2014-09-03 04:00:00,6501.0,0.0,74.81 -2014-09-03 05:00:00,6662.8,0.0,73.81 -2014-09-03 06:00:00,7067.6,0.0,72.63 -2014-09-03 07:00:00,7611.7,0.0,72.63 -2014-09-03 08:00:00,8149.8,0.0,73.19 -2014-09-03 09:00:00,8486.0,0.0,74.19 -2014-09-03 10:00:00,8675.0,0.0,75.94 -2014-09-03 11:00:00,8832.8,0.0,78.63 -2014-09-03 12:00:00,8959.4,0.0,79.98 -2014-09-03 13:00:00,9108.7,0.0,81.48 -2014-09-03 14:00:00,9214.3,0.0,82.48 -2014-09-03 15:00:00,9221.1,0.0,83.27 -2014-09-03 16:00:00,9235.2,0.0,82.92 -2014-09-03 17:00:00,9152.1,0.0,83.46 -2014-09-03 18:00:00,8815.9,0.0,83.16 -2014-09-03 19:00:00,8639.3,0.0,82.82 -2014-09-03 20:00:00,8596.1,0.0,81.01 -2014-09-03 21:00:00,8348.8,0.0,79.5 -2014-09-03 22:00:00,7891.9,0.0,78.19 -2014-09-03 23:00:00,7287.4,0.0,76.9 -2014-09-04 00:00:00,6738.3,0.0,76.0 -2014-09-04 01:00:00,6344.6,0.0,74.66 -2014-09-04 02:00:00,6073.2,0.0,74.27 -2014-09-04 03:00:00,5925.3,0.0,72.87 -2014-09-04 04:00:00,5896.8,0.0,72.02 -2014-09-04 05:00:00,6125.2,0.0,71.41 -2014-09-04 06:00:00,6653.3,0.0,69.86 -2014-09-04 07:00:00,7280.7,0.0,70.29 -2014-09-04 08:00:00,7828.3,0.0,72.16 -2014-09-04 09:00:00,8293.3,0.0,74.09 -2014-09-04 10:00:00,8601.4,0.0,76.68 -2014-09-04 11:00:00,8803.5,0.0,79.42 -2014-09-04 12:00:00,8976.4,0.0,80.47 -2014-09-04 13:00:00,9094.2,0.0,82.17 -2014-09-04 14:00:00,9159.5,0.0,82.83 -2014-09-04 15:00:00,9271.9,0.0,83.73 -2014-09-04 16:00:00,9335.4,0.0,82.98 -2014-09-04 17:00:00,9228.5,0.0,83.01 -2014-09-04 18:00:00,8841.6,0.0,81.41 -2014-09-04 19:00:00,8627.2,0.0,79.37 -2014-09-04 20:00:00,8569.0,0.0,78.47 -2014-09-04 21:00:00,8316.9,0.0,77.83 -2014-09-04 22:00:00,7872.3,0.0,76.96 -2014-09-04 23:00:00,7325.3,0.0,76.15 -2014-09-05 00:00:00,6794.8,0.0,75.15 -2014-09-05 01:00:00,6414.3,0.0,74.5 -2014-09-05 02:00:00,6173.7,0.0,73.47 -2014-09-05 03:00:00,6054.6,0.0,72.84 -2014-09-05 04:00:00,6101.1,0.0,72.49 -2014-09-05 05:00:00,6378.7,0.0,72.49 -2014-09-05 06:00:00,6981.4,0.0,72.63 -2014-09-05 07:00:00,7619.9,0.0,72.44 -2014-09-05 08:00:00,8202.9,0.0,73.75 -2014-09-05 09:00:00,8698.8,0.0,75.27 -2014-09-05 10:00:00,9027.0,0.0,76.8 -2014-09-05 11:00:00,9245.6,0.0,78.05 -2014-09-05 12:00:00,9450.6,0.0,80.01 -2014-09-05 13:00:00,9612.0,0.0,80.91 -2014-09-05 14:00:00,9725.8,0.0,82.2 -2014-09-05 15:00:00,9884.9,0.0,83.06 -2014-09-05 16:00:00,9900.4,0.0,82.69 -2014-09-05 17:00:00,9741.2,0.0,81.64 -2014-09-05 18:00:00,9367.7,0.0,81.22 -2014-09-05 19:00:00,9145.8,0.0,79.54 -2014-09-05 20:00:00,9003.8,0.0,78.8 -2014-09-05 21:00:00,8760.7,0.0,78.28 -2014-09-05 22:00:00,8410.0,0.0,78.17 -2014-09-05 23:00:00,7923.5,0.0,78.29 -2014-09-06 00:00:00,7441.9,0.0,78.37 -2014-09-06 01:00:00,7071.1,0.0,78.01 -2014-09-06 02:00:00,6807.7,0.0,77.62 -2014-09-06 03:00:00,6635.1,0.0,77.15 -2014-09-06 04:00:00,6538.7,0.0,76.82 -2014-09-06 05:00:00,6542.6,0.0,76.71 -2014-09-06 06:00:00,6655.7,0.0,75.96 -2014-09-06 07:00:00,6940.6,0.0,76.03 -2014-09-06 08:00:00,7357.4,0.0,77.18 -2014-09-06 09:00:00,7784.5,0.0,77.46 -2014-09-06 10:00:00,8203.6,0.0,78.86 -2014-09-06 11:00:00,8522.8,0.0,80.42 -2014-09-06 12:00:00,8859.0,0.0,82.62 -2014-09-06 13:00:00,9070.4,0.0,84.86 -2014-09-06 14:00:00,9255.1,0.0,86.81 -2014-09-06 15:00:00,9109.1,0.0,88.86 -2014-09-06 16:00:00,8686.0,0.0523,84.03 -2014-09-06 17:00:00,8470.7,0.0,81.82 -2014-09-06 18:00:00,8284.3,0.0,81.33 -2014-09-06 19:00:00,8231.9,0.0,78.77 -2014-09-06 20:00:00,8182.1,0.0,79.27 -2014-09-06 21:00:00,8016.0,0.0,79.29 -2014-09-06 22:00:00,7671.9,0.0,78.46 -2014-09-06 23:00:00,7030.8,0.0173,74.13 -2014-09-07 00:00:00,6537.4,0.0065,68.79 -2014-09-07 01:00:00,6092.7,0.0,67.17 -2014-09-07 02:00:00,5773.6,0.0,66.08 -2014-09-07 03:00:00,5577.6,0.0,66.3 -2014-09-07 04:00:00,5468.6,0.0,66.12 -2014-09-07 05:00:00,5431.9,0.0,66.3 -2014-09-07 06:00:00,5434.6,0.0,66.12 -2014-09-07 07:00:00,5587.8,0.0,66.51 -2014-09-07 08:00:00,5906.0,0.0,67.49 -2014-09-07 09:00:00,6232.6,0.0,69.17 -2014-09-07 10:00:00,6532.7,0.0,70.95 -2014-09-07 11:00:00,6745.6,0.0,72.94 -2014-09-07 12:00:00,6874.8,0.0,74.12 -2014-09-07 13:00:00,6944.7,0.0,75.46 -2014-09-07 14:00:00,7011.8,0.0,75.95 -2014-09-07 15:00:00,7061.0,0.0,76.97 -2014-09-07 16:00:00,7059.9,0.0,77.78 -2014-09-07 17:00:00,7056.8,0.0,79.44 -2014-09-07 18:00:00,6954.1,0.0,78.47 -2014-09-07 19:00:00,6987.4,0.0,77.13 -2014-09-07 20:00:00,7076.7,0.0,75.04 -2014-09-07 21:00:00,6935.8,0.0,73.82 -2014-09-07 22:00:00,6633.1,0.0,72.74 -2014-09-07 23:00:00,6213.0,0.0,71.99 -2014-09-08 00:00:00,5824.1,0.0,70.8 -2014-09-08 01:00:00,5530.3,0.0,69.87 -2014-09-08 02:00:00,5329.4,0.0,68.33 -2014-09-08 03:00:00,5241.7,0.0,67.65 -2014-09-08 04:00:00,5252.8,0.0,67.0 -2014-09-08 05:00:00,5529.9,0.0,66.16 -2014-09-08 06:00:00,6074.5,0.0,65.96 -2014-09-08 07:00:00,6672.6,0.0,65.96 -2014-09-08 08:00:00,7206.3,0.0,66.81 -2014-09-08 09:00:00,7602.0,0.0,69.27 -2014-09-08 10:00:00,7782.2,0.0,70.46 -2014-09-08 11:00:00,7876.3,0.0,71.72 -2014-09-08 12:00:00,7887.4,0.0,73.0 -2014-09-08 13:00:00,7842.9,0.0,73.5 -2014-09-08 14:00:00,7814.4,0.0,73.26 -2014-09-08 15:00:00,7761.7,0.0,74.32 -2014-09-08 16:00:00,7706.6,0.0,72.95 -2014-09-08 17:00:00,7546.2,0.0,72.93 -2014-09-08 18:00:00,7177.6,0.0,72.28 -2014-09-08 19:00:00,7066.7,0.0,71.6 -2014-09-08 20:00:00,6980.8,0.0,70.17 -2014-09-08 21:00:00,6695.2,0.0,69.4 -2014-09-08 22:00:00,6294.0,0.0,68.58 -2014-09-08 23:00:00,5797.8,0.0,67.35 -2014-09-09 00:00:00,5342.9,0.0,67.04 -2014-09-09 01:00:00,5040.1,0.0,66.37 -2014-09-09 02:00:00,4865.3,0.0,66.37 -2014-09-09 03:00:00,4792.1,0.0,65.49 -2014-09-09 04:00:00,4826.4,0.0,65.13 -2014-09-09 05:00:00,5103.1,0.0,65.11 -2014-09-09 06:00:00,5696.5,0.0,65.15 -2014-09-09 07:00:00,6285.7,0.0,64.93 -2014-09-09 08:00:00,6735.2,0.0,64.52 -2014-09-09 09:00:00,7027.5,0.0,65.39 -2014-09-09 10:00:00,7187.8,0.0,66.74 -2014-09-09 11:00:00,7280.7,0.0,68.65 -2014-09-09 12:00:00,7355.4,0.0,69.27 -2014-09-09 13:00:00,7441.0,0.0,71.32 -2014-09-09 14:00:00,7441.4,0.0,72.01 -2014-09-09 15:00:00,7447.3,0.0,70.95 -2014-09-09 16:00:00,7441.9,0.0,71.0 -2014-09-09 17:00:00,7363.4,0.0,71.0 -2014-09-09 18:00:00,7082.9,0.0,71.65 -2014-09-09 19:00:00,7012.4,0.0,71.0 -2014-09-09 20:00:00,6850.9,0.0,71.0 -2014-09-09 21:00:00,6549.3,0.0,70.65 -2014-09-09 22:00:00,6181.4,0.0,69.35 -2014-09-09 23:00:00,5721.5,0.0,68.56 -2014-09-10 00:00:00,5285.2,0.0,68.56 -2014-09-10 01:00:00,4999.2,0.0,67.86 -2014-09-10 02:00:00,4820.5,0.0,67.18 -2014-09-10 03:00:00,4720.0,0.0,65.83 -2014-09-10 04:00:00,4718.4,0.0,64.51 -2014-09-10 05:00:00,4969.2,0.0,63.85 -2014-09-10 06:00:00,5555.1,0.0,63.83 -2014-09-10 07:00:00,6152.1,0.0,63.54 -2014-09-10 08:00:00,6639.3,0.0,63.86 -2014-09-10 09:00:00,7035.6,0.0,65.25 -2014-09-10 10:00:00,7246.3,0.0,67.36 -2014-09-10 11:00:00,7394.8,0.0,68.73 -2014-09-10 12:00:00,7502.8,0.0,70.9 -2014-09-10 13:00:00,7587.4,0.0,72.9 -2014-09-10 14:00:00,7625.1,0.0,73.31 -2014-09-10 15:00:00,7688.9,0.0,74.65 -2014-09-10 16:00:00,7691.7,0.0,73.77 -2014-09-10 17:00:00,7626.0,0.0,74.0 -2014-09-10 18:00:00,7271.3,0.0,73.29 -2014-09-10 19:00:00,7157.3,0.0,71.29 -2014-09-10 20:00:00,7023.0,0.0,69.73 -2014-09-10 21:00:00,6754.0,0.0,69.39 -2014-09-10 22:00:00,6365.6,0.0,69.0 -2014-09-10 23:00:00,5913.4,0.0,69.4 -2014-09-11 00:00:00,5499.1,0.0,68.88 -2014-09-11 01:00:00,5215.0,0.0,68.93 -2014-09-11 02:00:00,5048.7,0.0,68.49 -2014-09-11 03:00:00,4983.3,0.0,68.42 -2014-09-11 04:00:00,5002.6,0.0,68.83 -2014-09-11 05:00:00,5301.5,0.0,68.69 -2014-09-11 06:00:00,5941.7,0.0,69.0 -2014-09-11 07:00:00,6627.7,0.0,69.49 -2014-09-11 08:00:00,7109.4,0.0,70.39 -2014-09-11 09:00:00,7443.6,0.0,72.03 -2014-09-11 10:00:00,7655.5,0.0,73.15 -2014-09-11 11:00:00,7860.9,0.0,74.54 -2014-09-11 12:00:00,8071.4,0.0,76.71 -2014-09-11 13:00:00,8147.8,0.0,78.13 -2014-09-11 14:00:00,8219.6,0.0,78.53 -2014-09-11 15:00:00,8403.1,0.0,80.08 -2014-09-11 16:00:00,8567.8,0.0,81.54 -2014-09-11 17:00:00,8541.3,0.0,81.86 -2014-09-11 18:00:00,8296.6,0.0,82.37 -2014-09-11 19:00:00,8204.5,0.0,81.13 -2014-09-11 20:00:00,8098.6,0.0,80.47 -2014-09-11 21:00:00,7817.6,0.0,79.82 -2014-09-11 22:00:00,7325.0,0.0,78.67 -2014-09-11 23:00:00,6552.3,0.0,75.37 -2014-09-12 00:00:00,5869.1,0.0,72.19 -2014-09-12 01:00:00,5448.5,0.0,69.69 -2014-09-12 02:00:00,5196.9,0.0,67.81 -2014-09-12 03:00:00,5029.0,0.0,66.13 -2014-09-12 04:00:00,4947.8,0.0,64.83 -2014-09-12 05:00:00,5133.3,0.0,63.56 -2014-09-12 06:00:00,5633.5,0.0,62.47 -2014-09-12 07:00:00,6152.2,0.0,61.98 -2014-09-12 08:00:00,6560.4,0.0,62.23 -2014-09-12 09:00:00,6830.5,0.0,63.21 -2014-09-12 10:00:00,7007.1,0.0,64.66 -2014-09-12 11:00:00,7147.3,0.0,66.43 -2014-09-12 12:00:00,7244.9,0.0,68.97 -2014-09-12 13:00:00,7351.0,0.0,70.48 -2014-09-12 14:00:00,7416.4,0.0,72.61 -2014-09-12 15:00:00,7517.8,0.0,74.07 -2014-09-12 16:00:00,7558.8,0.0,75.27 -2014-09-12 17:00:00,7458.3,0.0,74.85 -2014-09-12 18:00:00,7076.3,0.0,74.11 -2014-09-12 19:00:00,6905.8,0.0,72.58 -2014-09-12 20:00:00,6703.9,0.0,70.35 -2014-09-12 21:00:00,6367.9,0.0,68.47 -2014-09-12 22:00:00,5999.3,0.0,66.9 -2014-09-12 23:00:00,5563.4,0.0,64.66 -2014-09-13 00:00:00,5147.2,0.0,63.45 -2014-09-13 01:00:00,4859.0,0.0,62.59 -2014-09-13 02:00:00,4651.8,0.0,61.95 -2014-09-13 03:00:00,4547.8,0.0,61.62 -2014-09-13 04:00:00,4498.6,0.0,61.64 -2014-09-13 05:00:00,4551.7,0.0,61.37 -2014-09-13 06:00:00,4696.4,0.0,62.49 -2014-09-13 07:00:00,4932.9,0.0,62.3 -2014-09-13 08:00:00,5253.1,0.0,62.81 -2014-09-13 09:00:00,5569.4,0.0,63.99 -2014-09-13 10:00:00,5812.7,0.0,65.37 -2014-09-13 11:00:00,5946.8,0.0,67.75 -2014-09-13 12:00:00,5937.6,0.0,67.59 -2014-09-13 13:00:00,5934.6,0.0,68.12 -2014-09-13 14:00:00,5920.6,0.0,68.42 -2014-09-13 15:00:00,5897.6,0.0261,65.81 -2014-09-13 16:00:00,5885.8,0.02,64.05 -2014-09-13 17:00:00,5889.5,0.02,64.06 -2014-09-13 18:00:00,5896.1,0.0,63.71 -2014-09-13 19:00:00,5965.8,0.0035,63.32 -2014-09-13 20:00:00,5894.7,0.0,63.2 -2014-09-13 21:00:00,5718.7,0.0035,62.69 -2014-09-13 22:00:00,5476.6,0.0,63.2 -2014-09-13 23:00:00,5128.6,0.0,63.12 -2014-09-14 00:00:00,4794.4,0.0,61.39 -2014-09-14 01:00:00,4520.1,0.0,60.74 -2014-09-14 02:00:00,4310.3,0.0,59.07 -2014-09-14 03:00:00,4188.1,0.0,57.58 -2014-09-14 04:00:00,4120.8,0.0,56.93 -2014-09-14 05:00:00,4131.1,0.0,56.26 -2014-09-14 06:00:00,4185.3,0.0,54.58 -2014-09-14 07:00:00,4333.0,0.0,54.13 -2014-09-14 08:00:00,4621.2,0.0,55.05 -2014-09-14 09:00:00,4907.0,0.0,56.42 -2014-09-14 10:00:00,5124.9,0.0,57.37 -2014-09-14 11:00:00,5271.0,0.0,59.75 -2014-09-14 12:00:00,5360.7,0.0,62.84 -2014-09-14 13:00:00,5414.3,0.0,64.68 -2014-09-14 14:00:00,5447.9,0.0,66.85 -2014-09-14 15:00:00,5475.9,0.0,67.87 -2014-09-14 16:00:00,5510.0,0.0,68.96 -2014-09-14 17:00:00,5522.7,0.0,69.22 -2014-09-14 18:00:00,5533.7,0.0,67.73 -2014-09-14 19:00:00,5677.2,0.0,66.93 -2014-09-14 20:00:00,5685.7,0.0,65.95 -2014-09-14 21:00:00,5529.9,0.0,65.12 -2014-09-14 22:00:00,5268.8,0.0,63.77 -2014-09-14 23:00:00,4918.6,0.0,62.72 -2014-09-15 00:00:00,4609.4,0.0,61.14 -2014-09-15 01:00:00,4358.6,0.0,59.79 -2014-09-15 02:00:00,4211.9,0.0,57.97 -2014-09-15 03:00:00,4134.5,0.0,57.31 -2014-09-15 04:00:00,4172.6,0.0,56.77 -2014-09-15 05:00:00,4432.4,0.0,55.82 -2014-09-15 06:00:00,4955.4,0.0,55.01 -2014-09-15 07:00:00,5515.3,0.0,55.5 -2014-09-15 08:00:00,5944.6,0.0,57.47 -2014-09-15 09:00:00,6258.2,0.0,60.42 -2014-09-15 10:00:00,6445.2,0.0,62.81 -2014-09-15 11:00:00,6536.3,0.0,63.93 -2014-09-15 12:00:00,6591.6,0.0,65.44 -2014-09-15 13:00:00,6655.4,0.0,66.2 -2014-09-15 14:00:00,6689.3,0.0,67.89 -2014-09-15 15:00:00,6753.0,0.0,69.67 -2014-09-15 16:00:00,6790.8,0.0,70.38 -2014-09-15 17:00:00,6733.7,0.0,69.88 -2014-09-15 18:00:00,6442.9,0.0,69.73 -2014-09-15 19:00:00,6408.5,0.0,67.64 -2014-09-15 20:00:00,6252.6,0.0,65.69 -2014-09-15 21:00:00,5970.2,0.0,64.56 -2014-09-15 22:00:00,5603.5,0.0,64.37 -2014-09-15 23:00:00,5136.7,0.0,63.86 -2014-09-16 00:00:00,4733.6,0.0,62.97 -2014-09-16 01:00:00,4489.0,0.0,62.68 -2014-09-16 02:00:00,4337.4,0.0,62.75 -2014-09-16 03:00:00,4280.0,0.0,62.18 -2014-09-16 04:00:00,4301.4,0.0,62.27 -2014-09-16 05:00:00,4563.1,0.0,62.46 -2014-09-16 06:00:00,5178.0,0.0,62.31 -2014-09-16 07:00:00,5836.4,0.0,62.31 -2014-09-16 08:00:00,6281.0,0.0235,62.17 -2014-09-16 09:00:00,6514.5,0.0743,59.7 -2014-09-16 10:00:00,6614.7,0.1084,57.65 -2014-09-16 11:00:00,6660.7,0.0231,59.26 -2014-09-16 12:00:00,6704.4,0.0849,62.3 -2014-09-16 13:00:00,6786.5,0.0,64.52 -2014-09-16 14:00:00,6848.0,0.0,66.56 -2014-09-16 15:00:00,6886.2,0.0,67.52 -2014-09-16 16:00:00,6894.3,0.0,67.87 -2014-09-16 17:00:00,6825.9,0.0,67.31 -2014-09-16 18:00:00,6544.1,0.0,66.04 -2014-09-16 19:00:00,6475.6,0.0,66.49 -2014-09-16 20:00:00,6297.9,0.0,66.18 -2014-09-16 21:00:00,6001.0,0.0,66.37 -2014-09-16 22:00:00,5603.7,0.0,65.7 -2014-09-16 23:00:00,5129.4,0.0,64.79 -2014-09-17 00:00:00,4711.8,0.0,63.93 -2014-09-17 01:00:00,4450.0,0.0,62.93 -2014-09-17 02:00:00,4288.6,0.0,61.55 -2014-09-17 03:00:00,4214.6,0.0,60.44 -2014-09-17 04:00:00,4226.7,0.0,59.3 -2014-09-17 05:00:00,4455.3,0.0,59.25 -2014-09-17 06:00:00,5008.4,0.0,57.97 -2014-09-17 07:00:00,5586.0,0.0,58.11 -2014-09-17 08:00:00,6038.0,0.0,59.67 -2014-09-17 09:00:00,6336.4,0.0,61.71 -2014-09-17 10:00:00,6489.0,0.0,63.95 -2014-09-17 11:00:00,6595.4,0.0,65.93 -2014-09-17 12:00:00,6654.6,0.0,68.39 -2014-09-17 13:00:00,6703.6,0.0,68.47 -2014-09-17 14:00:00,6728.3,0.0,69.86 -2014-09-17 15:00:00,6805.5,0.0,71.17 -2014-09-17 16:00:00,6862.1,0.0,71.56 -2014-09-17 17:00:00,6805.3,0.0,71.63 -2014-09-17 18:00:00,6525.0,0.0,71.19 -2014-09-17 19:00:00,6478.0,0.0,69.43 -2014-09-17 20:00:00,6302.7,0.0,68.11 -2014-09-17 21:00:00,6024.1,0.0,65.94 -2014-09-17 22:00:00,5653.1,0.0,64.84 -2014-09-17 23:00:00,5201.0,0.0,63.79 -2014-09-18 00:00:00,4795.2,0.0,63.18 -2014-09-18 01:00:00,4522.4,0.0,62.17 -2014-09-18 02:00:00,4359.6,0.0,61.77 -2014-09-18 03:00:00,4283.9,0.0,60.92 -2014-09-18 04:00:00,4297.4,0.0,60.18 -2014-09-18 05:00:00,4527.6,0.0,60.55 -2014-09-18 06:00:00,5082.2,0.0,59.8 -2014-09-18 07:00:00,5662.6,0.0,58.74 -2014-09-18 08:00:00,6115.0,0.0,60.0 -2014-09-18 09:00:00,6469.4,0.0,63.24 -2014-09-18 10:00:00,6662.9,0.0,65.96 -2014-09-18 11:00:00,6798.3,0.0,68.34 -2014-09-18 12:00:00,6884.4,0.0,70.83 -2014-09-18 13:00:00,6954.9,0.0,71.64 -2014-09-18 14:00:00,6982.6,0.0,72.98 -2014-09-18 15:00:00,7022.9,0.0,73.46 -2014-09-18 16:00:00,7049.1,0.0,73.21 -2014-09-18 17:00:00,6982.2,0.0,74.93 -2014-09-18 18:00:00,6687.3,0.0,74.74 -2014-09-18 19:00:00,6630.8,0.0,72.54 -2014-09-18 20:00:00,6449.2,0.0,70.72 -2014-09-18 21:00:00,6160.8,0.0,68.64 -2014-09-18 22:00:00,5777.7,0.0,68.85 -2014-09-18 23:00:00,5316.9,0.0,66.6 -2014-09-19 00:00:00,4859.2,0.0,64.39 -2014-09-19 01:00:00,4569.7,0.0,63.27 -2014-09-19 02:00:00,4392.8,0.0,62.15 -2014-09-19 03:00:00,4300.5,0.0,60.43 -2014-09-19 04:00:00,4299.7,0.0,59.78 -2014-09-19 05:00:00,4508.5,0.0,58.38 -2014-09-19 06:00:00,5025.9,0.0,57.01 -2014-09-19 07:00:00,5531.4,0.0,55.45 -2014-09-19 08:00:00,5904.9,0.0,55.32 -2014-09-19 09:00:00,6163.0,0.0,57.15 -2014-09-19 10:00:00,6312.8,0.0,58.27 -2014-09-19 11:00:00,6386.3,0.0,59.71 -2014-09-19 12:00:00,6415.5,0.0,60.35 -2014-09-19 13:00:00,6452.5,0.0,61.52 -2014-09-19 14:00:00,6452.5,0.0,62.29 -2014-09-19 15:00:00,6480.5,0.0,63.47 -2014-09-19 16:00:00,6480.4,0.0,64.0 -2014-09-19 17:00:00,6402.9,0.0,63.26 -2014-09-19 18:00:00,6177.8,0.0,63.57 -2014-09-19 19:00:00,6146.3,0.0,62.33 -2014-09-19 20:00:00,5964.8,0.0,61.26 -2014-09-19 21:00:00,5710.5,0.0,60.58 -2014-09-19 22:00:00,5407.4,0.0,60.09 -2014-09-19 23:00:00,5055.6,0.0,60.35 -2014-09-20 00:00:00,4686.0,0.0,60.16 -2014-09-20 01:00:00,4436.9,0.0,60.23 -2014-09-20 02:00:00,4280.9,0.0,59.99 -2014-09-20 03:00:00,4180.5,0.0,60.06 -2014-09-20 04:00:00,4130.5,0.0,59.97 -2014-09-20 05:00:00,4183.1,0.0,60.02 -2014-09-20 06:00:00,4348.4,0.0,59.3 -2014-09-20 07:00:00,4614.2,0.0,60.26 -2014-09-20 08:00:00,5005.7,0.0,61.71 -2014-09-20 09:00:00,5360.2,0.0,66.03 -2014-09-20 10:00:00,5648.5,0.0,69.36 -2014-09-20 11:00:00,5839.7,0.0,70.01 -2014-09-20 12:00:00,5919.5,0.0,70.71 -2014-09-20 13:00:00,5933.8,0.0,71.22 -2014-09-20 14:00:00,5944.5,0.0,71.54 -2014-09-20 15:00:00,5941.0,0.0,71.68 -2014-09-20 16:00:00,5924.3,0.0,72.0 -2014-09-20 17:00:00,5902.4,0.0,72.17 -2014-09-20 18:00:00,5885.0,0.0,71.95 -2014-09-20 19:00:00,6014.6,0.0,70.58 -2014-09-20 20:00:00,5995.2,0.0,69.86 -2014-09-20 21:00:00,5878.7,0.0,69.05 -2014-09-20 22:00:00,5679.9,0.0,69.05 -2014-09-20 23:00:00,5400.0,0.0,69.72 -2014-09-21 00:00:00,5104.4,0.0,69.67 -2014-09-21 01:00:00,4860.2,0.0,69.86 -2014-09-21 02:00:00,4699.9,0.0396,67.99 -2014-09-21 03:00:00,4581.3,0.0327,66.66 -2014-09-21 04:00:00,4530.2,0.0261,66.65 -2014-09-21 05:00:00,4564.2,0.0,66.85 -2014-09-21 06:00:00,4668.2,0.0,66.78 -2014-09-21 07:00:00,4863.7,0.0,67.51 -2014-09-21 08:00:00,5194.2,0.0,68.58 -2014-09-21 09:00:00,5557.7,0.0,69.28 -2014-09-21 10:00:00,5895.3,0.0,70.45 -2014-09-21 11:00:00,6132.0,0.0,71.4 -2014-09-21 12:00:00,6257.5,0.0,71.81 -2014-09-21 13:00:00,6286.5,0.0,72.35 -2014-09-21 14:00:00,6315.9,0.0,72.75 -2014-09-21 15:00:00,6345.4,0.0,73.31 -2014-09-21 16:00:00,6375.5,0.0,73.94 -2014-09-21 17:00:00,6407.2,0.0,74.34 -2014-09-21 18:00:00,6431.8,0.0,75.38 -2014-09-21 19:00:00,6596.2,0.0,72.83 -2014-09-21 20:00:00,6585.3,0.0,72.25 -2014-09-21 21:00:00,6409.7,0.0,71.5 -2014-09-21 22:00:00,6144.5,0.0,70.89 -2014-09-21 23:00:00,5758.0,0.0,71.47 -2014-09-22 00:00:00,5377.6,0.0035,71.8 -2014-09-22 01:00:00,5070.1,0.0,70.96 -2014-09-22 02:00:00,4854.7,0.0,69.1 -2014-09-22 03:00:00,4740.3,0.0,68.63 -2014-09-22 04:00:00,4743.8,0.0,67.51 -2014-09-22 05:00:00,4972.0,0.0,66.58 -2014-09-22 06:00:00,5490.1,0.0,65.76 -2014-09-22 07:00:00,6021.3,0.0,64.76 -2014-09-22 08:00:00,6447.2,0.0,64.49 -2014-09-22 09:00:00,6751.9,0.0,65.68 -2014-09-22 10:00:00,6895.0,0.0,66.74 -2014-09-22 11:00:00,6926.0,0.0,67.42 -2014-09-22 12:00:00,6914.2,0.0,67.59 -2014-09-22 13:00:00,6922.5,0.0,68.24 -2014-09-22 14:00:00,6901.6,0.0,68.78 -2014-09-22 15:00:00,6922.7,0.0,69.64 -2014-09-22 16:00:00,6918.5,0.0,69.23 -2014-09-22 17:00:00,6779.3,0.0,67.59 -2014-09-22 18:00:00,6439.9,0.0,65.35 -2014-09-22 19:00:00,6391.1,0.0,62.81 -2014-09-22 20:00:00,6191.6,0.0,61.07 -2014-09-22 21:00:00,5860.2,0.0,59.63 -2014-09-22 22:00:00,5453.7,0.0,58.42 -2014-09-22 23:00:00,4977.8,0.0,57.63 -2014-09-23 00:00:00,4545.7,0.0,56.12 -2014-09-23 01:00:00,4277.2,0.0,55.93 -2014-09-23 02:00:00,4140.2,0.0,55.13 -2014-09-23 03:00:00,4065.5,0.0,53.71 -2014-09-23 04:00:00,4083.5,0.0,52.83 -2014-09-23 05:00:00,4320.7,0.0,52.88 -2014-09-23 06:00:00,4863.5,0.0,52.74 -2014-09-23 07:00:00,5440.8,0.0,52.57 -2014-09-23 08:00:00,5841.9,0.0,54.12 -2014-09-23 09:00:00,6118.4,0.0,56.51 -2014-09-23 10:00:00,6255.3,0.0,58.42 -2014-09-23 11:00:00,6346.8,0.0,60.34 -2014-09-23 12:00:00,6425.8,0.0,62.55 -2014-09-23 13:00:00,6499.6,0.0,64.5 -2014-09-23 14:00:00,6560.7,0.0,66.0 -2014-09-23 15:00:00,6640.5,0.0,68.84 -2014-09-23 16:00:00,6686.4,0.0,70.23 -2014-09-23 17:00:00,6658.1,0.0,70.79 -2014-09-23 18:00:00,6410.3,0.0,69.59 -2014-09-23 19:00:00,6404.5,0.0,67.12 -2014-09-23 20:00:00,6237.3,0.0,65.9 -2014-09-23 21:00:00,5960.5,0.0,64.56 -2014-09-23 22:00:00,5571.3,0.0,63.62 -2014-09-23 23:00:00,5092.1,0.0,62.56 -2014-09-24 00:00:00,4681.1,0.0,62.17 -2014-09-24 01:00:00,4425.7,0.0,61.58 -2014-09-24 02:00:00,4275.1,0.0,61.41 -2014-09-24 03:00:00,4208.5,0.0,61.01 -2014-09-24 04:00:00,4229.3,0.0,60.15 -2014-09-24 05:00:00,4472.9,0.0,60.01 -2014-09-24 06:00:00,5057.3,0.0,59.6 -2014-09-24 07:00:00,5645.3,0.0,59.88 -2014-09-24 08:00:00,6079.1,0.0,60.91 -2014-09-24 09:00:00,6373.8,0.0,63.65 -2014-09-24 10:00:00,6568.0,0.0,65.46 -2014-09-24 11:00:00,6656.0,0.0,66.93 -2014-09-24 12:00:00,6740.2,0.0,68.15 -2014-09-24 13:00:00,6796.0,0.0,69.17 -2014-09-24 14:00:00,6791.7,0.0,69.78 -2014-09-24 15:00:00,6784.9,0.0,69.44 -2014-09-24 16:00:00,6761.0,0.0,69.47 -2014-09-24 17:00:00,6657.7,0.0,68.81 -2014-09-24 18:00:00,6409.7,0.0,68.45 -2014-09-24 19:00:00,6396.5,0.0,67.4 -2014-09-24 20:00:00,6209.2,0.0,66.05 -2014-09-24 21:00:00,5929.7,0.0,65.72 -2014-09-24 22:00:00,5563.8,0.0,64.72 -2014-09-24 23:00:00,5140.1,0.0,64.37 -2014-09-25 00:00:00,4729.9,0.0,64.17 -2014-09-25 01:00:00,4483.5,0.0,63.56 -2014-09-25 02:00:00,4321.7,0.0,63.37 -2014-09-25 03:00:00,4248.0,0.0,63.37 -2014-09-25 04:00:00,4264.8,0.0,63.0 -2014-09-25 05:00:00,4482.2,0.0,63.49 -2014-09-25 06:00:00,5011.0,0.0,63.13 -2014-09-25 07:00:00,5550.6,0.0,63.13 -2014-09-25 08:00:00,5950.9,0.02,60.99 -2014-09-25 09:00:00,6209.5,0.0461,58.91 -2014-09-25 10:00:00,6330.8,0.0069,60.46 -2014-09-25 11:00:00,6385.2,0.0296,60.03 -2014-09-25 12:00:00,6417.5,0.0173,60.37 -2014-09-25 13:00:00,6423.5,0.0135,60.88 -2014-09-25 14:00:00,6415.5,0.0139,61.01 -2014-09-25 15:00:00,6411.6,0.0,62.01 -2014-09-25 16:00:00,6424.9,0.0,62.39 -2014-09-25 17:00:00,6391.8,0.0,62.79 -2014-09-25 18:00:00,6264.3,0.0,62.7 -2014-09-25 19:00:00,6242.5,0.0,63.25 -2014-09-25 20:00:00,6055.3,0.0,63.72 -2014-09-25 21:00:00,5809.3,0.0,63.42 -2014-09-25 22:00:00,5473.5,0.0,62.64 -2014-09-25 23:00:00,5061.0,0.0,61.97 -2014-09-26 00:00:00,4665.0,0.0,61.54 -2014-09-26 01:00:00,4403.8,0.0,61.34 -2014-09-26 02:00:00,4246.4,0.0,60.76 -2014-09-26 03:00:00,4172.7,0.0,60.97 -2014-09-26 04:00:00,4176.4,0.0,60.22 -2014-09-26 05:00:00,4376.5,0.0,59.44 -2014-09-26 06:00:00,4854.5,0.0,59.41 -2014-09-26 07:00:00,5371.6,0.0,59.39 -2014-09-26 08:00:00,5843.8,0.0,60.73 -2014-09-26 09:00:00,6196.8,0.0,63.36 -2014-09-26 10:00:00,6393.9,0.0,66.42 -2014-09-26 11:00:00,6518.8,0.0,68.49 -2014-09-26 12:00:00,6609.8,0.0,70.34 -2014-09-26 13:00:00,6681.2,0.0,72.19 -2014-09-26 14:00:00,6746.9,0.0,73.65 -2014-09-26 15:00:00,6815.2,0.0,75.41 -2014-09-26 16:00:00,6850.5,0.0,75.66 -2014-09-26 17:00:00,6789.1,0.0,76.58 -2014-09-26 18:00:00,6536.8,0.0,76.78 -2014-09-26 19:00:00,6485.8,0.0,73.95 -2014-09-26 20:00:00,6264.9,0.0,73.15 -2014-09-26 21:00:00,5988.0,0.0,71.56 -2014-09-26 22:00:00,5688.2,0.0,69.48 -2014-09-26 23:00:00,5299.8,0.0,67.85 -2014-09-27 00:00:00,4933.1,0.0,67.15 -2014-09-27 01:00:00,4671.7,0.0,65.83 -2014-09-27 02:00:00,4500.9,0.0,65.53 -2014-09-27 03:00:00,4377.6,0.0,64.51 -2014-09-27 04:00:00,4317.2,0.0,63.48 -2014-09-27 05:00:00,4377.5,0.0,63.34 -2014-09-27 06:00:00,4509.5,0.0,62.6 -2014-09-27 07:00:00,4749.6,0.0,62.93 -2014-09-27 08:00:00,5151.7,0.0,64.45 -2014-09-27 09:00:00,5498.6,0.0,67.9 -2014-09-27 10:00:00,5808.9,0.0,70.92 -2014-09-27 11:00:00,6028.1,0.0,72.71 -2014-09-27 12:00:00,6168.7,0.0,76.39 -2014-09-27 13:00:00,6235.5,0.0,78.22 -2014-09-27 14:00:00,6289.3,0.0,79.88 -2014-09-27 15:00:00,6338.0,0.0,80.87 -2014-09-27 16:00:00,6372.0,0.0,81.43 -2014-09-27 17:00:00,6357.2,0.0,82.0 -2014-09-27 18:00:00,6314.5,0.0,81.46 -2014-09-27 19:00:00,6376.0,0.0,77.34 -2014-09-27 20:00:00,6285.1,0.0,75.46 -2014-09-27 21:00:00,6121.9,0.0,72.94 -2014-09-27 22:00:00,5862.1,0.0,71.5 -2014-09-27 23:00:00,5566.6,0.0,70.01 -2014-09-28 00:00:00,5247.6,0.0,69.82 -2014-09-28 01:00:00,4954.6,0.0,68.29 -2014-09-28 02:00:00,4754.0,0.0,67.04 -2014-09-28 03:00:00,4627.0,0.0,66.09 -2014-09-28 04:00:00,4548.4,0.0,65.04 -2014-09-28 05:00:00,4553.1,0.0,64.29 -2014-09-28 06:00:00,4611.0,0.0,63.65 -2014-09-28 07:00:00,4746.0,0.0,62.97 -2014-09-28 08:00:00,5087.9,0.0,64.74 -2014-09-28 09:00:00,5469.1,0.0,67.74 -2014-09-28 10:00:00,5843.2,0.0,71.4 -2014-09-28 11:00:00,6123.9,0.0,73.97 -2014-09-28 12:00:00,6256.4,0.0,76.02 -2014-09-28 13:00:00,6357.7,0.0,78.2 -2014-09-28 14:00:00,6472.9,0.0,79.89 -2014-09-28 15:00:00,6546.0,0.0,80.96 -2014-09-28 16:00:00,6580.3,0.0,81.03 -2014-09-28 17:00:00,6527.3,0.0,78.35 -2014-09-28 18:00:00,6521.4,0.0,77.69 -2014-09-28 19:00:00,6671.3,0.0,74.49 -2014-09-28 20:00:00,6598.9,0.0,73.6 -2014-09-28 21:00:00,6412.9,0.0,72.49 -2014-09-28 22:00:00,6118.7,0.0,71.71 -2014-09-28 23:00:00,5724.6,0.0,71.06 -2014-09-29 00:00:00,5357.2,0.0,70.19 -2014-09-29 01:00:00,5113.5,0.0,69.92 -2014-09-29 02:00:00,4946.9,0.0,68.68 -2014-09-29 03:00:00,4859.9,0.0,67.53 -2014-09-29 04:00:00,4891.7,0.0,67.33 -2014-09-29 05:00:00,5177.3,0.0,67.21 -2014-09-29 06:00:00,5793.3,0.0,67.06 -2014-09-29 07:00:00,6378.8,0.0,66.87 -2014-09-29 08:00:00,6792.2,0.0,66.87 -2014-09-29 09:00:00,7130.2,0.0,67.78 -2014-09-29 10:00:00,7349.9,0.0,70.81 -2014-09-29 11:00:00,7461.0,0.0,72.49 -2014-09-29 12:00:00,7527.9,0.0,73.56 -2014-09-29 13:00:00,7588.5,0.0,75.23 -2014-09-29 14:00:00,7587.9,0.0,74.93 -2014-09-29 15:00:00,7603.1,0.0,76.73 -2014-09-29 16:00:00,7605.8,0.0,75.69 -2014-09-29 17:00:00,7576.4,0.0,75.02 -2014-09-29 18:00:00,7376.8,0.0,74.32 -2014-09-29 19:00:00,7298.9,0.0,72.84 -2014-09-29 20:00:00,7034.2,0.0,72.37 -2014-09-29 21:00:00,6746.2,0.0,72.3 -2014-09-29 22:00:00,6351.4,0.0,71.71 -2014-09-29 23:00:00,5843.4,0.0,71.25 -2014-09-30 00:00:00,5396.8,0.0,70.2 -2014-09-30 01:00:00,5078.9,0.0,69.52 -2014-09-30 02:00:00,4882.3,0.0,69.54 -2014-09-30 03:00:00,4803.8,0.0,68.8 -2014-09-30 04:00:00,4827.4,0.0,68.4 -2014-09-30 05:00:00,5100.9,0.0,68.38 -2014-09-30 06:00:00,5753.2,0.0,67.51 -2014-09-30 07:00:00,6372.7,0.0,67.23 -2014-09-30 08:00:00,6783.8,0.0,67.93 -2014-09-30 09:00:00,7031.6,0.0,68.06 -2014-09-30 10:00:00,7156.4,0.0,67.93 -2014-09-30 11:00:00,7192.8,0.0,67.78 -2014-09-30 12:00:00,7181.9,0.0,68.02 -2014-09-30 13:00:00,7156.3,0.0,67.3 -2014-09-30 14:00:00,7095.6,0.0,66.44 -2014-09-30 15:00:00,7092.0,0.0,66.44 -2014-09-30 16:00:00,7071.9,0.0,66.61 -2014-09-30 17:00:00,6997.3,0.0,66.44 -2014-09-30 18:00:00,6811.4,0.0,66.44 -2014-09-30 19:00:00,6751.5,0.0,65.13 -2014-09-30 20:00:00,6518.0,0.0,65.72 -2014-09-30 21:00:00,6222.0,0.0,64.7 -2014-09-30 22:00:00,5835.2,0.0,64.74 -2014-09-30 23:00:00,5360.9,0.0,64.32 -2014-10-01 00:00:00,4933.3,0.0196,63.57 -2014-10-01 01:00:00,4653.5,0.0131,62.37 -2014-10-01 02:00:00,4492.7,0.0,62.72 -2014-10-01 03:00:00,4417.7,0.0,62.72 -2014-10-01 04:00:00,4432.2,0.0,63.06 -2014-10-01 05:00:00,4699.1,0.0,62.2 -2014-10-01 06:00:00,5318.2,0.0,62.06 -2014-10-01 07:00:00,5931.8,0.0,61.71 -2014-10-01 08:00:00,6350.7,0.0,62.6 -2014-10-01 09:00:00,6620.4,0.0,62.21 -2014-10-01 10:00:00,6727.5,0.0,62.56 -2014-10-01 11:00:00,6777.0,0.0,63.13 -2014-10-01 12:00:00,6781.5,0.0,63.22 -2014-10-01 13:00:00,6783.9,0.0,62.86 -2014-10-01 14:00:00,6751.0,0.0,63.66 -2014-10-01 15:00:00,6781.0,0.0,63.74 -2014-10-01 16:00:00,6783.5,0.0,63.72 -2014-10-01 17:00:00,6736.8,0.0,63.39 -2014-10-01 18:00:00,6569.2,0.0,64.39 -2014-10-01 19:00:00,6498.4,0.0,65.21 -2014-10-01 20:00:00,6270.0,0.0,64.54 -2014-10-01 21:00:00,5980.9,0.0,63.86 -2014-10-01 22:00:00,5582.3,0.0,64.08 -2014-10-01 23:00:00,5114.6,0.0,62.52 -2014-10-02 00:00:00,4709.0,0.0,61.65 -2014-10-02 01:00:00,4458.1,0.0,61.32 -2014-10-02 02:00:00,4300.0,0.0,61.02 -2014-10-02 03:00:00,4228.9,0.0,60.81 -2014-10-02 04:00:00,4248.7,0.0,61.32 -2014-10-02 05:00:00,4497.0,0.0,61.2 -2014-10-02 06:00:00,5106.7,0.0,61.32 -2014-10-02 07:00:00,5719.6,0.0,61.13 -2014-10-02 08:00:00,6127.8,0.0,61.2 -2014-10-02 09:00:00,6394.9,0.0,62.0 -2014-10-02 10:00:00,6503.9,0.0,62.79 -2014-10-02 11:00:00,6551.6,0.0,63.12 -2014-10-02 12:00:00,6578.3,0.0,64.12 -2014-10-02 13:00:00,6614.1,0.0,66.21 -2014-10-02 14:00:00,6635.0,0.0,66.1 -2014-10-02 15:00:00,6661.7,0.0,67.26 -2014-10-02 16:00:00,6672.8,0.0,66.76 -2014-10-02 17:00:00,6646.1,0.0,66.59 -2014-10-02 18:00:00,6500.3,0.0,65.72 -2014-10-02 19:00:00,6436.4,0.0,65.23 -2014-10-02 20:00:00,6208.2,0.0,64.43 -2014-10-02 21:00:00,5923.5,0.0,63.62 -2014-10-02 22:00:00,5556.2,0.0,63.23 -2014-10-02 23:00:00,5115.1,0.0,63.18 -2014-10-03 00:00:00,4723.7,0.0,62.99 -2014-10-03 01:00:00,4467.6,0.0,63.04 -2014-10-03 02:00:00,4292.2,0.0,62.01 -2014-10-03 03:00:00,4203.9,0.0,61.18 -2014-10-03 04:00:00,4226.8,0.0,59.81 -2014-10-03 05:00:00,4425.1,0.0,58.64 -2014-10-03 06:00:00,4996.5,0.0,57.64 -2014-10-03 07:00:00,5535.3,0.0,56.99 -2014-10-03 08:00:00,5954.1,0.0,58.38 -2014-10-03 09:00:00,6259.1,0.0,60.36 -2014-10-03 10:00:00,6405.2,0.0,61.6 -2014-10-03 11:00:00,6514.7,0.0,63.54 -2014-10-03 12:00:00,6574.0,0.0,64.36 -2014-10-03 13:00:00,6615.0,0.0,65.22 -2014-10-03 14:00:00,6618.6,0.0,65.9 -2014-10-03 15:00:00,6641.3,0.0,66.92 -2014-10-03 16:00:00,6622.5,0.0,67.17 -2014-10-03 17:00:00,6494.9,0.0,65.36 -2014-10-03 18:00:00,6267.9,0.0,63.26 -2014-10-03 19:00:00,6191.4,0.0,62.05 -2014-10-03 20:00:00,5979.4,0.0,61.86 -2014-10-03 21:00:00,5726.6,0.0,61.72 -2014-10-03 22:00:00,5441.7,0.0,62.09 -2014-10-03 23:00:00,5079.4,0.0,62.79 -2014-10-04 00:00:00,4727.3,0.0,62.91 -2014-10-04 01:00:00,4488.7,0.0,63.09 -2014-10-04 02:00:00,4336.6,0.0,63.37 -2014-10-04 03:00:00,4256.9,0.0,63.98 -2014-10-04 04:00:00,4242.8,0.01,63.32 -2014-10-04 05:00:00,4297.8,0.0,64.12 -2014-10-04 06:00:00,4484.7,0.0104,63.93 -2014-10-04 07:00:00,4726.3,0.0231,63.32 -2014-10-04 08:00:00,5059.7,0.0331,63.83 -2014-10-04 09:00:00,5386.7,0.0304,64.32 -2014-10-04 10:00:00,5639.0,0.1023,64.7 -2014-10-04 11:00:00,5808.5,0.4321,65.98 -2014-10-04 12:00:00,5889.6,0.1211,66.81 -2014-10-04 13:00:00,5891.1,0.0273,68.94 -2014-10-04 14:00:00,5866.0,0.0065,68.47 -2014-10-04 15:00:00,5793.3,0.0,67.46 -2014-10-04 16:00:00,5743.6,0.0,68.44 -2014-10-04 17:00:00,5671.1,0.0,68.7 -2014-10-04 18:00:00,5667.1,0.0,68.03 -2014-10-04 19:00:00,5701.3,0.0,65.0 -2014-10-04 20:00:00,5543.0,0.0,61.32 -2014-10-04 21:00:00,5336.1,0.0,59.44 -2014-10-04 22:00:00,5099.9,0.0,58.26 -2014-10-04 23:00:00,4802.5,0.0,56.32 -2014-10-05 00:00:00,4488.7,0.0,54.14 -2014-10-05 01:00:00,4235.1,0.0,52.14 -2014-10-05 02:00:00,4054.7,0.0,50.67 -2014-10-05 03:00:00,3938.2,0.0,49.65 -2014-10-05 04:00:00,3892.0,0.0,48.46 -2014-10-05 05:00:00,3916.3,0.0,48.46 -2014-10-05 06:00:00,4014.9,0.0,47.26 -2014-10-05 07:00:00,4145.8,0.0,46.46 -2014-10-05 08:00:00,4402.8,0.0,46.83 -2014-10-05 09:00:00,4669.7,0.0,48.22 -2014-10-05 10:00:00,4882.3,0.0,49.62 -2014-10-05 11:00:00,4992.2,0.0,51.66 -2014-10-05 12:00:00,5049.0,0.0,53.35 -2014-10-05 13:00:00,5061.7,0.0,55.54 -2014-10-05 14:00:00,5064.8,0.0,57.03 -2014-10-05 15:00:00,5077.0,0.0,58.66 -2014-10-05 16:00:00,5101.5,0.0,59.61 -2014-10-05 17:00:00,5137.6,0.0,59.96 -2014-10-05 18:00:00,5280.8,0.0,58.88 -2014-10-05 19:00:00,5468.2,0.0,57.3 -2014-10-05 20:00:00,5402.4,0.0,56.12 -2014-10-05 21:00:00,5229.3,0.0,55.26 -2014-10-05 22:00:00,4981.3,0.0,54.55 -2014-10-05 23:00:00,4608.2,0.0,54.18 -2014-10-06 00:00:00,4289.6,0.0,53.86 -2014-10-06 01:00:00,4079.5,0.0,52.5 -2014-10-06 02:00:00,3963.1,0.0,51.27 -2014-10-06 03:00:00,3915.7,0.0,51.89 -2014-10-06 04:00:00,3950.0,0.0,51.05 -2014-10-06 05:00:00,4206.6,0.0,51.41 -2014-10-06 06:00:00,4776.7,0.0,51.05 -2014-10-06 07:00:00,5340.1,0.0,51.03 -2014-10-06 08:00:00,5739.3,0.0,52.66 -2014-10-06 09:00:00,5993.6,0.0,58.06 -2014-10-06 10:00:00,6120.9,0.0,61.76 -2014-10-06 11:00:00,6222.3,0.0,64.27 -2014-10-06 12:00:00,6272.9,0.0,65.47 -2014-10-06 13:00:00,6323.3,0.0,67.01 -2014-10-06 14:00:00,6326.6,0.0,67.57 -2014-10-06 15:00:00,6359.2,0.0,67.66 -2014-10-06 16:00:00,6383.3,0.0,68.18 -2014-10-06 17:00:00,6353.1,0.0,66.73 -2014-10-06 18:00:00,6253.4,0.0,66.24 -2014-10-06 19:00:00,6255.3,0.0,65.0 -2014-10-06 20:00:00,6036.5,0.0,65.0 -2014-10-06 21:00:00,5769.8,0.0,64.46 -2014-10-06 22:00:00,5398.7,0.0,64.34 -2014-10-06 23:00:00,4933.4,0.0,64.46 -2014-10-07 00:00:00,4539.8,0.0,64.65 -2014-10-07 01:00:00,4298.2,0.0,64.29 -2014-10-07 02:00:00,4180.1,0.0,64.95 -2014-10-07 03:00:00,4134.4,0.0,65.49 -2014-10-07 04:00:00,4173.2,0.0,65.83 -2014-10-07 05:00:00,4428.6,0.0,65.95 -2014-10-07 06:00:00,4894.5,0.0,66.49 -2014-10-07 07:00:00,5607.5,0.0,65.95 -2014-10-07 08:00:00,6051.4,0.0,66.02 -2014-10-07 09:00:00,6303.4,0.0,66.37 -2014-10-07 10:00:00,6423.9,0.0,66.91 -2014-10-07 11:00:00,6503.2,0.0,67.02 -2014-10-07 12:00:00,6532.5,0.0,67.59 -2014-10-07 13:00:00,6559.7,0.0,68.73 -2014-10-07 14:00:00,6581.0,0.0,70.18 -2014-10-07 15:00:00,6593.1,0.0,70.22 -2014-10-07 16:00:00,6601.9,0.0,71.0 -2014-10-07 17:00:00,6567.0,0.0,70.41 -2014-10-07 18:00:00,6491.7,0.0,69.4 -2014-10-07 19:00:00,6482.3,0.0,67.58 -2014-10-07 20:00:00,6250.7,0.0,66.88 -2014-10-07 21:00:00,5982.2,0.0,66.39 -2014-10-07 22:00:00,5597.1,0.0,67.0 -2014-10-07 23:00:00,5129.3,0.0,67.37 -2014-10-08 00:00:00,4716.3,0.01,65.63 -2014-10-08 01:00:00,4460.4,0.02,64.81 -2014-10-08 02:00:00,4336.0,0.0196,66.32 -2014-10-08 03:00:00,4263.9,0.0,66.95 -2014-10-08 04:00:00,4275.4,0.0,66.49 -2014-10-08 05:00:00,4520.2,0.0,65.51 -2014-10-08 06:00:00,5142.6,0.0,64.83 -2014-10-08 07:00:00,5732.7,0.0,63.95 -2014-10-08 08:00:00,6151.8,0.0,63.83 -2014-10-08 09:00:00,6417.2,0.0,64.68 -2014-10-08 10:00:00,6538.1,0.0,65.42 -2014-10-08 11:00:00,6601.8,0.0,66.92 -2014-10-08 12:00:00,6637.7,0.0,68.27 -2014-10-08 13:00:00,6679.1,0.0,68.88 -2014-10-08 14:00:00,6699.2,0.0,70.46 -2014-10-08 15:00:00,6715.0,0.0,71.47 -2014-10-08 16:00:00,6715.9,0.0,71.0 -2014-10-08 17:00:00,6655.3,0.0,71.42 -2014-10-08 18:00:00,6481.2,0.0,70.92 -2014-10-08 19:00:00,6421.2,0.0,69.28 -2014-10-08 20:00:00,6187.2,0.0,68.42 -2014-10-08 21:00:00,5888.5,0.0,67.73 -2014-10-08 22:00:00,5503.6,0.0,65.95 -2014-10-08 23:00:00,5035.5,0.0,64.56 -2014-10-09 00:00:00,4626.6,0.0,63.12 -2014-10-09 01:00:00,4366.7,0.0,61.74 -2014-10-09 02:00:00,4204.4,0.0,61.07 -2014-10-09 03:00:00,4127.4,0.0,60.23 -2014-10-09 04:00:00,4126.3,0.0,59.17 -2014-10-09 05:00:00,4346.6,0.0,59.1 -2014-10-09 06:00:00,4936.5,0.0,57.95 -2014-10-09 07:00:00,5473.3,0.0,56.56 -2014-10-09 08:00:00,5856.2,0.0,57.29 -2014-10-09 09:00:00,6096.9,0.0,58.93 -2014-10-09 10:00:00,6197.9,0.0,60.57 -2014-10-09 11:00:00,6279.3,0.0,62.27 -2014-10-09 12:00:00,6333.6,0.0,64.1 -2014-10-09 13:00:00,6365.8,0.0,65.95 -2014-10-09 14:00:00,6322.4,0.0,66.22 -2014-10-09 15:00:00,6350.3,0.0,67.32 -2014-10-09 16:00:00,6385.9,0.0,68.21 -2014-10-09 17:00:00,6384.2,0.0,68.05 -2014-10-09 18:00:00,6297.7,0.0,67.49 -2014-10-09 19:00:00,6212.2,0.0,66.81 -2014-10-09 20:00:00,5987.0,0.0,65.95 -2014-10-09 21:00:00,5702.7,0.0,64.65 -2014-10-09 22:00:00,5338.5,0.0,62.97 -2014-10-09 23:00:00,4900.7,0.0,61.87 -2014-10-10 00:00:00,4507.7,0.0,60.58 -2014-10-10 01:00:00,4246.6,0.0,59.19 -2014-10-10 02:00:00,4106.4,0.0,57.18 -2014-10-10 03:00:00,4034.8,0.0,56.93 -2014-10-10 04:00:00,4049.1,0.0,55.39 -2014-10-10 05:00:00,4251.2,0.0,54.55 -2014-10-10 06:00:00,4813.2,0.0,54.2 -2014-10-10 07:00:00,5326.9,0.0,53.83 -2014-10-10 08:00:00,5688.9,0.0,53.88 -2014-10-10 09:00:00,5938.9,0.0,56.12 -2014-10-10 10:00:00,6073.3,0.0,58.19 -2014-10-10 11:00:00,6143.8,0.0,59.96 -2014-10-10 12:00:00,6141.7,0.0,60.42 -2014-10-10 13:00:00,6145.6,0.0,60.42 -2014-10-10 14:00:00,6129.5,0.0,61.22 -2014-10-10 15:00:00,6146.8,0.0,62.96 -2014-10-10 16:00:00,6171.7,0.0,62.24 -2014-10-10 17:00:00,6208.9,0.0,61.8 -2014-10-10 18:00:00,6099.0,0.0,61.51 -2014-10-10 19:00:00,5992.8,0.0,61.73 -2014-10-10 20:00:00,5771.0,0.0,61.22 -2014-10-10 21:00:00,5522.7,0.0,60.23 -2014-10-10 22:00:00,5228.7,0.0,59.91 -2014-10-10 23:00:00,4876.1,0.0,59.84 -2014-10-11 00:00:00,4532.8,0.0,59.35 -2014-10-11 01:00:00,4249.1,0.0,59.03 -2014-10-11 02:00:00,4086.1,0.0,59.03 -2014-10-11 03:00:00,3991.7,0.0,57.04 -2014-10-11 04:00:00,3959.0,0.0035,56.85 -2014-10-11 05:00:00,4004.5,0.0304,54.71 -2014-10-11 06:00:00,4183.6,0.0361,53.66 -2014-10-11 07:00:00,4434.4,0.0035,53.99 -2014-10-11 08:00:00,4739.5,0.0135,53.27 -2014-10-11 09:00:00,5060.6,0.0596,52.78 -2014-10-11 10:00:00,5279.5,0.0308,53.7 -2014-10-11 11:00:00,5383.9,0.0135,53.63 -2014-10-11 12:00:00,5430.2,0.0131,54.2 -2014-10-11 13:00:00,5399.6,0.0,53.68 -2014-10-11 14:00:00,5337.3,0.0,54.0 -2014-10-11 15:00:00,5277.6,0.0,54.95 -2014-10-11 16:00:00,5264.1,0.0,55.06 -2014-10-11 17:00:00,5301.5,0.0,54.65 -2014-10-11 18:00:00,5410.7,0.0,54.71 -2014-10-11 19:00:00,5455.0,0.0,54.2 -2014-10-11 20:00:00,5347.3,0.0,53.47 -2014-10-11 21:00:00,5191.4,0.0,52.82 -2014-10-11 22:00:00,5000.2,0.0,52.45 -2014-10-11 23:00:00,4674.9,0.0,52.29 -2014-10-12 00:00:00,4362.2,0.0,52.81 -2014-10-12 01:00:00,4139.6,0.0,52.76 -2014-10-12 02:00:00,3980.6,0.0,51.9 -2014-10-12 03:00:00,3882.0,0.0,50.9 -2014-10-12 04:00:00,3832.9,0.0,50.29 -2014-10-12 05:00:00,3861.8,0.0,50.13 -2014-10-12 06:00:00,3972.6,0.0,49.33 -2014-10-12 07:00:00,4095.1,0.0,48.59 -2014-10-12 08:00:00,4359.1,0.0,49.35 -2014-10-12 09:00:00,4634.2,0.0,51.02 -2014-10-12 10:00:00,4829.2,0.0,53.87 -2014-10-12 11:00:00,4950.8,0.0,56.52 -2014-10-12 12:00:00,5001.7,0.0,58.69 -2014-10-12 13:00:00,5016.0,0.0,59.69 -2014-10-12 14:00:00,5020.0,0.0,61.35 -2014-10-12 15:00:00,5014.1,0.0,61.99 -2014-10-12 16:00:00,5033.6,0.0,61.83 -2014-10-12 17:00:00,5079.1,0.0,61.58 -2014-10-12 18:00:00,5246.5,0.0,60.26 -2014-10-12 19:00:00,5361.2,0.0,57.54 -2014-10-12 20:00:00,5304.8,0.0,56.67 -2014-10-12 21:00:00,5174.1,0.0,56.48 -2014-10-12 22:00:00,4955.1,0.0,55.04 -2014-10-12 23:00:00,4613.7,0.0,54.55 -2014-10-13 00:00:00,4320.6,0.0,54.38 -2014-10-13 01:00:00,4107.2,0.0,53.16 -2014-10-13 02:00:00,3972.7,0.0,52.43 -2014-10-13 03:00:00,3903.5,0.0,52.69 -2014-10-13 04:00:00,3916.9,0.0,53.57 -2014-10-13 05:00:00,4091.0,0.0,54.55 -2014-10-13 06:00:00,4496.9,0.0,54.92 -2014-10-13 07:00:00,4967.4,0.0,56.06 -2014-10-13 08:00:00,5395.2,0.0,56.8 -2014-10-13 09:00:00,5677.9,0.0,57.82 -2014-10-13 10:00:00,5843.6,0.0,60.16 -2014-10-13 11:00:00,5935.6,0.0,61.74 -2014-10-13 12:00:00,5984.3,0.0,63.22 -2014-10-13 13:00:00,6011.6,0.0,63.42 -2014-10-13 14:00:00,6018.6,0.0,63.56 -2014-10-13 15:00:00,6061.9,0.0,63.88 -2014-10-13 16:00:00,6127.9,0.0,64.0 -2014-10-13 17:00:00,6215.3,0.0,64.35 -2014-10-13 18:00:00,6208.1,0.0,62.93 -2014-10-13 19:00:00,6121.9,0.0,61.7 -2014-10-13 20:00:00,5929.9,0.0,62.54 -2014-10-13 21:00:00,5674.0,0.0035,62.0 -2014-10-13 22:00:00,5339.3,0.01,62.32 -2014-10-13 23:00:00,4926.0,0.0035,63.12 -2014-10-14 00:00:00,4557.3,0.0065,63.63 -2014-10-14 01:00:00,4343.1,0.0,64.2 -2014-10-14 02:00:00,4205.6,0.0,64.81 -2014-10-14 03:00:00,4156.1,0.0,64.63 -2014-10-14 04:00:00,4187.8,0.0,64.47 -2014-10-14 05:00:00,4457.1,0.0,64.83 -2014-10-14 06:00:00,5098.6,0.0,64.47 -2014-10-14 07:00:00,5748.2,0.0,65.1 -2014-10-14 08:00:00,6190.3,0.0,65.85 -2014-10-14 09:00:00,6503.9,0.0,67.44 -2014-10-14 10:00:00,6709.4,0.0,69.69 -2014-10-14 11:00:00,6839.3,0.0,71.61 -2014-10-14 12:00:00,6911.7,0.0,72.42 -2014-10-14 13:00:00,6970.7,0.0,73.27 -2014-10-14 14:00:00,6985.4,0.0,73.48 -2014-10-14 15:00:00,7023.6,0.0,73.22 -2014-10-14 16:00:00,7014.4,0.0,73.41 -2014-10-14 17:00:00,6928.0,0.0,72.22 -2014-10-14 18:00:00,6811.3,0.0,70.57 -2014-10-14 19:00:00,6718.2,0.0,70.19 -2014-10-14 20:00:00,6477.2,0.0,69.94 -2014-10-14 21:00:00,6202.0,0.0,70.19 -2014-10-14 22:00:00,5831.0,0.0,69.94 -2014-10-14 23:00:00,5370.9,0.0,70.35 -2014-10-15 00:00:00,4957.5,0.0,69.94 -2014-10-15 01:00:00,4683.9,0.0,69.39 -2014-10-15 02:00:00,4532.8,0.0,69.19 -2014-10-15 03:00:00,4466.3,0.0,69.19 -2014-10-15 04:00:00,4493.1,0.0,69.33 -2014-10-15 05:00:00,4776.2,0.0,69.07 -2014-10-15 06:00:00,5468.9,0.0,69.21 -2014-10-15 07:00:00,6125.7,0.0,69.63 -2014-10-15 08:00:00,6594.7,0.0,70.55 -2014-10-15 09:00:00,6945.5,0.0,71.51 -2014-10-15 10:00:00,7151.9,0.0,73.16 -2014-10-15 11:00:00,7223.7,0.0,73.45 -2014-10-15 12:00:00,7298.6,0.0,75.22 -2014-10-15 13:00:00,7366.4,0.0,74.43 -2014-10-15 14:00:00,7411.7,0.0,74.93 -2014-10-15 15:00:00,7398.0,0.0,75.12 -2014-10-15 16:00:00,7366.5,0.0,74.47 -2014-10-15 17:00:00,7352.2,0.0,73.75 -2014-10-15 18:00:00,7212.8,0.0,73.62 -2014-10-15 19:00:00,7034.2,0.0,71.98 -2014-10-15 20:00:00,6771.5,0.0,71.98 -2014-10-15 21:00:00,6455.2,0.0,71.31 -2014-10-15 22:00:00,6086.8,0.0208,71.12 -2014-10-15 23:00:00,5640.1,0.0269,70.77 -2014-10-16 00:00:00,5229.8,0.0135,70.75 -2014-10-16 01:00:00,4943.0,0.0,70.56 -2014-10-16 02:00:00,4756.1,0.0,70.07 -2014-10-16 03:00:00,4674.9,0.0261,69.56 -2014-10-16 04:00:00,4696.8,0.2372,69.36 -2014-10-16 05:00:00,4981.6,0.0347,69.68 -2014-10-16 06:00:00,5648.6,0.0,70.05 -2014-10-16 07:00:00,6292.3,0.0169,68.87 -2014-10-16 08:00:00,6700.1,0.0065,69.22 -2014-10-16 09:00:00,6995.2,0.0131,69.3 -2014-10-16 10:00:00,7085.2,0.05,68.35 -2014-10-16 11:00:00,7052.6,0.01,66.41 -2014-10-16 12:00:00,7036.5,0.0065,65.34 -2014-10-16 13:00:00,7033.2,0.0065,67.73 -2014-10-16 14:00:00,7016.5,0.0,68.78 -2014-10-16 15:00:00,7029.5,0.0,69.64 -2014-10-16 16:00:00,7037.4,0.0,69.72 -2014-10-16 17:00:00,6954.6,0.0,68.86 -2014-10-16 18:00:00,6767.6,0.0,68.56 -2014-10-16 19:00:00,6651.6,0.0,67.17 -2014-10-16 20:00:00,6363.7,0.0,66.28 -2014-10-16 21:00:00,6073.3,0.0,65.47 -2014-10-16 22:00:00,5708.6,0.0,65.03 -2014-10-16 23:00:00,5248.9,0.0,63.6 -2014-10-17 00:00:00,4827.7,0.0,62.83 -2014-10-17 01:00:00,4543.7,0.0,61.83 -2014-10-17 02:00:00,4364.9,0.0,61.49 -2014-10-17 03:00:00,4290.6,0.0,61.87 -2014-10-17 04:00:00,4317.9,0.0,61.32 -2014-10-17 05:00:00,4546.3,0.0,61.12 -2014-10-17 06:00:00,5142.7,0.0,61.17 -2014-10-17 07:00:00,5686.7,0.0,60.51 -2014-10-17 08:00:00,6070.7,0.0,60.49 -2014-10-17 09:00:00,6352.5,0.0,61.66 -2014-10-17 10:00:00,6491.8,0.0,63.27 -2014-10-17 11:00:00,6595.5,0.0,65.64 -2014-10-17 12:00:00,6669.5,0.0,66.95 -2014-10-17 13:00:00,6711.8,0.0,68.27 -2014-10-17 14:00:00,6730.5,0.0,69.74 -2014-10-17 15:00:00,6754.5,0.0,70.57 -2014-10-17 16:00:00,6732.9,0.0,70.92 -2014-10-17 17:00:00,6629.6,0.0,70.53 -2014-10-17 18:00:00,6477.0,0.0,69.26 -2014-10-17 19:00:00,6342.1,0.0,68.08 -2014-10-17 20:00:00,6100.4,0.0,66.8 -2014-10-17 21:00:00,5845.2,0.0,65.98 -2014-10-17 22:00:00,5543.8,0.0,64.49 -2014-10-17 23:00:00,5177.1,0.0,63.56 -2014-10-18 00:00:00,4808.9,0.0,63.15 -2014-10-18 01:00:00,4541.8,0.0,62.83 -2014-10-18 02:00:00,4366.2,0.0,62.61 -2014-10-18 03:00:00,4263.8,0.0,61.39 -2014-10-18 04:00:00,4226.7,0.0,61.24 -2014-10-18 05:00:00,4267.7,0.0,60.93 -2014-10-18 06:00:00,4446.7,0.0,60.46 -2014-10-18 07:00:00,4670.4,0.0,59.71 -2014-10-18 08:00:00,4997.3,0.0,60.0 -2014-10-18 09:00:00,5261.5,0.0,60.44 -2014-10-18 10:00:00,5478.1,0.0,61.78 -2014-10-18 11:00:00,5594.5,0.0,63.29 -2014-10-18 12:00:00,5636.3,0.0,65.85 -2014-10-18 13:00:00,5631.5,0.0,67.27 -2014-10-18 14:00:00,5597.7,0.0,68.46 -2014-10-18 15:00:00,5540.7,0.0,67.68 -2014-10-18 16:00:00,5506.9,0.0,67.35 -2014-10-18 17:00:00,5528.1,0.0,65.79 -2014-10-18 18:00:00,5629.1,0.0,62.74 -2014-10-18 19:00:00,5605.5,0.0,61.81 -2014-10-18 20:00:00,5478.0,0.0,60.95 -2014-10-18 21:00:00,5310.6,0.0,60.3 -2014-10-18 22:00:00,5084.9,0.0,59.3 -2014-10-18 23:00:00,4806.2,0.0,57.76 -2014-10-19 00:00:00,4506.5,0.0,56.95 -2014-10-19 01:00:00,4259.1,0.0,56.69 -2014-10-19 02:00:00,4090.9,0.0,55.95 -2014-10-19 03:00:00,3986.9,0.0,55.49 -2014-10-19 04:00:00,3930.3,0.0,54.95 -2014-10-19 05:00:00,3953.9,0.0,54.14 -2014-10-19 06:00:00,4072.1,0.0,53.65 -2014-10-19 07:00:00,4216.7,0.0,52.31 -2014-10-19 08:00:00,4471.0,0.0,51.63 -2014-10-19 09:00:00,4725.8,0.0,51.63 -2014-10-19 10:00:00,4934.4,0.0,51.7 -2014-10-19 11:00:00,5046.3,0.0,51.63 -2014-10-19 12:00:00,5104.2,0.0,52.88 -2014-10-19 13:00:00,5112.5,0.0,53.29 -2014-10-19 14:00:00,5107.5,0.0,53.14 -2014-10-19 15:00:00,5106.4,0.0,52.22 -2014-10-19 16:00:00,5133.8,0.0,51.93 -2014-10-19 17:00:00,5215.3,0.0,51.88 -2014-10-19 18:00:00,5445.7,0.0,49.95 -2014-10-19 19:00:00,5528.9,0.0,49.17 -2014-10-19 20:00:00,5453.7,0.0,47.63 -2014-10-19 21:00:00,5293.5,0.0,46.44 -2014-10-19 22:00:00,5023.8,0.0,45.58 -2014-10-19 23:00:00,4660.6,0.0,44.93 -2014-10-20 00:00:00,4339.9,0.0,44.63 -2014-10-20 01:00:00,4128.4,0.0,44.44 -2014-10-20 02:00:00,3998.1,0.0,43.58 -2014-10-20 03:00:00,3947.8,0.0,43.1 -2014-10-20 04:00:00,3980.5,0.0,43.08 -2014-10-20 05:00:00,4241.4,0.0,43.07 -2014-10-20 06:00:00,4840.1,0.0,42.88 -2014-10-20 07:00:00,5410.4,0.0,43.57 -2014-10-20 08:00:00,5771.2,0.0,43.78 -2014-10-20 09:00:00,6000.9,0.0,46.54 -2014-10-20 10:00:00,6086.9,0.0,48.17 -2014-10-20 11:00:00,6111.0,0.0,50.17 -2014-10-20 12:00:00,6125.3,0.0,51.67 -2014-10-20 13:00:00,6126.2,0.0,54.26 -2014-10-20 14:00:00,6111.2,0.0,57.05 -2014-10-20 15:00:00,6129.3,0.0,58.66 -2014-10-20 16:00:00,6158.5,0.0,59.13 -2014-10-20 17:00:00,6173.0,0.0,60.0 -2014-10-20 18:00:00,6209.3,0.0,59.88 -2014-10-20 19:00:00,6161.9,0.0,58.44 -2014-10-20 20:00:00,5965.7,0.0,57.95 -2014-10-20 21:00:00,5712.2,0.0,56.54 -2014-10-20 22:00:00,5345.7,0.0,56.65 -2014-10-20 23:00:00,4885.1,0.0,56.92 -2014-10-21 00:00:00,4471.8,0.0,57.27 -2014-10-21 01:00:00,4222.7,0.0,56.9 -2014-10-21 02:00:00,4071.9,0.0,56.77 -2014-10-21 03:00:00,4008.9,0.0,56.45 -2014-10-21 04:00:00,4028.8,0.0,56.2 -2014-10-21 05:00:00,4275.6,0.0,55.42 -2014-10-21 06:00:00,4888.1,0.0,55.62 -2014-10-21 07:00:00,5483.5,0.0,55.57 -2014-10-21 08:00:00,5839.1,0.0,55.57 -2014-10-21 09:00:00,6063.9,0.0,59.23 -2014-10-21 10:00:00,6200.3,0.0,60.86 -2014-10-21 11:00:00,6270.6,0.0,63.27 -2014-10-21 12:00:00,6291.2,0.0,64.05 -2014-10-21 13:00:00,6304.1,0.0,65.1 -2014-10-21 14:00:00,6325.7,0.0,64.62 -2014-10-21 15:00:00,6352.7,0.0208,63.3 -2014-10-21 16:00:00,6376.5,0.0035,64.1 -2014-10-21 17:00:00,6399.2,0.0,63.67 -2014-10-21 18:00:00,6366.9,0.0,62.2 -2014-10-21 19:00:00,6265.4,0.0,61.7 -2014-10-21 20:00:00,6031.7,0.0035,60.33 -2014-10-21 21:00:00,5757.7,0.0104,59.43 -2014-10-21 22:00:00,5386.6,0.0277,58.83 -2014-10-21 23:00:00,4917.0,0.0,58.69 -2014-10-22 00:00:00,4511.7,0.0,57.52 -2014-10-22 01:00:00,4260.0,0.0,56.97 -2014-10-22 02:00:00,4110.3,0.0,57.55 -2014-10-22 03:00:00,4055.7,0.0,58.11 -2014-10-22 04:00:00,4082.0,0.0457,57.32 -2014-10-22 05:00:00,4334.9,0.0696,56.29 -2014-10-22 06:00:00,4947.4,0.0396,55.77 -2014-10-22 07:00:00,5585.6,0.0396,55.81 -2014-10-22 08:00:00,5980.2,0.0361,55.32 -2014-10-22 09:00:00,6220.8,0.0588,55.13 -2014-10-22 10:00:00,6321.3,0.0296,55.44 -2014-10-22 11:00:00,6370.7,0.0,56.37 -2014-10-22 12:00:00,6378.8,0.0,55.9 -2014-10-22 13:00:00,6370.8,0.0,56.88 -2014-10-22 14:00:00,6332.1,0.0,57.44 -2014-10-22 15:00:00,6359.2,0.0,56.68 -2014-10-22 16:00:00,6411.9,0.0,56.35 -2014-10-22 17:00:00,6475.7,0.0261,54.7 -2014-10-22 18:00:00,6417.1,0.0865,53.14 -2014-10-22 19:00:00,6261.4,0.03,53.35 -2014-10-22 20:00:00,6052.3,0.0653,53.19 -2014-10-22 21:00:00,5765.4,0.0657,52.83 -2014-10-22 22:00:00,5395.0,0.0665,52.02 -2014-10-22 23:00:00,4934.3,0.1592,51.41 -2014-10-23 00:00:00,4568.2,0.0457,52.02 -2014-10-23 01:00:00,4401.7,0.0,53.49 -2014-10-23 02:00:00,4255.3,0.0,53.14 -2014-10-23 03:00:00,4189.2,0.0,53.14 -2014-10-23 04:00:00,4199.8,0.0065,53.12 -2014-10-23 05:00:00,4424.4,0.0331,52.46 -2014-10-23 06:00:00,4993.7,0.0135,52.14 -2014-10-23 07:00:00,5523.8,0.0,52.0 -2014-10-23 08:00:00,5898.6,0.04,51.2 -2014-10-23 09:00:00,6187.4,0.0604,51.0 -2014-10-23 10:00:00,6293.6,0.01,51.68 -2014-10-23 11:00:00,6327.2,0.0169,52.12 -2014-10-23 12:00:00,6327.2,0.0377,51.49 -2014-10-23 13:00:00,6331.2,0.0165,51.44 -2014-10-23 14:00:00,6312.0,0.0069,51.8 -2014-10-23 15:00:00,6336.4,0.0653,51.44 -2014-10-23 16:00:00,6359.2,0.0,52.51 -2014-10-23 17:00:00,6409.3,0.0,53.63 -2014-10-23 18:00:00,6366.6,0.0,53.0 -2014-10-23 19:00:00,6245.2,0.0,52.75 -2014-10-23 20:00:00,6042.2,0.0,53.33 -2014-10-23 21:00:00,5768.3,0.0,53.19 -2014-10-23 22:00:00,5408.6,0.0,52.65 -2014-10-23 23:00:00,4972.8,0.0,53.0 -2014-10-24 00:00:00,4562.3,0.0,53.0 -2014-10-24 01:00:00,4298.2,0.0,52.46 -2014-10-24 02:00:00,4146.3,0.0,52.26 -2014-10-24 03:00:00,4086.3,0.0,52.26 -2014-10-24 04:00:00,4100.4,0.0,51.81 -2014-10-24 05:00:00,4340.5,0.0,51.34 -2014-10-24 06:00:00,4926.6,0.0,50.95 -2014-10-24 07:00:00,5491.9,0.0,51.42 -2014-10-24 08:00:00,5839.0,0.0,52.0 -2014-10-24 09:00:00,6088.8,0.0,53.19 -2014-10-24 10:00:00,6175.3,0.0,54.0 -2014-10-24 11:00:00,6201.5,0.0,55.86 -2014-10-24 12:00:00,6198.6,0.0,56.95 -2014-10-24 13:00:00,6198.0,0.0,57.79 -2014-10-24 14:00:00,6163.4,0.0,59.44 -2014-10-24 15:00:00,6170.7,0.0,61.18 -2014-10-24 16:00:00,6174.7,0.0,62.8 -2014-10-24 17:00:00,6184.5,0.0,62.18 -2014-10-24 18:00:00,6163.2,0.0,60.01 -2014-10-24 19:00:00,6035.3,0.0,57.97 -2014-10-24 20:00:00,5842.6,0.0,56.73 -2014-10-24 21:00:00,5611.1,0.0,56.32 -2014-10-24 22:00:00,5328.7,0.0,57.31 -2014-10-24 23:00:00,4952.4,0.0,58.4 -2014-10-25 00:00:00,4585.6,0.0,57.07 -2014-10-25 01:00:00,4325.0,0.0,55.77 -2014-10-25 02:00:00,4162.7,0.0,54.74 -2014-10-25 03:00:00,4076.8,0.0,54.44 -2014-10-25 04:00:00,4042.0,0.0,53.39 -2014-10-25 05:00:00,4113.3,0.0,53.05 -2014-10-25 06:00:00,4300.3,0.0,52.44 -2014-10-25 07:00:00,4519.2,0.0,50.84 -2014-10-25 08:00:00,4798.4,0.0,50.83 -2014-10-25 09:00:00,5027.9,0.0,53.56 -2014-10-25 10:00:00,5204.3,0.0,55.31 -2014-10-25 11:00:00,5297.1,0.0,57.15 -2014-10-25 12:00:00,5333.7,0.0,60.46 -2014-10-25 13:00:00,5308.5,0.0,62.76 -2014-10-25 14:00:00,5300.3,0.0,64.03 -2014-10-25 15:00:00,5284.9,0.0,65.94 -2014-10-25 16:00:00,5286.7,0.0,67.07 -2014-10-25 17:00:00,5327.1,0.0,66.53 -2014-10-25 18:00:00,5524.6,0.0,65.41 -2014-10-25 19:00:00,5539.9,0.0,63.91 -2014-10-25 20:00:00,5440.4,0.0,63.35 -2014-10-25 21:00:00,5283.5,0.0,62.94 -2014-10-25 22:00:00,5067.5,0.0,62.42 -2014-10-25 23:00:00,4798.9,0.0,62.26 -2014-10-26 00:00:00,4510.7,0.0,61.5 -2014-10-26 01:00:00,4285.6,0.0035,60.98 -2014-10-26 02:00:00,4125.0,0.0,60.61 -2014-10-26 03:00:00,4022.9,0.0,59.41 -2014-10-26 04:00:00,3975.4,0.0,58.86 -2014-10-26 05:00:00,3994.1,0.0,56.88 -2014-10-26 06:00:00,4105.6,0.0,55.63 -2014-10-26 07:00:00,4240.8,0.0,54.69 -2014-10-26 08:00:00,4498.8,0.0,54.95 -2014-10-26 09:00:00,4750.2,0.0,56.19 -2014-10-26 10:00:00,4966.2,0.0,57.58 -2014-10-26 11:00:00,5082.2,0.0,58.19 -2014-10-26 12:00:00,5148.6,0.0,59.6 -2014-10-26 13:00:00,5158.4,0.0,59.74 -2014-10-26 14:00:00,5164.0,0.0,60.93 -2014-10-26 15:00:00,5175.4,0.0,60.54 -2014-10-26 16:00:00,5231.3,0.0,59.67 -2014-10-26 17:00:00,5330.2,0.0,59.12 -2014-10-26 18:00:00,5536.8,0.0,58.12 -2014-10-26 19:00:00,5551.6,0.0,57.81 -2014-10-26 20:00:00,5456.1,0.0,57.32 -2014-10-26 21:00:00,5282.4,0.0,57.12 -2014-10-26 22:00:00,5021.4,0.0,57.0 -2014-10-26 23:00:00,4672.8,0.0,56.81 -2014-10-27 00:00:00,4361.2,0.0,56.61 -2014-10-27 01:00:00,4155.6,0.0,55.95 -2014-10-27 02:00:00,4034.3,0.0,55.95 -2014-10-27 03:00:00,3978.3,0.0,55.32 -2014-10-27 04:00:00,4012.9,0.0,54.14 -2014-10-27 05:00:00,4266.6,0.0,52.98 -2014-10-27 06:00:00,4870.6,0.0,51.8 -2014-10-27 07:00:00,5441.1,0.0,50.44 -2014-10-27 08:00:00,5787.9,0.0,50.32 -2014-10-27 09:00:00,6014.9,0.0,51.37 -2014-10-27 10:00:00,6109.3,0.0,52.21 -2014-10-27 11:00:00,6161.3,0.0,54.39 -2014-10-27 12:00:00,6192.7,0.0,56.8 -2014-10-27 13:00:00,6197.9,0.0,58.8 -2014-10-27 14:00:00,6184.3,0.0,60.49 -2014-10-27 15:00:00,6212.7,0.0,62.48 -2014-10-27 16:00:00,6244.6,0.0,63.73 -2014-10-27 17:00:00,6274.7,0.0,63.73 -2014-10-27 18:00:00,6277.5,0.0,62.68 -2014-10-27 19:00:00,6165.2,0.0,60.49 -2014-10-27 20:00:00,5958.5,0.0,59.42 -2014-10-27 21:00:00,5695.2,0.0,58.39 -2014-10-27 22:00:00,5331.1,0.0,58.04 -2014-10-27 23:00:00,4861.8,0.0,57.16 -2014-10-28 00:00:00,4475.6,0.0,56.16 -2014-10-28 01:00:00,4230.9,0.0,54.96 -2014-10-28 02:00:00,4085.5,0.0,54.52 -2014-10-28 03:00:00,4018.0,0.0,53.68 -2014-10-28 04:00:00,4038.0,0.0,52.86 -2014-10-28 05:00:00,4282.4,0.0,52.91 -2014-10-28 06:00:00,4890.0,0.0,53.04 -2014-10-28 07:00:00,5480.0,0.0,53.85 -2014-10-28 08:00:00,5835.2,0.0,54.71 -2014-10-28 09:00:00,6078.6,0.0,55.93 -2014-10-28 10:00:00,6181.1,0.0,59.09 -2014-10-28 11:00:00,6240.9,0.0,60.98 -2014-10-28 12:00:00,6281.8,0.0,62.64 -2014-10-28 13:00:00,6329.5,0.0,65.15 -2014-10-28 14:00:00,6365.8,0.0,67.66 -2014-10-28 15:00:00,6432.5,0.0,69.5 -2014-10-28 16:00:00,6468.2,0.0,69.12 -2014-10-28 17:00:00,6491.1,0.0,68.0 -2014-10-28 18:00:00,6469.0,0.0,65.53 -2014-10-28 19:00:00,6326.1,0.0,64.4 -2014-10-28 20:00:00,6097.3,0.0,64.16 -2014-10-28 21:00:00,5824.0,0.0,63.3 -2014-10-28 22:00:00,5451.1,0.0,62.33 -2014-10-28 23:00:00,5009.3,0.0,63.61 -2014-10-29 00:00:00,4619.2,0.0,62.45 -2014-10-29 01:00:00,4356.8,0.0,62.24 -2014-10-29 02:00:00,4206.4,0.0,61.51 -2014-10-29 03:00:00,4140.1,0.0,61.06 -2014-10-29 04:00:00,4156.8,0.0,62.6 -2014-10-29 05:00:00,4423.1,0.0,61.43 -2014-10-29 06:00:00,5058.9,0.0,62.6 -2014-10-29 07:00:00,5688.8,0.0,62.28 -2014-10-29 08:00:00,6054.7,0.0,62.28 -2014-10-29 09:00:00,6339.5,0.0,63.87 -2014-10-29 10:00:00,6469.3,0.0,65.67 -2014-10-29 11:00:00,6546.4,0.0,67.23 -2014-10-29 12:00:00,6585.9,0.0,68.47 -2014-10-29 13:00:00,6599.8,0.0,69.73 -2014-10-29 14:00:00,6562.1,0.0,69.2 -2014-10-29 15:00:00,6510.4,0.0,67.56 -2014-10-29 16:00:00,6487.4,0.0,64.35 -2014-10-29 17:00:00,6529.6,0.0,61.04 -2014-10-29 18:00:00,6398.8,0.0,54.63 -2014-10-29 19:00:00,6205.5,0.0,54.69 -2014-10-29 20:00:00,5973.8,0.0,54.51 -2014-10-29 21:00:00,5709.6,0.0,54.14 -2014-10-29 22:00:00,5349.2,0.0,54.0 -2014-10-29 23:00:00,4900.0,0.0,53.65 -2014-10-30 00:00:00,4499.0,0.0,52.93 -2014-10-30 01:00:00,4251.5,0.0,51.94 -2014-10-30 02:00:00,4105.9,0.0,51.31 -2014-10-30 03:00:00,4039.5,0.0,50.33 -2014-10-30 04:00:00,4059.4,0.0,50.01 -2014-10-30 05:00:00,4301.4,0.0,49.93 -2014-10-30 06:00:00,4893.9,0.0,49.08 -2014-10-30 07:00:00,5486.1,0.0,48.42 -2014-10-30 08:00:00,5833.6,0.0,48.78 -2014-10-30 09:00:00,6046.8,0.0,50.86 -2014-10-30 10:00:00,6161.6,0.0,52.48 -2014-10-30 11:00:00,6201.0,0.0,54.37 -2014-10-30 12:00:00,6197.1,0.0,55.75 -2014-10-30 13:00:00,6197.4,0.0,56.37 -2014-10-30 14:00:00,6169.6,0.0,56.81 -2014-10-30 15:00:00,6182.0,0.0,57.49 -2014-10-30 16:00:00,6198.8,0.0,56.87 -2014-10-30 17:00:00,6218.1,0.0,55.88 -2014-10-30 18:00:00,6244.5,0.0,54.3 -2014-10-30 19:00:00,6136.3,0.0,52.76 -2014-10-30 20:00:00,5948.6,0.0,51.93 -2014-10-30 21:00:00,5701.0,0.0,50.69 -2014-10-30 22:00:00,5346.8,0.0,49.46 -2014-10-30 23:00:00,4910.5,0.0,48.93 -2014-10-31 00:00:00,4515.8,0.0,48.13 -2014-10-31 01:00:00,4267.3,0.0,47.93 -2014-10-31 02:00:00,4109.9,0.0,47.06 -2014-10-31 03:00:00,4045.4,0.0,46.27 -2014-10-31 04:00:00,4059.0,0.0,45.54 -2014-10-31 05:00:00,4313.1,0.0,44.93 -2014-10-31 06:00:00,4883.3,0.0,44.54 -2014-10-31 07:00:00,5488.8,0.0,44.92 -2014-10-31 08:00:00,5841.9,0.0,45.8 -2014-10-31 09:00:00,6088.2,0.0,46.51 -2014-10-31 10:00:00,6159.5,0.0,47.59 -2014-10-31 11:00:00,6184.8,0.0,49.08 -2014-10-31 12:00:00,6194.8,0.0,51.75 -2014-10-31 13:00:00,6186.0,0.0,52.02 -2014-10-31 14:00:00,6154.2,0.0,53.44 -2014-10-31 15:00:00,6155.4,0.0,53.74 -2014-10-31 16:00:00,6179.1,0.0,54.54 -2014-10-31 17:00:00,6210.6,0.0,54.19 -2014-10-31 18:00:00,6121.0,0.0,54.0 -2014-10-31 19:00:00,5988.0,0.0,54.56 -2014-10-31 20:00:00,5789.8,0.0,54.67 -2014-10-31 21:00:00,5574.6,0.0,54.03 -2014-10-31 22:00:00,5282.9,0.0,52.18 -2014-10-31 23:00:00,4916.3,0.0,50.64 -2014-11-01 00:00:00,4582.1,0.0261,48.99 -2014-11-01 01:00:00,4345.7,0.0243,48.13 -2014-11-01 02:00:00,4188.2,0.0069,48.27 -2014-11-01 03:00:00,4098.3,0.0,48.13 -2014-11-01 04:00:00,4063.8,0.0,48.13 -2014-11-01 05:00:00,4124.2,0.0065,46.95 -2014-11-01 06:00:00,4313.5,0.0035,47.09 -2014-11-01 07:00:00,4554.2,0.0035,46.81 -2014-11-01 08:00:00,4860.5,0.0,47.02 -2014-11-01 09:00:00,5155.5,0.0235,46.15 -2014-11-01 10:00:00,5407.4,0.0165,46.2 -2014-11-01 11:00:00,5543.0,0.0235,45.83 -2014-11-01 12:00:00,5597.6,0.0239,45.69 -2014-11-01 13:00:00,5586.5,0.01,46.17 -2014-11-01 14:00:00,5560.0,0.0165,46.44 -2014-11-01 15:00:00,5549.9,0.0165,47.19 -2014-11-01 16:00:00,5570.5,0.0,47.86 -2014-11-01 17:00:00,5626.7,0.0065,47.0 -2014-11-01 18:00:00,5746.1,0.0,46.32 -2014-11-01 19:00:00,5704.3,0.0,46.2 -2014-11-01 20:00:00,5577.5,0.01,45.34 -2014-11-01 21:00:00,5432.3,0.0165,43.95 -2014-11-01 22:00:00,5201.9,0.0035,43.28 -2014-11-01 23:00:00,4931.5,0.0065,43.14 -2014-11-02 00:00:00,4618.7,0.0,43.34 -2014-11-02 01:00:00,4400.5,0.0,43.34 -2014-11-02 02:00:00,4142.4,0.0,43.14 -2014-11-02 03:00:00,4097.1,0.0,43.14 -2014-11-02 04:00:00,4096.6,0.0,43.14 -2014-11-02 05:00:00,4179.1,0.0,43.14 -2014-11-02 06:00:00,4294.4,0.0,42.75 -2014-11-02 07:00:00,4509.9,0.0,42.63 -2014-11-02 08:00:00,4828.6,0.0,43.02 -2014-11-02 09:00:00,5047.6,0.0,43.46 -2014-11-02 10:00:00,5197.3,0.0,44.37 -2014-11-02 11:00:00,5263.4,0.0,45.25 -2014-11-02 12:00:00,5286.6,0.0,45.37 -2014-11-02 13:00:00,5294.3,0.0,47.09 -2014-11-02 14:00:00,5303.5,0.0,47.54 -2014-11-02 15:00:00,5331.6,0.0,47.35 -2014-11-02 16:00:00,5449.0,0.0,47.88 -2014-11-02 17:00:00,5752.3,0.0,46.95 -2014-11-02 18:00:00,5823.2,0.0,46.3 -2014-11-02 19:00:00,5764.2,0.0,44.95 -2014-11-02 20:00:00,5639.5,0.0,43.83 -2014-11-02 21:00:00,5453.7,0.0,42.44 -2014-11-02 22:00:00,5143.6,0.0,41.75 -2014-11-02 23:00:00,4792.7,0.0,41.95 -2014-11-03 00:00:00,4498.9,0.0,41.42 -2014-11-03 01:00:00,4314.3,0.0,40.95 -2014-11-03 02:00:00,4198.9,0.0,41.63 -2014-11-03 03:00:00,4158.8,0.0,41.58 -2014-11-03 04:00:00,4212.8,0.0,41.78 -2014-11-03 05:00:00,4507.6,0.0,41.41 -2014-11-03 06:00:00,5059.8,0.0,42.09 -2014-11-03 07:00:00,5593.9,0.0,41.71 -2014-11-03 08:00:00,5939.7,0.0,44.28 -2014-11-03 09:00:00,6161.1,0.0,46.51 -2014-11-03 10:00:00,6245.9,0.0,47.61 -2014-11-03 11:00:00,6271.1,0.0,52.0 -2014-11-03 12:00:00,6255.4,0.0,54.56 -2014-11-03 13:00:00,6245.7,0.0,57.18 -2014-11-03 14:00:00,6222.7,0.0,58.92 -2014-11-03 15:00:00,6240.7,0.0,60.92 -2014-11-03 16:00:00,6325.6,0.0,61.02 -2014-11-03 17:00:00,6535.4,0.0,58.75 -2014-11-03 18:00:00,6384.3,0.0,57.93 -2014-11-03 19:00:00,6207.4,0.0,57.32 -2014-11-03 20:00:00,5999.2,0.0,56.44 -2014-11-03 21:00:00,5729.8,0.0,55.44 -2014-11-03 22:00:00,5358.7,0.0,55.0 -2014-11-03 23:00:00,4913.0,0.0,54.44 -2014-11-04 00:00:00,4521.5,0.0,53.75 -2014-11-04 01:00:00,4305.2,0.0,54.68 -2014-11-04 02:00:00,4167.0,0.0,55.03 -2014-11-04 03:00:00,4112.5,0.0,54.96 -2014-11-04 04:00:00,4150.4,0.0,54.61 -2014-11-04 05:00:00,4398.5,0.0,54.76 -2014-11-04 06:00:00,4883.8,0.0,54.38 -2014-11-04 07:00:00,5397.1,0.0,55.15 -2014-11-04 08:00:00,5807.3,0.0,55.59 -2014-11-04 09:00:00,6031.0,0.0,58.18 -2014-11-04 10:00:00,6128.8,0.0,61.32 -2014-11-04 11:00:00,6197.3,0.0,62.98 -2014-11-04 12:00:00,6237.4,0.0,64.68 -2014-11-04 13:00:00,6253.2,0.0,66.93 -2014-11-04 14:00:00,6268.3,0.0,67.59 -2014-11-04 15:00:00,6276.4,0.0,67.67 -2014-11-04 16:00:00,6372.0,0.0,67.03 -2014-11-04 17:00:00,6561.8,0.0,64.29 -2014-11-04 18:00:00,6377.7,0.0,63.36 -2014-11-04 19:00:00,6160.9,0.0,62.88 -2014-11-04 20:00:00,5953.7,0.0,62.26 -2014-11-04 21:00:00,5660.2,0.0,61.42 -2014-11-04 22:00:00,5282.9,0.0,60.59 -2014-11-04 23:00:00,4856.1,0.0,59.57 -2014-11-05 00:00:00,4450.8,0.0,58.91 -2014-11-05 01:00:00,4232.8,0.0,58.28 -2014-11-05 02:00:00,4099.9,0.0,57.65 -2014-11-05 03:00:00,4047.5,0.0,57.03 -2014-11-05 04:00:00,4073.0,0.0,56.74 -2014-11-05 05:00:00,4320.0,0.0,56.54 -2014-11-05 06:00:00,4900.7,0.0,56.77 -2014-11-05 07:00:00,5486.0,0.0,56.96 -2014-11-05 08:00:00,5855.7,0.0,57.95 -2014-11-05 09:00:00,6109.3,0.0,59.86 -2014-11-05 10:00:00,6207.8,0.0,62.24 -2014-11-05 11:00:00,6249.2,0.0,62.54 -2014-11-05 12:00:00,6269.9,0.0,63.01 -2014-11-05 13:00:00,6273.8,0.0,62.8 -2014-11-05 14:00:00,6238.1,0.0,62.54 -2014-11-05 15:00:00,6269.3,0.0,62.34 -2014-11-05 16:00:00,6399.9,0.0,61.78 -2014-11-05 17:00:00,6564.0,0.0,60.15 -2014-11-05 18:00:00,6360.9,0.0,60.2 -2014-11-05 19:00:00,6162.8,0.0,57.88 -2014-11-05 20:00:00,5952.5,0.0,57.56 -2014-11-05 21:00:00,5667.5,0.0,56.53 -2014-11-05 22:00:00,5296.9,0.0,55.6 -2014-11-05 23:00:00,4860.1,0.0,55.6 -2014-11-06 00:00:00,4457.5,0.0,55.97 -2014-11-06 01:00:00,4232.7,0.0,54.96 -2014-11-06 02:00:00,4093.3,0.0065,53.98 -2014-11-06 03:00:00,4037.1,0.0,52.49 -2014-11-06 04:00:00,4080.3,0.01,51.17 -2014-11-06 05:00:00,4343.5,0.04,50.15 -2014-11-06 06:00:00,4927.0,0.03,49.49 -2014-11-06 07:00:00,5524.9,0.05,49.49 -2014-11-06 08:00:00,5918.5,0.0135,48.46 -2014-11-06 09:00:00,6169.9,0.01,48.46 -2014-11-06 10:00:00,6298.0,0.0231,48.32 -2014-11-06 11:00:00,6378.3,0.0069,48.32 -2014-11-06 12:00:00,6401.6,0.0265,48.67 -2014-11-06 13:00:00,6397.5,0.0035,49.04 -2014-11-06 14:00:00,6384.8,0.01,50.06 -2014-11-06 15:00:00,6419.2,0.0,50.76 -2014-11-06 16:00:00,6558.5,0.0,51.17 -2014-11-06 17:00:00,6643.1,0.0065,51.19 -2014-11-06 18:00:00,6434.4,0.0,50.83 -2014-11-06 19:00:00,6243.2,0.0,50.61 -2014-11-06 20:00:00,6008.1,0.0,51.0 -2014-11-06 21:00:00,5737.9,0.0,50.81 -2014-11-06 22:00:00,5360.0,0.0,50.3 -2014-11-06 23:00:00,4927.5,0.0,49.95 -2014-11-07 00:00:00,4534.9,0.0,49.51 -2014-11-07 01:00:00,4299.7,0.0,49.26 -2014-11-07 02:00:00,4158.1,0.0,50.1 -2014-11-07 03:00:00,4098.3,0.0,49.83 -2014-11-07 04:00:00,4141.5,0.0,49.3 -2014-11-07 05:00:00,4393.0,0.0,48.49 -2014-11-07 06:00:00,4950.5,0.0,47.3 -2014-11-07 07:00:00,5487.2,0.0,46.61 -2014-11-07 08:00:00,5863.1,0.0,47.68 -2014-11-07 09:00:00,6095.5,0.0,48.68 -2014-11-07 10:00:00,6181.8,0.0,49.88 -2014-11-07 11:00:00,6218.1,0.0,50.69 -2014-11-07 12:00:00,6218.5,0.0,51.37 -2014-11-07 13:00:00,6259.3,0.0,51.51 -2014-11-07 14:00:00,6242.5,0.0,49.73 -2014-11-07 15:00:00,6251.9,0.0,48.53 -2014-11-07 16:00:00,6346.9,0.0,47.2 -2014-11-07 17:00:00,6514.1,0.0,46.3 -2014-11-07 18:00:00,6353.3,0.0,45.81 -2014-11-07 19:00:00,6175.9,0.0,44.51 -2014-11-07 20:00:00,5955.2,0.0,43.51 -2014-11-07 21:00:00,5714.7,0.0,42.3 -2014-11-07 22:00:00,5408.0,0.0,41.3 -2014-11-07 23:00:00,5044.3,0.0,40.65 -2014-11-08 00:00:00,4683.9,0.0,40.12 -2014-11-08 01:00:00,4452.4,0.0,39.65 -2014-11-08 02:00:00,4293.5,0.0,38.65 -2014-11-08 03:00:00,4215.7,0.0,38.83 -2014-11-08 04:00:00,4196.9,0.0,38.32 -2014-11-08 05:00:00,4270.3,0.0,37.81 -2014-11-08 06:00:00,4427.0,0.0,37.13 -2014-11-08 07:00:00,4682.4,0.0,37.28 -2014-11-08 08:00:00,4980.6,0.0,38.17 -2014-11-08 09:00:00,5224.5,0.0,39.56 -2014-11-08 10:00:00,5377.7,0.0,41.42 -2014-11-08 11:00:00,5444.5,0.0,42.41 -2014-11-08 12:00:00,5451.9,0.0,43.96 -2014-11-08 13:00:00,5407.5,0.0,45.59 -2014-11-08 14:00:00,5382.2,0.0,46.4 -2014-11-08 15:00:00,5395.5,0.0,47.05 -2014-11-08 16:00:00,5544.5,0.0,47.0 -2014-11-08 17:00:00,5771.0,0.0,47.2 -2014-11-08 18:00:00,5767.9,0.0,47.01 -2014-11-08 19:00:00,5682.3,0.0,46.95 -2014-11-08 20:00:00,5543.1,0.0,46.69 -2014-11-08 21:00:00,5390.2,0.0,46.69 -2014-11-08 22:00:00,5146.0,0.0,46.15 -2014-11-08 23:00:00,4879.0,0.0,46.04 -2014-11-09 00:00:00,4596.4,0.0,46.65 -2014-11-09 01:00:00,4369.7,0.0,46.65 -2014-11-09 02:00:00,4209.7,0.0,46.65 -2014-11-09 03:00:00,4115.6,0.0,46.53 -2014-11-09 04:00:00,4081.0,0.0,46.32 -2014-11-09 05:00:00,4133.4,0.0,46.14 -2014-11-09 06:00:00,4223.5,0.0,46.44 -2014-11-09 07:00:00,4396.7,0.0,46.0 -2014-11-09 08:00:00,4678.3,0.0,46.49 -2014-11-09 09:00:00,4911.1,0.0,48.05 -2014-11-09 10:00:00,5092.9,0.0,49.9 -2014-11-09 11:00:00,5189.7,0.0,53.05 -2014-11-09 12:00:00,5234.4,0.0,54.78 -2014-11-09 13:00:00,5233.0,0.0,55.73 -2014-11-09 14:00:00,5227.0,0.0,56.08 -2014-11-09 15:00:00,5244.2,0.0,55.73 -2014-11-09 16:00:00,5383.3,0.0,55.87 -2014-11-09 17:00:00,5674.1,0.0,54.46 -2014-11-09 18:00:00,5716.4,0.0,53.08 -2014-11-09 19:00:00,5657.5,0.0,52.44 -2014-11-09 20:00:00,5544.9,0.0,51.11 -2014-11-09 21:00:00,5380.7,0.0,49.92 -2014-11-09 22:00:00,5093.8,0.0,49.13 -2014-11-09 23:00:00,4722.8,0.0,48.09 -2014-11-10 00:00:00,4433.7,0.0,46.8 -2014-11-10 01:00:00,4215.1,0.0,46.29 -2014-11-10 02:00:00,4104.1,0.0,44.72 -2014-11-10 03:00:00,4077.0,0.0,44.76 -2014-11-10 04:00:00,4123.2,0.0,43.56 -2014-11-10 05:00:00,4415.9,0.0,42.98 -2014-11-10 06:00:00,4964.7,0.0,43.45 -2014-11-10 07:00:00,5497.3,0.0,43.48 -2014-11-10 08:00:00,5859.2,0.0,46.21 -2014-11-10 09:00:00,6085.6,0.0,49.4 -2014-11-10 10:00:00,6173.3,0.0,53.5 -2014-11-10 11:00:00,6199.1,0.0,56.39 -2014-11-10 12:00:00,6206.6,0.0,57.68 -2014-11-10 13:00:00,6213.1,0.0,59.0 -2014-11-10 14:00:00,6185.6,0.0,59.14 -2014-11-10 15:00:00,6211.4,0.0,59.32 -2014-11-10 16:00:00,6332.6,0.0,58.47 -2014-11-10 17:00:00,6550.2,0.0,56.24 -2014-11-10 18:00:00,6391.1,0.0,54.74 -2014-11-10 19:00:00,6208.6,0.0,54.06 -2014-11-10 20:00:00,5991.8,0.0,53.06 -2014-11-10 21:00:00,5732.8,0.0,53.06 -2014-11-10 22:00:00,5380.5,0.0,52.01 -2014-11-10 23:00:00,4951.9,0.0,51.28 -2014-11-11 00:00:00,4557.2,0.0,50.57 -2014-11-11 01:00:00,4299.8,0.0,49.75 -2014-11-11 02:00:00,4160.9,0.0,48.59 -2014-11-11 03:00:00,4094.9,0.0,48.36 -2014-11-11 04:00:00,4118.5,0.0,47.68 -2014-11-11 05:00:00,4353.5,0.0,47.14 -2014-11-11 06:00:00,4804.0,0.0,47.62 -2014-11-11 07:00:00,5299.1,0.0,48.2 -2014-11-11 08:00:00,5751.3,0.0,48.83 -2014-11-11 09:00:00,5998.4,0.0,51.35 -2014-11-11 10:00:00,6103.5,0.0,54.98 -2014-11-11 11:00:00,6167.3,0.0,59.26 -2014-11-11 12:00:00,6195.9,0.0,61.42 -2014-11-11 13:00:00,6201.6,0.0,62.68 -2014-11-11 14:00:00,6208.4,0.0,62.49 -2014-11-11 15:00:00,6224.3,0.0,62.88 -2014-11-11 16:00:00,6379.9,0.0,61.61 -2014-11-11 17:00:00,6582.7,0.0,61.31 -2014-11-11 18:00:00,6396.5,0.0,60.19 -2014-11-11 19:00:00,6196.3,0.0,59.74 -2014-11-11 20:00:00,5989.9,0.0,59.39 -2014-11-11 21:00:00,5715.2,0.0,58.63 -2014-11-11 22:00:00,5354.7,0.0,58.0 -2014-11-11 23:00:00,4934.0,0.0,57.64 -2014-11-12 00:00:00,4552.3,0.0,57.15 -2014-11-12 01:00:00,4310.7,0.0,56.1 -2014-11-12 02:00:00,4174.1,0.0,56.95 -2014-11-12 03:00:00,4119.7,0.0,56.12 -2014-11-12 04:00:00,4143.3,0.0,56.71 -2014-11-12 05:00:00,4394.0,0.0,56.36 -2014-11-12 06:00:00,4995.4,0.0,56.36 -2014-11-12 07:00:00,5590.2,0.0,57.2 -2014-11-12 08:00:00,6001.0,0.0,56.98 -2014-11-12 09:00:00,6238.4,0.0,58.99 -2014-11-12 10:00:00,6350.6,0.0,59.94 -2014-11-12 11:00:00,6418.5,0.0,60.82 -2014-11-12 12:00:00,6439.2,0.0,59.79 -2014-11-12 13:00:00,6453.1,0.0,61.96 -2014-11-12 14:00:00,6431.2,0.0,63.64 -2014-11-12 15:00:00,6378.2,0.0,60.35 -2014-11-12 16:00:00,6456.2,0.0,59.18 -2014-11-12 17:00:00,6625.5,0.0,57.93 -2014-11-12 18:00:00,6420.6,0.0,56.05 -2014-11-12 19:00:00,6224.9,0.0,55.13 -2014-11-12 20:00:00,6011.7,0.0,53.32 -2014-11-12 21:00:00,5729.6,0.0,51.1 -2014-11-12 22:00:00,5354.8,0.0,49.59 -2014-11-12 23:00:00,4916.7,0.0,48.13 -2014-11-13 00:00:00,4529.9,0.0,46.13 -2014-11-13 01:00:00,4281.3,0.0,44.95 -2014-11-13 02:00:00,4150.0,0.0,43.58 -2014-11-13 03:00:00,4103.6,0.0,42.39 -2014-11-13 04:00:00,4152.3,0.0,41.19 -2014-11-13 05:00:00,4423.5,0.0,40.27 -2014-11-13 06:00:00,4997.6,0.0,39.58 -2014-11-13 07:00:00,5539.9,0.0,39.08 -2014-11-13 08:00:00,5892.9,0.0,40.0 -2014-11-13 09:00:00,6130.7,0.0,42.37 -2014-11-13 10:00:00,6205.1,0.0,44.24 -2014-11-13 11:00:00,6213.6,0.0,45.01 -2014-11-13 12:00:00,6224.5,0.0,45.54 -2014-11-13 13:00:00,6256.4,0.0,47.22 -2014-11-13 14:00:00,6297.2,0.0,46.75 -2014-11-13 15:00:00,6386.0,0.0,46.87 -2014-11-13 16:00:00,6551.1,0.0,47.26 -2014-11-13 17:00:00,6653.4,0.0,46.68 -2014-11-13 18:00:00,6458.8,0.0,44.38 -2014-11-13 19:00:00,6287.2,0.0,42.43 -2014-11-13 20:00:00,6075.4,0.0035,41.05 -2014-11-13 21:00:00,5821.8,0.0369,39.16 -2014-11-13 22:00:00,5465.4,0.02,37.34 -2014-11-13 23:00:00,5049.1,0.0369,36.69 -2014-11-14 00:00:00,4667.9,0.0231,36.63 -2014-11-14 01:00:00,4431.9,0.01,36.81 -2014-11-14 02:00:00,4289.2,0.0,37.26 -2014-11-14 03:00:00,4228.5,0.0035,37.75 -2014-11-14 04:00:00,4261.0,0.0035,37.46 -2014-11-14 05:00:00,4524.2,0.0,38.3 -2014-11-14 06:00:00,5084.0,0.0,37.14 -2014-11-14 07:00:00,5624.4,0.0,36.44 -2014-11-14 08:00:00,5967.6,0.0,35.98 -2014-11-14 09:00:00,6196.2,0.0,37.03 -2014-11-14 10:00:00,6303.4,0.0,38.22 -2014-11-14 11:00:00,6343.1,0.0,38.87 -2014-11-14 12:00:00,6339.5,0.0,40.07 -2014-11-14 13:00:00,6318.8,0.0,40.75 -2014-11-14 14:00:00,6293.4,0.0,41.75 -2014-11-14 15:00:00,6329.1,0.0,41.76 -2014-11-14 16:00:00,6469.9,0.0,41.69 -2014-11-14 17:00:00,6638.7,0.0,40.63 -2014-11-14 18:00:00,6461.1,0.0,39.76 -2014-11-14 19:00:00,6263.1,0.0,39.46 -2014-11-14 20:00:00,6056.0,0.0,38.93 -2014-11-14 21:00:00,5814.3,0.0,38.19 -2014-11-14 22:00:00,5519.9,0.0,37.39 -2014-11-14 23:00:00,5149.2,0.0,37.25 -2014-11-15 00:00:00,4806.3,0.0,36.2 -2014-11-15 01:00:00,4569.2,0.0,35.86 -2014-11-15 02:00:00,4410.4,0.0,35.4 -2014-11-15 03:00:00,4324.4,0.0,34.94 -2014-11-15 04:00:00,4305.0,0.0,34.2 -2014-11-15 05:00:00,4389.5,0.0,33.96 -2014-11-15 06:00:00,4562.2,0.0,33.62 -2014-11-15 07:00:00,4787.8,0.0,32.52 -2014-11-15 08:00:00,5093.3,0.0,33.76 -2014-11-15 09:00:00,5331.9,0.0,35.02 -2014-11-15 10:00:00,5491.4,0.0,36.26 -2014-11-15 11:00:00,5589.7,0.0,37.42 -2014-11-15 12:00:00,5600.8,0.0,38.81 -2014-11-15 13:00:00,5561.8,0.0,40.14 -2014-11-15 14:00:00,5546.0,0.0,41.62 -2014-11-15 15:00:00,5555.0,0.0,41.41 -2014-11-15 16:00:00,5679.4,0.0,41.69 -2014-11-15 17:00:00,5918.6,0.0,40.51 -2014-11-15 18:00:00,5915.1,0.0,39.58 -2014-11-15 19:00:00,5835.1,0.0,39.25 -2014-11-15 20:00:00,5696.0,0.0,37.76 -2014-11-15 21:00:00,5544.0,0.0,37.69 -2014-11-15 22:00:00,5324.9,0.0,37.15 -2014-11-15 23:00:00,5055.9,0.0,36.7 -2014-11-16 00:00:00,4766.8,0.0,36.38 -2014-11-16 01:00:00,4538.8,0.0,35.46 -2014-11-16 02:00:00,4382.1,0.0,34.76 -2014-11-16 03:00:00,4292.4,0.0,34.82 -2014-11-16 04:00:00,4260.2,0.0,34.65 -2014-11-16 05:00:00,4308.7,0.0,35.47 -2014-11-16 06:00:00,4406.5,0.0,35.79 -2014-11-16 07:00:00,4567.1,0.0,36.22 -2014-11-16 08:00:00,4833.4,0.0,37.08 -2014-11-16 09:00:00,5087.9,0.0,38.07 -2014-11-16 10:00:00,5312.8,0.0,39.32 -2014-11-16 11:00:00,5444.2,0.0,40.63 -2014-11-16 12:00:00,5536.9,0.0,41.81 -2014-11-16 13:00:00,5568.1,0.0,42.14 -2014-11-16 14:00:00,5583.5,0.0,42.88 -2014-11-16 15:00:00,5596.0,0.0,43.0 -2014-11-16 16:00:00,5746.8,0.0,43.34 -2014-11-16 17:00:00,5945.8,0.0,43.34 -2014-11-16 18:00:00,5936.6,0.0,43.69 -2014-11-16 19:00:00,5859.3,0.0,43.83 -2014-11-16 20:00:00,5729.1,0.0,43.83 -2014-11-16 21:00:00,5550.7,0.0,43.83 -2014-11-16 22:00:00,5260.5,0.0,43.02 -2014-11-16 23:00:00,4902.8,0.0,42.49 -2014-11-17 00:00:00,4581.6,0.02,41.49 -2014-11-17 01:00:00,4382.3,0.0169,40.95 -2014-11-17 02:00:00,4270.6,0.02,39.97 -2014-11-17 03:00:00,4232.6,0.0065,39.52 -2014-11-17 04:00:00,4271.8,0.0443,39.52 -2014-11-17 05:00:00,4562.8,0.0396,39.78 -2014-11-17 06:00:00,5116.2,0.0953,40.77 -2014-11-17 07:00:00,5688.2,0.0723,41.69 -2014-11-17 08:00:00,6056.4,0.0327,41.54 -2014-11-17 09:00:00,6307.6,0.0104,42.57 -2014-11-17 10:00:00,6436.5,0.0135,43.38 -2014-11-17 11:00:00,6499.7,0.0231,43.58 -2014-11-17 12:00:00,6538.8,0.01,44.54 -2014-11-17 13:00:00,6566.8,0.0957,45.58 -2014-11-17 14:00:00,6604.0,0.0627,46.45 -2014-11-17 15:00:00,6651.5,0.0396,46.22 -2014-11-17 16:00:00,6745.2,0.0392,47.43 -2014-11-17 17:00:00,6801.7,0.0035,47.84 -2014-11-17 18:00:00,6608.8,0.0265,49.37 -2014-11-17 19:00:00,6421.7,0.0,49.93 -2014-11-17 20:00:00,6186.7,0.0,48.63 -2014-11-17 21:00:00,5917.7,0.0,48.49 -2014-11-17 22:00:00,5522.6,0.0,47.63 -2014-11-17 23:00:00,5082.1,0.0,46.14 -2014-11-18 00:00:00,4693.0,0.0,45.51 -2014-11-18 01:00:00,4463.4,0.0,44.82 -2014-11-18 02:00:00,4343.3,0.0,42.83 -2014-11-18 03:00:00,4310.8,0.0,39.97 -2014-11-18 04:00:00,4362.0,0.0,38.32 -2014-11-18 05:00:00,4670.8,0.0,35.46 -2014-11-18 06:00:00,5257.4,0.0,32.53 -2014-11-18 07:00:00,5824.1,0.0,29.32 -2014-11-18 08:00:00,6179.8,0.0,27.83 -2014-11-18 09:00:00,6401.8,0.0,28.23 -2014-11-18 10:00:00,6507.0,0.0,29.41 -2014-11-18 11:00:00,6553.0,0.0,30.62 -2014-11-18 12:00:00,6569.9,0.0,31.3 -2014-11-18 13:00:00,6588.7,0.0,31.64 -2014-11-18 14:00:00,6592.9,0.0,31.23 -2014-11-18 15:00:00,6645.6,0.0,31.44 -2014-11-18 16:00:00,6815.1,0.0,30.9 -2014-11-18 17:00:00,7043.1,0.0,29.92 -2014-11-18 18:00:00,6920.5,0.0,28.97 -2014-11-18 19:00:00,6762.2,0.0,27.95 -2014-11-18 20:00:00,6560.5,0.0,27.24 -2014-11-18 21:00:00,6316.1,0.0,26.15 -2014-11-18 22:00:00,5946.2,0.0,25.6 -2014-11-18 23:00:00,5506.9,0.0,25.49 -2014-11-19 00:00:00,5123.6,0.0,24.8 -2014-11-19 01:00:00,4901.5,0.0,24.68 -2014-11-19 02:00:00,4758.1,0.0,24.15 -2014-11-19 03:00:00,4698.1,0.0,24.09 -2014-11-19 04:00:00,4737.3,0.0,23.15 -2014-11-19 05:00:00,5002.8,0.0,23.15 -2014-11-19 06:00:00,5560.4,0.0,23.15 -2014-11-19 07:00:00,6092.3,0.0,22.48 -2014-11-19 08:00:00,6432.8,0.0,23.22 -2014-11-19 09:00:00,6654.8,0.0,24.76 -2014-11-19 10:00:00,6747.5,0.0,26.42 -2014-11-19 11:00:00,6760.7,0.0,27.81 -2014-11-19 12:00:00,6735.7,0.0,29.61 -2014-11-19 13:00:00,6724.4,0.0,31.1 -2014-11-19 14:00:00,6709.9,0.0,31.68 -2014-11-19 15:00:00,6751.0,0.0,32.07 -2014-11-19 16:00:00,6931.5,0.0,31.95 -2014-11-19 17:00:00,7131.6,0.0,31.72 -2014-11-19 18:00:00,6986.3,0.0,31.15 -2014-11-19 19:00:00,6800.6,0.0,31.04 -2014-11-19 20:00:00,6585.6,0.0,31.15 -2014-11-19 21:00:00,6309.9,0.0,32.04 -2014-11-19 22:00:00,5920.4,0.0,32.04 -2014-11-19 23:00:00,5443.6,0.0,33.15 -2014-11-20 00:00:00,5030.0,0.0,34.85 -2014-11-20 01:00:00,4786.1,0.0,35.97 -2014-11-20 02:00:00,4630.3,0.0,36.17 -2014-11-20 03:00:00,4568.7,0.0,35.61 -2014-11-20 04:00:00,4584.6,0.0,35.47 -2014-11-20 05:00:00,4842.8,0.0,35.24 -2014-11-20 06:00:00,5400.8,0.0,35.59 -2014-11-20 07:00:00,5936.8,0.0,35.61 -2014-11-20 08:00:00,6252.2,0.0,37.07 -2014-11-20 09:00:00,6478.1,0.0,38.14 -2014-11-20 10:00:00,6550.5,0.0,39.44 -2014-11-20 11:00:00,6577.5,0.0,40.71 -2014-11-20 12:00:00,6553.3,0.0,41.59 -2014-11-20 13:00:00,6526.1,0.0,43.05 -2014-11-20 14:00:00,6509.0,0.0,44.93 -2014-11-20 15:00:00,6538.7,0.0,45.73 -2014-11-20 16:00:00,6697.6,0.0,44.81 -2014-11-20 17:00:00,6902.6,0.0,43.76 -2014-11-20 18:00:00,6748.6,0.0,42.3 -2014-11-20 19:00:00,6564.7,0.0,40.65 -2014-11-20 20:00:00,6362.3,0.0,39.12 -2014-11-20 21:00:00,6134.8,0.0,36.3 -2014-11-20 22:00:00,5789.3,0.0,34.83 -2014-11-20 23:00:00,5364.7,0.0,33.3 -2014-11-21 00:00:00,4996.1,0.0,31.85 -2014-11-21 01:00:00,4776.4,0.0,30.95 -2014-11-21 02:00:00,4638.0,0.0,30.29 -2014-11-21 03:00:00,4579.4,0.0,29.95 -2014-11-21 04:00:00,4620.8,0.0,29.51 -2014-11-21 05:00:00,4885.2,0.0,29.15 -2014-11-21 06:00:00,5434.0,0.0,28.65 -2014-11-21 07:00:00,5993.7,0.0,28.29 -2014-11-21 08:00:00,6324.7,0.0,28.83 -2014-11-21 09:00:00,6555.5,0.0,29.56 -2014-11-21 10:00:00,6659.4,0.0,30.76 -2014-11-21 11:00:00,6680.8,0.0,32.54 -2014-11-21 12:00:00,6670.7,0.0,34.07 -2014-11-21 13:00:00,6650.4,0.0,34.74 -2014-11-21 14:00:00,6616.8,0.0,35.69 -2014-11-21 15:00:00,6648.7,0.0,36.08 -2014-11-21 16:00:00,6800.7,0.0,35.69 -2014-11-21 17:00:00,6954.0,0.0,34.81 -2014-11-21 18:00:00,6769.5,0.0,33.81 -2014-11-21 19:00:00,6573.7,0.0,33.07 -2014-11-21 20:00:00,6358.2,0.0,32.08 -2014-11-21 21:00:00,6113.8,0.0,31.63 -2014-11-21 22:00:00,5811.3,0.0,30.71 -2014-11-21 23:00:00,5430.8,0.0,30.15 -2014-11-22 00:00:00,5069.9,0.0,31.08 -2014-11-22 01:00:00,4841.0,0.0,30.78 -2014-11-22 02:00:00,4679.7,0.0,30.37 -2014-11-22 03:00:00,4599.8,0.0,29.95 -2014-11-22 04:00:00,4588.9,0.0,29.44 -2014-11-22 05:00:00,4666.7,0.0,28.39 -2014-11-22 06:00:00,4831.5,0.0,28.27 -2014-11-22 07:00:00,5061.9,0.0,27.59 -2014-11-22 08:00:00,5366.3,0.0,28.49 -2014-11-22 09:00:00,5601.9,0.0,30.53 -2014-11-22 10:00:00,5772.8,0.0,33.09 -2014-11-22 11:00:00,5838.6,0.0,35.19 -2014-11-22 12:00:00,5822.6,0.0,37.73 -2014-11-22 13:00:00,5772.8,0.0,40.28 -2014-11-22 14:00:00,5735.5,0.0,41.37 -2014-11-22 15:00:00,5794.1,0.0,42.19 -2014-11-22 16:00:00,5914.1,0.0,42.39 -2014-11-22 17:00:00,6101.4,0.0,42.34 -2014-11-22 18:00:00,6079.1,0.0,43.0 -2014-11-22 19:00:00,5985.7,0.0,43.2 -2014-11-22 20:00:00,5842.1,0.0,43.34 -2014-11-22 21:00:00,5653.9,0.0,43.69 -2014-11-22 22:00:00,5412.5,0.0,43.02 -2014-11-22 23:00:00,5137.8,0.0,42.83 -2014-11-23 00:00:00,4848.6,0.0,43.51 -2014-11-23 01:00:00,4614.7,0.0,44.3 -2014-11-23 02:00:00,4448.4,0.0,43.81 -2014-11-23 03:00:00,4353.6,0.0,43.46 -2014-11-23 04:00:00,4320.4,0.0,43.51 -2014-11-23 05:00:00,4372.8,0.0,43.65 -2014-11-23 06:00:00,4473.3,0.0,43.65 -2014-11-23 07:00:00,4617.6,0.0,43.26 -2014-11-23 08:00:00,4853.6,0.0,43.44 -2014-11-23 09:00:00,5095.0,0.0,44.63 -2014-11-23 10:00:00,5289.1,0.0,46.49 -2014-11-23 11:00:00,5361.3,0.0,48.46 -2014-11-23 12:00:00,5397.3,0.0,51.09 -2014-11-23 13:00:00,5400.0,0.0,52.8 -2014-11-23 14:00:00,5387.5,0.0,54.26 -2014-11-23 15:00:00,5418.7,0.0,54.6 -2014-11-23 16:00:00,5620.7,0.0,53.25 -2014-11-23 17:00:00,5873.0,0.0,51.88 -2014-11-23 18:00:00,5888.7,0.0,50.52 -2014-11-23 19:00:00,5814.1,0.0,50.63 -2014-11-23 20:00:00,5706.0,0.0,50.73 -2014-11-23 21:00:00,5530.6,0.0,50.5 -2014-11-23 22:00:00,5250.9,0.0,50.7 -2014-11-23 23:00:00,4908.2,0.0,51.04 -2014-11-24 00:00:00,4581.4,0.0,50.89 -2014-11-24 01:00:00,4367.0,0.0035,50.98 -2014-11-24 02:00:00,4239.0,0.0204,53.47 -2014-11-24 03:00:00,4199.9,0.1119,58.09 -2014-11-24 04:00:00,4251.1,0.2135,59.16 -2014-11-24 05:00:00,4512.5,0.108,59.85 -2014-11-24 06:00:00,5071.8,0.0265,60.95 -2014-11-24 07:00:00,5665.1,0.0035,60.8 -2014-11-24 08:00:00,6042.2,0.0,60.42 -2014-11-24 09:00:00,6290.5,0.0,60.61 -2014-11-24 10:00:00,6407.3,0.0,61.54 -2014-11-24 11:00:00,6428.5,0.0,63.4 -2014-11-24 12:00:00,6446.5,0.0,63.5 -2014-11-24 13:00:00,6464.3,0.0,65.79 -2014-11-24 14:00:00,6442.1,0.0,64.84 -2014-11-24 15:00:00,6456.1,0.0,63.81 -2014-11-24 16:00:00,6591.6,0.0,64.21 -2014-11-24 17:00:00,6768.8,0.0,64.42 -2014-11-24 18:00:00,6569.8,0.0,64.43 -2014-11-24 19:00:00,6354.6,0.0,64.24 -2014-11-24 20:00:00,6154.1,0.0,64.08 -2014-11-24 21:00:00,5884.5,0.0,63.58 -2014-11-24 22:00:00,5522.2,0.0,64.05 -2014-11-24 23:00:00,5081.0,0.0,64.62 -2014-11-25 00:00:00,4666.8,0.0,65.37 -2014-11-25 01:00:00,4406.5,0.0,66.25 -2014-11-25 02:00:00,4237.7,0.0,65.52 -2014-11-25 03:00:00,4163.7,0.0,64.4 -2014-11-25 04:00:00,4188.8,0.0,62.95 -2014-11-25 05:00:00,4426.7,0.0,61.37 -2014-11-25 06:00:00,5003.6,0.0,61.19 -2014-11-25 07:00:00,5536.4,0.0,59.96 -2014-11-25 08:00:00,5889.3,0.0,57.96 -2014-11-25 09:00:00,6138.0,0.0,56.84 -2014-11-25 10:00:00,6223.2,0.0,55.35 -2014-11-25 11:00:00,6247.5,0.0,54.49 -2014-11-25 12:00:00,6251.8,0.0,54.0 -2014-11-25 13:00:00,6266.7,0.0,53.6 -2014-11-25 14:00:00,6271.8,0.0,53.68 -2014-11-25 15:00:00,6329.9,0.0,53.34 -2014-11-25 16:00:00,6456.4,0.0,53.34 -2014-11-25 17:00:00,6598.0,0.0,52.35 -2014-11-25 18:00:00,6430.5,0.0,52.14 -2014-11-25 19:00:00,6252.8,0.0,52.03 -2014-11-25 20:00:00,6046.1,0.0,51.73 -2014-11-25 21:00:00,5805.1,0.0,50.61 -2014-11-25 22:00:00,5452.5,0.0,50.54 -2014-11-25 23:00:00,5041.7,0.0,50.12 -2014-11-26 00:00:00,4634.8,0.0,50.12 -2014-11-26 01:00:00,4371.7,0.0,50.3 -2014-11-26 02:00:00,4211.8,0.0,49.47 -2014-11-26 03:00:00,4158.8,0.0,49.51 -2014-11-26 04:00:00,4173.3,0.0,49.01 -2014-11-26 05:00:00,4455.5,0.0,48.37 -2014-11-26 06:00:00,5007.4,0.0,46.01 -2014-11-26 07:00:00,5574.6,0.0135,44.32 -2014-11-26 08:00:00,6009.8,0.0339,40.36 -2014-11-26 09:00:00,6314.0,0.0565,37.98 -2014-11-26 10:00:00,6484.7,0.0431,36.41 -2014-11-26 11:00:00,6576.3,0.0235,34.86 -2014-11-26 12:00:00,6633.6,0.0857,34.54 -2014-11-26 13:00:00,6637.6,0.0404,34.22 -2014-11-26 14:00:00,6613.6,0.0892,35.22 -2014-11-26 15:00:00,6619.8,0.0335,36.54 -2014-11-26 16:00:00,6735.9,0.0492,36.92 -2014-11-26 17:00:00,6795.6,0.0431,36.83 -2014-11-26 18:00:00,6599.4,0.0165,36.83 -2014-11-26 19:00:00,6398.9,0.0131,36.14 -2014-11-26 20:00:00,6209.9,0.0135,35.68 -2014-11-26 21:00:00,5961.2,0.0196,35.33 -2014-11-26 22:00:00,5659.3,0.0131,35.33 -2014-11-26 23:00:00,5280.7,0.0065,35.95 -2014-11-27 00:00:00,4911.5,0.0,36.14 -2014-11-27 01:00:00,4665.1,0.0,36.26 -2014-11-27 02:00:00,4482.1,0.0,36.81 -2014-11-27 03:00:00,4396.6,0.0,36.61 -2014-11-27 04:00:00,4378.6,0.0,36.26 -2014-11-27 05:00:00,4455.0,0.0,36.46 -2014-11-27 06:00:00,4616.8,0.0,36.81 -2014-11-27 07:00:00,4776.4,0.0,36.34 -2014-11-27 08:00:00,5039.2,0.0,36.49 -2014-11-27 09:00:00,5296.0,0.0,36.49 -2014-11-27 10:00:00,5492.9,0.0,36.49 -2014-11-27 11:00:00,5609.8,0.0,36.0 -2014-11-27 12:00:00,5628.9,0.0065,35.8 -2014-11-27 13:00:00,5607.9,0.0,37.0 -2014-11-27 14:00:00,5576.9,0.0,37.0 -2014-11-27 15:00:00,5546.2,0.0,37.54 -2014-11-27 16:00:00,5571.0,0.0,37.14 -2014-11-27 17:00:00,5595.8,0.0,37.35 -2014-11-27 18:00:00,5478.2,0.0,36.95 -2014-11-27 19:00:00,5369.0,0.0,36.95 -2014-11-27 20:00:00,5310.1,0.0,36.95 -2014-11-27 21:00:00,5249.1,0.0,36.49 -2014-11-27 22:00:00,5136.3,0.0,35.95 -2014-11-27 23:00:00,4949.4,0.0,35.49 -2014-11-28 00:00:00,4741.7,0.0,34.44 -2014-11-28 01:00:00,4578.2,0.0,33.44 -2014-11-28 02:00:00,4465.1,0.0,32.44 -2014-11-28 03:00:00,4407.0,0.0,32.21 -2014-11-28 04:00:00,4422.7,0.0,31.7 -2014-11-28 05:00:00,4593.3,0.0,32.0 -2014-11-28 06:00:00,4903.3,0.0,31.26 -2014-11-28 07:00:00,5210.1,0.0,31.37 -2014-11-28 08:00:00,5514.6,0.0,32.07 -2014-11-28 09:00:00,5730.8,0.0,33.49 -2014-11-28 10:00:00,5867.7,0.0,34.07 -2014-11-28 11:00:00,5967.8,0.0,35.42 -2014-11-28 12:00:00,6018.7,0.0,35.56 -2014-11-28 13:00:00,6016.1,0.0,35.56 -2014-11-28 14:00:00,5990.2,0.0,35.35 -2014-11-28 15:00:00,6017.5,0.0,34.86 -2014-11-28 16:00:00,6200.0,0.0,33.83 -2014-11-28 17:00:00,6430.4,0.0,32.49 -2014-11-28 18:00:00,6307.4,0.0,31.3 -2014-11-28 19:00:00,6181.1,0.0,30.81 -2014-11-28 20:00:00,6020.3,0.0,30.81 -2014-11-28 21:00:00,5844.4,0.0,29.58 -2014-11-28 22:00:00,5605.0,0.0,29.63 -2014-11-28 23:00:00,5289.9,0.0,29.44 -2014-11-29 00:00:00,4989.7,0.0,28.63 -2014-11-29 01:00:00,4767.9,0.0,28.44 -2014-11-29 02:00:00,4614.1,0.0,28.44 -2014-11-29 03:00:00,4527.3,0.0,28.44 -2014-11-29 04:00:00,4506.9,0.0,27.94 -2014-11-29 05:00:00,4585.3,0.0,27.94 -2014-11-29 06:00:00,4732.6,0.0,27.76 -2014-11-29 07:00:00,4915.4,0.0,27.76 -2014-11-29 08:00:00,5167.0,0.0,28.81 -2014-11-29 09:00:00,5405.5,0.0,30.12 -2014-11-29 10:00:00,5603.2,0.0,31.17 -2014-11-29 11:00:00,5712.1,0.0,31.93 -2014-11-29 12:00:00,5757.0,0.0,33.49 -2014-11-29 13:00:00,5751.1,0.0,34.02 -2014-11-29 14:00:00,5756.5,0.0,34.37 -2014-11-29 15:00:00,5773.9,0.0,34.68 -2014-11-29 16:00:00,5921.9,0.0,34.95 -2014-11-29 17:00:00,6075.1,0.0,35.15 -2014-11-29 18:00:00,6042.7,0.0,36.01 -2014-11-29 19:00:00,5940.6,0.0,36.83 -2014-11-29 20:00:00,5794.5,0.0,37.81 -2014-11-29 21:00:00,5640.2,0.0,38.62 -2014-11-29 22:00:00,5417.5,0.0,40.53 -2014-11-29 23:00:00,5137.4,0.0,42.16 -2014-11-30 00:00:00,4831.7,0.0,42.25 -2014-11-30 01:00:00,4594.0,0.0,43.65 -2014-11-30 02:00:00,4418.7,0.0,44.12 -2014-11-30 03:00:00,4320.7,0.0,44.76 -2014-11-30 04:00:00,4280.6,0.0,45.65 -2014-11-30 05:00:00,4322.5,0.0,46.3 -2014-11-30 06:00:00,4416.3,0.0,45.81 -2014-11-30 07:00:00,4539.4,0.0,45.83 -2014-11-30 08:00:00,4752.0,0.0,46.19 -2014-11-30 09:00:00,4974.1,0.0,46.49 -2014-11-30 10:00:00,5155.5,0.0,47.8 -2014-11-30 11:00:00,5280.8,0.0,49.14 -2014-11-30 12:00:00,5385.4,0.0,49.34 -2014-11-30 13:00:00,5413.7,0.0,49.96 -2014-11-30 14:00:00,5438.0,0.0,50.84 -2014-11-30 15:00:00,5524.5,0.0,51.03 -2014-11-30 16:00:00,5697.8,0.0,51.4 -2014-11-30 17:00:00,5895.2,0.0,51.01 -2014-11-30 18:00:00,5900.1,0.0,50.44 -2014-11-30 19:00:00,5826.7,0.0,50.99 -2014-11-30 20:00:00,5714.8,0.0,51.4 -2014-11-30 21:00:00,5534.6,0.0,51.21 -2014-11-30 22:00:00,5252.0,0.0,51.53 -2014-11-30 23:00:00,4886.9,0.0,52.04 -2014-12-01 00:00:00,4580.0,0.0,51.52 -2014-12-01 01:00:00,4368.6,0.0,52.03 -2014-12-01 02:00:00,4234.4,0.0,52.68 -2014-12-01 03:00:00,4185.4,0.0,52.49 -2014-12-01 04:00:00,4222.1,0.0,52.12 -2014-12-01 05:00:00,4503.9,0.0,52.33 -2014-12-01 06:00:00,5066.0,0.0,51.41 -2014-12-01 07:00:00,5603.7,0.0,51.69 -2014-12-01 08:00:00,5956.3,0.0,52.35 -2014-12-01 09:00:00,6182.2,0.0,54.13 -2014-12-01 10:00:00,6258.1,0.0,56.27 -2014-12-01 11:00:00,6294.5,0.0,58.93 -2014-12-01 12:00:00,6304.4,0.0,60.14 -2014-12-01 13:00:00,6311.4,0.0,61.25 -2014-12-01 14:00:00,6298.1,0.0,61.75 -2014-12-01 15:00:00,6344.5,0.0,59.71 -2014-12-01 16:00:00,6580.7,0.0,54.88 -2014-12-01 17:00:00,6723.7,0.0,52.19 -2014-12-01 18:00:00,6542.0,0.0139,47.12 -2014-12-01 19:00:00,6371.5,0.0469,45.37 -2014-12-01 20:00:00,6192.9,0.0,44.49 -2014-12-01 21:00:00,5936.0,0.0065,43.49 -2014-12-01 22:00:00,5566.2,0.0,43.35 -2014-12-01 23:00:00,5111.7,0.0,42.2 -2014-12-02 00:00:00,4720.2,0.0,41.32 -2014-12-02 01:00:00,4486.6,0.0,40.2 -2014-12-02 02:00:00,4351.8,0.0,39.2 -2014-12-02 03:00:00,4301.5,0.0,39.32 -2014-12-02 04:00:00,4351.0,0.0,38.32 -2014-12-02 05:00:00,4637.4,0.0,37.01 -2014-12-02 06:00:00,5240.6,0.0,35.66 -2014-12-02 07:00:00,5804.5,0.0,35.22 -2014-12-02 08:00:00,6169.0,0.0,35.34 -2014-12-02 09:00:00,6402.8,0.0,35.66 -2014-12-02 10:00:00,6509.5,0.0,37.25 -2014-12-02 11:00:00,6558.0,0.0,38.69 -2014-12-02 12:00:00,6621.3,0.0,40.17 -2014-12-02 13:00:00,6648.7,0.01,39.53 -2014-12-02 14:00:00,6651.1,0.01,38.21 -2014-12-02 15:00:00,6709.0,0.0135,38.56 -2014-12-02 16:00:00,6886.8,0.0,39.19 -2014-12-02 17:00:00,6942.9,0.0,40.19 -2014-12-02 18:00:00,6775.0,0.0,40.86 -2014-12-02 19:00:00,6594.0,0.0,41.94 -2014-12-02 20:00:00,6369.1,0.0035,41.05 -2014-12-02 21:00:00,6100.5,0.0,41.86 -2014-12-02 22:00:00,5677.3,0.0196,42.74 -2014-12-02 23:00:00,5228.8,0.02,43.06 -2014-12-03 00:00:00,4815.5,0.01,41.84 -2014-12-03 01:00:00,4571.6,0.0,41.64 -2014-12-03 02:00:00,4402.0,0.0135,41.34 -2014-12-03 03:00:00,4339.3,0.0,41.47 -2014-12-03 04:00:00,4363.7,0.0,41.15 -2014-12-03 05:00:00,4618.8,0.0,41.19 -2014-12-03 06:00:00,5202.4,0.0,41.63 -2014-12-03 07:00:00,5771.8,0.0,42.96 -2014-12-03 08:00:00,6139.1,0.0035,44.25 -2014-12-03 09:00:00,6350.8,0.0,45.17 -2014-12-03 10:00:00,6469.8,0.0,45.17 -2014-12-03 11:00:00,6512.0,0.0,44.56 -2014-12-03 12:00:00,6549.3,0.0,44.68 -2014-12-03 13:00:00,6581.2,0.0131,44.56 -2014-12-03 14:00:00,6577.8,0.0296,44.51 -2014-12-03 15:00:00,6617.3,0.0261,45.33 -2014-12-03 16:00:00,6788.2,0.0,46.33 -2014-12-03 17:00:00,6874.4,0.0,46.99 -2014-12-03 18:00:00,6669.7,0.0,46.14 -2014-12-03 19:00:00,6520.5,0.0,45.61 -2014-12-03 20:00:00,6310.2,0.0,45.3 -2014-12-03 21:00:00,6053.3,0.0,44.3 -2014-12-03 22:00:00,5676.8,0.0,43.42 -2014-12-03 23:00:00,5230.4,0.0,42.42 -2014-12-04 00:00:00,4831.0,0.0,41.63 -2014-12-04 01:00:00,4589.8,0.0,40.76 -2014-12-04 02:00:00,4431.9,0.0,39.65 -2014-12-04 03:00:00,4379.8,0.0,39.12 -2014-12-04 04:00:00,4414.6,0.0,38.01 -2014-12-04 05:00:00,4674.3,0.0,37.39 -2014-12-04 06:00:00,5269.8,0.0,37.76 -2014-12-04 07:00:00,5800.1,0.0,37.56 -2014-12-04 08:00:00,6137.4,0.0,38.32 -2014-12-04 09:00:00,6345.0,0.0,39.37 -2014-12-04 10:00:00,6402.8,0.0,40.56 -2014-12-04 11:00:00,6417.8,0.0,41.26 -2014-12-04 12:00:00,6414.3,0.0,43.42 -2014-12-04 13:00:00,6411.4,0.0,44.22 -2014-12-04 14:00:00,6405.0,0.0,44.62 -2014-12-04 15:00:00,6487.5,0.0,43.86 -2014-12-04 16:00:00,6682.2,0.0,43.32 -2014-12-04 17:00:00,6854.4,0.0,42.13 -2014-12-04 18:00:00,6691.7,0.0,41.01 -2014-12-04 19:00:00,6520.3,0.0,40.01 -2014-12-04 20:00:00,6322.7,0.0,39.15 -2014-12-04 21:00:00,6090.0,0.0,38.51 -2014-12-04 22:00:00,5720.6,0.0,37.83 -2014-12-04 23:00:00,5289.4,0.0,37.22 -2014-12-05 00:00:00,4888.0,0.0,37.15 -2014-12-05 01:00:00,4645.1,0.0,36.41 -2014-12-05 02:00:00,4489.8,0.0,35.41 -2014-12-05 03:00:00,4429.6,0.0,35.22 -2014-12-05 04:00:00,4479.6,0.0,34.54 -2014-12-05 05:00:00,4723.9,0.0,34.68 -2014-12-05 06:00:00,5301.5,0.0,34.68 -2014-12-05 07:00:00,5831.0,0.0,35.42 -2014-12-05 08:00:00,6161.7,0.0,35.75 -2014-12-05 09:00:00,6431.0,0.0,37.75 -2014-12-05 10:00:00,6525.5,0.0,38.95 -2014-12-05 11:00:00,6572.4,0.0,40.15 -2014-12-05 12:00:00,6596.9,0.0,40.57 -2014-12-05 13:00:00,6607.3,0.0,40.9 -2014-12-05 14:00:00,6602.1,0.0,41.69 -2014-12-05 15:00:00,6666.1,0.0,42.37 -2014-12-05 16:00:00,6824.8,0.0,43.56 -2014-12-05 17:00:00,6841.2,0.0,43.37 -2014-12-05 18:00:00,6634.0,0.0035,41.84 -2014-12-05 19:00:00,6430.8,0.0265,42.52 -2014-12-05 20:00:00,6216.6,0.0561,42.72 -2014-12-05 21:00:00,5992.1,0.0727,42.88 -2014-12-05 22:00:00,5702.7,0.0535,42.47 -2014-12-05 23:00:00,5312.1,0.0504,42.11 -2014-12-06 00:00:00,4941.6,0.0719,42.43 -2014-12-06 01:00:00,4666.4,0.0196,42.46 -2014-12-06 02:00:00,4484.5,0.0165,42.63 -2014-12-06 03:00:00,4387.4,0.0335,42.14 -2014-12-06 04:00:00,4354.8,0.0035,42.84 -2014-12-06 05:00:00,4430.8,0.02,43.12 -2014-12-06 06:00:00,4616.1,0.0,43.81 -2014-12-06 07:00:00,4837.1,0.0,44.3 -2014-12-06 08:00:00,5153.9,0.0,44.56 -2014-12-06 09:00:00,5434.6,0.0,45.62 -2014-12-06 10:00:00,5652.9,0.0,47.04 -2014-12-06 11:00:00,5791.4,0.01,47.64 -2014-12-06 12:00:00,5873.9,0.0761,47.67 -2014-12-06 13:00:00,5869.8,0.0919,46.88 -2014-12-06 14:00:00,5871.9,0.0231,46.29 -2014-12-06 15:00:00,5907.6,0.0373,45.91 -2014-12-06 16:00:00,6030.2,0.03,45.71 -2014-12-06 17:00:00,6156.7,0.0961,45.71 -2014-12-06 18:00:00,6110.5,0.07,45.88 -2014-12-06 19:00:00,5994.5,0.0169,45.56 -2014-12-06 20:00:00,5863.5,0.0431,43.26 -2014-12-06 21:00:00,5705.9,0.07,42.8 -2014-12-06 22:00:00,5477.3,0.0681,42.0 -2014-12-06 23:00:00,5206.3,0.0408,41.0 -2014-12-07 00:00:00,4913.8,0.0796,40.46 -2014-12-07 01:00:00,4655.3,0.0169,39.97 -2014-12-07 02:00:00,4488.3,0.0065,40.44 -2014-12-07 03:00:00,4390.4,0.0,40.0 -2014-12-07 04:00:00,4362.8,0.0,39.0 -2014-12-07 05:00:00,4425.8,0.0,38.26 -2014-12-07 06:00:00,4567.7,0.0,37.46 -2014-12-07 07:00:00,4724.8,0.0,36.65 -2014-12-07 08:00:00,4983.2,0.0,36.46 -2014-12-07 09:00:00,5220.2,0.0,36.9 -2014-12-07 10:00:00,5439.3,0.0,38.37 -2014-12-07 11:00:00,5550.5,0.0,37.88 -2014-12-07 12:00:00,5605.9,0.0,39.37 -2014-12-07 13:00:00,5631.6,0.0,40.58 -2014-12-07 14:00:00,5638.7,0.0,40.58 -2014-12-07 15:00:00,5682.8,0.0,39.9 -2014-12-07 16:00:00,5917.1,0.0,38.54 -2014-12-07 17:00:00,6228.1,0.0,36.46 -2014-12-07 18:00:00,6258.9,0.0,34.81 -2014-12-07 19:00:00,6206.8,0.0,34.34 -2014-12-07 20:00:00,6106.2,0.0,34.01 -2014-12-07 21:00:00,5959.1,0.0,33.18 -2014-12-07 22:00:00,5667.9,0.0,32.36 -2014-12-07 23:00:00,5305.2,0.0,31.17 -2014-12-08 00:00:00,4973.9,0.0,29.76 -2014-12-08 01:00:00,4764.5,0.0,28.65 -2014-12-08 02:00:00,4636.2,0.0,27.83 -2014-12-08 03:00:00,4594.3,0.0,27.62 -2014-12-08 04:00:00,4647.0,0.0,26.81 -2014-12-08 05:00:00,4921.0,0.0,26.13 -2014-12-08 06:00:00,5479.3,0.0,26.01 -2014-12-08 07:00:00,6080.2,0.0,25.78 -2014-12-08 08:00:00,6464.7,0.0,26.3 -2014-12-08 09:00:00,6735.3,0.0,27.38 -2014-12-08 10:00:00,6874.6,0.0,26.95 -2014-12-08 11:00:00,6919.8,0.0,27.34 -2014-12-08 12:00:00,6907.1,0.0,29.57 -2014-12-08 13:00:00,6903.1,0.0,30.01 -2014-12-08 14:00:00,6876.3,0.0,31.01 -2014-12-08 15:00:00,6926.0,0.0,32.01 -2014-12-08 16:00:00,7113.1,0.0,32.01 -2014-12-08 17:00:00,7250.1,0.0,32.49 -2014-12-08 18:00:00,7084.5,0.0,33.04 -2014-12-08 19:00:00,6879.1,0.0,33.69 -2014-12-08 20:00:00,6696.1,0.0,34.03 -2014-12-08 21:00:00,6417.3,0.0,33.88 -2014-12-08 22:00:00,6030.3,0.0,35.03 -2014-12-08 23:00:00,5523.6,0.0,35.27 -2014-12-09 00:00:00,5059.7,0.0,36.13 -2014-12-09 01:00:00,4806.3,0.0,36.51 -2014-12-09 02:00:00,4647.2,0.0,36.51 -2014-12-09 03:00:00,4583.6,0.0,37.39 -2014-12-09 04:00:00,4614.8,0.0551,37.51 -2014-12-09 05:00:00,4876.2,0.0743,38.13 -2014-12-09 06:00:00,5455.8,0.1369,38.42 -2014-12-09 07:00:00,6054.5,0.2461,38.88 -2014-12-09 08:00:00,6414.4,0.1435,39.52 -2014-12-09 09:00:00,6679.5,0.2153,40.5 -2014-12-09 10:00:00,6843.4,0.2196,41.99 -2014-12-09 11:00:00,6923.2,0.2041,42.2 -2014-12-09 12:00:00,6960.6,0.1388,42.52 -2014-12-09 13:00:00,6975.2,0.1568,41.87 -2014-12-09 14:00:00,6928.0,0.3056,41.62 -2014-12-09 15:00:00,6928.9,0.0793,42.2 -2014-12-09 16:00:00,7067.1,0.0165,40.01 -2014-12-09 17:00:00,7147.8,0.0196,40.44 -2014-12-09 18:00:00,6931.9,0.0,40.83 -2014-12-09 19:00:00,6741.2,0.0,41.68 -2014-12-09 20:00:00,6518.2,0.0,42.35 -2014-12-09 21:00:00,6242.4,0.0,42.23 -2014-12-09 22:00:00,5863.0,0.0,41.72 -2014-12-09 23:00:00,5350.0,0.0,42.21 -2014-12-10 00:00:00,4932.6,0.0,41.26 -2014-12-10 01:00:00,4676.4,0.0,40.77 -2014-12-10 02:00:00,4526.9,0.0,40.61 -2014-12-10 03:00:00,4469.0,0.0,40.97 -2014-12-10 04:00:00,4490.5,0.0,40.63 -2014-12-10 05:00:00,4758.1,0.0,40.48 -2014-12-10 06:00:00,5340.0,0.0,40.83 -2014-12-10 07:00:00,5927.3,0.0065,39.78 -2014-12-10 08:00:00,6277.2,0.0065,39.32 -2014-12-10 09:00:00,6515.5,0.0,39.17 -2014-12-10 10:00:00,6610.8,0.0,38.86 -2014-12-10 11:00:00,6665.8,0.0,37.83 -2014-12-10 12:00:00,6700.4,0.0,36.28 -2014-12-10 13:00:00,6719.2,0.0,36.26 -2014-12-10 14:00:00,6697.1,0.0,36.0 -2014-12-10 15:00:00,6785.2,0.0,35.38 -2014-12-10 16:00:00,6999.5,0.0035,33.8 -2014-12-10 17:00:00,7160.6,0.01,33.61 -2014-12-10 18:00:00,7000.3,0.0165,32.49 -2014-12-10 19:00:00,6826.8,0.0035,33.34 -2014-12-10 20:00:00,6622.4,0.0035,33.01 -2014-12-10 21:00:00,6348.2,0.0,34.12 -2014-12-10 22:00:00,5968.1,0.0,34.81 -2014-12-10 23:00:00,5484.6,0.0,34.81 -2014-12-11 00:00:00,5062.8,0.0,34.69 -2014-12-11 01:00:00,4811.2,0.0,33.46 -2014-12-11 02:00:00,4677.2,0.0,32.66 -2014-12-11 03:00:00,4622.6,0.0,30.97 -2014-12-11 04:00:00,4651.8,0.0,32.14 -2014-12-11 05:00:00,4908.6,0.0,32.46 -2014-12-11 06:00:00,5469.5,0.0,32.83 -2014-12-11 07:00:00,6055.9,0.0,32.56 -2014-12-11 08:00:00,6404.2,0.0,32.81 -2014-12-11 09:00:00,6607.1,0.0,33.34 -2014-12-11 10:00:00,6665.4,0.0,34.2 -2014-12-11 11:00:00,6703.7,0.0,35.72 -2014-12-11 12:00:00,6706.6,0.0,34.39 -2014-12-11 13:00:00,6726.6,0.0,35.21 -2014-12-11 14:00:00,6720.3,0.0,36.0 -2014-12-11 15:00:00,6770.5,0.0,36.81 -2014-12-11 16:00:00,6951.4,0.0,36.69 -2014-12-11 17:00:00,7103.6,0.0,36.37 -2014-12-11 18:00:00,6912.7,0.0,35.51 -2014-12-11 19:00:00,6734.8,0.0,35.32 -2014-12-11 20:00:00,6539.7,0.0,34.49 -2014-12-11 21:00:00,6298.0,0.0,34.69 -2014-12-11 22:00:00,5951.1,0.0,34.69 -2014-12-11 23:00:00,5499.9,0.0,34.14 -2014-12-12 00:00:00,5099.1,0.0,33.95 -2014-12-12 01:00:00,4842.6,0.0,33.95 -2014-12-12 02:00:00,4691.1,0.0,33.61 -2014-12-12 03:00:00,4618.9,0.0,33.46 -2014-12-12 04:00:00,4642.1,0.0,32.81 -2014-12-12 05:00:00,4905.7,0.0,32.81 -2014-12-12 06:00:00,5453.8,0.0,32.81 -2014-12-12 07:00:00,6016.1,0.0,32.27 -2014-12-12 08:00:00,6371.1,0.0,32.34 -2014-12-12 09:00:00,6625.3,0.0,33.0 -2014-12-12 10:00:00,6683.4,0.0,33.0 -2014-12-12 11:00:00,6705.6,0.0,34.0 -2014-12-12 12:00:00,6679.0,0.0,35.56 -2014-12-12 13:00:00,6667.2,0.0,36.23 -2014-12-12 14:00:00,6626.5,0.0,36.56 -2014-12-12 15:00:00,6664.1,0.0,36.88 -2014-12-12 16:00:00,6841.2,0.0,36.69 -2014-12-12 17:00:00,7024.1,0.0,35.61 -2014-12-12 18:00:00,6851.3,0.0,35.32 -2014-12-12 19:00:00,6663.4,0.0,35.46 -2014-12-12 20:00:00,6430.3,0.0,35.61 -2014-12-12 21:00:00,6213.9,0.0,35.12 -2014-12-12 22:00:00,5911.7,0.0,34.81 -2014-12-12 23:00:00,5533.9,0.0,34.81 -2014-12-13 00:00:00,5148.2,0.0,34.81 -2014-12-13 01:00:00,4888.2,0.0,34.93 -2014-12-13 02:00:00,4689.7,0.0,34.93 -2014-12-13 03:00:00,4599.2,0.0,35.12 -2014-12-13 04:00:00,4566.6,0.0,35.32 -2014-12-13 05:00:00,4636.1,0.0,35.32 -2014-12-13 06:00:00,4817.4,0.0,34.93 -2014-12-13 07:00:00,5044.9,0.0,34.81 -2014-12-13 08:00:00,5357.2,0.0,35.14 -2014-12-13 09:00:00,5612.2,0.0,36.33 -2014-12-13 10:00:00,5776.7,0.0,38.19 -2014-12-13 11:00:00,5841.9,0.0,39.74 -2014-12-13 12:00:00,5841.6,0.0,41.05 -2014-12-13 13:00:00,5799.0,0.0,42.73 -2014-12-13 14:00:00,5785.1,0.0,42.88 -2014-12-13 15:00:00,5836.9,0.0,41.14 -2014-12-13 16:00:00,6038.2,0.0,40.0 -2014-12-13 17:00:00,6250.0,0.0,40.0 -2014-12-13 18:00:00,6244.0,0.0,39.81 -2014-12-13 19:00:00,6149.8,0.0,39.12 -2014-12-13 20:00:00,6001.4,0.0,38.81 -2014-12-13 21:00:00,5836.3,0.0,38.8 -2014-12-13 22:00:00,5617.5,0.0,38.67 -2014-12-13 23:00:00,5317.5,0.0,39.0 -2014-12-14 00:00:00,5007.3,0.0,38.81 -2014-12-14 01:00:00,4745.7,0.0,38.81 -2014-12-14 02:00:00,4570.6,0.0,38.81 -2014-12-14 03:00:00,4471.1,0.0,38.3 -2014-12-14 04:00:00,4437.7,0.0,37.63 -2014-12-14 05:00:00,4485.9,0.0,37.81 -2014-12-14 06:00:00,4593.3,0.0,38.86 -2014-12-14 07:00:00,4740.4,0.0,38.86 -2014-12-14 08:00:00,5020.0,0.0,39.0 -2014-12-14 09:00:00,5307.8,0.0,39.51 -2014-12-14 10:00:00,5521.8,0.0,40.88 -2014-12-14 11:00:00,5639.5,0.0,41.68 -2014-12-14 12:00:00,5687.4,0.0,42.7 -2014-12-14 13:00:00,5673.1,0.0,43.05 -2014-12-14 14:00:00,5647.1,0.0,44.25 -2014-12-14 15:00:00,5667.6,0.0,45.3 -2014-12-14 16:00:00,5872.0,0.0,45.06 -2014-12-14 17:00:00,6166.8,0.0,43.21 -2014-12-14 18:00:00,6201.5,0.0,42.17 -2014-12-14 19:00:00,6146.5,0.0,41.81 -2014-12-14 20:00:00,6044.6,0.0,41.63 -2014-12-14 21:00:00,5871.1,0.0,40.81 -2014-12-14 22:00:00,5565.6,0.0,40.44 -2014-12-14 23:00:00,5187.9,0.0,39.98 -2014-12-15 00:00:00,4839.6,0.0,39.44 -2014-12-15 01:00:00,4619.7,0.0,39.11 -2014-12-15 02:00:00,4488.4,0.0,38.23 -2014-12-15 03:00:00,4437.7,0.0,37.5 -2014-12-15 04:00:00,4485.6,0.0,37.06 -2014-12-15 05:00:00,4748.7,0.0,36.69 -2014-12-15 06:00:00,5323.4,0.0,36.43 -2014-12-15 07:00:00,5861.5,0.0,35.52 -2014-12-15 08:00:00,6182.2,0.0,36.36 -2014-12-15 09:00:00,6411.3,0.0,37.99 -2014-12-15 10:00:00,6493.2,0.0,40.73 -2014-12-15 11:00:00,6508.5,0.0,41.19 -2014-12-15 12:00:00,6501.4,0.0,42.92 -2014-12-15 13:00:00,6489.3,0.0,44.87 -2014-12-15 14:00:00,6452.5,0.0,46.32 -2014-12-15 15:00:00,6494.9,0.0,47.0 -2014-12-15 16:00:00,6685.7,0.0,46.31 -2014-12-15 17:00:00,6920.4,0.0,45.2 -2014-12-15 18:00:00,6756.4,0.0,45.13 -2014-12-15 19:00:00,6582.8,0.0,44.48 -2014-12-15 20:00:00,6400.8,0.0,41.98 -2014-12-15 21:00:00,6150.0,0.0,41.37 -2014-12-15 22:00:00,5769.2,0.0,41.18 -2014-12-15 23:00:00,5293.7,0.0,39.62 -2014-12-16 00:00:00,4879.3,0.0,38.82 -2014-12-16 01:00:00,4616.8,0.0,37.63 -2014-12-16 02:00:00,4474.5,0.0,37.38 -2014-12-16 03:00:00,4411.4,0.0,36.52 -2014-12-16 04:00:00,4449.1,0.0,36.52 -2014-12-16 05:00:00,4717.6,0.0,36.7 -2014-12-16 06:00:00,5301.8,0.0,37.16 -2014-12-16 07:00:00,5867.1,0.0,37.32 -2014-12-16 08:00:00,6213.5,0.0,38.72 -2014-12-16 09:00:00,6444.9,0.0,40.05 -2014-12-16 10:00:00,6534.1,0.0,41.33 -2014-12-16 11:00:00,6541.8,0.0,42.71 -2014-12-16 12:00:00,6542.1,0.0,43.81 -2014-12-16 13:00:00,6534.6,0.0,44.09 -2014-12-16 14:00:00,6499.4,0.0,44.98 -2014-12-16 15:00:00,6557.8,0.0,45.73 -2014-12-16 16:00:00,6795.2,0.0,45.22 -2014-12-16 17:00:00,6962.9,0.0069,47.4 -2014-12-16 18:00:00,6777.7,0.01,46.07 -2014-12-16 19:00:00,6604.2,0.01,45.35 -2014-12-16 20:00:00,6410.3,0.0196,45.77 -2014-12-16 21:00:00,6111.0,0.0104,45.04 -2014-12-16 22:00:00,5744.7,0.0165,44.34 -2014-12-16 23:00:00,5266.7,0.0135,44.56 -2014-12-17 00:00:00,4832.6,0.0065,44.71 -2014-12-17 01:00:00,4561.9,0.0131,44.02 -2014-12-17 02:00:00,4416.1,0.0,43.9 -2014-12-17 03:00:00,4351.0,0.0065,44.19 -2014-12-17 04:00:00,4383.7,0.0035,44.05 -2014-12-17 05:00:00,4647.5,0.0035,44.52 -2014-12-17 06:00:00,5241.2,0.0,44.47 -2014-12-17 07:00:00,5795.4,0.0,44.66 -2014-12-17 08:00:00,6106.2,0.0,44.33 -2014-12-17 09:00:00,6302.4,0.0,45.88 -2014-12-17 10:00:00,6376.5,0.0,47.73 -2014-12-17 11:00:00,6378.5,0.0,49.67 -2014-12-17 12:00:00,6382.0,0.0,51.4 -2014-12-17 13:00:00,6416.0,0.0,52.05 -2014-12-17 14:00:00,6435.4,0.0,51.34 -2014-12-17 15:00:00,6528.9,0.0,50.66 -2014-12-17 16:00:00,6711.4,0.0,49.28 -2014-12-17 17:00:00,6875.8,0.0,48.18 -2014-12-17 18:00:00,6679.0,0.0,47.66 -2014-12-17 19:00:00,6503.0,0.0,46.67 -2014-12-17 20:00:00,6316.0,0.0,45.32 -2014-12-17 21:00:00,6071.2,0.0,44.17 -2014-12-17 22:00:00,5692.0,0.0,43.49 -2014-12-17 23:00:00,5254.2,0.0,42.49 -2014-12-18 00:00:00,4835.8,0.0,41.49 -2014-12-18 01:00:00,4580.5,0.0,41.05 -2014-12-18 02:00:00,4435.3,0.0,40.5 -2014-12-18 03:00:00,4383.0,0.0,39.82 -2014-12-18 04:00:00,4420.4,0.0,39.49 -2014-12-18 05:00:00,4692.5,0.0,38.61 -2014-12-18 06:00:00,5285.9,0.0,38.14 -2014-12-18 07:00:00,5848.8,0.0,38.14 -2014-12-18 08:00:00,6175.8,0.0,38.0 -2014-12-18 09:00:00,6398.6,0.0,38.68 -2014-12-18 10:00:00,6475.4,0.0,39.19 -2014-12-18 11:00:00,6519.2,0.0,39.69 -2014-12-18 12:00:00,6523.0,0.0,39.88 -2014-12-18 13:00:00,6506.4,0.0,40.54 -2014-12-18 14:00:00,6479.7,0.0,40.88 -2014-12-18 15:00:00,6536.4,0.0,41.27 -2014-12-18 16:00:00,6771.8,0.0,40.41 -2014-12-18 17:00:00,6962.7,0.0,39.86 -2014-12-18 18:00:00,6804.7,0.0,39.0 -2014-12-18 19:00:00,6634.7,0.0,39.0 -2014-12-18 20:00:00,6425.0,0.0,38.41 -2014-12-18 21:00:00,6176.0,0.0,37.81 -2014-12-18 22:00:00,5830.3,0.0,37.81 -2014-12-18 23:00:00,5370.7,0.0,37.81 -2014-12-19 00:00:00,4968.7,0.0,37.63 -2014-12-19 01:00:00,4706.9,0.0,37.81 -2014-12-19 02:00:00,4552.7,0.0,37.81 -2014-12-19 03:00:00,4488.8,0.0,36.95 -2014-12-19 04:00:00,4516.2,0.0,36.81 -2014-12-19 05:00:00,4765.3,0.0,37.0 -2014-12-19 06:00:00,5325.1,0.0,37.0 -2014-12-19 07:00:00,5897.6,0.0,37.0 -2014-12-19 08:00:00,6257.0,0.0,36.49 -2014-12-19 09:00:00,6485.2,0.0,35.46 -2014-12-19 10:00:00,6584.6,0.0,35.2 -2014-12-19 11:00:00,6590.3,0.0,35.56 -2014-12-19 12:00:00,6571.7,0.0,35.39 -2014-12-19 13:00:00,6536.2,0.0,36.19 -2014-12-19 14:00:00,6510.6,0.0,36.95 -2014-12-19 15:00:00,6556.5,0.0,36.76 -2014-12-19 16:00:00,6754.0,0.0,35.31 -2014-12-19 17:00:00,6961.5,0.0,34.63 -2014-12-19 18:00:00,6791.5,0.0,33.63 -2014-12-19 19:00:00,6633.5,0.0,33.14 -2014-12-19 20:00:00,6422.9,0.0,32.63 -2014-12-19 21:00:00,6191.1,0.0,32.49 -2014-12-19 22:00:00,5904.3,0.0,32.14 -2014-12-19 23:00:00,5498.1,0.0,32.14 -2014-12-20 00:00:00,5127.1,0.0,32.49 -2014-12-20 01:00:00,4872.2,0.0,32.14 -2014-12-20 02:00:00,4704.2,0.0,31.86 -2014-12-20 03:00:00,4608.5,0.0,31.16 -2014-12-20 04:00:00,4585.0,0.0,31.51 -2014-12-20 05:00:00,4651.4,0.0,31.51 -2014-12-20 06:00:00,4826.5,0.0,31.31 -2014-12-20 07:00:00,5066.0,0.0,31.51 -2014-12-20 08:00:00,5405.3,0.0,31.0 -2014-12-20 09:00:00,5722.2,0.0,30.86 -2014-12-20 10:00:00,5939.8,0.0,30.74 -2014-12-20 11:00:00,6033.7,0.0,31.0 -2014-12-20 12:00:00,6073.2,0.0,31.19 -2014-12-20 13:00:00,6033.0,0.0,31.74 -2014-12-20 14:00:00,6012.1,0.0,32.07 -2014-12-20 15:00:00,6016.1,0.0,32.93 -2014-12-20 16:00:00,6158.5,0.0,32.93 -2014-12-20 17:00:00,6345.1,0.0,32.88 -2014-12-20 18:00:00,6327.9,0.0,33.0 -2014-12-20 19:00:00,6228.6,0.0,33.0 -2014-12-20 20:00:00,6096.2,0.0,32.65 -2014-12-20 21:00:00,5933.2,0.0,32.81 -2014-12-20 22:00:00,5721.8,0.0,32.61 -2014-12-20 23:00:00,5412.4,0.0,32.2 -2014-12-21 00:00:00,5099.2,0.0,32.14 -2014-12-21 01:00:00,4836.2,0.0,32.0 -2014-12-21 02:00:00,4664.2,0.0,32.0 -2014-12-21 03:00:00,4550.5,0.0,31.81 -2014-12-21 04:00:00,4511.2,0.0,31.81 -2014-12-21 05:00:00,4553.8,0.0,31.61 -2014-12-21 06:00:00,4663.8,0.0,31.61 -2014-12-21 07:00:00,4814.2,0.0,31.49 -2014-12-21 08:00:00,5083.7,0.0,32.02 -2014-12-21 09:00:00,5377.6,0.0,32.49 -2014-12-21 10:00:00,5631.3,0.0,33.23 -2014-12-21 11:00:00,5762.1,0.0,32.88 -2014-12-21 12:00:00,5814.1,0.0,33.19 -2014-12-21 13:00:00,5819.3,0.0,33.88 -2014-12-21 14:00:00,5814.2,0.0,34.93 -2014-12-21 15:00:00,5850.8,0.0,35.19 -2014-12-21 16:00:00,6031.1,0.0,35.86 -2014-12-21 17:00:00,6236.0,0.0,35.86 -2014-12-21 18:00:00,6246.4,0.0,35.37 -2014-12-21 19:00:00,6186.2,0.0,34.51 -2014-12-21 20:00:00,6084.0,0.0,35.0 -2014-12-21 21:00:00,5929.7,0.0,35.0 -2014-12-21 22:00:00,5643.9,0.0,35.35 -2014-12-21 23:00:00,5273.6,0.0,34.81 -2014-12-22 00:00:00,4942.8,0.0,35.34 -2014-12-22 01:00:00,4708.5,0.0,35.34 -2014-12-22 02:00:00,4557.0,0.0,35.69 -2014-12-22 03:00:00,4485.6,0.0,35.69 -2014-12-22 04:00:00,4523.9,0.0,35.69 -2014-12-22 05:00:00,4780.8,0.0,35.69 -2014-12-22 06:00:00,5311.8,0.0,35.83 -2014-12-22 07:00:00,5842.8,0.0,36.15 -2014-12-22 08:00:00,6213.1,0.0,36.9 -2014-12-22 09:00:00,6449.2,0.0,38.05 -2014-12-22 10:00:00,6558.2,0.0,39.27 -2014-12-22 11:00:00,6605.3,0.0,39.93 -2014-12-22 12:00:00,6605.3,0.0,40.97 -2014-12-22 13:00:00,6612.2,0.0,41.2 -2014-12-22 14:00:00,6628.9,0.0,41.85 -2014-12-22 15:00:00,6705.6,0.0,42.04 -2014-12-22 16:00:00,6842.0,0.0,42.39 -2014-12-22 17:00:00,6921.9,0.0,42.39 -2014-12-22 18:00:00,6732.0,0.0065,42.85 -2014-12-22 19:00:00,6536.0,0.0,44.62 -2014-12-22 20:00:00,6346.1,0.0,44.56 -2014-12-22 21:00:00,6110.4,0.0,45.18 -2014-12-22 22:00:00,5759.6,0.01,44.29 -2014-12-22 23:00:00,5312.7,0.0069,44.09 -2014-12-23 00:00:00,4894.4,0.0065,44.59 -2014-12-23 01:00:00,4616.1,0.0104,44.59 -2014-12-23 02:00:00,4463.4,0.0361,44.22 -2014-12-23 03:00:00,4389.5,0.03,44.48 -2014-12-23 04:00:00,4413.2,0.0069,44.48 -2014-12-23 05:00:00,4668.9,0.0,44.36 -2014-12-23 06:00:00,5189.7,0.01,43.97 -2014-12-23 07:00:00,5721.1,0.0243,44.67 -2014-12-23 08:00:00,6095.6,0.0,44.67 -2014-12-23 09:00:00,6340.0,0.0,44.86 -2014-12-23 10:00:00,6426.7,0.0035,44.39 -2014-12-23 11:00:00,6472.2,0.0131,44.76 -2014-12-23 12:00:00,6466.0,0.0,44.73 -2014-12-23 13:00:00,6464.8,0.0,45.39 -2014-12-23 14:00:00,6445.3,0.0035,45.25 -2014-12-23 15:00:00,6482.0,0.0035,45.58 -2014-12-23 16:00:00,6631.7,0.01,45.51 -2014-12-23 17:00:00,6742.9,0.0035,45.67 -2014-12-23 18:00:00,6564.4,0.0,45.88 -2014-12-23 19:00:00,6377.3,0.0035,45.32 -2014-12-23 20:00:00,6188.4,0.0035,45.32 -2014-12-23 21:00:00,5979.7,0.0065,45.52 -2014-12-23 22:00:00,5667.4,0.0035,45.38 -2014-12-23 23:00:00,5265.0,0.0,45.52 -2014-12-24 00:00:00,4865.9,0.0035,45.03 -2014-12-24 01:00:00,4597.1,0.0,45.05 -2014-12-24 02:00:00,4424.0,0.0,44.91 -2014-12-24 03:00:00,4338.3,0.0,45.2 -2014-12-24 04:00:00,4356.7,0.0,45.06 -2014-12-24 05:00:00,4554.7,0.0,44.36 -2014-12-24 06:00:00,4994.8,0.0165,45.06 -2014-12-24 07:00:00,5435.0,0.0104,44.83 -2014-12-24 08:00:00,5815.2,0.0,44.8 -2014-12-24 09:00:00,6107.2,0.0,44.61 -2014-12-24 10:00:00,6260.9,0.0712,44.78 -2014-12-24 11:00:00,6357.4,0.12,45.05 -2014-12-24 12:00:00,6363.6,0.1451,45.27 -2014-12-24 13:00:00,6338.0,0.0596,46.2 -2014-12-24 14:00:00,6269.0,0.0827,46.65 -2014-12-24 15:00:00,6220.4,0.0496,47.4 -2014-12-24 16:00:00,6320.8,0.0,47.69 -2014-12-24 17:00:00,6377.5,0.0069,48.32 -2014-12-24 18:00:00,6143.4,0.0335,52.17 -2014-12-24 19:00:00,5916.3,0.0035,53.73 -2014-12-24 20:00:00,5709.8,0.0,53.84 -2014-12-24 21:00:00,5519.4,0.0,53.61 -2014-12-24 22:00:00,5294.0,0.0,53.67 -2014-12-24 23:00:00,5016.5,0.0,54.25 -2014-12-25 00:00:00,4739.1,0.0,53.79 -2014-12-25 01:00:00,4529.7,0.0,54.53 -2014-12-25 02:00:00,4364.8,0.0035,56.6 -2014-12-25 03:00:00,4260.9,0.0196,57.91 -2014-12-25 04:00:00,4206.8,0.0231,60.39 -2014-12-25 05:00:00,4231.9,0.0,59.0 -2014-12-25 06:00:00,4365.4,0.0,55.75 -2014-12-25 07:00:00,4492.2,0.0165,50.94 -2014-12-25 08:00:00,4670.9,0.0,50.29 -2014-12-25 09:00:00,4894.6,0.0,49.8 -2014-12-25 10:00:00,5031.1,0.0,49.54 -2014-12-25 11:00:00,5098.5,0.0,49.35 -2014-12-25 12:00:00,5153.4,0.0,51.03 -2014-12-25 13:00:00,5169.7,0.0,51.01 -2014-12-25 14:00:00,5161.8,0.0,50.85 -2014-12-25 15:00:00,5163.7,0.0,50.66 -2014-12-25 16:00:00,5252.9,0.0,50.2 -2014-12-25 17:00:00,5454.2,0.0,49.34 -2014-12-25 18:00:00,5448.8,0.0,48.66 -2014-12-25 19:00:00,5396.7,0.0,48.15 -2014-12-25 20:00:00,5334.3,0.0,47.35 -2014-12-25 21:00:00,5259.6,0.0,46.49 -2014-12-25 22:00:00,5099.6,0.0,45.83 -2014-12-25 23:00:00,4860.3,0.0,45.09 -2014-12-26 00:00:00,4615.3,0.0,44.29 -2014-12-26 01:00:00,4416.5,0.0,43.05 -2014-12-26 02:00:00,4286.8,0.0,42.42 -2014-12-26 03:00:00,4229.7,0.0,42.29 -2014-12-26 04:00:00,4248.7,0.0,40.93 -2014-12-26 05:00:00,4439.6,0.0,40.29 -2014-12-26 06:00:00,4808.8,0.0,39.37 -2014-12-26 07:00:00,5145.0,0.0,39.22 -2014-12-26 08:00:00,5446.4,0.0,39.22 -2014-12-26 09:00:00,5677.2,0.0,40.8 -2014-12-26 10:00:00,5806.4,0.0,42.74 -2014-12-26 11:00:00,5866.6,0.0,43.88 -2014-12-26 12:00:00,5877.4,0.0,45.15 -2014-12-26 13:00:00,5859.0,0.0,47.05 -2014-12-26 14:00:00,5835.1,0.0,48.17 -2014-12-26 15:00:00,5844.4,0.0,48.51 -2014-12-26 16:00:00,5999.8,0.0,48.85 -2014-12-26 17:00:00,6247.9,0.0,46.81 -2014-12-26 18:00:00,6137.3,0.0,46.71 -2014-12-26 19:00:00,6007.5,0.0,45.42 -2014-12-26 20:00:00,5861.7,0.0,44.61 -2014-12-26 21:00:00,5678.5,0.0,43.84 -2014-12-26 22:00:00,5416.6,0.0,42.77 -2014-12-26 23:00:00,5105.4,0.0,42.35 -2014-12-27 00:00:00,4776.8,0.0,41.7 -2014-12-27 01:00:00,4539.9,0.0,41.34 -2014-12-27 02:00:00,4378.9,0.0,40.83 -2014-12-27 03:00:00,4292.0,0.0,40.66 -2014-12-27 04:00:00,4267.0,0.0,40.8 -2014-12-27 05:00:00,4344.7,0.0,40.39 -2014-12-27 06:00:00,4498.2,0.0,41.01 -2014-12-27 07:00:00,4650.6,0.0,41.38 -2014-12-27 08:00:00,4878.9,0.0,40.47 -2014-12-27 09:00:00,5086.4,0.0,42.79 -2014-12-27 10:00:00,5244.0,0.0,44.86 -2014-12-27 11:00:00,5328.2,0.0,47.76 -2014-12-27 12:00:00,5358.4,0.0,50.19 -2014-12-27 13:00:00,5327.0,0.0,52.73 -2014-12-27 14:00:00,5300.2,0.0,53.34 -2014-12-27 15:00:00,5301.5,0.0,54.05 -2014-12-27 16:00:00,5439.0,0.0,51.67 -2014-12-27 17:00:00,5717.1,0.0,49.42 -2014-12-27 18:00:00,5741.8,0.0,47.26 -2014-12-27 19:00:00,5679.9,0.0,46.89 -2014-12-27 20:00:00,5583.6,0.0,47.43 -2014-12-27 21:00:00,5442.1,0.0,46.5 -2014-12-27 22:00:00,5249.4,0.0,46.14 -2014-12-27 23:00:00,4989.3,0.0,46.55 -2014-12-28 00:00:00,4699.9,0.0,46.5 -2014-12-28 01:00:00,4470.5,0.0,46.32 -2014-12-28 02:00:00,4304.1,0.0,46.18 -2014-12-28 03:00:00,4206.1,0.0,45.71 -2014-12-28 04:00:00,4170.6,0.0,45.2 -2014-12-28 05:00:00,4222.9,0.0,45.33 -2014-12-28 06:00:00,4330.2,0.0,45.84 -2014-12-28 07:00:00,4456.4,0.0,45.78 -2014-12-28 08:00:00,4678.6,0.04,44.66 -2014-12-28 09:00:00,4922.6,0.0465,44.23 -2014-12-28 10:00:00,5126.9,0.0065,44.41 -2014-12-28 11:00:00,5225.9,0.0,45.8 -2014-12-28 12:00:00,5291.2,0.0,47.81 -2014-12-28 13:00:00,5301.4,0.0,49.09 -2014-12-28 14:00:00,5302.1,0.0,50.54 -2014-12-28 15:00:00,5350.9,0.0,51.08 -2014-12-28 16:00:00,5554.9,0.0,52.02 -2014-12-28 17:00:00,5765.9,0.0,50.54 -2014-12-28 18:00:00,5769.2,0.0,48.24 -2014-12-28 19:00:00,5710.7,0.0,46.98 -2014-12-28 20:00:00,5610.0,0.0,46.51 -2014-12-28 21:00:00,5494.0,0.0,46.17 -2014-12-28 22:00:00,5271.7,0.0,44.86 -2014-12-28 23:00:00,4970.5,0.0,43.19 -2014-12-29 00:00:00,4668.6,0.0,42.12 -2014-12-29 01:00:00,4460.6,0.0,41.44 -2014-12-29 02:00:00,4333.0,0.0,41.0 -2014-12-29 03:00:00,4275.3,0.0,40.0 -2014-12-29 04:00:00,4308.4,0.0,39.61 -2014-12-29 05:00:00,4555.1,0.0,38.81 -2014-12-29 06:00:00,4982.0,0.0,38.17 -2014-12-29 07:00:00,5420.1,0.0,37.63 -2014-12-29 08:00:00,5817.7,0.0,37.06 -2014-12-29 09:00:00,6058.5,0.0,36.88 -2014-12-29 10:00:00,6200.4,0.0,38.19 -2014-12-29 11:00:00,6255.5,0.0,39.56 -2014-12-29 12:00:00,6251.6,0.0,41.23 -2014-12-29 13:00:00,6243.5,0.0,42.28 -2014-12-29 14:00:00,6238.1,0.0,42.19 -2014-12-29 15:00:00,6266.9,0.0,42.54 -2014-12-29 16:00:00,6430.0,0.0,42.59 -2014-12-29 17:00:00,6651.2,0.0,41.19 -2014-12-29 18:00:00,6517.9,0.0,39.83 -2014-12-29 19:00:00,6359.9,0.0,39.0 -2014-12-29 20:00:00,6179.5,0.0,37.81 -2014-12-29 21:00:00,5971.1,0.0,36.81 -2014-12-29 22:00:00,5663.2,0.0,36.27 -2014-12-29 23:00:00,5264.7,0.0,35.3 -2014-12-30 00:00:00,4892.1,0.0,34.63 -2014-12-30 01:00:00,4650.3,0.0,33.63 -2014-12-30 02:00:00,4512.3,0.0,32.63 -2014-12-30 03:00:00,4454.2,0.0,31.15 -2014-12-30 04:00:00,4480.3,0.0,31.01 -2014-12-30 05:00:00,4708.3,0.0,30.65 -2014-12-30 06:00:00,5136.1,0.0,29.97 -2014-12-30 07:00:00,5584.6,0.0,29.63 -2014-12-30 08:00:00,5982.9,0.0,29.32 -2014-12-30 09:00:00,6251.3,0.0,29.2 -2014-12-30 10:00:00,6377.7,0.0,29.56 -2014-12-30 11:00:00,6453.4,0.0,29.81 -2014-12-30 12:00:00,6467.3,0.0,30.42 -2014-12-30 13:00:00,6469.1,0.0,31.35 -2014-12-30 14:00:00,6483.1,0.0,31.6 -2014-12-30 15:00:00,6505.7,0.0,31.86 -2014-12-30 16:00:00,6642.0,0.0,32.85 -2014-12-30 17:00:00,6875.7,0.0,32.27 -2014-12-30 18:00:00,6748.2,0.0,31.61 -2014-12-30 19:00:00,6570.8,0.0,30.81 -2014-12-30 20:00:00,6401.5,0.0,29.95 -2014-12-30 21:00:00,6194.0,0.0,28.63 -2014-12-30 22:00:00,5897.1,0.0,28.63 -2014-12-30 23:00:00,5494.2,0.0,27.81 -2014-12-31 00:00:00,5107.1,0.0,27.5 -2014-12-31 01:00:00,4850.0,0.0,27.99 -2014-12-31 02:00:00,4677.8,0.0,28.13 -2014-12-31 03:00:00,4604.1,0.0,28.49 -2014-12-31 04:00:00,4619.5,0.0,28.94 -2014-12-31 05:00:00,4820.0,0.0,29.02 -2014-12-31 06:00:00,5249.9,0.0,28.32 -2014-12-31 07:00:00,5647.0,0.0,27.14 -2014-12-31 08:00:00,6023.1,0.0,27.02 -2014-12-31 09:00:00,6280.8,0.0,27.76 -2014-12-31 10:00:00,6404.4,0.0,28.42 -2014-12-31 11:00:00,6471.2,0.0,29.07 -2014-12-31 12:00:00,6466.9,0.0,30.23 -2014-12-31 13:00:00,6447.9,0.0,30.81 -2014-12-31 14:00:00,6403.1,0.0,30.27 -2014-12-31 15:00:00,6400.2,0.0,31.39 -2014-12-31 16:00:00,6529.2,0.0,31.39 -2014-12-31 17:00:00,6813.2,0.0,30.81 -2014-12-31 18:00:00,6665.7,0.0,30.34 -2014-12-31 19:00:00,6455.3,0.0,30.42 -2014-12-31 20:00:00,6202.1,0.0,29.29 -2014-12-31 21:00:00,5952.6,0.0,28.71 -2014-12-31 22:00:00,5705.2,0.0,28.54 -2014-12-31 23:00:00,5488.7,0.0,27.85 -2015-01-01 00:00:00,5297.242,0.0,28.09 -2015-01-01 01:00:00,5108.208,0.0,27.39 -2015-01-01 02:00:00,4931.117,0.0,27.15 -2015-01-01 03:00:00,4786.733,0.0,27.08 -2015-01-01 04:00:00,4698.608,0.0,27.2 -2015-01-01 05:00:00,4714.842,0.0,27.07 -2015-01-01 06:00:00,4802.492,0.0,26.57 -2015-01-01 07:00:00,4856.433,0.0,26.39 -2015-01-01 08:00:00,4975.425,0.0,26.9 -2015-01-01 09:00:00,5116.592,0.0,28.15 -2015-01-01 10:00:00,5290.242,0.0,29.8 -2015-01-01 11:00:00,5434.617,0.0,31.0 -2015-01-01 12:00:00,5508.675,0.0,32.86 -2015-01-01 13:00:00,5526.658,0.0,35.4 -2015-01-01 14:00:00,5524.008,0.0,36.67 -2015-01-01 15:00:00,5540.4,0.0,37.86 -2015-01-01 16:00:00,5667.692,0.0,38.32 -2015-01-01 17:00:00,5975.55,0.0,38.08 -2015-01-01 18:00:00,6012.8,0.0,38.22 -2015-01-01 19:00:00,5955.817,0.0,37.97 -2015-01-01 20:00:00,5863.425,0.0,37.58 -2015-01-01 21:00:00,5747.65,0.0,37.1 -2015-01-01 22:00:00,5537.65,0.0,37.39 -2015-01-01 23:00:00,5247.383,0.0,36.88 -2015-01-02 00:00:00,4953.333,0.0,36.41 -2015-01-02 01:00:00,4722.158,0.0,36.34 -2015-01-02 02:00:00,4558.033,0.0,36.62 -2015-01-02 03:00:00,4478.142,0.0,36.18 -2015-01-02 04:00:00,4482.067,0.0,36.08 -2015-01-02 05:00:00,4652.942,0.0,35.52 -2015-01-02 06:00:00,5021.525,0.0,35.64 -2015-01-02 07:00:00,5388.492,0.0,35.9 -2015-01-02 08:00:00,5738.333,0.0,36.6 -2015-01-02 09:00:00,5999.55,0.0,37.63 -2015-01-02 10:00:00,6130.575,0.0,38.68 -2015-01-02 11:00:00,6222.458,0.0,39.66 -2015-01-02 12:00:00,6241.992,0.0,40.19 -2015-01-02 13:00:00,6228.892,0.0,40.54 -2015-01-02 14:00:00,6209.875,0.0,40.74 -2015-01-02 15:00:00,6202.583,0.0,41.74 -2015-01-02 16:00:00,6326.358,0.0,41.0 -2015-01-02 17:00:00,6582.5,0.0,39.93 -2015-01-02 18:00:00,6484.533,0.0,39.63 -2015-01-02 19:00:00,6321.8,0.0,39.3 -2015-01-02 20:00:00,6142.083,0.0,38.44 -2015-01-02 21:00:00,5958.15,0.0,37.27 -2015-01-02 22:00:00,5698.283,0.0,36.79 -2015-01-02 23:00:00,5377.75,0.0,35.64 -2015-01-03 00:00:00,5039.108,0.0,34.9 -2015-01-03 01:00:00,4788.042,0.0,34.63 -2015-01-03 02:00:00,4606.008,0.0,33.2 -2015-01-03 03:00:00,4502.425,0.0,33.59 -2015-01-03 04:00:00,4461.792,0.0,32.93 -2015-01-03 05:00:00,4516.867,0.0,32.94 -2015-01-03 06:00:00,4667.725,0.0,32.21 -2015-01-03 07:00:00,4849.983,0.0,31.94 -2015-01-03 08:00:00,5081.942,0.0,32.08 -2015-01-03 09:00:00,5332.875,0.0,33.64 -2015-01-03 10:00:00,5570.608,0.0,35.52 -2015-01-03 11:00:00,5736.9,0.0,37.01 -2015-01-03 12:00:00,5837.475,0.0,37.01 -2015-01-03 13:00:00,5866.375,0.0069,35.93 -2015-01-03 14:00:00,5906.167,0.0369,34.13 -2015-01-03 15:00:00,5949.607,0.0427,33.83 -2015-01-03 16:00:00,6052.733,0.0531,34.84 -2015-01-03 17:00:00,6216.021,0.0531,35.97 -2015-01-03 18:00:00,6206.992,0.0312,36.94 -2015-01-03 19:00:00,6106.483,0.0635,38.38 -2015-01-03 20:00:00,5947.775,0.0273,39.11 -2015-01-03 21:00:00,5776.65,0.04,39.79 -2015-01-03 22:00:00,5563.383,0.0335,40.05 -2015-01-03 23:00:00,5264.025,0.04,40.35 -2015-01-04 00:00:00,4962.658,0.0496,40.98 -2015-01-04 01:00:00,4710.192,0.062,41.5 -2015-01-04 02:00:00,4501.242,0.02,41.1 -2015-01-04 03:00:00,4389.033,0.0035,40.44 -2015-01-04 04:00:00,4330.408,0.0065,40.17 -2015-01-04 05:00:00,4341.2,0.0,40.73 -2015-01-04 06:00:00,4439.833,0.0035,42.67 -2015-01-04 07:00:00,4572.117,0.0139,44.07 -2015-01-04 08:00:00,4763.3,0.0469,44.3 -2015-01-04 09:00:00,5031.792,0.0,44.91 -2015-01-04 10:00:00,5272.108,0.0,45.61 -2015-01-04 11:00:00,5437.378,0.0,46.38 -2015-01-04 12:00:00,5509.167,0.0,48.94 -2015-01-04 13:00:00,5560.642,0.0035,50.17 -2015-01-04 14:00:00,5575.158,0.0,50.74 -2015-01-04 15:00:00,5577.6,0.0035,53.17 -2015-01-04 16:00:00,5696.592,0.0,54.39 -2015-01-04 17:00:00,5931.658,0.0,54.83 -2015-01-04 18:00:00,5952.35,0.0,54.62 -2015-01-04 19:00:00,5886.106,0.0,54.99 -2015-01-04 20:00:00,5773.531,0.0196,53.64 -2015-01-04 21:00:00,5587.633,0.0596,53.07 -2015-01-04 22:00:00,5331.46,0.0,52.27 -2015-01-04 23:00:00,4972.433,0.0,51.46 -2015-01-05 00:00:00,4669.75,0.0,50.15 -2015-01-05 01:00:00,4448.483,0.0,47.84 -2015-01-05 02:00:00,4330.775,0.0,45.96 -2015-01-05 03:00:00,4282.883,0.0,44.49 -2015-01-05 04:00:00,4324.614,0.0,43.1 -2015-01-05 05:00:00,4577.225,0.0,41.8 -2015-01-05 06:00:00,5130.458,0.0,40.94 -2015-01-05 07:00:00,5724.742,0.0,40.29 -2015-01-05 08:00:00,6075.3,0.0,39.14 -2015-01-05 09:00:00,6336.192,0.0,39.03 -2015-01-05 10:00:00,6449.808,0.0,37.49 -2015-01-05 11:00:00,6491.65,0.0,36.22 -2015-01-05 12:00:00,6548.483,0.0,35.54 -2015-01-05 13:00:00,6545.417,0.0,34.88 -2015-01-05 14:00:00,6546.333,0.0,35.23 -2015-01-05 15:00:00,6601.592,0.0,34.05 -2015-01-05 16:00:00,6750.95,0.0,32.8 -2015-01-05 17:00:00,7020.45,0.0,31.81 -2015-01-05 18:00:00,6934.267,0.0,29.93 -2015-01-05 19:00:00,6810.092,0.0,28.42 -2015-01-05 20:00:00,6639.033,0.0,26.69 -2015-01-05 21:00:00,6409.192,0.0,24.81 -2015-01-05 22:00:00,6061.7,0.0,22.81 -2015-01-05 23:00:00,5615.508,0.0,21.81 -2015-01-06 00:00:00,5231.708,0.0,21.49 -2015-01-06 01:00:00,4985.108,0.0,20.75 -2015-01-06 02:00:00,4839.5,0.0,19.95 -2015-01-06 03:00:00,4781.992,0.0,19.69 -2015-01-06 04:00:00,4802.292,0.0,19.2 -2015-01-06 05:00:00,5009.192,0.0,19.35 -2015-01-06 06:00:00,5494.3,0.0,19.14 -2015-01-06 07:00:00,6140.908,0.0,19.88 -2015-01-06 08:00:00,6530.829,0.0,19.42 -2015-01-06 09:00:00,6789.058,0.0,17.82 -2015-01-06 10:00:00,6925.925,0.0165,18.07 -2015-01-06 11:00:00,6990.692,0.0,18.88 -2015-01-06 12:00:00,7020.857,0.0,19.69 -2015-01-06 13:00:00,7014.742,0.0,20.17 -2015-01-06 14:00:00,6997.742,0.0,20.68 -2015-01-06 15:00:00,7039.208,0.0,20.88 -2015-01-06 16:00:00,7157.392,0.0,21.02 -2015-01-06 17:00:00,7358.175,0.0,21.37 -2015-01-06 18:00:00,7237.981,0.0,21.3 -2015-01-06 19:00:00,7078.079,0.0,20.95 -2015-01-06 20:00:00,6897.275,0.0,20.76 -2015-01-06 21:00:00,6644.958,0.0,21.26 -2015-01-06 22:00:00,6236.242,0.0,20.9 -2015-01-06 23:00:00,5783.592,0.0,20.61 -2015-01-07 00:00:00,5383.475,0.0,20.12 -2015-01-07 01:00:00,5136.217,0.0,19.95 -2015-01-07 02:00:00,4971.883,0.0,20.67 -2015-01-07 03:00:00,4902.192,0.0,20.65 -2015-01-07 04:00:00,4916.108,0.0,21.53 -2015-01-07 05:00:00,5119.442,0.0,21.65 -2015-01-07 06:00:00,5643.917,0.0,21.46 -2015-01-07 07:00:00,6242.183,0.0,20.95 -2015-01-07 08:00:00,6649.45,0.0,21.63 -2015-01-07 09:00:00,6860.45,0.0,22.14 -2015-01-07 10:00:00,6979.342,0.0,22.68 -2015-01-07 11:00:00,7035.383,0.0,23.37 -2015-01-07 12:00:00,7059.358,0.0,22.13 -2015-01-07 13:00:00,7065.725,0.0,22.19 -2015-01-07 14:00:00,7073.983,0.0,22.23 -2015-01-07 15:00:00,7126.3,0.0,20.38 -2015-01-07 16:00:00,7273.064,0.0,21.29 -2015-01-07 17:00:00,7511.486,0.0,19.3 -2015-01-07 18:00:00,7483.875,0.0,16.3 -2015-01-07 19:00:00,7366.725,0.0,14.51 -2015-01-07 20:00:00,7208.921,0.0,12.51 -2015-01-07 21:00:00,6956.908,0.0,10.95 -2015-01-07 22:00:00,6627.317,0.0,10.49 -2015-01-07 23:00:00,6165.75,0.0,9.95 -2015-01-08 00:00:00,5760.064,0.0,9.69 -2015-01-08 01:00:00,5489.258,0.0,9.39 -2015-01-08 02:00:00,5332.583,0.0,8.63 -2015-01-08 03:00:00,5264.958,0.0,9.19 -2015-01-08 04:00:00,5287.336,0.0,8.09 -2015-01-08 05:00:00,5495.425,0.0,8.51 -2015-01-08 06:00:00,6012.747,0.0,8.81 -2015-01-08 07:00:00,6569.817,0.0,9.37 -2015-01-08 08:00:00,6883.638,0.0,9.81 -2015-01-08 09:00:00,7160.467,0.0,11.19 -2015-01-08 10:00:00,7284.383,0.0,13.47 -2015-01-08 11:00:00,7329.258,0.0,15.6 -2015-01-08 12:00:00,7304.567,0.0,17.14 -2015-01-08 13:00:00,7284.606,0.0,18.61 -2015-01-08 14:00:00,7241.378,0.0,19.81 -2015-01-08 15:00:00,7260.675,0.0,20.39 -2015-01-08 16:00:00,7375.575,0.0,20.07 -2015-01-08 17:00:00,7619.442,0.0,19.41 -2015-01-08 18:00:00,7553.192,0.0,19.39 -2015-01-08 19:00:00,7395.675,0.0,18.04 -2015-01-08 20:00:00,7205.633,0.0,17.04 -2015-01-08 21:00:00,6927.7,0.0,16.9 -2015-01-08 22:00:00,6545.208,0.0,17.17 -2015-01-08 23:00:00,6104.033,0.0,17.36 -2015-01-09 00:00:00,5679.375,0.0,18.29 -2015-01-09 01:00:00,5414.233,0.0,19.85 -2015-01-09 02:00:00,5239.092,0.0,21.17 -2015-01-09 03:00:00,5138.483,0.0,22.29 -2015-01-09 04:00:00,5142.667,0.0,23.29 -2015-01-09 05:00:00,5320.842,0.0,24.8 -2015-01-09 06:00:00,5808.725,0.0,24.97 -2015-01-09 07:00:00,6434.583,0.0,22.65 -2015-01-09 08:00:00,6768.95,0.0069,22.51 -2015-01-09 09:00:00,7036.583,0.0035,23.72 -2015-01-09 10:00:00,7153.65,0.0035,25.01 -2015-01-09 11:00:00,7176.133,0.0,26.34 -2015-01-09 12:00:00,7122.233,0.0,29.9 -2015-01-09 13:00:00,7081.692,0.0,31.19 -2015-01-09 14:00:00,7021.517,0.0,32.0 -2015-01-09 15:00:00,7032.642,0.0,31.74 -2015-01-09 16:00:00,7101.817,0.0,31.81 -2015-01-09 17:00:00,7275.65,0.0,30.76 -2015-01-09 18:00:00,7178.425,0.0,30.27 -2015-01-09 19:00:00,6976.467,0.0,29.76 -2015-01-09 20:00:00,6785.933,0.0,28.76 -2015-01-09 21:00:00,6568.792,0.0,26.76 -2015-01-09 22:00:00,6291.192,0.0,25.63 -2015-01-09 23:00:00,5949.875,0.0,24.65 -2015-01-10 00:00:00,5583.85,0.0,23.63 -2015-01-10 01:00:00,5344.917,0.0,22.65 -2015-01-10 02:00:00,5169.383,0.0,21.76 -2015-01-10 03:00:00,5072.367,0.0,20.65 -2015-01-10 04:00:00,5047.8,0.0,19.65 -2015-01-10 05:00:00,5126.808,0.0,18.95 -2015-01-10 06:00:00,5294.525,0.0,17.95 -2015-01-10 07:00:00,5509.567,0.0,16.95 -2015-01-10 08:00:00,5814.933,0.0,16.83 -2015-01-10 09:00:00,6081.083,0.0,17.07 -2015-01-10 10:00:00,6290.933,0.0,17.42 -2015-01-10 11:00:00,6397.517,0.0,18.44 -2015-01-10 12:00:00,6432.558,0.0,19.07 -2015-01-10 13:00:00,6408.517,0.0,20.39 -2015-01-10 14:00:00,6355.033,0.0,21.62 -2015-01-10 15:00:00,6341.75,0.0,22.88 -2015-01-10 16:00:00,6428.667,0.0,22.72 -2015-01-10 17:00:00,6709.683,0.0,22.22 -2015-01-10 18:00:00,6797.808,0.0,21.16 -2015-01-10 19:00:00,6723.458,0.0,20.95 -2015-01-10 20:00:00,6590.758,0.0,20.04 -2015-01-10 21:00:00,6436.675,0.0,19.78 -2015-01-10 22:00:00,6223.508,0.0,18.83 -2015-01-10 23:00:00,5949.125,0.0,18.65 -2015-01-11 00:00:00,5635.858,0.0,18.78 -2015-01-11 01:00:00,5370.05,0.0,18.71 -2015-01-11 02:00:00,5189.917,0.0,18.85 -2015-01-11 03:00:00,5072.308,0.0,19.24 -2015-01-11 04:00:00,5019.742,0.0,19.8 -2015-01-11 05:00:00,5041.0,0.0,19.73 -2015-01-11 06:00:00,5140.492,0.0,20.44 -2015-01-11 07:00:00,5261.308,0.0,20.93 -2015-01-11 08:00:00,5480.583,0.0,21.69 -2015-01-11 09:00:00,5711.242,0.0,23.61 -2015-01-11 10:00:00,5941.583,0.0,24.76 -2015-01-11 11:00:00,6074.208,0.0,26.42 -2015-01-11 12:00:00,6124.417,0.0,28.49 -2015-01-11 13:00:00,6128.508,0.0,30.61 -2015-01-11 14:00:00,6077.35,0.0,31.88 -2015-01-11 15:00:00,6051.617,0.0,35.51 -2015-01-11 16:00:00,6172.5,0.0,36.32 -2015-01-11 17:00:00,6458.975,0.0,36.13 -2015-01-11 18:00:00,6508.433,0.0,35.76 -2015-01-11 19:00:00,6434.633,0.0,35.23 -2015-01-11 20:00:00,6317.458,0.0,35.2 -2015-01-11 21:00:00,6124.558,0.0,35.17 -2015-01-11 22:00:00,5847.525,0.0,34.96 -2015-01-11 23:00:00,5471.342,0.0,34.81 -2015-01-12 00:00:00,5116.992,0.0,35.3 -2015-01-12 01:00:00,4900.75,0.0,35.56 -2015-01-12 02:00:00,4756.05,0.0,35.44 -2015-01-12 03:00:00,4701.442,0.0,35.56 -2015-01-12 04:00:00,4727.25,0.0,35.42 -2015-01-12 05:00:00,4950.583,0.0,35.26 -2015-01-12 06:00:00,5473.325,0.0,35.76 -2015-01-12 07:00:00,6078.25,0.0,35.56 -2015-01-12 08:00:00,6466.075,0.0,35.98 -2015-01-12 09:00:00,6726.383,0.02,34.02 -2015-01-12 10:00:00,6878.408,0.03,34.49 -2015-01-12 11:00:00,6948.167,0.0269,34.84 -2015-01-12 12:00:00,6981.025,0.0365,35.03 -2015-01-12 13:00:00,6987.65,0.0296,35.69 -2015-01-12 14:00:00,6961.4,0.0235,36.03 -2015-01-12 15:00:00,6967.85,0.0531,36.17 -2015-01-12 16:00:00,7026.625,0.0,36.17 -2015-01-12 17:00:00,7141.717,0.0035,36.15 -2015-01-12 18:00:00,6972.825,0.0,36.86 -2015-01-12 19:00:00,6795.2,0.0,37.42 -2015-01-12 20:00:00,6575.492,0.0,38.09 -2015-01-12 21:00:00,6322.017,0.0,37.88 -2015-01-12 22:00:00,5962.717,0.0,37.32 -2015-01-12 23:00:00,5528.65,0.0,36.86 -2015-01-13 00:00:00,5111.108,0.0,36.51 -2015-01-13 01:00:00,4860.042,0.0,36.32 -2015-01-13 02:00:00,4726.058,0.0,35.98 -2015-01-13 03:00:00,4662.817,0.0,35.51 -2015-01-13 04:00:00,4680.675,0.0,35.0 -2015-01-13 05:00:00,4920.617,0.0,34.12 -2015-01-13 06:00:00,5489.98,0.0,32.35 -2015-01-13 07:00:00,6085.125,0.0,29.88 -2015-01-13 08:00:00,6444.733,0.0,28.01 -2015-01-13 09:00:00,6694.358,0.0,26.34 -2015-01-13 10:00:00,6814.125,0.0,24.53 -2015-01-13 11:00:00,6868.833,0.0,23.83 -2015-01-13 12:00:00,6907.533,0.0,23.73 -2015-01-13 13:00:00,6911.775,0.0,23.83 -2015-01-13 14:00:00,6905.125,0.0,23.72 -2015-01-13 15:00:00,6972.75,0.0,23.76 -2015-01-13 16:00:00,7092.533,0.0,22.65 -2015-01-13 17:00:00,7324.033,0.0,20.95 -2015-01-13 18:00:00,7272.514,0.0,19.95 -2015-01-13 19:00:00,7125.133,0.0,19.15 -2015-01-13 20:00:00,6932.767,0.0,18.83 -2015-01-13 21:00:00,6682.717,0.0,17.83 -2015-01-13 22:00:00,6338.683,0.0,17.17 -2015-01-13 23:00:00,5891.242,0.0,17.18 -2015-01-14 00:00:00,5489.883,0.0,17.18 -2015-01-14 01:00:00,5253.225,0.0,16.98 -2015-01-14 02:00:00,5092.642,0.0,17.36 -2015-01-14 03:00:00,5020.2,0.0,17.79 -2015-01-14 04:00:00,5034.917,0.0,17.32 -2015-01-14 05:00:00,5249.525,0.0,17.68 -2015-01-14 06:00:00,5763.483,0.0,18.17 -2015-01-14 07:00:00,6361.243,0.0,18.74 -2015-01-14 08:00:00,6739.342,0.0,18.9 -2015-01-14 09:00:00,6964.9,0.0,20.22 -2015-01-14 10:00:00,7059.068,0.0,22.94 -2015-01-14 11:00:00,7052.208,0.0,24.61 -2015-01-14 12:00:00,7027.908,0.0,27.22 -2015-01-14 13:00:00,6987.05,0.0,29.9 -2015-01-14 14:00:00,6975.3,0.0,29.73 -2015-01-14 15:00:00,7020.542,0.0,30.2 -2015-01-14 16:00:00,7132.128,0.0,30.2 -2015-01-14 17:00:00,7297.357,0.0,30.67 -2015-01-14 18:00:00,7184.1,0.0,30.2 -2015-01-14 19:00:00,6991.542,0.0,30.01 -2015-01-14 20:00:00,6778.108,0.0,30.13 -2015-01-14 21:00:00,6502.064,0.0,30.01 -2015-01-14 22:00:00,6134.933,0.0,29.69 -2015-01-14 23:00:00,5671.567,0.0,29.49 -2015-01-15 00:00:00,5264.883,0.0,28.81 -2015-01-15 01:00:00,5006.392,0.0,28.69 -2015-01-15 02:00:00,4855.192,0.0,28.01 -2015-01-15 03:00:00,4806.725,0.0,26.95 -2015-01-15 04:00:00,4815.375,0.0,26.83 -2015-01-15 05:00:00,5052.35,0.0,26.63 -2015-01-15 06:00:00,5582.917,0.0,26.1 -2015-01-15 07:00:00,6177.486,0.0,25.63 -2015-01-15 08:00:00,6566.9,0.0,25.49 -2015-01-15 09:00:00,6803.225,0.0,25.95 -2015-01-15 10:00:00,6893.583,0.0,26.68 -2015-01-15 11:00:00,6901.25,0.0,27.87 -2015-01-15 12:00:00,6864.825,0.0,29.61 -2015-01-15 13:00:00,6837.408,0.0,31.4 -2015-01-15 14:00:00,6802.429,0.0,32.73 -2015-01-15 15:00:00,6811.042,0.0,33.42 -2015-01-15 16:00:00,6925.831,0.0,33.54 -2015-01-15 17:00:00,7126.608,0.0,33.0 -2015-01-15 18:00:00,7060.042,0.0,32.81 -2015-01-15 19:00:00,6869.725,0.0,32.44 -2015-01-15 20:00:00,6669.858,0.0,32.14 -2015-01-15 21:00:00,6423.35,0.0,31.26 -2015-01-15 22:00:00,6053.608,0.0,31.8 -2015-01-15 23:00:00,5637.475,0.0,30.56 -2015-01-16 00:00:00,5264.267,0.0,30.54 -2015-01-16 01:00:00,4987.892,0.0,30.88 -2015-01-16 02:00:00,4830.942,0.0,30.55 -2015-01-16 03:00:00,4757.667,0.0,30.01 -2015-01-16 04:00:00,4772.375,0.0,30.21 -2015-01-16 05:00:00,4994.483,0.0,30.57 -2015-01-16 06:00:00,5517.142,0.0,30.76 -2015-01-16 07:00:00,6088.742,0.0,30.88 -2015-01-16 08:00:00,6432.817,0.0,31.03 -2015-01-16 09:00:00,6668.4,0.0,32.43 -2015-01-16 10:00:00,6716.122,0.0,34.69 -2015-01-16 11:00:00,6728.783,0.0,36.14 -2015-01-16 12:00:00,6707.833,0.0,38.71 -2015-01-16 13:00:00,6673.083,0.0,41.08 -2015-01-16 14:00:00,6656.008,0.0,40.74 -2015-01-16 15:00:00,6689.843,0.0,37.87 -2015-01-16 16:00:00,6785.917,0.0,35.64 -2015-01-16 17:00:00,6978.25,0.0,32.81 -2015-01-16 18:00:00,6940.575,0.0,29.2 -2015-01-16 19:00:00,6785.908,0.0,27.81 -2015-01-16 20:00:00,6619.125,0.0,25.81 -2015-01-16 21:00:00,6420.117,0.0,23.81 -2015-01-16 22:00:00,6155.175,0.0,21.95 -2015-01-16 23:00:00,5807.325,0.0,20.95 -2015-01-17 00:00:00,5471.367,0.0,19.69 -2015-01-17 01:00:00,5226.65,0.0,19.3 -2015-01-17 02:00:00,5066.908,0.0,18.61 -2015-01-17 03:00:00,4964.492,0.0,18.42 -2015-01-17 04:00:00,4951.067,0.0,18.17 -2015-01-17 05:00:00,4998.225,0.0,18.01 -2015-01-17 06:00:00,5167.2,0.0,17.3 -2015-01-17 07:00:00,5363.917,0.0,16.81 -2015-01-17 08:00:00,5658.833,0.0,17.17 -2015-01-17 09:00:00,5907.883,0.0,18.02 -2015-01-17 10:00:00,6106.683,0.0,19.89 -2015-01-17 11:00:00,6197.442,0.0,21.36 -2015-01-17 12:00:00,6185.758,0.0,22.89 -2015-01-17 13:00:00,6146.908,0.0,24.7 -2015-01-17 14:00:00,6080.983,0.0,26.93 -2015-01-17 15:00:00,6060.275,0.0,27.49 -2015-01-17 16:00:00,6140.533,0.0,27.56 -2015-01-17 17:00:00,6372.325,0.0,26.9 -2015-01-17 18:00:00,6420.15,0.0,27.83 -2015-01-17 19:00:00,6338.708,0.0,28.54 -2015-01-17 20:00:00,6187.258,0.0,28.86 -2015-01-17 21:00:00,6034.583,0.0,28.78 -2015-01-17 22:00:00,5830.117,0.0,28.29 -2015-01-17 23:00:00,5566.558,0.0,29.32 -2015-01-18 00:00:00,5264.4,0.0,29.46 -2015-01-18 01:00:00,5016.958,0.0,29.31 -2015-01-18 02:00:00,4814.975,0.0,29.38 -2015-01-18 03:00:00,4683.042,0.0,29.4 -2015-01-18 04:00:00,4626.558,0.0,29.78 -2015-01-18 05:00:00,4625.983,0.0,31.38 -2015-01-18 06:00:00,4718.775,0.0,31.01 -2015-01-18 07:00:00,4829.357,0.0035,31.57 -2015-01-18 08:00:00,5118.4,0.0235,32.14 -2015-01-18 09:00:00,5419.025,0.0373,33.18 -2015-01-18 10:00:00,5709.8,0.1112,33.79 -2015-01-18 11:00:00,5907.6,0.1804,33.91 -2015-01-18 12:00:00,6002.017,0.15,35.2 -2015-01-18 13:00:00,6033.742,0.09,36.24 -2015-01-18 14:00:00,6049.525,0.0996,37.24 -2015-01-18 15:00:00,6070.333,0.2072,38.4 -2015-01-18 16:00:00,6111.475,0.0773,39.25 -2015-01-18 17:00:00,6230.558,0.1704,40.1 -2015-01-18 18:00:00,6176.133,0.0461,39.93 -2015-01-18 19:00:00,6075.017,0.0,38.63 -2015-01-18 20:00:00,5917.933,0.0,39.32 -2015-01-18 21:00:00,5782.375,0.0065,39.47 -2015-01-18 22:00:00,5555.283,0.0065,40.2 -2015-01-18 23:00:00,5254.0,0.0,39.08 -2015-01-19 00:00:00,4965.692,0.0,38.9 -2015-01-19 01:00:00,4770.258,0.0,38.03 -2015-01-19 02:00:00,4614.067,0.0,36.91 -2015-01-19 03:00:00,4543.733,0.0,37.29 -2015-01-19 04:00:00,4541.917,0.0,37.29 -2015-01-19 05:00:00,4684.15,0.0,37.29 -2015-01-19 06:00:00,5000.767,0.0,37.29 -2015-01-19 07:00:00,5347.392,0.0,36.43 -2015-01-19 08:00:00,5706.708,0.0,36.8 -2015-01-19 09:00:00,5975.8,0.0,37.8 -2015-01-19 10:00:00,6150.008,0.0,38.66 -2015-01-19 11:00:00,6250.775,0.0,39.54 -2015-01-19 12:00:00,6278.767,0.0,40.54 -2015-01-19 13:00:00,6316.442,0.0,40.34 -2015-01-19 14:00:00,6320.633,0.0,39.67 -2015-01-19 15:00:00,6353.192,0.0,40.06 -2015-01-19 16:00:00,6449.4,0.0,39.86 -2015-01-19 17:00:00,6635.308,0.0,39.47 -2015-01-19 18:00:00,6604.917,0.0,39.12 -2015-01-19 19:00:00,6469.3,0.0,38.47 -2015-01-19 20:00:00,6290.758,0.0,38.61 -2015-01-19 21:00:00,6078.108,0.0,38.61 -2015-01-19 22:00:00,5744.792,0.0,38.47 -2015-01-19 23:00:00,5339.492,0.0,37.93 -2015-01-20 00:00:00,4978.517,0.0,37.81 -2015-01-20 01:00:00,4741.417,0.0,37.81 -2015-01-20 02:00:00,4604.867,0.0,37.12 -2015-01-20 03:00:00,4545.967,0.0,36.93 -2015-01-20 04:00:00,4576.992,0.0,36.32 -2015-01-20 05:00:00,4824.383,0.0,35.12 -2015-01-20 06:00:00,5381.6,0.0,34.63 -2015-01-20 07:00:00,5971.208,0.0,33.63 -2015-01-20 08:00:00,6324.508,0.0,34.12 -2015-01-20 09:00:00,6546.967,0.0,34.32 -2015-01-20 10:00:00,6616.833,0.0,34.51 -2015-01-20 11:00:00,6628.442,0.0,36.05 -2015-01-20 12:00:00,6622.758,0.0,37.35 -2015-01-20 13:00:00,6633.058,0.0,38.25 -2015-01-20 14:00:00,6626.975,0.0,38.72 -2015-01-20 15:00:00,6667.667,0.0,38.86 -2015-01-20 16:00:00,6805.675,0.0,38.79 -2015-01-20 17:00:00,6983.117,0.0,38.72 -2015-01-20 18:00:00,6871.017,0.0,38.05 -2015-01-20 19:00:00,6690.95,0.0,37.32 -2015-01-20 20:00:00,6484.375,0.0,36.32 -2015-01-20 21:00:00,6232.908,0.0,35.47 -2015-01-20 22:00:00,5921.317,0.0,34.3 -2015-01-20 23:00:00,5467.85,0.0,32.81 -2015-01-21 00:00:00,5079.767,0.0,31.81 -2015-01-21 01:00:00,4840.075,0.0,30.81 -2015-01-21 02:00:00,4709.317,0.0,29.95 -2015-01-21 03:00:00,4650.808,0.0,28.81 -2015-01-21 04:00:00,4687.158,0.0,27.83 -2015-01-21 05:00:00,4925.117,0.0,26.13 -2015-01-21 06:00:00,5472.917,0.0,25.63 -2015-01-21 07:00:00,6093.758,0.0,24.95 -2015-01-21 08:00:00,6425.333,0.0,25.15 -2015-01-21 09:00:00,6662.1,0.0,25.71 -2015-01-21 10:00:00,6785.842,0.0,26.71 -2015-01-21 11:00:00,6817.067,0.0,28.25 -2015-01-21 12:00:00,6803.492,0.0,29.61 -2015-01-21 13:00:00,6767.783,0.0,31.4 -2015-01-21 14:00:00,6745.833,0.0,32.71 -2015-01-21 15:00:00,6803.3,0.0,32.85 -2015-01-21 16:00:00,6911.408,0.0,33.06 -2015-01-21 17:00:00,7072.058,0.0,32.51 -2015-01-21 18:00:00,6975.033,0.0,32.71 -2015-01-21 19:00:00,6799.242,0.0,33.42 -2015-01-21 20:00:00,6607.308,0.0,33.21 -2015-01-21 21:00:00,6321.125,0.0,33.93 -2015-01-21 22:00:00,5986.608,0.0,32.51 -2015-01-21 23:00:00,5534.925,0.0,32.62 -2015-01-22 00:00:00,5131.333,0.0,32.42 -2015-01-22 01:00:00,4862.65,0.0,32.35 -2015-01-22 02:00:00,4708.1,0.0,32.56 -2015-01-22 03:00:00,4648.383,0.0,32.56 -2015-01-22 04:00:00,4674.05,0.0,31.81 -2015-01-22 05:00:00,4900.767,0.0,31.49 -2015-01-22 06:00:00,5407.236,0.0,31.17 -2015-01-22 07:00:00,6027.033,0.0,30.46 -2015-01-22 08:00:00,6380.2,0.0,30.67 -2015-01-22 09:00:00,6632.65,0.0,30.46 -2015-01-22 10:00:00,6730.608,0.0,31.91 -2015-01-22 11:00:00,6740.446,0.0,32.35 -2015-01-22 12:00:00,6736.992,0.0,33.39 -2015-01-22 13:00:00,6690.758,0.0,35.21 -2015-01-22 14:00:00,6644.925,0.0,37.22 -2015-01-22 15:00:00,6636.067,0.0,38.41 -2015-01-22 16:00:00,6723.625,0.0,38.54 -2015-01-22 17:00:00,6911.05,0.0,38.0 -2015-01-22 18:00:00,6861.158,0.0,36.99 -2015-01-22 19:00:00,6707.65,0.0,36.13 -2015-01-22 20:00:00,6521.867,0.0,34.32 -2015-01-22 21:00:00,6290.308,0.0,33.07 -2015-01-22 22:00:00,5967.792,0.0,32.07 -2015-01-22 23:00:00,5539.5,0.0,31.42 -2015-01-23 00:00:00,5155.658,0.0,30.81 -2015-01-23 01:00:00,4914.917,0.0,30.42 -2015-01-23 02:00:00,4760.358,0.0,29.81 -2015-01-23 03:00:00,4700.292,0.0,29.81 -2015-01-23 04:00:00,4723.625,0.0,28.81 -2015-01-23 05:00:00,4947.492,0.0,28.3 -2015-01-23 06:00:00,5470.383,0.0,27.76 -2015-01-23 07:00:00,6050.867,0.0,27.63 -2015-01-23 08:00:00,6395.467,0.0,27.63 -2015-01-23 09:00:00,6630.631,0.0,28.88 -2015-01-23 10:00:00,6693.817,0.0,30.07 -2015-01-23 11:00:00,6704.217,0.0,31.22 -2015-01-23 12:00:00,6672.567,0.0,33.62 -2015-01-23 13:00:00,6636.792,0.0,35.06 -2015-01-23 14:00:00,6598.288,0.0,36.59 -2015-01-23 15:00:00,6589.075,0.0,37.85 -2015-01-23 16:00:00,6688.992,0.0,37.85 -2015-01-23 17:00:00,6867.383,0.0,36.86 -2015-01-23 18:00:00,6786.658,0.0,37.0 -2015-01-23 19:00:00,6574.608,0.0,36.81 -2015-01-23 20:00:00,6384.008,0.0,36.49 -2015-01-23 21:00:00,6137.383,0.0,36.49 -2015-01-23 22:00:00,5841.275,0.0,36.49 -2015-01-23 23:00:00,5491.35,0.0,36.49 -2015-01-24 00:00:00,5145.008,0.0,34.99 -2015-01-24 01:00:00,4901.675,0.0065,33.68 -2015-01-24 02:00:00,4765.625,0.0727,32.14 -2015-01-24 03:00:00,4683.217,0.1315,32.72 -2015-01-24 04:00:00,4653.467,0.0696,32.58 -2015-01-24 05:00:00,4710.708,0.0469,32.58 -2015-01-24 06:00:00,4879.858,0.0265,33.04 -2015-01-24 07:00:00,5099.333,0.0065,34.06 -2015-01-24 08:00:00,5388.583,0.0165,33.71 -2015-01-24 09:00:00,5693.883,0.0131,33.71 -2015-01-24 10:00:00,5934.092,0.01,33.76 -2015-01-24 11:00:00,6075.092,0.0035,34.91 -2015-01-24 12:00:00,6117.943,0.0,35.07 -2015-01-24 13:00:00,6090.642,0.0,35.73 -2015-01-24 14:00:00,6058.886,0.0,36.6 -2015-01-24 15:00:00,6066.225,0.0,36.72 -2015-01-24 16:00:00,6123.317,0.0,36.86 -2015-01-24 17:00:00,6251.808,0.0,36.98 -2015-01-24 18:00:00,6293.55,0.0065,37.98 -2015-01-24 19:00:00,6206.2,0.0,38.61 -2015-01-24 20:00:00,6043.783,0.0,37.81 -2015-01-24 21:00:00,5880.642,0.0,37.35 -2015-01-24 22:00:00,5675.092,0.0,35.93 -2015-01-24 23:00:00,5404.35,0.0,35.77 -2015-01-25 00:00:00,5117.05,0.0,36.0 -2015-01-25 01:00:00,4882.233,0.0,35.81 -2015-01-25 02:00:00,4711.992,0.0,35.76 -2015-01-25 03:00:00,4618.992,0.0,35.75 -2015-01-25 04:00:00,4587.042,0.0,35.49 -2015-01-25 05:00:00,4616.033,0.0,34.75 -2015-01-25 06:00:00,4727.975,0.0,34.65 -2015-01-25 07:00:00,4857.125,0.0,35.44 -2015-01-25 08:00:00,5104.717,0.0,35.3 -2015-01-25 09:00:00,5328.3,0.0,36.8 -2015-01-25 10:00:00,5514.4,0.0,38.66 -2015-01-25 11:00:00,5622.025,0.0,40.21 -2015-01-25 12:00:00,5674.758,0.0,40.54 -2015-01-25 13:00:00,5695.683,0.0,40.86 -2015-01-25 14:00:00,5680.708,0.0,41.18 -2015-01-25 15:00:00,5682.542,0.0,40.86 -2015-01-25 16:00:00,5765.883,0.0,39.75 -2015-01-25 17:00:00,6059.142,0.0,37.67 -2015-01-25 18:00:00,6210.167,0.0,36.13 -2015-01-25 19:00:00,6190.617,0.0,35.13 -2015-01-25 20:00:00,6099.517,0.0,34.13 -2015-01-25 21:00:00,5955.133,0.0,33.01 -2015-01-25 22:00:00,5718.2,0.0,32.01 -2015-01-25 23:00:00,5404.583,0.0,31.06 -2015-01-26 00:00:00,5092.875,0.0,29.99 -2015-01-26 01:00:00,4886.225,0.0,28.32 -2015-01-26 02:00:00,4765.517,0.0,26.81 -2015-01-26 03:00:00,4732.525,0.0,25.66 -2015-01-26 04:00:00,4766.592,0.0,24.76 -2015-01-26 05:00:00,5018.642,0.0,23.96 -2015-01-26 06:00:00,5539.583,0.0,23.83 -2015-01-26 07:00:00,6163.8,0.0,24.13 -2015-01-26 08:00:00,6567.16,0.0035,23.96 -2015-01-26 09:00:00,6824.05,0.0,23.85 -2015-01-26 10:00:00,6950.575,0.0,23.24 -2015-01-26 11:00:00,7044.275,0.0,22.17 -2015-01-26 12:00:00,7081.95,0.0,22.34 -2015-01-26 13:00:00,7102.325,0.0,23.06 -2015-01-26 14:00:00,7033.858,0.02,23.3 -2015-01-26 15:00:00,6953.65,0.0565,23.47 -2015-01-26 16:00:00,6974.392,0.0492,24.77 -2015-01-26 17:00:00,7142.958,0.0392,25.67 -2015-01-26 18:00:00,7063.733,0.0131,26.28 -2015-01-26 19:00:00,6892.7,0.0065,26.98 -2015-01-26 20:00:00,6655.075,0.0,26.63 -2015-01-26 21:00:00,6394.067,0.0,26.63 -2015-01-26 22:00:00,6076.283,0.0065,26.13 -2015-01-26 23:00:00,5735.467,0.01,24.51 -2015-01-27 00:00:00,5352.975,0.0427,24.39 -2015-01-27 01:00:00,5121.975,0.0623,23.47 -2015-01-27 02:00:00,4982.6,0.0104,23.15 -2015-01-27 03:00:00,4914.875,0.0065,21.53 -2015-01-27 04:00:00,4922.35,0.0135,21.14 -2015-01-27 05:00:00,5011.233,0.0,20.8 -2015-01-27 06:00:00,5185.742,0.0,20.92 -2015-01-27 07:00:00,5372.025,0.0035,21.66 -2015-01-27 08:00:00,5613.35,0.0,21.99 -2015-01-27 09:00:00,5899.633,0.0065,21.98 -2015-01-27 10:00:00,6108.517,0.0,22.92 -2015-01-27 11:00:00,6249.958,0.0,24.22 -2015-01-27 12:00:00,6358.05,0.0,24.38 -2015-01-27 13:00:00,6348.325,0.0,25.22 -2015-01-27 14:00:00,6323.075,0.0,26.17 -2015-01-27 15:00:00,6360.417,0.0,27.56 -2015-01-27 16:00:00,6448.569,0.0,27.32 -2015-01-27 17:00:00,6711.05,0.0,26.29 -2015-01-27 18:00:00,6791.175,0.0,26.12 -2015-01-27 19:00:00,6677.158,0.0,26.12 -2015-01-27 20:00:00,6531.367,0.0,24.51 -2015-01-27 21:00:00,6318.217,0.0,22.81 -2015-01-27 22:00:00,6014.775,0.0,21.67 -2015-01-27 23:00:00,5655.183,0.0,20.67 -2015-01-28 00:00:00,5316.308,0.0,19.2 -2015-01-28 01:00:00,5123.475,0.0,18.32 -2015-01-28 02:00:00,5005.275,0.0,17.95 -2015-01-28 03:00:00,4964.217,0.0,17.44 -2015-01-28 04:00:00,5006.383,0.0,17.26 -2015-01-28 05:00:00,5231.742,0.0,17.3 -2015-01-28 06:00:00,5750.217,0.0,17.33 -2015-01-28 07:00:00,6317.083,0.0,17.56 -2015-01-28 08:00:00,6723.275,0.0,18.42 -2015-01-28 09:00:00,6973.625,0.0,19.86 -2015-01-28 10:00:00,7105.692,0.0,21.86 -2015-01-28 11:00:00,7122.15,0.0,23.85 -2015-01-28 12:00:00,7084.275,0.0,26.54 -2015-01-28 13:00:00,7060.233,0.0,28.89 -2015-01-28 14:00:00,6990.692,0.0,30.62 -2015-01-28 15:00:00,6968.45,0.0,32.35 -2015-01-28 16:00:00,7008.692,0.0,33.0 -2015-01-28 17:00:00,7187.029,0.0,32.46 -2015-01-28 18:00:00,7183.075,0.0,31.67 -2015-01-28 19:00:00,7020.183,0.0,30.49 -2015-01-28 20:00:00,6848.05,0.0,29.49 -2015-01-28 21:00:00,6581.708,0.0,28.5 -2015-01-28 22:00:00,6254.225,0.0,26.95 -2015-01-28 23:00:00,5798.667,0.0,25.69 -2015-01-29 00:00:00,5409.433,0.0,24.5 -2015-01-29 01:00:00,5149.683,0.0,23.49 -2015-01-29 02:00:00,5020.317,0.0,22.61 -2015-01-29 03:00:00,4954.733,0.0,21.63 -2015-01-29 04:00:00,4983.517,0.0,20.03 -2015-01-29 05:00:00,5203.233,0.0,20.08 -2015-01-29 06:00:00,5714.575,0.0,20.08 -2015-01-29 07:00:00,6284.925,0.0,19.44 -2015-01-29 08:00:00,6640.633,0.0,20.72 -2015-01-29 09:00:00,6866.075,0.0,22.49 -2015-01-29 10:00:00,6942.342,0.0,24.9 -2015-01-29 11:00:00,6941.308,0.0,26.27 -2015-01-29 12:00:00,6920.217,0.0,27.74 -2015-01-29 13:00:00,6924.175,0.0,28.96 -2015-01-29 14:00:00,6914.207,0.0,29.71 -2015-01-29 15:00:00,6972.543,0.0,29.95 -2015-01-29 16:00:00,7057.742,0.0,29.86 -2015-01-29 17:00:00,7200.375,0.0,30.83 -2015-01-29 18:00:00,7124.708,0.0,31.74 -2015-01-29 19:00:00,6939.867,0.0,32.6 -2015-01-29 20:00:00,6703.292,0.0,33.38 -2015-01-29 21:00:00,6431.475,0.0,33.57 -2015-01-29 22:00:00,6077.383,0.0,33.44 -2015-01-29 23:00:00,5655.242,0.0,33.07 -2015-01-30 00:00:00,5265.95,0.0265,31.24 -2015-01-30 01:00:00,5008.867,0.0065,31.17 -2015-01-30 02:00:00,4840.717,0.0265,31.81 -2015-01-30 03:00:00,4761.225,0.0231,33.01 -2015-01-30 04:00:00,4748.5,0.0,33.82 -2015-01-30 05:00:00,4960.483,0.0,34.16 -2015-01-30 06:00:00,5468.333,0.0035,33.26 -2015-01-30 07:00:00,6025.933,0.0065,32.76 -2015-01-30 08:00:00,6419.883,0.0065,31.69 -2015-01-30 09:00:00,6719.292,0.0231,31.66 -2015-01-30 10:00:00,6858.892,0.0035,32.0 -2015-01-30 11:00:00,6836.283,0.0,33.51 -2015-01-30 12:00:00,6833.358,0.0,35.6 -2015-01-30 13:00:00,6808.042,0.0,36.25 -2015-01-30 14:00:00,6769.058,0.0,36.05 -2015-01-30 15:00:00,6758.1,0.0,36.6 -2015-01-30 16:00:00,6826.117,0.0,35.86 -2015-01-30 17:00:00,6989.8,0.0,34.0 -2015-01-30 18:00:00,7015.808,0.0,31.3 -2015-01-30 19:00:00,6889.45,0.0,27.3 -2015-01-30 20:00:00,6735.067,0.0,24.65 -2015-01-30 21:00:00,6534.258,0.0,22.3 -2015-01-30 22:00:00,6263.342,0.0,21.12 -2015-01-30 23:00:00,5960.575,0.0,20.44 -2015-01-31 00:00:00,5602.008,0.0,19.44 -2015-01-31 01:00:00,5359.35,0.0,18.3 -2015-01-31 02:00:00,5199.367,0.0,17.63 -2015-01-31 03:00:00,5104.617,0.0,17.44 -2015-01-31 04:00:00,5082.15,0.0,16.3 -2015-01-31 05:00:00,5149.267,0.0,15.42 -2015-01-31 06:00:00,5321.192,0.0,14.42 -2015-01-31 07:00:00,5551.117,0.0,13.56 -2015-01-31 08:00:00,5860.367,0.0,13.3 -2015-01-31 09:00:00,6152.042,0.0,14.3 -2015-01-31 10:00:00,6371.142,0.0,15.81 -2015-01-31 11:00:00,6456.425,0.0,18.35 -2015-01-31 12:00:00,6448.842,0.0,20.54 -2015-01-31 13:00:00,6406.183,0.0,22.54 -2015-01-31 14:00:00,6367.6,0.0,24.6 -2015-01-31 15:00:00,6326.817,0.0,25.62 -2015-01-31 16:00:00,6349.108,0.0,25.86 -2015-01-31 17:00:00,6551.8,0.0,25.01 -2015-01-31 18:00:00,6703.842,0.0,24.01 -2015-01-31 19:00:00,6651.814,0.0,23.63 -2015-01-31 20:00:00,6521.775,0.0,22.07 -2015-01-31 21:00:00,6348.4,0.0,21.63 -2015-01-31 22:00:00,6117.008,0.0,20.76 -2015-01-31 23:00:00,5843.058,0.0,20.76 -2015-02-01 00:00:00,5542.142,0.0,20.76 -2015-02-01 01:00:00,5296.142,0.0,20.58 -2015-02-01 02:00:00,5115.433,0.0,21.24 -2015-02-01 03:00:00,4997.342,0.0,21.67 -2015-02-01 04:00:00,4940.533,0.0,22.3 -2015-02-01 05:00:00,4964.058,0.0,23.1 -2015-02-01 06:00:00,5061.192,0.0,22.93 -2015-02-01 07:00:00,5195.9,0.0,23.32 -2015-02-01 08:00:00,5429.933,0.0,25.59 -2015-02-01 09:00:00,5653.033,0.0,27.84 -2015-02-01 10:00:00,5847.642,0.0,30.16 -2015-02-01 11:00:00,5957.35,0.0,32.41 -2015-02-01 12:00:00,5999.783,0.0,33.52 -2015-02-01 13:00:00,6009.933,0.0,34.08 -2015-02-01 14:00:00,6020.292,0.0,34.54 -2015-02-01 15:00:00,6053.783,0.0,35.05 -2015-02-01 16:00:00,6150.517,0.0,35.19 -2015-02-01 17:00:00,6341.792,0.0,35.0 -2015-02-01 18:00:00,6406.583,0.0,35.0 -2015-02-01 19:00:00,6287.733,0.0,34.86 -2015-02-01 20:00:00,6144.458,0.0,35.13 -2015-02-01 21:00:00,6008.383,0.0,34.0 -2015-02-01 22:00:00,5794.493,0.0035,31.83 -2015-02-01 23:00:00,5469.293,0.01,30.78 -2015-02-02 00:00:00,5171.942,0.0135,32.38 -2015-02-02 01:00:00,4964.1,0.0231,32.32 -2015-02-02 02:00:00,4836.867,0.0769,31.86 -2015-02-02 03:00:00,4783.158,0.0792,31.86 -2015-02-02 04:00:00,4811.658,0.1635,32.12 -2015-02-02 05:00:00,5033.367,0.0665,32.41 -2015-02-02 06:00:00,5488.872,0.1123,31.91 -2015-02-02 07:00:00,6078.742,0.1261,31.09 -2015-02-02 08:00:00,6500.308,0.0531,29.97 -2015-02-02 09:00:00,6800.217,0.0035,28.64 -2015-02-02 10:00:00,7003.725,0.0235,27.99 -2015-02-02 11:00:00,7092.742,0.0331,27.47 -2015-02-02 12:00:00,7115.142,0.0135,27.25 -2015-02-02 13:00:00,7165.717,0.0,26.05 -2015-02-02 14:00:00,7158.1,0.01,25.14 -2015-02-02 15:00:00,7155.467,0.0131,24.54 -2015-02-02 16:00:00,7170.175,0.0261,23.47 -2015-02-02 17:00:00,7314.967,0.0,23.89 -2015-02-02 18:00:00,7290.75,0.0,23.04 -2015-02-02 19:00:00,7175.483,0.0,22.72 -2015-02-02 20:00:00,6992.75,0.0,21.5 -2015-02-02 21:00:00,6752.583,0.0,18.66 -2015-02-02 22:00:00,6428.867,0.0,16.44 -2015-02-02 23:00:00,5982.6,0.0,15.42 -2015-02-03 00:00:00,5584.492,0.0,15.3 -2015-02-03 01:00:00,5345.367,0.0,14.63 -2015-02-03 02:00:00,5201.108,0.0,14.42 -2015-02-03 03:00:00,5154.075,0.0,14.54 -2015-02-03 04:00:00,5175.842,0.0,14.74 -2015-02-03 05:00:00,5388.1,0.0,15.13 -2015-02-03 06:00:00,5865.708,0.0,15.44 -2015-02-03 07:00:00,6404.783,0.0,15.83 -2015-02-03 08:00:00,6734.158,0.0,16.27 -2015-02-03 09:00:00,6969.425,0.0,17.0 -2015-02-03 10:00:00,7111.65,0.0,18.56 -2015-02-03 11:00:00,7164.0,0.0,19.14 -2015-02-03 12:00:00,7155.983,0.0,20.42 -2015-02-03 13:00:00,7124.033,0.0,21.96 -2015-02-03 14:00:00,7082.933,0.0,23.07 -2015-02-03 15:00:00,7091.783,0.0,24.26 -2015-02-03 16:00:00,7117.575,0.0,24.74 -2015-02-03 17:00:00,7278.6,0.0,26.06 -2015-02-03 18:00:00,7315.342,0.0,25.3 -2015-02-03 19:00:00,7165.05,0.0,25.15 -2015-02-03 20:00:00,6968.492,0.0,25.46 -2015-02-03 21:00:00,6710.442,0.0,24.05 -2015-02-03 22:00:00,6353.608,0.0,23.59 -2015-02-03 23:00:00,5900.658,0.0,23.49 -2015-02-04 00:00:00,5453.892,0.0,23.09 -2015-02-04 01:00:00,5179.467,0.0,22.7 -2015-02-04 02:00:00,5023.325,0.0,22.89 -2015-02-04 03:00:00,4946.108,0.0,22.8 -2015-02-04 04:00:00,4976.167,0.0,23.19 -2015-02-04 05:00:00,5197.05,0.0,24.6 -2015-02-04 06:00:00,5699.6,0.0,24.67 -2015-02-04 07:00:00,6210.6,0.0,25.92 -2015-02-04 08:00:00,6589.783,0.0,27.43 -2015-02-04 09:00:00,6824.793,0.0,29.94 -2015-02-04 10:00:00,6920.733,0.0,32.37 -2015-02-04 11:00:00,6939.333,0.0035,34.1 -2015-02-04 12:00:00,6910.483,0.0,34.93 -2015-02-04 13:00:00,6885.375,0.0,35.93 -2015-02-04 14:00:00,6837.117,0.0,36.65 -2015-02-04 15:00:00,6804.242,0.0,37.04 -2015-02-04 16:00:00,6839.325,0.0,37.87 -2015-02-04 17:00:00,6983.808,0.0,37.86 -2015-02-04 18:00:00,6985.683,0.0,38.53 -2015-02-04 19:00:00,6839.892,0.0,38.67 -2015-02-04 20:00:00,6630.742,0.0,38.83 -2015-02-04 21:00:00,6371.625,0.0,37.83 -2015-02-04 22:00:00,6022.725,0.0,37.58 -2015-02-04 23:00:00,5572.017,0.0,37.87 -2015-02-05 00:00:00,5151.417,0.0,37.28 -2015-02-05 01:00:00,4887.475,0.0,36.76 -2015-02-05 02:00:00,4734.608,0.0,37.6 -2015-02-05 03:00:00,4667.083,0.0,37.3 -2015-02-05 04:00:00,4676.592,0.0,37.6 -2015-02-05 05:00:00,4911.658,0.0,36.02 -2015-02-05 06:00:00,5475.767,0.0,36.23 -2015-02-05 07:00:00,6104.875,0.0,33.49 -2015-02-05 08:00:00,6500.992,0.0,30.6 -2015-02-05 09:00:00,6834.433,0.0,29.35 -2015-02-05 10:00:00,6972.108,0.0,28.6 -2015-02-05 11:00:00,7023.792,0.0,28.35 -2015-02-05 12:00:00,7016.417,0.0,28.02 -2015-02-05 13:00:00,6995.9,0.0,28.12 -2015-02-05 14:00:00,6993.042,0.0,26.74 -2015-02-05 15:00:00,6970.8,0.0,26.44 -2015-02-05 16:00:00,7051.633,0.0,25.08 -2015-02-05 17:00:00,7235.825,0.0,23.81 -2015-02-05 18:00:00,7301.817,0.0,21.81 -2015-02-05 19:00:00,7206.375,0.0,20.3 -2015-02-05 20:00:00,7044.842,0.0,18.3 -2015-02-05 21:00:00,6824.842,0.0,16.51 -2015-02-05 22:00:00,6491.425,0.0,15.3 -2015-02-05 23:00:00,6065.25,0.0,14.76 -2015-02-06 00:00:00,5658.825,0.0,13.95 -2015-02-06 01:00:00,5410.333,0.0,13.76 -2015-02-06 02:00:00,5256.133,0.0,13.3 -2015-02-06 03:00:00,5191.167,0.0,12.76 -2015-02-06 04:00:00,5202.15,0.0,12.63 -2015-02-06 05:00:00,5412.542,0.0,12.46 -2015-02-06 06:00:00,5899.267,0.0,12.44 -2015-02-06 07:00:00,6476.425,0.0,12.24 -2015-02-06 08:00:00,6814.333,0.0,13.46 -2015-02-06 09:00:00,7024.342,0.0,15.3 -2015-02-06 10:00:00,7161.95,0.0,17.05 -2015-02-06 11:00:00,7249.908,0.0,18.37 -2015-02-06 12:00:00,7264.117,0.0,19.49 -2015-02-06 13:00:00,7206.675,0.0,21.86 -2015-02-06 14:00:00,7126.1,0.0,23.93 -2015-02-06 15:00:00,7060.092,0.0,25.56 -2015-02-06 16:00:00,7081.375,0.0,26.74 -2015-02-06 17:00:00,7189.883,0.0,26.67 -2015-02-06 18:00:00,7179.217,0.0,26.13 -2015-02-06 19:00:00,7020.367,0.0,25.95 -2015-02-06 20:00:00,6802.142,0.0,25.62 -2015-02-06 21:00:00,6571.567,0.0,25.01 -2015-02-06 22:00:00,6261.857,0.0,24.64 -2015-02-06 23:00:00,5892.708,0.0,24.13 -2015-02-07 00:00:00,5537.342,0.0,23.92 -2015-02-07 01:00:00,5269.517,0.0,23.62 -2015-02-07 02:00:00,5080.625,0.0,25.18 -2015-02-07 03:00:00,4979.325,0.0,25.91 -2015-02-07 04:00:00,4946.225,0.0,25.3 -2015-02-07 05:00:00,4996.442,0.0,26.16 -2015-02-07 06:00:00,5146.65,0.0,26.91 -2015-02-07 07:00:00,5348.275,0.0,26.93 -2015-02-07 08:00:00,5632.5,0.0,27.93 -2015-02-07 09:00:00,5929.514,0.0,28.76 -2015-02-07 10:00:00,6145.867,0.0,29.42 -2015-02-07 11:00:00,6286.421,0.0,28.53 -2015-02-07 12:00:00,6294.617,0.0065,28.3 -2015-02-07 13:00:00,6236.842,0.0,30.15 -2015-02-07 14:00:00,6180.583,0.0,32.3 -2015-02-07 15:00:00,6135.858,0.0,33.6 -2015-02-07 16:00:00,6085.325,0.0,34.98 -2015-02-07 17:00:00,6213.733,0.0,35.67 -2015-02-07 18:00:00,6340.65,0.0,35.99 -2015-02-07 19:00:00,6264.25,0.0,34.77 -2015-02-07 20:00:00,6107.167,0.0,33.18 -2015-02-07 21:00:00,5953.317,0.0,32.66 -2015-02-07 22:00:00,5743.008,0.0,33.06 -2015-02-07 23:00:00,5470.933,0.0,32.79 -2015-02-08 00:00:00,5176.6,0.0,32.83 -2015-02-08 01:00:00,4923.86,0.0,33.32 -2015-02-08 02:00:00,4771.185,0.0,33.62 -2015-02-08 03:00:00,4664.325,0.0,33.16 -2015-02-08 04:00:00,4623.417,0.0,33.3 -2015-02-08 05:00:00,4660.133,0.0,33.38 -2015-02-08 06:00:00,4755.867,0.0,33.36 -2015-02-08 07:00:00,4870.867,0.0,33.3 -2015-02-08 08:00:00,5112.617,0.0,34.27 -2015-02-08 09:00:00,5393.292,0.0,34.42 -2015-02-08 10:00:00,5620.783,0.0,34.56 -2015-02-08 11:00:00,5739.567,0.0,35.05 -2015-02-08 12:00:00,5824.158,0.0,35.05 -2015-02-08 13:00:00,5854.125,0.0,34.71 -2015-02-08 14:00:00,5894.683,0.0,34.22 -2015-02-08 15:00:00,5935.192,0.0,33.71 -2015-02-08 16:00:00,6022.808,0.0,34.77 -2015-02-08 17:00:00,6212.575,0.0,34.91 -2015-02-08 18:00:00,6319.783,0.0,34.74 -2015-02-08 19:00:00,6264.083,0.0,34.51 -2015-02-08 20:00:00,6151.567,0.0,34.86 -2015-02-08 21:00:00,5999.425,0.0,34.4 -2015-02-08 22:00:00,5756.817,0.0,32.97 -2015-02-08 23:00:00,5430.075,0.0,31.48 -2015-02-09 00:00:00,5111.1,0.0,29.9 -2015-02-09 01:00:00,4923.958,0.0,28.71 -2015-02-09 02:00:00,4794.425,0.0,27.47 -2015-02-09 03:00:00,4741.958,0.0,26.82 -2015-02-09 04:00:00,4781.6,0.0,26.09 -2015-02-09 05:00:00,5039.025,0.0,25.77 -2015-02-09 06:00:00,5559.367,0.0,25.77 -2015-02-09 07:00:00,6157.242,0.0196,25.89 -2015-02-09 08:00:00,6556.275,0.0204,25.77 -2015-02-09 09:00:00,6851.967,0.0,26.09 -2015-02-09 10:00:00,7020.857,0.0,26.23 -2015-02-09 11:00:00,7097.667,0.0,25.88 -2015-02-09 12:00:00,7122.025,0.0065,26.2 -2015-02-09 13:00:00,7135.114,0.0,26.55 -2015-02-09 14:00:00,7098.325,0.0,26.2 -2015-02-09 15:00:00,7120.083,0.0,26.34 -2015-02-09 16:00:00,7218.567,0.0,26.64 -2015-02-09 17:00:00,7321.183,0.0,26.64 -2015-02-09 18:00:00,7277.217,0.0,26.99 -2015-02-09 19:00:00,7112.125,0.0,26.99 -2015-02-09 20:00:00,6874.0,0.0,26.88 -2015-02-09 21:00:00,6621.058,0.0,26.88 -2015-02-09 22:00:00,6250.117,0.0,26.86 -2015-02-09 23:00:00,5784.083,0.0,26.52 -2015-02-10 00:00:00,5366.521,0.0,26.88 -2015-02-10 01:00:00,5121.492,0.0,26.69 -2015-02-10 02:00:00,4975.133,0.0,26.49 -2015-02-10 03:00:00,4897.65,0.0035,26.37 -2015-02-10 04:00:00,4915.125,0.0,25.76 -2015-02-10 05:00:00,5153.158,0.0,25.56 -2015-02-10 06:00:00,5644.4,0.0,26.56 -2015-02-10 07:00:00,6250.642,0.0,26.74 -2015-02-10 08:00:00,6589.4,0.0,26.74 -2015-02-10 09:00:00,6819.292,0.0,27.74 -2015-02-10 10:00:00,6924.146,0.0,29.1 -2015-02-10 11:00:00,6973.308,0.0,30.23 -2015-02-10 12:00:00,6944.275,0.0,31.37 -2015-02-10 13:00:00,6885.125,0.0,32.72 -2015-02-10 14:00:00,6818.125,0.0,36.17 -2015-02-10 15:00:00,6825.767,0.0,37.62 -2015-02-10 16:00:00,6863.45,0.0,38.13 -2015-02-10 17:00:00,6977.575,0.0,37.42 -2015-02-10 18:00:00,7024.983,0.0,35.67 -2015-02-10 19:00:00,6870.056,0.0,33.86 -2015-02-10 20:00:00,6715.108,0.0,32.67 -2015-02-10 21:00:00,6498.775,0.0,31.86 -2015-02-10 22:00:00,6143.6,0.0,31.56 -2015-02-10 23:00:00,5701.6,0.0,30.56 -2015-02-11 00:00:00,5288.675,0.0,29.56 -2015-02-11 01:00:00,5049.964,0.0,28.37 -2015-02-11 02:00:00,4910.267,0.0,27.17 -2015-02-11 03:00:00,4858.8,0.0,25.63 -2015-02-11 04:00:00,4899.217,0.0,24.51 -2015-02-11 05:00:00,5131.458,0.0,23.71 -2015-02-11 06:00:00,5632.436,0.0,23.15 -2015-02-11 07:00:00,6244.183,0.0,22.22 -2015-02-11 08:00:00,6584.058,0.0,22.96 -2015-02-11 09:00:00,6830.267,0.0,23.96 -2015-02-11 10:00:00,6891.575,0.0,25.08 -2015-02-11 11:00:00,6904.3,0.0,26.74 -2015-02-11 12:00:00,6873.417,0.0,27.74 -2015-02-11 13:00:00,6852.425,0.0,29.42 -2015-02-11 14:00:00,6818.417,0.0,30.39 -2015-02-11 15:00:00,6797.592,0.0,31.39 -2015-02-11 16:00:00,6859.525,0.0,32.07 -2015-02-11 17:00:00,6991.783,0.0,31.25 -2015-02-11 18:00:00,7053.275,0.0,30.96 -2015-02-11 19:00:00,6911.392,0.0,30.27 -2015-02-11 20:00:00,6731.517,0.0,29.52 -2015-02-11 21:00:00,6489.267,0.0,28.89 -2015-02-11 22:00:00,6154.133,0.0,27.67 -2015-02-11 23:00:00,5698.975,0.0,27.86 -2015-02-12 00:00:00,5279.908,0.0,27.16 -2015-02-12 01:00:00,5033.642,0.0,27.91 -2015-02-12 02:00:00,4882.192,0.0,28.03 -2015-02-12 03:00:00,4813.975,0.0,27.84 -2015-02-12 04:00:00,4819.55,0.0,28.86 -2015-02-12 05:00:00,5031.342,0.0,29.3 -2015-02-12 06:00:00,5544.9,0.0,29.3 -2015-02-12 07:00:00,6109.307,0.0,30.05 -2015-02-12 08:00:00,6506.808,0.0,29.98 -2015-02-12 09:00:00,6728.707,0.0,30.49 -2015-02-12 10:00:00,6780.45,0.0,31.84 -2015-02-12 11:00:00,6781.957,0.0,33.64 -2015-02-12 12:00:00,6799.175,0.0,35.72 -2015-02-12 13:00:00,6765.5,0.0,35.74 -2015-02-12 14:00:00,6696.992,0.0,38.03 -2015-02-12 15:00:00,6787.433,0.0,36.81 -2015-02-12 16:00:00,6836.267,0.0,36.23 -2015-02-12 17:00:00,6943.1,0.0,34.86 -2015-02-12 18:00:00,7016.975,0.0,34.35 -2015-02-12 19:00:00,6848.842,0.0,33.35 -2015-02-12 20:00:00,6729.833,0.0,28.95 -2015-02-12 21:00:00,6552.667,0.0,26.3 -2015-02-12 22:00:00,6261.933,0.0,25.07 -2015-02-12 23:00:00,5903.008,0.0,20.42 -2015-02-13 00:00:00,5556.967,0.0,15.8 -2015-02-13 01:00:00,5350.35,0.0,13.66 -2015-02-13 02:00:00,5217.108,0.0,11.8 -2015-02-13 03:00:00,5173.625,0.0,10.66 -2015-02-13 04:00:00,5200.158,0.0,10.12 -2015-02-13 05:00:00,5436.617,0.0,9.66 -2015-02-13 06:00:00,5975.8,0.0,9.0 -2015-02-13 07:00:00,6508.781,0.0,8.44 -2015-02-13 08:00:00,6882.167,0.0,9.19 -2015-02-13 09:00:00,7151.375,0.0,10.19 -2015-02-13 10:00:00,7287.775,0.0,11.93 -2015-02-13 11:00:00,7282.933,0.0,13.78 -2015-02-13 12:00:00,7220.617,0.0,15.78 -2015-02-13 13:00:00,7202.575,0.0,17.28 -2015-02-13 14:00:00,7145.175,0.0,18.98 -2015-02-13 15:00:00,7102.05,0.0,20.12 -2015-02-13 16:00:00,7116.717,0.0,20.56 -2015-02-13 17:00:00,7225.842,0.0,20.69 -2015-02-13 18:00:00,7275.483,0.0,20.3 -2015-02-13 19:00:00,7114.2,0.0,19.56 -2015-02-13 20:00:00,6929.983,0.0,18.76 -2015-02-13 21:00:00,6699.136,0.0,17.97 -2015-02-13 22:00:00,6400.767,0.0,16.96 -2015-02-13 23:00:00,6038.917,0.0,16.27 -2015-02-14 00:00:00,5684.6,0.0,15.61 -2015-02-14 01:00:00,5407.95,0.0,16.37 -2015-02-14 02:00:00,5244.267,0.0,14.92 -2015-02-14 03:00:00,5140.233,0.0,15.19 -2015-02-14 04:00:00,5095.628,0.0,16.47 -2015-02-14 05:00:00,5143.967,0.0,16.97 -2015-02-14 06:00:00,5280.4,0.0,17.9 -2015-02-14 07:00:00,5480.942,0.0,19.49 -2015-02-14 08:00:00,5789.435,0.0,21.59 -2015-02-14 09:00:00,6083.167,0.0,23.38 -2015-02-14 10:00:00,6275.0,0.0,25.78 -2015-02-14 11:00:00,6385.008,0.0,27.19 -2015-02-14 12:00:00,6397.933,0.0,28.65 -2015-02-14 13:00:00,6339.6,0.0,29.22 -2015-02-14 14:00:00,6302.975,0.0,30.75 -2015-02-14 15:00:00,6313.4,0.0,28.0 -2015-02-14 16:00:00,6317.133,0.0,28.0 -2015-02-14 17:00:00,6432.125,0.0065,27.49 -2015-02-14 18:00:00,6535.457,0.0131,27.81 -2015-02-14 19:00:00,6462.886,0.0,27.65 -2015-02-14 20:00:00,6331.457,0.0,27.57 -2015-02-14 21:00:00,6157.158,0.0,27.61 -2015-02-14 22:00:00,5950.6,0.0,27.65 -2015-02-14 23:00:00,5722.1,0.0,25.96 -2015-02-15 00:00:00,5464.017,0.0,25.17 -2015-02-15 01:00:00,5257.825,0.0,23.55 -2015-02-15 02:00:00,5118.917,0.0,19.95 -2015-02-15 03:00:00,5061.975,0.0065,18.19 -2015-02-15 04:00:00,5057.225,0.0,16.31 -2015-02-15 05:00:00,5101.392,0.0,15.07 -2015-02-15 06:00:00,5224.283,0.0,14.41 -2015-02-15 07:00:00,5387.642,0.0,14.31 -2015-02-15 08:00:00,5645.942,0.0,14.61 -2015-02-15 09:00:00,5935.883,0.0,15.07 -2015-02-15 10:00:00,6186.483,0.0,16.31 -2015-02-15 11:00:00,6294.175,0.0,17.93 -2015-02-15 12:00:00,6355.725,0.0,19.31 -2015-02-15 13:00:00,6365.983,0.0,18.57 -2015-02-15 14:00:00,6356.583,0.0,19.68 -2015-02-15 15:00:00,6356.158,0.0,19.31 -2015-02-15 16:00:00,6430.05,0.0,17.68 -2015-02-15 17:00:00,6630.164,0.0,14.53 -2015-02-15 18:00:00,6872.45,0.0,11.97 -2015-02-15 19:00:00,6874.95,0.0,10.0 -2015-02-15 20:00:00,6788.6,0.0,7.36 -2015-02-15 21:00:00,6677.1,0.0,5.76 -2015-02-15 22:00:00,6476.85,0.0,5.51 -2015-02-15 23:00:00,6196.607,0.0,5.0 -2015-02-16 00:00:00,5894.233,0.0,4.12 -2015-02-16 01:00:00,5657.056,0.0,4.17 -2015-02-16 02:00:00,5495.492,0.0,4.37 -2015-02-16 03:00:00,5408.075,0.0,4.37 -2015-02-16 04:00:00,5388.517,0.0,4.3 -2015-02-16 05:00:00,5499.025,0.0,4.05 -2015-02-16 06:00:00,5731.25,0.0,3.83 -2015-02-16 07:00:00,6023.892,0.0,3.98 -2015-02-16 08:00:00,6370.442,0.0,4.37 -2015-02-16 09:00:00,6681.042,0.0,6.79 -2015-02-16 10:00:00,6916.557,0.0,9.1 -2015-02-16 11:00:00,7028.15,0.0,11.54 -2015-02-16 12:00:00,7025.967,0.0,14.67 -2015-02-16 13:00:00,6985.6,0.0,17.28 -2015-02-16 14:00:00,6956.114,0.0,18.49 -2015-02-16 15:00:00,6944.683,0.0,19.6 -2015-02-16 16:00:00,6987.983,0.0,19.86 -2015-02-16 17:00:00,7115.658,0.0,20.35 -2015-02-16 18:00:00,7230.258,0.0,19.69 -2015-02-16 19:00:00,7146.929,0.0,19.81 -2015-02-16 20:00:00,6976.617,0.0,19.56 -2015-02-16 21:00:00,6748.65,0.0,19.17 -2015-02-16 22:00:00,6447.55,0.0,19.17 -2015-02-16 23:00:00,6061.492,0.0,19.17 -2015-02-17 00:00:00,5665.15,0.0,18.81 -2015-02-17 01:00:00,5422.125,0.0,18.69 -2015-02-17 02:00:00,5257.358,0.0,17.17 -2015-02-17 03:00:00,5200.392,0.01,15.49 -2015-02-17 04:00:00,5228.142,0.0165,15.37 -2015-02-17 05:00:00,5429.575,0.0165,14.78 -2015-02-17 06:00:00,5834.658,0.0065,14.97 -2015-02-17 07:00:00,6325.833,0.0065,14.27 -2015-02-17 08:00:00,6759.4,0.0,15.06 -2015-02-17 09:00:00,7059.342,0.0,15.37 -2015-02-17 10:00:00,7245.833,0.0,16.44 -2015-02-17 11:00:00,7277.492,0.0,18.03 -2015-02-17 12:00:00,7240.192,0.0,19.99 -2015-02-17 13:00:00,7217.358,0.0,21.65 -2015-02-17 14:00:00,7177.075,0.0,23.11 -2015-02-17 15:00:00,7129.517,0.0,25.12 -2015-02-17 16:00:00,7142.067,0.0,26.83 -2015-02-17 17:00:00,7232.683,0.0,27.35 -2015-02-17 18:00:00,7318.933,0.0,26.08 -2015-02-17 19:00:00,7174.225,0.0,25.18 -2015-02-17 20:00:00,6971.883,0.0,24.58 -2015-02-17 21:00:00,6733.892,0.0,24.65 -2015-02-17 22:00:00,6378.857,0.0,23.3 -2015-02-17 23:00:00,5987.967,0.0,22.97 -2015-02-18 00:00:00,5574.033,0.0,22.46 -2015-02-18 01:00:00,5320.467,0.0,22.75 -2015-02-18 02:00:00,5158.925,0.0,20.12 -2015-02-18 03:00:00,5077.725,0.0,19.12 -2015-02-18 04:00:00,5108.6,0.0,19.71 -2015-02-18 05:00:00,5305.333,0.0,18.46 -2015-02-18 06:00:00,5723.438,0.0,18.46 -2015-02-18 07:00:00,6248.175,0.0,18.2 -2015-02-18 08:00:00,6690.267,0.0,17.7 -2015-02-18 09:00:00,6935.55,0.0,19.55 -2015-02-18 10:00:00,7020.158,0.0,21.44 -2015-02-18 11:00:00,7028.779,0.0,23.44 -2015-02-18 12:00:00,6998.067,0.0,25.7 -2015-02-18 13:00:00,6972.967,0.0,27.49 -2015-02-18 14:00:00,6937.7,0.0,28.89 -2015-02-18 15:00:00,6910.117,0.0,28.81 -2015-02-18 16:00:00,6963.775,0.0,28.83 -2015-02-18 17:00:00,7100.842,0.0,28.05 -2015-02-18 18:00:00,7157.875,0.0,28.24 -2015-02-18 19:00:00,6978.883,0.0,28.37 -2015-02-18 20:00:00,6789.125,0.0,27.32 -2015-02-18 21:00:00,6575.992,0.0035,27.89 -2015-02-18 22:00:00,6252.8,0.0,27.28 -2015-02-18 23:00:00,5871.417,0.0,26.55 -2015-02-19 00:00:00,5487.3,0.0,26.65 -2015-02-19 01:00:00,5246.933,0.0,24.65 -2015-02-19 02:00:00,5118.75,0.0,22.15 -2015-02-19 03:00:00,5068.708,0.0,20.3 -2015-02-19 04:00:00,5100.942,0.0,18.63 -2015-02-19 05:00:00,5315.375,0.0,18.31 -2015-02-19 06:00:00,5748.383,0.0,16.86 -2015-02-19 07:00:00,6271.175,0.0,15.51 -2015-02-19 08:00:00,6709.317,0.0,15.19 -2015-02-19 09:00:00,6956.765,0.0,16.12 -2015-02-19 10:00:00,7091.05,0.0,17.91 -2015-02-19 11:00:00,7167.183,0.0,19.89 -2015-02-19 12:00:00,7197.792,0.0,20.1 -2015-02-19 13:00:00,7173.771,0.0,20.42 -2015-02-19 14:00:00,7144.492,0.0,20.98 -2015-02-19 15:00:00,7166.292,0.0,20.98 -2015-02-19 16:00:00,7198.854,0.0,20.06 -2015-02-19 17:00:00,7310.417,0.0,17.91 -2015-02-19 18:00:00,7445.067,0.0,16.03 -2015-02-19 19:00:00,7351.083,0.0,14.98 -2015-02-19 20:00:00,7207.257,0.0,13.63 -2015-02-19 21:00:00,7011.625,0.0,12.52 -2015-02-19 22:00:00,6721.733,0.0,11.37 -2015-02-19 23:00:00,6336.292,0.0,9.98 -2015-02-20 00:00:00,5960.933,0.0,8.33 -2015-02-20 01:00:00,5691.175,0.0,6.72 -2015-02-20 02:00:00,5533.372,0.0,5.71 -2015-02-20 03:00:00,5480.533,0.0,4.71 -2015-02-20 04:00:00,5513.575,0.0,4.06 -2015-02-20 05:00:00,5708.775,0.0,3.25 -2015-02-20 06:00:00,6136.533,0.0,2.51 -2015-02-20 07:00:00,6629.958,0.0,2.37 -2015-02-20 08:00:00,7064.2,0.0,3.25 -2015-02-20 09:00:00,7359.142,0.0,4.44 -2015-02-20 10:00:00,7515.05,0.0,6.51 -2015-02-20 11:00:00,7582.431,0.0,9.52 -2015-02-20 12:00:00,7547.964,0.0,12.17 -2015-02-20 13:00:00,7507.569,0.0,14.44 -2015-02-20 14:00:00,7408.785,0.0,16.33 -2015-02-20 15:00:00,7368.45,0.0,18.65 -2015-02-20 16:00:00,7375.742,0.0,19.65 -2015-02-20 17:00:00,7453.6,0.0,18.65 -2015-02-20 18:00:00,7513.85,0.0,18.31 -2015-02-20 19:00:00,7374.925,0.0,18.61 -2015-02-20 20:00:00,7196.083,0.0,15.65 -2015-02-20 21:00:00,6953.983,0.0,14.96 -2015-02-20 22:00:00,6684.283,0.0,14.96 -2015-02-20 23:00:00,6314.508,0.0,13.96 -2015-02-21 00:00:00,5937.425,0.0,13.61 -2015-02-21 01:00:00,5690.875,0.0,12.92 -2015-02-21 02:00:00,5516.45,0.0,12.57 -2015-02-21 03:00:00,5412.592,0.0,12.57 -2015-02-21 04:00:00,5371.15,0.0,11.88 -2015-02-21 05:00:00,5422.85,0.0,12.92 -2015-02-21 06:00:00,5558.425,0.0,13.92 -2015-02-21 07:00:00,5736.958,0.0,14.57 -2015-02-21 08:00:00,5991.975,0.0,15.57 -2015-02-21 09:00:00,6242.55,0.0,18.61 -2015-02-21 10:00:00,6449.25,0.0,22.31 -2015-02-21 11:00:00,6562.317,0.0,23.65 -2015-02-21 12:00:00,6598.542,0.0,25.31 -2015-02-21 13:00:00,6596.675,0.0,26.96 -2015-02-21 14:00:00,6593.683,0.0135,25.61 -2015-02-21 15:00:00,6588.367,0.0335,25.65 -2015-02-21 16:00:00,6599.067,0.0065,27.0 -2015-02-21 17:00:00,6689.4,0.0065,27.65 -2015-02-21 18:00:00,6793.625,0.0169,27.65 -2015-02-21 19:00:00,6697.767,0.0365,27.49 -2015-02-21 20:00:00,6528.975,0.0369,28.2 -2015-02-21 21:00:00,6328.908,0.0435,28.66 -2015-02-21 22:00:00,6102.217,0.0265,29.55 -2015-02-21 23:00:00,5824.042,0.0523,30.15 -2015-02-22 00:00:00,5517.4,0.0523,30.96 -2015-02-22 01:00:00,5270.65,0.0131,31.66 -2015-02-22 02:00:00,5074.125,0.0165,31.4 -2015-02-22 03:00:00,4958.45,0.0,32.01 -2015-02-22 04:00:00,4905.0,0.01,31.3 -2015-02-22 05:00:00,4936.692,0.01,31.3 -2015-02-22 06:00:00,5031.483,0.0065,31.17 -2015-02-22 07:00:00,5154.483,0.0065,31.17 -2015-02-22 08:00:00,5390.308,0.0,31.17 -2015-02-22 09:00:00,5631.325,0.0,31.49 -2015-02-22 10:00:00,5850.208,0.0,33.03 -2015-02-22 11:00:00,5939.867,0.0,33.54 -2015-02-22 12:00:00,5957.95,0.0,36.27 -2015-02-22 13:00:00,5950.717,0.0,36.62 -2015-02-22 14:00:00,5899.025,0.0,38.35 -2015-02-22 15:00:00,5860.058,0.0,40.16 -2015-02-22 16:00:00,5899.65,0.0,39.41 -2015-02-22 17:00:00,6087.633,0.0,39.69 -2015-02-22 18:00:00,6346.275,0.0,38.65 -2015-02-22 19:00:00,6325.35,0.0,36.86 -2015-02-22 20:00:00,6232.075,0.0,37.11 -2015-02-22 21:00:00,6078.008,0.0,36.62 -2015-02-22 22:00:00,5820.442,0.0,38.11 -2015-02-22 23:00:00,5487.383,0.0,38.37 -2015-02-23 00:00:00,5196.95,0.0,37.47 -2015-02-23 01:00:00,4963.525,0.0,36.69 -2015-02-23 02:00:00,4845.692,0.0,34.54 -2015-02-23 03:00:00,4808.808,0.0,32.79 -2015-02-23 04:00:00,4837.525,0.0,32.67 -2015-02-23 05:00:00,5063.375,0.0,32.18 -2015-02-23 06:00:00,5600.483,0.0,30.47 -2015-02-23 07:00:00,6188.625,0.0,26.84 -2015-02-23 08:00:00,6621.808,0.0,23.66 -2015-02-23 09:00:00,6925.358,0.0,21.51 -2015-02-23 10:00:00,7100.425,0.0,20.23 -2015-02-23 11:00:00,7124.058,0.0,20.21 -2015-02-23 12:00:00,7085.308,0.0,20.94 -2015-02-23 13:00:00,7077.858,0.0,21.28 -2015-02-23 14:00:00,7046.157,0.0,22.73 -2015-02-23 15:00:00,7070.55,0.0,23.11 -2015-02-23 16:00:00,7175.492,0.0,20.91 -2015-02-23 17:00:00,7285.767,0.0,19.35 -2015-02-23 18:00:00,7400.367,0.0,17.17 -2015-02-23 19:00:00,7354.628,0.0,14.98 -2015-02-23 20:00:00,7225.25,0.0,13.17 -2015-02-23 21:00:00,7021.233,0.0,11.37 -2015-02-23 22:00:00,6686.308,0.0,9.98 -2015-02-23 23:00:00,6245.175,0.0,8.49 -2015-02-24 00:00:00,5824.442,0.0,7.98 -2015-02-24 01:00:00,5576.592,0.0,7.49 -2015-02-24 02:00:00,5430.65,0.0,7.1 -2015-02-24 03:00:00,5372.071,0.0,6.98 -2015-02-24 04:00:00,5415.583,0.0,6.37 -2015-02-24 05:00:00,5641.325,0.0,5.63 -2015-02-24 06:00:00,6114.783,0.0,5.44 -2015-02-24 07:00:00,6660.025,0.0,5.37 -2015-02-24 08:00:00,6992.05,0.0,6.46 -2015-02-24 09:00:00,7228.967,0.0,8.98 -2015-02-24 10:00:00,7322.858,0.0,10.52 -2015-02-24 11:00:00,7337.5,0.0,13.59 -2015-02-24 12:00:00,7319.925,0.0,14.61 -2015-02-24 13:00:00,7288.883,0.0,16.19 -2015-02-24 14:00:00,7260.333,0.0,17.62 -2015-02-24 15:00:00,7264.183,0.0,19.81 -2015-02-24 16:00:00,7305.167,0.0,20.72 -2015-02-24 17:00:00,7411.808,0.0,21.53 -2015-02-24 18:00:00,7491.175,0.0,21.69 -2015-02-24 19:00:00,7356.358,0.0,22.49 -2015-02-24 20:00:00,7143.517,0.0,23.12 -2015-02-24 21:00:00,6865.808,0.0,23.12 -2015-02-24 22:00:00,6500.925,0.0,22.8 -2015-02-24 23:00:00,6023.333,0.0,22.0 -2015-02-25 00:00:00,5611.442,0.0,22.0 -2015-02-25 01:00:00,5349.467,0.0,22.0 -2015-02-25 02:00:00,5200.175,0.0,21.81 -2015-02-25 03:00:00,5141.675,0.0,21.27 -2015-02-25 04:00:00,5167.083,0.0,20.4 -2015-02-25 05:00:00,5380.143,0.0,19.41 -2015-02-25 06:00:00,5851.307,0.0,19.25 -2015-02-25 07:00:00,6406.833,0.0,20.0 -2015-02-25 08:00:00,6717.033,0.0,21.45 -2015-02-25 09:00:00,6929.233,0.0,24.12 -2015-02-25 10:00:00,6997.367,0.0,29.6 -2015-02-25 11:00:00,6982.092,0.0,32.3 -2015-02-25 12:00:00,6965.867,0.0,33.43 -2015-02-25 13:00:00,6924.131,0.0,34.64 -2015-02-25 14:00:00,6866.042,0.0,35.08 -2015-02-25 15:00:00,6858.933,0.0,36.08 -2015-02-25 16:00:00,6914.933,0.0,36.4 -2015-02-25 17:00:00,7011.85,0.0,36.08 -2015-02-25 18:00:00,7083.55,0.0,34.69 -2015-02-25 19:00:00,6979.433,0.0,34.52 -2015-02-25 20:00:00,6781.417,0.0,33.69 -2015-02-25 21:00:00,6538.725,0.0,33.38 -2015-02-25 22:00:00,6173.525,0.0,32.38 -2015-02-25 23:00:00,5730.35,0.0,32.37 -2015-02-26 00:00:00,5323.0,0.0,31.47 -2015-02-26 01:00:00,5104.9,0.0,29.52 -2015-02-26 02:00:00,4972.733,0.0,27.96 -2015-02-26 03:00:00,4921.2,0.0,26.2 -2015-02-26 04:00:00,4973.217,0.0,24.87 -2015-02-26 05:00:00,5195.175,0.0,23.2 -2015-02-26 06:00:00,5734.1,0.0,22.34 -2015-02-26 07:00:00,6309.925,0.0,21.88 -2015-02-26 08:00:00,6667.525,0.0,21.88 -2015-02-26 09:00:00,6928.231,0.0,21.56 -2015-02-26 10:00:00,7083.575,0.0,22.01 -2015-02-26 11:00:00,7114.143,0.0,22.72 -2015-02-26 12:00:00,7073.992,0.0,22.58 -2015-02-26 13:00:00,7046.523,0.0,24.26 -2015-02-26 14:00:00,7002.486,0.0,24.87 -2015-02-26 15:00:00,7055.892,0.0,24.89 -2015-02-26 16:00:00,7126.733,0.0,25.54 -2015-02-26 17:00:00,7193.5,0.0,25.86 -2015-02-26 18:00:00,7238.092,0.0,25.18 -2015-02-26 19:00:00,7102.625,0.0,24.98 -2015-02-26 20:00:00,6903.383,0.0,24.54 -2015-02-26 21:00:00,6658.683,0.0,24.18 -2015-02-26 22:00:00,6321.217,0.0,23.35 -2015-02-26 23:00:00,5875.117,0.0,22.49 -2015-02-27 00:00:00,5485.517,0.0,22.03 -2015-02-27 01:00:00,5244.683,0.0,21.49 -2015-02-27 02:00:00,5095.683,0.0,20.85 -2015-02-27 03:00:00,5031.733,0.0,20.3 -2015-02-27 04:00:00,5058.317,0.0,20.3 -2015-02-27 05:00:00,5282.333,0.0,19.49 -2015-02-27 06:00:00,5778.875,0.0,18.84 -2015-02-27 07:00:00,6309.317,0.0,18.17 -2015-02-27 08:00:00,6663.25,0.0,18.37 -2015-02-27 09:00:00,6919.85,0.0,19.19 -2015-02-27 10:00:00,7006.858,0.0,20.03 -2015-02-27 11:00:00,7014.7,0.0,21.49 -2015-02-27 12:00:00,6991.092,0.0,23.61 -2015-02-27 13:00:00,6946.742,0.0,25.64 -2015-02-27 14:00:00,6887.742,0.0,27.28 -2015-02-27 15:00:00,6880.258,0.0,28.28 -2015-02-27 16:00:00,6897.233,0.0,29.1 -2015-02-27 17:00:00,6952.469,0.0,29.1 -2015-02-27 18:00:00,7012.883,0.0,27.89 -2015-02-27 19:00:00,6907.292,0.0,27.22 -2015-02-27 20:00:00,6735.233,0.0,25.49 -2015-02-27 21:00:00,6540.225,0.0,24.28 -2015-02-27 22:00:00,6275.25,0.0,23.28 -2015-02-27 23:00:00,5920.658,0.0,21.74 -2015-02-28 00:00:00,5575.258,0.0,20.21 -2015-02-28 01:00:00,5356.3,0.0,19.24 -2015-02-28 02:00:00,5196.45,0.0,18.3 -2015-02-28 03:00:00,5124.883,0.0,17.37 -2015-02-28 04:00:00,5096.792,0.0,15.93 -2015-02-28 05:00:00,5167.292,0.0,14.98 -2015-02-28 06:00:00,5297.367,0.0,14.1 -2015-02-28 07:00:00,5554.85,0.0,13.98 -2015-02-28 08:00:00,5828.967,0.0,15.19 -2015-02-28 09:00:00,6074.45,0.0,17.22 -2015-02-28 10:00:00,6264.275,0.0,18.44 -2015-02-28 11:00:00,6325.367,0.0,20.49 -2015-02-28 12:00:00,6318.717,0.0,22.1 -2015-02-28 13:00:00,6271.675,0.0,24.07 -2015-02-28 14:00:00,6203.008,0.0,26.1 -2015-02-28 15:00:00,6152.492,0.0,27.89 -2015-02-28 16:00:00,6154.692,0.0,28.3 -2015-02-28 17:00:00,6243.122,0.0,28.41 -2015-02-28 18:00:00,6475.4,0.0,27.89 -2015-02-28 19:00:00,6473.358,0.0,27.52 -2015-02-28 20:00:00,6345.725,0.0,26.67 -2015-02-28 21:00:00,6210.983,0.0,25.79 -2015-02-28 22:00:00,6011.975,0.0,25.23 -2015-02-28 23:00:00,5746.75,0.0,24.7 -2015-03-01 00:00:00,5437.742,0.0,24.77 -2015-03-01 01:00:00,5215.692,0.0,23.53 -2015-03-01 02:00:00,5054.892,0.0,23.07 -2015-03-01 03:00:00,4956.692,0.0,23.51 -2015-03-01 04:00:00,4916.233,0.0,21.97 -2015-03-01 05:00:00,4949.1,0.0,22.51 -2015-03-01 06:00:00,5025.725,0.0,23.68 -2015-03-01 07:00:00,5160.367,0.0,24.36 -2015-03-01 08:00:00,5409.492,0.0,25.11 -2015-03-01 09:00:00,5659.933,0.0,27.18 -2015-03-01 10:00:00,5862.058,0.0,28.37 -2015-03-01 11:00:00,6036.75,0.0,29.23 -2015-03-01 12:00:00,6140.608,0.0,29.08 -2015-03-01 13:00:00,6234.592,0.0,25.68 -2015-03-01 14:00:00,6295.658,0.0396,24.42 -2015-03-01 15:00:00,6324.6,0.0535,24.35 -2015-03-01 16:00:00,6372.008,0.0473,24.35 -2015-03-01 17:00:00,6498.083,0.0592,24.89 -2015-03-01 18:00:00,6658.5,0.0265,25.71 -2015-03-01 19:00:00,6607.525,0.0131,26.06 -2015-03-01 20:00:00,6455.55,0.0104,26.4 -2015-03-01 21:00:00,6262.733,0.0069,26.71 -2015-03-01 22:00:00,5960.383,0.0,26.89 -2015-03-01 23:00:00,5606.3,0.0,26.91 -2015-03-02 00:00:00,5275.133,0.0,26.91 -2015-03-02 01:00:00,5074.083,0.0,27.38 -2015-03-02 02:00:00,4937.225,0.0,28.06 -2015-03-02 03:00:00,4882.783,0.0,28.71 -2015-03-02 04:00:00,4905.908,0.0,29.39 -2015-03-02 05:00:00,5115.9,0.0,29.5 -2015-03-02 06:00:00,5590.55,0.0,29.82 -2015-03-02 07:00:00,6127.9,0.0,30.71 -2015-03-02 08:00:00,6514.042,0.0,32.18 -2015-03-02 09:00:00,6757.367,0.0,33.33 -2015-03-02 10:00:00,6890.786,0.0,33.86 -2015-03-02 11:00:00,6922.617,0.0,33.4 -2015-03-02 12:00:00,6905.575,0.0,34.21 -2015-03-02 13:00:00,6899.4,0.0,35.4 -2015-03-02 14:00:00,6827.625,0.0,36.65 -2015-03-02 15:00:00,6805.55,0.0,37.47 -2015-03-02 16:00:00,6834.567,0.0,37.47 -2015-03-02 17:00:00,6903.692,0.0,36.72 -2015-03-02 18:00:00,7009.107,0.0,35.54 -2015-03-02 19:00:00,6908.933,0.0,34.31 -2015-03-02 20:00:00,6763.758,0.0,32.65 -2015-03-02 21:00:00,6504.542,0.0,31.15 -2015-03-02 22:00:00,6194.775,0.0,29.35 -2015-03-02 23:00:00,5756.65,0.0,28.28 -2015-03-03 00:00:00,5357.208,0.0,26.98 -2015-03-03 01:00:00,5124.9,0.0,26.49 -2015-03-03 02:00:00,4971.858,0.0,25.65 -2015-03-03 03:00:00,4903.2,0.0,24.6 -2015-03-03 04:00:00,4933.008,0.0,24.42 -2015-03-03 05:00:00,5177.217,0.0,21.53 -2015-03-03 06:00:00,5663.967,0.0,21.35 -2015-03-03 07:00:00,6205.867,0.0,22.2 -2015-03-03 08:00:00,6565.417,0.0,24.01 -2015-03-03 09:00:00,6788.817,0.0,25.73 -2015-03-03 10:00:00,6889.783,0.0,27.61 -2015-03-03 11:00:00,6932.783,0.0,28.48 -2015-03-03 12:00:00,6946.925,0.0,28.95 -2015-03-03 13:00:00,6949.367,0.0,28.93 -2015-03-03 14:00:00,6941.95,0.0,29.93 -2015-03-03 15:00:00,6991.317,0.0,29.86 -2015-03-03 16:00:00,7044.325,0.0165,28.32 -2015-03-03 17:00:00,7032.433,0.0435,27.86 -2015-03-03 18:00:00,7090.108,0.0139,28.91 -2015-03-03 19:00:00,7004.717,0.0435,30.95 -2015-03-03 20:00:00,6811.758,0.0527,32.59 -2015-03-03 21:00:00,6550.733,0.0527,33.42 -2015-03-03 22:00:00,6193.142,0.1,33.49 -2015-03-03 23:00:00,5740.658,0.01,34.52 -2015-03-04 00:00:00,5306.658,0.01,34.98 -2015-03-04 01:00:00,5047.5,0.0,35.49 -2015-03-04 02:00:00,4884.558,0.0,35.35 -2015-03-04 03:00:00,4817.067,0.0,35.49 -2015-03-04 04:00:00,4816.608,0.0,35.61 -2015-03-04 05:00:00,5040.642,0.0,35.96 -2015-03-04 06:00:00,5512.3,0.0,35.82 -2015-03-04 07:00:00,6065.825,0.01,35.61 -2015-03-04 08:00:00,6412.433,0.01,35.82 -2015-03-04 09:00:00,6653.958,0.01,36.96 -2015-03-04 10:00:00,6723.217,0.01,38.69 -2015-03-04 11:00:00,6763.372,0.0035,39.86 -2015-03-04 12:00:00,6736.771,0.0,42.59 -2015-03-04 13:00:00,6706.15,0.0,43.3 -2015-03-04 14:00:00,6685.042,0.0,44.24 -2015-03-04 15:00:00,6731.15,0.0,44.1 -2015-03-04 16:00:00,6773.5,0.0,44.16 -2015-03-04 17:00:00,6819.117,0.0,42.81 -2015-03-04 18:00:00,6833.425,0.0,42.23 -2015-03-04 19:00:00,6695.008,0.0035,42.18 -2015-03-04 20:00:00,6505.1,0.0,41.96 -2015-03-04 21:00:00,6274.967,0.0231,41.45 -2015-03-04 22:00:00,5911.542,0.0665,41.5 -2015-03-04 23:00:00,5498.542,0.0535,41.31 -2015-03-05 00:00:00,5109.4,0.0635,40.33 -2015-03-05 01:00:00,4864.317,0.0665,39.54 -2015-03-05 02:00:00,4720.95,0.01,38.49 -2015-03-05 03:00:00,4681.075,0.0235,35.93 -2015-03-05 04:00:00,4701.967,0.0065,33.86 -2015-03-05 05:00:00,4954.208,0.0,33.54 -2015-03-05 06:00:00,5448.775,0.0165,32.93 -2015-03-05 07:00:00,6039.517,0.02,32.0 -2015-03-05 08:00:00,6441.392,0.0427,31.74 -2015-03-05 09:00:00,6731.236,0.0235,28.2 -2015-03-05 10:00:00,6878.357,0.04,27.18 -2015-03-05 11:00:00,6969.383,0.0265,26.05 -2015-03-05 12:00:00,7005.808,0.0131,24.19 -2015-03-05 13:00:00,7028.407,0.0296,21.98 -2015-03-05 14:00:00,6989.508,0.0,22.42 -2015-03-05 15:00:00,6979.367,0.0035,22.75 -2015-03-05 16:00:00,7012.507,0.0165,21.34 -2015-03-05 17:00:00,7109.608,0.0165,21.03 -2015-03-05 18:00:00,7179.133,0.0,20.68 -2015-03-05 19:00:00,7061.856,0.0,21.81 -2015-03-05 20:00:00,6861.408,0.0,22.16 -2015-03-05 21:00:00,6596.975,0.0,22.22 -2015-03-05 22:00:00,6270.042,0.0,21.96 -2015-03-05 23:00:00,5883.943,0.0,21.17 -2015-03-06 00:00:00,5512.133,0.0,20.17 -2015-03-06 01:00:00,5290.642,0.0,18.3 -2015-03-06 02:00:00,5149.133,0.0,16.96 -2015-03-06 03:00:00,5097.733,0.0,15.51 -2015-03-06 04:00:00,5131.842,0.0,14.98 -2015-03-06 05:00:00,5348.325,0.0,14.67 -2015-03-06 06:00:00,5773.225,0.0,13.67 -2015-03-06 07:00:00,6298.5,0.0,13.47 -2015-03-06 08:00:00,6630.533,0.0,14.17 -2015-03-06 09:00:00,6890.558,0.0,16.37 -2015-03-06 10:00:00,7041.467,0.0,18.75 -2015-03-06 11:00:00,7081.017,0.0,20.22 -2015-03-06 12:00:00,7057.825,0.0,21.1 -2015-03-06 13:00:00,7020.833,0.0,23.66 -2015-03-06 14:00:00,6956.35,0.0,24.78 -2015-03-06 15:00:00,6941.025,0.0,25.73 -2015-03-06 16:00:00,6930.217,0.0,27.27 -2015-03-06 17:00:00,6992.408,0.0,26.08 -2015-03-06 18:00:00,7057.888,0.0,24.96 -2015-03-06 19:00:00,6969.842,0.0,24.56 -2015-03-06 20:00:00,6758.842,0.0,24.17 -2015-03-06 21:00:00,6539.15,0.0,23.32 -2015-03-06 22:00:00,6279.95,0.0,22.32 -2015-03-06 23:00:00,5897.733,0.0,21.81 -2015-03-07 00:00:00,5563.517,0.0,21.46 -2015-03-07 01:00:00,5316.417,0.0,20.57 -2015-03-07 02:00:00,5154.85,0.0,20.61 -2015-03-07 03:00:00,5070.958,0.0,19.62 -2015-03-07 04:00:00,5037.692,0.0,18.88 -2015-03-07 05:00:00,5091.45,0.0,18.23 -2015-03-07 06:00:00,5217.675,0.0,18.42 -2015-03-07 07:00:00,5448.317,0.0,18.22 -2015-03-07 08:00:00,5732.308,0.0,20.47 -2015-03-07 09:00:00,5961.583,0.0,23.36 -2015-03-07 10:00:00,6140.033,0.0,24.98 -2015-03-07 11:00:00,6191.1,0.0,27.07 -2015-03-07 12:00:00,6178.925,0.0,30.13 -2015-03-07 13:00:00,6117.633,0.0,32.57 -2015-03-07 14:00:00,6069.967,0.0,34.2 -2015-03-07 15:00:00,6033.092,0.0,34.98 -2015-03-07 16:00:00,6055.475,0.0,36.64 -2015-03-07 17:00:00,6129.783,0.0,37.52 -2015-03-07 18:00:00,6279.742,0.0,37.27 -2015-03-07 19:00:00,6271.358,0.0,36.42 -2015-03-07 20:00:00,6152.708,0.0,35.66 -2015-03-07 21:00:00,5993.1,0.0,36.47 -2015-03-07 22:00:00,5774.458,0.0,35.81 -2015-03-07 23:00:00,5492.775,0.0,36.84 -2015-03-08 00:00:00,5175.6,0.0,36.91 -2015-03-08 01:00:00,4948.908,0.0,36.94 -2015-03-08 03:00:00,4785.933,0.0,35.89 -2015-03-08 04:00:00,4691.8,0.0,34.97 -2015-03-08 05:00:00,4678.025,0.0,35.12 -2015-03-08 06:00:00,4755.967,0.0,35.14 -2015-03-08 07:00:00,4847.125,0.0,35.14 -2015-03-08 08:00:00,5050.15,0.0,35.13 -2015-03-08 09:00:00,5261.857,0.0,35.91 -2015-03-08 10:00:00,5465.817,0.0,38.11 -2015-03-08 11:00:00,5585.267,0.0,43.4 -2015-03-08 12:00:00,5645.958,0.0,45.72 -2015-03-08 13:00:00,5658.1,0.0,47.65 -2015-03-08 14:00:00,5669.183,0.0,41.35 -2015-03-08 15:00:00,5637.45,0.0,43.0 -2015-03-08 16:00:00,5616.767,0.0,45.0 -2015-03-08 17:00:00,5630.233,0.0,44.72 -2015-03-08 18:00:00,5716.967,0.0,44.94 -2015-03-08 19:00:00,5944.208,0.0,43.76 -2015-03-08 20:00:00,5981.108,0.0,44.19 -2015-03-08 21:00:00,5885.758,0.0,42.33 -2015-03-08 22:00:00,5638.767,0.0,41.37 -2015-03-08 23:00:00,5289.733,0.0,39.65 -2015-03-09 00:00:00,4948.55,0.0,38.45 -2015-03-09 01:00:00,4732.092,0.0,37.2 -2015-03-09 02:00:00,4592.142,0.0,36.96 -2015-03-09 03:00:00,4535.125,0.0,36.81 -2015-03-09 04:00:00,4553.492,0.0,36.24 -2015-03-09 05:00:00,4757.125,0.0,35.88 -2015-03-09 06:00:00,5230.1,0.0,39.42 -2015-03-09 07:00:00,5860.575,0.0065,41.4 -2015-03-09 08:00:00,6228.283,0.0065,41.41 -2015-03-09 09:00:00,6430.708,0.0,42.1 -2015-03-09 10:00:00,6473.833,0.0,44.01 -2015-03-09 11:00:00,6491.85,0.0,44.86 -2015-03-09 12:00:00,6458.95,0.0,45.81 -2015-03-09 13:00:00,6437.817,0.0,48.28 -2015-03-09 14:00:00,6387.4,0.0,50.01 -2015-03-09 15:00:00,6386.35,0.0,50.4 -2015-03-09 16:00:00,6375.483,0.0,50.99 -2015-03-09 17:00:00,6338.378,0.0,51.94 -2015-03-09 18:00:00,6233.508,0.0,52.16 -2015-03-09 19:00:00,6325.083,0.0,50.45 -2015-03-09 20:00:00,6267.142,0.0,48.12 -2015-03-09 21:00:00,6059.633,0.0,46.3 -2015-03-09 22:00:00,5717.025,0.0,45.74 -2015-03-09 23:00:00,5281.658,0.0,44.39 -2015-03-10 00:00:00,4859.017,0.0,41.44 -2015-03-10 01:00:00,4601.783,0.0,38.05 -2015-03-10 02:00:00,4454.592,0.0,38.61 -2015-03-10 03:00:00,4388.425,0.0,37.61 -2015-03-10 04:00:00,4399.9,0.0,37.25 -2015-03-10 05:00:00,4619.125,0.0,36.52 -2015-03-10 06:00:00,5161.483,0.0,34.33 -2015-03-10 07:00:00,5746.642,0.0,34.52 -2015-03-10 08:00:00,6078.2,0.0,34.82 -2015-03-10 09:00:00,6253.342,0.0,38.07 -2015-03-10 10:00:00,6310.467,0.0,40.37 -2015-03-10 11:00:00,6318.606,0.0,40.73 -2015-03-10 12:00:00,6321.183,0.0,42.04 -2015-03-10 13:00:00,6330.433,0.0,44.13 -2015-03-10 14:00:00,6322.4,0.0,45.48 -2015-03-10 15:00:00,6356.983,0.0,47.41 -2015-03-10 16:00:00,6399.75,0.0,46.58 -2015-03-10 17:00:00,6390.533,0.0,44.35 -2015-03-10 18:00:00,6349.033,0.0335,42.88 -2015-03-10 19:00:00,6372.717,0.0035,41.5 -2015-03-10 20:00:00,6230.9,0.0204,40.55 -2015-03-10 21:00:00,6002.25,0.0635,41.49 -2015-03-10 22:00:00,5680.3,0.0592,39.79 -2015-03-10 23:00:00,5257.208,0.0373,40.04 -2015-03-11 00:00:00,4830.583,0.0296,39.71 -2015-03-11 01:00:00,4563.892,0.0165,39.79 -2015-03-11 02:00:00,4389.367,0.0131,39.55 -2015-03-11 03:00:00,4314.25,0.0,40.31 -2015-03-11 04:00:00,4314.242,0.0,40.51 -2015-03-11 05:00:00,4514.325,0.0,42.82 -2015-03-11 06:00:00,5065.708,0.0,43.43 -2015-03-11 07:00:00,5667.142,0.0,44.39 -2015-03-11 08:00:00,6012.383,0.0,43.63 -2015-03-11 09:00:00,6189.942,0.0,45.09 -2015-03-11 10:00:00,6256.025,0.0,47.26 -2015-03-11 12:00:00,6272.75,0.0,50.31 -2015-03-11 13:00:00,6246.158,0.0,52.27 -2015-03-11 14:00:00,6211.283,0.0,52.96 -2015-03-11 15:00:00,6196.608,0.0,55.14 -2015-03-11 16:00:00,6185.625,0.0,57.2 -2015-03-11 17:00:00,6162.267,0.0,56.96 -2015-03-11 18:00:00,6049.867,0.0,57.44 -2015-03-11 19:00:00,6106.483,0.0,54.92 -2015-03-11 20:00:00,6076.333,0.0,53.41 -2015-03-11 21:00:00,5853.808,0.0,52.13 -2015-03-11 22:00:00,5540.392,0.0,50.06 -2015-03-11 23:00:00,5114.625,0.0,49.12 -2015-03-12 00:00:00,4714.692,0.0,48.02 -2015-03-12 01:00:00,4456.1,0.0,46.73 -2015-03-12 02:00:00,4303.008,0.0,45.63 -2015-03-12 03:00:00,4248.425,0.0,44.86 -2015-03-12 04:00:00,4272.925,0.0,43.3 -2015-03-12 05:00:00,4470.2,0.0,42.65 -2015-03-12 06:00:00,4992.507,0.0,41.65 -2015-03-12 07:00:00,5634.95,0.0,40.84 -2015-03-12 08:00:00,6006.4,0.0,40.33 -2015-03-12 09:00:00,6264.508,0.0,40.6 -2015-03-12 10:00:00,6367.942,0.0,40.72 -2015-03-12 11:00:00,6392.457,0.0,41.65 -2015-03-12 12:00:00,6387.042,0.0,42.35 -2015-03-12 13:00:00,6373.225,0.0,43.33 -2015-03-12 14:00:00,6338.954,0.0,44.28 -2015-03-12 15:00:00,6316.975,0.0,44.58 -2015-03-12 16:00:00,6328.267,0.0,45.33 -2015-03-12 17:00:00,6327.2,0.0,45.09 -2015-03-12 18:00:00,6230.075,0.0,45.04 -2015-03-12 19:00:00,6294.383,0.0,43.4 -2015-03-12 20:00:00,6244.5,0.0,41.77 -2015-03-12 21:00:00,6036.667,0.0,40.52 -2015-03-12 22:00:00,5704.625,0.0,39.35 -2015-03-12 23:00:00,5300.8,0.0,38.21 -2015-03-13 00:00:00,4918.167,0.0,37.35 -2015-03-13 01:00:00,4663.525,0.0,36.16 -2015-03-13 02:00:00,4504.925,0.0,34.97 -2015-03-13 03:00:00,4440.942,0.0,34.02 -2015-03-13 04:00:00,4466.05,0.0,33.21 -2015-03-13 05:00:00,4688.562,0.0,31.99 -2015-03-13 06:00:00,5186.461,0.0,31.32 -2015-03-13 07:00:00,5782.567,0.0,30.97 -2015-03-13 08:00:00,6141.9,0.0,31.4 -2015-03-13 09:00:00,6384.983,0.0,33.59 -2015-03-13 10:00:00,6443.283,0.0,34.71 -2015-03-13 11:00:00,6458.15,0.0,36.06 -2015-03-13 12:00:00,6446.033,0.0,38.69 -2015-03-13 13:00:00,6401.808,0.0,38.15 -2015-03-13 14:00:00,6342.842,0.0,38.32 -2015-03-13 15:00:00,6312.342,0.0,38.95 -2015-03-13 16:00:00,6311.533,0.0,39.21 -2015-03-13 17:00:00,6303.708,0.0,39.76 -2015-03-13 18:00:00,6261.275,0.0,38.66 -2015-03-13 19:00:00,6303.275,0.0,38.82 -2015-03-13 20:00:00,6176.467,0.0,38.59 -2015-03-13 21:00:00,5958.925,0.0,38.4 -2015-03-13 22:00:00,5664.358,0.0,38.6 -2015-03-13 23:00:00,5323.292,0.0,38.54 -2015-03-14 00:00:00,4949.008,0.0,38.82 -2015-03-14 01:00:00,4679.517,0.0,39.84 -2015-03-14 02:00:00,4499.8,0.0,40.18 -2015-03-14 03:00:00,4393.808,0.0,40.5 -2015-03-14 04:00:00,4359.167,0.0069,39.47 -2015-03-14 05:00:00,4416.283,0.0335,39.2 -2015-03-14 06:00:00,4584.975,0.0273,38.9 -2015-03-14 07:00:00,4814.367,0.0596,39.81 -2015-03-14 08:00:00,5131.417,0.0569,39.19 -2015-03-14 09:00:00,5433.742,0.0831,42.76 -2015-03-14 10:00:00,5683.336,0.1315,43.49 -2015-03-14 11:00:00,5878.625,0.0919,44.32 -2015-03-14 12:00:00,5835.975,0.0827,44.49 -2015-03-14 13:00:00,5803.85,0.0557,45.86 -2015-03-14 14:00:00,5720.192,0.02,46.65 -2015-03-14 15:00:00,5660.3,0.0,47.43 -2015-03-14 16:00:00,5629.342,0.0035,49.09 -2015-03-14 17:00:00,5677.725,0.0065,49.12 -2015-03-14 18:00:00,5717.117,0.0035,48.23 -2015-03-14 19:00:00,5780.325,0.0,47.72 -2015-03-14 20:00:00,5708.25,0.0069,47.01 -2015-03-14 21:00:00,5573.117,0.0365,46.43 -2015-03-14 22:00:00,5397.05,0.0331,45.69 -2015-03-14 23:00:00,5126.317,0.0131,46.04 -2015-03-15 00:00:00,4807.867,0.0,45.24 -2015-03-15 01:00:00,4571.208,0.0,44.71 -2015-03-15 02:00:00,4392.408,0.0,45.18 -2015-03-15 03:00:00,4281.767,0.0,44.5 -2015-03-15 04:00:00,4237.333,0.0,44.21 -2015-03-15 05:00:00,4272.792,0.0,43.19 -2015-03-15 06:00:00,4377.642,0.0,42.54 -2015-03-15 07:00:00,4531.15,0.0,42.15 -2015-03-15 08:00:00,4789.567,0.0,42.15 -2015-03-15 09:00:00,5090.225,0.0,42.01 -2015-03-15 10:00:00,5318.55,0.0,42.74 -2015-03-15 11:00:00,5476.708,0.0,42.35 -2015-03-15 12:00:00,5552.617,0.0,41.32 -2015-03-15 13:00:00,5544.233,0.0,42.54 -2015-03-15 14:00:00,5519.067,0.0,42.59 -2015-03-15 15:00:00,5537.408,0.0,42.05 -2015-03-15 16:00:00,5571.842,0.0,42.05 -2015-03-15 17:00:00,5648.542,0.0,41.21 -2015-03-15 18:00:00,5726.633,0.0,39.86 -2015-03-15 19:00:00,5851.258,0.0,39.86 -2015-03-15 20:00:00,5881.542,0.0,38.98 -2015-03-15 21:00:00,5742.875,0.0,38.67 -2015-03-15 22:00:00,5489.017,0.0,37.67 -2015-03-15 23:00:00,5133.067,0.0,37.47 -2015-03-16 00:00:00,4810.667,0.0,37.12 -2015-03-16 01:00:00,4592.625,0.0,36.81 -2015-03-16 02:00:00,4440.242,0.0,36.67 -2015-03-16 03:00:00,4384.325,0.0,36.28 -2015-03-16 04:00:00,4417.042,0.0,35.49 -2015-03-16 05:00:00,4649.3,0.0,34.98 -2015-03-16 06:00:00,5138.622,0.0,34.79 -2015-03-16 07:00:00,5691.975,0.0,34.91 -2015-03-16 08:00:00,6077.083,0.0,35.79 -2015-03-16 09:00:00,6278.225,0.0,37.15 -2015-03-16 10:00:00,6401.775,0.0,37.74 -2015-03-16 11:00:00,6439.025,0.0,38.96 -2015-03-16 12:00:00,6415.067,0.0,39.89 -2015-03-16 13:00:00,6388.317,0.0,41.83 -2015-03-16 14:00:00,6325.108,0.0,44.11 -2015-03-16 15:00:00,6307.717,0.0,46.88 -2015-03-16 16:00:00,6295.358,0.0,48.69 -2015-03-16 17:00:00,6280.017,0.0,48.68 -2015-03-16 18:00:00,6203.733,0.0,46.03 -2015-03-16 19:00:00,6288.233,0.0,43.93 -2015-03-16 20:00:00,6207.733,0.0,43.49 -2015-03-16 21:00:00,5973.008,0.0,43.77 -2015-03-16 22:00:00,5614.75,0.0,43.81 -2015-03-16 23:00:00,5143.9,0.0,44.43 -2015-03-17 00:00:00,4749.75,0.0,44.89 -2015-03-17 01:00:00,4484.425,0.0,46.11 -2015-03-17 02:00:00,4321.492,0.0,46.18 -2015-03-17 03:00:00,4244.3,0.0,47.24 -2015-03-17 04:00:00,4251.15,0.0,46.85 -2015-03-17 05:00:00,4479.858,0.0,46.94 -2015-03-17 06:00:00,5010.025,0.0,46.96 -2015-03-17 07:00:00,5603.575,0.0,47.36 -2015-03-17 08:00:00,5993.417,0.0035,45.41 -2015-03-17 09:00:00,6231.542,0.0135,46.73 -2015-03-17 10:00:00,6307.317,0.0,48.04 -2015-03-17 11:00:00,6305.758,0.0,53.0 -2015-03-17 12:00:00,6321.717,0.0,53.53 -2015-03-17 13:00:00,6305.083,0.0,53.54 -2015-03-17 14:00:00,6261.792,0.0,52.6 -2015-03-17 15:00:00,6260.308,0.0,51.22 -2015-03-17 16:00:00,6295.717,0.0,49.4 -2015-03-17 17:00:00,6255.633,0.0,47.19 -2015-03-17 18:00:00,6164.458,0.0,43.42 -2015-03-17 19:00:00,6226.242,0.0,39.79 -2015-03-17 20:00:00,6230.25,0.0,37.67 -2015-03-17 21:00:00,6055.792,0.0,36.35 -2015-03-17 22:00:00,5731.85,0.0,34.81 -2015-03-17 23:00:00,5297.217,0.0,34.67 -2015-03-18 00:00:00,4885.275,0.0,34.28 -2015-03-18 01:00:00,4608.075,0.0,33.81 -2015-03-18 02:00:00,4468.308,0.0,33.49 -2015-03-18 03:00:00,4406.875,0.0,31.67 -2015-03-18 04:00:00,4443.85,0.0,31.47 -2015-03-18 05:00:00,4682.675,0.0,31.35 -2015-03-18 06:00:00,5283.737,0.0,30.65 -2015-03-18 07:00:00,5876.071,0.0,29.81 -2015-03-18 08:00:00,6267.175,0.0,29.86 -2015-03-18 09:00:00,6515.267,0.0,29.13 -2015-03-18 10:00:00,6613.525,0.0,29.88 -2015-03-18 11:00:00,6646.75,0.0,31.23 -2015-03-18 12:00:00,6631.383,0.0,32.42 -2015-03-18 13:00:00,6606.45,0.0,33.74 -2015-03-18 14:00:00,6563.308,0.0,34.97 -2015-03-18 15:00:00,6539.244,0.0,35.76 -2015-03-18 16:00:00,6544.25,0.0,36.26 -2015-03-18 17:00:00,6539.117,0.0,36.23 -2015-03-18 18:00:00,6421.992,0.0,36.3 -2015-03-18 19:00:00,6479.608,0.0,35.04 -2015-03-18 20:00:00,6462.858,0.0,34.04 -2015-03-18 21:00:00,6225.525,0.0,32.99 -2015-03-18 22:00:00,5893.883,0.0,32.18 -2015-03-18 23:00:00,5468.65,0.0,31.13 -2015-03-19 00:00:00,5056.258,0.0,30.49 -2015-03-19 01:00:00,4801.15,0.0,30.49 -2015-03-19 02:00:00,4659.25,0.0,30.81 -2015-03-19 03:00:00,4579.967,0.0,30.61 -2015-03-19 04:00:00,4606.1,0.0,29.63 -2015-03-19 05:00:00,4858.008,0.0,29.81 -2015-03-19 06:00:00,5334.877,0.0,29.17 -2015-03-19 07:00:00,5932.758,0.0,28.81 -2015-03-19 08:00:00,6285.558,0.0,29.0 -2015-03-19 09:00:00,6507.269,0.0,29.35 -2015-03-19 10:00:00,6580.233,0.0,30.56 -2015-03-19 11:00:00,6581.667,0.0,32.07 -2015-03-19 12:00:00,6563.367,0.0,33.28 -2015-03-19 13:00:00,6554.179,0.0,34.56 -2015-03-19 14:00:00,6513.3,0.0,36.94 -2015-03-19 15:00:00,6477.5,0.0,38.27 -2015-03-19 16:00:00,6482.283,0.0,39.69 -2015-03-19 17:00:00,6447.958,0.0,41.15 -2015-03-19 18:00:00,6245.308,0.0,40.79 -2015-03-19 19:00:00,6368.217,0.0,39.72 -2015-03-19 20:00:00,6325.95,0.0,39.35 -2015-03-19 21:00:00,6109.892,0.0,38.35 -2015-03-19 22:00:00,5806.758,0.0,38.31 -2015-03-19 23:00:00,5358.3,0.0,36.08 -2015-03-20 00:00:00,4974.0,0.0,36.7 -2015-03-20 01:00:00,4721.133,0.0,35.18 -2015-03-20 02:00:00,4581.092,0.0,34.3 -2015-03-20 03:00:00,4516.483,0.0,33.86 -2015-03-20 04:00:00,4535.0,0.0,33.36 -2015-03-20 05:00:00,4747.442,0.0,33.04 -2015-03-20 06:00:00,5233.217,0.0,33.04 -2015-03-20 07:00:00,5829.225,0.0,33.04 -2015-03-20 08:00:00,6223.408,0.0,33.25 -2015-03-20 09:00:00,6467.792,0.0,33.57 -2015-03-20 10:00:00,6558.658,0.0,35.06 -2015-03-20 11:00:00,6616.275,0.0,36.42 -2015-03-20 12:00:00,6649.633,0.0,35.57 -2015-03-20 13:00:00,6675.583,0.0,33.38 -2015-03-20 14:00:00,6670.073,0.0231,31.85 -2015-03-20 15:00:00,6693.333,0.0365,31.22 -2015-03-20 16:00:00,6739.158,0.0231,30.78 -2015-03-20 17:00:00,6723.767,0.0361,30.88 -2015-03-20 18:00:00,6604.55,0.0069,30.18 -2015-03-20 19:00:00,6577.167,0.0265,29.49 -2015-03-20 20:00:00,6467.025,0.0196,29.49 -2015-03-20 21:00:00,6250.183,0.0035,29.86 -2015-03-20 22:00:00,5953.875,0.01,29.37 -2015-03-20 23:00:00,5595.392,0.0065,29.37 -2015-03-21 00:00:00,5218.0,0.0,29.76 -2015-03-21 01:00:00,4943.3,0.0,29.37 -2015-03-21 02:00:00,4766.525,0.0,29.27 -2015-03-21 03:00:00,4671.283,0.0,29.37 -2015-03-21 04:00:00,4627.442,0.0065,29.25 -2015-03-21 05:00:00,4681.367,0.0065,28.88 -2015-03-21 06:00:00,4841.558,0.0,29.42 -2015-03-21 07:00:00,5068.733,0.0,29.62 -2015-03-21 08:00:00,5367.542,0.0,29.93 -2015-03-21 09:00:00,5630.2,0.0,31.17 -2015-03-21 10:00:00,5751.867,0.0,32.86 -2015-03-21 11:00:00,5811.467,0.0,34.89 -2015-03-21 12:00:00,5801.275,0.0,36.79 -2015-03-21 13:00:00,5757.733,0.0,38.43 -2015-03-21 14:00:00,5689.033,0.0,40.66 -2015-03-21 15:00:00,5631.417,0.0,41.08 -2015-03-21 16:00:00,5595.017,0.0,42.75 -2015-03-21 17:00:00,5562.975,0.0,43.88 -2015-03-21 18:00:00,5581.608,0.0,45.0 -2015-03-21 19:00:00,5707.708,0.0,44.55 -2015-03-21 20:00:00,5734.542,0.0,45.17 -2015-03-21 21:00:00,5614.4,0.0,46.18 -2015-03-21 22:00:00,5418.417,0.0,46.87 -2015-03-21 23:00:00,5147.442,0.0,46.21 -2015-03-22 00:00:00,4868.8,0.0,45.19 -2015-03-22 01:00:00,4622.708,0.0,43.67 -2015-03-22 02:00:00,4471.358,0.0,42.35 -2015-03-22 03:00:00,4378.083,0.0,40.67 -2015-03-22 04:00:00,4347.558,0.0,38.65 -2015-03-22 05:00:00,4397.542,0.0,36.79 -2015-03-22 06:00:00,4517.317,0.0,35.79 -2015-03-22 07:00:00,4662.4,0.0,33.49 -2015-03-22 08:00:00,4909.567,0.0,33.21 -2015-03-22 09:00:00,5147.825,0.0,33.21 -2015-03-22 10:00:00,5360.092,0.0,34.06 -2015-03-22 11:00:00,5457.475,0.0,35.49 -2015-03-22 12:00:00,5506.342,0.0,36.67 -2015-03-22 13:00:00,5500.058,0.0,37.59 -2015-03-22 14:00:00,5469.4,0.0,38.79 -2015-03-22 15:00:00,5459.058,0.0,39.15 -2015-03-22 16:00:00,5454.092,0.0,39.67 -2015-03-22 17:00:00,5473.683,0.0,38.99 -2015-03-22 18:00:00,5555.292,0.0,38.6 -2015-03-22 19:00:00,5755.208,0.0,37.15 -2015-03-22 20:00:00,5856.267,0.0,35.67 -2015-03-22 21:00:00,5761.392,0.0,33.99 -2015-03-22 22:00:00,5533.642,0.0,31.99 -2015-03-22 23:00:00,5222.642,0.0,30.67 -2015-03-23 00:00:00,4930.192,0.0,28.81 -2015-03-23 01:00:00,4715.958,0.0,27.81 -2015-03-23 02:00:00,4597.425,0.0,27.3 -2015-03-23 03:00:00,4559.208,0.0,26.3 -2015-03-23 04:00:00,4592.075,0.0,25.3 -2015-03-23 05:00:00,4859.75,0.0,24.49 -2015-03-23 06:00:00,5378.05,0.0,23.81 -2015-03-23 07:00:00,5955.908,0.0,23.3 -2015-03-23 08:00:00,6337.058,0.0,23.54 -2015-03-23 09:00:00,6572.817,0.0,24.54 -2015-03-23 10:00:00,6649.417,0.0,26.6 -2015-03-23 11:00:00,6673.342,0.0,28.59 -2015-03-23 12:00:00,6647.408,0.0,30.88 -2015-03-23 13:00:00,6620.783,0.0,32.28 -2015-03-23 14:00:00,6572.175,0.0,34.67 -2015-03-23 15:00:00,6543.125,0.0,35.59 -2015-03-23 16:00:00,6544.425,0.0,36.3 -2015-03-23 17:00:00,6508.167,0.0,36.49 -2015-03-23 18:00:00,6403.917,0.0,36.6 -2015-03-23 19:00:00,6470.175,0.0,35.42 -2015-03-23 20:00:00,6455.417,0.0,34.49 -2015-03-23 21:00:00,6223.875,0.0,33.67 -2015-03-23 22:00:00,5923.65,0.0,32.51 -2015-03-23 23:00:00,5456.983,0.0,31.49 -2015-03-24 00:00:00,5063.608,0.0,30.81 -2015-03-24 01:00:00,4808.808,0.0,30.56 -2015-03-24 02:00:00,4662.0,0.0,30.35 -2015-03-24 03:00:00,4598.492,0.0,29.67 -2015-03-24 04:00:00,4626.117,0.0,28.86 -2015-03-24 05:00:00,4862.975,0.0,27.79 -2015-03-24 06:00:00,5389.767,0.0,26.88 -2015-03-24 07:00:00,5956.875,0.0,25.67 -2015-03-24 08:00:00,6314.833,0.0,25.86 -2015-03-24 09:00:00,6524.017,0.0,27.23 -2015-03-24 10:00:00,6599.925,0.0,29.32 -2015-03-24 11:00:00,6597.725,0.0,30.96 -2015-03-24 12:00:00,6602.75,0.0,33.32 -2015-03-24 13:00:00,6561.242,0.0,34.76 -2015-03-24 14:00:00,6487.433,0.0,37.06 -2015-03-24 15:00:00,6468.042,0.0,39.06 -2015-03-24 16:00:00,6440.967,0.0,40.45 -2015-03-24 17:00:00,6407.633,0.0,42.2 -2015-03-24 18:00:00,6278.625,0.0,42.11 -2015-03-24 19:00:00,6324.533,0.0,41.46 -2015-03-24 20:00:00,6321.5,0.0,40.11 -2015-03-24 21:00:00,6105.833,0.0,38.26 -2015-03-24 22:00:00,5731.9,0.0,37.38 -2015-03-24 23:00:00,5316.8,0.0,36.89 -2015-03-25 00:00:00,4927.375,0.0,35.67 -2015-03-25 01:00:00,4680.117,0.0,35.36 -2015-03-25 02:00:00,4519.767,0.0,34.46 -2015-03-25 03:00:00,4457.392,0.0,33.88 -2015-03-25 04:00:00,4478.225,0.0,32.79 -2015-03-25 05:00:00,4703.475,0.0,31.79 -2015-03-25 06:00:00,5233.15,0.0,31.83 -2015-03-25 07:00:00,5793.717,0.0,31.29 -2015-03-25 08:00:00,6135.708,0.0,32.73 -2015-03-25 09:00:00,6331.758,0.0,36.8 -2015-03-25 10:00:00,6393.942,0.0,39.8 -2015-03-25 11:00:00,6398.517,0.0,41.98 -2015-03-25 12:00:00,6372.55,0.0,43.31 -2015-03-25 13:00:00,6362.742,0.0,45.13 -2015-03-25 14:00:00,6388.675,0.0,43.76 -2015-03-25 15:00:00,6464.408,0.0,41.34 -2015-03-25 16:00:00,6532.108,0.01,39.08 -2015-03-25 17:00:00,6522.933,0.0165,39.12 -2015-03-25 18:00:00,6420.925,0.0,40.17 -2015-03-25 19:00:00,6383.267,0.0,40.8 -2015-03-25 20:00:00,6257.675,0.0104,40.33 -2015-03-25 21:00:00,6009.583,0.0131,40.23 -2015-03-25 22:00:00,5661.408,0.0,40.87 -2015-03-25 23:00:00,5215.033,0.0,39.85 -2015-03-26 00:00:00,4808.142,0.0035,38.37 -2015-03-26 01:00:00,4554.017,0.0,39.07 -2015-03-26 02:00:00,4394.742,0.0,38.71 -2015-03-26 03:00:00,4322.1,0.0,38.51 -2015-03-26 04:00:00,4333.35,0.0,39.1 -2015-03-26 05:00:00,4541.25,0.0,39.42 -2015-03-26 06:00:00,5067.583,0.0,39.8 -2015-03-26 07:00:00,5655.264,0.0,41.86 -2015-03-26 08:00:00,6022.608,0.0,43.01 -2015-03-26 09:00:00,6278.192,0.0,43.0 -2015-03-26 10:00:00,6372.992,0.0,44.56 -2015-03-26 11:00:00,6413.233,0.0,45.14 -2015-03-26 12:00:00,6422.483,0.0065,45.8 -2015-03-26 13:00:00,6404.325,0.0,47.14 -2015-03-26 14:00:00,6387.267,0.0231,49.16 -2015-03-26 15:00:00,6359.108,0.0265,50.1 -2015-03-26 16:00:00,6383.233,0.0104,49.98 -2015-03-26 17:00:00,6365.95,0.0,54.1 -2015-03-26 18:00:00,6236.558,0.0,53.78 -2015-03-26 19:00:00,6203.775,0.0,55.96 -2015-03-26 20:00:00,6103.967,0.0,57.07 -2015-03-26 21:00:00,5879.1,0.0,54.25 -2015-03-26 22:00:00,5542.717,0.0624,50.62 -2015-03-26 23:00:00,5122.142,0.0335,46.03 -2015-03-27 00:00:00,4730.333,0.0327,44.58 -2015-03-27 01:00:00,4475.167,0.0065,43.91 -2015-03-27 02:00:00,4326.075,0.0,43.58 -2015-03-27 03:00:00,4248.192,0.0131,43.28 -2015-03-27 04:00:00,4273.6,0.0265,42.58 -2015-03-27 05:00:00,4481.9,0.0443,42.48 -2015-03-27 06:00:00,5037.858,0.0204,39.32 -2015-03-27 07:00:00,5603.608,0.0565,39.54 -2015-03-27 08:00:00,6009.358,0.0065,39.42 -2015-03-27 09:00:00,6307.975,0.0,39.42 -2015-03-27 10:00:00,6399.679,0.0,40.4 -2015-03-27 11:00:00,6415.692,0.0,41.26 -2015-03-27 12:00:00,6402.642,0.0,42.64 -2015-03-27 13:00:00,6388.158,0.0,43.65 -2015-03-27 14:00:00,6351.192,0.0,44.1 -2015-03-27 15:00:00,6371.325,0.0,44.52 -2015-03-27 16:00:00,6361.092,0.0,44.91 -2015-03-27 17:00:00,6287.633,0.0,45.1 -2015-03-27 18:00:00,6134.392,0.0,45.08 -2015-03-27 19:00:00,6082.975,0.0,44.47 -2015-03-27 20:00:00,6011.925,0.0,44.26 -2015-03-27 21:00:00,5794.575,0.0,43.42 -2015-03-27 22:00:00,5550.608,0.0,42.72 -2015-03-27 23:00:00,5191.025,0.0,42.08 -2015-03-28 00:00:00,4848.8,0.0,41.42 -2015-03-28 01:00:00,4609.433,0.0,40.21 -2015-03-28 02:00:00,4448.2,0.0,38.67 -2015-03-28 03:00:00,4356.583,0.0,37.67 -2015-03-28 04:00:00,4326.442,0.0,36.86 -2015-03-28 05:00:00,4399.442,0.0,36.56 -2015-03-28 06:00:00,4568.958,0.0,35.81 -2015-03-28 07:00:00,4811.958,0.0,35.17 -2015-03-28 08:00:00,5129.025,0.0,34.05 -2015-03-28 09:00:00,5405.85,0.0,33.84 -2015-03-28 10:00:00,5658.183,0.0,34.23 -2015-03-28 11:00:00,5764.3,0.0,34.39 -2015-03-28 12:00:00,5793.208,0.0,34.23 -2015-03-28 13:00:00,5753.567,0.0,34.39 -2015-03-28 14:00:00,5673.183,0.0,35.57 -2015-03-28 15:00:00,5607.483,0.0,36.79 -2015-03-28 16:00:00,5588.042,0.0,37.62 -2015-03-28 17:00:00,5596.35,0.0,37.97 -2015-03-28 18:00:00,5655.65,0.0,36.74 -2015-03-28 19:00:00,5795.242,0.0,35.18 -2015-03-28 20:00:00,5852.458,0.0,32.79 -2015-03-28 21:00:00,5769.908,0.0,31.67 -2015-03-28 22:00:00,5595.817,0.0,30.67 -2015-03-28 23:00:00,5354.142,0.0,29.56 -2015-03-29 00:00:00,5063.717,0.0,28.1 -2015-03-29 01:00:00,4824.058,0.0,27.23 -2015-03-29 02:00:00,4653.242,0.0,26.88 -2015-03-29 03:00:00,4556.792,0.0,27.0 -2015-03-29 04:00:00,4509.05,0.0,27.0 -2015-03-29 05:00:00,4534.558,0.0,26.65 -2015-03-29 06:00:00,4636.217,0.0,27.31 -2015-03-29 07:00:00,4771.15,0.0,26.35 -2015-03-29 08:00:00,4997.825,0.0,26.98 -2015-03-29 09:00:00,5235.25,0.0,28.36 -2015-03-29 10:00:00,5437.217,0.0,30.75 -2015-03-29 11:00:00,5519.517,0.0,33.42 -2015-03-29 12:00:00,5541.4,0.0,35.49 -2015-03-29 13:00:00,5508.05,0.0,37.71 -2015-03-29 14:00:00,5461.633,0.0,39.27 -2015-03-29 15:00:00,5422.65,0.0,41.41 -2015-03-29 16:00:00,5393.017,0.0,42.64 -2015-03-29 17:00:00,5410.517,0.0,43.86 -2015-03-29 18:00:00,5462.533,0.0,44.39 -2015-03-29 19:00:00,5631.392,0.0,44.74 -2015-03-29 20:00:00,5762.817,0.0,41.03 -2015-03-29 21:00:00,5662.908,0.0,39.62 -2015-03-29 22:00:00,5437.75,0.0,39.7 -2015-03-29 23:00:00,5091.817,0.0,39.55 -2015-03-30 00:00:00,4777.025,0.0,38.64 -2015-03-30 01:00:00,4558.708,0.0,38.3 -2015-03-30 02:00:00,4413.708,0.0,37.91 -2015-03-30 03:00:00,4360.083,0.0,37.84 -2015-03-30 04:00:00,4380.667,0.0,37.71 -2015-03-30 05:00:00,4600.658,0.0,37.35 -2015-03-30 06:00:00,5128.833,0.0,37.17 -2015-03-30 07:00:00,5740.45,0.0,34.49 -2015-03-30 08:00:00,6158.592,0.0,36.47 -2015-03-30 09:00:00,6402.975,0.0,37.68 -2015-03-30 10:00:00,6555.108,0.0,38.39 -2015-03-30 11:00:00,6585.925,0.0,38.92 -2015-03-30 12:00:00,6504.508,0.0,40.53 -2015-03-30 13:00:00,6428.958,0.0,44.37 -2015-03-30 14:00:00,6354.583,0.0,48.21 -2015-03-30 15:00:00,6345.067,0.0,51.21 -2015-03-30 16:00:00,6364.092,0.0,50.76 -2015-03-30 17:00:00,6346.442,0.0,50.2 -2015-03-30 18:00:00,6178.758,0.0,50.32 -2015-03-30 19:00:00,6159.55,0.0,50.32 -2015-03-30 20:00:00,6175.058,0.0,49.62 -2015-03-30 21:00:00,5954.55,0.0,49.22 -2015-03-30 22:00:00,5604.717,0.0,46.28 -2015-03-30 23:00:00,5168.725,0.0,44.49 -2015-03-31 00:00:00,4757.967,0.0,43.67 -2015-03-31 01:00:00,4505.175,0.0,43.15 -2015-03-31 02:00:00,4340.158,0.0,42.24 -2015-03-31 03:00:00,4268.117,0.0,41.69 -2015-03-31 04:00:00,4289.333,0.0,41.52 -2015-03-31 05:00:00,4518.708,0.0,41.03 -2015-03-31 06:00:00,5040.7,0.0,40.28 -2015-03-31 07:00:00,5612.122,0.0,39.18 -2015-03-31 08:00:00,5961.962,0.0,40.21 -2015-03-31 09:00:00,6243.725,0.0,40.56 -2015-03-31 10:00:00,6312.758,0.0,42.15 -2015-03-31 11:00:00,6341.242,0.0,43.62 -2015-03-31 12:00:00,6320.458,0.0,43.93 -2015-03-31 13:00:00,6380.125,0.0,44.55 -2015-03-31 14:00:00,6376.125,0.0035,40.93 -2015-03-31 15:00:00,6416.383,0.0165,38.69 -2015-03-31 16:00:00,6429.583,0.0465,37.42 -2015-03-31 17:00:00,6429.475,0.0035,37.62 -2015-03-31 18:00:00,6352.758,0.0,37.67 -2015-03-31 19:00:00,6348.292,0.0239,37.03 -2015-03-31 20:00:00,6255.175,0.0204,36.04 -2015-03-31 21:00:00,6032.2,0.0196,35.74 -2015-03-31 22:00:00,5670.758,0.0065,36.42 -2015-03-31 23:00:00,5245.992,0.0,36.91 -2015-04-01 00:00:00,4832.942,0.0,36.67 -2015-04-01 01:00:00,4571.425,0.0,36.49 -2015-04-01 02:00:00,4429.642,0.0,36.28 -2015-04-01 03:00:00,4374.867,0.0,35.42 -2015-04-01 04:00:00,4401.683,0.0,34.98 -2015-04-01 05:00:00,4628.308,0.0,34.17 -2015-04-01 06:00:00,5146.808,0.0,33.63 -2015-04-01 07:00:00,5700.15,0.0,33.49 -2015-04-01 08:00:00,6056.392,0.0,34.0 -2015-04-01 09:00:00,6295.367,0.0,35.66 -2015-04-01 10:00:00,6373.242,0.0,36.39 -2015-04-01 11:00:00,6374.65,0.0,38.42 -2015-04-01 12:00:00,6349.983,0.0,41.13 -2015-04-01 13:00:00,6324.1,0.0,42.89 -2015-04-01 14:00:00,6280.692,0.0,44.08 -2015-04-01 15:00:00,6252.95,0.0,45.98 -2015-04-01 16:00:00,6246.3,0.0,48.33 -2015-04-01 17:00:00,6210.842,0.0,49.64 -2015-04-01 18:00:00,6060.667,0.0,49.92 -2015-04-01 19:00:00,6059.267,0.0,49.18 -2015-04-01 20:00:00,6081.283,0.0,47.38 -2015-04-01 21:00:00,5905.308,0.0,46.16 -2015-04-01 22:00:00,5584.108,0.0,45.58 -2015-04-01 23:00:00,5135.758,0.0,44.04 -2015-04-02 00:00:00,4750.108,0.0,42.31 -2015-04-02 01:00:00,4473.75,0.0,41.77 -2015-04-02 02:00:00,4304.317,0.0,40.64 -2015-04-02 03:00:00,4245.625,0.0,40.64 -2015-04-02 04:00:00,4258.983,0.0,38.57 -2015-04-02 05:00:00,4494.267,0.0,38.95 -2015-04-02 06:00:00,5012.525,0.0,40.18 -2015-04-02 07:00:00,5558.758,0.0,39.88 -2015-04-02 08:00:00,5903.825,0.0,42.06 -2015-04-02 09:00:00,6131.792,0.0,45.81 -2015-04-02 10:00:00,6201.275,0.0,50.3 -2015-04-02 11:00:00,6221.267,0.0,52.99 -2015-04-02 12:00:00,6208.958,0.0,56.18 -2015-04-02 13:00:00,6190.175,0.0,58.23 -2015-04-02 14:00:00,6144.525,0.0,59.66 -2015-04-02 15:00:00,6137.0,0.0,59.44 -2015-04-02 16:00:00,6124.108,0.0,60.8 -2015-04-02 17:00:00,6092.217,0.0,60.17 -2015-04-02 18:00:00,5949.708,0.0,59.6 -2015-04-02 19:00:00,5930.142,0.0,56.5 -2015-04-02 20:00:00,5892.583,0.0,56.77 -2015-04-02 21:00:00,5720.55,0.0,55.58 -2015-04-02 22:00:00,5426.767,0.0,54.6 -2015-04-02 23:00:00,5022.417,0.0,54.21 -2015-04-03 00:00:00,4645.95,0.0,54.73 -2015-04-03 01:00:00,4367.008,0.0,55.57 -2015-04-03 02:00:00,4171.058,0.0,55.68 -2015-04-03 03:00:00,4090.033,0.0,57.43 -2015-04-03 04:00:00,4076.617,0.0,58.19 -2015-04-03 05:00:00,4233.258,0.0,58.39 -2015-04-03 06:00:00,4615.0,0.0,58.25 -2015-04-03 07:00:00,5088.858,0.0,58.12 -2015-04-03 08:00:00,5525.683,0.0,58.93 -2015-04-03 09:00:00,5827.717,0.0,59.76 -2015-04-03 10:00:00,5985.75,0.0,60.52 -2015-04-03 11:00:00,6063.75,0.0035,59.49 -2015-04-03 12:00:00,6068.808,0.0065,59.84 -2015-04-03 13:00:00,6067.55,0.0065,59.92 -2015-04-03 14:00:00,6022.633,0.0131,59.43 -2015-04-03 15:00:00,5999.887,0.0,60.31 -2015-04-03 16:00:00,5991.308,0.0,61.04 -2015-04-03 17:00:00,5990.067,0.0,61.65 -2015-04-03 18:00:00,5824.433,0.0,59.99 -2015-04-03 19:00:00,5778.533,0.0,59.21 -2015-04-03 20:00:00,5700.158,0.0,58.13 -2015-04-03 21:00:00,5517.583,0.0,57.67 -2015-04-03 22:00:00,5278.217,0.0,55.72 -2015-04-03 23:00:00,4966.075,0.0,55.33 -2015-04-04 00:00:00,4629.183,0.0,55.59 -2015-04-04 01:00:00,4383.125,0.0,54.6 -2015-04-04 02:00:00,4216.308,0.0,55.35 -2015-04-04 03:00:00,4112.208,0.0,54.87 -2015-04-04 04:00:00,4071.742,0.0,54.79 -2015-04-04 05:00:00,4101.667,0.0,55.95 -2015-04-04 06:00:00,4258.867,0.0,50.39 -2015-04-04 07:00:00,4444.725,0.0,48.18 -2015-04-04 08:00:00,4734.042,0.0,47.17 -2015-04-04 09:00:00,4972.333,0.0,48.05 -2015-04-04 10:00:00,5172.508,0.0,49.4 -2015-04-04 11:00:00,5262.183,0.0,49.96 -2015-04-04 12:00:00,5267.35,0.0,49.15 -2015-04-04 13:00:00,5239.042,0.0,49.65 -2015-04-04 14:00:00,5209.675,0.0,50.04 -2015-04-04 15:00:00,5169.325,0.0,50.37 -2015-04-04 16:00:00,5142.483,0.0,49.67 -2015-04-04 17:00:00,5137.7,0.0,49.77 -2015-04-04 18:00:00,5180.675,0.0,49.45 -2015-04-04 19:00:00,5282.042,0.0,48.54 -2015-04-04 20:00:00,5376.283,0.0,47.33 -2015-04-04 21:00:00,5304.025,0.0,47.03 -2015-04-04 22:00:00,5137.325,0.0,45.49 -2015-04-04 23:00:00,4888.867,0.0,44.1 -2015-04-05 00:00:00,4620.792,0.0,43.61 -2015-04-05 01:00:00,4375.617,0.0,43.5 -2015-04-05 02:00:00,4209.125,0.0,42.67 -2015-04-05 03:00:00,4090.275,0.0,42.1 -2015-04-05 04:00:00,4062.0,0.0,41.55 -2015-04-05 05:00:00,4102.892,0.0,42.22 -2015-04-05 06:00:00,4185.417,0.0,41.66 -2015-04-05 07:00:00,4315.608,0.0,40.71 -2015-04-05 08:00:00,4529.25,0.0,43.11 -2015-04-05 09:00:00,4725.5,0.0,44.69 -2015-04-05 10:00:00,4883.158,0.0,46.86 -2015-04-05 11:00:00,4958.067,0.0,49.89 -2015-04-05 12:00:00,4969.833,0.0,53.25 -2015-04-05 13:00:00,4968.933,0.0,56.25 -2015-04-05 14:00:00,4969.15,0.0,57.96 -2015-04-05 15:00:00,4973.892,0.0,59.19 -2015-04-05 16:00:00,4983.0,0.0,58.84 -2015-04-05 17:00:00,4994.683,0.0,59.0 -2015-04-05 18:00:00,5018.892,0.0,58.15 -2015-04-05 19:00:00,5156.467,0.0,57.39 -2015-04-05 20:00:00,5259.708,0.0,55.77 -2015-04-05 21:00:00,5218.158,0.0,52.1 -2015-04-05 22:00:00,5022.683,0.0,48.54 -2015-04-05 23:00:00,4734.008,0.0,47.54 -2015-04-06 00:00:00,4434.717,0.0,46.62 -2015-04-06 01:00:00,4219.508,0.0,45.29 -2015-04-06 02:00:00,4102.6,0.0,44.71 -2015-04-06 03:00:00,4027.667,0.0,44.22 -2015-04-06 04:00:00,4053.908,0.0,43.0 -2015-04-06 05:00:00,4275.492,0.0,42.36 -2015-04-06 06:00:00,4708.1,0.0,41.63 -2015-04-06 07:00:00,5198.492,0.0,41.02 -2015-04-06 08:00:00,5618.583,0.0,41.73 -2015-04-06 09:00:00,5889.358,0.0,43.42 -2015-04-06 10:00:00,5975.617,0.0,46.3 -2015-04-06 11:00:00,6028.067,0.0,48.26 -2015-04-06 12:00:00,6038.708,0.0,48.53 -2015-04-06 13:00:00,6044.367,0.0,52.21 -2015-04-06 14:00:00,6017.725,0.0,52.71 -2015-04-06 15:00:00,5992.067,0.0,54.53 -2015-04-06 16:00:00,6002.475,0.0,55.91 -2015-04-06 17:00:00,5983.6,0.0,56.23 -2015-04-06 18:00:00,5841.3,0.0,55.07 -2015-04-06 19:00:00,5820.017,0.0,52.24 -2015-04-06 20:00:00,5865.317,0.0,51.9 -2015-04-06 21:00:00,5652.25,0.0,51.85 -2015-04-06 22:00:00,5369.742,0.0,54.28 -2015-04-06 23:00:00,4964.742,0.0,58.15 -2015-04-07 00:00:00,4553.525,0.0,57.93 -2015-04-07 01:00:00,4286.608,0.0,56.65 -2015-04-07 02:00:00,4124.533,0.0,55.82 -2015-04-07 03:00:00,4037.817,0.0,53.31 -2015-04-07 04:00:00,4050.258,0.0,53.95 -2015-04-07 05:00:00,4234.717,0.0,53.77 -2015-04-07 06:00:00,4663.325,0.0,54.06 -2015-04-07 07:00:00,5183.883,0.0,54.14 -2015-04-07 08:00:00,5658.792,0.0065,52.69 -2015-04-07 09:00:00,5932.558,0.0,50.75 -2015-04-07 10:00:00,6027.542,0.0,50.44 -2015-04-07 11:00:00,6083.258,0.0,50.39 -2015-04-07 12:00:00,6120.414,0.0,50.77 -2015-04-07 13:00:00,6143.0,0.0035,50.1 -2015-04-07 14:00:00,6096.092,0.0035,49.34 -2015-04-07 15:00:00,6102.05,0.0,48.22 -2015-04-07 16:00:00,6126.9,0.0,48.17 -2015-04-07 17:00:00,6177.025,0.0,47.61 -2015-04-07 18:00:00,6092.817,0.0,46.88 -2015-04-07 19:00:00,6028.292,0.0492,45.86 -2015-04-07 20:00:00,5937.117,0.0065,45.06 -2015-04-07 21:00:00,5723.942,0.0065,44.25 -2015-04-07 22:00:00,5403.85,0.0,44.25 -2015-04-07 23:00:00,4991.708,0.0196,43.44 -2015-04-08 00:00:00,4606.325,0.0065,43.05 -2015-04-08 01:00:00,4348.617,0.0065,42.86 -2015-04-08 02:00:00,4190.942,0.0,42.51 -2015-04-08 03:00:00,4122.308,0.0,41.7 -2015-04-08 04:00:00,4134.808,0.0,41.51 -2015-04-08 05:00:00,4342.042,0.0,41.7 -2015-04-08 06:00:00,4797.408,0.0,41.04 -2015-04-08 07:00:00,5310.593,0.0,41.7 -2015-04-08 08:00:00,5775.95,0.0,42.25 -2015-04-08 09:00:00,6058.233,0.0,42.6 -2015-04-08 10:00:00,6202.175,0.0,42.6 -2015-04-08 11:00:00,6255.671,0.0,42.81 -2015-04-08 12:00:00,6286.383,0.0,42.62 -2015-04-08 13:00:00,6284.133,0.0,43.15 -2015-04-08 14:00:00,6262.658,0.0,43.3 -2015-04-08 15:00:00,6276.2,0.0,43.27 -2015-04-08 16:00:00,6288.717,0.0,44.01 -2015-04-08 17:00:00,6242.267,0.0,44.57 -2015-04-08 18:00:00,6131.067,0.0,44.74 -2015-04-08 19:00:00,6102.933,0.0,42.95 -2015-04-08 20:00:00,6038.1,0.0,42.12 -2015-04-08 21:00:00,5846.183,0.0,40.42 -2015-04-08 22:00:00,5543.225,0.0,37.98 -2015-04-08 23:00:00,5137.892,0.0,37.88 -2015-04-09 00:00:00,4752.558,0.0,37.65 -2015-04-09 01:00:00,4493.375,0.0,38.39 -2015-04-09 02:00:00,4345.033,0.0,38.05 -2015-04-09 03:00:00,4258.675,0.0,37.86 -2015-04-09 04:00:00,4276.517,0.0,37.39 -2015-04-09 05:00:00,4466.75,0.0,37.39 -2015-04-09 06:00:00,4905.783,0.0,37.2 -2015-04-09 07:00:00,5417.208,0.0,37.06 -2015-04-09 08:00:00,5883.842,0.0,37.67 -2015-04-09 09:00:00,6173.092,0.0,37.74 -2015-04-09 10:00:00,6309.425,0.0,37.58 -2015-04-09 11:00:00,6357.483,0.0,38.74 -2015-04-09 12:00:00,6387.075,0.0,39.32 -2015-04-09 13:00:00,6391.275,0.0,39.65 -2015-04-09 14:00:00,6372.075,0.0,40.12 -2015-04-09 15:00:00,6358.258,0.0,40.8 -2015-04-09 16:00:00,6346.95,0.0,41.61 -2015-04-09 17:00:00,6323.008,0.0,42.07 -2015-04-09 18:00:00,6221.408,0.0,43.03 -2015-04-09 19:00:00,6171.275,0.0,42.21 -2015-04-09 20:00:00,6073.35,0.0,42.23 -2015-04-09 21:00:00,5868.617,0.0,41.58 -2015-04-09 22:00:00,5556.025,0.0,40.36 -2015-04-09 23:00:00,5146.3,0.0,40.36 -2015-04-10 00:00:00,4757.875,0.0035,40.04 -2015-04-10 01:00:00,4504.417,0.01,40.56 -2015-04-10 02:00:00,4353.808,0.0065,40.54 -2015-04-10 03:00:00,4262.508,0.0,40.19 -2015-04-10 04:00:00,4265.167,0.0,39.83 -2015-04-10 05:00:00,4467.017,0.0723,40.19 -2015-04-10 06:00:00,4899.7,0.0169,39.38 -2015-04-10 07:00:00,5390.85,0.0653,39.76 -2015-04-10 08:00:00,5814.217,0.0,40.02 -2015-04-10 09:00:00,6074.883,0.0,40.54 -2015-04-10 10:00:00,6205.667,0.0,40.87 -2015-04-10 11:00:00,6271.257,0.0,41.81 -2015-04-10 12:00:00,6270.992,0.0,43.75 -2015-04-10 13:00:00,6239.717,0.0,43.84 -2015-04-10 14:00:00,6198.4,0.0,44.89 -2015-04-10 15:00:00,6173.883,0.0,48.15 -2015-04-10 16:00:00,6162.592,0.0,51.04 -2015-04-10 17:00:00,6147.967,0.0,52.53 -2015-04-10 18:00:00,5984.867,0.0,53.68 -2015-04-10 19:00:00,5853.5,0.0,55.64 -2015-04-10 20:00:00,5826.7,0.0,56.13 -2015-04-10 21:00:00,5654.308,0.0,55.6 -2015-04-10 22:00:00,5389.975,0.0,55.19 -2015-04-10 23:00:00,5062.158,0.0,53.99 -2015-04-11 00:00:00,4709.425,0.0,54.94 -2015-04-11 01:00:00,4444.267,0.0,55.08 -2015-04-11 02:00:00,4256.95,0.0,54.41 -2015-04-11 03:00:00,4144.0,0.0,54.24 -2015-04-11 04:00:00,4104.0,0.0,53.85 -2015-04-11 05:00:00,4152.967,0.0,52.63 -2015-04-11 06:00:00,4274.192,0.0,51.44 -2015-04-11 07:00:00,4417.242,0.0,52.6 -2015-04-11 08:00:00,4699.208,0.0,54.42 -2015-04-11 09:00:00,4921.975,0.0,54.26 -2015-04-11 10:00:00,5141.683,0.0,54.13 -2015-04-11 11:00:00,5235.667,0.0,54.31 -2015-04-11 12:00:00,5252.842,0.0,54.35 -2015-04-11 13:00:00,5225.283,0.0,54.11 -2015-04-11 14:00:00,5185.1,0.0,54.4 -2015-04-11 15:00:00,5152.85,0.0,54.68 -2015-04-11 16:00:00,5121.1,0.0,54.52 -2015-04-11 17:00:00,5117.1,0.0,54.33 -2015-04-11 18:00:00,5152.033,0.0,53.79 -2015-04-11 19:00:00,5238.725,0.0,52.72 -2015-04-11 20:00:00,5375.917,0.0,50.72 -2015-04-11 21:00:00,5288.533,0.0,48.97 -2015-04-11 22:00:00,5130.583,0.0,47.54 -2015-04-11 23:00:00,4884.317,0.0,46.35 -2015-04-12 00:00:00,4607.975,0.0,45.49 -2015-04-12 01:00:00,4336.933,0.0,44.99 -2015-04-12 02:00:00,4179.058,0.0,44.3 -2015-04-12 03:00:00,4075.3,0.0,44.3 -2015-04-12 04:00:00,4036.8,0.0,43.85 -2015-04-12 05:00:00,4063.142,0.0,42.72 -2015-04-12 06:00:00,4127.992,0.0,41.91 -2015-04-12 07:00:00,4271.208,0.0,42.94 -2015-04-12 08:00:00,4498.475,0.0,45.2 -2015-04-12 09:00:00,4724.917,0.0,47.13 -2015-04-12 10:00:00,4918.0,0.0,50.41 -2015-04-12 11:00:00,5030.417,0.0,52.44 -2015-04-12 12:00:00,5071.508,0.0,56.34 -2015-04-12 13:00:00,5064.408,0.0,57.42 -2015-04-12 14:00:00,5061.258,0.0,59.17 -2015-04-12 15:00:00,5051.7,0.0,61.2 -2015-04-12 16:00:00,5054.858,0.0,59.76 -2015-04-12 17:00:00,5073.967,0.0,57.18 -2015-04-12 18:00:00,5120.008,0.0,55.8 -2015-04-12 19:00:00,5229.933,0.0,54.46 -2015-04-12 20:00:00,5400.408,0.0,52.34 -2015-04-12 21:00:00,5310.408,0.0,51.23 -2015-04-12 22:00:00,5082.917,0.0,50.58 -2015-04-12 23:00:00,4766.517,0.0,51.19 -2015-04-13 00:00:00,4427.55,0.0,50.65 -2015-04-13 01:00:00,4201.292,0.0,51.07 -2015-04-13 02:00:00,4063.775,0.0,50.82 -2015-04-13 03:00:00,3992.942,0.0,49.96 -2015-04-13 04:00:00,3998.592,0.0,48.39 -2015-04-13 05:00:00,4232.6,0.0,47.65 -2015-04-13 06:00:00,4736.167,0.0,46.92 -2015-04-13 07:00:00,5301.617,0.0,47.58 -2015-04-13 08:00:00,5700.917,0.0,48.67 -2015-04-13 09:00:00,5941.0,0.0,51.27 -2015-04-13 10:00:00,6002.842,0.0,54.31 -2015-04-13 11:00:00,6069.383,0.0,58.22 -2015-04-13 12:00:00,6077.475,0.0,59.12 -2015-04-13 13:00:00,6081.892,0.0,60.02 -2015-04-13 14:00:00,6072.633,0.0,60.86 -2015-04-13 15:00:00,6095.85,0.0,62.04 -2015-04-13 16:00:00,6132.514,0.0,62.82 -2015-04-13 17:00:00,6095.558,0.0,62.88 -2015-04-13 18:00:00,5909.075,0.0,62.86 -2015-04-13 19:00:00,5863.383,0.0,62.51 -2015-04-13 20:00:00,5891.525,0.0,61.07 -2015-04-13 21:00:00,5686.367,0.0,60.92 -2015-04-13 22:00:00,5353.917,0.0,58.5 -2015-04-13 23:00:00,4906.708,0.0,57.67 -2015-04-14 00:00:00,4476.725,0.0,57.6 -2015-04-14 01:00:00,4228.775,0.0,57.23 -2015-04-14 02:00:00,4069.55,0.0,56.44 -2015-04-14 03:00:00,3992.158,0.0,55.99 -2015-04-14 04:00:00,4001.75,0.0,57.6 -2015-04-14 05:00:00,4222.542,0.0,58.04 -2015-04-14 06:00:00,4754.4,0.0,60.35 -2015-04-14 07:00:00,5364.533,0.0,60.26 -2015-04-14 08:00:00,5829.358,0.0,57.8 -2015-04-14 09:00:00,6065.617,0.0,55.09 -2015-04-14 10:00:00,6140.992,0.0,54.58 -2015-04-14 11:00:00,6151.931,0.0,54.58 -2015-04-14 12:00:00,6137.583,0.0,55.63 -2015-04-14 13:00:00,6136.525,0.0,58.47 -2015-04-14 14:00:00,6124.65,0.0,60.33 -2015-04-14 15:00:00,6142.142,0.0,61.06 -2015-04-14 16:00:00,6168.717,0.0,62.3 -2015-04-14 17:00:00,6143.517,0.0,62.13 -2015-04-14 18:00:00,6022.467,0.0,61.69 -2015-04-14 19:00:00,5966.775,0.0,61.23 -2015-04-14 20:00:00,5900.267,0.0,59.9 -2015-04-14 21:00:00,5661.2,0.0,58.33 -2015-04-14 22:00:00,5314.342,0.0,56.78 -2015-04-14 23:00:00,4884.308,0.0,55.84 -2015-04-15 00:00:00,4457.817,0.0,56.96 -2015-04-15 01:00:00,4196.275,0.0,53.01 -2015-04-15 02:00:00,4056.142,0.0,53.32 -2015-04-15 03:00:00,3973.167,0.0,53.0 -2015-04-15 04:00:00,3976.55,0.0,53.79 -2015-04-15 05:00:00,4188.4,0.0,52.63 -2015-04-15 06:00:00,4680.867,0.0,52.55 -2015-04-15 07:00:00,5252.075,0.0,51.53 -2015-04-15 08:00:00,5637.467,0.0,53.58 -2015-04-15 09:00:00,5878.467,0.0,55.09 -2015-04-15 10:00:00,5980.225,0.0,56.82 -2015-04-15 11:00:00,6030.184,0.0,59.21 -2015-04-15 12:00:00,6056.938,0.0,61.58 -2015-04-15 13:00:00,6075.167,0.0,62.82 -2015-04-15 14:00:00,6064.907,0.0,64.75 -2015-04-15 15:00:00,6109.508,0.0,65.82 -2015-04-15 16:00:00,6147.05,0.0,67.36 -2015-04-15 17:00:00,6128.492,0.0,69.33 -2015-04-15 18:00:00,5929.758,0.0,67.6 -2015-04-15 19:00:00,5853.958,0.0,66.11 -2015-04-15 20:00:00,5864.017,0.0,64.63 -2015-04-15 21:00:00,5652.95,0.0,63.77 -2015-04-15 22:00:00,5323.567,0.0,61.23 -2015-04-15 23:00:00,4884.608,0.0,58.89 -2015-04-16 00:00:00,4461.008,0.0,57.81 -2015-04-16 01:00:00,4186.667,0.0,56.86 -2015-04-16 02:00:00,4025.983,0.0,54.61 -2015-04-16 03:00:00,3959.208,0.0,52.48 -2015-04-16 04:00:00,3969.975,0.0,51.1 -2015-04-16 05:00:00,4169.517,0.0,50.39 -2015-04-16 06:00:00,4648.867,0.0,49.35 -2015-04-16 07:00:00,5213.742,0.0,49.16 -2015-04-16 08:00:00,5603.758,0.0,52.07 -2015-04-16 09:00:00,5868.2,0.0,53.18 -2015-04-16 10:00:00,5960.433,0.0,54.93 -2015-04-16 11:00:00,6000.12,0.0,55.35 -2015-04-16 12:00:00,6003.333,0.0,56.18 -2015-04-16 13:00:00,6004.458,0.0,57.38 -2015-04-16 14:00:00,5994.642,0.0,58.38 -2015-04-16 15:00:00,6006.142,0.0,57.86 -2015-04-16 16:00:00,6024.025,0.0,57.69 -2015-04-16 17:00:00,5990.892,0.0,57.86 -2015-04-16 18:00:00,5838.042,0.0,57.34 -2015-04-16 19:00:00,5786.525,0.0,54.65 -2015-04-16 20:00:00,5787.042,0.0,52.08 -2015-04-16 21:00:00,5602.325,0.0,51.61 -2015-04-16 22:00:00,5275.092,0.0,51.74 -2015-04-16 23:00:00,4842.192,0.0,53.33 -2015-04-17 00:00:00,4447.567,0.0,54.26 -2015-04-17 01:00:00,4188.933,0.0,54.65 -2015-04-17 02:00:00,4053.733,0.0,54.7 -2015-04-17 03:00:00,3973.579,0.0,55.35 -2015-04-17 04:00:00,3969.133,0.0035,55.41 -2015-04-17 05:00:00,4153.217,0.0269,54.91 -2015-04-17 06:00:00,4673.142,0.0531,53.76 -2015-04-17 07:00:00,5277.217,0.0,54.53 -2015-04-17 08:00:00,5702.692,0.0,54.18 -2015-04-17 09:00:00,5979.442,0.0,55.53 -2015-04-17 10:00:00,6128.136,0.0,56.61 -2015-04-17 11:00:00,6179.425,0.0,58.38 -2015-04-17 12:00:00,6190.643,0.0,59.67 -2015-04-17 13:00:00,6193.9,0.0,61.27 -2015-04-17 14:00:00,6160.242,0.0,62.29 -2015-04-17 15:00:00,6183.575,0.0,64.62 -2015-04-17 16:00:00,6207.3,0.0,66.91 -2015-04-17 17:00:00,6170.783,0.0,68.26 -2015-04-17 18:00:00,5983.542,0.0,68.08 -2015-04-17 19:00:00,5910.042,0.0,68.96 -2015-04-17 20:00:00,5864.467,0.0,66.96 -2015-04-17 21:00:00,5659.325,0.0,65.46 -2015-04-17 22:00:00,5397.433,0.0,63.35 -2015-04-17 23:00:00,5021.192,0.0,62.93 -2015-04-18 00:00:00,4621.342,0.0,63.55 -2015-04-18 01:00:00,4342.633,0.0,62.64 -2015-04-18 02:00:00,4152.942,0.0,60.31 -2015-04-18 03:00:00,4049.883,0.0,59.01 -2015-04-18 04:00:00,4000.3,0.0,57.63 -2015-04-18 05:00:00,4019.633,0.0,55.84 -2015-04-18 06:00:00,4124.175,0.0,56.23 -2015-04-18 07:00:00,4387.867,0.0,54.38 -2015-04-18 08:00:00,4736.317,0.0,58.27 -2015-04-18 09:00:00,5015.175,0.0,61.47 -2015-04-18 10:00:00,5242.842,0.0,65.34 -2015-04-18 11:00:00,5351.467,0.0,66.96 -2015-04-18 12:00:00,5409.833,0.0,69.88 -2015-04-18 13:00:00,5410.783,0.0,71.89 -2015-04-18 14:00:00,5386.692,0.0,70.44 -2015-04-18 15:00:00,5363.157,0.0,72.9 -2015-04-18 16:00:00,5333.092,0.0,70.99 -2015-04-18 17:00:00,5321.067,0.0,72.96 -2015-04-18 18:00:00,5329.225,0.0,73.66 -2015-04-18 19:00:00,5355.967,0.0,73.01 -2015-04-18 20:00:00,5459.658,0.0,71.28 -2015-04-18 21:00:00,5368.808,0.0,71.05 -2015-04-18 22:00:00,5151.0,0.0,68.53 -2015-04-18 23:00:00,4849.583,0.0,65.21 -2015-04-19 00:00:00,4540.017,0.0,63.23 -2015-04-19 01:00:00,4277.517,0.0,60.91 -2015-04-19 02:00:00,4065.05,0.0,59.95 -2015-04-19 03:00:00,3925.975,0.0,56.83 -2015-04-19 04:00:00,3851.633,0.0,54.8 -2015-04-19 05:00:00,3859.192,0.0,54.04 -2015-04-19 06:00:00,3904.442,0.0,51.82 -2015-04-19 07:00:00,4073.608,0.0,51.81 -2015-04-19 08:00:00,4320.367,0.0,52.57 -2015-04-19 09:00:00,4577.95,0.0,53.65 -2015-04-19 10:00:00,4815.233,0.0,54.51 -2015-04-19 11:00:00,4950.842,0.0,55.19 -2015-04-19 12:00:00,5006.342,0.0,54.62 -2015-04-19 13:00:00,5014.575,0.0,55.83 -2015-04-19 14:00:00,4998.45,0.0,55.29 -2015-04-19 15:00:00,4989.183,0.0,54.93 -2015-04-19 16:00:00,4996.617,0.0,54.32 -2015-04-19 17:00:00,5007.642,0.0,53.24 -2015-04-19 18:00:00,5068.9,0.0,51.65 -2015-04-19 19:00:00,5198.625,0.0,50.15 -2015-04-19 20:00:00,5331.992,0.0,49.15 -2015-04-19 21:00:00,5232.142,0.0,48.61 -2015-04-19 22:00:00,4996.333,0.0,48.15 -2015-04-19 23:00:00,4648.75,0.0,47.47 -2015-04-20 00:00:00,4325.242,0.0,47.28 -2015-04-20 01:00:00,4095.525,0.0,46.19 -2015-04-20 02:00:00,3942.375,0.0,46.2 -2015-04-20 03:00:00,3891.983,0.0,47.37 -2015-04-20 04:00:00,3900.825,0.0,47.29 -2015-04-20 05:00:00,4128.608,0.0,47.22 -2015-04-20 06:00:00,4645.742,0.0,47.28 -2015-04-20 07:00:00,5300.283,0.0035,50.27 -2015-04-20 08:00:00,5730.275,0.0069,50.73 -2015-04-20 09:00:00,6047.5,0.0728,51.04 -2015-04-20 10:00:00,6221.958,0.2135,50.06 -2015-04-20 11:00:00,6324.72,0.2371,54.67 -2015-04-20 12:00:00,6359.436,0.2255,55.29 -2015-04-20 13:00:00,6340.817,0.0496,56.25 -2015-04-20 14:00:00,6285.758,0.0361,56.68 -2015-04-20 15:00:00,6260.8,0.01,56.22 -2015-04-20 16:00:00,6269.108,0.0,54.1 -2015-04-20 17:00:00,6231.75,0.0,53.74 -2015-04-20 18:00:00,6065.517,0.0,53.16 -2015-04-20 19:00:00,5988.883,0.0,53.38 -2015-04-20 20:00:00,5943.858,0.0,52.44 -2015-04-20 21:00:00,5700.967,0.0,53.1 -2015-04-20 22:00:00,5359.833,0.0,52.55 -2015-04-20 23:00:00,4886.017,0.0,52.35 -2015-04-21 00:00:00,4484.467,0.0,52.24 -2015-04-21 01:00:00,4231.883,0.0627,52.62 -2015-04-21 02:00:00,4093.975,0.0,52.81 -2015-04-21 03:00:00,3989.108,0.0135,53.65 -2015-04-21 04:00:00,3996.25,0.0377,54.94 -2015-04-21 05:00:00,4212.283,0.0296,53.81 -2015-04-21 06:00:00,4709.85,0.0231,54.2 -2015-04-21 07:00:00,5321.258,0.0069,54.57 -2015-04-21 08:00:00,5753.425,0.0,55.43 -2015-04-21 09:00:00,6027.067,0.0457,54.95 -2015-04-21 10:00:00,6092.375,0.0392,56.76 -2015-04-21 11:00:00,6121.958,0.0,57.9 -2015-04-21 12:00:00,6136.292,0.0,60.26 -2015-04-21 13:00:00,6132.033,0.0,61.06 -2015-04-21 14:00:00,6120.142,0.0,62.36 -2015-04-21 15:00:00,6125.5,0.0,62.9 -2015-04-21 16:00:00,6139.342,0.0,63.63 -2015-04-21 17:00:00,6105.15,0.0,63.61 -2015-04-21 18:00:00,5904.983,0.0,63.4 -2015-04-21 19:00:00,5777.575,0.0,62.16 -2015-04-21 20:00:00,5828.417,0.0,60.8 -2015-04-21 21:00:00,5647.192,0.0,60.06 -2015-04-21 22:00:00,5311.575,0.0,57.84 -2015-04-21 23:00:00,4865.625,0.0,57.64 -2015-04-22 00:00:00,4452.717,0.0,55.62 -2015-04-22 01:00:00,4198.792,0.0,54.53 -2015-04-22 02:00:00,4020.2,0.0,53.87 -2015-04-22 03:00:00,3946.117,0.0,52.82 -2015-04-22 04:00:00,3952.225,0.0,50.51 -2015-04-22 05:00:00,4153.05,0.0,50.61 -2015-04-22 06:00:00,4631.179,0.0,51.6 -2015-04-22 07:00:00,5234.383,0.0,51.45 -2015-04-22 08:00:00,5657.217,0.0,54.15 -2015-04-22 09:00:00,5912.883,0.0,57.3 -2015-04-22 10:00:00,6026.683,0.0,60.08 -2015-04-22 11:00:00,6086.592,0.0,60.91 -2015-04-22 12:00:00,6120.825,0.0,63.23 -2015-04-22 13:00:00,6157.983,0.0,64.23 -2015-04-22 14:00:00,6153.892,0.0,63.17 -2015-04-22 15:00:00,6204.083,0.0,60.83 -2015-04-22 16:00:00,6273.5,0.0392,56.28 -2015-04-22 17:00:00,6223.742,0.0196,56.2 -2015-04-22 18:00:00,6073.642,0.0065,55.34 -2015-04-22 19:00:00,5940.142,0.0131,54.55 -2015-04-22 20:00:00,5892.208,0.0,53.48 -2015-04-22 21:00:00,5687.025,0.0,52.95 -2015-04-22 22:00:00,5331.333,0.0,52.96 -2015-04-22 23:00:00,4874.458,0.0,51.96 -2015-04-23 00:00:00,4454.708,0.0,49.66 -2015-04-23 01:00:00,4178.733,0.0,47.47 -2015-04-23 02:00:00,4015.383,0.0,43.42 -2015-04-23 03:00:00,3956.717,0.0,42.63 -2015-04-23 04:00:00,3972.175,0.0,42.3 -2015-04-23 05:00:00,4183.817,0.0,41.98 -2015-04-23 06:00:00,4678.917,0.0,41.63 -2015-04-23 07:00:00,5263.492,0.0,41.49 -2015-04-23 08:00:00,5666.875,0.0,42.54 -2015-04-23 09:00:00,5913.3,0.0,43.64 -2015-04-23 10:00:00,6031.767,0.0,45.03 -2015-04-23 11:00:00,6068.692,0.0,45.66 -2015-04-23 12:00:00,6085.083,0.0,46.89 -2015-04-23 13:00:00,6086.229,0.0,46.6 -2015-04-23 14:00:00,6077.0,0.0,48.28 -2015-04-23 15:00:00,6078.1,0.0,48.81 -2015-04-23 16:00:00,6102.908,0.0,47.98 -2015-04-23 17:00:00,6120.1,0.0,46.98 -2015-04-23 18:00:00,5996.033,0.0,46.22 -2015-04-23 19:00:00,5919.233,0.0,45.71 -2015-04-23 20:00:00,5908.967,0.0,44.56 -2015-04-23 21:00:00,5747.842,0.0,44.17 -2015-04-23 22:00:00,5410.383,0.0,43.37 -2015-04-23 23:00:00,4998.075,0.0,42.51 -2015-04-24 00:00:00,4549.658,0.0,41.63 -2015-04-24 01:00:00,4351.375,0.0,41.3 -2015-04-24 02:00:00,4191.9,0.0,40.42 -2015-04-24 03:00:00,4128.733,0.0,40.3 -2015-04-24 04:00:00,4139.7,0.0,39.49 -2015-04-24 05:00:00,4357.733,0.0,39.17 -2015-04-24 06:00:00,4833.742,0.0,39.05 -2015-04-24 07:00:00,5450.417,0.0,39.17 -2015-04-24 08:00:00,5890.75,0.0,38.49 -2015-04-24 09:00:00,6097.767,0.0,39.0 -2015-04-24 10:00:00,6172.467,0.0,41.42 -2015-04-24 11:00:00,6218.667,0.0,41.98 -2015-04-24 12:00:00,6189.65,0.0,42.6 -2015-04-24 13:00:00,6165.142,0.0,44.15 -2015-04-24 14:00:00,6100.833,0.0,46.3 -2015-04-24 15:00:00,6054.833,0.0,48.65 -2015-04-24 16:00:00,6039.408,0.0,49.16 -2015-04-24 17:00:00,5986.167,0.0,48.79 -2015-04-24 18:00:00,5853.508,0.0,47.6 -2015-04-24 19:00:00,5804.05,0.0,45.74 -2015-04-24 20:00:00,5840.033,0.0,43.67 -2015-04-24 21:00:00,5693.567,0.0,42.2 -2015-04-24 22:00:00,5446.75,0.0,41.17 -2015-04-24 23:00:00,5089.558,0.0,40.49 -2015-04-25 00:00:00,4713.992,0.0,39.63 -2015-04-25 01:00:00,4446.067,0.0,39.28 -2015-04-25 02:00:00,4275.017,0.0,38.63 -2015-04-25 03:00:00,4187.317,0.0,38.44 -2015-04-25 04:00:00,4147.208,0.0,38.79 -2015-04-25 05:00:00,4198.492,0.0,38.12 -2015-04-25 06:00:00,4304.042,0.0,38.12 -2015-04-25 07:00:00,4549.775,0.0,38.63 -2015-04-25 08:00:00,4830.583,0.0,39.88 -2015-04-25 09:00:00,5077.975,0.0,41.98 -2015-04-25 10:00:00,5240.933,0.0,44.96 -2015-04-25 11:00:00,5303.75,0.0,47.03 -2015-04-25 12:00:00,5302.625,0.0,49.01 -2015-04-25 13:00:00,5256.575,0.0,51.35 -2015-04-25 14:00:00,5190.067,0.0,53.81 -2015-04-25 15:00:00,5146.533,0.0,55.42 -2015-04-25 16:00:00,5118.983,0.0,57.29 -2015-04-25 17:00:00,5110.45,0.0,57.56 -2015-04-25 18:00:00,5130.3,0.0,58.28 -2015-04-25 19:00:00,5169.067,0.0,55.65 -2015-04-25 20:00:00,5307.5,0.0,54.11 -2015-04-25 21:00:00,5249.708,0.0,52.89 -2015-04-25 22:00:00,5087.025,0.0,51.79 -2015-04-25 23:00:00,4834.833,0.0,50.39 -2015-04-26 00:00:00,4529.025,0.0,50.38 -2015-04-26 01:00:00,4295.375,0.0,49.64 -2015-04-26 02:00:00,4119.867,0.0,49.18 -2015-04-26 03:00:00,4023.275,0.0,47.57 -2015-04-26 04:00:00,3984.267,0.0,46.82 -2015-04-26 05:00:00,4007.033,0.0,46.33 -2015-04-26 06:00:00,4059.583,0.0,45.45 -2015-04-26 07:00:00,4223.775,0.0,46.01 -2015-04-26 08:00:00,4466.517,0.0,48.29 -2015-04-26 09:00:00,4698.508,0.0,50.32 -2015-04-26 10:00:00,4890.875,0.0,51.71 -2015-04-26 11:00:00,4998.275,0.0,53.39 -2015-04-26 12:00:00,5046.8,0.0,54.84 -2015-04-26 13:00:00,5064.608,0.0,55.96 -2015-04-26 14:00:00,5056.067,0.0,57.42 -2015-04-26 15:00:00,5049.3,0.0,57.65 -2015-04-26 16:00:00,5049.508,0.0,57.42 -2015-04-26 17:00:00,5091.125,0.0,57.17 -2015-04-26 18:00:00,5161.008,0.0,57.58 -2015-04-26 19:00:00,5219.217,0.0,56.38 -2015-04-26 20:00:00,5370.217,0.0,56.77 -2015-04-26 21:00:00,5303.083,0.0,55.49 -2015-04-26 22:00:00,5072.183,0.0,54.15 -2015-04-26 23:00:00,4733.375,0.0,52.49 -2015-04-27 00:00:00,4387.975,0.0,51.3 -2015-04-27 01:00:00,4167.033,0.0,50.49 -2015-04-27 02:00:00,4036.25,0.0,49.98 -2015-04-27 03:00:00,3968.092,0.0,49.56 -2015-04-27 04:00:00,3995.575,0.0,48.81 -2015-04-27 05:00:00,4207.833,0.0,48.47 -2015-04-27 06:00:00,4674.45,0.0,48.35 -2015-04-27 07:00:00,5249.825,0.0,48.67 -2015-04-27 08:00:00,5689.333,0.0,48.86 -2015-04-27 09:00:00,5905.736,0.0,50.0 -2015-04-27 10:00:00,5991.133,0.0,52.66 -2015-04-27 11:00:00,6046.717,0.0,55.42 -2015-04-27 12:00:00,6073.817,0.0,56.61 -2015-04-27 13:00:00,6068.067,0.0,56.99 -2015-04-27 14:00:00,6050.167,0.0,57.1 -2015-04-27 15:00:00,6037.758,0.0,57.11 -2015-04-27 16:00:00,6048.3,0.0,57.99 -2015-04-27 17:00:00,6021.45,0.0,58.82 -2015-04-27 18:00:00,5863.708,0.0,58.45 -2015-04-27 19:00:00,5798.458,0.0,57.4 -2015-04-27 20:00:00,5816.767,0.0,56.86 -2015-04-27 21:00:00,5660.525,0.0,55.86 -2015-04-27 22:00:00,5304.492,0.0,54.18 -2015-04-27 23:00:00,4867.55,0.0,53.67 -2015-04-28 00:00:00,4439.4,0.0,52.67 -2015-04-28 01:00:00,4185.233,0.0,51.67 -2015-04-28 02:00:00,4030.833,0.0,50.86 -2015-04-28 03:00:00,3956.45,0.0,51.32 -2015-04-28 04:00:00,3988.592,0.0,50.67 -2015-04-28 05:00:00,4196.442,0.0,50.67 -2015-04-28 06:00:00,4677.15,0.0,49.98 -2015-04-28 07:00:00,5253.475,0.0,50.35 -2015-04-28 08:00:00,5645.142,0.0,52.49 -2015-04-28 09:00:00,5909.842,0.0,54.51 -2015-04-28 10:00:00,6002.575,0.0,55.81 -2015-04-28 11:00:00,6055.133,0.0,57.35 -2015-04-28 12:00:00,6090.442,0.0,59.57 -2015-04-28 13:00:00,6099.7,0.0,61.28 -2015-04-28 14:00:00,6110.875,0.0,65.04 -2015-04-28 15:00:00,6139.5,0.0,65.39 -2015-04-28 16:00:00,6183.058,0.0,67.06 -2015-04-28 17:00:00,6142.517,0.0,67.71 -2015-04-28 18:00:00,5939.167,0.0,67.52 -2015-04-28 19:00:00,5792.15,0.0,66.82 -2015-04-28 20:00:00,5811.725,0.0,65.57 -2015-04-28 21:00:00,5649.842,0.0,64.01 -2015-04-28 22:00:00,5306.608,0.0,62.71 -2015-04-28 23:00:00,4864.383,0.0,61.4 -2015-04-29 00:00:00,4433.917,0.0,59.39 -2015-04-29 01:00:00,4173.692,0.0,58.2 -2015-04-29 02:00:00,4014.925,0.0,57.67 -2015-04-29 03:00:00,3939.908,0.0,55.76 -2015-04-29 04:00:00,3950.608,0.0,56.35 -2015-04-29 05:00:00,4161.0,0.0,55.69 -2015-04-29 06:00:00,4603.942,0.0,55.55 -2015-04-29 07:00:00,5217.075,0.0,55.48 -2015-04-29 08:00:00,5657.117,0.0,57.91 -2015-04-29 09:00:00,5954.892,0.0,59.74 -2015-04-29 10:00:00,6118.417,0.0,62.49 -2015-04-29 11:00:00,6202.325,0.0,65.65 -2015-04-29 12:00:00,6252.183,0.0,67.83 -2015-04-29 13:00:00,6289.125,0.0,69.47 -2015-04-29 14:00:00,6308.883,0.0,71.01 -2015-04-29 15:00:00,6353.05,0.0,72.12 -2015-04-29 16:00:00,6409.033,0.0,73.22 -2015-04-29 17:00:00,6382.058,0.0,73.59 -2015-04-29 18:00:00,6106.2,0.0,70.05 -2015-04-29 19:00:00,5882.892,0.0,62.89 -2015-04-29 20:00:00,5826.383,0.0,54.0 -2015-04-29 21:00:00,5638.075,0.0,52.19 -2015-04-29 22:00:00,5287.75,0.0,52.14 -2015-04-29 23:00:00,4843.133,0.0,50.75 -2015-04-30 00:00:00,4438.283,0.0,49.68 -2015-04-30 01:00:00,4185.558,0.0,48.69 -2015-04-30 02:00:00,4021.208,0.0,48.37 -2015-04-30 03:00:00,3897.392,0.0,48.18 -2015-04-30 04:00:00,3909.392,0.0,48.18 -2015-04-30 05:00:00,4109.908,0.0,47.38 -2015-04-30 06:00:00,4617.958,0.0,47.38 -2015-04-30 07:00:00,5214.092,0.0,48.27 -2015-04-30 08:00:00,5646.083,0.0,50.47 -2015-04-30 09:00:00,5897.492,0.0,51.68 -2015-04-30 10:00:00,6019.608,0.0,54.07 -2015-04-30 11:00:00,6055.508,0.0,55.53 -2015-04-30 12:00:00,6083.717,0.0,57.52 -2015-04-30 13:00:00,6103.167,0.0,58.53 -2015-04-30 14:00:00,6105.283,0.0,59.16 -2015-04-30 15:00:00,6117.117,0.0,60.26 -2015-04-30 16:00:00,6137.258,0.0,59.75 -2015-04-30 17:00:00,6093.8,0.0,60.47 -2015-04-30 18:00:00,5868.9,0.0,58.95 -2015-04-30 19:00:00,5750.667,0.0,56.9 -2015-04-30 20:00:00,5778.4,0.0,54.69 -2015-04-30 21:00:00,5614.233,0.0,52.78 -2015-04-30 22:00:00,5268.658,0.0,51.59 -2015-04-30 23:00:00,4837.717,0.0,50.74 -2015-05-01 00:00:00,4435.408,0.0,50.58 -2015-05-01 01:00:00,4163.192,0.0,50.51 -2015-05-01 02:00:00,4010.225,0.0,50.39 -2015-05-01 03:00:00,3948.0,0.0,49.93 -2015-05-01 04:00:00,3954.808,0.0,49.4 -2015-05-01 05:00:00,4132.217,0.0,48.72 -2015-05-01 06:00:00,4598.2,0.0,48.37 -2015-05-01 07:00:00,5189.8,0.0,48.86 -2015-05-01 08:00:00,5596.608,0.0,49.58 -2015-05-01 09:00:00,5833.283,0.0,51.28 -2015-05-01 10:00:00,5981.292,0.0,52.81 -2015-05-01 11:00:00,6005.908,0.0,52.53 -2015-05-01 12:00:00,6002.533,0.0,53.54 -2015-05-01 13:00:00,6003.95,0.0,53.34 -2015-05-01 14:00:00,5959.4,0.0,54.87 -2015-05-01 15:00:00,5957.458,0.0,56.14 -2015-05-01 16:00:00,5960.467,0.0,56.43 -2015-05-01 17:00:00,5910.417,0.0,54.65 -2015-05-01 18:00:00,5733.575,0.0,52.65 -2015-05-01 19:00:00,5650.808,0.0,51.02 -2015-05-01 20:00:00,5632.467,0.0,50.03 -2015-05-01 21:00:00,5487.242,0.0,48.96 -2015-05-01 22:00:00,5207.525,0.0,48.78 -2015-05-01 23:00:00,4858.1,0.0,48.23 -2015-05-02 00:00:00,4452.883,0.0,47.72 -2015-05-02 01:00:00,4188.433,0.0,47.91 -2015-05-02 02:00:00,4024.792,0.0,47.21 -2015-05-02 03:00:00,3924.533,0.0,48.1 -2015-05-02 04:00:00,3887.275,0.0,48.21 -2015-05-02 05:00:00,3931.25,0.0,47.72 -2015-05-02 06:00:00,4052.15,0.0,47.72 -2015-05-02 07:00:00,4320.083,0.0,48.47 -2015-05-02 08:00:00,4615.0,0.0,50.2 -2015-05-02 09:00:00,4883.267,0.0,52.81 -2015-05-02 10:00:00,5066.883,0.0,55.51 -2015-05-02 11:00:00,5179.933,0.0,56.58 -2015-05-02 12:00:00,5227.8,0.0,59.39 -2015-05-02 13:00:00,5228.017,0.0,61.78 -2015-05-02 14:00:00,5176.017,0.0,61.85 -2015-05-02 15:00:00,5121.692,0.0,59.52 -2015-05-02 16:00:00,5093.733,0.0,58.42 -2015-05-02 17:00:00,5086.583,0.0,56.6 -2015-05-02 18:00:00,5064.567,0.0,55.22 -2015-05-02 19:00:00,5086.225,0.0,52.94 -2015-05-02 20:00:00,5207.717,0.0,50.87 -2015-05-02 21:00:00,5142.392,0.0,50.79 -2015-05-02 22:00:00,4953.967,0.0,50.79 -2015-05-02 23:00:00,4687.25,0.0,50.79 -2015-05-03 00:00:00,4401.075,0.0,50.4 -2015-05-03 01:00:00,4199.967,0.0,50.86 -2015-05-03 02:00:00,3993.442,0.0,50.45 -2015-05-03 03:00:00,3891.533,0.0,50.57 -2015-05-03 04:00:00,3840.9,0.0,50.19 -2015-05-03 05:00:00,3843.158,0.0,49.1 -2015-05-03 06:00:00,3896.817,0.0,49.6 -2015-05-03 07:00:00,4088.225,0.0,49.7 -2015-05-03 08:00:00,4351.867,0.0,52.18 -2015-05-03 09:00:00,4591.433,0.0,56.62 -2015-05-03 10:00:00,4831.9,0.0,58.49 -2015-05-03 11:00:00,4986.825,0.0,62.78 -2015-05-03 12:00:00,5092.033,0.0,69.08 -2015-05-03 13:00:00,5137.0,0.0,75.35 -2015-05-03 14:00:00,5151.242,0.0,68.84 -2015-05-03 15:00:00,5159.417,0.0,70.89 -2015-05-03 16:00:00,5170.842,0.0,71.28 -2015-05-03 17:00:00,5181.492,0.0,69.31 -2015-05-03 18:00:00,5178.217,0.0,66.89 -2015-05-03 19:00:00,5213.758,0.0,66.28 -2015-05-03 20:00:00,5354.508,0.0,65.21 -2015-05-03 21:00:00,5298.992,0.0,64.3 -2015-05-03 22:00:00,5049.517,0.0,63.06 -2015-05-03 23:00:00,4687.617,0.0,60.65 -2015-05-04 00:00:00,4370.45,0.0,59.53 -2015-05-04 01:00:00,4143.992,0.0,59.28 -2015-05-04 02:00:00,4013.025,0.0,58.19 -2015-05-04 03:00:00,3962.608,0.0,57.49 -2015-05-04 04:00:00,3958.667,0.0,56.68 -2015-05-04 05:00:00,4157.158,0.0,55.82 -2015-05-04 06:00:00,4645.4,0.0,53.58 -2015-05-04 07:00:00,5295.433,0.0,54.24 -2015-05-04 08:00:00,5764.658,0.0,56.13 -2015-05-04 09:00:00,6105.692,0.0,60.22 -2015-05-04 10:00:00,6341.425,0.0,63.63 -2015-05-04 11:00:00,6494.283,0.0,68.3 -2015-05-04 12:00:00,6611.236,0.0,74.21 -2015-05-04 13:00:00,6674.167,0.0,76.78 -2015-05-04 14:00:00,6669.85,0.0,76.05 -2015-05-04 15:00:00,6747.267,0.0,77.14 -2015-05-04 16:00:00,6794.433,0.0,79.08 -2015-05-04 17:00:00,6742.0,0.0,79.27 -2015-05-04 18:00:00,6467.133,0.0,78.03 -2015-05-04 19:00:00,6273.458,0.0,76.73 -2015-05-04 20:00:00,6241.507,0.0,75.14 -2015-05-04 21:00:00,6050.217,0.0,74.21 -2015-05-04 22:00:00,5658.358,0.0,72.34 -2015-05-04 23:00:00,5187.4,0.0,70.9 -2015-05-05 00:00:00,4748.817,0.0,70.3 -2015-05-05 01:00:00,4449.167,0.0,69.1 -2015-05-05 02:00:00,4294.217,0.0,68.26 -2015-05-05 03:00:00,4212.417,0.0,67.82 -2015-05-05 04:00:00,4214.325,0.0,66.05 -2015-05-05 05:00:00,4414.108,0.0,65.17 -2015-05-05 06:00:00,4911.183,0.0,64.28 -2015-05-05 07:00:00,5604.733,0.0,64.75 -2015-05-05 08:00:00,6132.85,0.0,67.8 -2015-05-05 09:00:00,6481.108,0.0,69.63 -2015-05-05 10:00:00,6700.533,0.0,69.84 -2015-05-05 11:00:00,6802.992,0.0,72.44 -2015-05-05 12:00:00,6888.6,0.0,74.59 -2015-05-05 13:00:00,7008.675,0.0,75.57 -2015-05-05 14:00:00,7081.817,0.0,77.66 -2015-05-05 15:00:00,7176.625,0.0,77.08 -2015-05-05 16:00:00,7213.8,0.0,77.38 -2015-05-05 17:00:00,7084.492,0.0,77.44 -2015-05-05 18:00:00,6712.683,0.0,72.12 -2015-05-05 19:00:00,6484.933,0.0,70.82 -2015-05-05 20:00:00,6414.258,0.0,70.81 -2015-05-05 21:00:00,6197.908,0.0,69.46 -2015-05-05 22:00:00,5826.658,0.0,68.18 -2015-05-05 23:00:00,5375.317,0.0,65.65 -2015-05-06 00:00:00,4943.433,0.0,66.0 -2015-05-06 01:00:00,4664.217,0.0,65.08 -2015-05-06 02:00:00,4483.925,0.0,66.13 -2015-05-06 03:00:00,4397.308,0.0,67.83 -2015-05-06 04:00:00,4374.058,0.0,67.2 -2015-05-06 05:00:00,4553.55,0.0,67.24 -2015-05-06 06:00:00,5066.383,0.0,65.54 -2015-05-06 07:00:00,5631.0,0.0,62.17 -2015-05-06 08:00:00,6038.258,0.0,61.74 -2015-05-06 09:00:00,6304.417,0.0,62.98 -2015-05-06 10:00:00,6412.367,0.0,63.44 -2015-05-06 11:00:00,6458.043,0.0,65.36 -2015-05-06 12:00:00,6463.933,0.0,63.46 -2015-05-06 13:00:00,6451.5,0.0,63.24 -2015-05-06 14:00:00,6420.75,0.0,65.3 -2015-05-06 15:00:00,6415.917,0.0,65.68 -2015-05-06 16:00:00,6437.492,0.0,65.55 -2015-05-06 17:00:00,6404.817,0.0,65.02 -2015-05-06 18:00:00,6154.517,0.0,64.4 -2015-05-06 19:00:00,5949.283,0.0,64.01 -2015-05-06 20:00:00,5922.783,0.0,62.26 -2015-05-06 21:00:00,5766.475,0.0,60.75 -2015-05-06 22:00:00,5515.258,0.0,58.67 -2015-05-06 23:00:00,5050.292,0.0,58.17 -2015-05-07 00:00:00,4629.175,0.0,56.85 -2015-05-07 01:00:00,4337.217,0.0,56.59 -2015-05-07 02:00:00,4187.817,0.0,55.11 -2015-05-07 03:00:00,4108.325,0.0,55.07 -2015-05-07 04:00:00,4115.85,0.0,55.19 -2015-05-07 05:00:00,4313.608,0.0,52.92 -2015-05-07 06:00:00,4792.017,0.0,52.75 -2015-05-07 07:00:00,5462.858,0.0,54.81 -2015-05-07 08:00:00,5966.658,0.0,58.8 -2015-05-07 09:00:00,6326.642,0.0,62.98 -2015-05-07 10:00:00,6535.372,0.0,66.97 -2015-05-07 11:00:00,6651.683,0.0,69.03 -2015-05-07 12:00:00,6721.108,0.0,70.07 -2015-05-07 13:00:00,6768.058,0.0,71.0 -2015-05-07 14:00:00,6789.829,0.0,70.16 -2015-05-07 15:00:00,6820.142,0.0,71.03 -2015-05-07 16:00:00,6826.267,0.0,71.15 -2015-05-07 17:00:00,6756.217,0.0,70.8 -2015-05-07 18:00:00,6414.717,0.0,69.51 -2015-05-07 19:00:00,6153.717,0.0,67.04 -2015-05-07 20:00:00,6088.067,0.0,62.98 -2015-05-07 21:00:00,5886.775,0.0,59.51 -2015-05-07 22:00:00,5549.217,0.0,57.02 -2015-05-07 23:00:00,5096.95,0.0,55.93 -2015-05-08 00:00:00,4680.725,0.0,55.07 -2015-05-08 01:00:00,4398.767,0.0,55.2 -2015-05-08 02:00:00,4227.292,0.0,54.9 -2015-05-08 03:00:00,4141.383,0.0,54.61 -2015-05-08 04:00:00,4149.967,0.0,54.41 -2015-05-08 05:00:00,4336.367,0.0,53.8 -2015-05-08 06:00:00,4820.125,0.0,53.39 -2015-05-08 07:00:00,5477.817,0.0,54.67 -2015-05-08 08:00:00,5993.658,0.0,56.49 -2015-05-08 09:00:00,6375.883,0.0,59.62 -2015-05-08 10:00:00,6627.878,0.0,63.73 -2015-05-08 11:00:00,6806.367,0.0,67.11 -2015-05-08 12:00:00,6871.45,0.0,70.42 -2015-05-08 13:00:00,6917.967,0.0,70.58 -2015-05-08 14:00:00,6941.642,0.0,73.51 -2015-05-08 15:00:00,6966.633,0.0,74.95 -2015-05-08 16:00:00,6967.642,0.0,74.31 -2015-05-08 17:00:00,6846.383,0.0,73.09 -2015-05-08 18:00:00,6495.617,0.0,72.28 -2015-05-08 19:00:00,6221.792,0.0,70.54 -2015-05-08 20:00:00,6120.017,0.0,66.49 -2015-05-08 21:00:00,5911.307,0.0,65.11 -2015-05-08 22:00:00,5597.175,0.0,61.8 -2015-05-08 23:00:00,5211.65,0.0,60.31 -2015-05-09 00:00:00,4829.475,0.0,60.95 -2015-05-09 01:00:00,4547.092,0.0,60.33 -2015-05-09 02:00:00,4352.817,0.0,60.07 -2015-05-09 03:00:00,4251.067,0.0,58.48 -2015-05-09 04:00:00,4196.067,0.0,57.1 -2015-05-09 05:00:00,4206.708,0.0,56.05 -2015-05-09 06:00:00,4306.292,0.0,55.05 -2015-05-09 07:00:00,4560.4,0.0,54.85 -2015-05-09 08:00:00,4881.708,0.0,54.85 -2015-05-09 09:00:00,5150.683,0.0,54.73 -2015-05-09 10:00:00,5342.692,0.0,54.93 -2015-05-09 11:00:00,5444.633,0.0,55.92 -2015-05-09 12:00:00,5483.125,0.0,57.19 -2015-05-09 13:00:00,5463.083,0.0,59.1 -2015-05-09 14:00:00,5457.858,0.0,61.75 -2015-05-09 15:00:00,5476.017,0.0,61.73 -2015-05-09 16:00:00,5462.983,0.0,62.34 -2015-05-09 17:00:00,5431.7,0.0,61.21 -2015-05-09 18:00:00,5429.438,0.0,60.93 -2015-05-09 19:00:00,5448.733,0.0,61.56 -2015-05-09 20:00:00,5504.408,0.0,57.68 -2015-05-09 21:00:00,5445.508,0.0,56.82 -2015-05-09 22:00:00,5273.65,0.0,57.57 -2015-05-09 23:00:00,5001.358,0.0,57.42 -2015-05-10 00:00:00,4707.0,0.0,57.61 -2015-05-10 01:00:00,4427.758,0.0,58.06 -2015-05-10 02:00:00,4205.95,0.0,57.88 -2015-05-10 03:00:00,4089.225,0.0,56.99 -2015-05-10 04:00:00,4103.133,0.0,57.55 -2015-05-10 05:00:00,4110.117,0.0,58.5 -2015-05-10 06:00:00,4164.075,0.0,59.35 -2015-05-10 07:00:00,4392.833,0.0,59.94 -2015-05-10 08:00:00,4718.192,0.0,61.22 -2015-05-10 09:00:00,5046.5,0.0,63.38 -2015-05-10 10:00:00,5383.575,0.0,68.1 -2015-05-10 11:00:00,5597.508,0.0,70.7 -2015-05-10 12:00:00,5756.55,0.0,72.78 -2015-05-10 13:00:00,5839.375,0.0,77.57 -2015-05-10 14:00:00,5892.717,0.0,74.43 -2015-05-10 15:00:00,5971.308,0.0,77.27 -2015-05-10 16:00:00,6013.967,0.0,77.63 -2015-05-10 17:00:00,6011.158,0.0,76.92 -2015-05-10 18:00:00,5980.742,0.0,74.78 -2015-05-10 19:00:00,5954.658,0.0,75.04 -2015-05-10 20:00:00,6070.508,0.0,73.6 -2015-05-10 21:00:00,6085.008,0.0,72.57 -2015-05-10 22:00:00,5902.192,0.0,73.76 -2015-05-10 23:00:00,5549.917,0.0,72.6 -2015-05-11 00:00:00,5165.625,0.0,71.17 -2015-05-11 01:00:00,4928.325,0.0,70.94 -2015-05-11 02:00:00,4772.383,0.0,70.39 -2015-05-11 03:00:00,4691.25,0.0,69.5 -2015-05-11 04:00:00,4718.05,0.0,69.03 -2015-05-11 05:00:00,4953.333,0.0,69.97 -2015-05-11 06:00:00,5510.717,0.0,68.79 -2015-05-11 07:00:00,6230.8,0.0,69.37 -2015-05-11 08:00:00,6745.325,0.0,69.93 -2015-05-11 09:00:00,7116.283,0.0,70.5 -2015-05-11 10:00:00,7394.958,0.0,72.62 -2015-05-11 11:00:00,7576.725,0.0,74.46 -2015-05-11 12:00:00,7703.443,0.0,76.02 -2015-05-11 13:00:00,7834.053,0.0,78.14 -2015-05-11 14:00:00,7892.938,0.0,76.95 -2015-05-11 15:00:00,7929.075,0.0,77.01 -2015-05-11 16:00:00,7855.25,0.0,74.24 -2015-05-11 17:00:00,7802.113,0.0,73.68 -2015-05-11 18:00:00,7469.942,0.0,75.11 -2015-05-11 19:00:00,7141.008,0.0,71.78 -2015-05-11 20:00:00,6986.833,0.0,70.1 -2015-05-11 21:00:00,6820.492,0.0,69.47 -2015-05-11 22:00:00,6444.433,0.0,68.86 -2015-05-11 23:00:00,5950.821,0.0,68.37 -2015-05-12 00:00:00,5468.467,0.0,68.02 -2015-05-12 01:00:00,5158.808,0.0,67.76 -2015-05-12 02:00:00,4961.842,0.0,67.36 -2015-05-12 03:00:00,4879.667,0.0,66.51 -2015-05-12 04:00:00,4899.183,0.0,65.86 -2015-05-12 05:00:00,5121.683,0.0,66.26 -2015-05-12 06:00:00,5689.858,0.0,63.89 -2015-05-12 07:00:00,6447.258,0.0,67.11 -2015-05-12 08:00:00,6987.417,0.0,68.59 -2015-05-12 09:00:00,7367.275,0.0,70.64 -2015-05-12 10:00:00,7707.058,0.0,73.64 -2015-05-12 11:00:00,7928.025,0.0,77.65 -2015-05-12 12:00:00,8052.814,0.0,78.9 -2015-05-12 13:00:00,8101.767,0.0,80.39 -2015-05-12 14:00:00,8106.808,0.0,82.01 -2015-05-12 15:00:00,8118.581,0.0,81.56 -2015-05-12 16:00:00,8131.458,0.0,81.04 -2015-05-12 17:00:00,8049.458,0.0,82.07 -2015-05-12 18:00:00,7695.367,0.0,81.99 -2015-05-12 19:00:00,7395.792,0.0,81.05 -2015-05-12 20:00:00,7249.108,0.0,80.85 -2015-05-12 21:00:00,7059.483,0.0,79.27 -2015-05-12 22:00:00,6584.4,0.0,78.14 -2015-05-12 23:00:00,5857.633,0.0,67.7 -2015-05-13 00:00:00,5246.258,0.0,64.54 -2015-05-13 01:00:00,4866.742,0.0,62.79 -2015-05-13 02:00:00,4637.892,0.0,61.54 -2015-05-13 03:00:00,4585.967,0.0,60.47 -2015-05-13 04:00:00,4587.342,0.0,58.93 -2015-05-13 05:00:00,4711.442,0.0,58.1 -2015-05-13 06:00:00,5098.475,0.0,57.65 -2015-05-13 07:00:00,5664.167,0.0,58.21 -2015-05-13 08:00:00,6132.642,0.0,59.05 -2015-05-13 09:00:00,6412.783,0.0,60.42 -2015-05-13 10:00:00,6535.9,0.0,62.21 -2015-05-13 11:00:00,6576.4,0.0,63.19 -2015-05-13 12:00:00,6604.157,0.0,64.03 -2015-05-13 13:00:00,6639.967,0.0,65.03 -2015-05-13 14:00:00,6635.392,0.0,65.99 -2015-05-13 15:00:00,6674.758,0.0,66.13 -2015-05-13 16:00:00,6672.367,0.0,65.84 -2015-05-13 17:00:00,6476.183,0.0,63.47 -2015-05-13 18:00:00,6143.983,0.0,61.76 -2015-05-13 19:00:00,5919.75,0.0,59.42 -2015-05-13 20:00:00,5857.4,0.0,57.49 -2015-05-13 21:00:00,5683.925,0.0,56.17 -2015-05-13 22:00:00,5332.85,0.0,55.28 -2015-05-13 23:00:00,4895.883,0.0,54.49 -2015-05-14 00:00:00,4536.479,0.0,53.63 -2015-05-14 01:00:00,4255.643,0.0,53.37 -2015-05-14 02:00:00,4070.9,0.0,52.63 -2015-05-14 03:00:00,4010.55,0.0,51.98 -2015-05-14 04:00:00,3992.358,0.0,51.44 -2015-05-14 05:00:00,4154.567,0.0,50.98 -2015-05-14 06:00:00,4628.792,0.0,50.79 -2015-05-14 07:00:00,5264.183,0.0,51.52 -2015-05-14 08:00:00,5715.308,0.0,53.98 -2015-05-14 09:00:00,6013.275,0.0,56.96 -2015-05-14 10:00:00,6165.757,0.0,59.26 -2015-05-14 11:00:00,6256.308,0.0,61.55 -2015-05-14 12:00:00,6326.35,0.0,63.62 -2015-05-14 13:00:00,6371.817,0.0,64.97 -2015-05-14 14:00:00,6419.558,0.0,66.52 -2015-05-14 15:00:00,6485.567,0.0,67.67 -2015-05-14 16:00:00,6527.85,0.0,68.93 -2015-05-14 17:00:00,6479.533,0.0,69.13 -2015-05-14 18:00:00,6217.392,0.0,66.87 -2015-05-14 19:00:00,5968.508,0.0,64.57 -2015-05-14 20:00:00,5915.317,0.0,63.1 -2015-05-14 21:00:00,5761.658,0.0,61.43 -2015-05-14 22:00:00,5410.3,0.0,60.41 -2015-05-14 23:00:00,4989.342,0.0,59.69 -2015-05-15 00:00:00,4562.242,0.0,58.5 -2015-05-15 01:00:00,4285.1,0.0,57.66 -2015-05-15 02:00:00,4113.983,0.0,56.66 -2015-05-15 03:00:00,4011.525,0.0,55.66 -2015-05-15 04:00:00,4008.692,0.0,54.62 -2015-05-15 05:00:00,4170.125,0.0,54.28 -2015-05-15 06:00:00,4625.417,0.0,54.03 -2015-05-15 07:00:00,5286.583,0.0,55.2 -2015-05-15 08:00:00,5747.764,0.0,57.58 -2015-05-15 09:00:00,6093.683,0.0,59.39 -2015-05-15 10:00:00,6253.05,0.0,62.71 -2015-05-15 11:00:00,6359.133,0.0,64.09 -2015-05-15 12:00:00,6407.442,0.0,67.13 -2015-05-15 13:00:00,6482.167,0.0,68.55 -2015-05-15 14:00:00,6522.433,0.0,69.74 -2015-05-15 15:00:00,6559.15,0.0,70.84 -2015-05-15 16:00:00,6545.15,0.0,68.79 -2015-05-15 17:00:00,6426.792,0.0,67.84 -2015-05-15 18:00:00,6110.692,0.0,65.81 -2015-05-15 19:00:00,5908.6,0.0,63.78 -2015-05-15 20:00:00,5862.675,0.0,62.83 -2015-05-15 21:00:00,5690.592,0.0,62.29 -2015-05-15 22:00:00,5414.4,0.0,62.57 -2015-05-15 23:00:00,5043.65,0.0,62.6 -2015-05-16 00:00:00,4672.358,0.0,62.4 -2015-05-16 01:00:00,4418.4,0.0,61.74 -2015-05-16 02:00:00,4243.883,0.0,61.78 -2015-05-16 03:00:00,4149.975,0.0135,60.84 -2015-05-16 04:00:00,4117.533,0.0,59.21 -2015-05-16 05:00:00,4140.092,0.0,59.69 -2015-05-16 06:00:00,4270.142,0.0,59.67 -2015-05-16 07:00:00,4536.733,0.0,60.86 -2015-05-16 08:00:00,4910.642,0.0,61.77 -2015-05-16 09:00:00,5202.158,0.0631,59.01 -2015-05-16 10:00:00,5446.021,0.0,60.96 -2015-05-16 11:00:00,5628.092,0.0,63.76 -2015-05-16 12:00:00,5767.442,0.0,66.52 -2015-05-16 13:00:00,5793.033,0.0,69.36 -2015-05-16 14:00:00,5776.475,0.0,67.93 -2015-05-16 15:00:00,5782.867,0.0,68.8 -2015-05-16 16:00:00,5791.492,0.0,71.05 -2015-05-16 17:00:00,5776.667,0.0,71.95 -2015-05-16 18:00:00,5761.017,0.0,71.36 -2015-05-16 19:00:00,5757.125,0.0,69.03 -2015-05-16 20:00:00,5777.392,0.0035,67.05 -2015-05-16 21:00:00,5701.492,0.0065,65.36 -2015-05-16 22:00:00,5538.175,0.0135,65.6 -2015-05-16 23:00:00,5287.433,0.0831,64.51 -2015-05-17 00:00:00,4961.508,0.0065,64.98 -2015-05-17 01:00:00,4698.833,0.0527,63.12 -2015-05-17 02:00:00,4517.45,0.01,63.62 -2015-05-17 03:00:00,4419.567,0.0139,64.59 -2015-05-17 04:00:00,4362.442,0.0065,65.64 -2015-05-17 05:00:00,4355.375,0.0,65.18 -2015-05-17 06:00:00,4425.008,0.0,65.3 -2015-05-17 07:00:00,4654.983,0.0,65.51 -2015-05-17 08:00:00,5029.45,0.0,65.91 -2015-05-17 09:00:00,5430.507,0.0,67.18 -2015-05-17 10:00:00,5761.808,0.0,70.01 -2015-05-17 11:00:00,6046.408,0.0,73.35 -2015-05-17 12:00:00,6221.333,0.0,75.54 -2015-05-17 13:00:00,6323.958,0.0,78.02 -2015-05-17 14:00:00,6372.483,0.0,77.65 -2015-05-17 15:00:00,6404.5,0.0,77.47 -2015-05-17 16:00:00,6469.025,0.0,80.2 -2015-05-17 17:00:00,6477.667,0.0,79.1 -2015-05-17 18:00:00,6428.343,0.0,79.17 -2015-05-17 19:00:00,6360.933,0.0,76.49 -2015-05-17 20:00:00,6412.45,0.0,74.87 -2015-05-17 21:00:00,6413.208,0.0,73.54 -2015-05-17 22:00:00,6191.2,0.0,71.97 -2015-05-17 23:00:00,5835.583,0.0,72.48 -2015-05-18 00:00:00,5441.084,0.0,71.62 -2015-05-18 01:00:00,5175.885,0.0,70.49 -2015-05-18 02:00:00,4995.15,0.0,69.13 -2015-05-18 03:00:00,4895.767,0.0,67.31 -2015-05-18 04:00:00,4911.892,0.0,65.47 -2015-05-18 05:00:00,5110.333,0.0,63.94 -2015-05-18 06:00:00,5527.575,0.0,62.21 -2015-05-18 07:00:00,6040.325,0.0,59.43 -2015-05-18 08:00:00,6429.7,0.0,58.82 -2015-05-18 09:00:00,6668.283,0.0,58.48 -2015-05-18 10:00:00,6760.925,0.0,58.73 -2015-05-18 11:00:00,6794.383,0.0,60.47 -2015-05-18 12:00:00,6783.308,0.0,60.43 -2015-05-18 13:00:00,6736.167,0.0,60.86 -2015-05-18 14:00:00,6672.825,0.0,60.41 -2015-05-18 15:00:00,6672.967,0.0,61.02 -2015-05-18 16:00:00,6629.733,0.0,61.62 -2015-05-18 17:00:00,6559.292,0.0,61.08 -2015-05-18 18:00:00,6333.233,0.0,61.89 -2015-05-18 19:00:00,6180.142,0.0,60.87 -2015-05-18 20:00:00,6102.625,0.0,60.84 -2015-05-18 21:00:00,5906.258,0.0,60.36 -2015-05-18 22:00:00,5543.492,0.0,60.15 -2015-05-18 23:00:00,5093.608,0.0,59.71 -2015-05-19 00:00:00,4708.042,0.0,59.5 -2015-05-19 01:00:00,4437.225,0.0,58.09 -2015-05-19 02:00:00,4267.5,0.0485,57.81 -2015-05-19 03:00:00,4200.483,0.0,57.56 -2015-05-19 04:00:00,4220.05,0.0065,56.73 -2015-05-19 05:00:00,4407.358,0.0065,57.09 -2015-05-19 06:00:00,4921.683,0.0,56.69 -2015-05-19 07:00:00,5566.1,0.0,56.52 -2015-05-19 08:00:00,6024.0,0.0,56.71 -2015-05-19 09:00:00,6303.133,0.0,57.46 -2015-05-19 10:00:00,6453.133,0.0,57.81 -2015-05-19 11:00:00,6549.092,0.0,58.0 -2015-05-19 12:00:00,6652.4,0.0,59.74 -2015-05-19 13:00:00,6709.433,0.0,60.84 -2015-05-19 14:00:00,6856.792,0.0,64.62 -2015-05-19 15:00:00,7071.858,0.0,70.25 -2015-05-19 16:00:00,7252.683,0.0,71.98 -2015-05-19 17:00:00,7283.233,0.0,75.17 -2015-05-19 18:00:00,6948.767,0.0,73.22 -2015-05-19 19:00:00,6623.067,0.0,70.3 -2015-05-19 20:00:00,6507.5,0.0,68.94 -2015-05-19 21:00:00,6381.258,0.0,68.47 -2015-05-19 22:00:00,6102.817,0.0,69.98 -2015-05-19 23:00:00,5649.208,0.0,72.05 -2015-05-20 00:00:00,5083.1,0.0,69.31 -2015-05-20 01:00:00,4701.492,0.0,66.4 -2015-05-20 02:00:00,4443.1,0.0,63.54 -2015-05-20 03:00:00,4302.8,0.0,60.92 -2015-05-20 04:00:00,4266.442,0.0,58.49 -2015-05-20 05:00:00,4403.35,0.0,57.67 -2015-05-20 06:00:00,4877.808,0.0,56.49 -2015-05-20 07:00:00,5496.175,0.0,57.71 -2015-05-20 08:00:00,5935.258,0.0,58.4 -2015-05-20 09:00:00,6174.717,0.0,58.4 -2015-05-20 10:00:00,6254.15,0.0,58.29 -2015-05-20 11:00:00,6299.957,0.0,58.69 -2015-05-20 12:00:00,6295.271,0.0,58.54 -2015-05-20 13:00:00,6291.85,0.0,59.15 -2015-05-20 14:00:00,6288.1,0.0,59.57 -2015-05-20 15:00:00,6301.233,0.0,60.15 -2015-05-20 16:00:00,6278.858,0.0,58.79 -2015-05-20 17:00:00,6231.392,0.0,60.13 -2015-05-20 18:00:00,5997.258,0.0,60.11 -2015-05-20 19:00:00,5814.744,0.0,58.93 -2015-05-20 20:00:00,5797.925,0.0,57.67 -2015-05-20 21:00:00,5656.442,0.0,57.03 -2015-05-20 22:00:00,5347.95,0.0,56.49 -2015-05-20 23:00:00,4921.2,0.0,55.49 -2015-05-21 00:00:00,4521.242,0.0,54.81 -2015-05-21 01:00:00,4204.933,0.0,54.49 -2015-05-21 02:00:00,4049.783,0.0,53.56 -2015-05-21 03:00:00,3975.217,0.0,53.37 -2015-05-21 04:00:00,3987.083,0.0,52.84 -2015-05-21 05:00:00,4155.25,0.0,53.03 -2015-05-21 06:00:00,4611.275,0.0,53.04 -2015-05-21 07:00:00,5243.3,0.0,53.7 -2015-05-21 08:00:00,5662.55,0.0,54.42 -2015-05-21 09:00:00,5949.886,0.0,56.1 -2015-05-21 10:00:00,6067.071,0.0,57.37 -2015-05-21 11:00:00,6109.108,0.0,58.5 -2015-05-21 12:00:00,6128.992,0.0,59.11 -2015-05-21 13:00:00,6138.0,0.0,59.3 -2015-05-21 14:00:00,6117.033,0.0,58.83 -2015-05-21 15:00:00,6115.833,0.0,58.88 -2015-05-21 16:00:00,6115.683,0.0,58.93 -2015-05-21 17:00:00,6102.025,0.0,57.86 -2015-05-21 18:00:00,5906.617,0.0,56.68 -2015-05-21 19:00:00,5771.908,0.0,55.64 -2015-05-21 20:00:00,5728.417,0.0,54.61 -2015-05-21 21:00:00,5584.592,0.0,53.73 -2015-05-21 22:00:00,5275.042,0.0,53.54 -2015-05-21 23:00:00,4853.75,0.0,53.54 -2015-05-22 00:00:00,4456.6,0.0,53.54 -2015-05-22 01:00:00,4188.783,0.0,54.1 -2015-05-22 02:00:00,4034.125,0.0,54.84 -2015-05-22 03:00:00,3957.1,0.0,54.65 -2015-05-22 04:00:00,3957.1,0.0,55.35 -2015-05-22 05:00:00,4132.186,0.0,56.35 -2015-05-22 06:00:00,4577.5,0.0,55.44 -2015-05-22 07:00:00,5141.179,0.0,56.35 -2015-05-22 08:00:00,5632.357,0.0,58.08 -2015-05-22 09:00:00,5953.583,0.0,60.47 -2015-05-22 10:00:00,6119.658,0.0,63.64 -2015-05-22 11:00:00,6246.817,0.0,66.92 -2015-05-22 12:00:00,6327.192,0.0,69.2 -2015-05-22 13:00:00,6343.675,0.0,71.28 -2015-05-22 14:00:00,6319.1,0.0,71.48 -2015-05-22 15:00:00,6284.517,0.0,70.8 -2015-05-22 16:00:00,6232.583,0.0,68.11 -2015-05-22 17:00:00,6143.717,0.0,69.57 -2015-05-22 18:00:00,5917.85,0.0,69.4 -2015-05-22 19:00:00,5731.608,0.0,69.22 -2015-05-22 20:00:00,5683.258,0.0,67.55 -2015-05-22 21:00:00,5567.017,0.0,65.82 -2015-05-22 22:00:00,5274.517,0.0,64.89 -2015-05-22 23:00:00,4883.942,0.0,62.49 -2015-05-23 00:00:00,4510.433,0.0,60.49 -2015-05-23 01:00:00,4230.95,0.0,58.17 -2015-05-23 02:00:00,4040.067,0.0,55.98 -2015-05-23 03:00:00,3946.5,0.0,53.98 -2015-05-23 04:00:00,3889.492,0.0,52.44 -2015-05-23 05:00:00,3879.35,0.0,51.12 -2015-05-23 06:00:00,3955.808,0.0,49.24 -2015-05-23 07:00:00,4169.725,0.0,49.17 -2015-05-23 08:00:00,4506.483,0.0,50.23 -2015-05-23 09:00:00,4777.567,0.0,50.93 -2015-05-23 10:00:00,4976.2,0.0,52.61 -2015-05-23 11:00:00,5055.942,0.0,54.35 -2015-05-23 12:00:00,5083.092,0.0,57.01 -2015-05-23 13:00:00,5075.45,0.0,59.85 -2015-05-23 14:00:00,5067.492,0.0,61.53 -2015-05-23 15:00:00,5066.817,0.0,64.55 -2015-05-23 16:00:00,5099.833,0.0,66.59 -2015-05-23 17:00:00,5088.867,0.0,66.87 -2015-05-23 18:00:00,5078.533,0.0,64.64 -2015-05-23 19:00:00,5047.892,0.0,62.9 -2015-05-23 20:00:00,5074.367,0.0,60.61 -2015-05-23 21:00:00,5109.208,0.0,59.23 -2015-05-23 22:00:00,4949.967,0.0,58.7 -2015-05-23 23:00:00,4714.358,0.0,57.82 -2015-05-24 00:00:00,4430.6,0.0,57.45 -2015-05-24 01:00:00,4192.508,0.0,57.31 -2015-05-24 02:00:00,4026.925,0.0,56.63 -2015-05-24 03:00:00,3888.967,0.0,55.79 -2015-05-24 04:00:00,3848.375,0.0,54.98 -2015-05-24 05:00:00,3833.092,0.0,54.57 -2015-05-24 06:00:00,3887.308,0.0,53.98 -2015-05-24 07:00:00,4080.825,0.0,55.64 -2015-05-24 08:00:00,4349.892,0.0,58.81 -2015-05-24 09:00:00,4642.683,0.0,62.89 -2015-05-24 10:00:00,4911.292,0.0,67.32 -2015-05-24 11:00:00,5095.158,0.0,70.19 -2015-05-24 12:00:00,5203.592,0.0,73.32 -2015-05-24 13:00:00,5257.15,0.0,75.09 -2015-05-24 14:00:00,5283.583,0.0,75.63 -2015-05-24 15:00:00,5303.883,0.0,76.31 -2015-05-24 16:00:00,5309.4,0.0,74.57 -2015-05-24 17:00:00,5286.383,0.0,73.24 -2015-05-24 18:00:00,5263.942,0.0,71.79 -2015-05-24 19:00:00,5218.375,0.0,72.09 -2015-05-24 20:00:00,5275.492,0.0,69.64 -2015-05-24 21:00:00,5313.917,0.0,68.05 -2015-05-24 22:00:00,5164.85,0.0,68.62 -2015-05-24 23:00:00,4927.292,0.0,68.12 -2015-05-25 00:00:00,4619.025,0.0,66.69 -2015-05-25 01:00:00,4382.642,0.0,65.96 -2015-05-25 02:00:00,4213.192,0.0,64.38 -2015-05-25 03:00:00,4107.383,0.0,63.46 -2015-05-25 04:00:00,4068.142,0.0,62.99 -2015-05-25 05:00:00,4096.417,0.0,62.92 -2015-05-25 06:00:00,4229.217,0.0,62.8 -2015-05-25 07:00:00,4461.408,0.0,63.99 -2015-05-25 08:00:00,4758.392,0.0,64.69 -2015-05-25 09:00:00,5090.625,0.0,66.28 -2015-05-25 10:00:00,5462.592,0.0,70.26 -2015-05-25 11:00:00,5723.417,0.0,74.66 -2015-05-25 12:00:00,5886.375,0.0,76.7 -2015-05-25 13:00:00,5988.275,0.0,78.25 -2015-05-25 14:00:00,6034.008,0.0,79.38 -2015-05-25 15:00:00,6085.458,0.0,79.54 -2015-05-25 16:00:00,6135.667,0.0,79.9 -2015-05-25 17:00:00,6173.033,0.0,81.07 -2015-05-25 18:00:00,6152.45,0.0,81.47 -2015-05-25 19:00:00,6086.733,0.0,79.73 -2015-05-25 20:00:00,6136.158,0.0,77.54 -2015-05-25 21:00:00,6131.817,0.0,75.11 -2015-05-25 22:00:00,5875.508,0.0,72.47 -2015-05-25 23:00:00,5522.442,0.0,71.45 -2015-05-26 00:00:00,5143.517,0.0,70.86 -2015-05-26 01:00:00,4845.617,0.0,69.72 -2015-05-26 02:00:00,4655.483,0.0,68.86 -2015-05-26 03:00:00,4562.292,0.0,67.91 -2015-05-26 04:00:00,4562.683,0.0,66.6 -2015-05-26 05:00:00,4749.583,0.0,65.41 -2015-05-26 06:00:00,5256.242,0.0,65.41 -2015-05-26 07:00:00,5959.883,0.0,66.41 -2015-05-26 08:00:00,6531.858,0.0,68.88 -2015-05-26 09:00:00,6995.375,0.0,71.48 -2015-05-26 10:00:00,7371.227,0.0,74.08 -2015-05-26 11:00:00,7553.633,0.0,77.72 -2015-05-26 12:00:00,7749.867,0.0,79.34 -2015-05-26 13:00:00,7911.742,0.0,80.54 -2015-05-26 14:00:00,8011.483,0.0,82.25 -2015-05-26 15:00:00,8126.05,0.0,80.99 -2015-05-26 16:00:00,8155.992,0.0,80.79 -2015-05-26 17:00:00,8059.1,0.0,80.63 -2015-05-26 18:00:00,7678.05,0.0,78.76 -2015-05-26 19:00:00,7380.625,0.0,78.22 -2015-05-26 20:00:00,7178.267,0.0,74.72 -2015-05-26 21:00:00,7028.083,0.0,73.25 -2015-05-26 22:00:00,6661.45,0.0,72.84 -2015-05-26 23:00:00,6147.133,0.0,72.96 -2015-05-27 00:00:00,5643.05,0.0,72.43 -2015-05-27 01:00:00,5294.417,0.0,72.12 -2015-05-27 02:00:00,5071.033,0.0,70.94 -2015-05-27 03:00:00,4962.933,0.0,72.0 -2015-05-27 04:00:00,4954.583,0.0,68.43 -2015-05-27 05:00:00,5166.392,0.0,67.4 -2015-05-27 06:00:00,5731.35,0.0,67.52 -2015-05-27 07:00:00,6448.458,0.0,68.65 -2015-05-27 08:00:00,7004.567,0.0,70.06 -2015-05-27 09:00:00,7380.258,0.0,70.8 -2015-05-27 10:00:00,7684.033,0.0,72.99 -2015-05-27 11:00:00,7870.092,0.0,75.57 -2015-05-27 12:00:00,7951.85,0.0,75.08 -2015-05-27 13:00:00,8105.908,0.0,76.61 -2015-05-27 14:00:00,8151.375,0.0,76.52 -2015-05-27 15:00:00,8188.342,0.0,77.29 -2015-05-27 16:00:00,8194.667,0.0,75.26 -2015-05-27 17:00:00,8121.75,0.0,75.42 -2015-05-27 18:00:00,7684.725,0.0,74.0 -2015-05-27 19:00:00,7396.275,0.0173,72.11 -2015-05-27 20:00:00,7260.475,0.0035,71.94 -2015-05-27 21:00:00,7072.05,0.0269,71.14 -2015-05-27 22:00:00,6689.517,0.0069,69.55 -2015-05-27 23:00:00,6173.558,0.0,68.62 -2015-05-28 00:00:00,5698.0,0.0,68.55 -2015-05-28 01:00:00,5366.992,0.0,68.4 -2015-05-28 02:00:00,5179.233,0.0,69.68 -2015-05-28 03:00:00,5062.933,0.0,69.11 -2015-05-28 04:00:00,5048.642,0.0,68.77 -2015-05-28 05:00:00,5259.042,0.0,67.77 -2015-05-28 06:00:00,5807.092,0.0,67.33 -2015-05-28 07:00:00,6510.567,0.0,67.5 -2015-05-28 08:00:00,7044.025,0.0,69.78 -2015-05-28 09:00:00,7383.573,0.0,69.73 -2015-05-28 10:00:00,7595.193,0.0,69.8 -2015-05-28 11:00:00,7823.617,0.0,72.99 -2015-05-28 12:00:00,8025.475,0.0,75.37 -2015-05-28 13:00:00,8238.767,0.0,76.84 -2015-05-28 14:00:00,8362.075,0.0,78.75 -2015-05-28 15:00:00,8480.35,0.0,80.27 -2015-05-28 16:00:00,8539.718,0.0,79.42 -2015-05-28 17:00:00,8395.214,0.0,78.44 -2015-05-28 18:00:00,8032.557,0.0,79.89 -2015-05-28 19:00:00,7789.658,0.0,80.5 -2015-05-28 20:00:00,7575.692,0.0,78.56 -2015-05-28 21:00:00,7389.708,0.0,77.35 -2015-05-28 22:00:00,6945.442,0.0,76.92 -2015-05-28 23:00:00,6378.467,0.0,74.56 -2015-05-29 00:00:00,5830.025,0.0,71.66 -2015-05-29 01:00:00,5420.458,0.0,69.89 -2015-05-29 02:00:00,5155.242,0.0,68.44 -2015-05-29 03:00:00,5009.55,0.0,67.58 -2015-05-29 04:00:00,4963.907,0.0,66.41 -2015-05-29 05:00:00,5108.567,0.0,65.05 -2015-05-29 06:00:00,5588.979,0.0,64.66 -2015-05-29 07:00:00,6306.642,0.0,65.37 -2015-05-29 08:00:00,6863.283,0.0,67.58 -2015-05-29 09:00:00,7245.958,0.0,69.98 -2015-05-29 10:00:00,7477.6,0.0,72.06 -2015-05-29 11:00:00,7649.217,0.0,73.38 -2015-05-29 12:00:00,7758.95,0.0,73.87 -2015-05-29 13:00:00,7851.492,0.0,74.81 -2015-05-29 14:00:00,7893.942,0.0,76.66 -2015-05-29 15:00:00,7961.194,0.0,76.88 -2015-05-29 16:00:00,7989.158,0.0,81.35 -2015-05-29 17:00:00,7798.008,0.0,76.63 -2015-05-29 18:00:00,7309.075,0.0,73.74 -2015-05-29 19:00:00,6957.733,0.0,70.81 -2015-05-29 20:00:00,6756.625,0.0,69.65 -2015-05-29 21:00:00,6622.7,0.0,68.03 -2015-05-29 22:00:00,6361.333,0.0,67.48 -2015-05-29 23:00:00,5980.908,0.0,66.79 -2015-05-30 00:00:00,5585.392,0.0,66.35 -2015-05-30 01:00:00,5269.783,0.0,66.06 -2015-05-30 02:00:00,5066.217,0.0,66.42 -2015-05-30 03:00:00,4939.683,0.0,65.76 -2015-05-30 04:00:00,4881.233,0.0,65.37 -2015-05-30 05:00:00,4880.492,0.0,66.1 -2015-05-30 06:00:00,5042.567,0.0,65.96 -2015-05-30 07:00:00,5423.742,0.0,67.15 -2015-05-30 08:00:00,5875.383,0.0,70.08 -2015-05-30 09:00:00,6300.958,0.0,72.34 -2015-05-30 10:00:00,6664.558,0.0,74.07 -2015-05-30 11:00:00,6932.542,0.0,75.93 -2015-05-30 12:00:00,7088.133,0.0,77.86 -2015-05-30 13:00:00,7119.067,0.0,78.27 -2015-05-30 14:00:00,7168.242,0.0,78.51 -2015-05-30 15:00:00,7168.1,0.0,79.02 -2015-05-30 16:00:00,7101.5,0.0,78.13 -2015-05-30 17:00:00,7026.008,0.0,77.13 -2015-05-30 18:00:00,6877.908,0.0,75.7 -2015-05-30 19:00:00,6723.958,0.0,75.91 -2015-05-30 20:00:00,6618.575,0.0,73.69 -2015-05-30 21:00:00,6589.583,0.0,72.59 -2015-05-30 22:00:00,6391.892,0.0,72.53 -2015-05-30 23:00:00,6076.783,0.0,71.83 -2015-05-31 00:00:00,5727.9,0.0,70.48 -2015-05-31 01:00:00,5434.5,0.0,70.76 -2015-05-31 02:00:00,5220.225,0.0,70.94 -2015-05-31 03:00:00,5073.342,0.0,70.39 -2015-05-31 04:00:00,4983.808,0.0,69.43 -2015-05-31 05:00:00,4931.517,0.0,68.92 -2015-05-31 06:00:00,4992.583,0.0,68.92 -2015-05-31 07:00:00,5264.85,0.0,69.67 -2015-05-31 08:00:00,5656.767,0.0,71.31 -2015-05-31 09:00:00,6074.85,0.0,72.82 -2015-05-31 10:00:00,6449.683,0.0,74.83 -2015-05-31 11:00:00,6787.483,0.0,77.28 -2015-05-31 12:00:00,7026.367,0.0,78.53 -2015-05-31 13:00:00,7158.892,0.0,79.84 -2015-05-31 14:00:00,7169.192,0.0,80.35 -2015-05-31 15:00:00,7176.717,0.0,79.09 -2015-05-31 16:00:00,7056.808,0.0381,74.53 -2015-05-31 17:00:00,6948.667,0.2817,72.85 -2015-05-31 18:00:00,6848.258,0.3893,70.62 -2015-05-31 19:00:00,6813.243,0.01,70.96 -2015-05-31 20:00:00,6777.125,0.0196,68.97 -2015-05-31 21:00:00,6630.457,0.0396,66.11 -2015-05-31 22:00:00,6248.217,0.1679,64.61 -2015-05-31 23:00:00,5710.592,0.0604,61.3 -2015-06-01 00:00:00,5215.017,0.0327,58.45 -2015-06-01 01:00:00,4899.858,0.0,57.18 -2015-06-01 02:00:00,4697.183,0.0797,57.13 -2015-06-01 03:00:00,4587.6,0.0035,57.04 -2015-06-01 04:00:00,4575.35,0.1635,56.0 -2015-06-01 05:00:00,4749.933,0.1645,56.65 -2015-06-01 06:00:00,5210.442,0.0196,57.43 -2015-06-01 07:00:00,5809.742,0.0,56.57 -2015-06-01 08:00:00,6195.1,0.0,56.52 -2015-06-01 09:00:00,6439.917,0.0,55.52 -2015-06-01 10:00:00,6605.042,0.0,55.88 -2015-06-01 11:00:00,6609.825,0.0523,55.38 -2015-06-01 12:00:00,6595.2,0.1111,55.32 -2015-06-01 13:00:00,6556.592,0.0327,56.04 -2015-06-01 14:00:00,6493.183,0.0,55.92 -2015-06-01 15:00:00,6474.842,0.0,55.58 -2015-06-01 16:00:00,6469.675,0.0,55.2 -2015-06-01 17:00:00,6420.492,0.0,55.32 -2015-06-01 18:00:00,6178.692,0.0,55.2 -2015-06-01 19:00:00,6023.692,0.0,54.86 -2015-06-01 20:00:00,5908.892,0.01,54.51 -2015-06-01 21:00:00,5709.267,0.0135,53.86 -2015-06-01 22:00:00,5370.658,0.0065,53.05 -2015-06-01 23:00:00,4925.117,0.0196,52.18 -2015-06-02 00:00:00,4512.808,0.0131,51.37 -2015-06-02 01:00:00,4227.008,0.0131,51.25 -2015-06-02 02:00:00,4060.6,0.0165,50.32 -2015-06-02 03:00:00,3948.208,0.04,50.67 -2015-06-02 04:00:00,3961.433,0.0231,50.2 -2015-06-02 05:00:00,4116.842,0.0,50.32 -2015-06-02 06:00:00,4610.892,0.0065,50.32 -2015-06-02 07:00:00,5231.457,0.0,50.7 -2015-06-02 08:00:00,5689.7,0.01,50.56 -2015-06-02 09:00:00,5971.725,0.0065,50.71 -2015-06-02 10:00:00,6106.05,0.01,51.76 -2015-06-02 11:00:00,6186.2,0.0,52.25 -2015-06-02 12:00:00,6200.8,0.0,53.05 -2015-06-02 13:00:00,6211.325,0.0035,53.39 -2015-06-02 14:00:00,6190.925,0.01,53.86 -2015-06-02 15:00:00,6206.067,0.0135,54.05 -2015-06-02 16:00:00,6227.958,0.0427,54.25 -2015-06-02 17:00:00,6209.375,0.0035,54.19 -2015-06-02 18:00:00,6048.225,0.0235,54.24 -2015-06-02 19:00:00,5908.258,0.02,54.18 -2015-06-02 20:00:00,5818.733,0.0469,54.33 -2015-06-02 21:00:00,5659.575,0.0196,54.05 -2015-06-02 22:00:00,5318.067,0.01,53.86 -2015-06-02 23:00:00,4897.258,0.0065,53.86 -2015-06-03 00:00:00,4483.333,0.0,53.86 -2015-06-03 01:00:00,4216.483,0.0,53.86 -2015-06-03 02:00:00,4058.958,0.0,53.86 -2015-06-03 03:00:00,3983.325,0.0,53.52 -2015-06-03 04:00:00,3993.267,0.0,52.86 -2015-06-03 05:00:00,4144.933,0.0,53.05 -2015-06-03 06:00:00,4625.583,0.0,53.18 -2015-06-03 07:00:00,5227.625,0.0,54.06 -2015-06-03 08:00:00,5676.442,0.0,55.05 -2015-06-03 09:00:00,5960.058,0.0,56.93 -2015-06-03 10:00:00,6102.467,0.0,59.01 -2015-06-03 11:00:00,6185.892,0.0,61.53 -2015-06-03 12:00:00,6247.758,0.0,62.35 -2015-06-03 13:00:00,6307.658,0.0,64.32 -2015-06-03 14:00:00,6346.317,0.0,64.37 -2015-06-03 15:00:00,6387.5,0.0,65.22 -2015-06-03 16:00:00,6411.442,0.0,64.82 -2015-06-03 17:00:00,6333.925,0.0,64.64 -2015-06-03 18:00:00,6062.658,0.0,62.44 -2015-06-03 19:00:00,5837.883,0.0,60.69 -2015-06-03 20:00:00,5740.042,0.0,59.2 -2015-06-03 21:00:00,5670.333,0.0,57.27 -2015-06-03 22:00:00,5362.517,0.0,56.79 -2015-06-03 23:00:00,4942.733,0.0,56.4 -2015-06-04 00:00:00,4533.3,0.0,55.72 -2015-06-04 01:00:00,4260.442,0.0,55.72 -2015-06-04 02:00:00,4093.083,0.0,55.04 -2015-06-04 03:00:00,3947.317,0.0,55.23 -2015-06-04 04:00:00,3940.783,0.0,54.37 -2015-06-04 05:00:00,4078.458,0.0,54.72 -2015-06-04 06:00:00,4567.0,0.0,54.86 -2015-06-04 07:00:00,5156.117,0.0,55.05 -2015-06-04 08:00:00,5610.883,0.0,55.25 -2015-06-04 09:00:00,5946.242,0.0,56.25 -2015-06-04 10:00:00,6096.733,0.0,56.9 -2015-06-04 11:00:00,6175.3,0.0,58.01 -2015-06-04 12:00:00,6242.707,0.0,58.97 -2015-06-04 13:00:00,6302.817,0.0,59.97 -2015-06-04 14:00:00,6333.925,0.0,62.38 -2015-06-04 15:00:00,6320.608,0.0,62.68 -2015-06-04 16:00:00,6299.225,0.0,62.35 -2015-06-04 17:00:00,6242.592,0.0,63.25 -2015-06-04 18:00:00,6014.058,0.0,61.83 -2015-06-04 19:00:00,5835.908,0.0,61.22 -2015-06-04 20:00:00,5758.2,0.0,60.88 -2015-06-04 21:00:00,5686.058,0.0,59.53 -2015-06-04 22:00:00,5364.2,0.0,58.66 -2015-06-04 23:00:00,4950.067,0.0,57.59 -2015-06-05 00:00:00,4555.95,0.0,56.93 -2015-06-05 01:00:00,4283.142,0.0,56.91 -2015-06-05 02:00:00,4114.917,0.0,56.37 -2015-06-05 03:00:00,4031.175,0.0,56.05 -2015-06-05 04:00:00,4036.633,0.0,55.86 -2015-06-05 05:00:00,4192.75,0.0,55.86 -2015-06-05 06:00:00,4643.217,0.0,56.06 -2015-06-05 07:00:00,5293.536,0.0,56.86 -2015-06-05 08:00:00,5727.283,0.0,57.25 -2015-06-05 09:00:00,5988.875,0.0,57.79 -2015-06-05 10:00:00,6135.867,0.0,58.86 -2015-06-05 11:00:00,6178.767,0.0,58.28 -2015-06-05 12:00:00,6233.858,0.0,58.46 -2015-06-05 13:00:00,6256.617,0.0035,59.03 -2015-06-05 14:00:00,6264.1,0.0,61.52 -2015-06-05 15:00:00,6338.158,0.0,63.1 -2015-06-05 16:00:00,6387.192,0.0,63.55 -2015-06-05 17:00:00,6332.708,0.0,64.68 -2015-06-05 18:00:00,6090.325,0.0,64.25 -2015-06-05 19:00:00,5892.525,0.0,63.96 -2015-06-05 20:00:00,5782.167,0.0,62.3 -2015-06-05 21:00:00,5684.357,0.0,61.06 -2015-06-05 22:00:00,5407.742,0.0,60.93 -2015-06-05 23:00:00,5062.833,0.0,60.42 -2015-06-06 00:00:00,4689.225,0.0,60.34 -2015-06-06 01:00:00,4430.458,0.0,59.85 -2015-06-06 02:00:00,4268.3,0.0,59.85 -2015-06-06 03:00:00,4145.292,0.0,59.96 -2015-06-06 04:00:00,4107.7,0.0,59.78 -2015-06-06 05:00:00,4137.675,0.2111,60.96 -2015-06-06 06:00:00,4285.9,0.0196,63.0 -2015-06-06 07:00:00,4577.933,0.0327,62.28 -2015-06-06 08:00:00,4938.317,0.0,63.35 -2015-06-06 09:00:00,5268.025,0.0,63.9 -2015-06-06 10:00:00,5520.508,0.0,65.77 -2015-06-06 11:00:00,5639.558,0.0,65.91 -2015-06-06 12:00:00,5704.175,0.0,68.03 -2015-06-06 13:00:00,5698.708,0.0,69.86 -2015-06-06 14:00:00,5683.8,0.0,72.65 -2015-06-06 15:00:00,5658.092,0.0,72.58 -2015-06-06 16:00:00,5621.417,0.0,73.6 -2015-06-06 17:00:00,5598.008,0.0,74.25 -2015-06-06 18:00:00,5560.242,0.0,73.92 -2015-06-06 19:00:00,5472.192,0.0,73.18 -2015-06-06 20:00:00,5442.55,0.0,71.79 -2015-06-06 21:00:00,5447.0,0.0,69.5 -2015-06-06 22:00:00,5268.483,0.0,66.72 -2015-06-06 23:00:00,4997.583,0.0,64.45 -2015-06-07 00:00:00,4693.983,0.0,62.16 -2015-06-07 01:00:00,4419.533,0.0,60.44 -2015-06-07 02:00:00,4218.108,0.0,59.49 -2015-06-07 03:00:00,4082.625,0.0,59.25 -2015-06-07 04:00:00,4008.483,0.0,58.36 -2015-06-07 05:00:00,3925.725,0.0,56.82 -2015-06-07 06:00:00,3978.967,0.0,56.63 -2015-06-07 07:00:00,4180.025,0.0,58.21 -2015-06-07 08:00:00,4477.883,0.0,60.61 -2015-06-07 09:00:00,4816.042,0.0,61.84 -2015-06-07 10:00:00,5100.758,0.0,63.67 -2015-06-07 11:00:00,5295.183,0.0,65.04 -2015-06-07 12:00:00,5401.483,0.0,68.08 -2015-06-07 13:00:00,5432.767,0.0,68.96 -2015-06-07 14:00:00,5416.817,0.0,69.22 -2015-06-07 15:00:00,5403.75,0.0,69.36 -2015-06-07 16:00:00,5419.058,0.0,69.18 -2015-06-07 17:00:00,5412.917,0.0,68.5 -2015-06-07 18:00:00,5403.017,0.0,67.68 -2015-06-07 19:00:00,5343.083,0.0,66.41 -2015-06-07 20:00:00,5387.167,0.0,65.17 -2015-06-07 21:00:00,5429.167,0.0,64.05 -2015-06-07 22:00:00,5216.05,0.0,63.74 -2015-06-07 23:00:00,4911.183,0.0,62.88 -2015-06-08 00:00:00,4597.575,0.0,63.26 -2015-06-08 01:00:00,4367.533,0.0,62.42 -2015-06-08 02:00:00,4245.2,0.0,62.19 -2015-06-08 03:00:00,4190.483,0.0,62.54 -2015-06-08 04:00:00,4223.908,0.0,62.54 -2015-06-08 05:00:00,4440.1,0.0,62.54 -2015-06-08 06:00:00,4994.114,0.0,62.84 -2015-06-08 07:00:00,5578.942,0.0,63.17 -2015-06-08 08:00:00,6075.058,0.0,64.4 -2015-06-08 09:00:00,6411.583,0.0,65.87 -2015-06-08 10:00:00,6589.783,0.0069,65.96 -2015-06-08 11:00:00,6772.233,0.0035,67.03 -2015-06-08 12:00:00,6932.308,0.0,71.14 -2015-06-08 13:00:00,7064.35,0.0,73.41 -2015-06-08 14:00:00,7179.15,0.0,74.37 -2015-06-08 15:00:00,7303.107,0.0,73.52 -2015-06-08 16:00:00,7378.192,0.0,74.03 -2015-06-08 17:00:00,7332.258,0.0,74.15 -2015-06-08 18:00:00,7024.142,0.0,72.74 -2015-06-08 19:00:00,6703.158,0.0,71.91 -2015-06-08 20:00:00,6549.058,0.0,70.79 -2015-06-08 21:00:00,6478.875,0.0035,71.26 -2015-06-08 22:00:00,6161.892,0.0173,71.58 -2015-06-08 23:00:00,5697.983,0.0135,70.29 -2015-06-09 00:00:00,5229.317,0.0304,69.34 -2015-06-09 01:00:00,4921.517,0.01,68.17 -2015-06-09 02:00:00,4743.133,0.01,67.91 -2015-06-09 03:00:00,4650.267,0.0,67.15 -2015-06-09 04:00:00,4666.375,0.0,67.4 -2015-06-09 05:00:00,4877.858,0.0,67.25 -2015-06-09 06:00:00,5454.967,0.0,67.37 -2015-06-09 07:00:00,6171.408,0.0,67.96 -2015-06-09 08:00:00,6689.708,0.0,68.59 -2015-06-09 09:00:00,7050.517,0.0,70.11 -2015-06-09 10:00:00,7241.058,0.0,70.18 -2015-06-09 11:00:00,7409.442,0.0,71.38 -2015-06-09 12:00:00,7639.0,0.0,75.3 -2015-06-09 13:00:00,7821.133,0.0,77.23 -2015-06-09 14:00:00,7944.133,0.0,78.02 -2015-06-09 15:00:00,7942.942,0.0,77.39 -2015-06-09 16:00:00,8022.467,0.0,80.01 -2015-06-09 17:00:00,7939.125,0.0,82.21 -2015-06-09 18:00:00,7590.175,0.0,81.43 -2015-06-09 19:00:00,7218.217,0.0,80.02 -2015-06-09 20:00:00,7012.2,0.0,77.85 -2015-06-09 21:00:00,6893.333,0.0,76.11 -2015-06-09 22:00:00,6544.267,0.0,74.04 -2015-06-09 23:00:00,6030.917,0.0,73.17 -2015-06-10 00:00:00,5530.942,0.0,71.13 -2015-06-10 01:00:00,5156.733,0.0,69.65 -2015-06-10 02:00:00,4918.458,0.0,68.65 -2015-06-10 03:00:00,4793.592,0.0,67.48 -2015-06-10 04:00:00,4773.675,0.0,66.19 -2015-06-10 05:00:00,4930.458,0.0,65.63 -2015-06-10 06:00:00,5494.7,0.0,65.83 -2015-06-10 07:00:00,6210.95,0.0,66.35 -2015-06-10 08:00:00,6784.8,0.0,68.62 -2015-06-10 09:00:00,7190.929,0.0,69.59 -2015-06-10 10:00:00,7432.467,0.0,72.05 -2015-06-10 11:00:00,7585.633,0.0,73.28 -2015-06-10 12:00:00,7687.158,0.0,76.34 -2015-06-10 13:00:00,7777.108,0.0,76.92 -2015-06-10 14:00:00,7852.664,0.0,78.01 -2015-06-10 15:00:00,7941.0,0.0,77.51 -2015-06-10 16:00:00,7990.5,0.0,76.18 -2015-06-10 17:00:00,7976.658,0.0,77.75 -2015-06-10 18:00:00,7662.042,0.0,78.7 -2015-06-10 19:00:00,7370.633,0.0,77.64 -2015-06-10 20:00:00,7216.483,0.0,77.12 -2015-06-10 21:00:00,7154.208,0.0,76.77 -2015-06-10 22:00:00,6853.658,0.0,76.59 -2015-06-10 23:00:00,6364.425,0.0,75.94 -2015-06-11 00:00:00,5839.025,0.0,74.4 -2015-06-11 01:00:00,5489.533,0.0,73.67 -2015-06-11 02:00:00,5266.167,0.0,73.02 -2015-06-11 03:00:00,5148.483,0.0,71.79 -2015-06-11 04:00:00,5143.642,0.0,72.23 -2015-06-11 05:00:00,5347.3,0.0,71.23 -2015-06-11 06:00:00,5922.308,0.0,70.11 -2015-06-11 07:00:00,6659.142,0.0,71.35 -2015-06-11 08:00:00,7277.75,0.0,72.49 -2015-06-11 09:00:00,7690.167,0.0,73.78 -2015-06-11 10:00:00,8018.375,0.0,76.68 -2015-06-11 11:00:00,8346.942,0.0,80.26 -2015-06-11 12:00:00,8644.636,0.0,82.67 -2015-06-11 13:00:00,8858.725,0.0,85.1 -2015-06-11 14:00:00,8945.425,0.0,84.99 -2015-06-11 15:00:00,9185.842,0.0,87.32 -2015-06-11 16:00:00,9379.866,0.0,87.62 -2015-06-11 17:00:00,9403.707,0.0,87.9 -2015-06-11 18:00:00,9127.669,0.0,88.83 -2015-06-11 19:00:00,8867.6,0.0,87.93 -2015-06-11 20:00:00,8702.592,0.0,87.75 -2015-06-11 21:00:00,8646.059,0.0,85.47 -2015-06-11 22:00:00,8292.717,0.0,85.9 -2015-06-11 23:00:00,7744.55,0.0,83.57 -2015-06-12 00:00:00,7152.958,0.0,83.6 -2015-06-12 01:00:00,6732.233,0.0,81.99 -2015-06-12 02:00:00,6430.5,0.0,79.29 -2015-06-12 03:00:00,6211.933,0.0,76.84 -2015-06-12 04:00:00,6070.8,0.0,75.87 -2015-06-12 05:00:00,6124.625,0.0,73.99 -2015-06-12 06:00:00,6588.2,0.0,73.31 -2015-06-12 07:00:00,7250.208,0.0,73.71 -2015-06-12 08:00:00,7784.192,0.0,74.52 -2015-06-12 09:00:00,8218.092,0.0,76.21 -2015-06-12 10:00:00,8509.884,0.0,77.15 -2015-06-12 11:00:00,8701.625,0.0,79.4 -2015-06-12 12:00:00,8796.634,0.0,79.26 -2015-06-12 13:00:00,8939.542,0.0,79.72 -2015-06-12 14:00:00,9137.313,0.0,81.01 -2015-06-12 15:00:00,9342.991,0.0,82.39 -2015-06-12 16:00:00,9391.134,0.0,83.63 -2015-06-12 17:00:00,9270.075,0.0,81.95 -2015-06-12 18:00:00,8939.009,0.0,81.23 -2015-06-12 19:00:00,8684.833,0.0,82.59 -2015-06-12 20:00:00,8511.184,0.0,82.62 -2015-06-12 21:00:00,8455.2,0.0,82.77 -2015-06-12 22:00:00,8185.742,0.0,82.48 -2015-06-12 23:00:00,7783.717,0.0,82.28 -2015-06-13 00:00:00,7287.942,0.0,81.59 -2015-06-13 01:00:00,6923.867,0.0,80.58 -2015-06-13 02:00:00,6663.383,0.0,81.12 -2015-06-13 03:00:00,6430.433,0.0,79.82 -2015-06-13 04:00:00,6270.55,0.0,78.37 -2015-06-13 05:00:00,6158.092,0.0,76.67 -2015-06-13 06:00:00,6252.125,0.0,75.87 -2015-06-13 07:00:00,6560.883,0.0,75.57 -2015-06-13 08:00:00,6897.35,0.0,76.38 -2015-06-13 09:00:00,7200.617,0.0,75.45 -2015-06-13 10:00:00,7399.45,0.0,75.38 -2015-06-13 11:00:00,7519.542,0.0,74.78 -2015-06-13 12:00:00,7624.508,0.0,77.26 -2015-06-13 13:00:00,7640.408,0.0,79.63 -2015-06-13 14:00:00,7685.85,0.0,81.3 -2015-06-13 15:00:00,7710.775,0.0,82.21 -2015-06-13 16:00:00,7731.175,0.0,82.81 -2015-06-13 17:00:00,7689.408,0.0,82.56 -2015-06-13 18:00:00,7584.958,0.0,82.21 -2015-06-13 19:00:00,7433.575,0.0,81.54 -2015-06-13 20:00:00,7271.758,0.0,80.7 -2015-06-13 21:00:00,7282.25,0.0,78.89 -2015-06-13 22:00:00,7082.75,0.0,77.37 -2015-06-13 23:00:00,6769.367,0.0,73.62 -2015-06-14 00:00:00,6388.025,0.0,72.28 -2015-06-14 01:00:00,6048.025,0.0,71.09 -2015-06-14 02:00:00,5803.658,0.0,70.96 -2015-06-14 03:00:00,5647.133,0.0,70.77 -2015-06-14 04:00:00,5532.483,0.0,69.94 -2015-06-14 05:00:00,5447.125,0.0,68.42 -2015-06-14 06:00:00,5491.342,0.0,67.6 -2015-06-14 07:00:00,5794.308,0.0,69.57 -2015-06-14 08:00:00,6188.308,0.0,72.32 -2015-06-14 09:00:00,6583.933,0.0,74.83 -2015-06-14 10:00:00,6917.217,0.0,76.4 -2015-06-14 11:00:00,7187.792,0.0,78.35 -2015-06-14 12:00:00,7373.542,0.0,79.37 -2015-06-14 13:00:00,7486.475,0.0,80.41 -2015-06-14 14:00:00,7557.042,0.0,80.93 -2015-06-14 15:00:00,7609.275,0.0,82.62 -2015-06-14 16:00:00,7611.092,0.0,81.73 -2015-06-14 17:00:00,7537.317,0.0,80.59 -2015-06-14 18:00:00,7389.108,0.0,79.25 -2015-06-14 19:00:00,7274.842,0.0,78.35 -2015-06-14 20:00:00,7229.358,0.0,77.32 -2015-06-14 21:00:00,7228.242,0.0,75.25 -2015-06-14 22:00:00,6955.325,0.0,72.56 -2015-06-14 23:00:00,6448.85,0.1343,68.27 -2015-06-15 00:00:00,6051.367,0.0165,66.6 -2015-06-15 01:00:00,5755.283,0.0265,66.61 -2015-06-15 02:00:00,5571.7,0.0653,66.79 -2015-06-15 03:00:00,5485.092,0.0427,66.59 -2015-06-15 04:00:00,5507.975,0.1463,66.81 -2015-06-15 05:00:00,5755.2,0.2156,67.05 -2015-06-15 06:00:00,6262.133,0.0131,68.4 -2015-06-15 07:00:00,6946.475,0.0,68.93 -2015-06-15 08:00:00,7504.85,0.0,69.74 -2015-06-15 09:00:00,7881.55,0.0,69.98 -2015-06-15 10:00:00,8165.875,0.0,71.06 -2015-06-15 11:00:00,8372.816,0.0,73.09 -2015-06-15 12:00:00,8729.908,0.0,76.26 -2015-06-15 13:00:00,8963.366,0.0,77.92 -2015-06-15 14:00:00,9009.259,0.0035,76.16 -2015-06-15 15:00:00,8862.384,0.0901,74.84 -2015-06-15 16:00:00,8577.792,0.0347,70.52 -2015-06-15 17:00:00,8218.059,0.0347,67.14 -2015-06-15 18:00:00,7733.633,0.0135,66.24 -2015-06-15 19:00:00,7360.807,0.0,65.8 -2015-06-15 20:00:00,7115.758,0.0,64.75 -2015-06-15 21:00:00,6920.808,0.0,64.2 -2015-06-15 22:00:00,6543.908,0.0,64.37 -2015-06-15 23:00:00,6076.408,0.0,64.57 -2015-06-16 00:00:00,5595.9,0.0,64.71 -2015-06-16 01:00:00,5289.175,0.0,64.71 -2015-06-16 02:00:00,5092.083,0.0,64.83 -2015-06-16 03:00:00,5003.308,0.0,64.51 -2015-06-16 04:00:00,5012.883,0.0,64.9 -2015-06-16 05:00:00,5216.575,0.0,64.7 -2015-06-16 06:00:00,5752.725,0.0,64.81 -2015-06-16 07:00:00,6444.758,0.0,65.34 -2015-06-16 08:00:00,6990.467,0.0,66.11 -2015-06-16 09:00:00,7344.408,0.0,66.98 -2015-06-16 10:00:00,7548.233,0.0,68.06 -2015-06-16 11:00:00,7692.967,0.0,68.76 -2015-06-16 12:00:00,7825.825,0.0,69.91 -2015-06-16 13:00:00,7883.083,0.0,70.95 -2015-06-16 14:00:00,7882.183,0.052,70.79 -2015-06-16 15:00:00,7974.417,0.0,71.45 -2015-06-16 16:00:00,8142.917,0.0,74.71 -2015-06-16 17:00:00,8088.392,0.2201,73.43 -2015-06-16 18:00:00,7838.642,0.3477,72.31 -2015-06-16 19:00:00,7725.394,0.0,76.02 -2015-06-16 20:00:00,7603.108,0.0,77.14 -2015-06-16 21:00:00,7468.575,0.0,76.56 -2015-06-16 22:00:00,7022.425,0.0,75.24 -2015-06-16 23:00:00,6498.225,0.0,73.93 -2015-06-17 00:00:00,5950.017,0.0,72.93 -2015-06-17 01:00:00,5578.383,0.0,73.4 -2015-06-17 02:00:00,5330.992,0.0,71.67 -2015-06-17 03:00:00,5183.333,0.0,71.35 -2015-06-17 04:00:00,5151.542,0.0,69.81 -2015-06-17 05:00:00,5330.175,0.0,69.3 -2015-06-17 06:00:00,5873.35,0.0,68.72 -2015-06-17 07:00:00,6627.321,0.0,70.45 -2015-06-17 08:00:00,7175.617,0.0,71.93 -2015-06-17 09:00:00,7564.5,0.0,73.26 -2015-06-17 10:00:00,7798.925,0.0,74.67 -2015-06-17 11:00:00,7920.575,0.0,75.47 -2015-06-17 12:00:00,7978.7,0.0,76.62 -2015-06-17 13:00:00,8020.333,0.0,76.02 -2015-06-17 14:00:00,8012.075,0.0,76.12 -2015-06-17 15:00:00,7994.183,0.0,74.89 -2015-06-17 16:00:00,7887.775,0.0,73.68 -2015-06-17 17:00:00,7678.875,0.0,71.9 -2015-06-17 18:00:00,7284.625,0.0,69.8 -2015-06-17 19:00:00,6986.425,0.0,69.15 -2015-06-17 20:00:00,6811.108,0.0,68.15 -2015-06-17 21:00:00,6681.592,0.0,67.12 -2015-06-17 22:00:00,6387.542,0.0,66.93 -2015-06-17 23:00:00,5946.892,0.0,66.59 -2015-06-18 00:00:00,5490.792,0.0,66.05 -2015-06-18 01:00:00,5194.333,0.0,65.59 -2015-06-18 02:00:00,4984.692,0.0,64.88 -2015-06-18 03:00:00,4862.308,0.0,65.05 -2015-06-18 04:00:00,4837.642,0.0,64.72 -2015-06-18 05:00:00,5019.383,0.0,64.72 -2015-06-18 06:00:00,5519.708,0.0,64.91 -2015-06-18 07:00:00,6154.475,0.0,65.47 -2015-06-18 08:00:00,6650.508,0.0,65.93 -2015-06-18 09:00:00,6955.55,0.0,66.1 -2015-06-18 10:00:00,7100.825,0.0,66.86 -2015-06-18 11:00:00,7150.133,0.0,67.12 -2015-06-18 12:00:00,7219.633,0.0,67.74 -2015-06-18 13:00:00,7273.158,0.0,67.91 -2015-06-18 14:00:00,7221.667,0.0,68.06 -2015-06-18 15:00:00,7192.883,0.0,66.19 -2015-06-18 16:00:00,7183.775,0.0,66.29 -2015-06-18 17:00:00,7124.3,0.0,67.03 -2015-06-18 18:00:00,6852.392,0.0,67.71 -2015-06-18 19:00:00,6651.992,0.0,66.61 -2015-06-18 20:00:00,6515.825,0.0,66.12 -2015-06-18 21:00:00,6388.475,0.0,66.28 -2015-06-18 22:00:00,6098.675,0.0,65.93 -2015-06-18 23:00:00,5681.917,0.0,65.93 -2015-06-19 00:00:00,5257.957,0.0,66.4 -2015-06-19 01:00:00,4986.958,0.0,66.54 -2015-06-19 02:00:00,4818.317,0.0,66.54 -2015-06-19 03:00:00,4754.417,0.0,66.54 -2015-06-19 04:00:00,4755.3,0.0,67.01 -2015-06-19 05:00:00,4959.458,0.0,68.25 -2015-06-19 06:00:00,5536.025,0.0,68.25 -2015-06-19 07:00:00,6282.343,0.0,68.92 -2015-06-19 08:00:00,6846.0,0.0,69.78 -2015-06-19 09:00:00,7294.292,0.0,71.54 -2015-06-19 10:00:00,7617.607,0.0,74.48 -2015-06-19 11:00:00,7967.108,0.0,77.1 -2015-06-19 12:00:00,8172.667,0.0,79.88 -2015-06-19 13:00:00,8295.657,0.0,81.19 -2015-06-19 14:00:00,8331.759,0.0,82.05 -2015-06-19 15:00:00,8438.842,0.0,83.67 -2015-06-19 16:00:00,8508.059,0.0,84.59 -2015-06-19 17:00:00,8397.8,0.0,82.17 -2015-06-19 18:00:00,8020.667,0.0,81.66 -2015-06-19 19:00:00,7710.358,0.0,81.44 -2015-06-19 20:00:00,7469.433,0.0,80.03 -2015-06-19 21:00:00,7376.575,0.0,78.55 -2015-06-19 22:00:00,7111.233,0.0,78.48 -2015-06-19 23:00:00,6692.4,0.0,76.3 -2015-06-20 00:00:00,6183.0,0.0,75.45 -2015-06-20 01:00:00,5781.017,0.0,73.75 -2015-06-20 02:00:00,5468.083,0.0,72.2 -2015-06-20 03:00:00,5258.708,0.0,71.08 -2015-06-20 04:00:00,5108.633,0.0,69.88 -2015-06-20 05:00:00,5018.833,0.0,68.56 -2015-06-20 06:00:00,5089.65,0.0,68.23 -2015-06-20 07:00:00,5304.758,0.0,67.02 -2015-06-20 08:00:00,5602.158,0.0,67.22 -2015-06-20 09:00:00,5851.2,0.0,67.64 -2015-06-20 10:00:00,6051.775,0.0,67.48 -2015-06-20 11:00:00,6148.8,0.0,66.71 -2015-06-20 12:00:00,6175.225,0.0,66.34 -2015-06-20 13:00:00,6125.55,0.0139,65.81 -2015-06-20 14:00:00,6078.317,0.0069,65.47 -2015-06-20 15:00:00,6045.7,0.0,66.62 -2015-06-20 16:00:00,6052.7,0.0,67.29 -2015-06-20 17:00:00,6076.75,0.0,67.75 -2015-06-20 18:00:00,6097.108,0.0,67.48 -2015-06-20 19:00:00,6083.125,0.0,66.61 -2015-06-20 20:00:00,6091.508,0.0,66.65 -2015-06-20 21:00:00,6089.517,0.0,66.26 -2015-06-20 22:00:00,5958.875,0.0,67.28 -2015-06-20 23:00:00,5768.1,0.0,67.58 -2015-06-21 00:00:00,5505.867,0.0,68.28 -2015-06-21 01:00:00,5306.567,0.0,70.49 -2015-06-21 02:00:00,5168.508,0.0131,71.74 -2015-06-21 03:00:00,5066.733,0.0496,71.87 -2015-06-21 04:00:00,4990.05,0.0265,71.73 -2015-06-21 05:00:00,4954.75,0.0631,70.37 -2015-06-21 06:00:00,5024.833,0.0261,70.72 -2015-06-21 07:00:00,5235.308,0.0,71.28 -2015-06-21 08:00:00,5564.883,0.0,71.79 -2015-06-21 09:00:00,5952.392,0.0,72.5 -2015-06-21 10:00:00,6382.683,0.0,74.93 -2015-06-21 11:00:00,6820.35,0.0,77.99 -2015-06-21 12:00:00,7076.875,0.0,80.87 -2015-06-21 13:00:00,7218.208,0.0,81.65 -2015-06-21 14:00:00,7277.608,0.0,82.73 -2015-06-21 15:00:00,7379.358,0.0,84.51 -2015-06-21 16:00:00,7519.067,0.0,86.29 -2015-06-21 17:00:00,7591.492,0.0,87.0 -2015-06-21 18:00:00,7443.05,0.0,78.38 -2015-06-21 19:00:00,7329.321,0.0,79.29 -2015-06-21 20:00:00,7328.508,0.0,80.01 -2015-06-21 21:00:00,7489.867,0.0,80.71 -2015-06-21 22:00:00,7382.933,0.0,81.27 -2015-06-21 23:00:00,6992.867,0.1895,76.41 -2015-06-22 00:00:00,6576.992,0.0,77.38 -2015-06-22 01:00:00,6206.833,0.0,77.09 -2015-06-22 02:00:00,5960.617,0.0,75.26 -2015-06-22 03:00:00,5803.625,0.0,74.72 -2015-06-22 04:00:00,5735.175,0.0,73.79 -2015-06-22 05:00:00,5839.992,0.0,72.79 -2015-06-22 06:00:00,6305.908,0.0,72.15 -2015-06-22 07:00:00,6955.033,0.0,72.72 -2015-06-22 08:00:00,7532.208,0.0,73.37 -2015-06-22 09:00:00,7960.883,0.0,74.77 -2015-06-22 10:00:00,8224.793,0.0,76.96 -2015-06-22 11:00:00,8421.725,0.0,79.52 -2015-06-22 12:00:00,8530.866,0.0,80.52 -2015-06-22 13:00:00,8659.75,0.0,82.33 -2015-06-22 14:00:00,8828.941,0.0,83.37 -2015-06-22 15:00:00,9016.592,0.0,84.65 -2015-06-22 16:00:00,9130.153,0.0,85.68 -2015-06-22 17:00:00,9130.95,0.0,85.53 -2015-06-22 18:00:00,8845.542,0.0,85.52 -2015-06-22 19:00:00,8631.575,0.0,85.31 -2015-06-22 20:00:00,8492.95,0.0,84.15 -2015-06-22 21:00:00,8454.958,0.0,83.56 -2015-06-22 22:00:00,8113.308,0.0,82.81 -2015-06-22 23:00:00,7529.958,0.0,81.86 -2015-06-23 00:00:00,6943.8,0.0,78.77 -2015-06-23 01:00:00,6521.275,0.0,78.9 -2015-06-23 02:00:00,6275.325,0.0,76.7 -2015-06-23 03:00:00,6118.817,0.0,76.53 -2015-06-23 04:00:00,6102.967,0.0,75.87 -2015-06-23 05:00:00,6295.783,0.0,75.95 -2015-06-23 06:00:00,6879.492,0.0,76.63 -2015-06-23 07:00:00,7685.008,0.0,77.23 -2015-06-23 08:00:00,8439.566,0.0,79.2 -2015-06-23 09:00:00,8947.2,0.0,80.84 -2015-06-23 10:00:00,9297.191,0.0,82.64 -2015-06-23 11:00:00,9644.233,0.0,84.88 -2015-06-23 12:00:00,9856.55,0.0,87.02 -2015-06-23 13:00:00,9919.583,0.0,86.96 -2015-06-23 14:00:00,10075.63,0.0,87.74 -2015-06-23 15:00:00,10206.43,0.0,87.49 -2015-06-23 16:00:00,10263.83,0.0,88.65 -2015-06-23 17:00:00,10240.11,0.0,89.01 -2015-06-23 18:00:00,9729.336,0.0457,80.28 -2015-06-23 19:00:00,9546.925,0.0457,81.89 -2015-06-23 20:00:00,9354.384,0.0,82.54 -2015-06-23 21:00:00,9066.9,0.0,80.33 -2015-06-23 22:00:00,8498.333,0.0,79.3 -2015-06-23 23:00:00,7841.108,0.0,77.62 -2015-06-24 00:00:00,7190.058,0.0,76.28 -2015-06-24 01:00:00,6633.767,0.0,75.79 -2015-06-24 02:00:00,6228.317,0.0,73.54 -2015-06-24 03:00:00,5966.283,0.0,71.67 -2015-06-24 04:00:00,5848.15,0.0,69.61 -2015-06-24 05:00:00,5899.783,0.0,68.3 -2015-06-24 06:00:00,6351.933,0.0,68.03 -2015-06-24 07:00:00,7008.375,0.0,68.86 -2015-06-24 08:00:00,7541.275,0.0,70.74 -2015-06-24 09:00:00,7934.217,0.0,72.67 -2015-06-24 10:00:00,8175.283,0.0,74.61 -2015-06-24 11:00:00,8351.116,0.0,76.47 -2015-06-24 12:00:00,8448.607,0.0,78.4 -2015-06-24 13:00:00,8532.642,0.0,79.27 -2015-06-24 14:00:00,8594.875,0.0,79.79 -2015-06-24 15:00:00,8698.375,0.0,81.09 -2015-06-24 16:00:00,8700.73,0.0,81.47 -2015-06-24 17:00:00,8736.028,0.0,81.43 -2015-06-24 18:00:00,8497.217,0.0,81.94 -2015-06-24 19:00:00,8162.308,0.0,81.45 -2015-06-24 20:00:00,7880.8,0.0,79.4 -2015-06-24 21:00:00,7752.833,0.0,77.52 -2015-06-24 22:00:00,7439.558,0.0,76.33 -2015-06-24 23:00:00,6863.95,0.0,74.88 -2015-06-25 00:00:00,6365.617,0.0,73.53 -2015-06-25 01:00:00,5935.275,0.0,72.72 -2015-06-25 02:00:00,5652.942,0.0,71.32 -2015-06-25 03:00:00,5482.417,0.0,69.61 -2015-06-25 04:00:00,5406.333,0.0,68.98 -2015-06-25 05:00:00,5519.15,0.0,68.0 -2015-06-25 06:00:00,6016.15,0.0,67.86 -2015-06-25 07:00:00,6675.858,0.0,69.15 -2015-06-25 08:00:00,7259.463,0.0,70.94 -2015-06-25 09:00:00,7693.842,0.0,73.71 -2015-06-25 10:00:00,7988.85,0.0,76.37 -2015-06-25 11:00:00,8117.775,0.0,77.46 -2015-06-25 12:00:00,8258.019,0.0,78.74 -2015-06-25 13:00:00,8318.241,0.0,80.06 -2015-06-25 14:00:00,8287.792,0.0,79.91 -2015-06-25 15:00:00,8341.05,0.0,79.75 -2015-06-25 16:00:00,8286.2,0.0,79.17 -2015-06-25 17:00:00,8138.758,0.0,78.31 -2015-06-25 18:00:00,7775.142,0.0,77.59 -2015-06-25 19:00:00,7557.833,0.0,77.41 -2015-06-25 20:00:00,7458.4,0.0,76.18 -2015-06-25 21:00:00,7412.308,0.0,75.25 -2015-06-25 22:00:00,7151.642,0.0,74.23 -2015-06-25 23:00:00,6698.783,0.0,73.64 -2015-06-26 00:00:00,6233.633,0.0,72.81 -2015-06-26 01:00:00,5874.083,0.0,72.57 -2015-06-26 02:00:00,5657.031,0.0,71.91 -2015-06-26 03:00:00,5529.675,0.0,71.57 -2015-06-26 04:00:00,5492.567,0.0,71.59 -2015-06-26 05:00:00,5639.392,0.0,71.77 -2015-06-26 06:00:00,6123.383,0.0,71.23 -2015-06-26 07:00:00,6747.036,0.0,71.6 -2015-06-26 08:00:00,7258.383,0.0,72.09 -2015-06-26 09:00:00,7580.167,0.0,72.06 -2015-06-26 10:00:00,7773.9,0.0,72.86 -2015-06-26 11:00:00,7844.358,0.0,73.37 -2015-06-26 12:00:00,7909.375,0.0,73.71 -2015-06-26 13:00:00,7986.35,0.0,75.04 -2015-06-26 14:00:00,8089.617,0.0,76.96 -2015-06-26 15:00:00,8143.017,0.0,77.49 -2015-06-26 16:00:00,8162.292,0.0,76.8 -2015-06-26 17:00:00,8071.575,0.0,77.51 -2015-06-26 18:00:00,7717.742,0.0,76.34 -2015-06-26 19:00:00,7380.15,0.0,75.63 -2015-06-26 20:00:00,7125.258,0.0,72.47 -2015-06-26 21:00:00,7022.767,0.0,71.42 -2015-06-26 22:00:00,6769.158,0.0,71.08 -2015-06-26 23:00:00,6395.1,0.0,70.59 -2015-06-27 00:00:00,5981.7,0.0,70.45 -2015-06-27 01:00:00,5664.508,0.0,69.72 -2015-06-27 02:00:00,5452.958,0.0,68.91 -2015-06-27 03:00:00,5298.783,0.0,68.89 -2015-06-27 04:00:00,5204.592,0.0,68.28 -2015-06-27 05:00:00,5161.292,0.0,67.74 -2015-06-27 06:00:00,5236.408,0.0,67.74 -2015-06-27 07:00:00,5482.35,0.0,68.23 -2015-06-27 08:00:00,5770.2,0.0,68.76 -2015-06-27 09:00:00,6001.183,0.0,68.76 -2015-06-27 10:00:00,6176.867,0.0,70.1 -2015-06-27 11:00:00,6233.667,0.0,70.84 -2015-06-27 12:00:00,6229.05,0.0,70.45 -2015-06-27 13:00:00,6165.992,0.0,70.33 -2015-06-27 14:00:00,6102.175,0.0,69.28 -2015-06-27 15:00:00,6005.8,0.0,68.78 -2015-06-27 16:00:00,5920.783,0.0065,66.21 -2015-06-27 17:00:00,5840.433,0.0504,63.67 -2015-06-27 18:00:00,5792.058,0.0392,62.61 -2015-06-27 19:00:00,5772.508,0.08,62.11 -2015-06-27 20:00:00,5744.642,0.1016,62.01 -2015-06-27 21:00:00,5657.067,0.1769,60.47 -2015-06-27 22:00:00,5475.525,0.1735,59.86 -2015-06-27 23:00:00,5239.35,0.0561,61.82 -2015-06-28 00:00:00,4988.675,0.0208,62.28 -2015-06-28 01:00:00,4785.658,0.0992,62.74 -2015-06-28 02:00:00,4636.483,0.0888,63.01 -2015-06-28 03:00:00,4545.408,0.0312,63.13 -2015-06-28 04:00:00,4498.908,0.0035,63.44 -2015-06-28 05:00:00,4479.542,0.01,63.79 -2015-06-28 06:00:00,4528.4,0.0,63.91 -2015-06-28 07:00:00,4688.867,0.0035,62.99 -2015-06-28 08:00:00,4908.842,0.0035,62.44 -2015-06-28 09:00:00,5187.842,0.0,62.67 -2015-06-28 10:00:00,5415.383,0.0,63.2 -2015-06-28 11:00:00,5575.758,0.0,63.06 -2015-06-28 12:00:00,5660.892,0.0,63.51 -2015-06-28 13:00:00,5683.983,0.0,64.24 -2015-06-28 14:00:00,5764.375,0.0,65.98 -2015-06-28 15:00:00,5858.758,0.0,68.2 -2015-06-28 16:00:00,5899.942,0.0,71.6 -2015-06-28 17:00:00,5931.083,0.0,71.32 -2015-06-28 18:00:00,5927.108,0.0,71.01 -2015-06-28 19:00:00,5913.308,0.0,72.8 -2015-06-28 20:00:00,5959.433,0.0,72.55 -2015-06-28 21:00:00,6041.542,0.0,72.06 -2015-06-28 22:00:00,5869.983,0.0,71.87 -2015-06-28 23:00:00,5587.983,0.0,71.94 -2015-06-29 00:00:00,5272.042,0.0,70.97 -2015-06-29 01:00:00,4975.925,0.0,69.84 -2015-06-29 02:00:00,4773.25,0.0,68.3 -2015-06-29 03:00:00,4650.683,0.0,66.3 -2015-06-29 04:00:00,4637.2,0.0,65.12 -2015-06-29 05:00:00,4784.133,0.0,64.12 -2015-06-29 06:00:00,5234.3,0.0,63.26 -2015-06-29 07:00:00,5848.075,0.0,64.54 -2015-06-29 08:00:00,6397.217,0.0,65.42 -2015-06-29 09:00:00,6756.65,0.0,67.28 -2015-06-29 10:00:00,6952.017,0.0,68.4 -2015-06-29 11:00:00,7086.225,0.0,70.13 -2015-06-29 12:00:00,7144.45,0.0,70.96 -2015-06-29 13:00:00,7211.775,0.0,72.62 -2015-06-29 14:00:00,7259.475,0.0,73.59 -2015-06-29 15:00:00,7258.917,0.0,74.48 -2015-06-29 16:00:00,7278.358,0.0,74.43 -2015-06-29 17:00:00,7321.533,0.0,75.3 -2015-06-29 18:00:00,7074.075,0.0,75.8 -2015-06-29 19:00:00,6849.275,0.0,75.48 -2015-06-29 20:00:00,6676.417,0.0,75.53 -2015-06-29 21:00:00,6629.258,0.0,74.3 -2015-06-29 22:00:00,6372.158,0.0,73.06 -2015-06-29 23:00:00,5964.208,0.0,72.45 -2015-06-30 00:00:00,5537.15,0.0,71.19 -2015-06-30 01:00:00,5234.342,0.0,70.4 -2015-06-30 02:00:00,5037.933,0.0,70.45 -2015-06-30 03:00:00,4923.983,0.0,69.28 -2015-06-30 04:00:00,4890.55,0.0,69.01 -2015-06-30 05:00:00,5041.008,0.0,67.6 -2015-06-30 06:00:00,5561.308,0.0,66.77 -2015-06-30 07:00:00,6252.283,0.0,70.06 -2015-06-30 08:00:00,6852.475,0.0,71.45 -2015-06-30 09:00:00,7285.4,0.0,73.93 -2015-06-30 10:00:00,7595.108,0.0,76.77 -2015-06-30 11:00:00,7749.6,0.0,77.43 -2015-06-30 12:00:00,7800.158,0.0,78.37 -2015-06-30 13:00:00,7823.758,0.0,77.95 -2015-06-30 14:00:00,7914.5,0.0,78.72 -2015-06-30 15:00:00,8040.433,0.0,79.18 -2015-06-30 16:00:00,8015.633,0.0,78.88 -2015-06-30 17:00:00,7855.85,0.0,76.1 -2015-06-30 18:00:00,7574.858,0.0,75.51 -2015-06-30 19:00:00,7332.233,0.0,74.71 -2015-06-30 20:00:00,7203.007,0.0,74.59 -2015-06-30 21:00:00,7134.843,0.0,73.82 -2015-06-30 22:00:00,6905.992,0.0,73.64 -2015-06-30 23:00:00,6551.921,0.0,73.98 -2015-07-01 00:00:00,6095.125,0.0,72.95 -2015-07-01 01:00:00,5761.592,0.0,72.98 -2015-07-01 02:00:00,5567.183,0.0,73.1 -2015-07-01 03:00:00,5462.392,0.0,72.49 -2015-07-01 04:00:00,5426.575,0.0477,72.44 -2015-07-01 05:00:00,5513.817,0.3498,70.76 -2015-07-01 06:00:00,5998.267,0.0065,70.03 -2015-07-01 07:00:00,6586.267,0.0,69.89 -2015-07-01 08:00:00,7115.258,0.0,70.69 -2015-07-01 09:00:00,7486.733,0.0,71.56 -2015-07-01 10:00:00,7762.358,0.0,73.22 -2015-07-01 11:00:00,7961.608,0.0,75.6 -2015-07-01 12:00:00,8111.117,0.0,76.28 -2015-07-01 13:00:00,8237.358,0.0,77.73 -2015-07-01 14:00:00,8327.7,0.0,79.06 -2015-07-01 15:00:00,8439.717,0.0,80.6 -2015-07-01 16:00:00,8470.059,0.0,81.91 -2015-07-01 17:00:00,8398.833,0.0,81.74 -2015-07-01 18:00:00,8083.283,0.0,82.09 -2015-07-01 19:00:00,7783.925,0.0,81.21 -2015-07-01 20:00:00,7542.442,0.0,79.98 -2015-07-01 21:00:00,7467.292,0.0,78.48 -2015-07-01 22:00:00,7183.308,0.0,78.04 -2015-07-01 23:00:00,6752.033,0.0,77.16 -2015-07-02 00:00:00,6274.692,0.0,76.33 -2015-07-02 01:00:00,5894.692,0.0,74.65 -2015-07-02 02:00:00,5612.158,0.0,72.82 -2015-07-02 03:00:00,5448.308,0.0,71.45 -2015-07-02 04:00:00,5376.608,0.0,70.13 -2015-07-02 05:00:00,5498.242,0.0,69.67 -2015-07-02 06:00:00,5985.464,0.0,69.6 -2015-07-02 07:00:00,6535.625,0.0,70.21 -2015-07-02 08:00:00,6959.417,0.0,70.69 -2015-07-02 09:00:00,7298.3,0.0,71.54 -2015-07-02 10:00:00,7579.825,0.0,74.29 -2015-07-02 11:00:00,7748.317,0.0,75.82 -2015-07-02 12:00:00,7895.45,0.0,77.39 -2015-07-02 13:00:00,7947.958,0.0,77.15 -2015-07-02 14:00:00,7957.725,0.0,78.35 -2015-07-02 15:00:00,7824.175,0.0,77.27 -2015-07-02 16:00:00,7741.767,0.0,75.82 -2015-07-02 17:00:00,7651.033,0.0,75.47 -2015-07-02 18:00:00,7332.892,0.0,75.0 -2015-07-02 19:00:00,7090.2,0.0,73.2 -2015-07-02 20:00:00,6983.725,0.0,72.32 -2015-07-02 21:00:00,6866.9,0.0,72.13 -2015-07-02 22:00:00,6582.967,0.0,71.95 -2015-07-02 23:00:00,6250.958,0.0,71.74 -2015-07-03 00:00:00,5851.725,0.0,71.18 -2015-07-03 01:00:00,5550.775,0.0,70.2 -2015-07-03 02:00:00,5316.442,0.0,69.57 -2015-07-03 03:00:00,5116.479,0.0,68.94 -2015-07-03 04:00:00,5002.742,0.0,67.62 -2015-07-03 05:00:00,4994.1,0.0,67.11 -2015-07-03 06:00:00,5172.45,0.0,66.5 -2015-07-03 07:00:00,5527.233,0.0,67.62 -2015-07-03 08:00:00,5863.858,0.0,68.62 -2015-07-03 09:00:00,6171.533,0.0,69.93 -2015-07-03 10:00:00,6401.942,0.0,71.61 -2015-07-03 11:00:00,6558.342,0.0,73.22 -2015-07-03 12:00:00,6660.075,0.0,75.25 -2015-07-03 13:00:00,6731.45,0.0,75.53 -2015-07-03 14:00:00,6813.875,0.0,77.95 -2015-07-03 15:00:00,6907.243,0.0,79.83 -2015-07-03 16:00:00,6945.117,0.0,79.61 -2015-07-03 17:00:00,6837.075,0.0,78.27 -2015-07-03 18:00:00,6691.158,0.0,77.0 -2015-07-03 19:00:00,6557.075,0.0,76.03 -2015-07-03 20:00:00,6466.533,0.0,74.68 -2015-07-03 21:00:00,6437.05,0.0,73.47 -2015-07-03 22:00:00,6281.275,0.0,72.59 -2015-07-03 23:00:00,6015.617,0.0,71.59 -2015-07-04 00:00:00,5694.675,0.0,71.59 -2015-07-04 01:00:00,5423.267,0.0,71.05 -2015-07-04 02:00:00,5217.633,0.0,70.72 -2015-07-04 03:00:00,5116.467,0.0,70.76 -2015-07-04 04:00:00,5030.942,0.0,70.19 -2015-07-04 05:00:00,4997.567,0.0,70.08 -2015-07-04 06:00:00,5059.608,0.0,70.04 -2015-07-04 07:00:00,5236.525,0.0,69.88 -2015-07-04 08:00:00,5465.608,0.0,70.57 -2015-07-04 09:00:00,5713.925,0.0,70.71 -2015-07-04 10:00:00,5910.533,0.0,71.57 -2015-07-04 11:00:00,5976.383,0.0,71.29 -2015-07-04 12:00:00,5996.092,0.0,71.43 -2015-07-04 13:00:00,5968.308,0.0,70.81 -2015-07-04 14:00:00,5919.625,0.0,70.75 -2015-07-04 15:00:00,5939.642,0.0,71.44 -2015-07-04 16:00:00,5980.9,0.0,74.34 -2015-07-04 17:00:00,5986.642,0.0,74.83 -2015-07-04 18:00:00,5916.033,0.0,74.93 -2015-07-04 19:00:00,5800.758,0.0,74.4 -2015-07-04 20:00:00,5748.033,0.0,73.25 -2015-07-04 21:00:00,5759.742,0.0,72.54 -2015-07-04 22:00:00,5688.908,0.0,72.26 -2015-07-04 23:00:00,5610.808,0.0,70.9 -2015-07-05 00:00:00,5434.667,0.0,70.33 -2015-07-05 01:00:00,5210.925,0.0,70.21 -2015-07-05 02:00:00,5036.092,0.0,69.47 -2015-07-05 03:00:00,4934.958,0.0,69.16 -2015-07-05 04:00:00,4869.867,0.0,69.0 -2015-07-05 05:00:00,4835.625,0.0,69.07 -2015-07-05 06:00:00,4869.267,0.0,69.38 -2015-07-05 07:00:00,5074.567,0.0,69.56 -2015-07-05 08:00:00,5343.25,0.0,71.23 -2015-07-05 09:00:00,5663.25,0.0,71.96 -2015-07-05 10:00:00,5987.35,0.0,73.94 -2015-07-05 11:00:00,6255.383,0.0,76.09 -2015-07-05 12:00:00,6436.008,0.0,77.85 -2015-07-05 13:00:00,6570.142,0.0,79.02 -2015-07-05 14:00:00,6681.617,0.0,80.28 -2015-07-05 15:00:00,6779.593,0.0,80.88 -2015-07-05 16:00:00,6864.738,0.0,81.96 -2015-07-05 17:00:00,6884.133,0.0,80.48 -2015-07-05 18:00:00,6819.608,0.0,79.32 -2015-07-05 19:00:00,6727.892,0.0,78.08 -2015-07-05 20:00:00,6730.933,0.0,75.91 -2015-07-05 21:00:00,6855.075,0.0,75.05 -2015-07-05 22:00:00,6762.608,0.0,74.4 -2015-07-05 23:00:00,6471.9,0.0,73.72 -2015-07-06 00:00:00,6155.775,0.0,74.05 -2015-07-06 01:00:00,5921.142,0.0,72.58 -2015-07-06 02:00:00,5732.425,0.0,72.38 -2015-07-06 03:00:00,5647.783,0.0,72.38 -2015-07-06 04:00:00,5636.342,0.0,71.19 -2015-07-06 05:00:00,5793.183,0.0,71.07 -2015-07-06 06:00:00,6236.908,0.0,71.07 -2015-07-06 07:00:00,6898.908,0.0,71.45 -2015-07-06 08:00:00,7515.125,0.0,72.24 -2015-07-06 09:00:00,8035.183,0.0,74.33 -2015-07-06 10:00:00,8361.467,0.0,77.07 -2015-07-06 11:00:00,8515.542,0.0,78.57 -2015-07-06 12:00:00,8582.858,0.0,79.01 -2015-07-06 13:00:00,8646.884,0.0,80.01 -2015-07-06 14:00:00,8725.783,0.0,80.27 -2015-07-06 15:00:00,8732.009,0.0,80.02 -2015-07-06 16:00:00,8729.908,0.0,79.43 -2015-07-06 17:00:00,8597.525,0.0,79.69 -2015-07-06 18:00:00,8227.608,0.0,79.62 -2015-07-06 19:00:00,7905.517,0.0,77.83 -2015-07-06 20:00:00,7676.7,0.0,76.15 -2015-07-06 21:00:00,7639.775,0.0,75.28 -2015-07-06 22:00:00,7360.392,0.0,74.96 -2015-07-06 23:00:00,6945.342,0.0,74.49 -2015-07-07 00:00:00,6541.75,0.0,74.42 -2015-07-07 01:00:00,6238.192,0.0,74.17 -2015-07-07 02:00:00,6063.858,0.0,74.35 -2015-07-07 03:00:00,5928.3,0.0,74.59 -2015-07-07 04:00:00,5949.258,0.0,73.96 -2015-07-07 05:00:00,6197.614,0.0,74.42 -2015-07-07 06:00:00,6739.275,0.0,74.8 -2015-07-07 07:00:00,7416.325,0.0,76.41 -2015-07-07 08:00:00,8030.758,0.0,77.13 -2015-07-07 09:00:00,8536.608,0.0,77.76 -2015-07-07 10:00:00,8904.917,0.0035,79.99 -2015-07-07 11:00:00,9162.566,0.0,81.41 -2015-07-07 12:00:00,9330.884,0.0,83.3 -2015-07-07 13:00:00,9474.967,0.0,84.06 -2015-07-07 14:00:00,9556.717,0.0,83.37 -2015-07-07 15:00:00,9540.741,0.0,81.99 -2015-07-07 16:00:00,9636.042,0.0,83.13 -2015-07-07 17:00:00,9538.071,0.0,82.82 -2015-07-07 18:00:00,9284.3,0.0,83.07 -2015-07-07 19:00:00,9032.25,0.0,84.76 -2015-07-07 20:00:00,8796.366,0.0,83.8 -2015-07-07 21:00:00,8746.475,0.0,82.46 -2015-07-07 22:00:00,8413.167,0.0,82.11 -2015-07-07 23:00:00,7863.442,0.0,80.6 -2015-07-08 00:00:00,7314.408,0.0,80.14 -2015-07-08 01:00:00,6891.0,0.0,79.3 -2015-07-08 02:00:00,6619.083,0.0,78.51 -2015-07-08 03:00:00,6451.95,0.0,77.84 -2015-07-08 04:00:00,6412.9,0.0,77.23 -2015-07-08 05:00:00,6582.858,0.0,77.23 -2015-07-08 06:00:00,7102.15,0.0,77.5 -2015-07-08 07:00:00,7791.25,0.0,77.82 -2015-07-08 08:00:00,8316.267,0.0,78.16 -2015-07-08 09:00:00,8657.3,0.0,79.41 -2015-07-08 10:00:00,8942.142,0.0,80.23 -2015-07-08 11:00:00,9165.379,0.0,81.35 -2015-07-08 12:00:00,9349.967,0.0,82.96 -2015-07-08 13:00:00,9529.65,0.0,83.4 -2015-07-08 14:00:00,9699.7,0.0,84.98 -2015-07-08 15:00:00,9728.958,0.0069,84.02 -2015-07-08 16:00:00,9514.467,0.0531,79.18 -2015-07-08 17:00:00,9308.708,0.0035,78.1 -2015-07-08 18:00:00,9043.009,0.0231,77.91 -2015-07-08 19:00:00,8855.691,0.0,78.77 -2015-07-08 20:00:00,8707.458,0.0,78.77 -2015-07-08 21:00:00,8620.941,0.0,77.43 -2015-07-08 22:00:00,8279.625,0.0,76.11 -2015-07-08 23:00:00,7775.867,0.0,75.71 -2015-07-09 00:00:00,7229.4,0.0,75.26 -2015-07-09 01:00:00,6797.817,0.0,75.18 -2015-07-09 02:00:00,6496.983,0.0,75.26 -2015-07-09 03:00:00,6251.867,0.0,74.48 -2015-07-09 04:00:00,6134.142,0.0,74.36 -2015-07-09 05:00:00,6229.542,0.0,73.04 -2015-07-09 06:00:00,6613.333,0.0,72.37 -2015-07-09 07:00:00,7150.558,0.0,72.37 -2015-07-09 08:00:00,7531.636,0.0069,70.91 -2015-07-09 09:00:00,7708.233,0.0104,67.65 -2015-07-09 10:00:00,7804.825,0.0,67.69 -2015-07-09 11:00:00,7858.543,0.0,68.04 -2015-07-09 12:00:00,7923.042,0.0,69.49 -2015-07-09 13:00:00,8034.733,0.0,70.61 -2015-07-09 14:00:00,8105.533,0.0,72.57 -2015-07-09 15:00:00,8267.991,0.0,74.21 -2015-07-09 16:00:00,8415.042,0.0,74.76 -2015-07-09 17:00:00,8358.3,0.0,76.41 -2015-07-09 18:00:00,7994.233,0.0,76.17 -2015-07-09 19:00:00,7687.583,0.0,74.35 -2015-07-09 20:00:00,7571.308,0.0,73.2 -2015-07-09 21:00:00,7393.075,0.0908,71.21 -2015-07-09 22:00:00,7149.642,0.0427,71.4 -2015-07-09 23:00:00,6844.692,0.0296,72.18 -2015-07-10 00:00:00,6454.608,0.0,72.74 -2015-07-10 01:00:00,6156.358,0.0,73.54 -2015-07-10 02:00:00,5962.692,0.0,73.35 -2015-07-10 03:00:00,5861.067,0.0,73.82 -2015-07-10 04:00:00,5760.583,0.0,73.28 -2015-07-10 05:00:00,5880.667,0.0,72.28 -2015-07-10 06:00:00,6315.583,0.0,71.72 -2015-07-10 07:00:00,6912.483,0.0,72.08 -2015-07-10 08:00:00,7390.108,0.0,72.57 -2015-07-10 09:00:00,7748.733,0.0,73.13 -2015-07-10 10:00:00,7957.475,0.0,74.13 -2015-07-10 11:00:00,8044.975,0.0,75.89 -2015-07-10 12:00:00,8104.531,0.0,76.17 -2015-07-10 13:00:00,8187.007,0.0,77.65 -2015-07-10 14:00:00,8258.592,0.0,79.72 -2015-07-10 15:00:00,8329.884,0.0,80.54 -2015-07-10 16:00:00,8400.717,0.0,81.99 -2015-07-10 17:00:00,8382.733,0.0,82.59 -2015-07-10 18:00:00,8078.9,0.0,82.78 -2015-07-10 19:00:00,7783.375,0.0,82.35 -2015-07-10 20:00:00,7573.975,0.0,81.23 -2015-07-10 21:00:00,7458.067,0.0,79.55 -2015-07-10 22:00:00,7231.433,0.0,77.91 -2015-07-10 23:00:00,6870.45,0.0,76.86 -2015-07-11 00:00:00,6439.15,0.0,75.7 -2015-07-11 01:00:00,6088.083,0.0,74.72 -2015-07-11 02:00:00,5831.283,0.0,73.36 -2015-07-11 03:00:00,5627.092,0.0,72.53 -2015-07-11 04:00:00,5514.8,0.0,71.72 -2015-07-11 05:00:00,5440.9,0.0,70.53 -2015-07-11 06:00:00,5534.35,0.0,70.19 -2015-07-11 07:00:00,5812.933,0.0,70.85 -2015-07-11 08:00:00,6176.65,0.0,72.4 -2015-07-11 09:00:00,6584.292,0.0,74.42 -2015-07-11 10:00:00,6919.633,0.0,77.3 -2015-07-11 11:00:00,7158.425,0.0,79.64 -2015-07-11 12:00:00,7285.108,0.0,81.01 -2015-07-11 13:00:00,7324.433,0.0,82.37 -2015-07-11 14:00:00,7371.529,0.0,82.48 -2015-07-11 15:00:00,7407.542,0.0,82.9 -2015-07-11 16:00:00,7469.083,0.0,83.43 -2015-07-11 17:00:00,7470.756,0.0,82.82 -2015-07-11 18:00:00,7387.458,0.0,82.8 -2015-07-11 19:00:00,7273.85,0.0,82.58 -2015-07-11 20:00:00,7168.75,0.0,80.88 -2015-07-11 21:00:00,7174.717,0.0,79.43 -2015-07-11 22:00:00,7056.25,0.0,78.43 -2015-07-11 23:00:00,6821.075,0.0,77.48 -2015-07-12 00:00:00,6513.417,0.0,76.95 -2015-07-12 01:00:00,6214.267,0.0,75.66 -2015-07-12 02:00:00,5949.325,0.0,75.33 -2015-07-12 03:00:00,5794.15,0.0,74.31 -2015-07-12 04:00:00,5672.4,0.0,73.64 -2015-07-12 05:00:00,5587.25,0.0,73.33 -2015-07-12 06:00:00,5604.017,0.0,71.7 -2015-07-12 07:00:00,5823.125,0.0,72.79 -2015-07-12 08:00:00,6185.917,0.0,74.86 -2015-07-12 09:00:00,6601.533,0.0,78.13 -2015-07-12 10:00:00,7013.069,0.0,79.66 -2015-07-12 11:00:00,7269.7,0.0,81.37 -2015-07-12 12:00:00,7456.167,0.0,82.54 -2015-07-12 13:00:00,7579.233,0.0,83.68 -2015-07-12 14:00:00,7671.708,0.0,85.56 -2015-07-12 15:00:00,7759.95,0.0,85.57 -2015-07-12 16:00:00,7742.758,0.0,85.79 -2015-07-12 17:00:00,7690.542,0.0,84.3 -2015-07-12 18:00:00,7646.392,0.0,83.54 -2015-07-12 19:00:00,7579.55,0.0,82.77 -2015-07-12 20:00:00,7587.142,0.0,81.82 -2015-07-12 21:00:00,7688.308,0.0,80.21 -2015-07-12 22:00:00,7556.4,0.0,79.72 -2015-07-12 23:00:00,7200.233,0.0,78.73 -2015-07-13 00:00:00,6801.608,0.0,77.73 -2015-07-13 01:00:00,6497.433,0.0,76.87 -2015-07-13 02:00:00,6277.6,0.0,76.45 -2015-07-13 03:00:00,6172.933,0.0,75.87 -2015-07-13 04:00:00,6158.558,0.0,75.18 -2015-07-13 05:00:00,6303.667,0.0,74.86 -2015-07-13 06:00:00,6701.8,0.0,74.61 -2015-07-13 07:00:00,7361.275,0.0,75.0 -2015-07-13 08:00:00,7971.55,0.0,78.0 -2015-07-13 09:00:00,8434.767,0.0,80.35 -2015-07-13 10:00:00,8708.95,0.0,80.69 -2015-07-13 11:00:00,8846.842,0.0,78.96 -2015-07-13 12:00:00,9016.366,0.0,79.76 -2015-07-13 13:00:00,9154.616,0.0,81.13 -2015-07-13 14:00:00,9197.225,0.0,82.15 -2015-07-13 15:00:00,9202.108,0.0,82.33 -2015-07-13 16:00:00,9175.658,0.0,84.69 -2015-07-13 17:00:00,9064.241,0.0,81.22 -2015-07-13 18:00:00,8596.783,0.0,79.95 -2015-07-13 19:00:00,8261.634,0.0,78.62 -2015-07-13 20:00:00,7990.525,0.0,76.76 -2015-07-13 21:00:00,7906.408,0.0,75.28 -2015-07-13 22:00:00,7603.567,0.0,74.59 -2015-07-13 23:00:00,7151.375,0.0,74.26 -2015-07-14 00:00:00,6656.217,0.0,74.48 -2015-07-14 01:00:00,6315.158,0.0,73.42 -2015-07-14 02:00:00,6102.664,0.0,73.4 -2015-07-14 03:00:00,5991.767,0.0,72.93 -2015-07-14 04:00:00,5966.692,0.0,72.37 -2015-07-14 05:00:00,6128.9,0.0,71.93 -2015-07-14 06:00:00,6632.317,0.0,71.52 -2015-07-14 07:00:00,7344.958,0.0,73.28 -2015-07-14 08:00:00,7912.75,0.0,75.84 -2015-07-14 09:00:00,8279.45,0.0,76.49 -2015-07-14 10:00:00,8376.759,0.0,76.76 -2015-07-14 11:00:00,8530.325,0.0169,76.94 -2015-07-14 12:00:00,8655.908,0.0,77.96 -2015-07-14 13:00:00,8597.25,0.65,73.13 -2015-07-14 14:00:00,8637.475,0.6412,74.74 -2015-07-14 15:00:00,8749.208,0.0235,76.34 -2015-07-14 16:00:00,8833.35,0.0069,77.15 -2015-07-14 17:00:00,8881.283,0.0,79.11 -2015-07-14 18:00:00,8590.483,0.0,77.66 -2015-07-14 19:00:00,8397.184,0.0,78.04 -2015-07-14 20:00:00,8259.35,0.0,77.92 -2015-07-14 21:00:00,8231.908,0.0,77.15 -2015-07-14 22:00:00,7953.167,0.0,76.47 -2015-07-14 23:00:00,7480.142,0.0,75.56 -2015-07-15 00:00:00,6974.517,0.0,75.11 -2015-07-15 01:00:00,6609.892,0.0,74.96 -2015-07-15 02:00:00,6352.05,0.0,74.22 -2015-07-15 03:00:00,6218.275,0.0,74.25 -2015-07-15 04:00:00,6194.033,0.0,73.63 -2015-07-15 05:00:00,6375.342,0.0,73.7 -2015-07-15 06:00:00,6909.464,0.0,73.7 -2015-07-15 07:00:00,7570.833,0.0,73.81 -2015-07-15 08:00:00,8102.1,0.0,74.37 -2015-07-15 09:00:00,8486.225,0.0,75.93 -2015-07-15 10:00:00,8669.464,0.0,76.39 -2015-07-15 11:00:00,8679.95,0.0,76.39 -2015-07-15 12:00:00,8659.175,0.0,76.27 -2015-07-15 13:00:00,8681.395,0.0,77.61 -2015-07-15 14:00:00,8698.709,0.0,77.59 -2015-07-15 15:00:00,8738.167,0.0,80.04 -2015-07-15 16:00:00,8804.392,0.0,80.31 -2015-07-15 17:00:00,8725.708,0.0,79.96 -2015-07-15 18:00:00,8263.392,0.0,78.42 -2015-07-15 19:00:00,7907.458,0.0,77.91 -2015-07-15 20:00:00,7652.575,0.0,76.56 -2015-07-15 21:00:00,7462.317,0.0,75.72 -2015-07-15 22:00:00,7083.35,0.0,74.54 -2015-07-15 23:00:00,6565.95,0.0,72.98 -2015-07-16 00:00:00,6046.933,0.0,72.86 -2015-07-16 01:00:00,5624.033,0.0,72.06 -2015-07-16 02:00:00,5339.25,0.0,70.06 -2015-07-16 03:00:00,5165.042,0.0,68.2 -2015-07-16 04:00:00,5078.175,0.0,65.99 -2015-07-16 05:00:00,5195.0,0.0,64.88 -2015-07-16 06:00:00,5591.8,0.0,64.4 -2015-07-16 07:00:00,6170.65,0.0,64.88 -2015-07-16 08:00:00,6662.108,0.0,66.16 -2015-07-16 09:00:00,7035.964,0.0,68.08 -2015-07-16 10:00:00,7237.992,0.0,69.81 -2015-07-16 11:00:00,7386.817,0.0,70.81 -2015-07-16 12:00:00,7474.883,0.0,72.61 -2015-07-16 13:00:00,7583.8,0.0,73.54 -2015-07-16 14:00:00,7676.05,0.0,75.68 -2015-07-16 15:00:00,7773.783,0.0,76.37 -2015-07-16 16:00:00,7848.15,0.0,76.99 -2015-07-16 17:00:00,7825.608,0.0,77.48 -2015-07-16 18:00:00,7556.442,0.0,77.34 -2015-07-16 19:00:00,7263.183,0.0,75.97 -2015-07-16 20:00:00,7035.942,0.0,74.03 -2015-07-16 21:00:00,6922.75,0.0,71.42 -2015-07-16 22:00:00,6632.858,0.0,70.67 -2015-07-16 23:00:00,6247.133,0.0,70.03 -2015-07-17 00:00:00,5809.756,0.0,69.71 -2015-07-17 01:00:00,5505.192,0.0,68.86 -2015-07-17 02:00:00,5286.758,0.0,68.54 -2015-07-17 03:00:00,5148.058,0.0,67.86 -2015-07-17 04:00:00,5132.042,0.0,67.35 -2015-07-17 05:00:00,5286.293,0.0,67.16 -2015-07-17 06:00:00,5765.333,0.0,67.16 -2015-07-17 07:00:00,6420.475,0.0,68.35 -2015-07-17 08:00:00,6974.75,0.0,70.39 -2015-07-17 09:00:00,7364.475,0.0,71.27 -2015-07-17 10:00:00,7659.258,0.0,72.59 -2015-07-17 11:00:00,7824.45,0.0,74.67 -2015-07-17 12:00:00,7939.9,0.0,75.45 -2015-07-17 13:00:00,8000.358,0.0,76.75 -2015-07-17 14:00:00,8014.9,0.0,76.86 -2015-07-17 15:00:00,8028.567,0.0,76.5 -2015-07-17 16:00:00,8017.033,0.0,77.06 -2015-07-17 17:00:00,7902.65,0.0,76.76 -2015-07-17 18:00:00,7518.258,0.0,75.96 -2015-07-17 19:00:00,7147.567,0.0,74.27 -2015-07-17 20:00:00,6944.983,0.0,73.4 -2015-07-17 21:00:00,6866.908,0.0,72.74 -2015-07-17 22:00:00,6644.167,0.0,72.54 -2015-07-17 23:00:00,6341.55,0.0,72.54 -2015-07-18 00:00:00,5984.317,0.0,72.54 -2015-07-18 01:00:00,5725.408,0.0,72.54 -2015-07-18 02:00:00,5533.417,0.0,72.54 -2015-07-18 03:00:00,5421.5,0.0,72.66 -2015-07-18 04:00:00,5354.117,0.0,72.86 -2015-07-18 05:00:00,5373.307,0.0,73.05 -2015-07-18 06:00:00,5481.475,0.0,73.35 -2015-07-18 07:00:00,5762.367,0.0,73.54 -2015-07-18 08:00:00,6092.658,0.0901,73.78 -2015-07-18 09:00:00,6372.633,0.0784,72.96 -2015-07-18 10:00:00,6701.608,0.0427,72.78 -2015-07-18 11:00:00,7059.975,0.0,74.94 -2015-07-18 12:00:00,7270.392,0.0,77.55 -2015-07-18 13:00:00,7299.25,0.0,77.32 -2015-07-18 14:00:00,7426.917,0.0,79.49 -2015-07-18 15:00:00,7648.183,0.0,81.45 -2015-07-18 16:00:00,7806.058,0.0,82.7 -2015-07-18 17:00:00,7840.975,0.0,82.21 -2015-07-18 18:00:00,7797.058,0.0,82.56 -2015-07-18 19:00:00,7687.692,0.0,82.7 -2015-07-18 20:00:00,7647.275,0.0,81.42 -2015-07-18 21:00:00,7697.225,0.0,80.42 -2015-07-18 22:00:00,7542.067,0.0,80.43 -2015-07-18 23:00:00,7286.467,0.0,80.18 -2015-07-19 00:00:00,6958.65,0.0,79.45 -2015-07-19 01:00:00,6635.25,0.0,78.53 -2015-07-19 02:00:00,6394.9,0.0,78.18 -2015-07-19 03:00:00,6208.467,0.0,77.85 -2015-07-19 04:00:00,6086.467,0.0,77.65 -2015-07-19 05:00:00,6017.567,0.0,77.45 -2015-07-19 06:00:00,6030.642,0.0,77.14 -2015-07-19 07:00:00,6309.908,0.0,77.18 -2015-07-19 08:00:00,6747.425,0.0,79.84 -2015-07-19 09:00:00,7243.983,0.0,81.06 -2015-07-19 10:00:00,7737.1,0.0,83.08 -2015-07-19 11:00:00,8132.808,0.0,85.08 -2015-07-19 12:00:00,8397.833,0.0,85.73 -2015-07-19 13:00:00,8587.275,0.0,88.29 -2015-07-19 14:00:00,8745.343,0.0,89.16 -2015-07-19 15:00:00,8866.217,0.0,88.64 -2015-07-19 16:00:00,8959.658,0.0,88.85 -2015-07-19 17:00:00,8983.575,0.0,89.19 -2015-07-19 18:00:00,8964.366,0.0,89.53 -2015-07-19 19:00:00,8885.316,0.0,89.41 -2015-07-19 20:00:00,8932.634,0.0,89.8 -2015-07-19 21:00:00,9070.558,0.0,88.54 -2015-07-19 22:00:00,8923.275,0.0,87.73 -2015-07-19 23:00:00,8558.384,0.0,87.36 -2015-07-20 00:00:00,8145.125,0.0,86.43 -2015-07-20 01:00:00,7845.6,0.0,85.03 -2015-07-20 02:00:00,7607.483,0.0,84.49 -2015-07-20 03:00:00,7467.808,0.0,83.5 -2015-07-20 04:00:00,7429.033,0.0,82.98 -2015-07-20 05:00:00,7573.175,0.0,82.11 -2015-07-20 06:00:00,7951.592,0.0,82.33 -2015-07-20 07:00:00,8567.075,0.0,81.69 -2015-07-20 08:00:00,9185.259,0.0,83.05 -2015-07-20 09:00:00,9625.875,0.0,85.31 -2015-07-20 10:00:00,9936.066,0.0,86.82 -2015-07-20 11:00:00,10171.05,0.0,88.38 -2015-07-20 12:00:00,10334.07,0.0,89.42 -2015-07-20 13:00:00,10466.53,0.0,89.2 -2015-07-20 14:00:00,10497.16,0.0,90.99 -2015-07-20 15:00:00,10569.19,0.0,91.59 -2015-07-20 16:00:00,10561.2,0.0,91.54 -2015-07-20 17:00:00,10596.78,0.0,91.36 -2015-07-20 18:00:00,10346.92,0.0,90.68 -2015-07-20 19:00:00,10137.69,0.0,90.06 -2015-07-20 20:00:00,9992.55,0.0,88.55 -2015-07-20 21:00:00,9861.292,0.0,87.18 -2015-07-20 22:00:00,9527.92,0.0,85.74 -2015-07-20 23:00:00,8930.8,0.0,84.96 -2015-07-21 00:00:00,8280.625,0.0,84.23 -2015-07-21 01:00:00,7842.008,0.0,82.73 -2015-07-21 02:00:00,7558.542,0.0,81.38 -2015-07-21 03:00:00,7374.533,0.0,81.7 -2015-07-21 04:00:00,7315.4,0.0,81.52 -2015-07-21 05:00:00,7472.6,0.0,80.65 -2015-07-21 06:00:00,7905.725,0.0,80.33 -2015-07-21 07:00:00,8434.608,0.0,79.07 -2015-07-21 08:00:00,8885.7,0.0,79.65 -2015-07-21 09:00:00,9222.708,0.0,80.0 -2015-07-21 10:00:00,9425.95,0.0,82.45 -2015-07-21 11:00:00,9454.792,0.0,83.28 -2015-07-21 12:00:00,9506.934,0.0,83.96 -2015-07-21 13:00:00,9478.05,0.0,83.99 -2015-07-21 14:00:00,9504.392,0.0,84.91 -2015-07-21 15:00:00,9663.9,0.0,87.33 -2015-07-21 16:00:00,9809.184,0.0,87.14 -2015-07-21 17:00:00,9769.914,0.0,86.41 -2015-07-21 18:00:00,9538.708,0.0,86.23 -2015-07-21 19:00:00,9287.208,0.0,86.11 -2015-07-21 20:00:00,8948.184,0.0,78.61 -2015-07-21 21:00:00,8781.866,0.0,77.48 -2015-07-21 22:00:00,8405.708,0.0,76.95 -2015-07-21 23:00:00,7806.942,0.0,76.47 -2015-07-22 00:00:00,7186.1,0.0,75.3 -2015-07-22 01:00:00,6664.083,0.0,73.79 -2015-07-22 02:00:00,6271.433,0.0,72.98 -2015-07-22 03:00:00,6072.35,0.0,71.91 -2015-07-22 04:00:00,5972.383,0.0,70.72 -2015-07-22 05:00:00,6056.975,0.0,70.72 -2015-07-22 06:00:00,6423.858,0.0,70.1 -2015-07-22 07:00:00,7007.092,0.0,70.45 -2015-07-22 08:00:00,7505.175,0.0,70.86 -2015-07-22 09:00:00,7835.933,0.0,72.74 -2015-07-22 10:00:00,8060.536,0.0,74.78 -2015-07-22 11:00:00,8210.892,0.0,77.1 -2015-07-22 12:00:00,8326.608,0.0,79.01 -2015-07-22 13:00:00,8455.55,0.0,80.37 -2015-07-22 14:00:00,8553.725,0.0,80.64 -2015-07-22 15:00:00,8649.309,0.0,81.99 -2015-07-22 16:00:00,8712.741,0.0,82.18 -2015-07-22 17:00:00,8672.958,0.0,81.47 -2015-07-22 18:00:00,8324.983,0.0,81.13 -2015-07-22 19:00:00,7957.25,0.0,80.54 -2015-07-22 20:00:00,7713.783,0.0,78.89 -2015-07-22 21:00:00,7613.292,0.0,77.35 -2015-07-22 22:00:00,7323.95,0.0,76.33 -2015-07-22 23:00:00,6875.883,0.0,75.33 -2015-07-23 00:00:00,6399.683,0.0,74.42 -2015-07-23 01:00:00,6023.083,0.0,73.3 -2015-07-23 02:00:00,5764.358,0.0,72.77 -2015-07-23 03:00:00,5614.867,0.0,71.35 -2015-07-23 04:00:00,5555.9,0.0,70.35 -2015-07-23 05:00:00,5694.867,0.0,69.74 -2015-07-23 06:00:00,6132.092,0.0,69.42 -2015-07-23 07:00:00,6748.883,0.0,69.79 -2015-07-23 08:00:00,7280.525,0.0,70.56 -2015-07-23 09:00:00,7672.475,0.0,72.82 -2015-07-23 10:00:00,7913.392,0.0,76.0 -2015-07-23 11:00:00,8080.325,0.0,76.69 -2015-07-23 12:00:00,8163.217,0.0,78.71 -2015-07-23 13:00:00,8268.092,0.0,79.76 -2015-07-23 14:00:00,8361.042,0.0,80.69 -2015-07-23 15:00:00,8459.4,0.0,81.57 -2015-07-23 16:00:00,8518.866,0.0,81.95 -2015-07-23 17:00:00,8479.366,0.0,81.62 -2015-07-23 18:00:00,8182.367,0.0,81.64 -2015-07-23 19:00:00,7860.392,0.0,80.6 -2015-07-23 20:00:00,7600.658,0.0,79.4 -2015-07-23 21:00:00,7500.533,0.0,77.63 -2015-07-23 22:00:00,7206.292,0.0,76.52 -2015-07-23 23:00:00,6782.542,0.0,75.56 -2015-07-24 00:00:00,6330.392,0.0,74.39 -2015-07-24 01:00:00,5998.225,0.0,74.6 -2015-07-24 02:00:00,5769.308,0.0,73.82 -2015-07-24 03:00:00,5617.142,0.0,72.56 -2015-07-24 04:00:00,5576.167,0.0,72.38 -2015-07-24 05:00:00,5696.717,0.0,71.39 -2015-07-24 06:00:00,6113.475,0.0,70.53 -2015-07-24 07:00:00,6730.408,0.0,70.51 -2015-07-24 08:00:00,7262.85,0.0,72.38 -2015-07-24 09:00:00,7652.292,0.0,74.08 -2015-07-24 10:00:00,7925.075,0.0,76.3 -2015-07-24 11:00:00,8067.467,0.0,77.82 -2015-07-24 12:00:00,8176.442,0.0,78.88 -2015-07-24 13:00:00,8224.042,0.0,80.69 -2015-07-24 14:00:00,8290.475,0.0,81.39 -2015-07-24 15:00:00,8361.886,0.0,82.61 -2015-07-24 16:00:00,8423.358,0.0,82.86 -2015-07-24 17:00:00,8357.083,0.0,82.61 -2015-07-24 18:00:00,8071.508,0.0,81.58 -2015-07-24 19:00:00,7788.183,0.0,81.83 -2015-07-24 20:00:00,7591.1,0.0,79.98 -2015-07-24 21:00:00,7504.917,0.0,78.44 -2015-07-24 22:00:00,7265.783,0.0,76.7 -2015-07-24 23:00:00,6936.667,0.0,76.57 -2015-07-25 00:00:00,6494.542,0.0,75.76 -2015-07-25 01:00:00,6169.825,0.0,75.07 -2015-07-25 02:00:00,5901.458,0.0,73.7 -2015-07-25 03:00:00,5711.608,0.0,72.56 -2015-07-25 04:00:00,5584.467,0.0,71.58 -2015-07-25 05:00:00,5533.725,0.0,70.83 -2015-07-25 06:00:00,5602.492,0.0,70.04 -2015-07-25 07:00:00,5927.908,0.0,71.46 -2015-07-25 08:00:00,6355.517,0.0,73.62 -2015-07-25 09:00:00,6731.183,0.0,74.93 -2015-07-25 10:00:00,7048.983,0.0,76.75 -2015-07-25 11:00:00,7248.542,0.0,78.41 -2015-07-25 12:00:00,7391.95,0.0,79.97 -2015-07-25 13:00:00,7430.075,0.0,80.21 -2015-07-25 14:00:00,7476.175,0.0,81.07 -2015-07-25 15:00:00,7523.7,0.0,81.81 -2015-07-25 16:00:00,7539.517,0.0,81.49 -2015-07-25 17:00:00,7488.017,0.0,81.34 -2015-07-25 18:00:00,7357.242,0.0,80.52 -2015-07-25 19:00:00,7178.517,0.0,79.25 -2015-07-25 20:00:00,7102.042,0.0,77.47 -2015-07-25 21:00:00,7140.7,0.0,76.28 -2015-07-25 22:00:00,7046.408,0.0,76.03 -2015-07-25 23:00:00,6848.558,0.0,75.81 -2015-07-26 00:00:00,6522.908,0.0,75.6 -2015-07-26 01:00:00,6244.617,0.0,75.52 -2015-07-26 02:00:00,5986.825,0.0,75.57 -2015-07-26 03:00:00,5821.092,0.0,74.87 -2015-07-26 04:00:00,5721.275,0.0,73.87 -2015-07-26 05:00:00,5669.533,0.0,73.71 -2015-07-26 06:00:00,5681.367,0.0,73.87 -2015-07-26 07:00:00,5850.517,0.0,73.71 -2015-07-26 08:00:00,6129.317,0.0,74.94 -2015-07-26 09:00:00,6558.583,0.0,76.76 -2015-07-26 10:00:00,7004.683,0.0,78.88 -2015-07-26 11:00:00,7308.367,0.0,81.26 -2015-07-26 12:00:00,7554.817,0.0,82.77 -2015-07-26 13:00:00,7750.633,0.0,84.53 -2015-07-26 14:00:00,7871.092,0.0,85.39 -2015-07-26 15:00:00,7914.858,0.0,85.56 -2015-07-26 16:00:00,7895.7,0.0,85.23 -2015-07-26 17:00:00,7913.333,0.0327,84.25 -2015-07-26 18:00:00,7790.633,0.0,83.15 -2015-07-26 19:00:00,7743.733,0.0,81.42 -2015-07-26 20:00:00,7832.375,0.0,80.88 -2015-07-26 21:00:00,7852.342,0.0,79.74 -2015-07-26 22:00:00,7616.7,0.0,79.72 -2015-07-26 23:00:00,7215.208,0.0,77.96 -2015-07-27 00:00:00,6837.75,0.0,77.48 -2015-07-27 01:00:00,6565.858,0.0,77.37 -2015-07-27 02:00:00,6382.2,0.0,76.71 -2015-07-27 03:00:00,6265.817,0.0,76.15 -2015-07-27 04:00:00,6261.592,0.0,75.46 -2015-07-27 05:00:00,6454.967,0.0,75.18 -2015-07-27 06:00:00,6854.517,0.0,74.33 -2015-07-27 07:00:00,7430.346,0.0,74.2 -2015-07-27 08:00:00,7903.516,0.0,75.27 -2015-07-27 09:00:00,8339.142,0.0,75.37 -2015-07-27 10:00:00,8610.608,0.0,76.88 -2015-07-27 11:00:00,8868.7,0.0,78.88 -2015-07-27 12:00:00,9093.65,0.0,81.13 -2015-07-27 13:00:00,9270.566,0.0,80.85 -2015-07-27 14:00:00,9389.033,0.0,83.01 -2015-07-27 15:00:00,9472.65,0.0,82.32 -2015-07-27 16:00:00,9506.983,0.0,81.56 -2015-07-27 17:00:00,9460.733,0.0,80.22 -2015-07-27 18:00:00,9141.267,0.0,80.5 -2015-07-27 19:00:00,8843.3,0.0,78.89 -2015-07-27 20:00:00,8650.158,0.0,78.37 -2015-07-27 21:00:00,8593.592,0.0,77.82 -2015-07-27 22:00:00,8268.233,0.0,77.62 -2015-07-27 23:00:00,7768.383,0.0,77.43 -2015-07-28 00:00:00,7214.921,0.0,76.69 -2015-07-28 01:00:00,6848.033,0.0,76.32 -2015-07-28 02:00:00,6589.542,0.0,75.69 -2015-07-28 03:00:00,6442.442,0.0,75.2 -2015-07-28 04:00:00,6408.958,0.0,75.2 -2015-07-28 05:00:00,6598.375,0.0,74.35 -2015-07-28 06:00:00,7069.475,0.0,74.36 -2015-07-28 07:00:00,7784.1,0.0,75.04 -2015-07-28 08:00:00,8455.375,0.0,76.95 -2015-07-28 09:00:00,8958.45,0.0,78.94 -2015-07-28 10:00:00,9313.342,0.0,81.53 -2015-07-28 11:00:00,9539.542,0.0,83.77 -2015-07-28 12:00:00,9687.725,0.0,85.49 -2015-07-28 13:00:00,9812.35,0.0,86.63 -2015-07-28 14:00:00,9945.708,0.0,87.68 -2015-07-28 15:00:00,10066.0,0.0,89.16 -2015-07-28 16:00:00,10172.31,0.0,89.72 -2015-07-28 17:00:00,10143.67,0.0,89.17 -2015-07-28 18:00:00,9835.558,0.0,88.07 -2015-07-28 19:00:00,9500.05,0.0,86.14 -2015-07-28 20:00:00,9289.342,0.0,84.94 -2015-07-28 21:00:00,9250.134,0.0,83.69 -2015-07-28 22:00:00,8950.767,0.0,83.18 -2015-07-28 23:00:00,8438.542,0.0,82.01 -2015-07-29 00:00:00,7874.85,0.0,80.81 -2015-07-29 01:00:00,7454.642,0.0,79.86 -2015-07-29 02:00:00,7137.4,0.0,79.86 -2015-07-29 03:00:00,6954.267,0.0,78.81 -2015-07-29 04:00:00,6910.25,0.0,78.38 -2015-07-29 05:00:00,7061.975,0.0,77.7 -2015-07-29 06:00:00,7481.058,0.0,77.28 -2015-07-29 07:00:00,8147.175,0.0,77.79 -2015-07-29 08:00:00,8781.717,0.0,79.76 -2015-07-29 09:00:00,9320.608,0.0,83.73 -2015-07-29 10:00:00,9723.45,0.0,86.68 -2015-07-29 11:00:00,9955.583,0.0,88.8 -2015-07-29 12:00:00,10074.92,0.0,88.7 -2015-07-29 13:00:00,10185.88,0.0,89.16 -2015-07-29 14:00:00,10293.69,0.0,92.35 -2015-07-29 15:00:00,10344.84,0.0,93.35 -2015-07-29 16:00:00,10407.13,0.0,90.46 -2015-07-29 17:00:00,10375.86,0.0,89.48 -2015-07-29 18:00:00,10137.9,0.0,89.98 -2015-07-29 19:00:00,9869.15,0.0,87.51 -2015-07-29 20:00:00,9775.667,0.0,85.36 -2015-07-29 21:00:00,9755.292,0.0,84.82 -2015-07-29 22:00:00,9404.55,0.0,84.77 -2015-07-29 23:00:00,8824.3,0.0,85.0 -2015-07-30 00:00:00,8232.292,0.0,83.0 -2015-07-30 01:00:00,7788.575,0.0,80.84 -2015-07-30 02:00:00,7467.733,0.0,80.44 -2015-07-30 03:00:00,7280.133,0.0,79.57 -2015-07-30 04:00:00,7228.875,0.0,78.5 -2015-07-30 05:00:00,7391.9,0.0,78.11 -2015-07-30 06:00:00,7830.283,0.0,77.69 -2015-07-30 07:00:00,8388.467,0.0,79.65 -2015-07-30 08:00:00,8888.225,0.0,79.65 -2015-07-30 09:00:00,9165.425,0.0065,78.72 -2015-07-30 10:00:00,9411.129,0.0065,79.1 -2015-07-30 11:00:00,9680.759,0.0,79.93 -2015-07-30 12:00:00,9914.384,0.0,82.48 -2015-07-30 13:00:00,10003.68,0.0327,82.44 -2015-07-30 14:00:00,9974.462,0.0631,83.42 -2015-07-30 15:00:00,9879.946,0.0523,80.07 -2015-07-30 16:00:00,9784.025,0.0173,80.1 -2015-07-30 17:00:00,9524.167,0.1628,77.29 -2015-07-30 18:00:00,9293.275,0.0392,78.3 -2015-07-30 19:00:00,9045.267,0.0,80.05 -2015-07-30 20:00:00,8870.358,0.0,77.81 -2015-07-30 21:00:00,8758.9,0.0,77.25 -2015-07-30 22:00:00,8456.934,0.0,77.48 -2015-07-30 23:00:00,7995.975,0.0,77.23 -2015-07-31 00:00:00,7488.5,0.0,76.87 -2015-07-31 01:00:00,7115.55,0.0,76.52 -2015-07-31 02:00:00,6831.675,0.0,75.52 -2015-07-31 03:00:00,6613.525,0.0,75.03 -2015-07-31 04:00:00,6494.217,0.0,75.28 -2015-07-31 05:00:00,6545.125,0.0,74.4 -2015-07-31 06:00:00,6879.892,0.0,73.79 -2015-07-31 07:00:00,7439.367,0.0,74.35 -2015-07-31 08:00:00,8007.414,0.0,75.74 -2015-07-31 09:00:00,8434.566,0.0,77.68 -2015-07-31 10:00:00,8739.9,0.0,80.13 -2015-07-31 11:00:00,8925.833,0.0,82.05 -2015-07-31 12:00:00,9056.85,0.0,83.88 -2015-07-31 13:00:00,9133.5,0.0,85.01 -2015-07-31 14:00:00,9208.375,0.0,85.99 -2015-07-31 15:00:00,9291.384,0.0,86.84 -2015-07-31 16:00:00,9350.417,0.0,87.5 -2015-07-31 17:00:00,9278.65,0.0,88.29 -2015-07-31 18:00:00,8941.059,0.0,87.53 -2015-07-31 19:00:00,8586.309,0.0,86.58 -2015-07-31 20:00:00,8340.525,0.0,84.6 -2015-07-31 21:00:00,8225.025,0.0,83.46 -2015-07-31 22:00:00,7945.817,0.0,81.47 -2015-07-31 23:00:00,7587.55,0.0,80.89 -2015-08-01 00:00:00,7152.575,0.0,80.97 -2015-08-01 01:00:00,6795.908,0.0,79.57 -2015-08-01 02:00:00,6522.95,0.0,78.62 -2015-08-01 03:00:00,6334.217,0.0,78.22 -2015-08-01 04:00:00,6190.608,0.0,77.57 -2015-08-01 05:00:00,6126.0,0.0,76.45 -2015-08-01 06:00:00,6156.125,0.0,74.89 -2015-08-01 07:00:00,6450.708,0.0,75.32 -2015-08-01 08:00:00,6892.85,0.0,76.93 -2015-08-01 09:00:00,7338.892,0.0,79.57 -2015-08-01 10:00:00,7662.325,0.0,81.82 -2015-08-01 11:00:00,7804.317,0.0,80.77 -2015-08-01 12:00:00,7977.542,0.0,82.82 -2015-08-01 13:00:00,8023.0,0.0,84.5 -2015-08-01 14:00:00,8049.758,0.0,86.36 -2015-08-01 15:00:00,8072.9,0.0,87.19 -2015-08-01 16:00:00,8093.242,0.0,86.94 -2015-08-01 17:00:00,8047.608,0.0,87.48 -2015-08-01 18:00:00,7931.975,0.0,85.49 -2015-08-01 19:00:00,7762.858,0.0,83.74 -2015-08-01 20:00:00,7669.458,0.0,82.89 -2015-08-01 21:00:00,7657.525,0.0,80.93 -2015-08-01 22:00:00,7470.542,0.0,79.63 -2015-08-01 23:00:00,7179.35,0.0,78.29 -2015-08-02 00:00:00,6810.142,0.0,77.12 -2015-08-02 01:00:00,6509.358,0.0,76.29 -2015-08-02 02:00:00,6216.15,0.0,74.75 -2015-08-02 03:00:00,6037.058,0.0,73.82 -2015-08-02 04:00:00,5898.017,0.0,73.66 -2015-08-02 05:00:00,5808.442,0.0,72.67 -2015-08-02 06:00:00,5786.533,0.0,71.68 -2015-08-02 07:00:00,6004.892,0.0,71.56 -2015-08-02 08:00:00,6369.9,0.0,74.61 -2015-08-02 09:00:00,6774.458,0.0,76.91 -2015-08-02 10:00:00,7135.3,0.0,79.43 -2015-08-02 11:00:00,7405.125,0.0,82.15 -2015-08-02 12:00:00,7553.533,0.0,82.86 -2015-08-02 13:00:00,7648.158,0.0,84.23 -2015-08-02 14:00:00,7740.692,0.0,84.47 -2015-08-02 15:00:00,7836.333,0.0,84.06 -2015-08-02 16:00:00,7903.35,0.0,84.15 -2015-08-02 17:00:00,7940.442,0.0,83.82 -2015-08-02 18:00:00,7884.083,0.0,83.4 -2015-08-02 19:00:00,7778.458,0.0,82.21 -2015-08-02 20:00:00,7799.075,0.0,80.47 -2015-08-02 21:00:00,7926.108,0.0,79.21 -2015-08-02 22:00:00,7814.642,0.0,78.23 -2015-08-02 23:00:00,7453.883,0.0,78.12 -2015-08-03 00:00:00,7065.908,0.0,78.41 -2015-08-03 01:00:00,6745.107,0.0,77.68 -2015-08-03 02:00:00,6487.467,0.0,76.93 -2015-08-03 03:00:00,6370.375,0.0,75.91 -2015-08-03 04:00:00,6335.075,0.0,75.48 -2015-08-03 05:00:00,6517.35,0.0,74.5 -2015-08-03 06:00:00,6918.775,0.0,74.13 -2015-08-03 07:00:00,7534.825,0.0,74.87 -2015-08-03 08:00:00,8167.758,0.0,76.74 -2015-08-03 09:00:00,8625.667,0.0,79.18 -2015-08-03 10:00:00,8955.066,0.0,81.11 -2015-08-03 11:00:00,9193.45,0.0,82.98 -2015-08-03 12:00:00,9378.491,0.0,84.33 -2015-08-03 13:00:00,9547.993,0.0,86.38 -2015-08-03 14:00:00,9666.917,0.0,87.2 -2015-08-03 15:00:00,9777.741,0.0,87.92 -2015-08-03 16:00:00,9855.962,0.0,88.27 -2015-08-03 17:00:00,9831.594,0.0,87.92 -2015-08-03 18:00:00,9440.059,0.0,86.12 -2015-08-03 19:00:00,9163.184,0.0,85.45 -2015-08-03 20:00:00,9020.809,0.0,85.12 -2015-08-03 21:00:00,8933.05,0.0,84.59 -2015-08-03 22:00:00,8587.483,0.0,83.8 -2015-08-03 23:00:00,8066.925,0.0,82.63 -2015-08-04 00:00:00,7508.708,0.0,81.38 -2015-08-04 01:00:00,7132.367,0.0,80.09 -2015-08-04 02:00:00,6907.025,0.0,79.11 -2015-08-04 03:00:00,6796.242,0.0,78.23 -2015-08-04 04:00:00,6458.367,0.1308,72.36 -2015-08-04 05:00:00,6537.683,0.0739,70.91 -2015-08-04 06:00:00,6975.65,0.0,70.89 -2015-08-04 07:00:00,7493.65,0.0,71.71 -2015-08-04 08:00:00,7984.9,0.0,72.72 -2015-08-04 09:00:00,8513.483,0.0,74.94 -2015-08-04 10:00:00,8914.375,0.0,80.16 -2015-08-04 11:00:00,9188.592,0.0,80.4 -2015-08-04 12:00:00,9407.375,0.0,82.81 -2015-08-04 13:00:00,9566.441,0.0,85.88 -2015-08-04 14:00:00,9673.309,0.0,86.5 -2015-08-04 15:00:00,9722.858,0.0,87.47 -2015-08-04 16:00:00,9732.116,0.0,88.7 -2015-08-04 17:00:00,9659.059,0.0,88.31 -2015-08-04 18:00:00,9315.2,0.0,87.26 -2015-08-04 19:00:00,8931.7,0.0,86.41 -2015-08-04 20:00:00,8697.434,0.0,84.62 -2015-08-04 21:00:00,8557.267,0.0,83.13 -2015-08-04 22:00:00,8236.533,0.0,82.05 -2015-08-04 23:00:00,7714.267,0.0,79.82 -2015-08-05 00:00:00,7176.358,0.0,78.54 -2015-08-05 01:00:00,6791.533,0.0,76.48 -2015-08-05 02:00:00,6478.267,0.0,75.83 -2015-08-05 03:00:00,6305.136,0.0,74.13 -2015-08-05 04:00:00,6250.875,0.0,72.49 -2015-08-05 05:00:00,6383.25,0.0,72.07 -2015-08-05 06:00:00,6807.017,0.0,71.57 -2015-08-05 07:00:00,7375.083,0.0,72.83 -2015-08-05 08:00:00,7851.475,0.0,73.76 -2015-08-05 09:00:00,8240.45,0.0,75.35 -2015-08-05 10:00:00,8575.042,0.0,78.84 -2015-08-05 11:00:00,8766.967,0.0,79.59 -2015-08-05 12:00:00,8909.575,0.0,81.72 -2015-08-05 13:00:00,8996.425,0.0,82.98 -2015-08-05 14:00:00,9067.0,0.0,84.89 -2015-08-05 15:00:00,9169.344,0.0,85.2 -2015-08-05 16:00:00,9257.217,0.0,85.11 -2015-08-05 17:00:00,9167.8,0.0,84.14 -2015-08-05 18:00:00,8741.525,0.0,82.45 -2015-08-05 19:00:00,8377.934,0.0,81.28 -2015-08-05 20:00:00,8167.475,0.0,79.54 -2015-08-05 21:00:00,8056.0,0.0,77.65 -2015-08-05 22:00:00,7755.033,0.0,77.35 -2015-08-05 23:00:00,7235.233,0.0,75.96 -2015-08-06 00:00:00,6684.5,0.0,74.58 -2015-08-06 01:00:00,6283.758,0.0,73.65 -2015-08-06 02:00:00,6002.017,0.0,72.65 -2015-08-06 03:00:00,5806.75,0.0,71.6 -2015-08-06 04:00:00,5750.65,0.0,70.42 -2015-08-06 05:00:00,5879.4,0.0,68.53 -2015-08-06 06:00:00,6270.042,0.0,68.67 -2015-08-06 07:00:00,6867.925,0.0,69.03 -2015-08-06 08:00:00,7358.467,0.0,70.93 -2015-08-06 09:00:00,7732.625,0.0,72.21 -2015-08-06 10:00:00,7950.2,0.0,74.44 -2015-08-06 11:00:00,8096.175,0.0,75.62 -2015-08-06 12:00:00,8223.6,0.0,76.61 -2015-08-06 13:00:00,8343.292,0.0,78.48 -2015-08-06 14:00:00,8433.908,0.0,79.52 -2015-08-06 15:00:00,8543.108,0.0,80.41 -2015-08-06 16:00:00,8571.425,0.0,80.73 -2015-08-06 17:00:00,8443.533,0.0,79.93 -2015-08-06 18:00:00,8096.192,0.0,79.12 -2015-08-06 19:00:00,7825.317,0.0,78.78 -2015-08-06 20:00:00,7718.733,0.0,77.25 -2015-08-06 21:00:00,7634.358,0.0,76.8 -2015-08-06 22:00:00,7366.258,0.0,75.42 -2015-08-06 23:00:00,6952.792,0.0,74.89 -2015-08-07 00:00:00,6518.708,0.0,74.87 -2015-08-07 01:00:00,6195.75,0.0,74.5 -2015-08-07 02:00:00,5958.283,0.0,72.7 -2015-08-07 03:00:00,5778.317,0.0,72.95 -2015-08-07 04:00:00,5707.45,0.0,71.38 -2015-08-07 05:00:00,5852.092,0.0,70.5 -2015-08-07 06:00:00,6211.908,0.0,69.35 -2015-08-07 07:00:00,6771.975,0.0,69.44 -2015-08-07 08:00:00,7322.058,0.0,70.79 -2015-08-07 09:00:00,7711.333,0.0,72.31 -2015-08-07 10:00:00,7976.15,0.0,74.95 -2015-08-07 11:00:00,8131.658,0.0,77.11 -2015-08-07 12:00:00,8218.292,0.0,78.06 -2015-08-07 13:00:00,8269.616,0.0,79.53 -2015-08-07 14:00:00,8284.592,0.0,80.16 -2015-08-07 15:00:00,8325.384,0.0,82.09 -2015-08-07 16:00:00,8361.491,0.0,82.05 -2015-08-07 17:00:00,8306.358,0.0,81.63 -2015-08-07 18:00:00,7973.867,0.0,81.05 -2015-08-07 19:00:00,7671.192,0.0,79.62 -2015-08-07 20:00:00,7474.075,0.0,77.99 -2015-08-07 21:00:00,7312.317,0.0,75.79 -2015-08-07 22:00:00,7037.367,0.0,74.19 -2015-08-07 23:00:00,6678.292,0.0,73.08 -2015-08-08 00:00:00,6264.317,0.0,72.8 -2015-08-08 01:00:00,5933.508,0.0,71.51 -2015-08-08 02:00:00,5674.925,0.0,69.33 -2015-08-08 03:00:00,5514.342,0.0,70.4 -2015-08-08 04:00:00,5436.275,0.0,69.19 -2015-08-08 05:00:00,5433.225,0.0,69.35 -2015-08-08 06:00:00,5515.9,0.0,68.07 -2015-08-08 07:00:00,5772.542,0.0,69.11 -2015-08-08 08:00:00,6131.025,0.0,70.25 -2015-08-08 09:00:00,6466.583,0.0,72.31 -2015-08-08 10:00:00,6754.008,0.0,75.18 -2015-08-08 11:00:00,6949.858,0.0,76.67 -2015-08-08 12:00:00,7041.333,0.0,77.89 -2015-08-08 13:00:00,7036.283,0.0,78.93 -2015-08-08 14:00:00,7070.058,0.0,79.83 -2015-08-08 15:00:00,7082.767,0.0,80.82 -2015-08-08 16:00:00,7069.558,0.0,81.35 -2015-08-08 17:00:00,6968.383,0.0,80.46 -2015-08-08 18:00:00,6821.317,0.0,78.73 -2015-08-08 19:00:00,6711.783,0.0,77.52 -2015-08-08 20:00:00,6724.95,0.0,75.65 -2015-08-08 21:00:00,6700.45,0.0,74.06 -2015-08-08 22:00:00,6547.6,0.0,73.66 -2015-08-08 23:00:00,6324.775,0.0,73.0 -2015-08-09 00:00:00,6018.808,0.0,73.01 -2015-08-09 01:00:00,5751.467,0.0024,71.54 -2015-08-09 02:00:00,5531.267,0.0,71.76 -2015-08-09 03:00:00,5378.517,0.0,70.73 -2015-08-09 04:00:00,5289.933,0.0,70.31 -2015-08-09 05:00:00,5266.883,0.0,68.38 -2015-08-09 06:00:00,5264.742,0.0,68.64 -2015-08-09 07:00:00,5479.5,0.0,68.32 -2015-08-09 08:00:00,5825.083,0.0,70.88 -2015-08-09 09:00:00,6197.183,0.0,72.68 -2015-08-09 10:00:00,6498.758,0.0,75.92 -2015-08-09 11:00:00,6725.3,0.0,77.63 -2015-08-09 12:00:00,6855.858,0.0,79.31 -2015-08-09 13:00:00,6919.008,0.0,80.68 -2015-08-09 14:00:00,6971.233,0.0,81.7 -2015-08-09 15:00:00,6992.867,0.0,81.67 -2015-08-09 16:00:00,7016.192,0.0,82.46 -2015-08-09 17:00:00,7028.117,0.0,81.6 -2015-08-09 18:00:00,6999.1,0.0,79.51 -2015-08-09 19:00:00,6884.058,0.0,77.89 -2015-08-09 20:00:00,6919.575,0.0,74.82 -2015-08-09 21:00:00,6944.167,0.0,73.14 -2015-08-09 22:00:00,6790.583,0.0,72.51 -2015-08-09 23:00:00,6497.325,0.0,71.76 -2015-08-10 00:00:00,6191.758,0.0,71.79 -2015-08-10 01:00:00,5941.45,0.0,71.02 -2015-08-10 02:00:00,5777.85,0.0,70.65 -2015-08-10 03:00:00,5690.225,0.0,71.96 -2015-08-10 04:00:00,5715.608,0.0,70.49 -2015-08-10 05:00:00,5907.117,0.0,70.76 -2015-08-10 06:00:00,6311.392,0.0,69.32 -2015-08-10 07:00:00,6924.158,0.0,70.25 -2015-08-10 08:00:00,7465.133,0.0,71.79 -2015-08-10 09:00:00,7849.467,0.0,73.6 -2015-08-10 10:00:00,8080.367,0.0,75.75 -2015-08-10 11:00:00,8215.434,0.0,77.03 -2015-08-10 12:00:00,8304.85,0.0,79.65 -2015-08-10 13:00:00,8374.684,0.0,79.86 -2015-08-10 14:00:00,8433.125,0.0,79.66 -2015-08-10 15:00:00,8444.566,0.0,80.75 -2015-08-10 16:00:00,8397.434,0.0,79.55 -2015-08-10 17:00:00,8253.691,0.0,78.09 -2015-08-10 18:00:00,7890.65,0.0,77.12 -2015-08-10 19:00:00,7645.158,0.0,75.52 -2015-08-10 20:00:00,7578.133,0.0,74.57 -2015-08-10 21:00:00,7489.758,0.0,73.99 -2015-08-10 22:00:00,7217.917,0.0,73.79 -2015-08-10 23:00:00,6819.825,0.0,74.16 -2015-08-11 00:00:00,6401.275,0.0,74.24 -2015-08-11 01:00:00,6098.342,0.0,73.36 -2015-08-11 02:00:00,5907.15,0.0,73.57 -2015-08-11 03:00:00,5814.942,0.0,74.23 -2015-08-11 04:00:00,5809.033,0.0,74.4 -2015-08-11 05:00:00,6028.608,0.0,73.13 -2015-08-11 06:00:00,6508.542,0.0301,74.3 -2015-08-11 07:00:00,7043.767,0.3344,71.72 -2015-08-11 08:00:00,7470.367,0.2667,71.14 -2015-08-11 09:00:00,7754.033,0.0,70.43 -2015-08-11 10:00:00,7953.525,0.0127,70.94 -2015-08-11 11:00:00,8081.233,0.0,71.31 -2015-08-11 12:00:00,8180.908,0.0,73.0 -2015-08-11 13:00:00,8332.217,0.0,73.73 -2015-08-11 14:00:00,8408.116,0.0,74.81 -2015-08-11 15:00:00,8569.542,0.0,76.75 -2015-08-11 16:00:00,8704.542,0.0,77.74 -2015-08-11 17:00:00,8630.083,0.0108,79.44 -2015-08-11 18:00:00,8374.792,0.0,78.63 -2015-08-11 19:00:00,8088.742,0.0,77.92 -2015-08-11 20:00:00,7905.45,0.0,77.87 -2015-08-11 21:00:00,7755.383,0.0,76.69 -2015-08-11 22:00:00,7458.8,0.0,76.1 -2015-08-11 23:00:00,7022.709,0.0,75.97 -2015-08-12 00:00:00,6498.392,0.0028,75.3 -2015-08-12 01:00:00,6126.533,0.0021,74.01 -2015-08-12 02:00:00,5847.608,0.0,73.34 -2015-08-12 03:00:00,5693.475,0.0027,72.11 -2015-08-12 04:00:00,5639.475,0.0,71.14 -2015-08-12 05:00:00,5801.575,0.0,70.01 -2015-08-12 06:00:00,6211.7,0.0,68.9 -2015-08-12 07:00:00,6803.225,0.0,68.97 -2015-08-12 08:00:00,7326.65,0.0,71.3 -2015-08-12 09:00:00,7693.65,0.0,73.3 -2015-08-12 10:00:00,7938.617,0.0,75.06 -2015-08-12 11:00:00,8124.475,0.0,77.11 -2015-08-12 12:00:00,8255.525,0.0,79.84 -2015-08-12 13:00:00,8356.208,0.0,81.52 -2015-08-12 14:00:00,8447.958,0.0,82.11 -2015-08-12 15:00:00,8540.616,0.0,82.94 -2015-08-12 16:00:00,8612.608,0.0,83.86 -2015-08-12 17:00:00,8570.417,0.0,83.79 -2015-08-12 18:00:00,8215.6,0.0,82.08 -2015-08-12 19:00:00,7910.233,0.0,80.58 -2015-08-12 20:00:00,7745.983,0.0,77.9 -2015-08-12 21:00:00,7607.45,0.0,77.15 -2015-08-12 22:00:00,7261.108,0.0,75.8 -2015-08-12 23:00:00,6806.25,0.0,74.36 -2015-08-13 00:00:00,6312.533,0.0,73.47 -2015-08-13 01:00:00,5949.217,0.0,72.68 -2015-08-13 02:00:00,5680.925,0.0,71.4 -2015-08-13 03:00:00,5518.183,0.0,70.63 -2015-08-13 04:00:00,5460.425,0.0,68.59 -2015-08-13 05:00:00,5597.1,0.0,67.78 -2015-08-13 06:00:00,5996.233,0.0,66.87 -2015-08-13 07:00:00,6563.892,0.0,66.61 -2015-08-13 08:00:00,7108.45,0.0,67.98 -2015-08-13 09:00:00,7505.042,0.0,71.16 -2015-08-13 10:00:00,7755.075,0.0,73.27 -2015-08-13 11:00:00,7932.417,0.0,76.34 -2015-08-13 12:00:00,8058.417,0.0,78.7 -2015-08-13 13:00:00,8125.942,0.0,79.91 -2015-08-13 14:00:00,8183.417,0.0,81.64 -2015-08-13 15:00:00,8268.9,0.0,81.23 -2015-08-13 16:00:00,8338.967,0.0,82.24 -2015-08-13 17:00:00,8298.958,0.0,82.27 -2015-08-13 18:00:00,7988.183,0.0,82.03 -2015-08-13 19:00:00,7652.833,0.0,80.68 -2015-08-13 20:00:00,7494.033,0.0,79.16 -2015-08-13 21:00:00,7339.2,0.0,77.1 -2015-08-13 22:00:00,7049.608,0.0,74.94 -2015-08-13 23:00:00,6615.45,0.0,74.57 -2015-08-14 00:00:00,6167.108,0.0,73.64 -2015-08-14 01:00:00,5842.583,0.0,72.93 -2015-08-14 02:00:00,5595.233,0.0,71.81 -2015-08-14 03:00:00,5442.067,0.0,70.77 -2015-08-14 04:00:00,5390.817,0.0,69.24 -2015-08-14 05:00:00,5540.45,0.0,68.37 -2015-08-14 06:00:00,5946.233,0.0,67.7 -2015-08-14 07:00:00,6543.3,0.0,68.37 -2015-08-14 08:00:00,7131.325,0.0,69.97 -2015-08-14 09:00:00,7576.108,0.0,73.65 -2015-08-14 10:00:00,7872.242,0.0,77.97 -2015-08-14 11:00:00,8065.375,0.0,80.1 -2015-08-14 12:00:00,8189.767,0.0,82.2 -2015-08-14 13:00:00,8349.958,0.0,84.15 -2015-08-14 14:00:00,8516.417,0.0,85.6 -2015-08-14 15:00:00,8652.525,0.0,86.18 -2015-08-14 16:00:00,8715.309,0.0,86.11 -2015-08-14 17:00:00,8623.025,0.0,86.2 -2015-08-14 18:00:00,8239.975,0.0,84.19 -2015-08-14 19:00:00,7865.758,0.0,82.55 -2015-08-14 20:00:00,7705.133,0.0,78.84 -2015-08-14 21:00:00,7541.758,0.0,76.51 -2015-08-14 22:00:00,7256.333,0.0,76.35 -2015-08-14 23:00:00,6908.892,0.0,76.88 -2015-08-15 00:00:00,6507.65,0.0,76.5 -2015-08-15 01:00:00,6189.167,0.0,75.2 -2015-08-15 02:00:00,5940.775,0.0,74.48 -2015-08-15 03:00:00,5780.092,0.0,73.27 -2015-08-15 04:00:00,5688.675,0.0,72.76 -2015-08-15 05:00:00,5675.342,0.0,72.21 -2015-08-15 06:00:00,5734.225,0.0,72.22 -2015-08-15 07:00:00,6026.633,0.0,73.25 -2015-08-15 08:00:00,6435.95,0.0,74.49 -2015-08-15 09:00:00,6908.583,0.0,77.98 -2015-08-15 10:00:00,7328.5,0.0,81.97 -2015-08-15 11:00:00,7635.567,0.0,84.42 -2015-08-15 12:00:00,7845.175,0.0,87.26 -2015-08-15 13:00:00,7970.117,0.0,88.64 -2015-08-15 14:00:00,8071.767,0.0,90.86 -2015-08-15 15:00:00,8139.242,0.0,90.8 -2015-08-15 16:00:00,8147.508,0.0,90.6 -2015-08-15 17:00:00,8101.525,0.0,88.72 -2015-08-15 18:00:00,7939.442,0.0,86.67 -2015-08-15 19:00:00,7767.95,0.0,84.16 -2015-08-15 20:00:00,7777.483,0.0,82.67 -2015-08-15 21:00:00,7763.125,0.0,80.96 -2015-08-15 22:00:00,7634.258,0.0,79.07 -2015-08-15 23:00:00,7366.442,0.0,79.83 -2015-08-16 00:00:00,7017.292,0.0,79.96 -2015-08-16 01:00:00,6697.458,0.0,78.44 -2015-08-16 02:00:00,6414.65,0.0,78.94 -2015-08-16 03:00:00,6222.333,0.0,77.68 -2015-08-16 04:00:00,6086.325,0.0,76.34 -2015-08-16 05:00:00,6029.433,0.0,75.92 -2015-08-16 06:00:00,6019.575,0.0,75.66 -2015-08-16 07:00:00,6202.883,0.0,74.59 -2015-08-16 08:00:00,6569.742,0.0,76.27 -2015-08-16 09:00:00,6968.917,0.0,78.23 -2015-08-16 10:00:00,7368.767,0.0,81.99 -2015-08-16 11:00:00,7718.458,0.0,84.5 -2015-08-16 12:00:00,8006.733,0.0,86.21 -2015-08-16 13:00:00,8212.208,0.0,88.43 -2015-08-16 14:00:00,8242.783,0.0,90.54 -2015-08-16 15:00:00,8181.733,0.0024,90.31 -2015-08-16 16:00:00,8203.525,0.0024,87.02 -2015-08-16 17:00:00,8204.467,0.0,86.18 -2015-08-16 18:00:00,8207.733,0.0,85.56 -2015-08-16 19:00:00,8157.583,0.0,83.72 -2015-08-16 20:00:00,8267.467,0.0,83.75 -2015-08-16 21:00:00,8302.95,0.0022,82.83 -2015-08-16 22:00:00,8118.958,0.0,81.46 -2015-08-16 23:00:00,7762.55,0.0,81.15 -2015-08-17 00:00:00,7384.45,0.0,80.63 -2015-08-17 01:00:00,7065.608,0.0,79.62 -2015-08-17 02:00:00,6811.717,0.0,79.73 -2015-08-17 03:00:00,6655.95,0.0,78.95 -2015-08-17 04:00:00,6621.683,0.0,77.56 -2015-08-17 05:00:00,6794.083,0.0,76.62 -2015-08-17 06:00:00,7154.583,0.0,76.43 -2015-08-17 07:00:00,7738.833,0.0,76.22 -2015-08-17 08:00:00,8293.092,0.0,78.09 -2015-08-17 09:00:00,8838.275,0.0,80.14 -2015-08-17 10:00:00,9261.175,0.0,83.0 -2015-08-17 11:00:00,9593.125,0.0,86.12 -2015-08-17 12:00:00,9875.483,0.0,90.08 -2015-08-17 13:00:00,10081.72,0.0,92.3 -2015-08-17 14:00:00,10109.72,0.0025,92.75 -2015-08-17 15:00:00,10102.88,0.0059,92.51 -2015-08-17 16:00:00,10155.17,0.0037,90.07 -2015-08-17 17:00:00,10152.21,0.0,88.4 -2015-08-17 18:00:00,9828.983,0.0,88.04 -2015-08-17 19:00:00,9547.35,0.0,86.9 -2015-08-17 20:00:00,9427.5,0.0,86.19 -2015-08-17 21:00:00,9259.092,0.0,84.08 -2015-08-17 22:00:00,8855.366,0.0,82.66 -2015-08-17 23:00:00,8284.033,0.0,81.7 -2015-08-18 00:00:00,7700.683,0.0,82.41 -2015-08-18 01:00:00,7268.042,0.0,80.45 -2015-08-18 02:00:00,6979.658,0.0,79.94 -2015-08-18 03:00:00,6813.083,0.0,78.85 -2015-08-18 04:00:00,6764.983,0.0,78.31 -2015-08-18 05:00:00,6946.35,0.0163,78.23 -2015-08-18 06:00:00,7355.375,0.0424,76.37 -2015-08-18 07:00:00,7905.058,0.0,75.19 -2015-08-18 08:00:00,8480.708,0.0,76.19 -2015-08-18 09:00:00,8878.267,0.0024,78.65 -2015-08-18 10:00:00,9253.809,0.0,80.08 -2015-08-18 11:00:00,9573.708,0.0,83.49 -2015-08-18 12:00:00,9737.384,0.0,84.65 -2015-08-18 13:00:00,9875.316,0.0,87.87 -2015-08-18 14:00:00,9982.825,0.0,88.52 -2015-08-18 15:00:00,9992.533,0.0,88.36 -2015-08-18 16:00:00,9980.483,0.0,87.29 -2015-08-18 17:00:00,9908.675,0.0,85.49 -2015-08-18 18:00:00,9576.217,0.0,84.46 -2015-08-18 19:00:00,9258.241,0.0,82.0 -2015-08-18 20:00:00,9128.134,0.0,80.18 -2015-08-18 21:00:00,8974.85,0.0,78.4 -2015-08-18 22:00:00,8590.375,0.0,77.78 -2015-08-18 23:00:00,8053.65,0.0,77.56 -2015-08-19 00:00:00,7532.617,0.0,76.92 -2015-08-19 01:00:00,7157.917,0.0,76.33 -2015-08-19 02:00:00,6904.867,0.0,74.8 -2015-08-19 03:00:00,6773.733,0.0,74.59 -2015-08-19 04:00:00,6753.433,0.0,75.47 -2015-08-19 05:00:00,6980.267,0.0,76.35 -2015-08-19 06:00:00,7453.883,0.0,76.17 -2015-08-19 07:00:00,8065.942,0.0,75.89 -2015-08-19 08:00:00,8625.842,0.0,77.05 -2015-08-19 09:00:00,9046.05,0.0,78.37 -2015-08-19 10:00:00,9374.783,0.0,80.09 -2015-08-19 11:00:00,9583.7,0.0,83.06 -2015-08-19 12:00:00,9713.967,0.0,84.27 -2015-08-19 13:00:00,9825.634,0.0,84.93 -2015-08-19 14:00:00,9856.941,0.0,84.24 -2015-08-19 15:00:00,9850.775,0.0,84.15 -2015-08-19 16:00:00,9700.525,0.0,83.4 -2015-08-19 17:00:00,9553.392,0.0,82.54 -2015-08-19 18:00:00,9265.642,0.0,80.61 -2015-08-19 19:00:00,9002.217,0.0,79.33 -2015-08-19 20:00:00,8949.65,0.0,78.96 -2015-08-19 21:00:00,8832.491,0.0,76.96 -2015-08-19 22:00:00,8511.884,0.0025,77.45 -2015-08-19 23:00:00,7993.325,0.0,77.54 -2015-08-20 00:00:00,7509.4,0.0,77.2 -2015-08-20 01:00:00,7142.933,0.0022,77.14 -2015-08-20 02:00:00,6905.85,0.0,76.58 -2015-08-20 03:00:00,6777.817,0.0,76.36 -2015-08-20 04:00:00,6759.442,0.0,75.98 -2015-08-20 05:00:00,6962.617,0.0,76.49 -2015-08-20 06:00:00,7420.017,0.0,75.85 -2015-08-20 07:00:00,8042.242,0.0,77.32 -2015-08-20 08:00:00,8579.283,0.0,78.14 -2015-08-20 09:00:00,9006.066,0.0,78.3 -2015-08-20 10:00:00,9299.733,0.0,80.61 -2015-08-20 11:00:00,9482.0,0.0,80.01 -2015-08-20 12:00:00,9633.691,0.0,82.69 -2015-08-20 13:00:00,9693.7,0.0,83.62 -2015-08-20 14:00:00,9696.158,0.0,83.44 -2015-08-20 15:00:00,9723.167,0.0,82.46 -2015-08-20 16:00:00,9698.208,0.0,82.24 -2015-08-20 17:00:00,9529.884,0.0,81.64 -2015-08-20 18:00:00,9144.483,0.0,80.73 -2015-08-20 19:00:00,8961.833,0.0,79.88 -2015-08-20 20:00:00,8919.833,0.0,78.16 -2015-08-20 21:00:00,8745.892,0.0,77.7 -2015-08-20 22:00:00,8429.783,0.0,77.88 -2015-08-20 23:00:00,7951.692,0.0,78.55 -2015-08-21 00:00:00,7478.733,0.0288,78.35 -2015-08-21 01:00:00,7113.692,0.0051,77.69 -2015-08-21 02:00:00,6831.917,0.1048,77.38 -2015-08-21 03:00:00,6686.475,0.0963,75.86 -2015-08-21 04:00:00,6633.258,0.0,75.85 -2015-08-21 05:00:00,6739.283,0.0168,75.46 -2015-08-21 06:00:00,7102.008,0.0,75.64 -2015-08-21 07:00:00,7499.783,0.0,74.69 -2015-08-21 08:00:00,7887.617,0.0,74.12 -2015-08-21 09:00:00,8082.425,0.0,74.48 -2015-08-21 10:00:00,8270.35,0.0,75.55 -2015-08-21 11:00:00,8438.434,0.0,75.71 -2015-08-21 12:00:00,8517.175,0.0,77.37 -2015-08-21 13:00:00,8604.042,0.0,80.5 -2015-08-21 14:00:00,8766.458,0.0029,82.13 -2015-08-21 15:00:00,8903.417,0.0,83.84 -2015-08-21 16:00:00,8972.65,0.0,84.94 -2015-08-21 17:00:00,8945.925,0.0,85.47 -2015-08-21 18:00:00,8607.217,0.0,84.55 -2015-08-21 19:00:00,8316.35,0.0,83.54 -2015-08-21 20:00:00,8168.65,0.0,80.02 -2015-08-21 21:00:00,7958.483,0.0,77.6 -2015-08-21 22:00:00,7608.992,0.0,77.55 -2015-08-21 23:00:00,7130.933,0.0,76.11 -2015-08-22 00:00:00,6653.3,0.0,75.7 -2015-08-22 01:00:00,6295.517,0.0,74.32 -2015-08-22 02:00:00,6013.95,0.0,73.25 -2015-08-22 03:00:00,5789.442,0.0,71.36 -2015-08-22 04:00:00,5637.367,0.0,70.11 -2015-08-22 05:00:00,5578.483,0.0,68.89 -2015-08-22 06:00:00,5586.983,0.0,68.08 -2015-08-22 07:00:00,5765.592,0.0,67.33 -2015-08-22 08:00:00,6115.292,0.0,68.24 -2015-08-22 09:00:00,6444.267,0.0,70.8 -2015-08-22 10:00:00,6749.025,0.0,73.41 -2015-08-22 11:00:00,6966.867,0.0,76.34 -2015-08-22 12:00:00,7134.8,0.0,78.97 -2015-08-22 13:00:00,7181.392,0.0,80.13 -2015-08-22 14:00:00,7263.2,0.0,82.15 -2015-08-22 15:00:00,7321.875,0.0,82.72 -2015-08-22 16:00:00,7317.933,0.0,82.99 -2015-08-22 17:00:00,7302.692,0.0,82.54 -2015-08-22 18:00:00,7189.567,0.0,81.58 -2015-08-22 19:00:00,7013.05,0.0,80.38 -2015-08-22 20:00:00,6972.058,0.0,77.93 -2015-08-22 21:00:00,6861.875,0.0,76.02 -2015-08-22 22:00:00,6673.483,0.0,74.62 -2015-08-22 23:00:00,6420.792,0.0,73.03 -2015-08-23 00:00:00,6137.175,0.0,71.98 -2015-08-23 01:00:00,5895.25,0.0,71.13 -2015-08-23 02:00:00,5672.45,0.0,70.29 -2015-08-23 03:00:00,5539.333,0.0,70.12 -2015-08-23 04:00:00,5471.167,0.0,67.81 -2015-08-23 05:00:00,5457.675,0.0,68.0 -2015-08-23 06:00:00,5492.208,0.0,67.61 -2015-08-23 07:00:00,5688.617,0.0,68.13 -2015-08-23 08:00:00,5979.45,0.0,69.23 -2015-08-23 09:00:00,6335.092,0.0,72.22 -2015-08-23 10:00:00,6664.983,0.0,74.85 -2015-08-23 11:00:00,6923.933,0.0,76.6 -2015-08-23 12:00:00,7133.975,0.0,78.3 -2015-08-23 13:00:00,7287.425,0.0,79.51 -2015-08-23 14:00:00,7320.1,0.0,81.71 -2015-08-23 15:00:00,7391.425,0.0028,81.6 -2015-08-23 16:00:00,7490.608,0.0,82.06 -2015-08-23 17:00:00,7513.825,0.0,81.57 -2015-08-23 18:00:00,7457.708,0.0029,80.48 -2015-08-23 19:00:00,7409.225,0.0,79.45 -2015-08-23 20:00:00,7532.108,0.0,77.34 -2015-08-23 21:00:00,7536.333,0.0,75.46 -2015-08-23 22:00:00,7351.567,0.0,75.64 -2015-08-23 23:00:00,7054.742,0.0,75.23 -2015-08-24 00:00:00,6716.642,0.0041,74.82 -2015-08-24 01:00:00,6434.717,0.0,73.9 -2015-08-24 02:00:00,6235.133,0.002,73.45 -2015-08-24 03:00:00,6129.708,0.0,73.67 -2015-08-24 04:00:00,6118.2,0.0,71.92 -2015-08-24 05:00:00,6311.067,0.0,71.1 -2015-08-24 06:00:00,6727.933,0.0,70.39 -2015-08-24 07:00:00,7295.533,0.0,71.95 -2015-08-24 08:00:00,7824.692,0.0,71.38 -2015-08-24 09:00:00,8214.233,0.0,73.33 -2015-08-24 10:00:00,8497.925,0.0,77.2 -2015-08-24 11:00:00,8706.483,0.0,79.98 -2015-08-24 12:00:00,8858.134,0.0,82.45 -2015-08-24 13:00:00,8985.625,0.0,83.67 -2015-08-24 14:00:00,9062.142,0.0,84.65 -2015-08-24 15:00:00,9147.667,0.0,84.84 -2015-08-24 16:00:00,9145.967,0.0,84.58 -2015-08-24 17:00:00,9049.658,0.0,83.07 -2015-08-24 18:00:00,8694.775,0.0,82.05 -2015-08-24 19:00:00,8399.125,0.0,80.57 -2015-08-24 20:00:00,8323.259,0.0,78.74 -2015-08-24 21:00:00,8189.225,0.0,77.02 -2015-08-24 22:00:00,7852.317,0.0,77.12 -2015-08-24 23:00:00,7365.142,0.0052,77.04 -2015-08-25 00:00:00,6906.767,0.0,76.93 -2015-08-25 01:00:00,6589.375,0.0,75.63 -2015-08-25 02:00:00,6355.833,0.0,75.55 -2015-08-25 03:00:00,6252.617,0.0,75.04 -2015-08-25 04:00:00,6252.5,0.0,74.68 -2015-08-25 05:00:00,6491.525,0.0,74.9 -2015-08-25 06:00:00,6970.875,0.0,74.7 -2015-08-25 07:00:00,7526.842,0.0,74.91 -2015-08-25 08:00:00,8094.9,0.0,74.95 -2015-08-25 09:00:00,8515.175,0.0,76.04 -2015-08-25 10:00:00,8866.616,0.0,78.58 -2015-08-25 11:00:00,9092.775,0.0,81.15 -2015-08-25 12:00:00,9277.925,0.0,83.64 -2015-08-25 13:00:00,9444.583,0.0,85.59 -2015-08-25 14:00:00,9601.733,0.0,87.14 -2015-08-25 15:00:00,9756.208,0.0,86.43 -2015-08-25 16:00:00,9823.775,0.0,85.37 -2015-08-25 17:00:00,9788.575,0.0,84.44 -2015-08-25 18:00:00,9391.325,0.0,83.56 -2015-08-25 19:00:00,9020.684,, -2015-08-25 20:00:00,8735.491,0.0,80.95 -2015-08-25 21:00:00,8374.884,0.0,79.28 -2015-08-25 22:00:00,7853.167,0.0,78.22 -2015-08-25 23:00:00,7235.967,0.0,75.84 -2015-08-26 00:00:00,6634.017,0.0,75.19 -2015-08-26 01:00:00,6238.117,0.0,73.61 -2015-08-26 02:00:00,5956.342,0.0,72.15 -2015-08-26 03:00:00,5773.308,0.0,70.09 -2015-08-26 04:00:00,5710.767,0.0,69.0 -2015-08-26 05:00:00,5860.042,0.0,68.16 -2015-08-26 06:00:00,6233.808,0.0,66.64 -2015-08-26 07:00:00,6772.0,0.0,66.69 -2015-08-26 08:00:00,7266.117,0.0,68.13 -2015-08-26 09:00:00,7642.733,0.0,71.06 -2015-08-26 10:00:00,7886.142,0.0,72.89 -2015-08-26 11:00:00,8046.758,0.0,76.53 -2015-08-26 12:00:00,8188.217,0.0,78.6 -2015-08-26 13:00:00,8306.217,0.0,80.36 -2015-08-26 14:00:00,8399.25,0.0,81.56 -2015-08-26 15:00:00,8403.325,0.024,82.22 -2015-08-26 16:00:00,8398.816,0.0,81.65 -2015-08-26 17:00:00,8300.608,0.0,81.55 -2015-08-26 18:00:00,7983.033,0.0,79.64 -2015-08-26 19:00:00,7707.883,0.0,79.0 -2015-08-26 20:00:00,7630.317,0.0,77.44 -2015-08-26 21:00:00,7444.833,0.0,74.97 -2015-08-26 22:00:00,7087.842,0.0,74.31 -2015-08-26 23:00:00,6636.15,0.0,73.14 -2015-08-27 00:00:00,6176.558,0.0,72.17 -2015-08-27 01:00:00,5847.45,0.0,70.97 -2015-08-27 02:00:00,5605.642,0.0,70.31 -2015-08-27 03:00:00,5449.533,0.0,69.03 -2015-08-27 04:00:00,5403.4,0.0,67.17 -2015-08-27 05:00:00,5567.333,0.0,66.02 -2015-08-27 06:00:00,5944.708,0.0,65.36 -2015-08-27 07:00:00,6486.875,0.0,64.85 -2015-08-27 08:00:00,6995.167,0.0,67.35 -2015-08-27 09:00:00,7395.8,0.0,69.4 -2015-08-27 10:00:00,7636.6,0.0,73.02 -2015-08-27 11:00:00,7789.692,0.0,75.16 -2015-08-27 12:00:00,7843.767,0.0,77.16 -2015-08-27 13:00:00,7744.058,0.0,78.58 -2015-08-27 14:00:00,7912.35,0.0,79.52 -2015-08-27 15:00:00,8053.175,0.0,79.74 -2015-08-27 16:00:00,8045.767,0.0,79.08 -2015-08-27 17:00:00,7941.475,0.0,79.08 -2015-08-27 18:00:00,7611.242,0.0,77.33 -2015-08-27 19:00:00,7316.4,0.0,76.75 -2015-08-27 20:00:00,7203.725,0.0,74.28 -2015-08-27 21:00:00,6996.175,0.0,73.11 -2015-08-27 22:00:00,6657.625,0.0,71.24 -2015-08-27 23:00:00,6249.283,0.0,70.06 -2015-08-28 00:00:00,5823.942,0.0,69.57 -2015-08-28 01:00:00,5512.833,0.0,68.2 -2015-08-28 02:00:00,5297.458,0.0,67.12 -2015-08-28 03:00:00,5172.358,0.0,66.11 -2015-08-28 04:00:00,5133.95,0.0,64.77 -2015-08-28 05:00:00,5297.608,0.0,64.31 -2015-08-28 06:00:00,5699.892,0.0,62.9 -2015-08-28 07:00:00,6220.783,0.0,63.62 -2015-08-28 08:00:00,6726.567,0.0,65.3 -2015-08-28 09:00:00,7110.45,0.0,67.85 -2015-08-28 10:00:00,7346.017,0.0,71.23 -2015-08-28 11:00:00,7513.65,0.0,73.34 -2015-08-28 12:00:00,7605.342,0.0,76.24 -2015-08-28 13:00:00,7680.542,0.0,77.44 -2015-08-28 14:00:00,7773.7,0.0,79.08 -2015-08-28 15:00:00,7861.925,0.0,79.47 -2015-08-28 16:00:00,7915.642,0.0,79.46 -2015-08-28 17:00:00,7861.142,0.0,79.57 -2015-08-28 18:00:00,7584.775,0.0,78.85 -2015-08-28 19:00:00,7324.65,0.0,77.79 -2015-08-28 20:00:00,7207.1,0.0,76.51 -2015-08-28 21:00:00,7017.883,0.0,74.1 -2015-08-28 22:00:00,6725.233,0.0,73.65 -2015-08-28 23:00:00,6355.65,0.0,71.86 -2015-08-29 00:00:00,5964.442,0.0,71.53 -2015-08-29 01:00:00,5659.667,0.0,70.21 -2015-08-29 02:00:00,5437.3,0.0,69.45 -2015-08-29 03:00:00,5285.508,0.0,67.41 -2015-08-29 04:00:00,5189.008,0.0,66.71 -2015-08-29 05:00:00,5180.542,0.0,66.5 -2015-08-29 06:00:00,5244.758,0.0,65.2 -2015-08-29 07:00:00,5491.6,0.0,65.44 -2015-08-29 08:00:00,5904.3,0.0,67.33 -2015-08-29 09:00:00,6301.742,0.0,70.79 -2015-08-29 10:00:00,6653.842,0.0,75.86 -2015-08-29 11:00:00,6895.808,0.0,77.66 -2015-08-29 12:00:00,7042.142,0.0,81.13 -2015-08-29 13:00:00,7099.508,0.0,82.52 -2015-08-29 14:00:00,7162.833,0.0,82.88 -2015-08-29 15:00:00,7229.167,0.0,83.79 -2015-08-29 16:00:00,7282.525,0.0,83.56 -2015-08-29 17:00:00,7246.85,0.0,82.81 -2015-08-29 18:00:00,7103.692,0.0,81.65 -2015-08-29 19:00:00,6960.042,0.0,77.93 -2015-08-29 20:00:00,6994.492,0.0,77.28 -2015-08-29 21:00:00,6873.217,0.0,74.8 -2015-08-29 22:00:00,6691.325,0.0,74.89 -2015-08-29 23:00:00,6436.658,0.0,75.27 -2015-08-30 00:00:00,6129.467,0.0,74.23 -2015-08-30 01:00:00,5833.958,0.0,73.55 -2015-08-30 02:00:00,5625.633,0.0,73.48 -2015-08-30 03:00:00,5479.175,0.0,72.54 -2015-08-30 04:00:00,5399.125,0.0,70.91 -2015-08-30 05:00:00,5377.808,0.0,70.69 -2015-08-30 06:00:00,5402.967,0.0,69.87 -2015-08-30 07:00:00,5574.717,0.0,69.59 -2015-08-30 08:00:00,5926.408,0.0,70.63 -2015-08-30 09:00:00,6336.067,0.0,73.71 -2015-08-30 10:00:00,6757.3,0.0,78.0 -2015-08-30 11:00:00,7126.467,0.0,80.99 -2015-08-30 12:00:00,7422.0,0.0,83.97 -2015-08-30 13:00:00,7623.508,0.0,85.68 -2015-08-30 14:00:00,7782.108,0.0,86.68 -2015-08-30 15:00:00,7878.208,0.0,87.36 -2015-08-30 16:00:00,7849.358,0.0,86.72 -2015-08-30 17:00:00,7811.142,0.0,85.23 -2015-08-30 18:00:00,7789.233,0.0,82.46 -2015-08-30 19:00:00,7842.0,0.0,81.24 -2015-08-30 20:00:00,8002.908,0.0,83.11 -2015-08-30 21:00:00,7986.967,0.0,80.72 -2015-08-30 22:00:00,7731.017,0.0645,80.44 -2015-08-30 23:00:00,7400.467,0.0,80.06 -2015-08-31 00:00:00,7029.183,0.0,78.91 -2015-08-31 01:00:00,6711.008,0.0,76.63 -2015-08-31 02:00:00,6512.683,0.0,76.56 -2015-08-31 03:00:00,6402.092,0.0,77.11 -2015-08-31 04:00:00,6380.625,0.0,76.21 -2015-08-31 05:00:00,6588.517,0.0,75.19 -2015-08-31 06:00:00,7002.608,0.0,74.46 -2015-08-31 07:00:00,7529.392,0.0,74.8 -2015-08-31 08:00:00,8091.342,0.0,75.69 -2015-08-31 09:00:00,8523.075,0.0,76.99 -2015-08-31 10:00:00,8819.717,0.0,80.83 -2015-08-31 11:00:00,9023.575,0.0,83.9 -2015-08-31 12:00:00,9180.958,0.0,84.09 -2015-08-31 13:00:00,9380.983,0.0,85.97 -2015-08-31 14:00:00,9588.842,0.0,87.61 -2015-08-31 15:00:00,9743.925,0.0,87.66 -2015-08-31 16:00:00,9839.667,0.0,88.41 -2015-08-31 17:00:00,9801.116,0.0,87.36 -2015-08-31 18:00:00,9501.525,0.0,88.7 -2015-08-31 19:00:00,9296.333,0.0,87.06 -2015-08-31 20:00:00,9246.225,0.0,84.88 -2015-08-31 21:00:00,9064.108,0.0,83.24 -2015-08-31 22:00:00,8707.566,0.0,82.79 -2015-08-31 23:00:00,8150.625,0.0,82.65 -2015-09-01 00:00:00,7599.542,0.0,81.2 -2015-09-01 01:00:00,7185.742,0.0,79.71 -2015-09-01 02:00:00,6898.892,0.0,79.27 -2015-09-01 03:00:00,6717.717,0.0,77.76 -2015-09-01 04:00:00,6654.492,0.0,76.01 -2015-09-01 05:00:00,6798.4,0.0,75.69 -2015-09-01 06:00:00,7214.1,0.0,74.7 -2015-09-01 07:00:00,7739.783,0.0,74.05 -2015-09-01 08:00:00,8298.392,0.0,75.15 -2015-09-01 09:00:00,8730.991,0.0,77.67 -2015-09-01 10:00:00,9037.158,0.0,80.27 -2015-09-01 11:00:00,9205.917,0.0,81.52 -2015-09-01 12:00:00,9323.45,0.0,84.32 -2015-09-01 13:00:00,9419.017,0.0,85.6 -2015-09-01 14:00:00,9504.441,0.0,85.65 -2015-09-01 15:00:00,9598.509,0.0,85.99 -2015-09-01 16:00:00,9653.35,0.0,86.2 -2015-09-01 17:00:00,9577.392,0.0,85.95 -2015-09-01 18:00:00,9186.142,0.0,83.59 -2015-09-01 19:00:00,8880.417,0.0,81.99 -2015-09-01 20:00:00,8791.083,0.0,79.02 -2015-09-01 21:00:00,8570.816,0.0,76.34 -2015-09-01 22:00:00,8213.858,0.0,76.11 -2015-09-01 23:00:00,7712.942,0.0,76.52 -2015-09-02 00:00:00,7166.567,0.0,75.55 -2015-09-02 01:00:00,6770.642,0.0,75.03 -2015-09-02 02:00:00,6521.258,0.0,74.49 -2015-09-02 03:00:00,6367.983,0.0,74.49 -2015-09-02 04:00:00,6337.783,0.0,72.88 -2015-09-02 05:00:00,6533.108,0.0,72.25 -2015-09-02 06:00:00,7005.3,0.0,72.87 -2015-09-02 07:00:00,7588.15,0.0,72.19 -2015-09-02 08:00:00,8152.95,0.0,73.84 -2015-09-02 09:00:00,8631.608,0.0,77.15 -2015-09-02 10:00:00,9003.741,0.0,80.66 -2015-09-02 11:00:00,9321.15,0.0,85.01 -2015-09-02 12:00:00,9541.575,0.0,86.23 -2015-09-02 13:00:00,9712.667,0.0,87.14 -2015-09-02 14:00:00,9825.9,0.0,87.68 -2015-09-02 15:00:00,9878.017,0.0,86.83 -2015-09-02 16:00:00,9842.917,0.0,85.98 -2015-09-02 17:00:00,9681.2,0.0,84.16 -2015-09-02 18:00:00,9240.875,0.0,81.91 -2015-09-02 19:00:00,8985.241,0.0,80.34 -2015-09-02 20:00:00,8958.1,0.0,79.3 -2015-09-02 21:00:00,8752.892,0.0,78.08 -2015-09-02 22:00:00,8435.858,0.0,77.49 -2015-09-02 23:00:00,7968.717,0.0,76.53 -2015-09-03 00:00:00,7449.883,0.0,76.16 -2015-09-03 01:00:00,7067.992,0.0,75.88 -2015-09-03 02:00:00,6784.433,0.0,75.39 -2015-09-03 03:00:00,6595.15,0.0,74.22 -2015-09-03 04:00:00,6516.542,0.0,74.48 -2015-09-03 05:00:00,6679.342,0.0,73.28 -2015-09-03 06:00:00,7112.433,0.0,73.19 -2015-09-03 07:00:00,7653.958,0.0,74.1 -2015-09-03 08:00:00,8223.525,0.0,76.8 -2015-09-03 09:00:00,8661.009,0.0,79.99 -2015-09-03 10:00:00,9026.25,0.0,82.98 -2015-09-03 11:00:00,9277.15,0.0,85.11 -2015-09-03 12:00:00,9516.35,0.0,87.42 -2015-09-03 13:00:00,9716.292,0.0,89.06 -2015-09-03 14:00:00,9884.208,0.0,89.3 -2015-09-03 15:00:00,9959.309,0.0,90.48 -2015-09-03 16:00:00,9933.342,0.0,89.42 -2015-09-03 17:00:00,9873.366,0.0,88.15 -2015-09-03 18:00:00,9514.925,0.0,86.63 -2015-09-03 19:00:00,9284.217,0.0026,84.6 -2015-09-03 20:00:00,9210.667,0.0,82.45 -2015-09-03 21:00:00,9008.95,0.0,80.24 -2015-09-03 22:00:00,8631.309,0.0045,80.23 -2015-09-03 23:00:00,8103.458,0.0,80.03 -2015-09-04 00:00:00,7585.958,0.0,79.49 -2015-09-04 01:00:00,7191.642,0.0,79.07 -2015-09-04 02:00:00,6905.792,0.0,78.15 -2015-09-04 03:00:00,6714.183,0.0,76.67 -2015-09-04 04:00:00,6660.108,0.0,76.18 -2015-09-04 05:00:00,6826.717,0.0021,75.18 -2015-09-04 06:00:00,7244.008,0.0,74.67 -2015-09-04 07:00:00,7726.458,0.0,75.47 -2015-09-04 08:00:00,8292.5,0.0,76.77 -2015-09-04 09:00:00,8771.158,0.0,79.57 -2015-09-04 10:00:00,9003.083,0.0,79.62 -2015-09-04 11:00:00,9106.392,0.0,80.08 -2015-09-04 12:00:00,9073.083,0.0,78.93 -2015-09-04 13:00:00,9059.533,0.0,80.29 -2015-09-04 14:00:00,9079.566,0.0,80.52 -2015-09-04 15:00:00,9093.608,0.0,80.42 -2015-09-04 16:00:00,9052.983,0.0,80.83 -2015-09-04 17:00:00,8939.358,0.0,80.23 -2015-09-04 18:00:00,8568.509,0.0,79.09 -2015-09-04 19:00:00,8281.542,0.0,77.5 -2015-09-04 20:00:00,8056.975,0.0,75.56 -2015-09-04 21:00:00,7738.892,0.0,74.3 -2015-09-04 22:00:00,7375.267,0.0,73.1 -2015-09-04 23:00:00,6934.35,0.0,73.24 -2015-09-05 00:00:00,6494.167,0.0,72.12 -2015-09-05 01:00:00,6135.975,0.0,70.86 -2015-09-05 02:00:00,5856.492,0.0,69.54 -2015-09-05 03:00:00,5670.783,0.0,69.04 -2015-09-05 04:00:00,5550.867,0.0,68.41 -2015-09-05 05:00:00,5527.25,0.0,67.63 -2015-09-05 06:00:00,5573.125,0.0,67.64 -2015-09-05 07:00:00,5744.683,0.0,68.09 -2015-09-05 08:00:00,6047.183,0.0,69.36 -2015-09-05 09:00:00,6357.817,0.0,72.14 -2015-09-05 10:00:00,6608.283,0.0,74.02 -2015-09-05 11:00:00,6772.875,0.0,75.56 -2015-09-05 12:00:00,6862.217,0.0,77.45 -2015-09-05 13:00:00,6889.133,0.0,78.47 -2015-09-05 14:00:00,6915.558,0.0,79.35 -2015-09-05 15:00:00,6963.242,0.0,79.71 -2015-09-05 16:00:00,6999.325,0.0,78.96 -2015-09-05 17:00:00,6976.258,0.0,77.85 -2015-09-05 18:00:00,6838.425,0.0,75.03 -2015-09-05 19:00:00,6673.817,0.0,73.2 -2015-09-05 20:00:00,6660.383,0.0,70.14 -2015-09-05 21:00:00,6515.55,0.0,70.11 -2015-09-05 22:00:00,6318.617,0.0,69.41 -2015-09-05 23:00:00,6054.675,0.0,68.18 -2015-09-06 00:00:00,5765.708,0.0,67.66 -2015-09-06 01:00:00,5498.075,0.0,67.09 -2015-09-06 02:00:00,5304.675,0.0,66.28 -2015-09-06 03:00:00,5151.383,0.0,65.49 -2015-09-06 04:00:00,5066.85,0.0,64.74 -2015-09-06 05:00:00,5057.008,0.0,64.15 -2015-09-06 06:00:00,5082.025,0.0,63.88 -2015-09-06 07:00:00,5238.533,0.0,65.41 -2015-09-06 08:00:00,5561.092,0.0,68.6 -2015-09-06 09:00:00,5917.242,0.0,73.13 -2015-09-06 10:00:00,6262.442,0.0,77.06 -2015-09-06 11:00:00,6531.725,0.0,79.43 -2015-09-06 12:00:00,6723.5,0.0,81.54 -2015-09-06 13:00:00,6832.333,0.0,82.44 -2015-09-06 14:00:00,6857.083,0.0,83.3 -2015-09-06 15:00:00,6880.117,0.0,81.98 -2015-09-06 16:00:00,6879.417,0.0,80.95 -2015-09-06 17:00:00,6803.292,0.0,79.31 -2015-09-06 18:00:00,6673.892,0.0,78.01 -2015-09-06 19:00:00,6601.167,0.0284,75.42 -2015-09-06 20:00:00,6621.05,0.0,73.03 -2015-09-06 21:00:00,6578.958,0.0108,72.82 -2015-09-06 22:00:00,6422.492,0.1156,71.65 -2015-09-06 23:00:00,6191.458,0.062,71.52 -2015-09-07 00:00:00,5903.183,0.0507,70.98 -2015-09-07 01:00:00,5677.258,0.0,69.92 -2015-09-07 02:00:00,5528.017,0.0,69.77 -2015-09-07 03:00:00,5413.692,0.0,68.92 -2015-09-07 04:00:00,5361.8,0.0,68.38 -2015-09-07 05:00:00,5411.367,0.0,66.97 -2015-09-07 06:00:00,5529.108,0.0,67.02 -2015-09-07 07:00:00,5749.875,0.0,69.2 -2015-09-07 08:00:00,6096.525,0.0,71.75 -2015-09-07 09:00:00,6473.092,0.0,76.35 -2015-09-07 10:00:00,6857.2,0.0,80.69 -2015-09-07 11:00:00,7163.767,0.0,83.33 -2015-09-07 12:00:00,7411.833,0.0,85.63 -2015-09-07 13:00:00,7618.733,0.0,87.67 -2015-09-07 14:00:00,7797.5,0.0,87.87 -2015-09-07 15:00:00,7962.208,0.0,87.86 -2015-09-07 16:00:00,8103.317,0.0,87.35 -2015-09-07 17:00:00,8135.583,0.0,85.43 -2015-09-07 18:00:00,8083.292,0.0,83.3 -2015-09-07 19:00:00,8095.508,0.0,81.75 -2015-09-07 20:00:00,8218.4,0.0,80.42 -2015-09-07 21:00:00,8162.692,0.0,79.47 -2015-09-07 22:00:00,7901.15,0.0,80.78 -2015-09-07 23:00:00,7458.642,0.0,79.09 -2015-09-08 00:00:00,7032.633,0.0,78.46 -2015-09-08 01:00:00,6686.625,0.0,77.49 -2015-09-08 02:00:00,6417.933,0.0,76.92 -2015-09-08 03:00:00,6296.267,0.0,74.89 -2015-09-08 04:00:00,6273.833,0.0,74.38 -2015-09-08 05:00:00,6474.383,0.0,73.7 -2015-09-08 06:00:00,6950.442,0.0,73.41 -2015-09-08 07:00:00,7533.842,0.0,75.16 -2015-09-08 08:00:00,8169.708,0.0,77.96 -2015-09-08 09:00:00,8731.7,0.0,80.31 -2015-09-08 10:00:00,9169.967,0.0,85.31 -2015-09-08 11:00:00,9537.417,0.0,88.8 -2015-09-08 12:00:00,9866.108,0.0,90.82 -2015-09-08 13:00:00,10116.66,0.0,92.13 -2015-09-08 14:00:00,10278.03,0.0,92.72 -2015-09-08 15:00:00,10382.35,0.0,91.84 -2015-09-08 16:00:00,10412.83,0.0,90.91 -2015-09-08 17:00:00,10350.42,0.0,87.7 -2015-09-08 18:00:00,10024.89,0.0,85.97 -2015-09-08 19:00:00,9812.825,0.0,84.71 -2015-09-08 20:00:00,9743.616,0.0,81.51 -2015-09-08 21:00:00,9476.25,0.0,81.03 -2015-09-08 22:00:00,8970.983,0.0,81.52 -2015-09-08 23:00:00,8278.958,0.0,80.89 -2015-09-09 00:00:00,7634.192,0.0,79.21 -2015-09-09 01:00:00,7175.075,0.0,78.16 -2015-09-09 02:00:00,6867.842,0.0,76.49 -2015-09-09 03:00:00,6717.833,0.0,75.36 -2015-09-09 04:00:00,6702.425,0.0,76.13 -2015-09-09 05:00:00,6945.392,0.0,74.34 -2015-09-09 06:00:00,7547.2,0.0,74.8 -2015-09-09 07:00:00,8175.325,0.0,76.37 -2015-09-09 08:00:00,8608.908,0.0,77.75 -2015-09-09 09:00:00,9087.741,0.0,80.58 -2015-09-09 10:00:00,9452.733,0.0,82.41 -2015-09-09 11:00:00,9753.075,0.0,84.36 -2015-09-09 12:00:00,9954.325,0.0,86.65 -2015-09-09 13:00:00,10186.58,0.0,86.93 -2015-09-09 14:00:00,10270.22,0.0024,88.64 -2015-09-09 15:00:00,10218.83,0.0,87.36 -2015-09-09 16:00:00,9997.741,0.0,83.53 -2015-09-09 17:00:00,9797.417,0.0,82.21 -2015-09-09 18:00:00,9494.25,0.0,79.69 -2015-09-09 19:00:00,9384.967,0.0,80.73 -2015-09-09 20:00:00,9388.0,0.0,79.23 -2015-09-09 21:00:00,9220.342,0.0,78.33 -2015-09-09 22:00:00,8809.55,0.002,79.75 -2015-09-09 23:00:00,8213.184,0.0,79.42 -2015-09-10 00:00:00,7624.542,0.0102,78.36 -2015-09-10 01:00:00,7143.35,0.0848,78.31 -2015-09-10 02:00:00,6762.525,0.0027,76.4 -2015-09-10 03:00:00,6580.3,0.1806,74.05 -2015-09-10 04:00:00,6518.558,0.0447,73.4 -2015-09-10 05:00:00,6691.817,0.0028,73.71 -2015-09-10 06:00:00,7221.833,0.0162,72.22 -2015-09-10 07:00:00,7716.692,0.0929,72.11 -2015-09-10 08:00:00,8078.342,0.0039,72.7 -2015-09-10 09:00:00,8403.042,0.0141,72.81 -2015-09-10 10:00:00,8589.983,0.0017,73.25 -2015-09-10 11:00:00,8663.583,0.0034,74.83 -2015-09-10 12:00:00,8736.475,0.0,74.83 -2015-09-10 13:00:00,8827.017,0.0052,75.41 -2015-09-10 14:00:00,8783.833,0.014,75.24 -2015-09-10 15:00:00,8801.042,0.0,75.11 -2015-09-10 16:00:00,8825.425,0.0,73.74 -2015-09-10 17:00:00,8798.233,0.0258,73.14 -2015-09-10 18:00:00,8519.825,0.0071,73.77 -2015-09-10 19:00:00,8367.65,0.0031,73.69 -2015-09-10 20:00:00,8223.075,0.0041,71.79 -2015-09-10 21:00:00,7947.583,0.0032,71.24 -2015-09-10 22:00:00,7569.575,0.0062,70.99 -2015-09-10 23:00:00,7031.342,0.0034,70.32 -2015-09-11 00:00:00,6494.708,0.0,70.06 -2015-09-11 01:00:00,6098.258,0.0,69.54 -2015-09-11 02:00:00,5811.733,0.0,68.46 -2015-09-11 03:00:00,5625.225,0.0,67.09 -2015-09-11 04:00:00,5577.567,0.0,66.78 -2015-09-11 05:00:00,5751.633,0.0,66.05 -2015-09-11 06:00:00,6243.933,0.0,66.33 -2015-09-11 07:00:00,6778.575,0.0,66.59 -2015-09-11 08:00:00,7170.083,0.0,67.45 -2015-09-11 09:00:00,7504.242,0.0,68.85 -2015-09-11 10:00:00,7660.292,0.0,71.17 -2015-09-11 11:00:00,7747.392,0.0,72.08 -2015-09-11 12:00:00,7815.375,0.0,74.12 -2015-09-11 13:00:00,7986.567,0.0,75.46 -2015-09-11 14:00:00,8090.4,0.0,78.38 -2015-09-11 15:00:00,8148.567,0.0,79.46 -2015-09-11 16:00:00,8237.2,0.0,79.48 -2015-09-11 17:00:00,8231.809,0.0,79.27 -2015-09-11 18:00:00,7921.275,0.0,78.7 -2015-09-11 19:00:00,7745.6,0.0,74.56 -2015-09-11 20:00:00,7615.325,0.0,74.63 -2015-09-11 21:00:00,7383.808,0.0,74.29 -2015-09-11 22:00:00,7065.175,0.0,73.47 -2015-09-11 23:00:00,6687.792,0.0,70.9 -2015-09-12 00:00:00,6270.95,0.0,71.5 -2015-09-12 01:00:00,5946.842,0.0,71.47 -2015-09-12 02:00:00,5707.758,0.0,70.3 -2015-09-12 03:00:00,5555.783,0.0,68.66 -2015-09-12 04:00:00,5458.292,0.0,68.51 -2015-09-12 05:00:00,5451.825,0.0,67.75 -2015-09-12 06:00:00,5557.325,0.0,66.93 -2015-09-12 07:00:00,5818.525,0.0,68.35 -2015-09-12 08:00:00,6259.833,0.0,70.7 -2015-09-12 09:00:00,6663.25,0.0,74.12 -2015-09-12 10:00:00,6948.167,0.0,76.91 -2015-09-12 11:00:00,7097.625,0.0,77.64 -2015-09-12 12:00:00,7175.833,0.0,77.03 -2015-09-12 13:00:00,7167.167,0.0,77.11 -2015-09-12 14:00:00,7137.675,0.0,76.13 -2015-09-12 15:00:00,7073.808,0.0026,74.57 -2015-09-12 16:00:00,7014.108,0.0024,74.59 -2015-09-12 17:00:00,6973.575,0.0,73.06 -2015-09-12 18:00:00,6959.25,0.0118,72.67 -2015-09-12 19:00:00,7021.442,0.0067,70.3 -2015-09-12 20:00:00,6982.65,0.0,71.06 -2015-09-12 21:00:00,6865.842,0.0034,71.53 -2015-09-12 22:00:00,6667.783,0.0,71.24 -2015-09-12 23:00:00,6389.758,0.0022,71.1 -2015-09-13 00:00:00,6062.208,0.0,71.03 -2015-09-13 01:00:00,5780.858,0.0,70.95 -2015-09-13 02:00:00,5575.85,0.0,70.86 -2015-09-13 03:00:00,5429.967,0.0,69.94 -2015-09-13 04:00:00,5351.492,0.0,70.01 -2015-09-13 05:00:00,5315.6,0.0,69.74 -2015-09-13 06:00:00,5333.275,0.0,68.47 -2015-09-13 07:00:00,5434.875,0.0,68.3 -2015-09-13 08:00:00,5658.533,0.0,69.05 -2015-09-13 09:00:00,6005.383,0.0,69.83 -2015-09-13 10:00:00,6371.733,0.0,71.78 -2015-09-13 11:00:00,6620.558,0.0,74.73 -2015-09-13 12:00:00,6766.842,0.0,76.39 -2015-09-13 13:00:00,6857.342,0.0,76.74 -2015-09-13 14:00:00,6843.692,0.0,77.39 -2015-09-13 15:00:00,6736.65,0.0356,75.96 -2015-09-13 16:00:00,6590.367,0.0025,73.15 -2015-09-13 17:00:00,6500.275,0.0091,70.28 -2015-09-13 18:00:00,6427.967,0.0,67.54 -2015-09-13 19:00:00,6382.55,0.0,67.46 -2015-09-13 20:00:00,6278.417,0.0023,66.81 -2015-09-13 21:00:00,6076.592,0.0025,64.63 -2015-09-13 22:00:00,5829.492,0.0,63.66 -2015-09-13 23:00:00,5473.417,0.0,62.0 -2015-09-14 00:00:00,5096.925,0.0,61.63 -2015-09-14 01:00:00,4816.15,0.0,60.76 -2015-09-14 02:00:00,4633.25,0.0,59.46 -2015-09-14 03:00:00,4533.917,0.0,58.6 -2015-09-14 04:00:00,4543.383,0.0,57.97 -2015-09-14 05:00:00,4718.575,0.0,57.86 -2015-09-14 06:00:00,5132.958,0.0,57.46 -2015-09-14 07:00:00,5592.483,0.0,58.44 -2015-09-14 08:00:00,6074.883,0.0,60.42 -2015-09-14 09:00:00,6399.333,0.0,63.05 -2015-09-14 10:00:00,6600.125,0.0,66.83 -2015-09-14 11:00:00,6708.45,0.0,69.53 -2015-09-14 12:00:00,6807.2,0.0,72.08 -2015-09-14 13:00:00,6907.75,0.0,73.65 -2015-09-14 14:00:00,6980.192,0.0,74.6 -2015-09-14 15:00:00,7044.725,0.0,74.87 -2015-09-14 16:00:00,7101.1,0.0,74.28 -2015-09-14 17:00:00,7070.1,0.0,73.99 -2015-09-14 18:00:00,6787.725,0.0,73.04 -2015-09-14 19:00:00,6682.933,0.0,71.3 -2015-09-14 20:00:00,6564.025,0.0,69.54 -2015-09-14 21:00:00,6324.6,0.0,67.9 -2015-09-14 22:00:00,6009.883,0.0,67.8 -2015-09-14 23:00:00,5579.575,0.0,66.24 -2015-09-15 00:00:00,5162.133,0.0,64.68 -2015-09-15 01:00:00,4874.1,0.0,64.27 -2015-09-15 02:00:00,4673.917,0.0,62.34 -2015-09-15 03:00:00,4580.508,0.0,61.4 -2015-09-15 04:00:00,4581.933,0.0,60.84 -2015-09-15 05:00:00,4772.267,0.0,59.88 -2015-09-15 06:00:00,5220.4,0.0,60.29 -2015-09-15 07:00:00,5751.142,0.0,61.63 -2015-09-15 08:00:00,6268.142,0.0,64.75 -2015-09-15 09:00:00,6643.108,0.0,69.43 -2015-09-15 10:00:00,6912.125,0.0,73.39 -2015-09-15 11:00:00,7105.754,0.0,76.3 -2015-09-15 12:00:00,7272.767,0.0,79.3 -2015-09-15 13:00:00,7419.758,0.0,80.19 -2015-09-15 14:00:00,7558.617,0.0,81.37 -2015-09-15 15:00:00,7691.042,0.0,82.66 -2015-09-15 16:00:00,7795.075,0.0,81.23 -2015-09-15 17:00:00,7766.8,0.0,80.55 -2015-09-15 18:00:00,7461.875,0.0,78.56 -2015-09-15 19:00:00,7329.875,0.0,76.75 -2015-09-15 20:00:00,7211.692,0.0,73.2 -2015-09-15 21:00:00,6958.967,0.0,71.91 -2015-09-15 22:00:00,6610.383,0.0,71.77 -2015-09-15 23:00:00,6136.783,0.0,67.86 -2015-09-16 00:00:00,5652.792,0.0,68.91 -2015-09-16 01:00:00,5321.242,0.0,68.17 -2015-09-16 02:00:00,5107.508,0.0,67.03 -2015-09-16 03:00:00,4980.733,0.0,65.2 -2015-09-16 04:00:00,4963.35,0.0,64.25 -2015-09-16 05:00:00,5181.317,0.0,63.48 -2015-09-16 06:00:00,5745.975,0.0,63.61 -2015-09-16 07:00:00,6376.483,0.0,64.96 -2015-09-16 08:00:00,6916.192,0.0,67.58 -2015-09-16 09:00:00,7347.358,0.0,72.93 -2015-09-16 10:00:00,7618.642,0.0,77.63 -2015-09-16 11:00:00,7816.142,0.0,80.63 -2015-09-16 12:00:00,7996.55,0.0,82.84 -2015-09-16 13:00:00,8165.158,0.0,84.06 -2015-09-16 14:00:00,8297.908,0.0,84.39 -2015-09-16 15:00:00,8440.55,0.0,84.18 -2015-09-16 16:00:00,8545.2,0.0,84.92 -2015-09-16 17:00:00,8499.4,0.0,82.28 -2015-09-16 18:00:00,8120.592,0.0,79.87 -2015-09-16 19:00:00,7930.967,0.0,76.43 -2015-09-16 20:00:00,7756.517,0.0,72.83 -2015-09-16 21:00:00,7462.858,0.0,72.55 -2015-09-16 22:00:00,7059.992,0.0,72.36 -2015-09-16 23:00:00,6559.817,0.0,71.44 -2015-09-17 00:00:00,6039.175,0.0,70.17 -2015-09-17 01:00:00,5699.258,0.0,69.78 -2015-09-17 02:00:00,5453.592,0.0,68.92 -2015-09-17 03:00:00,5319.175,0.0,67.79 -2015-09-17 04:00:00,5284.208,0.0,66.66 -2015-09-17 05:00:00,5493.042,0.0,63.4 -2015-09-17 06:00:00,6048.975,0.0,65.43 -2015-09-17 07:00:00,6647.967,0.0,66.63 -2015-09-17 08:00:00,7177.758,0.0,70.32 -2015-09-17 09:00:00,7650.873,0.0,75.03 -2015-09-17 10:00:00,7939.817,0.0,78.98 -2015-09-17 11:00:00,8162.692,0.0,82.61 -2015-09-17 12:00:00,8342.908,0.0,84.45 -2015-09-17 13:00:00,8504.184,0.0,85.15 -2015-09-17 14:00:00,8596.525,0.0,85.69 -2015-09-17 15:00:00,8747.95,0.0,85.55 -2015-09-17 16:00:00,8817.408,0.0,84.42 -2015-09-17 17:00:00,8699.759,0.0,81.88 -2015-09-17 18:00:00,8284.525,0.0,78.15 -2015-09-17 19:00:00,8058.575,0.0,75.73 -2015-09-17 20:00:00,7893.717,0.0,73.76 -2015-09-17 21:00:00,7593.692,0.0,73.21 -2015-09-17 22:00:00,7168.575,0.0,73.71 -2015-09-17 23:00:00,6657.75,0.0,71.17 -2015-09-18 00:00:00,6159.842,0.0,70.63 -2015-09-18 01:00:00,5769.95,0.0,70.11 -2015-09-18 02:00:00,5533.842,0.0,68.65 -2015-09-18 03:00:00,5394.658,0.0,67.92 -2015-09-18 04:00:00,5376.467,0.0,66.04 -2015-09-18 05:00:00,5562.35,0.0,65.79 -2015-09-18 06:00:00,6106.167,0.0,65.84 -2015-09-18 07:00:00,6684.775,0.0,67.18 -2015-09-18 08:00:00,7218.975,0.0,69.95 -2015-09-18 09:00:00,7666.717,0.0,74.73 -2015-09-18 10:00:00,7999.117,0.0,78.87 -2015-09-18 11:00:00,8219.75,, -2015-09-18 12:00:00,8405.9,0.0,81.81 -2015-09-18 13:00:00,8526.009,0.0,83.75 -2015-09-18 14:00:00,8545.542,0.0,84.11 -2015-09-18 15:00:00,8617.316,0.0,83.07 -2015-09-18 16:00:00,8637.559,0.0,81.81 -2015-09-18 17:00:00,8419.667,0.0,80.77 -2015-09-18 18:00:00,8027.142,0.0,78.86 -2015-09-18 19:00:00,7810.975,0.0,75.32 -2015-09-18 20:00:00,7613.025,0.0,73.13 -2015-09-18 21:00:00,7351.242,0.0,71.68 -2015-09-18 22:00:00,7011.825,0.0,71.61 -2015-09-18 23:00:00,6611.767,0.0,70.76 -2015-09-19 00:00:00,6166.558,0.0,70.92 -2015-09-19 01:00:00,5848.742,0.0,70.09 -2015-09-19 02:00:00,5618.692,0.0,68.89 -2015-09-19 03:00:00,5467.367,0.0,68.13 -2015-09-19 04:00:00,5398.983,0.0,67.88 -2015-09-19 05:00:00,5422.867,0.0,65.86 -2015-09-19 06:00:00,5559.125,0.0,67.36 -2015-09-19 07:00:00,5792.317,0.0,67.04 -2015-09-19 08:00:00,6175.133,0.0,67.84 -2015-09-19 09:00:00,6565.417,0.0,71.34 -2015-09-19 10:00:00,6919.975,0.0,74.13 -2015-09-19 11:00:00,7185.475,0.0,76.92 -2015-09-19 12:00:00,7336.717,0.0,78.35 -2015-09-19 13:00:00,7407.067,0.0,80.39 -2015-09-19 14:00:00,7464.075,0.0,80.57 -2015-09-19 15:00:00,7488.967,0.0,80.33 -2015-09-19 16:00:00,7492.6,0.0,79.65 -2015-09-19 17:00:00,7413.575,0.0,78.48 -2015-09-19 18:00:00,7276.3,0.0,75.88 -2015-09-19 19:00:00,7313.958,0.0,74.66 -2015-09-19 20:00:00,7290.758,0.0,73.1 -2015-09-19 21:00:00,7174.9,0.0,73.82 -2015-09-19 22:00:00,6947.9,0.0,73.46 -2015-09-19 23:00:00,6631.658,0.0,73.58 -2015-09-20 00:00:00,6274.25,0.0,72.97 -2015-09-20 01:00:00,5989.417,0.0,72.82 -2015-09-20 02:00:00,5771.458,0.0,72.65 -2015-09-20 03:00:00,5626.967,0.0,72.05 -2015-09-20 04:00:00,5559.175,0.0,71.67 -2015-09-20 05:00:00,5555.425,0.0,71.49 -2015-09-20 06:00:00,5546.175,0.0,70.81 -2015-09-20 07:00:00,5557.733,0.0,70.83 -2015-09-20 08:00:00,5742.733,0.0,69.64 -2015-09-20 09:00:00,5946.175,0.0,70.15 -2015-09-20 10:00:00,6132.842,0.0,70.2 -2015-09-20 11:00:00,6259.617,0.0,71.83 -2015-09-20 12:00:00,6363.483,0.0,72.29 -2015-09-20 13:00:00,6451.058,0.0,74.98 -2015-09-20 14:00:00,6497.825,0.0,75.89 -2015-09-20 15:00:00,6544.075,0.0,77.26 -2015-09-20 16:00:00,6537.4,0.0,76.26 -2015-09-20 17:00:00,6491.825,0.0,74.72 -2015-09-20 18:00:00,6363.217,0.0,73.1 -2015-09-20 19:00:00,6379.142,0.0,71.09 -2015-09-20 20:00:00,6325.383,0.0,67.57 -2015-09-20 21:00:00,6158.608,0.0,66.75 -2015-09-20 22:00:00,5866.808,0.0,65.85 -2015-09-20 23:00:00,5485.783,0.0,64.81 -2015-09-21 00:00:00,5095.883,0.0,64.03 -2015-09-21 01:00:00,4827.817,0.0,62.73 -2015-09-21 02:00:00,4651.2,0.0,61.5 -2015-09-21 03:00:00,4550.758,0.0,60.39 -2015-09-21 04:00:00,4560.1,0.0,59.78 -2015-09-21 05:00:00,4753.133,0.0,58.5 -2015-09-21 06:00:00,5273.867,0.0,57.14 -2015-09-21 07:00:00,5801.1,0.0,57.91 -2015-09-21 08:00:00,6227.142,0.0,59.19 -2015-09-21 09:00:00,6515.35,0.0,60.63 -2015-09-21 10:00:00,6690.158,0.0,63.24 -2015-09-21 11:00:00,6827.967,0.0,65.6 -2015-09-21 12:00:00,6907.075,0.0,67.48 -2015-09-21 13:00:00,6969.425,0.0,69.03 -2015-09-21 14:00:00,6938.7,0.0,70.96 -2015-09-21 15:00:00,6921.942,0.0,71.03 -2015-09-21 16:00:00,6935.375,0.0,70.34 -2015-09-21 17:00:00,6872.6,0.0,69.77 -2015-09-21 18:00:00,6651.758,0.0,69.7 -2015-09-21 19:00:00,6627.3,0.0,68.11 -2015-09-21 20:00:00,6452.917,0.0,67.31 -2015-09-21 21:00:00,6189.533,0.0,67.7 -2015-09-21 22:00:00,5854.9,0.0,67.56 -2015-09-21 23:00:00,5395.742,0.0,66.16 -2015-09-22 00:00:00,4944.15,0.0,65.48 -2015-09-22 01:00:00,4655.408,0.0,64.33 -2015-09-22 02:00:00,4458.192,0.0,64.25 -2015-09-22 03:00:00,4362.842,0.0,62.2 -2015-09-22 04:00:00,4367.3,0.0,62.01 -2015-09-22 05:00:00,4570.358,0.0,61.47 -2015-09-22 06:00:00,5152.325,0.0,60.43 -2015-09-22 07:00:00,5762.417,0.0,60.7 -2015-09-22 08:00:00,6186.825,0.0,61.98 -2015-09-22 09:00:00,6466.417,0.0,63.6 -2015-09-22 10:00:00,6615.25,0.0,65.63 -2015-09-22 11:00:00,6731.217,0.0,67.23 -2015-09-22 12:00:00,6813.6,0.0,67.77 -2015-09-22 13:00:00,6845.842,0.0,69.41 -2015-09-22 14:00:00,6830.983,0.0,69.33 -2015-09-22 15:00:00,6867.883,0.0,70.59 -2015-09-22 16:00:00,6903.242,0.0,70.63 -2015-09-22 17:00:00,6830.433,0.0,70.16 -2015-09-22 18:00:00,6574.267,0.0,68.82 -2015-09-22 19:00:00,6498.817,0.0,68.1 -2015-09-22 20:00:00,6355.908,0.0,66.92 -2015-09-22 21:00:00,6096.125,0.0,66.12 -2015-09-22 22:00:00,5756.033,0.0,65.38 -2015-09-22 23:00:00,5341.008,0.0,65.3 -2015-09-23 00:00:00,5006.883,0.0,63.88 -2015-09-23 01:00:00,4606.342,0.0,63.2 -2015-09-23 02:00:00,4431.883,0.0,62.8 -2015-09-23 03:00:00,4327.775,0.0,61.37 -2015-09-23 04:00:00,4327.867,0.0,59.59 -2015-09-23 05:00:00,4498.483,0.0,58.92 -2015-09-23 06:00:00,5001.317,0.0,57.97 -2015-09-23 07:00:00,5494.267,0.0,57.95 -2015-09-23 08:00:00,5947.4,0.0,60.04 -2015-09-23 09:00:00,6236.817,0.0,62.51 -2015-09-23 10:00:00,6428.892,0.0,65.9 -2015-09-23 11:00:00,6564.125,0.0,69.5 -2015-09-23 12:00:00,6691.858,0.0,71.98 -2015-09-23 13:00:00,6809.858,0.0,74.39 -2015-09-23 14:00:00,6891.033,0.0,75.41 -2015-09-23 15:00:00,6975.55,0.0,77.04 -2015-09-23 16:00:00,7063.675,0.0,77.38 -2015-09-23 17:00:00,7016.875,0.0,76.9 -2015-09-23 18:00:00,6760.242,0.0,74.96 -2015-09-23 19:00:00,6667.125,0.0,71.96 -2015-09-23 20:00:00,6519.4,0.0,67.24 -2015-09-23 21:00:00,6263.117,0.0,65.99 -2015-09-23 22:00:00,5902.392,0.0,64.76 -2015-09-23 23:00:00,5479.95,0.0,64.64 -2015-09-24 00:00:00,5084.842,0.0,63.82 -2015-09-24 01:00:00,4798.975,0.0,63.06 -2015-09-24 02:00:00,4586.417,0.0,62.21 -2015-09-24 03:00:00,4458.383,0.0,60.83 -2015-09-24 04:00:00,4447.108,0.0,60.84 -2015-09-24 05:00:00,4632.108,0.0,58.9 -2015-09-24 06:00:00,5120.242,0.0,59.34 -2015-09-24 07:00:00,5667.292,0.0,59.67 -2015-09-24 08:00:00,6205.933,0.0,62.34 -2015-09-24 09:00:00,6596.467,0.0,66.36 -2015-09-24 10:00:00,6839.692,0.0,71.38 -2015-09-24 11:00:00,7014.092,0.0,74.04 -2015-09-24 12:00:00,7158.667,0.0,75.61 -2015-09-24 13:00:00,7280.733,0.0,77.42 -2015-09-24 14:00:00,7364.3,0.0,78.36 -2015-09-24 15:00:00,7442.158,0.0,79.2 -2015-09-24 16:00:00,7508.867,0.0,78.3 -2015-09-24 17:00:00,7449.508,0.0,77.71 -2015-09-24 18:00:00,7142.942,0.0,75.44 -2015-09-24 19:00:00,7038.442,0.0,72.23 -2015-09-24 20:00:00,6866.042,0.0,68.83 -2015-09-24 21:00:00,6574.208,0.0,69.59 -2015-09-24 22:00:00,6214.108,0.0,68.0 -2015-09-24 23:00:00,5768.433,0.0,68.72 -2015-09-25 00:00:00,5344.308,0.0,67.67 -2015-09-25 01:00:00,5014.692,0.0,66.67 -2015-09-25 02:00:00,4803.9,0.0,65.29 -2015-09-25 03:00:00,4687.025,0.0,65.02 -2015-09-25 04:00:00,4656.542,0.0,64.2 -2015-09-25 05:00:00,4844.5,0.0,64.45 -2015-09-25 06:00:00,5370.017,0.0,62.84 -2015-09-25 07:00:00,5909.283,0.0,62.94 -2015-09-25 08:00:00,6376.408,0.0,63.54 -2015-09-25 09:00:00,6666.808,0.0,65.86 -2015-09-25 10:00:00,6860.75,0.0,67.91 -2015-09-25 11:00:00,6994.458,0.0,69.63 -2015-09-25 12:00:00,7060.608,0.0,70.5 -2015-09-25 13:00:00,7107.633,0.0,72.37 -2015-09-25 14:00:00,7112.525,0.0,71.7 -2015-09-25 15:00:00,7118.133,0.0,72.18 -2015-09-25 16:00:00,7068.558,0.0,71.54 -2015-09-25 17:00:00,6935.9,0.0,70.41 -2015-09-25 18:00:00,6685.708,0.0,69.74 -2015-09-25 19:00:00,6582.892,0.0,68.31 -2015-09-25 20:00:00,6408.8,0.0,66.58 -2015-09-25 21:00:00,6148.2,0.0,67.0 -2015-09-25 22:00:00,5839.6,0.0,65.54 -2015-09-25 23:00:00,5459.858,0.0,65.05 -2015-09-26 00:00:00,5074.108,0.0,64.39 -2015-09-26 01:00:00,4793.917,0.0,63.75 -2015-09-26 02:00:00,4587.825,0.0,63.96 -2015-09-26 03:00:00,4467.842,0.0,62.51 -2015-09-26 04:00:00,4400.267,0.0,62.06 -2015-09-26 05:00:00,4419.225,0.0,61.46 -2015-09-26 06:00:00,4565.033,0.0,60.56 -2015-09-26 07:00:00,4767.475,0.0,61.28 -2015-09-26 08:00:00,5096.192,0.0,62.31 -2015-09-26 09:00:00,5407.792,0.0,63.97 -2015-09-26 10:00:00,5625.892,0.0,65.9 -2015-09-26 11:00:00,5768.175,0.0,66.41 -2015-09-26 12:00:00,5829.983,0.0,67.8 -2015-09-26 13:00:00,5831.3,0.0,68.95 -2015-09-26 14:00:00,5809.792,0.0,69.36 -2015-09-26 15:00:00,5771.55,0.0,69.74 -2015-09-26 16:00:00,5737.117,0.0,69.19 -2015-09-26 17:00:00,5689.358,0.0,68.06 -2015-09-26 18:00:00,5663.383,0.0,67.23 -2015-09-26 19:00:00,5764.658,0.0,65.35 -2015-09-26 20:00:00,5688.467,0.0,63.65 -2015-09-26 21:00:00,5548.517,0.0,62.95 -2015-09-26 22:00:00,5327.208,0.0,62.32 -2015-09-26 23:00:00,5064.05,0.0,61.58 -2015-09-27 00:00:00,4768.942,0.0,61.34 -2015-09-27 01:00:00,4529.45,0.0,60.21 -2015-09-27 02:00:00,4329.642,0.0,58.75 -2015-09-27 03:00:00,4191.925,0.0,58.1 -2015-09-27 04:00:00,4138.95,0.0,57.84 -2015-09-27 05:00:00,4138.108,0.0,56.96 -2015-09-27 06:00:00,4221.925,0.0,57.11 -2015-09-27 07:00:00,4326.342,0.0,56.0 -2015-09-27 08:00:00,4585.825,0.0,56.57 -2015-09-27 09:00:00,4844.783,0.0,59.82 -2015-09-27 10:00:00,5098.525,0.0,62.2 -2015-09-27 11:00:00,5260.625,0.0,64.75 -2015-09-27 12:00:00,5362.675,0.0,65.96 -2015-09-27 13:00:00,5432.892,0.0,67.43 -2015-09-27 14:00:00,5488.308,0.0,68.2 -2015-09-27 15:00:00,5548.875,0.0,68.78 -2015-09-27 16:00:00,5590.875,0.0,69.87 -2015-09-27 17:00:00,5651.992,0.0,69.49 -2015-09-27 18:00:00,5710.592,0.0,67.8 -2015-09-27 19:00:00,5870.508,0.0,66.84 -2015-09-27 20:00:00,5822.708,0.0,66.3 -2015-09-27 21:00:00,5674.392,0.0,65.13 -2015-09-27 22:00:00,5402.075,0.0,64.18 -2015-09-27 23:00:00,5118.192,0.0,64.89 -2015-09-28 00:00:00,4825.95,0.0,64.19 -2015-09-28 01:00:00,4602.408,0.0,64.46 -2015-09-28 02:00:00,4470.433,0.0,63.38 -2015-09-28 03:00:00,4430.825,0.0,64.5 -2015-09-28 04:00:00,4464.767,0.0,63.97 -2015-09-28 05:00:00,4710.367,0.0,63.62 -2015-09-28 06:00:00,5309.7,0.0,62.94 -2015-09-28 07:00:00,5932.575,0.0,63.95 -2015-09-28 08:00:00,6409.308,0.0,65.46 -2015-09-28 09:00:00,6716.908,0.0,66.82 -2015-09-28 10:00:00,6888.55,0.0,68.63 -2015-09-28 11:00:00,7055.575,0.0,70.14 -2015-09-28 12:00:00,7154.325,0.0,73.25 -2015-09-28 13:00:00,7221.817,0.0,75.24 -2015-09-28 14:00:00,7299.333,0.0,75.19 -2015-09-28 15:00:00,7448.175,0.0,75.77 -2015-09-28 16:00:00,7560.967,0.0,76.47 -2015-09-28 17:00:00,7520.667,0.0,76.46 -2015-09-28 18:00:00,7268.4,0.0,75.37 -2015-09-28 19:00:00,7238.95,0.0,73.16 -2015-09-28 20:00:00,7031.692,0.0,71.02 -2015-09-28 21:00:00,6746.975,0.0,71.29 -2015-09-28 22:00:00,6392.35,0.0,70.39 -2015-09-28 23:00:00,5977.442,0.0,70.65 -2015-09-29 00:00:00,5556.333,0.0,70.04 -2015-09-29 01:00:00,5268.442,0.0,70.22 -2015-09-29 02:00:00,5108.183,0.0,69.88 -2015-09-29 03:00:00,5023.517,0.0,70.31 -2015-09-29 04:00:00,5045.467,0.0,70.04 -2015-09-29 05:00:00,5288.033,0.0,69.95 -2015-09-29 06:00:00,5933.175,0.0,69.5 -2015-09-29 07:00:00,6593.992,0.0,69.63 -2015-09-29 08:00:00,7112.75,0.0,70.88 -2015-09-29 09:00:00,7544.667,0.0,72.91 -2015-09-29 10:00:00,7825.392,0.0,75.36 -2015-09-29 11:00:00,8034.7,0.0,77.78 -2015-09-29 12:00:00,8182.458,0.0,79.08 -2015-09-29 13:00:00,8274.875,0.0,79.51 -2015-09-29 14:00:00,8200.108,0.0,80.02 -2015-09-29 15:00:00,8182.567,0.0,79.06 -2015-09-29 16:00:00,8191.5,0.0,77.29 -2015-09-29 17:00:00,8149.967,0.0,75.08 -2015-09-29 18:00:00,7949.658,0.0,74.06 -2015-09-29 19:00:00,7894.05,0.0,73.85 -2015-09-29 20:00:00,7690.8,0.0,73.21 -2015-09-29 21:00:00,7449.125,0.0025,74.37 -2015-09-29 22:00:00,7071.0,0.0132,73.5 -2015-09-29 23:00:00,6576.418,0.0052,73.29 -2015-09-30 00:00:00,6046.717,0.0,73.52 -2015-09-30 01:00:00,5764.533,0.0782,72.89 -2015-09-30 02:00:00,5583.033,0.8136,72.79 -2015-09-30 03:00:00,5433.458,0.0795,74.41 -2015-09-30 04:00:00,5448.158,0.0049,72.54 -2015-09-30 05:00:00,5753.592,0.0,71.83 -2015-09-30 06:00:00,6419.142,0.0,73.55 -2015-09-30 07:00:00,7124.775,0.0037,72.77 -2015-09-30 08:00:00,7627.292,0.0,73.0 -2015-09-30 09:00:00,8043.827,0.0581,74.5 -2015-09-30 10:00:00,8243.733,0.0,75.62 -2015-09-30 11:00:00,8306.767,0.0261,75.57 -2015-09-30 12:00:00,8358.542,0.0,75.89 -2015-09-30 13:00:00,8310.884,0.0,75.47 -2015-09-30 14:00:00,7923.4,0.0,73.34 -2015-09-30 15:00:00,7637.525,0.0,68.14 -2015-09-30 16:00:00,7565.842,0.0,66.34 -2015-09-30 17:00:00,7437.325,0.0,68.7 -2015-09-30 18:00:00,7132.583,0.0,66.93 -2015-09-30 19:00:00,7021.392,0.0,65.75 -2015-09-30 20:00:00,6722.892,0.0,62.76 -2015-09-30 21:00:00,6334.183,0.0,63.66 -2015-09-30 22:00:00,5900.158,0.0,61.42 -2015-09-30 23:00:00,5409.0,0.0,60.74 -2015-10-01 00:00:00,4937.458,0.0,60.33 -2015-10-01 01:00:00,4616.358,0.0,58.81 -2015-10-01 02:00:00,4410.692,0.0,56.81 -2015-10-01 03:00:00,4236.475,0.0,55.75 -2015-10-01 04:00:00,4226.392,0.0,55.19 -2015-10-01 05:00:00,4393.725,0.0,54.41 -2015-10-01 06:00:00,4950.567,0.0,54.27 -2015-10-01 07:00:00,5539.633,0.0,53.99 -2015-10-01 08:00:00,5925.667,0.0,55.2 -2015-10-01 09:00:00,6162.992,0.0,56.54 -2015-10-01 10:00:00,6248.667,0.0,57.55 -2015-10-01 11:00:00,6294.542,0.0,59.26 -2015-10-01 12:00:00,6319.192,0.0,60.35 -2015-10-01 13:00:00,6315.842,0.0,60.36 -2015-10-01 14:00:00,6311.042,0.0,61.3 -2015-10-01 15:00:00,6337.558,0.0028,62.51 -2015-10-01 16:00:00,6370.6,0.0044,63.25 -2015-10-01 17:00:00,6393.533,0.0026,62.45 -2015-10-01 18:00:00,6305.175,0.0251,59.91 -2015-10-01 19:00:00,6214.3,0.0,58.86 -2015-10-01 20:00:00,6008.717,0.0141,57.66 -2015-10-01 21:00:00,5746.542,0.0033,57.11 -2015-10-01 22:00:00,5405.225,0.0,56.7 -2015-10-01 23:00:00,4986.35,0.0,56.99 -2015-10-02 00:00:00,4586.608,0.0022,56.82 -2015-10-02 01:00:00,4246.0,0.0,56.5 -2015-10-02 02:00:00,4071.025,0.0129,55.16 -2015-10-02 03:00:00,3984.133,0.0,54.87 -2015-10-02 04:00:00,3970.717,0.0065,53.74 -2015-10-02 05:00:00,4157.817,0.0214,52.88 -2015-10-02 06:00:00,4707.933,0.0077,52.46 -2015-10-02 07:00:00,5304.833,0.0247,52.14 -2015-10-02 08:00:00,5702.758,0.0125,52.12 -2015-10-02 09:00:00,5950.367,0.0252,52.06 -2015-10-02 10:00:00,6055.983,0.014,51.78 -2015-10-02 11:00:00,6103.692,0.0138,51.76 -2015-10-02 12:00:00,6128.642,0.0033,51.59 -2015-10-02 13:00:00,6146.975,0.0813,51.6 -2015-10-02 14:00:00,6140.808,0.03,52.31 -2015-10-02 15:00:00,6160.942,0.0528,51.25 -2015-10-02 16:00:00,6193.008,0.0522,50.95 -2015-10-02 17:00:00,6195.133,0.0539,50.2 -2015-10-02 18:00:00,6119.467,0.0561,50.05 -2015-10-02 19:00:00,6042.092,0.07,49.68 -2015-10-02 20:00:00,5834.25,0.0342,48.8 -2015-10-02 21:00:00,5604.692,0.0247,49.03 -2015-10-02 22:00:00,5315.542,0.0123,48.65 -2015-10-02 23:00:00,4953.508,0.0,48.76 -2015-10-03 00:00:00,4591.325,0.0053,49.59 -2015-10-03 01:00:00,4255.2,0.0259,49.74 -2015-10-03 02:00:00,4092.117,0.0197,49.29 -2015-10-03 03:00:00,3991.742,0.0058,49.22 -2015-10-03 04:00:00,3953.15,0.0,49.15 -2015-10-03 05:00:00,4001.967,0.0,49.09 -2015-10-03 06:00:00,4211.1,0.0,49.5 -2015-10-03 07:00:00,4445.7,0.0,49.61 -2015-10-03 08:00:00,4780.183,0.0,49.63 -2015-10-03 09:00:00,5083.608,0.0,49.68 -2015-10-03 10:00:00,5312.025,0.0,49.56 -2015-10-03 11:00:00,5427.142,0.0,50.54 -2015-10-03 12:00:00,5497.892,0.0,50.55 -2015-10-03 13:00:00,5493.883,0.0,51.53 -2015-10-03 14:00:00,5456.492,0.0,52.39 -2015-10-03 15:00:00,5438.008,0.0,52.65 -2015-10-03 16:00:00,5446.658,0.0,51.55 -2015-10-03 17:00:00,5481.642,0.0,51.92 -2015-10-03 18:00:00,5558.567,0.0,52.0 -2015-10-03 19:00:00,5611.567,0.0,52.11 -2015-10-03 20:00:00,5513.658,0.0,52.71 -2015-10-03 21:00:00,5383.933,0.0,52.39 -2015-10-03 22:00:00,5190.05,0.0,53.22 -2015-10-03 23:00:00,4914.0,0.0,53.8 -2015-10-04 00:00:00,4613.592,0.0,53.43 -2015-10-04 01:00:00,4355.625,0.0,53.04 -2015-10-04 02:00:00,4133.217,0.0,53.37 -2015-10-04 03:00:00,4025.458,0.0,53.1 -2015-10-04 04:00:00,3976.133,0.0,52.85 -2015-10-04 05:00:00,3991.917,0.0,52.6 -2015-10-04 06:00:00,4117.192,0.0,52.62 -2015-10-04 07:00:00,4255.0,0.0,53.35 -2015-10-04 08:00:00,4515.0,0.0,53.64 -2015-10-04 09:00:00,4802.1,0.0,53.36 -2015-10-04 10:00:00,5048.767,0.0,54.2 -2015-10-04 13:00:00,5193.242,0.0,58.59 -2015-10-04 14:00:00,5179.875,0.0,60.09 -2015-10-04 15:00:00,5180.95,0.0,61.2 -2015-10-04 16:00:00,5195.817,0.0,61.3 -2015-10-04 17:00:00,5251.617,0.0,60.37 -2015-10-04 18:00:00,5363.108,0.0,59.61 -2015-10-04 19:00:00,5558.867,0.0,58.56 -2015-10-04 20:00:00,5509.442,0.0,56.93 -2015-10-04 21:00:00,5363.45,0.0,55.99 -2015-10-04 22:00:00,5111.392,0.0,55.2 -2015-10-04 23:00:00,4774.783,0.0,53.47 -2015-10-05 00:00:00,4444.908,0.0,53.26 -2015-10-05 01:00:00,4153.067,0.0,52.33 -2015-10-05 02:00:00,4011.108,0.0,51.53 -2015-10-05 03:00:00,3951.192,0.0,50.81 -2015-10-05 04:00:00,3965.242,0.0,51.0 -2015-10-05 05:00:00,4175.075,0.0,50.67 -2015-10-05 06:00:00,4711.033,0.0,49.97 -2015-10-05 07:00:00,5306.492,0.0,51.02 -2015-10-05 08:00:00,5689.883,0.0,52.02 -2015-10-05 09:00:00,5897.025,0.0,53.67 -2015-10-05 10:00:00,5993.708,0.0,55.44 -2015-10-05 11:00:00,6040.45,0.0,58.39 -2015-10-05 12:00:00,6103.458,0.0,59.88 -2015-10-05 13:00:00,6128.217,0.0,62.15 -2015-10-05 14:00:00,6110.142,0.0,62.94 -2015-10-05 15:00:00,6125.975,0.0,63.42 -2015-10-05 16:00:00,6169.825,0.0,63.91 -2015-10-05 17:00:00,6154.125,0.0,63.43 -2015-10-05 18:00:00,6071.142,0.0,62.52 -2015-10-05 19:00:00,6118.858,0.0,61.37 -2015-10-05 20:00:00,5970.575,0.0,58.68 -2015-10-05 21:00:00,5730.925,0.0,58.1 -2015-10-05 22:00:00,5385.592,0.0,57.34 -2015-10-05 23:00:00,4947.783,0.0,55.59 -2015-10-06 00:00:00,4512.925,0.0,55.18 -2015-10-06 01:00:00,4236.917,0.0,54.24 -2015-10-06 02:00:00,4081.45,0.0,52.76 -2015-10-06 03:00:00,4000.317,0.0,51.42 -2015-10-06 04:00:00,3990.8,0.0,50.96 -2015-10-06 05:00:00,4194.325,0.0,51.03 -2015-10-06 06:00:00,4736.342,0.0,50.13 -2015-10-06 07:00:00,5297.9,0.0,51.25 -2015-10-06 08:00:00,5665.408,0.0,52.41 -2015-10-06 09:00:00,5917.65,0.0,56.58 -2015-10-06 10:00:00,6040.275,0.0,60.86 -2015-10-06 11:00:00,6101.075,0.0,64.25 -2015-10-06 12:00:00,6172.383,0.0,66.37 -2015-10-06 13:00:00,6239.25,0.0,68.34 -2015-10-06 14:00:00,6285.0,0.0,70.0 -2015-10-06 15:00:00,6364.058,0.0,70.45 -2015-10-06 16:00:00,6428.325,0.0,71.3 -2015-10-06 17:00:00,6429.767,0.0,70.32 -2015-10-06 18:00:00,6307.95,0.0,69.0 -2015-10-06 19:00:00,6293.442,0.0,66.66 -2015-10-06 20:00:00,6120.475,0.0,63.35 -2015-10-06 21:00:00,5853.533,0.0,63.49 -2015-10-06 22:00:00,5481.308,0.0,63.62 -2015-10-06 23:00:00,5043.625,0.0,61.9 -2015-10-07 00:00:00,4620.958,0.0,61.08 -2015-10-07 01:00:00,4334.142,0.0,60.04 -2015-10-07 02:00:00,4157.4,0.0,58.01 -2015-10-07 03:00:00,4006.65,0.0,58.03 -2015-10-07 04:00:00,4008.5,0.0,56.33 -2015-10-07 05:00:00,4219.042,0.0,56.09 -2015-10-07 06:00:00,4778.05,0.0,56.66 -2015-10-07 07:00:00,5385.583,0.0,56.16 -2015-10-07 08:00:00,5799.958,0.0,57.67 -2015-10-07 09:00:00,6092.8,0.0,59.52 -2015-10-07 10:00:00,6199.4,0.0,62.36 -2015-10-07 11:00:00,6273.258,0.0,63.71 -2015-10-07 12:00:00,6373.117,0.0,65.88 -2015-10-07 13:00:00,6418.883,0.0,68.36 -2015-10-07 14:00:00,6476.4,0.0,69.07 -2015-10-07 15:00:00,6552.9,0.0,70.7 -2015-10-07 16:00:00,6629.542,0.0,71.24 -2015-10-07 17:00:00,6587.392,0.0,70.31 -2015-10-07 18:00:00,6404.175,0.0,68.86 -2015-10-07 19:00:00,6352.092,0.0,66.47 -2015-10-07 20:00:00,6150.975,0.0,63.89 -2015-10-07 21:00:00,5884.642,0.0,63.75 -2015-10-07 22:00:00,5527.308,0.0,62.0 -2015-10-07 23:00:00,5066.683,0.0,62.23 -2015-10-08 00:00:00,4639.008,0.0,60.42 -2015-10-08 01:00:00,4361.233,0.0,59.17 -2015-10-08 02:00:00,4208.425,0.0,59.59 -2015-10-08 03:00:00,4098.783,0.0,57.42 -2015-10-08 04:00:00,4070.167,0.0,57.31 -2015-10-08 05:00:00,4282.275,0.0,56.13 -2015-10-08 06:00:00,4848.275,0.0,57.29 -2015-10-08 07:00:00,5436.092,0.0,57.79 -2015-10-08 08:00:00,5827.942,0.0,59.0 -2015-10-08 09:00:00,6114.675,0.0,60.61 -2015-10-08 10:00:00,6249.275,0.0,63.92 -2015-10-08 11:00:00,6335.558,0.0,65.41 -2015-10-08 12:00:00,6423.917,0.0,67.13 -2015-10-08 13:00:00,6493.725,, -2015-10-08 14:00:00,6456.525,0.0,69.03 -2015-10-08 15:00:00,6495.383,0.0,67.37 -2015-10-08 16:00:00,6518.892,0.0,66.66 -2015-10-08 17:00:00,6470.425,0.0,65.88 -2015-10-08 18:00:00,6317.642,0.0,64.12 -2015-10-08 19:00:00,6298.308,0.0,62.6 -2015-10-08 20:00:00,6095.1,0.0,61.75 -2015-10-08 21:00:00,5836.367,0.0,61.68 -2015-10-08 22:00:00,5503.242,0.0,60.63 -2015-10-08 23:00:00,5080.833,0.0,60.51 -2015-10-09 00:00:00,4680.975,0.0,60.62 -2015-10-09 01:00:00,4419.792,0.0,60.53 -2015-10-09 02:00:00,4256.0,0.0,60.2 -2015-10-09 03:00:00,4180.35,0.0,59.18 -2015-10-09 04:00:00,4191.225,0.0,59.16 -2015-10-09 05:00:00,4383.858,0.0,60.46 -2015-10-09 06:00:00,4946.558,0.0,59.85 -2015-10-09 07:00:00,5575.575,0.0,60.81 -2015-10-09 08:00:00,6035.5,0.0,61.89 -2015-10-09 09:00:00,6353.667,0.0043,64.41 -2015-10-09 10:00:00,6519.425,0.0,67.0 -2015-10-09 11:00:00,6667.1,0.0,68.51 -2015-10-09 12:00:00,6795.217,0.0,72.53 -2015-10-09 13:00:00,6855.367,0.0,74.17 -2015-10-09 14:00:00,6934.575,0.0,73.38 -2015-10-09 15:00:00,7013.592,0.0,75.59 -2015-10-09 16:00:00,7039.408,0.0037,75.65 -2015-10-09 17:00:00,7020.5,0.2675,74.17 -2015-10-09 18:00:00,6769.9,0.1673,70.5 -2015-10-09 19:00:00,6566.642,0.0,64.77 -2015-10-09 20:00:00,6304.308,0.0,65.55 -2015-10-09 21:00:00,6034.0,0.0,66.12 -2015-10-09 22:00:00,5707.85,0.0,64.58 -2015-10-09 23:00:00,5277.533,0.0,63.68 -2015-10-10 00:00:00,4845.483,0.0,62.21 -2015-10-10 01:00:00,4532.375,0.0,60.49 -2015-10-10 02:00:00,4313.1,0.0,58.48 -2015-10-10 03:00:00,4166.308,0.0,56.24 -2015-10-10 04:00:00,4091.85,0.0,53.95 -2015-10-10 05:00:00,4117.725,0.0,52.4 -2015-10-10 06:00:00,4259.767,0.0,51.41 -2015-10-10 07:00:00,4451.667,0.0,49.97 -2015-10-10 08:00:00,4727.458,0.0,50.37 -2015-10-10 09:00:00,4991.058,0.0,52.12 -2015-10-10 10:00:00,5167.342,0.0,54.95 -2015-10-10 11:00:00,5258.667,0.0,57.23 -2015-10-10 12:00:00,5302.233,0.0,58.95 -2015-10-10 13:00:00,5299.275,0.0,60.32 -2015-10-10 14:00:00,5277.125,0.0,62.45 -2015-10-10 15:00:00,5264.342,0.0,63.41 -2015-10-10 16:00:00,5267.492,0.0,63.38 -2015-10-10 17:00:00,5263.417,0.0,62.88 -2015-10-10 18:00:00,5356.358,0.0,60.88 -2015-10-10 19:00:00,5452.783,0.0,59.44 -2015-10-10 20:00:00,5394.642,0.0,55.82 -2015-10-10 21:00:00,5244.783,0.0,56.2 -2015-10-10 22:00:00,5048.792,0.0,54.94 -2015-10-10 23:00:00,4804.708,0.0,54.66 -2015-10-11 00:00:00,4533.658,0.0,53.87 -2015-10-11 01:00:00,4283.858,0.0,52.61 -2015-10-11 02:00:00,4104.05,0.0,52.26 -2015-10-11 03:00:00,3992.55,0.0,51.23 -2015-10-11 04:00:00,3919.633,0.0,49.4 -2015-10-11 05:00:00,3909.983,0.0,48.57 -2015-10-11 06:00:00,4003.317,0.0,48.53 -2015-10-11 07:00:00,4128.117,0.0,49.81 -2015-10-11 08:00:00,4385.242,0.0,49.81 -2015-10-11 09:00:00,4686.375,0.0,52.88 -2015-10-11 10:00:00,4898.85,0.0,58.06 -2015-10-11 11:00:00,5029.35,0.0,60.99 -2015-10-11 12:00:00,5103.575,0.0,64.18 -2015-10-11 13:00:00,5141.2,0.0,65.76 -2015-10-11 14:00:00,5165.183,0.0,67.48 -2015-10-11 15:00:00,5201.675,0.0,68.02 -2015-10-11 16:00:00,5233.633,0.0,68.25 -2015-10-11 17:00:00,5252.625,0.0,67.28 -2015-10-11 18:00:00,5362.725,0.0,65.13 -2015-10-11 19:00:00,5493.4,0.0,62.73 -2015-10-11 20:00:00,5429.058,0.0,59.96 -2015-10-11 21:00:00,5293.167,0.0,60.14 -2015-10-11 22:00:00,5077.908,0.0,60.61 -2015-10-11 23:00:00,4778.808,0.0,57.74 -2015-10-12 00:00:00,4465.875,0.0,57.87 -2015-10-12 01:00:00,4240.742,0.0,57.49 -2015-10-12 02:00:00,4090.658,0.0,56.08 -2015-10-12 03:00:00,4018.617,0.0,55.4 -2015-10-12 04:00:00,4012.033,0.0,52.86 -2015-10-12 05:00:00,4182.083,0.0,53.76 -2015-10-12 06:00:00,4581.85,0.0,52.43 -2015-10-12 07:00:00,4993.483,0.0,52.48 -2015-10-12 08:00:00,5452.583,0.0,53.68 -2015-10-12 09:00:00,5758.883,0.0,57.26 -2015-10-12 10:00:00,5962.267,0.0,63.44 -2015-10-12 11:00:00,6091.892,0.0,66.98 -2015-10-12 12:00:00,6226.2,0.0,70.71 -2015-10-12 13:00:00,6293.242,0.0,73.12 -2015-10-12 14:00:00,6339.683,0.0,74.98 -2015-10-12 15:00:00,6372.225,0.0,74.67 -2015-10-12 16:00:00,6409.242,0.0,73.28 -2015-10-12 17:00:00,6376.958,0.0,70.36 -2015-10-12 18:00:00,6249.833,0.0,66.47 -2015-10-12 19:00:00,6222.892,0.0591,64.67 -2015-10-12 20:00:00,6041.967,0.0998,63.31 -2015-10-12 21:00:00,5791.833,0.0625,62.99 -2015-10-12 22:00:00,5423.475,0.0,61.8 -2015-10-12 23:00:00,4975.083,0.0,61.31 -2015-10-13 00:00:00,4578.808,0.0,61.18 -2015-10-13 01:00:00,4328.342,0.006,60.33 -2015-10-13 02:00:00,4185.383,0.0,60.0 -2015-10-13 03:00:00,4115.717,0.0028,59.65 -2015-10-13 04:00:00,4124.075,0.0082,59.31 -2015-10-13 05:00:00,4353.083,0.0021,58.21 -2015-10-13 06:00:00,4921.992,0.0,59.68 -2015-10-13 07:00:00,5544.083,0.005,60.68 -2015-10-13 08:00:00,5972.725,0.0,61.94 -2015-10-13 09:00:00,6303.108,0.0,62.42 -2015-10-13 10:00:00,6488.708,0.0,66.83 -2015-10-13 11:00:00,6625.575,0.0,69.35 -2015-10-13 12:00:00,6710.792,0.0,70.76 -2015-10-13 13:00:00,6697.15,0.0,71.18 -2015-10-13 14:00:00,6665.242,0.0016,69.61 -2015-10-13 15:00:00,6706.325,0.0,69.6 -2015-10-13 16:00:00,6733.083,0.0,71.39 -2015-10-13 17:00:00,6700.767,0.0,69.56 -2015-10-13 18:00:00,6609.225,0.0,68.43 -2015-10-13 19:00:00,6541.475,0.0,66.88 -2015-10-13 20:00:00,6310.858,0.0,65.98 -2015-10-13 21:00:00,6014.0,0.0,66.98 -2015-10-13 22:00:00,5656.042,0.0,65.46 -2015-10-13 23:00:00,5182.0,0.0,63.68 -2015-10-14 00:00:00,4743.217,0.0,63.79 -2015-10-14 01:00:00,4451.233,0.0,63.52 -2015-10-14 02:00:00,4267.283,0.0,61.31 -2015-10-14 03:00:00,4177.625,0.0,60.39 -2015-10-14 04:00:00,4158.517,0.0,59.16 -2015-10-14 05:00:00,4346.958,0.0,58.05 -2015-10-14 06:00:00,4894.192,0.0,55.96 -2015-10-14 07:00:00,5471.125,0.0,56.26 -2015-10-14 08:00:00,5872.875,0.0,56.62 -2015-10-14 09:00:00,6113.992,0.0,59.28 -2015-10-14 10:00:00,6243.083,0.0,61.27 -2015-10-14 11:00:00,6320.75,0.0,64.36 -2015-10-14 12:00:00,6391.708,0.0,64.96 -2015-10-14 13:00:00,6475.567,0.0,65.97 -2015-10-14 14:00:00,6453.55,0.0,67.18 -2015-10-14 15:00:00,6455.45,0.0,66.3 -2015-10-14 16:00:00,6454.383,0.0,65.31 -2015-10-14 17:00:00,6405.358,0.0,65.29 -2015-10-14 18:00:00,6295.883,0.0,63.93 -2015-10-14 19:00:00,6228.1,0.0,61.86 -2015-10-14 20:00:00,6022.058,0.0,59.27 -2015-10-14 21:00:00,5750.517,0.0,58.99 -2015-10-14 22:00:00,5404.3,0.0,58.65 -2015-10-14 23:00:00,4949.35,0.0,58.95 -2015-10-15 00:00:00,4518.742,0.0,57.25 -2015-10-15 01:00:00,4256.958,0.0,56.23 -2015-10-15 02:00:00,4094.275,0.0,54.23 -2015-10-15 03:00:00,4013.608,0.0,52.83 -2015-10-15 04:00:00,4021.825,0.0,51.68 -2015-10-15 05:00:00,4214.65,0.0,50.88 -2015-10-15 06:00:00,4779.175,0.0,49.88 -2015-10-15 07:00:00,5354.767,0.0,49.66 -2015-10-15 08:00:00,5722.8,0.0,50.42 -2015-10-15 09:00:00,5992.233,0.0,52.28 -2015-10-15 10:00:00,6107.5,0.0,56.25 -2015-10-15 11:00:00,6157.583,0.0,58.02 -2015-10-15 12:00:00,6181.467,0.0,59.77 -2015-10-15 13:00:00,6192.85,0.0,61.09 -2015-10-15 14:00:00,6214.708,0.0,62.93 -2015-10-15 15:00:00,6229.425,0.0,63.3 -2015-10-15 16:00:00,6257.758,0.0,63.72 -2015-10-15 17:00:00,6238.417,0.0,62.6 -2015-10-15 18:00:00,6180.392,0.0,61.12 -2015-10-15 19:00:00,6123.908,0.0,59.13 -2015-10-15 20:00:00,5943.45,0.0,57.72 -2015-10-15 21:00:00,5677.717,0.0,57.48 -2015-10-15 22:00:00,5356.467,0.0,56.91 -2015-10-15 23:00:00,4940.458,0.0,56.08 -2015-10-16 00:00:00,4526.2,0.0,55.36 -2015-10-16 01:00:00,4257.025,0.0,54.86 -2015-10-16 02:00:00,4101.4,0.0,54.1 -2015-10-16 03:00:00,4027.175,0.0,54.45 -2015-10-16 04:00:00,4031.175,0.0,54.15 -2015-10-16 05:00:00,4228.942,0.0,51.83 -2015-10-16 06:00:00,4763.2,0.0,53.62 -2015-10-16 07:00:00,5328.817,0.0,52.27 -2015-10-16 08:00:00,5696.375,0.0,54.03 -2015-10-16 09:00:00,5951.292,0.0,55.61 -2015-10-16 10:00:00,6065.375,0.0,58.26 -2015-10-16 11:00:00,6145.467,0.0,60.0 -2015-10-16 12:00:00,6172.108,0.0,61.09 -2015-10-16 13:00:00,6167.483,0.0,62.03 -2015-10-16 14:00:00,6148.483,0.0,62.23 -2015-10-16 15:00:00,6135.983,0.0,62.1 -2015-10-16 16:00:00,6151.517,0.0,62.69 -2015-10-16 17:00:00,6124.933,0.0,61.66 -2015-10-16 18:00:00,6048.517,0.0,60.0 -2015-10-16 19:00:00,5983.008,0.0,58.63 -2015-10-16 20:00:00,5792.275,0.0,55.54 -2015-10-16 21:00:00,5562.292,0.0,56.13 -2015-10-16 22:00:00,5264.042,0.0,54.99 -2015-10-16 23:00:00,4898.817,0.0,52.53 -2015-10-17 00:00:00,4550.658,0.0,52.55 -2015-10-17 01:00:00,4286.0,0.0,51.76 -2015-10-17 02:00:00,4116.467,0.0,50.48 -2015-10-17 03:00:00,4029.733,0.0,50.08 -2015-10-17 04:00:00,3993.983,0.0,48.38 -2015-10-17 05:00:00,4050.825,0.0,46.99 -2015-10-17 06:00:00,4211.292,0.0,47.16 -2015-10-17 07:00:00,4413.142,0.0,46.51 -2015-10-17 08:00:00,4710.783,0.0,46.68 -2015-10-17 09:00:00,4969.95,0.0,48.29 -2015-10-17 10:00:00,5138.358,0.0,50.54 -2015-10-17 11:00:00,5234.442,0.0,51.76 -2015-10-17 12:00:00,5252.292,0.0,52.99 -2015-10-17 13:00:00,5239.183,0.0,52.99 -2015-10-17 14:00:00,5213.1,0.0,53.16 -2015-10-17 15:00:00,5191.15,0.0,53.07 -2015-10-17 16:00:00,5189.975,0.0,53.48 -2015-10-17 17:00:00,5232.142,0.0,51.61 -2015-10-17 18:00:00,5385.767,0.0,50.24 -2015-10-17 19:00:00,5487.933,0.0,48.6 -2015-10-17 20:00:00,5394.175,0.0,45.75 -2015-10-17 21:00:00,5265.225,0.0,44.95 -2015-10-17 22:00:00,5082.417,0.0,43.33 -2015-10-17 23:00:00,4830.458,0.0,42.41 -2015-10-18 00:00:00,4541.783,0.0,41.8 -2015-10-18 01:00:00,4281.033,0.0,40.74 -2015-10-18 02:00:00,4093.725,0.0,39.32 -2015-10-18 03:00:00,3996.258,0.0,38.66 -2015-10-18 04:00:00,3951.558,0.0,37.82 -2015-10-18 05:00:00,3993.9,0.0,37.22 -2015-10-18 06:00:00,4124.225,0.0,36.54 -2015-10-18 07:00:00,4284.933,0.0,36.22 -2015-10-18 08:00:00,4557.175,0.0,36.99 -2015-10-18 09:00:00,4801.733,0.0,39.64 -2015-10-18 10:00:00,4999.85,0.0,42.94 -2015-10-18 11:00:00,5101.425,0.0,44.56 -2015-10-18 12:00:00,5163.9,0.0,46.65 -2015-10-18 13:00:00,5177.75,0.0,48.27 -2015-10-18 14:00:00,5174.725,0.0,48.29 -2015-10-18 15:00:00,5184.917,0.0,48.22 -2015-10-18 16:00:00,5213.55,0.0,48.42 -2015-10-18 17:00:00,5310.867,0.0,47.0 -2015-10-18 18:00:00,5509.833,0.0,45.49 -2015-10-18 19:00:00,5647.592,0.0,44.1 -2015-10-18 20:00:00,5592.858,0.0,42.37 -2015-10-18 21:00:00,5444.692,0.0,41.15 -2015-10-18 22:00:00,5203.908,0.0,39.53 -2015-10-18 23:00:00,4874.175,0.0,38.61 -2015-10-19 00:00:00,4553.592,0.0,38.18 -2015-10-19 01:00:00,4331.858,0.0,37.31 -2015-10-19 02:00:00,4191.925,0.0,35.59 -2015-10-19 03:00:00,4138.45,0.0,35.47 -2015-10-19 04:00:00,4172.908,0.0,34.9 -2015-10-19 05:00:00,4399.7,0.0,34.32 -2015-10-19 06:00:00,4952.283,0.0,33.9 -2015-10-19 07:00:00,5509.1,0.0,33.45 -2015-10-19 08:00:00,5844.792,0.0,35.38 -2015-10-19 09:00:00,6067.917,0.0,37.95 -2015-10-19 10:00:00,6214.692,0.0,41.92 -2015-10-19 11:00:00,6241.817,0.0,44.53 -2015-10-19 12:00:00,6234.45,, -2015-10-19 13:00:00,6228.225,0.0,48.85 -2015-10-19 14:00:00,6186.192,0.0,49.53 -2015-10-19 15:00:00,6179.75,0.0,50.82 -2015-10-19 16:00:00,6227.742,0.0,51.92 -2015-10-19 17:00:00,6234.833,0.0,51.41 -2015-10-19 18:00:00,6257.325,0.0,50.8 -2015-10-19 19:00:00,6254.242,0.0,49.9 -2015-10-19 20:00:00,6104.342,0.0,48.18 -2015-10-19 21:00:00,5856.942,0.0,48.85 -2015-10-19 22:00:00,5488.975,0.0,48.23 -2015-10-19 23:00:00,5029.983,, -2015-10-20 00:00:00,4609.35,0.0,47.27 -2015-10-20 01:00:00,4358.792,0.0,47.4 -2015-10-20 02:00:00,4206.467,0.0,47.01 -2015-10-20 03:00:00,4130.958,0.0,47.06 -2015-10-20 04:00:00,4150.025,0.0,48.1 -2015-10-20 05:00:00,4361.442,0.0,46.63 -2015-10-20 06:00:00,4905.358,0.0,47.37 -2015-10-20 07:00:00,5507.167,0.0,46.85 -2015-10-20 08:00:00,5858.483,0.0,48.71 -2015-10-20 09:00:00,6064.5,0.0,51.08 -2015-10-20 10:00:00,6130.708,0.0,54.46 -2015-10-20 11:00:00,6164.075,0.0,58.75 -2015-10-20 12:00:00,6189.458,0.0,62.17 -2015-10-20 13:00:00,6199.067,0.0,65.07 -2015-10-20 14:00:00,6205.375,0.0,66.86 -2015-10-20 15:00:00,6230.425,0.0,68.54 -2015-10-20 16:00:00,6290.8,0.0,69.59 -2015-10-20 17:00:00,6306.708,0.0,68.41 -2015-10-20 18:00:00,6293.008,0.0,66.49 -2015-10-20 19:00:00,6225.317,, -2015-10-20 20:00:00,6007.5,0.0,61.28 -2015-10-20 21:00:00,5737.367,0.0,62.62 -2015-10-20 22:00:00,5405.975,0.0,60.51 -2015-10-20 23:00:00,4966.7,0.0,60.5 -2015-10-21 00:00:00,4547.467,0.0,59.04 -2015-10-21 01:00:00,4325.892,0.0,59.1 -2015-10-21 02:00:00,4159.483,0.0,57.28 -2015-10-21 03:00:00,4072.9,0.0,56.84 -2015-10-21 04:00:00,4069.125,0.0,55.43 -2015-10-21 05:00:00,4264.283,0.0,54.81 -2015-10-21 06:00:00,4825.642,0.0,52.96 -2015-10-21 07:00:00,5431.192,0.0,54.96 -2015-10-21 08:00:00,5809.85,0.0,54.68 -2015-10-21 09:00:00,6036.55,0.0,57.73 -2015-10-21 10:00:00,6172.008,0.0,63.1 -2015-10-21 11:00:00,6285.225,0.0,66.78 -2015-10-21 12:00:00,6363.167,0.0,70.51 -2015-10-21 13:00:00,6430.858,0.0,72.94 -2015-10-21 14:00:00,6456.767,0.0,74.09 -2015-10-21 15:00:00,6489.483,0.0,74.33 -2015-10-21 16:00:00,6505.758,0.0,72.46 -2015-10-21 17:00:00,6466.442,0.0,70.58 -2015-10-21 18:00:00,6376.842,0.0,67.5 -2015-10-21 19:00:00,6302.4,0.0277,63.3 -2015-10-21 20:00:00,6098.433,0.0,61.04 -2015-10-21 21:00:00,5828.525,0.0,61.78 -2015-10-21 22:00:00,5485.208,0.0,60.82 -2015-10-21 23:00:00,5046.6,0.0,60.82 -2015-10-22 00:00:00,4620.708,0.0,59.71 -2015-10-22 01:00:00,4332.967,0.0,59.33 -2015-10-22 02:00:00,4143.933,0.0,58.6 -2015-10-22 03:00:00,4066.458,0.0,57.38 -2015-10-22 04:00:00,4070.425,0.0,56.71 -2015-10-22 05:00:00,4261.383,0.0,56.39 -2015-10-22 06:00:00,4854.092,0.0,54.73 -2015-10-22 07:00:00,5469.058,0.0,54.11 -2015-10-22 08:00:00,5846.358,0.0,56.21 -2015-10-22 09:00:00,6104.158,0.0,58.56 -2015-10-22 10:00:00,6237.808,0.0,61.5 -2015-10-22 11:00:00,6337.15,0.0,65.01 -2015-10-22 12:00:00,6417.725,0.0,68.63 -2015-10-22 13:00:00,6487.792,0.0,71.48 -2015-10-22 14:00:00,6504.033,0.0,73.06 -2015-10-22 15:00:00,6539.042,0.0,73.91 -2015-10-22 16:00:00,6566.367,0.0,73.36 -2015-10-22 17:00:00,6555.383,0.0,71.33 -2015-10-22 18:00:00,6523.633,0.0,70.56 -2015-10-22 19:00:00,6401.6,0.0,69.6 -2015-10-22 20:00:00,6171.258,0.0,67.56 -2015-10-22 21:00:00,5886.908,0.0,68.38 -2015-10-22 22:00:00,5540.733,0.0,66.96 -2015-10-22 23:00:00,5115.708,0.0,65.72 -2015-10-23 00:00:00,4706.192,0.0,64.57 -2015-10-23 01:00:00,4411.767,0.0,62.88 -2015-10-23 02:00:00,4192.967,0.0,61.12 -2015-10-23 03:00:00,4083.667,0.0,58.75 -2015-10-23 04:00:00,4066.7,0.0,56.76 -2015-10-23 05:00:00,4246.792,0.0,54.87 -2015-10-23 06:00:00,4772.575,0.0,53.66 -2015-10-23 07:00:00,5376.883,0.0,51.99 -2015-10-23 08:00:00,5754.117,0.0,51.75 -2015-10-23 09:00:00,5997.408,0.0,52.97 -2015-10-23 10:00:00,6112.433,0.0,54.45 -2015-10-23 11:00:00,6142.65,0.0,55.52 -2015-10-23 12:00:00,6158.55,0.0,56.76 -2015-10-23 13:00:00,6159.458,0.0,57.76 -2015-10-23 14:00:00,6146.025,0.0,58.57 -2015-10-23 15:00:00,6143.833,0.0,58.74 -2015-10-23 16:00:00,6156.225,0.0,58.53 -2015-10-23 17:00:00,6129.483,0.0,56.65 -2015-10-23 18:00:00,6096.842,0.0,54.52 -2015-10-23 19:00:00,6009.45,0.0,52.07 -2015-10-23 20:00:00,5815.375,0.0,50.41 -2015-10-23 21:00:00,5574.842,0.0,49.21 -2015-10-23 22:00:00,5318.592,0.0,47.86 -2015-10-23 23:00:00,4972.992,0.0,46.34 -2015-10-24 00:00:00,4608.233,0.0,45.24 -2015-10-24 01:00:00,4339.0,0.0,44.1 -2015-10-24 02:00:00,4174.533,0.0,42.67 -2015-10-24 03:00:00,4085.15,0.0,42.03 -2015-10-24 04:00:00,4052.283,0.0,41.43 -2015-10-24 05:00:00,4112.133,0.0,41.01 -2015-10-24 06:00:00,4279.167,0.0,40.2 -2015-10-24 07:00:00,4494.517,0.0,39.88 -2015-10-24 08:00:00,4771.433,0.0,40.21 -2015-10-24 09:00:00,5032.133,0.0,42.98 -2015-10-24 10:00:00,5213.25,0.0,46.35 -2015-10-24 11:00:00,5310.942,0.0,49.14 -2015-10-24 12:00:00,5346.817,0.0,51.74 -2015-10-24 13:00:00,5323.933,0.0,53.27 -2015-10-24 14:00:00,5298.792,0.0,54.45 -2015-10-24 15:00:00,5280.683,0.0,54.89 -2015-10-24 16:00:00,5284.875,0.0,54.6 -2015-10-24 17:00:00,5370.675,0.0,54.34 -2015-10-24 18:00:00,5523.908,0.0,53.75 -2015-10-24 19:00:00,5539.0,0.0,53.34 -2015-10-24 20:00:00,5437.6,0.0,54.21 -2015-10-24 21:00:00,5278.658,0.0,54.18 -2015-10-24 22:00:00,5086.108,0.0,54.25 -2015-10-24 23:00:00,4831.983,0.0,55.26 -2015-10-25 00:00:00,4545.158,0.0,55.63 -2015-10-25 01:00:00,4318.217,0.0,56.1 -2015-10-25 02:00:00,4158.9,0.0,57.2 -2015-10-25 03:00:00,4041.258,0.0,58.07 -2015-10-25 04:00:00,3981.083,0.0,58.39 -2015-10-25 05:00:00,3997.383,0.0011,57.68 -2015-10-25 06:00:00,4117.108,0.0053,58.08 -2015-10-25 07:00:00,4278.833,0.0108,57.21 -2015-10-25 08:00:00,4538.208,0.0135,57.49 -2015-10-25 09:00:00,4837.708,0.0107,56.64 -2015-10-25 10:00:00,5054.183,0.005,57.09 -2015-10-25 11:00:00,5183.467,0.0008,58.45 -2015-10-25 12:00:00,5243.142,0.0,59.88 -2015-10-25 13:00:00,5247.483,0.0,61.11 -2015-10-25 14:00:00,5248.833,0.0,64.47 -2015-10-25 15:00:00,5254.342,0.0,64.73 -2015-10-25 16:00:00,5275.167,0.0,65.47 -2015-10-25 17:00:00,5320.975,0.0,64.25 -2015-10-25 18:00:00,5507.067,0.0,61.0 -2015-10-25 19:00:00,5575.7,0.0,58.33 -2015-10-25 20:00:00,5477.175,0.0,56.62 -2015-10-25 21:00:00,5317.5,0.0,54.63 -2015-10-25 22:00:00,5058.975,0.0,53.55 -2015-10-25 23:00:00,4711.525,0.0,51.45 -2015-10-26 00:00:00,4394.392,0.0,50.13 -2015-10-26 01:00:00,4170.092,0.0,49.34 -2015-10-26 02:00:00,4048.408,0.0,48.47 -2015-10-26 03:00:00,3967.483,0.0,47.7 -2015-10-26 04:00:00,3997.833,0.0,47.0 -2015-10-26 05:00:00,4225.35,0.0,45.91 -2015-10-26 06:00:00,4799.15,0.0,46.69 -2015-10-26 07:00:00,5409.8,0.0,46.41 -2015-10-26 08:00:00,5761.433,0.0,45.39 -2015-10-26 09:00:00,5997.467,0.0,47.97 -2015-10-26 10:00:00,6096.117,0.0,50.12 -2015-10-26 11:00:00,6126.85,0.0,51.45 -2015-10-26 12:00:00,6125.192,0.0,53.19 -2015-10-26 13:00:00,6145.633,0.0,55.14 -2015-10-26 14:00:00,6133.983,0.0,56.51 -2015-10-26 15:00:00,6141.708,0.0,57.4 -2015-10-26 16:00:00,6169.867,0.0,58.09 -2015-10-26 17:00:00,6198.833,0.0,57.22 -2015-10-26 18:00:00,6230.025,0.0,55.06 -2015-10-26 19:00:00,6154.458,0.0,53.38 -2015-10-26 20:00:00,5977.442,0.0,52.5 -2015-10-26 21:00:00,5738.908,0.0,51.91 -2015-10-26 22:00:00,5380.858,0.0,51.27 -2015-10-26 23:00:00,4947.892,0.0,50.44 -2015-10-27 00:00:00,4543.45,0.0,48.59 -2015-10-27 01:00:00,4319.25,0.0,47.29 -2015-10-27 02:00:00,4096.275,0.0,46.53 -2015-10-27 03:00:00,4018.117,0.0,45.72 -2015-10-27 04:00:00,4039.075,0.0,45.23 -2015-10-27 05:00:00,4274.233,0.0,44.73 -2015-10-27 06:00:00,4873.208,0.0,43.82 -2015-10-27 07:00:00,5471.5,0.0,45.17 -2015-10-27 08:00:00,5832.5,0.0,45.09 -2015-10-27 09:00:00,6040.842,0.0,46.86 -2015-10-27 10:00:00,6145.35,0.0,50.48 -2015-10-27 11:00:00,6172.483,0.0,54.87 -2015-10-27 12:00:00,6186.55,0.0,55.68 -2015-10-27 13:00:00,6178.275,0.0,59.04 -2015-10-27 14:00:00,6173.942,0.0,57.82 -2015-10-27 15:00:00,6167.042,0.0,57.41 -2015-10-27 16:00:00,6208.333,0.0,57.07 -2015-10-27 17:00:00,6257.267,0.0,55.4 -2015-10-27 18:00:00,6284.692,0.0,55.27 -2015-10-27 19:00:00,6192.925,0.0,53.17 -2015-10-27 20:00:00,6009.192,0.0,52.81 -2015-10-27 21:00:00,5752.725,0.0,52.41 -2015-10-27 22:00:00,5417.508,0.0,51.26 -2015-10-27 23:00:00,5005.642,0.0,50.85 -2015-10-28 00:00:00,4581.433,, -2015-10-28 01:00:00,4313.583,0.0,50.93 -2015-10-28 02:00:00,4133.808,0.0,51.97 -2015-10-28 03:00:00,4059.183,0.0,52.17 -2015-10-28 04:00:00,4075.225,0.0,52.83 -2015-10-28 05:00:00,4269.908,0.0,54.38 -2015-10-28 06:00:00,4837.292,0.0,54.59 -2015-10-28 07:00:00,5467.725,0.0,54.89 -2015-10-28 08:00:00,5869.467,0.0,55.96 -2015-10-28 09:00:00,6123.958,0.0,56.2 -2015-10-28 10:00:00,6264.417,0.0096,57.01 -2015-10-28 11:00:00,6353.567,0.003,59.11 -2015-10-28 12:00:00,6404.892,0.0252,58.96 -2015-10-28 13:00:00,6428.467,0.0,59.25 -2015-10-28 14:00:00,6423.542,0.0039,59.23 -2015-10-28 15:00:00,6482.975,0.0029,60.9 -2015-10-28 16:00:00,6590.358,0.1085,61.56 -2015-10-28 17:00:00,6651.908,0.01,62.87 -2015-10-28 18:00:00,6611.008,0.0027,64.62 -2015-10-28 19:00:00,6467.367,0.0,65.36 -2015-10-28 20:00:00,6250.875,0.0025,65.71 -2015-10-28 21:00:00,5983.108,0.0522,67.18 -2015-10-28 22:00:00,5646.8,0.1165,66.99 -2015-10-28 23:00:00,5218.017,0.0,66.84 -2015-10-29 00:00:00,4806.883,0.0901,66.95 -2015-10-29 01:00:00,4539.817,0.0051,67.81 -2015-10-29 02:00:00,4371.95,0.0024,66.97 -2015-10-29 03:00:00,4298.542,0.0,67.78 -2015-10-29 04:00:00,4282.967,, -2015-10-29 05:00:00,4449.858,0.0025,66.4 -2015-10-29 06:00:00,5030.617,0.0,64.1 -2015-10-29 07:00:00,5698.167,0.0,63.33 -2015-10-29 08:00:00,6085.933,0.0,63.85 -2015-10-29 09:00:00,6360.117,0.0,64.33 -2015-10-29 10:00:00,6521.95,0.0,65.91 -2015-10-29 11:00:00,6601.167,0.0,68.17 -2015-10-29 12:00:00,6621.775,0.0,70.11 -2015-10-29 13:00:00,6496.608,0.0,70.55 -2015-10-29 14:00:00,6437.842,0.0,68.08 -2015-10-29 15:00:00,6394.292,0.0,67.61 -2015-10-29 16:00:00,6414.35,0.0,65.48 -2015-10-29 17:00:00,6375.925,0.0,63.96 -2015-10-29 18:00:00,6319.883,0.0,63.09 -2015-10-29 19:00:00,6186.7,0.0,60.95 -2015-10-29 20:00:00,5965.025,0.0,59.35 -2015-10-29 21:00:00,5717.408,0.0,58.54 -2015-10-29 22:00:00,5388.417,0.0,57.94 -2015-10-29 23:00:00,4965.725,0.0,57.16 -2015-10-30 00:00:00,4546.633,0.0,55.46 -2015-10-30 01:00:00,4282.225,0.0,55.15 -2015-10-30 02:00:00,4068.175,0.0,52.91 -2015-10-30 03:00:00,3991.533,0.0,51.85 -2015-10-30 04:00:00,4001.15,0.0,51.04 -2015-10-30 05:00:00,4220.992,0.0,49.33 -2015-10-30 06:00:00,4779.125,0.0,49.23 -2015-10-30 07:00:00,5390.483,, -2015-10-30 08:00:00,5732.833,0.0,47.86 -2015-10-30 09:00:00,5974.492,0.0,49.74 -2015-10-30 10:00:00,6068.592,0.0,53.23 -2015-10-30 11:00:00,6114.25,0.0,55.51 -2015-10-30 12:00:00,6126.542,0.0,57.23 -2015-10-30 13:00:00,6112.717,0.0,58.88 -2015-10-30 14:00:00,6091.892,, -2015-10-30 15:00:00,6102.525,0.0,58.94 -2015-10-30 16:00:00,6103.675,0.0,58.24 -2015-10-30 17:00:00,6094.65,0.0,56.46 -2015-10-30 18:00:00,6092.533,0.0,53.45 -2015-10-30 19:00:00,5990.55,0.0,51.33 -2015-10-30 20:00:00,5807.933,0.0,50.47 -2015-10-30 21:00:00,5601.675,0.0,50.06 -2015-10-30 22:00:00,5322.025,0.0,48.96 -2015-10-30 23:00:00,4986.1,0.0,48.49 -2015-10-31 00:00:00,4619.683,0.0,47.37 -2015-10-31 01:00:00,4355.208,0.0,46.14 -2015-10-31 02:00:00,4184.375,0.0,44.79 -2015-10-31 03:00:00,4091.95,0.0,43.47 -2015-10-31 04:00:00,4053.225,0.0,42.18 -2015-10-31 05:00:00,4097.917,0.0,40.88 -2015-10-31 06:00:00,4256.258,0.0,39.14 -2015-10-31 07:00:00,4483.8,0.0,39.98 -2015-10-31 08:00:00,4763.658,0.0,40.47 -2015-10-31 09:00:00,5012.158,0.0,42.89 -2015-10-31 10:00:00,5197.85,0.0,47.03 -2015-10-31 11:00:00,5266.308,0.0,49.48 -2015-10-31 12:00:00,5288.692,0.0,51.77 -2015-10-31 13:00:00,5266.477,, -2015-10-31 14:00:00,5217.25,, -2015-10-31 15:00:00,5177.392,0.0,54.39 -2015-10-31 16:00:00,5195.833,0.0,54.3 -2015-10-31 17:00:00,5262.808,0.0,52.73 -2015-10-31 18:00:00,5465.558,0.0,51.72 -2015-10-31 19:00:00,5461.375,0.0,50.5 -2015-10-31 20:00:00,5367.483,0.0,51.01 -2015-10-31 21:00:00,5237.192,, -2015-10-31 22:00:00,5044.733,, -2015-10-31 23:00:00,4790.0,0.0,50.03 -2015-11-01 00:00:00,4515.883,0.0,50.62 -2015-11-01 01:00:00,4291.625,0.0,50.84 -2015-11-01 02:00:00,4027.383,, -2015-11-01 03:00:00,3977.5,0.0,51.69 -2015-11-01 04:00:00,3956.342,0.0,52.07 -2015-11-01 05:00:00,4014.717,0.0,52.05 -2015-11-01 06:00:00,4121.508,0.0027,53.55 -2015-11-01 07:00:00,4307.642,0.0,54.12 -2015-11-01 08:00:00,4595.033,0.0,55.79 -2015-11-01 09:00:00,4850.858,0.0,57.17 -2015-11-01 10:00:00,5020.85,0.0,58.27 -2015-11-01 11:00:00,5131.633,0.0,59.43 -2015-11-01 12:00:00,5176.492,0.0,60.81 -2015-11-01 13:00:00,5207.458,0.0,62.58 -2015-11-01 14:00:00,5220.458,0.0,62.99 -2015-11-01 15:00:00,5236.267,0.0,63.91 -2015-11-01 16:00:00,5303.827,, -2015-11-01 17:00:00,5581.958,, -2015-11-01 18:00:00,5643.783,0.0,60.44 -2015-11-01 19:00:00,5584.258,0.0,58.43 -2015-11-01 20:00:00,5468.0,0.0,59.12 -2015-11-01 21:00:00,5287.625,0.0,58.81 -2015-11-01 22:00:00,5015.333,0.0,57.66 -2015-11-01 23:00:00,4695.75,0.0,56.74 -2015-11-02 00:00:00,4394.617,0.0,56.05 -2015-11-02 01:00:00,4178.392,0.0,55.75 -2015-11-02 02:00:00,4032.575,0.0,55.11 -2015-11-02 03:00:00,3982.442,0.0,53.39 -2015-11-02 04:00:00,4021.217,0.0,52.32 -2015-11-02 05:00:00,4256.383,0.0,52.26 -2015-11-02 06:00:00,4794.525,0.0,52.33 -2015-11-02 07:00:00,5368.033,0.0,52.53 -2015-11-02 08:00:00,5748.383,0.0,54.68 -2015-11-02 09:00:00,6005.958,0.0,58.29 -2015-11-02 10:00:00,6088.9,0.0,60.98 -2015-11-02 11:00:00,6142.892,0.0,62.08 -2015-11-02 12:00:00,6161.875,0.0,62.96 -2015-11-02 13:00:00,6159.85,0.0,63.51 -2015-11-02 14:00:00,6139.975,0.0,63.91 -2015-11-02 15:00:00,6178.233,0.0,63.11 -2015-11-02 16:00:00,6297.408,0.0,62.0 -2015-11-02 17:00:00,6493.008,0.0,60.16 -2015-11-02 18:00:00,6348.042,0.0,58.93 -2015-11-02 19:00:00,6158.492,0.0,56.37 -2015-11-02 20:00:00,5915.608,0.0,57.06 -2015-11-02 21:00:00,5661.683,0.0,54.14 -2015-11-02 22:00:00,5298.408,0.0,54.05 -2015-11-02 23:00:00,4855.925,0.0,53.88 -2015-11-03 00:00:00,4474.283,, -2015-11-03 01:00:00,4167.483,0.0,51.87 -2015-11-03 02:00:00,4032.967,0.0,51.15 -2015-11-03 03:00:00,3965.8,0.0,49.6 -2015-11-03 04:00:00,4005.083,0.0,48.39 -2015-11-03 05:00:00,4231.258,0.0,47.91 -2015-11-03 06:00:00,4743.517,, -2015-11-03 07:00:00,5254.475,0.0,48.21 -2015-11-03 08:00:00,5692.2,0.0,50.95 -2015-11-03 09:00:00,5957.4,0.0,56.96 -2015-11-03 10:00:00,6114.5,0.0,60.94 -2015-11-03 11:00:00,6198.842,0.0,64.29 -2015-11-03 12:00:00,6254.583,0.0,67.28 -2015-11-03 13:00:00,6312.8,0.0,69.88 -2015-11-03 14:00:00,6353.483,0.0,71.29 -2015-11-03 15:00:00,6363.167,0.0,71.46 -2015-11-03 16:00:00,6425.262,, -2015-11-03 17:00:00,6575.042,0.0,66.82 -2015-11-03 18:00:00,6462.542,0.0,62.35 -2015-11-03 19:00:00,6236.075,0.0,61.28 -2015-11-03 20:00:00,5994.808,0.0,62.2 -2015-11-03 21:00:00,5699.333,0.0,60.24 -2015-11-03 22:00:00,5352.367,0.0,60.65 -2015-11-03 23:00:00,4908.067,0.0,59.2 -2015-11-04 00:00:00,4502.642,0.0,57.96 -2015-11-04 01:00:00,4254.667,0.0,57.56 -2015-11-04 02:00:00,4111.8,0.0,54.36 -2015-11-04 03:00:00,4051.333,0.0,54.59 -2015-11-04 04:00:00,4060.042,0.0,53.5 -2015-11-04 05:00:00,4271.783,0.0,52.73 -2015-11-04 06:00:00,4817.717,0.0,51.75 -2015-11-04 07:00:00,5408.7,0.0,52.87 -2015-11-04 08:00:00,5844.667,0.0,56.86 -2015-11-04 09:00:00,6118.425,0.0,61.61 -2015-11-04 10:00:00,6262.725,0.0,64.58 -2015-11-04 11:00:00,6338.217,0.0,66.63 -2015-11-04 12:00:00,6379.3,0.0,67.79 -2015-11-04 13:00:00,6397.242,0.0,68.27 -2015-11-04 14:00:00,6385.967,0.0,68.49 -2015-11-04 15:00:00,6378.117,0.0,67.33 -2015-11-04 16:00:00,6429.275,0.0,65.55 -2015-11-04 17:00:00,6594.258,0.0,61.83 -2015-11-04 18:00:00,6446.225,0.0,60.29 -2015-11-04 19:00:00,6222.75,0.0,58.5 -2015-11-04 20:00:00,5984.517,0.0,58.09 -2015-11-04 21:00:00,5707.617,0.0,57.79 -2015-11-04 22:00:00,5348.242,0.0,56.19 -2015-11-04 23:00:00,4920.542,0.0,56.32 -2015-11-05 00:00:00,4530.783,0.0,56.78 -2015-11-05 01:00:00,4282.1,0.0,56.35 -2015-11-05 02:00:00,4142.417,0.0027,54.79 -2015-11-05 03:00:00,4073.983,0.0034,56.52 -2015-11-05 04:00:00,4099.858,0.0,56.55 -2015-11-05 05:00:00,4322.558,0.0075,56.52 -2015-11-05 06:00:00,4862.008,0.0,57.0 -2015-11-05 07:00:00,5474.942,0.0,58.16 -2015-11-05 08:00:00,5935.275,0.0,59.13 -2015-11-05 09:00:00,6223.45,0.0,61.52 -2015-11-05 10:00:00,6371.217,0.0,64.74 -2015-11-05 11:00:00,6422.233,0.0025,66.49 -2015-11-05 12:00:00,6475.258,0.0,66.21 -2015-11-05 13:00:00,6537.15,0.0,66.78 -2015-11-05 14:00:00,6561.175,0.0,68.95 -2015-11-05 15:00:00,6575.9,0.0,68.97 -2015-11-05 16:00:00,6661.325,0.0024,66.54 -2015-11-05 17:00:00,6805.083,0.0,65.56 -2015-11-05 18:00:00,6635.083,0.0,63.73 -2015-11-05 19:00:00,6419.2,0.0,65.05 -2015-11-05 20:00:00,6180.108,0.0,64.91 -2015-11-05 21:00:00,5914.733,0.0,65.79 -2015-11-05 22:00:00,5545.158,0.0,65.63 -2015-11-05 23:00:00,5120.867,0.0,65.46 -2015-11-06 00:00:00,4726.592,0.0,64.76 -2015-11-06 01:00:00,4470.767,0.0,64.96 -2015-11-06 02:00:00,4326.183,0.0,65.03 -2015-11-06 03:00:00,4251.717,0.0,65.2 -2015-11-06 04:00:00,4263.075,0.0,64.8 -2015-11-06 05:00:00,4508.408,0.0,63.78 -2015-11-06 06:00:00,5078.492,0.0,64.24 -2015-11-06 07:00:00,5726.75,0.0,64.55 -2015-11-06 08:00:00,6220.25,0.0,65.05 -2015-11-06 09:00:00,6534.342,0.0,66.58 -2015-11-06 10:00:00,6678.558,0.0,67.55 -2015-11-06 11:00:00,6755.5,0.0,69.51 -2015-11-06 12:00:00,6790.267,0.0,69.9 -2015-11-06 13:00:00,6783.175,0.0,70.44 -2015-11-06 14:00:00,6787.033,0.0,70.81 -2015-11-06 15:00:00,6810.042,0.0,71.47 -2015-11-06 16:00:00,6870.083,0.0,70.82 -2015-11-06 17:00:00,6961.842,0.0,70.46 -2015-11-06 18:00:00,6748.3,0.0,69.35 -2015-11-06 19:00:00,6504.833,0.0,68.1 -2015-11-06 20:00:00,6240.033,0.0,68.95 -2015-11-06 21:00:00,6013.125,0.0,69.12 -2015-11-06 22:00:00,5713.35,0.0,68.52 -2015-11-06 23:00:00,5305.108,0.0,68.6 -2015-11-07 00:00:00,4906.0,0.0,67.79 -2015-11-07 01:00:00,4633.583,0.0,66.65 -2015-11-07 02:00:00,4448.417,0.0,66.45 -2015-11-07 03:00:00,4323.933,0.0,65.85 -2015-11-07 04:00:00,4253.842,0.0,65.12 -2015-11-07 05:00:00,4278.133,0.0,62.83 -2015-11-07 06:00:00,4395.542,0.0,62.32 -2015-11-07 07:00:00,4628.583,0.0,59.73 -2015-11-07 08:00:00,4948.392,0.0,61.22 -2015-11-07 09:00:00,5185.958,0.0,63.09 -2015-11-07 10:00:00,5374.583,0.0,63.2 -2015-11-07 11:00:00,5453.933,0.0,62.28 -2015-11-07 12:00:00,5471.658,0.0,62.12 -2015-11-07 13:00:00,5454.017,0.0,62.22 -2015-11-07 14:00:00,5427.867,0.0,61.93 -2015-11-07 15:00:00,5424.9,0.0,61.28 -2015-11-07 16:00:00,5508.233,0.0,59.63 -2015-11-07 17:00:00,5634.267,0.0,58.7 -2015-11-07 18:00:00,5611.133,0.0,57.51 -2015-11-07 19:00:00,5504.867,0.0,55.86 -2015-11-07 20:00:00,5379.65,0.0,55.77 -2015-11-07 21:00:00,5212.667,0.0,54.65 -2015-11-07 22:00:00,5007.825,0.0,53.78 -2015-11-07 23:00:00,4744.317,0.0,52.37 -2015-11-08 00:00:00,4473.717,0.0,52.18 -2015-11-08 01:00:00,4253.142,0.0,51.2 -2015-11-08 02:00:00,4088.233,0.0,49.56 -2015-11-08 03:00:00,3991.058,0.0,48.61 -2015-11-08 04:00:00,3956.6,0.0,47.79 -2015-11-08 05:00:00,3987.75,0.0,46.0 -2015-11-08 06:00:00,4078.533,0.0,45.78 -2015-11-08 07:00:00,4234.208,0.0,45.82 -2015-11-08 08:00:00,4501.55,0.0,47.72 -2015-11-08 09:00:00,4741.575,0.0,50.24 -2015-11-08 10:00:00,4927.767,0.0,51.85 -2015-11-08 11:00:00,5047.758,0.0,53.43 -2015-11-08 12:00:00,5107.433,0.0,55.64 -2015-11-08 13:00:00,5125.458,0.0,56.35 -2015-11-08 14:00:00,5126.242,0.0,57.4 -2015-11-08 15:00:00,5147.725,0.0,56.48 -2015-11-08 16:00:00,5239.725,0.0,56.28 -2015-11-08 17:00:00,5519.083,0.0,54.23 -2015-11-08 18:00:00,5593.792,0.0,52.07 -2015-11-08 19:00:00,5548.625,0.0,50.46 -2015-11-08 20:00:00,5436.808,0.0,49.65 -2015-11-08 21:00:00,5265.95,0.0,48.1 -2015-11-08 22:00:00,5006.042,0.0,48.22 -2015-11-08 23:00:00,4670.0,0.0,46.58 -2015-11-09 00:00:00,4373.2,0.0,46.87 -2015-11-09 01:00:00,4180.858,0.0,46.29 -2015-11-09 02:00:00,4053.783,0.0,44.16 -2015-11-09 03:00:00,4001.633,0.0,44.01 -2015-11-09 04:00:00,4043.117,0.0,42.51 -2015-11-09 05:00:00,4279.875,0.0,42.21 -2015-11-09 06:00:00,4807.6,0.0,42.11 -2015-11-09 07:00:00,5367.333,0.0,43.3 -2015-11-09 08:00:00,5746.108,0.0,44.35 -2015-11-09 09:00:00,5985.925,0.0,50.69 -2015-11-09 10:00:00,6084.725,0.0,54.43 -2015-11-09 11:00:00,6121.3,0.0,56.56 -2015-11-09 12:00:00,6124.342,0.0,57.72 -2015-11-09 13:00:00,6122.55,0.0,59.01 -2015-11-09 14:00:00,6103.675,0.0,59.13 -2015-11-09 15:00:00,6120.133,0.0,58.76 -2015-11-09 16:00:00,6255.667,0.0,57.27 -2015-11-09 17:00:00,6478.058,0.0,54.78 -2015-11-09 18:00:00,6356.367,0.0,54.17 -2015-11-09 19:00:00,6170.725,0.0,53.26 -2015-11-09 20:00:00,5958.817,0.0,54.32 -2015-11-09 21:00:00,5670.542,0.0,53.52 -2015-11-09 22:00:00,5321.083,0.0,53.93 -2015-11-09 23:00:00,4882.433,0.0,53.55 -2015-11-10 00:00:00,4479.633,0.0,52.86 -2015-11-10 01:00:00,4231.058,0.0,52.94 -2015-11-10 02:00:00,4082.35,0.0,53.61 -2015-11-10 03:00:00,4025.717,0.0,53.57 -2015-11-10 04:00:00,4034.075,0.0039,53.16 -2015-11-10 05:00:00,4258.475,0.0,54.12 -2015-11-10 06:00:00,4802.092,0.0,54.24 -2015-11-10 07:00:00,5441.942,0.0055,55.3 -2015-11-10 08:00:00,5884.2,0.0026,55.31 -2015-11-10 09:00:00,6161.217,0.0021,56.85 -2015-11-10 10:00:00,6302.258,0.0087,56.71 -2015-11-10 11:00:00,6358.4,0.013,57.82 -2015-11-10 12:00:00,6364.383,0.0032,57.05 -2015-11-10 13:00:00,6361.683,0.0061,56.46 -2015-11-10 14:00:00,6348.9,0.0,55.82 -2015-11-10 15:00:00,6416.35,0.0026,55.56 -2015-11-10 16:00:00,6500.325,0.0,55.5 -2015-11-10 17:00:00,6617.158,0.0,54.73 -2015-11-10 18:00:00,6447.742,0.0,54.51 -2015-11-10 19:00:00,6244.708,0.0,54.23 -2015-11-10 20:00:00,6015.217,0.0,53.61 -2015-11-10 21:00:00,5768.442,0.0,52.9 -2015-11-10 22:00:00,5435.917,0.0,52.27 -2015-11-10 23:00:00,5017.733,0.0,51.92 -2015-11-11 00:00:00,4591.433,0.0,51.52 -2015-11-11 01:00:00,4312.417,0.0062,50.93 -2015-11-11 02:00:00,4170.108,0.0,49.73 -2015-11-11 03:00:00,4104.15,0.0,49.85 -2015-11-11 04:00:00,4099.483,0.0053,50.4 -2015-11-11 05:00:00,4305.925,0.0025,49.95 -2015-11-11 06:00:00,4729.7,0.0,49.71 -2015-11-11 07:00:00,5233.333,0.0,50.12 -2015-11-11 08:00:00,5680.275,0.0,50.21 -2015-11-11 09:00:00,5946.208,0.0,49.88 -2015-11-11 10:00:00,6076.2,0.0,51.16 -2015-11-11 11:00:00,6122.692,0.0,51.46 -2015-11-11 12:00:00,6139.15,0.0,53.92 -2015-11-11 13:00:00,6144.133,0.0,53.55 -2015-11-11 14:00:00,6125.525,0.0,55.18 -2015-11-11 15:00:00,6147.667,0.0,57.06 -2015-11-11 16:00:00,6262.592,0.0,56.69 -2015-11-11 17:00:00,6461.283,0.0,56.21 -2015-11-11 18:00:00,6320.492,0.0,55.08 -2015-11-11 19:00:00,6144.183,0.0036,53.76 -2015-11-11 20:00:00,5925.1,0.0,54.25 -2015-11-11 21:00:00,5680.333,0.0,54.31 -2015-11-11 22:00:00,5352.342,0.0,53.46 -2015-11-11 23:00:00,4939.275,0.0,53.41 -2015-11-12 00:00:00,4537.75,0.0,52.88 -2015-11-12 01:00:00,4292.492,0.0,52.63 -2015-11-12 02:00:00,4155.525,0.0,52.5 -2015-11-12 03:00:00,4078.292,0.0,51.86 -2015-11-12 04:00:00,4096.717,0.0,51.54 -2015-11-12 05:00:00,4315.483,0.0,51.47 -2015-11-12 06:00:00,4845.858,0.0,51.53 -2015-11-12 07:00:00,5433.375,0.0,52.86 -2015-11-12 08:00:00,5843.258,0.0,53.39 -2015-11-12 09:00:00,6105.467,0.0,54.92 -2015-11-12 10:00:00,6216.867,0.0027,56.53 -2015-11-12 11:00:00,6279.733,0.0037,56.82 -2015-11-12 12:00:00,6321.308,0.0,57.57 -2015-11-12 13:00:00,6347.783,0.0061,57.04 -2015-11-12 14:00:00,6327.117,0.0,57.27 -2015-11-12 15:00:00,6366.667,0.0,57.6 -2015-11-12 16:00:00,6479.75,0.0,57.67 -2015-11-12 17:00:00,6623.833,0.0,58.55 -2015-11-12 18:00:00,6464.917,0.0,58.96 -2015-11-12 19:00:00,6266.292,0.0,58.16 -2015-11-12 20:00:00,6022.1,0.0327,57.88 -2015-11-12 21:00:00,5735.133,0.0,57.6 -2015-11-12 22:00:00,5407.692,0.0,57.03 -2015-11-12 23:00:00,4968.8,0.0,56.66 -2015-11-13 00:00:00,4554.183,0.0,55.22 -2015-11-13 01:00:00,4292.083,0.0,54.33 -2015-11-13 02:00:00,4147.875,0.0,53.94 -2015-11-13 03:00:00,4080.625,0.0,52.68 -2015-11-13 04:00:00,4095.192,0.0,53.08 -2015-11-13 05:00:00,4299.325,0.0,52.89 -2015-11-13 06:00:00,4792.483,0.0,52.94 -2015-11-13 07:00:00,5346.767,0.0,52.63 -2015-11-13 08:00:00,5737.142,0.0,53.54 -2015-11-13 09:00:00,5944.817,0.0,54.63 -2015-11-13 10:00:00,6075.175,0.0,56.4 -2015-11-13 11:00:00,6101.317,0.0,57.39 -2015-11-13 12:00:00,6109.408,0.0,57.4 -2015-11-13 13:00:00,6097.542,0.0,56.66 -2015-11-13 14:00:00,6065.017,0.0,56.11 -2015-11-13 15:00:00,6071.95,0.0,54.14 -2015-11-13 16:00:00,6175.483,0.0,52.77 -2015-11-13 17:00:00,6347.567,0.0,51.28 -2015-11-13 18:00:00,6230.892,0.0,50.85 -2015-11-13 19:00:00,6052.8,0.0,49.84 -2015-11-13 20:00:00,5846.175,0.0,49.31 -2015-11-13 21:00:00,5597.717,0.0,48.94 -2015-11-13 22:00:00,5324.833,0.0,47.81 -2015-11-13 23:00:00,4962.375,0.0,46.78 -2015-11-14 00:00:00,4616.117,0.0,46.1 -2015-11-14 01:00:00,4371.275,0.0,45.73 -2015-11-14 02:00:00,4204.125,0.0,44.39 -2015-11-14 03:00:00,4119.683,0.0,43.68 -2015-11-14 04:00:00,4087.692,0.0,43.34 -2015-11-14 05:00:00,4155.067,0.0,43.31 -2015-11-14 06:00:00,4302.5,0.0,43.01 -2015-11-14 07:00:00,4521.308,0.0,44.48 -2015-11-14 08:00:00,4822.283,0.0,45.27 -2015-11-14 09:00:00,5062.467,0.0,47.19 -2015-11-14 10:00:00,5244.233,0.0,47.3 -2015-11-14 11:00:00,5324.283,0.0,47.7 -2015-11-14 12:00:00,5346.967,0.0,47.45 -2015-11-14 13:00:00,5328.617,0.0,48.11 -2015-11-14 14:00:00,5309.775,0.0,47.69 -2015-11-14 15:00:00,5305.633,0.0,47.76 -2015-11-14 16:00:00,5397.217,0.0,47.11 -2015-11-14 17:00:00,5647.125,0.0,46.16 -2015-11-14 18:00:00,5689.275,0.0,44.11 -2015-11-14 19:00:00,5615.7,0.0,42.88 -2015-11-14 20:00:00,5504.875,0.0,42.26 -2015-11-14 21:00:00,5335.692,0.0,41.45 -2015-11-14 22:00:00,5132.233,0.0,40.27 -2015-11-14 23:00:00,4881.683,0.0,41.38 -2015-11-15 00:00:00,4586.933,0.0,40.96 -2015-11-15 01:00:00,4372.383,0.0,40.46 -2015-11-15 02:00:00,4208.775,0.0,39.64 -2015-11-15 03:00:00,4122.217,0.0,39.12 -2015-11-15 04:00:00,4086.033,0.0,39.02 -2015-11-15 05:00:00,4120.058,0.0,37.63 -2015-11-15 06:00:00,4194.05,0.0,37.62 -2015-11-15 07:00:00,4342.367,0.0,39.47 -2015-11-15 08:00:00,4604.65,0.0,41.8 -2015-11-15 09:00:00,4811.05,0.0,44.2 -2015-11-15 10:00:00,5003.1,0.0,47.84 -2015-11-15 11:00:00,5150.358,0.0,49.44 -2015-11-15 12:00:00,5179.933,0.0,51.21 -2015-11-15 13:00:00,5193.817,0.0,55.16 -2015-11-15 14:00:00,5182.967,0.0,57.14 -2015-11-15 15:00:00,5192.408,0.0,58.15 -2015-11-15 16:00:00,5301.45,0.0,57.66 -2015-11-15 17:00:00,5611.033,0.0,56.15 -2015-11-15 18:00:00,5664.6,0.0,54.22 -2015-11-15 19:00:00,5588.792,0.0,53.24 -2015-11-15 20:00:00,5492.142,0.0,52.34 -2015-11-15 21:00:00,5327.808,0.0,52.76 -2015-11-15 22:00:00,5066.608,0.0,52.96 -2015-11-15 23:00:00,4727.667,0.0,52.09 -2015-11-16 00:00:00,4418.142,0.0,51.5 -2015-11-16 01:00:00,4208.008,0.0,51.5 -2015-11-16 02:00:00,4081.342,0.0,51.18 -2015-11-16 03:00:00,4035.058,0.0,50.18 -2015-11-16 04:00:00,4083.767,0.0,49.87 -2015-11-16 05:00:00,4307.617,0.0,48.61 -2015-11-16 06:00:00,4812.192,0.0,47.12 -2015-11-16 07:00:00,5367.65,0.0,49.25 -2015-11-16 08:00:00,5735.217,0.0,51.13 -2015-11-16 09:00:00,5968.558,0.0,55.51 -2015-11-16 10:00:00,6078.7,0.0,58.8 -2015-11-16 11:00:00,6129.308,0.0,62.01 -2015-11-16 12:00:00,6166.908,0.0,63.62 -2015-11-16 13:00:00,6192.292,0.0,65.35 -2015-11-16 14:00:00,6179.658,0.0,66.07 -2015-11-16 15:00:00,6216.75,0.0,66.55 -2015-11-16 16:00:00,6311.167,0.0,65.24 -2015-11-16 17:00:00,6515.308,0.0,62.18 -2015-11-16 18:00:00,6391.592,0.0,58.63 -2015-11-16 19:00:00,6194.167,0.0,58.1 -2015-11-16 20:00:00,5972.758,0.0,57.77 -2015-11-16 21:00:00,5691.567,0.0,55.25 -2015-11-16 22:00:00,5335.542,0.0,53.77 -2015-11-16 23:00:00,4891.283,0.0,52.72 -2015-11-17 00:00:00,4487.708,0.0,50.77 -2015-11-17 01:00:00,4244.975,0.0,50.1 -2015-11-17 02:00:00,4099.908,0.0,47.67 -2015-11-17 03:00:00,4050.742,0.0,45.57 -2015-11-17 04:00:00,4078.475,0.0,43.28 -2015-11-17 05:00:00,4316.958,0.0,42.03 -2015-11-17 06:00:00,4862.192,0.0,40.91 -2015-11-17 07:00:00,5419.133,0.0,40.69 -2015-11-17 08:00:00,5800.958,0.0,41.61 -2015-11-17 09:00:00,6046.6,0.0,44.11 -2015-11-17 10:00:00,6135.883,0.0,45.85 -2015-11-17 11:00:00,6158.15,0.0,46.73 -2015-11-17 12:00:00,6171.658,0.0,48.69 -2015-11-17 13:00:00,6182.467,0.0,48.68 -2015-11-17 14:00:00,6162.75,0.0,49.31 -2015-11-17 15:00:00,6210.358,0.0,48.79 -2015-11-17 16:00:00,6350.617,0.0,47.74 -2015-11-17 17:00:00,6561.758,0.0,46.32 -2015-11-17 18:00:00,6436.983,0.0,44.41 -2015-11-17 19:00:00,6253.133,0.0,43.87 -2015-11-17 20:00:00,6053.55,0.0,44.39 -2015-11-17 21:00:00,5784.425,0.0,42.9 -2015-11-17 22:00:00,5421.133,0.0,43.13 -2015-11-17 23:00:00,4975.783,0.0,42.67 -2015-11-18 00:00:00,4574.108,0.0,43.09 -2015-11-18 01:00:00,4326.517,0.0,43.56 -2015-11-18 02:00:00,4179.658,0.0,43.97 -2015-11-18 03:00:00,4117.85,0.0,44.08 -2015-11-18 04:00:00,4137.267,0.0,44.63 -2015-11-18 05:00:00,4372.3,0.0,44.89 -2015-11-18 06:00:00,4912.192,0.0,45.0 -2015-11-18 07:00:00,5492.392,0.0,46.72 -2015-11-18 08:00:00,5852.758,0.0,48.2 -2015-11-18 09:00:00,6054.708,0.0,51.89 -2015-11-18 10:00:00,6154.517,0.0,54.45 -2015-11-18 11:00:00,6179.55,0.0,57.35 -2015-11-18 12:00:00,6211.517,0.0,56.94 -2015-11-18 13:00:00,6214.225,0.0,57.11 -2015-11-18 14:00:00,6216.225,0.0,56.99 -2015-11-18 15:00:00,6276.542,0.0,56.48 -2015-11-18 16:00:00,6442.233,0.0,55.32 -2015-11-18 17:00:00,6608.075,0.0,55.53 -2015-11-18 18:00:00,6448.775,0.0,55.47 -2015-11-18 19:00:00,6240.258,0.0,55.93 -2015-11-18 20:00:00,6026.333,0.0,56.47 -2015-11-18 21:00:00,5766.525,0.0,55.63 -2015-11-18 22:00:00,5426.042,0.0,57.59 -2015-11-18 23:00:00,4993.592,0.0,55.95 -2015-11-19 00:00:00,4572.167,0.0,56.8 -2015-11-19 01:00:00,4335.908,0.0,56.74 -2015-11-19 02:00:00,4193.717,0.0,57.63 -2015-11-19 03:00:00,4127.767,0.0,57.17 -2015-11-19 04:00:00,4145.317,0.0,57.28 -2015-11-19 05:00:00,4353.425,0.0,56.78 -2015-11-19 06:00:00,4901.675,0.0,58.43 -2015-11-19 07:00:00,5509.85,0.0,58.63 -2015-11-19 08:00:00,5900.75,0.0,59.31 -2015-11-19 09:00:00,6160.033,0.0,60.61 -2015-11-19 10:00:00,6285.525,0.0048,61.8 -2015-11-19 11:00:00,6347.433,0.0,62.76 -2015-11-19 12:00:00,6396.525,0.0036,60.4 -2015-11-19 13:00:00,6420.983,0.0024,61.79 -2015-11-19 14:00:00,6423.458,0.0025,61.13 -2015-11-19 15:00:00,6479.175,0.0,61.62 -2015-11-19 16:00:00,6615.133,0.0185,60.33 -2015-11-19 17:00:00,6732.15,0.036,61.56 -2015-11-19 18:00:00,6559.083,0.0273,61.27 -2015-11-19 19:00:00,6369.025,0.0062,61.43 -2015-11-19 20:00:00,6143.533,0.0532,61.29 -2015-11-19 21:00:00,5868.192,0.0032,62.7 -2015-11-19 22:00:00,5516.858,0.003,61.5 -2015-11-19 23:00:00,5092.917,0.0,62.41 -2015-11-20 00:00:00,4694.342,0.0,61.86 -2015-11-20 01:00:00,4434.425,0.0,61.94 -2015-11-20 02:00:00,4262.158,0.0,61.25 -2015-11-20 03:00:00,4168.867,0.0,59.5 -2015-11-20 04:00:00,4155.058,0.0,58.92 -2015-11-20 05:00:00,4320.575,0.0,56.19 -2015-11-20 06:00:00,4846.15,0.0,54.85 -2015-11-20 07:00:00,5401.742,0.0,53.78 -2015-11-20 08:00:00,5778.567,0.0,53.65 -2015-11-20 09:00:00,6039.342,0.0,53.35 -2015-11-20 10:00:00,6122.967,0.0,54.65 -2015-11-20 11:00:00,6132.658,0.0,55.57 -2015-11-20 12:00:00,6149.1,0.0,56.69 -2015-11-20 13:00:00,6149.883,0.0,55.69 -2015-11-20 14:00:00,6126.483,0.0,56.66 -2015-11-20 15:00:00,6143.583,0.0,55.69 -2015-11-20 16:00:00,6234.342,0.0,54.47 -2015-11-20 17:00:00,6416.125,0.0,52.62 -2015-11-20 18:00:00,6264.558,0.0,49.84 -2015-11-20 19:00:00,6056.925,0.0,48.95 -2015-11-20 20:00:00,5834.742,0.0,47.93 -2015-11-20 21:00:00,5612.942,0.0,46.59 -2015-11-20 22:00:00,5321.333,0.0,45.48 -2015-11-20 23:00:00,4978.283,0.0,44.17 -2015-11-21 00:00:00,4624.625,0.0,44.43 -2015-11-21 01:00:00,4376.367,0.0,43.55 -2015-11-21 02:00:00,4214.483,0.0,41.73 -2015-11-21 03:00:00,4122.817,0.0,41.39 -2015-11-21 04:00:00,4097.45,0.0,40.7 -2015-11-21 05:00:00,4159.017,0.0,40.14 -2015-11-21 06:00:00,4334.742,0.0,40.86 -2015-11-21 07:00:00,4555.5,0.0,40.18 -2015-11-21 08:00:00,4859.8,0.0,41.95 -2015-11-21 09:00:00,5089.3,0.0,44.23 -2015-11-21 10:00:00,5267.733,0.0,46.74 -2015-11-21 11:00:00,5349.0,0.0,48.27 -2015-11-21 12:00:00,5375.325,0.0,48.71 -2015-11-21 13:00:00,5355.75,0.0,49.67 -2015-11-21 14:00:00,5328.625,0.0,49.74 -2015-11-21 15:00:00,5324.083,0.0,49.51 -2015-11-21 16:00:00,5429.242,0.0,49.39 -2015-11-21 17:00:00,5680.008,0.0,47.63 -2015-11-21 18:00:00,5692.633,0.0,47.57 -2015-11-21 19:00:00,5627.883,0.0,49.25 -2015-11-21 20:00:00,5498.05,0.0,49.79 -2015-11-21 21:00:00,5348.175,0.0,49.67 -2015-11-21 22:00:00,5119.442,0.0,49.95 -2015-11-21 23:00:00,4848.092,0.0,50.78 -2015-11-22 00:00:00,4573.592,0.0,50.87 -2015-11-22 01:00:00,4346.95,0.0,52.56 -2015-11-22 02:00:00,4183.483,0.0,53.51 -2015-11-22 03:00:00,4083.533,0.0029,53.32 -2015-11-22 04:00:00,4043.092,0.0,53.45 -2015-11-22 05:00:00,4070.042,0.0,52.54 -2015-11-22 06:00:00,4177.408,0.0,51.78 -2015-11-22 07:00:00,4324.442,0.0,50.2 -2015-11-22 08:00:00,4571.758,0.0,49.99 -2015-11-22 09:00:00,4808.25,0.0,50.78 -2015-11-22 10:00:00,5039.625,0.0,50.95 -2015-11-22 11:00:00,5189.667,0.0032,50.72 -2015-11-22 12:00:00,5259.367,0.0,50.57 -2015-11-22 13:00:00,5320.267,0.0,50.0 -2015-11-22 14:00:00,5343.558,0.0,49.64 -2015-11-22 15:00:00,5401.483,0.0,49.13 -2015-11-22 16:00:00,5549.117,0.0,48.25 -2015-11-22 17:00:00,5739.2,0.0,48.6 -2015-11-22 18:00:00,5741.458,0.0,47.84 -2015-11-22 19:00:00,5691.625,0.0,46.74 -2015-11-22 20:00:00,5595.142,0.0,46.85 -2015-11-22 21:00:00,5412.667,0.0,45.35 -2015-11-22 22:00:00,5136.283,0.0,44.18 -2015-11-22 23:00:00,4799.175,0.0,42.75 -2015-11-23 00:00:00,4492.25,0.0,42.13 -2015-11-23 01:00:00,4288.742,0.0,40.82 -2015-11-23 02:00:00,4173.375,0.0,38.75 -2015-11-23 03:00:00,4138.375,0.0,37.73 -2015-11-23 04:00:00,4178.808,0.0,36.45 -2015-11-23 05:00:00,4435.808,0.0,35.83 -2015-11-23 06:00:00,4970.25,0.0,34.74 -2015-11-23 07:00:00,5547.167,0.0,34.36 -2015-11-23 08:00:00,5911.508,0.0,35.45 -2015-11-23 09:00:00,6156.042,0.0,37.42 -2015-11-23 10:00:00,6255.283,0.0,39.67 -2015-11-23 11:00:00,6287.85,0.0,41.48 -2015-11-23 12:00:00,6303.067,0.0,42.21 -2015-11-23 13:00:00,6292.367,0.0,42.39 -2015-11-23 14:00:00,6279.417,0.0,42.65 -2015-11-23 15:00:00,6313.417,0.0,41.98 -2015-11-23 16:00:00,6464.308,0.0,40.74 -2015-11-23 17:00:00,6699.858,0.0,39.13 -2015-11-23 18:00:00,6586.967,0.0,37.32 -2015-11-23 19:00:00,6437.6,0.0,35.79 -2015-11-23 20:00:00,6252.65,0.0,35.27 -2015-11-23 21:00:00,6004.417,0.0,34.38 -2015-11-23 22:00:00,5631.467,0.0,33.96 -2015-11-23 23:00:00,5185.233,0.0,33.55 -2015-11-24 00:00:00,4783.417,0.0,33.12 -2015-11-24 01:00:00,4536.6,0.0,32.48 -2015-11-24 02:00:00,4374.033,0.0,32.31 -2015-11-24 03:00:00,4316.067,0.0,31.37 -2015-11-24 04:00:00,4328.6,0.0,30.83 -2015-11-24 05:00:00,4580.308,0.0,30.96 -2015-11-24 06:00:00,5105.058,0.0,32.2 -2015-11-24 07:00:00,5672.883,0.0,32.9 -2015-11-24 08:00:00,6023.467,0.0,35.3 -2015-11-24 09:00:00,6246.725,0.0,37.5 -2015-11-24 10:00:00,6331.708,0.0,40.36 -2015-11-24 11:00:00,6329.458,0.0,41.76 -2015-11-24 12:00:00,6316.342,0.0,43.73 -2015-11-24 13:00:00,6296.983,0.0,44.72 -2015-11-24 14:00:00,6267.275,0.0,45.49 -2015-11-24 15:00:00,6299.808,0.0,45.84 -2015-11-24 16:00:00,6429.675,0.0,44.98 -2015-11-24 17:00:00,6660.108,0.0,43.41 -2015-11-24 18:00:00,6512.608,0.0,41.83 -2015-11-24 19:00:00,6337.367,0.0,41.65 -2015-11-24 20:00:00,6139.1,0.0,42.26 -2015-11-24 21:00:00,5911.35,0.0,41.71 -2015-11-24 22:00:00,5569.425,0.0,39.73 -2015-11-24 23:00:00,5151.575,0.0,38.89 -2015-11-25 00:00:00,4740.4,0.0,37.47 -2015-11-25 01:00:00,4488.6,0.0,38.06 -2015-11-25 02:00:00,4339.667,0.0,36.49 -2015-11-25 03:00:00,4278.592,0.0,36.42 -2015-11-25 04:00:00,4306.117,0.0,34.97 -2015-11-25 05:00:00,4523.733,0.0,34.64 -2015-11-25 06:00:00,5028.35,0.0,35.01 -2015-11-25 07:00:00,5544.042,0.0,35.08 -2015-11-25 08:00:00,5904.517,0.0,38.0 -2015-11-25 09:00:00,6130.983,0.0,40.49 -2015-11-25 10:00:00,6224.283,0.0,44.44 -2015-11-25 11:00:00,6231.867,0.0,46.14 -2015-11-25 12:00:00,6212.308,0.0,47.82 -2015-11-25 13:00:00,6175.525,0.0,48.49 -2015-11-25 14:00:00,6133.792,0.0,48.65 -2015-11-25 15:00:00,6124.492,0.0,47.71 -2015-11-25 16:00:00,6232.458,0.0,46.85 -2015-11-25 17:00:00,6421.658,0.0,45.56 -2015-11-25 18:00:00,6301.983,0.0,43.89 -2015-11-25 19:00:00,6107.267,0.0,41.59 -2015-11-25 20:00:00,5912.458,0.0,42.39 -2015-11-25 21:00:00,5714.292,0.0,40.65 -2015-11-25 22:00:00,5427.2,0.0,40.9 -2015-11-25 23:00:00,5067.15,0.0,41.01 -2015-11-26 00:00:00,4711.092,0.0,40.93 -2015-11-26 01:00:00,4457.683,0.0,40.58 -2015-11-26 02:00:00,4298.558,0.0,39.94 -2015-11-26 03:00:00,4213.258,0.0,40.14 -2015-11-26 04:00:00,4196.467,0.0,38.56 -2015-11-26 05:00:00,4270.483,0.0,38.49 -2015-11-26 06:00:00,4429.708,0.0,39.61 -2015-11-26 07:00:00,4591.517,0.0,38.56 -2015-11-26 08:00:00,4824.775,0.0,41.03 -2015-11-26 09:00:00,5031.617,0.0,46.27 -2015-11-26 10:00:00,5183.942,0.0,50.24 -2015-11-26 11:00:00,5283.358,0.0,54.78 -2015-11-26 12:00:00,5298.775,0.0,56.64 -2015-11-26 13:00:00,5278.117,0.0,57.67 -2015-11-26 14:00:00,5228.7,0.0,58.49 -2015-11-26 15:00:00,5189.017,0.0,58.5 -2015-11-26 16:00:00,5224.733,0.0,57.22 -2015-11-26 17:00:00,5332.417,0.0,55.39 -2015-11-26 18:00:00,5252.558,0.0,53.17 -2015-11-26 19:00:00,5135.717,0.0,51.69 -2015-11-26 20:00:00,5042.95,0.0,50.77 -2015-11-26 21:00:00,4978.7,0.0,51.04 -2015-11-26 22:00:00,4850.5,0.0,51.53 -2015-11-26 23:00:00,4665.275,0.0,49.6 -2015-11-27 00:00:00,4450.058,0.0,51.53 -2015-11-27 01:00:00,4270.783,0.0,50.25 -2015-11-27 02:00:00,4145.45,0.0,49.11 -2015-11-27 03:00:00,4082.025,0.0,48.62 -2015-11-27 04:00:00,4086.192,0.0,47.59 -2015-11-27 05:00:00,4219.342,0.0,46.97 -2015-11-27 06:00:00,4513.625,0.0,47.25 -2015-11-27 07:00:00,4839.375,0.0,47.08 -2015-11-27 08:00:00,5143.883,0.0,48.6 -2015-11-27 09:00:00,5352.7,0.0,50.55 -2015-11-27 10:00:00,5495.267,0.0,54.49 -2015-11-27 11:00:00,5563.867,0.0,57.54 -2015-11-27 12:00:00,5600.808,0.0,60.4 -2015-11-27 13:00:00,5596.158,0.0,62.3 -2015-11-27 14:00:00,5573.808,0.0,62.9 -2015-11-27 15:00:00,5590.308,0.0,62.71 -2015-11-27 16:00:00,5714.0,0.0,61.86 -2015-11-27 17:00:00,5916.042,0.0,59.4 -2015-11-27 18:00:00,5830.083,0.0,56.43 -2015-11-27 19:00:00,5695.408,0.0,56.39 -2015-11-27 20:00:00,5520.542,0.0,56.25 -2015-11-27 21:00:00,5346.875,0.0,56.63 -2015-11-27 22:00:00,5121.4,0.0,55.65 -2015-11-27 23:00:00,4829.45,0.0,55.17 -2015-11-28 00:00:00,4539.592,0.0,54.48 -2015-11-28 01:00:00,4306.25,0.0,54.34 -2015-11-28 02:00:00,4118.35,0.0,54.52 -2015-11-28 03:00:00,4037.167,0.0,53.83 -2015-11-28 04:00:00,3995.158,0.0,53.2 -2015-11-28 05:00:00,4049.442,0.0,53.39 -2015-11-28 06:00:00,4194.417,0.0,52.24 -2015-11-28 07:00:00,4394.567,0.0,51.74 -2015-11-28 08:00:00,4678.092,0.0,54.82 -2015-11-28 09:00:00,4927.808,0.0,56.95 -2015-11-28 10:00:00,5110.342,0.0,59.07 -2015-11-28 11:00:00,5229.125,0.0,60.78 -2015-11-28 12:00:00,5285.633,0.0,61.42 -2015-11-28 13:00:00,5296.317,0.0085,59.92 -2015-11-28 14:00:00,5304.858,0.0187,57.66 -2015-11-28 15:00:00,5342.142,0.0031,55.54 -2015-11-28 16:00:00,5464.033,0.0256,53.07 -2015-11-28 17:00:00,5592.0,0.0028,49.75 -2015-11-28 18:00:00,5594.333,0.0,48.51 -2015-11-28 19:00:00,5535.867,0.0,47.2 -2015-11-28 20:00:00,5406.675,0.0,45.97 -2015-11-28 21:00:00,5272.808,0.0,44.91 -2015-11-28 22:00:00,5083.567,0.0,44.16 -2015-11-28 23:00:00,4819.767,0.0,44.13 -2015-11-29 00:00:00,4562.1,0.0,43.3 -2015-11-29 01:00:00,4299.467,0.0,42.91 -2015-11-29 02:00:00,4125.2,0.0,41.4 -2015-11-29 03:00:00,4037.408,0.0,41.3 -2015-11-29 04:00:00,4000.025,0.0,40.03 -2015-11-29 05:00:00,4049.758,0.0045,39.61 -2015-11-29 06:00:00,4163.842,0.0,38.63 -2015-11-29 07:00:00,4299.733,0.0,38.5 -2015-11-29 08:00:00,4553.817,0.0,39.05 -2015-11-29 09:00:00,4834.108,0.0,39.41 -2015-11-29 10:00:00,5073.033,0.0,40.31 -2015-11-29 11:00:00,5176.167,0.0,41.55 -2015-11-29 12:00:00,5216.775,0.0,43.24 -2015-11-29 13:00:00,5226.425,0.0,46.94 -2015-11-29 14:00:00,5229.725,0.0,48.09 -2015-11-29 15:00:00,5285.875,0.0,47.8 -2015-11-29 16:00:00,5470.967,0.0,46.39 -2015-11-29 17:00:00,5737.733,0.0,43.47 -2015-11-29 18:00:00,5785.75,0.0,42.07 -2015-11-29 19:00:00,5752.033,0.0,40.04 -2015-11-29 20:00:00,5658.358,0.0,40.16 -2015-11-29 21:00:00,5505.942,0.0,38.62 -2015-11-29 22:00:00,5249.158,0.0,37.86 -2015-11-29 23:00:00,4926.075,0.0,37.49 -2015-11-30 00:00:00,4555.867,0.0,36.57 -2015-11-30 01:00:00,4363.533,0.0,36.26 -2015-11-30 02:00:00,4240.258,0.0,35.21 -2015-11-30 03:00:00,4181.742,0.0,34.89 -2015-11-30 04:00:00,4227.65,0.0,34.1 -2015-11-30 05:00:00,4473.308,0.0,33.81 -2015-11-30 06:00:00,5002.242,0.0,34.05 -2015-11-30 07:00:00,5604.633,0.0,33.45 -2015-11-30 08:00:00,5967.533,0.0,35.16 -2015-11-30 09:00:00,6188.142,0.0,37.27 -2015-11-30 10:00:00,6311.675,0.0,39.35 -2015-11-30 11:00:00,6323.717,0.0,42.07 -2015-11-30 12:00:00,6332.233,0.0,42.6 -2015-11-30 13:00:00,6333.867,0.0,43.91 -2015-11-30 14:00:00,6320.6,0.0,44.44 -2015-11-30 15:00:00,6363.683,0.0,44.93 -2015-11-30 16:00:00,6531.233,0.0,43.95 -2015-11-30 17:00:00,6713.05,0.0,42.59 -2015-11-30 18:00:00,6600.667,0.0,42.9 -2015-11-30 19:00:00,6403.283,0.0,44.08 -2015-11-30 20:00:00,6204.925,0.0,42.3 -2015-11-30 21:00:00,5937.108,0.0,43.16 -2015-11-30 22:00:00,5567.917,0.0,43.18 -2015-11-30 23:00:00,5119.233,0.0,44.42 -2015-12-01 00:00:00,4705.342,0.0051,43.73 -2015-12-01 01:00:00,4400.258,0.0031,44.67 -2015-12-01 02:00:00,4242.125,0.0026,44.51 -2015-12-01 03:00:00,4182.467,0.0032,44.07 -2015-12-01 04:00:00,4194.825,0.0278,44.02 -2015-12-01 05:00:00,4424.333,0.0051,44.4 -2015-12-01 06:00:00,4984.925,0.0087,45.03 -2015-12-01 07:00:00,5595.892,0.0,46.33 -2015-12-01 08:00:00,5978.175,0.0,45.72 -2015-12-01 09:00:00,6215.775,0.0014,46.3 -2015-12-01 10:00:00,6311.825,0.0373,47.97 -2015-12-01 11:00:00,6387.675,0.0,49.37 -2015-12-01 12:00:00,6411.8,0.002,50.78 -2015-12-01 13:00:00,6426.85,0.0089,50.78 -2015-12-01 14:00:00,6407.8,0.015,49.44 -2015-12-01 15:00:00,6473.408,0.0033,48.88 -2015-12-01 16:00:00,6601.067,0.0062,47.97 -2015-12-01 17:00:00,6720.367,0.0,47.69 -2015-12-01 18:00:00,6583.4,0.0033,47.65 -2015-12-01 19:00:00,6379.05,0.0071,47.91 -2015-12-01 20:00:00,6186.442,0.0058,47.74 -2015-12-01 21:00:00,5909.842,0.0,47.22 -2015-12-01 22:00:00,5554.8,0.0,47.43 -2015-12-01 23:00:00,5109.858,0.0,47.35 -2015-12-02 00:00:00,4686.1,0.0,46.78 -2015-12-02 01:00:00,4411.967,0.0,46.72 -2015-12-02 02:00:00,4257.15,0.0,46.34 -2015-12-02 03:00:00,4158.317,0.0,46.28 -2015-12-02 04:00:00,4179.475,0.0139,45.81 -2015-12-02 05:00:00,4407.733,0.005,46.08 -2015-12-02 06:00:00,4946.375,0.0,46.58 -2015-12-02 07:00:00,5532.108,0.0,46.64 -2015-12-02 08:00:00,5939.433,0.0,47.61 -2015-12-02 09:00:00,6221.025,0.0301,47.81 -2015-12-02 10:00:00,6325.617,0.0,48.54 -2015-12-02 11:00:00,6359.65,0.0,49.61 -2015-12-02 12:00:00,6387.875,0.0081,51.08 -2015-12-02 13:00:00,6390.217,0.0043,51.68 -2015-12-02 14:00:00,6376.7,0.0,51.83 -2015-12-02 15:00:00,6432.542,0.0097,51.39 -2015-12-02 16:00:00,6609.125,0.035,52.74 -2015-12-02 17:00:00,6728.9,0.0,51.51 -2015-12-02 18:00:00,6550.5,0.0,52.81 -2015-12-02 19:00:00,6349.55,0.0,54.25 -2015-12-02 20:00:00,6136.792,0.0,54.23 -2015-12-02 21:00:00,5880.408,0.0,54.14 -2015-12-02 22:00:00,5542.625,0.0,55.18 -2015-12-02 23:00:00,5082.55,0.0,54.49 -2015-12-03 00:00:00,4661.442,0.0,53.72 -2015-12-03 01:00:00,4383.742,0.0,53.13 -2015-12-03 02:00:00,4178.542,0.0,51.77 -2015-12-03 03:00:00,4107.358,0.0,51.38 -2015-12-03 04:00:00,4123.367,0.0,49.17 -2015-12-03 05:00:00,4364.3,0.0,47.63 -2015-12-03 06:00:00,4930.725,0.0,46.58 -2015-12-03 07:00:00,5510.608,0.0,45.53 -2015-12-03 08:00:00,5881.458,0.0,46.17 -2015-12-03 09:00:00,6075.317,0.0,46.89 -2015-12-03 10:00:00,6180.758,0.0,47.94 -2015-12-03 11:00:00,6235.275,0.0,48.83 -2015-12-03 12:00:00,6248.4,0.0,48.57 -2015-12-03 13:00:00,6262.95,0.0,48.92 -2015-12-03 14:00:00,6256.083,0.0,49.15 -2015-12-03 15:00:00,6300.9,0.0,48.74 -2015-12-03 16:00:00,6435.467,0.0,48.38 -2015-12-03 17:00:00,6634.85,0.0,47.35 -2015-12-03 18:00:00,6498.667,0.0,46.05 -2015-12-03 19:00:00,6326.675,0.0,45.15 -2015-12-03 20:00:00,6127.192,0.0,43.98 -2015-12-03 21:00:00,5883.917,0.0,45.02 -2015-12-03 22:00:00,5549.617,0.0,44.81 -2015-12-03 23:00:00,5139.983,0.0,44.5 -2015-12-04 00:00:00,4728.642,0.0,43.7 -2015-12-04 01:00:00,4459.858,0.0,43.59 -2015-12-04 02:00:00,4309.75,0.0,42.32 -2015-12-04 03:00:00,4234.7,0.0,42.4 -2015-12-04 04:00:00,4243.883,0.0,41.65 -2015-12-04 05:00:00,4472.925,0.0,40.66 -2015-12-04 06:00:00,5009.967,0.0,41.43 -2015-12-04 07:00:00,5545.067,0.0,41.59 -2015-12-04 08:00:00,5898.85,0.0,43.4 -2015-12-04 09:00:00,6138.525,0.0,44.53 -2015-12-04 10:00:00,6230.6,0.0,47.29 -2015-12-04 11:00:00,6258.783,0.0,47.79 -2015-12-04 12:00:00,6254.025,0.0,49.56 -2015-12-04 13:00:00,6321.75,0.0,50.85 -2015-12-04 14:00:00,6218.925,0.0,50.69 -2015-12-04 15:00:00,6253.283,0.0,50.86 -2015-12-04 16:00:00,6383.783,0.0,50.08 -2015-12-04 17:00:00,6557.125,0.0,48.15 -2015-12-04 18:00:00,6408.142,0.0,45.93 -2015-12-04 19:00:00,6240.408,0.0,45.53 -2015-12-04 20:00:00,6044.25,0.0,44.28 -2015-12-04 21:00:00,5807.367,0.0,43.11 -2015-12-04 22:00:00,5534.983,0.0,43.24 -2015-12-04 23:00:00,5162.467,0.0,41.76 -2015-12-05 00:00:00,4780.742,0.0,41.8 -2015-12-05 01:00:00,4517.392,0.0,41.05 -2015-12-05 02:00:00,4338.55,0.0,39.75 -2015-12-05 03:00:00,4242.225,0.0,38.18 -2015-12-05 04:00:00,4196.817,0.0,38.5 -2015-12-05 05:00:00,4269.992,0.0,37.96 -2015-12-05 06:00:00,4456.608,0.0,37.49 -2015-12-05 07:00:00,4670.833,0.0,38.13 -2015-12-05 08:00:00,4967.758,0.0,39.81 -2015-12-05 09:00:00,5206.633,0.0,42.01 -2015-12-05 10:00:00,5376.517,0.0,46.19 -2015-12-05 11:00:00,5470.208,0.0,48.22 -2015-12-05 12:00:00,5492.317,0.0,49.58 -2015-12-05 13:00:00,5473.925,0.0,50.63 -2015-12-05 14:00:00,5456.667,0.0,50.93 -2015-12-05 15:00:00,5456.433,0.0,51.0 -2015-12-05 16:00:00,5591.733,0.0,49.36 -2015-12-05 17:00:00,5854.017,0.0,47.11 -2015-12-05 18:00:00,5900.558,0.0,45.11 -2015-12-05 19:00:00,5796.9,0.0,44.72 -2015-12-05 20:00:00,5639.558,0.0,43.73 -2015-12-05 21:00:00,5473.058,0.0,41.82 -2015-12-05 22:00:00,5301.9,0.0,42.43 -2015-12-05 23:00:00,5026.2,0.0,39.25 -2015-12-06 00:00:00,4725.375,0.0,40.56 -2015-12-06 01:00:00,4469.142,0.0,39.91 -2015-12-06 02:00:00,4292.433,0.0,37.33 -2015-12-06 03:00:00,4200.0,0.0,37.54 -2015-12-06 04:00:00,4158.483,0.0,36.92 -2015-12-06 05:00:00,4191.792,0.0,35.32 -2015-12-06 06:00:00,4351.1,0.0,35.53 -2015-12-06 07:00:00,4487.65,0.0,36.03 -2015-12-06 08:00:00,4743.891,0.0,38.44 -2015-12-06 09:00:00,4981.567,0.0,40.82 -2015-12-06 10:00:00,5164.85,0.0,45.22 -2015-12-06 11:00:00,5285.192,0.0,49.06 -2015-12-06 12:00:00,5339.283,0.0,51.41 -2015-12-06 13:00:00,5365.867,0.0,52.45 -2015-12-06 14:00:00,5373.7,0.0,52.54 -2015-12-06 15:00:00,5400.883,0.0,52.25 -2015-12-06 16:00:00,5588.367,0.0,50.84 -2015-12-06 17:00:00,5896.783,0.0,48.31 -2015-12-06 18:00:00,5924.708,0.0,45.95 -2015-12-06 19:00:00,5873.608,0.0,45.91 -2015-12-06 20:00:00,5759.725,0.0,45.62 -2015-12-06 21:00:00,5600.533,0.0,45.41 -2015-12-06 22:00:00,5314.125,0.0,44.44 -2015-12-06 23:00:00,4944.083,0.0,43.52 -2015-12-07 00:00:00,4602.217,0.0,41.92 -2015-12-07 01:00:00,4399.433,0.0,41.49 -2015-12-07 02:00:00,4234.017,0.0,41.18 -2015-12-07 03:00:00,4127.417,0.0,41.31 -2015-12-07 04:00:00,4203.692,0.0,40.88 -2015-12-07 05:00:00,4429.592,0.0,39.86 -2015-12-07 06:00:00,5026.2,0.0,40.45 -2015-12-07 07:00:00,5611.483,0.0,38.35 -2015-12-07 08:00:00,5950.383,0.0,40.33 -2015-12-07 09:00:00,6179.967,0.0,42.76 -2015-12-07 10:00:00,6267.183,0.0,45.05 -2015-12-07 11:00:00,6284.208,0.0,49.26 -2015-12-07 12:00:00,6276.95,0.0,51.66 -2015-12-07 13:00:00,6292.425,0.0,53.24 -2015-12-07 14:00:00,6276.567,0.0,54.27 -2015-12-07 15:00:00,6310.317,0.0,54.07 -2015-12-07 16:00:00,6495.933,0.0,52.42 -2015-12-07 17:00:00,6719.533,0.0,50.72 -2015-12-07 18:00:00,6578.967,0.0,48.18 -2015-12-07 19:00:00,6395.692,0.0,46.87 -2015-12-07 20:00:00,6156.958,0.0,47.12 -2015-12-07 21:00:00,5945.142,0.0,46.0 -2015-12-07 22:00:00,5587.25,0.0,45.59 -2015-12-07 23:00:00,5127.108,0.0,44.16 -2015-12-08 00:00:00,4710.975,0.0,43.15 -2015-12-08 01:00:00,4443.458,0.0,42.48 -2015-12-08 02:00:00,4310.892,0.0,41.87 -2015-12-08 03:00:00,4202.1,0.0,41.12 -2015-12-08 04:00:00,4233.133,0.0,41.53 -2015-12-08 05:00:00,4492.292,0.0,40.67 -2015-12-08 06:00:00,5068.608,0.0,41.02 -2015-12-08 07:00:00,5650.05,0.0,40.6 -2015-12-08 08:00:00,5996.925,0.0,41.43 -2015-12-08 09:00:00,6189.425,0.0,42.58 -2015-12-08 10:00:00,6278.392,0.0,43.85 -2015-12-08 11:00:00,6311.475,0.0,44.53 -2015-12-08 12:00:00,6307.208,0.0,46.13 -2015-12-08 13:00:00,6298.092,0.0,46.89 -2015-12-08 14:00:00,6288.842,0.0,47.74 -2015-12-08 15:00:00,6339.508,0.0,47.88 -2015-12-08 16:00:00,6525.117,0.0,46.24 -2015-12-08 17:00:00,6754.433,0.0,45.15 -2015-12-08 18:00:00,6622.167,0.0,43.93 -2015-12-08 19:00:00,6430.525,0.0,43.28 -2015-12-08 20:00:00,6244.792,0.0,42.22 -2015-12-08 21:00:00,6005.375,0.0,40.42 -2015-12-08 22:00:00,5654.5,0.0,39.74 -2015-12-08 23:00:00,5185.95,0.0,40.74 -2015-12-09 00:00:00,4761.417,0.0,39.42 -2015-12-09 01:00:00,4494.067,0.0,38.46 -2015-12-09 02:00:00,4264.825,0.0,38.39 -2015-12-09 03:00:00,4203.033,0.0,37.19 -2015-12-09 04:00:00,4218.592,0.0,36.95 -2015-12-09 05:00:00,4436.175,0.0,38.13 -2015-12-09 06:00:00,4998.025,0.0,39.57 -2015-12-09 07:00:00,5575.65,0.0,39.34 -2015-12-09 08:00:00,5941.325,0.0,40.99 -2015-12-09 09:00:00,6164.625,0.0,43.35 -2015-12-09 10:00:00,6262.65,0.0,45.6 -2015-12-09 11:00:00,6290.45,0.0,47.13 -2015-12-09 12:00:00,6316.258,0.0,49.58 -2015-12-09 13:00:00,6320.383,0.0,49.58 -2015-12-09 14:00:00,6300.875,0.0,50.41 -2015-12-09 15:00:00,6314.092,0.0,51.08 -2015-12-09 16:00:00,6468.208,0.0,50.56 -2015-12-09 17:00:00,6688.392,0.0,50.85 -2015-12-09 18:00:00,6552.325,0.0,50.5 -2015-12-09 19:00:00,6365.817,0.0,51.06 -2015-12-09 20:00:00,6197.892,0.0,52.45 -2015-12-09 21:00:00,5958.125,0.0,51.83 -2015-12-09 22:00:00,5586.85,0.0,52.05 -2015-12-09 23:00:00,5140.55,0.0,53.09 -2015-12-10 00:00:00,4706.617,0.0,52.81 -2015-12-10 01:00:00,4420.95,0.0,53.02 -2015-12-10 02:00:00,4255.65,0.0166,52.81 -2015-12-10 03:00:00,4179.75,0.0,50.98 -2015-12-10 04:00:00,4200.208,0.0,50.43 -2015-12-10 05:00:00,4410.167,0.0055,50.87 -2015-12-10 06:00:00,4961.892,0.0,50.18 -2015-12-10 07:00:00,5547.1,0.0,50.21 -2015-12-10 08:00:00,5900.717,0.0,50.42 -2015-12-10 09:00:00,6109.433,0.0,52.09 -2015-12-10 10:00:00,6187.308,0.0,54.55 -2015-12-10 11:00:00,6226.492,0.0,55.63 -2015-12-10 12:00:00,6231.008,0.0,57.39 -2015-12-10 13:00:00,6237.442,0.0,58.44 -2015-12-10 14:00:00,6228.5,0.0,59.31 -2015-12-10 15:00:00,6259.617,0.0,58.64 -2015-12-10 16:00:00,6427.333,0.0,56.92 -2015-12-10 17:00:00,6643.625,0.0,55.48 -2015-12-10 18:00:00,6512.175,0.0,52.54 -2015-12-10 19:00:00,6320.992,0.0,51.37 -2015-12-10 20:00:00,6107.3,0.0,51.34 -2015-12-10 21:00:00,5870.575,0.0,50.92 -2015-12-10 22:00:00,5533.15,0.0,50.93 -2015-12-10 23:00:00,5100.283,0.0,50.38 -2015-12-11 00:00:00,4681.233,0.0,49.63 -2015-12-11 01:00:00,4401.008,0.0,49.83 -2015-12-11 02:00:00,4242.492,0.0,50.33 -2015-12-11 03:00:00,4157.992,0.0,47.46 -2015-12-11 04:00:00,4182.892,0.0,48.42 -2015-12-11 05:00:00,4381.067,0.0,48.05 -2015-12-11 06:00:00,4944.083,0.0,48.11 -2015-12-11 07:00:00,5527.6,0.0,46.1 -2015-12-11 08:00:00,5894.65,0.0,50.35 -2015-12-11 09:00:00,6108.0,0.0,50.36 -2015-12-11 10:00:00,6201.133,0.0,54.19 -2015-12-11 11:00:00,6234.883,0.0,56.02 -2015-12-11 12:00:00,6229.8,0.0,56.8 -2015-12-11 13:00:00,6237.033,0.0,58.31 -2015-12-11 14:00:00,6215.067,0.0,59.97 -2015-12-11 15:00:00,6236.058,0.0,59.13 -2015-12-11 16:00:00,6410.975,0.0,58.62 -2015-12-11 17:00:00,6565.575,0.0,56.82 -2015-12-11 18:00:00,6408.567,0.0,55.67 -2015-12-11 19:00:00,6191.858,0.0,55.87 -2015-12-11 20:00:00,5977.525,0.0,55.5 -2015-12-11 21:00:00,5751.325,0.0,53.11 -2015-12-11 22:00:00,5458.35,0.0,54.52 -2015-12-11 23:00:00,5084.7,0.0,54.58 -2015-12-12 00:00:00,4729.033,0.0,53.57 -2015-12-12 01:00:00,4472.542,0.0,53.44 -2015-12-12 02:00:00,4288.192,0.0,52.45 -2015-12-12 03:00:00,4139.625,0.0,51.68 -2015-12-12 04:00:00,4076.842,0.0,51.54 -2015-12-12 05:00:00,4129.308,0.0,49.32 -2015-12-12 06:00:00,4299.867,0.0,51.39 -2015-12-12 07:00:00,4509.025,0.0,51.27 -2015-12-12 08:00:00,4798.525,0.0,52.26 -2015-12-12 09:00:00,5070.367,0.0,53.59 -2015-12-12 10:00:00,5302.05,0.0,57.88 -2015-12-12 11:00:00,5453.358,0.0,61.31 -2015-12-12 12:00:00,5501.825,0.0,63.17 -2015-12-12 13:00:00,5515.8,0.0,64.33 -2015-12-12 14:00:00,5531.408,0.0,63.34 -2015-12-12 15:00:00,5533.292,0.0,61.09 -2015-12-12 16:00:00,5619.858,0.0,60.79 -2015-12-12 17:00:00,5832.108,0.0,58.93 -2015-12-12 18:00:00,5821.65,0.0,56.42 -2015-12-12 19:00:00,5748.092,0.0,57.64 -2015-12-12 20:00:00,5613.892,0.0,57.27 -2015-12-12 21:00:00,5475.933,0.0,56.39 -2015-12-12 22:00:00,5268.925,0.0,56.47 -2015-12-12 23:00:00,4996.7,0.0,56.59 -2015-12-13 00:00:00,4696.2,0.0,56.64 -2015-12-13 01:00:00,4407.583,0.0,55.61 -2015-12-13 02:00:00,4218.483,0.0,55.52 -2015-12-13 03:00:00,4081.358,0.0,55.91 -2015-12-13 04:00:00,4013.783,0.0,55.6 -2015-12-13 05:00:00,4034.717,0.0,55.35 -2015-12-13 06:00:00,4193.433,0.0,56.77 -2015-12-13 07:00:00,4340.525,0.0,55.29 -2015-12-13 08:00:00,4599.692,0.0,55.16 -2015-12-13 09:00:00,4874.733,0.0,57.1 -2015-12-13 10:00:00,5084.408,0.0,60.81 -2015-12-13 11:00:00,5245.2,0.0,63.7 -2015-12-13 12:00:00,5315.933,0.0,64.94 -2015-12-13 13:00:00,5346.508,0.0,65.0 -2015-12-13 14:00:00,5338.992,0.0,64.2 -2015-12-13 15:00:00,5356.417,0.0,61.53 -2015-12-13 16:00:00,5525.183,0.0,58.62 -2015-12-13 17:00:00,5790.917,0.0,56.53 -2015-12-13 18:00:00,5822.175,0.0,55.25 -2015-12-13 19:00:00,5756.283,0.0,54.77 -2015-12-13 20:00:00,5661.442,0.0,55.0 -2015-12-13 21:00:00,5505.408,0.0,54.08 -2015-12-13 22:00:00,5242.675,0.0,54.12 -2015-12-13 23:00:00,4850.225,0.0,53.84 -2015-12-14 00:00:00,4518.667,0.0,53.61 -2015-12-14 01:00:00,4281.883,0.0,53.23 -2015-12-14 02:00:00,4140.475,0.0,53.03 -2015-12-14 03:00:00,4075.042,0.0,53.18 -2015-12-14 04:00:00,4105.258,0.0,52.73 -2015-12-14 05:00:00,4330.475,0.0,52.78 -2015-12-14 06:00:00,4876.767,0.0,52.38 -2015-12-14 07:00:00,5472.242,0.0,52.44 -2015-12-14 08:00:00,5885.383,0.0,53.14 -2015-12-14 09:00:00,6139.942,0.0,53.67 -2015-12-14 10:00:00,6262.567,0.0,54.77 -2015-12-14 11:00:00,6319.608,0.0,55.9 -2015-12-14 12:00:00,6342.975,0.0,56.87 -2015-12-14 13:00:00,6344.7,0.0,57.9 -2015-12-14 14:00:00,6316.208,0.0,58.86 -2015-12-14 15:00:00,6360.525,0.0,60.36 -2015-12-14 16:00:00,6528.233,0.0,60.41 -2015-12-14 17:00:00,6733.217,0.0,59.12 -2015-12-14 18:00:00,6607.025,0.0101,59.45 -2015-12-14 19:00:00,6427.1,0.0766,59.06 -2015-12-14 20:00:00,6245.5,0.0026,61.89 -2015-12-14 21:00:00,5984.475,0.0,61.69 -2015-12-14 22:00:00,5634.442,0.0026,61.52 -2015-12-14 23:00:00,5186.817,0.0,61.33 -2015-12-15 00:00:00,4752.45,0.0,63.05 -2015-12-15 01:00:00,4423.342,0.0,64.91 -2015-12-15 02:00:00,4243.35,0.0,64.28 -2015-12-15 03:00:00,4147.95,0.0,63.08 -2015-12-15 04:00:00,4147.558,0.0,61.82 -2015-12-15 05:00:00,4335.042,0.0,61.25 -2015-12-15 06:00:00,4909.975,0.0,60.34 -2015-12-15 07:00:00,5509.042,0.0,58.95 -2015-12-15 08:00:00,5848.167,0.0,58.64 -2015-12-15 09:00:00,6064.483,0.0,58.71 -2015-12-15 10:00:00,6156.55,0.0,59.77 -2015-12-15 11:00:00,6193.292,0.0,59.63 -2015-12-15 12:00:00,6213.15,0.0,59.07 -2015-12-15 13:00:00,6212.433,0.0,60.23 -2015-12-15 14:00:00,6201.617,0.0,59.83 -2015-12-15 15:00:00,6231.333,0.0,58.96 -2015-12-15 16:00:00,6391.8,0.0,58.17 -2015-12-15 17:00:00,6624.042,0.0,57.55 -2015-12-15 18:00:00,6503.992,0.0,55.71 -2015-12-15 19:00:00,6317.8,0.0,53.51 -2015-12-15 20:00:00,6119.875,0.0,53.86 -2015-12-15 21:00:00,5879.675,0.0,52.82 -2015-12-15 22:00:00,5530.258,0.0,52.49 -2015-12-15 23:00:00,5074.583,0.0,51.31 -2015-12-16 00:00:00,4602.933,0.0,51.68 -2015-12-16 01:00:00,4324.725,0.0,50.41 -2015-12-16 02:00:00,4176.975,0.0,49.97 -2015-12-16 03:00:00,4095.533,0.0,48.23 -2015-12-16 04:00:00,4114.492,0.0,48.05 -2015-12-16 05:00:00,4357.258,0.0,47.23 -2015-12-16 06:00:00,4925.975,0.0,45.54 -2015-12-16 07:00:00,5493.958,0.0,44.94 -2015-12-16 08:00:00,5869.167,0.0,45.09 -2015-12-16 09:00:00,6118.392,0.0,46.72 -2015-12-16 10:00:00,6173.95,0.0,48.63 -2015-12-16 11:00:00,6199.442,0.0,49.94 -2015-12-16 12:00:00,6207.683,0.0,50.65 -2015-12-16 13:00:00,6222.342,0.0,50.49 -2015-12-16 14:00:00,6215.042,0.0,50.18 -2015-12-16 15:00:00,6259.425,0.0,49.43 -2015-12-16 16:00:00,6420.867,0.0,48.78 -2015-12-16 17:00:00,6653.383,0.0,47.65 -2015-12-16 18:00:00,6532.692,0.0,47.71 -2015-12-16 19:00:00,6364.242,0.0,47.65 -2015-12-16 20:00:00,6157.358,0.0,49.35 -2015-12-16 21:00:00,5895.258,0.0,48.45 -2015-12-16 22:00:00,5575.2,0.0,48.11 -2015-12-16 23:00:00,5117.142,0.0,48.56 -2015-12-17 00:00:00,4704.008,0.0,49.05 -2015-12-17 01:00:00,4423.867,0.0,49.73 -2015-12-17 02:00:00,4229.808,0.0,50.3 -2015-12-17 03:00:00,4114.9,0.0,50.0 -2015-12-17 04:00:00,4129.1,0.0,50.48 -2015-12-17 05:00:00,4406.333,0.0,51.26 -2015-12-17 06:00:00,4937.175,0.0,51.8 -2015-12-17 07:00:00,5551.792,0.0,52.86 -2015-12-17 08:00:00,5949.625,0.0,53.13 -2015-12-17 09:00:00,6193.358,0.0,54.07 -2015-12-17 10:00:00,6333.442,0.0,55.23 -2015-12-17 11:00:00,6409.042,0.0124,56.26 -2015-12-17 12:00:00,6438.042,0.0568,56.52 -2015-12-17 13:00:00,6481.567,0.0562,55.77 -2015-12-17 14:00:00,6494.817,0.1036,56.77 -2015-12-17 15:00:00,6568.358,0.1235,57.11 -2015-12-17 16:00:00,6714.908,0.0727,56.7 -2015-12-17 17:00:00,6831.8,0.0636,56.79 -2015-12-17 18:00:00,6661.367,0.0,56.43 -2015-12-17 19:00:00,6441.708,0.0,55.56 -2015-12-17 20:00:00,6218.8,0.0,56.26 -2015-12-17 21:00:00,5937.933,0.0,55.0 -2015-12-17 22:00:00,5601.6,0.0,55.64 -2015-12-17 23:00:00,5172.133,0.0,55.09 -2015-12-18 00:00:00,4748.008,0.0,54.75 -2015-12-18 01:00:00,4402.483,0.0,54.64 -2015-12-18 02:00:00,4190.483,0.0,54.26 -2015-12-18 03:00:00,4116.508,0.0,54.17 -2015-12-18 04:00:00,4110.967,0.0,52.93 -2015-12-18 05:00:00,4397.875,0.0,51.82 -2015-12-18 06:00:00,4933.933,0.0,51.91 -2015-12-18 07:00:00,5523.508,0.0,49.6 -2015-12-18 08:00:00,5899.292,, -2015-12-18 09:00:00,6161.775,, -2015-12-18 10:00:00,6275.117,, -2015-12-18 11:00:00,6348.908,, -2015-12-18 12:00:00,6351.667,, -2015-12-18 13:00:00,6337.3,, -2015-12-18 14:00:00,6307.108,, -2015-12-18 15:00:00,6299.658,, -2015-12-18 16:00:00,6418.583,, -2015-12-18 17:00:00,6612.942,, -2015-12-18 18:00:00,6487.683,, -2015-12-18 19:00:00,6293.217,, -2015-12-18 20:00:00,6113.583,, -2015-12-18 21:00:00,5887.9,, -2015-12-18 22:00:00,5615.7,, -2015-12-18 23:00:00,5259.517,, -2015-12-19 00:00:00,4890.942,, -2015-12-19 01:00:00,4616.042,, -2015-12-19 02:00:00,4446.358,, -2015-12-19 03:00:00,4333.85,, -2015-12-19 04:00:00,4307.842,, -2015-12-19 05:00:00,4390.217,, -2015-12-19 06:00:00,4575.067,, -2015-12-19 07:00:00,4788.533,, -2015-12-19 08:00:00,5122.733,, -2015-12-19 09:00:00,5355.85,0.0,35.89 -2015-12-19 10:00:00,5536.967,0.0,37.08 -2015-12-19 11:00:00,5630.55,0.0,38.13 -2015-12-19 12:00:00,5670.667,0.0,38.83 -2015-12-19 13:00:00,5665.125,0.0,39.0 -2015-12-19 14:00:00,5696.35,0.0,39.51 -2015-12-19 15:00:00,5684.233,0.0,38.89 -2015-12-19 16:00:00,5809.492,0.0,37.95 -2015-12-19 17:00:00,6080.608,0.0,37.36 -2015-12-19 18:00:00,6111.292,0.0,37.29 -2015-12-19 19:00:00,6029.383,0.0,37.15 -2015-12-19 20:00:00,5890.758,0.0,36.3 -2015-12-19 21:00:00,5740.775,0.0,37.06 -2015-12-19 22:00:00,5543.233,0.0,36.98 -2015-12-19 23:00:00,5266.45,0.0,37.32 -2015-12-20 00:00:00,4928.3,0.0,37.21 -2015-12-20 01:00:00,4639.9,0.0,36.42 -2015-12-20 02:00:00,4475.675,0.0,36.83 -2015-12-20 03:00:00,4335.917,0.0,36.35 -2015-12-20 04:00:00,4331.633,0.0,36.11 -2015-12-20 05:00:00,4350.825,0.0,35.78 -2015-12-20 06:00:00,4472.567,0.0,34.97 -2015-12-20 07:00:00,4603.008,0.0,34.55 -2015-12-20 08:00:00,4847.625,0.0,34.79 -2015-12-20 09:00:00,5111.467,0.0,35.8 -2015-12-20 10:00:00,5277.517,0.0,38.24 -2015-12-20 11:00:00,5368.092,0.0,38.92 -2015-12-20 12:00:00,5425.458,0.0,40.76 -2015-12-20 13:00:00,5438.608,0.0,41.07 -2015-12-20 14:00:00,5436.667,0.0,42.4 -2015-12-20 15:00:00,5466.558,0.0,42.69 -2015-12-20 16:00:00,5634.092,0.0,41.57 -2015-12-20 17:00:00,5938.367,0.0,40.37 -2015-12-20 18:00:00,5992.4,0.0,39.28 -2015-12-20 19:00:00,5944.142,0.0,39.22 -2015-12-20 20:00:00,5856.458,0.0,38.66 -2015-12-20 21:00:00,5713.325,0.0,38.37 -2015-12-20 22:00:00,5440.575,0.0,37.88 -2015-12-20 23:00:00,5093.367,0.0,37.9 -2015-12-21 00:00:00,4765.317,0.0,37.54 -2015-12-21 01:00:00,4502.867,0.0,37.76 -2015-12-21 02:00:00,4338.717,0.0,38.46 -2015-12-21 03:00:00,4270.175,0.0,39.29 -2015-12-21 04:00:00,4300.433,0.0,40.01 -2015-12-21 05:00:00,4533.758,0.0,39.99 -2015-12-21 06:00:00,5061.158,0.0,40.58 -2015-12-21 07:00:00,5623.45,0.0,40.71 -2015-12-21 08:00:00,5993.4,0.0,42.04 -2015-12-21 09:00:00,6251.783,0.0,43.91 -2015-12-21 10:00:00,6334.892,0.0,45.37 -2015-12-21 11:00:00,6384.475,0.0,47.75 -2015-12-21 12:00:00,6356.692,0.0,49.25 -2015-12-21 13:00:00,6354.717,0.0,51.08 -2015-12-21 14:00:00,6350.933,0.0,51.85 -2015-12-21 15:00:00,6388.367,0.0,51.36 -2015-12-21 16:00:00,6536.325,0.0,52.14 -2015-12-21 17:00:00,6707.708,0.0,50.92 -2015-12-21 18:00:00,6550.758,0.0,50.72 -2015-12-21 19:00:00,6378.892,0.0,51.57 -2015-12-21 20:00:00,6179.042,0.0,51.92 -2015-12-21 21:00:00,5960.433,0.0,52.45 -2015-12-21 22:00:00,5629.4,0.0,53.02 -2015-12-21 23:00:00,5183.317,0.0,52.83 -2015-12-22 00:00:00,4750.408,0.0,52.69 -2015-12-22 01:00:00,4455.875,0.0,53.12 -2015-12-22 02:00:00,4290.933,0.0,52.9 -2015-12-22 03:00:00,4206.967,0.0,52.93 -2015-12-22 04:00:00,4220.575,0.0021,53.57 -2015-12-22 05:00:00,4416.608,0.0,53.07 -2015-12-22 06:00:00,4926.042,0.0,53.43 -2015-12-22 07:00:00,5503.617,0.0,52.93 -2015-12-22 08:00:00,5902.95,0.0051,54.56 -2015-12-22 09:00:00,6156.2,0.0244,54.54 -2015-12-22 10:00:00,6254.367,0.0052,55.34 -2015-12-22 11:00:00,6343.517,0.0124,56.17 -2015-12-22 12:00:00,6374.042,0.0033,56.65 -2015-12-22 13:00:00,6394.925,0.0,56.24 -2015-12-22 14:00:00,6390.783,0.0,57.02 -2015-12-22 15:00:00,6433.567,0.0,58.45 -2015-12-22 16:00:00,6548.308,0.0,58.28 -2015-12-22 17:00:00,6682.558,0.0,59.06 -2015-12-22 18:00:00,6520.583,0.0,58.64 -2015-12-22 19:00:00,6321.217,0.0,57.45 -2015-12-22 20:00:00,6101.525,0.0,58.34 -2015-12-22 21:00:00,5880.275,0.0,56.52 -2015-12-22 22:00:00,5564.65,0.0,56.33 -2015-12-22 23:00:00,5141.4,0.0,55.17 -2015-12-23 00:00:00,4736.3,0.0,54.57 -2015-12-23 01:00:00,4408.367,0.0,53.35 -2015-12-23 02:00:00,4240.475,0.0,51.76 -2015-12-23 03:00:00,4158.608,0.0,51.83 -2015-12-23 04:00:00,4171.817,0.0,51.3 -2015-12-23 05:00:00,4375.75,0.0,50.47 -2015-12-23 06:00:00,4858.617,0.0,50.14 -2015-12-23 07:00:00,5431.683,0.0,50.44 -2015-12-23 08:00:00,5829.908,0.0,51.46 -2015-12-23 09:00:00,6080.017,0.0,52.06 -2015-12-23 10:00:00,6189.725,0.0023,52.74 -2015-12-23 11:00:00,6247.667,0.0101,52.99 -2015-12-23 12:00:00,6281.508,0.0053,54.09 -2015-12-23 13:00:00,6286.008,0.0,54.82 -2015-12-23 14:00:00,6286.875,0.0024,54.7 -2015-12-23 15:00:00,6326.075,0.0242,55.1 -2015-12-23 16:00:00,6494.217,0.0732,55.47 -2015-12-23 17:00:00,6610.567,0.051,54.72 -2015-12-23 18:00:00,6473.8,0.0064,55.89 -2015-12-23 19:00:00,6278.042,0.0663,57.31 -2015-12-23 20:00:00,6096.492,0.0091,57.19 -2015-12-23 21:00:00,5864.258,0.0,58.33 -2015-12-23 22:00:00,5605.3,0.1004,58.82 -2015-12-23 23:00:00,5224.283,0.0,62.7 -2015-12-24 00:00:00,4816.467,0.0,62.26 -2015-12-24 01:00:00,4525.917,0.0,62.74 -2015-12-24 02:00:00,4336.408,0.0,63.91 -2015-12-24 03:00:00,4217.35,0.0,63.22 -2015-12-24 04:00:00,4194.275,0.0,63.84 -2015-12-24 05:00:00,4337.725,0.0,62.61 -2015-12-24 06:00:00,4746.675,0.0,61.95 -2015-12-24 07:00:00,5213.592,0.0,62.68 -2015-12-24 08:00:00,5621.175,0.0,64.99 -2015-12-24 09:00:00,5940.208,0.0,66.89 -2015-12-24 10:00:00,6071.417,0.0,67.92 -2015-12-24 11:00:00,6206.175,0.0,68.28 -2015-12-24 12:00:00,6230.983,0.0,68.82 -2015-12-24 13:00:00,6212.75,0.0,68.4 -2015-12-24 14:00:00,6168.9,0.0,68.03 -2015-12-24 15:00:00,6126.733,0.0,68.3 -2015-12-24 16:00:00,6239.525,0.0,67.62 -2015-12-24 17:00:00,6343.333,0.0,66.5 -2015-12-24 18:00:00,6158.108,0.0,65.33 -2015-12-24 19:00:00,5901.708,0.0,63.03 -2015-12-24 20:00:00,5678.875,0.0,63.43 -2015-12-24 21:00:00,5468.617,0.0,61.77 -2015-12-24 22:00:00,5241.675,0.0031,60.83 -2015-12-24 23:00:00,4980.958,0.0027,60.29 -2015-12-25 00:00:00,4718.267,0.0,58.81 -2015-12-25 01:00:00,4477.567,0.0,58.32 -2015-12-25 02:00:00,4286.35,0.0,57.95 -2015-12-25 03:00:00,4153.467,0.0,57.18 -2015-12-25 04:00:00,4086.258,0.0,57.39 -2015-12-25 05:00:00,4114.067,0.0,55.54 -2015-12-25 06:00:00,4225.308,0.0,54.78 -2015-12-25 07:00:00,4326.392,0.0,55.53 -2015-12-25 08:00:00,4502.975,0.0,55.08 -2015-12-25 09:00:00,4714.375,0.0,56.8 -2015-12-25 10:00:00,4904.292,0.0,57.6 -2015-12-25 11:00:00,5074.758,0.0,59.87 -2015-12-25 12:00:00,5138.35,0.0,60.73 -2015-12-25 13:00:00,5149.217,0.0,61.52 -2015-12-25 14:00:00,5145.292,0.0,62.39 -2015-12-25 15:00:00,5161.058,0.0,61.49 -2015-12-25 16:00:00,5308.483,0.0,61.53 -2015-12-25 17:00:00,5420.342,0.0273,60.19 -2015-12-25 18:00:00,5381.292,0.0035,59.46 -2015-12-25 19:00:00,5313.267,0.0,58.09 -2015-12-25 20:00:00,5235.992,0.0,59.35 -2015-12-25 21:00:00,5138.642,0.0,58.3 -2015-12-25 22:00:00,5006.258,0.0,57.98 -2015-12-25 23:00:00,4757.392,0.0,58.55 -2015-12-26 00:00:00,4509.775,0.0,57.08 -2015-12-26 01:00:00,4266.075,0.0,55.89 -2015-12-26 02:00:00,4114.1,0.0,53.81 -2015-12-26 03:00:00,4011.283,0.0,53.27 -2015-12-26 04:00:00,3978.75,0.0,52.45 -2015-12-26 05:00:00,4028.75,0.0,51.5 -2015-12-26 06:00:00,4187.242,0.0,51.38 -2015-12-26 07:00:00,4362.192,0.0,49.67 -2015-12-26 08:00:00,4598.192,0.0,49.36 -2015-12-26 09:00:00,4829.625,0.0,49.43 -2015-12-26 10:00:00,5030.35,0.0,50.58 -2015-12-26 11:00:00,5161.408,0.0,50.48 -2015-12-26 12:00:00,5210.675,0.0,50.56 -2015-12-26 13:00:00,5217.95,0.0,50.47 -2015-12-26 14:00:00,5235.75,0.0,50.95 -2015-12-26 15:00:00,5270.092,0.0,49.42 -2015-12-26 16:00:00,5382.342,0.0,49.53 -2015-12-26 17:00:00,5602.9,0.0,49.35 -2015-12-26 18:00:00,5608.25,0.0,49.4 -2015-12-26 19:00:00,5546.45,0.0,49.17 -2015-12-26 20:00:00,5427.783,0.0,49.28 -2015-12-26 21:00:00,5321.442,0.0,49.19 -2015-12-26 22:00:00,5123.567,0.0,49.41 -2015-12-26 23:00:00,4872.792,0.0,49.14 -2015-12-27 00:00:00,4600.767,0.062,48.43 -2015-12-27 01:00:00,4370.017,0.0,47.63 -2015-12-27 02:00:00,4195.458,0.0,46.7 -2015-12-27 03:00:00,4100.292,0.0,47.04 -2015-12-27 04:00:00,4055.225,0.0,48.08 -2015-12-27 05:00:00,4086.375,0.0,48.06 -2015-12-27 06:00:00,4196.183,0.0,48.08 -2015-12-27 07:00:00,4307.05,0.0,48.72 -2015-12-27 08:00:00,4504.492,, -2015-12-27 09:00:00,4737.292,, -2015-12-27 10:00:00,4978.083,0.0,52.62 -2015-12-27 11:00:00,5122.808,0.0,54.6 -2015-12-27 12:00:00,5180.517,0.0,55.08 -2015-12-27 13:00:00,5213.542,0.0,56.1 -2015-12-27 14:00:00,5237.092,0.0,58.02 -2015-12-27 15:00:00,5269.758,0.0,58.34 -2015-12-27 16:00:00,5440.617,0.0,59.33 -2015-12-27 17:00:00,5636.333,0.0,59.06 -2015-12-27 18:00:00,5658.642,0.0,59.59 -2015-12-27 19:00:00,5586.508,0.0021,57.6 -2015-12-27 20:00:00,5474.875,0.0476,56.36 -2015-12-27 21:00:00,5366.458,, -2015-12-27 22:00:00,5140.908,, -2015-12-27 23:00:00,4834.617,, -2015-12-28 00:00:00,4518.067,, -2015-12-28 01:00:00,4292.383,, -2015-12-28 02:00:00,4157.442,, -2015-12-28 03:00:00,4099.858,, -2015-12-28 04:00:00,4122.158,, -2015-12-28 05:00:00,4335.375,, -2015-12-28 06:00:00,4748.483,, -2015-12-28 07:00:00,5216.817,, -2015-12-28 08:00:00,5595.858,, -2015-12-28 09:00:00,5876.342,, -2015-12-28 10:00:00,5994.425,, -2015-12-28 11:00:00,6069.108,, -2015-12-28 12:00:00,6100.025,, -2015-12-28 13:00:00,6132.442,, -2015-12-28 14:00:00,6143.917,, -2015-12-28 15:00:00,6205.683,, -2015-12-28 16:00:00,6371.85,, -2015-12-28 17:00:00,6577.758,, -2015-12-28 18:00:00,6464.025,, -2015-12-28 19:00:00,6298.625,, -2015-12-28 20:00:00,6121.558,, -2015-12-28 21:00:00,5919.6,, -2015-12-28 22:00:00,5642.175,, -2015-12-28 23:00:00,5254.658,, -2015-12-29 00:00:00,4882.692,, -2015-12-29 01:00:00,4629.767,, -2015-12-29 02:00:00,4455.2,, -2015-12-29 03:00:00,4386.425,, -2015-12-29 04:00:00,4386.992,, -2015-12-29 05:00:00,4558.392,, -2015-12-29 06:00:00,4932.883,, -2015-12-29 07:00:00,5389.975,, -2015-12-29 08:00:00,5784.442,, -2015-12-29 09:00:00,6072.792,, -2015-12-29 10:00:00,6249.725,, -2015-12-29 11:00:00,6312.9,, -2015-12-29 12:00:00,6330.808,, -2015-12-29 13:00:00,6340.692,, -2015-12-29 14:00:00,6332.817,, -2015-12-29 15:00:00,6338.433,, -2015-12-29 16:00:00,6454.167,, -2015-12-29 17:00:00,6595.433,0.0,40.65 -2015-12-29 18:00:00,6455.95,0.0,40.42 -2015-12-29 19:00:00,6275.642,0.0,40.4 -2015-12-29 20:00:00,6077.792,0.0,40.34 -2015-12-29 21:00:00,5884.958,0.0,40.68 -2015-12-29 22:00:00,5574.458,0.0,40.31 -2015-12-29 23:00:00,5208.85,0.0,40.03 -2015-12-30 00:00:00,4801.6,0.0,39.55 -2015-12-30 01:00:00,4545.525,0.0,39.61 -2015-12-30 02:00:00,4377.867,0.0,38.91 -2015-12-30 03:00:00,4306.0,0.0,39.2 -2015-12-30 04:00:00,4314.65,0.0,38.95 -2015-12-30 05:00:00,4488.1,0.0,40.35 -2015-12-30 06:00:00,4892.675,0.0,39.92 -2015-12-30 07:00:00,5349.675,0.0,39.78 -2015-12-30 08:00:00,5740.492,0.0,40.45 -2015-12-30 09:00:00,5995.85,0.0,41.25 -2015-12-30 10:00:00,6176.733,0.0,42.0 -2015-12-30 11:00:00,6269.892,0.0,42.19 -2015-12-30 12:00:00,6287.208,0.0,42.76 -2015-12-30 13:00:00,6315.325,0.0,43.35 -2015-12-30 14:00:00,6305.533,0.0,43.29 -2015-12-30 15:00:00,6306.2,0.0,44.05 -2015-12-30 16:00:00,6427.7,0.0,44.01 -2015-12-30 17:00:00,6568.833,0.0,44.51 -2015-12-30 18:00:00,6412.325,0.0,45.24 -2015-12-30 19:00:00,6254.292,0.0,45.14 -2015-12-30 20:00:00,6049.233,0.0,46.22 -2015-12-30 21:00:00,5847.008,0.0,46.64 -2015-12-30 22:00:00,5563.1,0.0872,47.21 -2015-12-30 23:00:00,5210.767,0.0258,47.24 -2015-12-31 00:00:00,4834.95,0.0,46.2 -2015-12-31 01:00:00,4561.633,0.0,45.83 -2015-12-31 02:00:00,4368.8,0.0,44.82 -2015-12-31 03:00:00,4271.167,0.0,44.37 -2015-12-31 04:00:00,4251.275,, -2015-12-31 05:00:00,4422.367,0.0,44.32 -2015-12-31 06:00:00,4806.608,, -2015-12-31 07:00:00,5180.683,, -2015-12-31 08:00:00,5546.95,, -2015-12-31 09:00:00,5807.967,, -2015-12-31 10:00:00,5942.417,, -2015-12-31 11:00:00,6001.108,, -2015-12-31 12:00:00,6028.4,, -2015-12-31 13:00:00,6030.783,, -2015-12-31 14:00:00,5997.375,, -2015-12-31 15:00:00,5994.908,, -2015-12-31 16:00:00,6131.45,, -2015-12-31 17:00:00,6334.158,, -2015-12-31 18:00:00,6229.05,, -2015-12-31 19:00:00,6040.733,, -2015-12-31 20:00:00,5825.708,, -2015-12-31 21:00:00,5597.692,, -2015-12-31 22:00:00,5357.983,, -2015-12-31 23:00:00,5130.992,, -2016-01-01 00:00:00,4919.758,, -2016-01-01 01:00:00,4737.992,, -2016-01-01 02:00:00,4533.225,, -2016-01-01 03:00:00,4388.15,, -2016-01-01 04:00:00,4294.242,, -2016-01-01 05:00:00,4304.142,, -2016-01-01 06:00:00,4394.633,, -2016-01-01 07:00:00,4464.192,, -2016-01-01 08:00:00,4585.0,, -2016-01-01 09:00:00,4770.475,, -2016-01-01 10:00:00,4949.408,, -2016-01-01 11:00:00,5077.617,, -2016-01-01 12:00:00,5199.642,, -2016-01-01 13:00:00,5243.775,, -2016-01-01 14:00:00,5337.817,, -2016-01-01 15:00:00,5383.217,, -2016-01-01 16:00:00,5483.092,, -2016-01-01 17:00:00,5716.517,0.0,37.79 -2016-01-01 18:00:00,5754.033,, -2016-01-01 19:00:00,5709.342,, -2016-01-01 20:00:00,5618.683,, -2016-01-01 21:00:00,5515.267,, -2016-01-01 22:00:00,5348.858,, -2016-01-01 23:00:00,5102.35,, -2016-01-02 00:00:00,4836.967,,34.44 -2016-01-02 01:00:00,4613.692,,33.79 -2016-01-02 02:00:00,4448.508,0.0,33.13 -2016-01-02 03:00:00,4341.0,,33.11 -2016-01-02 04:00:00,4307.542,,33.11 -2016-01-02 05:00:00,4358.2,,32.44 -2016-01-02 06:00:00,4510.092,,32.44 -2016-01-02 07:00:00,4671.233,,31.98 -2016-01-02 08:00:00,4905.508,,33.24 -2016-01-02 09:00:00,5165.608,,34.11 -2016-01-02 10:00:00,5345.25,,35.54 -2016-01-02 11:00:00,5458.592,,37.23 -2016-01-02 12:00:00,5485.642,,37.79 -2016-01-02 13:00:00,5460.733,,39.05 -2016-01-02 14:00:00,5457.033,,39.61 -2016-01-02 15:00:00,5456.65,,39.79 -2016-01-02 16:00:00,5594.483,,39.27 -2016-01-02 17:00:00,5867.483,,39.21 -2016-01-02 18:00:00,5913.392,,36.81 -2016-01-02 19:00:00,5856.733,,36.1 -2016-01-02 20:00:00,5759.775,,35.16 -2016-01-02 21:00:00,5636.825,,34.69 -2016-01-02 22:00:00,5447.008,,34.2 -2016-01-02 23:00:00,5200.45,,34.2 -2016-01-03 00:00:00,4919.133,,34.61 -2016-01-03 01:00:00,4665.958,,34.45 -2016-01-03 02:00:00,4475.617,,34.37 -2016-01-03 03:00:00,4367.175,,33.76 -2016-01-03 04:00:00,4321.017,,33.81 -2016-01-03 05:00:00,4350.025,,33.37 -2016-01-03 06:00:00,4445.733,,33.06 -2016-01-03 07:00:00,4557.15,,33.52 -2016-01-03 08:00:00,4761.15,,34.39 -2016-01-03 09:00:00,4964.842,,36.78 -2016-01-03 10:00:00,5141.483,,40.18 -2016-01-03 11:00:00,5275.542,,42.64 -2016-01-03 12:00:00,5325.967,,43.76 -2016-01-03 13:00:00,5364.8,,44.25 -2016-01-03 14:00:00,5392.808,,43.66 -2016-01-03 15:00:00,5425.408,,42.46 -2016-01-03 16:00:00,5573.592,,41.09 -2016-01-03 17:00:00,5873.0,,40.68 -2016-01-03 18:00:00,5952.883,,39.72 -2016-01-03 19:00:00,5919.267,,38.67 -2016-01-03 20:00:00,5854.375,,37.93 -2016-01-03 21:00:00,5674.533,0.0,36.58 -2016-01-03 22:00:00,5417.075,0.0,35.62 -2016-01-03 23:00:00,5074.258,0.0,34.75 -2016-01-04 00:00:00,4762.45,0.0,34.56 -2016-01-04 01:00:00,4542.442,0.0,34.35 -2016-01-04 02:00:00,4396.592,0.0,34.8 -2016-01-04 03:00:00,4364.608,0.0,34.28 -2016-01-04 04:00:00,4395.217,0.0,33.8 -2016-01-04 05:00:00,4639.392,0.0,31.76 -2016-01-04 06:00:00,5190.692,0.0,30.59 -2016-01-04 07:00:00,5792.7,0.0,29.34 -2016-01-04 08:00:00,6166.608,0.0,28.43 -2016-01-04 09:00:00,6444.508,0.0,28.63 -2016-01-04 10:00:00,6537.067,0.0,28.58 -2016-01-04 11:00:00,6568.5,0.0,29.7 -2016-01-04 12:00:00,6603.108,0.0,30.31 -2016-01-04 13:00:00,6611.642,0.0,29.42 -2016-01-04 14:00:00,6619.842,0.0,29.25 -2016-01-04 15:00:00,6678.2,0.0,27.24 -2016-01-04 16:00:00,6860.875,0.0,25.78 -2016-01-04 17:00:00,7148.167,0.0,22.07 -2016-01-04 18:00:00,7124.95,0.0,20.75 -2016-01-04 19:00:00,7011.942,0.0,19.17 -2016-01-04 20:00:00,6842.425,0.0,17.69 -2016-01-04 21:00:00,6622.275,0.0,16.41 -2016-01-04 22:00:00,6279.925,0.0,15.29 -2016-01-04 23:00:00,5850.083,0.0,14.37 -2016-01-05 00:00:00,5444.867,0.0,13.7 -2016-01-05 01:00:00,5213.608,0.0,13.17 -2016-01-05 02:00:00,5065.717,0.0,11.62 -2016-01-05 03:00:00,4989.058,0.0,11.62 -2016-01-05 04:00:00,5037.125,0.0,12.03 -2016-01-05 05:00:00,5258.333,0.0,11.53 -2016-01-05 06:00:00,5747.658,0.0,11.18 -2016-01-05 07:00:00,6316.225,0.0,11.34 -2016-01-05 08:00:00,6664.967,0.0,13.53 -2016-01-05 09:00:00,6910.392,0.0,15.04 -2016-01-05 10:00:00,7015.275,0.0,17.93 -2016-01-05 11:00:00,7023.817,0.0,20.91 -2016-01-05 12:00:00,7015.45,0.0,24.05 -2016-01-05 13:00:00,7003.783,0.0,25.68 -2016-01-05 14:00:00,6968.833,0.0,27.27 -2016-01-05 15:00:00,6990.45,0.0,29.19 -2016-01-05 16:00:00,7086.467,0.0,27.58 -2016-01-05 17:00:00,7288.283,0.0,26.76 -2016-01-05 18:00:00,7208.492,0.0,24.64 -2016-01-05 19:00:00,7058.092,0.0,24.37 -2016-01-05 20:00:00,6858.767,0.0,25.1 -2016-01-05 21:00:00,6598.292,0.0,23.77 -2016-01-05 22:00:00,6219.592,0.0,24.21 -2016-01-05 23:00:00,5759.042,0.0,24.75 -2016-01-06 00:00:00,5343.358,0.0,25.88 -2016-01-06 01:00:00,5087.542,0.0,25.42 -2016-01-06 02:00:00,4923.1,0.0,22.53 -2016-01-06 03:00:00,4856.233,0.0,22.09 -2016-01-06 04:00:00,4871.167,0.0,22.22 -2016-01-06 05:00:00,5100.983,0.0,22.83 -2016-01-06 06:00:00,5607.817,0.0,22.49 -2016-01-06 07:00:00,6175.292,0.0,22.18 -2016-01-06 08:00:00,6497.458,0.0,24.46 -2016-01-06 09:00:00,6683.767,0.0,27.23 -2016-01-06 10:00:00,6757.017,0.0,31.9 -2016-01-06 11:00:00,6755.5,0.0,34.47 -2016-01-06 12:00:00,6732.175,0.0,37.27 -2016-01-06 13:00:00,6687.083,0.0,39.61 -2016-01-06 14:00:00,6655.867,0.0,40.52 -2016-01-06 15:00:00,6676.233,0.0,39.63 -2016-01-06 16:00:00,6782.575,0.0,38.13 -2016-01-06 17:00:00,7023.483,0.0,35.69 -2016-01-06 18:00:00,6916.492,0.0,33.94 -2016-01-06 19:00:00,6757.533,0.0,33.37 -2016-01-06 20:00:00,6554.233,0.0,35.71 -2016-01-06 21:00:00,6317.45,0.0,33.12 -2016-01-06 22:00:00,5946.892,0.0,34.3 -2016-01-06 23:00:00,5510.075,0.0,32.69 -2016-01-07 00:00:00,5108.092,0.0,31.17 -2016-01-07 01:00:00,4837.875,0.0,32.27 -2016-01-07 02:00:00,4691.842,0.0,30.07 -2016-01-07 03:00:00,4627.792,0.0,30.16 -2016-01-07 04:00:00,4651.258,0.0,28.24 -2016-01-07 05:00:00,4879.875,0.0,28.26 -2016-01-07 06:00:00,5406.392,0.0,27.76 -2016-01-07 07:00:00,5988.842,0.0,28.83 -2016-01-07 08:00:00,6285.117,0.0,31.69 -2016-01-07 09:00:00,6468.375,0.0,33.67 -2016-01-07 10:00:00,6551.892,0.0,37.16 -2016-01-07 11:00:00,6536.167,0.0,41.63 -2016-01-07 12:00:00,6546.175,0.0,43.56 -2016-01-07 13:00:00,6524.767,0.0,45.0 -2016-01-07 14:00:00,6510.258,0.0,44.11 -2016-01-07 15:00:00,6530.6,0.0,43.83 -2016-01-07 16:00:00,6624.142,0.0,43.44 -2016-01-07 17:00:00,6834.692,0.0,42.8 -2016-01-07 18:00:00,6722.45,0.0,41.35 -2016-01-07 19:00:00,6537.267,0.0,40.43 -2016-01-07 20:00:00,6326.783,0.0,40.15 -2016-01-07 21:00:00,6097.6,0.0,38.97 -2016-01-07 22:00:00,5741.4,0.0,36.67 -2016-01-07 23:00:00,5329.167,0.0,35.29 -2016-01-08 00:00:00,4927.2,0.0,35.56 -2016-01-08 01:00:00,4684.658,0.0,35.92 -2016-01-08 02:00:00,4541.225,0.0,33.81 -2016-01-08 03:00:00,4447.658,0.0,33.75 -2016-01-08 04:00:00,4456.333,0.0,33.04 -2016-01-08 05:00:00,4749.875,0.0,32.38 -2016-01-08 06:00:00,5285.658,0.0,32.08 -2016-01-08 07:00:00,5855.808,0.0,31.56 -2016-01-08 08:00:00,6180.05,0.0,32.9 -2016-01-08 09:00:00,6388.033,0.0,36.26 -2016-01-08 10:00:00,6472.558,0.0,38.99 -2016-01-08 11:00:00,6489.025,0.0,40.6 -2016-01-08 12:00:00,6481.7,0.0,42.3 -2016-01-08 13:00:00,6465.0,0.0,42.62 -2016-01-08 14:00:00,6439.75,0.0,43.02 -2016-01-08 15:00:00,6486.5,0.0,42.67 -2016-01-08 16:00:00,6610.317,0.0,42.13 -2016-01-08 17:00:00,6733.083,0.0,42.29 -2016-01-08 18:00:00,6590.758,0.0,42.88 -2016-01-08 19:00:00,6387.558,0.0,41.95 -2016-01-08 20:00:00,6148.925,0.0,43.03 -2016-01-08 21:00:00,5925.517,0.0,42.71 -2016-01-08 22:00:00,5646.017,0.0,42.12 -2016-01-08 23:00:00,5274.633,0.0,40.77 -2016-01-09 00:00:00,4889.258,0.0,41.08 -2016-01-09 01:00:00,4557.583,0.0,40.93 -2016-01-09 02:00:00,4396.5,0.0,40.31 -2016-01-09 03:00:00,4347.3,0.0,40.58 -2016-01-09 04:00:00,4336.325,0.0,39.71 -2016-01-09 05:00:00,4457.792,0.0,39.77 -2016-01-09 06:00:00,4613.325,0.0,39.82 -2016-01-09 07:00:00,4836.733,0.0,40.5 -2016-01-09 08:00:00,5102.683,0.0,41.48 -2016-01-09 09:00:00,5362.125,0.0,43.57 -2016-01-09 10:00:00,5561.958,0.0,43.91 -2016-01-09 11:00:00,5692.0,0.0,45.19 -2016-01-09 12:00:00,5739.742,0.0,45.45 -2016-01-09 13:00:00,5713.45,0.0,46.0 -2016-01-09 14:00:00,5686.408,0.0,46.51 -2016-01-09 15:00:00,5706.842,0.0,47.31 -2016-01-09 16:00:00,5783.2,0.0,45.55 -2016-01-09 17:00:00,5939.892,0.0,44.9 -2016-01-09 18:00:00,5936.342,0.0,45.56 -2016-01-09 19:00:00,5864.533,0.0,45.7 -2016-01-09 20:00:00,5704.675,0.0,45.57 -2016-01-09 21:00:00,5571.333,0.0,46.35 -2016-01-09 22:00:00,5385.525,0.0,46.12 -2016-01-09 23:00:00,5134.75,0.0,46.06 -2016-01-10 00:00:00,4842.317,0.0,46.21 -2016-01-10 01:00:00,4581.308,0.0,46.45 -2016-01-10 02:00:00,4415.7,0.004,46.61 -2016-01-10 03:00:00,4314.225,0.1391,46.54 -2016-01-10 04:00:00,4277.483,0.3888,46.18 -2016-01-10 05:00:00,4335.542,0.0751,46.67 -2016-01-10 06:00:00,4447.283,0.0946,47.57 -2016-01-10 07:00:00,4605.217,0.0647,48.74 -2016-01-10 08:00:00,4836.35,0.0042,50.17 -2016-01-10 09:00:00,5081.283,0.0,53.25 -2016-01-10 10:00:00,5314.858,0.0249,56.77 -2016-01-10 11:00:00,5466.067,0.0026,57.77 -2016-01-10 12:00:00,5545.792,0.0,57.62 -2016-01-10 13:00:00,5539.3,0.0,57.66 -2016-01-10 14:00:00,5518.292,0.0,57.99 -2016-01-10 15:00:00,5529.683,0.049,57.5 -2016-01-10 16:00:00,5635.933,0.0,55.31 -2016-01-10 17:00:00,5816.892,0.0,54.33 -2016-01-10 18:00:00,5889.892,0.0,54.27 -2016-01-10 19:00:00,5836.433,0.0,52.5 -2016-01-10 20:00:00,5741.117,0.0,49.29 -2016-01-10 21:00:00,5586.883,0.0,46.12 -2016-01-10 22:00:00,5333.075,0.0,41.33 -2016-01-10 23:00:00,5017.2,0.0,39.07 -2016-01-11 00:00:00,4736.717,0.0,39.74 -2016-01-11 01:00:00,4541.85,0.0,37.26 -2016-01-11 02:00:00,4392.767,0.0,36.39 -2016-01-11 03:00:00,4310.092,0.0,35.34 -2016-01-11 04:00:00,4393.342,0.0,33.02 -2016-01-11 05:00:00,4692.092,0.0,32.34 -2016-01-11 06:00:00,5225.975,0.0,31.51 -2016-01-11 07:00:00,5872.533,0.0,31.39 -2016-01-11 08:00:00,6222.342,0.0,30.52 -2016-01-11 09:00:00,6436.133,0.0,31.55 -2016-01-11 10:00:00,6543.092,0.0,32.39 -2016-01-11 11:00:00,6593.575,0.0,33.28 -2016-01-11 12:00:00,6600.2,0.0,32.54 -2016-01-11 13:00:00,6593.483,0.0,32.71 -2016-01-11 14:00:00,6562.95,0.0,33.4 -2016-01-11 15:00:00,6600.183,0.0,33.31 -2016-01-11 16:00:00,6720.533,0.0,32.43 -2016-01-11 17:00:00,6974.425,0.0,31.4 -2016-01-11 18:00:00,6908.875,0.0,30.25 -2016-01-11 19:00:00,6766.492,0.0,29.04 -2016-01-11 20:00:00,6584.083,0.0,28.74 -2016-01-11 21:00:00,6326.4,0.0,27.9 -2016-01-11 22:00:00,5967.508,0.0,27.86 -2016-01-11 23:00:00,5543.15,0.0,26.46 -2016-01-12 00:00:00,5157.575,0.0,26.32 -2016-01-12 01:00:00,4837.817,0.0,25.52 -2016-01-12 02:00:00,4662.733,0.0,24.78 -2016-01-12 03:00:00,4589.992,0.0,24.71 -2016-01-12 04:00:00,4643.85,0.0,25.3 -2016-01-12 05:00:00,4917.067,0.0,25.38 -2016-01-12 06:00:00,5450.258,0.0,24.77 -2016-01-12 07:00:00,6037.283,0.0,26.32 -2016-01-12 08:00:00,6353.025,0.0,27.93 -2016-01-12 09:00:00,6554.967,0.0,30.55 -2016-01-12 10:00:00,6618.967,0.0032,34.35 -2016-01-12 11:00:00,6658.65,0.0029,38.87 -2016-01-12 12:00:00,6672.15,0.0032,41.58 -2016-01-12 13:00:00,6648.158,0.0024,41.76 -2016-01-12 14:00:00,6645.358,0.0159,42.97 -2016-01-12 15:00:00,6693.292,0.007,43.08 -2016-01-12 16:00:00,6820.0,0.0069,41.22 -2016-01-12 17:00:00,6983.5,0.0,39.78 -2016-01-12 18:00:00,6846.2,0.0,35.42 -2016-01-12 19:00:00,6661.708,0.0,35.27 -2016-01-12 20:00:00,6426.475,0.0036,36.85 -2016-01-12 21:00:00,6218.442,0.0,36.03 -2016-01-12 22:00:00,5904.383,0.0,34.51 -2016-01-12 23:00:00,5514.567,0.0,30.57 -2016-01-13 00:00:00,5148.567,0.0,29.83 -2016-01-13 01:00:00,4921.683,0.0,26.23 -2016-01-13 02:00:00,4782.55,0.0,25.97 -2016-01-13 03:00:00,4728.825,0.0,24.63 -2016-01-13 04:00:00,4746.458,0.0,23.8 -2016-01-13 05:00:00,4992.192,0.0,22.93 -2016-01-13 06:00:00,5554.133,0.0,22.6 -2016-01-13 07:00:00,6139.442,0.0,21.31 -2016-01-13 08:00:00,6503.492,0.0,22.65 -2016-01-13 09:00:00,6720.875,0.0,24.45 -2016-01-13 10:00:00,6825.725,0.0,25.93 -2016-01-13 11:00:00,6855.242,0.0,27.11 -2016-01-13 12:00:00,6856.8,0.0,28.73 -2016-01-13 13:00:00,6844.908,0.0,28.4 -2016-01-13 14:00:00,6813.158,0.0,28.8 -2016-01-13 15:00:00,6825.933,0.0,28.49 -2016-01-13 16:00:00,6966.767,0.0,28.07 -2016-01-13 17:00:00,7196.533,0.0,26.42 -2016-01-13 18:00:00,7135.692,0.0,26.24 -2016-01-13 19:00:00,6982.133,0.0,24.86 -2016-01-13 20:00:00,6783.458,0.0,24.06 -2016-01-13 21:00:00,6530.375,0.0,23.51 -2016-01-13 22:00:00,6157.817,0.0,23.61 -2016-01-13 23:00:00,5734.683,0.0,23.68 -2016-01-14 00:00:00,5336.842,0.0,23.01 -2016-01-14 01:00:00,5058.983,0.0,22.89 -2016-01-14 02:00:00,4888.408,0.0,22.82 -2016-01-14 03:00:00,4806.733,0.0,23.08 -2016-01-14 04:00:00,4825.533,0.0,23.46 -2016-01-14 05:00:00,5056.908,0.0,23.53 -2016-01-14 06:00:00,5617.9,0.0,24.36 -2016-01-14 07:00:00,6201.842,0.0085,24.2 -2016-01-14 08:00:00,6517.642,0.0,25.92 -2016-01-14 09:00:00,6739.083,0.0,27.01 -2016-01-14 10:00:00,6805.567,0.0,28.74 -2016-01-14 11:00:00,6846.275,0.0,30.96 -2016-01-14 12:00:00,6817.9,0.0,33.05 -2016-01-14 13:00:00,6799.392,0.0,34.07 -2016-01-14 14:00:00,6741.967,0.0,35.85 -2016-01-14 15:00:00,6772.292,0.0,36.27 -2016-01-14 16:00:00,6906.133,0.0,36.05 -2016-01-14 17:00:00,7042.767,0.0,36.08 -2016-01-14 18:00:00,6920.567,0.0,36.86 -2016-01-14 19:00:00,6704.95,0.0,36.35 -2016-01-14 20:00:00,6475.4,0.0,36.42 -2016-01-14 21:00:00,6235.1,0.0,35.99 -2016-01-14 22:00:00,5879.325,0.0,34.53 -2016-01-14 23:00:00,5440.708,0.0,35.11 -2016-01-15 00:00:00,5060.125,0.0,34.2 -2016-01-15 01:00:00,4803.333,0.0,34.16 -2016-01-15 02:00:00,4644.592,0.0,34.03 -2016-01-15 03:00:00,4583.858,0.0,33.18 -2016-01-15 04:00:00,4602.417,0.0,33.02 -2016-01-15 05:00:00,4793.691,0.0,33.06 -2016-01-15 06:00:00,5331.1,0.0,34.05 -2016-01-15 07:00:00,5884.642,0.0,34.96 -2016-01-15 08:00:00,6222.575,0.0,36.5 -2016-01-15 09:00:00,6414.6,0.0,38.65 -2016-01-15 10:00:00,6485.492,0.0,40.77 -2016-01-15 11:00:00,6497.858,0.0,43.26 -2016-01-15 12:00:00,6471.875,0.0,45.86 -2016-01-15 13:00:00,6435.925,0.0,47.53 -2016-01-15 14:00:00,6416.842,0.0,48.06 -2016-01-15 15:00:00,6433.267,0.0,48.28 -2016-01-15 16:00:00,6541.808,0.0,46.01 -2016-01-15 17:00:00,6678.758,0.0,45.26 -2016-01-15 18:00:00,6524.7,0.0,45.33 -2016-01-15 19:00:00,6306.425,0.0,44.0 -2016-01-15 20:00:00,6083.933,0.0026,45.89 -2016-01-15 21:00:00,5846.142,0.0064,44.98 -2016-01-15 22:00:00,5545.508,0.0024,44.76 -2016-01-15 23:00:00,5213.967,0.0022,44.39 -2016-01-16 00:00:00,4857.867,0.0077,44.45 -2016-01-16 01:00:00,4624.117,0.1579,44.25 -2016-01-16 02:00:00,4480.008,0.0843,43.16 -2016-01-16 03:00:00,4394.65,0.0123,41.75 -2016-01-16 04:00:00,4345.017,0.0224,41.24 -2016-01-16 05:00:00,4394.442,0.0,42.5 -2016-01-16 06:00:00,4555.125,0.0162,42.3 -2016-01-16 07:00:00,4760.458,0.0039,41.76 -2016-01-16 08:00:00,5057.217,0.0,41.45 -2016-01-16 09:00:00,5318.492,0.0021,42.77 -2016-01-16 10:00:00,5479.275,0.0,44.17 -2016-01-16 11:00:00,5581.725,0.0,45.11 -2016-01-16 12:00:00,5576.792,0.0,48.14 -2016-01-16 13:00:00,5554.583,0.0,48.98 -2016-01-16 14:00:00,5514.858,0.0,50.3 -2016-01-16 15:00:00,5526.142,0.0,49.15 -2016-01-16 16:00:00,5634.233,0.0,48.88 -2016-01-16 17:00:00,5825.425,0.0,47.44 -2016-01-16 18:00:00,5855.0,0.0,45.6 -2016-01-16 19:00:00,5778.467,0.0,42.79 -2016-01-16 20:00:00,5658.1,0.0,43.9 -2016-01-16 21:00:00,5508.833,0.0,43.85 -2016-01-16 22:00:00,5322.792,0.0,42.81 -2016-01-16 23:00:00,5088.433,0.0,40.51 -2016-01-17 00:00:00,4801.583,0.0,39.67 -2016-01-17 01:00:00,4578.65,0.0,40.5 -2016-01-17 02:00:00,4406.858,0.0,38.51 -2016-01-17 03:00:00,4344.425,0.0,37.68 -2016-01-17 04:00:00,4278.0,0.0,37.34 -2016-01-17 05:00:00,4329.95,0.0,35.27 -2016-01-17 06:00:00,4456.717,0.0,34.36 -2016-01-17 07:00:00,4593.742,0.0,33.94 -2016-01-17 08:00:00,4853.292,0.0,34.03 -2016-01-17 09:00:00,5126.35,0.0,35.07 -2016-01-17 10:00:00,5392.025,0.0,34.94 -2016-01-17 11:00:00,5565.892,0.0,35.99 -2016-01-17 12:00:00,5658.525,0.0,35.38 -2016-01-17 13:00:00,5700.158,0.0048,34.15 -2016-01-17 14:00:00,5719.017,0.0067,34.71 -2016-01-17 15:00:00,5767.317,0.009,34.41 -2016-01-17 16:00:00,5868.242,0.0091,32.31 -2016-01-17 17:00:00,6057.958,0.0076,30.94 -2016-01-17 18:00:00,6098.808,0.0,30.62 -2016-01-17 19:00:00,6033.392,0.0,29.99 -2016-01-17 20:00:00,5917.817,0.0,30.61 -2016-01-17 21:00:00,5775.825,0.0,30.38 -2016-01-17 22:00:00,5568.342,0.0,29.66 -2016-01-17 23:00:00,5269.65,0.0,29.31 -2016-01-18 00:00:00,4980.767,0.0,30.54 -2016-01-18 01:00:00,4767.333,0.0,30.47 -2016-01-18 02:00:00,4626.858,0.0,29.48 -2016-01-18 03:00:00,4558.317,0.0,30.01 -2016-01-18 04:00:00,4581.225,0.0,29.39 -2016-01-18 05:00:00,4765.05,0.0,27.53 -2016-01-18 06:00:00,5113.517,0.0,25.81 -2016-01-18 07:00:00,5498.542,0.0,23.25 -2016-01-18 08:00:00,5876.208,0.0,23.16 -2016-01-18 09:00:00,6176.958,0.0,24.44 -2016-01-18 10:00:00,6356.942,0.0,24.49 -2016-01-18 11:00:00,6446.833,0.0,26.13 -2016-01-18 12:00:00,6491.958,0.0,27.01 -2016-01-18 13:00:00,6501.542,0.0,28.43 -2016-01-18 14:00:00,6520.8,0.0,27.01 -2016-01-18 15:00:00,6570.167,0.0,26.12 -2016-01-18 16:00:00,6693.342,0.0,25.08 -2016-01-18 17:00:00,6970.383,0.0,22.7 -2016-01-18 18:00:00,7012.95,0.0,22.14 -2016-01-18 19:00:00,6889.167,0.0,21.64 -2016-01-18 20:00:00,6741.05,0.0,21.16 -2016-01-18 21:00:00,6505.017,0.0,19.73 -2016-01-18 22:00:00,6189.975,0.0,19.15 -2016-01-18 23:00:00,5781.392,0.0,18.46 -2016-01-19 00:00:00,5419.458,0.0,18.21 -2016-01-19 01:00:00,5208.958,0.0,17.95 -2016-01-19 02:00:00,5083.975,0.0,17.74 -2016-01-19 03:00:00,5025.308,0.0,16.79 -2016-01-19 04:00:00,5056.667,0.0,16.36 -2016-01-19 05:00:00,5274.317,0.0,16.55 -2016-01-19 06:00:00,5811.7,0.0,16.82 -2016-01-19 07:00:00,6401.692,0.0,16.96 -2016-01-19 08:00:00,6745.875,0.0,17.96 -2016-01-19 09:00:00,6970.0,0.0,19.37 -2016-01-19 10:00:00,7071.025,0.0,21.96 -2016-01-19 11:00:00,7107.117,0.0,24.15 -2016-01-19 12:00:00,7094.992,0.0,25.41 -2016-01-19 13:00:00,7073.358,0.0,25.91 -2016-01-19 14:00:00,7046.133,0.0,27.51 -2016-01-19 15:00:00,7057.342,0.0,28.26 -2016-01-19 16:00:00,7140.6,0.0,27.72 -2016-01-19 17:00:00,7348.092,0.0,27.21 -2016-01-19 18:00:00,7294.783,0.0,26.04 -2016-01-19 19:00:00,7120.975,0.0,25.98 -2016-01-19 20:00:00,6924.133,0.0,26.21 -2016-01-19 21:00:00,6667.458,0.0,25.93 -2016-01-19 22:00:00,6282.892,0.0,26.47 -2016-01-19 23:00:00,5819.483,0.0,25.81 -2016-01-20 00:00:00,5420.608,0.0,26.49 -2016-01-20 01:00:00,5133.533,0.0,27.53 -2016-01-20 02:00:00,4968.542,0.0,27.33 -2016-01-20 03:00:00,4895.842,0.0,27.22 -2016-01-20 04:00:00,4900.117,0.0,26.13 -2016-01-20 05:00:00,5109.9,0.0,26.39 -2016-01-20 06:00:00,5645.208,0.0,27.24 -2016-01-20 07:00:00,6196.775,0.0,27.58 -2016-01-20 08:00:00,6510.733,0.0,29.24 -2016-01-20 09:00:00,6694.408,0.0,30.41 -2016-01-20 10:00:00,6771.1,0.0,32.58 -2016-01-20 11:00:00,6774.342,0.0,34.29 -2016-01-20 12:00:00,6757.875,0.0,36.07 -2016-01-20 13:00:00,6735.433,0.0,36.2 -2016-01-20 14:00:00,6704.567,0.0,37.17 -2016-01-20 15:00:00,6716.8,0.0,36.11 -2016-01-20 16:00:00,6837.192,0.0,34.98 -2016-01-20 17:00:00,7043.875,0.0,34.05 -2016-01-20 18:00:00,6971.492,0.0,31.85 -2016-01-20 19:00:00,6779.325,0.0,32.61 -2016-01-20 20:00:00,6590.775,0.0,31.34 -2016-01-20 21:00:00,6334.675,0.0,31.93 -2016-01-20 22:00:00,6022.617,0.0,32.16 -2016-01-20 23:00:00,5595.858,0.0,30.27 -2016-01-21 00:00:00,5199.717,0.0,30.37 -2016-01-21 01:00:00,4922.433,0.0,29.82 -2016-01-21 02:00:00,4766.475,0.0,29.31 -2016-01-21 03:00:00,4681.475,0.0,28.84 -2016-01-21 04:00:00,4717.367,0.0,26.34 -2016-01-21 05:00:00,4952.633,0.0,26.64 -2016-01-21 06:00:00,5487.783,0.0,26.02 -2016-01-21 07:00:00,6100.725,0.0,25.91 -2016-01-21 08:00:00,6420.342,0.0,27.68 -2016-01-21 09:00:00,6657.142,0.0,29.8 -2016-01-21 10:00:00,6727.75,0.0,31.45 -2016-01-21 11:00:00,6743.608,0.0,33.5 -2016-01-21 12:00:00,6727.025,0.0,35.04 -2016-01-21 13:00:00,6697.35,0.0,35.9 -2016-01-21 14:00:00,6683.175,0.0,36.17 -2016-01-21 15:00:00,6705.525,0.0,35.06 -2016-01-21 16:00:00,6802.25,0.0,33.78 -2016-01-21 17:00:00,7034.925,0.0,31.53 -2016-01-21 18:00:00,6983.342,0.0,29.94 -2016-01-21 19:00:00,6805.3,0.0,29.84 -2016-01-21 20:00:00,6630.858,0.0,29.4 -2016-01-21 21:00:00,6404.425,0.0,28.04 -2016-01-21 22:00:00,6083.483,0.0,27.54 -2016-01-21 23:00:00,5687.458,0.0,26.11 -2016-01-22 00:00:00,5301.667,0.0,25.17 -2016-01-22 01:00:00,5072.833,0.0,23.82 -2016-01-22 02:00:00,4939.658,0.0,22.19 -2016-01-22 03:00:00,4873.1,0.0,22.18 -2016-01-22 04:00:00,4836.2,0.0,21.52 -2016-01-22 05:00:00,5056.617,0.0,20.91 -2016-01-22 06:00:00,5620.233,0.0,20.68 -2016-01-22 07:00:00,6213.292,0.0,21.63 -2016-01-22 08:00:00,6541.2,0.0,22.63 -2016-01-22 09:00:00,6770.133,0.0,23.99 -2016-01-22 10:00:00,6870.117,0.0,25.62 -2016-01-22 11:00:00,6907.308,0.0,27.08 -2016-01-22 12:00:00,6890.208,0.0,28.56 -2016-01-22 13:00:00,6889.4,0.0,29.33 -2016-01-22 14:00:00,6887.658,0.0,29.2 -2016-01-22 15:00:00,6916.933,0.0,27.77 -2016-01-22 16:00:00,6999.025,0.0,28.34 -2016-01-22 17:00:00,7106.883,0.0,28.35 -2016-01-22 18:00:00,6985.8,0.0,27.43 -2016-01-22 19:00:00,6812.267,0.0029,28.24 -2016-01-22 20:00:00,6582.783,0.0041,28.13 -2016-01-22 21:00:00,6369.85,0.0256,28.13 -2016-01-22 22:00:00,6105.592,0.0131,28.01 -2016-01-22 23:00:00,5782.683,0.0173,27.52 -2016-01-23 00:00:00,5446.858,0.0243,25.67 -2016-01-23 01:00:00,5198.108,0.0226,25.76 -2016-01-23 02:00:00,5023.442,0.006,25.37 -2016-01-23 03:00:00,4943.508,0.0494,24.93 -2016-01-23 04:00:00,4909.583,0.0561,24.45 -2016-01-23 05:00:00,4962.442,0.0582,24.84 -2016-01-23 06:00:00,5103.458,0.084,25.66 -2016-01-23 07:00:00,5291.025,0.079,25.56 -2016-01-23 08:00:00,5527.8,0.0131,26.14 -2016-01-23 09:00:00,5792.808,0.0185,26.7 -2016-01-23 10:00:00,6020.333,0.0554,26.88 -2016-01-23 11:00:00,6156.933,0.0495,27.65 -2016-01-23 12:00:00,6227.583,0.0496,28.63 -2016-01-23 13:00:00,6213.9,0.0568,27.89 -2016-01-23 14:00:00,6152.592,0.041,27.45 -2016-01-23 15:00:00,6124.867,0.0643,28.23 -2016-01-23 16:00:00,6141.592,0.0451,26.76 -2016-01-23 17:00:00,6289.908,0.0529,26.63 -2016-01-23 18:00:00,6325.517,0.031,27.17 -2016-01-23 19:00:00,6269.817,0.024,25.59 -2016-01-23 20:00:00,6170.383,0.0049,24.36 -2016-01-23 21:00:00,6007.142,0.0026,24.16 -2016-01-23 22:00:00,5804.708,0.0023,24.86 -2016-01-23 23:00:00,5552.592,0.0,25.41 -2016-01-24 00:00:00,5276.325,0.0056,25.55 -2016-01-24 01:00:00,5050.033,0.0064,24.7 -2016-01-24 02:00:00,4900.025,0.0,25.11 -2016-01-24 03:00:00,4791.708,0.0,23.34 -2016-01-24 04:00:00,4771.4,0.0,22.14 -2016-01-24 05:00:00,4808.992,0.0,20.26 -2016-01-24 06:00:00,4891.475,0.0,19.73 -2016-01-24 07:00:00,5002.725,0.0,20.21 -2016-01-24 08:00:00,5200.9,0.0,21.09 -2016-01-24 09:00:00,5438.908,0.0,22.4 -2016-01-24 10:00:00,5638.7,0.0,24.33 -2016-01-24 11:00:00,5783.783,0.0,26.49 -2016-01-24 12:00:00,5852.8,0.0,29.5 -2016-01-24 13:00:00,5865.075,0.0,30.93 -2016-01-24 14:00:00,5857.842,0.0,32.22 -2016-01-24 15:00:00,5898.492,0.0,33.37 -2016-01-24 16:00:00,5978.15,0.0,32.16 -2016-01-24 17:00:00,6233.908,0.0,32.25 -2016-01-24 18:00:00,6382.342,0.0,30.22 -2016-01-24 19:00:00,6316.058,0.0,29.3 -2016-01-24 20:00:00,6193.825,0.0,27.06 -2016-01-24 21:00:00,6019.533,0.0,26.55 -2016-01-24 22:00:00,5721.55,0.0,27.17 -2016-01-24 23:00:00,5379.092,0.0,27.25 -2016-01-25 00:00:00,5064.058,0.0,25.74 -2016-01-25 01:00:00,4879.217,0.0,25.45 -2016-01-25 02:00:00,4766.0,0.0,25.15 -2016-01-25 03:00:00,4725.183,0.0,24.72 -2016-01-25 04:00:00,4777.608,0.0,23.25 -2016-01-25 05:00:00,4970.392,0.0,23.45 -2016-01-25 06:00:00,5458.2,0.0,22.02 -2016-01-25 07:00:00,5979.367,0.0,22.57 -2016-01-25 08:00:00,6286.992,0.0,26.25 -2016-01-25 09:00:00,6528.717,0.0,28.91 -2016-01-25 10:00:00,6686.875,0.0,32.66 -2016-01-25 11:00:00,6762.408,0.0,34.65 -2016-01-25 12:00:00,6786.108,0.0,34.59 -2016-01-25 13:00:00,6746.717,0.0,34.32 -2016-01-25 14:00:00,6685.742,0.0,35.42 -2016-01-25 15:00:00,6696.483,0.0,35.89 -2016-01-25 16:00:00,6735.875,0.0,34.17 -2016-01-25 17:00:00,6919.333,0.0,32.05 -2016-01-25 18:00:00,6905.9,0.0,31.4 -2016-01-25 19:00:00,6743.583,0.0,31.72 -2016-01-25 20:00:00,6550.15,0.0,32.8 -2016-01-25 21:00:00,6306.925,0.0,33.53 -2016-01-25 22:00:00,5927.542,0.0,32.18 -2016-01-25 23:00:00,5498.417,0.0,32.35 -2016-01-26 00:00:00,5101.242,0.0,32.29 -2016-01-26 01:00:00,4850.3,0.0,35.01 -2016-01-26 02:00:00,4687.517,0.0,33.8 -2016-01-26 03:00:00,4636.975,0.0,32.16 -2016-01-26 04:00:00,4668.725,0.0,33.63 -2016-01-26 05:00:00,4898.067,0.0,31.9 -2016-01-26 06:00:00,5390.592,0.0,34.29 -2016-01-26 07:00:00,5944.683,0.0,35.11 -2016-01-26 08:00:00,6247.233,0.0,35.54 -2016-01-26 09:00:00,6463.842,0.0,36.8 -2016-01-26 10:00:00,6564.283,0.0,40.59 -2016-01-26 11:00:00,6590.675,0.0,40.99 -2016-01-26 12:00:00,6589.317,0.0,43.22 -2016-01-26 13:00:00,6558.367,0.0,43.02 -2016-01-26 14:00:00,6520.575,0.0,42.84 -2016-01-26 15:00:00,6517.042,0.0,44.6 -2016-01-26 16:00:00,6598.792,0.0,45.16 -2016-01-26 17:00:00,6784.533,0.0,44.68 -2016-01-26 18:00:00,6729.2,0.0,43.45 -2016-01-26 19:00:00,6578.0,0.0,40.64 -2016-01-26 20:00:00,6371.192,0.0,44.67 -2016-01-26 21:00:00,6105.167,0.0,43.18 -2016-01-26 22:00:00,5769.475,0.0,44.22 -2016-01-26 23:00:00,5323.85,0.0,42.85 -2016-01-27 00:00:00,4927.042,0.0,41.59 -2016-01-27 01:00:00,4677.942,0.0,41.62 -2016-01-27 02:00:00,4550.558,0.0,41.96 -2016-01-27 03:00:00,4491.225,0.0117,41.54 -2016-01-27 04:00:00,4507.325,0.0027,40.72 -2016-01-27 05:00:00,4748.817,0.0,40.47 -2016-01-27 06:00:00,5259.525,0.0,39.37 -2016-01-27 07:00:00,5833.317,0.0,40.38 -2016-01-27 08:00:00,6182.958,0.0,40.7 -2016-01-27 09:00:00,6430.317,0.0,40.41 -2016-01-27 10:00:00,6534.658,0.0,39.19 -2016-01-27 11:00:00,6530.792,0.0,40.4 -2016-01-27 12:00:00,6504.908,0.0,42.57 -2016-01-27 13:00:00,6498.608,0.0,44.92 -2016-01-27 14:00:00,6462.375,0.0,43.22 -2016-01-27 15:00:00,6470.908,0.0,42.49 -2016-01-27 16:00:00,6552.808,0.0,41.36 -2016-01-27 17:00:00,6729.283,0.0,40.77 -2016-01-27 18:00:00,6735.9,0.0,38.57 -2016-01-27 19:00:00,6563.483,0.0,36.82 -2016-01-27 20:00:00,6361.733,0.0,35.62 -2016-01-27 21:00:00,6137.333,0.0,34.72 -2016-01-27 22:00:00,5778.033,0.0,33.57 -2016-01-27 23:00:00,5373.533,0.0,34.82 -2016-01-28 00:00:00,4998.875,0.0,32.46 -2016-01-28 01:00:00,4763.717,0.0,32.03 -2016-01-28 02:00:00,4623.65,0.0,27.7 -2016-01-28 03:00:00,4565.925,0.0,28.41 -2016-01-28 04:00:00,4582.883,0.0,30.17 -2016-01-28 05:00:00,4824.1,0.0,28.87 -2016-01-28 06:00:00,5337.15,0.0,28.73 -2016-01-28 07:00:00,5906.025,0.0,28.13 -2016-01-28 08:00:00,6223.842,0.0,29.87 -2016-01-28 09:00:00,6415.217,0.0,34.01 -2016-01-28 10:00:00,6506.808,0.0,37.75 -2016-01-28 11:00:00,6570.017,0.0,39.47 -2016-01-28 12:00:00,6535.258,0.0,40.72 -2016-01-28 13:00:00,6510.075,0.0,40.61 -2016-01-28 14:00:00,6485.808,0.0,41.81 -2016-01-28 15:00:00,6478.775,0.0,41.71 -2016-01-28 16:00:00,6564.433,0.0,40.27 -2016-01-28 17:00:00,6737.967,0.0,38.31 -2016-01-28 18:00:00,6707.467,0.0,36.42 -2016-01-28 19:00:00,6537.567,0.0,35.73 -2016-01-29 00:00:00,4985.283,0.0,34.48 -2016-01-29 01:00:00,4729.217,0.0,34.91 -2016-01-29 02:00:00,4590.677,0.0,37.17 -2016-01-29 03:00:00,4520.133,0.0,36.34 -2016-01-29 04:00:00,4541.783,0.0,31.28 -2016-01-29 05:00:00,4763.042,0.0,33.87 -2016-01-29 06:00:00,5274.3,0.0,34.62 -2016-01-29 07:00:00,5816.417,0.0,34.17 -2016-01-29 08:00:00,6126.9,0.0,35.44 -2016-01-29 09:00:00,6366.717,0.0,37.38 -2016-01-29 10:00:00,6521.892,0.0029,38.62 -2016-01-29 11:00:00,6559.367,0.0,39.13 -2016-01-29 12:00:00,6560.383,0.0,40.31 -2016-01-29 13:00:00,6604.625,0.0035,40.4 -2016-01-29 14:00:00,6560.833,0.0036,40.58 -2016-01-29 15:00:00,6554.558,0.0,40.12 -2016-01-29 16:00:00,6626.5,0.0,39.57 -2016-01-29 17:00:00,6755.6,0.0,37.98 -2016-01-29 18:00:00,6667.05,0.0,35.24 -2016-01-29 19:00:00,6521.383,0.0,33.41 -2016-01-29 20:00:00,6330.7,0.0,33.5 -2016-01-29 21:00:00,6122.225,0.0,31.05 -2016-01-29 22:00:00,5839.55,0.0,30.63 -2016-01-29 23:00:00,5502.0,0.0,29.56 -2016-01-30 00:00:00,5179.6,0.0,29.52 -2016-01-30 01:00:00,4935.233,0.0,29.7 -2016-01-30 02:00:00,4752.342,0.0,28.61 -2016-01-30 03:00:00,4661.175,0.0,27.05 -2016-01-30 04:00:00,4629.208,0.0,27.84 -2016-01-30 05:00:00,4701.017,0.0,27.43 -2016-01-30 06:00:00,4867.383,0.0,28.54 -2016-01-30 07:00:00,5097.575,0.0,27.87 -2016-01-30 08:00:00,5378.2,0.0,29.9 -2016-01-30 09:00:00,5605.15,0.0,31.54 -2016-01-30 10:00:00,5758.525,0.0,34.61 -2016-01-30 11:00:00,5824.95,0.0,34.56 -2016-01-30 12:00:00,5803.042,0.0,35.99 -2016-01-30 13:00:00,5765.2,0.0,36.88 -2016-01-30 14:00:00,5726.842,0.0,37.02 -2016-01-30 15:00:00,5722.1,0.0,37.78 -2016-01-30 16:00:00,5767.708,0.0,37.52 -2016-01-30 17:00:00,5961.192,0.0,37.68 -2016-01-30 18:00:00,6089.25,0.0,38.11 -2016-01-30 19:00:00,6032.65,0.0,34.56 -2016-01-30 20:00:00,5908.808,0.0,37.57 -2016-01-30 21:00:00,5756.283,0.0,37.15 -2016-01-30 22:00:00,5549.15,0.0,37.42 -2016-01-30 23:00:00,5294.5,0.0,36.38 -2016-01-31 00:00:00,5016.25,0.0,35.19 -2016-01-31 01:00:00,4785.775,0.0,35.96 -2016-01-31 02:00:00,4577.883,0.0,36.44 -2016-01-31 03:00:00,4479.383,0.0,34.35 -2016-01-31 04:00:00,4445.308,0.0,35.87 -2016-01-31 05:00:00,4486.442,0.0,33.13 -2016-01-31 06:00:00,4612.9,0.0,35.79 -2016-01-31 07:00:00,4719.692,0.0,36.84 -2016-01-31 08:00:00,4951.892,0.0,37.88 -2016-01-31 09:00:00,5187.167,0.0,40.21 -2016-01-31 10:00:00,5344.225,0.0,41.96 -2016-01-31 11:00:00,5413.95,0.0,45.49 -2016-01-31 12:00:00,5463.35,0.0,48.61 -2016-01-31 13:00:00,5459.292,0.0,51.1 -2016-01-31 14:00:00,5439.875,0.0,51.85 -2016-01-31 15:00:00,5434.625,0.0,50.88 -2016-01-31 16:00:00,5518.683,0.0,49.74 -2016-01-31 17:00:00,5767.642,0.0,47.79 -2016-01-31 18:00:00,5916.275,0.0,44.86 -2016-01-31 19:00:00,5911.233,0.0,44.29 -2016-01-31 20:00:00,5848.725,0.0,43.73 -2016-01-31 21:00:00,5692.783,0.0,46.55 -2016-01-31 22:00:00,5397.867,0.0,46.96 -2016-01-31 23:00:00,5051.063,0.0,45.84 -2016-02-01 00:00:00,4722.592,0.0,46.8 -2016-02-01 01:00:00,4501.425,0.0,44.55 -2016-02-01 02:00:00,4367.583,0.0,45.43 -2016-02-01 03:00:00,4320.65,0.0,44.4 -2016-02-01 04:00:00,4334.667,0.0,44.51 -2016-02-01 05:00:00,4577.35,0.0,44.13 -2016-02-01 06:00:00,5109.833,0.0,46.12 -2016-02-01 07:00:00,5663.4,0.0,45.22 -2016-02-01 08:00:00,5983.108,0.0,47.74 -2016-02-01 09:00:00,6197.258,0.0,50.25 -2016-02-01 10:00:00,6260.083,0.0,52.68 -2016-02-01 11:00:00,6305.0,0.0,55.05 -2016-02-01 12:00:00,6308.267,0.0,57.68 -2016-02-01 13:00:00,6315.9,0.007,58.46 -2016-02-01 14:00:00,6300.817,0.0029,57.24 -2016-02-01 15:00:00,6336.942,0.0262,53.08 -2016-02-01 16:00:00,6424.45,0.0408,51.56 -2016-02-01 17:00:00,6570.708,0.0,50.03 -2016-02-01 18:00:00,6496.275,0.0186,50.3 -2016-02-01 19:00:00,6333.642,0.0,49.61 -2016-02-01 20:00:00,6139.933,0.0,48.23 -2016-02-01 21:00:00,5879.592,0.0,45.96 -2016-02-01 22:00:00,5541.417,0.0,44.96 -2016-02-01 23:00:00,5131.608,0.0,44.36 -2016-02-02 00:00:00,4748.95,0.0,41.59 -2016-02-02 01:00:00,4483.75,0.0,41.41 -2016-02-02 02:00:00,4342.008,0.0,39.28 -2016-02-02 03:00:00,4301.092,0.0,39.13 -2016-02-02 04:00:00,4341.375,0.0,37.89 -2016-02-02 05:00:00,4598.225,0.0,36.08 -2016-02-02 06:00:00,5154.842,0.0,35.85 -2016-02-02 07:00:00,5717.533,0.0,35.38 -2016-02-02 08:00:00,6049.258,0.0,38.94 -2016-02-02 09:00:00,6222.875,0.0,42.12 -2016-02-02 10:00:00,6294.0,0.0,44.36 -2016-02-02 11:00:00,6305.733,0.0,46.94 -2016-02-02 12:00:00,6306.333,0.0,48.68 -2016-02-02 13:00:00,6292.825,0.0,47.62 -2016-02-02 14:00:00,6262.417,0.0,48.76 -2016-02-02 15:00:00,6282.858,0.0,49.14 -2016-02-02 16:00:00,6340.808,0.0,47.49 -2016-02-02 17:00:00,6533.733,0.0,46.91 -2016-02-02 18:00:00,6519.683,0.0,44.41 -2016-02-02 19:00:00,6364.083,0.0,42.96 -2016-02-02 20:00:00,6137.2,0.0,42.75 -2016-02-02 21:00:00,5858.467,0.0,42.13 -2016-02-02 22:00:00,5510.425,0.0,41.6 -2016-02-02 23:00:00,5094.117,0.0,42.16 -2016-02-03 00:00:00,4731.583,0.0,40.0 -2016-02-03 01:00:00,4495.083,0.0,40.51 -2016-02-03 02:00:00,4348.283,0.0,40.7 -2016-02-03 03:00:00,4275.7,0.0,42.15 -2016-02-03 04:00:00,4307.708,0.0,40.66 -2016-02-03 05:00:00,4547.4,0.0,43.14 -2016-02-03 06:00:00,5073.95,0.0,44.96 -2016-02-03 07:00:00,5689.567,0.0089,47.25 -2016-02-03 08:00:00,6062.1,0.0052,48.48 -2016-02-03 09:00:00,6303.558,0.0,48.59 -2016-02-03 10:00:00,6411.992,0.0,50.15 -2016-02-03 11:00:00,6476.55,0.0149,52.89 -2016-02-03 12:00:00,6479.867,0.0255,53.52 -2016-02-03 13:00:00,6504.0,0.0793,54.0 -2016-02-03 14:00:00,6486.45,0.0958,53.3 -2016-02-03 15:00:00,6545.842,0.125,54.12 -2016-02-03 16:00:00,6647.842,0.0328,56.18 -2016-02-03 17:00:00,6717.442,0.0105,56.45 -2016-02-03 18:00:00,6600.317,0.0137,54.49 -2016-02-03 19:00:00,6425.767,0.0056,55.14 -2016-02-03 20:00:00,6200.908,0.0,53.8 -2016-02-03 21:00:00,5935.817,0.0,55.12 -2016-02-03 22:00:00,5572.95,0.0,55.17 -2016-02-03 23:00:00,5148.325,0.0,54.93 -2016-02-04 00:00:00,4737.342,0.0,54.38 -2016-02-04 01:00:00,4479.658,0.0,55.87 -2016-02-04 02:00:00,4332.192,0.0,56.18 -2016-02-04 03:00:00,4279.167,0.0,55.98 -2016-02-04 04:00:00,4293.508,0.0,55.11 -2016-02-04 05:00:00,4490.942,0.0,55.23 -2016-02-04 06:00:00,5016.292,0.0,53.29 -2016-02-04 07:00:00,5609.125,0.0,54.01 -2016-02-04 08:00:00,5972.95,0.0,52.33 -2016-02-04 09:00:00,6162.542,0.0,51.73 -2016-02-04 10:00:00,6251.15,0.0,51.28 -2016-02-04 11:00:00,6263.109,0.0,52.8 -2016-02-04 12:00:00,6326.975,0.0,52.11 -2016-02-04 13:00:00,6293.742,0.0,52.73 -2016-02-04 14:00:00,6284.267,0.0,51.99 -2016-02-04 15:00:00,6305.958,0.0,50.08 -2016-02-04 16:00:00,6372.258,0.0,50.23 -2016-02-04 17:00:00,6498.475,0.0,49.25 -2016-02-04 18:00:00,6487.625,0.0,48.96 -2016-02-04 19:00:00,6301.125,0.0,48.62 -2016-02-04 20:00:00,6106.075,0.0074,47.59 -2016-02-04 21:00:00,5862.85,0.0087,45.9 -2016-02-04 22:00:00,5544.483,0.0039,44.77 -2016-02-04 23:00:00,5156.525,0.0126,44.02 -2016-02-05 00:00:00,4776.525,0.0026,42.97 -2016-02-05 01:00:00,4544.292,0.043,41.53 -2016-02-05 02:00:00,4427.2,0.0147,40.42 -2016-02-05 03:00:00,4392.208,0.0261,36.77 -2016-02-05 04:00:00,4462.075,0.0256,35.09 -2016-02-05 05:00:00,4700.742,0.0545,33.67 -2016-02-05 06:00:00,5227.383,0.0277,32.76 -2016-02-05 07:00:00,5832.1,0.0302,31.99 -2016-02-05 08:00:00,6244.742,0.026,32.04 -2016-02-05 09:00:00,6556.733,0.0375,32.41 -2016-02-05 10:00:00,6710.058,0.0111,32.69 -2016-02-05 11:00:00,6774.267,0.0024,32.85 -2016-02-05 12:00:00,6737.158,0.0,34.09 -2016-02-05 13:00:00,6618.283,0.0,36.47 -2016-02-05 14:00:00,6544.1,0.0,37.84 -2016-02-05 15:00:00,6541.325,0.0,38.84 -2016-02-05 16:00:00,6587.517,0.0,38.79 -2016-02-05 17:00:00,6693.058,0.0,37.19 -2016-02-05 18:00:00,6691.658,0.0,35.99 -2016-02-05 19:00:00,6520.467,0.0,34.32 -2016-02-05 20:00:00,6309.592,0.0,34.22 -2016-02-05 21:00:00,6111.575,0.0,32.89 -2016-02-05 22:00:00,5824.125,0.0,32.42 -2016-02-05 23:00:00,5461.067,0.0,31.59 -2016-02-06 00:00:00,5092.008,0.0,31.77 -2016-02-06 01:00:00,4852.783,0.0,31.05 -2016-02-06 02:00:00,4668.4,0.0,30.89 -2016-02-06 03:00:00,4564.85,0.0,29.65 -2016-02-06 04:00:00,4536.225,0.0,29.45 -2016-02-06 05:00:00,4601.25,0.0,28.95 -2016-02-06 06:00:00,4753.675,0.0,29.13 -2016-02-06 07:00:00,4966.408,0.0,29.84 -2016-02-06 08:00:00,5236.917,0.0,31.87 -2016-02-06 09:00:00,5481.883,0.0,34.47 -2016-02-06 10:00:00,5641.125,0.0,36.22 -2016-02-06 11:00:00,5727.35,0.0,37.71 -2016-02-06 12:00:00,5727.942,0.0,38.27 -2016-02-06 13:00:00,5703.133,0.0,39.47 -2016-02-06 14:00:00,5678.225,0.0,39.9 -2016-02-06 15:00:00,5652.425,0.0,39.12 -2016-02-06 16:00:00,5681.158,0.0,38.76 -2016-02-06 17:00:00,5842.742,0.0,37.87 -2016-02-06 18:00:00,6009.817,0.0,37.26 -2016-02-06 19:00:00,5979.45,0.0,36.64 -2016-02-06 20:00:00,5863.35,0.0,37.54 -2016-02-06 21:00:00,5727.633,0.0,36.8 -2016-02-06 22:00:00,5541.8,0.0,34.13 -2016-02-06 23:00:00,5274.35,0.0,36.48 -2016-02-07 00:00:00,4987.808,0.0,34.32 -2016-02-07 01:00:00,4744.208,0.0,34.55 -2016-02-07 02:00:00,4558.092,0.0,35.4 -2016-02-07 03:00:00,4457.192,0.0,33.79 -2016-02-07 04:00:00,4418.008,0.0,31.8 -2016-02-07 05:00:00,4457.167,0.0,30.54 -2016-02-07 06:00:00,4562.533,0.0,30.98 -2016-02-07 07:00:00,4689.733,0.0,32.0 -2016-02-07 08:00:00,4891.558,0.0,34.69 -2016-02-07 09:00:00,5105.633,0.0,37.35 -2016-02-07 10:00:00,5288.642,0.0,40.69 -2016-02-07 11:00:00,5409.183,0.0,43.6 -2016-02-07 12:00:00,5468.55,0.0,44.23 -2016-02-07 13:00:00,5481.3,0.0,45.27 -2016-02-07 14:00:00,5472.075,0.0,44.93 -2016-02-07 15:00:00,5503.333,0.0,44.48 -2016-02-07 16:00:00,5602.025,0.0,42.71 -2016-02-07 17:00:00,5825.642,0.0,41.79 -2016-02-07 18:00:00,5957.983,0.0,40.2 -2016-02-07 19:00:00,5874.967,0.0,38.86 -2016-02-07 20:00:00,5742.575,0.0,38.0 -2016-02-07 21:00:00,5615.617,0.0,39.24 -2016-02-07 22:00:00,5417.408,0.0,39.02 -2016-02-07 23:00:00,5145.558,0.0,38.38 -2016-02-08 00:00:00,4827.917,0.0,38.44 -2016-02-08 01:00:00,4586.45,0.0,38.77 -2016-02-08 02:00:00,4460.508,0.0,37.02 -2016-02-08 03:00:00,4408.133,0.0,36.9 -2016-02-08 04:00:00,4434.142,0.0,35.89 -2016-02-08 05:00:00,4658.025,0.0,36.65 -2016-02-08 06:00:00,5129.633,0.0,36.46 -2016-02-08 07:00:00,5666.225,0.0,36.3 -2016-02-08 08:00:00,6125.65,0.0,36.45 -2016-02-08 09:00:00,6415.725,0.0024,35.35 -2016-02-08 10:00:00,6587.333,0.0059,32.74 -2016-02-08 11:00:00,6676.525,0.0,31.52 -2016-02-08 12:00:00,6688.85,0.0,32.11 -2016-02-08 13:00:00,6725.075,0.0,32.53 -2016-02-08 14:00:00,6703.908,0.0,32.12 -2016-02-08 15:00:00,6715.133,0.0,32.75 -2016-02-08 16:00:00,6777.025,0.0,31.43 -2016-02-08 17:00:00,6902.75,0.0022,31.51 -2016-02-08 18:00:00,6856.608,0.0,30.91 -2016-02-08 19:00:00,6728.133,0.0,30.36 -2016-02-08 20:00:00,6505.767,0.0,29.32 -2016-02-08 21:00:00,6270.708,0.0,28.37 -2016-02-08 22:00:00,5924.175,0.0039,28.23 -2016-02-08 23:00:00,5485.792,0.0,28.62 -2016-02-09 00:00:00,5086.8,0.0,27.55 -2016-02-09 01:00:00,4812.367,0.0,27.76 -2016-02-09 02:00:00,4680.183,0.0021,27.96 -2016-02-09 03:00:00,4618.142,0.0025,27.73 -2016-02-09 04:00:00,4645.808,0.0,27.74 -2016-02-09 05:00:00,4890.175,0.0,26.87 -2016-02-09 06:00:00,5412.108,0.0,27.68 -2016-02-09 07:00:00,6024.958,0.0,27.49 -2016-02-09 08:00:00,6403.158,0.0,27.98 -2016-02-09 09:00:00,6599.242,0.0,28.97 -2016-02-09 10:00:00,6692.033,0.0,28.92 -2016-02-09 11:00:00,6672.642,0.0,31.17 -2016-02-09 12:00:00,6674.825,0.0,32.26 -2016-02-09 13:00:00,6708.767,0.0,32.05 -2016-02-09 14:00:00,6661.675,0.0,33.59 -2016-02-09 15:00:00,6593.625,0.0,34.34 -2016-02-09 16:00:00,6705.308,0.0,34.52 -2016-02-09 17:00:00,6842.8,0.0,34.54 -2016-02-09 18:00:00,6832.4,0.0034,33.21 -2016-02-09 19:00:00,6672.225,0.0,32.52 -2016-02-09 20:00:00,6482.942,0.0,34.08 -2016-02-09 21:00:00,6233.633,0.0,32.03 -2016-02-09 22:00:00,5868.133,0.0,32.38 -2016-02-09 23:00:00,5436.367,0.0,31.97 -2016-02-10 00:00:00,5045.325,0.0,32.07 -2016-02-10 01:00:00,4799.842,0.0,32.49 -2016-02-10 02:00:00,4644.917,0.0,31.95 -2016-02-10 03:00:00,4582.933,0.0,32.18 -2016-02-10 04:00:00,4610.675,0.0,32.62 -2016-02-10 05:00:00,4851.908,0.0,32.84 -2016-02-10 06:00:00,5380.267,0.0,32.89 -2016-02-10 07:00:00,5957.042,0.0,33.07 -2016-02-10 08:00:00,6307.925,0.0,33.89 -2016-02-10 09:00:00,6547.0,0.0,34.96 -2016-02-10 10:00:00,6642.492,0.0,35.48 -2016-02-10 11:00:00,6662.283,0.0,36.97 -2016-02-10 12:00:00,6613.208,0.0,38.06 -2016-02-10 13:00:00,6644.517,0.0,38.55 -2016-02-10 14:00:00,6630.583,0.0,38.82 -2016-02-10 15:00:00,6621.083,0.0,38.37 -2016-02-10 16:00:00,6688.367,0.0,37.47 -2016-02-10 17:00:00,6813.292,0.0,36.59 -2016-02-10 18:00:00,6829.35,0.0,31.86 -2016-02-10 19:00:00,6697.467,0.0,33.31 -2016-02-10 20:00:00,6509.125,0.0,31.74 -2016-02-10 21:00:00,6288.517,0.0,30.86 -2016-02-10 22:00:00,5950.167,0.0,31.36 -2016-02-10 23:00:00,5507.125,0.0,30.56 -2016-02-11 00:00:00,5121.817,0.0,29.84 -2016-02-11 01:00:00,4881.567,0.0063,29.89 -2016-02-11 02:00:00,4769.967,0.0027,27.45 -2016-02-11 03:00:00,4721.825,0.0,25.65 -2016-02-11 04:00:00,4769.3,0.0,24.43 -2016-02-11 05:00:00,5008.883,0.0,24.08 -2016-02-11 06:00:00,5555.633,0.0,23.16 -2016-02-11 07:00:00,6127.9,0.0,22.84 -2016-02-11 08:00:00,6468.267,0.0,23.37 -2016-02-11 09:00:00,6721.142,0.0,25.04 -2016-02-11 10:00:00,6844.15,0.0,25.52 -2016-02-11 11:00:00,6913.542,0.0,25.98 -2016-02-11 12:00:00,6938.05,0.0,24.42 -2016-02-11 13:00:00,6957.783,0.0,25.66 -2016-02-11 14:00:00,6930.858,0.0,25.08 -2016-02-11 15:00:00,6968.867,0.0,24.95 -2016-02-11 16:00:00,7057.7,0.0,23.68 -2016-02-11 17:00:00,7225.536,0.0,23.61 -2016-02-11 18:00:00,7265.533,0.0,21.65 -2016-02-11 19:00:00,7128.292,0.0,21.13 -2016-02-11 20:00:00,6988.067,0.0,20.45 -2016-02-11 21:00:00,6747.667,0.0,19.97 -2016-02-11 22:00:00,6409.375,0.0,18.49 -2016-02-11 23:00:00,5980.208,0.0,18.56 -2016-02-12 00:00:00,5590.317,0.0,18.01 -2016-02-12 01:00:00,5345.458,0.0,18.12 -2016-02-12 02:00:00,5180.442,0.0,17.59 -2016-02-12 03:00:00,5115.383,0.0,16.36 -2016-02-12 04:00:00,5118.992,0.0,16.29 -2016-02-12 05:00:00,5323.625,0.0,15.2 -2016-02-12 06:00:00,5819.05,0.0,16.69 -2016-02-12 07:00:00,6347.058,0.0,16.85 -2016-02-12 08:00:00,6646.033,0.0,17.38 -2016-02-12 09:00:00,6859.75,0.0,19.77 -2016-02-12 10:00:00,6972.667,0.0,21.32 -2016-02-12 11:00:00,6994.525,0.0,23.27 -2016-02-12 12:00:00,6979.117,0.0,24.98 -2016-02-12 13:00:00,6932.783,0.0,25.57 -2016-02-12 14:00:00,6923.275,0.0,26.61 -2016-02-12 15:00:00,6949.35,0.0,24.81 -2016-02-12 16:00:00,7010.108,0.0,24.94 -2016-02-12 17:00:00,7144.883,0.0,24.6 -2016-02-12 18:00:00,7126.658,0.0,22.46 -2016-02-12 19:00:00,6959.558,0.0,23.44 -2016-02-12 20:00:00,6757.433,0.0,21.9 -2016-02-12 21:00:00,6552.267,0.0,22.64 -2016-02-12 22:00:00,6259.025,0.0,22.46 -2016-02-12 23:00:00,5926.008,0.0,22.25 -2016-02-13 00:00:00,5570.425,0.0,22.59 -2016-02-13 01:00:00,5323.525,0.0,22.11 -2016-02-13 02:00:00,5163.242,0.0,20.51 -2016-02-13 03:00:00,5073.208,0.0,21.28 -2016-02-13 04:00:00,5036.925,0.0,21.26 -2016-02-13 05:00:00,5083.583,0.0,20.93 -2016-02-13 06:00:00,5249.633,0.0,20.93 -2016-02-13 07:00:00,5470.358,0.0,21.07 -2016-02-13 08:00:00,5767.483,0.0,21.19 -2016-02-13 09:00:00,6011.383,0.0,21.71 -2016-02-13 10:00:00,6269.175,0.0,21.6 -2016-02-13 11:00:00,6361.275,0.0,20.76 -2016-02-13 12:00:00,6414.783,0.0,20.36 -2016-02-13 13:00:00,6416.733,0.0,18.58 -2016-02-13 14:00:00,6410.208,0.0,17.09 -2016-02-13 15:00:00,6429.217,0.0,15.88 -2016-02-13 16:00:00,6523.3,0.0,14.06 -2016-02-13 17:00:00,6729.825,0.0,11.55 -2016-02-13 18:00:00,6943.392,0.0,9.71 -2016-02-13 19:00:00,6926.742,0.0,8.37 -2016-02-13 20:00:00,6841.15,0.0,6.92 -2016-02-13 21:00:00,6714.383,0.0,5.99 -2016-02-13 22:00:00,6500.592,0.0,6.3 -2016-02-13 23:00:00,6229.325,0.0,6.55 -2016-02-14 00:00:00,5959.408,0.0,6.23 -2016-02-14 01:00:00,5708.925,0.0,5.72 -2016-02-14 02:00:00,5538.842,0.0,5.61 -2016-02-14 03:00:00,5446.675,0.0,4.57 -2016-02-14 04:00:00,5424.825,0.0,2.97 -2016-02-14 05:00:00,5452.825,0.0,2.02 -2016-02-14 06:00:00,5571.258,0.0,1.36 -2016-02-14 07:00:00,5730.875,0.0,0.33 -2016-02-14 08:00:00,5990.817,0.0,1.5 -2016-02-14 09:00:00,6252.042,0.0,3.25 -2016-02-14 10:00:00,6496.867,0.0,5.84 -2016-02-14 11:00:00,6619.533,0.0,8.52 -2016-02-14 12:00:00,6648.792,0.0,10.05 -2016-02-14 13:00:00,6634.625,0.0,12.55 -2016-02-14 14:00:00,6600.767,0.0,14.24 -2016-02-14 15:00:00,6574.517,0.0,15.36 -2016-02-14 16:00:00,6594.733,0.0,15.62 -2016-02-14 17:00:00,6757.1,0.0,15.09 -2016-02-14 18:00:00,6935.0,0.0,15.52 -2016-02-14 19:00:00,6862.267,0.0,14.61 -2016-02-14 20:00:00,6763.15,0.0,14.62 -2016-02-14 21:00:00,6618.975,0.0,13.79 -2016-02-14 22:00:00,6381.567,0.0,12.58 -2016-02-14 23:00:00,6089.033,0.0,14.41 -2016-02-15 00:00:00,5758.0,0.0,12.9 -2016-02-15 01:00:00,5524.675,0.0,14.18 -2016-02-15 02:00:00,5388.5,0.0,14.2 -2016-02-15 03:00:00,5298.175,0.0,13.86 -2016-02-15 04:00:00,5290.4,0.0,13.31 -2016-02-15 05:00:00,5393.042,0.0,12.43 -2016-02-15 06:00:00,5625.225,0.0,14.73 -2016-02-15 07:00:00,5871.5,0.0,16.08 -2016-02-15 08:00:00,6220.883,0.0056,18.36 -2016-02-15 09:00:00,6521.9,0.0,19.66 -2016-02-15 10:00:00,6777.925,0.0,21.21 -2016-02-15 11:00:00,6919.317,0.0022,22.83 -2016-02-15 12:00:00,7020.458,0.0,23.74 -2016-02-15 13:00:00,7022.242,0.0,23.61 -2016-02-15 14:00:00,6980.475,0.0124,24.85 -2016-02-15 15:00:00,6936.0,0.0144,25.3 -2016-02-15 16:00:00,6937.142,0.0141,26.1 -2016-02-15 17:00:00,7024.975,0.0254,27.52 -2016-02-15 18:00:00,7018.967,0.0427,29.26 -2016-02-15 19:00:00,6885.85,0.0301,31.1 -2016-02-15 20:00:00,6690.2,0.0,32.63 -2016-02-15 21:00:00,6452.992,0.0036,33.33 -2016-02-15 22:00:00,6149.642,0.0312,34.97 -2016-02-15 23:00:00,5747.917,0.0,35.5 -2016-02-16 00:00:00,5337.4,0.0071,36.42 -2016-02-16 01:00:00,5061.95,0.0,37.54 -2016-02-16 02:00:00,4870.658,0.0169,38.52 -2016-02-16 03:00:00,4777.7,0.0,42.45 -2016-02-16 04:00:00,4764.567,0.0,43.73 -2016-02-16 05:00:00,4942.242,0.0,44.68 -2016-02-16 06:00:00,5349.217,0.0,45.71 -2016-02-16 07:00:00,5833.35,0.0027,47.59 -2016-02-16 08:00:00,6252.183,0.0158,51.11 -2016-02-16 09:00:00,6522.192,0.005,52.06 -2016-02-16 10:00:00,6636.667,0.0024,52.44 -2016-02-16 11:00:00,6690.3,0.003,51.96 -2016-02-16 12:00:00,6704.7,0.0303,52.88 -2016-02-16 13:00:00,6757.1,0.0946,53.85 -2016-02-16 14:00:00,6804.708,0.0519,52.84 -2016-02-16 15:00:00,6750.967,0.0,51.28 -2016-02-16 16:00:00,6709.142,0.0,50.05 -2016-02-16 17:00:00,6687.5,0.0,47.94 -2016-02-16 18:00:00,6687.158,0.0,48.44 -2016-02-16 19:00:00,6497.075,0.0,44.93 -2016-02-16 20:00:00,6305.892,0.0,43.05 -2016-02-16 21:00:00,6097.25,0.0,42.2 -2016-02-16 22:00:00,5775.683,0.0,39.55 -2016-02-16 23:00:00,5376.458,0.0,37.56 -2016-02-17 00:00:00,4992.542,0.0,37.38 -2016-02-17 01:00:00,4746.867,0.0,36.0 -2016-02-17 02:00:00,4593.492,0.0,36.38 -2016-02-17 03:00:00,4532.383,0.0,36.27 -2016-02-17 04:00:00,4551.092,0.0,35.23 -2016-02-17 05:00:00,4765.45,0.0,36.07 -2016-02-17 06:00:00,5228.525,0.0,35.97 -2016-02-17 07:00:00,5710.608,0.0,37.02 -2016-02-17 08:00:00,6124.0,0.0,37.37 -2016-02-17 09:00:00,6418.633,0.0,39.14 -2016-02-17 10:00:00,6530.425,0.0,39.17 -2016-02-17 11:00:00,6607.167,0.0,39.87 -2016-02-17 12:00:00,6639.6,0.0,39.15 -2016-02-17 13:00:00,6652.192,0.0,39.07 -2016-02-17 14:00:00,6653.683,, -2016-02-17 15:00:00,6679.85,0.0,39.26 -2016-02-17 16:00:00,6758.367,0.0,38.57 -2016-02-17 17:00:00,6834.508,0.0,38.02 -2016-02-17 18:00:00,6786.692,0.0,36.98 -2016-02-17 19:00:00,6606.017,0.0,37.45 -2016-02-17 20:00:00,6415.808,0.0,36.03 -2016-02-17 21:00:00,6184.758,0.0,36.42 -2016-02-17 22:00:00,5876.242,0.0,34.9 -2016-02-17 23:00:00,5458.025,0.0,34.5 -2016-02-18 00:00:00,5086.333,0.0,34.16 -2016-02-18 01:00:00,4841.017,0.0,33.82 -2016-02-18 02:00:00,4697.45,0.0,31.49 -2016-02-18 03:00:00,4637.392,0.0,31.51 -2016-02-18 04:00:00,4666.458,0.0,30.75 -2016-02-18 05:00:00,4889.542,0.0,30.08 -2016-02-18 06:00:00,5364.233,0.0,29.05 -2016-02-18 07:00:00,5873.108,0.0,26.92 -2016-02-18 08:00:00,6297.942,0.0,27.49 -2016-02-18 09:00:00,6531.8,0.0,28.43 -2016-02-18 10:00:00,6628.642,0.0,28.56 -2016-02-18 11:00:00,6660.975,0.0,30.84 -2016-02-18 12:00:00,6660.525,0.0,31.24 -2016-02-18 13:00:00,6657.458,0.0,33.16 -2016-02-18 14:00:00,6642.2,0.0,33.17 -2016-02-18 15:00:00,6621.9,0.0,34.31 -2016-02-18 16:00:00,6648.825,0.0,34.89 -2016-02-18 17:00:00,6751.275,0.0,34.83 -2016-02-18 18:00:00,6818.517,0.0,33.46 -2016-02-18 19:00:00,6708.542,0.0,32.07 -2016-02-18 20:00:00,6532.092,0.0,29.65 -2016-02-18 21:00:00,6305.842,0.0,29.03 -2016-02-18 22:00:00,6001.333,0.0,28.1 -2016-02-18 23:00:00,5616.425,0.0,27.37 -2016-02-19 00:00:00,5240.908,0.0,27.05 -2016-02-19 01:00:00,4998.233,0.0,26.62 -2016-02-19 02:00:00,4856.825,0.0,25.83 -2016-02-19 03:00:00,4781.942,0.0,24.57 -2016-02-19 04:00:00,4802.808,0.0,23.3 -2016-02-19 05:00:00,5000.408,0.0,23.31 -2016-02-19 06:00:00,5428.675,0.0,21.82 -2016-02-19 07:00:00,5892.633,0.0,23.54 -2016-02-19 08:00:00,6304.1,0.0,24.97 -2016-02-19 09:00:00,6539.067,0.0,25.66 -2016-02-19 10:00:00,6655.4,0.0,29.25 -2016-02-19 11:00:00,6660.608,0.0,31.15 -2016-02-19 12:00:00,6670.492,0.0,33.43 -2016-02-19 13:00:00,6679.633,0.0,35.17 -2016-02-19 14:00:00,6640.767,0.0,35.24 -2016-02-19 15:00:00,6632.208,0.0,35.55 -2016-02-19 16:00:00,6700.15,0.0,35.05 -2016-02-19 17:00:00,6807.567,0.0,34.4 -2016-02-19 18:00:00,6741.55,0.0,34.52 -2016-02-19 19:00:00,6572.783,0.0,34.73 -2016-02-19 20:00:00,6336.608,0.0,35.31 -2016-02-19 21:00:00,6086.85,0.0,36.56 -2016-02-19 22:00:00,5822.558,0.0,37.22 -2016-02-19 23:00:00,5461.608,0.0,37.58 -2016-02-20 00:00:00,5105.6,0.0,37.74 -2016-02-20 01:00:00,4850.058,0.0,38.26 -2016-02-20 02:00:00,4688.042,0.0,38.63 -2016-02-20 03:00:00,4568.583,0.0,39.92 -2016-02-20 04:00:00,4531.567,0.0046,40.97 -2016-02-20 05:00:00,4579.658,0.0023,40.99 -2016-02-20 06:00:00,4715.617,0.0025,41.22 -2016-02-20 07:00:00,4902.667,0.0,40.56 -2016-02-20 08:00:00,5121.875,0.0,42.78 -2016-02-20 09:00:00,5327.633,0.0,44.22 -2016-02-20 10:00:00,5496.075,0.0,46.6 -2016-02-20 11:00:00,5570.408,0.0,51.29 -2016-02-20 12:00:00,5570.817,0.0,54.95 -2016-02-20 13:00:00,5557.217,0.0,55.96 -2016-02-20 14:00:00,5500.4,0.0,57.71 -2016-02-20 15:00:00,5452.483,0.0,57.58 -2016-02-20 16:00:00,5441.558,0.0,58.67 -2016-02-20 17:00:00,5536.333,0.0,58.24 -2016-02-20 18:00:00,5750.517,0.0,56.93 -2016-02-20 19:00:00,5741.542,0.0,54.61 -2016-02-20 20:00:00,5641.717,0.0,52.2 -2016-02-20 21:00:00,5531.108,0.0,52.39 -2016-02-20 22:00:00,5318.892,0.0,51.29 -2016-02-20 23:00:00,5065.133,0.0,50.68 -2016-02-21 00:00:00,4795.492,0.0,50.51 -2016-02-21 01:00:00,4677.05,0.0,49.84 -2016-02-21 02:00:00,4397.142,0.0,49.39 -2016-02-21 03:00:00,4298.308,0.0,47.87 -2016-02-21 04:00:00,4261.658,0.0,47.62 -2016-02-21 05:00:00,4303.433,0.0,46.19 -2016-02-21 06:00:00,4396.342,0.0,42.55 -2016-02-21 07:00:00,4504.575,0.0,40.72 -2016-02-21 08:00:00,4746.683,0.0,46.12 -2016-02-21 09:00:00,4994.058,0.0,48.97 -2016-02-21 10:00:00,5167.0,0.0,50.16 -2016-02-21 11:00:00,5300.425,0.0,52.05 -2016-02-21 12:00:00,5375.792,0.0,52.93 -2016-02-21 13:00:00,5400.075,0.0,53.2 -2016-02-21 14:00:00,5377.817,0.0,53.3 -2016-02-21 15:00:00,5406.283,0.0,53.62 -2016-02-21 16:00:00,5473.442,0.0,53.79 -2016-02-21 17:00:00,5634.942,0.0029,52.66 -2016-02-21 18:00:00,5816.942,0.0384,50.87 -2016-02-21 19:00:00,5789.45,0.0,50.3 -2016-02-21 20:00:00,5695.642,0.0034,48.19 -2016-02-21 21:00:00,5545.0,0.0627,47.76 -2016-02-21 22:00:00,5301.583,0.0252,46.82 -2016-02-21 23:00:00,4963.625,0.0,45.43 -2016-02-22 00:00:00,4649.983,0.0,44.1 -2016-02-22 01:00:00,4482.975,0.0,42.33 -2016-02-22 02:00:00,4389.225,0.0,41.6 -2016-02-22 03:00:00,4321.358,0.0,41.46 -2016-02-22 04:00:00,4361.458,0.0,40.51 -2016-02-22 05:00:00,4608.833,0.0,38.57 -2016-02-22 06:00:00,5117.95,0.0,37.59 -2016-02-22 07:00:00,5664.067,0.0,36.89 -2016-02-22 08:00:00,5979.317,0.0,38.25 -2016-02-22 09:00:00,6188.592,0.0,40.98 -2016-02-22 10:00:00,6271.642,0.0,42.72 -2016-02-22 11:00:00,6290.05,0.0,44.05 -2016-02-22 12:00:00,6292.758,0.0,45.71 -2016-02-22 13:00:00,6259.575,0.0,47.55 -2016-02-22 14:00:00,6235.033,0.0,50.04 -2016-02-22 15:00:00,6236.8,0.0,49.66 -2016-02-22 16:00:00,6305.875,0.0,50.41 -2016-02-22 17:00:00,6405.575,0.0,49.88 -2016-02-22 18:00:00,6479.15,0.0,48.14 -2016-02-22 19:00:00,6361.25,0.0,44.92 -2016-02-22 20:00:00,6177.258,0.0,41.51 -2016-02-22 21:00:00,5905.55,0.0,40.24 -2016-02-22 22:00:00,5570.967,0.0,41.95 -2016-02-22 23:00:00,5152.3,0.0,40.56 -2016-02-23 00:00:00,4807.192,0.0,38.59 -2016-02-23 01:00:00,4578.183,0.0,37.61 -2016-02-23 02:00:00,4462.517,0.0,36.57 -2016-02-23 03:00:00,4412.892,0.0,36.01 -2016-02-23 04:00:00,4446.692,0.0,35.24 -2016-02-23 05:00:00,4673.7,0.0,35.82 -2016-02-23 06:00:00,5181.992,0.0,35.3 -2016-02-23 07:00:00,5742.8,0.0,36.81 -2016-02-23 08:00:00,6145.783,0.0,37.91 -2016-02-23 09:00:00,6374.225,0.0,39.68 -2016-02-23 10:00:00,6503.142,0.0,39.68 -2016-02-23 11:00:00,6563.6,0.0,38.79 -2016-02-23 12:00:00,6617.633,0.0058,38.91 -2016-02-23 13:00:00,6656.033,0.0239,37.82 -2016-02-23 14:00:00,6654.317,0.0336,36.93 -2016-02-23 15:00:00,6705.117,0.0242,36.15 -2016-02-23 16:00:00,6791.775,0.0119,36.73 -2016-02-23 17:00:00,6870.033,0.0049,36.1 -2016-02-23 18:00:00,6825.425,0.0025,35.99 -2016-02-23 19:00:00,6646.692,0.0,35.9 -2016-02-23 20:00:00,6439.733,0.0258,36.51 -2016-02-23 21:00:00,6185.208,0.0074,35.9 -2016-02-23 22:00:00,5819.467,0.0,35.33 -2016-02-23 23:00:00,5377.283,0.0,35.17 -2016-02-24 00:00:00,4994.467,0.0,35.5 -2016-02-24 01:00:00,4729.283,0.0,35.65 -2016-02-24 02:00:00,4584.567,0.0,36.92 -2016-02-24 03:00:00,4553.1,0.0102,37.34 -2016-02-24 04:00:00,4495.525,0.0,36.7 -2016-02-24 05:00:00,4732.058,0.0,37.81 -2016-02-24 06:00:00,5254.15,0.0,39.09 -2016-02-24 07:00:00,5827.617,0.0,37.56 -2016-02-24 08:00:00,6218.425,0.0,39.72 -2016-02-24 09:00:00,6458.292,0.0,40.41 -2016-02-24 10:00:00,6580.0,0.0,39.84 -2016-02-24 11:00:00,6633.667,0.0667,39.43 -2016-02-24 12:00:00,6681.167,0.0554,41.71 -2016-02-24 13:00:00,6700.75,0.0035,43.32 -2016-02-24 14:00:00,6675.258,0.0,43.92 -2016-02-24 15:00:00,6637.883,0.0,45.11 -2016-02-24 16:00:00,6668.867,0.0,47.22 -2016-02-24 17:00:00,6739.342,0.0064,52.03 -2016-02-24 18:00:00,6651.408,0.0,54.03 -2016-02-24 19:00:00,6449.683,0.0533,55.71 -2016-02-24 20:00:00,6243.425,0.0577,55.48 -2016-02-24 21:00:00,5986.25,0.0,56.08 -2016-02-24 22:00:00,5620.633,0.0293,57.58 -2016-02-24 23:00:00,5195.108,0.0192,57.62 -2016-02-25 00:00:00,4809.592,0.0,57.59 -2016-02-25 01:00:00,4545.908,0.0325,58.52 -2016-02-25 02:00:00,4348.025,0.0,57.36 -2016-02-25 03:00:00,4254.717,0.0,56.68 -2016-02-25 04:00:00,4266.083,0.0,56.67 -2016-02-25 05:00:00,4520.325,0.0,53.14 -2016-02-25 06:00:00,5046.583,0.0,52.79 -2016-02-25 07:00:00,5565.158,0.0,51.71 -2016-02-25 08:00:00,5929.317,0.0,51.31 -2016-02-25 09:00:00,6215.625,0.0,52.28 -2016-02-25 10:00:00,6309.4,0.0,52.05 -2016-02-25 11:00:00,6338.683,0.0,49.72 -2016-02-25 12:00:00,6335.467,0.0,48.64 -2016-02-25 13:00:00,6333.445,0.0,47.94 -2016-02-25 14:00:00,6379.775,0.0,48.41 -2016-02-25 15:00:00,6461.15,0.0027,46.41 -2016-02-25 16:00:00,6527.95,0.0115,44.94 -2016-02-25 17:00:00,6583.683,0.0,43.13 -2016-02-25 18:00:00,6587.617,0.0,41.61 -2016-02-25 19:00:00,6447.8,0.0,40.14 -2016-02-25 20:00:00,6255.867,0.0,39.1 -2016-02-25 21:00:00,6021.15,0.0,38.98 -2016-02-25 22:00:00,5677.075,0.0038,38.33 -2016-02-25 23:00:00,5265.667,0.0,38.95 -2016-02-26 00:00:00,4889.758,0.0,37.64 -2016-02-26 01:00:00,4652.1,0.0,37.64 -2016-02-26 02:00:00,4514.358,0.0,36.86 -2016-02-26 03:00:00,4466.875,0.0,35.56 -2016-02-26 04:00:00,4481.65,0.0,35.06 -2016-02-26 05:00:00,4741.0,0.0,34.41 -2016-02-26 06:00:00,5260.542,0.0,33.35 -2016-02-26 07:00:00,5800.308,0.0,32.42 -2016-02-26 08:00:00,6175.8,0.0,32.44 -2016-02-26 09:00:00,6395.767,0.0,33.06 -2016-02-26 10:00:00,6470.233,0.0,33.01 -2016-02-26 11:00:00,6511.633,0.0,34.72 -2016-02-26 12:00:00,6495.008,0.0,36.21 -2016-02-26 13:00:00,6489.117,0.0,36.48 -2016-02-26 14:00:00,6432.5,0.0,36.73 -2016-02-26 15:00:00,6448.717,0.0,35.99 -2016-02-26 16:00:00,6491.075,0.0,35.05 -2016-02-26 17:00:00,6586.992,0.0,34.2 -2016-02-26 18:00:00,6642.417,0.0,33.0 -2016-02-26 19:00:00,6527.317,0.0,31.54 -2016-02-26 20:00:00,6332.525,0.0,30.62 -2016-02-26 21:00:00,6113.342,0.0,30.05 -2016-02-26 22:00:00,5852.017,0.0,29.28 -2016-02-26 23:00:00,5512.6,0.0,28.41 -2016-02-27 00:00:00,5191.517,0.0,28.07 -2016-02-27 01:00:00,4952.625,0.0,27.28 -2016-02-27 02:00:00,4800.283,0.0,26.85 -2016-02-27 03:00:00,4704.542,0.0,26.89 -2016-02-27 04:00:00,4678.258,0.0,26.52 -2016-02-27 05:00:00,4726.267,0.0,26.65 -2016-02-27 06:00:00,4865.65,0.0,26.93 -2016-02-27 07:00:00,5074.733,0.0,26.52 -2016-02-27 08:00:00,5325.083,0.0,28.34 -2016-02-27 09:00:00,5556.233,0.0,30.16 -2016-02-27 10:00:00,5722.333,0.0,31.83 -2016-02-27 11:00:00,5789.008,0.0,33.77 -2016-02-27 12:00:00,5784.958,0.0,35.34 -2016-02-27 13:00:00,5728.908,0.0,36.55 -2016-02-27 14:00:00,5673.983,0.0,38.24 -2016-02-27 15:00:00,5622.483,0.0,39.55 -2016-02-27 16:00:00,5631.508,0.0,40.33 -2016-02-27 17:00:00,5736.858,0.0,38.99 -2016-02-27 18:00:00,5943.183,0.0,38.78 -2016-02-27 19:00:00,5947.292,0.0,38.33 -2016-02-27 20:00:00,5832.733,0.0,37.4 -2016-02-27 21:00:00,5687.5,0.0,37.51 -2016-02-27 22:00:00,5489.942,0.0,37.89 -2016-02-27 23:00:00,5222.908,0.0,37.58 -2016-02-28 00:00:00,4951.058,0.0,36.28 -2016-02-28 01:00:00,4721.442,0.0,36.7 -2016-02-28 02:00:00,4561.175,0.0,36.81 -2016-02-28 03:00:00,4455.208,0.0,36.81 -2016-02-28 04:00:00,4415.575,0.0,36.36 -2016-02-28 05:00:00,4446.458,0.0,34.91 -2016-02-28 06:00:00,4516.35,0.0,35.98 -2016-02-28 07:00:00,4646.058,0.0,36.29 -2016-02-28 08:00:00,4873.95,0.0,37.46 -2016-02-28 09:00:00,5081.283,0.0,40.28 -2016-02-28 10:00:00,5239.858,0.0,43.85 -2016-02-28 11:00:00,5323.675,0.0,48.08 -2016-02-28 12:00:00,5350.15,0.0,51.81 -2016-02-28 13:00:00,5314.058,0.0,54.99 -2016-02-28 14:00:00,5277.333,0.0,54.93 -2016-02-28 15:00:00,5265.642,0.0,58.38 -2016-02-28 16:00:00,5290.808,0.0,58.8 -2016-02-28 17:00:00,5426.6,0.0,57.78 -2016-02-28 18:00:00,5697.358,0.0,56.52 -2016-02-28 19:00:00,5734.942,0.0,55.47 -2016-02-28 20:00:00,5672.125,0.0,51.32 -2016-02-28 21:00:00,5521.525,0.0,50.79 -2016-02-28 22:00:00,5261.492,0.0,50.52 -2016-02-28 23:00:00,4948.208,0.0,47.25 -2016-02-29 00:00:00,4648.7,0.0,48.1 -2016-02-29 01:00:00,4428.133,0.0,46.34 -2016-02-29 02:00:00,4289.308,0.0,45.92 -2016-02-29 03:00:00,4228.767,0.0,47.82 -2016-02-29 04:00:00,4267.575,0.0,45.81 -2016-02-29 05:00:00,4498.95,0.0,45.84 -2016-02-29 06:00:00,4995.592,0.0,44.24 -2016-02-29 07:00:00,5506.7,0.0,44.22 -2016-02-29 08:00:00,5847.717,0.0,45.66 -2016-02-29 09:00:00,6145.617,0.0,50.09 -2016-02-29 10:00:00,6301.725,0.0022,52.54 -2016-02-29 11:00:00,6376.983,0.0677,53.55 -2016-02-29 12:00:00,6346.175,0.0024,50.7 -2016-02-29 13:00:00,6282.25,0.0,50.73 -2016-02-29 14:00:00,6214.95,0.0,53.1 -2016-02-29 15:00:00,6202.9,0.0,57.6 -2016-02-29 16:00:00,6215.092,0.0,58.39 -2016-02-29 17:00:00,6289.258,0.0,57.37 -2016-02-29 18:00:00,6368.158,0.0,54.91 -2016-02-29 19:00:00,6278.592,0.0,52.26 -2016-02-29 20:00:00,6088.842,0.0,48.88 -2016-02-29 21:00:00,5832.475,0.0,47.95 -2016-02-29 22:00:00,5478.725,0.0,46.96 -2016-02-29 23:00:00,5053.717,0.0,45.62 -2016-03-01 00:00:00,4669.85,0.0,45.84 -2016-03-01 01:00:00,4431.0,0.0,45.34 -2016-03-01 02:00:00,4302.942,0.0,45.63 -2016-03-01 03:00:00,4237.142,0.0,44.66 -2016-03-01 04:00:00,4263.467,0.0,43.37 -2016-03-01 05:00:00,4510.9,0.0,41.55 -2016-03-01 06:00:00,5023.442,0.0,39.86 -2016-03-01 07:00:00,5558.658,0.0,38.82 -2016-03-01 08:00:00,5926.95,0.0,39.11 -2016-03-01 09:00:00,6169.725,0.0,39.31 -2016-03-01 10:00:00,6251.067,0.0,41.32 -2016-03-01 11:00:00,6223.158,0.0,42.79 -2016-03-01 12:00:00,6224.875,0.0,45.23 -2016-03-01 13:00:00,6204.325,0.0,46.68 -2016-03-01 14:00:00,6173.858,0.0,48.1 -2016-03-01 15:00:00,6190.967,0.0,49.41 -2016-03-01 16:00:00,6244.8,0.0,47.73 -2016-03-01 17:00:00,6339.342,0.0,44.74 -2016-03-01 18:00:00,6434.458,0.0,44.07 -2016-03-01 19:00:00,6310.075,0.0,43.59 -2016-03-01 20:00:00,6112.033,0.0,44.33 -2016-03-01 21:00:00,5870.625,0.0,45.83 -2016-03-01 22:00:00,5523.9,0.0,47.37 -2016-03-01 23:00:00,5080.742,0.0,49.19 -2016-03-02 00:00:00,4684.042,0.0,50.09 -2016-03-02 01:00:00,4398.8,0.0233,51.44 -2016-03-02 02:00:00,4259.9,0.0094,51.85 -2016-03-02 03:00:00,4194.092,0.1096,51.07 -2016-03-02 04:00:00,4210.767,0.013,49.92 -2016-03-02 05:00:00,4432.067,0.1253,51.71 -2016-03-02 06:00:00,4960.458,0.009,50.97 -2016-03-02 07:00:00,5506.692,0.0,49.72 -2016-03-02 08:00:00,5869.375,0.0,48.24 -2016-03-02 09:00:00,6104.192,0.0,44.79 -2016-03-02 10:00:00,6197.067,0.0,42.3 -2016-03-02 11:00:00,6242.525,0.0,42.59 -2016-03-02 12:00:00,6264.017,0.0,41.8 -2016-03-02 13:00:00,6254.108,0.0,41.04 -2016-03-02 14:00:00,6236.867,0.0,41.21 -2016-03-02 15:00:00,6265.525,0.0,40.49 -2016-03-02 16:00:00,6316.983,0.0,39.9 -2016-03-02 17:00:00,6357.6,0.0,39.13 -2016-03-02 18:00:00,6366.467,0.0,37.42 -2016-03-02 19:00:00,6376.992,0.0,34.89 -2016-03-02 20:00:00,6262.45,0.0,33.74 -2016-03-02 21:00:00,6051.075,0.0,32.22 -2016-03-02 22:00:00,5741.525,0.0,30.9 -2016-03-02 23:00:00,5322.05,0.0,30.28 -2016-03-03 00:00:00,4953.267,0.0,29.2 -2016-03-03 01:00:00,4703.325,0.0,27.99 -2016-03-03 02:00:00,4573.683,0.0,27.92 -2016-03-03 03:00:00,4524.883,0.0,27.68 -2016-03-03 04:00:00,4563.845,0.0,27.04 -2016-03-03 05:00:00,4800.767,0.0,26.35 -2016-03-03 06:00:00,5315.392,0.0,25.88 -2016-03-03 07:00:00,5876.658,0.0,26.12 -2016-03-03 08:00:00,6249.517,0.0,26.89 -2016-03-03 09:00:00,6466.333,0.0,27.57 -2016-03-03 10:00:00,6534.933,0.0,29.33 -2016-03-03 11:00:00,6549.7,0.0,31.56 -2016-03-03 12:00:00,6554.55,0.0,32.75 -2016-03-03 13:00:00,6545.85,0.0,34.09 -2016-03-03 14:00:00,6534.808,0.0,34.71 -2016-03-03 15:00:00,6507.15,0.0,35.45 -2016-03-03 16:00:00,6562.733,0.0,35.99 -2016-03-03 17:00:00,6646.375,0.0,35.05 -2016-03-03 18:00:00,6697.8,0.0,34.85 -2016-03-03 19:00:00,6561.508,0.0,34.7 -2016-03-03 20:00:00,6373.45,0.0,34.36 -2016-03-03 21:00:00,6143.8,0.0,34.1 -2016-03-03 22:00:00,5783.017,0.0,34.11 -2016-03-03 23:00:00,5377.883,0.0,33.81 -2016-03-04 00:00:00,4996.425,0.0032,33.86 -2016-03-04 01:00:00,4762.45,0.0028,33.17 -2016-03-04 02:00:00,4622.125,0.0043,31.58 -2016-03-04 03:00:00,4568.158,0.0026,31.45 -2016-03-04 04:00:00,4610.633,0.0049,30.84 -2016-03-04 05:00:00,4834.0,0.0044,30.14 -2016-03-04 06:00:00,5344.342,0.0,30.21 -2016-03-04 07:00:00,5923.825,0.0,29.87 -2016-03-04 08:00:00,6316.95,0.003,30.14 -2016-03-04 09:00:00,6576.5,0.003,30.52 -2016-03-04 10:00:00,6690.658,0.0059,31.14 -2016-03-04 11:00:00,6729.283,0.0,30.15 -2016-03-04 12:00:00,6724.925,0.0,31.68 -2016-03-04 13:00:00,6689.592,0.0,32.65 -2016-03-04 14:00:00,6609.783,0.0,34.49 -2016-03-04 15:00:00,6524.242,0.0,36.08 -2016-03-04 16:00:00,6525.75,0.0,37.62 -2016-03-04 17:00:00,6556.533,0.0,38.12 -2016-03-04 18:00:00,6588.6,0.0,38.14 -2016-03-04 19:00:00,6486.908,0.0,36.52 -2016-03-04 20:00:00,6299.975,0.0,35.59 -2016-03-04 21:00:00,6069.917,0.0,34.43 -2016-03-04 22:00:00,5787.125,0.0,34.1 -2016-03-04 23:00:00,5438.933,0.0,33.39 -2016-03-05 00:00:00,5090.658,0.0,32.9 -2016-03-05 01:00:00,4859.192,0.0,31.91 -2016-03-05 02:00:00,4710.033,0.0,31.34 -2016-03-05 03:00:00,4617.425,0.0,30.18 -2016-03-05 04:00:00,4590.633,0.0,29.69 -2016-03-05 05:00:00,4672.1,0.0,28.68 -2016-03-05 06:00:00,4816.317,0.0,28.41 -2016-03-05 07:00:00,5045.475,0.0,28.46 -2016-03-05 08:00:00,5328.017,0.0,29.64 -2016-03-05 09:00:00,5540.792,0.0,30.93 -2016-03-05 10:00:00,5682.0,0.0,33.12 -2016-03-05 11:00:00,5744.992,0.0,35.03 -2016-03-05 12:00:00,5759.4,0.0,36.37 -2016-03-05 13:00:00,5710.383,0.0,37.82 -2016-03-05 14:00:00,5632.958,0.0,38.5 -2016-03-05 15:00:00,5611.083,0.0,39.51 -2016-03-05 16:00:00,5614.608,0.0,39.49 -2016-03-05 17:00:00,5722.383,0.0,39.45 -2016-03-05 18:00:00,5915.308,0.0,38.15 -2016-03-05 19:00:00,5923.683,0.0,36.61 -2016-03-05 20:00:00,5826.858,0.0,35.18 -2016-03-05 21:00:00,5691.858,0.0,34.43 -2016-03-05 22:00:00,5486.533,0.0,33.0 -2016-03-05 23:00:00,5231.975,0.0,33.93 -2016-03-06 00:00:00,4949.742,0.0,33.56 -2016-03-06 01:00:00,4721.683,0.0,32.53 -2016-03-06 02:00:00,4556.95,0.0,32.73 -2016-03-06 03:00:00,4477.042,0.0,31.98 -2016-03-06 04:00:00,4442.817,0.0,32.26 -2016-03-06 05:00:00,4488.0,0.0,31.34 -2016-03-06 06:00:00,4578.342,0.0,30.98 -2016-03-06 07:00:00,4723.683,0.0,31.59 -2016-03-06 08:00:00,4949.058,0.0,33.19 -2016-03-06 09:00:00,5209.083,0.0,35.68 -2016-03-06 10:00:00,5363.175,0.0,37.19 -2016-03-06 11:00:00,5439.475,0.0,37.82 -2016-03-06 12:00:00,5440.95,0.0,39.76 -2016-03-06 13:00:00,5435.433,0.0,41.92 -2016-03-06 14:00:00,5407.925,0.0,42.36 -2016-03-06 15:00:00,5397.267,0.0,43.98 -2016-03-06 16:00:00,5441.15,0.0,44.01 -2016-03-06 17:00:00,5546.617,0.0,43.52 -2016-03-06 18:00:00,5826.642,0.0,42.5 -2016-03-06 19:00:00,5884.1,0.0,41.64 -2016-03-06 20:00:00,5790.867,0.0,39.42 -2016-03-06 21:00:00,5643.15,0.0,38.74 -2016-03-06 22:00:00,5390.683,0.0,38.29 -2016-03-06 23:00:00,5042.917,0.0,36.81 -2016-03-07 00:00:00,4739.925,0.0,36.83 -2016-03-07 01:00:00,4546.833,0.0,36.44 -2016-03-07 02:00:00,4424.833,0.0,36.23 -2016-03-07 03:00:00,4370.9,0.0,35.5 -2016-03-07 04:00:00,4412.983,0.0,35.0 -2016-03-07 05:00:00,4661.383,0.0,35.56 -2016-03-07 06:00:00,5153.817,0.0,35.87 -2016-03-07 07:00:00,5683.942,0.0,35.82 -2016-03-07 08:00:00,6030.383,0.0,37.14 -2016-03-07 09:00:00,6232.467,0.0,41.32 -2016-03-07 10:00:00,6290.458,0.0,42.95 -2016-03-07 11:00:00,6317.733,0.0,46.58 -2016-03-07 12:00:00,6286.05,0.0,48.85 -2016-03-07 13:00:00,6265.8,0.0,51.72 -2016-03-07 14:00:00,6219.25,0.0,54.43 -2016-03-07 15:00:00,6214.033,0.0,56.77 -2016-03-07 16:00:00,6224.967,0.0,57.98 -2016-03-07 17:00:00,6252.8,0.0,57.93 -2016-03-07 18:00:00,6310.533,0.0,57.29 -2016-03-07 19:00:00,6244.067,0.0,55.99 -2016-03-07 20:00:00,6053.075,0.0,54.89 -2016-03-07 21:00:00,5809.075,0.0,53.41 -2016-03-07 22:00:00,5443.942,0.0,52.32 -2016-03-07 23:00:00,5013.25,0.0,51.16 -2016-03-08 00:00:00,4617.625,0.0,49.5 -2016-03-08 01:00:00,4375.35,0.0,50.05 -2016-03-08 02:00:00,4235.267,0.0,48.46 -2016-03-08 03:00:00,4180.017,0.0,46.85 -2016-03-08 04:00:00,4213.767,0.0,46.88 -2016-03-08 05:00:00,4445.258,0.0,46.32 -2016-03-08 06:00:00,4922.458,0.0,45.48 -2016-03-08 07:00:00,5482.25,0.0,43.91 -2016-03-08 08:00:00,5825.167,0.0,48.25 -2016-03-08 09:00:00,6010.633,0.0,53.77 -2016-03-08 10:00:00,6106.442,0.0,57.53 -2016-03-08 11:00:00,6128.142,0.0,58.8 -2016-03-08 12:00:00,6130.8,0.0,61.47 -2016-03-08 13:00:00,6124.425,0.0,62.7 -2016-03-08 14:00:00,6098.725,0.0,61.51 -2016-03-08 15:00:00,6121.733,0.0,59.29 -2016-03-08 16:00:00,6152.717,0.0,57.13 -2016-03-08 17:00:00,6198.95,0.0,55.61 -2016-03-08 18:00:00,6269.825,0.0,52.99 -2016-03-08 19:00:00,6197.258,0.0,51.69 -2016-03-08 20:00:00,6000.442,0.0,50.18 -2016-03-08 21:00:00,5751.175,0.0,49.31 -2016-03-08 22:00:00,5389.975,0.0,48.22 -2016-03-08 23:00:00,4961.825,0.0,47.5 -2016-03-09 00:00:00,4586.667,0.0,47.07 -2016-03-09 01:00:00,4338.25,0.0,46.44 -2016-03-09 02:00:00,4157.275,0.0,45.11 -2016-03-09 03:00:00,4103.183,0.0,44.94 -2016-03-09 04:00:00,4104.082,0.0,44.17 -2016-03-09 05:00:00,4349.4,0.0,43.45 -2016-03-09 06:00:00,4893.917,0.0,43.01 -2016-03-09 07:00:00,5418.092,0.0,43.9 -2016-03-09 08:00:00,5782.317,0.0,47.45 -2016-03-09 09:00:00,6000.192,0.0,51.15 -2016-03-09 10:00:00,6074.117,0.0,56.38 -2016-03-09 11:00:00,6150.442,0.0,62.24 -2016-03-09 12:00:00,6185.25,0.0,67.62 -2016-03-09 13:00:00,6213.875,0.0,71.58 -2016-03-09 14:00:00,6203.367,0.0,72.3 -2016-03-09 15:00:00,6213.283,0.0,72.67 -2016-03-09 16:00:00,6260.317,0.0,71.08 -2016-03-09 17:00:00,6262.358,0.0,68.79 -2016-03-09 18:00:00,6265.617,0.0,67.94 -2016-03-09 19:00:00,6162.542,0.0,65.99 -2016-03-09 20:00:00,5953.308,0.0,65.27 -2016-03-09 21:00:00,5690.358,0.0,65.62 -2016-03-09 22:00:00,5358.833,0.0,66.33 -2016-03-09 23:00:00,4941.525,0.0,65.4 -2016-03-10 00:00:00,4573.15,0.0,64.45 -2016-03-10 01:00:00,4321.008,0.0,64.49 -2016-03-10 02:00:00,4180.533,0.0,62.44 -2016-03-10 03:00:00,4127.183,0.0,61.51 -2016-03-10 04:00:00,4123.767,0.0,60.83 -2016-03-10 05:00:00,4332.842,0.0,60.05 -2016-03-10 06:00:00,4802.092,0.0,59.79 -2016-03-10 07:00:00,5386.608,0.0,60.39 -2016-03-10 08:00:00,5802.267,0.0,62.53 -2016-03-10 09:00:00,6086.875,0.0,64.72 -2016-03-10 10:00:00,6257.292,0.0,67.96 -2016-03-10 11:00:00,6344.742,0.0,72.36 -2016-03-10 12:00:00,6379.333,0.0,74.9 -2016-03-10 13:00:00,6413.1,0.0,74.62 -2016-03-10 14:00:00,6425.733,0.0,74.34 -2016-03-10 15:00:00,6440.808,0.0,75.96 -2016-03-10 16:00:00,6489.775,0.0,74.54 -2016-03-10 17:00:00,6527.458,0.0,74.45 -2016-03-10 18:00:00,6518.892,0.0,73.68 -2016-03-10 19:00:00,6353.442,0.0,69.66 -2016-03-10 20:00:00,6097.867,0.0,70.5 -2016-03-10 21:00:00,5869.5,0.0,69.75 -2016-03-10 22:00:00,5478.308,0.0,67.85 -2016-03-10 23:00:00,5076.233,0.0,67.31 -2016-03-11 00:00:00,4688.433,0.0358,66.43 -2016-03-11 01:00:00,4430.375,0.0,65.22 -2016-03-11 02:00:00,4241.65,0.0,64.31 -2016-03-11 03:00:00,4145.975,0.0191,58.29 -2016-03-11 04:00:00,4147.35,0.0,56.16 -2016-03-11 05:00:00,4350.35,0.0028,56.71 -2016-03-11 06:00:00,4847.475,0.0064,56.48 -2016-03-11 07:00:00,5406.7,0.0,56.29 -2016-03-11 08:00:00,5812.858,0.0,57.1 -2016-03-11 09:00:00,6026.217,0.0,57.29 -2016-03-11 10:00:00,6098.683,0.0,57.09 -2016-03-11 11:00:00,6125.842,0.0,57.47 -2016-03-11 12:00:00,6138.833,0.0,58.85 -2016-03-11 13:00:00,6124.767,0.0,60.33 -2016-03-11 14:00:00,6110.45,0.0,60.98 -2016-03-11 15:00:00,6120.65,0.0,62.34 -2016-03-11 16:00:00,6139.442,0.0,62.22 -2016-03-11 17:00:00,6121.858,0.0,60.52 -2016-03-11 18:00:00,6088.392,0.0,58.44 -2016-03-11 19:00:00,5951.5,0.0,56.15 -2016-03-11 20:00:00,5742.017,0.0,53.9 -2016-03-11 21:00:00,5499.667,0.0,51.63 -2016-03-11 22:00:00,5236.233,0.0,50.51 -2016-03-11 23:00:00,4893.742,0.0,48.53 -2016-03-12 00:00:00,4548.075,0.0,47.85 -2016-03-12 01:00:00,4250.892,0.0,46.26 -2016-03-12 02:00:00,4095.242,0.0,44.73 -2016-03-12 03:00:00,4023.625,0.0,43.68 -2016-03-12 04:00:00,3996.9,0.0,41.39 -2016-03-12 05:00:00,4064.1,0.0,40.89 -2016-03-12 06:00:00,4194.483,0.0,40.29 -2016-03-12 07:00:00,4434.292,0.0,39.83 -2016-03-12 08:00:00,4768.55,0.0,42.2 -2016-03-12 09:00:00,5005.658,0.0,45.22 -2016-03-12 10:00:00,5169.775,0.0,48.91 -2016-03-12 11:00:00,5262.742,0.0,51.64 -2016-03-12 12:00:00,5268.125,0.0,53.92 -2016-03-12 13:00:00,5238.292,0.0,56.03 -2016-03-12 14:00:00,5206.533,0.0,56.83 -2016-03-12 15:00:00,5200.158,0.0,56.34 -2016-03-12 16:00:00,5222.517,0.0,55.62 -2016-03-12 17:00:00,5291.158,0.0,53.73 -2016-03-12 18:00:00,5459.317,0.0,53.38 -2016-03-12 19:00:00,5485.675,0.0,52.78 -2016-03-12 20:00:00,5391.033,0.0,53.41 -2016-03-12 21:00:00,5250.358,0.0,54.36 -2016-03-12 22:00:00,5025.317,0.0,53.56 -2016-03-12 23:00:00,4787.067,0.0,53.45 -2016-03-13 00:00:00,4499.508,0.0,52.08 -2016-03-13 01:00:00,4235.242,0.0,50.8 -2016-03-13 03:00:00,4083.975,0.0,50.35 -2016-03-13 04:00:00,3999.967,0.0,49.36 -2016-03-13 05:00:00,3988.492,0.0,49.27 -2016-03-13 06:00:00,4119.233,0.0,49.32 -2016-03-13 07:00:00,4219.342,0.0,48.83 -2016-03-13 08:00:00,4416.667,0.0,50.18 -2016-03-13 09:00:00,4654.683,0.0,51.92 -2016-03-13 10:00:00,4850.983,0.0,55.74 -2016-03-13 11:00:00,5021.358,0.0,59.57 -2016-03-13 12:00:00,5105.792,0.0,60.61 -2016-03-13 13:00:00,5115.667,0.0,60.09 -2016-03-13 14:00:00,5119.558,0.0,60.28 -2016-03-13 15:00:00,5130.058,0.0,60.67 -2016-03-13 16:00:00,5141.2,0.0,60.8 -2016-03-13 17:00:00,5191.642,0.0,60.59 -2016-03-13 18:00:00,5294.233,0.0,59.42 -2016-03-13 19:00:00,5440.217,0.0,58.13 -2016-03-13 20:00:00,5438.267,0.0029,55.21 -2016-03-13 21:00:00,5333.208,0.0124,54.32 -2016-03-13 22:00:00,5086.892,0.0054,53.53 -2016-03-13 23:00:00,4739.883,0.0054,51.94 -2016-03-14 00:00:00,4426.792,0.0068,51.64 -2016-03-14 01:00:00,4164.1,0.0234,51.69 -2016-03-14 02:00:00,4051.542,0.006,50.84 -2016-03-14 03:00:00,3932.758,0.0255,50.18 -2016-03-14 04:00:00,3976.025,0.0214,50.22 -2016-03-14 05:00:00,4239.542,0.0273,49.34 -2016-03-14 06:00:00,4774.208,0.0042,48.12 -2016-03-14 07:00:00,5390.908,0.0613,46.62 -2016-03-14 08:00:00,5798.725,0.0031,45.69 -2016-03-14 09:00:00,6085.775,0.1135,44.8 -2016-03-14 10:00:00,6217.858,0.0,43.42 -2016-03-14 11:00:00,6278.625,0.0,43.08 -2016-03-14 12:00:00,6326.633,0.0,43.11 -2016-03-14 13:00:00,6340.242,0.051,44.69 -2016-03-14 14:00:00,6310.508,0.0029,42.43 -2016-03-14 15:00:00,6329.025,0.0,41.19 -2016-03-14 16:00:00,6369.267,0.0,41.68 -2016-03-14 17:00:00,6398.725,0.0,40.5 -2016-03-14 18:00:00,6314.858,0.0,40.94 -2016-03-14 19:00:00,6291.375,0.0,42.64 -2016-03-14 20:00:00,6143.442,0.0,43.11 -2016-03-14 21:00:00,5890.158,0.0049,42.29 -2016-03-14 22:00:00,5502.4,0.0,42.06 -2016-03-14 23:00:00,5068.267,0.0039,42.81 -2016-03-15 00:00:00,4657.4,0.0,43.17 -2016-03-15 01:00:00,4391.117,0.0,43.71 -2016-03-15 02:00:00,4240.967,0.0,45.65 -2016-03-15 03:00:00,4172.525,0.0,44.1 -2016-03-15 04:00:00,4179.842,0.0,44.32 -2016-03-15 05:00:00,4369.317,0.0,45.18 -2016-03-15 06:00:00,4902.858,0.0,44.78 -2016-03-15 07:00:00,5504.333,0.0,44.72 -2016-03-15 08:00:00,5874.458,0.0,45.61 -2016-03-15 09:00:00,6101.8,0.0,46.16 -2016-03-15 10:00:00,6196.5,0.0,45.83 -2016-03-15 11:00:00,6194.767,0.0,47.2 -2016-03-15 12:00:00,6189.35,0.0,49.17 -2016-03-15 13:00:00,6187.283,0.0,52.01 -2016-03-15 14:00:00,6176.858,0.0,53.02 -2016-03-15 15:00:00,6178.542,0.0,54.57 -2016-03-15 16:00:00,6211.267,0.0,54.27 -2016-03-15 17:00:00,6187.267,0.0,54.56 -2016-03-15 18:00:00,6013.892,0.0,54.06 -2016-03-15 19:00:00,6048.417,0.0,54.87 -2016-03-15 20:00:00,6015.925,0.0,53.48 -2016-03-15 21:00:00,5822.808,0.0,51.77 -2016-03-15 22:00:00,5492.817,0.0,51.97 -2016-03-15 23:00:00,5059.442,0.0,49.83 -2016-03-16 00:00:00,4652.45,0.0,50.09 -2016-03-16 01:00:00,4354.667,0.0,50.64 -2016-03-16 02:00:00,4159.042,0.0,50.3 -2016-03-16 03:00:00,4092.383,0.0,48.18 -2016-03-16 04:00:00,4113.433,0.0,48.56 -2016-03-16 05:00:00,4343.3,0.0,46.66 -2016-03-16 06:00:00,4876.992,0.0,45.71 -2016-03-16 07:00:00,5438.3,0.0,45.72 -2016-03-16 08:00:00,5795.45,0.0,47.55 -2016-03-16 09:00:00,5995.108,0.0,50.73 -2016-03-16 10:00:00,6078.717,0.0,52.47 -2016-03-16 11:00:00,6102.292,0.0,56.13 -2016-03-16 12:00:00,6056.158,0.0,58.6 -2016-03-16 13:00:00,6044.325,0.0,60.76 -2016-03-16 14:00:00,6033.233,0.0,61.49 -2016-03-16 15:00:00,6044.708,0.0,62.49 -2016-03-16 16:00:00,6057.775,0.0,61.7 -2016-03-16 17:00:00,6059.333,0.0,59.67 -2016-03-16 18:00:00,6024.267,0.0,55.83 -2016-03-16 19:00:00,6048.383,0.0,53.6 -2016-03-16 20:00:00,5903.142,0.0031,51.51 -2016-03-16 21:00:00,5699.133,0.0,50.88 -2016-03-16 22:00:00,5374.033,0.0,50.85 -2016-03-16 23:00:00,4949.158,0.0,49.59 -2016-03-17 00:00:00,4562.333,0.0025,49.51 -2016-03-17 01:00:00,4315.858,0.0,48.51 -2016-03-17 02:00:00,4168.267,0.0,47.64 -2016-03-17 03:00:00,4091.1,0.0,46.97 -2016-03-17 04:00:00,4116.558,0.0,46.33 -2016-03-17 05:00:00,4325.233,0.0,45.25 -2016-03-17 06:00:00,4821.5,0.0,45.68 -2016-03-17 07:00:00,5390.733,0.0,46.37 -2016-03-17 08:00:00,5765.758,0.0,47.65 -2016-03-17 09:00:00,5967.942,0.0,49.43 -2016-03-17 10:00:00,6059.85,0.0,51.14 -2016-03-17 11:00:00,6077.883,0.0,54.14 -2016-03-17 12:00:00,6101.692,0.0,57.49 -2016-03-17 13:00:00,6135.133,0.0,60.19 -2016-03-17 14:00:00,6094.933,0.0,61.78 -2016-03-17 15:00:00,6073.392,0.0,59.11 -2016-03-17 16:00:00,6092.6,0.0,56.81 -2016-03-17 17:00:00,6123.575,0.0036,58.76 -2016-03-17 18:00:00,6013.308,0.0,55.09 -2016-03-17 19:00:00,5965.092,0.0,52.0 -2016-03-17 20:00:00,5877.167,0.0,51.27 -2016-03-17 21:00:00,5665.35,0.0,51.91 -2016-03-17 22:00:00,5361.342,0.0,51.8 -2016-03-17 23:00:00,4966.708,0.0,49.93 -2016-03-18 00:00:00,4574.467,0.0,50.24 -2016-03-18 01:00:00,4309.608,0.0,49.47 -2016-03-18 02:00:00,4153.483,0.0,47.96 -2016-03-18 03:00:00,4085.742,0.0,47.91 -2016-03-18 04:00:00,4107.725,0.0,47.89 -2016-03-18 05:00:00,4305.617,0.0,46.1 -2016-03-18 06:00:00,4841.867,0.0,45.79 -2016-03-18 07:00:00,5386.367,0.0,46.06 -2016-03-18 08:00:00,5727.792,0.0,46.95 -2016-03-18 09:00:00,5995.867,0.0,48.25 -2016-03-18 10:00:00,6066.9,0.0,51.1 -2016-03-18 11:00:00,6098.358,0.0,53.13 -2016-03-18 12:00:00,6099.758,0.0,54.77 -2016-03-18 13:00:00,6099.108,0.0,54.76 -2016-03-18 14:00:00,6060.25,0.0,56.33 -2016-03-18 15:00:00,6039.658,0.0027,56.14 -2016-03-18 16:00:00,6046.067,0.002,55.31 -2016-03-18 17:00:00,6059.458,0.0,55.21 -2016-03-18 18:00:00,5937.892,0.0,53.26 -2016-03-18 19:00:00,5856.292,0.0,51.25 -2016-03-18 20:00:00,5793.75,0.0,49.91 -2016-03-18 21:00:00,5630.992,0.0,48.75 -2016-03-18 22:00:00,5373.175,0.0,47.13 -2016-03-18 23:00:00,5030.742,0.0,44.87 -2016-03-19 00:00:00,4677.433,0.0,43.7 -2016-03-19 01:00:00,4439.142,0.0,42.28 -2016-03-19 02:00:00,4282.625,0.0,41.04 -2016-03-19 03:00:00,4195.0,0.0,39.7 -2016-03-19 04:00:00,4165.683,0.0,38.61 -2016-03-19 05:00:00,4227.742,0.0,37.52 -2016-03-19 06:00:00,4386.825,0.0,35.96 -2016-03-19 07:00:00,4612.442,0.0,35.41 -2016-03-19 08:00:00,4896.517,0.0,35.6 -2016-03-19 09:00:00,5142.833,0.0,37.81 -2016-03-19 10:00:00,5320.367,0.0,39.55 -2016-03-19 11:00:00,5404.808,0.0,41.11 -2016-03-19 12:00:00,5438.875,0.0,42.09 -2016-03-19 13:00:00,5401.55,0.0,43.78 -2016-03-19 14:00:00,5393.708,0.0,45.23 -2016-03-19 15:00:00,5375.475,0.0,44.8 -2016-03-19 16:00:00,5357.25,0.0,46.12 -2016-03-19 17:00:00,5366.408,0.0,45.97 -2016-03-19 18:00:00,5428.3,0.0,45.47 -2016-03-19 19:00:00,5550.383,0.0,44.68 -2016-03-19 20:00:00,5540.442,0.0,44.09 -2016-03-19 21:00:00,5418.8,0.0,43.86 -2016-03-19 22:00:00,5228.05,0.0,43.04 -2016-03-19 23:00:00,4988.792,0.0,42.66 -2016-03-20 00:00:00,4717.417,0.0,40.87 -2016-03-20 01:00:00,4488.083,0.0,38.87 -2016-03-20 02:00:00,4335.692,0.0,37.64 -2016-03-20 03:00:00,4256.392,0.0,36.4 -2016-03-20 04:00:00,4207.758,0.0,35.74 -2016-03-20 05:00:00,4259.167,0.0,34.78 -2016-03-20 06:00:00,4379.058,0.0,33.98 -2016-03-20 07:00:00,4514.008,0.0,33.45 -2016-03-20 08:00:00,4746.667,0.0,33.09 -2016-03-20 09:00:00,5003.058,0.0,33.76 -2016-03-20 10:00:00,5235.467,0.0,34.67 -2016-03-20 11:00:00,5393.933,0.0,35.06 -2016-03-20 12:00:00,5438.792,0.0,36.13 -2016-03-20 13:00:00,5425.625,0.0,36.71 -2016-03-20 14:00:00,5380.858,0.0,38.06 -2016-03-20 15:00:00,5356.867,0.0,39.42 -2016-03-20 16:00:00,5390.517,0.0,40.2 -2016-03-20 17:00:00,5510.342,0.0,39.44 -2016-03-20 18:00:00,5629.992,0.0119,39.29 -2016-03-20 19:00:00,5762.358,0.0148,37.97 -2016-03-20 20:00:00,5760.367,0.0128,37.54 -2016-03-20 21:00:00,5632.417,0.0202,36.56 -2016-03-20 22:00:00,5372.525,0.017,34.4 -2016-03-20 23:00:00,5031.908,0.0125,34.21 -2016-03-21 00:00:00,4729.983,0.0148,34.04 -2016-03-21 01:00:00,4525.708,0.0023,33.56 -2016-03-21 02:00:00,4382.367,0.0245,33.62 -2016-03-21 03:00:00,4336.025,0.0319,33.51 -2016-03-21 04:00:00,4365.717,0.0239,32.58 -2016-03-21 05:00:00,4603.575,0.0035,32.38 -2016-03-21 06:00:00,5105.442,0.0,32.2 -2016-03-21 07:00:00,5652.867,0.0,32.94 -2016-03-21 08:00:00,6045.683,0.0,33.86 -2016-03-21 09:00:00,6226.367,0.0,35.0 -2016-03-21 10:00:00,6284.567,0.0,37.3 -2016-03-21 11:00:00,6285.858,0.0,40.12 -2016-03-21 12:00:00,6289.283,0.0,43.3 -2016-03-21 13:00:00,6258.775,0.0,46.28 -2016-03-21 14:00:00,6211.542,0.0,47.7 -2016-03-21 15:00:00,6194.217,0.0,47.98 -2016-03-21 16:00:00,6194.575,0.0,48.15 -2016-03-21 17:00:00,6197.617,0.0,47.1 -2016-03-21 18:00:00,6089.892,0.0,45.1 -2016-03-21 19:00:00,6148.167,0.0,43.32 -2016-03-21 20:00:00,6123.875,0.0,41.95 -2016-03-21 21:00:00,5906.317,0.0,40.86 -2016-03-21 22:00:00,5579.942,0.0,39.92 -2016-03-21 23:00:00,5158.617,0.0,38.82 -2016-03-22 00:00:00,4798.633,0.0,37.74 -2016-03-22 01:00:00,4551.142,0.0,36.66 -2016-03-22 02:00:00,4407.367,0.0,34.83 -2016-03-22 03:00:00,4343.458,0.0,35.24 -2016-03-22 04:00:00,4367.192,0.0,34.88 -2016-03-22 05:00:00,4564.891,0.0,34.51 -2016-03-22 06:00:00,5087.25,0.0,34.16 -2016-03-22 07:00:00,5634.225,0.0,35.7 -2016-03-22 08:00:00,5947.342,0.0,35.71 -2016-03-22 09:00:00,6156.067,0.0,38.06 -2016-03-22 10:00:00,6247.725,0.0,40.76 -2016-03-22 11:00:00,6253.358,0.0,43.33 -2016-03-22 12:00:00,6228.008,0.0,45.98 -2016-03-22 13:00:00,6217.467,0.0,47.83 -2016-03-22 14:00:00,6147.542,0.0,50.79 -2016-03-22 15:00:00,6135.333,0.0,52.29 -2016-03-22 16:00:00,6141.667,0.0,54.43 -2016-03-22 17:00:00,6120.958,0.0,53.41 -2016-03-22 18:00:00,6003.475,0.0,52.68 -2016-03-22 19:00:00,6045.417,0.0,51.82 -2016-03-22 20:00:00,6010.633,0.0,51.16 -2016-03-22 21:00:00,5796.308,0.0,50.26 -2016-03-22 22:00:00,5480.042,0.0,49.49 -2016-03-22 23:00:00,5037.242,0.0,48.55 -2016-03-23 00:00:00,4653.467,0.0,46.82 -2016-03-23 01:00:00,4398.108,0.0,46.57 -2016-03-23 02:00:00,4227.967,0.0,45.37 -2016-03-23 03:00:00,4158.067,0.0,46.98 -2016-03-23 04:00:00,4186.317,0.0,45.24 -2016-03-23 05:00:00,4409.117,0.0,45.74 -2016-03-23 06:00:00,4925.017,0.0,46.28 -2016-03-23 07:00:00,5476.717,0.0,48.7 -2016-03-23 08:00:00,5858.317,0.0,50.31 -2016-03-23 09:00:00,6016.175,0.0,50.75 -2016-03-23 10:00:00,6090.708,0.0,55.14 -2016-03-23 11:00:00,6128.192,0.0,58.44 -2016-03-23 12:00:00,6133.483,0.0,60.48 -2016-03-23 13:00:00,6123.575,0.0,62.75 -2016-03-23 14:00:00,6114.933,0.0,64.99 -2016-03-23 15:00:00,6144.208,0.0,66.34 -2016-03-23 16:00:00,6180.392,0.0,68.08 -2016-03-23 17:00:00,6156.042,0.0,67.99 -2016-03-23 18:00:00,5992.017,0.0,67.49 -2016-03-23 19:00:00,5972.025,0.0,65.09 -2016-03-23 20:00:00,5898.217,0.0,60.78 -2016-03-23 21:00:00,5685.408,0.0,58.35 -2016-03-23 22:00:00,5360.283,0.0,57.75 -2016-03-23 23:00:00,4940.117,0.0,54.83 -2016-03-24 00:00:00,4571.733,0.0,53.49 -2016-03-24 01:00:00,4320.825,0.0,52.46 -2016-03-24 02:00:00,4159.925,0.0,49.9 -2016-03-24 03:00:00,4105.85,0.0,46.42 -2016-03-24 04:00:00,4125.025,0.0,45.02 -2016-03-24 05:00:00,4321.833,0.0,44.02 -2016-03-24 06:00:00,4821.633,0.0,44.73 -2016-03-24 07:00:00,5351.783,0.0,43.75 -2016-03-24 08:00:00,5736.667,0.0,45.22 -2016-03-24 09:00:00,5977.225,0.0,46.23 -2016-03-24 10:00:00,6042.125,0.0,48.3 -2016-03-24 11:00:00,6068.992,0.0,49.2 -2016-03-24 12:00:00,6070.525,0.0,50.28 -2016-03-24 13:00:00,6084.225,0.0,51.41 -2016-03-24 14:00:00,6067.642,0.0,52.82 -2016-03-24 15:00:00,6046.892,0.0,53.15 -2016-03-24 16:00:00,6061.058,0.0,52.5 -2016-03-24 17:00:00,6047.392,0.0,51.05 -2016-03-24 18:00:00,5988.075,0.0,49.94 -2016-03-24 19:00:00,5996.733,0.0,48.23 -2016-03-24 20:00:00,5884.942,0.0,46.83 -2016-03-24 21:00:00,5674.158,0.0,46.28 -2016-03-24 22:00:00,5388.483,0.0,45.54 -2016-03-24 23:00:00,5008.375,0.0,45.5 -2016-03-25 00:00:00,4626.258,0.0,46.16 -2016-03-25 01:00:00,4358.175,0.0,46.78 -2016-03-25 02:00:00,4201.175,0.0,47.03 -2016-03-25 03:00:00,4119.25,0.0,47.83 -2016-03-25 04:00:00,4117.358,0.0,48.71 -2016-03-25 05:00:00,4267.833,0.0,50.52 -2016-03-25 06:00:00,4663.317,0.0,50.58 -2016-03-25 07:00:00,5072.482,0.0,51.23 -2016-03-25 08:00:00,5497.658,0.0,53.84 -2016-03-25 09:00:00,5772.792,0.0,55.77 -2016-03-25 10:00:00,5946.45,0.0,59.05 -2016-03-25 11:00:00,6031.075,0.0,61.51 -2016-03-25 12:00:00,6066.7,0.0,64.46 -2016-03-25 13:00:00,6073.542,0.0,65.63 -2016-03-25 14:00:00,6041.283,0.0,66.12 -2016-03-25 15:00:00,6020.608,0.0,69.37 -2016-03-25 16:00:00,6023.467,0.0,70.24 -2016-03-25 17:00:00,5986.842,0.0,68.5 -2016-03-25 18:00:00,5837.908,0.0,66.5 -2016-03-25 19:00:00,5778.258,0.0,65.14 -2016-03-25 20:00:00,5658.75,0.0,59.63 -2016-03-25 21:00:00,5440.958,0.0,57.46 -2016-03-25 22:00:00,5190.933,0.0,53.73 -2016-03-25 23:00:00,4882.708,0.0,51.35 -2016-03-26 00:00:00,4556.683,0.0,48.8 -2016-03-26 01:00:00,4312.158,0.0,45.3 -2016-03-26 02:00:00,4102.833,0.0,42.54 -2016-03-26 03:00:00,4023.633,0.0,40.62 -2016-03-26 04:00:00,3989.158,0.0,39.6 -2016-03-26 05:00:00,4067.142,0.0,39.45 -2016-03-26 06:00:00,4274.6,0.0,38.87 -2016-03-26 07:00:00,4484.7,0.0,37.72 -2016-03-26 08:00:00,4753.067,0.0,38.66 -2016-03-26 09:00:00,4986.958,0.0,41.23 -2016-03-26 10:00:00,5160.992,0.0,43.67 -2016-03-26 11:00:00,5233.2,0.0,45.75 -2016-03-26 12:00:00,5250.517,0.0,47.65 -2016-03-26 13:00:00,5213.533,0.0,49.71 -2016-03-26 14:00:00,5168.417,0.0,51.71 -2016-03-26 15:00:00,5133.408,0.0,52.11 -2016-03-26 16:00:00,5127.875,0.0,52.18 -2016-03-26 17:00:00,5163.2,0.0,50.27 -2016-03-26 18:00:00,5210.45,0.0,47.36 -2016-03-26 19:00:00,5325.5,0.0,46.06 -2016-03-26 20:00:00,5394.175,0.0,44.44 -2016-03-26 21:00:00,5293.342,0.0,42.9 -2016-03-26 22:00:00,5128.775,0.0,43.54 -2016-03-26 23:00:00,4869.667,0.0,43.02 -2016-03-27 00:00:00,4610.933,0.0,42.78 -2016-03-27 01:00:00,4328.633,0.0,42.68 -2016-03-27 02:00:00,4157.967,0.0,42.79 -2016-03-27 03:00:00,4055.442,0.0,42.47 -2016-03-27 04:00:00,4010.217,0.0,42.74 -2016-03-27 05:00:00,4043.508,0.0,42.34 -2016-03-27 06:00:00,4132.383,0.0,42.63 -2016-03-27 07:00:00,4261.027,0.0,42.72 -2016-03-27 08:00:00,4554.458,0.0,42.59 -2016-03-27 09:00:00,4751.408,0.0,44.18 -2016-03-27 10:00:00,4911.175,0.0,44.94 -2016-03-27 11:00:00,4994.808,0.0,47.06 -2016-03-27 12:00:00,4998.025,0.0,48.52 -2016-03-27 13:00:00,4984.6,0.0,50.21 -2016-03-27 14:00:00,4957.742,0.0,52.32 -2016-03-27 15:00:00,4927.933,0.0,52.57 -2016-03-27 16:00:00,4933.042,0.0,51.48 -2016-03-27 17:00:00,4977.108,0.0,48.95 -2016-03-27 18:00:00,5047.567,0.0,47.38 -2016-03-27 19:00:00,5239.75,0.0,45.74 -2016-03-27 20:00:00,5331.75,0.0,44.94 -2016-03-27 21:00:00,5262.317,0.0,45.54 -2016-03-27 22:00:00,5050.833,0.0,45.22 -2016-03-27 23:00:00,4708.5,0.0,44.05 -2016-03-28 00:00:00,4404.167,0.0,44.57 -2016-03-28 01:00:00,4191.133,0.0,43.59 -2016-03-28 02:00:00,4065.508,0.0,43.44 -2016-03-28 03:00:00,4019.242,0.0226,43.85 -2016-03-28 04:00:00,4048.658,0.0,43.01 -2016-03-28 05:00:00,4267.133,0.0025,41.99 -2016-03-28 06:00:00,4810.008,0.0022,42.42 -2016-03-28 07:00:00,5413.65,0.0064,42.52 -2016-03-28 08:00:00,5818.467,0.013,43.03 -2016-03-28 09:00:00,6106.55,0.0031,44.55 -2016-03-28 10:00:00,6248.6,0.0232,44.86 -2016-03-28 11:00:00,6288.375,0.0062,45.01 -2016-03-28 12:00:00,6281.267,0.003,45.85 -2016-03-28 13:00:00,6269.825,0.0,47.89 -2016-03-28 14:00:00,6207.15,0.0,48.01 -2016-03-28 15:00:00,6135.758,0.0,50.58 -2016-03-28 16:00:00,6128.883,0.0,55.14 -2016-03-28 17:00:00,6097.908,0.0,58.86 -2016-03-28 18:00:00,5952.392,0.0,59.0 -2016-03-28 19:00:00,5952.458,0.0,56.73 -2016-03-28 20:00:00,5913.6,0.0,53.73 -2016-03-28 21:00:00,5719.992,0.0,52.86 -2016-03-28 22:00:00,5367.3,0.0,51.48 -2016-03-28 23:00:00,4950.067,0.0,49.59 -2016-03-29 00:00:00,4553.758,0.0,48.43 -2016-03-29 01:00:00,4313.933,0.0,47.37 -2016-03-29 02:00:00,4158.092,0.0,46.01 -2016-03-29 03:00:00,4078.175,0.0,44.84 -2016-03-29 04:00:00,4104.983,0.0,44.62 -2016-03-29 05:00:00,4315.242,0.0,43.92 -2016-03-29 06:00:00,4874.542,0.0,43.8 -2016-03-29 07:00:00,5421.65,0.0,43.13 -2016-03-29 08:00:00,5790.342,0.0,43.5 -2016-03-29 09:00:00,6008.542,0.0,44.6 -2016-03-29 10:00:00,6083.917,0.0,45.97 -2016-03-29 11:00:00,6112.417,0.0,47.97 -2016-03-29 12:00:00,6106.008,0.0,49.78 -2016-03-29 13:00:00,6097.117,0.0,51.12 -2016-03-29 14:00:00,6047.242,0.0,51.96 -2016-03-29 15:00:00,6051.783,0.0,52.19 -2016-03-29 16:00:00,6064.567,0.0,52.28 -2016-03-29 17:00:00,6048.975,0.0,51.22 -2016-03-29 18:00:00,5913.117,0.0,49.63 -2016-03-29 19:00:00,5948.292,0.0,47.83 -2016-03-29 20:00:00,5960.425,0.0,46.16 -2016-03-29 21:00:00,5764.133,0.0,44.66 -2016-03-29 22:00:00,5433.75,0.0,43.07 -2016-03-29 23:00:00,5009.325,0.0,41.51 -2016-03-30 00:00:00,4606.458,0.0,40.52 -2016-03-30 01:00:00,4368.925,0.0,39.65 -2016-03-30 02:00:00,4244.075,0.0,38.21 -2016-03-30 03:00:00,4177.867,0.0,37.56 -2016-03-30 04:00:00,4190.692,0.0,35.99 -2016-03-30 05:00:00,4440.533,0.0,35.91 -2016-03-30 06:00:00,4935.05,0.0,35.88 -2016-03-30 07:00:00,5451.85,0.0,35.35 -2016-03-30 08:00:00,5833.667,0.0,37.54 -2016-03-30 09:00:00,6035.425,0.0,42.24 -2016-03-30 10:00:00,6086.733,0.0,45.55 -2016-03-30 11:00:00,6120.417,0.0,48.16 -2016-03-30 12:00:00,6107.85,0.0,50.57 -2016-03-30 13:00:00,6093.608,0.0,51.77 -2016-03-30 14:00:00,6051.817,0.0,52.76 -2016-03-30 15:00:00,6067.267,0.0,52.89 -2016-03-30 16:00:00,6085.75,0.0,51.39 -2016-03-30 17:00:00,6073.275,0.0,49.52 -2016-03-30 18:00:00,5922.975,0.0,48.77 -2016-03-30 19:00:00,5966.708,0.0,49.11 -2016-03-30 20:00:00,5969.275,0.0,47.89 -2016-03-30 21:00:00,5766.492,0.0,47.42 -2016-03-30 22:00:00,5424.592,0.0,48.06 -2016-03-30 23:00:00,5004.567,0.0,46.52 -2016-03-31 00:00:00,4613.392,0.0,46.86 -2016-03-31 01:00:00,4355.975,0.0,47.5 -2016-03-31 02:00:00,4217.867,0.0,47.73 -2016-03-31 03:00:00,4132.308,0.0,46.95 -2016-03-31 04:00:00,4133.233,0.0,47.72 -2016-03-31 05:00:00,4346.792,0.0,47.62 -2016-03-31 06:00:00,4854.767,0.0,47.28 -2016-03-31 07:00:00,5368.133,0.0,48.56 -2016-03-31 08:00:00,5731.892,0.0,51.82 -2016-03-31 09:00:00,5979.05,0.0,56.24 -2016-03-31 10:00:00,6082.992,0.0,59.87 -2016-03-31 11:00:00,6139.625,0.0,63.02 -2016-03-31 12:00:00,6165.608,0.0,65.71 -2016-03-31 13:00:00,6175.467,0.0,67.45 -2016-03-31 14:00:00,6182.158,0.0,68.24 -2016-03-31 15:00:00,6194.209,0.0,68.64 -2016-03-31 16:00:00,6225.65,0.0,68.74 -2016-03-31 17:00:00,6184.225,0.0,67.56 -2016-03-31 18:00:00,5987.133,0.0,66.04 -2016-03-31 19:00:00,5947.967,0.0,63.45 -2016-03-31 20:00:00,5904.254,0.0,61.64 -2016-03-31 21:00:00,5689.25,0.0,59.6 -2016-03-31 22:00:00,5347.708,0.0,60.06 -2016-03-31 23:00:00,4943.333,0.0034,59.61 -2016-04-01 00:00:00,4588.558,0.0027,60.65 -2016-04-01 01:00:00,4346.117,0.0025,60.91 -2016-04-01 02:00:00,4205.25,0.0,61.46 -2016-04-01 03:00:00,4120.583,0.0,61.53 -2016-04-01 04:00:00,4142.692,0.0,61.72 -2016-04-01 05:00:00,4331.542,0.0,61.79 -2016-04-01 06:00:00,4844.183,0.0,61.5 -2016-04-01 07:00:00,5421.309,0.0,61.27 -2016-04-01 08:00:00,5897.975,0.0021,61.79 -2016-04-01 09:00:00,6165.775,0.0,60.5 -2016-04-01 10:00:00,6283.817,0.0,61.23 -2016-04-01 11:00:00,6343.117,0.0,63.03 -2016-04-01 12:00:00,6401.625,0.0114,64.05 -2016-04-01 13:00:00,6425.558,0.0,66.57 -2016-04-01 14:00:00,6443.875,0.0,69.92 -2016-04-01 15:00:00,6493.8,0.0,72.52 -2016-04-01 16:00:00,6539.833,0.0,73.83 -2016-04-01 17:00:00,6483.533,0.0,74.3 -2016-04-01 18:00:00,6280.108,0.0,72.67 -2016-04-01 19:00:00,6203.408,0.0,68.61 -2016-04-01 20:00:00,6027.333,0.0,64.77 -2016-04-01 21:00:00,5801.75,0.0,65.29 -2016-04-01 22:00:00,5537.392,0.0,64.85 -2016-04-01 23:00:00,5111.725,0.0,64.76 -2016-04-02 00:00:00,4698.817,0.0,61.75 -2016-04-02 01:00:00,4425.425,0.0,60.24 -2016-04-02 02:00:00,4243.217,0.0,59.2 -2016-04-02 03:00:00,4109.083,0.0035,56.9 -2016-04-02 04:00:00,4063.75,0.0089,55.66 -2016-04-02 05:00:00,4082.725,0.0,53.76 -2016-04-02 06:00:00,4243.533,0.0,52.92 -2016-04-02 07:00:00,4420.382,0.0,53.74 -2016-04-02 08:00:00,4782.142,0.052,53.04 -2016-04-02 09:00:00,5052.342,0.0714,52.29 -2016-04-02 10:00:00,5311.392,0.0238,51.05 -2016-04-02 11:00:00,5425.333,0.0077,50.47 -2016-04-02 12:00:00,5432.017,0.0055,50.72 -2016-04-02 13:00:00,5395.958,0.0,51.71 -2016-04-02 14:00:00,5322.658,0.0,52.34 -2016-04-02 15:00:00,5258.475,0.0,53.68 -2016-04-02 16:00:00,5233.683,0.0,54.42 -2016-04-02 17:00:00,5243.592,0.0,53.2 -2016-04-02 18:00:00,5242.475,0.0,54.11 -2016-04-02 19:00:00,5364.867,0.0,51.94 -2016-04-02 20:00:00,5426.283,0.0,50.5 -2016-04-02 21:00:00,5322.633,0.0,48.64 -2016-04-02 22:00:00,5127.15,0.0,50.22 -2016-04-02 23:00:00,4883.067,0.0,50.01 -2016-04-03 00:00:00,4593.183,0.0,49.04 -2016-04-03 01:00:00,4346.65,0.0978,48.34 -2016-04-03 02:00:00,4180.108,0.006,44.99 -2016-04-03 03:00:00,4069.833,0.0,41.72 -2016-04-03 04:00:00,4027.3,0.0,40.59 -2016-04-03 05:00:00,4073.25,0.021,39.48 -2016-04-03 06:00:00,4176.042,0.0,37.74 -2016-04-03 07:00:00,4336.045,0.0,35.98 -2016-04-03 08:00:00,4623.233,0.0,35.7 -2016-04-03 09:00:00,4899.508,0.0,34.83 -2016-04-03 10:00:00,5111.383,0.0,35.51 -2016-04-03 11:00:00,5246.158,0.0,35.76 -2016-04-03 12:00:00,5323.05,0.0,36.73 -2016-04-03 13:00:00,5334.142,0.0,37.91 -2016-04-03 14:00:00,5316.875,0.0,38.59 -2016-04-03 15:00:00,5288.2,0.0,39.3 -2016-04-03 16:00:00,5291.4,0.0,40.07 -2016-04-03 17:00:00,5327.683,0.0,40.63 -2016-04-03 18:00:00,5371.083,0.0,40.13 -2016-04-03 19:00:00,5483.958,0.0,39.46 -2016-04-03 20:00:00,5589.483,0.0,38.33 -2016-04-03 21:00:00,5480.733,0.0,36.87 -2016-04-03 22:00:00,5250.308,0.0,37.02 -2016-04-03 23:00:00,4895.242,0.0,37.23 -2016-04-04 00:00:00,4594.558,0.0,36.58 -2016-04-04 01:00:00,4367.908,0.0,37.31 -2016-04-04 02:00:00,4255.842,0.0096,36.58 -2016-04-04 03:00:00,4207.967,0.0,36.47 -2016-04-04 04:00:00,4238.317,0.0,36.21 -2016-04-04 05:00:00,4463.092,0.0009,37.26 -2016-04-04 06:00:00,4994.875,0.0195,38.0 -2016-04-04 07:00:00,5571.758,0.0402,39.31 -2016-04-04 08:00:00,5995.333,0.1103,40.77 -2016-04-04 09:00:00,6228.658,0.0248,41.3 -2016-04-04 10:00:00,6337.708,0.004,41.89 -2016-04-04 11:00:00,6370.983,0.0463,43.06 -2016-04-04 12:00:00,6398.992,0.0075,44.81 -2016-04-04 13:00:00,6415.167,0.0313,45.43 -2016-04-04 14:00:00,6398.392,0.187,46.0 -2016-04-04 15:00:00,6403.592,0.0629,45.21 -2016-04-04 16:00:00,6460.633,0.0699,44.51 -2016-04-04 17:00:00,6473.317,0.0364,42.97 -2016-04-04 18:00:00,6413.033,0.0,39.99 -2016-04-04 19:00:00,6388.867,0.0,37.08 -2016-04-04 20:00:00,6288.125,0.0,35.61 -2016-04-04 21:00:00,6032.108,0.0,33.01 -2016-04-04 22:00:00,5698.233,0.0,32.6 -2016-04-04 23:00:00,5270.4,0.0,31.37 -2016-04-05 00:00:00,4880.675,0.0,30.97 -2016-04-05 01:00:00,4625.642,0.0,29.95 -2016-04-05 02:00:00,4490.758,0.0,29.02 -2016-04-05 03:00:00,4431.908,0.0,28.3 -2016-04-05 04:00:00,4463.067,0.0,27.49 -2016-04-05 05:00:00,4702.233,0.0,27.01 -2016-04-05 06:00:00,5221.8,0.0,26.52 -2016-04-05 07:00:00,5788.455,0.0,26.08 -2016-04-05 08:00:00,6140.042,0.0,26.99 -2016-04-05 09:00:00,6439.683,0.0,27.82 -2016-04-05 10:00:00,6464.9,0.0,29.82 -2016-04-05 11:00:00,6498.658,0.0,32.21 -2016-04-05 12:00:00,6477.875,0.0,33.75 -2016-04-05 13:00:00,6497.558,0.0,35.92 -2016-04-05 14:00:00,6427.733,0.0,36.56 -2016-04-05 15:00:00,6397.817,0.0,39.4 -2016-04-05 16:00:00,6383.342,0.0,40.37 -2016-04-05 17:00:00,6336.783,0.0,40.99 -2016-04-05 18:00:00,6186.675,0.0,40.73 -2016-04-05 19:00:00,6185.442,0.0,39.47 -2016-04-05 20:00:00,6235.3,0.0,37.55 -2016-04-05 21:00:00,6065.233,0.0,36.24 -2016-04-05 22:00:00,5740.5,0.0,35.66 -2016-04-05 23:00:00,5309.608,0.0,34.28 -2016-04-06 00:00:00,4928.55,0.0,33.34 -2016-04-06 01:00:00,4659.417,0.0,32.77 -2016-04-06 02:00:00,4529.883,0.0,31.19 -2016-04-06 03:00:00,4480.0,0.0,30.75 -2016-04-06 04:00:00,4486.658,0.0,30.47 -2016-04-06 05:00:00,4705.467,0.0,30.53 -2016-04-06 06:00:00,5211.725,0.0,30.48 -2016-04-06 07:00:00,5738.65,0.0,30.06 -2016-04-06 08:00:00,6071.842,0.0,32.51 -2016-04-06 09:00:00,6273.133,0.0,36.13 -2016-04-06 10:00:00,6346.483,0.0,38.97 -2016-04-06 11:00:00,6343.525,0.0,40.99 -2016-04-06 12:00:00,6333.05,0.0,42.7 -2016-04-06 13:00:00,6315.65,0.0,44.63 -2016-04-06 14:00:00,6275.892,0.0,45.56 -2016-04-06 15:00:00,6291.508,0.0,46.19 -2016-04-06 16:00:00,6375.45,0.0,45.71 -2016-04-06 17:00:00,6337.833,0.0,45.34 -2016-04-06 18:00:00,6173.675,0.0,45.21 -2016-04-06 19:00:00,6174.55,0.0,43.47 -2016-04-06 20:00:00,6172.467,0.0,43.15 -2016-04-06 21:00:00,5958.925,0.0,43.82 -2016-04-06 22:00:00,5601.042,0.0,43.51 -2016-04-06 23:00:00,5144.508,0.0,44.46 -2016-04-07 00:00:00,4729.242,0.0,45.22 -2016-04-07 01:00:00,4465.15,0.0,45.9 -2016-04-07 02:00:00,4307.533,0.0,47.36 -2016-04-07 03:00:00,4244.833,0.0,48.19 -2016-04-07 04:00:00,4239.55,0.0,48.09 -2016-04-07 05:00:00,4456.775,0.0,49.45 -2016-04-07 06:00:00,4956.558,0.0,50.31 -2016-04-07 07:00:00,5516.85,0.0,51.88 -2016-04-07 08:00:00,5886.0,0.0,52.23 -2016-04-07 09:00:00,6084.067,0.0,54.35 -2016-04-07 10:00:00,6189.325,0.0,55.23 -2016-04-07 11:00:00,6210.517,0.0,55.97 -2016-04-07 12:00:00,6242.242,0.0,54.89 -2016-04-07 13:00:00,6314.442,0.0356,55.06 -2016-04-07 14:00:00,6283.467,0.0024,54.49 -2016-04-07 15:00:00,6229.175,0.0038,54.22 -2016-04-07 16:00:00,6241.025,0.0,55.21 -2016-04-07 17:00:00,6194.917,0.0,56.95 -2016-04-07 18:00:00,6023.658,0.0,56.54 -2016-04-07 19:00:00,5957.15,0.0,55.33 -2016-04-07 20:00:00,5924.108,0.0,54.64 -2016-04-07 21:00:00,5719.3,0.0,52.78 -2016-04-07 22:00:00,5403.192,0.0,52.98 -2016-04-07 23:00:00,5001.75,0.0,51.95 -2016-04-08 00:00:00,4620.233,0.0,51.17 -2016-04-08 01:00:00,4360.433,0.0,49.24 -2016-04-08 02:00:00,4199.333,0.0,47.55 -2016-04-08 03:00:00,4089.458,0.0,46.52 -2016-04-08 04:00:00,4111.442,0.0,45.67 -2016-04-08 05:00:00,4341.183,0.0,44.6 -2016-04-08 06:00:00,4853.808,0.0,44.15 -2016-04-08 07:00:00,5384.482,0.0,43.24 -2016-04-08 08:00:00,5765.258,0.0,44.31 -2016-04-08 09:00:00,6007.75,0.0,45.68 -2016-04-08 10:00:00,6143.442,0.0,46.06 -2016-04-08 11:00:00,6156.4,0.0,46.25 -2016-04-08 12:00:00,6166.508,0.0,47.46 -2016-04-08 13:00:00,6190.942,0.0,48.36 -2016-04-08 14:00:00,6157.292,0.0,46.74 -2016-04-08 15:00:00,6157.983,0.0,46.97 -2016-04-08 16:00:00,6161.692,0.0,46.39 -2016-04-08 17:00:00,6092.325,0.0,45.91 -2016-04-08 18:00:00,5944.067,0.0,47.11 -2016-04-08 19:00:00,5919.867,0.0,45.31 -2016-04-08 20:00:00,5888.033,0.0,44.45 -2016-04-08 21:00:00,5678.967,0.0,44.29 -2016-04-08 22:00:00,5405.992,0.0,42.33 -2016-04-08 23:00:00,5073.683,0.0,41.24 -2016-04-09 00:00:00,4720.775,0.0,40.95 -2016-04-09 01:00:00,4470.4,0.0,39.61 -2016-04-09 02:00:00,4318.633,0.0,38.03 -2016-04-09 03:00:00,4220.1,0.0,37.26 -2016-04-09 04:00:00,4188.517,0.0,37.09 -2016-04-09 05:00:00,4254.717,0.0,36.52 -2016-04-09 06:00:00,4391.333,0.0,36.71 -2016-04-09 07:00:00,4608.65,0.0,37.77 -2016-04-09 08:00:00,4898.517,0.0,39.68 -2016-04-09 09:00:00,5172.7,0.0,42.59 -2016-04-09 10:00:00,5393.725,0.0026,42.86 -2016-04-09 11:00:00,5517.125,0.0061,42.82 -2016-04-09 12:00:00,5566.133,0.0245,42.94 -2016-04-09 13:00:00,5577.783,0.0081,41.96 -2016-04-09 14:00:00,5561.733,0.0076,39.43 -2016-04-09 15:00:00,5556.508,0.0055,38.88 -2016-04-09 16:00:00,5567.342,0.0034,38.99 -2016-04-09 17:00:00,5571.983,0.0049,39.35 -2016-04-09 18:00:00,5579.358,0.0,39.98 -2016-04-09 19:00:00,5613.908,0.0,40.0 -2016-04-09 20:00:00,5643.592,0.0,41.35 -2016-04-09 21:00:00,5502.667,0.0,41.11 -2016-04-09 22:00:00,5308.392,0.0,41.16 -2016-04-09 23:00:00,5062.333,0.0,39.42 -2016-04-10 00:00:00,4784.917,0.0,37.66 -2016-04-10 01:00:00,4574.542,0.0,36.44 -2016-04-10 02:00:00,4422.083,0.0,33.99 -2016-04-10 03:00:00,4352.408,0.0,33.49 -2016-04-10 04:00:00,4319.967,0.0,32.63 -2016-04-10 05:00:00,4347.8,0.0,32.1 -2016-04-10 06:00:00,4422.175,0.0,32.01 -2016-04-10 07:00:00,4579.983,0.0,32.17 -2016-04-10 08:00:00,4805.267,0.0,33.01 -2016-04-10 09:00:00,5029.908,0.0,35.36 -2016-04-10 10:00:00,5208.5,0.0,37.0 -2016-04-10 11:00:00,5280.883,0.0,39.55 -2016-04-10 12:00:00,5299.742,0.0,42.35 -2016-04-10 13:00:00,5282.475,0.0,43.8 -2016-04-10 14:00:00,5242.0,0.0,46.37 -2016-04-10 15:00:00,5204.958,0.0,48.16 -2016-04-10 16:00:00,5211.892,0.0,48.73 -2016-04-10 17:00:00,5248.608,0.0,48.39 -2016-04-10 18:00:00,5301.017,0.0,46.14 -2016-04-10 19:00:00,5434.083,0.0,45.1 -2016-04-10 20:00:00,5568.733,0.0,44.53 -2016-04-10 21:00:00,5472.075,0.0,43.89 -2016-04-10 22:00:00,5220.067,0.0,44.61 -2016-04-10 23:00:00,4887.392,0.0,45.05 -2016-04-11 00:00:00,4696.75,0.0,43.49 -2016-04-11 01:00:00,4370.683,0.0,42.93 -2016-04-11 02:00:00,4239.542,0.0,42.0 -2016-04-11 03:00:00,4178.7,0.0,42.64 -2016-04-11 04:00:00,4196.267,0.0062,43.49 -2016-04-11 05:00:00,4419.692,0.0024,44.1 -2016-04-11 06:00:00,4938.442,0.0023,44.41 -2016-04-11 07:00:00,5501.942,0.0031,44.99 -2016-04-11 08:00:00,5868.646,0.0,46.3 -2016-04-11 09:00:00,6110.667,0.0,47.79 -2016-04-11 10:00:00,6233.433,0.0,49.39 -2016-04-11 11:00:00,6230.392,0.0,50.97 -2016-04-11 12:00:00,6200.883,0.0,52.79 -2016-04-11 13:00:00,6146.95,0.0,55.95 -2016-04-11 14:00:00,6089.308,0.0,59.38 -2016-04-11 15:00:00,6098.783,0.0,60.34 -2016-04-11 16:00:00,6129.25,0.0,60.28 -2016-04-11 17:00:00,6102.875,0.0,58.82 -2016-04-11 18:00:00,6011.108,0.0968,57.8 -2016-04-11 19:00:00,5975.8,0.0069,55.82 -2016-04-11 20:00:00,5955.508,0.0,54.66 -2016-04-11 21:00:00,5727.208,0.0029,55.01 -2016-04-11 22:00:00,5388.467,0.0029,55.57 -2016-04-11 23:00:00,4959.342,0.0,54.45 -2016-04-12 00:00:00,4560.325,0.0,54.01 -2016-04-12 01:00:00,4313.458,0.0046,54.01 -2016-04-12 02:00:00,4159.9,0.0,53.76 -2016-04-12 03:00:00,4090.658,0.0,52.87 -2016-04-12 04:00:00,4108.283,0.0,53.21 -2016-04-12 05:00:00,4313.0,0.0186,54.34 -2016-04-12 06:00:00,4831.158,0.0,55.08 -2016-04-12 07:00:00,5415.618,0.0278,54.74 -2016-04-12 08:00:00,5866.783,0.0743,55.07 -2016-04-12 09:00:00,6120.233,0.0977,54.09 -2016-04-12 10:00:00,6216.758,0.0057,53.2 -2016-04-12 11:00:00,6249.167,0.0053,53.5 -2016-04-12 12:00:00,6251.717,0.0083,47.6 -2016-04-12 13:00:00,6227.242,0.0,47.61 -2016-04-12 14:00:00,6138.0,0.0,49.42 -2016-04-12 15:00:00,6103.092,0.0,53.24 -2016-04-12 16:00:00,6096.575,0.0,56.71 -2016-04-12 17:00:00,6074.117,0.0,57.29 -2016-04-12 18:00:00,5914.158,0.0,55.84 -2016-04-12 19:00:00,5856.267,0.0,53.99 -2016-04-12 20:00:00,5906.042,0.0,50.26 -2016-04-12 21:00:00,5720.642,0.0,48.16 -2016-04-12 22:00:00,5383.842,0.0,46.75 -2016-04-12 23:00:00,4959.267,0.0,45.64 -2016-04-13 00:00:00,4528.158,0.0,45.08 -2016-04-13 01:00:00,4283.55,0.0,43.97 -2016-04-13 02:00:00,4146.292,0.0,42.37 -2016-04-13 03:00:00,4097.892,0.0,41.68 -2016-04-13 04:00:00,4114.183,0.0,39.98 -2016-04-13 05:00:00,4319.208,0.0,39.42 -2016-04-13 06:00:00,4820.692,0.0,39.68 -2016-04-13 07:00:00,5405.217,0.0,38.83 -2016-04-13 08:00:00,5775.45,0.0,41.79 -2016-04-13 09:00:00,5985.383,0.0,44.83 -2016-04-13 10:00:00,6056.067,0.0,46.64 -2016-04-13 11:00:00,6081.7,0.0,48.52 -2016-04-13 12:00:00,6056.892,0.0,49.67 -2016-04-13 13:00:00,6050.658,0.0,51.56 -2016-04-13 14:00:00,6033.742,0.0,53.09 -2016-04-13 15:00:00,6028.942,0.0,54.22 -2016-04-13 16:00:00,6047.142,0.0,54.53 -2016-04-13 17:00:00,6017.533,0.0,54.13 -2016-04-13 18:00:00,5883.8,0.0,53.62 -2016-04-13 19:00:00,5844.292,0.0,51.84 -2016-04-13 20:00:00,5877.633,0.0,48.94 -2016-04-13 21:00:00,5695.55,0.0,47.59 -2016-04-13 22:00:00,5376.225,0.0,45.56 -2016-04-13 23:00:00,4949.667,0.0,45.26 -2016-04-14 00:00:00,4551.417,0.0,45.18 -2016-04-14 01:00:00,4304.817,0.0,44.92 -2016-04-14 02:00:00,4142.358,0.0,44.07 -2016-04-14 03:00:00,4079.367,0.0,43.32 -2016-04-14 04:00:00,4090.15,0.0,41.89 -2016-04-14 05:00:00,4302.033,0.0,42.55 -2016-04-14 06:00:00,4818.558,0.0,42.61 -2016-04-14 07:00:00,5380.133,0.0,42.63 -2016-04-14 08:00:00,5744.742,0.0,44.63 -2016-04-14 09:00:00,5975.042,0.0,47.41 -2016-04-14 10:00:00,6032.467,0.0,49.19 -2016-04-14 11:00:00,6054.242,0.0,51.12 -2016-04-14 12:00:00,6050.108,0.0,53.66 -2016-04-14 13:00:00,6048.142,0.0,55.7 -2016-04-14 14:00:00,6007.392,0.0,57.32 -2016-04-14 15:00:00,6011.433,0.0,58.51 -2016-04-14 16:00:00,6033.75,0.0,58.91 -2016-04-14 17:00:00,6017.875,0.0,57.94 -2016-04-14 18:00:00,5851.992,0.0,56.55 -2016-04-14 19:00:00,5785.933,0.0,53.08 -2016-04-14 20:00:00,5855.3,0.0,50.36 -2016-04-14 21:00:00,5693.75,0.0,47.24 -2016-04-14 22:00:00,5380.967,0.0,45.75 -2016-04-14 23:00:00,4962.15,0.0,45.5 -2016-04-15 00:00:00,4589.075,0.0,44.55 -2016-04-15 01:00:00,4358.95,0.0,43.73 -2016-04-15 02:00:00,4191.833,0.0,42.71 -2016-04-15 03:00:00,4133.217,0.0,43.49 -2016-04-15 04:00:00,4159.25,0.0,41.38 -2016-04-15 05:00:00,4364.575,0.0,42.31 -2016-04-15 06:00:00,4851.5,0.0,42.11 -2016-04-15 07:00:00,5368.608,0.0,42.6 -2016-04-15 08:00:00,5729.85,0.0,45.13 -2016-04-15 09:00:00,5964.2,0.0,49.38 -2016-04-15 10:00:00,6049.408,0.0,51.27 -2016-04-15 11:00:00,6063.825,0.0,53.71 -2016-04-15 12:00:00,6037.983,0.0,54.32 -2016-04-15 13:00:00,6015.208,0.0,57.19 -2016-04-15 14:00:00,5992.85,0.0,58.47 -2016-04-15 15:00:00,6006.592,0.0,60.19 -2016-04-15 16:00:00,6011.633,0.0,61.05 -2016-04-15 17:00:00,5987.35,0.0,61.67 -2016-04-15 18:00:00,5802.9,0.0,59.72 -2016-04-15 19:00:00,5729.392,0.0,56.6 -2016-04-15 20:00:00,5747.133,0.0,52.38 -2016-04-15 21:00:00,5583.217,0.0,50.08 -2016-04-15 22:00:00,5326.758,0.0,47.53 -2016-04-15 23:00:00,4983.325,0.0,47.04 -2016-04-16 00:00:00,4617.683,0.0,46.96 -2016-04-16 01:00:00,4369.05,0.0,46.05 -2016-04-16 02:00:00,4195.1,0.0,45.34 -2016-04-16 03:00:00,4108.892,0.0,44.74 -2016-04-16 04:00:00,4074.558,0.0,44.05 -2016-04-16 05:00:00,4138.558,0.0,43.42 -2016-04-16 06:00:00,4262.058,0.0,43.39 -2016-04-16 07:00:00,4497.125,0.0,44.62 -2016-04-16 08:00:00,4773.492,0.0,46.83 -2016-04-16 09:00:00,5010.875,0.0,50.48 -2016-04-16 10:00:00,5153.225,0.0,52.51 -2016-04-16 11:00:00,5225.7,0.0,54.88 -2016-04-16 12:00:00,5241.508,0.0,57.23 -2016-04-16 13:00:00,5217.525,0.0,60.28 -2016-04-16 14:00:00,5181.95,0.0,62.46 -2016-04-16 15:00:00,5155.725,0.0,63.48 -2016-04-16 16:00:00,5134.117,0.0,64.04 -2016-04-16 17:00:00,5156.608,0.0,63.76 -2016-04-16 18:00:00,5155.767,0.0,62.67 -2016-04-16 19:00:00,5200.383,0.0,59.37 -2016-04-16 20:00:00,5309.892,0.0,53.86 -2016-04-16 21:00:00,5229.558,0.0,51.58 -2016-04-16 22:00:00,5079.092,0.0,49.37 -2016-04-16 23:00:00,4824.142,0.0,47.81 -2016-04-17 00:00:00,4510.425,0.0,47.36 -2016-04-17 01:00:00,4257.208,0.0,46.39 -2016-04-17 02:00:00,4095.717,0.0,45.75 -2016-04-17 03:00:00,4001.067,0.0,45.33 -2016-04-17 04:00:00,3954.483,0.0,44.52 -2016-04-17 05:00:00,3981.975,0.0,44.07 -2016-04-17 06:00:00,4052.0,0.0,44.84 -2016-04-17 07:00:00,4222.258,0.0,46.14 -2016-04-17 08:00:00,4469.508,0.0,49.05 -2016-04-17 09:00:00,4691.558,0.0,53.06 -2016-04-17 10:00:00,4894.042,0.0,56.9 -2016-04-17 11:00:00,5030.775,0.0,59.73 -2016-04-17 12:00:00,5087.825,0.0,62.93 -2016-04-17 13:00:00,5087.467,0.0,66.01 -2016-04-17 14:00:00,5110.217,0.0,67.44 -2016-04-17 15:00:00,5112.275,0.0,69.62 -2016-04-17 16:00:00,5121.35,0.0,70.7 -2016-04-17 17:00:00,5161.908,0.0,70.28 -2016-04-17 18:00:00,5160.467,0.0,67.36 -2016-04-17 19:00:00,5208.408,0.0,62.46 -2016-04-17 20:00:00,5353.65,0.0,58.43 -2016-04-17 21:00:00,5263.558,0.0,56.78 -2016-04-17 22:00:00,5021.283,0.0,54.89 -2016-04-17 23:00:00,4670.733,0.0,54.16 -2016-04-18 00:00:00,4362.158,0.0,52.74 -2016-04-18 01:00:00,4147.908,0.0,51.55 -2016-04-18 02:00:00,4015.875,0.0,50.11 -2016-04-18 03:00:00,3957.967,0.0,50.14 -2016-04-18 04:00:00,3987.167,0.0,49.97 -2016-04-18 05:00:00,4215.508,0.0,50.17 -2016-04-18 06:00:00,4697.717,0.0,49.33 -2016-04-18 07:00:00,5243.083,0.0,51.42 -2016-04-18 08:00:00,5695.108,0.0,55.67 -2016-04-18 09:00:00,5979.058,0.0,62.27 -2016-04-18 10:00:00,6117.05,0.0,68.25 -2016-04-18 11:00:00,6216.717,0.0,70.56 -2016-04-18 12:00:00,6279.0,0.0,73.22 -2016-04-18 13:00:00,6339.492,0.0,75.11 -2016-04-18 14:00:00,6353.408,0.0,76.82 -2016-04-18 15:00:00,6402.317,0.0,77.26 -2016-04-18 16:00:00,6430.908,0.0,77.35 -2016-04-18 17:00:00,6395.142,0.0,75.09 -2016-04-18 18:00:00,6138.517,0.0,71.67 -2016-04-18 19:00:00,5989.442,0.0,67.06 -2016-04-18 20:00:00,5937.392,0.0,63.12 -2016-04-18 21:00:00,5699.9,0.0,60.32 -2016-04-18 22:00:00,5352.525,0.0,60.8 -2016-04-18 23:00:00,4919.558,0.0,61.03 -2016-04-19 00:00:00,4508.092,0.0,57.89 -2016-04-19 01:00:00,4241.433,0.0,58.89 -2016-04-19 02:00:00,4082.808,0.0,59.47 -2016-04-19 03:00:00,4012.608,0.0,58.47 -2016-04-19 04:00:00,4030.4,0.0,57.19 -2016-04-19 05:00:00,4251.358,0.0,58.03 -2016-04-19 06:00:00,4765.008,0.0,59.04 -2016-04-19 07:00:00,5371.292,0.0,60.28 -2016-04-19 08:00:00,5790.075,0.0,61.1 -2016-04-19 09:00:00,6072.308,0.0,64.81 -2016-04-19 10:00:00,6207.558,0.0,67.6 -2016-04-19 11:00:00,6290.75,0.0,67.98 -2016-04-19 12:00:00,6311.567,0.0,68.05 -2016-04-19 13:00:00,6331.292,0.0,68.06 -2016-04-19 14:00:00,6330.7,0.0,67.83 -2016-04-19 15:00:00,6353.525,0.0,68.42 -2016-04-19 16:00:00,6374.358,0.0,68.74 -2016-04-19 17:00:00,6325.375,0.0,68.16 -2016-04-19 18:00:00,6070.75,0.0,66.71 -2016-04-19 19:00:00,5908.633,0.0,64.49 -2016-04-19 20:00:00,5900.558,0.0,61.59 -2016-04-19 21:00:00,5704.333,0.0,60.49 -2016-04-19 22:00:00,5352.808,0.0,58.34 -2016-04-19 23:00:00,4908.625,0.0,56.78 -2016-04-20 00:00:00,4487.9,0.0,55.26 -2016-04-20 01:00:00,4235.167,0.0,54.28 -2016-04-20 02:00:00,4080.0,0.0,52.35 -2016-04-20 03:00:00,4027.2,0.0,51.64 -2016-04-20 04:00:00,4041.283,0.0,49.91 -2016-04-20 05:00:00,4236.908,0.0,49.5 -2016-04-20 06:00:00,4705.183,0.0,48.75 -2016-04-20 07:00:00,5277.408,0.0,49.72 -2016-04-20 08:00:00,5662.883,0.0,52.12 -2016-04-20 09:00:00,5900.725,0.0,54.9 -2016-04-20 10:00:00,6004.092,0.0,56.85 -2016-04-20 12:00:00,6090.792,0.0,61.49 -2016-04-20 13:00:00,6114.55,0.0,62.2 -2016-04-20 14:00:00,6103.292,0.0,64.46 -2016-04-20 15:00:00,6145.883,0.0,64.89 -2016-04-20 16:00:00,6174.808,0.0,65.28 -2016-04-20 17:00:00,6161.958,0.0,64.68 -2016-04-20 18:00:00,5967.475,0.0,63.05 -2016-04-20 19:00:00,5827.808,0.0,59.94 -2016-04-20 20:00:00,5839.192,0.0,55.53 -2016-04-20 21:00:00,5644.45,0.0,52.59 -2016-04-20 22:00:00,5315.908,0.0,54.44 -2016-04-20 23:00:00,4865.725,0.0,52.9 -2016-04-21 00:00:00,4462.658,0.0,52.31 -2016-04-21 01:00:00,4281.075,0.0,51.37 -2016-04-21 02:00:00,4072.758,0.0,50.25 -2016-04-21 03:00:00,3998.825,0.0,49.47 -2016-04-21 04:00:00,4012.45,0.0,48.76 -2016-04-21 05:00:00,4217.792,0.0,47.28 -2016-04-21 06:00:00,4677.758,0.0,47.36 -2016-04-21 07:00:00,5256.175,0.0,49.39 -2016-04-21 08:00:00,5671.408,0.0,52.27 -2016-04-21 09:00:00,5928.183,0.0,55.77 -2016-04-21 10:00:00,6074.025,0.0,59.71 -2016-04-21 11:00:00,6135.517,0.0,62.82 -2016-04-21 12:00:00,6177.025,0.0,66.37 -2016-04-21 13:00:00,6204.775,0.0,68.11 -2016-04-21 14:00:00,6231.008,0.0,69.62 -2016-04-21 15:00:00,6278.433,0.0,69.09 -2016-04-21 16:00:00,6330.967,0.0,69.32 -2016-04-21 17:00:00,6311.75,0.0,69.44 -2016-04-21 18:00:00,6125.417,0.0,68.25 -2016-04-21 19:00:00,5991.108,0.0,66.9 -2016-04-21 20:00:00,5996.633,0.0,64.97 -2016-04-21 21:00:00,5795.4,0.0,64.73 -2016-04-21 22:00:00,5470.767,0.0,65.12 -2016-04-21 23:00:00,5037.083,0.0,65.21 -2016-04-22 00:00:00,4633.633,0.0,63.47 -2016-04-22 01:00:00,4378.95,0.0,63.33 -2016-04-22 02:00:00,4218.325,0.0,63.42 -2016-04-22 03:00:00,4130.792,0.0,62.83 -2016-04-22 04:00:00,4132.058,0.0,61.99 -2016-04-22 05:00:00,4320.142,0.0,60.57 -2016-04-22 06:00:00,4801.133,0.0,61.3 -2016-04-22 07:00:00,5438.217,0.0,60.94 -2016-04-22 08:00:00,5918.658,0.0,62.97 -2016-04-22 09:00:00,6259.658,0.0,66.34 -2016-04-22 10:00:00,6451.475,0.0,68.93 -2016-04-22 11:00:00,6584.267,0.0,71.47 -2016-04-22 12:00:00,6679.225,0.0,74.22 -2016-04-22 13:00:00,6753.5,0.0,76.21 -2016-04-22 14:00:00,6749.808,0.0,76.81 -2016-04-22 15:00:00,6809.308,0.0,76.36 -2016-04-22 16:00:00,6804.408,0.0,76.42 -2016-04-22 17:00:00,6693.775,0.0,75.75 -2016-04-22 18:00:00,6413.858,0.0,72.93 -2016-04-22 19:00:00,6243.233,0.0,71.47 -2016-04-22 20:00:00,6195.767,0.0,70.6 -2016-04-22 21:00:00,5989.467,0.0,71.11 -2016-04-22 22:00:00,5715.833,0.0,69.12 -2016-04-22 23:00:00,5342.125,0.0,68.96 -2016-04-23 00:00:00,4953.725,0.0,68.7 -2016-04-23 01:00:00,4655.292,0.0498,67.07 -2016-04-23 02:00:00,4458.108,0.0131,64.99 -2016-04-23 03:00:00,4352.092,0.0386,62.75 -2016-04-23 04:00:00,4304.617,0.0045,62.83 -2016-04-23 05:00:00,4342.75,0.0,62.27 -2016-04-23 06:00:00,4455.558,0.0,61.91 -2016-04-23 07:00:00,4673.75,0.0026,61.67 -2016-04-23 08:00:00,4962.808,0.0157,62.18 -2016-04-23 09:00:00,5216.25,0.0023,61.08 -2016-04-23 10:00:00,5386.758,0.0125,61.44 -2016-04-23 11:00:00,5483.967,0.0,62.48 -2016-04-23 12:00:00,5498.325,0.0,62.56 -2016-04-23 13:00:00,5449.817,0.0,64.1 -2016-04-23 14:00:00,5423.842,0.0,65.49 -2016-04-23 15:00:00,5438.967,0.0,66.71 -2016-04-23 16:00:00,5422.783,0.0,67.82 -2016-04-23 17:00:00,5398.008,0.0,66.67 -2016-04-23 18:00:00,5344.333,0.0,65.22 -2016-04-23 19:00:00,5301.517,0.0,63.64 -2016-04-23 20:00:00,5362.875,0.0,60.11 -2016-04-23 21:00:00,5272.408,0.0,59.27 -2016-04-23 22:00:00,5071.95,0.0,57.78 -2016-04-23 23:00:00,4804.4,0.0,56.14 -2016-04-24 00:00:00,4507.35,0.0,54.62 -2016-04-24 01:00:00,4273.975,0.0,53.61 -2016-04-24 02:00:00,4107.142,0.0,51.43 -2016-04-24 03:00:00,3992.058,0.0,49.49 -2016-04-24 04:00:00,3920.825,0.0,48.48 -2016-04-24 05:00:00,3938.117,0.0,47.6 -2016-04-24 06:00:00,3987.408,0.0,46.66 -2016-04-24 07:00:00,4155.983,0.0,47.41 -2016-04-24 08:00:00,4383.025,0.0,49.27 -2016-04-24 09:00:00,4599.617,0.0,51.26 -2016-04-24 10:00:00,4797.158,0.0,53.41 -2016-04-24 11:00:00,4901.233,0.0,55.84 -2016-04-24 12:00:00,4959.8,0.0,58.56 -2016-04-24 13:00:00,4975.108,0.0,61.33 -2016-04-24 14:00:00,4977.017,0.0,61.98 -2016-04-24 15:00:00,5000.425,0.0,63.85 -2016-04-24 16:00:00,5039.7,0.0,65.54 -2016-04-24 17:00:00,5062.583,0.0,65.34 -2016-04-24 18:00:00,5063.517,0.0,63.34 -2016-04-24 19:00:00,5093.242,0.0,58.12 -2016-04-24 20:00:00,5240.9,0.0,54.99 -2016-04-24 21:00:00,5162.033,0.0,53.88 -2016-04-24 22:00:00,4941.192,0.0,53.5 -2016-04-24 23:00:00,4641.633,0.0,52.1 -2016-04-25 00:00:00,4342.092,0.0,52.22 -2016-04-25 01:00:00,4146.992,0.0,51.27 -2016-04-25 02:00:00,4008.2,0.0,50.56 -2016-04-25 03:00:00,3934.267,0.0,49.68 -2016-04-25 04:00:00,3949.817,0.0,50.46 -2016-04-25 05:00:00,4148.925,0.0,51.36 -2016-04-25 06:00:00,4558.208,0.0,51.25 -2016-04-25 07:00:00,5078.275,0.0,52.71 -2016-04-25 08:00:00,5499.075,0.0,53.93 -2016-04-25 09:00:00,5774.042,0.0,56.74 -2016-04-25 10:00:00,5936.967,0.0,58.97 -2016-04-25 11:00:00,5991.042,0.0,62.02 -2016-04-25 12:00:00,6053.925,0.0,63.55 -2016-04-25 13:00:00,6070.067,0.0,65.22 -2016-04-25 14:00:00,6069.283,0.0,65.84 -2016-04-25 15:00:00,6070.3,0.0,65.79 -2016-04-25 16:00:00,6091.642,0.0,66.15 -2016-04-25 17:00:00,6082.217,0.0,65.66 -2016-04-25 18:00:00,5862.1,0.0,65.01 -2016-04-25 19:00:00,5715.217,0.0,62.99 -2016-04-25 20:00:00,5736.75,0.0,59.42 -2016-04-25 21:00:00,5576.0,0.0,58.9 -2016-04-25 22:00:00,5242.333,0.0,58.1 -2016-04-25 23:00:00,4836.258,0.0,56.97 -2016-04-26 00:00:00,4443.217,0.0,56.55 -2016-04-26 01:00:00,4206.658,0.0,54.8 -2016-04-26 02:00:00,4069.55,0.0,55.41 -2016-04-26 03:00:00,3992.008,0.0293,53.88 -2016-04-26 04:00:00,4003.525,0.0533,54.07 -2016-04-26 05:00:00,4178.867,0.0,52.82 -2016-04-26 06:00:00,4600.717,0.0,52.36 -2016-04-26 07:00:00,5118.908,0.0,52.96 -2016-04-26 08:00:00,5554.408,0.0,54.28 -2016-04-26 09:00:00,5823.575,0.0,54.99 -2016-04-26 10:00:00,5982.458,0.0,55.71 -2016-04-26 11:00:00,6056.175,0.0,57.79 -2016-04-26 12:00:00,6040.75,0.0,58.58 -2016-04-26 13:00:00,6053.15,0.0,60.7 -2016-04-26 14:00:00,6057.292,0.0,61.73 -2016-04-26 15:00:00,6056.875,0.0258,61.45 -2016-04-26 16:00:00,6092.433,0.0125,59.16 -2016-04-26 17:00:00,6058.092,0.0,57.18 -2016-04-26 18:00:00,5881.817,0.0,54.43 -2016-04-26 19:00:00,5802.083,0.0,52.11 -2016-04-26 20:00:00,5753.983,0.0,50.36 -2016-04-26 21:00:00,5556.783,0.0,48.18 -2016-04-26 22:00:00,5239.025,0.0,47.07 -2016-04-26 23:00:00,4819.683,0.0,47.48 -2016-04-27 00:00:00,4465.275,0.0,47.09 -2016-04-27 01:00:00,4243.908,0.0,46.25 -2016-04-27 02:00:00,4090.833,0.0,46.07 -2016-04-27 03:00:00,4013.883,0.0,45.82 -2016-04-27 04:00:00,4017.892,0.0,45.89 -2016-04-27 05:00:00,4185.025,0.0,46.24 -2016-04-27 06:00:00,4575.408,0.0,46.89 -2016-04-27 07:00:00,5093.033,0.0,47.24 -2016-04-27 08:00:00,5510.191,0.0,47.62 -2016-04-27 09:00:00,5786.925,0.0,49.07 -2016-04-27 10:00:00,5883.025,0.0,51.18 -2016-04-27 11:00:00,5911.592,0.0,52.68 -2016-04-27 12:00:00,5923.767,0.0,54.36 -2016-04-27 13:00:00,5936.891,0.0,56.05 -2016-04-27 14:00:00,5935.658,0.0,57.45 -2016-04-27 15:00:00,5935.917,0.0,58.6 -2016-04-27 16:00:00,5948.9,0.0,59.08 -2016-04-27 17:00:00,5941.717,0.0,57.7 -2016-04-27 18:00:00,5762.783,0.0,56.4 -2016-04-27 19:00:00,5644.358,0.0,54.93 -2016-04-27 20:00:00,5686.217,0.0,52.7 -2016-04-27 21:00:00,5535.067,0.0,52.72 -2016-04-27 22:00:00,5248.35,0.0,53.96 -2016-04-27 23:00:00,4843.733,0.0,53.0 -2016-04-28 00:00:00,4466.692,0.0,52.1 -2016-04-28 01:00:00,4225.992,0.0,51.68 -2016-04-28 02:00:00,4086.575,0.0,50.03 -2016-04-28 03:00:00,4009.783,0.0,49.88 -2016-04-28 04:00:00,4020.508,0.0,49.56 -2016-04-28 05:00:00,4163.767,0.0,48.28 -2016-04-28 06:00:00,4558.875,0.0,47.3 -2016-04-28 07:00:00,5059.642,0.0,47.43 -2016-04-28 08:00:00,5486.125,0.0,49.23 -2016-04-28 09:00:00,5749.058,0.0,51.18 -2016-04-28 10:00:00,5835.5,0.0,52.75 -2016-04-28 11:00:00,5883.8,0.0,54.84 -2016-04-28 12:00:00,5921.217,0.0,56.24 -2016-04-28 13:00:00,5928.283,0.0,56.94 -2016-04-28 14:00:00,5931.492,0.0,57.08 -2016-04-28 15:00:00,5919.175,0.0,55.59 -2016-04-28 16:00:00,5906.042,0.0,54.8 -2016-04-28 17:00:00,5921.675,0.0,52.59 -2016-04-28 18:00:00,5855.225,0.0081,52.4 -2016-04-28 19:00:00,5759.675,0.0023,49.83 -2016-04-28 20:00:00,5720.867,0.0,48.67 -2016-04-28 21:00:00,5555.658,0.0,49.36 -2016-04-28 22:00:00,5243.25,0.0,49.48 -2016-04-28 23:00:00,4865.8,0.0,49.0 -2016-04-29 00:00:00,4511.758,0.0,48.67 -2016-04-29 01:00:00,4298.35,0.0,48.59 -2016-04-29 02:00:00,4148.817,0.0,48.9 -2016-04-29 03:00:00,4079.475,0.0,48.9 -2016-04-29 04:00:00,4084.433,0.0,49.13 -2016-04-29 05:00:00,4266.783,0.0,49.06 -2016-04-29 06:00:00,4652.875,0.0,49.15 -2016-04-29 07:00:00,5141.325,0.0,48.73 -2016-04-29 08:00:00,5566.342,0.0,49.78 -2016-04-29 09:00:00,5804.917,0.0,50.13 -2016-04-29 10:00:00,5885.325,0.0,51.74 -2016-04-29 11:00:00,5920.2,0.0,53.18 -2016-04-29 12:00:00,5936.567,0.0,54.48 -2016-04-29 13:00:00,5926.167,0.0,54.71 -2016-04-29 14:00:00,5919.525,0.0,55.51 -2016-04-29 15:00:00,5921.425,0.0,55.15 -2016-04-29 16:00:00,5934.033,0.0,54.48 -2016-04-29 17:00:00,5942.95,0.0,52.41 -2016-04-29 18:00:00,5826.583,0.0022,51.43 -2016-04-29 19:00:00,5742.833,0.082,50.9 -2016-04-29 20:00:00,5661.375,0.0,49.86 -2016-04-29 21:00:00,5471.167,0.0,48.42 -2016-04-29 22:00:00,5199.4,0.0251,48.64 -2016-04-29 23:00:00,4879.775,0.0,48.45 -2016-04-30 00:00:00,4592.975,0.0,46.91 -2016-04-30 01:00:00,4343.492,0.0,46.76 -2016-04-30 02:00:00,4185.75,0.0,47.32 -2016-04-30 03:00:00,4094.175,0.0,47.19 -2016-04-30 04:00:00,4051.425,0.0,46.53 -2016-04-30 05:00:00,4096.05,0.0,46.24 -2016-04-30 06:00:00,4221.208,0.0,46.9 -2016-04-30 07:00:00,4438.625,0.0,47.58 -2016-04-30 08:00:00,4703.467,0.0,48.41 -2016-04-30 09:00:00,4909.483,0.0,50.23 -2016-04-30 10:00:00,5077.467,0.0,52.91 -2016-04-30 11:00:00,5158.817,0.0,56.13 -2016-04-30 12:00:00,5174.992,0.0,58.31 -2016-04-30 13:00:00,5150.392,0.0,59.92 -2016-04-30 14:00:00,5129.692,0.0,61.71 -2016-04-30 15:00:00,5089.083,0.0,60.13 -2016-04-30 16:00:00,5075.608,0.0,59.6 -2016-04-30 17:00:00,5079.217,0.0,58.94 -2016-04-30 18:00:00,5093.317,0.0,56.3 -2016-04-30 19:00:00,5126.875,0.0,54.57 -2016-04-30 20:00:00,5240.925,0.0,51.8 -2016-04-30 21:00:00,5198.667,0.0,50.79 -2016-04-30 22:00:00,5039.642,0.0,50.36 -2016-04-30 23:00:00,4783.667,0.0,48.94 -2016-05-01 00:00:00,4509.692,0.0,49.35 -2016-05-01 01:00:00,4274.575,0.0,49.56 -2016-05-01 02:00:00,4111.208,0.0,49.05 -2016-05-01 03:00:00,4019.842,0.0031,49.38 -2016-05-01 04:00:00,3978.892,0.0035,49.59 -2016-05-01 05:00:00,4004.633,0.0028,49.32 -2016-05-01 06:00:00,4061.742,0.0033,49.53 -2016-05-01 07:00:00,4228.25,0.0168,49.52 -2016-05-01 08:00:00,4458.633,0.0256,49.07 -2016-05-01 09:00:00,4706.892,0.0511,48.78 -2016-05-01 10:00:00,4936.533,0.0174,47.69 -2016-05-01 11:00:00,5103.117,0.0713,48.29 -2016-05-01 12:00:00,5177.55,0.0141,48.28 -2016-05-01 13:00:00,5202.058,0.0,48.01 -2016-05-01 14:00:00,5233.808,0.0027,47.48 -2016-05-01 15:00:00,5232.942,0.0,47.73 -2016-05-01 16:00:00,5273.133,0.0044,48.04 -2016-05-01 17:00:00,5329.1,0.0054,47.97 -2016-05-01 18:00:00,5371.683,0.0,47.77 -2016-05-01 19:00:00,5395.6,0.003,47.24 -2016-05-01 20:00:00,5446.1,0.0,47.2 -2016-05-01 21:00:00,5316.358,0.0,45.75 -2016-05-01 22:00:00,5060.417,0.0,44.84 -2016-05-01 23:00:00,4715.725,0.0,44.74 -2016-05-02 00:00:00,4401.583,0.0,45.58 -2016-05-02 01:00:00,4225.967,0.0,45.59 -2016-05-02 02:00:00,4117.717,0.0,45.27 -2016-05-02 03:00:00,4062.875,0.0,45.56 -2016-05-02 04:00:00,4094.883,0.0,45.4 -2016-05-02 05:00:00,4304.767,0.0,45.67 -2016-05-02 06:00:00,4769.167,0.0,45.58 -2016-05-02 07:00:00,5327.117,0.0,46.37 -2016-05-02 08:00:00,5731.708,0.0,47.57 -2016-05-02 09:00:00,5988.292,0.0,48.07 -2016-05-02 10:00:00,6110.117,0.0,49.66 -2016-05-02 11:00:00,6142.258,0.0,50.39 -2016-05-02 12:00:00,6149.758,0.0,51.57 -2016-05-02 13:00:00,6152.05,0.0,52.27 -2016-05-02 14:00:00,6087.717,0.0,53.95 -2016-05-02 15:00:00,6080.142,0.0,55.36 -2016-05-02 16:00:00,6099.192,0.0,56.86 -2016-05-02 17:00:00,6068.158,0.0,58.14 -2016-05-02 18:00:00,5924.158,0.0,59.13 -2016-05-02 19:00:00,5833.975,0.0,58.71 -2016-05-02 20:00:00,5847.958,0.0,56.25 -2016-05-02 21:00:00,5689.133,0.0029,55.04 -2016-05-02 22:00:00,5376.833,0.0,54.34 -2016-05-02 23:00:00,4933.833,0.0044,55.49 -2016-05-03 00:00:00,4540.858,0.0362,54.87 -2016-05-03 01:00:00,4295.517,0.0134,54.81 -2016-05-03 02:00:00,4159.2,0.0519,53.25 -2016-05-03 03:00:00,4097.15,0.0253,53.15 -2016-05-03 04:00:00,4108.892,0.0559,53.15 -2016-05-03 05:00:00,4308.608,0.0404,52.14 -2016-05-03 06:00:00,4780.958,0.0218,52.48 -2016-05-03 07:00:00,5342.075,0.0095,52.21 -2016-05-03 08:00:00,5775.383,0.0078,52.08 -2016-05-03 09:00:00,6024.442,0.0073,52.33 -2016-05-03 10:00:00,6138.858,0.0036,51.75 -2016-05-03 11:00:00,6179.283,0.0031,52.09 -2016-05-03 12:00:00,6198.867,0.0,51.9 -2016-05-03 13:00:00,6190.317,0.0,52.31 -2016-05-03 14:00:00,6169.108,0.0,52.29 -2016-05-03 15:00:00,6163.583,0.0,52.21 -2016-05-03 16:00:00,6171.3,0.0,52.81 -2016-05-03 17:00:00,6158.133,0.0,52.81 -2016-05-03 18:00:00,6052.058,0.0,52.99 -2016-05-03 19:00:00,5952.308,0.0,52.55 -2016-05-03 20:00:00,5896.067,0.0,51.51 -2016-05-03 21:00:00,5711.108,0.0,51.3 -2016-05-03 22:00:00,5376.725,0.0,51.42 -2016-05-03 23:00:00,4937.675,0.0,51.54 -2016-05-04 00:00:00,4537.767,0.0,50.84 -2016-05-04 01:00:00,4271.417,0.0,50.72 -2016-05-04 02:00:00,4137.458,0.0,50.19 -2016-05-04 03:00:00,4045.525,0.0,49.7 -2016-05-04 04:00:00,4069.233,0.0,50.03 -2016-05-04 05:00:00,4262.108,0.0,50.05 -2016-05-04 06:00:00,4748.592,0.038,50.11 -2016-05-04 07:00:00,5346.642,0.0,49.88 -2016-05-04 08:00:00,5735.858,0.0,49.4 -2016-05-04 09:00:00,5992.058,0.0,50.31 -2016-05-04 10:00:00,6070.742,0.0,51.33 -2016-05-04 11:00:00,6124.333,0.0,51.3 -2016-05-04 12:00:00,6143.275,0.0,50.43 -2016-05-04 13:00:00,6138.583,0.0,50.01 -2016-05-04 14:00:00,6132.408,0.0069,49.85 -2016-05-04 15:00:00,6151.442,0.0,49.51 -2016-05-04 16:00:00,6172.008,0.0046,49.84 -2016-05-04 17:00:00,6177.167,0.011,49.68 -2016-05-04 18:00:00,6056.767,0.0,49.54 -2016-05-04 19:00:00,6013.358,0.0,49.58 -2016-05-04 20:00:00,5956.1,0.0,50.44 -2016-05-04 21:00:00,5750.65,0.0,49.42 -2016-05-04 22:00:00,5401.892,0.0,49.26 -2016-05-04 23:00:00,4970.267,0.0,48.34 -2016-05-05 00:00:00,4570.175,0.0,48.39 -2016-05-05 01:00:00,4317.125,0.0,47.88 -2016-05-05 02:00:00,4157.608,0.0,47.84 -2016-05-05 03:00:00,4082.458,0.0,47.49 -2016-05-05 04:00:00,4090.592,0.0,47.27 -2016-05-05 05:00:00,4235.383,0.0,46.81 -2016-05-05 06:00:00,4729.967,0.0,47.08 -2016-05-05 07:00:00,5321.075,0.0,46.88 -2016-05-05 08:00:00,5741.267,0.0,47.11 -2016-05-05 09:00:00,5979.992,0.0,48.96 -2016-05-05 10:00:00,6074.267,0.0,50.0 -2016-05-05 11:00:00,6105.442,0.0,51.67 -2016-05-05 12:00:00,6099.333,0.0,52.27 -2016-05-05 13:00:00,6064.067,0.0,53.9 -2016-05-05 14:00:00,6021.7,0.0,55.58 -2016-05-05 15:00:00,6036.192,0.0,56.65 -2016-05-05 16:00:00,6055.95,0.0,55.93 -2016-05-05 17:00:00,6053.717,0.0,55.46 -2016-05-05 18:00:00,5923.025,0.0,55.5 -2016-05-05 19:00:00,5837.817,0.0,54.65 -2016-05-05 20:00:00,5811.842,0.0,53.55 -2016-05-05 21:00:00,5648.217,0.0,53.75 -2016-05-05 22:00:00,5336.525,0.0,52.63 -2016-05-05 23:00:00,4917.583,0.0,52.6 -2016-05-06 00:00:00,4557.608,0.0,51.77 -2016-05-06 01:00:00,4299.1,0.0,51.52 -2016-05-06 02:00:00,4150.967,0.0098,51.16 -2016-05-06 03:00:00,4066.533,0.0358,50.94 -2016-05-06 04:00:00,4092.225,0.0,49.69 -2016-05-06 05:00:00,4238.491,0.0604,48.73 -2016-05-06 06:00:00,4706.325,0.021,48.66 -2016-05-06 07:00:00,5314.692,0.0023,49.08 -2016-05-06 08:00:00,5731.742,0.0,48.05 -2016-05-06 09:00:00,6004.442,0.0,48.9 -2016-05-06 10:00:00,6162.8,0.0035,48.75 -2016-05-06 11:00:00,6211.683,0.0,49.05 -2016-05-06 12:00:00,6216.317,0.0,49.22 -2016-05-06 13:00:00,6205.942,0.0,50.03 -2016-05-06 14:00:00,6164.15,0.0,50.91 -2016-05-06 15:00:00,6138.033,0.0,51.69 -2016-05-06 16:00:00,6144.417,0.0,51.66 -2016-05-06 17:00:00,6114.075,0.0,51.74 -2016-05-06 18:00:00,5990.858,0.0,50.86 -2016-05-06 19:00:00,5899.617,0.0,50.25 -2016-05-06 20:00:00,5814.442,0.0,49.86 -2016-05-06 21:00:00,5644.125,0.0,49.9 -2016-05-06 22:00:00,5364.942,0.0,48.88 -2016-05-06 23:00:00,5019.85,0.0,49.16 -2016-05-07 00:00:00,4639.592,0.0,49.63 -2016-05-07 01:00:00,4377.4,0.0,48.92 -2016-05-07 02:00:00,4220.25,0.0,49.23 -2016-05-07 03:00:00,4135.75,0.0,49.07 -2016-05-07 04:00:00,4094.45,0.0,48.42 -2016-05-07 05:00:00,4142.55,0.0,48.46 -2016-05-07 06:00:00,4262.283,0.0,48.56 -2016-05-07 07:00:00,4490.983,0.0,48.96 -2016-05-07 08:00:00,4796.608,0.0,50.11 -2016-05-07 09:00:00,5065.192,0.0,50.75 -2016-05-07 10:00:00,5240.283,0.0,52.0 -2016-05-07 11:00:00,5309.95,0.0,52.32 -2016-05-07 12:00:00,5307.858,0.0,53.06 -2016-05-07 13:00:00,5257.142,0.0,54.15 -2016-05-07 14:00:00,5222.625,0.0,55.29 -2016-05-07 15:00:00,5185.008,0.0,56.17 -2016-05-07 16:00:00,5138.892,0.0,56.59 -2016-05-07 17:00:00,5123.517,0.0,56.37 -2016-05-07 18:00:00,5113.267,0.0,56.13 -2016-05-07 19:00:00,5119.133,0.0,55.71 -2016-05-07 20:00:00,5240.433,0.0,53.55 -2016-05-07 21:00:00,5213.325,0.0,52.88 -2016-05-07 22:00:00,5062.683,0.0,51.55 -2016-05-07 23:00:00,4822.917,0.0,50.88 -2016-05-08 00:00:00,4545.45,0.0,50.78 -2016-05-08 01:00:00,4307.825,0.0,49.87 -2016-05-08 02:00:00,4105.242,0.0,48.33 -2016-05-08 03:00:00,4002.767,0.0,49.71 -2016-05-08 04:00:00,3961.017,0.0,49.02 -2016-05-08 05:00:00,3972.05,0.0,49.41 -2016-05-08 06:00:00,4041.225,0.0,49.74 -2016-05-08 07:00:00,4235.667,0.2836,50.46 -2016-05-08 08:00:00,4495.592,0.0098,51.26 -2016-05-08 09:00:00,4744.475,0.0,51.85 -2016-05-08 10:00:00,4941.775,0.0,53.76 -2016-05-08 11:00:00,5011.617,0.0,55.53 -2016-05-08 12:00:00,5050.058,0.0,57.91 -2016-05-08 13:00:00,5045.767,0.0,63.3 -2016-05-08 14:00:00,4977.975,0.0,64.18 -2016-05-08 15:00:00,4940.017,0.0,64.14 -2016-05-08 16:00:00,4946.717,0.0,63.51 -2016-05-08 17:00:00,4963.033,0.0,63.27 -2016-05-08 18:00:00,4973.483,0.0,62.49 -2016-05-08 19:00:00,5011.083,0.0,61.11 -2016-05-08 20:00:00,5161.158,0.0,59.06 -2016-05-08 21:00:00,5161.4,0.0,57.63 -2016-05-08 22:00:00,4978.075,0.0,55.21 -2016-05-08 23:00:00,4683.317,0.0,54.72 -2016-05-09 00:00:00,4365.375,0.0,53.74 -2016-05-09 01:00:00,4147.15,0.0,53.71 -2016-05-09 02:00:00,4002.367,0.0,50.52 -2016-05-09 03:00:00,3913.842,0.0,50.52 -2016-05-09 04:00:00,3936.342,0.0,50.84 -2016-05-09 05:00:00,4132.792,0.0,49.83 -2016-05-09 06:00:00,4602.625,0.0,50.89 -2016-05-09 07:00:00,5183.233,0.0,52.57 -2016-05-09 08:00:00,5577.092,0.0,56.06 -2016-05-09 09:00:00,5838.542,0.0,59.74 -2016-05-09 10:00:00,5969.533,0.0,63.07 -2016-05-09 11:00:00,6047.892,0.0,66.71 -2016-05-09 12:00:00,6100.775,0.0,68.66 -2016-05-09 13:00:00,6154.592,0.0,69.81 -2016-05-09 14:00:00,6153.283,0.0,70.78 -2016-05-09 15:00:00,6171.642,0.0,70.97 -2016-05-09 16:00:00,6182.592,0.0,70.98 -2016-05-09 17:00:00,6155.2,0.0,69.83 -2016-05-09 18:00:00,5952.125,0.0,68.8 -2016-05-09 19:00:00,5846.392,0.0,66.52 -2016-05-09 20:00:00,5829.817,0.0,64.8 -2016-05-09 21:00:00,5673.1,0.0,63.17 -2016-05-09 22:00:00,5327.825,0.0,62.36 -2016-05-09 23:00:00,4873.567,0.0,58.27 -2016-05-10 00:00:00,4451.958,0.0,56.43 -2016-05-10 01:00:00,4189.708,0.0,54.82 -2016-05-10 02:00:00,4032.7,0.0,52.01 -2016-05-10 03:00:00,3954.75,0.0,51.33 -2016-05-10 04:00:00,3961.492,0.0,49.95 -2016-05-10 05:00:00,4127.417,0.0,48.33 -2016-05-10 06:00:00,4583.025,0.0,49.09 -2016-05-10 07:00:00,5165.342,0.0,50.68 -2016-05-10 08:00:00,5575.142,0.0,53.92 -2016-05-10 09:00:00,5818.817,0.0,56.39 -2016-05-10 10:00:00,5923.225,0.0,58.81 -2016-05-10 11:00:00,5987.708,0.0,60.42 -2016-05-10 12:00:00,6033.3,0.0,62.65 -2016-05-10 13:00:00,6028.917,0.0,63.11 -2016-05-10 14:00:00,6027.35,0.0,61.78 -2016-05-10 15:00:00,6039.892,0.0,62.24 -2016-05-10 16:00:00,6087.267,0.0,60.61 -2016-05-10 17:00:00,6072.092,0.0,60.09 -2016-05-10 18:00:00,5898.4,0.0,59.7 -2016-05-10 19:00:00,5771.308,0.0,59.28 -2016-05-10 20:00:00,5762.783,0.0,58.77 -2016-05-10 21:00:00,5611.842,0.0,57.08 -2016-05-10 22:00:00,5281.8,0.0,56.25 -2016-05-10 23:00:00,4843.767,0.0,55.43 -2016-05-11 00:00:00,4432.933,0.0,54.03 -2016-05-11 01:00:00,4180.858,0.0,53.14 -2016-05-11 02:00:00,4032.525,0.0,52.3 -2016-05-11 03:00:00,3959.308,0.0,51.08 -2016-05-11 04:00:00,3965.808,0.0,50.59 -2016-05-11 05:00:00,4145.05,0.0,50.16 -2016-05-11 06:00:00,4606.375,0.0,50.46 -2016-05-11 07:00:00,5201.317,0.0,53.42 -2016-05-11 08:00:00,5634.4,0.0,58.05 -2016-05-11 09:00:00,5913.717,0.0,62.26 -2016-05-11 10:00:00,6068.183,0.0,65.9 -2016-05-11 11:00:00,6138.892,0.0,67.55 -2016-05-11 12:00:00,6191.675,0.0,69.78 -2016-05-11 13:00:00,6213.358,0.0,71.78 -2016-05-11 14:00:00,6233.525,0.0,73.34 -2016-05-11 15:00:00,6276.942,0.0,72.48 -2016-05-11 16:00:00,6322.358,0.0,71.14 -2016-05-11 17:00:00,6311.617,0.0,71.17 -2016-05-11 18:00:00,6080.125,0.0,69.54 -2016-05-11 19:00:00,5896.042,0.0,68.06 -2016-05-11 20:00:00,5867.3,0.0,65.98 -2016-05-11 21:00:00,5747.85,0.0,63.54 -2016-05-11 22:00:00,5429.425,0.0,63.87 -2016-05-11 23:00:00,5010.7,0.0,62.11 -2016-05-12 00:00:00,4589.717,0.0,60.5 -2016-05-12 01:00:00,4284.942,0.0,60.9 -2016-05-12 02:00:00,4103.008,0.0,59.55 -2016-05-12 03:00:00,4022.625,0.0,57.24 -2016-05-12 04:00:00,4025.842,0.0,55.0 -2016-05-12 05:00:00,4197.725,0.0,54.44 -2016-05-12 06:00:00,4682.9,0.0,56.82 -2016-05-12 07:00:00,5321.467,0.0,58.43 -2016-05-12 08:00:00,5785.025,0.0,62.1 -2016-05-12 09:00:00,6068.208,0.0,66.39 -2016-05-12 10:00:00,6225.45,0.0,68.43 -2016-05-12 11:00:00,6312.467,0.0,70.11 -2016-05-12 12:00:00,6392.667,0.0,71.78 -2016-05-12 13:00:00,6443.567,0.0,73.86 -2016-05-12 14:00:00,6481.942,0.0,75.04 -2016-05-12 15:00:00,6566.267,0.0,74.75 -2016-05-12 16:00:00,6648.625,0.0,73.62 -2016-05-12 17:00:00,6540.842,0.0,73.47 -2016-05-12 18:00:00,6262.783,0.0,70.35 -2016-05-12 19:00:00,5990.642,0.0,68.34 -2016-05-12 20:00:00,5940.125,0.0,63.83 -2016-05-12 21:00:00,5778.617,0.0,61.89 -2016-05-12 22:00:00,5449.458,0.0,59.71 -2016-05-12 23:00:00,5021.283,0.0,59.22 -2016-05-13 00:00:00,4606.067,0.0,57.32 -2016-05-13 01:00:00,4329.642,0.0,56.74 -2016-05-13 02:00:00,4182.225,0.0,57.03 -2016-05-13 03:00:00,4089.533,0.0,56.09 -2016-05-13 04:00:00,4101.3,0.0,56.6 -2016-05-13 05:00:00,4277.617,0.0023,57.17 -2016-05-13 06:00:00,4741.4,0.0033,58.1 -2016-05-13 07:00:00,5372.842,0.0025,59.17 -2016-05-13 08:00:00,5812.008,0.0,60.47 -2016-05-13 09:00:00,6130.175,0.0,63.74 -2016-05-13 10:00:00,6313.233,0.0,64.73 -2016-05-13 11:00:00,6374.55,0.0,64.13 -2016-05-13 12:00:00,6379.917,0.0,62.68 -2016-05-13 13:00:00,6370.033,0.0,63.39 -2016-05-13 14:00:00,6332.225,0.0199,63.42 -2016-05-13 15:00:00,6326.708,0.0131,62.03 -2016-05-13 16:00:00,6371.9,0.0887,61.47 -2016-05-13 17:00:00,6353.558,0.026,61.51 -2016-05-13 18:00:00,6182.533,0.0,61.61 -2016-05-13 19:00:00,6025.542,0.0,62.94 -2016-05-13 20:00:00,5915.025,0.0,63.3 -2016-05-13 21:00:00,5772.9,0.0,63.25 -2016-05-13 22:00:00,5513.283,0.0,62.47 -2016-05-13 23:00:00,5144.467,0.0,62.48 -2016-05-14 00:00:00,4757.517,0.0,61.14 -2016-05-14 01:00:00,4460.5,0.0,60.91 -2016-05-14 02:00:00,4279.825,0.0,60.14 -2016-05-14 03:00:00,4149.658,0.0,58.83 -2016-05-14 04:00:00,4095.092,0.0,57.49 -2016-05-14 05:00:00,4105.492,0.0,56.2 -2016-05-14 06:00:00,4207.392,0.0,57.37 -2016-05-14 07:00:00,4511.158,0.0,59.68 -2016-05-14 08:00:00,4866.967,0.0,62.41 -2016-05-14 09:00:00,5160.933,0.0,66.08 -2016-05-14 10:00:00,5398.942,0.0,68.63 -2016-05-14 11:00:00,5535.667,0.0,70.97 -2016-05-14 12:00:00,5573.917,0.0,71.59 -2016-05-14 13:00:00,5539.992,0.0,70.87 -2016-05-14 14:00:00,5496.025,0.0,70.01 -2016-05-14 15:00:00,5450.858,0.0,69.03 -2016-05-14 16:00:00,5428.95,0.0,67.33 -2016-05-14 17:00:00,5460.625,0.0,69.13 -2016-05-14 18:00:00,5485.45,0.0024,68.5 -2016-05-14 19:00:00,5451.325,0.0,64.33 -2016-05-14 20:00:00,5439.633,0.006,61.0 -2016-05-14 21:00:00,5336.1,0.0,60.33 -2016-05-14 22:00:00,5142.142,0.0,60.6 -2016-05-14 23:00:00,4861.108,0.0,59.13 -2016-05-15 00:00:00,4538.858,0.0,56.67 -2016-05-15 01:00:00,4273.175,0.0,55.0 -2016-05-15 02:00:00,4093.533,0.0,53.96 -2016-05-15 03:00:00,3987.05,0.0,51.34 -2016-05-15 04:00:00,3925.225,0.0,50.46 -2016-05-15 05:00:00,3935.667,0.0,48.59 -2016-05-15 06:00:00,3998.764,0.0,48.24 -2016-05-15 07:00:00,4166.5,0.0,49.36 -2016-05-15 08:00:00,4423.633,0.0,51.78 -2016-05-15 09:00:00,4671.492,0.0,54.14 -2016-05-15 10:00:00,4905.208,0.0,55.07 -2016-05-15 11:00:00,4990.117,0.0,56.28 -2016-05-15 12:00:00,5090.85,0.0,55.29 -2016-05-15 13:00:00,5083.283,0.0,54.98 -2016-05-15 14:00:00,5079.625,0.0021,55.49 -2016-05-15 15:00:00,5086.35,0.0,55.44 -2016-05-15 16:00:00,5075.108,0.0,55.42 -2016-05-15 17:00:00,5081.733,0.0,55.96 -2016-05-15 18:00:00,5113.192,0.0,54.68 -2016-05-15 19:00:00,5163.75,0.0,53.7 -2016-05-15 20:00:00,5271.5,0.0,48.53 -2016-05-15 21:00:00,5254.025,0.0,47.11 -2016-05-15 22:00:00,5018.5,0.0,48.51 -2016-05-15 23:00:00,4681.633,0.0,47.3 -2016-05-16 00:00:00,4329.0,0.0,45.47 -2016-05-16 01:00:00,4119.725,0.0,44.66 -2016-05-16 02:00:00,3983.058,0.0,44.42 -2016-05-16 03:00:00,3915.158,0.0,42.89 -2016-05-16 04:00:00,3940.375,0.0,42.29 -2016-05-16 05:00:00,4136.567,0.0,41.66 -2016-05-16 06:00:00,4598.667,0.0,42.63 -2016-05-16 07:00:00,5188.5,0.0,43.96 -2016-05-16 08:00:00,5563.642,0.0,46.43 -2016-05-16 09:00:00,5875.825,0.0,49.11 -2016-05-16 10:00:00,5969.642,0.0,51.64 -2016-05-16 11:00:00,6016.567,0.0,53.89 -2016-05-16 12:00:00,6001.733,0.0,57.15 -2016-05-16 13:00:00,5994.108,0.0,58.91 -2016-05-16 14:00:00,5979.417,0.0,61.24 -2016-05-16 15:00:00,5996.108,0.0,64.57 -2016-05-16 16:00:00,6025.725,0.0,65.22 -2016-05-16 17:00:00,6033.242,0.0,65.44 -2016-05-16 18:00:00,5860.633,0.0,65.37 -2016-05-16 19:00:00,5729.775,0.0,64.33 -2016-05-16 20:00:00,5729.317,0.0,62.51 -2016-05-16 21:00:00,5600.158,0.0,61.18 -2016-05-16 22:00:00,5291.425,0.0,59.48 -2016-05-16 23:00:00,4846.208,0.0,58.11 -2016-05-17 00:00:00,4442.225,0.0,58.32 -2016-05-17 01:00:00,4197.342,0.0,57.82 -2016-05-17 02:00:00,4054.633,0.0,55.52 -2016-05-17 03:00:00,3976.675,0.0,55.17 -2016-05-17 04:00:00,3993.733,0.0,54.6 -2016-05-17 05:00:00,4157.108,0.0,54.55 -2016-05-17 06:00:00,4638.133,0.0,55.96 -2016-05-17 07:00:00,5210.875,0.0,57.06 -2016-05-17 08:00:00,5647.192,0.0,58.86 -2016-05-17 09:00:00,5907.683,0.0,61.61 -2016-05-17 10:00:00,6006.492,0.0,62.91 -2016-05-17 11:00:00,6082.392,0.0,64.47 -2016-05-17 12:00:00,6120.833,0.0,65.5 -2016-05-17 13:00:00,6151.758,0.0,66.34 -2016-05-17 14:00:00,6137.975,0.0,66.02 -2016-05-17 15:00:00,6104.917,0.0,64.04 -2016-05-17 16:00:00,6142.167,0.0082,62.73 -2016-05-17 17:00:00,6122.425,0.0,59.88 -2016-05-17 18:00:00,5932.483,0.0,59.39 -2016-05-17 19:00:00,5788.833,0.0,57.53 -2016-05-17 20:00:00,5747.55,0.0,56.91 -2016-05-17 21:00:00,5611.358,0.0,55.12 -2016-05-17 22:00:00,5302.075,0.0,54.72 -2016-05-17 23:00:00,4870.575,0.0,55.63 -2016-05-18 00:00:00,4474.867,0.0,54.09 -2016-05-18 01:00:00,4221.9,0.0,53.78 -2016-05-18 02:00:00,4078.858,0.0,52.24 -2016-05-18 03:00:00,4004.942,0.0,52.94 -2016-05-18 04:00:00,4011.467,0.0,53.08 -2016-05-18 05:00:00,4169.408,0.0,52.09 -2016-05-18 06:00:00,4642.733,0.0,52.81 -2016-05-18 07:00:00,5246.933,0.0,54.51 -2016-05-18 08:00:00,5658.258,0.0,56.44 -2016-05-18 09:00:00,5877.292,0.0,57.77 -2016-05-18 10:00:00,5993.092,0.0,61.3 -2016-05-18 11:00:00,6036.108,0.0,62.19 -2016-05-18 12:00:00,6074.958,0.0,63.61 -2016-05-18 13:00:00,6099.083,0.0,65.49 -2016-05-18 14:00:00,6116.758,0.0,65.68 -2016-05-18 15:00:00,6139.142,0.0,65.72 -2016-05-18 16:00:00,6140.642,0.0,65.11 -2016-05-18 17:00:00,6083.133,0.0153,62.55 -2016-05-18 18:00:00,5905.992,0.0,60.53 -2016-05-18 19:00:00,5805.667,0.0,57.83 -2016-05-18 20:00:00,5758.067,0.0,57.42 -2016-05-18 21:00:00,5590.35,0.0095,57.62 -2016-05-18 22:00:00,5283.117,0.0,56.43 -2016-05-18 23:00:00,4848.5,0.0,56.08 -2016-05-19 00:00:00,4460.092,0.0,54.87 -2016-05-19 01:00:00,4209.717,0.0031,55.74 -2016-05-19 02:00:00,4060.725,0.0026,55.29 -2016-05-19 03:00:00,3987.467,0.0,55.1 -2016-05-19 04:00:00,3988.858,0.0061,54.74 -2016-05-19 05:00:00,4155.858,0.0,54.65 -2016-05-19 06:00:00,4630.325,0.0,54.95 -2016-05-19 07:00:00,5235.083,0.0032,56.84 -2016-05-19 08:00:00,5661.825,0.0,58.17 -2016-05-19 09:00:00,5919.7,0.0,60.91 -2016-05-19 10:00:00,6071.017,0.0,63.37 -2016-05-19 11:00:00,6169.883,0.0,66.9 -2016-05-19 12:00:00,6231.817,0.0024,68.45 -2016-05-19 13:00:00,6285.35,0.0,68.71 -2016-05-19 14:00:00,6253.545,0.0,69.56 -2016-05-19 15:00:00,6242.117,0.0,66.53 -2016-05-19 16:00:00,6254.517,0.0,65.55 -2016-05-19 17:00:00,6208.492,0.0026,64.29 -2016-05-19 18:00:00,5968.283,0.0,64.3 -2016-05-19 19:00:00,5787.525,0.0,61.04 -2016-05-19 20:00:00,5724.708,0.0,59.44 -2016-05-19 21:00:00,5623.183,0.0,58.83 -2016-05-19 22:00:00,5317.4,0.0,56.94 -2016-05-19 23:00:00,4925.25,0.0,57.07 -2016-05-20 00:00:00,4527.917,0.0,56.66 -2016-05-20 01:00:00,4260.0,0.0,56.67 -2016-05-20 02:00:00,4093.942,0.0,56.96 -2016-05-20 03:00:00,4013.35,0.0,56.48 -2016-05-20 04:00:00,4006.583,0.0,54.89 -2016-05-20 05:00:00,4159.933,0.0,53.96 -2016-05-20 06:00:00,4629.675,0.0,54.55 -2016-05-20 07:00:00,5225.225,0.0,57.14 -2016-05-20 08:00:00,5649.773,0.0,60.15 -2016-05-20 09:00:00,5965.933,0.0,63.05 -2016-05-20 10:00:00,6143.133,0.0,66.65 -2016-05-20 11:00:00,6237.692,0.0,69.35 -2016-05-20 12:00:00,6286.292,0.0,70.88 -2016-05-20 13:00:00,6312.392,0.0,72.28 -2016-05-20 14:00:00,6349.8,0.0,73.49 -2016-05-20 15:00:00,6389.333,0.0,73.77 -2016-05-20 16:00:00,6429.967,0.0,73.1 -2016-05-20 17:00:00,6349.6,0.0,73.79 -2016-05-20 18:00:00,6036.55,0.0,70.58 -2016-05-20 19:00:00,5838.183,0.0,67.02 -2016-05-20 20:00:00,5741.108,0.0,63.45 -2016-05-20 21:00:00,5612.292,0.0,62.97 -2016-05-20 22:00:00,5347.367,0.0,62.7 -2016-05-20 23:00:00,4987.7,0.0,62.31 -2016-05-21 00:00:00,4626.475,0.0,61.27 -2016-05-21 01:00:00,4363.925,0.0,60.15 -2016-05-21 02:00:00,4188.608,0.0,58.36 -2016-05-21 03:00:00,4087.692,0.0,57.82 -2016-05-21 04:00:00,4034.725,0.0,57.0 -2016-05-21 05:00:00,4044.258,0.0,56.65 -2016-05-21 06:00:00,4162.558,0.0,57.27 -2016-05-21 07:00:00,4419.875,0.0,57.98 -2016-05-21 08:00:00,4748.392,0.0,61.55 -2016-05-21 09:00:00,5038.142,0.0,63.35 -2016-05-21 10:00:00,5238.775,0.0,63.18 -2016-05-21 11:00:00,5343.025,0.0,63.9 -2016-05-21 12:00:00,5371.925,0.0,64.36 -2016-05-21 13:00:00,5341.892,0.0,64.57 -2016-05-21 14:00:00,5291.033,0.0081,63.98 -2016-05-21 15:00:00,5240.0,0.0,62.87 -2016-05-21 16:00:00,5222.775,0.0,61.6 -2016-05-21 17:00:00,5214.725,0.0,60.85 -2016-05-21 18:00:00,5219.075,0.0256,61.18 -2016-05-21 19:00:00,5263.967,0.0164,60.94 -2016-05-21 20:00:00,5291.075,0.0025,59.04 -2016-05-21 21:00:00,5210.2,0.01,57.47 -2016-05-21 22:00:00,5008.133,0.0158,57.23 -2016-05-21 23:00:00,4739.892,0.0063,57.16 -2016-05-22 00:00:00,4471.317,0.0033,55.43 -2016-05-22 01:00:00,4236.467,0.0036,55.04 -2016-05-22 02:00:00,4066.8,0.0052,54.74 -2016-05-22 03:00:00,3959.675,0.0025,54.67 -2016-05-22 04:00:00,3907.908,0.0769,54.11 -2016-05-22 05:00:00,3912.517,0.0208,55.22 -2016-05-22 06:00:00,3980.942,0.0,54.74 -2016-05-22 07:00:00,4166.117,0.0,54.56 -2016-05-22 08:00:00,4411.042,0.0,56.38 -2016-05-22 09:00:00,4674.783,0.0036,58.02 -2016-05-22 10:00:00,4920.333,0.0025,60.83 -2016-05-22 11:00:00,5024.842,0.0028,61.58 -2016-05-22 12:00:00,5102.45,0.0,64.17 -2016-05-22 13:00:00,5141.767,0.0,66.96 -2016-05-22 14:00:00,5134.758,0.0,68.16 -2016-05-22 15:00:00,5157.733,0.0,68.0 -2016-05-22 16:00:00,5178.133,0.0,68.06 -2016-05-22 17:00:00,5197.992,0.0,66.69 -2016-05-22 18:00:00,5220.058,0.0,65.59 -2016-05-22 19:00:00,5221.025,0.0,64.01 -2016-05-22 20:00:00,5322.717,0.0,61.53 -2016-05-22 21:00:00,5316.033,0.0,62.47 -2016-05-22 22:00:00,5080.325,0.0,61.06 -2016-05-22 23:00:00,4737.0,0.0,60.78 -2016-05-23 00:00:00,4411.583,0.0,58.61 -2016-05-23 01:00:00,4176.483,0.0,57.96 -2016-05-23 02:00:00,4045.75,0.0,56.72 -2016-05-23 03:00:00,3977.742,0.0,56.63 -2016-05-23 04:00:00,3991.75,0.0,55.89 -2016-05-23 05:00:00,4180.508,0.0,56.24 -2016-05-23 06:00:00,4680.383,0.0,56.16 -2016-05-23 07:00:00,5307.183,0.0,58.57 -2016-05-23 08:00:00,5798.233,0.0,61.46 -2016-05-23 09:00:00,6150.225,0.0,65.75 -2016-05-23 10:00:00,6327.117,0.0,69.21 -2016-05-23 11:00:00,6446.733,0.0,71.35 -2016-05-23 12:00:00,6506.608,0.0,72.96 -2016-05-23 13:00:00,6556.558,0.0029,73.51 -2016-05-23 14:00:00,6557.092,0.0,74.08 -2016-05-23 15:00:00,6602.617,0.0,73.85 -2016-05-23 16:00:00,6621.733,0.0,72.94 -2016-05-23 17:00:00,6544.35,0.0098,71.46 -2016-05-23 18:00:00,6258.067,0.0,67.19 -2016-05-23 19:00:00,6043.642,0.0032,62.81 -2016-05-23 20:00:00,5959.392,0.0,61.86 -2016-05-23 21:00:00,5812.625,0.0,62.51 -2016-05-23 22:00:00,5469.383,0.0028,63.25 -2016-05-23 23:00:00,5022.733,0.0,62.37 -2016-05-24 00:00:00,4609.45,0.0061,61.37 -2016-05-24 01:00:00,4355.458,0.0037,61.43 -2016-05-24 02:00:00,4193.933,0.0275,61.73 -2016-05-24 03:00:00,4125.683,0.0137,60.15 -2016-05-24 04:00:00,4139.942,0.0309,59.2 -2016-05-24 05:00:00,4325.55,0.0451,59.08 -2016-05-24 06:00:00,4831.842,0.025,58.72 -2016-05-24 07:00:00,5465.983,0.0298,59.8 -2016-05-24 08:00:00,5920.017,0.0118,60.02 -2016-05-24 09:00:00,6222.875,0.0023,60.93 -2016-05-24 10:00:00,6400.542,0.0173,62.34 -2016-05-24 11:00:00,6468.133,0.0,64.75 -2016-05-24 12:00:00,6509.225,0.0,66.78 -2016-05-24 13:00:00,6598.367,0.0,69.22 -2016-05-24 14:00:00,6549.7,0.0025,70.16 -2016-05-24 15:00:00,6534.6,0.0,72.71 -2016-05-24 16:00:00,6667.483,0.0,72.49 -2016-05-24 17:00:00,6652.092,0.0,71.21 -2016-05-24 18:00:00,6413.2,0.0,68.46 -2016-05-24 19:00:00,6254.142,0.0,68.05 -2016-05-24 20:00:00,6111.633,0.0,68.06 -2016-05-24 21:00:00,5949.742,0.0,67.44 -2016-05-24 22:00:00,5577.592,0.0,66.56 -2016-05-24 23:00:00,5160.392,0.0,64.91 -2016-05-25 00:00:00,4729.025,0.0,63.39 -2016-05-25 01:00:00,4452.825,0.0,62.26 -2016-05-25 02:00:00,4288.258,0.0,62.33 -2016-05-25 03:00:00,4199.125,0.0,61.03 -2016-05-25 04:00:00,4187.767,0.0,60.2 -2016-05-25 05:00:00,4364.325,0.0,59.6 -2016-05-25 06:00:00,4902.142,0.0,60.17 -2016-05-25 07:00:00,5593.925,0.0,63.24 -2016-05-25 08:00:00,6143.233,0.0,68.64 -2016-05-25 09:00:00,6510.817,0.0,72.46 -2016-05-25 10:00:00,6741.608,0.0,76.83 -2016-05-25 11:00:00,6930.967,0.0,79.87 -2016-05-25 12:00:00,7095.308,0.0,82.6 -2016-05-25 13:00:00,7244.292,0.0,84.89 -2016-05-25 14:00:00,7330.8,0.0,86.66 -2016-05-25 15:00:00,7449.383,0.0,86.99 -2016-05-25 16:00:00,7537.817,0.0,86.03 -2016-05-25 17:00:00,7525.333,0.0,85.1 -2016-05-25 18:00:00,7219.583,0.0,83.9 -2016-05-25 19:00:00,6945.958,0.0,81.75 -2016-05-25 20:00:00,6817.055,0.0,80.52 -2016-05-25 21:00:00,6688.025,0.0,79.35 -2016-05-25 22:00:00,6341.508,0.0,75.88 -2016-05-25 23:00:00,5880.317,0.0,75.52 -2016-05-26 00:00:00,5420.558,0.0,73.64 -2016-05-26 01:00:00,5092.792,0.0,73.68 -2016-05-26 02:00:00,4867.975,0.0,72.0 -2016-05-26 03:00:00,4757.992,0.0,70.02 -2016-05-26 04:00:00,4734.05,0.0,68.59 -2016-05-26 05:00:00,4902.675,0.0,68.34 -2016-05-26 06:00:00,5439.992,0.0,67.01 -2016-05-26 07:00:00,6158.333,0.0,71.15 -2016-05-26 08:00:00,6727.125,0.0,73.99 -2016-05-26 09:00:00,7147.758,0.0,78.27 -2016-05-26 10:00:00,7451.717,0.0,80.57 -2016-05-26 11:00:00,7687.883,0.0,83.08 -2016-05-26 12:00:00,7889.042,0.0,86.64 -2016-05-26 13:00:00,8012.917,0.0,86.71 -2016-05-26 14:00:00,8122.208,0.0,87.63 -2016-05-26 15:00:00,8218.775,0.0,86.65 -2016-05-26 16:00:00,8283.509,0.0,85.65 -2016-05-26 17:00:00,8091.433,0.0,84.67 -2016-05-26 18:00:00,7710.117,0.0,82.48 -2016-05-26 19:00:00,7374.575,0.0,79.1 -2016-05-26 20:00:00,7151.6,0.0,76.07 -2016-05-26 21:00:00,7002.792,0.0,74.8 -2016-05-26 22:00:00,6641.0,0.0,73.51 -2016-05-26 23:00:00,6175.017,0.007,72.99 -2016-05-27 00:00:00,5702.25,0.0,70.29 -2016-05-27 01:00:00,5366.983,0.0,69.92 -2016-05-27 02:00:00,5152.125,0.0,70.04 -2016-05-27 03:00:00,5058.9,0.0,69.37 -2016-05-27 04:00:00,5060.683,0.0,70.0 -2016-05-27 05:00:00,5232.217,0.0,69.03 -2016-05-27 06:00:00,5770.967,0.0,69.87 -2016-05-27 07:00:00,6436.017,0.0,71.65 -2016-05-27 08:00:00,6969.95,0.0,73.96 -2016-05-27 09:00:00,7431.9,0.0,75.79 -2016-05-27 10:00:00,7784.717,0.0,78.5 -2016-05-27 11:00:00,8054.633,0.0,81.23 -2016-05-27 12:00:00,8199.325,0.0,82.67 -2016-05-27 13:00:00,8286.233,0.0,84.16 -2016-05-27 14:00:00,8300.309,0.0,84.39 -2016-05-27 15:00:00,8242.108,0.0,81.61 -2016-05-27 16:00:00,8168.258,0.0,80.17 -2016-05-27 17:00:00,8077.267,0.0,78.75 -2016-05-27 18:00:00,7768.708,0.0,79.12 -2016-05-27 19:00:00,7476.033,0.0,77.56 -2016-05-27 20:00:00,7313.467,0.0,76.9 -2016-05-27 21:00:00,7177.983,0.0,74.62 -2016-05-27 22:00:00,6863.792,0.0,74.87 -2016-05-27 23:00:00,6461.233,0.0,74.93 -2016-05-28 00:00:00,6041.617,0.0,74.69 -2016-05-28 01:00:00,5699.558,0.0,74.12 -2016-05-28 02:00:00,5454.742,0.0,72.68 -2016-05-28 03:00:00,5275.7,0.0,71.87 -2016-05-28 04:00:00,5171.95,0.0,70.49 -2016-05-28 05:00:00,5128.342,0.0,70.72 -2016-05-28 06:00:00,5227.683,0.0,70.45 -2016-05-28 07:00:00,5565.108,0.0,72.31 -2016-05-28 08:00:00,6003.0,0.0,74.71 -2016-05-28 09:00:00,6453.083,0.0,77.59 -2016-05-28 10:00:00,6879.15,0.0,80.87 -2016-05-28 11:00:00,7224.967,0.0,83.99 -2016-05-28 12:00:00,7449.3,0.0,86.34 -2016-05-28 13:00:00,7549.633,0.0021,88.06 -2016-05-28 14:00:00,7619.6,0.0,87.11 -2016-05-28 15:00:00,7652.758,0.0,86.75 -2016-05-28 16:00:00,7649.683,0.0,86.77 -2016-05-28 17:00:00,7617.083,0.0,84.89 -2016-05-28 18:00:00,7465.8,0.0029,83.12 -2016-05-28 19:00:00,7311.483,0.0,81.38 -2016-05-28 20:00:00,7281.717,0.0,78.89 -2016-05-28 21:00:00,7292.667,0.0,78.28 -2016-05-28 22:00:00,7091.133,0.0,78.65 -2016-05-28 23:00:00,6751.2,0.0,77.91 -2016-05-29 00:00:00,6310.375,0.0,74.58 -2016-05-29 01:00:00,5914.392,0.0029,74.35 -2016-05-29 02:00:00,5609.442,0.0041,73.43 -2016-05-29 03:00:00,5413.783,0.0084,71.58 -2016-05-29 04:00:00,5278.733,0.0,72.0 -2016-05-29 05:00:00,5194.733,0.0024,70.99 -2016-05-29 06:00:00,5235.983,0.0,70.52 -2016-05-29 07:00:00,5476.55,0.0,71.63 -2016-05-29 08:00:00,5836.65,0.0,74.62 -2016-05-29 09:00:00,6198.242,0.0,77.25 -2016-05-29 10:00:00,6572.5,0.0,80.73 -2016-05-29 11:00:00,6844.533,0.0,82.39 -2016-05-29 12:00:00,6990.708,0.0,84.21 -2016-05-29 13:00:00,7067.45,0.0,84.22 -2016-05-29 14:00:00,7069.975,0.0,84.18 -2016-05-29 15:00:00,6971.708,0.0023,83.0 -2016-05-29 16:00:00,6945.942,0.0,79.93 -2016-05-29 17:00:00,6908.85,0.0,76.34 -2016-05-29 18:00:00,6812.65,0.0,74.93 -2016-05-29 19:00:00,6668.875,0.0,74.04 -2016-05-29 20:00:00,6622.533,0.0027,73.15 -2016-05-29 21:00:00,6612.8,0.003,72.1 -2016-05-29 22:00:00,6433.35,0.0034,71.18 -2016-05-29 23:00:00,6175.208,0.0037,70.99 -2016-05-30 00:00:00,5911.658,0.0049,70.55 -2016-05-30 01:00:00,5637.283,0.3115,70.52 -2016-05-30 02:00:00,5443.392,0.0226,70.35 -2016-05-30 03:00:00,5346.242,0.0786,68.36 -2016-05-30 04:00:00,5301.925,0.1192,69.03 -2016-05-30 05:00:00,5338.158,0.0721,69.01 -2016-05-30 06:00:00,5468.008,0.0109,68.54 -2016-05-30 07:00:00,5686.833,0.0,69.2 -2016-05-30 08:00:00,5931.633,0.0,69.4 -2016-05-30 09:00:00,6177.475,0.0,70.64 -2016-05-30 10:00:00,6508.0,0.0,71.63 -2016-05-30 11:00:00,6870.667,0.0,73.41 -2016-05-30 12:00:00,7133.583,0.0,76.87 -2016-05-30 13:00:00,7243.15,0.0,79.03 -2016-05-30 14:00:00,7333.858,0.0,79.04 -2016-05-30 15:00:00,7285.208,0.0,79.1 -2016-05-30 16:00:00,7261.875,0.0,76.89 -2016-05-30 17:00:00,7249.625,0.0,76.03 -2016-05-30 18:00:00,7186.2,0.0,75.99 -2016-05-30 19:00:00,7141.75,0.0,74.81 -2016-05-30 20:00:00,7190.517,0.0,72.27 -2016-05-30 21:00:00,7166.825,0.0024,72.39 -2016-05-30 22:00:00,6924.508,0.0023,72.39 -2016-05-30 23:00:00,6503.15,0.0025,72.75 -2016-05-31 00:00:00,6119.733,0.0028,71.91 -2016-05-31 01:00:00,5860.517,0.0,71.0 -2016-05-31 02:00:00,5663.692,0.0,70.28 -2016-05-31 03:00:00,5569.2,0.0,71.27 -2016-05-31 04:00:00,5586.0,0.0,70.54 -2016-05-31 05:00:00,5793.6,0.0,69.7 -2016-05-31 06:00:00,6318.367,0.0,70.67 -2016-05-31 07:00:00,7006.258,0.0,70.64 -2016-05-31 08:00:00,7581.367,0.0,73.28 -2016-05-31 09:00:00,7912.158,0.0,75.42 -2016-05-31 10:00:00,8145.958,0.0,76.57 -2016-05-31 11:00:00,8311.775,0.0,78.23 -2016-05-31 12:00:00,8435.292,0.0,80.43 -2016-05-31 13:00:00,8528.4,0.0,81.31 -2016-05-31 14:00:00,8619.625,0.0,83.09 -2016-05-31 15:00:00,8726.059,0.0,81.83 -2016-05-31 16:00:00,8763.125,0.0,80.83 -2016-05-31 17:00:00,8694.892,0.0,80.46 -2016-05-31 18:00:00,8360.009,0.0,78.43 -2016-05-31 19:00:00,8058.733,0.0,75.98 -2016-05-31 20:00:00,7819.792,0.0,74.55 -2016-05-31 21:00:00,7724.008,0.0,73.48 -2016-05-31 22:00:00,7395.575,0.0,72.02 -2016-05-31 23:00:00,6913.5,0.0,71.6 -2016-06-01 00:00:00,6392.142,0.0,70.26 -2016-06-01 01:00:00,6007.942,0.0,70.43 -2016-06-01 02:00:00,5748.967,0.0,69.66 -2016-06-01 03:00:00,5548.1,0.0,68.57 -2016-06-01 04:00:00,5486.542,0.0,68.5 -2016-06-01 05:00:00,5599.708,0.0,67.93 -2016-06-01 06:00:00,6114.508,0.0,67.75 -2016-06-01 07:00:00,6792.717,0.0676,70.64 -2016-06-01 08:00:00,7339.917,0.0,73.98 -2016-06-01 09:00:00,7730.767,0.0,76.7 -2016-06-01 10:00:00,7961.875,0.0,78.26 -2016-06-01 11:00:00,8096.15,0.0,79.37 -2016-06-01 12:00:00,8176.358,0.0,80.0 -2016-06-01 13:00:00,8268.158,0.0,80.73 -2016-06-01 14:00:00,8301.142,0.0,80.56 -2016-06-01 15:00:00,8362.208,0.0,80.07 -2016-06-01 16:00:00,8425.009,0.0,80.39 -2016-06-01 17:00:00,8343.884,0.0,78.85 -2016-06-01 18:00:00,7957.183,0.0,76.65 -2016-06-01 19:00:00,7540.925,0.0,72.6 -2016-06-01 20:00:00,7259.508,0.0,71.31 -2016-06-01 21:00:00,7067.592,0.0,69.76 -2016-06-01 22:00:00,6666.718,0.0,68.18 -2016-06-01 23:00:00,6179.508,0.0,67.32 -2016-06-02 00:00:00,5672.017,0.0,65.26 -2016-06-02 01:00:00,5324.833,0.0,64.57 -2016-06-02 02:00:00,5110.167,0.0,63.75 -2016-06-02 03:00:00,4976.75,0.0,62.2 -2016-06-02 04:00:00,4951.742,0.0,62.43 -2016-06-02 05:00:00,5093.658,0.0,62.07 -2016-06-02 06:00:00,5617.558,0.0,61.87 -2016-06-02 07:00:00,6253.925,0.0,63.4 -2016-06-02 08:00:00,6792.033,0.0,64.84 -2016-06-02 09:00:00,7159.408,0.0,67.12 -2016-06-02 10:00:00,7363.708,0.0,69.96 -2016-06-02 11:00:00,7450.467,0.0,71.84 -2016-06-02 12:00:00,7521.05,0.0,72.67 -2016-06-02 13:00:00,7600.175,0.0,73.74 -2016-06-02 14:00:00,7657.3,0.0,75.01 -2016-06-02 15:00:00,7711.742,0.0,74.17 -2016-06-02 16:00:00,7765.967,0.0,73.34 -2016-06-02 17:00:00,7662.783,0.0,72.51 -2016-06-02 18:00:00,7280.727,0.0,70.8 -2016-06-02 19:00:00,6986.95,0.0,68.32 -2016-06-02 20:00:00,6760.683,0.0,64.32 -2016-06-02 21:00:00,6573.858,0.0,63.69 -2016-06-02 22:00:00,6275.158,0.0,63.68 -2016-06-02 23:00:00,5850.208,0.0,63.94 -2016-06-03 00:00:00,5410.292,0.0,63.53 -2016-06-03 01:00:00,5112.817,0.0,63.44 -2016-06-03 02:00:00,4915.2,0.0,63.76 -2016-06-03 03:00:00,4831.258,0.0,63.91 -2016-06-03 04:00:00,4827.092,0.0,64.14 -2016-06-03 05:00:00,4992.333,0.0,63.68 -2016-06-03 06:00:00,5534.517,0.0,63.82 -2016-06-03 07:00:00,6162.983,0.0064,64.09 -2016-06-03 08:00:00,6609.142,0.0243,63.75 -2016-06-03 09:00:00,6895.658,0.003,64.71 -2016-06-03 10:00:00,7029.25,0.0,65.02 -2016-06-03 11:00:00,7097.358,0.0,66.51 -2016-06-03 12:00:00,7129.083,0.0,67.52 -2016-06-03 13:00:00,7145.808,0.0,67.25 -2016-06-03 14:00:00,7107.15,0.0055,68.21 -2016-06-03 15:00:00,7078.967,0.0,68.84 -2016-06-03 16:00:00,7102.333,0.0,68.1 -2016-06-03 17:00:00,7083.133,0.0,67.91 -2016-06-03 18:00:00,6813.333,0.0032,69.29 -2016-06-03 19:00:00,6604.525,0.0,69.04 -2016-06-03 20:00:00,6452.808,0.0,67.98 -2016-06-03 21:00:00,6325.342,0.0,67.88 -2016-06-03 22:00:00,6061.8,0.0,66.01 -2016-06-03 23:00:00,5713.425,0.0,65.79 -2016-06-04 00:00:00,5335.067,0.0,65.42 -2016-06-04 01:00:00,5079.933,0.0,65.77 -2016-06-04 02:00:00,4887.775,0.0,65.73 -2016-06-04 03:00:00,4774.983,0.0,65.55 -2016-06-04 04:00:00,4707.617,0.0,65.73 -2016-06-04 05:00:00,4730.608,0.0,66.37 -2016-06-04 06:00:00,4894.65,0.0,66.54 -2016-06-04 07:00:00,5242.392,0.0,68.55 -2016-06-04 08:00:00,5704.217,0.0,69.98 -2016-06-04 09:00:00,6168.1,0.0,72.76 -2016-06-04 10:00:00,6505.517,0.0,74.75 -2016-06-04 11:00:00,6737.508,0.0,77.78 -2016-06-04 12:00:00,6940.875,0.0,79.28 -2016-06-04 13:00:00,7014.433,0.0,79.93 -2016-06-04 14:00:00,7076.275,0.0,80.56 -2016-06-04 15:00:00,7097.575,0.0,81.06 -2016-06-04 16:00:00,7127.908,0.0,78.66 -2016-06-04 17:00:00,6997.083,0.0,78.36 -2016-06-04 18:00:00,6802.783,0.0025,75.19 -2016-06-04 19:00:00,6690.325,0.0062,72.72 -2016-06-04 20:00:00,6575.183,0.1816,69.48 -2016-06-04 21:00:00,6485.533,0.0046,69.01 -2016-06-04 22:00:00,6275.117,0.0024,67.85 -2016-06-04 23:00:00,5982.525,0.0037,67.87 -2016-06-05 00:00:00,5640.567,0.0,67.34 -2016-06-05 01:00:00,5336.133,0.0261,67.33 -2016-06-05 02:00:00,5112.983,0.0037,66.9 -2016-06-05 03:00:00,4962.483,0.0064,67.41 -2016-06-05 04:00:00,4874.592,0.0149,67.48 -2016-06-05 05:00:00,4826.25,0.0061,66.81 -2016-06-05 06:00:00,4862.467,0.0032,66.02 -2016-06-05 07:00:00,5057.325,0.0,66.73 -2016-06-05 08:00:00,5311.875,0.0176,66.31 -2016-06-05 09:00:00,5581.483,0.0,66.44 -2016-06-05 10:00:00,5839.258,0.0,66.91 -2016-06-05 11:00:00,5985.4,0.1559,67.8 -2016-06-05 12:00:00,6070.758,0.0,68.17 -2016-06-05 13:00:00,6129.25,0.0,66.55 -2016-06-05 14:00:00,6203.042,0.0,67.96 -2016-06-05 15:00:00,6281.783,0.0022,69.52 -2016-06-05 16:00:00,6313.567,0.0,71.2 -2016-06-05 17:00:00,6328.517,0.0,71.67 -2016-06-05 18:00:00,6436.467,0.8223,71.28 -2016-06-05 19:00:00,6370.692,0.1905,69.16 -2016-06-05 20:00:00,6337.55,0.0,67.52 -2016-06-05 21:00:00,6305.833,0.0,67.54 -2016-06-05 22:00:00,6076.217,0.0023,68.32 -2016-06-05 23:00:00,5691.142,0.0,66.69 -2016-06-06 00:00:00,5317.542,0.0,66.82 -2016-06-06 01:00:00,5100.983,0.0,66.22 -2016-06-06 02:00:00,4957.8,0.0,65.86 -2016-06-06 03:00:00,4888.942,0.0,66.75 -2016-06-06 04:00:00,4916.458,0.0,66.26 -2016-06-06 05:00:00,5142.5,0.0,66.69 -2016-06-06 06:00:00,5677.508,0.0,67.12 -2016-06-06 07:00:00,6438.742,0.0,68.19 -2016-06-06 08:00:00,7038.133,0.0,71.14 -2016-06-06 09:00:00,7411.333,0.0,73.59 -2016-06-06 10:00:00,7624.625,0.0,75.83 -2016-06-06 11:00:00,7743.25,0.0,77.31 -2016-06-06 12:00:00,7832.975,0.0,79.76 -2016-06-06 13:00:00,7911.733,0.0,81.4 -2016-06-06 14:00:00,8007.35,0.0,82.73 -2016-06-06 15:00:00,8106.292,0.0,82.75 -2016-06-06 16:00:00,8113.8,0.0,83.59 -2016-06-06 17:00:00,8209.075,0.0,81.0 -2016-06-06 18:00:00,7991.6,0.0,80.8 -2016-06-06 19:00:00,7710.042,0.0,80.64 -2016-06-06 20:00:00,7518.275,0.0,78.56 -2016-06-06 21:00:00,7476.767,0.0022,78.76 -2016-06-06 22:00:00,7173.075,0.0,75.65 -2016-06-06 23:00:00,6680.825,0.0,75.04 -2016-06-07 00:00:00,6155.55,0.0,75.42 -2016-06-07 01:00:00,5805.567,0.0,73.53 -2016-06-07 02:00:00,5578.092,0.0,72.88 -2016-06-07 03:00:00,5454.775,0.0,71.89 -2016-06-07 04:00:00,5421.608,0.0,70.5 -2016-06-07 05:00:00,5586.983,0.0,71.15 -2016-06-07 06:00:00,6165.325,0.0,71.11 -2016-06-07 07:00:00,6874.775,0.0,72.77 -2016-06-07 08:00:00,7425.442,0.0,74.13 -2016-06-07 09:00:00,7815.2,0.0,77.32 -2016-06-07 10:00:00,8054.725,0.0,78.7 -2016-06-07 11:00:00,8245.009,0.0,80.59 -2016-06-07 12:00:00,8329.425,0.0,81.79 -2016-06-07 13:00:00,8388.892,0.0,83.02 -2016-06-07 14:00:00,8441.6,0.0,82.98 -2016-06-07 15:00:00,8383.342,0.0055,81.09 -2016-06-07 16:00:00,8122.875,0.0,77.93 -2016-06-07 17:00:00,7975.533,0.0,76.47 -2016-06-07 18:00:00,7639.655,0.0,74.85 -2016-06-07 19:00:00,7354.508,0.0,74.33 -2016-06-07 20:00:00,7120.842,0.0,72.58 -2016-06-07 21:00:00,6961.15,0.0,71.1 -2016-06-08 00:00:00,5529.825,0.0,65.15 -2016-06-08 01:00:00,5145.964,0.0,63.87 -2016-06-08 02:00:00,4905.883,0.0,62.68 -2016-06-08 03:00:00,4765.767,0.0,61.84 -2016-06-08 04:00:00,4711.208,0.0,61.06 -2016-06-08 05:00:00,4829.233,0.0,60.22 -2016-06-08 06:00:00,5309.333,0.0,59.67 -2016-06-08 07:00:00,5925.442,0.0,61.05 -2016-06-08 08:00:00,6394.008,0.0,63.7 -2016-06-08 09:00:00,6706.967,0.0,65.37 -2016-06-08 10:00:00,6872.15,0.0,67.68 -2016-06-08 11:00:00,6918.625,0.0051,67.36 -2016-06-08 12:00:00,6867.875,0.2341,65.69 -2016-06-08 13:00:00,6755.258,0.347,59.63 -2016-06-08 14:00:00,6593.167,0.0934,57.94 -2016-06-08 15:00:00,6517.575,0.0107,56.27 -2016-06-08 16:00:00,6482.183,0.0,57.05 -2016-06-08 17:00:00,6422.445,0.0,59.96 -2016-06-08 18:00:00,6233.658,0.0,60.64 -2016-06-08 19:00:00,6042.775,0.0,62.1 -2016-06-08 20:00:00,5929.4,0.0,62.29 -2016-06-08 21:00:00,5836.442,0.0,60.56 -2016-06-08 22:00:00,5529.825,0.0,59.23 -2016-06-08 23:00:00,5129.608,0.0,57.85 -2016-06-09 00:00:00,4724.475,0.0,57.51 -2016-06-09 01:00:00,4442.792,0.0,57.12 -2016-06-09 02:00:00,4272.65,0.0,56.94 -2016-06-09 03:00:00,4191.475,0.0,55.39 -2016-06-09 04:00:00,4174.658,0.0,54.34 -2016-06-09 05:00:00,4294.858,0.0,54.24 -2016-06-09 06:00:00,4719.142,0.0,54.17 -2016-06-09 07:00:00,5299.175,, -2016-06-09 08:00:00,5752.758,0.0,57.25 -2016-06-09 09:00:00,6079.408,0.0,60.17 -2016-06-09 10:00:00,6236.983,0.0,61.97 -2016-06-09 11:00:00,6335.973,0.0,64.26 -2016-06-09 12:00:00,6388.617,0.0,67.2 -2016-06-09 13:00:00,6460.258,0.0,69.31 -2016-06-09 14:00:00,6496.125,0.0,70.58 -2016-06-09 15:00:00,6524.442,0.0,71.04 -2016-06-09 16:00:00,6595.417,0.0,71.94 -2016-06-09 17:00:00,6577.908,0.0,71.51 -2016-06-09 18:00:00,6339.317,0.0,70.48 -2016-06-09 19:00:00,6108.625,0.0,68.72 -2016-06-09 20:00:00,5964.15,0.0,66.74 -2016-06-09 21:00:00,5871.575,0.0,65.32 -2016-06-09 22:00:00,5557.15,0.0,63.65 -2016-06-09 23:00:00,5155.333,0.0,61.77 -2016-06-10 00:00:00,4773.767,0.0,60.44 -2016-06-10 01:00:00,4496.808,0.0,60.63 -2016-06-10 02:00:00,4283.85,0.0,59.51 -2016-06-10 03:00:00,4202.592,0.0,57.97 -2016-06-10 04:00:00,4173.167,0.0,56.97 -2016-06-10 05:00:00,4315.85,0.0,56.45 -2016-06-10 06:00:00,4775.758,0.0,57.83 -2016-06-10 07:00:00,5399.6,0.0,58.73 -2016-06-10 08:00:00,5862.0,0.0,61.7 -2016-06-10 09:00:00,6186.967,0.0,64.34 -2016-06-10 10:00:00,6331.3,0.0,67.8 -2016-06-10 11:00:00,6447.35,0.0,69.48 -2016-06-10 12:00:00,6505.85,0.0,70.9 -2016-06-10 13:00:00,6571.683,0.0,73.19 -2016-06-10 14:00:00,6646.217,0.0,75.08 -2016-06-10 15:00:00,6746.158,0.0,75.78 -2016-06-10 16:00:00,6828.292,0.0,76.88 -2016-06-10 17:00:00,6817.225,0.0,76.44 -2016-06-10 18:00:00,6596.567,0.0,75.54 -2016-06-10 19:00:00,6337.342,0.0,73.44 -2016-06-10 20:00:00,6139.742,0.0,70.56 -2016-06-10 21:00:00,6047.292,0.0,69.68 -2016-06-10 22:00:00,5801.875,0.0,67.89 -2016-06-10 23:00:00,5408.45,0.0,66.44 -2016-06-11 00:00:00,5031.308,0.0,63.73 -2016-06-11 01:00:00,4746.35,0.0,62.71 -2016-06-11 02:00:00,4530.15,0.0,61.46 -2016-06-11 03:00:00,4399.125,0.0,58.86 -2016-06-11 04:00:00,4335.55,0.0,60.17 -2016-06-11 05:00:00,4301.717,0.0,59.51 -2016-06-11 06:00:00,4439.183,0.0,59.64 -2016-06-11 07:00:00,4764.158,0.0,63.3 -2016-06-11 08:00:00,5137.208,0.0,67.84 -2016-06-11 09:00:00,5480.633,0.0,71.78 -2016-06-11 10:00:00,5802.483,0.0,74.26 -2016-06-11 11:00:00,6045.183,0.0,76.48 -2016-06-11 12:00:00,6230.792,0.0,77.7 -2016-06-11 13:00:00,6377.45,0.0,80.55 -2016-06-11 14:00:00,6528.15,0.0,82.43 -2016-06-11 15:00:00,6738.192,0.0,83.81 -2016-06-11 16:00:00,6938.05,0.0,83.44 -2016-06-11 17:00:00,7171.75,0.0,83.32 -2016-06-11 18:00:00,7238.042,0.0,84.52 -2016-06-11 19:00:00,7227.85,0.0,83.8 -2016-06-11 20:00:00,7265.633,0.0,82.02 -2016-06-11 21:00:00,7343.825,0.0,81.28 -2016-06-11 22:00:00,7184.092,0.0,79.69 -2016-06-11 23:00:00,6863.6,0.0,81.07 -2016-06-12 00:00:00,6498.2,0.0026,76.35 -2016-06-12 01:00:00,6137.817,0.0043,77.43 -2016-06-12 02:00:00,5861.375,0.0,75.34 -2016-06-12 03:00:00,5707.15,0.0,74.17 -2016-06-12 04:00:00,5613.067,0.0,75.12 -2016-06-12 05:00:00,5543.983,0.0,75.11 -2016-06-12 06:00:00,5622.033,0.0,77.6 -2016-06-12 07:00:00,5927.85,0.0,78.57 -2016-06-12 08:00:00,6344.858,0.0,80.09 -2016-06-12 09:00:00,6682.283,0.0,81.58 -2016-06-12 10:00:00,6859.325,0.0,83.27 -2016-06-12 11:00:00,6907.908,0.0,83.04 -2016-06-12 12:00:00,6917.433,0.0,82.59 -2016-06-12 13:00:00,6890.925,0.0,81.88 -2016-06-12 14:00:00,6869.517,0.0,80.63 -2016-06-12 15:00:00,6849.708,0.0,80.74 -2016-06-12 16:00:00,6792.675,0.0,77.71 -2016-06-12 17:00:00,6729.292,0.0,75.61 -2016-06-12 18:00:00,6567.808,0.0,72.12 -2016-06-12 19:00:00,6367.525,0.0,69.86 -2016-06-12 20:00:00,6189.283,0.0,67.68 -2016-06-12 21:00:00,6109.733,0.0,64.86 -2016-06-12 22:00:00,5846.467,0.0,63.49 -2016-06-12 23:00:00,5484.325,0.0,62.3 -2016-06-13 00:00:00,5129.117,0.0,61.25 -2016-06-13 01:00:00,4843.65,0.0,61.6 -2016-06-13 02:00:00,4673.442,0.0,60.28 -2016-06-13 03:00:00,4573.7,0.0,58.83 -2016-06-13 04:00:00,4563.092,0.0,57.16 -2016-06-13 05:00:00,4700.067,0.0,57.71 -2016-06-13 06:00:00,5146.858,0.0,57.21 -2016-06-13 07:00:00,5733.783,0.0,58.91 -2016-06-13 08:00:00,6195.767,0.0,61.0 -2016-06-13 09:00:00,6526.542,0.0,63.53 -2016-06-13 10:00:00,6707.758,0.0,66.88 -2016-06-13 11:00:00,6822.508,0.0,69.17 -2016-06-13 12:00:00,6901.708,0.0,70.39 -2016-06-13 13:00:00,6991.05,0.0,71.37 -2016-06-13 14:00:00,7048.567,0.0,73.12 -2016-06-13 15:00:00,7145.85,0.0,73.45 -2016-06-13 16:00:00,7162.842,0.0,73.81 -2016-06-13 17:00:00,7031.2,0.0,72.72 -2016-06-13 18:00:00,6748.325,0.0,71.18 -2016-06-13 19:00:00,6485.783,0.0,69.91 -2016-06-13 20:00:00,6352.267,0.0,67.36 -2016-06-13 21:00:00,6222.1,0.0,66.2 -2016-06-13 22:00:00,5904.9,0.0,64.34 -2016-06-13 23:00:00,5495.025,0.0,65.18 -2016-06-14 00:00:00,5071.908,0.0,63.92 -2016-06-14 01:00:00,4776.0,0.0,63.81 -2016-06-14 02:00:00,4575.525,0.0,62.97 -2016-06-14 03:00:00,4465.942,0.0,61.35 -2016-06-14 04:00:00,4440.883,0.0,59.7 -2016-06-14 05:00:00,4581.392,0.0,58.99 -2016-06-14 06:00:00,5059.942,0.0,58.87 -2016-06-14 07:00:00,5682.108,0.0,60.55 -2016-06-14 08:00:00,6212.608,0.0,62.34 -2016-06-14 09:00:00,6548.75,0.0,65.77 -2016-06-14 10:00:00,6734.25,0.0,68.19 -2016-06-14 11:00:00,6857.692,0.0,70.48 -2016-06-14 12:00:00,6949.483,0.0,72.8 -2016-06-14 13:00:00,7064.825,0.0,75.47 -2016-06-14 14:00:00,7192.383,0.0,77.48 -2016-06-14 15:00:00,7295.642,0.0,78.47 -2016-06-14 16:00:00,7400.375,0.0,78.51 -2016-06-14 17:00:00,7430.292,0.0,79.23 -2016-06-14 18:00:00,7204.6,0.0,78.41 -2016-06-14 19:00:00,6950.233,0.0,76.27 -2016-06-14 20:00:00,6735.75,0.0,74.79 -2016-06-14 21:00:00,6624.85,0.0,72.99 -2016-06-14 22:00:00,6351.892,0.0,71.57 -2016-06-14 23:00:00,5892.183,0.0,69.92 -2016-06-15 00:00:00,5428.258,0.0,68.24 -2016-06-15 01:00:00,5094.917,0.0,66.89 -2016-06-15 02:00:00,4891.308,0.0,64.92 -2016-06-15 03:00:00,4771.483,0.0,64.89 -2016-06-15 04:00:00,4732.817,0.0,63.95 -2016-06-15 05:00:00,4873.417,0.0,62.96 -2016-06-15 06:00:00,5403.008,0.0,63.0 -2016-06-15 07:00:00,6076.192,0.0,66.82 -2016-06-15 08:00:00,6633.05,0.0,70.31 -2016-06-15 09:00:00,7046.683,0.0,73.24 -2016-06-15 10:00:00,7315.775,0.0,75.84 -2016-06-15 11:00:00,7465.65,0.0,78.83 -2016-06-15 12:00:00,7588.95,0.0,81.07 -2016-06-15 13:00:00,7712.708,0.0,82.68 -2016-06-15 14:00:00,7812.667,0.0,83.96 -2016-06-15 15:00:00,7950.608,0.0,83.67 -2016-06-15 16:00:00,8061.683,0.0,82.38 -2016-06-15 17:00:00,7983.392,0.0,80.65 -2016-06-15 18:00:00,7692.308,0.0,79.16 -2016-06-15 19:00:00,7415.617,0.0,75.82 -2016-06-15 20:00:00,7226.342,0.0,75.53 -2016-06-15 21:00:00,7179.0,0.0,74.73 -2016-06-15 22:00:00,6896.917,0.0,73.58 -2016-06-15 23:00:00,6459.233,0.0,73.94 -2016-06-16 00:00:00,6007.483,0.0,73.44 -2016-06-16 01:00:00,5679.267,0.0027,72.27 -2016-06-16 02:00:00,5457.1,0.0033,72.11 -2016-06-16 03:00:00,5350.683,0.0116,70.36 -2016-06-16 04:00:00,5305.642,0.0116,70.01 -2016-06-16 05:00:00,5476.733,0.0034,69.45 -2016-06-16 06:00:00,5996.017,0.1853,69.1 -2016-06-16 07:00:00,6559.783,0.0032,68.34 -2016-06-16 11:00:00,7526.342,0.003,71.66 -2016-06-16 12:00:00,7560.783,0.0,71.8 -2016-06-16 13:00:00,7555.917,0.0811,72.15 -2016-06-16 14:00:00,7451.175,0.0,73.09 -2016-06-16 15:00:00,7439.608,0.0,72.3 -2016-06-16 16:00:00,7479.35,0.0,71.97 -2016-06-16 17:00:00,7479.0,0.0,73.46 -2016-06-16 18:00:00,7234.267,0.0,73.78 -2016-06-16 19:00:00,7000.35,0.0,72.99 -2016-06-16 20:00:00,6892.092,0.0,71.62 -2016-06-16 21:00:00,6812.267,0.0,70.46 -2016-06-16 22:00:00,6541.25,0.0,69.7 -2016-06-16 23:00:00,6124.133,0.0,67.87 -2016-06-17 00:00:00,5661.317,0.0,67.68 -2016-06-17 01:00:00,5335.483,0.0,66.97 -2016-06-17 02:00:00,5138.358,0.0,67.35 -2016-06-17 03:00:00,5028.025,0.0,66.13 -2016-06-17 04:00:00,4993.642,0.0,65.79 -2016-06-17 05:00:00,5136.808,0.0,65.35 -2016-06-17 06:00:00,5648.392,0.0,65.13 -2016-06-17 07:00:00,6290.35,0.0,68.02 -2016-06-17 08:00:00,6850.792,0.0,70.72 -2016-06-17 09:00:00,7211.883,0.0,71.77 -2016-06-17 10:00:00,7432.408,0.0,73.02 -2016-06-17 11:00:00,7571.875,0.0,72.78 -2016-06-17 12:00:00,7627.758,0.0,73.69 -2016-06-17 13:00:00,7561.225,0.0,74.37 -2016-06-17 14:00:00,7511.033,0.0,75.45 -2016-06-17 15:00:00,7497.942,0.0,75.0 -2016-06-17 16:00:00,7469.9,0.0,76.1 -2016-06-17 17:00:00,7341.208,0.0,74.97 -2016-06-17 18:00:00,6999.892,0.0,73.12 -2016-06-17 19:00:00,6693.217,0.0,70.15 -2016-06-17 20:00:00,6419.692,0.0,69.06 -2016-06-17 21:00:00,6275.2,0.0,67.0 -2016-06-17 22:00:00,6024.925,0.0,65.66 -2016-06-17 23:00:00,5668.633,0.0,64.79 -2016-06-18 00:00:00,5288.775,0.0,63.32 -2016-06-18 01:00:00,5001.1,0.0,62.5 -2016-06-18 02:00:00,4804.208,0.0,63.14 -2016-06-18 03:00:00,4672.092,0.0,62.49 -2016-06-18 04:00:00,4594.058,0.0031,62.65 -2016-06-18 05:00:00,4553.992,0.0,60.98 -2016-06-18 06:00:00,4690.058,0.0,62.28 -2016-06-18 07:00:00,5022.667,0.0,65.41 -2016-06-18 08:00:00,5436.367,0.0,69.71 -2016-06-18 09:00:00,5832.975,0.0,72.98 -2016-06-18 10:00:00,6134.35,0.0,75.86 -2016-06-18 11:00:00,6385.283,0.0,78.95 -2016-06-18 12:00:00,6572.867,0.0,81.54 -2016-06-18 13:00:00,6654.717,0.0,83.44 -2016-06-18 14:00:00,6737.667,0.0,84.2 -2016-06-18 15:00:00,6803.342,0.0,84.92 -2016-06-18 16:00:00,6837.658,0.0,83.22 -2016-06-18 17:00:00,6782.35,0.0,80.82 -2016-06-18 18:00:00,6651.758,0.0,78.05 -2016-06-18 19:00:00,6465.35,0.0,75.68 -2016-06-18 20:00:00,6338.875,0.0,73.21 -2016-06-18 21:00:00,6316.667,0.0,72.02 -2016-06-18 22:00:00,6162.533,0.0,70.76 -2016-06-18 23:00:00,5961.254,0.0,70.94 -2016-06-19 00:00:00,5642.592,0.0,69.78 -2016-06-19 01:00:00,5352.733,0.0,68.52 -2016-06-19 02:00:00,5126.475,0.0,68.47 -2016-06-19 03:00:00,4968.467,0.0,67.89 -2016-06-19 04:00:00,4875.15,0.0,67.51 -2016-06-19 05:00:00,4796.058,0.0,66.12 -2016-06-19 06:00:00,4848.858,0.0,67.22 -2016-06-19 07:00:00,5102.125,0.0,69.89 -2016-06-19 08:00:00,5439.683,0.0,72.83 -2016-06-19 09:00:00,5841.217,0.0,75.13 -2016-06-19 10:00:00,6227.033,0.0,79.28 -2016-06-19 11:00:00,6540.042,0.0,81.4 -2016-06-19 12:00:00,6749.725,0.0,83.49 -2016-06-19 13:00:00,6827.992,0.0,84.81 -2016-06-19 14:00:00,6811.867,0.0,83.88 -2016-06-19 15:00:00,6830.192,0.0,79.43 -2016-06-19 16:00:00,6818.583,0.0,78.64 -2016-06-19 17:00:00,6746.233,0.0,75.58 -2016-06-19 18:00:00,6588.4,0.0,74.79 -2016-06-19 19:00:00,6424.2,0.0,72.29 -2016-06-19 20:00:00,6365.558,0.0,70.54 -2016-06-19 21:00:00,6398.933,0.0,68.72 -2016-06-19 22:00:00,6219.517,0.0,67.44 -2016-06-19 23:00:00,5926.592,0.0,67.78 -2016-06-20 00:00:00,5598.325,0.0,66.43 -2016-06-20 01:00:00,5334.275,0.0,66.64 -2016-06-20 02:00:00,5148.392,0.0,65.17 -2016-06-20 03:00:00,5084.608,0.0,65.58 -2016-06-20 04:00:00,5104.583,0.0,64.98 -2016-06-20 05:00:00,5304.367,0.0,63.92 -2016-06-20 06:00:00,5818.825,0.0,63.95 -2016-06-20 07:00:00,6508.992,0.0,68.39 -2016-06-20 08:00:00,7122.592,0.0,71.38 -2016-06-20 09:00:00,7596.233,0.0,74.87 -2016-06-20 10:00:00,7899.625,0.0,77.45 -2016-06-20 11:00:00,8084.433,0.0,79.63 -2016-06-20 12:00:00,8193.9,0.0,81.28 -2016-06-20 13:00:00,8298.8,0.0,81.59 -2016-06-20 14:00:00,8378.542,0.0,80.59 -2016-06-20 15:00:00,8440.175,0.0,81.29 -2016-06-20 18:00:00,8084.555,0.0,78.11 -2016-06-20 19:00:00,7823.825,0.0,77.42 -2016-06-20 22:00:00,7392.933,0.0,77.43 -2016-06-20 23:00:00,6913.367,0.0,76.81 -2016-06-21 00:00:00,6377.092,0.0,76.26 -2016-06-21 01:00:00,6000.508,0.0,77.66 -2016-06-21 02:00:00,5761.5,0.0,77.25 -2016-06-21 03:00:00,5657.4,0.0,76.8 -2016-06-21 04:00:00,5674.308,0.0,74.22 -2016-06-21 05:00:00,5860.15,0.0,75.0 -2016-06-21 06:00:00,6424.542,0.0122,76.87 -2016-06-21 07:00:00,6979.083,0.0,74.97 -2016-06-21 08:00:00,7390.508,0.0,74.32 -2016-06-21 09:00:00,7741.842,0.0,75.32 -2016-06-21 10:00:00,7998.958,0.0,80.77 -2016-06-21 11:00:00,8217.009,0.0,82.53 -2016-06-21 12:00:00,8374.0,0.0,83.62 -2016-06-21 13:00:00,8538.283,0.0,85.58 -2016-06-21 14:00:00,8683.042,0.0,85.54 -2016-06-21 15:00:00,8853.142,0.0,87.05 -2016-06-21 16:00:00,8883.066,0.0,86.38 -2016-06-21 17:00:00,8766.7,0.0,83.92 -2016-06-21 18:00:00,8500.9,0.0,81.92 -2016-06-21 19:00:00,8302.8,0.0,78.56 -2016-06-21 20:00:00,8120.008,0.0,79.11 -2016-06-21 21:00:00,7890.95,0.0,76.27 -2016-06-21 22:00:00,7474.042,0.0022,77.25 -2016-06-21 23:00:00,6924.482,0.0,75.37 -2016-06-22 00:00:00,6339.733,0.0,71.83 -2016-06-22 01:00:00,5949.408,0.0,71.1 -2016-06-22 02:00:00,5686.383,0.0,69.76 -2016-06-22 03:00:00,5530.475,0.0,70.77 -2016-06-22 04:00:00,5467.492,0.0,68.14 -2016-06-22 05:00:00,5597.375,0.0,67.89 -2016-06-22 06:00:00,6116.617,0.0,68.35 -2016-06-22 07:00:00,6781.817,0.0,71.29 -2016-06-22 08:00:00,7365.4,0.0,73.4 -2016-06-22 09:00:00,7821.0,0.0,76.12 -2016-06-22 10:00:00,8101.775,0.0,79.71 -2016-06-22 11:00:00,8278.509,0.0,82.16 -2016-06-22 12:00:00,8413.892,0.0,84.67 -2016-06-22 13:00:00,8510.842,0.0,84.71 -2016-06-22 14:00:00,8520.566,0.0,84.55 -2016-06-22 15:00:00,8574.316,0.0,83.52 -2016-06-22 16:00:00,8633.158,0.0,83.94 -2016-06-22 17:00:00,8595.725,0.0,83.41 -2016-06-22 18:00:00,8312.967,0.0,82.21 -2016-06-22 19:00:00,8027.033,0.0,81.13 -2016-06-22 20:00:00,7793.2,0.0,80.09 -2016-06-22 21:00:00,7724.017,0.0,77.86 -2016-06-22 22:00:00,7414.183,0.0,76.53 -2016-06-22 23:00:00,6931.692,0.0,74.1 -2016-06-23 00:00:00,6433.517,0.0,72.7 -2016-06-23 01:00:00,6028.242,0.0,72.86 -2016-06-23 02:00:00,5770.7,0.0,70.93 -2016-06-23 03:00:00,5604.7,0.0,70.69 -2016-06-23 04:00:00,5535.225,0.0,68.79 -2016-06-23 05:00:00,5675.917,0.0031,67.87 -2016-06-23 06:00:00,6165.85,0.0029,68.42 -2016-06-23 07:00:00,6753.708,0.0031,70.77 -2016-06-23 08:00:00,7273.342,0.0,72.15 -2016-06-23 09:00:00,7678.4,0.0,74.75 -2016-06-23 10:00:00,7845.4,0.0,76.59 -2016-06-23 11:00:00,7935.925,0.0085,78.07 -2016-06-23 12:00:00,8007.267,0.0,77.4 -2016-06-23 13:00:00,8094.067,0.0,78.43 -2016-06-23 14:00:00,8228.566,0.0049,79.31 -2016-06-23 15:00:00,8357.634,0.0,80.85 -2016-06-23 16:00:00,8437.741,0.0,79.92 -2016-06-23 17:00:00,8323.108,0.0,78.7 -2016-06-23 18:00:00,8037.725,0.0,77.73 -2016-06-23 19:00:00,7834.175,0.0,75.74 -2016-06-23 20:00:00,7666.008,0.0,75.21 -2016-06-23 21:00:00,7593.242,0.0,73.21 -2016-06-23 22:00:00,7303.375,0.0,72.29 -2016-06-23 23:00:00,6842.9,0.0,72.1 -2016-06-24 00:00:00,6376.883,0.0026,70.91 -2016-06-24 01:00:00,6019.325,0.0057,70.69 -2016-06-24 02:00:00,5779.133,0.0,69.69 -2016-06-24 03:00:00,5641.975,0.0,68.77 -2016-06-24 04:00:00,5593.008,0.0,68.48 -2016-06-24 05:00:00,5674.117,0.0,68.08 -2016-06-24 06:00:00,6097.342,0.0,68.91 -2016-06-24 07:00:00,6739.158,0.0,70.6 -2016-06-24 08:00:00,7256.2,0.0,72.5 -2016-06-24 09:00:00,7616.95,0.0,75.27 -2016-06-24 10:00:00,7839.0,0.0,75.3 -2016-06-24 11:00:00,8005.517,0.0,78.11 -2016-06-24 12:00:00,8131.317,0.0,79.74 -2016-06-24 13:00:00,8198.267,0.0,80.89 -2016-06-24 14:00:00,8207.309,0.0,81.19 -2016-06-24 15:00:00,8250.283,0.0,80.45 -2016-06-24 16:00:00,8248.108,0.0,79.65 -2016-06-24 17:00:00,8185.883,0.0,78.69 -2016-06-24 18:00:00,7808.183,0.0,76.72 -2016-06-24 19:00:00,7490.917,0.0,74.31 -2016-06-24 20:00:00,7215.167,0.0,72.0 -2016-06-24 21:00:00,7103.558,0.0,71.13 -2016-06-24 22:00:00,6866.917,0.0,70.2 -2016-06-24 23:00:00,6502.633,0.0,70.69 -2016-06-25 00:00:00,6044.558,0.0,68.54 -2016-06-25 01:00:00,5708.45,0.0,67.19 -2016-06-25 02:00:00,5464.392,0.0,66.8 -2016-06-25 03:00:00,5310.475,0.0,65.94 -2016-06-25 04:00:00,5203.533,0.0,64.34 -2016-06-25 05:00:00,5153.358,0.0,64.75 -2016-06-25 06:00:00,5274.408,0.0,65.64 -2016-06-25 07:00:00,5605.225,0.0,68.45 -2016-06-25 08:00:00,6006.825,0.0,71.05 -2016-06-25 09:00:00,6389.0,0.0,73.71 -2016-06-25 10:00:00,6693.583,0.0,75.71 -2016-06-25 11:00:00,6915.517,0.0,78.02 -2016-06-25 12:00:00,7039.475,0.0,80.19 -2016-06-25 13:00:00,7072.633,0.0,81.61 -2016-06-25 14:00:00,7080.625,0.0,82.65 -2016-06-25 15:00:00,7060.383,0.0,82.37 -2016-06-25 16:00:00,7071.125,0.0,80.82 -2016-06-25 17:00:00,7023.525,0.0,79.53 -2016-06-25 18:00:00,6882.767,0.0,77.2 -2016-06-25 19:00:00,6671.617,0.0,76.35 -2016-06-25 20:00:00,6507.417,0.0,73.15 -2016-06-25 21:00:00,6506.9,0.0,72.42 -2016-06-25 22:00:00,6359.3,0.0,70.97 -2016-06-25 23:00:00,6113.367,0.0,69.39 -2016-06-26 00:00:00,5833.825,0.0,68.27 -2016-06-26 01:00:00,5565.808,0.0,68.23 -2016-06-26 02:00:00,5355.067,0.0,68.26 -2016-06-26 03:00:00,5207.483,0.0,67.98 -2016-06-26 04:00:00,5109.742,0.0,67.6 -2016-06-26 05:00:00,5040.5,0.0136,66.88 -2016-06-26 06:00:00,5121.092,0.0865,67.77 -2016-06-26 07:00:00,5362.033,0.0,70.95 -2016-06-26 08:00:00,5708.933,0.0,73.74 -2016-06-26 09:00:00,6088.725,0.0,77.32 -2016-06-26 10:00:00,6448.117,0.0,79.99 -2016-06-26 11:00:00,6721.225,0.0,82.11 -2016-06-26 12:00:00,6915.717,0.0,82.46 -2016-06-26 13:00:00,7028.575,0.0,83.28 -2016-06-26 14:00:00,7070.4,0.0,82.81 -2016-06-26 15:00:00,7082.433,0.0,82.5 -2016-06-26 16:00:00,7079.242,0.0,81.55 -2016-06-26 17:00:00,7040.783,0.0,79.73 -2016-06-26 18:00:00,6936.567,0.0,77.99 -2016-06-26 19:00:00,6782.883,0.0,76.82 -2016-06-26 20:00:00,6731.733,0.0,74.97 -2016-06-26 21:00:00,6784.583,0.0,73.9 -2016-06-26 22:00:00,6634.008,0.0,73.1 -2016-06-26 23:00:00,6316.158,0.0,73.39 -2016-06-27 00:00:00,5967.733,0.0336,72.19 -2016-06-27 01:00:00,5655.942,0.0737,71.71 -2016-06-27 02:00:00,5451.175,0.0,70.62 -2016-06-27 03:00:00,5337.675,0.0,68.54 -2016-06-27 04:00:00,5320.725,0.0,68.1 -2016-06-27 05:00:00,5504.117,0.0,67.94 -2016-06-27 06:00:00,5984.717,0.0,66.42 -2016-06-27 07:00:00,6632.925,0.0,69.86 -2016-06-27 08:00:00,7210.108,0.0,71.87 -2016-06-27 09:00:00,7676.817,0.0,74.08 -2016-06-27 10:00:00,7967.067,0.0,77.6 -2016-06-27 11:00:00,8143.8,0.0,77.77 -2016-06-27 12:00:00,8294.184,0.0,79.26 -2016-06-27 13:00:00,8467.066,0.0,79.13 -2016-06-27 14:00:00,8569.858,0.0024,80.15 -2016-06-27 15:00:00,8651.342,0.0,79.89 -2016-06-27 16:00:00,8668.85,0.0,79.34 -2016-06-27 17:00:00,8534.475,0.0,78.67 -2016-06-27 18:00:00,8135.833,0.0026,76.48 -2016-06-27 19:00:00,7885.117,0.003,74.59 -2016-06-27 20:00:00,7749.592,0.0145,73.38 -2016-06-27 21:00:00,7604.583,0.0376,71.96 -2016-06-27 22:00:00,7278.758,0.0297,72.0 -2016-06-27 23:00:00,6792.258,0.0203,70.17 -2016-06-28 00:00:00,6279.917,0.2132,71.14 -2016-06-28 01:00:00,5940.65,0.0,70.46 -2016-06-28 02:00:00,5708.567,0.0,69.51 -2016-06-28 03:00:00,5611.083,0.0,70.41 -2016-06-28 04:00:00,5616.725,0.0,70.24 -2016-06-28 05:00:00,5810.167,0.0,70.25 -2016-06-28 06:00:00,6332.575,0.0,71.08 -2016-06-28 07:00:00,6936.925,0.0,70.87 -2016-06-28 08:00:00,7329.333,0.0,70.18 -2016-06-28 09:00:00,7636.242,0.0,70.77 -2016-06-28 10:00:00,7808.408,0.0,71.68 -2016-06-28 11:00:00,7875.35,0.0,72.47 -2016-06-28 12:00:00,7933.95,0.003,71.95 -2016-06-28 13:00:00,7990.65,0.0,72.33 -2016-06-28 14:00:00,8051.75,0.0,73.68 -2016-06-28 15:00:00,8166.275,0.0,74.87 -2016-06-28 16:00:00,8183.933,0.0,76.19 -2016-06-28 17:00:00,8117.675,0.0,74.59 -2016-06-28 18:00:00,7838.367,0.0,73.47 -2016-06-28 19:00:00,7618.725,0.0,72.35 -2016-06-28 20:00:00,7474.133,0.0,70.65 -2016-06-28 21:00:00,7362.808,0.0,70.66 -2016-06-28 22:00:00,7057.025,0.0,70.77 -2016-06-28 23:00:00,6584.017,0.0038,71.36 -2016-06-29 00:00:00,6101.6,0.0037,69.51 -2016-06-29 01:00:00,5769.058,0.0033,68.94 -2016-06-29 02:00:00,5558.017,0.0,69.82 -2016-06-29 03:00:00,5439.95,0.0,69.3 -2016-06-29 04:00:00,5402.692,0.0,68.96 -2016-06-29 05:00:00,5579.033,0.0,68.65 -2016-06-29 06:00:00,6062.975,0.0,68.38 -2016-06-29 07:00:00,6743.9,0.0,70.11 -2016-06-29 08:00:00,7332.867,0.0,72.04 -2016-06-29 09:00:00,7710.592,0.0,74.1 -2016-06-29 10:00:00,7955.383,0.0,74.67 -2016-06-29 11:00:00,8142.633,0.0,75.91 -2016-06-29 12:00:00,8298.675,0.0,80.09 -2016-06-29 13:00:00,8444.559,0.0,81.56 -2016-06-29 14:00:00,8528.0,0.0,82.3 -2016-06-29 15:00:00,8566.158,0.0,83.07 -2016-06-29 16:00:00,8562.967,0.0,83.54 -2016-06-29 17:00:00,8510.275,0.0,82.23 -2016-06-29 18:00:00,8226.9,0.0,81.16 -2016-06-29 19:00:00,7931.433,0.0,79.86 -2016-06-29 20:00:00,7667.308,0.0,78.34 -2016-06-29 21:00:00,7556.0,0.0,76.94 -2016-06-29 22:00:00,7244.125,0.0,75.52 -2016-06-29 23:00:00,6759.967,0.0,74.03 -2016-06-30 00:00:00,6247.433,0.0,72.45 -2016-06-30 01:00:00,5863.875,0.0,71.47 -2016-06-30 02:00:00,5601.258,0.0,69.99 -2016-06-30 03:00:00,5439.917,0.0,69.09 -2016-06-30 04:00:00,5384.467,0.0,67.83 -2016-06-30 05:00:00,5512.175,0.0,67.37 -2016-06-30 06:00:00,5977.242,0.0,69.31 -2016-06-30 07:00:00,6616.933,0.0,70.83 -2016-06-30 08:00:00,7178.233,0.0,73.21 -2016-06-30 09:00:00,7595.342,0.0,75.56 -2016-06-30 10:00:00,7865.583,0.0,78.7 -2016-06-30 11:00:00,8045.867,0.0,80.24 -2016-06-30 12:00:00,8161.383,0.0,81.03 -2016-06-30 13:00:00,8292.167,0.0,83.14 -2016-06-30 14:00:00,8390.717,0.0,83.84 -2016-06-30 15:00:00,8449.458,0.0,83.26 -2016-06-30 16:00:00,8539.375,0.0,83.37 -2016-06-30 17:00:00,8456.509,0.0,82.32 -2016-06-30 18:00:00,8102.142,0.0,80.92 -2016-06-30 19:00:00,7788.292,0.0,77.36 -2016-06-30 20:00:00,7603.008,0.0,75.85 -2016-06-30 21:00:00,7576.558,0.0,76.72 -2016-06-30 22:00:00,7332.625,0.0,75.72 -2016-06-30 23:00:00,6912.7,0.0,75.1 -2016-07-01 00:00:00,6444.75,0.0,74.63 -2016-07-01 01:00:00,6083.075,0.0,73.77 -2016-07-01 02:00:00,5795.317,0.0,72.32 -2016-07-01 03:00:00,5610.942,0.0424,71.29 -2016-07-01 04:00:00,5555.767,0.033,71.04 -2016-07-01 05:00:00,5687.908,0.0,71.01 -2016-07-01 06:00:00,6193.217,0.0,70.32 -2016-07-01 07:00:00,6798.0,0.0,73.51 -2016-07-01 08:00:00,7352.133,0.0,75.3 -2016-07-01 09:00:00,7826.083,0.0,76.87 -2016-07-01 10:00:00,8102.325,0.0,77.37 -2016-07-01 11:00:00,8263.691,0.0,78.53 -2016-07-01 12:00:00,8338.917,0.0,78.41 -2016-07-01 13:00:00,8374.634,0.0,78.9 -2016-07-01 14:00:00,8375.616,0.0,79.07 -2016-07-01 15:00:00,8344.3,0.0282,78.53 -2016-07-01 16:00:00,8254.667,0.0,75.85 -2016-07-01 17:00:00,8040.042,0.3649,74.98 -2016-07-01 18:00:00,7616.258,0.0,74.15 -2016-07-01 19:00:00,7410.533,0.0,73.78 -2016-07-01 20:00:00,7230.025,0.0,73.35 -2016-07-01 21:00:00,7129.158,0.0387,71.21 -2016-07-01 22:00:00,6810.075,0.0,70.47 -2016-07-01 23:00:00,6471.525,0.0024,70.05 -2016-07-02 00:00:00,6123.658,0.0,70.32 -2016-07-02 01:00:00,5839.775,0.0,69.25 -2016-07-02 02:00:00,5610.683,0.0,69.86 -2016-07-02 03:00:00,5427.217,0.0,69.13 -2016-07-02 04:00:00,5253.383,0.0,67.75 -2016-07-02 05:00:00,5118.983,0.0,66.56 -2016-07-02 06:00:00,5178.483,0.0,65.87 -2016-07-02 07:00:00,5429.825,0.0,66.93 -2016-07-02 08:00:00,5739.325,0.0,68.37 -2016-07-02 09:00:00,5981.225,0.0,69.65 -2016-07-02 10:00:00,6142.242,0.0,71.39 -2016-07-02 11:00:00,6232.008,0.0,73.51 -2016-07-02 12:00:00,6273.783,0.0,74.79 -2016-07-02 13:00:00,6264.075,0.0,75.46 -2016-07-02 14:00:00,6271.208,0.0,76.3 -2016-07-02 15:00:00,6264.775,0.0,77.03 -2016-07-02 16:00:00,6251.008,0.0,77.43 -2016-07-02 17:00:00,6194.283,0.0,75.97 -2016-07-02 18:00:00,6171.708,0.0,76.21 -2016-07-02 19:00:00,6098.408,0.0,75.59 -2016-07-02 20:00:00,6025.208,0.0,74.03 -2016-07-02 21:00:00,6046.475,0.0,73.21 -2016-07-02 22:00:00,5918.817,0.0,71.99 -2016-07-02 23:00:00,5706.617,0.0,71.13 -2016-07-03 00:00:00,5432.225,0.0,70.33 -2016-07-03 01:00:00,5177.167,0.0,69.37 -2016-07-03 02:00:00,4994.233,0.0,67.68 -2016-07-03 03:00:00,4874.633,0.0,67.02 -2016-07-03 04:00:00,4784.9,0.0,65.69 -2016-07-03 05:00:00,4721.758,0.0,65.78 -2016-07-03 06:00:00,4781.708,0.0,66.15 -2016-07-03 07:00:00,4998.258,0.0,69.22 -2016-07-03 08:00:00,5280.2,0.0,72.29 -2016-07-03 09:00:00,5534.025,0.0,74.74 -2016-07-03 10:00:00,5783.433,0.0,75.71 -2016-07-03 11:00:00,5998.5,0.0,78.17 -2016-07-03 12:00:00,6107.658,0.0,79.12 -2016-07-03 13:00:00,6159.15,0.0,79.59 -2016-07-03 14:00:00,6192.992,0.0,79.36 -2016-07-03 15:00:00,6219.325,0.0,78.73 -2016-07-03 16:00:00,6233.433,0.0,78.25 -2016-07-03 17:00:00,6196.842,0.0,77.97 -2016-07-03 18:00:00,6110.658,0.0,77.05 -2016-07-03 19:00:00,6042.533,0.0,75.16 -2016-07-03 20:00:00,6047.792,0.0,75.01 -2016-07-03 21:00:00,6085.517,0.0,74.3 -2016-07-03 22:00:00,5996.35,0.0,72.83 -2016-07-03 23:00:00,5793.025,0.0,72.18 -2016-07-04 00:00:00,5543.325,0.0,71.39 -2016-07-04 01:00:00,5296.908,0.0,69.96 -2016-07-04 02:00:00,5123.25,0.0,68.82 -2016-07-04 03:00:00,4994.442,0.0,68.14 -2016-07-04 04:00:00,4918.608,0.0,67.19 -2016-07-04 05:00:00,4898.025,0.0,65.91 -2016-07-04 06:00:00,5056.433,0.0,66.7 -2016-07-04 07:00:00,5352.95,0.0,70.01 -2016-07-04 08:00:00,5673.642,0.0,73.12 -2016-07-04 09:00:00,6008.208,0.0,76.27 -2016-07-04 10:00:00,6292.842,0.0,78.89 -2016-07-04 11:00:00,6490.992,0.0,80.5 -2016-07-04 12:00:00,6610.942,0.0,81.41 -2016-07-04 13:00:00,6696.325,0.0,82.26 -2016-07-04 14:00:00,6743.158,0.0,81.56 -2016-07-04 15:00:00,6742.083,0.0,81.41 -2016-07-04 16:00:00,6763.85,0.0,79.44 -2016-07-04 17:00:00,6763.025,0.0,78.41 -2016-07-04 18:00:00,6684.2,0.0,76.43 -2016-07-04 19:00:00,6677.617,0.0,76.32 -2016-07-04 20:00:00,6633.792,0.145,74.31 -2016-07-04 21:00:00,6580.808,0.014,72.23 -2016-07-04 22:00:00,6499.283,0.0022,70.6 -2016-07-04 23:00:00,6299.55,0.04,70.3 -2016-07-05 00:00:00,5990.975,0.0348,69.7 -2016-07-05 01:00:00,5792.933,0.0226,70.09 -2016-07-05 02:00:00,5671.275,0.012,70.19 -2016-07-05 03:00:00,5614.467,0.0078,70.82 -2016-07-05 04:00:00,5650.85,0.0041,70.83 -2016-07-05 05:00:00,5850.25,0.0,70.66 -2016-07-05 06:00:00,6287.075,0.0,71.07 -2016-07-05 07:00:00,6880.467,0.0,71.12 -2016-07-05 08:00:00,7410.058,0.0,72.48 -2016-07-05 09:00:00,7849.683,0.0,73.54 -2016-07-05 10:00:00,8149.408,0.0,76.22 -2016-07-05 11:00:00,8326.259,0.0,77.83 -2016-07-05 12:00:00,8455.408,0.0,79.97 -2016-07-05 13:00:00,8609.033,0.0,82.08 -2016-07-05 14:00:00,8783.792,0.0,82.81 -2016-07-05 15:00:00,8948.542,0.0,84.14 -2016-07-05 16:00:00,9156.267,0.0,85.64 -2016-07-05 17:00:00,9224.392,0.0,85.78 -2016-07-05 18:00:00,9023.092,0.0,87.33 -2016-07-05 19:00:00,8823.292,0.0,84.93 -2016-07-05 20:00:00,8607.509,0.0,83.12 -2016-07-05 21:00:00,8572.1,0.0,82.26 -2016-07-05 22:00:00,8284.208,0.0,81.35 -2016-07-05 23:00:00,7764.95,0.0,80.41 -2016-07-06 00:00:00,7243.867,0.0,80.06 -2016-07-06 01:00:00,6816.842,0.0,79.94 -2016-07-06 02:00:00,6532.108,0.0,77.33 -2016-07-06 03:00:00,6373.867,0.0,76.2 -2016-07-06 04:00:00,6324.1,0.0,76.3 -2016-07-06 05:00:00,6452.875,0.0,75.61 -2016-07-06 06:00:00,6926.567,0.0,76.32 -2016-07-06 07:00:00,7617.592,0.0306,78.62 -2016-07-06 08:00:00,8268.408,0.0,81.91 -2016-07-06 09:00:00,8750.725,0.0,84.71 -2016-07-06 10:00:00,9068.017,0.0,87.99 -2016-07-06 11:00:00,9279.066,0.0,88.84 -2016-07-06 12:00:00,9461.033,0.0,90.5 -2016-07-06 13:00:00,9585.625,0.0,90.06 -2016-07-06 14:00:00,9711.333,0.0,90.53 -2016-07-06 15:00:00,9801.983,0.0,90.87 -2016-07-06 16:00:00,9882.908,0.0,90.67 -2016-07-06 17:00:00,9887.55,0.0,90.21 -2016-07-06 18:00:00,9629.8,0.0,86.1 -2016-07-06 19:00:00,9377.333,0.0,84.21 -2016-07-06 20:00:00,9144.767,0.0,83.02 -2016-07-06 21:00:00,9106.783,0.0,82.46 -2016-07-06 22:00:00,8813.483,0.0,81.9 -2016-07-06 23:00:00,8310.642,0.0,80.19 -2016-07-07 00:00:00,7748.05,0.0,78.34 -2016-07-07 01:00:00,7363.167,0.0,79.42 -2016-07-07 02:00:00,7100.3,0.0033,77.85 -2016-07-07 03:00:00,6917.192,0.0,79.52 -2016-07-07 04:00:00,6885.458,0.0,77.49 -2016-07-07 05:00:00,7024.592,0.0,77.77 -2016-07-07 06:00:00,7505.175,0.0,77.41 -2016-07-07 07:00:00,8255.858,0.0,81.26 -2016-07-07 08:00:00,8914.191,0.0,85.08 -2016-07-07 09:00:00,9426.075,0.0,87.05 -2016-07-07 10:00:00,9784.275,0.0,87.63 -2016-07-07 11:00:00,10017.63,0.0,88.38 -2016-07-07 12:00:00,10120.01,0.0,89.95 -2016-07-07 13:00:00,10206.3,0.0,86.08 -2016-07-07 14:00:00,10114.3,0.0025,86.1 -2016-07-07 15:00:00,10015.81,0.0,83.29 -2016-07-07 16:00:00,10022.94,0.0,85.3 -2016-07-07 17:00:00,9944.425,0.0,85.88 -2016-07-07 18:00:00,9580.684,0.0,82.17 -2016-07-07 19:00:00,9283.941,0.0,80.44 -2016-07-07 20:00:00,9060.142,0.0036,78.5 -2016-07-07 21:00:00,8984.066,0.0,78.74 -2016-07-07 22:00:00,8702.525,0.0,78.18 -2016-07-07 23:00:00,8219.25,0.0,77.99 -2016-07-08 00:00:00,7700.75,0.0,78.55 -2016-07-08 01:00:00,7291.517,0.0,76.91 -2016-07-08 02:00:00,7026.183,0.0,77.54 -2016-07-08 03:00:00,6872.458,0.0,76.64 -2016-07-08 04:00:00,6836.017,0.0,76.28 -2016-07-08 05:00:00,6976.117,0.0,76.27 -2016-07-08 06:00:00,7414.583,0.0,77.15 -2016-07-08 07:00:00,8103.9,0.0,77.67 -2016-07-08 08:00:00,8689.892,0.0,79.94 -2016-07-08 09:00:00,9150.233,0.0,82.26 -2016-07-08 10:00:00,9491.475,0.0,83.81 -2016-07-08 11:00:00,9685.8,0.0,84.26 -2016-07-08 12:00:00,9758.517,0.0,84.19 -2016-07-08 13:00:00,9791.017,0.0,83.46 -2016-07-08 14:00:00,9758.95,0.0,81.73 -2016-07-08 15:00:00,9695.175,0.0,81.96 -2016-07-08 16:00:00,9546.2,0.0044,81.09 -2016-07-08 17:00:00,9181.191,0.0677,77.89 -2016-07-08 18:00:00,8661.5,0.0092,75.86 -2016-07-08 19:00:00,8253.517,0.0,72.1 -2016-07-08 20:00:00,7940.533,0.0,71.62 -2016-07-08 21:00:00,7720.117,0.0,71.86 -2016-07-08 22:00:00,7375.242,, -2016-07-08 23:00:00,6912.542,0.0024,71.06 -2016-07-09 00:00:00,6435.867,0.0,69.61 -2016-07-09 01:00:00,6109.7,, -2016-07-09 02:00:00,5850.917,0.0,68.42 -2016-07-09 03:00:00,5673.342,0.0,67.08 -2016-07-09 04:00:00,5552.617,0.0,67.48 -2016-07-09 05:00:00,5509.35,0.0,67.62 -2016-07-09 06:00:00,5576.175,0.0,65.49 -2016-07-09 07:00:00,5787.025,0.0,66.29 -2016-07-09 08:00:00,6017.642,0.0,66.92 -2016-07-09 09:00:00,6258.283,0.0,67.04 -2016-07-09 10:00:00,6450.375,0.0,67.87 -2016-07-09 11:00:00,6591.65,0.0,68.9 -2016-07-09 12:00:00,6660.575,0.0,69.83 -2016-07-09 13:00:00,6642.658,0.0,70.54 -2016-07-09 14:00:00,6621.375,0.0,71.85 -2016-07-09 15:00:00,6559.967,0.0,71.14 -2016-07-09 16:00:00,6508.333,0.0,71.32 -2016-07-09 17:00:00,6474.017,0.0,71.01 -2016-07-09 18:00:00,6431.85,0.0,70.48 -2016-07-09 19:00:00,6388.45,0.0,69.92 -2016-07-09 20:00:00,6416.8,0.0,70.3 -2016-07-09 21:00:00,6364.992,0.0,69.27 -2016-07-09 22:00:00,6206.5,0.0,68.09 -2016-07-09 23:00:00,5974.658,0.0417,67.99 -2016-07-10 00:00:00,5734.492,0.0,67.98 -2016-07-10 01:00:00,5509.092,0.0,67.98 -2016-07-10 02:00:00,5337.675,0.0,67.71 -2016-07-10 03:00:00,5199.4,0.0,68.02 -2016-07-10 04:00:00,5129.45,0.0,67.68 -2016-07-10 05:00:00,5100.925,0.0,67.38 -2016-07-10 06:00:00,5166.617,0.0,67.77 -2016-07-10 07:00:00,5393.683,0.0,67.2 -2016-07-10 08:00:00,5740.683,0.0,68.81 -2016-07-10 09:00:00,6102.35,0.0,71.38 -2016-07-10 10:00:00,6406.408,0.0,73.78 -2016-07-10 11:00:00,6681.058,0.0,75.41 -2016-07-10 12:00:00,6808.817,0.0,77.36 -2016-07-10 13:00:00,6863.658,0.0,78.74 -2016-07-10 14:00:00,6883.292,0.0,80.37 -2016-07-10 15:00:00,6900.708,0.0027,78.75 -2016-07-10 16:00:00,6899.992,0.0,79.59 -2016-07-10 17:00:00,6907.1,0.0,79.37 -2016-07-10 18:00:00,6877.675,0.0,78.57 -2016-07-10 19:00:00,6777.0,0.0,78.14 -2016-07-10 20:00:00,6708.458,0.0,77.15 -2016-07-10 21:00:00,6769.083,0.0,75.23 -2016-07-10 22:00:00,6567.567,0.0,73.48 -2016-07-10 23:00:00,6232.033,0.0,71.87 -2016-07-11 00:00:00,5872.35,0.0,71.1 -2016-07-11 01:00:00,5582.45,0.0,69.31 -2016-07-11 02:00:00,5394.642,0.0,68.67 -2016-07-11 03:00:00,5282.517,0.0,67.43 -2016-07-11 04:00:00,5284.8,0.0,66.46 -2016-07-11 05:00:00,5468.025,0.0,66.18 -2016-07-11 06:00:00,5904.525,0.0,65.89 -2016-07-11 07:00:00,6502.433,0.0,66.15 -2016-07-11 08:00:00,7035.575,0.0,67.99 -2016-07-11 09:00:00,7430.45,0.0,70.4 -2016-07-11 10:00:00,7622.017,0.0,72.41 -2016-07-11 11:00:00,7729.95,0.0,74.0 -2016-07-11 12:00:00,7807.117,0.0,75.38 -2016-07-11 13:00:00,7916.083,0.0,77.17 -2016-07-11 14:00:00,8015.425,0.0,78.04 -2016-07-11 15:00:00,8117.417,0.0,79.3 -2016-07-11 16:00:00,8211.292,0.0,79.76 -2016-07-11 17:00:00,8205.066,0.0,79.99 -2016-07-11 18:00:00,7915.875,0.0,80.53 -2016-07-11 19:00:00,7608.1,0.0,78.9 -2016-07-11 20:00:00,7397.55,0.0,77.18 -2016-07-11 21:00:00,7309.858,0.0,75.37 -2016-07-11 22:00:00,7016.05,0.0,72.18 -2016-07-11 23:00:00,6583.983,0.0,71.21 -2016-07-12 00:00:00,6120.183,0.0,70.76 -2016-07-12 01:00:00,5788.908,0.0,69.97 -2016-07-12 02:00:00,5571.55,0.0,69.27 -2016-07-12 03:00:00,5454.467,0.0,68.85 -2016-07-12 04:00:00,5448.858,0.0,68.73 -2016-07-12 05:00:00,5623.3,0.0,68.08 -2016-07-12 06:00:00,6135.408,0.0,68.32 -2016-07-12 07:00:00,6849.95,0.0,69.75 -2016-07-12 08:00:00,7406.767,0.0,71.31 -2016-07-12 09:00:00,7803.567,0.0,74.41 -2016-07-12 10:00:00,8072.908,0.0,76.91 -2016-07-12 11:00:00,8212.592,0.0,79.02 -2016-07-12 12:00:00,8333.509,0.0,80.18 -2016-07-12 13:00:00,8436.816,0.0,81.96 -2016-07-12 14:00:00,8509.142,0.0,81.48 -2016-07-12 15:00:00,8590.241,0.0,81.09 -2016-07-12 16:00:00,8648.025,0.0,81.92 -2016-07-12 17:00:00,8583.991,0.0,80.44 -2016-07-12 18:00:00,8247.108,0.0,78.51 -2016-07-12 19:00:00,7918.958,0.0,77.41 -2016-07-12 20:00:00,7690.658,0.0,76.57 -2016-07-12 21:00:00,7624.533,0.0,74.41 -2016-07-12 22:00:00,7366.258,0.0,73.75 -2016-07-12 23:00:00,6929.117,0.0,73.16 -2016-07-13 00:00:00,6450.583,0.0025,73.55 -2016-07-13 01:00:00,6087.958,0.0,73.1 -2016-07-13 02:00:00,5857.508,0.0,72.65 -2016-07-13 03:00:00,5726.283,0.0,72.39 -2016-07-13 04:00:00,5717.625,0.0,71.29 -2016-07-13 05:00:00,5907.317,0.0,71.07 -2016-07-13 06:00:00,6437.817,0.0,71.33 -2016-07-13 07:00:00,7132.467,0.0,71.71 -2016-07-13 08:00:00,7677.008,0.0,73.98 -2016-07-13 09:00:00,8029.85,0.0,76.83 -2016-07-13 10:00:00,8356.634,0.0,77.93 -2016-07-13 11:00:00,8659.325,0.0,79.18 -2016-07-13 12:00:00,8810.95,0.0025,81.83 -2016-07-13 13:00:00,8923.146,0.0036,82.64 -2016-07-13 14:00:00,8967.517,0.0056,81.79 -2016-07-13 15:00:00,8920.167,0.0,83.52 -2016-07-13 16:00:00,8618.25,0.0,83.28 -2016-07-13 17:00:00,8545.642,0.0,80.81 -2016-07-13 18:00:00,8287.025,0.0,78.63 -2016-07-13 19:00:00,8054.65,0.0027,78.73 -2016-07-13 20:00:00,7943.608,0.0,77.44 -2016-07-13 21:00:00,7906.958,0.0,76.4 -2016-07-13 22:00:00,7648.358,0.0032,76.26 -2016-07-13 23:00:00,7213.083,0.0,75.46 -2016-07-14 00:00:00,6760.017,0.0,74.92 -2016-07-14 01:00:00,6464.858,0.0,74.41 -2016-07-14 02:00:00,6291.733,0.0,75.37 -2016-07-14 03:00:00,6214.0,0.0,74.86 -2016-07-14 04:00:00,6231.1,0.0,75.49 -2016-07-14 05:00:00,6456.175,0.0,75.27 -2016-07-14 06:00:00,6982.058,0.0,75.78 -2016-07-14 07:00:00,7666.825,0.0,75.78 -2016-07-14 08:00:00,8221.775,0.0,76.93 -2016-07-14 09:00:00,8662.592,0.0,77.18 -2016-07-14 10:00:00,9030.267,0.0,78.81 -2016-07-14 11:00:00,9272.0,0.0,81.57 -2016-07-14 12:00:00,9470.316,0.0,82.77 -2016-07-14 13:00:00,9628.958,0.0,84.64 -2016-07-14 14:00:00,9866.975,0.0,84.44 -2016-07-14 15:00:00,10031.95,0.0,87.36 -2016-07-14 16:00:00,9669.434,0.0058,86.83 -2016-07-14 17:00:00,9582.241,0.0,81.81 -2016-07-14 18:00:00,9532.509,0.0,80.23 -2016-07-14 19:00:00,9303.592,0.0,83.24 -2016-07-14 20:00:00,9089.408,0.0,84.66 -2016-07-14 21:00:00,9025.783,0.0,82.02 -2016-07-14 22:00:00,8734.167,0.0,82.19 -2016-07-14 23:00:00,8244.458,0.0,80.85 -2016-07-15 00:00:00,7770.008,0.0,80.64 -2016-07-15 01:00:00,7387.033,0.0,78.34 -2016-07-15 02:00:00,7123.858,0.0,80.71 -2016-07-15 03:00:00,6951.892,0.0,80.49 -2016-07-15 04:00:00,6915.683,0.0,78.51 -2016-07-15 05:00:00,7062.542,0.0,78.74 -2016-07-15 06:00:00,7525.717,0.0,77.45 -2016-07-15 07:00:00,8233.483,0.0355,78.68 -2016-07-15 08:00:00,8837.708,0.0,81.76 -2016-07-15 09:00:00,9313.983,0.0,84.18 -2016-07-15 10:00:00,9662.741,0.0,86.49 -2016-07-15 11:00:00,9803.792,0.0,88.98 -2016-07-15 12:00:00,9780.775,0.0,87.98 -2016-07-15 13:00:00,9883.475,0.0,88.22 -2016-07-15 14:00:00,9959.667,0.0,89.4 -2016-07-15 15:00:00,9976.19,0.0,89.28 -2016-07-15 16:00:00,9905.3,0.0022,90.25 -2016-07-15 17:00:00,9796.441,0.0,88.68 -2016-07-15 18:00:00,9502.441,0.0,89.05 -2016-07-15 19:00:00,9160.658,0.0,88.08 -2016-07-15 20:00:00,8902.15,0.0,85.86 -2016-07-15 21:00:00,8830.475,0.0,84.39 -2016-07-15 22:00:00,8582.792,0.0,83.75 -2016-07-15 23:00:00,8177.333,0.0,82.67 -2016-07-16 00:00:00,7686.758,0.0,82.33 -2016-07-16 01:00:00,7290.15,0.0,80.77 -2016-07-16 02:00:00,6995.058,0.0,79.96 -2016-07-16 03:00:00,6767.483,0.0,78.84 -2016-07-16 04:00:00,6589.175,0.0,78.4 -2016-07-16 05:00:00,6486.7,0.0,76.89 -2016-07-16 06:00:00,6514.975,0.0,75.0 -2016-07-16 07:00:00,6870.1,0.0,75.36 -2016-07-16 08:00:00,7349.75,0.0,79.37 -2016-07-16 09:00:00,7770.925,0.0,81.8 -2016-07-16 10:00:00,8155.608,0.0,83.68 -2016-07-16 11:00:00,8403.233,0.0,85.54 -2016-07-16 12:00:00,8560.0,0.0,87.26 -2016-07-16 13:00:00,8620.684,0.0,87.85 -2016-07-16 14:00:00,8673.0,0.0,89.0 -2016-07-16 15:00:00,8655.691,0.0,89.32 -2016-07-16 16:00:00,8304.816,0.0148,89.23 -2016-07-16 17:00:00,8072.367,0.0,86.18 -2016-07-16 18:00:00,7910.917,0.0,77.42 -2016-07-16 19:00:00,7713.15,0.0026,78.17 -2016-07-16 20:00:00,7658.125,0.0026,80.86 -2016-07-16 21:00:00,7682.183,0.0129,78.54 -2016-07-16 22:00:00,7533.658,0.0036,78.11 -2016-07-16 23:00:00,7263.825,0.0,77.15 -2016-07-17 00:00:00,6932.342,0.0,77.06 -2016-07-17 01:00:00,6635.85,0.0,76.07 -2016-07-17 02:00:00,6400.55,0.012,75.97 -2016-07-17 03:00:00,6239.717,0.0,75.69 -2016-07-17 04:00:00,6140.758,0.0,75.42 -2016-07-17 05:00:00,6106.508,0.0,75.11 -2016-07-17 06:00:00,6121.925,0.0033,75.93 -2016-07-17 07:00:00,6320.883,0.0,76.03 -2016-07-17 08:00:00,6602.725,0.0,77.01 -2016-07-17 09:00:00,7090.442,0.0,78.22 -2016-07-17 10:00:00,7579.442,0.0,80.69 -2016-07-17 11:00:00,7948.442,0.0,84.04 -2016-07-17 12:00:00,8207.934,0.0,85.89 -2016-07-17 13:00:00,8380.816,0.0,87.86 -2016-07-17 14:00:00,8489.684,0.0,88.52 -2016-07-17 15:00:00,8565.792,0.0,89.46 -2016-07-17 16:00:00,8629.267,0.0,89.67 -2016-07-17 17:00:00,8643.491,0.0,88.96 -2016-07-17 18:00:00,8595.908,0.0,87.66 -2016-07-17 19:00:00,8525.208,0.0,87.19 -2016-07-17 20:00:00,8497.75,0.0,86.19 -2016-07-17 21:00:00,8557.275,0.0,85.76 -2016-07-17 22:00:00,8339.167,0.0,84.34 -2016-07-17 23:00:00,7951.717,0.0,81.87 -2016-07-18 00:00:00,7532.758,0.0,81.35 -2016-07-18 01:00:00,7223.083,0.0074,80.02 -2016-07-18 02:00:00,6992.483,0.0,80.42 -2016-07-18 03:00:00,6880.242,0.0,79.03 -2016-07-18 04:00:00,6861.708,0.0,77.47 -2016-07-18 05:00:00,7023.308,0.0,77.43 -2016-07-18 06:00:00,7439.025,0.0,75.48 -2016-07-18 07:00:00,8097.55,0.0,77.08 -2016-07-18 08:00:00,8732.0,0.0,79.05 -2016-07-18 09:00:00,9266.45,0.0,81.23 -2016-07-18 10:00:00,9687.233,0.0,84.42 -2016-07-18 11:00:00,9986.483,0.0,87.04 -2016-07-18 12:00:00,10214.97,0.0,89.56 -2016-07-18 13:00:00,10356.94,0.0,91.59 -2016-07-18 14:00:00,10474.17,0.0,91.89 -2016-07-18 15:00:00,10482.42,0.0,91.66 -2016-07-18 16:00:00,10392.24,0.0,90.66 -2016-07-18 17:00:00,9730.775,0.1137,88.41 -2016-07-18 18:00:00,9415.208,0.0,84.61 -2016-07-18 19:00:00,9234.741,0.0034,79.2 -2016-07-18 20:00:00,9092.45,0.0042,78.18 -2016-07-18 21:00:00,9033.292,0.0,78.09 -2016-07-18 22:00:00,8697.4,0.0,77.94 -2016-07-18 23:00:00,8133.35,0.0023,77.6 -2016-07-19 00:00:00,7563.183,0.0,76.97 -2016-07-19 01:00:00,7191.375,0.0,76.37 -2016-07-19 02:00:00,6918.233,0.0,76.4 -2016-07-19 03:00:00,6745.158,0.0,76.19 -2016-07-19 04:00:00,6677.092,0.0,76.06 -2016-07-19 05:00:00,6750.767,0.0,75.01 -2016-07-19 06:00:00,7056.783,0.0,74.05 -2016-07-19 07:00:00,7612.183,0.0,74.7 -2016-07-19 08:00:00,8068.758,0.0,76.03 -2016-07-19 09:00:00,8367.408,0.0,76.69 -2016-07-19 10:00:00,8580.475,0.0,77.83 -2016-07-19 11:00:00,8694.5,0.0,79.48 -2016-07-19 12:00:00,8763.167,0.0,81.41 -2016-07-19 13:00:00,8797.642,0.0,82.56 -2016-07-19 14:00:00,8851.208,0.0,83.18 -2016-07-19 15:00:00,8867.967,0.0,83.55 -2016-07-19 16:00:00,8883.25,0.0,82.57 -2016-07-19 17:00:00,8846.458,0.0,83.16 -2016-07-19 18:00:00,8523.4,0.0,82.43 -2016-07-19 19:00:00,8243.958,0.0,81.91 -2016-07-19 20:00:00,8067.758,0.0,80.37 -2016-07-19 21:00:00,7996.917,0.0,78.32 -2016-07-19 22:00:00,7699.6,0.0,77.73 -2016-07-19 23:00:00,7232.775,0.0,77.15 -2016-07-20 00:00:00,6735.15,0.0,75.76 -2016-07-20 01:00:00,6348.6,0.0,74.31 -2016-07-20 02:00:00,6072.267,0.0,73.58 -2016-07-20 03:00:00,5898.933,0.0,72.57 -2016-07-20 04:00:00,5843.825,0.0,70.48 -2016-07-20 05:00:00,5965.758,0.0,70.33 -2016-07-20 06:00:00,6413.1,0.0,69.8 -2016-07-20 07:00:00,7020.417,0.0,69.61 -2016-07-20 08:00:00,7536.475,0.0,71.88 -2016-07-20 09:00:00,7883.142,0.0,74.7 -2016-07-20 10:00:00,8090.525,0.0,76.38 -2016-07-20 11:00:00,8231.967,0.0,78.13 -2016-07-20 12:00:00,8333.991,0.0,79.04 -2016-07-20 13:00:00,8436.017,0.0,80.77 -2016-07-20 14:00:00,8561.259,0.0,82.13 -2016-07-20 15:00:00,8655.566,0.0,83.34 -2016-07-20 16:00:00,8747.684,0.0,82.91 -2016-07-20 17:00:00,8713.092,0.0,82.78 -2016-07-20 18:00:00,8414.741,0.0,81.04 -2016-07-20 19:00:00,8102.367,0.0,80.19 -2016-07-20 20:00:00,7898.575,0.0,78.2 -2016-07-20 21:00:00,7843.85,0.0,76.66 -2016-07-20 22:00:00,7568.358,0.0,74.1 -2016-07-20 23:00:00,7151.542,0.0,75.42 -2016-07-21 00:00:00,6692.308,0.0,74.47 -2016-07-21 01:00:00,6316.992,0.0,73.91 -2016-07-21 02:00:00,6069.008,0.0,73.23 -2016-07-21 03:00:00,5925.742,0.0,72.16 -2016-07-21 04:00:00,5908.867,0.0,71.71 -2016-07-21 05:00:00,6109.958,0.0,70.27 -2016-07-21 06:00:00,6627.975,0.0,69.81 -2016-07-21 07:00:00,7307.017,0.0,71.19 -2016-07-21 08:00:00,7881.183,0.0,74.83 -2016-07-21 09:00:00,8291.45,0.0,76.56 -2016-07-21 10:00:00,8624.0,0.0,80.17 -2016-07-21 11:00:00,8838.925,0.0,83.97 -2016-07-21 12:00:00,8995.542,0.0,85.26 -2016-07-21 13:00:00,9154.625,0.0,87.01 -2016-07-21 14:00:00,9286.2,0.0,88.05 -2016-07-21 15:00:00,9406.783,0.0,88.04 -2016-07-21 16:00:00,9491.125,0.0,87.34 -2016-07-21 17:00:00,9434.333,0.0,85.7 -2016-07-21 18:00:00,9099.0,0.0,84.16 -2016-07-21 19:00:00,8786.675,0.0,83.17 -2016-07-21 20:00:00,8574.675,0.0,81.97 -2016-07-21 21:00:00,8516.667,0.0,79.78 -2016-07-21 22:00:00,8186.925,0.0,79.15 -2016-07-21 23:00:00,7729.933,0.0,79.09 -2016-07-22 00:00:00,7233.692,0.0,78.55 -2016-07-22 01:00:00,6825.525,0.0,76.74 -2016-07-22 02:00:00,6577.275,0.0,76.31 -2016-07-22 03:00:00,6444.083,0.0,75.05 -2016-07-22 04:00:00,6428.183,0.0,74.57 -2016-07-22 05:00:00,6589.425,0.0,73.79 -2016-07-22 06:00:00,7065.142,0.0,74.51 -2016-07-22 07:00:00,7671.492,0.0,75.6 -2016-07-22 08:00:00,8230.725,0.0,76.6 -2016-07-22 09:00:00,8735.9,0.0,78.89 -2016-07-22 10:00:00,9144.017,0.0,81.78 -2016-07-22 11:00:00,9477.241,0.0,85.37 -2016-07-22 12:00:00,9740.55,0.0,87.65 -2016-07-22 13:00:00,9987.275,0.0,89.69 -2016-07-22 14:00:00,10198.67,0.0,90.79 -2016-07-22 15:00:00,10334.94,0.0,92.06 -2016-07-22 16:00:00,10457.99,0.0,92.86 -2016-07-22 17:00:00,10437.84,0.0,92.44 -2016-07-22 18:00:00,10152.0,0.0,92.5 -2016-07-22 19:00:00,9829.559,0.0,91.3 -2016-07-22 20:00:00,9588.85,0.0,89.99 -2016-07-22 21:00:00,9434.667,0.0,87.36 -2016-07-22 22:00:00,9117.741,0.0,87.06 -2016-07-22 23:00:00,8664.592,0.0,86.21 -2016-07-23 00:00:00,8169.292,0.0,84.16 -2016-07-23 01:00:00,7744.842,0.0,83.27 -2016-07-23 02:00:00,7411.142,0.0,82.56 -2016-07-23 03:00:00,7151.542,0.0,81.57 -2016-07-23 04:00:00,6992.325,0.0,80.33 -2016-07-23 05:00:00,6910.85,0.0,80.39 -2016-07-23 06:00:00,6953.225,0.0,80.7 -2016-07-23 07:00:00,7302.433,0.0,80.87 -2016-07-23 08:00:00,7792.392,0.0,82.63 -2016-07-23 09:00:00,8240.233,0.0,84.96 -2016-07-23 10:00:00,8597.233,0.0,86.31 -2016-07-23 11:00:00,8842.717,0.0,88.41 -2016-07-23 12:00:00,9012.708,0.0,90.93 -2016-07-23 13:00:00,9070.309,0.0,92.5 -2016-07-23 14:00:00,9121.042,0.0,93.43 -2016-07-23 15:00:00,9159.134,0.0,94.78 -2016-07-23 16:00:00,9146.108,0.0,94.78 -2016-07-23 17:00:00,9149.434,0.0,94.41 -2016-07-23 18:00:00,9099.642,0.0,93.67 -2016-07-23 19:00:00,8971.775,0.0,92.11 -2016-07-23 20:00:00,8836.85,0.0,90.81 -2016-07-23 21:00:00,8758.866,0.0,89.27 -2016-07-23 22:00:00,8525.967,0.0,87.22 -2016-07-23 23:00:00,8135.392,0.0,85.5 -2016-07-24 00:00:00,7733.633,0.0,83.8 -2016-07-24 01:00:00,7345.1,0.0,82.38 -2016-07-24 02:00:00,7037.2,0.0,81.03 -2016-07-24 03:00:00,6804.433,0.0,78.29 -2016-07-24 04:00:00,6638.183,0.0,77.62 -2016-07-24 05:00:00,6526.292,0.0,76.06 -2016-07-24 06:00:00,6504.958,0.0,75.33 -2016-07-24 07:00:00,6791.267,0.0,75.87 -2016-07-24 08:00:00,7156.55,0.0,77.78 -2016-07-24 09:00:00,7539.583,0.0,80.83 -2016-07-24 10:00:00,7953.875,0.0,83.3 -2016-07-24 11:00:00,8298.217,0.0,85.18 -2016-07-24 12:00:00,8473.7,0.0,88.34 -2016-07-24 13:00:00,8617.1,0.0,89.71 -2016-07-24 14:00:00,8717.042,0.0,91.18 -2016-07-24 15:00:00,8791.217,0.0,92.06 -2016-07-24 16:00:00,8815.075,0.0,90.14 -2016-07-24 17:00:00,8803.483,0.0,87.91 -2016-07-24 18:00:00,8782.241,0.0,86.79 -2016-07-24 19:00:00,8686.392,0.0,86.03 -2016-07-24 20:00:00,8738.825,0.0,85.24 -2016-07-24 21:00:00,8824.542,0.0,81.54 -2016-07-24 22:00:00,8683.467,0.0,82.21 -2016-07-24 23:00:00,8329.464,0.0056,81.56 -2016-07-25 00:00:00,7935.775,0.003,81.25 -2016-07-25 01:00:00,7607.125,0.0049,80.79 -2016-07-25 02:00:00,7370.775,0.0,78.33 -2016-07-25 03:00:00,7213.808,0.0,79.91 -2016-07-25 04:00:00,7183.375,0.0464,79.66 -2016-07-25 05:00:00,7339.483,0.0072,79.61 -2016-07-25 06:00:00,7697.725,0.02,79.71 -2016-07-25 07:00:00,8286.833,0.0,78.84 -2016-07-25 08:00:00,8835.733,0.0,79.4 -2016-07-25 09:00:00,9301.9,0.0,81.38 -2016-07-25 10:00:00,9583.5,0.0,82.74 -2016-07-25 11:00:00,9741.116,0.0,84.81 -2016-07-25 12:00:00,9948.958,0.0,85.37 -2016-07-25 13:00:00,10195.78,0.0,86.97 -2016-07-25 14:00:00,10406.97,0.0,88.87 -2016-07-25 15:00:00,10543.54,0.0,90.77 -2016-07-25 16:00:00,10483.26,0.0091,89.9 -2016-07-25 17:00:00,10087.47,0.0,85.11 -2016-07-25 18:00:00,9593.675,0.3383,83.7 -2016-07-25 19:00:00,9460.45,0.0024,77.88 -2016-07-25 20:00:00,9235.384,0.0256,75.94 -2016-07-25 21:00:00,9101.767,0.061,76.53 -2016-07-25 22:00:00,8700.434,0.0,76.55 -2016-07-25 23:00:00,8177.725,0.0031,76.45 -2016-07-26 00:00:00,7646.142,0.0,75.65 -2016-07-26 01:00:00,7230.125,0.0,75.3 -2016-07-26 02:00:00,6966.583,0.0,74.76 -2016-07-26 03:00:00,6790.867,0.0,73.11 -2016-07-26 04:00:00,6751.558,0.0,74.06 -2016-07-26 05:00:00,6881.783,0.0,72.8 -2016-07-26 06:00:00,7285.75,0.0,72.58 -2016-07-26 07:00:00,7944.025,0.0,73.52 -2016-07-26 08:00:00,8513.434,0.0,75.66 -2016-07-26 09:00:00,9027.325,0.0,77.99 -2016-07-26 10:00:00,9359.092,0.0,80.59 -2016-07-26 11:00:00,9518.566,0.0,83.74 -2016-07-26 12:00:00,9656.991,0.0,87.1 -2016-07-26 13:00:00,9778.275,0.0,88.49 -2016-07-26 14:00:00,9877.15,0.0,89.08 -2016-07-26 15:00:00,10008.31,0.0,89.63 -2016-07-26 16:00:00,10080.83,0.0,90.88 -2016-07-26 17:00:00,10109.73,0.0,90.46 -2016-07-26 18:00:00,9874.767,0.0,89.53 -2016-07-26 19:00:00,9561.566,0.0,88.95 -2016-07-26 20:00:00,9346.175,0.0,87.15 -2016-07-26 21:00:00,9222.934,0.0,84.69 -2016-07-26 22:00:00,8870.608,0.0,82.68 -2016-07-26 23:00:00,8339.125,0.0,80.72 -2016-07-27 00:00:00,7764.958,0.0,80.77 -2016-07-27 01:00:00,7342.1,0.0,79.87 -2016-07-27 02:00:00,7041.433,0.0,78.77 -2016-07-27 03:00:00,6838.367,0.0,77.61 -2016-07-27 04:00:00,6775.433,0.0,75.75 -2016-07-27 05:00:00,6906.742,0.0,75.2 -2016-07-27 06:00:00,7299.917,0.0,74.34 -2016-07-27 07:00:00,7917.183,0.0,75.47 -2016-07-27 08:00:00,8461.892,0.0,78.0 -2016-07-27 09:00:00,8904.583,0.0,80.0 -2016-07-27 10:00:00,9213.059,0.0,82.01 -2016-07-27 11:00:00,9436.691,0.0,84.68 -2016-07-27 12:00:00,9590.858,0.0,86.59 -2016-07-27 13:00:00,9763.866,0.0,88.5 -2016-07-27 14:00:00,9911.042,0.0,89.49 -2016-07-27 15:00:00,10044.08,0.0,89.63 -2016-07-27 16:00:00,10155.69,0.0,89.78 -2016-07-27 17:00:00,10131.0,0.0,89.64 -2016-07-27 18:00:00,9845.917,0.0,88.47 -2016-07-27 19:00:00,9537.875,0.0,86.78 -2016-07-27 20:00:00,9343.158,0.0,84.32 -2016-07-27 21:00:00,9272.809,0.0,83.01 -2016-07-27 22:00:00,8937.309,0.0,81.64 -2016-07-27 23:00:00,8489.55,0.0,80.67 -2016-07-28 00:00:00,7965.925,0.0,79.48 -2016-07-28 01:00:00,7563.2,0.0,79.25 -2016-07-28 02:00:00,7291.017,0.0,77.19 -2016-07-28 03:00:00,7120.625,0.0,77.2 -2016-07-28 04:00:00,7094.217,0.0,77.34 -2016-07-28 05:00:00,7284.008,0.0,76.2 -2016-07-28 06:00:00,7743.283,0.0,75.9 -2016-07-28 07:00:00,8419.217,0.0,77.53 -2016-07-28 08:00:00,9046.491,0.1353,79.39 -2016-07-28 09:00:00,9462.809,0.0,82.24 -2016-07-28 10:00:00,9755.275,0.0,86.32 -2016-07-28 11:00:00,9934.767,0.0,88.13 -2016-07-28 12:00:00,10058.97,0.0,90.21 -2016-07-28 13:00:00,10170.17,0.0,91.72 -2016-07-28 14:00:00,10318.15,0.0,92.24 -2016-07-28 15:00:00,10376.43,0.0,90.92 -2016-07-28 16:00:00,10350.61,0.0,89.38 -2016-07-28 17:00:00,10172.4,0.0,86.31 -2016-07-28 18:00:00,9733.417,0.0117,84.2 -2016-07-28 19:00:00,9353.8,0.0039,82.16 -2016-07-28 20:00:00,9202.759,0.0029,80.06 -2016-07-28 21:00:00,9078.059,0.0041,80.44 -2016-07-28 22:00:00,8741.833,0.0053,79.72 -2016-07-28 23:00:00,8312.384,0.0065,78.68 -2016-07-29 00:00:00,7785.533,0.0134,78.31 -2016-07-29 01:00:00,7382.558,0.0228,77.42 -2016-07-29 02:00:00,7095.567,0.0156,77.32 -2016-07-29 03:00:00,6926.017,0.0106,76.87 -2016-07-29 04:00:00,6824.033,0.0332,75.12 -2016-07-29 05:00:00,6882.542,0.6486,73.83 -2016-07-29 06:00:00,7239.683,0.0074,72.39 -2016-07-29 07:00:00,7667.842,0.0318,71.37 -2016-07-29 08:00:00,7975.333,0.0992,71.1 -2016-07-29 09:00:00,8205.8,0.0151,71.36 -2016-07-29 10:00:00,8380.325,0.0,70.88 -2016-07-29 11:00:00,8578.134,0.0,72.74 -2016-07-29 12:00:00,8723.158,0.0,75.14 -2016-07-29 13:00:00,8885.259,0.0,78.3 -2016-07-29 14:00:00,9048.375,0.0,79.61 -2016-07-29 15:00:00,9196.759,0.0,81.26 -2016-07-29 16:00:00,9348.009,0.0,82.43 -2016-07-29 17:00:00,9364.0,0.0,83.02 -2016-07-29 18:00:00,9089.667,0.0,83.23 -2016-07-29 19:00:00,8724.85,0.0,82.34 -2016-07-29 20:00:00,8483.441,0.0038,79.77 -2016-07-29 21:00:00,8336.108,0.0,78.1 -2016-07-29 22:00:00,8057.083,0.0,77.85 -2016-07-29 23:00:00,7698.083,0.0,77.24 -2016-07-30 00:00:00,7280.55,0.0,76.69 -2016-07-30 01:00:00,6934.808,0.0,76.01 -2016-07-30 02:00:00,6701.617,0.0,76.09 -2016-07-30 03:00:00,6539.375,0.0,74.5 -2016-07-30 04:00:00,6410.242,0.0,74.18 -2016-07-30 05:00:00,6358.575,0.0,74.69 -2016-07-30 06:00:00,6408.117,0.0,73.97 -2016-07-30 07:00:00,6759.058,0.0,74.01 -2016-07-30 08:00:00,7203.833,0.0,76.05 -2016-07-30 09:00:00,7608.967,0.0,77.47 -2016-07-30 10:00:00,8000.483,0.0,79.04 -2016-07-30 11:00:00,8261.884,0.0,80.78 -2016-07-30 12:00:00,8397.8,0.0,82.12 -2016-07-30 13:00:00,8379.3,0.0022,82.64 -2016-07-30 14:00:00,8394.55,0.0,81.57 -2016-07-30 15:00:00,8200.283,0.0041,81.14 -2016-07-30 16:00:00,8018.608,0.0999,80.51 -2016-07-30 17:00:00,7909.592,0.0326,77.12 -2016-07-30 18:00:00,7817.258,0.0621,75.52 -2016-07-30 19:00:00,7770.492,0.0144,75.07 -2016-07-30 20:00:00,7771.425,0.0227,74.01 -2016-07-30 21:00:00,7738.542,0.0198,74.99 -2016-07-30 22:00:00,7552.183,0.0024,74.64 -2016-07-30 23:00:00,7306.867,0.0031,75.41 -2016-07-31 00:00:00,6983.933,0.0,74.53 -2016-07-31 01:00:00,6698.233,0.0039,73.57 -2016-07-31 02:00:00,6470.217,0.0,74.7 -2016-07-31 03:00:00,6309.817,0.0,74.41 -2016-07-31 04:00:00,6190.1,0.0,74.29 -2016-07-31 05:00:00,6173.192,0.0024,73.94 -2016-07-31 06:00:00,6216.758,0.0,73.41 -2016-07-31 07:00:00,6409.55,0.0,75.03 -2016-07-31 08:00:00,6684.067,0.0031,75.59 -2016-07-31 09:00:00,7003.308,0.0,76.41 -2016-07-31 10:00:00,7229.117,0.0424,76.59 -2016-07-31 11:00:00,7434.117,0.0,77.3 -2016-07-31 12:00:00,7493.333,0.1146,76.67 -2016-07-31 13:00:00,7594.358,0.0,76.93 -2016-07-31 14:00:00,7669.367,0.0,76.81 -2016-07-31 15:00:00,7692.542,0.0,78.74 -2016-07-31 16:00:00,7710.225,0.0,78.48 -2016-07-31 17:00:00,7695.558,0.0038,76.61 -2016-07-31 18:00:00,7659.192,0.0,76.28 -2016-07-31 19:00:00,7625.725,0.0,75.78 -2016-07-31 20:00:00,7651.067,0.0,75.03 -2016-07-31 21:00:00,7612.067,0.0,74.07 -2016-07-31 22:00:00,7369.675,0.0264,73.21 -2016-07-31 23:00:00,7003.775,0.0406,73.05 -2016-08-01 00:00:00,6643.408,0.0185,72.43 -2016-08-01 01:00:00,6351.275,0.0,72.1 -2016-08-01 02:00:00,6162.6,0.0,70.8 -2016-08-01 03:00:00,6048.492,0.0,70.96 -2016-08-01 04:00:00,6030.617,0.0,71.04 -2016-08-01 05:00:00,6217.975,0.0,70.41 -2016-08-01 06:00:00,6610.358,0.0,70.38 -2016-08-01 07:00:00,7106.2,0.0,70.07 -2016-08-01 08:00:00,7533.167,0.0,69.69 -2016-08-01 09:00:00,7803.242,0.0,71.32 -2016-08-01 10:00:00,8021.192,0.0,70.96 -2016-08-01 11:00:00,8154.592,0.0,72.01 -2016-08-01 12:00:00,8176.95,0.0,73.66 -2016-08-01 13:00:00,8202.525,0.0,73.93 -2016-08-01 14:00:00,8320.75,0.0,74.77 -2016-08-01 15:00:00,8427.866,0.0,77.23 -2016-08-01 16:00:00,8536.059,0.0,78.57 -2016-08-01 17:00:00,8506.783,0.0,78.47 -2016-08-01 18:00:00,8175.75,0.0,77.31 -2016-08-01 19:00:00,7905.575,0.0,75.76 -2016-08-01 20:00:00,7764.5,0.0,74.37 -2016-08-01 21:00:00,7582.042,0.0,73.53 -2016-08-01 22:00:00,7250.65,0.0,73.71 -2016-08-01 23:00:00,6775.667,0.0026,73.76 -2016-08-02 00:00:00,6311.1,0.0,72.86 -2016-08-02 01:00:00,5974.425,0.0,72.13 -2016-08-02 02:00:00,5775.617,0.0,71.38 -2016-08-02 03:00:00,5664.35,0.0,70.97 -2016-08-02 04:00:00,5669.258,0.0,70.61 -2016-08-02 05:00:00,5854.875,0.0,70.3 -2016-08-02 06:00:00,6322.658,0.0,70.07 -2016-08-02 07:00:00,6887.775,0.0,70.08 -2016-08-02 08:00:00,7370.083,0.0,71.94 -2016-08-02 09:00:00,7683.992,0.0,71.88 -2016-08-02 10:00:00,7862.683,0.0,72.19 -2016-08-02 11:00:00,7969.467,0.0,73.74 -2016-08-02 12:00:00,8088.642,0.0,74.61 -2016-08-02 13:00:00,8155.6,0.0,75.97 -2016-08-02 14:00:00,8151.592,0.0,76.39 -2016-08-02 15:00:00,8112.375,0.0,76.44 -2016-08-02 16:00:00,8048.75,0.0,75.69 -2016-08-02 17:00:00,7963.85,0.0,74.87 -2016-08-02 18:00:00,7673.392,0.0,73.87 -2016-08-02 19:00:00,7401.667,0.0,73.75 -2016-08-02 20:00:00,7256.942,0.0,72.73 -2016-08-02 21:00:00,7131.658,0.0,71.12 -2016-08-02 22:00:00,6790.417,0.0,70.0 -2016-08-02 23:00:00,6361.283,0.0,69.43 -2016-08-03 00:00:00,5938.225,0.0,69.89 -2016-08-03 01:00:00,5626.667,0.0,69.53 -2016-08-03 02:00:00,5426.942,0.0,69.29 -2016-08-03 03:00:00,5306.617,0.0,68.01 -2016-08-03 04:00:00,5299.258,0.0,66.57 -2016-08-03 05:00:00,5495.633,0.0,66.4 -2016-08-03 06:00:00,5930.792,0.0,66.51 -2016-08-03 07:00:00,6565.75,0.0,67.48 -2016-08-03 08:00:00,7100.683,0.0,68.82 -2016-08-03 09:00:00,7441.75,0.0,71.14 -2016-08-03 10:00:00,7669.925,0.0,73.03 -2016-08-03 11:00:00,7828.358,0.0,75.31 -2016-08-03 12:00:00,7931.175,0.0,77.04 -2016-08-03 13:00:00,7984.275,0.0,78.56 -2016-08-03 14:00:00,8059.8,0.0,79.2 -2016-08-03 15:00:00,8108.875,0.0,79.67 -2016-08-03 16:00:00,8163.158,0.0,79.28 -2016-08-03 17:00:00,8112.067,0.0,78.51 -2016-08-03 18:00:00,7828.625,0.0,77.46 -2016-08-03 19:00:00,7511.275,0.0,76.23 -2016-08-03 20:00:00,7285.65,0.0,74.82 -2016-08-03 21:00:00,7153.633,0.0,72.77 -2016-08-03 22:00:00,6883.358,0.0,71.44 -2016-08-03 23:00:00,6475.533,0.0,70.65 -2016-08-04 00:00:00,6043.058,0.0,70.27 -2016-08-04 01:00:00,5712.258,0.0,69.19 -2016-08-04 02:00:00,5492.208,0.0,67.94 -2016-08-04 03:00:00,5362.683,0.0,67.45 -2016-08-04 04:00:00,5347.792,0.0,66.47 -2016-08-04 05:00:00,5540.058,0.0,66.39 -2016-08-04 06:00:00,6005.567,0.0,66.02 -2016-08-04 07:00:00,6653.9,0.0,66.85 -2016-08-04 08:00:00,7239.183,0.0,70.33 -2016-08-04 09:00:00,7637.758,0.0,73.24 -2016-08-04 10:00:00,7901.017,0.0,74.39 -2016-08-04 11:00:00,8044.617,0.0,77.37 -2016-08-04 12:00:00,8097.542,0.0,79.23 -2016-08-04 13:00:00,8196.384,0.0,79.48 -2016-08-04 14:00:00,8239.533,0.0,80.14 -2016-08-04 15:00:00,8331.208,0.0,80.15 -2016-08-04 16:00:00,8376.35,0.0,79.75 -2016-08-04 17:00:00,8320.408,0.0,79.41 -2016-08-04 18:00:00,8006.733,0.0,78.4 -2016-08-04 19:00:00,7670.017,0.0,76.64 -2016-08-04 20:00:00,7459.133,0.0,75.48 -2016-08-04 21:00:00,7341.475,0.0,73.57 -2016-08-04 22:00:00,7040.742,0.0,72.29 -2016-08-04 23:00:00,6631.4,0.0,71.51 -2016-08-05 00:00:00,6202.842,0.0,71.86 -2016-08-05 01:00:00,5871.958,0.0,71.05 -2016-08-05 02:00:00,5636.167,0.0,70.37 -2016-08-05 03:00:00,5486.867,0.0,70.3 -2016-08-05 04:00:00,5456.983,0.0,68.03 -2016-08-05 05:00:00,5639.992,0.0,69.21 -2016-08-05 06:00:00,6053.367,0.0,68.7 -2016-08-05 07:00:00,6634.217,0.0,68.93 -2016-08-05 08:00:00,7210.25,0.0,71.01 -2016-08-05 09:00:00,7641.475,0.0,74.06 -2016-08-05 10:00:00,7943.942,0.0,77.21 -2016-08-05 11:00:00,8171.95,0.0,79.01 -2016-08-05 12:00:00,8338.467,0.0,80.77 -2016-08-05 13:00:00,8454.684,0.0,82.13 -2016-08-05 14:00:00,8542.625,0.0,81.93 -2016-08-05 15:00:00,8546.967,0.0,81.89 -2016-08-05 16:00:00,8501.658,0.0,81.11 -2016-08-05 17:00:00,8389.517,0.0,80.29 -2016-08-05 18:00:00,8065.65,0.0,79.05 -2016-08-05 19:00:00,7800.542,0.0,79.24 -2016-08-05 20:00:00,7654.6,0.0,77.46 -2016-08-05 21:00:00,7544.3,0.0,77.28 -2016-08-05 22:00:00,7252.0,0.0,76.72 -2016-08-05 23:00:00,6883.65,0.0,76.87 -2016-08-06 00:00:00,6448.417,0.0,75.81 -2016-08-06 01:00:00,6112.0,0.0,75.14 -2016-08-06 02:00:00,5891.8,0.0,74.54 -2016-08-06 03:00:00,5764.333,0.0,72.81 -2016-08-06 04:00:00,5704.908,0.0,72.94 -2016-08-06 05:00:00,5763.258,0.0,73.26 -2016-08-06 06:00:00,5918.167,0.0,74.08 -2016-08-06 07:00:00,6230.067,0.0,74.05 -2016-08-06 08:00:00,6590.575,0.0,75.7 -2016-08-06 09:00:00,7033.758,0.0,76.76 -2016-08-06 10:00:00,7523.758,0.0,78.64 -2016-08-06 11:00:00,7890.858,0.0,81.02 -2016-08-06 12:00:00,8038.067,0.0,83.28 -2016-08-06 13:00:00,8179.3,0.0,84.24 -2016-08-06 14:00:00,8385.316,0.0,84.73 -2016-08-06 15:00:00,8513.309,0.0,86.87 -2016-08-06 16:00:00,8504.566,0.0,87.51 -2016-08-06 17:00:00,8149.567,0.0,85.17 -2016-08-06 18:00:00,8067.192,0.0,80.77 -2016-08-06 19:00:00,7940.325,0.0,82.26 -2016-08-06 20:00:00,7872.792,0.0,81.33 -2016-08-06 21:00:00,7882.767,0.0035,79.42 -2016-08-06 22:00:00,7621.3,0.0,80.23 -2016-08-06 23:00:00,7188.542,0.0,79.1 -2016-08-07 00:00:00,6758.708,0.0,77.95 -2016-08-07 01:00:00,6395.842,0.0,76.84 -2016-08-07 02:00:00,6115.333,0.0,75.2 -2016-08-07 03:00:00,5914.292,0.0,73.77 -2016-08-07 04:00:00,5738.758,0.0,72.88 -2016-08-07 05:00:00,5673.925,0.0,71.33 -2016-08-07 06:00:00,5648.225,0.0,71.13 -2016-08-07 07:00:00,5835.908,0.0,71.33 -2016-08-07 08:00:00,6184.975,0.0,73.3 -2016-08-07 09:00:00,6566.058,0.0,75.41 -2016-08-07 10:00:00,6935.517,0.0,78.8 -2016-08-07 11:00:00,7219.242,0.0,81.76 -2016-08-07 12:00:00,7379.808,0.0,84.25 -2016-08-07 13:00:00,7503.933,0.0,85.69 -2016-08-07 14:00:00,7612.208,0.0,85.95 -2016-08-07 15:00:00,7692.367,0.0,86.76 -2016-08-07 16:00:00,7772.392,0.0,86.71 -2016-08-07 17:00:00,7791.425,0.0,86.67 -2016-08-07 18:00:00,7741.342,0.0,85.67 -2016-08-07 19:00:00,7640.2,0.0,83.98 -2016-08-07 20:00:00,7645.108,0.0,82.72 -2016-08-07 21:00:00,7690.158,0.0,81.27 -2016-08-07 22:00:00,7510.542,0.0,79.13 -2016-08-07 23:00:00,7176.483,0.0,77.74 -2016-08-08 00:00:00,6818.142,0.0,77.12 -2016-08-08 01:00:00,6507.1,0.0,76.13 -2016-08-08 02:00:00,6280.058,0.0,75.39 -2016-08-08 03:00:00,6155.117,0.0,73.43 -2016-08-08 04:00:00,6132.95,0.0,72.35 -2016-08-08 05:00:00,6302.675,0.0,72.25 -2016-08-08 06:00:00,6667.125,0.0,71.03 -2016-08-08 07:00:00,7253.725,0.0,72.42 -2016-08-08 08:00:00,7764.55,0.0,73.69 -2016-08-08 09:00:00,8211.833,0.0,77.37 -2016-08-08 10:00:00,8490.092,0.0,79.67 -2016-08-08 11:00:00,8721.2,0.0,82.09 -2016-08-08 12:00:00,8810.792,0.0,82.64 -2016-08-08 13:00:00,8857.792,0.0,84.57 -2016-08-08 14:00:00,8901.059,0.0,84.9 -2016-08-08 15:00:00,8932.542,0.0,84.95 -2016-08-08 16:00:00,8994.975,0.0,84.1 -2016-08-08 17:00:00,8957.842,0.0,83.49 -2016-08-08 18:00:00,8698.517,0.0,83.0 -2016-08-08 19:00:00,8477.158,0.0,81.46 -2016-08-08 20:00:00,8358.259,0.0,80.17 -2016-08-08 21:00:00,8226.708,0.0,77.61 -2016-08-08 22:00:00,7912.758,0.0,76.43 -2016-08-08 23:00:00,7433.475,0.0,75.56 -2016-08-09 00:00:00,6929.65,0.0,74.91 -2016-08-09 01:00:00,6548.825,0.0,74.26 -2016-08-09 02:00:00,6284.725,0.0,74.43 -2016-08-09 04:00:00,6095.958,0.0,72.17 -2016-08-09 05:00:00,6271.267,0.0,71.62 -2016-08-09 06:00:00,6716.917,0.0,71.48 -2016-08-09 07:00:00,7384.892,0.0,72.12 -2016-08-09 08:00:00,7980.875,0.0,74.53 -2016-08-09 09:00:00,8411.783,0.0,77.95 -2016-08-09 10:00:00,8681.417,0.0,81.15 -2016-08-09 11:00:00,8826.25,0.0,83.96 -2016-08-09 12:00:00,8936.175,0.0,85.43 -2016-08-09 13:00:00,9009.275,0.0,85.91 -2016-08-09 14:00:00,9079.8,0.0,86.48 -2016-08-09 15:00:00,9148.417,0.0,85.91 -2016-08-09 16:00:00,9235.85,0.0,84.87 -2016-08-09 17:00:00,9210.5,0.0,83.93 -2016-08-09 18:00:00,8854.208,, -2016-08-09 19:00:00,8551.908,0.0,79.35 -2016-08-09 20:00:00,8486.958,0.0,78.87 -2016-08-09 21:00:00,8411.616,0.0,76.88 -2016-08-09 22:00:00,8140.525,0.0,76.68 -2016-08-09 23:00:00,7729.375,0.0,76.22 -2016-08-10 00:00:00,7256.125,0.0,76.3 -2016-08-10 01:00:00,6933.483,0.0,76.17 -2016-08-10 02:00:00,6720.442,0.0,76.35 -2016-08-10 03:00:00,6563.667,0.0,76.35 -2016-08-10 04:00:00,6574.767,0.0,76.05 -2016-08-10 05:00:00,6827.867,0.0,75.16 -2016-08-10 06:00:00,7382.5,0.0,76.41 -2016-08-10 07:00:00,8007.15,0.0,77.06 -2016-08-10 08:00:00,8500.608,0.0,78.05 -2016-08-10 09:00:00,8902.358,0.0029,78.37 -2016-08-10 10:00:00,9149.358,0.0,80.06 -2016-08-10 11:00:00,9368.975,0.0,81.28 -2016-08-10 12:00:00,9607.741,0.0599,81.33 -2016-08-10 13:00:00,9599.225,0.0,83.95 -2016-08-10 14:00:00,9772.225,0.0,82.83 -2016-08-10 15:00:00,10019.46,0.0,82.81 -2016-08-10 16:00:00,10172.42,0.0,87.15 -2016-08-10 17:00:00,10091.97,0.0,86.11 -2016-08-10 18:00:00,9810.559,0.0,84.95 -2016-08-10 19:00:00,9610.425,0.0,83.65 -2016-08-10 20:00:00,9548.958,0.0,83.82 -2016-08-10 21:00:00,9412.642,0.0,82.34 -2016-08-10 22:00:00,9037.8,0.0,83.23 -2016-08-10 23:00:00,8501.434,0.0,82.69 -2016-08-11 00:00:00,7962.067,0.0,80.79 -2016-08-11 01:00:00,7557.325,0.0,81.04 -2016-08-11 02:00:00,7289.233,0.0,81.08 -2016-08-11 03:00:00,7134.842,0.0,79.58 -2016-08-11 04:00:00,7105.117,0.0,79.41 -2016-08-11 05:00:00,7321.033,0.0,79.97 -2016-08-11 06:00:00,7802.967,0.0051,79.0 -2016-08-11 07:00:00,8465.142,0.0,79.77 -2016-08-11 08:00:00,8994.241,0.0,81.0 -2016-08-11 09:00:00,9446.5,0.0,82.75 -2016-08-11 10:00:00,9873.759,0.0,84.34 -2016-08-11 11:00:00,10204.14,0.0,87.45 -2016-08-11 12:00:00,10442.42,0.0,89.82 -2016-08-11 13:00:00,10647.02,0.0,90.32 -2016-08-11 14:00:00,10779.61,0.0,90.14 -2016-08-11 15:00:00,10886.84,0.0,90.59 -2016-08-11 16:00:00,10983.13,0.0,91.08 -2016-08-11 17:00:00,10932.22,0.0,91.1 -2016-08-11 18:00:00,10378.23,0.0,88.36 -2016-08-11 19:00:00,10196.17,0.0,86.12 -2016-08-11 20:00:00,10009.37,0.0,81.52 -2016-08-11 21:00:00,9773.491,0.0,83.76 -2016-08-11 22:00:00,9380.4,0.0,82.81 -2016-08-11 23:00:00,8853.175,0.0094,82.73 -2016-08-12 00:00:00,8208.358,0.0282,80.72 -2016-08-12 01:00:00,7545.617,0.0504,79.8 -2016-08-12 02:00:00,7216.133,0.0,75.16 -2016-08-12 03:00:00,7074.142,0.0,75.02 -2016-08-12 04:00:00,7039.05,0.0,76.46 -2016-08-12 05:00:00,7245.408,0.0169,75.9 -2016-08-12 06:00:00,7753.042,0.0,77.0 -2016-08-12 07:00:00,8374.059,0.0,77.7 -2016-08-12 08:00:00,8921.116,0.0,80.14 -2016-08-12 09:00:00,9466.45,0.0,82.0 -2016-08-12 10:00:00,9957.684,0.0,84.41 -2016-08-12 11:00:00,10342.04,0.0,87.23 -2016-08-12 12:00:00,10588.84,0.0,90.38 -2016-08-12 13:00:00,10659.17,0.0,91.87 -2016-08-12 14:00:00,10695.28,0.0,92.15 -2016-08-12 15:00:00,10771.56,0.0,92.63 -2016-08-12 16:00:00,10788.8,0.0,92.7 -2016-08-12 17:00:00,10724.52,0.0,92.49 -2016-08-12 18:00:00,10468.86,0.0,90.94 -2016-08-12 19:00:00,9996.342,0.0,88.48 -2016-08-12 20:00:00,9726.741,0.0,82.87 -2016-08-12 21:00:00,9533.108,0.0,81.83 -2016-08-12 22:00:00,9207.292,0.0,83.69 -2016-08-12 23:00:00,8757.875,0.0,83.05 -2016-08-13 00:00:00,8298.0,0.0,83.06 -2016-08-13 01:00:00,7914.4,0.0,81.53 -2016-08-13 02:00:00,7660.517,0.0,81.36 -2016-08-13 03:00:00,7517.683,0.0,80.58 -2016-08-13 04:00:00,7412.525,0.0,80.69 -2016-08-13 05:00:00,7431.667,0.0,80.29 -2016-08-13 06:00:00,7533.3,0.0,80.92 -2016-08-13 07:00:00,7904.042,0.0,81.75 -2016-08-13 08:00:00,8442.983,0.0,82.77 -2016-08-13 09:00:00,9022.975,0.0,86.12 -2016-08-13 10:00:00,9498.991,0.0,88.51 -2016-08-13 11:00:00,9857.725,0.0,92.11 -2016-08-13 12:00:00,10081.12,0.0,93.56 -2016-08-13 13:00:00,10149.22,0.0,94.66 -2016-08-13 14:00:00,10180.17,0.0,94.86 -2016-08-13 15:00:00,10219.74,0.0,93.6 -2016-08-13 16:00:00,10196.03,0.0,94.07 -2016-08-13 17:00:00,10159.84,0.0,90.76 -2016-08-13 18:00:00,10029.05,0.0,91.5 -2016-08-13 19:00:00,9856.842,0.0,89.8 -2016-08-13 20:00:00,9851.958,0.0,89.29 -2016-08-13 21:00:00,9771.717,0.0,89.91 -2016-08-13 22:00:00,9525.0,0.0,88.53 -2016-08-13 23:00:00,9114.616,0.0,88.0 -2016-08-14 00:00:00,8647.116,0.0,83.11 -2016-08-14 01:00:00,8207.908,0.0022,83.75 -2016-08-14 02:00:00,7911.683,0.0,83.7 -2016-08-14 03:00:00,7668.042,0.0,83.26 -2016-08-14 04:00:00,7531.45,0.0031,82.38 -2016-08-14 05:00:00,7506.9,0.0,83.23 -2016-08-14 06:00:00,7562.342,0.0,82.05 -2016-08-14 07:00:00,7842.183,0.0,81.73 -2016-08-14 08:00:00,8285.608,0.0,85.0 -2016-08-14 09:00:00,8724.842,0.0,87.39 -2016-08-14 10:00:00,9137.325,0.0,89.38 -2016-08-14 11:00:00,9478.5,0.0,90.48 -2016-08-14 12:00:00,9713.092,0.0,92.33 -2016-08-14 13:00:00,9852.625,0.0,92.65 -2016-08-14 14:00:00,9924.0,0.0,93.67 -2016-08-14 15:00:00,10019.74,0.0,93.12 -2016-08-14 16:00:00,10046.98,0.0,93.26 -2016-08-14 17:00:00,10046.63,0.0,90.48 -2016-08-14 18:00:00,10032.32,0.0,90.9 -2016-08-14 19:00:00,9920.134,0.0,89.42 -2016-08-14 20:00:00,9708.967,0.002,83.52 -2016-08-14 21:00:00,9638.8,0.0,80.96 -2016-08-14 22:00:00,9388.658,0.0,82.57 -2016-08-14 23:00:00,8963.684,0.0,81.26 -2016-08-15 00:00:00,8520.191,0.0,79.5 -2016-08-15 01:00:00,8147.108,0.0,79.55 -2016-08-15 02:00:00,7887.117,0.0,78.81 -2016-08-15 03:00:00,7720.925,0.0,78.76 -2016-08-15 04:00:00,7652.908,0.0,77.38 -2016-08-15 05:00:00,7793.2,0.0,76.96 -2016-08-15 06:00:00,8119.058,0.0,77.37 -2016-08-15 07:00:00,8647.092,0.0,78.26 -2016-08-15 08:00:00,9240.717,0.0,78.98 -2016-08-15 09:00:00,9698.075,0.0,81.98 -2016-08-15 10:00:00,10005.38,0.0,83.48 -2016-08-15 11:00:00,10154.93,0.0,86.36 -2016-08-15 12:00:00,10273.63,0.0,88.26 -2016-08-15 13:00:00,10364.82,0.0,89.32 -2016-08-15 14:00:00,10403.56,0.0,90.08 -2016-08-15 15:00:00,10529.0,0.0,90.22 -2016-08-15 16:00:00,10598.14,0.0,90.28 -2016-08-15 17:00:00,10542.47,0.0,89.27 -2016-08-15 18:00:00,10280.98,0.0,87.96 -2016-08-15 19:00:00,10018.15,0.0,85.16 -2016-08-15 20:00:00,9956.417,0.0,83.37 -2016-08-15 21:00:00,9810.842,0.0,80.98 -2016-08-15 22:00:00,9463.9,0.0,81.23 -2016-08-15 23:00:00,8911.467,0.0,81.27 -2016-08-16 00:00:00,8370.691,0.0,79.3 -2016-08-16 01:00:00,7967.9,0.0111,79.39 -2016-08-16 02:00:00,7727.933,0.0029,78.7 -2016-08-16 03:00:00,7565.808,0.0,80.18 -2016-08-16 04:00:00,7503.225,0.0,79.35 -2016-08-16 05:00:00,7684.9,0.0,77.65 -2016-08-16 06:00:00,8113.95,0.0,78.15 -2016-08-16 07:00:00,8715.767,0.0025,79.26 -2016-08-16 08:00:00,9282.441,0.0,80.48 -2016-08-16 09:00:00,9737.658,0.0,83.1 -2016-08-16 10:00:00,10068.91,0.0,84.92 -2016-08-16 11:00:00,10282.12,0.0,87.2 -2016-08-16 12:00:00,10420.51,0.0,87.2 -2016-08-16 13:00:00,10502.08,0.0,86.46 -2016-08-16 14:00:00,10574.33,0.0,87.51 -2016-08-16 15:00:00,10679.49,0.0,87.1 -2016-08-16 16:00:00,10773.66,0.0,87.03 -2016-08-16 17:00:00,10776.77,0.0,86.96 -2016-08-16 18:00:00,10527.47,0.0,85.19 -2016-08-16 19:00:00,10312.36,0.0,84.01 -2016-08-16 20:00:00,10274.77,0.0,82.75 -2016-08-16 21:00:00,10123.67,0.0,83.07 -2016-08-16 22:00:00,9766.917,0.0,82.03 -2016-08-16 23:00:00,9247.634,0.0,82.42 -2016-08-17 00:00:00,8714.384,0.0,82.1 -2016-08-17 01:00:00,8168.742,0.0,82.63 -2016-08-17 02:00:00,7696.65,0.0,80.35 -2016-08-17 03:00:00,7512.983,0.0,78.23 -2016-08-17 04:00:00,7440.533,0.0,78.04 -2016-08-17 05:00:00,7584.767,0.0,77.02 -2016-08-17 06:00:00,8017.808,0.0,77.32 -2016-08-17 07:00:00,8523.316,0.0,77.81 -2016-08-17 08:00:00,8973.108,0.0,78.82 -2016-08-17 09:00:00,9231.658,0.0,80.15 -2016-08-17 10:00:00,9345.592,0.0,80.7 -2016-08-17 11:00:00,9417.45,0.0,81.94 -2016-08-17 12:00:00,9488.225,0.0,83.18 -2016-08-17 13:00:00,9542.275,0.0,83.13 -2016-08-17 14:00:00,9634.566,0.0,84.17 -2016-08-17 15:00:00,9755.042,0.0,85.72 -2016-08-17 16:00:00,9814.208,0.0,85.86 -2016-08-17 17:00:00,9722.092,0.0,83.91 -2016-08-17 18:00:00,9373.875,0.0,83.18 -2016-08-17 19:00:00,9104.208,0.0,82.06 -2016-08-17 20:00:00,9032.475,0.0,79.63 -2016-08-17 21:00:00,8906.017,0.0,79.48 -2016-08-17 22:00:00,8581.458,0.0,80.2 -2016-08-17 23:00:00,8119.433,0.0,79.42 -2016-08-18 00:00:00,7605.375,0.0,78.54 -2016-08-18 01:00:00,7234.858,0.0,78.8 -2016-08-18 02:00:00,6978.275,0.0,77.65 -2016-08-18 03:00:00,6816.625,0.0287,77.44 -2016-08-18 04:00:00,6794.133,0.0722,76.98 -2016-08-18 05:00:00,6945.75,0.0026,75.6 -2016-08-18 06:00:00,7405.617,0.0,74.83 -2016-08-18 07:00:00,7890.95,0.0,75.49 -2016-08-18 08:00:00,8285.208,0.0,76.06 -2016-08-18 09:00:00,8536.241,0.0,76.39 -2016-08-18 10:00:00,8740.392,0.0,77.01 -2016-08-18 11:00:00,8805.35,0.0,79.26 -2016-08-18 12:00:00,8890.5,0.0,80.35 -2016-08-18 13:00:00,9029.3,0.0,81.64 -2016-08-18 14:00:00,9193.467,0.0,82.99 -2016-08-18 15:00:00,9314.842,0.0,82.31 -2016-08-18 16:00:00,9453.1,0.0,83.87 -2016-08-18 17:00:00,9490.467,0.0,83.98 -2016-08-18 18:00:00,9240.333,0.0,83.65 -2016-08-18 19:00:00,8981.816,0.0,82.98 -2016-08-18 20:00:00,8860.333,0.0,80.91 -2016-08-18 21:00:00,8737.658,0.0,79.69 -2016-08-18 22:00:00,8418.816,0.0037,77.97 -2016-08-18 23:00:00,7959.675,0.0,77.7 -2016-08-19 00:00:00,7469.717,0.0,76.76 -2016-08-19 01:00:00,7100.55,0.0,77.27 -2016-08-19 02:00:00,6845.475,0.0,75.39 -2016-08-19 03:00:00,6677.092,0.0,76.3 -2016-08-19 04:00:00,6625.5,0.0,74.92 -2016-08-19 05:00:00,6787.125,0.0,73.86 -2016-08-19 06:00:00,7240.1,0.0,74.98 -2016-08-19 07:00:00,7783.208,0.0,75.26 -2016-08-19 08:00:00,8313.85,0.0,77.41 -2016-08-19 09:00:00,8749.75,0.0,78.91 -2016-08-19 10:00:00,9034.066,0.0,81.61 -2016-08-19 11:00:00,9238.783,0.0,83.49 -2016-08-19 12:00:00,9328.667,0.0,83.89 -2016-08-19 13:00:00,9420.741,0.0,84.87 -2016-08-19 14:00:00,9497.259,0.0,84.89 -2016-08-19 15:00:00,9548.691,0.0,86.23 -2016-08-19 16:00:00,9622.542,0.0,85.72 -2016-08-19 17:00:00,9494.583,0.0,84.27 -2016-08-19 18:00:00,9139.934,0.0,84.14 -2016-08-19 19:00:00,8847.483,0.0,81.7 -2016-08-19 20:00:00,8691.2,0.0131,79.63 -2016-08-19 21:00:00,8489.7,0.0025,79.63 -2016-08-19 22:00:00,8206.825,0.0024,77.96 -2016-08-19 23:00:00,7814.4,0.0083,76.64 -2016-08-20 00:00:00,7391.883,0.0,77.34 -2016-08-20 01:00:00,7049.417,0.0,76.71 -2016-08-20 02:00:00,6798.317,0.0,76.98 -2016-08-20 03:00:00,6620.258,0.0,76.27 -2016-08-20 04:00:00,6500.267,0.0,73.53 -2016-08-20 05:00:00,6495.333,0.0,73.01 -2016-08-20 06:00:00,6544.808,0.0,72.17 -2016-08-20 07:00:00,6823.625,0.0,74.31 -2016-08-20 08:00:00,7269.625,0.0,76.37 -2016-08-20 09:00:00,7689.258,0.0,80.31 -2016-08-20 10:00:00,8045.283,0.0,81.8 -2016-08-20 11:00:00,8274.1,0.0,82.95 -2016-08-20 12:00:00,8295.042,0.0768,82.69 -2016-08-20 13:00:00,8266.292,0.0026,83.57 -2016-08-20 14:00:00,8255.009,0.0025,80.52 -2016-08-20 15:00:00,8137.025,0.0,80.17 -2016-08-20 16:00:00,8213.783,0.0,81.37 -2016-08-20 17:00:00,8201.941,0.0,80.41 -2016-08-20 18:00:00,8076.408,0.0,79.68 -2016-08-20 19:00:00,7881.375,0.0,78.65 -2016-08-20 20:00:00,7879.975,0.0039,77.76 -2016-08-20 21:00:00,7819.292,0.0,77.91 -2016-08-20 22:00:00,7634.617,0.0,77.6 -2016-08-20 23:00:00,7392.442,0.0,76.99 -2016-08-21 00:00:00,7091.333,0.0,76.79 -2016-08-21 01:00:00,6821.742,0.0,76.66 -2016-08-21 02:00:00,6608.917,0.0,76.24 -2016-08-21 03:00:00,6473.267,0.0,74.9 -2016-08-21 04:00:00,6408.975,0.0,76.07 -2016-08-21 05:00:00,6392.183,0.0,75.2 -2016-08-21 06:00:00,6388.975,0.0,75.97 -2016-08-21 07:00:00,6588.517,0.0,76.9 -2016-08-21 08:00:00,6958.758,0.0038,78.22 -2016-08-21 09:00:00,7397.242,0.0,79.55 -2016-08-21 10:00:00,7781.958,0.0,81.01 -2016-08-21 11:00:00,8045.117,0.0,82.59 -2016-08-21 12:00:00,8192.75,0.0,84.36 -2016-08-21 13:00:00,8280.491,0.0,85.3 -2016-08-21 14:00:00,8319.0,0.0,85.37 -2016-08-21 15:00:00,8282.708,0.0037,84.03 -2016-08-21 16:00:00,8191.7,0.0034,82.51 -2016-08-21 17:00:00,8175.342,0.0282,80.3 -2016-08-21 18:00:00,8147.875,0.0282,79.19 -2016-08-21 19:00:00,8135.283,0.0025,76.68 -2016-08-21 20:00:00,8258.0,0.0035,77.07 -2016-08-21 21:00:00,8166.95,0.0,76.75 -2016-08-21 22:00:00,7949.542,0.0,77.74 -2016-08-21 23:00:00,7594.992,0.0,75.76 -2016-08-22 00:00:00,7137.483,0.0024,74.72 -2016-08-22 01:00:00,6749.283,0.0,73.65 -2016-08-22 02:00:00,6472.367,0.0,72.11 -2016-08-22 03:00:00,6276.933,0.0,71.34 -2016-08-22 04:00:00,6213.725,0.0,71.07 -2016-08-22 05:00:00,6318.292,0.0,69.32 -2016-08-22 06:00:00,6630.525,0.0,68.58 -2016-08-22 07:00:00,7093.233,0.0,69.7 -2016-08-22 08:00:00,7542.4,0.0,70.51 -2016-08-22 09:00:00,7850.067,0.0,72.24 -2016-08-22 10:00:00,8001.292,0.0,74.65 -2016-08-22 11:00:00,8092.95,0.0,75.74 -2016-08-22 12:00:00,8145.392,0.0,76.93 -2016-08-22 13:00:00,8185.325,0.0,78.26 -2016-08-22 14:00:00,8198.134,0.0,78.45 -2016-08-22 15:00:00,8217.85,0.0,78.72 -2016-08-22 16:00:00,8205.5,0.0,78.0 -2016-08-22 17:00:00,8110.725,0.0,76.62 -2016-08-22 18:00:00,7718.925,0.0,75.79 -2016-08-22 19:00:00,7357.95,0.0,73.96 -2016-08-22 20:00:00,7176.058,0.0,71.57 -2016-08-22 21:00:00,6945.15,0.0,70.21 -2016-08-22 22:00:00,6584.858,0.0,68.45 -2016-08-22 23:00:00,6142.975,0.0,67.08 -2016-08-23 00:00:00,5723.35,0.0,67.13 -2016-08-23 01:00:00,5418.167,0.0,65.33 -2016-08-23 02:00:00,5211.425,0.0,64.39 -2016-08-23 03:00:00,5105.583,0.0,63.79 -2016-08-23 04:00:00,5090.133,0.0,63.25 -2016-08-23 05:00:00,5264.2,0.0,61.06 -2016-08-23 06:00:00,5683.025,0.0,62.43 -2016-08-23 07:00:00,6217.408,0.0,64.17 -2016-08-23 08:00:00,6734.8,0.0,67.39 -2016-08-23 09:00:00,7092.408,0.0,71.62 -2016-08-23 10:00:00,7334.825,0.0,73.62 -2016-08-23 11:00:00,7495.192,0.0,76.12 -2016-08-23 12:00:00,7625.675,0.0,77.86 -2016-08-23 13:00:00,7744.142,0.0,79.87 -2016-08-23 14:00:00,7863.533,0.0,80.17 -2016-08-23 15:00:00,8000.592,0.0,81.29 -2016-08-23 16:00:00,8112.117,0.0,81.48 -2016-08-23 17:00:00,8095.2,0.0,81.28 -2016-08-23 18:00:00,7805.975,0.0,78.87 -2016-08-23 19:00:00,7518.208,0.0,77.44 -2016-08-23 20:00:00,7447.375,0.0,75.63 -2016-08-23 21:00:00,7289.917,0.0,73.58 -2016-08-23 22:00:00,6989.033,0.0,72.67 -2016-08-23 23:00:00,6558.8,0.0,72.8 -2016-08-24 00:00:00,6101.108,0.0,70.99 -2016-08-24 01:00:00,5775.683,0.0,70.22 -2016-08-24 02:00:00,5558.2,0.0,68.96 -2016-08-24 03:00:00,5428.25,0.0,69.01 -2016-08-24 04:00:00,5401.908,0.0,68.28 -2016-08-24 05:00:00,5585.842,0.0,67.27 -2016-08-24 06:00:00,6034.825,0.0,67.08 -2016-08-24 07:00:00,6620.258,0.0,70.33 -2016-08-24 08:00:00,7182.533,0.0,72.76 -2016-08-24 09:00:00,7607.083,0.0,77.49 -2016-08-24 10:00:00,7932.433,0.0,79.94 -2016-08-24 11:00:00,8165.833,0.0,83.37 -2016-08-24 12:00:00,8358.3,0.0,84.94 -2016-08-24 13:00:00,8533.392,0.0,86.28 -2016-08-24 14:00:00,8659.892,0.0,86.44 -2016-08-24 15:00:00,8794.009,0.0,86.89 -2016-08-24 16:00:00,8860.759,0.0,84.78 -2016-08-24 17:00:00,8804.017,0.0,82.7 -2016-08-24 18:00:00,8427.733,0.0,81.02 -2016-08-24 19:00:00,8123.008,0.0,79.31 -2016-08-24 20:00:00,8012.442,0.0,76.89 -2016-08-24 21:00:00,7841.233,0.0,76.11 -2016-08-24 22:00:00,7491.383,0.0,75.18 -2016-08-24 23:00:00,6982.45,0.0,75.57 -2016-08-25 00:00:00,6526.392,0.0,73.23 -2016-08-25 01:00:00,6153.317,0.0,73.28 -2016-08-25 02:00:00,5906.817,0.0,71.26 -2016-08-25 03:00:00,5769.5,0.0,70.92 -2016-08-25 04:00:00,5744.317,0.0,71.8 -2016-08-25 05:00:00,5928.033,0.0,70.07 -2016-08-25 06:00:00,6350.733,0.0,69.37 -2016-08-25 07:00:00,6914.267,0.0,71.73 -2016-08-25 08:00:00,7458.542,0.0,74.03 -2016-08-25 09:00:00,7891.542,0.0,77.11 -2016-08-25 10:00:00,8196.333,0.0,80.55 -2016-08-25 11:00:00,8417.225,0.0,82.41 -2016-08-25 12:00:00,8573.75,0.0,83.44 -2016-08-25 13:00:00,8705.75,0.0,84.98 -2016-08-25 14:00:00,8702.208,0.0,85.52 -2016-08-25 15:00:00,8871.708,0.0,84.96 -2016-08-25 16:00:00,8897.792,0.008,81.9 -2016-08-25 17:00:00,8781.042,0.0,80.33 -2016-08-25 18:00:00,8589.792,0.0,78.83 -2016-08-25 19:00:00,8482.858,0.0028,79.68 -2016-08-25 20:00:00,8495.875,0.0,80.24 -2016-08-25 21:00:00,8374.441,0.0,80.29 -2016-08-25 22:00:00,8015.25,0.0,79.55 -2016-08-25 23:00:00,7552.017,, -2016-08-26 00:00:00,7113.85,0.0,79.02 -2016-08-26 01:00:00,6764.025,0.0,77.87 -2016-08-26 02:00:00,6528.567,0.0,77.75 -2016-08-26 03:00:00,6369.092,0.0,76.85 -2016-08-26 04:00:00,6337.525,0.0,75.67 -2016-08-26 05:00:00,6532.225,0.0,76.29 -2016-08-26 06:00:00,6999.558,0.0,77.02 -2016-08-26 07:00:00,7577.792,0.0,75.09 -2016-08-26 08:00:00,8094.442,0.0,76.68 -2016-08-26 09:00:00,8657.208,0.0,78.06 -2016-08-26 10:00:00,9110.083,0.0,80.78 -2016-08-26 11:00:00,9465.491,0.0,84.2 -2016-08-26 12:00:00,9648.866,0.0,87.73 -2016-08-26 13:00:00,9797.85,0.0,89.55 -2016-08-26 14:00:00,9908.934,0.0,89.89 -2016-08-26 15:00:00,9964.964,0.0,90.48 -2016-08-26 16:00:00,10030.0,0.0,89.88 -2016-08-26 17:00:00,9964.792,0.0,90.31 -2016-08-26 18:00:00,9554.65,, -2016-08-26 19:00:00,9181.458,0.0,88.57 -2016-08-26 20:00:00,8992.616,0.0,85.51 -2016-08-26 21:00:00,8730.65,0.0,83.98 -2016-08-26 22:00:00,8353.083,0.0,82.96 -2016-08-26 23:00:00,7877.2,0.0,80.39 -2016-08-27 00:00:00,7377.583,0.0,79.99 -2016-08-27 01:00:00,6987.342,0.0,77.91 -2016-08-27 02:00:00,6677.208,0.0,76.93 -2016-08-27 03:00:00,6440.95,0.0,75.77 -2016-08-27 04:00:00,6278.283,0.0,74.44 -2016-08-27 05:00:00,6221.308,0.0,73.73 -2016-08-27 06:00:00,6265.508,0.0,73.13 -2016-08-27 07:00:00,6494.908,0.0,72.72 -2016-08-27 08:00:00,6918.933,0.0,74.82 -2016-08-27 09:00:00,7350.0,0.0,77.58 -2016-08-27 10:00:00,7688.475,0.0,79.9 -2016-08-27 11:00:00,7927.617,0.0,83.09 -2016-08-27 12:00:00,8084.208,0.0,85.23 -2016-08-27 13:00:00,8128.75,0.0,86.7 -2016-08-27 14:00:00,8138.892,0.0,87.5 -2016-08-27 15:00:00,8142.292,0.0,87.78 -2016-08-27 16:00:00,8104.375,0.0,88.52 -2016-08-27 17:00:00,8027.008,0.0,86.27 -2016-08-27 18:00:00,7849.05,0.0,84.89 -2016-08-27 19:00:00,7660.15,0.0,82.31 -2016-08-27 20:00:00,7650.083,0.0,78.88 -2016-08-27 21:00:00,7534.725,0.0,79.0 -2016-08-27 22:00:00,7329.308,0.0,76.14 -2016-08-27 23:00:00,7077.55,0.0,76.89 -2016-08-28 00:00:00,6752.833,0.0,76.5 -2016-08-28 01:00:00,6500.717,0.0,73.98 -2016-08-28 02:00:00,6269.25,0.0603,74.18 -2016-08-28 03:00:00,6123.867,0.4282,73.52 -2016-08-28 04:00:00,6057.8,0.0,73.14 -2016-08-28 05:00:00,6043.5,0.0,70.85 -2016-08-28 06:00:00,6077.017,0.0,72.47 -2016-08-28 07:00:00,6273.433,0.0,71.09 -2016-08-28 08:00:00,6654.667,0.0,74.01 -2016-08-28 09:00:00,7030.55,0.0,75.99 -2016-08-28 10:00:00,7380.9,0.0,79.45 -2016-08-28 11:00:00,7629.417,0.0,82.56 -2016-08-28 12:00:00,7758.85,0.0,84.73 -2016-08-28 13:00:00,7871.308,0.0,87.09 -2016-08-28 14:00:00,7937.708,0.0,86.96 -2016-08-28 15:00:00,8025.375,0.0,87.2 -2016-08-28 16:00:00,8022.242,0.0,85.94 -2016-08-28 17:00:00,7965.467,0.0,85.03 -2016-08-28 18:00:00,7846.117,0.0,82.74 -2016-08-28 19:00:00,7758.192,0.0,80.78 -2016-08-28 20:00:00,7862.517,0.0,78.8 -2016-08-28 21:00:00,7818.058,0.0,76.55 -2016-08-28 22:00:00,7627.558,0.0,76.59 -2016-08-28 23:00:00,7331.1,0.0,75.85 -2016-08-29 00:00:00,6986.358,0.0,75.38 -2016-08-29 01:00:00,6703.917,0.0,74.94 -2016-08-29 02:00:00,6491.75,0.0,75.2 -2016-08-29 03:00:00,6367.458,0.0,74.35 -2016-08-29 04:00:00,6360.392,0.0034,74.61 -2016-08-29 05:00:00,6574.908,0.0,73.95 -2016-08-29 06:00:00,6997.675,0.0,74.18 -2016-08-29 07:00:00,7499.892,0.0,74.04 -2016-08-29 08:00:00,8002.675,0.0,75.53 -2016-08-29 09:00:00,8521.85,0.0,77.07 -2016-08-29 10:00:00,8980.667,0.0,80.3 -2016-08-29 11:00:00,9338.741,0.0,83.55 -2016-08-29 12:00:00,9546.475,0.0,87.67 -2016-08-29 13:00:00,9700.717,0.0,89.34 -2016-08-29 14:00:00,9764.325,0.0,90.14 -2016-08-29 15:00:00,9828.4,0.0,90.9 -2016-08-29 16:00:00,9849.875,0.0,90.68 -2016-08-29 17:00:00,9774.35,0.0,89.41 -2016-08-29 18:00:00,9416.833,0.0,88.18 -2016-08-29 19:00:00,9108.767,0.0,86.48 -2016-08-29 20:00:00,8968.108,0.0,83.5 -2016-08-29 21:00:00,8690.8,0.0,82.23 -2016-08-29 22:00:00,8218.616,0.0,80.4 -2016-08-29 23:00:00,7618.0,0.0,78.39 -2016-08-30 00:00:00,7051.817,0.0,77.48 -2016-08-30 01:00:00,6636.25,0.0,75.71 -2016-08-30 02:00:00,6345.783,0.0,75.03 -2016-08-30 03:00:00,6164.725,0.0,73.24 -2016-08-30 04:00:00,6112.775,0.0,71.85 -2016-08-30 05:00:00,6276.617,0.0,70.66 -2016-08-30 06:00:00,6655.025,0.0,70.16 -2016-08-30 07:00:00,7171.5,0.0,70.18 -2016-08-30 08:00:00,7702.35,0.0,71.54 -2016-08-30 09:00:00,8100.958,0.0,72.98 -2016-08-30 10:00:00,8397.667,0.0,75.7 -2016-08-30 11:00:00,8622.434,0.0,78.31 -2016-08-30 12:00:00,8777.934,0.0,80.68 -2016-08-30 13:00:00,8909.941,0.0,83.14 -2016-08-30 14:00:00,9010.575,0.0,83.3 -2016-08-30 15:00:00,9110.233,0.0,82.54 -2016-08-30 16:00:00,9169.259,0.0,84.62 -2016-08-30 17:00:00,9124.158,0.0,83.67 -2016-08-30 18:00:00,8770.475,0.0,81.87 -2016-08-30 19:00:00,8505.833,0.0,80.27 -2016-08-30 20:00:00,8436.542,0.0,77.97 -2016-08-30 21:00:00,8258.592,0.0,75.21 -2016-08-30 22:00:00,7955.208,0.0,75.55 -2016-08-30 23:00:00,7506.317,0.0,75.19 -2016-08-31 00:00:00,7050.625,0.0,75.46 -2016-08-31 01:00:00,6741.167,0.0,74.42 -2016-08-31 02:00:00,6527.575,0.0,73.77 -2016-08-31 03:00:00,6407.508,0.0,74.18 -2016-08-31 04:00:00,6394.625,0.0,74.13 -2016-08-31 05:00:00,6620.542,0.0,74.15 -2016-08-31 06:00:00,7119.592,0.0,73.61 -2016-08-31 07:00:00,7679.5,0.0,75.07 -2016-08-31 08:00:00,8173.067,0.0,75.61 -2016-08-31 09:00:00,8592.517,0.0,77.91 -2016-08-31 10:00:00,8888.3,0.0,78.42 -2016-08-31 11:00:00,9119.3,0.0,81.56 -2016-08-31 12:00:00,9284.884,0.0,84.17 -2016-08-31 13:00:00,9408.616,0.0,85.88 -2016-08-31 14:00:00,9481.467,0.0,87.01 -2016-08-31 15:00:00,9543.366,0.0,87.39 -2016-08-31 16:00:00,9567.241,0.0,86.84 -2016-08-31 17:00:00,9441.866,0.0,85.88 -2016-08-31 18:00:00,9069.475,0.0,83.42 -2016-08-31 19:00:00,8874.55,0.0,81.52 -2016-08-31 20:00:00,8795.366,0.0,79.24 -2016-08-31 21:00:00,8597.358,0.0,79.23 -2016-08-31 22:00:00,8244.658,0.0,79.0 -2016-08-31 23:00:00,7713.608,0.0,78.97 -2016-09-01 00:00:00,7208.792,0.0,78.39 -2016-09-01 01:00:00,6840.683,0.0155,78.15 -2016-09-01 02:00:00,6603.108,0.0,77.09 -2016-09-01 03:00:00,6468.25,0.0115,76.38 -2016-09-01 04:00:00,6402.625,0.0262,74.94 -2016-09-01 05:00:00,6539.267,0.0181,74.31 -2016-09-01 06:00:00,7024.208,0.0045,73.3 -2016-09-01 07:00:00,7504.333,0.0105,72.37 -2016-09-01 08:00:00,7865.342,0.0067,73.16 -2016-09-01 09:00:00,8132.533,0.0565,71.89 -2016-09-01 10:00:00,8271.5,0.0129,73.17 -2016-09-01 11:00:00,8359.625,0.0,72.66 -2016-09-01 12:00:00,8479.775,0.0,74.83 -2016-09-01 13:00:00,8665.634,0.0,76.85 -2016-09-01 14:00:00,8636.55,0.0867,78.65 -2016-09-01 15:00:00,8468.233,0.017,76.78 -2016-09-01 16:00:00,8418.375,0.0,74.41 -2016-09-01 17:00:00,8363.059,0.0,73.59 -2016-09-01 18:00:00,8108.967,0.0,74.37 -2016-09-01 19:00:00,7980.333,0.0,74.45 -2016-09-01 20:00:00,7913.617,0.0,72.54 -2016-09-01 21:00:00,7753.683,0.0,72.86 -2016-09-01 22:00:00,7414.733,0.0,73.19 -2016-09-01 23:00:00,6817.558,0.0,73.16 -2016-09-02 00:00:00,6261.35,0.0,71.62 -2016-09-02 01:00:00,5896.0,0.0,69.67 -2016-09-02 02:00:00,5633.467,0.0,69.09 -2016-09-02 03:00:00,5475.492,0.0,68.22 -2016-09-02 04:00:00,5411.833,0.0,66.55 -2016-09-02 05:00:00,5558.633,0.0,66.27 -2016-09-02 06:00:00,5967.158,0.0,66.15 -2016-09-02 07:00:00,6420.408,0.0,64.91 -2016-09-02 08:00:00,6891.017,0.0,66.3 -2016-09-02 09:00:00,7253.8,0.0,68.72 -2016-09-02 10:00:00,7471.133,0.0,71.11 -2016-09-02 11:00:00,7626.517,0.0,73.54 -2016-09-02 12:00:00,7751.908,0.0,75.8 -2016-09-02 13:00:00,7851.042,0.0,77.56 -2016-09-02 14:00:00,7903.708,0.0,79.85 -2016-09-02 15:00:00,7885.958,0.0,80.62 -2016-09-02 16:00:00,7900.525,0.0,80.83 -2016-09-02 17:00:00,7850.017,0.0,80.23 -2016-09-02 18:00:00,7496.308,0.0,79.19 -2016-09-02 19:00:00,7297.133,0.0,78.26 -2016-09-02 20:00:00,7166.917,0.0,75.49 -2016-09-02 21:00:00,6954.75,0.0,73.99 -2016-09-02 22:00:00,6657.708,0.0,72.82 -2016-09-02 23:00:00,6294.25,0.0,73.05 -2016-09-03 00:00:00,5919.633,0.0,72.11 -2016-09-03 01:00:00,5648.55,0.0,70.42 -2016-09-03 02:00:00,5448.208,0.0,69.87 -2016-09-03 03:00:00,5322.825,0.0,69.2 -2016-09-03 04:00:00,5252.892,0.0,68.08 -2016-09-03 05:00:00,5281.508,0.0,67.93 -2016-09-03 06:00:00,5395.8,0.0,68.15 -2016-09-03 07:00:00,5596.833,0.0,67.77 -2016-09-03 08:00:00,5867.583,0.0,68.71 -2016-09-03 09:00:00,6100.083,0.0,69.47 -2016-09-03 10:00:00,6288.917,0.0,70.41 -2016-09-03 11:00:00,6379.908,0.0,71.29 -2016-09-03 12:00:00,6400.442,0.0,71.94 -2016-09-03 13:00:00,6353.433,0.0,73.06 -2016-09-03 14:00:00,6296.133,0.0,73.66 -2016-09-03 15:00:00,6297.767,0.0,74.01 -2016-09-03 16:00:00,6304.45,0.0,74.49 -2016-09-03 17:00:00,6275.975,0.0,74.38 -2016-09-03 18:00:00,6225.95,0.0,74.4 -2016-09-03 19:00:00,6175.983,0.0,72.25 -2016-09-03 20:00:00,6180.267,0.0,70.07 -2016-09-03 21:00:00,6051.75,0.0,69.81 -2016-09-03 22:00:00,5858.133,0.0,69.43 -2016-09-03 23:00:00,5645.733,0.0,68.12 -2016-09-04 00:00:00,5410.367,0.0,67.26 -2016-09-04 01:00:00,5174.55,0.0,66.35 -2016-09-04 02:00:00,4981.992,0.0,66.15 -2016-09-04 03:00:00,4859.808,0.0,65.67 -2016-09-04 04:00:00,4763.95,0.0,64.77 -2016-09-04 05:00:00,4733.225,0.0,63.96 -2016-09-04 06:00:00,4754.808,0.0,63.62 -2016-09-04 07:00:00,4859.942,0.0,63.33 -2016-09-04 08:00:00,5133.883,0.0,65.19 -2016-09-04 09:00:00,5402.342,0.0,67.74 -2016-09-04 10:00:00,5645.108,0.0,70.18 -2016-09-04 11:00:00,5848.283,0.0,71.87 -2016-09-04 12:00:00,6013.875,0.0,73.56 -2016-09-04 13:00:00,6107.625,0.0,76.61 -2016-09-04 14:00:00,6155.567,0.0,78.42 -2016-09-04 15:00:00,6218.875,0.0,79.4 -2016-09-04 16:00:00,6266.508,0.0,80.38 -2016-09-04 17:00:00,6337.333,0.0,79.75 -2016-09-04 18:00:00,6311.217,0.0,78.26 -2016-09-04 19:00:00,6296.042,0.0,77.33 -2016-09-04 20:00:00,6366.3,0.0,74.85 -2016-09-04 21:00:00,6296.325,0.0,73.95 -2016-09-04 22:00:00,6090.95,0.0,72.05 -2016-09-04 23:00:00,5796.192,0.0,71.85 -2016-09-05 00:00:00,5467.433,0.0,70.74 -2016-09-05 01:00:00,5187.067,0.0,69.29 -2016-09-05 02:00:00,4968.617,0.0,67.55 -2016-09-05 03:00:00,4834.133,0.0,66.15 -2016-09-05 04:00:00,4763.683,0.0,65.35 -2016-09-05 05:00:00,4787.758,0.0,64.86 -2016-09-05 06:00:00,4916.2,0.0,64.37 -2016-09-05 07:00:00,5047.925,0.0,63.12 -2016-09-05 08:00:00,5255.225,0.0,64.91 -2016-09-05 09:00:00,5505.692,0.0,67.24 -2016-09-05 10:00:00,5719.392,0.0,69.35 -2016-09-05 11:00:00,5905.767,0.0,71.3 -2016-09-05 12:00:00,6028.883,0.0,73.21 -2016-09-05 13:00:00,6195.617,0.0,75.81 -2016-09-05 14:00:00,6405.908,0.0,77.66 -2016-09-05 15:00:00,6517.183,0.0,81.06 -2016-09-05 16:00:00,6709.733,0.0,82.54 -2016-09-05 17:00:00,6787.983,0.0,82.33 -2016-09-05 18:00:00,6786.667,0.0,81.95 -2016-09-05 19:00:00,6826.958,0.0,81.3 -2016-09-05 20:00:00,6925.2,0.0,78.61 -2016-09-05 21:00:00,6870.058,0.0,78.17 -2016-09-05 22:00:00,6639.225,0.007,77.38 -2016-09-05 23:00:00,6278.092,0.0043,77.41 -2016-09-06 00:00:00,5939.967,0.0,76.51 -2016-09-06 01:00:00,5674.692,0.0,75.45 -2016-09-06 02:00:00,5486.3,0.0,74.46 -2016-09-06 03:00:00,5390.008,0.0,72.95 -2016-09-06 04:00:00,5394.283,0.0,73.6 -2016-09-06 05:00:00,5605.35,0.0,72.44 -2016-09-06 06:00:00,6105.258,0.0,71.69 -2016-09-06 07:00:00,6652.65,0.0,72.25 -2016-09-06 08:00:00,7117.017,0.007,72.37 -2016-09-06 09:00:00,7457.108,0.0,72.55 -2016-09-06 10:00:00,7743.783,0.0,73.67 -2016-09-06 11:00:00,7862.392,0.0,75.98 -2016-09-06 12:00:00,7986.508,0.0,76.58 -2016-09-06 13:00:00,8137.9,0.0,77.92 -2016-09-06 14:00:00,8192.325,0.0,79.45 -2016-09-06 15:00:00,8174.183,0.0031,79.22 -2016-09-06 16:00:00,8156.625,0.0,79.27 -2016-09-06 17:00:00,8128.625,0.0,78.13 -2016-09-06 18:00:00,7921.492,0.0,77.23 -2016-09-06 19:00:00,7838.567,0.0,78.38 -2016-09-06 20:00:00,7725.208,0.0024,77.04 -2016-09-06 21:00:00,7487.908,0.0,75.98 -2016-09-06 22:00:00,7107.892,0.0,75.19 -2016-09-06 23:00:00,6624.767,0.006,73.16 -2016-09-07 00:00:00,6180.892,0.0,71.52 -2016-09-07 01:00:00,5862.467,0.0,71.33 -2016-09-07 02:00:00,5662.608,0.0,70.68 -2016-09-07 03:00:00,5566.108,0.0,71.13 -2016-09-07 04:00:00,5568.683,0.0,70.95 -2016-09-07 05:00:00,5798.342,0.0,71.0 -2016-09-07 06:00:00,6345.383,0.0,70.95 -2016-09-07 07:00:00,6958.208,0.0,71.64 -2016-09-07 08:00:00,7454.783,0.0,72.24 -2016-09-07 09:00:00,7773.558,0.0,73.37 -2016-09-07 10:00:00,7994.492,0.0,75.02 -2016-09-07 11:00:00,8257.65,0.0,76.49 -2016-09-07 12:00:00,8529.525,0.0,78.54 -2016-09-07 13:00:00,8717.991,0.0,81.28 -2016-09-07 14:00:00,8750.75,0.0,83.34 -2016-09-07 15:00:00,8792.267,0.0,84.5 -2016-09-07 16:00:00,8946.9,0.0,83.9 -2016-09-07 17:00:00,8966.833,0.0,83.82 -2016-09-07 18:00:00,8638.542,0.0,83.21 -2016-09-07 19:00:00,8434.908,0.0,80.31 -2016-09-07 20:00:00,8358.592,0.0021,78.7 -2016-09-07 21:00:00,8125.483,0.0,77.61 -2016-09-07 22:00:00,7714.65,0.0,76.51 -2016-09-07 23:00:00,7187.575,0.0,75.23 -2016-09-08 00:00:00,6666.167,0.0,73.97 -2016-09-08 01:00:00,6316.867,0.0,73.3 -2016-09-08 02:00:00,6092.992,0.0,72.8 -2016-09-08 03:00:00,5943.525,0.0,72.09 -2016-09-08 04:00:00,5918.317,0.0,71.93 -2016-09-08 05:00:00,6143.383,0.0,70.71 -2016-09-08 06:00:00,6687.825,0.0,71.51 -2016-09-08 07:00:00,7300.592,0.0,71.59 -2016-09-08 08:00:00,7852.825,0.0021,72.99 -2016-09-08 09:00:00,8286.8,0.0024,76.15 -2016-09-08 10:00:00,8618.059,0.0,78.17 -2016-09-08 11:00:00,8874.059,0.0,80.53 -2016-09-08 12:00:00,9111.184,0.0,82.14 -2016-09-08 13:00:00,9324.575,0.0,84.0 -2016-09-08 14:00:00,9463.934,0.0,86.68 -2016-09-08 15:00:00,9665.366,0.0,86.93 -2016-09-08 16:00:00,9798.05,0.0,87.31 -2016-09-08 17:00:00,9787.783,0.0,86.28 -2016-09-08 18:00:00,9493.267,0.0,85.34 -2016-09-08 19:00:00,9313.3,0.0,83.93 -2016-09-08 20:00:00,9283.725,0.0,82.16 -2016-09-08 21:00:00,9113.175,0.0,81.15 -2016-09-08 22:00:00,8818.708,0.0,81.14 -2016-09-08 23:00:00,8284.675,0.0,82.25 -2016-09-09 00:00:00,7768.175,0.0,81.4 -2016-09-09 01:00:00,7345.333,0.0,82.98 -2016-09-09 02:00:00,7077.067,0.0,82.45 -2016-09-09 03:00:00,6932.592,0.0,82.2 -2016-09-09 04:00:00,6905.958,0.0,82.08 -2016-09-09 05:00:00,7130.65,0.0,80.1 -2016-09-09 06:00:00,7679.708,0.0054,78.89 -2016-09-09 07:00:00,8263.325,0.0,80.03 -2016-09-09 08:00:00,8744.134,0.0,80.37 -2016-09-09 09:00:00,9255.575,0.0,81.75 -2016-09-09 10:00:00,9616.125,0.0,83.77 -2016-09-09 11:00:00,9824.342,0.0,86.04 -2016-09-09 12:00:00,10056.59,0.0,88.29 -2016-09-09 13:00:00,10134.96,0.0,89.49 -2016-09-09 14:00:00,10091.13,0.0,89.81 -2016-09-09 15:00:00,10232.82,0.0,89.17 -2016-09-09 16:00:00,10374.42,0.0,89.56 -2016-09-09 17:00:00,10302.16,0.0,89.08 -2016-09-09 18:00:00,9966.066,0.0,88.82 -2016-09-09 19:00:00,9803.283,0.0,86.43 -2016-09-09 20:00:00,9626.292,0.0,85.3 -2016-09-09 21:00:00,9335.717,0.003,84.94 -2016-09-09 22:00:00,8905.15,0.0043,83.91 -2016-09-09 23:00:00,8351.866,0.0054,79.91 -2016-09-10 00:00:00,7850.892,0.0,79.05 -2016-09-10 01:00:00,7476.558,0.0072,77.33 -2016-09-10 02:00:00,7194.85,0.0063,78.43 -2016-09-10 03:00:00,6993.508,0.0,77.98 -2016-09-10 04:00:00,6853.408,0.0,77.34 -2016-09-10 05:00:00,6824.433,0.1101,75.93 -2016-09-10 06:00:00,6915.033,0.0,76.4 -2016-09-10 07:00:00,7161.942,0.0535,76.34 -2016-09-10 08:00:00,7615.925,0.0,77.35 -2016-09-10 09:00:00,8059.117,0.0,78.97 -2016-09-10 10:00:00,8504.333,0.0,81.87 -2016-09-10 11:00:00,8850.767,0.0,84.1 -2016-09-10 12:00:00,9143.009,0.0,86.04 -2016-09-10 13:00:00,9321.5,0.0,88.12 -2016-09-10 14:00:00,9445.366,0.0,89.32 -2016-09-10 15:00:00,9421.65,0.0,88.44 -2016-09-10 16:00:00,9357.85,0.0027,87.89 -2016-09-10 17:00:00,9288.267,0.0,85.89 -2016-09-10 18:00:00,9115.292,0.0,85.63 -2016-09-10 19:00:00,9046.066,0.0,83.78 -2016-09-10 20:00:00,8932.55,0.0024,81.73 -2016-09-10 21:00:00,8754.017,0.0,81.99 -2016-09-10 22:00:00,8477.642,0.0,81.04 -2016-09-10 23:00:00,8162.733,0.0,79.52 -2016-09-11 00:00:00,7775.658,0.0,80.63 -2016-09-11 01:00:00,7407.667,0.0,79.84 -2016-09-11 02:00:00,7118.975,0.0,78.79 -2016-09-11 03:00:00,6887.883,0.0,77.6 -2016-09-11 04:00:00,6727.258,0.0,76.81 -2016-09-11 05:00:00,6700.067,0.0,76.51 -2016-09-11 06:00:00,6754.175,0.0022,77.12 -2016-09-11 07:00:00,6913.675,0.0,76.31 -2016-09-11 08:00:00,7244.283,0.0,77.75 -2016-09-11 09:00:00,7647.758,0.0,78.3 -2016-09-11 10:00:00,7815.0,0.0,80.52 -2016-09-11 11:00:00,7754.942,0.0,81.06 -2016-09-11 12:00:00,7715.125,0.0,80.69 -2016-09-11 13:00:00,7682.275,0.0,80.45 -2016-09-11 14:00:00,7684.358,0.0,81.39 -2016-09-11 15:00:00,7738.35,0.0,81.49 -2016-09-11 16:00:00,7787.308,0.0,83.0 -2016-09-11 17:00:00,7731.433,0.0,82.3 -2016-09-11 18:00:00,7577.458,0.0,80.62 -2016-09-11 19:00:00,7472.617,0.0,78.22 -2016-09-11 20:00:00,7485.642,0.0,75.37 -2016-09-11 21:00:00,7281.983,0.0,74.04 -2016-09-11 22:00:00,6919.992,0.0,72.28 -2016-09-11 23:00:00,6443.575,0.0,70.17 -2016-09-12 00:00:00,6015.367,0.0,68.63 -2016-09-12 01:00:00,5707.933,0.0,67.04 -2016-09-12 02:00:00,5487.408,0.0,65.53 -2016-09-12 03:00:00,5324.1,0.0,64.42 -2016-09-12 04:00:00,5306.442,0.0,62.54 -2016-09-12 05:00:00,5450.5,0.0,62.35 -2016-09-12 06:00:00,5875.667,0.0,59.8 -2016-09-12 07:00:00,6369.4,0.0,60.73 -2016-09-12 08:00:00,6820.217,0.0,62.76 -2016-09-12 09:00:00,7208.042,0.0,66.67 -2016-09-12 10:00:00,7450.058,0.0,69.86 -2016-09-12 11:00:00,7603.3,0.0,72.46 -2016-09-12 12:00:00,7678.217,0.0,74.18 -2016-09-12 13:00:00,7725.192,0.0,76.06 -2016-09-12 14:00:00,7791.608,0.0,77.01 -2016-09-12 15:00:00,7838.375,0.0,76.34 -2016-09-12 16:00:00,7898.7,0.0,76.45 -2016-09-12 17:00:00,7837.925,0.0,75.49 -2016-09-12 18:00:00,7474.583,0.0,74.0 -2016-09-12 19:00:00,7282.108,0.0,71.19 -2016-09-12 20:00:00,7143.792,0.0,69.2 -2016-09-12 21:00:00,6905.65,0.0,68.15 -2016-09-12 22:00:00,6550.7,0.0,68.12 -2016-09-12 23:00:00,6104.075,0.0,67.2 -2016-09-13 00:00:00,5671.233,0.0,66.76 -2016-09-13 01:00:00,5376.642,0.0,66.08 -2016-09-13 02:00:00,5183.292,0.0,65.22 -2016-09-13 03:00:00,5082.717,0.0,64.6 -2016-09-13 04:00:00,5079.942,0.0,64.2 -2016-09-13 05:00:00,5304.442,0.0,63.06 -2016-09-13 06:00:00,5859.233,0.0,63.05 -2016-09-13 07:00:00,6445.717,0.0,63.79 -2016-09-13 08:00:00,6970.95,0.0,65.42 -2016-09-13 09:00:00,7373.45,0.0,69.38 -2016-09-13 10:00:00,7593.475,0.0,72.36 -2016-09-13 11:00:00,7799.75,0.0,74.83 -2016-09-13 12:00:00,7940.292,0.0,77.05 -2016-09-13 13:00:00,8062.35,0.0,79.61 -2016-09-13 14:00:00,8157.708,0.0,80.19 -2016-09-13 15:00:00,8268.033,0.0,80.98 -2016-09-13 16:00:00,8304.009,0.0,80.18 -2016-09-13 17:00:00,8216.684,0.0,78.68 -2016-09-13 18:00:00,7834.975,0.0,76.47 -2016-09-13 19:00:00,7662.342,0.0,74.25 -2016-09-13 20:00:00,7540.625,0.0,73.05 -2016-09-13 21:00:00,7288.717,0.0,72.11 -2016-09-13 22:00:00,6866.025,0.0,73.05 -2016-09-13 23:00:00,6363.117,0.0,72.24 -2016-09-14 00:00:00,5881.133,0.0,71.62 -2016-09-14 01:00:00,5576.608,0.0,71.16 -2016-09-14 02:00:00,5394.183,0.0,70.08 -2016-09-14 03:00:00,5291.792,0.0,69.99 -2016-09-14 04:00:00,5286.4,0.0,69.7 -2016-09-14 05:00:00,5511.35,0.0,69.03 -2016-09-14 06:00:00,6095.683,0.0,68.56 -2016-09-14 07:00:00,6707.017,0.0,69.87 -2016-09-14 08:00:00,7238.408,0.0,71.43 -2016-09-14 09:00:00,7670.2,0.0,73.36 -2016-09-14 10:00:00,8006.783,0.0,76.1 -2016-09-14 11:00:00,8287.967,0.0,79.05 -2016-09-14 12:00:00,8559.8,0.0,83.73 -2016-09-14 13:00:00,8763.767,0.0,86.43 -2016-09-14 14:00:00,8918.241,0.0,88.6 -2016-09-14 15:00:00,9124.884,0.0,88.75 -2016-09-14 16:00:00,9287.866,0.0,88.85 -2016-09-14 17:00:00,9158.634,0.0199,87.24 -2016-09-14 18:00:00,8495.3,0.005,82.28 -2016-09-14 19:00:00,8381.35,0.0,77.69 -2016-09-14 20:00:00,8260.809,0.0,75.57 -2016-09-14 21:00:00,7982.133,0.0,73.83 -2016-09-14 22:00:00,7471.15,0.0,73.6 -2016-09-14 23:00:00,6773.3,0.0,72.47 -2016-09-15 00:00:00,6088.35,0.0,70.17 -2016-09-15 01:00:00,5649.225,0.0,68.48 -2016-09-15 02:00:00,5340.1,0.0,66.91 -2016-09-15 03:00:00,5183.258,0.0,65.73 -2016-09-15 04:00:00,5102.258,0.0,64.29 -2016-09-15 05:00:00,5239.242,0.0,62.88 -2016-09-15 06:00:00,5693.167,0.0,61.91 -2016-09-15 07:00:00,6187.108,0.0,60.96 -2016-09-15 08:00:00,6578.742,, -2016-09-15 09:00:00,6864.883,, -2016-09-15 10:00:00,7031.533,, -2016-09-15 11:00:00,7115.558,0.0,68.66 -2016-09-15 12:00:00,7173.95,0.0,70.29 -2016-09-15 13:00:00,7234.95,0.0,70.98 -2016-09-15 14:00:00,7273.417,0.0,72.17 -2016-09-15 15:00:00,7365.967,0.0,73.38 -2016-09-15 16:00:00,7434.142,0.0,73.17 -2016-09-15 17:00:00,7381.475,0.0,73.5 -2016-09-15 18:00:00,7041.3,0.0,71.41 -2016-09-15 19:00:00,6892.375,0.0,69.5 -2016-09-15 20:00:00,6728.708,0.0,67.14 -2016-09-15 21:00:00,6475.892,0.0,65.32 -2016-09-15 22:00:00,6145.608,0.0,64.04 -2016-09-15 23:00:00,5732.917,0.0,64.32 -2016-09-16 00:00:00,5313.858,0.0,63.95 -2016-09-16 01:00:00,5039.658,0.0,62.82 -2016-09-16 02:00:00,4851.3,0.0,62.96 -2016-09-16 03:00:00,4757.55,0.0,62.42 -2016-09-16 04:00:00,4744.983,0.0,60.44 -2016-09-16 05:00:00,4933.25,0.0,60.99 -2016-09-16 06:00:00,5463.908,0.0,60.71 -2016-09-16 07:00:00,6046.15,0.0,60.18 -2016-09-16 08:00:00,6488.458,0.0,63.18 -2016-09-16 09:00:00,6891.875,0.0,65.53 -2016-09-16 10:00:00,7070.292,0.0,68.79 -2016-09-16 11:00:00,7137.9,0.0,71.23 -2016-09-16 12:00:00,7181.592,0.0,71.56 -2016-09-16 13:00:00,7221.358,0.0,72.72 -2016-09-16 14:00:00,7209.483,0.0,72.83 -2016-09-16 15:00:00,7226.425,0.0,73.13 -2016-09-16 16:00:00,7217.742,0.0,72.47 -2016-09-16 17:00:00,7109.125,0.0,71.11 -2016-09-16 18:00:00,6778.292,0.0,68.36 -2016-09-16 19:00:00,6628.742,0.0,66.86 -2016-09-16 20:00:00,6438.458,0.0,65.04 -2016-09-16 21:00:00,6193.183,0.0,63.94 -2016-09-16 22:00:00,5872.992,0.0,62.92 -2016-09-16 23:00:00,5498.558,0.0,63.49 -2016-09-17 00:00:00,5144.325,0.0,62.81 -2016-09-17 01:00:00,4885.95,0.0,61.49 -2016-09-17 02:00:00,4708.342,0.0,61.74 -2016-09-17 03:00:00,4592.392,0.0,61.14 -2016-09-17 04:00:00,4539.75,0.0,61.33 -2016-09-17 05:00:00,4565.475,0.0,59.76 -2016-09-17 06:00:00,4713.225,0.0,59.69 -2016-09-17 07:00:00,4944.883,0.0,59.83 -2016-09-17 08:00:00,5326.942,0.0,62.19 -2016-09-17 09:00:00,5676.833,0.0,65.96 -2016-09-17 10:00:00,5955.1,0.0,69.75 -2016-09-17 11:00:00,6154.675,0.0,71.98 -2016-09-17 12:00:00,6252.742,0.0,72.84 -2016-09-17 13:00:00,6319.075,0.0,75.44 -2016-09-17 14:00:00,6390.392,0.0,76.89 -2016-09-17 15:00:00,6443.808,0.0,76.08 -2016-09-17 16:00:00,6469.492,0.0,76.43 -2016-09-17 17:00:00,6450.7,0.0,75.24 -2016-09-17 18:00:00,6376.267,0.0,73.0 -2016-09-17 19:00:00,6421.817,0.0,71.37 -2016-09-17 20:00:00,6426.442,0.0,70.68 -2016-09-17 21:00:00,6307.892,0.0,71.02 -2016-09-17 22:00:00,6117.975,0.0,69.83 -2016-09-17 23:00:00,5885.842,0.0,70.77 -2016-09-18 00:00:00,5603.217,0.0,70.6 -2016-09-18 01:00:00,5344.208,0.0,70.49 -2016-09-18 02:00:00,5165.033,0.0,70.29 -2016-09-18 03:00:00,5046.325,0.0,70.0 -2016-09-18 04:00:00,4989.383,0.0,69.43 -2016-09-18 05:00:00,5026.125,0.0,69.79 -2016-09-18 06:00:00,5126.675,0.0,70.05 -2016-09-18 07:00:00,5323.808,0.0,70.08 -2016-09-18 08:00:00,5674.55,0.0,71.79 -2016-09-18 09:00:00,6040.292,0.0,73.24 -2016-09-18 10:00:00,6403.267,0.0,74.9 -2016-09-18 11:00:00,6700.5,0.0,76.63 -2016-09-18 12:00:00,6913.225,0.0,78.33 -2016-09-18 13:00:00,7061.425,0.0,79.97 -2016-09-18 14:00:00,7249.867,0.0,80.78 -2016-09-18 15:00:00,7369.55,0.0,81.59 -2016-09-18 16:00:00,7389.233,0.0026,81.52 -2016-09-18 17:00:00,7407.667,0.0,80.26 -2016-09-18 18:00:00,7438.642,0.0,79.23 -2016-09-18 19:00:00,7588.183,0.0026,78.82 -2016-09-18 20:00:00,7629.142,0.0,76.79 -2016-09-18 21:00:00,7494.008,0.0,77.06 -2016-09-18 22:00:00,7202.725,0.0,76.07 -2016-09-18 23:00:00,6774.808,0.0,76.01 -2016-09-19 00:00:00,6411.85,0.0,75.37 -2016-09-19 01:00:00,6109.133,0.0,74.6 -2016-09-19 02:00:00,5908.967,0.0,74.27 -2016-09-19 03:00:00,5828.075,0.0,74.19 -2016-09-19 04:00:00,5894.242,0.0,74.06 -2016-09-19 05:00:00,6167.958,0.0096,73.97 -2016-09-19 06:00:00,6751.017,0.0,74.49 -2016-09-19 07:00:00,7227.842,0.0113,74.05 -2016-09-19 08:00:00,7635.092,0.0158,71.82 -2016-09-19 09:00:00,7918.425,0.1091,72.21 -2016-09-19 10:00:00,8045.5,0.1734,72.51 -2016-09-19 11:00:00,8107.25,0.0617,72.18 -2016-09-19 12:00:00,8134.158,0.006,73.17 -2016-09-19 13:00:00,8106.025,0.0,72.93 -2016-09-19 14:00:00,8049.583,0.0,71.77 -2016-09-19 15:00:00,8019.617,0.0393,72.69 -2016-09-19 16:00:00,7993.85,0.0059,72.2 -2016-09-19 17:00:00,7942.017,0.0,71.7 -2016-09-19 18:00:00,7750.85,0.0,72.21 -2016-09-19 19:00:00,7709.833,0.0,71.06 -2016-09-19 20:00:00,7542.725,0.0,70.0 -2016-09-19 21:00:00,7284.842,0.0,70.48 -2016-09-19 22:00:00,6922.292,0.0023,69.24 -2016-09-19 23:00:00,6440.958,0.0035,69.61 -2016-09-20 00:00:00,5976.85,0.0,69.86 -2016-09-20 01:00:00,5677.033,0.0,69.86 -2016-09-20 02:00:00,5480.492,0.0026,70.06 -2016-09-20 03:00:00,5372.783,0.0024,69.49 -2016-09-20 04:00:00,5386.842,0.0,69.92 -2016-09-20 05:00:00,5632.317,0.0,69.37 -2016-09-20 06:00:00,6260.583,0.0,68.75 -2016-09-20 07:00:00,6862.458,0.0,70.07 -2016-09-20 08:00:00,7325.408,0.0,70.82 -2016-09-20 09:00:00,7612.417,0.0,71.18 -2016-09-20 10:00:00,7864.2,0.0,73.22 -2016-09-20 11:00:00,8056.867,0.0,75.02 -2016-09-20 12:00:00,8218.55,0.0,78.45 -2016-09-20 13:00:00,8349.092,0.0,80.05 -2016-09-20 14:00:00,8411.342,0.0,80.66 -2016-09-20 15:00:00,8530.05,0.0,82.19 -2016-09-20 16:00:00,8549.408,0.0,81.68 -2016-09-20 17:00:00,8487.05,0.0,80.12 -2016-09-20 18:00:00,8223.691,0.0,78.48 -2016-09-20 19:00:00,8154.042,0.0,76.13 -2016-09-20 20:00:00,8001.992,0.0,74.43 -2016-09-20 21:00:00,7746.25,0.0,73.45 -2016-09-20 22:00:00,7345.192,0.0,73.3 -2016-09-20 23:00:00,6816.767,0.0,73.47 -2016-09-21 00:00:00,6309.167,0.0,72.2 -2016-09-21 01:00:00,5977.2,0.0,72.08 -2016-09-21 02:00:00,5751.008,0.0,70.9 -2016-09-21 03:00:00,5610.617,0.0,70.41 -2016-09-21 04:00:00,5586.2,0.0,70.29 -2016-09-21 05:00:00,5777.708,0.0,68.88 -2016-09-21 06:00:00,6333.283,0.0,67.03 -2016-09-21 07:00:00,6908.983,0.0,68.09 -2016-09-21 08:00:00,7288.933,0.0,69.97 -2016-09-21 09:00:00,7557.058,0.0,71.89 -2016-09-21 10:00:00,7713.142,0.0,75.0 -2016-09-21 11:00:00,7790.342,0.0,77.19 -2016-09-21 12:00:00,7919.85,0.0,78.7 -2016-09-21 13:00:00,8057.625,0.0,80.68 -2016-09-21 14:00:00,8112.125,0.0,83.38 -2016-09-21 15:00:00,8233.184,0.0,83.8 -2016-09-21 16:00:00,8288.241,0.0,84.27 -2016-09-21 17:00:00,8199.3,0.0,83.05 -2016-09-21 18:00:00,7885.275,0.0,80.45 -2016-09-21 19:00:00,7756.158,0.0,77.98 -2016-09-21 20:00:00,7584.967,0.0,74.99 -2016-09-21 21:00:00,7268.808,0.0,74.53 -2016-09-21 22:00:00,6868.683,0.0,73.02 -2016-09-21 23:00:00,6358.783,0.0,72.3 -2016-09-22 00:00:00,5890.683,0.0,70.57 -2016-09-22 01:00:00,5555.092,0.0,69.69 -2016-09-22 02:00:00,5339.875,0.0,68.61 -2016-09-22 03:00:00,5210.975,0.0,66.88 -2016-09-22 04:00:00,5185.983,0.0,66.81 -2016-09-22 05:00:00,5373.008,0.0,66.74 -2016-09-22 06:00:00,5916.55,0.0,65.54 -2016-09-22 07:00:00,6468.842,0.0,65.38 -2016-09-22 08:00:00,6974.767,0.0,66.67 -2016-09-22 09:00:00,7365.7,0.0,71.53 -2016-09-22 10:00:00,7640.042,0.0,76.61 -2016-09-22 11:00:00,7856.482,0.0,79.03 -2016-09-22 12:00:00,7999.183,0.0,81.06 -2016-09-22 13:00:00,8127.15,0.0,82.58 -2016-09-22 14:00:00,8186.917,0.0,84.04 -2016-09-22 15:00:00,8283.55,0.0,84.72 -2016-09-22 16:00:00,8304.908,0.0,83.83 -2016-09-22 17:00:00,8191.433,0.0,81.8 -2016-09-22 18:00:00,7823.475,0.0,78.33 -2016-09-22 19:00:00,7649.65,0.0,76.45 -2016-09-22 20:00:00,7442.192,0.0,74.85 -2016-09-22 21:00:00,7156.583,0.0,71.54 -2016-09-22 22:00:00,6777.258,0.0,71.99 -2016-09-22 23:00:00,6321.675,0.0,70.22 -2016-09-23 00:00:00,5874.717,0.0,68.82 -2016-09-23 01:00:00,5558.275,0.0,66.69 -2016-09-23 02:00:00,5330.4,0.0,67.47 -2016-09-23 03:00:00,5205.192,0.0,65.17 -2016-09-23 04:00:00,5169.45,0.0,65.34 -2016-09-23 05:00:00,5344.6,0.0,63.57 -2016-09-23 06:00:00,5892.542,0.0,63.3 -2016-09-23 07:00:00,6488.158,0.0,64.15 -2016-09-23 08:00:00,7038.85,0.0,65.59 -2016-09-23 09:00:00,7420.033,0.0,68.88 -2016-09-23 10:00:00,7665.475,0.0,74.11 -2016-09-23 11:00:00,7864.792,0.0,77.22 -2016-09-23 12:00:00,8023.258,0.0,80.88 -2016-09-23 13:00:00,8185.373,0.0,83.39 -2016-09-23 14:00:00,8354.267,0.0,84.93 -2016-09-23 15:00:00,8506.0,0.0,86.41 -2016-09-23 16:00:00,8625.9,0.0,86.07 -2016-09-23 17:00:00,8578.1,0.0,85.17 -2016-09-23 18:00:00,8231.184,0.0,82.76 -2016-09-23 19:00:00,8032.025,0.0226,78.83 -2016-09-23 20:00:00,7819.092,0.115,75.14 -2016-09-23 21:00:00,7543.908,0.0026,75.4 -2016-09-23 22:00:00,7243.708,0.0062,74.76 -2016-09-23 23:00:00,6818.658,0.0,74.65 -2016-09-24 00:00:00,6239.708,0.0073,71.72 -2016-09-24 01:00:00,5719.925,0.1111,69.05 -2016-09-24 02:00:00,5416.508,0.0,64.33 -2016-09-24 03:00:00,5191.258,0.0,62.35 -2016-09-24 04:00:00,5041.558,0.0,61.69 -2016-09-24 05:00:00,4970.442,0.02,61.15 -2016-09-24 06:00:00,5059.95,0.0,60.1 -2016-09-24 07:00:00,5215.067,0.0,59.63 -2016-09-24 08:00:00,5422.758,0.0,59.42 -2016-09-24 09:00:00,5636.717,0.0,59.71 -2016-09-24 10:00:00,5818.367,0.0,61.12 -2016-09-24 11:00:00,5875.95,0.0,62.52 -2016-09-24 12:00:00,5927.692,0.0,64.21 -2016-09-24 13:00:00,5950.4,0.0,66.88 -2016-09-24 14:00:00,5983.575,0.0,69.37 -2016-09-24 15:00:00,5959.233,0.0,70.88 -2016-09-24 16:00:00,5955.567,0.0,70.26 -2016-09-24 17:00:00,5942.533,0.0,70.18 -2016-09-24 18:00:00,5880.783,0.0,68.94 -2016-09-24 19:00:00,5930.0,0.0,66.77 -2016-09-24 20:00:00,5851.042,0.0,63.94 -2016-09-24 21:00:00,5712.75,0.0,62.87 -2016-09-24 22:00:00,5489.15,0.0,62.13 -2016-09-24 23:00:00,5210.867,0.0,61.32 -2016-09-25 00:00:00,4904.167,0.0,60.1 -2016-09-25 01:00:00,4648.992,0.0,58.89 -2016-09-25 02:00:00,4460.308,0.0,57.7 -2016-09-25 03:00:00,4328.683,0.0,57.03 -2016-09-25 04:00:00,4259.242,0.0,55.24 -2016-09-25 05:00:00,4255.6,0.0,54.11 -2016-09-25 06:00:00,4312.642,0.0,52.82 -2016-09-25 07:00:00,4433.25,0.0,54.34 -2016-09-25 08:00:00,4675.9,0.0,54.92 -2016-09-25 09:00:00,4934.275,0.0,58.24 -2016-09-25 10:00:00,5174.875,0.0,60.43 -2016-09-25 11:00:00,5322.608,0.0,62.71 -2016-09-25 12:00:00,5398.367,0.0,63.93 -2016-09-25 13:00:00,5454.65,0.0,66.01 -2016-09-25 14:00:00,5496.242,0.0,68.37 -2016-09-25 15:00:00,5522.808,0.0,69.14 -2016-09-25 16:00:00,5561.05,0.0,69.62 -2016-09-25 17:00:00,5596.117,0.0,68.9 -2016-09-25 18:00:00,5622.483,0.0,67.4 -2016-09-25 19:00:00,5748.717,0.0,65.8 -2016-09-25 20:00:00,5714.808,0.0,64.09 -2016-09-25 21:00:00,5562.942,0.0,61.78 -2016-09-25 22:00:00,5297.758,0.0,60.22 -2016-09-25 23:00:00,4951.583,0.0,60.56 -2016-09-26 00:00:00,4641.8,0.0,59.17 -2016-09-26 01:00:00,4409.558,0.0,58.45 -2016-09-26 02:00:00,4279.275,0.0,56.47 -2016-09-26 03:00:00,4215.067,0.0,55.13 -2016-09-26 04:00:00,4241.708,0.0,56.3 -2016-09-26 05:00:00,4460.933,0.0,52.99 -2016-09-26 06:00:00,4973.4,0.0,55.11 -2016-09-26 07:00:00,5513.858,0.0,54.48 -2016-09-26 08:00:00,5925.2,0.0,56.5 -2016-09-26 09:00:00,6300.467,0.0,59.34 -2016-09-26 10:00:00,6483.458,0.0,64.61 -2016-09-26 11:00:00,6604.592,0.0,67.81 -2016-09-26 12:00:00,6682.158,0.0,70.5 -2016-09-26 13:00:00,6743.717,0.0,70.18 -2016-09-26 14:00:00,6774.158,0.0,71.04 -2016-09-26 15:00:00,6769.517,0.0,71.93 -2016-09-26 16:00:00,6817.458,0.0,70.56 -2016-09-26 17:00:00,6734.242,0.0,70.68 -2016-09-26 18:00:00,6541.525,0.0,67.8 -2016-09-26 19:00:00,6524.933,0.0,66.52 -2016-09-26 20:00:00,6379.717,0.0,67.81 -2016-09-26 21:00:00,6076.05,0.0,67.06 -2016-09-26 22:00:00,5778.058,0.0,67.04 -2016-09-26 23:00:00,5408.592,0.0,66.9 -2016-09-27 00:00:00,5015.342,0.0,67.57 -2016-09-27 01:00:00,4784.9,0.0,67.9 -2016-09-27 02:00:00,4630.0,0.0189,68.43 -2016-09-27 03:00:00,4549.625,0.009,68.11 -2016-09-27 04:00:00,4574.45,0.0,65.55 -2016-09-27 05:00:00,4811.808,0.0,66.01 -2016-09-27 06:00:00,5411.467,0.0,65.55 -2016-09-27 07:00:00,6017.742,0.0,64.69 -2016-09-27 08:00:00,6456.808,0.0,64.96 -2016-09-27 09:00:00,6728.558,0.0,65.97 -2016-09-27 10:00:00,6868.917,0.0,67.29 -2016-09-27 11:00:00,6972.492,0.0,68.69 -2016-09-27 12:00:00,7062.992,0.0,71.27 -2016-09-27 13:00:00,7110.008,0.0,72.58 -2016-09-27 14:00:00,7147.117,0.0,73.28 -2016-09-27 15:00:00,7211.925,0.0,74.68 -2016-09-27 16:00:00,7231.6,0.0,75.38 -2016-09-27 17:00:00,7156.025,0.0,73.91 -2016-09-27 18:00:00,6904.058,0.0,72.5 -2016-09-27 19:00:00,6872.708,0.0,69.86 -2016-09-27 20:00:00,6705.117,0.0,66.34 -2016-09-27 21:00:00,6444.925,0.0,65.99 -2016-09-27 22:00:00,6093.117,0.0,66.9 -2016-09-27 23:00:00,5621.167,0.0,64.5 -2016-09-28 00:00:00,5190.4,0.0,65.07 -2016-09-28 01:00:00,4897.092,0.0,62.91 -2016-09-28 02:00:00,4707.0,0.0,62.84 -2016-09-28 03:00:00,4611.975,0.0,60.88 -2016-09-28 04:00:00,4612.025,0.0,60.92 -2016-09-28 05:00:00,4805.808,0.0,59.12 -2016-09-28 06:00:00,5361.65,0.0,60.42 -2016-09-28 07:00:00,5936.258,0.0,60.38 -2016-09-28 08:00:00,6386.783,0.0,61.37 -2016-09-28 09:00:00,6708.95,0.0,64.84 -2016-09-28 10:00:00,6826.45,0.0,66.92 -2016-09-28 11:00:00,6881.658,0.0,67.48 -2016-09-28 12:00:00,6893.008,0.0,68.2 -2016-09-28 13:00:00,6894.367,0.0,67.45 -2016-09-28 14:00:00,6832.358,0.0,67.82 -2016-09-28 15:00:00,6811.5,0.0,68.34 -2016-09-28 16:00:00,6780.35,0.0021,66.42 -2016-09-28 17:00:00,6716.208,0.0,64.73 -2016-09-28 18:00:00,6534.25,0.0,63.21 -2016-09-28 19:00:00,6430.042,0.0,62.71 -2016-09-28 20:00:00,6193.133,0.0,61.02 -2016-09-28 21:00:00,5918.142,0.0,59.39 -2016-09-28 22:00:00,5543.95,0.0,59.77 -2016-09-28 23:00:00,5091.117,0.0,58.53 -2016-09-29 00:00:00,4699.417,0.0,58.41 -2016-09-29 01:00:00,4443.983,0.0,58.68 -2016-09-29 02:00:00,4308.8,0.0,58.18 -2016-09-29 03:00:00,4241.458,0.0,58.77 -2016-09-29 04:00:00,4241.942,0.0,59.81 -2016-09-29 05:00:00,4460.583,0.0,59.84 -2016-09-29 06:00:00,5002.95,0.0,60.4 -2016-09-29 07:00:00,5604.15,0.0,60.55 -2016-09-29 08:00:00,5992.017,0.0,60.27 -2016-09-29 09:00:00,6249.375,0.0,60.39 -2016-09-29 10:00:00,6349.583,0.0,60.74 -2016-09-29 11:00:00,6397.708,0.0,61.64 -2016-09-29 12:00:00,6405.258,0.0,62.64 -2016-09-29 13:00:00,6398.142,0.0,63.41 -2016-09-29 14:00:00,6370.692,0.0,63.72 -2016-09-29 15:00:00,6358.683,0.0,64.86 -2016-09-29 16:00:00,6398.458,, -2016-09-29 17:00:00,6381.667,0.0106,64.02 -2016-09-29 18:00:00,6268.425,, -2016-09-29 19:00:00,6196.475,0.0,61.92 -2016-09-29 20:00:00,5989.475,0.0,61.07 -2016-09-29 21:00:00,5752.008,0.0043,61.25 -2016-09-29 22:00:00,5407.45,0.0029,60.5 -2016-09-29 23:00:00,4988.825,0.0,59.77 -2016-09-30 00:00:00,4586.192,0.0,59.56 -2016-09-30 01:00:00,4318.333,0.0,58.87 -2016-09-30 02:00:00,4167.3,0.0,57.19 -2016-09-30 03:00:00,4095.617,0.0,58.39 -2016-09-30 04:00:00,4113.467,0.0,58.4 -2016-09-30 05:00:00,4294.583,0.0,58.36 -2016-09-30 06:00:00,4825.283,0.0,57.76 -2016-09-30 07:00:00,5390.842,0.0044,56.68 -2016-09-30 08:00:00,5817.883,0.0039,57.88 -2016-09-30 09:00:00,6090.533,0.01,57.4 -2016-09-30 10:00:00,6233.425,0.0062,58.14 -2016-09-30 11:00:00,6298.375,0.0039,58.67 -2016-09-30 12:00:00,6296.708,0.003,59.12 -2016-09-30 13:00:00,6287.783,0.0,59.31 -2016-09-30 14:00:00,6260.417,0.0064,59.27 -2016-09-30 15:00:00,6256.025,0.0024,59.84 -2016-09-30 16:00:00,6273.85,0.0,59.18 -2016-09-30 17:00:00,6242.783,0.0,59.27 -2016-09-30 18:00:00,6141.017,0.0025,58.64 -2016-09-30 19:00:00,6066.808,0.0,59.01 -2016-09-30 20:00:00,5842.642,0.0,57.83 -2016-09-30 21:00:00,5626.175,0.0,57.71 -2016-09-30 22:00:00,5333.85,0.0,57.41 -2016-09-30 23:00:00,5005.883,0.0,56.87 -2016-10-01 00:00:00,4641.3,0.0,57.35 -2016-10-01 01:00:00,4382.892,0.0,57.18 -2016-10-01 02:00:00,4209.967,0.0,56.76 -2016-10-01 03:00:00,4120.717,0.0,56.73 -2016-10-01 04:00:00,4078.958,0.0,56.91 -2016-10-01 05:00:00,4119.175,0.0,56.63 -2016-10-01 06:00:00,4282.475,0.0,56.84 -2016-10-01 07:00:00,4508.208,0.0,56.99 -2016-10-01 08:00:00,4814.467,0.0,57.69 -2016-10-01 09:00:00,5096.717,0.0,58.06 -2016-10-01 10:00:00,5308.692,0.0,58.99 -2016-10-01 11:00:00,5433.483,0.0,59.54 -2016-10-01 12:00:00,5472.058,0.0,60.33 -2016-10-01 13:00:00,5466.775,0.0,61.29 -2016-10-01 14:00:00,5444.858,0.0,61.02 -2016-10-01 15:00:00,5430.95,0.0,60.92 -2016-10-01 16:00:00,5410.217,0.0,61.22 -2016-10-01 17:00:00,5450.475,0.0,61.41 -2016-10-01 18:00:00,5522.142,0.0,60.3 -2016-10-01 19:00:00,5572.175,0.0,60.19 -2016-10-01 20:00:00,5477.183,0.0031,59.66 -2016-10-01 21:00:00,5327.65,0.0,60.35 -2016-10-01 22:00:00,5130.3,0.0,59.0 -2016-10-01 23:00:00,4866.933,0.0,58.65 -2016-10-02 00:00:00,4576.442,0.0,58.78 -2016-10-02 01:00:00,4339.192,0.0,57.96 -2016-10-02 02:00:00,4165.283,0.0,57.38 -2016-10-02 03:00:00,4060.925,0.0,57.74 -2016-10-02 04:00:00,4009.942,0.0,57.21 -2016-10-02 05:00:00,4038.175,0.0,56.83 -2016-10-02 06:00:00,4124.875,0.0,56.11 -2016-10-02 07:00:00,4262.317,0.0,56.93 -2016-10-02 08:00:00,4521.85,0.0,57.0 -2016-10-02 09:00:00,4791.825,0.0,58.18 -2016-10-02 10:00:00,5030.175,0.0,59.01 -2016-10-02 11:00:00,5188.592,0.0,60.01 -2016-10-02 12:00:00,5270.592,0.0,60.85 -2016-10-02 13:00:00,5310.458,0.0029,61.85 -2016-10-02 14:00:00,5315.817,0.0,62.3 -2016-10-02 15:00:00,5322.917,0.0,62.95 -2016-10-02 16:00:00,5359.1,0.0,62.58 -2016-10-02 17:00:00,5418.492,0.0,62.75 -2016-10-02 18:00:00,5503.508,0.0,62.45 -2016-10-02 19:00:00,5590.858,0.0,62.3 -2016-10-02 20:00:00,5527.683,0.0,62.14 -2016-10-02 21:00:00,5380.992,0.0,61.4 -2016-10-02 22:00:00,5173.792,0.0,62.1 -2016-10-02 23:00:00,4868.242,0.0,61.78 -2016-10-03 00:00:00,4571.583,0.0,61.85 -2016-10-03 01:00:00,4362.208,0.0,62.14 -2016-10-03 02:00:00,4230.725,0.0,61.79 -2016-10-03 03:00:00,4168.742,0.0,61.05 -2016-10-03 04:00:00,4184.617,0.0,61.49 -2016-10-03 05:00:00,4381.367,0.0,61.17 -2016-10-03 06:00:00,4834.7,0.0,59.97 -2016-10-03 07:00:00,5330.575,0.0,60.61 -2016-10-03 08:00:00,5760.783,0.0,61.25 -2016-10-03 09:00:00,6032.825,0.0,62.57 -2016-10-03 10:00:00,6172.342,0.0,63.97 -2016-10-03 11:00:00,6257.292,0.0,65.21 -2016-10-03 12:00:00,6340.592,0.0,67.91 -2016-10-03 13:00:00,6413.2,0.0,69.83 -2016-10-03 14:00:00,6444.708,0.0,71.71 -2016-10-03 15:00:00,6486.183,0.0,70.95 -2016-10-03 16:00:00,6503.042,0.0,71.28 -2016-10-03 17:00:00,6490.567,0.0,70.28 -2016-10-03 18:00:00,6347.542,0.0,68.57 -2016-10-03 19:00:00,6348.258,0.0,67.52 -2016-10-03 20:00:00,6157.117,0.0,65.17 -2016-10-03 21:00:00,5925.683,0.0,64.25 -2016-10-03 22:00:00,5600.975,0.0,64.02 -2016-10-03 23:00:00,5195.367,0.0,64.54 -2016-10-04 00:00:00,4801.9,0.0,63.76 -2016-10-04 01:00:00,4549.067,0.0,63.74 -2016-10-04 02:00:00,4382.333,0.0,63.41 -2016-10-04 03:00:00,4304.825,0.0,62.35 -2016-10-04 04:00:00,4301.225,0.0,62.4 -2016-10-04 05:00:00,4471.558,0.0,62.07 -2016-10-04 06:00:00,4924.875,0.0,61.69 -2016-10-04 07:00:00,5436.242,0.0,61.22 -2016-10-04 08:00:00,5845.917,0.0,61.16 -2016-10-04 09:00:00,6093.6,0.0,61.19 -2016-10-04 10:00:00,6193.158,0.0,61.99 -2016-10-04 11:00:00,6237.417,0.0,63.31 -2016-10-04 12:00:00,6273.558,0.0,64.23 -2016-10-04 13:00:00,6313.458,0.0,65.75 -2016-10-04 14:00:00,6353.642,0.0,67.38 -2016-10-04 15:00:00,6373.125,0.0,66.94 -2016-10-04 16:00:00,6432.2,0.0,68.62 -2016-10-04 17:00:00,6418.742,0.0,67.22 -2016-10-04 18:00:00,6324.9,0.0,66.06 -2016-10-04 19:00:00,6296.3,0.0,65.11 -2016-10-04 20:00:00,6112.542,0.0,64.36 -2016-10-04 21:00:00,5861.017,0.0,63.99 -2016-10-04 22:00:00,5509.375,0.0,61.82 -2016-10-04 23:00:00,5064.108,0.0,60.82 -2016-10-05 00:00:00,4633.742,0.0,60.07 -2016-10-05 01:00:00,4370.025,0.0,58.9 -2016-10-05 02:00:00,4188.717,0.0,58.39 -2016-10-05 03:00:00,4106.1,0.0,56.78 -2016-10-05 04:00:00,4103.683,0.0,55.08 -2016-10-05 05:00:00,4280.525,0.0,54.47 -2016-10-05 06:00:00,4787.3,0.0,53.68 -2016-10-05 07:00:00,5336.633,0.0,53.52 -2016-10-05 08:00:00,5721.692,0.0,54.47 -2016-10-05 09:00:00,5942.283,0.0,56.79 -2016-10-05 10:00:00,6066.358,0.0,58.91 -2016-10-05 11:00:00,6153.65,0.0,61.12 -2016-10-05 12:00:00,6221.708,0.0,63.11 -2016-10-05 13:00:00,6273.867,0.0,65.57 -2016-10-05 14:00:00,6308.233,0.0,66.43 -2016-10-05 15:00:00,6354.092,0.0,67.47 -2016-10-05 16:00:00,6403.375,0.0,67.38 -2016-10-05 17:00:00,6368.717,0.0,65.94 -2016-10-05 18:00:00,6239.258,0.0,64.31 -2016-10-05 19:00:00,6229.1,0.0,62.07 -2016-10-05 20:00:00,6029.542,0.0,60.63 -2016-10-05 21:00:00,5773.358,0.0,59.44 -2016-10-05 22:00:00,5440.492,0.0,58.11 -2016-10-05 23:00:00,4998.842,0.0,57.16 -2016-10-06 00:00:00,4591.736,0.0,57.51 -2016-10-06 01:00:00,4344.717,0.0,56.66 -2016-10-06 02:00:00,4177.033,0.0,55.38 -2016-10-06 03:00:00,4106.058,0.0,55.46 -2016-10-06 04:00:00,4120.65,0.0,54.55 -2016-10-06 05:00:00,4312.075,0.0,52.79 -2016-10-06 06:00:00,4869.0,0.0,53.22 -2016-10-06 07:00:00,5414.017,0.0,53.68 -2016-10-06 08:00:00,5819.833,0.0,55.16 -2016-10-06 09:00:00,6102.283,0.0,58.87 -2016-10-06 10:00:00,6244.183,0.0,64.03 -2016-10-06 11:00:00,6367.058,0.0,65.74 -2016-10-06 12:00:00,6450.733,0.0,69.55 -2016-10-06 13:00:00,6520.667,0.0,70.42 -2016-10-06 14:00:00,6559.733,0.0,71.71 -2016-10-06 15:00:00,6617.383,0.0,72.15 -2016-10-06 16:00:00,6664.808,0.0,73.13 -2016-10-06 17:00:00,6624.208,0.0,71.56 -2016-10-06 18:00:00,6446.092,0.0,68.88 -2016-10-06 19:00:00,6357.675,0.0,65.84 -2016-10-06 20:00:00,6143.283,0.0,62.2 -2016-10-06 21:00:00,5902.033,0.0,61.61 -2016-10-06 22:00:00,5538.308,0.0,60.86 -2016-10-06 23:00:00,5110.417,0.0,59.78 -2016-10-07 00:00:00,4705.55,0.0,59.43 -2016-10-07 01:00:00,4438.625,0.0,58.59 -2016-10-07 02:00:00,4270.533,0.0,58.67 -2016-10-07 03:00:00,4182.9,0.0,56.66 -2016-10-07 04:00:00,4182.833,0.0,55.26 -2016-10-07 05:00:00,4376.6,0.0,55.72 -2016-10-07 06:00:00,4910.033,0.0,54.93 -2016-10-07 07:00:00,5480.475,0.0,55.65 -2016-10-07 08:00:00,5914.892,0.0,57.48 -2016-10-07 09:00:00,6213.45,0.0,60.43 -2016-10-07 10:00:00,6391.417,0.0,64.09 -2016-10-07 11:00:00,6512.225,0.0,67.28 -2016-10-07 12:00:00,6587.308,0.0,71.5 -2016-10-07 13:00:00,6667.717,0.0,73.74 -2016-10-07 14:00:00,6708.742,0.0,73.25 -2016-10-07 15:00:00,6705.108,0.0,74.6 -2016-10-07 16:00:00,6661.75,0.0,73.44 -2016-10-07 17:00:00,6564.692,0.0,70.43 -2016-10-07 18:00:00,6359.208,0.0,66.97 -2016-10-07 19:00:00,6273.825,0.0,64.74 -2016-10-07 20:00:00,6043.283,0.0,62.44 -2016-10-07 21:00:00,5809.883,0.0,61.08 -2016-10-07 22:00:00,5525.392,0.0,61.5 -2016-10-07 23:00:00,5164.525,0.0,60.6 -2016-10-08 00:00:00,4809.883,0.0,59.87 -2016-10-08 01:00:00,4545.717,0.0,59.8 -2016-10-08 02:00:00,4350.183,0.0,58.66 -2016-10-08 03:00:00,4258.975,0.0,57.5 -2016-10-08 04:00:00,4203.858,0.0,58.17 -2016-10-08 05:00:00,4244.917,0.0,57.72 -2016-10-08 06:00:00,4406.525,0.0,58.08 -2016-10-08 07:00:00,4606.05,0.0,58.45 -2016-10-08 08:00:00,4908.908,0.0,59.64 -2016-10-08 09:00:00,5199.383,0.0,61.67 -2016-10-08 10:00:00,5430.35,0.0,63.99 -2016-10-08 11:00:00,5579.208,0.0,66.19 -2016-10-08 12:00:00,5658.417,0.0,68.57 -2016-10-08 13:00:00,5663.425,0.0,68.07 -2016-10-08 14:00:00,5664.175,0.0203,68.84 -2016-10-08 15:00:00,5662.225,0.0048,68.0 -2016-10-08 16:00:00,5677.392,0.0,67.18 -2016-10-08 17:00:00,5729.142,0.0101,66.89 -2016-10-08 18:00:00,5842.117,0.0381,66.63 -2016-10-08 19:00:00,5879.817,0.0516,66.78 -2016-10-08 20:00:00,5769.867,0.0,65.6 -2016-10-08 21:00:00,5630.783,0.0026,66.29 -2016-10-08 22:00:00,5422.842,0.0023,65.51 -2016-10-08 23:00:00,5159.567,0.0025,65.39 -2016-10-09 00:00:00,4880.483,0.0039,65.5 -2016-10-09 01:00:00,4639.475,0.0095,65.04 -2016-10-09 02:00:00,4462.383,0.0118,64.98 -2016-10-09 03:00:00,4327.025,0.0128,64.32 -2016-10-09 04:00:00,4203.008,0.0178,62.86 -2016-10-09 05:00:00,4161.392,0.0282,59.21 -2016-10-09 06:00:00,4242.25,0.0366,56.9 -2016-10-09 07:00:00,4378.117,0.0432,57.42 -2016-10-09 08:00:00,4588.933,0.0203,56.38 -2016-10-09 09:00:00,4843.75,0.0254,55.99 -2016-10-09 10:00:00,5065.167,0.0277,54.99 -2016-10-09 11:00:00,5214.375,0.0607,53.95 -2016-10-09 12:00:00,5304.417,0.1097,53.47 -2016-10-09 13:00:00,5331.133,0.0027,53.78 -2016-10-09 14:00:00,5308.15,0.0041,53.58 -2016-10-09 15:00:00,5279.683,0.003,54.59 -2016-10-09 16:00:00,5224.242,0.0,56.07 -2016-10-09 17:00:00,5219.225,0.0021,57.45 -2016-10-09 18:00:00,5309.883,0.0,57.42 -2016-10-09 19:00:00,5446.617,0.0025,57.38 -2016-10-09 20:00:00,5384.533,0.0,55.11 -2016-10-09 21:00:00,5237.458,0.0,55.67 -2016-10-09 22:00:00,5034.875,0.0,53.86 -2016-10-09 23:00:00,4753.533,0.0,53.06 -2016-10-10 00:00:00,4425.958,0.0,52.84 -2016-10-10 01:00:00,4169.892,0.0,52.27 -2016-10-10 02:00:00,4023.883,0.0,51.44 -2016-10-10 03:00:00,3954.458,0.0,50.11 -2016-10-10 04:00:00,3946.383,0.0,48.56 -2016-10-10 05:00:00,4103.025,0.0,47.37 -2016-10-10 06:00:00,4475.658,0.0,46.44 -2016-10-10 07:00:00,4887.792,0.0,46.3 -2016-10-10 08:00:00,5273.592,0.0,47.45 -2016-10-10 09:00:00,5559.225,0.0,49.58 -2016-10-10 10:00:00,5688.742,0.0,52.22 -2016-10-10 11:00:00,5750.825,0.0,54.67 -2016-10-10 12:00:00,5803.892,0.0,57.15 -2016-10-10 13:00:00,5807.1,0.0,59.77 -2016-10-10 14:00:00,5818.617,0.0,61.31 -2016-10-10 15:00:00,5827.683,0.0,62.84 -2016-10-10 16:00:00,5887.258,0.0,63.26 -2016-10-10 17:00:00,5912.433,0.0,62.2 -2016-10-10 18:00:00,5892.617,0.0,60.04 -2016-10-10 19:00:00,5923.467,0.0,57.41 -2016-10-10 20:00:00,5769.525,0.0,55.05 -2016-10-10 21:00:00,5550.875,0.0,54.76 -2016-10-10 22:00:00,5227.233,0.0,53.41 -2016-10-10 23:00:00,4801.2,0.0,51.33 -2016-10-11 00:00:00,4426.217,0.0,50.91 -2016-10-11 01:00:00,4179.208,0.0,49.45 -2016-10-11 02:00:00,4023.683,0.0,49.0 -2016-10-11 03:00:00,3953.308,0.0,47.53 -2016-10-11 04:00:00,3974.617,0.0,46.79 -2016-10-11 05:00:00,4181.242,0.0,46.08 -2016-10-11 06:00:00,4712.525,0.0,44.38 -2016-10-11 07:00:00,5269.25,0.0,45.02 -2016-10-11 08:00:00,5631.042,0.0,46.91 -2016-10-11 09:00:00,5865.25,0.0,50.52 -2016-10-11 10:00:00,5975.458,0.0,55.2 -2016-10-11 11:00:00,6013.108,0.0,56.21 -2016-10-11 12:00:00,6042.958,0.0,59.37 -2016-10-11 13:00:00,6063.633,0.0,61.35 -2016-10-11 14:00:00,6065.15,0.0,62.49 -2016-10-11 15:00:00,6096.383,0.0,62.72 -2016-10-11 16:00:00,6115.842,0.0,63.59 -2016-10-11 17:00:00,6118.408,0.0,61.44 -2016-10-11 18:00:00,6035.342,0.0,58.57 -2016-10-11 19:00:00,6014.033,0.0,56.84 -2016-10-11 20:00:00,5837.75,0.0,54.66 -2016-10-11 21:00:00,5596.383,0.0,54.92 -2016-10-11 22:00:00,5293.075,0.0,54.24 -2016-10-11 23:00:00,4894.742,0.0,54.64 -2016-10-12 00:00:00,4500.592,0.0,54.5 -2016-10-12 01:00:00,4249.0,0.0,53.39 -2016-10-12 02:00:00,4102.95,0.0,52.48 -2016-10-12 03:00:00,4046.117,0.0,51.37 -2016-10-12 04:00:00,4049.692,0.0,51.47 -2016-10-12 05:00:00,4229.125,0.0,51.79 -2016-10-12 06:00:00,4680.458,0.0,51.44 -2016-10-12 07:00:00,5158.017,0.0,50.12 -2016-10-12 08:00:00,5547.558,0.0,52.08 -2016-10-12 09:00:00,5831.925,0.0,55.94 -2016-10-12 10:00:00,5942.4,0.0,60.23 -2016-10-12 11:00:00,6000.633,0.0,63.4 -2016-10-12 12:00:00,6047.4,0.0,64.63 -2016-10-12 13:00:00,6062.908,0.0,65.14 -2016-10-12 14:00:00,6078.842,0.0,65.21 -2016-10-12 15:00:00,6090.05,0.0,66.49 -2016-10-12 16:00:00,6128.833,0.0,65.36 -2016-10-12 17:00:00,6124.2,0.0,64.51 -2016-10-12 18:00:00,6056.817,0.0,62.52 -2016-10-12 19:00:00,6052.233,0.0,61.27 -2016-10-12 20:00:00,5906.483,0.0,58.28 -2016-10-12 21:00:00,5678.9,0.0,58.87 -2016-10-12 22:00:00,5372.992,0.0,57.1 -2016-10-12 23:00:00,4943.275,0.0,58.12 -2016-10-13 00:00:00,4552.658,0.0,57.07 -2016-10-13 01:00:00,4314.525,0.0,56.31 -2016-10-13 02:00:00,4154.492,0.0,56.12 -2016-10-13 03:00:00,4078.833,0.0,55.59 -2016-10-13 04:00:00,4087.908,0.0,54.55 -2016-10-13 05:00:00,4272.017,0.0,53.37 -2016-10-13 06:00:00,4824.183,0.0,53.11 -2016-10-13 07:00:00,5388.167,0.0,53.4 -2016-10-13 08:00:00,5796.608,0.0,55.88 -2016-10-13 09:00:00,6058.5,0.0,57.82 -2016-10-13 10:00:00,6210.483,0.0,61.46 -2016-10-13 11:00:00,6321.225,0.0,65.4 -2016-10-13 12:00:00,6356.692,0.0,67.44 -2016-10-13 13:00:00,6381.475,0.0,68.32 -2016-10-13 14:00:00,6359.583,0.0039,66.57 -2016-10-13 15:00:00,6369.083,0.0,66.63 -2016-10-13 16:00:00,6362.258,0.0,64.21 -2016-10-13 17:00:00,6400.042,0.0,63.31 -2016-10-13 18:00:00,6284.833,0.0,62.79 -2016-10-13 19:00:00,6214.617,0.0,62.02 -2016-10-13 20:00:00,6012.425,0.0,59.77 -2016-10-13 21:00:00,5737.4,0.0,59.6 -2016-10-13 22:00:00,5374.2,0.0,58.55 -2016-10-13 23:00:00,4923.608,0.0,56.7 -2016-10-14 00:00:00,4522.208,0.0,55.27 -2016-10-14 01:00:00,4255.492,0.0,53.08 -2016-10-14 02:00:00,4103.008,0.0,51.61 -2016-10-14 03:00:00,4030.2,0.0,50.33 -2016-10-14 04:00:00,4043.358,0.0,49.03 -2016-10-14 05:00:00,4235.008,0.0,47.74 -2016-10-14 06:00:00,4755.85,0.0,47.49 -2016-10-14 07:00:00,5304.3,0.0,47.08 -2016-10-14 08:00:00,5671.892,0.0,47.99 -2016-10-14 09:00:00,5902.725,0.0,50.38 -2016-10-14 10:00:00,6001.267,0.0,52.48 -2016-10-14 11:00:00,6033.567,0.0,55.15 -2016-10-14 12:00:00,6056.825,0.0,56.94 -2016-10-14 13:00:00,6075.717,0.0,59.27 -2016-10-14 14:00:00,6044.933,0.0,61.15 -2016-10-14 15:00:00,6059.917,0.0,62.26 -2016-10-14 16:00:00,6095.717,0.0,62.66 -2016-10-14 17:00:00,6095.567,0.0,61.62 -2016-10-14 18:00:00,6022.808,0.0,59.89 -2016-10-14 19:00:00,5949.008,0.0,57.15 -2016-10-14 20:00:00,5750.175,0.0,53.66 -2016-10-14 21:00:00,5533.142,0.0,53.67 -2016-10-14 22:00:00,5274.342,0.0,53.19 -2016-10-14 23:00:00,4919.825,0.0,51.97 -2016-10-15 00:00:00,4558.983,0.0,50.78 -2016-10-15 01:00:00,4307.25,0.0,48.63 -2016-10-15 02:00:00,4156.042,0.0,48.82 -2016-10-15 03:00:00,4056.225,0.0,47.44 -2016-10-15 04:00:00,4020.383,0.0,46.8 -2016-10-15 05:00:00,4065.658,0.0,46.22 -2016-10-15 06:00:00,4241.308,0.0,44.85 -2016-10-15 07:00:00,4451.458,0.0,46.1 -2016-10-15 08:00:00,4742.817,0.0,48.15 -2016-10-15 09:00:00,4985.333,0.0,50.75 -2016-10-15 10:00:00,5151.025,0.0,54.73 -2016-10-15 11:00:00,5245.517,0.0,59.34 -2016-10-15 12:00:00,5284.15,0.0,61.89 -2016-10-15 13:00:00,5262.725,0.0,63.31 -2016-10-15 14:00:00,5248.858,0.0,64.53 -2016-10-15 15:00:00,5233.283,0.0,64.29 -2016-10-15 16:00:00,5242.658,0.0,63.17 -2016-10-15 17:00:00,5265.242,0.0,62.17 -2016-10-15 18:00:00,5376.833,0.0,60.49 -2016-10-15 19:00:00,5467.317,0.0,57.95 -2016-10-15 20:00:00,5399.342,0.0,56.26 -2016-10-15 21:00:00,5263.3,0.0,55.99 -2016-10-15 22:00:00,5065.325,0.0,56.33 -2016-10-15 23:00:00,4815.7,0.0,55.51 -2016-10-16 00:00:00,4536.167,0.0,54.76 -2016-10-16 01:00:00,4300.267,0.0,54.12 -2016-10-16 02:00:00,4131.392,0.0,52.94 -2016-10-16 03:00:00,4022.992,0.0,52.68 -2016-10-16 04:00:00,3979.558,0.0,51.74 -2016-10-16 05:00:00,4003.8,0.0,51.65 -2016-10-16 06:00:00,4103.358,0.0,51.27 -2016-10-16 07:00:00,4241.975,0.0,51.53 -2016-10-16 08:00:00,4476.992,0.0,53.15 -2016-10-16 09:00:00,4723.758,0.0,55.84 -2016-10-16 10:00:00,4932.367,0.0,59.52 -2016-10-16 11:00:00,5072.575,0.0,63.18 -2016-10-16 12:00:00,5136.175,0.0,64.51 -2016-10-16 13:00:00,5195.108,0.0,65.84 -2016-10-16 14:00:00,5233.383,0.0,67.69 -2016-10-16 15:00:00,5275.192,0.0,70.35 -2016-10-16 16:00:00,5321.558,0.0,69.98 -2016-10-16 17:00:00,5406.033,0.0,69.17 -2016-10-16 18:00:00,5553.033,0.0,67.91 -2016-10-16 19:00:00,5644.733,0.0,65.86 -2016-10-16 20:00:00,5574.067,0.0,64.1 -2016-10-16 21:00:00,5421.408,0.0,64.29 -2016-10-16 22:00:00,5180.658,0.0,64.33 -2016-10-16 23:00:00,4850.0,0.0,64.14 -2016-10-17 00:00:00,4550.567,0.0,63.54 -2016-10-17 01:00:00,4327.917,0.0,63.57 -2016-10-17 02:00:00,4197.367,0.0,62.61 -2016-10-17 03:00:00,4139.733,0.0,62.53 -2016-10-17 04:00:00,4184.9,0.0,62.94 -2016-10-17 05:00:00,4395.15,0.0,61.82 -2016-10-17 06:00:00,4945.858,0.0,62.63 -2016-10-17 07:00:00,5542.467,0.0,62.48 -2016-10-17 08:00:00,5953.467,0.0,64.1 -2016-10-17 09:00:00,6261.975,0.0,65.95 -2016-10-17 10:00:00,6457.292,0.0,69.17 -2016-10-17 11:00:00,6615.9,0.0,73.34 -2016-10-17 12:00:00,6758.758,0.0,76.97 -2016-10-17 13:00:00,6853.958,0.0,78.53 -2016-10-17 14:00:00,6919.083,0.0,80.08 -2016-10-17 15:00:00,6969.733,0.0,80.01 -2016-10-17 16:00:00,6994.775,0.0,79.25 -2016-10-17 17:00:00,6991.9,0.0,77.06 -2016-10-17 18:00:00,6882.258,0.0,75.91 -2016-10-17 19:00:00,6826.258,0.0,73.96 -2016-10-17 20:00:00,6596.65,0.0,72.06 -2016-10-17 21:00:00,6312.267,0.0,72.1 -2016-10-17 22:00:00,5953.408,0.0,70.04 -2016-10-17 23:00:00,5496.433,0.0,69.69 -2016-10-18 00:00:00,5075.208,0.0,68.25 -2016-10-18 01:00:00,4805.55,0.0,68.48 -2016-10-18 02:00:00,4626.025,0.0,68.28 -2016-10-18 03:00:00,4527.317,0.0,66.48 -2016-10-18 04:00:00,4535.992,0.0,65.99 -2016-10-18 05:00:00,4746.458,0.0,64.96 -2016-10-18 06:00:00,5334.567,0.0,65.08 -2016-10-18 07:00:00,5931.275,0.0,64.2 -2016-10-18 08:00:00,6341.258,0.0,66.61 -2016-10-18 09:00:00,6654.608,0.0,68.27 -2016-10-18 10:00:00,6879.108,0.0,72.06 -2016-10-18 11:00:00,7050.583,0.0,75.81 -2016-10-18 12:00:00,7195.983,0.0,77.56 -2016-10-18 13:00:00,7324.808,0.0,80.06 -2016-10-18 14:00:00,7395.35,0.0,80.79 -2016-10-18 15:00:00,7483.917,0.0,81.8 -2016-10-18 16:00:00,7486.158,0.0,80.47 -2016-10-18 17:00:00,7417.092,0.0,78.31 -2016-10-18 18:00:00,7248.1,0.0,76.03 -2016-10-18 19:00:00,7151.833,0.0,73.54 -2016-10-18 20:00:00,6932.175,0.0,72.28 -2016-10-18 21:00:00,6628.433,0.0,73.2 -2016-10-18 22:00:00,6246.275,0.0,71.83 -2016-10-18 23:00:00,5779.067,0.0,71.51 -2016-10-19 00:00:00,5334.058,0.0,71.22 -2016-10-19 01:00:00,5057.342,0.0,70.71 -2016-10-19 02:00:00,4875.858,0.0,70.72 -2016-10-19 03:00:00,4776.283,0.0,69.83 -2016-10-19 04:00:00,4777.382,0.0,68.67 -2016-10-19 06:00:00,5631.942,0.0,68.85 -2016-10-19 07:00:00,6269.508,0.0,68.97 -2016-10-19 08:00:00,6677.367,0.0,69.41 -2016-10-19 09:00:00,7037.825,0.0,71.78 -2016-10-19 10:00:00,7273.133,0.0,75.92 -2016-10-19 11:00:00,7447.192,0.0,78.44 -2016-10-19 12:00:00,7617.308,0.0,80.79 -2016-10-19 13:00:00,7758.608,0.0,83.19 -2016-10-19 14:00:00,7827.892,0.0,83.66 -2016-10-19 15:00:00,7853.3,0.0,84.8 -2016-10-19 16:00:00,7844.158,0.0,83.3 -2016-10-19 17:00:00,7703.017,0.0,80.99 -2016-10-19 18:00:00,7451.05,0.0,77.58 -2016-10-19 19:00:00,7261.092,0.0,74.63 -2016-10-19 20:00:00,6951.408,0.0,72.3 -2016-10-19 21:00:00,6583.467,0.0,71.63 -2016-10-19 22:00:00,6180.033,0.0,68.63 -2016-10-19 23:00:00,5702.017,0.0,67.27 -2016-10-20 00:00:00,5230.725,0.0,65.9 -2016-10-20 01:00:00,4892.175,0.0,65.36 -2016-10-20 02:00:00,4698.636,0.0,64.19 -2016-10-20 03:00:00,4576.358,0.0,62.97 -2016-10-20 04:00:00,4561.173,0.0,62.19 -2016-10-20 05:00:00,4719.208,0.0,61.61 -2016-10-20 06:00:00,5277.083,0.0,61.02 -2016-10-20 07:00:00,5850.542,0.0,61.3 -2016-10-20 08:00:00,6231.118,0.0,62.67 -2016-10-20 09:00:00,6489.317,0.0,64.27 -2016-10-20 10:00:00,6661.325,0.0,67.01 -2016-10-20 11:00:00,6751.75,0.0,69.62 -2016-10-20 12:00:00,6801.267,0.0,70.91 -2016-10-20 13:00:00,6823.133,0.0,70.87 -2016-10-20 14:00:00,6816.208,0.0,69.93 -2016-10-20 15:00:00,6856.342,0.0,68.86 -2016-10-20 16:00:00,6893.817,0.0,68.03 -2016-10-20 17:00:00,6920.0,0.0,67.22 -2016-10-20 18:00:00,6815.692,0.0,66.72 -2016-10-20 19:00:00,6659.508,0.0,66.33 -2016-10-20 20:00:00,6439.683,0.0,65.96 -2016-10-20 21:00:00,6191.258,0.0,66.16 -2016-10-20 22:00:00,5860.892,0.0,66.4 -2016-10-20 23:00:00,5472.283,0.0,66.59 -2016-10-21 00:00:00,5117.792,0.0,66.84 -2016-10-21 01:00:00,4871.933,0.0,68.06 -2016-10-21 02:00:00,4713.167,0.0,68.29 -2016-10-21 03:00:00,4645.15,0.0,68.21 -2016-10-21 04:00:00,4646.833,0.0,68.2 -2016-10-21 05:00:00,4846.267,0.0,67.61 -2016-10-21 06:00:00,5434.95,0.0,66.45 -2016-10-21 07:00:00,6088.408,0.0,67.05 -2016-10-21 08:00:00,6537.667,0.0049,66.77 -2016-10-21 09:00:00,6880.475,0.2421,68.43 -2016-10-21 10:00:00,7030.667,0.027,68.55 -2016-10-21 11:00:00,7065.683,0.01,69.74 -2016-10-21 12:00:00,7072.692,0.0254,70.12 -2016-10-21 13:00:00,7052.558,0.0666,70.47 -2016-10-21 14:00:00,7023.683,0.0296,69.33 -2016-10-21 15:00:00,7039.783,0.0,70.71 -2016-10-21 16:00:00,7090.717,0.0,70.8 -2016-10-21 17:00:00,7040.475,0.0,70.21 -2016-10-21 18:00:00,6899.292,0.0,68.2 -2016-10-21 19:00:00,6750.725,0.0,66.96 -2016-10-21 20:00:00,6453.675,0.0,65.37 -2016-10-21 21:00:00,6207.775,0.0,66.83 -2016-10-21 22:00:00,5915.275,0.0,65.16 -2016-10-21 23:00:00,5549.35,0.0053,65.48 -2016-10-22 00:00:00,5031.117,0.0,64.02 -2016-10-22 01:00:00,4663.908,0.0,60.98 -2016-10-22 02:00:00,4457.233,0.0,57.72 -2016-10-22 03:00:00,4302.333,0.0211,56.12 -2016-10-22 04:00:00,4222.675,0.0098,54.99 -2016-10-22 05:00:00,4243.567,0.0296,53.5 -2016-10-22 06:00:00,4390.992,0.0132,51.34 -2016-10-22 07:00:00,4604.175,0.0425,50.63 -2016-10-22 08:00:00,4882.542,0.03,50.08 -2016-10-22 09:00:00,5123.333,0.0024,49.6 -2016-10-22 10:00:00,5288.317,0.0,49.37 -2016-10-22 11:00:00,5389.425,0.0029,49.36 -2016-10-22 12:00:00,5441.317,0.0155,49.58 -2016-10-22 13:00:00,5433.967,0.0045,49.01 -2016-10-22 14:00:00,5393.567,0.0,49.12 -2016-10-22 15:00:00,5348.258,0.0,49.75 -2016-10-22 16:00:00,5347.658,0.0024,50.41 -2016-10-22 17:00:00,5402.683,0.003,48.83 -2016-10-22 18:00:00,5527.958,0.025,47.57 -2016-10-22 19:00:00,5537.65,0.0,47.52 -2016-10-22 20:00:00,5452.917,0.0025,48.11 -2016-10-22 21:00:00,5322.017,0.0,48.87 -2016-10-22 22:00:00,5129.683,0.0,48.74 -2016-10-22 23:00:00,4858.992,0.0,48.16 -2016-10-23 00:00:00,4582.45,0.0,47.86 -2016-10-23 01:00:00,4348.592,0.0,46.94 -2016-10-23 02:00:00,4176.608,0.0,46.75 -2016-10-23 03:00:00,4068.667,0.0,46.26 -2016-10-23 04:00:00,4023.175,0.0,46.55 -2016-10-23 05:00:00,4055.175,0.0,45.16 -2016-10-23 06:00:00,4162.417,0.0,44.69 -2016-10-23 07:00:00,4306.908,0.0,44.12 -2016-10-23 08:00:00,4547.317,0.0,45.57 -2016-10-23 09:00:00,4790.808,0.0,48.19 -2016-10-23 10:00:00,4984.8,0.0,51.76 -2016-10-23 11:00:00,5112.0,0.0,55.79 -2016-10-23 12:00:00,5162.325,0.0,58.1 -2016-10-23 13:00:00,5167.758,0.0,60.12 -2016-10-23 14:00:00,5164.675,0.0,60.61 -2016-10-23 15:00:00,5166.742,0.0,61.36 -2016-10-23 16:00:00,5193.475,0.0,61.33 -2016-10-23 17:00:00,5249.975,0.0,60.64 -2016-10-23 18:00:00,5445.567,0.0,59.57 -2016-10-23 19:00:00,5520.7,0.0,57.29 -2016-10-23 20:00:00,5458.825,0.0,56.1 -2016-10-23 21:00:00,5303.9,0.0,55.88 -2016-10-23 22:00:00,5042.442,0.0,55.64 -2016-10-23 23:00:00,4719.458,0.0,55.63 -2016-10-24 00:00:00,4428.833,0.0,55.22 -2016-10-24 01:00:00,4219.867,0.0,54.39 -2016-10-24 02:00:00,4087.217,0.0075,54.77 -2016-10-24 03:00:00,4034.783,0.0,54.78 -2016-10-24 04:00:00,4057.358,0.0,52.94 -2016-10-24 05:00:00,4259.133,0.0,51.44 -2016-10-24 06:00:00,4798.292,0.0,50.44 -2016-10-24 07:00:00,5347.767,0.0,51.16 -2016-10-24 08:00:00,5694.883,0.0,52.04 -2016-10-24 09:00:00,5921.8,0.0,53.88 -2016-10-24 10:00:00,6019.933,0.0,56.79 -2016-10-24 11:00:00,6071.283,0.0,57.69 -2016-10-24 12:00:00,6088.183,0.0,58.91 -2016-10-24 13:00:00,6080.5,0.0,60.24 -2016-10-24 14:00:00,6059.667,0.0,61.03 -2016-10-24 15:00:00,6055.25,0.0,61.12 -2016-10-24 16:00:00,6088.708,0.0,59.62 -2016-10-24 17:00:00,6107.55,0.0,58.35 -2016-10-24 18:00:00,6122.975,0.0,55.98 -2016-10-24 19:00:00,6089.592,0.0,53.36 -2016-10-24 20:00:00,5925.858,0.0,50.26 -2016-10-24 21:00:00,5685.083,0.0,50.12 -2016-10-24 22:00:00,5346.575,0.0,49.0 -2016-10-24 23:00:00,4912.25,0.0,48.47 -2016-10-25 00:00:00,4524.325,0.0,47.97 -2016-10-25 01:00:00,4281.317,0.0,46.68 -2016-10-25 02:00:00,4138.342,0.0,46.12 -2016-10-25 03:00:00,4072.825,0.0,46.13 -2016-10-25 04:00:00,4086.8,0.0,45.78 -2016-10-25 05:00:00,4307.475,0.0,45.08 -2016-10-25 06:00:00,4845.525,0.0,45.12 -2016-10-25 07:00:00,5415.933,0.0,45.76 -2016-10-25 08:00:00,5731.475,0.0,45.76 -2016-10-25 09:00:00,5937.025,0.0,47.51 -2016-10-25 10:00:00,6033.008,0.0,49.4 -2016-10-25 11:00:00,6068.808,0.0,50.32 -2016-10-25 12:00:00,6085.408,0.0,50.03 -2016-10-25 13:00:00,6083.817,0.0,51.34 -2016-10-25 14:00:00,6057.708,0.0,51.77 -2016-10-25 15:00:00,6059.458,0.0,52.48 -2016-10-25 16:00:00,6107.942,0.0,51.88 -2016-10-25 17:00:00,6156.25,0.0,50.38 -2016-10-25 18:00:00,6200.275,0.0,49.08 -2016-10-25 19:00:00,6154.542,0.0,47.45 -2016-10-25 20:00:00,5996.792,0.0,45.27 -2016-10-25 21:00:00,5770.858,0.0,45.82 -2016-10-25 22:00:00,5438.042,0.0,44.89 -2016-10-25 23:00:00,5006.375,0.0,43.48 -2016-10-26 00:00:00,4602.6,0.0,43.19 -2016-10-26 01:00:00,4349.642,0.0,41.7 -2016-10-26 02:00:00,4207.308,0.0,41.14 -2016-10-26 03:00:00,4140.642,0.0,40.02 -2016-10-26 04:00:00,4166.825,0.0,38.69 -2016-10-26 05:00:00,4386.4,0.0,38.54 -2016-10-26 06:00:00,4944.342,0.0,36.93 -2016-10-26 07:00:00,5533.333,0.0,37.85 -2016-10-26 08:00:00,5855.617,0.0,39.45 -2016-10-26 09:00:00,6076.217,0.0,41.13 -2016-10-26 10:00:00,6150.825,0.0,44.5 -2016-10-26 11:00:00,6171.242,0.0,47.36 -2016-10-26 12:00:00,6178.792,0.0,48.36 -2016-10-26 13:00:00,6162.908,0.0,49.7 -2016-10-26 14:00:00,6159.492,0.0,50.87 -2016-10-26 15:00:00,6148.217,0.0,51.03 -2016-10-26 16:00:00,6184.275,0.0,50.5 -2016-10-26 17:00:00,6220.908,0.0,49.42 -2016-10-26 18:00:00,6276.892,0.0,47.05 -2016-10-26 19:00:00,6223.592,0.0,45.22 -2016-10-26 20:00:00,6039.483,0.0,43.63 -2016-10-26 21:00:00,5811.517,0.0,43.37 -2016-10-26 22:00:00,5484.708,0.0,43.21 -2016-10-26 23:00:00,5049.658,0.0,42.05 -2016-10-27 00:00:00,4664.367,0.0,42.52 -2016-10-27 01:00:00,4399.9,0.0,42.58 -2016-10-27 02:00:00,4252.5,0.0,42.66 -2016-10-27 03:00:00,4180.167,0.0,41.95 -2016-10-27 04:00:00,4205.375,0.0,42.32 -2016-10-27 05:00:00,4421.208,0.0,42.61 -2016-10-27 06:00:00,4970.35,0.0,42.52 -2016-10-27 07:00:00,5562.917,0.0035,42.66 -2016-10-27 08:00:00,5932.025,0.0092,42.72 -2016-10-27 09:00:00,6184.258,0.0066,42.04 -2016-10-27 10:00:00,6319.633,0.0161,42.83 -2016-10-27 11:00:00,6389.433,0.0054,42.92 -2016-10-27 12:00:00,6395.15,0.0025,43.03 -2016-10-27 13:00:00,6395.958,0.005,43.68 -2016-10-27 14:00:00,6397.1,0.0,44.73 -2016-10-27 15:00:00,6416.375,0.0,45.27 -2016-10-27 16:00:00,6464.025,0.0175,45.89 -2016-10-27 17:00:00,6516.042,0.012,47.46 -2016-10-27 18:00:00,6450.9,0.0365,48.99 -2016-10-27 19:00:00,6299.0,0.0366,51.58 -2016-10-27 20:00:00,6099.883,0.0356,53.84 -2016-10-27 21:00:00,5849.092,0.011,55.42 -2016-10-27 22:00:00,5493.0,0.0,55.34 -2016-10-27 23:00:00,5064.342,0.0134,54.31 -2016-10-28 00:00:00,4667.342,0.0,54.03 -2016-10-28 01:00:00,4411.333,0.0,53.08 -2016-10-28 02:00:00,4252.233,0.0,50.15 -2016-10-28 03:00:00,4174.558,0.0,47.41 -2016-10-28 04:00:00,4184.467,0.0,45.5 -2016-10-28 05:00:00,4389.208,0.0,44.9 -2016-10-28 06:00:00,4925.667,0.0,45.23 -2016-10-28 07:00:00,5521.458,0.0,44.95 -2016-10-28 08:00:00,5860.25,0.0,44.9 -2016-10-28 09:00:00,6078.992,0.0,45.43 -2016-10-28 10:00:00,6157.9,0.0,46.67 -2016-10-28 11:00:00,6217.108,0.0,47.23 -2016-10-28 12:00:00,6233.417,0.0,47.58 -2016-10-28 13:00:00,6214.7,0.0,47.83 -2016-10-28 14:00:00,6163.45,0.0,47.26 -2016-10-28 15:00:00,6144.75,0.0,48.63 -2016-10-28 16:00:00,6176.9,0.0,47.56 -2016-10-28 17:00:00,6207.167,0.0,46.79 -2016-10-28 18:00:00,6214.358,0.0,45.14 -2016-10-28 19:00:00,6127.833,0.0,44.14 -2016-10-28 20:00:00,5942.992,0.0,43.39 -2016-10-28 21:00:00,5719.992,0.0,42.94 -2016-10-28 22:00:00,5467.175,0.0,42.49 -2016-10-28 23:00:00,5103.317,0.0,42.08 -2016-10-29 00:00:00,4738.942,0.0,41.47 -2016-10-29 01:00:00,4488.908,0.0,40.31 -2016-10-29 02:00:00,4326.175,0.0,40.23 -2016-10-29 03:00:00,4230.717,0.0,40.93 -2016-10-29 04:00:00,4188.992,0.0,38.77 -2016-10-29 05:00:00,4254.008,0.0,38.48 -2016-10-29 06:00:00,4438.542,0.0,38.6 -2016-10-29 07:00:00,4656.633,0.0,37.44 -2016-10-29 08:00:00,4890.258,0.0,40.39 -2016-10-29 09:00:00,5137.967,0.0,43.76 -2016-10-29 10:00:00,5319.808,0.0,49.49 -2016-10-29 11:00:00,5375.233,0.0,51.27 -2016-10-29 12:00:00,5367.35,0.0,53.48 -2016-10-29 13:00:00,5318.708,0.0,57.15 -2016-10-29 14:00:00,5277.283,0.0,60.53 -2016-10-29 15:00:00,5263.667,0.0,62.07 -2016-10-29 16:00:00,5260.408,0.0,63.08 -2016-10-29 17:00:00,5344.033,0.0,62.2 -2016-10-29 18:00:00,5536.1,0.0,61.28 -2016-10-29 19:00:00,5568.367,0.0,60.0 -2016-10-29 20:00:00,5464.492,0.0,60.74 -2016-10-29 21:00:00,5331.65,0.0,61.68 -2016-10-29 22:00:00,5137.483,0.0,61.21 -2016-10-29 23:00:00,4868.45,0.0,61.73 -2016-10-30 00:00:00,4603.633,0.0,61.09 -2016-10-30 01:00:00,4382.75,0.0,61.36 -2016-10-30 02:00:00,4213.7,0.0,60.06 -2016-10-30 03:00:00,4131.358,0.0,60.86 -2016-10-30 04:00:00,4100.642,0.0,61.34 -2016-10-30 05:00:00,4127.708,0.0,61.53 -2016-10-30 06:00:00,4225.617,0.0,60.72 -2016-10-30 07:00:00,4348.367,0.0,61.45 -2016-10-30 08:00:00,4577.083,0.0,62.12 -2016-10-30 09:00:00,4832.667,0.0,63.79 -2016-10-30 10:00:00,5069.367,0.0,66.79 -2016-10-30 11:00:00,5236.3,0.0,70.36 -2016-10-30 12:00:00,5368.45,0.0,72.97 -2016-10-30 13:00:00,5452.4,0.0,74.48 -2016-10-30 14:00:00,5503.183,0.0,74.76 -2016-10-30 15:00:00,5514.725,0.0,73.46 -2016-10-30 16:00:00,5571.367,0.2483,72.26 -2016-10-30 17:00:00,5691.85,0.0114,67.88 -2016-10-30 18:00:00,5793.133,0.0027,61.25 -2016-10-30 19:00:00,5733.292,0.0,60.08 -2016-10-30 20:00:00,5625.758,0.0026,57.82 -2016-10-30 21:00:00,5438.042,0.0,57.37 -2016-10-30 22:00:00,5169.167,0.0,56.88 -2016-10-30 23:00:00,4822.242,0.0,55.26 -2016-10-31 00:00:00,4512.875,0.0,54.5 -2016-10-31 01:00:00,4281.067,0.0,53.34 -2016-10-31 02:00:00,4126.158,0.0021,51.17 -2016-10-31 03:00:00,4054.883,0.0,48.64 -2016-10-31 04:00:00,4076.842,0.0,47.16 -2016-10-31 05:00:00,4291.567,0.0,46.01 -2016-10-31 06:00:00,4828.1,0.0,45.23 -2016-10-31 07:00:00,5440.992,0.0,44.74 -2016-10-31 08:00:00,5787.817,0.0,44.81 -2016-10-31 09:00:00,6005.883,0.0,42.78 -2016-10-31 10:00:00,6109.258,0.0,47.61 -2016-10-31 11:00:00,6142.125,0.0,49.41 -2016-10-31 12:00:00,6150.717,0.0,50.62 -2016-10-31 13:00:00,6146.45,0.0,52.11 -2016-10-31 14:00:00,6119.292,0.0,54.18 -2016-10-31 15:00:00,6117.408,0.0,53.83 -2016-10-31 16:00:00,6142.008,0.0,54.47 -2016-10-31 17:00:00,6140.95,0.0,53.42 -2016-10-31 18:00:00,6158.75,0.0,51.84 -2016-10-31 19:00:00,6062.725,0.0,49.25 -2016-10-31 20:00:00,5908.508,0.0,48.69 -2016-10-31 21:00:00,5706.733,0.0,45.83 -2016-10-31 22:00:00,5374.208,0.0,45.97 -2016-10-31 23:00:00,4987.4,0.0,44.95 -2016-11-01 00:00:00,4591.167,0.0,44.77 -2016-11-01 01:00:00,4349.467,0.0,43.47 -2016-11-01 02:00:00,4212.708,0.0,43.02 -2016-11-01 03:00:00,4150.692,0.0,42.18 -2016-11-01 04:00:00,4174.467,0.0,41.69 -2016-11-01 05:00:00,4380.292,0.0,39.78 -2016-11-01 06:00:00,4920.8,0.0,40.48 -2016-11-01 07:00:00,5508.058,0.0,40.3 -2016-11-01 08:00:00,5821.308,0.0,41.65 -2016-11-01 09:00:00,6029.017,0.0,45.0 -2016-11-01 10:00:00,6105.692,0.0,49.52 -2016-11-01 11:00:00,6135.754,0.0,51.87 -2016-11-01 12:00:00,6147.158,0.0,56.5 -2016-11-01 13:00:00,6143.933,0.0,58.75 -2016-11-01 14:00:00,6120.725,0.0,58.64 -2016-11-01 15:00:00,6137.275,0.0,58.62 -2016-11-01 16:00:00,6171.875,0.0,57.86 -2016-11-01 17:00:00,6215.075,0.0,56.63 -2016-11-01 18:00:00,6273.767,0.0,55.07 -2016-11-01 19:00:00,6174.392,0.0,54.37 -2016-11-01 20:00:00,5987.792,0.0,53.35 -2016-11-01 21:00:00,5729.85,0.0,53.69 -2016-11-01 22:00:00,5409.633,0.0,53.72 -2016-11-01 23:00:00,4990.483,0.0,53.51 -2016-11-02 00:00:00,4577.733,0.0,53.95 -2016-11-02 01:00:00,4322.758,0.0,54.28 -2016-11-02 02:00:00,4168.017,0.0,54.7 -2016-11-02 03:00:00,4102.458,0.0,54.26 -2016-11-02 04:00:00,4111.617,0.0,54.01 -2016-11-02 05:00:00,4316.825,0.0,53.71 -2016-11-02 06:00:00,4841.992,0.0,52.35 -2016-11-02 07:00:00,5474.308,0.0,52.24 -2016-11-02 08:00:00,5809.608,0.0,53.91 -2016-11-02 09:00:00,6034.625,0.0,55.93 -2016-11-02 10:00:00,6116.308,0.0,58.78 -2016-11-02 11:00:00,6214.892,0.0,60.79 -2016-11-02 12:00:00,6267.358,0.0,63.46 -2016-11-02 13:00:00,6326.95,0.0,66.83 -2016-11-02 14:00:00,6355.983,0.0,67.6 -2016-11-02 15:00:00,6379.85,0.0,68.83 -2016-11-02 16:00:00,6445.533,0.0,69.03 -2016-11-02 17:00:00,6450.933,0.0,67.83 -2016-11-02 18:00:00,6436.383,0.0,67.22 -2016-11-02 19:00:00,6308.492,0.0,64.46 -2016-11-02 20:00:00,6086.8,0.0,62.21 -2016-11-02 21:00:00,5850.725,0.0,64.37 -2016-11-02 22:00:00,5507.442,0.0,63.12 -2016-11-02 23:00:00,5088.9,0.0,61.66 -2016-11-03 00:00:00,4752.092,0.0,60.45 -2016-11-03 01:00:00,4474.183,0.0,60.27 -2016-11-03 02:00:00,4303.917,0.0,61.23 -2016-11-03 03:00:00,4225.108,0.0,60.35 -2016-11-03 04:00:00,4238.742,0.0,60.22 -2016-11-03 05:00:00,4382.283,0.0,58.32 -2016-11-03 06:00:00,4942.275,0.0,57.15 -2016-11-03 07:00:00,5557.9,0.0,58.28 -2016-11-03 08:00:00,5945.067,0.0,59.59 -2016-11-03 09:00:00,6218.758,0.0,61.97 -2016-11-03 10:00:00,6342.358,0.0,64.95 -2016-11-03 11:00:00,6382.558,0.0,66.99 -2016-11-03 12:00:00,6439.133,0.0085,67.76 -2016-11-03 13:00:00,6484.9,0.0,69.63 -2016-11-03 14:00:00,6487.25,0.0,71.08 -2016-11-03 15:00:00,6500.733,0.0,71.33 -2016-11-03 16:00:00,6560.042,0.0,70.95 -2016-11-03 17:00:00,6564.592,0.0,69.89 -2016-11-03 18:00:00,6431.075,0.0,66.62 -2016-11-03 19:00:00,6237.667,0.0,63.34 -2016-11-03 20:00:00,5997.083,0.0,59.98 -2016-11-03 21:00:00,5724.65,0.0,59.32 -2016-11-03 22:00:00,5374.75,0.0,58.05 -2016-11-03 23:00:00,4963.675,0.0,57.45 -2016-11-04 00:00:00,4580.333,0.0,56.53 -2016-11-04 01:00:00,4322.358,0.0,56.1 -2016-11-04 02:00:00,4166.783,0.0,54.89 -2016-11-04 03:00:00,4081.508,0.0,55.36 -2016-11-04 04:00:00,4086.592,0.0,54.48 -2016-11-04 05:00:00,4274.917,0.0,52.77 -2016-11-04 06:00:00,4801.058,0.0,52.09 -2016-11-04 07:00:00,5416.108,0.0,50.98 -2016-11-04 08:00:00,5762.692,0.0,52.18 -2016-11-04 09:00:00,5977.258,0.0,53.09 -2016-11-04 10:00:00,6086.792,0.0,55.17 -2016-11-04 11:00:00,6117.275,0.0,56.97 -2016-11-04 12:00:00,6135.05,0.0,59.72 -2016-11-04 13:00:00,6123.158,0.0,59.45 -2016-11-04 14:00:00,6091.217,0.0,60.52 -2016-11-04 15:00:00,6088.592,0.0,60.56 -2016-11-04 16:00:00,6115.158,0.0,60.05 -2016-11-04 17:00:00,6101.617,0.0,57.75 -2016-11-04 18:00:00,6102.7,0.0,55.64 -2016-11-04 19:00:00,5976.392,0.0,53.66 -2016-11-04 20:00:00,5767.775,0.0,52.05 -2016-11-04 21:00:00,5571.442,0.0,51.44 -2016-11-04 22:00:00,5292.2,0.0,50.6 -2016-11-04 23:00:00,4959.917,0.0,48.58 -2016-11-05 00:00:00,4608.3,0.0,47.49 -2016-11-05 01:00:00,4357.692,0.0,47.22 -2016-11-05 02:00:00,4203.558,0.0,45.83 -2016-11-05 03:00:00,4100.333,0.0,45.0 -2016-11-05 04:00:00,4067.092,0.0,44.28 -2016-11-05 05:00:00,4131.767,0.0,42.91 -2016-11-05 06:00:00,4321.083,0.0,42.71 -2016-11-05 07:00:00,4568.642,0.0,43.14 -2016-11-05 08:00:00,4821.6,0.0,44.94 -2016-11-05 09:00:00,5054.142,0.0,47.82 -2016-11-05 10:00:00,5223.458,0.0,51.84 -2016-11-05 11:00:00,5313.533,0.0,54.45 -2016-11-05 12:00:00,5341.1,0.0,56.82 -2016-11-05 13:00:00,5301.983,0.0,60.23 -2016-11-05 14:00:00,5292.942,0.0,61.47 -2016-11-05 15:00:00,5278.342,0.0,62.08 -2016-11-05 16:00:00,5282.425,0.0,61.49 -2016-11-05 17:00:00,5361.242,0.0,61.05 -2016-11-05 18:00:00,5528.108,0.0,58.56 -2016-11-05 19:00:00,5537.65,0.0,58.25 -2016-11-05 20:00:00,5430.575,0.0,55.5 -2016-11-05 21:00:00,5289.767,0.0,55.79 -2016-11-05 22:00:00,5107.058,0.0,54.38 -2016-11-05 23:00:00,4854.892,0.0,53.25 -2016-11-06 00:00:00,4588.433,0.0,53.67 -2016-11-06 01:00:00,4371.694,0.0,54.13 -2016-11-06 02:00:00,4077.292,0.0,54.1 -2016-11-06 03:00:00,4019.8,, -2016-11-06 04:00:00,3999.292,0.0,53.66 -2016-11-06 05:00:00,4064.833,0.0,52.08 -2016-11-06 06:00:00,4190.567,0.0,50.65 -2016-11-06 07:00:00,4404.717,0.0,53.04 -2016-11-06 08:00:00,4646.642,0.0,53.59 -2016-11-06 09:00:00,4894.575,0.0,54.96 -2016-11-06 10:00:00,5056.783,0.0,56.36 -2016-11-06 11:00:00,5151.333,0.0,57.06 -2016-11-06 12:00:00,5183.567,0.0,57.99 -2016-11-06 13:00:00,5200.925,0.0,58.44 -2016-11-06 14:00:00,5202.817,0.0,57.37 -2016-11-06 15:00:00,5235.542,, -2016-11-06 16:00:00,5336.608,0.0,53.16 -2016-11-06 17:00:00,5604.725,0.0,51.01 -2016-11-06 18:00:00,5666.45,0.0,48.31 -2016-11-06 19:00:00,5604.4,0.0,49.2 -2016-11-06 20:00:00,5489.392,0.0,47.22 -2016-11-06 21:00:00,5315.608,0.0,45.56 -2016-11-06 22:00:00,5006.7,, -2016-11-06 23:00:00,4687.592,0.0,44.53 -2016-11-07 00:00:00,4415.4,0.0,43.61 -2016-11-07 01:00:00,4232.65,, -2016-11-07 02:00:00,4132.933,0.0,41.05 -2016-11-07 03:00:00,4098.5,0.0,41.86 -2016-11-07 04:00:00,4144.233,0.0,40.6 -2016-11-07 05:00:00,4403.567,0.0,39.65 -2016-11-07 06:00:00,4940.833,0.0,39.38 -2016-11-07 07:00:00,5497.983,0.0,41.18 -2016-11-07 08:00:00,5824.667,0.0,43.1 -2016-11-07 09:00:00,6055.467,0.0,45.7 -2016-11-07 10:00:00,6139.242,0.0,48.14 -2016-11-07 11:00:00,6177.492,, -2016-11-07 12:00:00,6184.95,0.0,51.54 -2016-11-07 13:00:00,6178.692,0.0,52.01 -2016-11-07 14:00:00,6155.292,0.0,53.4 -2016-11-07 15:00:00,6184.3,0.0,53.25 -2016-11-07 16:00:00,6278.958,0.0,52.77 -2016-11-07 17:00:00,6457.367,0.0,51.18 -2016-11-07 18:00:00,6350.308,0.0,49.14 -2016-11-07 19:00:00,6173.2,0.0,49.39 -2016-11-07 20:00:00,5969.125,0.0,47.28 -2016-11-07 21:00:00,5718.258,0.0,46.23 -2016-11-07 22:00:00,5388.858,0.0,45.95 -2016-11-07 23:00:00,4944.708,0.0,45.5 -2016-11-08 00:00:00,4570.917,0.0,44.79 -2016-11-08 01:00:00,4326.925,0.0,44.11 -2016-11-08 02:00:00,4200.658,0.0,43.12 -2016-11-08 03:00:00,4142.267,0.0,42.26 -2016-11-08 04:00:00,4193.842,0.0,41.98 -2016-11-08 05:00:00,4419.6,0.0,39.01 -2016-11-08 06:00:00,4892.425,0.0,41.01 -2016-11-08 07:00:00,5370.725,0.0,42.55 -2016-11-08 08:00:00,5756.508,0.0,46.08 -2016-11-08 09:00:00,5970.558,0.0,50.64 -2016-11-08 10:00:00,6061.267,0.0,57.07 -2016-11-08 11:00:00,6109.75,0.0,58.25 -2016-11-08 12:00:00,6143.392,0.0,62.39 -2016-11-08 13:00:00,6170.35,0.0,64.93 -2016-11-08 14:00:00,6177.542,0.0,66.19 -2016-11-08 15:00:00,6190.542,0.0,65.24 -2016-11-08 16:00:00,6272.85,0.0,64.26 -2016-11-08 17:00:00,6446.917,0.0,61.88 -2016-11-08 18:00:00,6317.725,0.0,58.49 -2016-11-08 19:00:00,6134.55,0.0,54.68 -2016-11-08 20:00:00,5917.85,0.0,56.77 -2016-11-08 21:00:00,5665.508,0.0,54.44 -2016-11-08 22:00:00,5358.375,0.0,55.45 -2016-11-08 23:00:00,4997.667,0.0,54.48 -2016-11-09 00:00:00,4671.467,0.0,54.52 -2016-11-09 01:00:00,4417.35,0.0,54.52 -2016-11-09 02:00:00,4246.342,0.0,53.82 -2016-11-09 03:00:00,4154.558,0.0,53.39 -2016-11-09 04:00:00,4147.467,0.0,51.76 -2016-11-09 05:00:00,4343.392,0.0,52.89 -2016-11-09 06:00:00,4886.608,0.0,52.94 -2016-11-09 07:00:00,5439.242,0.0,52.37 -2016-11-09 08:00:00,5816.783,0.0026,54.12 -2016-11-09 09:00:00,6035.708,0.0155,57.84 -2016-11-09 10:00:00,6157.033,0.0045,57.78 -2016-11-09 11:00:00,6190.667,0.0246,56.83 -2016-11-09 12:00:00,6226.267,0.0126,55.89 -2016-11-09 13:00:00,6240.258,0.0,55.78 -2016-11-09 14:00:00,6247.883,0.0,56.26 -2016-11-09 15:00:00,6280.908,0.0,55.66 -2016-11-09 16:00:00,6431.558,0.0,54.91 -2016-11-09 17:00:00,6532.9,0.0227,54.24 -2016-11-09 18:00:00,6357.725,0.0,53.94 -2016-11-09 19:00:00,6165.767,0.0031,53.6 -2016-11-09 20:00:00,5936.483,0.0,52.07 -2016-11-09 21:00:00,5682.508,0.0,50.4 -2016-11-09 22:00:00,5325.858,0.0,50.72 -2016-11-09 23:00:00,4899.842,0.0,49.37 -2016-11-10 00:00:00,4545.6,0.0,48.44 -2016-11-10 01:00:00,4309.558,0.0,47.74 -2016-11-10 02:00:00,4169.7,0.0,46.11 -2016-11-10 03:00:00,4122.542,0.0,44.28 -2016-11-10 04:00:00,4147.983,0.0,42.76 -2016-11-10 05:00:00,4385.925,0.0,41.28 -2016-11-10 06:00:00,4906.725,0.0,40.39 -2016-11-10 07:00:00,5449.167,0.0,41.65 -2016-11-10 08:00:00,5800.208,0.0,43.01 -2016-11-10 09:00:00,6041.517,0.0,45.08 -2016-11-10 10:00:00,6112.917,0.0,47.44 -2016-11-10 11:00:00,6142.525,0.0,50.35 -2016-11-10 12:00:00,6136.4,0.0,53.27 -2016-11-10 13:00:00,6138.858,0.0,55.1 -2016-11-10 14:00:00,6121.65,0.0,56.57 -2016-11-10 15:00:00,6138.833,0.0,55.9 -2016-11-10 16:00:00,6230.717,0.0,55.5 -2016-11-10 17:00:00,6425.717,0.0,54.14 -2016-11-10 18:00:00,6297.717,0.0,53.19 -2016-11-10 19:00:00,6110.825,0.0,52.26 -2016-11-10 20:00:00,5909.083,0.0,53.04 -2016-11-10 21:00:00,5683.175,0.0,52.16 -2016-11-10 22:00:00,5377.283,0.0,51.49 -2016-11-10 23:00:00,4965.992,0.0,51.19 -2016-11-11 00:00:00,4610.125,0.0,50.87 -2016-11-11 01:00:00,4349.75,0.0,50.53 -2016-11-11 02:00:00,4195.233,0.0,49.61 -2016-11-11 03:00:00,4129.517,0.0,49.23 -2016-11-11 04:00:00,4134.975,0.0,48.55 -2016-11-11 05:00:00,4312.642,0.0,47.64 -2016-11-11 06:00:00,4742.842,0.0,48.08 -2016-11-11 07:00:00,5205.8,0.0,49.15 -2016-11-11 08:00:00,5608.0,0.0,51.93 -2016-11-11 09:00:00,5865.108,0.0,54.67 -2016-11-11 10:00:00,5983.267,0.0,58.91 -2016-11-11 11:00:00,6018.65,0.0,61.35 -2016-11-11 12:00:00,6027.658,0.0,62.04 -2016-11-11 13:00:00,6011.017,0.0,60.79 -2016-11-11 14:00:00,5996.858,0.0,59.29 -2016-11-11 15:00:00,5992.208,0.0,57.03 -2016-11-11 16:00:00,6080.642,0.0,52.25 -2016-11-11 17:00:00,6277.617,0.0,50.43 -2016-11-11 18:00:00,6157.142,0.0,48.02 -2016-11-11 19:00:00,5965.8,0.0,45.12 -2016-11-11 20:00:00,5781.325,0.0,44.72 -2016-11-11 21:00:00,5581.292,0.0,43.17 -2016-11-11 22:00:00,5324.458,0.0,41.77 -2016-11-11 23:00:00,4981.092,0.0,41.08 -2016-11-12 00:00:00,4655.233,0.0,41.42 -2016-11-12 01:00:00,4438.967,0.0,40.2 -2016-11-12 02:00:00,4295.75,0.0,39.21 -2016-11-12 03:00:00,4213.067,0.0,38.47 -2016-11-12 04:00:00,4181.675,0.0,38.06 -2016-11-12 05:00:00,4254.092,0.0,36.74 -2016-11-12 06:00:00,4412.542,0.0,36.42 -2016-11-12 07:00:00,4637.617,0.0,37.27 -2016-11-12 08:00:00,4925.667,0.0,38.43 -2016-11-12 09:00:00,5162.633,0.0,40.97 -2016-11-12 10:00:00,5323.967,0.0,42.98 -2016-11-12 11:00:00,5393.9,0.0,46.12 -2016-11-12 12:00:00,5413.592,0.0,47.1 -2016-11-12 13:00:00,5379.517,0.0,48.67 -2016-11-12 14:00:00,5343.825,0.0,49.84 -2016-11-12 15:00:00,5338.05,0.0,50.64 -2016-11-12 16:00:00,5419.75,0.0,49.3 -2016-11-12 17:00:00,5648.25,0.0,47.62 -2016-11-12 18:00:00,5664.133,0.0,46.76 -2016-11-12 19:00:00,5594.425,0.0,45.27 -2016-11-12 20:00:00,5471.642,0.0,46.05 -2016-11-12 21:00:00,5341.167,0.0,44.47 -2016-11-12 22:00:00,5141.383,0.0,44.16 -2016-11-12 23:00:00,4876.017,0.0,43.55 -2016-11-13 00:00:00,4623.592,0.0,43.16 -2016-11-13 01:00:00,4398.992,0.0,42.43 -2016-11-13 02:00:00,4244.442,0.0,41.06 -2016-11-13 03:00:00,4156.233,0.0,40.64 -2016-11-13 04:00:00,4122.0,0.0,39.72 -2016-11-13 05:00:00,4161.558,0.0,38.99 -2016-11-13 06:00:00,4259.3,0.0,39.16 -2016-11-13 07:00:00,4406.467,0.0,40.05 -2016-11-13 08:00:00,4645.533,0.0,42.91 -2016-11-13 09:00:00,4880.242,0.0,46.11 -2016-11-13 10:00:00,5038.05,0.0,49.27 -2016-11-13 11:00:00,5158.025,0.0,52.18 -2016-11-13 12:00:00,5199.15,0.0,55.89 -2016-11-13 13:00:00,5198.0,0.0,59.35 -2016-11-13 14:00:00,5200.233,0.0,61.11 -2016-11-13 15:00:00,5215.175,0.0,60.21 -2016-11-13 16:00:00,5320.567,0.0,58.6 -2016-11-13 17:00:00,5578.433,0.0,56.32 -2016-11-13 18:00:00,5627.633,0.0,53.87 -2016-11-13 19:00:00,5594.442,0.0,50.59 -2016-11-13 20:00:00,5494.083,0.0,52.19 -2016-11-13 21:00:00,5328.975,0.0,51.49 -2016-11-13 22:00:00,5072.717,0.0,49.12 -2016-11-13 23:00:00,4737.208,0.0,47.66 -2016-11-14 00:00:00,4440.725,0.0,47.5 -2016-11-14 01:00:00,4238.85,0.0,47.16 -2016-11-14 02:00:00,4123.183,0.0,46.3 -2016-11-14 03:00:00,4070.917,0.0,45.22 -2016-11-14 04:00:00,4119.542,0.0,43.41 -2016-11-14 05:00:00,4366.117,0.0,43.4 -2016-11-14 06:00:00,4885.392,0.0,40.68 -2016-11-14 07:00:00,5425.508,0.0,42.87 -2016-11-14 08:00:00,5765.358,0.0,46.87 -2016-11-14 09:00:00,5952.633,0.0,51.02 -2016-11-14 10:00:00,6057.992,0.0,54.92 -2016-11-14 11:00:00,6095.175,0.0,57.85 -2016-11-14 12:00:00,6112.3,0.0,60.87 -2016-11-14 13:00:00,6124.008,0.0,62.29 -2016-11-14 14:00:00,6098.55,0.0,62.06 -2016-11-14 15:00:00,6139.033,0.0,60.36 -2016-11-14 16:00:00,6275.275,0.0,58.53 -2016-11-14 17:00:00,6453.633,0.0,56.7 -2016-11-14 18:00:00,6308.192,0.0,55.97 -2016-11-14 19:00:00,6125.725,0.0,55.39 -2016-11-14 20:00:00,5926.4,0.0,55.78 -2016-11-14 21:00:00,5683.342,0.0,55.8 -2016-11-14 22:00:00,5340.958,0.0048,53.81 -2016-11-14 23:00:00,4903.808,0.0,55.1 -2016-11-15 00:00:00,4514.083,0.0037,53.3 -2016-11-15 01:00:00,4268.883,0.0096,52.98 -2016-11-15 02:00:00,4131.567,0.003,52.55 -2016-11-15 03:00:00,4063.642,0.0111,52.14 -2016-11-15 04:00:00,4107.742,0.0,52.13 -2016-11-15 05:00:00,4332.892,0.0398,51.03 -2016-11-15 06:00:00,4877.2,0.0467,49.87 -2016-11-15 07:00:00,5477.358,0.0692,49.68 -2016-11-15 08:00:00,5909.842,0.0021,49.01 -2016-11-15 09:00:00,6191.958,0.0894,48.33 -2016-11-15 10:00:00,6349.208,0.0041,49.01 -2016-11-15 11:00:00,6408.683,0.1326,48.72 -2016-11-15 12:00:00,6405.492,0.0,48.95 -2016-11-15 13:00:00,6384.717,0.0,48.83 -2016-11-15 14:00:00,6352.808,0.0022,49.42 -2016-11-15 15:00:00,6354.783,0.0,49.99 -2016-11-15 16:00:00,6450.525,0.0,49.55 -2016-11-15 17:00:00,6581.433,0.0,48.82 -2016-11-15 18:00:00,6425.95,0.0,48.64 -2016-11-15 19:00:00,6228.958,0.0,48.29 -2016-11-15 20:00:00,6012.542,0.0,48.72 -2016-11-15 21:00:00,5765.592,0.0,49.48 -2016-11-15 22:00:00,5408.058,0.0,48.68 -2016-11-15 23:00:00,4964.192,0.0,48.28 -2016-11-16 00:00:00,4587.058,0.0,47.36 -2016-11-16 01:00:00,4337.308,0.0,46.92 -2016-11-16 02:00:00,4195.8,0.0,45.96 -2016-11-16 03:00:00,4135.15,0.0,45.29 -2016-11-16 04:00:00,4165.675,0.0,45.0 -2016-11-16 05:00:00,4383.258,0.0,44.47 -2016-11-16 06:00:00,4931.558,0.0,44.46 -2016-11-16 07:00:00,5460.275,0.0,45.48 -2016-11-16 08:00:00,5813.425,0.0,48.04 -2016-11-16 09:00:00,6011.875,0.0,50.45 -2016-11-16 10:00:00,6088.258,0.0,54.0 -2016-11-16 11:00:00,6119.283,0.0,55.83 -2016-11-16 12:00:00,6115.625,0.0,59.51 -2016-11-16 13:00:00,6125.317,0.0,60.38 -2016-11-16 14:00:00,6109.575,0.0,60.98 -2016-11-16 15:00:00,6143.292,0.0,60.39 -2016-11-16 16:00:00,6263.733,0.0,59.41 -2016-11-16 17:00:00,6451.442,0.0,58.0 -2016-11-16 18:00:00,6303.975,0.0,54.51 -2016-11-16 19:00:00,6127.633,0.0,54.15 -2016-11-16 20:00:00,5922.9,0.0,53.41 -2016-11-16 21:00:00,5689.558,0.0,51.91 -2016-11-16 22:00:00,5350.85,0.0,51.33 -2016-11-16 23:00:00,4932.2,0.0,50.41 -2016-11-17 00:00:00,4528.9,0.0,50.03 -2016-11-17 01:00:00,4274.683,0.0,49.33 -2016-11-17 02:00:00,4137.025,0.0,47.89 -2016-11-17 03:00:00,4078.6,0.0,47.88 -2016-11-17 04:00:00,4107.842,0.0,48.16 -2016-11-17 05:00:00,4334.467,0.0,47.41 -2016-11-17 06:00:00,4853.417,0.0,46.33 -2016-11-17 07:00:00,5397.583,0.0,48.91 -2016-11-17 08:00:00,5774.008,0.0,50.37 -2016-11-17 09:00:00,6009.3,0.0,53.76 -2016-11-17 10:00:00,6079.35,0.0,56.68 -2016-11-17 11:00:00,6109.167,0.0,59.6 -2016-11-17 12:00:00,6128.217,0.0,60.88 -2016-11-17 13:00:00,6129.95,0.0,61.47 -2016-11-17 14:00:00,6114.142,0.0,61.7 -2016-11-17 15:00:00,6142.55,0.0,60.67 -2016-11-17 16:00:00,6265.442,0.0,59.1 -2016-11-17 17:00:00,6446.442,0.0,57.45 -2016-11-17 18:00:00,6305.142,0.0,54.92 -2016-11-17 19:00:00,6121.9,0.0,53.0 -2016-11-17 20:00:00,5930.258,0.0,52.27 -2016-11-17 21:00:00,5694.133,0.0,51.14 -2016-11-17 22:00:00,5369.067,0.0,49.55 -2016-11-17 23:00:00,4968.275,0.0,48.27 -2016-11-18 00:00:00,4576.875,0.0,47.89 -2016-11-18 01:00:00,4343.575,0.0,46.69 -2016-11-18 02:00:00,4195.092,0.0,45.76 -2016-11-18 03:00:00,4131.05,0.0,45.76 -2016-11-18 04:00:00,4159.917,0.0,44.59 -2016-11-18 05:00:00,4360.667,0.0,44.2 -2016-11-18 06:00:00,4879.867,0.0,43.09 -2016-11-18 07:00:00,5413.442,0.0,44.2 -2016-11-18 08:00:00,5773.158,0.0,46.89 -2016-11-18 09:00:00,5998.575,0.0,49.92 -2016-11-18 10:00:00,6099.967,0.0,53.39 -2016-11-18 11:00:00,6134.1,0.0,56.0 -2016-11-18 12:00:00,6146.825,0.0,60.26 -2016-11-18 13:00:00,6148.133,0.0,61.41 -2016-11-18 14:00:00,6136.583,0.0,63.42 -2016-11-18 15:00:00,6156.575,0.0,62.66 -2016-11-18 16:00:00,6232.258,0.0,62.01 -2016-11-18 17:00:00,6396.592,0.0,60.75 -2016-11-18 18:00:00,6219.283,0.0,56.29 -2016-11-18 19:00:00,6014.608,0.0,56.73 -2016-11-18 20:00:00,5799.725,0.0,53.92 -2016-11-18 21:00:00,5578.883,0.0,54.04 -2016-11-18 22:00:00,5306.517,0.0,52.68 -2016-11-18 23:00:00,4954.658,0.0,50.31 -2016-11-19 00:00:00,4620.542,0.0,50.89 -2016-11-19 01:00:00,4378.9,0.0,50.07 -2016-11-19 02:00:00,4222.642,0.0,48.6 -2016-11-19 03:00:00,4138.525,0.0,47.45 -2016-11-19 04:00:00,4102.467,0.0,46.08 -2016-11-19 05:00:00,4172.483,0.0,45.69 -2016-11-19 06:00:00,4342.133,0.0,44.85 -2016-11-19 07:00:00,4556.283,0.0,46.41 -2016-11-19 08:00:00,4848.675,0.0,49.52 -2016-11-19 09:00:00,5090.95,0.0,53.97 -2016-11-19 10:00:00,5259.9,0.0,56.86 -2016-11-19 11:00:00,5333.725,0.0,60.38 -2016-11-19 12:00:00,5370.267,0.0,61.99 -2016-11-19 13:00:00,5350.092,0.0,62.33 -2016-11-19 14:00:00,5339.133,0.0,61.28 -2016-11-19 15:00:00,5328.55,0.0,58.54 -2016-11-19 16:00:00,5422.558,0.0,57.53 -2016-11-19 17:00:00,5625.0,0.0,55.51 -2016-11-19 18:00:00,5652.45,0.0,54.71 -2016-11-19 19:00:00,5582.508,0.0,54.67 -2016-11-19 20:00:00,5446.092,0.0,53.71 -2016-11-19 21:00:00,5294.175,0.0595,54.21 -2016-11-19 22:00:00,5113.633,0.0026,51.98 -2016-11-19 23:00:00,4869.133,0.132,48.4 -2016-11-20 00:00:00,4640.067,0.198,41.9 -2016-11-20 01:00:00,4424.792,0.0241,39.09 -2016-11-20 02:00:00,4269.117,0.0035,37.98 -2016-11-20 03:00:00,4178.758,0.0024,36.85 -2016-11-20 04:00:00,4139.425,0.0,37.62 -2016-11-20 05:00:00,4176.158,0.0,38.84 -2016-11-20 06:00:00,4280.8,0.0,39.02 -2016-11-20 07:00:00,4449.15,0.0,38.98 -2016-11-20 08:00:00,4707.575,0.0,39.65 -2016-11-20 09:00:00,4971.45,0.0,39.86 -2016-11-20 10:00:00,5215.483,0.0,40.58 -2016-11-20 11:00:00,5354.675,0.0,40.96 -2016-11-20 12:00:00,5450.017,0.0,40.86 -2016-11-20 13:00:00,5490.992,0.0021,41.3 -2016-11-20 14:00:00,5511.908,0.0,41.89 -2016-11-20 15:00:00,5559.642,0.0,40.29 -2016-11-20 16:00:00,5691.808,0.0,40.2 -2016-11-20 17:00:00,5899.492,0.0,40.31 -2016-11-20 18:00:00,5917.967,0.0,38.62 -2016-11-20 19:00:00,5849.333,0.0,38.52 -2016-11-20 20:00:00,5756.108,0.0,38.92 -2016-11-20 21:00:00,5581.85,0.0,39.39 -2016-11-20 22:00:00,5326.242,0.0,38.95 -2016-11-20 23:00:00,4978.55,0.0,37.57 -2016-11-21 00:00:00,4665.425,0.0,38.0 -2016-11-21 01:00:00,4461.108,0.0,38.07 -2016-11-21 02:00:00,4348.767,0.0036,37.67 -2016-11-21 03:00:00,4285.2,0.0,37.1 -2016-11-21 04:00:00,4326.833,0.0,36.64 -2016-11-21 05:00:00,4571.167,0.0,36.3 -2016-11-21 06:00:00,5115.275,0.0,36.19 -2016-11-21 07:00:00,5676.575,0.0,35.94 -2016-11-21 08:00:00,6072.217,0.0,36.72 -2016-11-21 09:00:00,6333.033,0.0,37.69 -2016-11-21 10:00:00,6449.575,0.0,38.05 -2016-11-21 11:00:00,6486.233,0.0,38.77 -2016-11-21 12:00:00,6485.175,0.0,39.35 -2016-11-21 13:00:00,6514.792,0.0,40.6 -2016-11-21 14:00:00,6495.708,0.0,39.99 -2016-11-21 15:00:00,6529.3,0.0,40.28 -2016-11-21 16:00:00,6639.558,0.0,39.34 -2016-11-21 17:00:00,6797.308,0.0,38.91 -2016-11-21 18:00:00,6672.292,0.0,37.87 -2016-11-21 19:00:00,6480.558,0.0,37.7 -2016-11-21 20:00:00,6274.342,0.0,38.06 -2016-11-21 21:00:00,6047.075,0.0,38.35 -2016-11-21 22:00:00,5708.625,0.0,38.06 -2016-11-21 23:00:00,5279.092,0.0,37.02 -2016-11-22 00:00:00,4884.6,0.0,36.82 -2016-11-22 01:00:00,4612.575,0.0,36.65 -2016-11-22 02:00:00,4469.817,0.0,37.16 -2016-11-22 03:00:00,4416.425,0.0,36.29 -2016-11-22 04:00:00,4431.133,0.0,36.95 -2016-11-22 05:00:00,4660.875,0.0,36.35 -2016-11-22 06:00:00,5188.558,0.0,36.2 -2016-11-22 07:00:00,5740.325,0.0,36.48 -2016-11-22 08:00:00,6086.567,0.0,37.26 -2016-11-22 09:00:00,6287.95,0.0,38.61 -2016-11-22 10:00:00,6365.225,0.0,40.14 -2016-11-22 11:00:00,6407.908,0.0,41.1 -2016-11-22 12:00:00,6416.85,0.0,41.02 -2016-11-22 13:00:00,6392.975,0.0,41.41 -2016-11-22 14:00:00,6388.575,0.0,41.87 -2016-11-22 15:00:00,6432.85,0.0,40.32 -2016-11-22 16:00:00,6577.017,0.0,39.52 -2016-11-22 17:00:00,6781.892,0.0,38.24 -2016-11-22 18:00:00,6641.075,0.0,36.73 -2016-11-22 19:00:00,6469.85,0.0,35.75 -2016-11-22 20:00:00,6274.9,0.0,36.01 -2016-11-22 21:00:00,6036.125,0.0,36.26 -2016-11-22 22:00:00,5705.442,0.0,36.42 -2016-11-22 23:00:00,5259.642,0.0,36.97 -2016-11-23 00:00:00,4878.567,0.0,36.63 -2016-11-23 01:00:00,4635.333,0.0,36.48 -2016-11-23 02:00:00,4488.842,0.0,35.91 -2016-11-23 03:00:00,4417.825,0.0,34.08 -2016-11-23 04:00:00,4453.958,0.0,34.83 -2016-11-23 05:00:00,4669.383,0.0,33.5 -2016-11-23 06:00:00,5151.308,0.0,33.43 -2016-11-23 07:00:00,5653.358,0.0,34.01 -2016-11-23 08:00:00,6010.55,0.0,36.19 -2016-11-23 09:00:00,6218.433,0.0,37.62 -2016-11-23 10:00:00,6299.383,0.0,39.18 -2016-11-23 11:00:00,6315.708,0.0,41.33 -2016-11-23 12:00:00,6289.075,0.0,43.43 -2016-11-23 13:00:00,6244.792,0.0,44.27 -2016-11-23 14:00:00,6194.975,0.0,44.76 -2016-11-23 15:00:00,6178.242,0.0,44.88 -2016-11-23 16:00:00,6280.917,0.0,43.16 -2016-11-23 17:00:00,6468.233,0.0,42.44 -2016-11-23 18:00:00,6354.308,0.0,39.69 -2016-11-23 19:00:00,6166.108,0.0,40.41 -2016-11-23 20:00:00,5975.05,0.0,40.05 -2016-11-23 21:00:00,5768.942,0.0,40.01 -2016-11-23 22:00:00,5481.792,0.0,40.38 -2016-11-23 23:00:00,5122.975,0.0,40.1 -2016-11-24 00:00:00,4796.742,0.0,39.77 -2016-11-24 01:00:00,4546.408,0.0,39.42 -2016-11-24 02:00:00,4370.6,0.0,39.35 -2016-11-24 03:00:00,4293.167,0.0,39.63 -2016-11-24 04:00:00,4284.242,0.0,38.93 -2016-11-24 05:00:00,4352.392,0.0,38.79 -2016-11-24 06:00:00,4510.767,0.0,38.76 -2016-11-24 07:00:00,4686.533,0.0,39.4 -2016-11-24 08:00:00,4941.117,0.0,41.47 -2016-11-24 09:00:00,5148.45,0.0,43.8 -2016-11-24 10:00:00,5302.475,0.0,45.5 -2016-11-24 11:00:00,5435.175,0.0,46.96 -2016-11-24 12:00:00,5489.058,0.0,47.98 -2016-11-24 13:00:00,5464.633,0.0,48.39 -2016-11-24 14:00:00,5419.092,0.0,47.92 -2016-11-24 15:00:00,5384.375,0.0,47.85 -2016-11-24 16:00:00,5415.692,0.0034,47.51 -2016-11-24 17:00:00,5419.683,0.0074,47.46 -2016-11-24 18:00:00,5322.35,0.0,47.04 -2016-11-24 19:00:00,5191.425,0.0076,46.61 -2016-11-24 20:00:00,5111.417,0.0,46.06 -2016-11-24 21:00:00,5037.033,0.0,46.14 -2016-11-24 22:00:00,4908.9,0.0,45.53 -2016-11-24 23:00:00,4743.567,0.0,45.65 -2016-11-25 00:00:00,4542.133,0.0,44.6 -2016-11-25 01:00:00,4373.142,0.0,44.21 -2016-11-25 02:00:00,4242.475,0.0,43.82 -2016-11-25 03:00:00,4177.275,0.0,44.04 -2016-11-25 04:00:00,4190.558,0.0,43.91 -2016-11-25 05:00:00,4332.733,0.0,43.05 -2016-11-25 06:00:00,4633.242,0.0,44.19 -2016-11-25 07:00:00,4935.583,0.0,44.41 -2016-11-25 08:00:00,5251.492,0.0,45.31 -2016-11-25 09:00:00,5459.858,0.0,46.86 -2016-11-25 10:00:00,5548.067,0.0,48.57 -2016-11-25 11:00:00,5628.717,0.0,50.57 -2016-11-25 12:00:00,5657.892,0.0,51.55 -2016-11-25 13:00:00,5667.008,0.0,52.85 -2016-11-25 14:00:00,5670.758,0.0118,52.82 -2016-11-25 15:00:00,5754.783,0.0,52.66 -2016-11-25 16:00:00,5879.392,0.0239,52.18 -2016-11-25 17:00:00,6003.967,0.0,50.18 -2016-11-25 18:00:00,5904.958,0.0,50.56 -2016-11-25 19:00:00,5741.958,0.0,50.26 -2016-11-25 20:00:00,5598.533,0.0,49.41 -2016-11-25 21:00:00,5424.6,0.0,50.02 -2016-11-25 22:00:00,5217.45,0.0,49.51 -2016-11-25 23:00:00,4928.625,0.0,49.35 -2016-11-26 00:00:00,4626.1,0.0,48.29 -2016-11-26 01:00:00,4406.45,0.0,47.57 -2016-11-26 02:00:00,4253.9,0.0,46.05 -2016-11-26 03:00:00,4171.683,0.0,46.42 -2016-11-26 04:00:00,4143.042,0.0,45.52 -2016-11-26 05:00:00,4203.25,0.0,44.62 -2016-11-26 06:00:00,4362.167,0.0,43.35 -2016-11-26 07:00:00,4538.592,0.0,43.57 -2016-11-26 08:00:00,4781.283,0.0,45.04 -2016-11-26 09:00:00,5013.733,0.0,46.99 -2016-11-26 10:00:00,5177.575,0.0,47.49 -2016-11-26 11:00:00,5269.925,0.0,48.69 -2016-11-26 12:00:00,5333.608,0.0,49.26 -2016-11-26 13:00:00,5334.633,0.0,50.31 -2016-11-26 14:00:00,5289.35,0.0,48.83 -2016-11-26 15:00:00,5306.942,0.0,48.99 -2016-11-26 16:00:00,5428.067,0.0,48.63 -2016-11-26 17:00:00,5649.567,0.0,45.85 -2016-11-26 18:00:00,5671.992,0.0,44.8 -2016-11-26 19:00:00,5610.017,0.0,42.57 -2016-11-26 20:00:00,5506.392,0.0,42.59 -2016-11-26 21:00:00,5386.625,0.0,42.15 -2016-11-26 22:00:00,5201.742,0.0,41.65 -2016-11-26 23:00:00,4959.025,0.0,40.32 -2016-11-27 00:00:00,4689.908,0.0,40.46 -2016-11-27 01:00:00,4461.167,0.0,39.78 -2016-11-27 02:00:00,4296.708,0.0,39.71 -2016-11-27 03:00:00,4213.4,0.0,38.34 -2016-11-27 04:00:00,4176.667,0.0,38.5 -2016-11-27 05:00:00,4223.458,0.0,38.39 -2016-11-27 06:00:00,4325.767,0.0,37.4 -2016-11-27 07:00:00,4457.625,0.0,39.11 -2016-11-27 08:00:00,4664.325,0.0,41.05 -2016-11-27 09:00:00,4895.4,0.0,43.0 -2016-11-27 10:00:00,5076.283,0.0,45.85 -2016-11-27 11:00:00,5186.042,0.0,48.46 -2016-11-27 12:00:00,5251.975,0.0,49.45 -2016-11-27 13:00:00,5285.183,0.0,50.47 -2016-11-27 14:00:00,5311.7,0.0,49.78 -2016-11-27 15:00:00,5362.808,0.0,47.93 -2016-11-27 16:00:00,5522.15,0.0,46.88 -2016-11-27 17:00:00,5771.55,0.0,45.31 -2016-11-27 18:00:00,5814.667,0.0,43.38 -2016-11-27 19:00:00,5758.467,0.0,43.11 -2016-11-27 20:00:00,5670.758,0.0,42.39 -2016-11-27 21:00:00,5517.167,0.0,41.78 -2016-11-27 22:00:00,5246.333,0.0,42.14 -2016-11-27 23:00:00,4908.858,0.0,40.81 -2016-11-28 00:00:00,4609.55,0.0,40.28 -2016-11-28 01:00:00,4409.6,0.0,39.67 -2016-11-28 02:00:00,4291.242,0.0,38.99 -2016-11-28 03:00:00,4240.933,0.0,37.64 -2016-11-28 04:00:00,4275.908,0.0,37.22 -2016-11-28 05:00:00,4529.442,0.0,35.94 -2016-11-28 06:00:00,5061.967,0.0,36.48 -2016-11-28 07:00:00,5606.625,0.0,36.88 -2016-11-28 08:00:00,5933.183,0.0,40.16 -2016-11-28 09:00:00,6128.958,0.0,43.45 -2016-11-28 10:00:00,6201.808,0.0,46.9 -2016-11-28 11:00:00,6233.075,0.0,49.25 -2016-11-28 12:00:00,6231.325,0.0,51.71 -2016-11-28 13:00:00,6240.358,0.0,51.65 -2016-11-28 14:00:00,6226.55,0.0,51.91 -2016-11-28 15:00:00,6263.508,0.0,50.77 -2016-11-28 16:00:00,6408.642,0.0,49.33 -2016-11-28 17:00:00,6624.05,0.0,46.95 -2016-11-28 18:00:00,6500.483,0.0,45.65 -2016-11-28 19:00:00,6333.3,0.0,44.24 -2016-11-28 20:00:00,6134.458,0.0,46.01 -2016-11-28 21:00:00,5881.85,0.0,45.85 -2016-11-28 22:00:00,5525.6,0.0,45.8 -2016-11-28 23:00:00,5077.292,0.0,47.78 -2016-11-29 00:00:00,4662.775,0.0,48.57 -2016-11-29 01:00:00,4406.642,0.0,49.3 -2016-11-29 02:00:00,4268.083,0.0,50.34 -2016-11-29 03:00:00,4202.233,0.0,50.93 -2016-11-29 04:00:00,4218.292,0.0,50.61 -2016-11-29 05:00:00,4426.833,0.0,52.33 -2016-11-29 06:00:00,4972.792,0.0,52.08 -2016-11-29 07:00:00,5578.817,0.0064,53.94 -2016-11-29 08:00:00,5939.758,0.058,54.83 -2016-11-29 09:00:00,6170.85,0.0581,56.11 -2016-11-29 10:00:00,6311.117,0.1119,57.0 -2016-11-29 11:00:00,6402.408,0.1146,56.47 -2016-11-29 12:00:00,6458.625,0.0101,56.37 -2016-11-29 13:00:00,6496.933,0.0022,56.93 -2016-11-29 14:00:00,6483.133,0.1012,56.7 -2016-11-29 15:00:00,6540.858,0.0131,56.98 -2016-11-29 16:00:00,6658.258,0.0048,57.7 -2016-11-29 17:00:00,6731.117,0.0447,57.42 -2016-11-29 18:00:00,6576.0,0.0057,58.14 -2016-11-29 19:00:00,6382.667,0.0025,57.78 -2016-11-29 20:00:00,6156.217,0.0025,58.96 -2016-11-29 21:00:00,5889.808,0.0,59.11 -2016-11-29 22:00:00,5528.25,0.0,58.65 -2016-11-29 23:00:00,5070.117,0.0,58.44 -2016-11-30 00:00:00,4659.067,0.0,57.31 -2016-11-30 01:00:00,4404.658,0.0,56.2 -2016-11-30 02:00:00,4255.575,0.0,53.6 -2016-11-30 03:00:00,4186.975,0.0,53.31 -2016-11-30 04:00:00,4198.033,0.0,53.0 -2016-11-30 05:00:00,4406.675,0.0,52.89 -2016-11-30 06:00:00,4967.083,0.0,52.76 -2016-11-30 07:00:00,5546.158,0.0,52.36 -2016-11-30 08:00:00,5911.783,0.0,53.24 -2016-11-30 09:00:00,6152.533,0.0,55.32 -2016-11-30 10:00:00,6254.333,0.0026,56.73 -2016-11-30 11:00:00,6331.725,0.054,56.2 -2016-11-30 12:00:00,6354.075,0.0594,55.6 -2016-11-30 13:00:00,6386.542,0.0629,54.75 -2016-11-30 14:00:00,6414.192,0.0118,54.44 -2016-11-30 15:00:00,6470.575,0.0492,54.05 -2016-11-30 16:00:00,6610.167,0.0,53.35 -2016-11-30 17:00:00,6677.858,0.0,53.51 -2016-11-30 18:00:00,6512.0,0.0,54.01 -2016-11-30 19:00:00,6315.592,0.0,53.65 -2016-11-30 20:00:00,6100.618,0.0,53.66 -2016-11-30 21:00:00,5852.483,0.0,52.94 -2016-11-30 22:00:00,5514.725,0.1415,52.64 -2016-11-30 23:00:00,5082.442,0.0029,53.56 -2016-12-01 00:00:00,4674.675,0.063,54.68 -2016-12-01 01:00:00,4397.275,0.0,54.61 -2016-12-01 02:00:00,4260.242,0.0,55.86 -2016-12-01 03:00:00,4180.05,0.0,55.84 -2016-12-01 04:00:00,4199.925,0.0304,52.17 -2016-12-01 05:00:00,4399.858,0.0,52.32 -2016-12-01 06:00:00,4940.592,0.0,51.91 -2016-12-01 07:00:00,5483.283,0.0,50.49 -2016-12-01 08:00:00,5836.733,0.0,52.07 -2016-12-01 09:00:00,6040.042,0.0,53.07 -2016-12-01 10:00:00,6111.45,0.0,54.15 -2016-12-01 11:00:00,6143.45,0.0,54.7 -2016-12-01 12:00:00,6149.483,0.0,53.5 -2016-12-01 13:00:00,6176.217,0.0,53.4 -2016-12-01 14:00:00,6209.95,0.0,51.47 -2016-12-01 15:00:00,6285.475,0.0,49.14 -2016-12-01 16:00:00,6444.95,0.0,48.06 -2016-12-01 17:00:00,6587.733,0.0,47.93 -2016-12-01 18:00:00,6453.567,0.0,47.1 -2016-12-01 19:00:00,6277.75,0.0,45.99 -2016-12-01 20:00:00,6093.958,0.0,44.72 -2016-12-01 21:00:00,5880.592,0.0,43.96 -2016-12-01 22:00:00,5533.958,0.0,42.65 -2016-12-01 23:00:00,5117.858,0.0,41.7 -2016-12-02 00:00:00,4732.733,0.0,42.18 -2016-12-02 01:00:00,4490.033,0.0,41.3 -2016-12-02 02:00:00,4348.925,0.0,40.55 -2016-12-02 03:00:00,4278.908,0.0,39.81 -2016-12-02 04:00:00,4305.825,0.0,39.57 -2016-12-02 05:00:00,4531.733,0.0,39.13 -2016-12-02 06:00:00,5042.908,0.0,39.0 -2016-12-02 07:00:00,5573.875,0.0,40.21 -2016-12-02 08:00:00,5898.167,0.0,41.59 -2016-12-02 09:00:00,6108.908,0.0,44.06 -2016-12-02 10:00:00,6195.492,0.0,45.9 -2016-12-02 11:00:00,6220.883,0.0,48.68 -2016-12-02 12:00:00,6214.442,0.0,49.8 -2016-12-02 13:00:00,6236.758,0.0,50.36 -2016-12-02 14:00:00,6219.675,0.0,50.29 -2016-12-02 15:00:00,6284.192,0.0,49.04 -2016-12-02 16:00:00,6402.575,0.0,48.05 -2016-12-02 17:00:00,6552.983,0.0,47.36 -2016-12-02 18:00:00,6412.917,0.0,46.23 -2016-12-02 19:00:00,6223.3,0.0,43.87 -2016-12-02 20:00:00,6024.325,0.0,44.65 -2016-12-02 21:00:00,5815.442,0.0,43.96 -2016-12-02 22:00:00,5535.208,0.0,43.31 -2016-12-02 23:00:00,5202.408,0.0,42.46 -2016-12-03 00:00:00,4827.458,0.0,42.86 -2016-12-03 01:00:00,4571.533,0.0,42.92 -2016-12-03 02:00:00,4412.933,0.0,42.89 -2016-12-03 03:00:00,4326.108,0.0,42.59 -2016-12-03 04:00:00,4306.408,0.0,42.3 -2016-12-03 05:00:00,4366.883,0.0,40.55 -2016-12-03 06:00:00,4555.15,0.0,39.88 -2016-12-03 07:00:00,4772.7,0.0,40.48 -2016-12-03 08:00:00,5059.992,0.0,42.14 -2016-12-03 09:00:00,5307.325,0.0,43.42 -2016-12-03 10:00:00,5456.3,0.0,44.38 -2016-12-03 11:00:00,5565.3,0.0,45.73 -2016-12-03 12:00:00,5580.0,0.0,46.63 -2016-12-03 13:00:00,5564.642,0.0,46.99 -2016-12-03 14:00:00,5541.858,0.0,46.72 -2016-12-03 15:00:00,5559.833,0.0,46.41 -2016-12-03 16:00:00,5706.417,0.0,44.58 -2016-12-03 17:00:00,5924.75,0.0,43.19 -2016-12-03 18:00:00,5943.825,0.0,42.7 -2016-12-03 19:00:00,5860.633,0.0,42.1 -2016-12-03 20:00:00,5737.108,0.0,41.1 -2016-12-03 21:00:00,5573.1,0.0,41.47 -2016-12-03 22:00:00,5376.925,0.0,41.36 -2016-12-03 23:00:00,5115.783,0.0,40.35 -2016-12-04 00:00:00,4816.083,0.0,40.65 -2016-12-04 01:00:00,4561.533,0.0,40.05 -2016-12-04 02:00:00,4392.15,0.0,40.48 -2016-12-04 03:00:00,4283.175,0.0,39.43 -2016-12-04 04:00:00,4249.092,0.0,39.32 -2016-12-04 05:00:00,4289.367,0.0,38.67 -2016-12-04 06:00:00,4406.358,0.0,38.75 -2016-12-04 07:00:00,4549.325,0.0,37.98 -2016-12-04 08:00:00,4803.225,0.0,39.41 -2016-12-04 09:00:00,5037.992,0.0,40.62 -2016-12-04 10:00:00,5222.5,0.0,42.38 -2016-12-04 11:00:00,5332.983,0.0,43.69 -2016-12-04 12:00:00,5386.408,0.0,45.45 -2016-12-04 13:00:00,5420.158,0.0,45.88 -2016-12-04 14:00:00,5417.2,0.0,46.01 -2016-12-04 15:00:00,5474.042,0.0,44.8 -2016-12-04 16:00:00,5674.492,0.0,43.5 -2016-12-04 17:00:00,5947.108,0.0,41.65 -2016-12-04 18:00:00,5964.033,0.0,39.91 -2016-12-04 19:00:00,5910.175,0.0,39.32 -2016-12-04 20:00:00,5813.633,0.0,39.37 -2016-12-04 21:00:00,5648.533,0.0,40.61 -2016-12-04 22:00:00,5363.667,0.0,39.66 -2016-12-04 23:00:00,5006.733,0.0,40.03 -2016-12-05 00:00:00,4693.267,0.0,39.87 -2016-12-05 01:00:00,4461.4,0.0053,40.03 -2016-12-05 02:00:00,4333.408,0.0242,40.6 -2016-12-05 03:00:00,4273.358,0.0231,40.52 -2016-12-05 04:00:00,4315.892,0.0245,41.18 -2016-12-05 05:00:00,4560.367,0.007,39.89 -2016-12-05 06:00:00,5102.658,0.0058,39.29 -2016-12-05 07:00:00,5691.625,0.0,39.79 -2016-12-05 08:00:00,6049.492,0.0,40.78 -2016-12-05 09:00:00,6256.417,0.0,41.78 -2016-12-05 10:00:00,6372.475,0.0,44.03 -2016-12-05 11:00:00,6372.133,0.0,45.13 -2016-12-05 12:00:00,6343.9,0.0,45.78 -2016-12-05 13:00:00,6332.9,0.0,47.95 -2016-12-05 14:00:00,6293.058,0.0,48.79 -2016-12-05 15:00:00,6330.933,0.0,46.8 -2016-12-05 16:00:00,6489.575,0.0,47.32 -2016-12-05 17:00:00,6712.008,0.0,45.42 -2016-12-05 18:00:00,6595.55,0.0,44.64 -2016-12-05 19:00:00,6429.567,0.0,42.03 -2016-12-05 20:00:00,6247.442,0.0,42.89 -2016-12-05 21:00:00,6012.925,0.0,41.42 -2016-12-05 22:00:00,5661.292,0.0,41.38 -2016-12-05 23:00:00,5181.075,0.0,40.22 -2016-12-06 00:00:00,4766.1,0.0,39.77 -2016-12-06 01:00:00,4511.1,0.0,39.26 -2016-12-06 02:00:00,4368.475,0.0,39.26 -2016-12-06 03:00:00,4314.325,0.0,37.52 -2016-12-06 04:00:00,4340.292,0.0,36.58 -2016-12-06 05:00:00,4576.517,0.0,37.11 -2016-12-06 06:00:00,5115.775,0.0,35.9 -2016-12-06 07:00:00,5669.367,0.0,36.95 -2016-12-06 08:00:00,5991.917,0.0,38.24 -2016-12-06 09:00:00,6213.742,0.0,41.19 -2016-12-06 10:00:00,6280.85,0.0,44.24 -2016-12-06 11:00:00,6317.125,0.0,45.3 -2016-12-06 12:00:00,6350.975,0.0,46.91 -2016-12-06 13:00:00,6365.5,0.0,45.98 -2016-12-06 14:00:00,6399.592,0.0,45.82 -2016-12-06 15:00:00,6490.367,0.0021,44.39 -2016-12-06 16:00:00,6667.2,0.0172,44.28 -2016-12-06 17:00:00,6776.017,0.0275,43.95 -2016-12-06 18:00:00,6633.95,0.1126,44.06 -2016-12-06 19:00:00,6469.75,0.0794,43.44 -2016-12-06 20:00:00,6314.167,0.0918,40.74 -2016-12-06 21:00:00,6076.917,0.0,40.62 -2016-12-06 22:00:00,5717.65,0.0024,39.63 -2016-12-06 23:00:00,5240.367,0.0094,39.88 -2016-12-07 00:00:00,4816.6,0.0,41.1 -2016-12-07 01:00:00,4552.742,0.0051,40.86 -2016-12-07 02:00:00,4389.183,0.0044,41.29 -2016-12-07 03:00:00,4327.833,0.0,41.59 -2016-12-07 04:00:00,4361.508,0.0,40.52 -2016-12-07 05:00:00,4599.475,0.0,40.08 -2016-12-07 06:00:00,5132.5,0.0,39.69 -2016-12-07 07:00:00,5713.242,0.0,40.2 -2016-12-07 08:00:00,6092.775,0.0,40.34 -2016-12-07 09:00:00,6328.817,0.0,40.91 -2016-12-07 10:00:00,6429.108,0.0,42.28 -2016-12-07 11:00:00,6466.118,0.0,43.18 -2016-12-07 12:00:00,6482.542,0.0,44.19 -2016-12-07 13:00:00,6496.05,0.0,44.7 -2016-12-07 14:00:00,6444.025,0.0,44.67 -2016-12-07 15:00:00,6461.925,0.0,44.78 -2016-12-07 16:00:00,6634.342,0.0,45.33 -2016-12-07 17:00:00,6778.109,0.0,44.62 -2016-12-07 18:00:00,6652.65,0.0,44.42 -2016-12-07 19:00:00,6446.217,0.0,43.22 -2016-12-07 20:00:00,6272.008,0.0,42.73 -2016-12-07 21:00:00,6027.633,0.0,40.97 -2016-12-07 22:00:00,5671.442,0.0,41.7 -2016-12-07 23:00:00,5224.825,0.0,41.4 -2016-12-08 00:00:00,4806.35,0.0,40.0 -2016-12-08 01:00:00,4546.417,0.0,39.51 -2016-12-08 02:00:00,4398.408,0.0,38.77 -2016-12-08 03:00:00,4340.342,0.0,37.2 -2016-12-08 04:00:00,4365.042,0.0,37.91 -2016-12-08 05:00:00,4598.8,0.0,37.31 -2016-12-08 06:00:00,5133.692,0.0,36.86 -2016-12-08 07:00:00,5698.575,0.0,38.21 -2016-12-08 08:00:00,6065.658,0.0,38.61 -2016-12-08 09:00:00,6301.542,0.0,41.11 -2016-12-08 10:00:00,6391.292,0.0,42.26 -2016-12-08 11:00:00,6413.909,0.0,44.41 -2016-12-08 12:00:00,6426.636,0.0,44.46 -2016-12-08 13:00:00,6426.327,0.0,43.85 -2016-12-08 14:00:00,6406.692,0.0,43.35 -2016-12-08 15:00:00,6454.192,0.0,42.38 -2016-12-08 16:00:00,6619.142,0.0,41.38 -2016-12-08 17:00:00,6810.2,0.0,39.82 -2016-12-08 18:00:00,6697.608,0.0,37.7 -2016-12-08 19:00:00,6545.242,0.0,38.21 -2016-12-08 20:00:00,6371.733,0.0,36.87 -2016-12-08 21:00:00,6149.075,0.0,35.96 -2016-12-08 22:00:00,5814.95,0.0,35.05 -2016-12-08 23:00:00,5380.725,0.0,34.3 -2016-12-09 00:00:00,4994.275,0.0,34.07 -2016-12-09 01:00:00,4734.217,0.0,33.55 -2016-12-09 02:00:00,4591.275,0.0,32.97 -2016-12-09 03:00:00,4522.167,0.0,32.1 -2016-12-09 04:00:00,4543.592,0.0,31.61 -2016-12-09 05:00:00,4780.067,0.0,31.88 -2016-12-09 06:00:00,5299.05,0.0,31.74 -2016-12-09 07:00:00,5866.65,0.0,32.13 -2016-12-09 08:00:00,6184.7,0.0,33.49 -2016-12-09 09:00:00,6419.383,0.0,35.71 -2016-12-09 10:00:00,6493.408,0.0,37.1 -2016-12-09 11:00:00,6534.125,0.0,39.65 -2016-12-09 12:00:00,6520.475,0.0,39.26 -2016-12-09 13:00:00,6516.417,0.0,40.08 -2016-12-09 14:00:00,6512.017,0.0,39.01 -2016-12-09 15:00:00,6577.692,0.0,37.98 -2016-12-09 16:00:00,6734.25,0.0,36.12 -2016-12-09 17:00:00,6925.25,0.0,35.07 -2016-12-09 18:00:00,6801.533,0.0,32.96 -2016-12-09 19:00:00,6649.275,0.0,32.63 -2016-12-09 20:00:00,6420.942,0.0,31.39 -2016-12-09 21:00:00,6204.7,0.0,30.97 -2016-12-09 22:00:00,5949.025,0.0,30.11 -2016-12-09 23:00:00,5582.025,0.0,30.38 -2016-12-10 00:00:00,5186.983,0.0,29.95 -2016-12-10 01:00:00,4928.308,0.0,29.7 -2016-12-10 02:00:00,4759.225,0.0,28.84 -2016-12-10 03:00:00,4676.375,0.0,28.57 -2016-12-10 04:00:00,4625.892,0.0,28.26 -2016-12-10 05:00:00,4696.167,0.0,27.4 -2016-12-10 06:00:00,4869.192,0.0,28.14 -2016-12-10 07:00:00,5110.125,0.0,28.11 -2016-12-10 08:00:00,5392.267,0.0,30.14 -2016-12-10 09:00:00,5634.85,0.0,32.02 -2016-12-10 10:00:00,5795.408,0.0,33.64 -2016-12-10 11:00:00,5894.033,0.0,34.84 -2016-12-10 12:00:00,5923.183,0.0,35.18 -2016-12-10 13:00:00,5950.992,0.0,35.76 -2016-12-10 14:00:00,5941.442,0.0,35.56 -2016-12-10 15:00:00,5930.508,0.0,34.72 -2016-12-10 16:00:00,6050.025,0.0,33.72 -2016-12-10 17:00:00,6281.367,0.0,33.6 -2016-12-10 18:00:00,6291.217,0.0,31.17 -2016-12-10 19:00:00,6206.85,0.0,32.53 -2016-12-10 20:00:00,6066.55,0.0,32.09 -2016-12-10 21:00:00,5920.8,0.0,31.29 -2016-12-10 22:00:00,5730.508,0.0,30.71 -2016-12-10 23:00:00,5473.475,0.0,29.68 -2016-12-11 00:00:00,5177.508,0.0,29.58 -2016-12-11 01:00:00,4930.275,0.0,28.92 -2016-12-11 02:00:00,4754.1,0.0,27.76 -2016-12-11 03:00:00,4648.033,0.0,27.37 -2016-12-11 04:00:00,4605.083,0.0,26.94 -2016-12-11 05:00:00,4634.042,0.0,26.28 -2016-12-11 06:00:00,4742.183,0.0,27.66 -2016-12-11 07:00:00,4902.05,0.0,27.79 -2016-12-11 08:00:00,5156.108,0.0,29.39 -2016-12-11 09:00:00,5389.717,0.0,31.61 -2016-12-11 10:00:00,5609.258,0.0,33.44 -2016-12-11 11:00:00,5737.858,0.0027,34.54 -2016-12-11 12:00:00,5807.883,0.0054,35.07 -2016-12-11 13:00:00,5864.358,0.0021,35.26 -2016-12-11 14:00:00,5894.483,0.0071,34.63 -2016-12-11 15:00:00,5935.733,0.0051,34.0 -2016-12-11 16:00:00,6108.05,0.009,32.91 -2016-12-11 17:00:00,6346.225,0.0131,31.91 -2016-12-11 18:00:00,6392.967,0.0076,33.1 -2016-12-11 19:00:00,6327.217,0.0029,31.18 -2016-12-11 20:00:00,6201.925,0.0,31.93 -2016-12-11 21:00:00,6039.367,0.0,32.37 -2016-12-11 22:00:00,5734.858,0.0,33.36 -2016-12-11 23:00:00,5350.775,0.0,33.86 -2016-12-12 00:00:00,4996.45,0.0,34.59 -2016-12-12 01:00:00,4757.758,0.0219,35.35 -2016-12-12 02:00:00,4603.458,0.0398,35.88 -2016-12-12 03:00:00,4529.4,0.0465,36.63 -2016-12-12 04:00:00,4573.533,0.0962,38.63 -2016-12-12 05:00:00,4800.308,0.0416,38.64 -2016-12-12 06:00:00,5288.025,0.0564,39.08 -2016-12-12 07:00:00,5873.717,0.0344,40.32 -2016-12-12 08:00:00,6216.533,0.0029,40.87 -2016-12-12 09:00:00,6448.592,0.0,42.04 -2016-12-12 10:00:00,6611.692,0.0,42.75 -2016-12-12 11:00:00,6663.842,0.0,43.6 -2016-12-12 12:00:00,6639.3,0.0,44.12 -2016-12-12 13:00:00,6612.992,0.0,44.36 -2016-12-12 14:00:00,6566.175,0.0,45.04 -2016-12-12 15:00:00,6604.192,0.0,44.61 -2016-12-12 16:00:00,6706.633,0.0,44.3 -2016-12-12 17:00:00,6896.35,0.0,43.22 -2016-12-12 18:00:00,6781.267,0.0,39.31 -2016-12-12 19:00:00,6630.45,0.0,40.31 -2016-12-12 20:00:00,6438.625,0.0,40.46 -2016-12-12 21:00:00,6216.175,0.0,39.31 -2016-12-12 22:00:00,5857.075,0.0,39.51 -2016-12-12 23:00:00,5399.533,0.0,38.65 -2016-12-13 00:00:00,4972.292,0.0,37.62 -2016-12-13 01:00:00,4713.808,0.0,37.01 -2016-12-13 02:00:00,4567.467,0.0,35.89 -2016-12-13 03:00:00,4501.842,0.0,34.55 -2016-12-13 04:00:00,4530.708,0.0,34.55 -2016-12-13 05:00:00,4765.908,0.0,34.66 -2016-12-13 06:00:00,5317.042,0.0,34.0 -2016-12-13 07:00:00,5881.942,0.0,34.53 -2016-12-13 08:00:00,6212.408,0.0,35.66 -2016-12-13 09:00:00,6381.283,0.0,37.36 -2016-12-13 10:00:00,6448.683,0.0,39.71 -2016-12-13 11:00:00,6441.125,0.0,41.75 -2016-12-13 12:00:00,6483.175,0.0,42.17 -2016-12-13 13:00:00,6456.958,0.0,42.85 -2016-12-13 14:00:00,6438.65,0.0,42.77 -2016-12-13 15:00:00,6528.892,0.0,41.83 -2016-12-13 16:00:00,6745.492,0.0,40.34 -2016-12-13 17:00:00,6905.042,0.0,40.46 -2016-12-13 18:00:00,6771.192,0.0,37.46 -2016-12-13 19:00:00,6608.733,0.0,39.48 -2016-12-13 20:00:00,6404.658,0.0,39.82 -2016-12-13 21:00:00,6181.975,0.0,40.67 -2016-12-13 22:00:00,5811.067,0.0,39.96 -2016-12-13 23:00:00,5351.625,0.0179,39.17 -2016-12-14 00:00:00,4918.55,0.0023,39.76 -2016-12-14 01:00:00,4658.375,0.0,39.31 -2016-12-14 02:00:00,4505.867,0.0,37.89 -2016-12-14 03:00:00,4449.667,0.0,38.52 -2016-12-14 04:00:00,4484.408,0.0,37.6 -2016-12-14 05:00:00,4725.758,0.0,35.3 -2016-12-14 06:00:00,5263.517,0.0,35.1 -2016-12-14 07:00:00,5819.95,0.0,35.05 -2016-12-14 08:00:00,6149.983,0.0,36.64 -2016-12-14 09:00:00,6359.75,0.0,38.18 -2016-12-14 10:00:00,6421.083,0.0,40.22 -2016-12-14 11:00:00,6443.308,0.0,41.08 -2016-12-14 12:00:00,6438.683,0.0,42.53 -2016-12-14 13:00:00,6446.883,0.0,42.54 -2016-12-14 14:00:00,6436.367,0.0,41.48 -2016-12-14 15:00:00,6501.158,0.0,40.06 -2016-12-14 16:00:00,6704.475,0.0,38.69 -2016-12-14 17:00:00,6930.442,0.0,36.82 -2016-12-14 18:00:00,6843.075,0.0,33.14 -2016-12-14 19:00:00,6702.417,0.0,35.47 -2016-12-14 20:00:00,6526.083,0.0,34.29 -2016-12-14 21:00:00,6307.542,0.0,33.5 -2016-12-14 22:00:00,5963.183,0.0,32.45 -2016-12-14 23:00:00,5531.15,0.0,33.34 -2016-12-15 00:00:00,5110.858,0.0,33.23 -2016-12-15 01:00:00,4850.658,0.0,33.05 -2016-12-15 02:00:00,4698.625,0.0,32.48 -2016-12-15 03:00:00,4646.65,0.0,32.04 -2016-12-15 04:00:00,4691.683,0.0,30.72 -2016-12-15 05:00:00,4949.233,0.0,29.39 -2016-12-15 06:00:00,5494.333,0.0,27.34 -2016-12-15 07:00:00,6097.175,0.0,25.82 -2016-12-15 08:00:00,6466.133,0.0,25.54 -2016-12-15 09:00:00,6684.558,0.0,25.07 -2016-12-15 10:00:00,6866.792,0.0,24.69 -2016-12-15 11:00:00,6927.542,0.0,24.44 -2016-12-15 12:00:00,6970.967,0.0,25.27 -2016-12-15 13:00:00,6977.692,0.0,24.53 -2016-12-15 14:00:00,7007.058,0.0,23.76 -2016-12-15 15:00:00,7059.575,0.0,23.36 -2016-12-15 16:00:00,7229.5,0.0,21.96 -2016-12-15 17:00:00,7474.433,0.0,21.03 -2016-12-15 18:00:00,7389.383,0.0,21.5 -2016-12-15 19:00:00,7241.6,0.0,20.77 -2016-12-15 20:00:00,7037.342,0.0,19.86 -2016-12-15 21:00:00,6818.408,0.0,19.88 -2016-12-15 22:00:00,6500.6,0.0,18.75 -2016-12-15 23:00:00,6046.35,0.0,18.66 -2016-12-16 00:00:00,5633.2,0.0,18.67 -2016-12-16 01:00:00,5376.025,0.0,18.65 -2016-12-16 02:00:00,5218.183,0.0,17.99 -2016-12-16 03:00:00,5135.908,0.0,17.84 -2016-12-16 04:00:00,5153.708,0.0,17.43 -2016-12-16 05:00:00,5360.458,0.0,17.03 -2016-12-16 06:00:00,5864.158,0.0,16.71 -2016-12-16 07:00:00,6424.842,0.0,17.65 -2016-12-16 08:00:00,6761.892,0.0,19.3 -2016-12-16 09:00:00,6998.95,0.0,20.62 -2016-12-16 10:00:00,7108.167,0.0,22.23 -2016-12-16 11:00:00,7104.683,0.0,23.25 -2016-12-16 12:00:00,7066.917,0.0,25.61 -2016-12-16 13:00:00,7018.583,0.0,26.83 -2016-12-16 14:00:00,6997.825,0.0,27.79 -2016-12-16 15:00:00,7050.567,0.0,27.19 -2016-12-16 16:00:00,7209.8,0.0,25.09 -2016-12-16 17:00:00,7369.658,0.0,25.14 -2016-12-16 18:00:00,7230.783,0.0,26.02 -2016-12-16 19:00:00,7043.183,0.0,24.85 -2016-12-16 20:00:00,6855.592,0.0,25.06 -2016-12-16 21:00:00,6611.75,0.0,25.43 -2016-12-16 22:00:00,6314.992,0.0022,25.57 -2016-12-16 23:00:00,5941.117,0.0029,26.36 -2016-12-17 00:00:00,5552.325,0.0034,25.42 -2016-12-17 01:00:00,5272.033,0.0056,26.81 -2016-12-17 02:00:00,5081.667,0.0036,27.34 -2016-12-17 03:00:00,4994.183,0.025,27.85 -2016-12-17 04:00:00,4962.633,0.0038,27.38 -2016-12-17 05:00:00,5005.267,0.0133,26.2 -2016-12-17 06:00:00,5182.092,0.0255,27.0 -2016-12-17 07:00:00,5422.942,0.0815,28.0 -2016-12-17 08:00:00,5720.925,0.0954,29.32 -2016-12-17 09:00:00,6036.3,0.1334,31.46 -2016-12-17 10:00:00,6279.867,0.0385,32.77 -2016-12-17 11:00:00,6391.492,0.0,34.12 -2016-12-17 12:00:00,6393.492,0.0,34.09 -2016-12-17 13:00:00,6322.9,0.0,34.61 -2016-12-17 14:00:00,6276.575,0.0,35.19 -2016-12-17 15:00:00,6273.917,0.0,35.18 -2016-12-17 16:00:00,6372.592,0.0,35.65 -2016-12-17 17:00:00,6519.242,0.0,35.72 -2016-12-17 18:00:00,6490.433,0.0,36.72 -2016-12-17 19:00:00,6394.75,0.0,35.62 -2016-12-17 20:00:00,6223.342,0.0,36.4 -2016-12-17 21:00:00,6057.183,0.0,36.57 -2016-12-17 22:00:00,5844.6,0.0,36.18 -2016-12-17 23:00:00,5539.392,0.0,36.76 -2016-12-18 00:00:00,5242.575,0.0,37.95 -2016-12-18 01:00:00,4958.45,0.0,38.67 -2016-12-18 02:00:00,4766.683,0.0,38.92 -2016-12-18 03:00:00,4649.675,0.0009,39.56 -2016-12-18 04:00:00,4590.183,0.0068,41.61 -2016-12-18 05:00:00,4614.542,0.0,43.44 -2016-12-18 06:00:00,4708.808,0.0,44.45 -2016-12-18 07:00:00,4835.9,0.0,47.4 -2016-12-18 08:00:00,5077.317,0.0,48.36 -2016-12-18 09:00:00,5341.942,0.0,48.58 -2016-12-18 10:00:00,5532.358,0.0,50.56 -2016-12-18 11:00:00,5664.817,0.0023,53.09 -2016-12-18 12:00:00,5739.342,0.0105,54.56 -2016-12-18 13:00:00,5726.033,0.0,52.88 -2016-12-18 14:00:00,5750.892,0.0,50.87 -2016-12-18 15:00:00,5857.6,0.0,48.41 -2016-12-18 16:00:00,6001.258,0.0,40.0 -2016-12-18 17:00:00,6192.425,0.0,38.92 -2016-12-18 18:00:00,6225.283,0.0,35.25 -2016-12-18 19:00:00,6197.1,0.0,35.27 -2016-12-18 20:00:00,6126.342,0.0,34.44 -2016-12-18 21:00:00,6012.025,0.0,34.2 -2016-12-18 22:00:00,5771.025,0.0,32.34 -2016-12-18 23:00:00,5430.025,0.0,31.86 -2016-12-19 00:00:00,5119.367,0.0,31.34 -2016-12-19 01:00:00,4904.625,0.0,30.26 -2016-12-19 02:00:00,4776.725,0.0,29.8 -2016-12-19 03:00:00,4726.808,0.0,28.92 -2016-12-19 04:00:00,4772.658,0.0,27.29 -2016-12-19 05:00:00,5032.167,0.0,27.23 -2016-12-19 06:00:00,5555.233,0.0,25.92 -2016-12-19 07:00:00,6149.483,0.0,25.09 -2016-12-19 08:00:00,6544.475,0.0,25.23 -2016-12-19 09:00:00,6767.958,0.0,25.97 -2016-12-19 10:00:00,6853.592,0.0,26.35 -2016-12-19 11:00:00,6871.517,0.0,28.33 -2016-12-19 12:00:00,6867.858,0.0,29.34 -2016-12-19 13:00:00,6863.233,0.0,29.78 -2016-12-19 14:00:00,6845.367,0.0,29.27 -2016-12-19 15:00:00,6919.517,0.0,29.02 -2016-12-19 16:00:00,7113.867,0.0,28.86 -2016-12-19 17:00:00,7325.192,0.0,26.75 -2016-12-19 18:00:00,7231.408,0.0,25.82 -2016-12-19 19:00:00,7062.225,0.0,24.15 -2016-12-19 20:00:00,6889.973,0.0,24.42 -2016-12-19 21:00:00,6674.292,0.0,24.56 -2016-12-19 22:00:00,6313.8,0.0,24.17 -2016-12-19 23:00:00,5863.567,0.0,23.14 -2016-12-20 00:00:00,5428.575,0.0,23.08 -2016-12-20 01:00:00,5175.0,0.0,21.9 -2016-12-20 02:00:00,5022.942,0.0,20.68 -2016-12-20 03:00:00,4949.0,0.0,20.96 -2016-12-20 04:00:00,4969.242,0.0,19.19 -2016-12-20 05:00:00,5191.892,0.0,19.63 -2016-12-20 06:00:00,5699.3,0.0,18.95 -2016-12-20 07:00:00,6243.2,0.0,19.48 -2016-12-20 08:00:00,6571.467,0.0,22.25 -2016-12-20 09:00:00,6777.025,0.0,24.31 -2016-12-20 10:00:00,6832.95,0.0,28.79 -2016-12-20 11:00:00,6839.483,0.0,30.06 -2016-12-20 12:00:00,6839.733,0.0,31.72 -2016-12-20 13:00:00,6820.683,0.0,33.03 -2016-12-20 14:00:00,6798.5,0.0,33.19 -2016-12-20 15:00:00,6832.083,0.0,32.2 -2016-12-20 16:00:00,6978.075,0.0,31.65 -2016-12-20 17:00:00,7217.217,0.0,31.23 -2016-12-20 18:00:00,7129.4,0.0,29.21 -2016-12-20 19:00:00,6878.233,0.0,28.3 -2016-12-20 20:00:00,6739.792,0.0,29.4 -2016-12-20 21:00:00,6501.517,0.0,30.81 -2016-12-20 22:00:00,6111.325,0.0,29.71 -2016-12-20 23:00:00,5709.158,0.0,29.91 -2016-12-21 00:00:00,5285.667,0.0,29.73 -2016-12-21 01:00:00,5018.992,0.0,29.01 -2016-12-21 02:00:00,4862.258,0.0,28.61 -2016-12-21 03:00:00,4797.95,0.0,27.47 -2016-12-21 04:00:00,4841.75,0.0,27.72 -2016-12-21 05:00:00,5057.058,0.0,27.34 -2016-12-21 06:00:00,5529.008,0.0,27.22 -2016-12-21 07:00:00,6072.008,0.0,28.19 -2016-12-21 08:00:00,6402.717,0.0,30.5 -2016-12-21 09:00:00,6601.108,0.0,32.89 -2016-12-21 10:00:00,6663.8,0.0,36.77 -2016-12-21 11:00:00,6690.475,0.0,39.02 -2016-12-21 12:00:00,6721.708,0.0,39.35 -2016-12-21 13:00:00,6691.675,0.0,39.28 -2016-12-21 14:00:00,6664.308,0.0,39.68 -2016-12-21 15:00:00,6695.4,0.0,39.38 -2016-12-21 16:00:00,6844.408,0.0,37.71 -2016-12-21 17:00:00,7007.367,0.0,36.16 -2016-12-21 18:00:00,6887.208,0.0,35.72 -2016-12-21 19:00:00,6720.675,0.0,35.78 -2016-12-21 20:00:00,6517.15,0.0,34.74 -2016-12-21 21:00:00,6288.6,0.0,36.34 -2016-12-21 22:00:00,5979.183,0.0,34.51 -2016-12-21 23:00:00,5523.275,0.0,35.9 -2016-12-22 00:00:00,5104.717,0.0,34.45 -2016-12-22 01:00:00,4850.4,0.0,34.87 -2016-12-22 02:00:00,4703.925,0.0,32.7 -2016-12-22 03:00:00,4627.3,0.0,35.03 -2016-12-22 04:00:00,4642.383,0.0,34.43 -2016-12-22 05:00:00,4837.55,0.0,33.89 -2016-12-22 06:00:00,5333.967,0.0,36.66 -2016-12-22 07:00:00,5869.883,0.0,37.58 -2016-12-22 08:00:00,6240.867,0.0,38.21 -2016-12-22 09:00:00,6446.617,0.0,40.97 -2016-12-22 10:00:00,6491.233,0.0,43.39 -2016-12-22 11:00:00,6537.492,0.0,45.48 -2016-12-22 12:00:00,6496.925,0.0,44.86 -2016-12-22 13:00:00,6435.592,0.0,44.39 -2016-12-22 14:00:00,6388.467,0.0,46.07 -2016-12-22 15:00:00,6409.358,0.0,45.18 -2016-12-22 16:00:00,6582.083,0.0,43.99 -2016-12-22 17:00:00,6801.875,0.0,41.78 -2016-12-22 18:00:00,6682.125,0.0,39.38 -2016-12-22 19:00:00,6538.025,0.0,38.84 -2016-12-22 20:00:00,6357.358,0.0,38.81 -2016-12-22 21:00:00,6167.192,0.0,38.15 -2016-12-22 22:00:00,5836.858,0.0,37.77 -2016-12-22 23:00:00,5462.567,0.0,38.35 -2016-12-23 00:00:00,5065.708,0.0,36.88 -2016-12-23 01:00:00,4783.692,0.0,36.95 -2016-12-23 02:00:00,4627.308,0.0,36.71 -2016-12-23 03:00:00,4550.458,0.0,37.09 -2016-12-23 04:00:00,4561.958,0.0,36.72 -2016-12-23 05:00:00,4756.392,0.0,35.72 -2016-12-23 06:00:00,5224.133,0.0,35.75 -2016-12-23 07:00:00,5719.05,0.0,36.02 -2016-12-23 08:00:00,6022.958,0.0,37.41 -2016-12-23 09:00:00,6220.042,0.0,39.31 -2016-12-23 10:00:00,6278.758,0.0,42.76 -2016-12-23 11:00:00,6290.658,0.0,44.85 -2016-12-23 12:00:00,6261.342,0.0,46.39 -2016-12-23 13:00:00,6200.85,0.0,46.03 -2016-12-23 14:00:00,6153.975,0.0,46.23 -2016-12-23 15:00:00,6167.425,0.0,44.63 -2016-12-23 16:00:00,6334.942,0.0,42.62 -2016-12-23 17:00:00,6540.633,0.0,41.52 -2016-12-23 18:00:00,6413.508,0.0,41.24 -2016-12-23 19:00:00,6257.683,0.0,40.36 -2016-12-23 20:00:00,6093.958,0.0,40.92 -2016-12-23 21:00:00,5903.117,0.0,40.62 -2016-12-23 22:00:00,5653.925,0.0,40.03 -2016-12-23 23:00:00,5330.058,0.0,39.89 -2016-12-24 00:00:00,4990.275,0.0,39.87 -2016-12-24 01:00:00,4748.525,0.0,39.84 -2016-12-24 02:00:00,4580.6,0.0,39.31 -2016-12-24 03:00:00,4484.325,0.0,38.68 -2016-12-24 04:00:00,4446.75,0.0,40.36 -2016-12-24 05:00:00,4511.375,0.0156,39.26 -2016-12-24 06:00:00,4665.467,0.0623,41.06 -2016-12-24 07:00:00,4908.9,0.0928,40.82 -2016-12-24 08:00:00,5179.15,0.0266,39.59 -2016-12-24 09:00:00,5484.092,0.0418,39.46 -2016-12-24 10:00:00,5711.358,0.0117,39.81 -2016-12-24 11:00:00,5830.108,0.0051,40.22 -2016-12-24 12:00:00,5846.817,0.0124,41.36 -2016-12-24 13:00:00,5812.167,0.0,41.86 -2016-12-24 14:00:00,5672.617,0.0,43.74 -2016-12-24 15:00:00,5585.9,0.0,43.48 -2016-12-24 16:00:00,5651.525,0.0,44.52 -2016-12-24 17:00:00,5850.375,0.0,43.92 -2016-12-24 18:00:00,5829.367,0.0,42.86 -2016-12-24 19:00:00,5720.358,0.0,40.2 -2016-12-24 20:00:00,5593.292,0.0,43.5 -2016-12-24 21:00:00,5456.05,0.0,42.41 -2016-12-24 22:00:00,5303.183,0.0,42.63 -2016-12-24 23:00:00,5110.775,0.0,42.04 -2016-12-25 00:00:00,4890.75,0.0,40.36 -2016-12-25 01:00:00,4688.933,0.0,39.7 -2016-12-25 02:00:00,4527.017,0.0,39.67 -2016-12-25 03:00:00,4426.167,0.0,38.53 -2016-12-25 04:00:00,4382.042,0.0,37.85 -2016-12-25 05:00:00,4400.817,0.0,36.91 -2016-12-25 06:00:00,4477.6,0.0,37.36 -2016-12-25 07:00:00,4587.267,0.0,36.94 -2016-12-25 08:00:00,4743.325,0.0,38.75 -2016-12-25 09:00:00,4891.167,0.0,41.42 -2016-12-25 10:00:00,5020.317,0.0,44.38 -2016-12-25 11:00:00,5096.3,0.0,47.04 -2016-12-25 12:00:00,5121.467,0.0,48.28 -2016-12-25 13:00:00,5111.233,0.0,49.6 -2016-12-25 14:00:00,5112.05,0.0,49.02 -2016-12-25 15:00:00,5119.458,0.0,47.16 -2016-12-25 16:00:00,5214.725,0.0,45.44 -2016-12-25 17:00:00,5444.858,0.0,42.97 -2016-12-25 18:00:00,5454.292,0.0,40.4 -2016-12-25 19:00:00,5406.35,0.0,39.43 -2016-12-25 20:00:00,5372.467,0.0,38.99 -2016-12-25 21:00:00,5327.083,0.0,37.4 -2016-12-25 22:00:00,5210.6,0.0,36.86 -2016-12-25 23:00:00,5002.827,0.0,35.74 -2016-12-26 00:00:00,4795.942,0.0,35.36 -2016-12-26 01:00:00,4614.042,0.0,34.75 -2016-12-26 02:00:00,4497.142,0.0,33.21 -2016-12-26 03:00:00,4428.208,0.0,32.21 -2016-12-26 04:00:00,4420.633,0.0,31.77 -2016-12-26 05:00:00,4508.075,0.0,31.98 -2016-12-26 06:00:00,4698.692,0.0,32.57 -2016-12-26 07:00:00,4896.892,0.0,33.15 -2016-12-26 08:00:00,5145.925,0.0,34.27 -2016-12-26 09:00:00,5397.683,0.0,35.08 -2016-12-26 10:00:00,5604.65,0.0,36.9 -2016-12-26 11:00:00,5716.892,0.0,38.24 -2016-12-26 12:00:00,5775.342,0.0,38.47 -2016-12-26 13:00:00,5802.175,0.0047,39.27 -2016-12-26 14:00:00,5801.592,0.0021,40.35 -2016-12-26 15:00:00,5833.283,0.0,40.15 -2016-12-26 16:00:00,5933.608,0.0,39.75 -2016-12-26 17:00:00,6102.092,0.0,41.52 -2016-12-26 18:00:00,6060.083,0.0,42.46 -2016-12-26 19:00:00,5959.658,0.0,42.87 -2016-12-26 20:00:00,5819.233,0.0,44.47 -2016-12-26 21:00:00,5668.592,0.0,45.6 -2016-12-26 22:00:00,5412.517,0.0,45.85 -2016-12-26 23:00:00,5094.25,0.0,47.92 -2016-12-27 00:00:00,4770.917,0.0,48.32 -2016-12-27 01:00:00,4525.967,0.0,49.14 -2016-12-27 02:00:00,4377.508,0.0,51.12 -2016-12-27 03:00:00,4293.858,0.0,51.65 -2016-12-27 04:00:00,4309.775,0.0,52.46 -2016-12-27 05:00:00,4486.908,0.0,53.52 -2016-12-27 06:00:00,4878.967,0.0,54.18 -2016-12-27 07:00:00,5309.392,0.0,53.96 -2016-12-27 08:00:00,5663.775,0.0,54.23 -2016-12-27 09:00:00,5929.542,0.0,54.4 -2016-12-27 10:00:00,6100.275,0.0,56.17 -2016-12-27 11:00:00,6164.542,0.0,57.54 -2016-12-27 12:00:00,6115.217,0.0,57.18 -2016-12-27 13:00:00,6075.667,0.0,58.63 -2016-12-27 14:00:00,6033.333,0.0,58.46 -2016-12-27 15:00:00,6049.175,0.0,56.27 -2016-12-27 16:00:00,6127.317,0.0,54.86 -2016-12-27 17:00:00,6372.925,0.0,52.32 -2016-12-27 18:00:00,6290.692,0.0,50.43 -2016-12-27 19:00:00,6124.367,0.0,46.26 -2016-12-27 20:00:00,5961.683,0.0,46.4 -2016-12-27 21:00:00,5773.267,0.0,42.29 -2016-12-27 22:00:00,5518.375,0.0,41.91 -2016-12-27 23:00:00,5141.1,0.0,40.36 -2016-12-28 00:00:00,4791.675,0.0,39.27 -2016-12-28 01:00:00,4557.35,0.0,38.31 -2016-12-28 02:00:00,4411.917,0.0,37.5 -2016-12-28 03:00:00,4351.683,0.0,36.3 -2016-12-28 04:00:00,4368.483,0.0,36.85 -2016-12-28 05:00:00,4556.808,0.0,37.12 -2016-12-28 06:00:00,4966.775,0.0,35.86 -2016-12-28 07:00:00,5406.433,0.0,36.77 -2016-12-28 08:00:00,5768.825,0.0,39.08 -2016-12-28 09:00:00,6033.95,0.0,40.1 -2016-12-28 10:00:00,6223.1,0.0,41.31 -2016-12-28 11:00:00,6308.75,0.0,41.73 -2016-12-28 12:00:00,6356.525,0.0,41.57 -2016-12-28 13:00:00,6381.833,0.0,41.21 -2016-12-28 14:00:00,6361.433,0.0,40.49 -2016-12-28 15:00:00,6374.208,0.0,38.82 -2016-12-28 16:00:00,6502.083,0.0,37.78 -2016-12-28 17:00:00,6709.475,0.0,36.34 -2016-12-28 18:00:00,6606.992,0.0,35.67 -2016-12-28 19:00:00,6437.067,0.0,36.28 -2016-12-28 20:00:00,6241.742,0.0,34.14 -2016-12-28 21:00:00,6024.417,0.0,35.3 -2016-12-28 22:00:00,5739.5,0.0,33.42 -2016-12-28 23:00:00,5380.692,0.0,32.71 -2016-12-29 00:00:00,5006.592,0.0,33.28 -2016-12-29 01:00:00,4764.083,0.0,32.11 -2016-12-29 02:00:00,4598.692,0.0,31.7 -2016-12-29 03:00:00,4515.083,0.0,31.94 -2016-12-29 04:00:00,4528.008,0.0,32.9 -2016-12-29 05:00:00,4705.617,0.0,32.56 -2016-12-29 06:00:00,5089.375,0.0,34.84 -2016-12-29 07:00:00,5521.283,0.0,35.31 -2016-12-29 08:00:00,5889.558,0.0147,37.95 -2016-12-29 09:00:00,6193.292,0.0265,40.66 -2016-12-29 10:00:00,6345.35,0.0144,42.38 -2016-12-29 11:00:00,6443.35,0.0239,43.83 -2016-12-29 12:00:00,6491.575,0.0243,43.67 -2016-12-29 13:00:00,6490.983,0.0074,43.28 -2016-12-29 14:00:00,6464.775,0.0516,44.82 -2016-12-29 15:00:00,6492.75,0.0037,43.95 -2016-12-29 16:00:00,6568.042,0.0038,43.81 -2016-12-29 17:00:00,6675.342,0.0,41.21 -2016-12-29 18:00:00,6555.717,0.0,40.36 -2016-12-29 19:00:00,6394.467,0.0,38.1 -2016-12-29 20:00:00,6192.733,0.0,37.49 -2016-12-29 21:00:00,5987.967,0.0,37.67 -2016-12-29 22:00:00,5721.425,0.0,37.74 -2016-12-29 23:00:00,5371.05,0.0,36.76 -2016-12-30 00:00:00,5014.25,0.0,36.68 -2016-12-30 01:00:00,4755.325,0.0,36.16 -2016-12-30 02:00:00,4605.517,0.0,35.52 -2016-12-30 03:00:00,4527.608,0.0,34.46 -2016-12-30 04:00:00,4534.8,0.0,34.23 -2016-12-30 05:00:00,4709.917,0.0,33.91 -2016-12-30 06:00:00,5098.7,0.0,34.57 -2016-12-30 07:00:00,5519.758,0.0,34.28 -2016-12-30 08:00:00,5846.567,0.0,35.58 -2016-12-30 09:00:00,6068.325,0.0,37.01 -2016-12-30 10:00:00,6196.117,0.0,39.52 -2016-12-30 11:00:00,6293.608,0.0,40.04 -2016-12-30 12:00:00,6323.975,0.0,40.14 -2016-12-30 13:00:00,6320.367,0.0,39.98 -2016-12-30 14:00:00,6270.283,0.0,39.64 -2016-12-30 15:00:00,6253.3,0.0,39.3 -2016-12-30 16:00:00,6366.525,0.0112,38.25 -2016-12-30 17:00:00,6600.158,0.0,37.74 -2016-12-30 18:00:00,6511.392,0.0,33.52 -2016-12-30 19:00:00,6344.833,0.0024,32.52 -2016-12-30 20:00:00,6162.35,0.0,34.93 -2016-12-30 21:00:00,6009.983,0.0,33.72 -2016-12-30 22:00:00,5789.333,0.0,33.48 -2016-12-30 23:00:00,5495.133,0.0,33.53 -2016-12-31 00:00:00,5170.017,0.0,32.88 -2016-12-31 01:00:00,4919.375,0.0,32.35 -2016-12-31 02:00:00,4752.283,0.0,31.61 -2016-12-31 03:00:00,4650.008,0.0,31.02 -2016-12-31 04:00:00,4608.642,0.0,31.07 -2016-12-31 05:00:00,4657.542,0.0,31.14 -2016-12-31 06:00:00,4817.983,0.0,30.45 -2016-12-31 07:00:00,4992.292,0.0,31.21 -2016-12-31 08:00:00,5216.492,0.0,32.57 -2016-12-31 09:00:00,5472.333,0.0,35.15 -2016-12-31 10:00:00,5637.983,0.0,37.42 -2016-12-31 11:00:00,5712.758,0.0,39.11 -2016-12-31 12:00:00,5712.175,0.0,41.36 -2016-12-31 13:00:00,5670.617,0.0,41.76 -2016-12-31 14:00:00,5639.25,0.0,42.86 -2016-12-31 15:00:00,5682.275,0.0,41.58 -2016-12-31 16:00:00,5824.467,0.0,41.66 -2016-12-31 17:00:00,6086.242,0.0,41.1 -2016-12-31 18:00:00,6095.142,0.0027,40.82 -2016-12-31 19:00:00,5999.75,0.0,41.48 -2016-12-31 20:00:00,5849.025,0.0,41.6 -2016-12-31 21:00:00,5634.308,0.0,41.98 -2016-12-31 22:00:00,5416.533,0.0,41.39 -2016-12-31 23:00:00,5215.333,0.0,42.45 -2017-01-01 00:00:00,5031.267,0.0294,42.41 -2017-01-01 01:00:00,4861.642,0.0,42.17 -2017-01-01 02:00:00,4667.608,0.0,42.09 -2017-01-01 03:00:00,4516.617,0.0,41.83 -2017-01-01 04:00:00,4429.042,0.0,41.53 -2017-01-01 05:00:00,4428.383,0.0,39.82 -2017-01-01 06:00:00,4474.1,0.0,40.53 -2017-01-01 07:00:00,4516.45,0.0,39.48 -2017-01-01 08:00:00,4631.417,0.0,41.67 -2017-01-01 09:00:00,4772.125,0.0,43.42 -2017-01-01 10:00:00,4928.975,0.0,46.15 -2017-01-01 11:00:00,5053.817,0.0,48.34 -2017-01-01 12:00:00,5120.683,0.0,47.23 -2017-01-01 13:00:00,5166.392,0.0,48.52 -2017-01-01 14:00:00,5181.425,0.0,46.8 -2017-01-01 15:00:00,5209.233,0.0,46.33 -2017-01-01 16:00:00,5329.967,0.0,44.12 -2017-01-01 17:00:00,5630.1,0.0,43.04 -2017-01-01 18:00:00,5692.958,0.0,39.63 -2017-01-01 19:00:00,5639.492,0.0,38.15 -2017-01-01 20:00:00,5585.842,0.0,38.33 -2017-01-01 21:00:00,5501.5,0.0,37.13 -2017-01-01 22:00:00,5314.342,0.0,35.46 -2017-01-01 23:00:00,5068.167,0.0,36.73 -2017-01-02 00:00:00,4799.975,0.0,35.98 -2017-01-02 01:00:00,4597.975,0.0,35.85 -2017-01-02 02:00:00,4470.133,0.0,35.98 -2017-01-02 03:00:00,4401.783,0.0,34.83 -2017-01-02 04:00:00,4392.125,0.0,34.58 -2017-01-02 05:00:00,4484.417,0.0,36.02 -2017-01-02 06:00:00,4654.108,0.0505,35.8 -2017-01-02 07:00:00,4854.233,0.0,36.33 -2017-01-02 08:00:00,5108.217,0.018,38.35 -2017-01-02 09:00:00,5383.892,0.0033,38.7 -2017-01-02 10:00:00,5603.808,0.0131,38.68 -2017-01-02 11:00:00,5760.242,0.0,39.8 -2017-01-02 12:00:00,5851.65,0.0088,41.32 -2017-01-02 13:00:00,5892.65,0.0,40.67 -2017-01-02 14:00:00,5931.317,0.0238,40.25 -2017-01-02 15:00:00,5959.808,0.0059,39.01 -2017-01-02 16:00:00,6099.108,0.0049,39.09 -2017-01-02 17:00:00,6299.117,0.0032,39.09 -2017-01-02 18:00:00,6295.858,0.0,39.03 -2017-01-02 19:00:00,6187.792,0.0,38.78 -2017-01-02 20:00:00,6050.875,0.0,38.92 -2017-01-02 21:00:00,5851.867,0.0,39.1 -2017-01-02 22:00:00,5562.033,0.0067,39.14 -2017-01-02 23:00:00,5189.425,0.0,39.25 -2017-01-03 00:00:00,4851.192,0.0024,39.33 -2017-01-03 01:00:00,4622.325,0.0029,39.26 -2017-01-03 02:00:00,4485.383,0.0,39.47 -2017-01-03 03:00:00,4424.908,0.0,39.25 -2017-01-03 04:00:00,4452.992,0.0,39.32 -2017-01-03 05:00:00,4692.767,0.0,39.65 -2017-01-03 06:00:00,5203.292,0.0,39.53 -2017-01-03 07:00:00,5772.7,0.0,39.69 -2017-01-03 08:00:00,6128.608,0.0,40.89 -2017-01-03 09:00:00,6360.083,0.0028,40.75 -2017-01-03 10:00:00,6484.842,0.0282,41.72 -2017-01-03 11:00:00,6572.867,0.0231,41.88 -2017-01-03 12:00:00,6623.8,0.0216,42.52 -2017-01-03 13:00:00,6652.85,0.0079,42.89 -2017-01-03 14:00:00,6625.508,0.0034,42.6 -2017-01-03 15:00:00,6662.375,0.0443,43.18 -2017-01-03 16:00:00,6779.55,0.0,42.9 -2017-01-03 17:00:00,6886.05,0.0,44.02 -2017-01-03 18:00:00,6716.35,0.0,43.62 -2017-01-03 19:00:00,6538.092,0.0,43.77 -2017-01-03 20:00:00,6309.508,0.0,42.91 -2017-01-03 21:00:00,6050.917,0.0,42.38 -2017-01-03 22:00:00,5674.758,0.0,42.31 -2017-01-03 23:00:00,5253.667,0.0,42.06 -2017-01-04 00:00:00,4866.45,0.0,41.5 -2017-01-04 01:00:00,4618.708,0.0,41.32 -2017-01-04 02:00:00,4477.625,0.0,41.22 -2017-01-04 03:00:00,4400.708,0.0,41.19 -2017-01-04 04:00:00,4423.083,0.0,41.77 -2017-01-04 05:00:00,4643.917,0.0,42.02 -2017-01-04 06:00:00,5145.575,0.0,42.33 -2017-01-04 07:00:00,5732.167,0.0,42.47 -2017-01-04 08:00:00,6041.925,0.0,43.61 -2017-01-04 09:00:00,6222.018,0.0,45.82 -2017-01-04 10:00:00,6297.492,0.0,47.89 -2017-01-04 11:00:00,6356.142,0.0,48.83 -2017-01-04 12:00:00,6378.192,0.0,49.5 -2017-01-04 13:00:00,6339.433,0.0,49.29 -2017-01-04 14:00:00,6305.642,0.0,50.21 -2017-01-04 15:00:00,6318.933,0.0,49.55 -2017-01-04 16:00:00,6446.733,0.0,47.48 -2017-01-04 17:00:00,6672.575,0.0,43.45 -2017-01-04 18:00:00,6612.017,0.0,41.01 -2017-01-04 19:00:00,6475.8,0.0,39.14 -2017-01-04 20:00:00,6322.383,0.0,38.19 -2017-01-04 21:00:00,6114.892,0.0,35.28 -2017-01-04 22:00:00,5792.242,0.0,33.66 -2017-01-04 23:00:00,5389.042,0.0,33.5 -2017-01-05 00:00:00,5033.342,0.0,32.51 -2017-01-05 01:00:00,4791.783,0.0,32.01 -2017-01-05 02:00:00,4674.15,0.0,30.68 -2017-01-05 03:00:00,4623.9,0.0,29.47 -2017-01-05 04:00:00,4660.383,0.0,29.13 -2017-01-05 05:00:00,4891.75,0.0,28.43 -2017-01-05 06:00:00,5406.267,0.0,27.75 -2017-01-05 07:00:00,5996.442,0.0,27.62 -2017-01-05 08:00:00,6358.983,0.0,28.32 -2017-01-05 09:00:00,6589.15,0.0,29.75 -2017-01-05 10:00:00,6704.217,0.0,30.98 -2017-01-05 11:00:00,6742.867,0.0,31.69 -2017-01-05 12:00:00,6723.117,0.0,32.18 -2017-01-05 13:00:00,6687.308,0.0,33.01 -2017-01-05 14:00:00,6679.325,0.0,33.26 -2017-01-05 15:00:00,6732.117,0.0,32.92 -2017-01-05 16:00:00,6867.892,0.0,32.05 -2017-01-05 17:00:00,7064.075,0.0,30.88 -2017-01-05 18:00:00,6968.892,0.0,30.8 -2017-01-05 19:00:00,6820.708,0.0038,30.45 -2017-01-05 20:00:00,6608.142,0.0025,31.33 -2017-01-05 21:00:00,6362.892,0.0,31.7 -2017-01-05 22:00:00,6012.267,0.0,31.65 -2017-01-05 23:00:00,5584.917,0.0108,30.35 -2017-01-06 00:00:00,5183.55,0.0145,30.21 -2017-01-06 01:00:00,4960.958,0.0078,30.09 -2017-01-06 02:00:00,4826.217,0.0026,27.46 -2017-01-06 03:00:00,4759.6,0.0045,27.59 -2017-01-06 04:00:00,4784.608,0.0041,27.49 -2017-01-06 05:00:00,5012.558,0.0,28.62 -2017-01-06 06:00:00,5498.525,0.0098,27.58 -2017-01-06 07:00:00,6079.792,0.0,27.24 -2017-01-06 08:00:00,6429.567,0.0,30.15 -2017-01-06 09:00:00,6628.275,0.0,29.34 -2017-01-06 10:00:00,6702.15,0.0,32.66 -2017-01-06 11:00:00,6711.133,0.0,33.13 -2017-01-06 12:00:00,6684.375,0.0,33.51 -2017-01-06 13:00:00,6678.358,0.0,34.23 -2017-01-06 14:00:00,6671.875,0.0,33.18 -2017-01-06 15:00:00,6723.536,0.0,32.52 -2017-01-06 16:00:00,6865.95,0.0,31.15 -2017-01-06 17:00:00,6997.792,0.0,30.41 -2017-01-06 18:00:00,6885.633,0.0,30.06 -2017-01-06 19:00:00,6699.967,0.0,29.11 -2017-01-06 20:00:00,6513.133,0.0,27.6 -2017-01-06 21:00:00,6312.6,0.0,28.03 -2017-01-06 22:00:00,6055.717,0.0,25.87 -2017-01-06 23:00:00,5699.233,0.0,25.89 -2017-01-07 00:00:00,5357.5,0.0,24.88 -2017-01-07 01:00:00,5121.875,, -2017-01-07 02:00:00,4950.4,0.0,24.25 -2017-01-07 03:00:00,4870.1,0.0,23.62 -2017-01-07 04:00:00,4834.833,0.0,23.6 -2017-01-07 05:00:00,4896.167,0.0,23.25 -2017-01-07 06:00:00,5076.875,0.0034,22.96 -2017-01-07 07:00:00,5318.717,0.0126,22.76 -2017-01-07 08:00:00,5625.142,0.0078,23.04 -2017-01-07 09:00:00,5960.267,0.0134,23.21 -2017-01-07 10:00:00,6232.292,, -2017-01-07 11:00:00,6402.133,0.0114,22.66 -2017-01-07 12:00:00,6484.292,0.0191,23.23 -2017-01-07 13:00:00,6486.617,0.0259,22.94 -2017-01-07 14:00:00,6500.433,0.0215,22.62 -2017-01-07 15:00:00,6509.725,0.0262,21.86 -2017-01-07 16:00:00,6598.167,0.0127,20.85 -2017-01-07 17:00:00,6757.958,0.0092,20.44 -2017-01-07 18:00:00,6778.283,0.0042,21.01 -2017-01-07 19:00:00,6691.983,0.0032,20.12 -2017-01-07 20:00:00,6561.508,0.0025,20.06 -2017-01-07 21:00:00,6364.458,0.0,20.16 -2017-01-07 22:00:00,6136.567,0.0,19.58 -2017-01-07 23:00:00,5835.042,, -2017-01-08 00:00:00,5548.45,0.0,18.5 -2017-01-08 01:00:00,5310.358,0.0,18.19 -2017-01-08 02:00:00,5146.017,, -2017-01-08 03:00:00,5048.075,0.0,15.73 -2017-01-08 04:00:00,5011.475,0.0,15.51 -2017-01-08 05:00:00,5053.958,0.0,14.37 -2017-01-08 06:00:00,5175.442,0.0,14.98 -2017-01-08 07:00:00,5315.3,0.0,14.9 -2017-01-08 08:00:00,5561.4,0.0,17.47 -2017-01-08 09:00:00,5825.125,0.0,19.12 -2017-01-08 10:00:00,6053.958,, -2017-01-08 11:00:00,6197.325,0.0,21.42 -2017-01-08 12:00:00,6299.692,, -2017-01-08 13:00:00,6331.55,0.0,23.95 -2017-01-08 14:00:00,6316.875,0.0,24.23 -2017-01-08 15:00:00,6372.408,0.0,24.22 -2017-01-08 16:00:00,6501.033,, -2017-01-08 17:00:00,6756.675,0.0,20.8 -2017-01-08 18:00:00,6811.917,0.0,19.13 -2017-01-08 19:00:00,6765.725,0.0,17.62 -2017-01-08 20:00:00,6658.083,0.0,18.36 -2017-01-08 21:00:00,6486.225,0.0,16.98 -2017-01-08 22:00:00,6205.158,0.0,16.05 -2017-01-08 23:00:00,5828.792,0.0,15.3 -2017-01-09 00:00:00,5536.675,0.0,15.54 -2017-01-09 01:00:00,5330.75,0.0,14.58 -2017-01-09 02:00:00,5212.158,0.0,13.98 -2017-01-09 03:00:00,5210.108,0.0,13.12 -2017-01-09 04:00:00,5207.575,0.0,11.9 -2017-01-09 05:00:00,5406.367,0.0,12.4 -2017-01-09 06:00:00,5861.192,0.0,10.95 -2017-01-09 07:00:00,6425.183,0.0,12.13 -2017-01-09 08:00:00,6732.042,0.0,15.98 -2017-01-09 09:00:00,6989.0,0.0,18.28 -2017-01-09 10:00:00,7153.017,0.0,20.81 -2017-01-09 11:00:00,7215.142,0.0,21.46 -2017-01-09 12:00:00,7241.108,0.0,22.74 -2017-01-09 13:00:00,7234.3,0.0,23.43 -2017-01-09 14:00:00,7186.708,0.0,23.28 -2017-01-09 16:00:00,7306.142,0.0,21.66 -2017-01-09 17:00:00,7496.192,0.0,20.65 -2017-01-09 18:00:00,7425.583,0.0,22.02 -2017-01-09 19:00:00,7290.75,0.0,20.25 -2017-01-09 20:00:00,7090.117,0.0,19.64 -2017-01-09 21:00:00,6848.567,0.0,19.78 -2017-01-09 22:00:00,6456.658,0.0,18.93 -2017-01-09 23:00:00,6001.783,0.0,18.45 -2017-01-10 00:00:00,5585.533,0.0,18.35 -2017-01-10 01:00:00,5330.825,0.0,18.03 -2017-01-10 02:00:00,5163.925,0.0,17.67 -2017-01-10 03:00:00,5095.258,0.0,16.76 -2017-01-10 04:00:00,5116.958,0.0,16.0 -2017-01-10 05:00:00,5341.692,0.0,16.74 -2017-01-10 06:00:00,5830.458,, -2017-01-10 07:00:00,6392.442,0.0,17.73 -2017-01-10 08:00:00,6704.783,0.0,23.13 -2017-01-10 09:00:00,6915.658,0.0,26.27 -2017-01-10 10:00:00,7023.55,0.0,29.82 -2017-01-10 11:00:00,7027.358,0.0,32.38 -2017-01-10 12:00:00,6998.033,0.0,35.02 -2017-01-10 13:00:00,6983.7,0.0,35.09 -2017-01-10 14:00:00,6954.583,0.0,34.87 -2017-01-10 15:00:00,6990.408,0.0,34.95 -2017-01-10 16:00:00,7079.642,, -2017-01-10 17:00:00,7194.483,0.0,34.97 -2017-01-10 18:00:00,7043.25,0.0,35.39 -2017-01-10 19:00:00,6846.117,0.0,35.19 -2017-01-10 20:00:00,6644.467,0.0,37.43 -2017-01-10 21:00:00,6366.658,0.0,38.63 -2017-01-10 22:00:00,5999.05,0.0,40.91 -2017-01-10 23:00:00,5523.425,0.0,42.9 -2017-01-11 00:00:00,5091.0,0.0,42.05 -2017-01-11 01:00:00,4846.525,, -2017-01-11 02:00:00,4722.683,, -2017-01-11 03:00:00,4663.458,0.0129,41.97 -2017-01-11 04:00:00,4678.742,0.0,43.03 -2017-01-11 05:00:00,4890.467,0.0,43.02 -2017-01-11 06:00:00,5388.217,0.0,42.87 -2017-01-11 07:00:00,5963.817,0.0,41.49 -2017-01-11 08:00:00,6253.667,0.0,41.9 -2017-01-11 09:00:00,6398.742,0.0,43.27 -2017-01-11 10:00:00,6477.425,0.0,46.48 -2017-01-11 11:00:00,6496.208,0.0,46.69 -2017-01-11 12:00:00,6484.933,0.0,49.36 -2017-01-11 13:00:00,6468.483,0.0,50.43 -2017-01-11 14:00:00,6396.317,0.0,49.9 -2017-01-11 15:00:00,6415.242,0.0,47.65 -2017-01-11 16:00:00,6547.217,0.0,47.77 -2017-01-11 17:00:00,6756.075,0.0,44.76 -2017-01-11 18:00:00,6653.658,0.0,43.65 -2017-01-11 19:00:00,6479.325,0.0032,42.18 -2017-01-11 20:00:00,6268.233,0.0159,44.26 -2017-01-11 21:00:00,6021.942,0.0824,45.71 -2017-01-11 22:00:00,5691.542,0.1538,46.26 -2017-01-11 23:00:00,5263.108,0.0435,45.68 -2017-01-12 00:00:00,4889.958,0.0034,46.19 -2017-01-12 01:00:00,4623.592,0.0177,46.47 -2017-01-12 02:00:00,4468.825,0.0022,48.11 -2017-01-12 03:00:00,4386.617,0.0,49.45 -2017-01-12 04:00:00,4409.35,, -2017-01-12 05:00:00,4623.058,0.0,50.02 -2017-01-12 06:00:00,5160.0,0.0,51.0 -2017-01-12 07:00:00,5724.058,0.0,51.22 -2017-01-12 08:00:00,6042.083,0.0,52.64 -2017-01-12 09:00:00,6253.717,0.0,53.64 -2017-01-12 10:00:00,6274.575,, -2017-01-12 11:00:00,6289.625,0.0,56.12 -2017-01-12 12:00:00,6286.525,0.0,57.68 -2017-01-12 13:00:00,6276.158,0.0,59.91 -2017-01-12 14:00:00,6240.658,0.0,61.65 -2017-01-12 15:00:00,6251.883,0.0,62.0 -2017-01-12 16:00:00,6370.908,0.0,61.48 -2017-01-12 17:00:00,6560.808,0.0096,60.55 -2017-01-12 18:00:00,6431.917,0.0,59.38 -2017-01-12 19:00:00,6246.3,0.0,58.7 -2017-01-12 20:00:00,6047.2,0.0,57.21 -2017-01-12 21:00:00,5809.108,0.0,59.16 -2017-01-12 22:00:00,5489.467,0.0,59.09 -2017-01-12 23:00:00,5066.533,0.0,57.58 -2017-01-13 00:00:00,4689.167,0.0,57.7 -2017-01-13 01:00:00,4448.6,0.0,56.43 -2017-01-13 02:00:00,4301.883,0.0,56.1 -2017-01-13 03:00:00,4219.25,0.0,55.32 -2017-01-13 04:00:00,4246.617,0.0,53.79 -2017-01-13 05:00:00,4444.275,0.0,52.29 -2017-01-13 06:00:00,4995.167,0.0,49.65 -2017-01-13 07:00:00,5569.458,0.0,47.89 -2017-01-13 08:00:00,5889.908,0.0,44.42 -2017-01-13 09:00:00,6118.942,0.0,44.31 -2017-01-13 10:00:00,6232.9,0.0,44.86 -2017-01-13 11:00:00,6258.433,0.0,45.1 -2017-01-13 12:00:00,6262.692,0.0,45.43 -2017-01-13 13:00:00,6250.842,0.0,46.47 -2017-01-13 14:00:00,6240.667,0.0,47.02 -2017-01-13 15:00:00,6268.075,0.0,44.11 -2017-01-13 16:00:00,6373.717,0.0,41.62 -2017-01-13 17:00:00,6585.4,0.0,40.32 -2017-01-13 18:00:00,6495.542,0.0,37.27 -2017-01-13 19:00:00,6337.567,0.0,35.29 -2017-01-13 20:00:00,6149.658,0.0,33.08 -2017-01-13 21:00:00,5955.775,0.0,33.18 -2017-01-13 22:00:00,5695.075,0.0,32.34 -2017-01-13 23:00:00,5363.908,0.0,31.92 -2017-01-14 00:00:00,5029.158,0.0,32.68 -2017-01-14 01:00:00,4789.758,0.0,32.03 -2017-01-14 02:00:00,4641.367,0.0,31.51 -2017-01-14 03:00:00,4556.742,0.0,30.91 -2017-01-14 04:00:00,4542.617,0.0,30.8 -2017-01-14 05:00:00,4606.317,0.0,30.09 -2017-01-14 06:00:00,4777.0,0.0,29.01 -2017-01-14 07:00:00,4997.25,0.0,28.64 -2017-01-14 08:00:00,5270.242,0.0,28.76 -2017-01-14 09:00:00,5515.675,0.0,30.5 -2017-01-14 10:00:00,5696.867,0.0,31.53 -2017-01-14 11:00:00,5796.775,0.0,32.82 -2017-01-14 12:00:00,5881.108,0.0,34.89 -2017-01-14 13:00:00,5891.4,0.0023,34.76 -2017-01-14 14:00:00,5913.05,0.0138,34.01 -2017-01-14 15:00:00,5979.425,0.038,34.09 -2017-01-14 16:00:00,6068.042,0.0132,32.34 -2017-01-14 17:00:00,6221.025,0.0066,29.81 -2017-01-14 18:00:00,6246.617,0.0055,29.97 -2017-01-14 19:00:00,6145.225,0.0,32.78 -2017-01-14 20:00:00,6023.767,0.0,30.77 -2017-01-14 21:00:00,5849.583,0.0,31.11 -2017-01-14 22:00:00,5638.033,0.0,31.57 -2017-01-14 23:00:00,5377.917,0.0,31.11 -2017-01-15 00:00:00,5108.867,0.0,31.18 -2017-01-15 01:00:00,4873.208,0.0,31.97 -2017-01-15 02:00:00,4710.25,0.0,32.12 -2017-01-15 03:00:00,4619.117,0.0,31.74 -2017-01-15 04:00:00,4580.367,0.0,31.2 -2017-01-15 05:00:00,4617.808,0.0,30.65 -2017-01-15 06:00:00,4731.342,0.0,29.27 -2017-01-15 07:00:00,4866.467,0.0,28.93 -2017-01-15 08:00:00,5098.475,0.0,29.19 -2017-01-15 09:00:00,5315.458,0.0,31.74 -2017-01-15 10:00:00,5496.317,0.0,33.81 -2017-01-15 11:00:00,5587.275,0.0,36.36 -2017-01-15 12:00:00,5619.1,0.0,37.11 -2017-01-15 13:00:00,5594.458,0.0,37.83 -2017-01-15 14:00:00,5584.792,0.0,38.66 -2017-01-15 15:00:00,5586.958,0.0,39.51 -2017-01-15 16:00:00,5678.958,0.0,38.4 -2017-01-15 17:00:00,5942.45,0.0,36.59 -2017-01-15 18:00:00,6018.975,0.0,35.75 -2017-01-15 19:00:00,5968.492,0.0,34.15 -2017-01-15 20:00:00,5875.15,0.0,33.67 -2017-01-15 21:00:00,5740.05,0.0,32.17 -2017-01-15 22:00:00,5541.625,0.0,29.8 -2017-01-15 23:00:00,5271.133,0.0,31.51 -2017-01-16 00:00:00,4995.733,0.0,31.27 -2017-01-16 01:00:00,4790.083,0.0,30.06 -2017-01-16 02:00:00,4657.342,0.0,29.6 -2017-01-16 03:00:00,4594.375,0.0,28.53 -2017-01-16 04:00:00,4615.742,0.0,26.47 -2017-01-16 05:00:00,4769.958,0.0,26.88 -2017-01-16 06:00:00,5100.333,0.0,25.34 -2017-01-16 07:00:00,5449.658,0.0,27.01 -2017-01-16 08:00:00,5752.808,0.0,27.99 -2017-01-16 09:00:00,5984.067,0.0,30.11 -2017-01-16 10:00:00,6111.817,0.0,33.35 -2017-01-16 11:00:00,6179.725,0.0,37.53 -2017-01-16 12:00:00,6170.833,0.0,39.37 -2017-01-16 13:00:00,6144.283,0.0,40.61 -2017-01-16 14:00:00,6123.717,0.0,42.03 -2017-01-16 15:00:00,6136.575,0.0,42.41 -2017-01-16 16:00:00,6247.483,0.0,41.03 -2017-01-16 17:00:00,6502.942,0.0,39.8 -2017-01-16 18:00:00,6484.233,0.0,38.12 -2017-01-16 19:00:00,6357.833,0.0,37.34 -2017-01-16 20:00:00,6185.625,0.0,37.56 -2017-01-16 21:00:00,5963.85,0.0,38.43 -2017-01-16 22:00:00,5624.2,0.0,38.98 -2017-01-16 23:00:00,5230.983,0.0,38.91 -2017-01-17 00:00:00,4872.025,0.0027,39.51 -2017-01-17 01:00:00,4643.2,0.0,38.49 -2017-01-17 02:00:00,4512.25,0.0,38.76 -2017-01-17 03:00:00,4457.842,0.0,38.43 -2017-01-17 04:00:00,4495.325,0.0,38.4 -2017-01-17 05:00:00,4717.65,0.0,38.53 -2017-01-17 06:00:00,5260.625,0.0,38.11 -2017-01-17 07:00:00,5840.15,0.0,38.29 -2017-01-17 08:00:00,6177.833,0.0,38.52 -2017-01-17 09:00:00,6440.3,0.0,39.69 -2017-01-17 10:00:00,6567.4,0.0359,40.32 -2017-01-17 11:00:00,6629.65,0.0255,41.71 -2017-01-17 12:00:00,6668.45,0.0124,40.83 -2017-01-17 13:00:00,6680.567,0.0545,40.93 -2017-01-17 14:00:00,6676.325,0.0028,40.48 -2017-01-17 15:00:00,6687.6,0.005,39.88 -2017-01-17 16:00:00,6785.225,0.0,39.38 -2017-01-17 17:00:00,6898.05,0.0,39.63 -2017-01-17 18:00:00,6747.6,0.0061,39.7 -2017-01-17 19:00:00,6568.433,0.0985,40.57 -2017-01-17 20:00:00,6387.492,0.0079,39.52 -2017-01-17 21:00:00,6113.042,0.0026,39.29 -2017-01-17 22:00:00,5753.633,0.0041,39.67 -2017-01-17 23:00:00,5311.508,0.0,39.03 -2017-01-18 00:00:00,4923.392,0.0,38.78 -2017-01-18 01:00:00,4682.317,0.0,38.8 -2017-01-18 02:00:00,4540.267,0.0027,38.7 -2017-01-18 03:00:00,4474.975,0.0133,38.65 -2017-01-18 04:00:00,4509.45,0.0091,38.54 -2017-01-18 05:00:00,4716.408,0.0,39.16 -2017-01-18 06:00:00,5251.55,0.0,39.28 -2017-01-18 07:00:00,5816.582,0.0,39.15 -2017-01-18 08:00:00,6180.692,0.0,39.12 -2017-01-18 09:00:00,6424.883,0.0,40.45 -2017-01-18 10:00:00,6506.833,0.0,40.66 -2017-01-18 11:00:00,6579.1,0.0,40.42 -2017-01-18 12:00:00,6586.275,0.0,40.84 -2017-01-18 13:00:00,6609.375,0.0,41.19 -2017-01-18 14:00:00,6577.208,0.0,40.96 -2017-01-18 15:00:00,6590.4,0.0,41.45 -2017-01-18 16:00:00,6678.175,0.0,41.58 -2017-01-18 17:00:00,6802.0,0.0,40.84 -2017-01-18 18:00:00,6672.808,0.0,41.02 -2017-01-18 19:00:00,6491.092,0.0,41.11 -2017-01-18 20:00:00,6292.65,0.0,40.39 -2017-01-18 21:00:00,6040.825,0.0,39.65 -2017-01-18 22:00:00,5709.192,0.0,39.27 -2017-01-18 23:00:00,5278.292,0.0,39.3 -2017-01-19 00:00:00,4869.717,0.0,39.35 -2017-01-19 01:00:00,4630.942,0.0,38.13 -2017-01-19 02:00:00,4489.0,0.0,38.55 -2017-01-19 03:00:00,4433.15,0.0,37.98 -2017-01-19 04:00:00,4455.125,0.0,38.74 -2017-01-19 05:00:00,4672.75,0.0,38.46 -2017-01-19 06:00:00,5192.425,0.0,38.52 -2017-01-19 07:00:00,5760.067,0.0,38.47 -2017-01-19 08:00:00,6079.442,0.0,38.54 -2017-01-19 09:00:00,6261.792,0.0,40.72 -2017-01-19 10:00:00,6307.975,0.0,42.92 -2017-01-19 11:00:00,6304.142,0.0,46.11 -2017-01-19 12:00:00,6306.317,0.0,48.96 -2017-01-19 13:00:00,6309.783,0.0,49.22 -2017-01-19 14:00:00,6336.192,0.0,48.95 -2017-01-19 15:00:00,6383.025,0.0,47.24 -2017-01-19 16:00:00,6515.5,0.0,44.87 -2017-01-19 17:00:00,6671.125,0.0,44.06 -2017-01-19 18:00:00,6549.717,0.0,43.57 -2017-01-19 19:00:00,6396.775,0.0,42.09 -2017-01-19 20:00:00,6193.967,0.0,40.51 -2017-01-19 21:00:00,5955.133,0.0,41.69 -2017-01-19 22:00:00,5614.667,0.0,40.1 -2017-01-19 23:00:00,5200.342,0.0,40.34 -2017-01-20 00:00:00,4814.008,0.0,40.67 -2017-01-20 01:00:00,4583.417,0.0,39.64 -2017-01-20 02:00:00,4448.108,0.0,39.93 -2017-01-20 03:00:00,4396.525,0.0,39.66 -2017-01-20 04:00:00,4427.175,0.0,39.21 -2017-01-20 05:00:00,4631.6,0.0,38.86 -2017-01-20 06:00:00,5155.533,0.0,38.68 -2017-01-20 07:00:00,5716.217,0.0,38.99 -2017-01-20 08:00:00,6092.792,0.0,39.67 -2017-01-20 09:00:00,6329.517,0.0,40.53 -2017-01-20 10:00:00,6427.767,0.0,41.79 -2017-01-20 11:00:00,6467.025,0.0,43.4 -2017-01-20 12:00:00,6450.817,0.0,44.57 -2017-01-20 13:00:00,6458.275,0.0,44.71 -2017-01-20 14:00:00,6430.633,0.0,44.96 -2017-01-20 15:00:00,6442.058,0.0,44.92 -2017-01-20 16:00:00,6526.792,0.0062,43.3 -2017-01-20 17:00:00,6625.283,0.0252,42.57 -2017-01-20 18:00:00,6508.642,0.0082,41.83 -2017-01-20 19:00:00,6328.508,0.0,42.6 -2017-01-20 20:00:00,6096.608,0.0,40.91 -2017-01-20 21:00:00,5875.483,0.0,41.61 -2017-01-20 22:00:00,5574.8,0.0,42.05 -2017-01-20 23:00:00,5238.733,0.0,41.45 -2017-01-21 00:00:00,4885.233,0.0,41.53 -2017-01-21 01:00:00,4652.55,0.0,41.22 -2017-01-21 02:00:00,4478.9,0.0,42.18 -2017-01-21 03:00:00,4394.633,0.0,42.49 -2017-01-21 04:00:00,4369.883,0.0,42.11 -2017-01-21 05:00:00,4424.108,0.0,42.27 -2017-01-21 06:00:00,4592.408,0.0,42.48 -2017-01-21 07:00:00,4800.892,0.0,42.25 -2017-01-21 08:00:00,5054.983,0.0,42.7 -2017-01-21 09:00:00,5309.175,0.0,43.98 -2017-01-21 10:00:00,5494.942,0.0,44.84 -2017-01-21 11:00:00,5590.467,0.0,46.33 -2017-01-21 12:00:00,5610.45,0.0,46.59 -2017-01-21 13:00:00,5541.233,0.0,46.77 -2017-01-21 14:00:00,5499.217,0.0,47.7 -2017-01-21 15:00:00,5507.575,0.0,49.73 -2017-01-21 16:00:00,5551.2,0.0,48.99 -2017-01-21 17:00:00,5753.425,0.0,47.4 -2017-01-21 18:00:00,5820.208,0.0,46.63 -2017-01-21 19:00:00,5757.425,0.0,46.37 -2017-01-21 20:00:00,5639.367,0.0,45.61 -2017-01-21 21:00:00,5495.575,0.0,46.12 -2017-01-21 22:00:00,5298.242,0.0,45.76 -2017-01-21 23:00:00,5045.642,0.0,45.07 -2017-01-22 00:00:00,4779.05,0.0,45.5 -2017-01-22 01:00:00,4548.358,0.0,44.62 -2017-01-22 02:00:00,4385.518,0.0,44.57 -2017-01-22 03:00:00,4285.192,0.0,44.78 -2017-01-22 04:00:00,4245.058,0.0,44.38 -2017-01-22 05:00:00,4282.133,0.0,44.75 -2017-01-22 06:00:00,4396.108,0.0,44.0 -2017-01-22 07:00:00,4543.592,0.0,44.73 -2017-01-22 08:00:00,4772.2,0.0,44.48 -2017-01-22 09:00:00,5033.25,0.0,45.03 -2017-01-22 10:00:00,5251.842,0.0,45.79 -2017-01-22 11:00:00,5375.842,0.0,46.15 -2017-01-22 12:00:00,5432.733,0.0,46.87 -2017-01-22 13:00:00,5441.6,0.0,47.08 -2017-01-22 14:00:00,5488.625,0.0,46.57 -2017-01-22 15:00:00,5551.467,0.0,47.21 -2017-01-22 16:00:00,5667.117,0.0034,47.41 -2017-01-22 17:00:00,5816.617,0.0158,46.55 -2017-01-22 18:00:00,5859.55,0.0,47.13 -2017-01-22 19:00:00,5799.567,0.0,46.29 -2017-01-22 20:00:00,5695.65,0.0,46.43 -2017-01-22 21:00:00,5535.733,0.0,46.5 -2017-01-22 22:00:00,5273.742,0.0,46.76 -2017-01-22 23:00:00,4948.442,0.0,46.18 -2017-01-23 00:00:00,4647.8,0.0,45.65 -2017-01-23 01:00:00,4447.642,0.0,43.92 -2017-01-23 02:00:00,4327.05,0.0,43.62 -2017-01-23 03:00:00,4296.175,0.0,42.83 -2017-01-23 04:00:00,4347.158,0.0,42.34 -2017-01-23 05:00:00,4595.842,0.0,41.61 -2017-01-23 06:00:00,5137.567,0.0,41.43 -2017-01-23 07:00:00,5738.733,0.0,41.04 -2017-01-23 08:00:00,6132.408,0.0,39.96 -2017-01-23 09:00:00,6362.7,0.0,40.07 -2017-01-23 10:00:00,6485.608,0.0,39.86 -2017-01-23 11:00:00,6562.5,0.0,39.82 -2017-01-23 12:00:00,6619.208,0.0,39.25 -2017-01-23 13:00:00,6645.5,0.0,39.31 -2017-01-23 14:00:00,6641.167,0.0023,39.53 -2017-01-23 15:00:00,6680.467,0.0,39.89 -2017-01-23 16:00:00,6781.308,0.0051,39.28 -2017-01-23 17:00:00,6906.225,0.0276,38.14 -2017-01-23 18:00:00,6815.458,0.0757,37.53 -2017-01-23 19:00:00,6659.925,0.1095,38.55 -2017-01-23 20:00:00,6432.708,0.0494,36.47 -2017-01-23 21:00:00,6169.967,0.1023,35.53 -2017-01-23 22:00:00,5804.658,0.0508,35.89 -2017-01-23 23:00:00,5380.142,0.1,36.18 -2017-01-24 00:00:00,4990.35,0.0369,36.56 -2017-01-24 01:00:00,4765.467,0.073,36.67 -2017-01-24 02:00:00,4613.825,0.0062,37.1 -2017-01-24 03:00:00,4559.433,0.0023,37.12 -2017-01-24 04:00:00,4589.025,0.0106,37.07 -2017-01-24 05:00:00,4800.45,0.0029,36.22 -2017-01-24 06:00:00,5297.55,0.0,36.11 -2017-01-24 07:00:00,5887.442,0.0,35.67 -2017-01-24 08:00:00,6267.908,0.0,35.67 -2017-01-24 09:00:00,6478.758,0.0071,35.57 -2017-01-24 10:00:00,6610.008,0.0,36.33 -2017-01-24 11:00:00,6663.3,0.0118,37.39 -2017-01-24 12:00:00,6708.742,0.0064,37.59 -2017-01-24 13:00:00,6756.892,0.1965,36.82 -2017-01-24 14:00:00,6749.5,0.0023,36.27 -2017-01-24 15:00:00,6755.85,0.0,36.3 -2017-01-24 16:00:00,6829.017,0.0431,36.13 -2017-01-24 17:00:00,6884.0,0.0028,37.17 -2017-01-24 18:00:00,6760.792,0.0317,37.12 -2017-01-24 19:00:00,6579.308,0.0517,38.56 -2017-01-24 20:00:00,6358.717,0.2746,38.16 -2017-01-24 21:00:00,6144.75,0.0465,37.05 -2017-01-24 22:00:00,5791.317,0.003,36.49 -2017-01-24 23:00:00,5359.867,0.0062,35.79 -2017-01-25 00:00:00,4969.008,0.0,36.9 -2017-01-25 01:00:00,4734.958,0.0,36.35 -2017-01-25 02:00:00,4594.75,0.0,35.34 -2017-01-25 03:00:00,4523.617,0.0,36.33 -2017-01-25 04:00:00,4560.55,0.0,35.08 -2017-01-25 05:00:00,4782.292,0.0,36.05 -2017-01-25 06:00:00,5292.233,0.0,35.77 -2017-01-25 07:00:00,5844.725,0.0,35.97 -2017-01-25 08:00:00,6167.842,0.0,36.37 -2017-01-25 09:00:00,6362.642,0.0,38.06 -2017-01-25 10:00:00,6393.808,0.0,39.32 -2017-01-25 11:00:00,6389.092,0.0,42.85 -2017-01-25 12:00:00,6393.808,0.0,44.44 -2017-01-25 13:00:00,6366.033,0.0,45.5 -2017-01-25 14:00:00,6337.183,0.0,45.21 -2017-01-25 15:00:00,6333.175,0.0,45.07 -2017-01-25 16:00:00,6377.292,0.0,45.02 -2017-01-25 17:00:00,6546.867,0.0,45.88 -2017-01-25 18:00:00,6506.483,0.0,44.62 -2017-01-25 19:00:00,6338.658,0.0,43.37 -2017-01-25 20:00:00,6150.717,0.0,42.59 -2017-01-25 21:00:00,5916.842,0.0,44.0 -2017-01-25 22:00:00,5578.367,0.0,44.55 -2017-01-25 23:00:00,5164.817,0.0,45.09 -2017-01-26 00:00:00,4776.725,0.0,45.68 -2017-01-26 01:00:00,4522.708,0.0,44.39 -2017-01-26 02:00:00,4377.483,0.0,44.9 -2017-01-26 03:00:00,4310.083,0.0,45.25 -2017-01-26 04:00:00,4337.992,0.0,43.83 -2017-01-26 05:00:00,4561.067,0.0,43.87 -2017-01-26 06:00:00,5072.242,0.0,43.31 -2017-01-26 07:00:00,5645.55,0.0,43.61 -2017-01-26 08:00:00,6006.117,0.0026,44.71 -2017-01-26 09:00:00,6257.733,0.0262,45.97 -2017-01-26 10:00:00,6354.225,0.0044,47.07 -2017-01-26 11:00:00,6384.05,0.0,47.15 -2017-01-26 12:00:00,6360.775,0.0,48.26 -2017-01-26 13:00:00,6306.783,0.0,48.5 -2017-01-26 14:00:00,6271.917,0.0,49.03 -2017-01-26 15:00:00,6304.183,0.0,51.29 -2017-01-26 16:00:00,6402.3,0.0,49.24 -2017-01-26 17:00:00,6561.992,0.0,44.87 -2017-01-26 18:00:00,6521.892,0.0,42.94 -2017-01-26 19:00:00,6362.858,0.0,40.08 -2017-01-26 20:00:00,6159.925,0.0,42.26 -2017-01-26 21:00:00,5945.417,0.0,41.91 -2017-01-26 22:00:00,5599.175,0.0,41.07 -2017-01-26 23:00:00,5206.625,0.0,41.55 -2017-01-27 00:00:00,4826.25,0.0,42.09 -2017-01-27 01:00:00,4593.25,0.0,40.14 -2017-01-27 02:00:00,4439.233,0.0,39.94 -2017-01-27 03:00:00,4383.175,0.0,39.33 -2017-01-27 04:00:00,4415.85,0.0,38.74 -2017-01-27 05:00:00,4638.425,0.0,38.76 -2017-01-27 06:00:00,5144.892,0.0,38.69 -2017-01-27 07:00:00,5717.283,0.0,38.31 -2017-01-27 08:00:00,6088.792,0.0,38.96 -2017-01-27 09:00:00,6320.883,0.0,40.05 -2017-01-27 10:00:00,6406.342,0.0,40.47 -2017-01-27 11:00:00,6445.917,0.0,42.24 -2017-01-27 12:00:00,6482.65,0.0,42.44 -2017-01-27 13:00:00,6459.242,0.0,42.21 -2017-01-27 14:00:00,6463.475,0.0,42.17 -2017-01-27 15:00:00,6501.942,0.0,41.81 -2017-01-27 16:00:00,6578.6,0.0,41.09 -2017-01-27 17:00:00,6671.667,0.0,40.25 -2017-01-27 18:00:00,6541.983,0.0,38.79 -2017-01-27 19:00:00,6368.375,0.0,37.73 -2017-01-27 20:00:00,6137.908,0.0,38.19 -2017-01-27 21:00:00,5935.583,0.0,37.11 -2017-01-27 22:00:00,5668.85,0.0,36.03 -2017-01-27 23:00:00,5339.575,0.0,36.22 -2017-01-28 00:00:00,5007.542,0.0,36.36 -2017-01-28 01:00:00,4783.617,0.0,34.42 -2017-01-28 02:00:00,4617.65,0.0,33.72 -2017-01-28 03:00:00,4531.775,0.0,33.44 -2017-01-28 04:00:00,4513.033,0.0,33.93 -2017-01-28 05:00:00,4573.858,0.0,33.31 -2017-01-28 06:00:00,4751.008,0.0,32.64 -2017-01-28 07:00:00,4967.15,0.0,33.59 -2017-01-28 08:00:00,5239.35,0.0,34.21 -2017-01-28 09:00:00,5476.658,0.0,34.9 -2017-01-28 10:00:00,5666.392,0.0,37.23 -2017-01-28 11:00:00,5752.033,0.0,37.59 -2017-01-28 12:00:00,5811.017,0.0,38.5 -2017-01-28 13:00:00,5831.042,0.0,39.08 -2017-01-28 14:00:00,5834.125,0.0,39.35 -2017-01-28 15:00:00,5832.342,0.0,38.08 -2017-01-28 16:00:00,5861.642,0.0,37.45 -2017-01-28 17:00:00,5996.517,0.0,37.37 -2017-01-28 18:00:00,6031.5,0.0,36.31 -2017-01-28 19:00:00,5969.342,0.0,35.73 -2017-01-28 20:00:00,5843.95,0.0,36.02 -2017-01-28 21:00:00,5671.85,0.0,36.01 -2017-01-28 22:00:00,5488.467,0.0,35.87 -2017-01-28 23:00:00,5245.358,0.0,35.62 -2017-01-29 00:00:00,4961.258,0.0,35.73 -2017-01-29 01:00:00,4731.933,0.0,35.13 -2017-01-29 02:00:00,4570.725,0.0,35.11 -2017-01-29 03:00:00,4481.442,0.0,34.25 -2017-01-29 04:00:00,4447.192,0.0,33.25 -2017-01-29 05:00:00,4487.783,0.0,32.65 -2017-01-29 06:00:00,4608.425,0.0,33.0 -2017-01-29 07:00:00,4742.183,0.0,33.41 -2017-01-29 08:00:00,4965.358,0.0,33.87 -2017-01-29 09:00:00,5168.092,0.0,35.85 -2017-01-29 10:00:00,5338.0,0.0,38.23 -2017-01-29 11:00:00,5456.492,0.0,41.08 -2017-01-29 12:00:00,5481.058,0.0,42.62 -2017-01-29 13:00:00,5483.067,0.0,42.17 -2017-01-29 14:00:00,5474.25,0.0,42.84 -2017-01-29 15:00:00,5505.283,0.0,42.96 -2017-01-29 16:00:00,5583.792,0.0,41.92 -2017-01-29 17:00:00,5841.6,0.0,39.66 -2017-01-29 18:00:00,5973.325,0.0,38.34 -2017-01-29 19:00:00,5947.842,0.0,34.68 -2017-01-29 20:00:00,5859.7,0.0,36.88 -2017-01-29 21:00:00,5706.333,0.0,35.62 -2017-01-29 22:00:00,5453.858,0.0,35.01 -2017-01-29 23:00:00,5132.033,0.0,34.83 -2017-01-30 00:00:00,4833.142,0.0,35.32 -2017-01-30 01:00:00,4641.158,0.0,33.01 -2017-01-30 02:00:00,4509.533,0.0,32.03 -2017-01-30 03:00:00,4471.125,0.0,33.05 -2017-01-30 04:00:00,4522.367,0.0,32.82 -2017-01-30 05:00:00,4776.417,0.0,30.48 -2017-01-30 06:00:00,5284.625,0.0,30.56 -2017-01-30 07:00:00,5850.908,0.0,30.61 -2017-01-30 08:00:00,6228.709,0.0,30.82 -2017-01-30 09:00:00,6478.658,0.0,32.69 -2017-01-30 10:00:00,6557.675,0.0,34.1 -2017-01-30 11:00:00,6585.917,0.0,35.51 -2017-01-30 12:00:00,6578.525,0.0,36.34 -2017-01-30 13:00:00,6558.108,0.0,36.78 -2017-01-30 14:00:00,6525.083,0.0,35.89 -2017-01-30 15:00:00,6558.175,0.0,36.68 -2017-01-30 16:00:00,6640.575,0.0,36.61 -2017-01-30 17:00:00,6810.033,0.0,34.42 -2017-01-30 18:00:00,6800.583,0.0,33.28 -2017-01-30 19:00:00,6676.642,0.0,32.33 -2017-01-30 20:00:00,6484.192,0.0,31.65 -2017-01-30 21:00:00,6231.642,0.0,31.18 -2017-01-30 22:00:00,5883.025,0.0,30.8 -2017-01-30 23:00:00,5442.15,0.0,29.69 -2017-01-31 00:00:00,5068.283,0.0,30.25 -2017-01-31 01:00:00,4829.425,0.0,29.06 -2017-01-31 02:00:00,4693.083,0.0,27.89 -2017-01-31 03:00:00,4630.783,0.0,26.65 -2017-01-31 04:00:00,4671.65,0.0,26.02 -2017-01-31 05:00:00,4907.783,0.0,26.72 -2017-01-31 06:00:00,5454.258,0.0,26.09 -2017-01-31 07:00:00,6016.65,0.0,26.2 -2017-01-31 08:00:00,6353.0,0.0,26.6 -2017-01-31 09:00:00,6618.675,0.0056,29.0 -2017-01-31 10:00:00,6760.883,0.0273,29.48 -2017-01-31 11:00:00,6835.408,0.0083,32.53 -2017-01-31 12:00:00,6862.158,0.0255,31.69 -2017-01-31 13:00:00,6885.617,0.0292,31.51 -2017-01-31 14:00:00,6876.983,0.003,32.12 -2017-01-31 15:00:00,6906.008,0.0021,32.56 -2017-01-31 16:00:00,6929.967,0.0,32.15 -2017-01-31 17:00:00,7037.042,0.0,30.89 -2017-01-31 18:00:00,6951.417,0.0,31.52 -2017-01-31 19:00:00,6782.642,0.0,32.42 -2017-01-31 20:00:00,6560.642,0.0,30.79 -2017-01-31 21:00:00,6325.492,0.0,31.07 -2017-01-31 22:00:00,5948.258,0.0,31.3 -2017-01-31 23:00:00,5475.425,0.0,31.09 -2017-02-01 00:00:00,5090.625,0.0,31.45 -2017-02-01 01:00:00,4839.25,0.0,32.44 -2017-02-01 02:00:00,4702.525,0.0,33.19 -2017-02-01 03:00:00,4629.942,0.0,33.61 -2017-02-01 04:00:00,4653.375,0.0,32.3 -2017-02-01 05:00:00,4866.442,0.0,33.34 -2017-02-01 06:00:00,5385.383,0.0,35.93 -2017-02-01 07:00:00,5924.867,0.0,37.36 -2017-02-01 08:00:00,6242.3,0.0,38.2 -2017-02-01 09:00:00,6474.642,0.0,39.97 -2017-02-01 10:00:00,6535.3,0.0,40.85 -2017-02-01 11:00:00,6532.35,0.0,44.17 -2017-02-01 12:00:00,6496.617,0.0,44.09 -2017-02-01 13:00:00,6475.3,0.0,45.11 -2017-02-01 14:00:00,6475.1,0.0,45.51 -2017-02-01 15:00:00,6516.808,0.0,46.2 -2017-02-01 16:00:00,6563.942,0.0,44.85 -2017-02-01 17:00:00,6703.908,0.0,43.8 -2017-02-01 18:00:00,6666.75,0.0,43.51 -2017-02-01 19:00:00,6502.817,0.006,38.09 -2017-02-01 20:00:00,6302.733,0.0,40.12 -2017-02-01 21:00:00,6065.4,0.0,39.19 -2017-02-01 22:00:00,5735.375,0.0,39.23 -2017-02-01 23:00:00,5306.767,0.0,38.14 -2017-02-02 00:00:00,4916.05,0.0,38.32 -2017-02-02 01:00:00,4690.142,0.0,35.87 -2017-02-02 02:00:00,4554.292,0.0,35.48 -2017-02-02 03:00:00,4503.375,0.0,33.62 -2017-02-02 04:00:00,4529.325,0.0,34.06 -2017-02-02 05:00:00,4751.792,0.0,33.07 -2017-02-02 06:00:00,5274.158,0.0,34.93 -2017-02-02 07:00:00,5857.1,0.0,33.36 -2017-02-02 08:00:00,6198.942,0.0032,34.69 -2017-02-02 09:00:00,6407.65,0.0,36.91 -2017-02-02 10:00:00,6422.267,0.0,39.72 -2017-02-02 11:00:00,6423.342,0.0,40.67 -2017-02-02 12:00:00,6440.117,0.0,43.16 -2017-02-02 13:00:00,6435.042,0.0,43.74 -2017-02-02 14:00:00,6417.042,0.0,43.24 -2017-02-02 15:00:00,6442.833,0.0,43.46 -2017-02-02 16:00:00,6541.883,0.0,42.61 -2017-02-02 17:00:00,6690.825,0.0,40.73 -2017-02-02 18:00:00,6674.133,0.0,37.33 -2017-02-02 19:00:00,6529.1,0.0,33.46 -2017-02-02 20:00:00,6337.133,0.0,35.2 -2017-02-02 21:00:00,6111.408,0.0,34.4 -2017-02-02 22:00:00,5774.2,0.0,33.27 -2017-02-02 23:00:00,5387.8,0.0,32.29 -2017-02-03 00:00:00,5028.333,0.0,32.85 -2017-02-03 01:00:00,4811.933,0.0,31.33 -2017-02-03 02:00:00,4682.425,0.0,30.28 -2017-02-03 03:00:00,4646.017,0.0,29.19 -2017-02-03 04:00:00,4682.433,0.0,28.86 -2017-02-03 05:00:00,4902.408,0.0,27.23 -2017-02-03 06:00:00,5432.758,0.0,26.5 -2017-02-03 07:00:00,5998.942,0.0,25.45 -2017-02-03 08:00:00,6328.792,0.0,26.22 -2017-02-03 09:00:00,6575.667,0.0,28.52 -2017-02-03 10:00:00,6687.517,0.0,30.09 -2017-02-03 11:00:00,6705.633,0.0,30.98 -2017-02-03 12:00:00,6673.242,0.0,31.79 -2017-02-03 13:00:00,6642.908,0.0,32.8 -2017-02-03 14:00:00,6578.008,0.0,33.33 -2017-02-03 15:00:00,6586.75,0.0,33.55 -2017-02-03 16:00:00,6672.242,0.0,33.52 -2017-02-03 17:00:00,6809.967,0.0,31.82 -2017-02-03 18:00:00,6778.667,0.0,32.24 -2017-02-03 19:00:00,6606.792,0.0,30.83 -2017-02-03 20:00:00,6411.158,0.0,30.83 -2017-02-03 21:00:00,6226.558,0.0,29.96 -2017-02-03 22:00:00,5943.483,0.0,28.91 -2017-02-03 23:00:00,5596.7,0.0,27.87 -2017-02-04 00:00:00,5275.958,0.0,28.05 -2017-02-04 01:00:00,5050.35,0.0,25.63 -2017-02-04 02:00:00,4908.65,0.0,24.11 -2017-02-04 03:00:00,4831.425,0.0,22.66 -2017-02-04 04:00:00,4809.375,0.0,22.49 -2017-02-04 05:00:00,4873.983,0.0,21.92 -2017-02-04 06:00:00,5048.358,0.0,21.63 -2017-02-04 07:00:00,5269.625,0.0,21.64 -2017-02-04 08:00:00,5556.3,0.0,22.9 -2017-02-04 09:00:00,5783.358,0.0,24.95 -2017-02-04 10:00:00,5949.875,0.0,27.2 -2017-02-04 11:00:00,6022.858,0.0,28.88 -2017-02-04 12:00:00,6007.317,0.0,30.95 -2017-02-04 13:00:00,5958.592,0.0,32.69 -2017-02-04 14:00:00,5893.35,0.0,33.57 -2017-02-04 15:00:00,5882.367,0.0,34.56 -2017-02-04 16:00:00,5907.292,0.0,34.82 -2017-02-04 17:00:00,6099.783,0.0,32.87 -2017-02-04 18:00:00,6234.525,0.0,32.11 -2017-02-04 19:00:00,6186.858,0.0,31.59 -2017-02-04 20:00:00,6082.192,0.0,31.17 -2017-02-04 21:00:00,5919.942,0.0,31.15 -2017-02-04 22:00:00,5706.283,0.0,31.05 -2017-02-04 23:00:00,5441.042,0.0,30.84 -2017-02-05 00:00:00,5149.575,0.0,31.8 -2017-02-05 01:00:00,4918.892,0.0,31.52 -2017-02-05 02:00:00,4751.675,0.0,31.36 -2017-02-05 03:00:00,4648.817,0.0,30.36 -2017-02-05 04:00:00,4607.883,0.0,29.84 -2017-02-05 05:00:00,4625.358,0.0,30.89 -2017-02-05 06:00:00,4753.083,0.0,30.92 -2017-02-05 07:00:00,4896.3,0.0,32.26 -2017-02-05 08:00:00,5145.933,0.0,32.64 -2017-02-05 09:00:00,5400.075,0.0,34.65 -2017-02-05 10:00:00,5614.017,0.0,36.32 -2017-02-05 11:00:00,5738.667,0.0,37.27 -2017-02-05 12:00:00,5785.3,0.0,38.64 -2017-02-05 13:00:00,5785.383,0.0,39.43 -2017-02-05 14:00:00,5757.917,0.0,41.04 -2017-02-05 15:00:00,5775.408,0.0,41.78 -2017-02-05 16:00:00,5834.025,0.0,40.95 -2017-02-05 17:00:00,5971.55,0.0,40.44 -2017-02-05 18:00:00,6090.017,0.0,39.59 -2017-02-05 19:00:00,5997.958,0.0,39.9 -2017-02-05 20:00:00,5857.958,0.0,38.52 -2017-02-05 21:00:00,5723.267,0.0,37.77 -2017-02-05 22:00:00,5493.708,0.0,38.87 -2017-02-05 23:00:00,5192.325,0.0,39.46 -2017-02-06 00:00:00,4877.017,0.0,39.87 -2017-02-06 01:00:00,4661.275,0.0,38.12 -2017-02-06 02:00:00,4540.9,0.0,37.87 -2017-02-06 03:00:00,4483.683,0.0,36.35 -2017-02-06 04:00:00,4517.55,0.0,37.37 -2017-02-06 05:00:00,4772.658,0.0,35.9 -2017-02-06 06:00:00,5288.342,0.0,35.82 -2017-02-06 07:00:00,5831.75,0.0,34.75 -2017-02-06 08:00:00,6157.475,0.0,35.03 -2017-02-06 09:00:00,6355.058,0.0,36.65 -2017-02-06 10:00:00,6426.692,0.0,38.13 -2017-02-06 11:00:00,6435.683,0.0,40.65 -2017-02-06 12:00:00,6427.492,0.0,42.7 -2017-02-06 13:00:00,6389.575,0.0,44.57 -2017-02-06 14:00:00,6348.217,0.0,45.81 -2017-02-06 15:00:00,6342.642,0.0,47.42 -2017-02-06 16:00:00,6399.9,0.0,47.79 -2017-02-06 17:00:00,6569.4,0.0,47.05 -2017-02-06 18:00:00,6594.342,0.0,44.04 -2017-02-06 19:00:00,6464.833,0.0,42.15 -2017-02-06 20:00:00,6275.767,0.0,38.87 -2017-02-06 21:00:00,6021.325,0.0,39.03 -2017-02-06 22:00:00,5652.358,0.0,38.76 -2017-02-06 23:00:00,5220.867,0.0,37.82 -2017-02-07 00:00:00,4822.475,0.0,39.71 -2017-02-07 01:00:00,4589.983,0.0,37.93 -2017-02-07 02:00:00,4468.408,0.0,37.88 -2017-02-07 03:00:00,4408.042,0.0,36.46 -2017-02-07 04:00:00,4441.317,0.0,36.28 -2017-02-07 05:00:00,4661.667,0.0142,36.06 -2017-02-07 06:00:00,5203.992,0.0198,36.84 -2017-02-07 07:00:00,5779.917,0.0047,38.25 -2017-02-07 08:00:00,6147.433,0.1125,38.25 -2017-02-07 09:00:00,6382.275,0.0032,39.27 -2017-02-07 10:00:00,6471.075,0.0025,40.27 -2017-02-07 11:00:00,6581.208,0.0955,40.99 -2017-02-07 12:00:00,6637.658,0.0313,41.21 -2017-02-07 13:00:00,6637.042,0.0,40.73 -2017-02-07 14:00:00,6617.975,0.0,39.47 -2017-02-07 15:00:00,6646.192,0.0,39.62 -2017-02-07 16:00:00,6688.558,0.0,39.49 -2017-02-07 17:00:00,6796.375,0.0028,39.53 -2017-02-07 18:00:00,6723.442,0.0,39.87 -2017-02-07 19:00:00,6564.292,0.0,40.88 -2017-02-07 20:00:00,6339.867,0.0,37.77 -2017-02-07 21:00:00,6074.858,0.0,40.15 -2017-02-07 22:00:00,5710.467,0.0,39.56 -2017-02-07 23:00:00,5277.158,0.0,40.02 -2017-02-08 00:00:00,4866.875,0.0,39.75 -2017-02-08 01:00:00,4622.842,0.0,41.63 -2017-02-08 02:00:00,4479.492,0.0,40.27 -2017-02-08 03:00:00,4412.025,0.0279,39.03 -2017-02-08 04:00:00,4431.175,0.0023,40.58 -2017-02-08 05:00:00,4655.95,0.0,40.73 -2017-02-08 06:00:00,5180.442,0.0,41.07 -2017-02-08 07:00:00,5745.325,0.0,40.84 -2017-02-08 08:00:00,6055.008,0.0,42.58 -2017-02-08 09:00:00,6260.008,0.0,47.07 -2017-02-08 10:00:00,6311.825,0.0,50.85 -2017-02-08 11:00:00,6269.7,0.0,51.29 -2017-02-08 12:00:00,6246.767,0.0,55.82 -2017-02-08 13:00:00,6206.475,0.0,59.62 -2017-02-08 14:00:00,6169.217,0.0,60.42 -2017-02-08 15:00:00,6178.317,0.0,59.35 -2017-02-08 16:00:00,6226.636,0.0,56.79 -2017-02-08 17:00:00,6353.633,0.0,52.27 -2017-02-08 18:00:00,6383.808,0.0,52.39 -2017-02-08 19:00:00,6246.35,0.0,46.01 -2017-02-08 20:00:00,6088.2,0.0,44.72 -2017-02-08 21:00:00,5866.345,0.0,45.15 -2017-02-08 22:00:00,5563.025,0.0,44.17 -2017-02-08 23:00:00,5204.033,0.0,42.93 -2017-02-09 00:00:00,4841.342,0.0,43.32 -2017-02-09 01:00:00,4605.108,0.0,39.8 -2017-02-09 02:00:00,4464.733,0.0,39.74 -2017-02-09 03:00:00,4422.8,0.0104,37.92 -2017-02-09 04:00:00,4481.567,0.3044,37.03 -2017-02-09 05:00:00,4727.358,0.0262,35.24 -2017-02-09 06:00:00,5154.283,0.0537,32.61 -2017-02-09 07:00:00,5616.633,0.0526,30.52 -2017-02-09 08:00:00,6026.573,0.0524,30.52 -2017-02-09 09:00:00,6322.392,0.0225,30.19 -2017-02-09 10:00:00,6533.383,0.0251,30.51 -2017-02-09 11:00:00,6628.108,0.024,30.72 -2017-02-09 12:00:00,6651.233,0.0103,29.32 -2017-02-09 13:00:00,6674.725,0.0234,28.6 -2017-02-09 14:00:00,6659.325,0.0157,28.74 -2017-02-09 15:00:00,6646.192,0.028,27.46 -2017-02-09 16:00:00,6681.758,0.0,25.26 -2017-02-09 17:00:00,6829.033,0.0,24.66 -2017-02-09 18:00:00,6974.533,0.0,22.64 -2017-02-09 19:00:00,6861.183,0.0,21.69 -2017-02-09 20:00:00,6684.35,0.0,20.2 -2017-02-09 21:00:00,6435.458,0.0,18.02 -2017-02-09 22:00:00,6106.9,0.0,18.75 -2017-02-09 23:00:00,5714.917,0.0,18.36 -2017-02-10 00:00:00,5362.717,0.0,18.82 -2017-02-10 01:00:00,5134.833,0.0,17.2 -2017-02-10 02:00:00,4989.208,0.0,17.97 -2017-02-10 03:00:00,4940.858,0.0,17.39 -2017-02-10 04:00:00,4978.358,0.0,18.84 -2017-02-10 05:00:00,5188.433,0.0,19.03 -2017-02-10 06:00:00,5647.475,0.0,19.18 -2017-02-10 07:00:00,6159.017,0.0,19.57 -2017-02-10 08:00:00,6509.375,0.0,20.67 -2017-02-10 09:00:00,6761.125,0.0,23.01 -2017-02-10 10:00:00,6879.617,0.0,25.36 -2017-02-10 11:00:00,6899.05,0.0,28.15 -2017-02-10 12:00:00,6879.233,0.0,28.95 -2017-02-10 13:00:00,6840.783,0.0,31.11 -2017-02-10 14:00:00,6765.55,0.0,31.49 -2017-02-10 15:00:00,6753.25,0.0,32.08 -2017-02-10 16:00:00,6798.125,0.0,31.2 -2017-02-10 17:00:00,6934.242,0.0,30.27 -2017-02-10 18:00:00,6914.558,0.0,27.91 -2017-02-10 19:00:00,6767.95,0.0,29.07 -2017-02-10 20:00:00,6563.983,0.0,27.85 -2017-02-10 21:00:00,6324.508,0.0043,28.41 -2017-02-10 22:00:00,6036.85,0.0,29.06 -2017-02-10 23:00:00,5653.842,0.0,28.58 -2017-02-11 00:00:00,5294.542,0.0038,28.63 -2017-02-11 01:00:00,5045.825,0.0037,29.47 -2017-02-11 02:00:00,4858.525,0.0043,30.5 -2017-02-11 03:00:00,4751.883,0.0,31.1 -2017-02-11 04:00:00,4704.208,0.0,31.96 -2017-02-11 05:00:00,4745.683,0.0,32.6 -2017-02-11 06:00:00,4893.875,0.0,32.95 -2017-02-11 07:00:00,5086.267,0.0,34.12 -2017-02-11 08:00:00,5356.033,0.0,34.81 -2017-02-11 09:00:00,5615.433,0.0,35.92 -2017-02-11 10:00:00,5797.708,0.0,37.7 -2017-02-11 11:00:00,5859.683,0.0,39.1 -2017-02-11 12:00:00,5892.992,0.0,40.73 -2017-02-11 13:00:00,5848.883,0.0,41.93 -2017-02-11 14:00:00,5797.417,0.0,43.56 -2017-02-11 15:00:00,5727.392,0.0,43.26 -2017-02-11 16:00:00,5720.367,0.0,43.28 -2017-02-11 17:00:00,5879.583,0.0,43.08 -2017-02-11 18:00:00,5997.483,0.0,42.99 -2017-02-11 19:00:00,5936.425,0.0,41.48 -2017-02-11 20:00:00,5826.467,0.0,38.43 -2017-02-11 21:00:00,5678.467,0.0,38.97 -2017-02-11 22:00:00,5501.525,0.0,38.53 -2017-02-11 23:00:00,5247.958,0.0,37.1 -2017-02-12 00:00:00,4987.633,0.0,37.89 -2017-02-12 01:00:00,4766.633,0.0,36.11 -2017-02-12 02:00:00,4604.033,0.0,36.03 -2017-02-12 03:00:00,4530.267,0.0,35.51 -2017-02-12 04:00:00,4508.708,0.0262,34.65 -2017-02-12 05:00:00,4553.267,0.0464,32.95 -2017-02-12 06:00:00,4685.892,0.0243,32.56 -2017-02-12 07:00:00,4839.017,0.0057,31.81 -2017-02-12 08:00:00,5118.067,0.0025,31.74 -2017-02-12 09:00:00,5431.817,0.0031,32.23 -2017-02-12 10:00:00,5711.108,0.0662,32.22 -2017-02-12 11:00:00,5915.258,0.1078,32.7 -2017-02-12 12:00:00,6042.467,0.0259,32.57 -2017-02-12 13:00:00,6085.408,0.0227,33.13 -2017-02-12 14:00:00,6099.367,0.0067,33.6 -2017-02-12 15:00:00,6104.9,0.0023,33.87 -2017-02-12 16:00:00,6124.217,0.0,34.28 -2017-02-12 17:00:00,6219.333,0.0028,34.75 -2017-02-12 18:00:00,6274.0,0.0,34.53 -2017-02-12 19:00:00,6201.992,0.0,34.85 -2017-02-12 20:00:00,6078.475,0.0,33.56 -2017-02-12 21:00:00,5889.608,0.0,34.09 -2017-02-12 22:00:00,5621.608,0.0,34.06 -2017-02-12 23:00:00,5280.75,0.0,33.77 -2017-02-13 00:00:00,4960.025,0.0,34.18 -2017-02-13 01:00:00,4740.458,0.0,34.59 -2017-02-13 02:00:00,4622.375,0.0262,36.7 -2017-02-13 03:00:00,4576.642,0.0,36.18 -2017-02-13 04:00:00,4628.217,0.0,35.04 -2017-02-13 05:00:00,4885.292,0.0,34.37 -2017-02-13 06:00:00,5411.408,0.0,35.79 -2017-02-13 07:00:00,5962.033,0.0,32.11 -2017-02-13 08:00:00,6329.65,0.0,32.48 -2017-02-13 09:00:00,6514.442,0.0,33.99 -2017-02-13 10:00:00,6615.117,0.0,35.26 -2017-02-13 11:00:00,6654.883,0.0,36.04 -2017-02-13 12:00:00,6685.733,0.0,37.5 -2017-02-13 13:00:00,6683.908,0.0,37.31 -2017-02-13 14:00:00,6658.3,0.0,37.49 -2017-02-13 15:00:00,6665.708,0.0,37.17 -2017-02-13 16:00:00,6712.242,0.0,35.55 -2017-02-13 17:00:00,6820.275,0.0,34.36 -2017-02-13 18:00:00,6880.517,0.0,33.67 -2017-02-13 19:00:00,6780.158,0.0,31.48 -2017-02-13 20:00:00,6616.55,0.0,30.15 -2017-02-13 21:00:00,6378.758,0.0,30.6 -2017-02-13 22:00:00,6011.325,0.0,31.67 -2017-02-13 23:00:00,5569.733,0.0,29.62 -2017-02-14 00:00:00,5171.008,0.0,30.17 -2017-02-14 01:00:00,4922.808,0.0,29.41 -2017-02-14 02:00:00,4775.817,0.0,29.53 -2017-02-14 03:00:00,4702.833,0.0,28.73 -2017-02-14 04:00:00,4727.358,0.0,28.5 -2017-02-14 05:00:00,4967.933,0.0,27.7 -2017-02-14 06:00:00,5484.933,0.0,27.31 -2017-02-14 07:00:00,6028.842,0.0,27.22 -2017-02-14 08:00:00,6346.983,0.0,28.79 -2017-02-14 09:00:00,6588.583,0.0,30.73 -2017-02-14 10:00:00,6667.875,0.0,32.9 -2017-02-14 11:00:00,6678.767,0.0,34.06 -2017-02-14 12:00:00,6660.05,0.0,36.33 -2017-02-14 13:00:00,6593.583,0.0,37.87 -2017-02-14 14:00:00,6525.567,0.0,37.41 -2017-02-14 15:00:00,6515.792,0.0,39.92 -2017-02-14 16:00:00,6555.017,0.0,38.96 -2017-02-14 17:00:00,6660.333,0.0,38.23 -2017-02-14 18:00:00,6675.358,0.0,37.62 -2017-02-14 19:00:00,6550.117,0.0,38.11 -2017-02-14 20:00:00,6333.392,0.0,35.31 -2017-02-14 21:00:00,6088.05,0.0,36.28 -2017-02-14 22:00:00,5755.167,0.0,36.36 -2017-02-14 23:00:00,5357.067,0.0,37.41 -2017-02-15 00:00:00,4973.55,0.0,36.8 -2017-02-15 01:00:00,4734.575,0.0,35.24 -2017-02-15 02:00:00,4602.817,0.0,36.16 -2017-02-15 03:00:00,4530.75,0.0,34.42 -2017-02-15 04:00:00,4557.683,0.0,35.88 -2017-02-15 05:00:00,4777.483,0.0,34.35 -2017-02-15 06:00:00,5301.708,0.0,32.94 -2017-02-15 07:00:00,5835.208,0.0,34.36 -2017-02-15 08:00:00,6185.192,0.0,34.53 -2017-02-15 09:00:00,6382.933,0.0,36.09 -2017-02-15 10:00:00,6457.183,0.0024,39.38 -2017-02-15 11:00:00,6487.842,0.0,42.07 -2017-02-15 12:00:00,6463.842,0.0,43.63 -2017-02-15 13:00:00,6418.8,0.0,45.01 -2017-02-15 14:00:00,6341.858,0.0,45.89 -2017-02-15 15:00:00,6363.25,0.0,46.13 -2017-02-15 16:00:00,6447.4,0.0,45.02 -2017-02-15 17:00:00,6600.358,0.0101,45.41 -2017-02-15 18:00:00,6628.717,0.0043,42.34 -2017-02-15 19:00:00,6504.033,0.0,37.76 -2017-02-15 20:00:00,6305.292,0.0,35.68 -2017-02-15 21:00:00,6107.8,0.0,36.68 -2017-02-15 22:00:00,5763.483,0.0,37.06 -2017-02-15 23:00:00,5348.983,0.0,34.76 -2017-02-16 00:00:00,4981.6,0.0,35.22 -2017-02-16 01:00:00,4765.867,0.0,34.16 -2017-02-16 02:00:00,4649.567,0.0,33.97 -2017-02-16 03:00:00,4585.042,0.0,31.78 -2017-02-16 04:00:00,4618.858,0.0,31.3 -2017-02-16 05:00:00,4840.683,0.0,31.51 -2017-02-16 06:00:00,5384.975,0.0,31.23 -2017-02-16 07:00:00,5940.2,0.0,31.44 -2017-02-16 08:00:00,6267.083,0.0,31.16 -2017-02-16 09:00:00,6476.658,0.0,32.48 -2017-02-16 10:00:00,6559.342,0.0,33.19 -2017-02-16 11:00:00,6575.317,0.0,33.78 -2017-02-16 12:00:00,6574.583,0.0,35.12 -2017-02-16 13:00:00,6542.992,0.0,36.0 -2017-02-16 14:00:00,6534.8,0.0,36.76 -2017-02-16 15:00:00,6556.675,0.0,35.66 -2017-02-16 16:00:00,6615.792,0.0,35.61 -2017-02-16 17:00:00,6754.85,0.0,32.74 -2017-02-16 18:00:00,6827.792,0.0,32.39 -2017-02-16 19:00:00,6696.858,0.0,30.51 -2017-02-16 20:00:00,6507.558,0.0,29.22 -2017-02-16 21:00:00,6291.675,0.0,29.58 -2017-02-16 22:00:00,5973.158,0.0,29.2 -2017-02-16 23:00:00,5553.508,0.0,28.1 -2017-02-17 00:00:00,5176.867,0.0,28.38 -2017-02-17 01:00:00,4938.658,0.0,28.02 -2017-02-17 02:00:00,4801.45,0.0,27.32 -2017-02-17 03:00:00,4746.058,0.0,26.96 -2017-02-17 04:00:00,4777.417,0.0,27.07 -2017-02-17 05:00:00,5006.2,0.0,26.61 -2017-02-17 06:00:00,5502.45,0.0,27.14 -2017-02-17 07:00:00,6022.308,0.0,26.54 -2017-02-17 08:00:00,6364.35,0.0,28.13 -2017-02-17 09:00:00,6569.292,0.0,30.09 -2017-02-17 10:00:00,6621.375,0.0,32.57 -2017-02-17 11:00:00,6623.0,0.0,34.52 -2017-02-17 12:00:00,6595.242,0.0,36.7 -2017-02-17 13:00:00,6532.092,0.0,39.69 -2017-02-17 14:00:00,6461.725,0.0,38.51 -2017-02-17 15:00:00,6430.4,0.0,41.24 -2017-02-17 16:00:00,6466.983,0.0,41.22 -2017-02-17 17:00:00,6552.3,0.0,39.33 -2017-02-17 18:00:00,6572.35,, -2017-02-17 19:00:00,6406.542,0.0,36.5 -2017-02-17 20:00:00,6206.433,0.0,35.37 -2017-02-17 21:00:00,5975.508,0.0,35.9 -2017-02-17 22:00:00,5685.95,0.0,35.61 -2017-02-17 23:00:00,5356.008,0.0,36.7 -2017-02-18 00:00:00,5014.183,, -2017-02-18 01:00:00,4788.183,, -2017-02-18 02:00:00,4632.108,0.0,32.08 -2017-02-18 03:00:00,4552.275,0.0,33.35 -2017-02-18 04:00:00,4521.975,0.0,31.8 -2017-02-18 05:00:00,4575.8,0.0,32.39 -2017-02-18 06:00:00,4731.783,0.0,31.86 -2017-02-18 07:00:00,4929.083,0.0,34.25 -2017-02-18 08:00:00,5172.108,0.0,34.54 -2017-02-18 09:00:00,5387.967,0.0,40.16 -2017-02-18 10:00:00,5503.783,0.0,44.44 -2017-02-18 11:00:00,5539.725,0.0,47.06 -2017-02-18 12:00:00,5506.283,0.0,50.36 -2017-02-18 13:00:00,5449.233,0.0,54.07 -2017-02-18 14:00:00,5381.342,0.0,57.17 -2017-02-18 15:00:00,5355.442,0.0,60.13 -2017-02-18 16:00:00,5341.758,0.0,60.12 -2017-02-18 17:00:00,5451.992,, -2017-02-18 18:00:00,5649.892,0.0,55.21 -2017-02-18 19:00:00,5612.625,0.0,53.19 -2017-02-18 20:00:00,5506.092,0.0,51.12 -2017-02-18 21:00:00,5340.142,, -2017-02-18 22:00:00,5165.725,0.0,52.08 -2017-02-18 23:00:00,4921.933,0.0,51.26 -2017-02-19 00:00:00,4665.817,0.0,52.7 -2017-02-19 01:00:00,4447.542,0.0,54.14 -2017-02-19 02:00:00,4299.858,0.0,51.81 -2017-02-19 03:00:00,4215.242,0.0,49.94 -2017-02-19 04:00:00,4164.867,, -2017-02-19 05:00:00,4199.35,0.0,48.0 -2017-02-19 06:00:00,4292.958,, -2017-02-19 07:00:00,4432.825,0.0,48.06 -2017-02-19 08:00:00,4649.558,0.0,49.2 -2017-02-19 09:00:00,4857.992,0.0,52.5 -2017-02-19 10:00:00,5010.825,0.0,56.52 -2017-02-19 11:00:00,5124.767,0.0,59.29 -2017-02-19 12:00:00,5156.95,0.0,62.62 -2017-02-19 13:00:00,5143.525,0.0,63.6 -2017-02-19 14:00:00,5109.208,0.0,62.64 -2017-02-19 15:00:00,5104.108,0.0,63.48 -2017-02-19 16:00:00,5125.717,0.0,62.6 -2017-02-19 17:00:00,5240.5,, -2017-02-19 18:00:00,5449.383,0.0,56.77 -2017-02-19 19:00:00,5428.133,0.0,55.09 -2017-02-19 20:00:00,5351.317,0.0,56.38 -2017-02-19 21:00:00,5238.017,0.0,52.15 -2017-02-19 22:00:00,5051.717,0.0,51.62 -2017-02-19 23:00:00,4798.333,0.0,50.48 -2017-02-20 00:00:00,4544.442,, -2017-02-20 01:00:00,4342.5,0.0,48.82 -2017-02-20 02:00:00,4207.025,, -2017-02-20 03:00:00,4155.117,0.0,45.89 -2017-02-20 04:00:00,4169.425,, -2017-02-20 05:00:00,4351.767,, -2017-02-20 06:00:00,4557.517,, -2017-02-20 07:00:00,4808.175,, -2017-02-20 08:00:00,5102.192,0.0,43.36 -2017-02-20 09:00:00,5324.883,0.0,45.0 -2017-02-20 10:00:00,5490.858,0.0,47.47 -2017-02-20 11:00:00,5572.275,0.0,50.76 -2017-02-20 12:00:00,5590.433,0.0,52.31 -2017-02-20 13:00:00,5581.658,0.0,52.31 -2017-02-20 14:00:00,5553.975,0.0,52.9 -2017-02-20 15:00:00,5538.475,, -2017-02-20 16:00:00,5581.867,, -2017-02-20 17:00:00,5703.333,0.0,49.62 -2017-02-20 18:00:00,5890.725,0.0,49.68 -2017-02-20 19:00:00,5854.975,, -2017-02-20 20:00:00,5728.408,0.0,40.09 -2017-02-20 21:00:00,5569.542,0.0,40.63 -2017-02-20 22:00:00,5314.742,0.0,41.98 -2017-02-20 23:00:00,4982.942,0.0,38.68 -2017-02-21 00:00:00,4677.65,0.0,38.86 -2017-02-21 01:00:00,4465.442,0.0,36.95 -2017-02-21 02:00:00,4349.8,, -2017-02-21 03:00:00,4291.133,0.0,35.21 -2017-02-21 04:00:00,4322.15,0.0,34.38 -2017-02-21 05:00:00,4550.708,, -2017-02-21 06:00:00,5006.175,0.0,32.3 -2017-02-21 07:00:00,5504.575,0.0,33.2 -2017-02-21 08:00:00,5899.642,0.0,35.29 -2017-02-21 09:00:00,6108.233,0.0,38.9 -2017-02-21 10:00:00,6187.542,0.0,41.95 -2017-02-21 11:00:00,6199.425,0.0,45.38 -2017-02-21 12:00:00,6201.567,0.0,47.6 -2017-02-21 13:00:00,6193.317,0.0,46.32 -2017-02-21 14:00:00,6182.317,, -2017-02-21 15:00:00,6200.958,0.0,47.65 -2017-02-21 16:00:00,6286.333,0.0,46.17 -2017-02-21 17:00:00,6395.208,0.0,43.78 -2017-02-21 18:00:00,6415.808,0.0,42.72 -2017-02-21 19:00:00,6280.158,, -2017-02-21 20:00:00,6084.425,0.0,42.07 -2017-02-21 21:00:00,5831.217,0.0,42.25 -2017-02-21 22:00:00,5520.133,0.0,42.03 -2017-02-21 23:00:00,5120.567,0.0,42.56 -2017-02-22 00:00:00,4736.533,0.0,42.23 -2017-02-22 01:00:00,4494.583,0.0,42.28 -2017-02-22 02:00:00,4362.0,0.0,41.83 -2017-02-22 03:00:00,4294.492,0.0,41.97 -2017-02-22 04:00:00,4321.442,0.0028,42.44 -2017-02-22 05:00:00,4524.358,0.0,40.95 -2017-02-22 06:00:00,4985.55,0.0,41.28 -2017-02-22 07:00:00,5481.608,0.0,42.22 -2017-02-22 08:00:00,5913.308,0.0,44.02 -2017-02-22 09:00:00,6131.35,0.0,45.25 -2017-02-22 10:00:00,6206.508,0.0,47.9 -2017-02-22 11:00:00,6247.867,0.0,49.86 -2017-02-22 12:00:00,6211.617,0.0,51.24 -2017-02-22 13:00:00,6187.1,0.0,51.61 -2017-02-22 14:00:00,6148.408,0.0,54.8 -2017-02-22 15:00:00,6145.567,0.0,57.32 -2017-02-22 16:00:00,6180.808,0.0,56.62 -2017-02-22 17:00:00,6263.775,0.0,54.94 -2017-02-22 18:00:00,6278.075,0.0,54.85 -2017-02-22 19:00:00,6164.542,0.0,51.45 -2017-02-22 20:00:00,5988.475,0.0,50.41 -2017-02-22 21:00:00,5766.975,0.0,48.95 -2017-02-22 22:00:00,5439.4,0.0,47.72 -2017-02-22 23:00:00,5063.467,0.0,46.94 -2017-02-23 00:00:00,4672.517,0.0,48.0 -2017-02-23 01:00:00,4428.808,0.0,46.44 -2017-02-23 02:00:00,4298.683,0.0,45.96 -2017-02-23 03:00:00,4221.175,0.0,43.73 -2017-02-23 04:00:00,4249.392,0.0,43.8 -2017-02-23 05:00:00,4459.925,0.0,43.62 -2017-02-23 06:00:00,4900.842,0.0,41.91 -2017-02-23 07:00:00,5369.942,0.0,43.29 -2017-02-23 08:00:00,5799.15,0.0,44.33 -2017-02-23 09:00:00,6048.425,0.0,47.3 -2017-02-23 10:00:00,6126.275,0.0,48.46 -2017-02-23 12:00:00,6148.833,0.0,55.44 -2017-02-23 13:00:00,6126.575,0.0,56.81 -2017-02-23 14:00:00,6100.5,0.0,58.56 -2017-02-23 15:00:00,6107.75,0.0,62.64 -2017-02-23 16:00:00,6134.308,0.0,63.12 -2017-02-23 17:00:00,6151.992,0.0,61.23 -2017-02-23 18:00:00,6083.433,0.0,59.98 -2017-02-23 19:00:00,6015.225,0.0,56.34 -2017-02-23 20:00:00,5880.633,0.0,54.84 -2017-02-23 21:00:00,5659.233,0.0,55.54 -2017-02-23 22:00:00,5367.783,0.0,54.47 -2017-02-23 23:00:00,5001.858,0.0,56.09 -2017-02-24 00:00:00,4638.825,0.0,56.88 -2017-02-24 01:00:00,4371.475,0.0,54.31 -2017-02-24 02:00:00,4232.117,0.0,53.16 -2017-02-24 03:00:00,4140.408,0.0,52.43 -2017-02-24 04:00:00,4157.592,0.0,53.48 -2017-02-24 05:00:00,4351.933,0.0,53.68 -2017-02-24 06:00:00,4796.917,0.0,51.37 -2017-02-24 07:00:00,5259.125,0.0,50.79 -2017-02-24 08:00:00,5664.475,0.0,52.73 -2017-02-24 09:00:00,5932.542,0.0,58.64 -2017-02-24 10:00:00,6041.65,0.0,63.12 -2017-02-24 11:00:00,6117.667,0.0,64.0 -2017-02-24 12:00:00,6163.558,0.0,69.41 -2017-02-24 13:00:00,6165.808,0.0,69.66 -2017-02-24 14:00:00,6099.842,0.0,68.99 -2017-02-24 15:00:00,6094.583,0.0,68.35 -2017-02-24 16:00:00,6095.467,0.0,66.2 -2017-02-24 17:00:00,6109.642,0.0,64.1 -2017-02-24 18:00:00,6094.3,0.0,62.68 -2017-02-24 19:00:00,5934.733,0.0,57.75 -2017-02-24 20:00:00,5727.417,0.0,60.66 -2017-02-24 21:00:00,5540.525,0.0,57.3 -2017-02-24 22:00:00,5288.042,0.0,57.18 -2017-02-24 23:00:00,4964.7,0.0,57.77 -2017-02-25 00:00:00,4639.817,0.0,58.07 -2017-02-25 01:00:00,4392.558,0.0,56.77 -2017-02-25 02:00:00,4243.5,0.0,56.36 -2017-02-25 03:00:00,4155.675,0.0,55.53 -2017-02-25 04:00:00,4122.767,0.0,54.51 -2017-02-25 05:00:00,4165.058,0.0,53.31 -2017-02-25 06:00:00,4319.0,0.0,53.26 -2017-02-25 07:00:00,4521.242,0.0,52.65 -2017-02-25 08:00:00,4776.1,0.0,53.1 -2017-02-25 09:00:00,5003.208,0.0,53.48 -2017-02-25 10:00:00,5193.025,0.0,56.81 -2017-02-25 11:00:00,5290.475,0.0,56.83 -2017-02-25 12:00:00,5317.633,0.0,60.65 -2017-02-25 13:00:00,5281.158,0.0,62.7 -2017-02-25 14:00:00,5286.933,0.0,62.85 -2017-02-25 15:00:00,5278.067,0.0,61.89 -2017-02-25 16:00:00,5316.008,0.0,61.64 -2017-02-25 17:00:00,5446.758,0.0,61.96 -2017-02-25 18:00:00,5618.9,0.009,57.26 -2017-02-25 19:00:00,5587.583,0.0033,54.41 -2017-02-25 20:00:00,5478.133,0.0026,54.26 -2017-02-25 21:00:00,5308.808,0.0,52.66 -2017-02-25 22:00:00,5096.817,0.0,49.78 -2017-02-25 23:00:00,4837.792,0.0,47.16 -2017-02-26 00:00:00,4582.525,0.0,47.08 -2017-02-26 01:00:00,4368.733,0.0,43.47 -2017-02-26 02:00:00,4184.575,0.0,42.87 -2017-02-26 03:00:00,4100.067,0.0,39.78 -2017-02-26 04:00:00,4076.742,0.0,39.99 -2017-02-26 05:00:00,4125.192,0.0,37.38 -2017-02-26 06:00:00,4235.625,0.0,36.35 -2017-02-26 07:00:00,4388.717,0.0,35.9 -2017-02-26 08:00:00,4653.35,0.0,37.26 -2017-02-26 09:00:00,4894.617,0.0,37.65 -2017-02-26 10:00:00,5076.317,0.0,38.99 -2017-02-26 11:00:00,5182.908,0.0,39.87 -2017-02-26 12:00:00,5224.883,0.0,40.29 -2017-02-26 13:00:00,5234.725,0.0,41.18 -2017-02-26 14:00:00,5229.192,0.0,42.63 -2017-02-26 15:00:00,5239.058,0.0,43.14 -2017-02-26 16:00:00,5283.783,0.0,42.48 -2017-02-26 17:00:00,5424.433,0.0,42.03 -2017-02-26 18:00:00,5741.525,0.0,39.6 -2017-02-26 19:00:00,5766.45,0.0,39.06 -2017-02-26 20:00:00,5683.242,0.0,38.07 -2017-02-26 21:00:00,5526.083,0.0,37.1 -2017-02-26 22:00:00,5287.825,0.0,37.28 -2017-02-26 23:00:00,4997.583,0.0,36.07 -2017-02-27 00:00:00,4705.717,0.0,35.92 -2017-02-27 01:00:00,4485.008,0.0,34.84 -2017-02-27 02:00:00,4356.25,0.0,34.54 -2017-02-27 03:00:00,4281.642,0.0,34.72 -2017-02-27 04:00:00,4301.642,0.0,32.65 -2017-02-27 05:00:00,4546.925,0.0,33.2 -2017-02-27 06:00:00,5075.225,0.0,33.4 -2017-02-27 07:00:00,5651.225,0.0,33.76 -2017-02-27 08:00:00,5989.458,0.0,36.24 -2017-02-27 09:00:00,6194.708,0.0,40.26 -2017-02-27 10:00:00,6272.392,0.0,43.2 -2017-02-27 11:00:00,6278.192,0.0,47.6 -2017-02-27 12:00:00,6249.433,0.0,46.62 -2017-02-27 13:00:00,6225.6,0.0,52.19 -2017-02-27 14:00:00,6226.942,0.0,53.02 -2017-02-27 15:00:00,6245.325,0.0,52.62 -2017-02-27 16:00:00,6291.075,0.0,52.59 -2017-02-27 17:00:00,6322.408,0.0,50.81 -2017-02-27 18:00:00,6375.475,0.0,49.14 -2017-02-27 19:00:00,6261.167,0.0,48.64 -2017-02-27 20:00:00,6053.542,0.0,50.21 -2017-02-27 21:00:00,5811.025,0.0,49.49 -2017-02-27 22:00:00,5466.383,0.0,44.92 -2017-02-27 23:00:00,5051.767,0.0,45.17 -2017-02-28 00:00:00,4664.033,0.0,45.62 -2017-02-28 01:00:00,4440.317,0.0,47.72 -2017-02-28 02:00:00,4304.008,0.0,44.43 -2017-02-28 03:00:00,4190.45,0.0,43.95 -2017-02-28 04:00:00,4199.033,0.0,44.24 -2017-02-28 05:00:00,4426.142,0.0,43.24 -2017-02-28 06:00:00,5000.258,0.0,42.26 -2017-02-28 07:00:00,5553.767,0.0,45.06 -2017-02-28 08:00:00,5882.083,0.0,45.72 -2017-02-28 09:00:00,6061.333,0.0,47.67 -2017-02-28 10:00:00,6116.933,0.0,50.38 -2017-02-28 11:00:00,6128.325,0.0,54.01 -2017-02-28 12:00:00,6135.85,0.0,52.35 -2017-02-28 13:00:00,6132.983,0.0,54.9 -2017-02-28 14:00:00,6135.517,0.0,58.55 -2017-02-28 15:00:00,6170.992,0.0,58.21 -2017-02-28 16:00:00,6255.575,0.0014,55.81 -2017-02-28 17:00:00,6375.767,0.0,53.75 -2017-02-28 18:00:00,6354.55,0.0,54.39 -2017-02-28 19:00:00,6199.133,0.0,53.19 -2017-02-28 20:00:00,6011.675,0.0,52.44 -2017-02-28 21:00:00,5754.242,0.0057,51.88 -2017-02-28 22:00:00,5443.892,0.0,51.9 -2017-02-28 23:00:00,4994.025,0.0,51.82 -2017-03-01 00:00:00,4607.842,0.0,52.31 -2017-03-01 01:00:00,4375.45,0.0,53.11 -2017-03-01 02:00:00,4228.392,0.0,52.83 -2017-03-01 03:00:00,4165.583,0.0,53.03 -2017-03-01 04:00:00,4200.833,0.0,52.75 -2017-03-01 05:00:00,4424.392,0.0,53.32 -2017-03-01 06:00:00,4948.342,0.0,53.8 -2017-03-01 07:00:00,5514.65,0.0,54.57 -2017-03-01 08:00:00,5899.5,0.0,55.03 -2017-03-01 09:00:00,6118.583,0.0,56.32 -2017-03-01 10:00:00,6222.533,0.0311,58.24 -2017-03-01 11:00:00,6299.025,0.0088,58.37 -2017-03-01 12:00:00,6314.633,0.0,58.66 -2017-03-01 13:00:00,6255.183,0.0,59.68 -2017-03-01 14:00:00,6240.767,0.0,60.32 -2017-03-01 15:00:00,6255.408,0.0,63.75 -2017-03-01 16:00:00,6344.692,0.0,62.85 -2017-03-01 17:00:00,6395.942,0.0,64.43 -2017-03-01 18:00:00,6396.008,0.0,63.97 -2017-03-01 19:00:00,6206.233,0.0,59.43 -2017-03-01 20:00:00,5988.092,0.0,63.4 -2017-03-01 21:00:00,5753.075,0.0,62.01 -2017-03-01 22:00:00,5395.383,0.0,64.98 -2017-03-01 23:00:00,4974.225,0.0,62.36 -2017-03-02 00:00:00,4572.975,0.0,62.71 -2017-03-02 01:00:00,4331.65,0.0,59.74 -2017-03-02 02:00:00,4184.517,0.0,58.9 -2017-03-02 03:00:00,4117.933,0.0,59.74 -2017-03-02 04:00:00,4136.65,0.0,58.37 -2017-03-02 05:00:00,4368.883,0.0,48.4 -2017-03-02 06:00:00,4875.742,0.0,45.29 -2017-03-02 07:00:00,5412.642,0.0,45.47 -2017-03-02 08:00:00,5772.992,0.0,45.19 -2017-03-02 09:00:00,5977.417,0.0,46.45 -2017-03-02 10:00:00,6077.217,0.0,44.34 -2017-03-02 11:00:00,6119.475,0.0,44.96 -2017-03-02 12:00:00,6125.125,0.0,45.36 -2017-03-02 13:00:00,6122.875,0.0,45.98 -2017-03-02 14:00:00,6105.292,0.0,45.66 -2017-03-02 15:00:00,6125.208,0.0,46.64 -2017-03-02 16:00:00,6211.608,0.0,45.5 -2017-03-02 17:00:00,6280.467,0.0,43.67 -2017-03-02 18:00:00,6355.75,0.0,43.19 -2017-03-02 19:00:00,6249.725,0.0,41.69 -2017-03-02 20:00:00,6094.858,0.0,38.43 -2017-03-02 21:00:00,5884.733,0.0,38.4 -2017-03-02 22:00:00,5569.818,0.0,36.83 -2017-03-02 23:00:00,5167.692,0.0,38.15 -2017-03-03 00:00:00,4802.025,0.0,37.09 -2017-03-03 01:00:00,4575.5,0.0,34.51 -2017-03-03 02:00:00,4447.425,0.0,33.34 -2017-03-03 03:00:00,4395.275,0.0,32.44 -2017-03-03 04:00:00,4434.508,0.0,30.65 -2017-03-03 05:00:00,4664.158,0.0,31.3 -2017-03-03 06:00:00,5167.608,0.0,30.69 -2017-03-03 07:00:00,5702.292,0.0,28.83 -2017-03-03 08:00:00,6045.033,0.0,31.19 -2017-03-03 09:00:00,6256.067,0.0,33.18 -2017-03-03 10:00:00,6348.142,0.0,32.37 -2017-03-03 11:00:00,6368.833,0.0,34.03 -2017-03-03 12:00:00,6373.45,0.0,37.57 -2017-03-03 13:00:00,6376.133,0.0,38.6 -2017-03-03 14:00:00,6361.333,0.0,36.9 -2017-03-03 15:00:00,6370.917,0.0,39.34 -2017-03-03 16:00:00,6385.05,0.0,38.44 -2017-03-03 17:00:00,6453.583,0.0,38.04 -2017-03-03 18:00:00,6507.375,0.0,36.11 -2017-03-03 19:00:00,6419.0,0.0,34.14 -2017-03-03 20:00:00,6254.367,0.0,33.36 -2017-03-03 21:00:00,6087.808,0.0,29.21 -2017-03-03 22:00:00,5834.458,0.0,27.88 -2017-03-03 23:00:00,5524.375,0.0,27.34 -2017-03-04 00:00:00,5189.5,0.0,26.44 -2017-03-04 01:00:00,4965.858,0.0,24.28 -2017-03-04 02:00:00,4824.55,0.0,22.78 -2017-03-04 03:00:00,4743.867,0.0,22.41 -2017-03-04 04:00:00,4718.225,0.0,21.86 -2017-03-04 05:00:00,4795.9,0.0,21.08 -2017-03-04 06:00:00,4949.292,0.0,21.65 -2017-03-04 07:00:00,5168.067,0.0,21.28 -2017-03-04 08:00:00,5463.583,0.0,22.77 -2017-03-04 09:00:00,5701.325,0.0,24.85 -2017-03-04 10:00:00,5880.15,0.0,23.99 -2017-03-04 11:00:00,5992.983,0.0,28.11 -2017-03-04 12:00:00,6006.542,0.0,28.83 -2017-03-04 13:00:00,5995.475,0.0,30.39 -2017-03-04 14:00:00,5972.267,0.0,29.5 -2017-03-04 15:00:00,5951.008,0.0,30.44 -2017-03-04 16:00:00,5969.275,0.0,29.42 -2017-03-04 17:00:00,6072.075,0.0,29.06 -2017-03-04 18:00:00,6293.208,0.0,26.29 -2017-03-04 19:00:00,6324.392,0.0,25.13 -2017-03-04 20:00:00,6249.192,0.0,22.37 -2017-03-04 21:00:00,6124.242,0.0,22.23 -2017-03-04 22:00:00,5933.633,0.0,19.25 -2017-03-04 23:00:00,5688.658,0.0,17.95 -2017-03-05 00:00:00,5433.208,0.0,18.29 -2017-03-05 01:00:00,5203.683,0.0,16.41 -2017-03-05 02:00:00,5042.733,0.0,15.96 -2017-03-05 03:00:00,4960.917,0.0,15.29 -2017-03-05 04:00:00,4929.392,0.0,14.57 -2017-03-05 05:00:00,4970.408,0.0,14.52 -2017-03-05 06:00:00,5058.317,0.0,14.8 -2017-03-05 07:00:00,5212.675,0.0,14.47 -2017-03-05 08:00:00,5437.617,0.0,16.77 -2017-03-05 09:00:00,5661.408,0.0,18.04 -2017-03-05 10:00:00,5833.542,0.0,20.92 -2017-03-05 11:00:00,5895.633,0.0,26.76 -2017-03-05 12:00:00,5925.133,0.0,29.35 -2017-03-05 13:00:00,5893.067,0.0,31.0 -2017-03-05 14:00:00,5824.808,0.0,34.15 -2017-03-05 15:00:00,5796.842,0.0,35.77 -2017-03-05 16:00:00,5827.808,0.0,34.92 -2017-03-05 17:00:00,5934.692,0.0,35.82 -2017-03-05 18:00:00,6166.367,0.0,33.3 -2017-03-05 19:00:00,6222.75,0.0,32.02 -2017-03-05 20:00:00,6140.55,0.0,32.6 -2017-03-05 21:00:00,5975.092,0.0,29.5 -2017-03-05 22:00:00,5696.325,0.0,29.0 -2017-03-05 23:00:00,5363.675,0.0,29.33 -2017-03-06 00:00:00,5041.608,0.0,28.77 -2017-03-06 01:00:00,4846.95,0.0,27.17 -2017-03-06 02:00:00,4733.65,0.0,26.36 -2017-03-06 03:00:00,4672.717,0.0,26.15 -2017-03-06 04:00:00,4718.008,0.0,24.75 -2017-03-06 05:00:00,4969.55,0.0,24.27 -2017-03-06 06:00:00,5442.283,0.0,24.94 -2017-03-06 07:00:00,5974.658,0.0,23.39 -2017-03-06 08:00:00,6303.275,0.0,26.78 -2017-03-06 09:00:00,6492.742,0.0,31.04 -2017-03-06 10:00:00,6554.433,0.0,32.38 -2017-03-06 11:00:00,6555.65,0.0,38.18 -2017-03-06 12:00:00,6527.225,0.0,41.11 -2017-03-06 13:00:00,6478.592,0.0,42.98 -2017-03-06 14:00:00,6430.967,0.0,42.73 -2017-03-06 15:00:00,6442.9,0.0,45.03 -2017-03-06 16:00:00,6534.2,0.0,44.88 -2017-03-06 17:00:00,6627.633,0.0,41.31 -2017-03-06 18:00:00,6661.592,0.0,38.38 -2017-03-06 19:00:00,6558.917,0.0,39.33 -2017-03-06 20:00:00,6353.725,0.0,39.1 -2017-03-06 21:00:00,6079.758,0.0,39.79 -2017-03-06 22:00:00,5712.708,0.0,39.75 -2017-03-06 23:00:00,5274.917,0.0,40.21 -2017-03-07 00:00:00,4861.858,0.0,40.75 -2017-03-07 01:00:00,4621.158,0.0,40.32 -2017-03-07 02:00:00,4476.1,0.0,40.89 -2017-03-07 03:00:00,4417.708,0.0,41.34 -2017-03-07 04:00:00,4438.608,0.0123,42.1 -2017-03-07 05:00:00,4672.65,0.0107,41.62 -2017-03-07 06:00:00,5167.383,0.009,41.56 -2017-03-07 07:00:00,5725.958,0.009,43.34 -2017-03-07 08:00:00,6031.55,0.011,44.21 -2017-03-07 09:00:00,6260.15,0.0223,45.04 -2017-03-07 10:00:00,6354.425,0.052,47.04 -2017-03-07 11:00:00,6371.45,0.006,48.59 -2017-03-07 12:00:00,6385.2,0.0,48.83 -2017-03-07 13:00:00,6381.258,0.0141,49.47 -2017-03-07 14:00:00,6333.208,0.0,49.56 -2017-03-07 15:00:00,6356.633,0.0194,50.91 -2017-03-07 16:00:00,6397.492,0.0,50.47 -2017-03-07 17:00:00,6437.267,0.0,50.04 -2017-03-07 18:00:00,6442.092,0.0,49.65 -2017-03-07 19:00:00,6322.2,0.0,48.9 -2017-03-07 20:00:00,6109.567,0.0,49.11 -2017-03-07 21:00:00,5860.975,0.0,50.1 -2017-03-07 22:00:00,5517.85,0.0,50.6 -2017-03-07 23:00:00,5069.942,0.0035,52.21 -2017-03-08 00:00:00,4682.592,0.003,51.23 -2017-03-08 01:00:00,4434.383,0.0,51.72 -2017-03-08 02:00:00,4284.55,0.0,51.63 -2017-03-08 03:00:00,4213.925,0.0,53.08 -2017-03-08 04:00:00,4235.667,0.0,52.78 -2017-03-08 05:00:00,4460.0,0.0044,52.84 -2017-03-08 06:00:00,5016.95,0.005,54.11 -2017-03-08 07:00:00,5583.592,0.0034,52.53 -2017-03-08 08:00:00,5931.7,0.0,47.88 -2017-03-08 09:00:00,6151.775,0.0,47.42 -2017-03-08 10:00:00,6180.933,0.0,48.9 -2017-03-08 11:00:00,6155.425,0.0,51.65 -2017-03-08 12:00:00,6149.717,0.0,52.71 -2017-03-08 13:00:00,6118.058,0.0,58.23 -2017-03-08 14:00:00,6092.675,0.0,59.52 -2017-03-08 15:00:00,6091.558,0.0,60.39 -2017-03-08 16:00:00,6128.658,0.0,59.39 -2017-03-08 17:00:00,6181.775,0.0,57.8 -2017-03-08 18:00:00,6228.05,0.0,55.78 -2017-03-08 19:00:00,6137.658,0.0,56.4 -2017-03-08 20:00:00,5938.15,0.0,54.03 -2017-03-08 21:00:00,5730.458,0.0,53.57 -2017-03-08 22:00:00,5416.492,0.0,54.82 -2017-03-08 23:00:00,4990.2,0.0,51.53 -2017-03-09 00:00:00,4609.083,0.0,53.06 -2017-03-09 01:00:00,4375.267,0.0,51.85 -2017-03-09 02:00:00,4232.367,0.0,51.14 -2017-03-09 03:00:00,4179.117,0.0,50.31 -2017-03-09 04:00:00,4197.533,0.0,49.28 -2017-03-09 05:00:00,4415.217,0.0,52.04 -2017-03-09 06:00:00,4904.208,0.0,47.89 -2017-03-09 07:00:00,5416.333,0.0,47.64 -2017-03-09 08:00:00,5760.275,0.0,50.78 -2017-03-09 09:00:00,5958.575,0.0,51.7 -2017-03-09 10:00:00,6044.358,0.0,55.69 -2017-03-09 11:00:00,6049.467,0.0,55.16 -2017-03-09 12:00:00,6061.558,0.0,58.85 -2017-03-09 13:00:00,6059.875,0.0,61.5 -2017-03-09 14:00:00,6044.95,0.0,60.35 -2017-03-09 15:00:00,6058.317,0.0,61.55 -2017-03-09 16:00:00,6111.267,0.0,60.67 -2017-03-09 17:00:00,6169.892,0.0,60.21 -2017-03-09 18:00:00,6202.617,0.0,55.98 -2017-03-09 19:00:00,6103.592,0.0,52.22 -2017-03-09 20:00:00,5934.933,0.0,52.63 -2017-03-09 21:00:00,5711.158,0.0,49.64 -2017-03-09 22:00:00,5383.525,0.0,48.68 -2017-03-09 23:00:00,4978.783,0.002,46.89 -2017-03-10 00:00:00,4627.308,0.0,47.44 -2017-03-10 01:00:00,4395.558,0.0,45.44 -2017-03-10 02:00:00,4262.392,0.0,44.79 -2017-03-10 03:00:00,4209.408,0.0,43.28 -2017-03-10 04:00:00,4241.242,0.0,41.8 -2017-03-10 05:00:00,4480.95,0.0093,41.82 -2017-03-10 06:00:00,5005.0,0.0122,39.1 -2017-03-10 07:00:00,5603.9,0.011,36.94 -2017-03-10 08:00:00,6050.925,0.008,36.17 -2017-03-10 09:00:00,6356.775,0.012,34.04 -2017-03-10 10:00:00,6525.783,0.025,33.8 -2017-03-10 11:00:00,6603.567,0.0096,32.8 -2017-03-10 12:00:00,6637.15,0.007,31.97 -2017-03-10 13:00:00,6615.083,0.005,33.56 -2017-03-10 14:00:00,6517.717,0.0,34.08 -2017-03-10 15:00:00,6466.808,0.0,33.52 -2017-03-10 16:00:00,6477.008,0.0,37.31 -2017-03-10 17:00:00,6518.142,0.0,36.21 -2017-03-10 18:00:00,6548.8,0.0,34.52 -2017-03-10 19:00:00,6463.167,0.0,30.57 -2017-03-10 20:00:00,6296.427,0.0,31.12 -2017-03-10 21:00:00,6114.725,0.0,28.78 -2017-03-10 22:00:00,5894.808,0.0,28.8 -2017-03-10 23:00:00,5561.267,0.0,27.02 -2017-03-11 00:00:00,5227.25,0.0,25.72 -2017-03-11 01:00:00,5024.708,0.0,22.96 -2017-03-11 02:00:00,4894.917,0.0,22.86 -2017-03-11 03:00:00,4836.333,0.0,20.86 -2017-03-11 04:00:00,4809.717,0.0,18.32 -2017-03-11 05:00:00,4873.242,0.0,17.8 -2017-03-11 06:00:00,5021.192,0.0,18.04 -2017-03-11 07:00:00,5260.183,0.0,18.09 -2017-03-11 08:00:00,5563.817,0.0,19.43 -2017-03-11 09:00:00,5815.958,0.0,20.95 -2017-03-11 10:00:00,6020.042,0.0,20.93 -2017-03-11 11:00:00,6122.858,0.0,21.97 -2017-03-11 12:00:00,6146.15,0.0,25.47 -2017-03-11 13:00:00,6114.775,0.0,27.16 -2017-03-11 14:00:00,6068.65,0.0,26.37 -2017-03-11 15:00:00,6038.425,0.0,27.76 -2017-03-11 16:00:00,6073.158,0.0,28.73 -2017-03-11 17:00:00,6140.975,0.0,28.6 -2017-03-11 18:00:00,6313.825,0.0,27.67 -2017-03-11 19:00:00,6339.633,0.0,26.8 -2017-03-11 20:00:00,6229.55,0.0,25.62 -2017-03-11 21:00:00,6104.242,0.0,24.81 -2017-03-11 22:00:00,5892.867,0.0,24.79 -2017-03-11 23:00:00,5622.525,0.0,22.76 -2017-03-12 00:00:00,5363.608,0.0,23.23 -2017-03-12 01:00:00,5122.675,0.0,22.81 -2017-03-12 03:00:00,4990.258,0.0,21.75 -2017-03-12 04:00:00,4910.042,0.0,20.6 -2017-03-12 05:00:00,4913.683,0.0,20.19 -2017-03-12 06:00:00,4998.608,0.0,20.12 -2017-03-12 07:00:00,5140.008,0.0,20.58 -2017-03-12 08:00:00,5323.158,0.0,18.46 -2017-03-12 09:00:00,5536.658,0.0,20.65 -2017-03-12 10:00:00,5748.933,0.0,21.39 -2017-03-12 11:00:00,5890.592,0.0,22.81 -2017-03-12 12:00:00,5947.5,0.0,26.23 -2017-03-12 13:00:00,5955.0,0.0,28.01 -2017-03-12 14:00:00,5930.217,0.0,28.06 -2017-03-12 15:00:00,5942.292,0.0,28.86 -2017-03-12 16:00:00,5912.883,0.0,30.35 -2017-03-12 17:00:00,5940.5,0.0,30.44 -2017-03-12 18:00:00,6026.775,0.0,29.7 -2017-03-12 19:00:00,6241.367,0.0,28.07 -2017-03-12 20:00:00,6287.892,0.0,28.14 -2017-03-12 21:00:00,6196.433,0.0,26.54 -2017-03-12 22:00:00,5971.733,0.0,27.22 -2017-03-12 23:00:00,5639.783,0.0,23.59 -2017-03-13 00:00:00,5309.45,0.0,24.43 -2017-03-13 01:00:00,5106.133,0.0,23.98 -2017-03-13 02:00:00,4963.558,0.0,22.36 -2017-03-13 03:00:00,4893.942,0.0,20.28 -2017-03-13 04:00:00,4910.933,0.0,20.3 -2017-03-13 05:00:00,5131.783,0.0,20.67 -2017-03-13 06:00:00,5640.917,0.0,20.56 -2017-03-13 07:00:00,6191.267,0.0,18.39 -2017-03-13 08:00:00,6518.067,0.0,19.21 -2017-03-13 09:00:00,6726.275,0.0,21.5 -2017-03-13 10:00:00,6804.075,0.0,24.66 -2017-03-13 11:00:00,6826.942,0.0,26.56 -2017-03-13 12:00:00,6800.967,0.0,26.8 -2017-03-13 13:00:00,6770.742,0.0,28.69 -2017-03-13 14:00:00,6687.208,0.0,33.64 -2017-03-13 15:00:00,6654.283,0.0,34.81 -2017-03-13 16:00:00,6644.658,0.0,34.3 -2017-03-13 17:00:00,6639.3,0.0,34.43 -2017-03-13 18:00:00,6570.775,0.0,34.4 -2017-03-13 19:00:00,6680.008,0.0,34.41 -2017-03-13 20:00:00,6604.642,0.0,31.15 -2017-03-13 21:00:00,6397.45,0.0,30.81 -2017-03-13 22:00:00,6098.342,0.006,31.82 -2017-03-13 23:00:00,5751.833,0.003,32.05 -2017-03-14 00:00:00,5368.608,0.0163,32.41 -2017-03-14 01:00:00,5092.658,0.025,31.63 -2017-03-14 02:00:00,4920.942,0.007,31.48 -2017-03-14 03:00:00,4856.358,0.027,29.92 -2017-03-14 04:00:00,4852.967,0.025,28.54 -2017-03-14 05:00:00,4946.583,0.0141,28.69 -2017-03-14 06:00:00,5177.0,0.027,28.82 -2017-03-14 07:00:00,5437.475,0.0793,29.36 -2017-03-14 08:00:00,5699.092,0.9051,29.26 -2017-03-14 09:00:00,5991.925,0.6145,30.51 -2017-03-14 10:00:00,6217.5,0.1179,30.03 -2017-03-14 11:00:00,6292.625,0.0104,29.29 -2017-03-14 12:00:00,6371.1,0.0508,31.56 -2017-03-14 13:00:00,6398.85,0.0088,33.1 -2017-03-14 14:00:00,6380.258,0.006,31.78 -2017-03-14 15:00:00,6362.575,0.0,31.63 -2017-03-14 16:00:00,6349.008,0.0,29.65 -2017-03-14 17:00:00,6369.433,0.006,29.76 -2017-03-14 18:00:00,6380.4,0.0,29.34 -2017-03-14 19:00:00,6491.917,0.0,29.72 -2017-03-14 20:00:00,6416.233,0.0,28.62 -2017-03-14 21:00:00,6250.158,0.0,28.93 -2017-03-14 22:00:00,5990.133,0.0,27.7 -2017-03-14 23:00:00,5644.358,0.0,25.64 -2017-03-15 00:00:00,5306.018,0.0,23.72 -2017-03-15 01:00:00,5099.85,0.0,20.84 -2017-03-15 02:00:00,4967.283,0.0,20.83 -2017-03-15 03:00:00,4913.633,0.0,20.08 -2017-03-15 04:00:00,4939.558,0.0,20.1 -2017-03-15 05:00:00,5137.8,0.0,20.75 -2017-03-15 06:00:00,5629.508,0.0,20.89 -2017-03-15 07:00:00,6165.875,0.0,19.21 -2017-03-15 08:00:00,6506.275,0.0,20.11 -2017-03-15 09:00:00,6778.233,0.0,21.3 -2017-03-15 10:00:00,6934.525,0.0,22.74 -2017-03-15 11:00:00,7007.2,0.002,25.22 -2017-03-15 12:00:00,7024.933,0.0,23.11 -2017-03-15 13:00:00,7019.908,0.003,24.24 -2017-03-15 14:00:00,6982.75,0.0,26.69 -2017-03-15 15:00:00,6995.458,0.0,24.39 -2017-03-15 16:00:00,7009.525,0.0,25.02 -2017-03-15 17:00:00,7000.983,0.002,26.34 -2017-03-15 18:00:00,6932.658,0.0,25.7 -2017-03-15 19:00:00,6983.6,0.0,26.08 -2017-03-15 20:00:00,6898.375,0.0,25.3 -2017-03-15 21:00:00,6664.492,0.0,25.61 -2017-03-15 22:00:00,6324.842,0.0,25.53 -2017-03-15 23:00:00,5858.45,0.0,26.57 -2017-03-16 00:00:00,5452.15,0.0,26.33 -2017-03-16 01:00:00,5200.325,0.0,25.84 -2017-03-16 02:00:00,5043.775,0.0,25.15 -2017-03-16 03:00:00,4975.15,0.0,25.15 -2017-03-16 04:00:00,4973.317,0.0,25.53 -2017-03-16 05:00:00,5178.183,0.0,24.79 -2017-03-16 06:00:00,5665.875,0.0,24.58 -2017-03-16 07:00:00,6232.05,0.0,24.38 -2017-03-16 08:00:00,6540.975,0.0,23.53 -2017-03-16 09:00:00,6761.642,0.0,25.88 -2017-03-16 10:00:00,6850.75,0.0,26.91 -2017-03-16 11:00:00,6858.45,0.0,30.28 -2017-03-16 12:00:00,6841.367,0.0,30.48 -2017-03-16 13:00:00,6811.025,0.0,32.88 -2017-03-16 14:00:00,6760.125,0.0,34.43 -2017-03-16 15:00:00,6707.333,0.0,35.61 -2017-03-16 16:00:00,6678.242,0.0,36.61 -2017-03-16 17:00:00,6651.95,0.0,37.85 -2017-03-16 18:00:00,6564.975,0.0,38.17 -2017-03-16 19:00:00,6630.025,0.0,38.0 -2017-03-16 20:00:00,6576.15,0.0,37.68 -2017-03-16 21:00:00,6368.392,0.0,37.22 -2017-03-16 22:00:00,6066.625,0.0,32.98 -2017-03-16 23:00:00,5638.692,0.0,31.49 -2017-03-17 00:00:00,5256.058,0.0,33.36 -2017-03-17 01:00:00,5004.583,0.0,32.57 -2017-03-17 02:00:00,4847.825,0.0,31.92 -2017-03-17 03:00:00,4777.358,0.0,31.82 -2017-03-17 04:00:00,4801.083,0.0,31.57 -2017-03-17 05:00:00,4995.108,0.0,30.85 -2017-03-17 06:00:00,5503.0,0.0,29.86 -2017-03-17 07:00:00,6045.883,0.0,29.98 -2017-03-17 08:00:00,6373.008,0.0,29.33 -2017-03-17 09:00:00,6592.492,0.0,29.92 -2017-03-17 10:00:00,6660.858,0.0,31.17 -2017-03-17 11:00:00,6648.183,0.0,33.25 -2017-03-17 12:00:00,6609.108,0.0,35.72 -2017-03-17 13:00:00,6571.833,0.0,37.95 -2017-03-17 14:00:00,6496.35,0.0,40.89 -2017-03-17 15:00:00,6441.867,0.0,41.61 -2017-03-17 16:00:00,6417.433,0.0,43.12 -2017-03-17 17:00:00,6360.683,0.0,42.2 -2017-03-17 18:00:00,6272.092,0.0,45.21 -2017-03-17 19:00:00,6307.675,0.0,44.52 -2017-03-17 20:00:00,6209.367,0.0,40.83 -2017-03-17 21:00:00,6037.683,0.0,42.94 -2017-03-17 22:00:00,5775.25,0.0,40.6 -2017-03-17 23:00:00,5451.633,0.0,40.41 -2017-03-18 00:00:00,5086.158,0.0,38.13 -2017-03-18 01:00:00,4840.558,0.0,38.98 -2017-03-18 02:00:00,4687.033,0.0,37.51 -2017-03-18 03:00:00,4590.717,0.0,35.49 -2017-03-18 04:00:00,4555.55,0.0,34.95 -2017-03-18 05:00:00,4603.217,0.0,33.35 -2017-03-18 06:00:00,4756.767,0.0,33.38 -2017-03-18 07:00:00,4977.783,0.0,33.82 -2017-03-18 08:00:00,5270.517,0.0,34.52 -2017-03-18 09:00:00,5534.433,0.0,34.04 -2017-03-18 10:00:00,5743.208,0.0,35.15 -2017-03-18 11:00:00,5870.45,0.0,35.06 -2017-03-18 12:00:00,5926.633,0.0024,35.57 -2017-03-18 13:00:00,5927.125,0.0,35.63 -2017-03-18 14:00:00,5892.35,0.0,36.06 -2017-03-18 15:00:00,5896.5,0.003,36.19 -2017-03-18 16:00:00,5904.2,0.0,36.11 -2017-03-18 17:00:00,5951.342,0.0,35.42 -2017-03-18 18:00:00,5983.45,0.0036,35.55 -2017-03-18 19:00:00,6029.817,0.0,35.24 -2017-03-18 20:00:00,5986.2,0.0,35.37 -2017-03-18 21:00:00,5857.108,0.0,34.57 -2017-03-18 22:00:00,5660.333,0.0,35.41 -2017-03-18 23:00:00,5385.058,0.0,35.93 -2017-03-19 00:00:00,5114.617,0.0,36.41 -2017-03-19 01:00:00,4877.083,0.0,36.28 -2017-03-19 02:00:00,4710.625,0.0,35.48 -2017-03-19 03:00:00,4599.042,0.0,35.48 -2017-03-19 04:00:00,4549.092,0.0,34.77 -2017-03-19 05:00:00,4580.4,0.0,33.36 -2017-03-19 06:00:00,4684.283,0.0,33.54 -2017-03-19 07:00:00,4830.175,0.0,34.14 -2017-03-19 08:00:00,5028.117,0.0,33.5 -2017-03-19 09:00:00,5234.958,0.0,34.19 -2017-03-19 10:00:00,5420.592,0.0,35.51 -2017-03-19 11:00:00,5510.9,0.0,37.58 -2017-03-19 12:00:00,5538.142,0.0,40.16 -2017-03-19 13:00:00,5522.692,0.0,41.29 -2017-03-19 14:00:00,5480.8,0.0,42.6 -2017-03-19 15:00:00,5455.183,0.0,43.54 -2017-03-19 16:00:00,5448.9,0.0,45.24 -2017-03-19 17:00:00,5475.225,0.0,45.24 -2017-03-19 18:00:00,5542.025,0.0,44.43 -2017-03-19 19:00:00,5736.5,0.0,43.64 -2017-03-19 20:00:00,5803.15,0.0,40.87 -2017-03-19 21:00:00,5696.633,0.0,41.36 -2017-03-19 22:00:00,5457.667,0.0,40.09 -2017-03-19 23:00:00,5125.3,0.0,39.99 -2017-03-20 00:00:00,4803.892,0.0,39.34 -2017-03-20 01:00:00,4606.558,0.0,37.06 -2017-03-20 02:00:00,4480.575,0.0,36.71 -2017-03-20 03:00:00,4436.042,0.0,35.56 -2017-03-20 04:00:00,4474.208,0.0,35.61 -2017-03-20 05:00:00,4718.475,0.0,34.64 -2017-03-20 06:00:00,5250.033,0.0,33.78 -2017-03-20 07:00:00,5782.283,0.0,33.55 -2017-03-20 08:00:00,6117.308,0.0,32.17 -2017-03-20 09:00:00,6308.883,0.0,32.7 -2017-03-20 10:00:00,6365.908,0.0,38.88 -2017-03-20 11:00:00,6359.05,0.0,38.09 -2017-03-20 12:00:00,6351.417,0.0,43.29 -2017-03-20 13:00:00,6317.167,0.0,43.29 -2017-03-20 14:00:00,6270.483,0.0,44.31 -2017-03-20 15:00:00,6236.775,0.0,47.34 -2017-03-20 16:00:00,6257.5,0.0,49.47 -2017-03-20 17:00:00,6237.617,0.0,49.59 -2017-03-20 18:00:00,6153.608,0.0,49.48 -2017-03-20 19:00:00,6197.033,0.0,49.17 -2017-03-20 20:00:00,6137.4,0.0,48.5 -2017-03-20 21:00:00,5929.867,0.0,46.13 -2017-03-20 22:00:00,5580.733,0.0,45.68 -2017-03-20 23:00:00,5158.5,0.0,45.17 -2017-03-21 00:00:00,4762.592,0.0,45.31 -2017-03-21 01:00:00,4514.725,0.0,43.64 -2017-03-21 02:00:00,4369.308,0.0,43.45 -2017-03-21 03:00:00,4310.067,0.0,42.24 -2017-03-21 04:00:00,4333.267,0.0,42.16 -2017-03-21 05:00:00,4551.7,0.0,40.69 -2017-03-21 06:00:00,5069.708,0.0,41.33 -2017-03-21 07:00:00,5627.192,0.0,40.75 -2017-03-21 08:00:00,5997.342,0.0,40.02 -2017-03-21 09:00:00,6185.725,0.0,41.43 -2017-03-21 10:00:00,6198.775,0.0,43.59 -2017-03-21 11:00:00,6188.292,0.0,45.74 -2017-03-21 12:00:00,6188.225,0.0,48.38 -2017-03-21 13:00:00,6165.958,0.0,49.53 -2017-03-21 14:00:00,6110.633,0.0,53.8 -2017-03-21 15:00:00,6110.058,0.0,52.7 -2017-03-21 16:00:00,6128.533,0.0,56.53 -2017-03-21 17:00:00,6115.217,0.0,56.85 -2017-03-21 18:00:00,5990.742,0.0,56.14 -2017-03-21 19:00:00,6031.533,0.0,55.9 -2017-03-21 20:00:00,5988.033,0.0,45.53 -2017-03-21 21:00:00,5799.242,0.0,51.89 -2017-03-21 22:00:00,5468.558,0.0,50.46 -2017-03-21 23:00:00,5054.525,0.0,51.9 -2017-03-22 00:00:00,4661.133,0.0,50.58 -2017-03-22 01:00:00,4421.625,0.0,46.38 -2017-03-22 02:00:00,4278.108,0.0,48.05 -2017-03-22 03:00:00,4226.025,0.0,44.97 -2017-03-22 04:00:00,4270.925,0.0,42.37 -2017-03-22 05:00:00,4514.475,0.0,43.04 -2017-03-22 06:00:00,5059.117,0.0,40.7 -2017-03-22 07:00:00,5644.658,0.0,36.66 -2017-03-22 08:00:00,6023.625,0.0,37.95 -2017-03-22 09:00:00,6251.208,0.0,37.06 -2017-03-22 10:00:00,6352.75,0.0,36.03 -2017-03-22 11:00:00,6386.25,0.0,35.59 -2017-03-22 12:00:00,6404.175,0.0,34.92 -2017-03-22 13:00:00,6421.4,0.0,34.95 -2017-03-22 14:00:00,6398.167,0.0,34.98 -2017-03-22 15:00:00,6407.5,0.0,33.21 -2017-03-22 16:00:00,6434.067,0.0,33.09 -2017-03-22 17:00:00,6450.817,0.0,33.37 -2017-03-22 18:00:00,6399.558,0.0,32.76 -2017-03-22 19:00:00,6470.792,0.0,31.6 -2017-03-22 20:00:00,6460.225,0.0,31.08 -2017-03-22 21:00:00,6270.725,0.0,28.84 -2017-03-22 22:00:00,5968.642,0.0,27.55 -2017-03-22 23:00:00,5533.9,0.0,26.44 -2017-03-23 00:00:00,5173.242,0.0,25.51 -2017-03-23 01:00:00,4937.458,0.0,24.09 -2017-03-23 02:00:00,4770.667,0.0,24.02 -2017-03-23 03:00:00,4699.925,0.0,23.61 -2017-03-23 04:00:00,4723.692,0.0,23.15 -2017-03-23 05:00:00,4940.625,0.0,22.67 -2017-03-23 06:00:00,5445.95,0.0,21.93 -2017-03-23 07:00:00,6010.883,0.0,22.25 -2017-03-23 08:00:00,6335.4,0.0,23.72 -2017-03-23 09:00:00,6542.383,0.0,24.84 -2017-03-23 10:00:00,6587.883,0.0,27.09 -2017-03-23 11:00:00,6581.8,0.0,29.89 -2017-03-23 12:00:00,6543.95,0.0,31.87 -2017-03-23 13:00:00,6512.575,0.0,34.64 -2017-03-23 14:00:00,6457.342,0.0,37.09 -2017-03-23 15:00:00,6421.033,0.0,38.7 -2017-03-23 16:00:00,6406.6,0.0,39.85 -2017-03-23 17:00:00,6376.325,0.0,41.17 -2017-03-23 18:00:00,6263.842,0.0,41.92 -2017-03-23 19:00:00,6278.508,0.0,41.5 -2017-03-23 20:00:00,6243.475,0.0,41.49 -2017-03-23 21:00:00,6044.733,0.0,39.82 -2017-03-23 22:00:00,5718.067,0.0,37.91 -2017-03-23 23:00:00,5314.875,0.0,37.32 -2017-03-24 00:00:00,4938.383,0.0,36.46 -2017-03-24 01:00:00,4688.108,0.0,36.45 -2017-03-24 02:00:00,4532.367,0.0,36.24 -2017-03-24 03:00:00,4478.392,0.0,33.83 -2017-03-24 04:00:00,4493.258,0.0,36.58 -2017-03-24 05:00:00,4705.175,0.0,35.18 -2017-03-24 06:00:00,5227.125,0.0,34.87 -2017-03-24 07:00:00,5760.075,0.0,35.63 -2017-03-24 08:00:00,6136.275,0.0,36.94 -2017-03-24 09:00:00,6328.067,0.0027,39.29 -2017-03-24 10:00:00,6391.008,0.0,40.28 -2017-03-24 11:00:00,6427.758,0.0,45.25 -2017-03-24 12:00:00,6446.642,0.0,44.67 -2017-03-24 13:00:00,6437.242,0.0,45.35 -2017-03-24 14:00:00,6417.617,0.0,47.93 -2017-03-24 15:00:00,6326.625,0.0,48.18 -2017-03-24 16:00:00,6233.325,0.004,51.21 -2017-03-24 17:00:00,6192.133,0.0,52.01 -2017-03-24 18:00:00,6067.1,0.0,53.69 -2017-03-24 19:00:00,6004.517,0.0,53.29 -2017-03-24 20:00:00,5926.433,0.0,50.97 -2017-03-24 21:00:00,5731.533,0.0,53.04 -2017-03-24 22:00:00,5502.833,0.0,52.92 -2017-03-24 23:00:00,5157.792,0.0,50.73 -2017-03-25 00:00:00,4798.367,0.0,50.56 -2017-03-25 01:00:00,4559.9,0.0,50.93 -2017-03-25 02:00:00,4388.008,0.0,50.3 -2017-03-25 03:00:00,4282.525,0.0,50.6 -2017-03-25 04:00:00,4239.2,0.0,47.66 -2017-03-25 05:00:00,4292.742,0.0,46.53 -2017-03-25 06:00:00,4452.267,0.0,49.43 -2017-03-25 07:00:00,4661.608,0.0,51.01 -2017-03-25 08:00:00,4932.608,0.0,51.33 -2017-03-25 09:00:00,5168.825,0.0016,51.51 -2017-03-25 10:00:00,5313.075,0.0,54.94 -2017-03-25 11:00:00,5372.9,0.0,56.05 -2017-03-25 12:00:00,5401.975,0.0,56.73 -2017-03-25 13:00:00,5353.625,0.0,58.81 -2017-03-25 14:00:00,5336.758,0.0,59.73 -2017-03-25 15:00:00,5326.133,0.0,59.14 -2017-03-25 16:00:00,5358.883,0.0,57.05 -2017-03-25 17:00:00,5375.233,0.0,54.07 -2017-03-25 18:00:00,5409.725,0.0,51.47 -2017-03-25 19:00:00,5518.725,0.0043,47.7 -2017-03-25 20:00:00,5505.25,0.0,47.86 -2017-03-25 21:00:00,5384.9,0.0,45.56 -2017-03-25 22:00:00,5216.917,0.0,43.81 -2017-03-25 23:00:00,4968.842,0.0,44.0 -2017-03-26 00:00:00,4706.283,0.0,43.72 -2017-03-26 01:00:00,4477.242,0.0,42.38 -2017-03-26 02:00:00,4314.367,0.0,42.05 -2017-03-26 03:00:00,4233.333,0.0081,41.47 -2017-03-26 04:00:00,4207.042,0.003,40.33 -2017-03-26 05:00:00,4254.458,0.0,39.59 -2017-03-26 06:00:00,4367.075,0.0,39.1 -2017-03-26 07:00:00,4519.1,0.0,39.09 -2017-03-26 08:00:00,4776.7,0.0,38.88 -2017-03-26 09:00:00,5057.075,0.0,39.27 -2017-03-26 10:00:00,5269.592,0.0,38.66 -2017-03-26 11:00:00,5426.208,0.0,38.86 -2017-03-26 12:00:00,5511.033,0.0,39.44 -2017-03-26 13:00:00,5557.25,0.002,42.05 -2017-03-26 14:00:00,5526.233,0.0,42.17 -2017-03-26 15:00:00,5502.408,0.0,40.26 -2017-03-26 16:00:00,5522.642,0.0,40.83 -2017-03-26 17:00:00,5584.158,0.0,41.97 -2017-03-26 18:00:00,5643.492,0.0,41.83 -2017-03-26 19:00:00,5725.4,0.0,40.6 -2017-03-26 20:00:00,5720.867,0.0,40.91 -2017-03-26 21:00:00,5578.958,0.0,40.34 -2017-03-26 22:00:00,5330.483,0.0,39.83 -2017-03-26 23:00:00,4996.2,0.0,39.57 -2017-03-27 00:00:00,4696.283,0.0,39.0 -2017-03-27 01:00:00,4487.033,0.0,38.81 -2017-03-27 02:00:00,4357.758,0.0,38.16 -2017-03-27 03:00:00,4293.558,0.0,38.94 -2017-03-27 04:00:00,4327.783,0.0,38.81 -2017-03-27 05:00:00,4560.142,0.005,38.14 -2017-03-27 06:00:00,5088.309,0.009,37.76 -2017-03-27 07:00:00,5641.708,0.0041,37.99 -2017-03-27 08:00:00,6023.925,0.0,39.89 -2017-03-27 09:00:00,6285.1,0.088,40.97 -2017-03-27 10:00:00,6442.95,0.0344,40.02 -2017-03-27 11:00:00,6468.317,0.0,41.54 -2017-03-27 12:00:00,6396.35,0.0,46.02 -2017-03-27 13:00:00,6341.342,0.0,47.68 -2017-03-27 14:00:00,6293.525,0.0,47.4 -2017-03-27 15:00:00,6241.8,0.0,50.06 -2017-03-27 16:00:00,6240.008,0.0,52.72 -2017-03-27 17:00:00,6224.3,0.0,52.94 -2017-03-27 18:00:00,6061.483,0.0,50.66 -2017-03-27 19:00:00,6069.358,0.0,51.87 -2017-03-27 20:00:00,6047.717,0.0,50.89 -2017-03-27 21:00:00,5831.95,0.0,48.28 -2017-03-27 22:00:00,5481.925,0.0,47.37 -2017-03-27 23:00:00,5046.367,0.0022,45.77 -2017-03-28 00:00:00,4661.783,0.0,46.06 -2017-03-28 01:00:00,4416.808,0.002,45.91 -2017-03-28 02:00:00,4280.475,0.0267,45.63 -2017-03-28 03:00:00,4204.833,0.0,44.51 -2017-03-28 04:00:00,4233.867,0.0036,44.07 -2017-03-28 05:00:00,4481.325,0.0177,43.97 -2017-03-28 06:00:00,5003.483,0.0,43.2 -2017-03-28 07:00:00,5579.408,0.0,43.62 -2017-03-28 08:00:00,5942.25,0.0,44.1 -2017-03-28 09:00:00,6171.858,0.0,43.06 -2017-03-28 10:00:00,6287.692,0.0,43.55 -2017-03-28 11:00:00,6384.317,0.0109,46.11 -2017-03-28 12:00:00,6411.85,0.0,46.93 -2017-03-28 13:00:00,6425.308,0.0199,43.21 -2017-03-28 14:00:00,6392.992,0.1057,47.08 -2017-03-28 15:00:00,6387.5,0.0,44.46 -2017-03-28 16:00:00,6384.6,0.0,47.23 -2017-03-28 17:00:00,6428.933,0.0,45.85 -2017-03-28 18:00:00,6358.325,0.0196,44.17 -2017-03-28 19:00:00,6292.675,0.122,42.92 -2017-03-28 20:00:00,6172.633,0.006,42.39 -2017-03-28 21:00:00,5922.9,0.011,42.63 -2017-03-28 22:00:00,5554.017,0.0095,43.03 -2017-03-28 23:00:00,5114.008,0.002,42.64 -2017-03-29 00:00:00,4720.575,0.0,43.04 -2017-03-29 01:00:00,4472.2,0.0,43.54 -2017-03-29 02:00:00,4317.442,0.0,43.69 -2017-03-29 03:00:00,4263.092,0.0,44.78 -2017-03-29 04:00:00,4284.0,0.0,44.95 -2017-03-29 05:00:00,4495.783,0.0,45.97 -2017-03-29 06:00:00,5016.842,0.0,44.38 -2017-03-29 07:00:00,5579.608,0.0,43.3 -2017-03-29 08:00:00,5924.008,0.0,44.39 -2017-03-29 09:00:00,6161.3,0.0,45.43 -2017-03-29 10:00:00,6201.483,0.0,45.75 -2017-03-29 11:00:00,6155.008,0.0,47.81 -2017-03-29 12:00:00,6117.475,0.0,51.29 -2017-03-29 13:00:00,6088.475,0.0,51.82 -2017-03-29 14:00:00,6043.267,0.0,57.22 -2017-03-29 15:00:00,6037.017,0.0,56.11 -2017-03-29 16:00:00,6049.417,0.0,57.82 -2017-03-29 17:00:00,6038.383,0.0,57.53 -2017-03-29 18:00:00,5929.558,0.0,55.57 -2017-03-29 19:00:00,5933.917,0.0,53.75 -2017-03-29 20:00:00,5946.617,0.0,48.21 -2017-03-29 21:00:00,5757.333,0.0,49.21 -2017-03-29 22:00:00,5439.375,0.0,45.35 -2017-03-29 23:00:00,5048.967,0.0,45.84 -2017-03-30 00:00:00,4677.975,0.0,44.74 -2017-03-30 01:00:00,4438.342,0.0,40.84 -2017-03-30 02:00:00,4292.475,0.0,41.19 -2017-03-30 03:00:00,4233.642,0.0,40.26 -2017-03-30 04:00:00,4257.975,0.0,37.19 -2017-03-30 05:00:00,4492.092,0.0,35.78 -2017-03-30 06:00:00,4999.792,0.0,35.89 -2017-03-30 07:00:00,5543.767,0.0,36.81 -2017-03-30 08:00:00,5862.833,0.0,37.07 -2017-03-30 09:00:00,6085.575,0.0,41.15 -2017-03-30 10:00:00,6136.508,0.0,41.54 -2017-03-30 11:00:00,6153.5,0.0,46.31 -2017-03-30 12:00:00,6113.967,0.0,45.4 -2017-03-30 13:00:00,6097.05,0.0,50.61 -2017-03-30 14:00:00,6081.55,0.0,48.84 -2017-03-30 15:00:00,6105.117,0.0,49.71 -2017-03-30 16:00:00,6167.542,0.0,51.98 -2017-03-30 17:00:00,6191.883,0.0,50.96 -2017-03-30 18:00:00,6135.792,0.0109,49.65 -2017-03-30 19:00:00,6109.375,0.012,44.99 -2017-03-30 20:00:00,6002.883,0.0,44.1 -2017-03-30 21:00:00,5796.0,0.003,44.68 -2017-03-30 22:00:00,5469.592,0.0041,44.4 -2017-03-30 23:00:00,5074.558,0.0,43.26 -2017-03-31 00:00:00,4690.233,0.0084,43.31 -2017-03-31 01:00:00,4446.7,0.0485,43.91 -2017-03-31 02:00:00,4316.658,0.201,42.2 -2017-03-31 03:00:00,4259.725,0.1041,40.14 -2017-03-31 04:00:00,4289.125,0.0236,39.0 -2017-03-31 05:00:00,4513.717,0.0,38.73 -2017-03-31 06:00:00,5034.75,0.0,38.31 -2017-03-31 07:00:00,5607.842,0.0022,38.43 -2017-03-31 08:00:00,5985.35,0.0022,38.08 -2017-03-31 09:00:00,6278.925,0.004,38.7 -2017-03-31 10:00:00,6408.258,0.003,39.92 -2017-03-31 11:00:00,6474.283,0.0067,39.59 -2017-03-31 12:00:00,6513.508,0.0185,40.61 -2017-03-31 13:00:00,6503.817,0.0215,40.9 -2017-03-31 14:00:00,6488.75,0.0,40.46 -2017-03-31 15:00:00,6506.875,0.018,40.0 -2017-03-31 16:00:00,6506.617,0.0328,40.17 -2017-03-31 17:00:00,6495.583,0.0033,40.02 -2017-03-31 18:00:00,6390.075,0.026,38.46 -2017-03-31 19:00:00,6320.242,0.0577,39.52 -2017-03-31 20:00:00,6154.183,0.0113,40.11 -2017-03-31 21:00:00,5912.775,0.0353,39.8 -2017-03-31 22:00:00,5662.15,0.006,38.78 -2017-03-31 23:00:00,5309.208,0.002,38.79 -2017-04-01 00:00:00,4939.208,0.0,38.97 -2017-04-01 01:00:00,4701.6,0.0,37.46 -2017-04-01 02:00:00,4543.967,0.0,37.9 -2017-04-01 03:00:00,4444.892,0.0,37.96 -2017-04-01 04:00:00,4405.083,0.0,37.34 -2017-04-01 05:00:00,4448.675,0.0,37.52 -2017-04-01 06:00:00,4604.375,0.0,37.37 -2017-04-01 07:00:00,4849.483,0.0,37.19 -2017-04-01 08:00:00,5151.517,0.0,36.69 -2017-04-01 09:00:00,5413.308,0.0,37.65 -2017-04-01 10:00:00,5576.975,0.0,39.58 -2017-04-01 11:00:00,5631.35,0.0,40.15 -2017-04-01 12:00:00,5657.683,0.0,41.68 -2017-04-01 13:00:00,5610.242,0.0,44.36 -2017-04-01 14:00:00,5567.325,0.0,43.67 -2017-04-01 15:00:00,5523.908,0.0,46.12 -2017-04-01 16:00:00,5473.933,0.0,45.54 -2017-04-01 17:00:00,5467.0,0.0,46.63 -2017-04-01 18:00:00,5478.633,0.0,46.11 -2017-04-01 19:00:00,5547.2,0.0,45.41 -2017-04-01 20:00:00,5587.542,0.0,44.77 -2017-04-01 21:00:00,5487.125,0.0,43.47 -2017-04-01 22:00:00,5294.958,0.0,44.46 -2017-04-01 23:00:00,5051.942,0.0,44.26 -2017-04-02 00:00:00,4755.275,0.0,42.62 -2017-04-02 01:00:00,4526.217,0.0,43.59 -2017-04-02 02:00:00,4364.408,0.0,43.52 -2017-04-02 03:00:00,4273.467,0.0,42.48 -2017-04-02 04:00:00,4236.825,0.0,39.89 -2017-04-02 05:00:00,4263.533,0.0,41.21 -2017-04-02 06:00:00,4373.767,0.0,40.49 -2017-04-02 07:00:00,4504.783,0.0,40.63 -2017-04-02 08:00:00,4708.058,0.0,40.14 -2017-04-02 09:00:00,4915.575,0.0,41.84 -2017-04-02 10:00:00,5075.442,0.0,45.02 -2017-04-02 11:00:00,5171.242,0.0,50.72 -2017-04-02 12:00:00,5176.575,0.0,54.49 -2017-04-02 13:00:00,5157.258,0.0,54.9 -2017-04-02 14:00:00,5117.425,0.0,57.94 -2017-04-02 15:00:00,5106.55,0.0,61.21 -2017-04-02 16:00:00,5104.367,0.0,61.29 -2017-04-02 17:00:00,5145.092,0.0,62.33 -2017-04-02 18:00:00,5178.983,0.0,60.64 -2017-04-02 19:00:00,5322.133,0.0,56.97 -2017-04-02 20:00:00,5465.283,0.0,56.63 -2017-04-02 21:00:00,5355.083,0.0,56.8 -2017-04-02 22:00:00,5116.458,0.0,51.06 -2017-04-02 23:00:00,4801.375,0.0,49.1 -2017-04-03 00:00:00,4489.075,0.0,52.72 -2017-04-03 01:00:00,4281.383,0.0,51.26 -2017-04-03 02:00:00,4149.492,0.0,50.14 -2017-04-03 03:00:00,4096.525,0.0,48.28 -2017-04-03 04:00:00,4138.55,0.0,47.97 -2017-04-03 05:00:00,4376.033,0.0,43.47 -2017-04-03 06:00:00,4868.967,0.0,46.57 -2017-04-03 07:00:00,5391.225,0.0,45.66 -2017-04-03 08:00:00,5744.0,0.0,43.87 -2017-04-03 09:00:00,5961.375,0.0,51.87 -2017-04-03 10:00:00,6007.808,0.0,53.98 -2017-04-03 11:00:00,6029.092,0.0,56.3 -2017-04-03 12:00:00,6022.575,0.0,61.68 -2017-04-03 13:00:00,6018.8,0.0,61.27 -2017-04-03 14:00:00,5985.95,0.0,61.71 -2017-04-03 15:00:00,5972.083,0.0,61.44 -2017-04-03 16:00:00,5987.833,0.0,59.54 -2017-04-03 17:00:00,5982.792,0.0,58.74 -2017-04-03 18:00:00,5932.108,0.0,55.61 -2017-04-03 19:00:00,5951.267,0.0,52.59 -2017-04-03 20:00:00,5912.167,0.0,53.29 -2017-04-03 21:00:00,5688.892,0.0,50.94 -2017-04-03 22:00:00,5320.35,0.005,51.21 -2017-04-03 23:00:00,4906.658,0.007,51.49 -2017-04-04 00:00:00,4524.858,0.035,51.64 -2017-04-04 01:00:00,4298.258,0.0536,49.42 -2017-04-04 02:00:00,4166.867,0.3155,49.01 -2017-04-04 03:00:00,4128.975,0.1263,49.54 -2017-04-04 04:00:00,4138.858,0.0243,49.94 -2017-04-04 05:00:00,4349.117,0.0,50.79 -2017-04-04 06:00:00,4870.958,0.0,51.23 -2017-04-04 07:00:00,5430.142,0.0,50.8 -2017-04-04 08:00:00,5800.633,0.0,49.73 -2017-04-04 09:00:00,6067.517,0.0,50.32 -2017-04-04 10:00:00,6160.808,0.0,48.7 -2017-04-04 11:00:00,6210.742,0.0,48.12 -2017-04-04 12:00:00,6201.6,0.0,47.45 -2017-04-04 13:00:00,6223.625,0.0,50.46 -2017-04-04 14:00:00,6198.675,0.0,51.0 -2017-04-04 15:00:00,6206.608,0.0283,47.87 -2017-04-04 16:00:00,6177.367,0.0,49.31 -2017-04-04 17:00:00,6153.975,0.0,51.13 -2017-04-04 18:00:00,6052.417,0.0,48.56 -2017-04-04 19:00:00,6036.325,0.0,50.18 -2017-04-04 20:00:00,5947.683,0.003,48.43 -2017-04-04 21:00:00,5726.327,0.0,48.06 -2017-04-04 22:00:00,5382.133,0.0,47.5 -2017-04-04 23:00:00,4939.55,0.0,47.04 -2017-04-05 00:00:00,4554.658,0.0,46.8 -2017-04-05 01:00:00,4305.517,0.0,45.96 -2017-04-05 02:00:00,4166.95,0.0,45.96 -2017-04-05 03:00:00,4102.433,0.0,46.02 -2017-04-05 04:00:00,4128.008,0.0,46.03 -2017-04-05 05:00:00,4354.408,0.0,45.81 -2017-04-05 06:00:00,4882.367,0.0,45.06 -2017-04-05 07:00:00,5449.55,0.0,45.64 -2017-04-05 08:00:00,5791.033,0.0,46.78 -2017-04-05 09:00:00,6012.258,0.0,47.67 -2017-04-05 10:00:00,6087.058,0.0,49.41 -2017-04-05 11:00:00,6122.292,0.0,51.92 -2017-04-05 12:00:00,6114.667,0.0,54.56 -2017-04-05 13:00:00,6057.733,0.0,54.37 -2017-04-05 14:00:00,6005.467,0.0,56.59 -2017-04-05 15:00:00,5998.917,0.0,58.52 -2017-04-05 16:00:00,6041.492,0.0,61.77 -2017-04-05 17:00:00,6028.833,0.0,62.12 -2017-04-05 18:00:00,5894.117,0.0,58.96 -2017-04-05 19:00:00,5893.733,0.0,55.24 -2017-04-05 20:00:00,5890.233,0.0,54.12 -2017-04-05 21:00:00,5696.9,0.0,49.77 -2017-04-05 22:00:00,5356.325,0.0,47.51 -2017-04-05 23:00:00,4960.075,0.0,46.75 -2017-04-06 00:00:00,4566.517,0.0,47.13 -2017-04-06 01:00:00,4321.417,0.0,45.85 -2017-04-06 02:00:00,4167.167,0.0,44.7 -2017-04-06 03:00:00,4104.442,0.0,45.27 -2017-04-06 04:00:00,4129.283,0.0057,44.62 -2017-04-06 05:00:00,4352.367,0.0073,44.19 -2017-04-06 06:00:00,4909.633,0.0,43.79 -2017-04-06 07:00:00,5487.258,0.0083,42.66 -2017-04-06 08:00:00,5897.683,0.0,41.73 -2017-04-06 09:00:00,6166.275,0.0,40.59 -2017-04-06 10:00:00,6328.592,0.0,40.69 -2017-04-06 11:00:00,6382.417,0.0,41.47 -2017-04-06 12:00:00,6442.042,0.0,41.72 -2017-04-06 13:00:00,6425.992,0.0,42.07 -2017-04-06 14:00:00,6338.8,0.0,42.37 -2017-04-06 15:00:00,6361.125,0.1427,42.2 -2017-04-06 16:00:00,6459.067,0.4675,42.65 -2017-04-06 17:00:00,6395.308,0.0035,43.33 -2017-04-06 18:00:00,6116.342,0.0,45.24 -2017-04-06 19:00:00,6043.025,0.0,47.05 -2017-04-06 20:00:00,6006.167,0.0,49.36 -2017-04-06 21:00:00,5791.35,0.0,49.36 -2017-04-06 22:00:00,5471.025,0.0,49.99 -2017-04-06 23:00:00,5026.808,0.0,49.94 -2017-04-07 00:00:00,4656.758,0.0,49.17 -2017-04-07 01:00:00,4388.133,0.0,49.18 -2017-04-07 02:00:00,4218.925,0.0,49.8 -2017-04-07 03:00:00,4157.2,0.0,49.39 -2017-04-07 04:00:00,4160.683,0.0,48.18 -2017-04-07 05:00:00,4397.475,0.0,46.16 -2017-04-07 06:00:00,4895.433,0.0,45.88 -2017-04-07 07:00:00,5436.917,0.0,44.56 -2017-04-07 08:00:00,5838.242,0.0,45.29 -2017-04-07 09:00:00,6097.258,0.0,45.51 -2017-04-07 10:00:00,6197.908,0.0,43.65 -2017-04-07 11:00:00,6220.517,0.0,44.55 -2017-04-07 12:00:00,6215.283,0.0033,45.49 -2017-04-07 13:00:00,6173.817,0.0,45.24 -2017-04-07 14:00:00,6125.092,0.0,46.09 -2017-04-07 15:00:00,6151.533,0.0,47.59 -2017-04-07 16:00:00,6163.55,0.0,47.59 -2017-04-07 17:00:00,6147.2,0.0,47.04 -2017-04-07 18:00:00,6018.292,0.0,46.65 -2017-04-07 19:00:00,5974.975,0.0,44.93 -2017-04-07 20:00:00,5904.725,0.0,42.56 -2017-04-07 21:00:00,5736.342,0.0,41.64 -2017-04-07 22:00:00,5480.917,0.0,41.21 -2017-04-07 23:00:00,5134.8,0.0,39.76 -2017-04-08 00:00:00,4785.95,0.0,40.39 -2017-04-08 01:00:00,4542.15,0.0,39.99 -2017-04-08 02:00:00,4382.675,0.0,39.21 -2017-04-08 03:00:00,4287.892,0.0,38.98 -2017-04-08 04:00:00,4249.717,0.0,39.35 -2017-04-08 05:00:00,4300.908,0.0,36.77 -2017-04-08 06:00:00,4460.308,0.0,40.77 -2017-04-08 07:00:00,4667.05,0.0,39.11 -2017-04-08 08:00:00,4929.183,0.0,39.55 -2017-04-08 09:00:00,5139.692,0.0,41.82 -2017-04-08 10:00:00,5281.175,0.0,43.87 -2017-04-08 11:00:00,5347.0,0.0,46.08 -2017-04-08 12:00:00,5345.667,0.0,48.98 -2017-04-08 13:00:00,5305.875,0.0,50.69 -2017-04-08 14:00:00,5229.042,0.0,53.01 -2017-04-08 15:00:00,5188.308,0.0,54.26 -2017-04-08 16:00:00,5155.158,0.0,55.91 -2017-04-08 17:00:00,5158.883,0.0,56.11 -2017-04-08 18:00:00,5182.908,0.0,55.59 -2017-04-08 19:00:00,5266.708,0.0,53.8 -2017-04-08 20:00:00,5366.225,0.0,52.19 -2017-04-08 21:00:00,5287.608,0.0,49.7 -2017-04-08 22:00:00,5126.208,0.0,49.5 -2017-04-08 23:00:00,4863.75,0.0,48.32 -2017-04-09 00:00:00,4601.2,0.0,46.82 -2017-04-09 01:00:00,4374.558,0.0,44.92 -2017-04-09 02:00:00,4217.183,0.0,42.46 -2017-04-09 03:00:00,4114.225,0.0,42.58 -2017-04-09 04:00:00,4063.667,0.0,41.43 -2017-04-09 05:00:00,4092.167,0.0,41.9 -2017-04-09 06:00:00,4191.992,0.0,41.29 -2017-04-09 07:00:00,4328.358,0.0,42.08 -2017-04-09 08:00:00,4539.108,0.0,45.55 -2017-04-09 09:00:00,4747.308,0.0,51.74 -2017-04-09 10:00:00,4900.3,0.0,54.2 -2017-04-09 11:00:00,4991.367,0.0,57.39 -2017-04-09 12:00:00,5015.35,0.0,61.2 -2017-04-09 13:00:00,5008.425,0.0,61.48 -2017-04-09 14:00:00,5013.2,0.0,63.72 -2017-04-09 15:00:00,4995.1,0.0,65.81 -2017-04-09 16:00:00,5008.458,0.0,63.72 -2017-04-09 17:00:00,5030.725,0.0,62.46 -2017-04-09 18:00:00,5075.308,0.0,59.59 -2017-04-09 19:00:00,5200.575,0.0,55.6 -2017-04-09 20:00:00,5337.825,0.0,52.31 -2017-04-09 21:00:00,5253.092,0.0,50.75 -2017-04-09 22:00:00,5041.783,0.0,52.23 -2017-04-09 23:00:00,4729.192,0.0,53.1 -2017-04-10 00:00:00,4431.433,0.0,51.61 -2017-04-10 01:00:00,4224.175,0.0,52.57 -2017-04-10 02:00:00,4088.833,0.0,49.66 -2017-04-10 03:00:00,4034.842,0.0,49.88 -2017-04-10 04:00:00,4052.333,0.0,48.93 -2017-04-10 05:00:00,4245.7,0.0,48.81 -2017-04-10 06:00:00,4687.067,0.0,48.16 -2017-04-10 07:00:00,5178.275,0.0,47.75 -2017-04-10 08:00:00,5562.45,0.0,52.68 -2017-04-10 09:00:00,5829.975,0.0,58.67 -2017-04-10 10:00:00,5931.867,0.0,62.07 -2017-04-10 11:00:00,6020.783,0.0,65.44 -2017-04-10 12:00:00,6057.442,0.0,69.38 -2017-04-10 13:00:00,6083.525,0.0,72.24 -2017-04-10 14:00:00,6083.542,0.0,73.43 -2017-04-10 15:00:00,6092.3,0.0,74.44 -2017-04-10 16:00:00,6127.1,0.0,74.14 -2017-04-10 17:00:00,6099.425,0.0,72.2 -2017-04-10 18:00:00,5917.3,0.0,69.03 -2017-04-10 19:00:00,5824.825,0.0,66.84 -2017-04-10 20:00:00,5824.108,0.0,62.77 -2017-04-10 21:00:00,5632.192,0.0,62.4 -2017-04-10 22:00:00,5327.783,0.0,62.29 -2017-04-10 23:00:00,4929.317,0.0,61.11 -2017-04-11 00:00:00,4556.967,0.0,58.81 -2017-04-11 01:00:00,4308.975,0.0,59.41 -2017-04-11 02:00:00,4153.983,0.0,57.67 -2017-04-11 03:00:00,4081.908,0.0,56.46 -2017-04-11 04:00:00,4080.983,0.0,55.39 -2017-04-11 05:00:00,4254.708,0.0,55.14 -2017-04-11 06:00:00,4685.283,0.0,54.67 -2017-04-11 07:00:00,5190.158,0.0,57.16 -2017-04-11 08:00:00,5611.992,0.0,60.53 -2017-04-11 09:00:00,5887.55,0.0,65.28 -2017-04-11 10:00:00,6013.317,0.0,70.13 -2017-04-11 11:00:00,6117.767,0.0,72.68 -2017-04-11 12:00:00,6218.667,0.0,76.88 -2017-04-11 13:00:00,6296.133,0.0,78.56 -2017-04-11 14:00:00,6299.617,0.0,79.84 -2017-04-11 15:00:00,6318.083,0.0,78.91 -2017-04-11 16:00:00,6344.542,0.0,74.9 -2017-04-11 17:00:00,6308.892,0.0,74.62 -2017-04-11 18:00:00,6049.667,0.0,70.41 -2017-04-11 19:00:00,5944.9,0.0,66.18 -2017-04-11 20:00:00,5903.475,0.0,61.58 -2017-04-11 21:00:00,5700.775,0.0,61.94 -2017-04-11 22:00:00,5391.9,0.0,60.61 -2017-04-11 23:00:00,4998.183,0.0,59.64 -2017-04-12 00:00:00,4638.375,0.0,58.67 -2017-04-12 01:00:00,4401.358,0.0,58.97 -2017-04-12 02:00:00,4226.375,0.0,58.49 -2017-04-12 03:00:00,4135.733,0.0,57.23 -2017-04-12 04:00:00,4130.517,0.0,55.95 -2017-04-12 05:00:00,4302.583,0.0,55.95 -2017-04-12 06:00:00,4727.45,0.0,55.77 -2017-04-12 07:00:00,5230.158,0.0,58.58 -2017-04-12 08:00:00,5700.992,0.0,61.21 -2017-04-12 09:00:00,6006.708,0.0,65.71 -2017-04-12 10:00:00,6156.725,0.0,70.34 -2017-04-12 11:00:00,6257.2,0.0304,67.43 -2017-04-12 12:00:00,6285.167,0.0,66.82 -2017-04-12 13:00:00,6277.375,0.003,65.23 -2017-04-12 14:00:00,6250.517,0.0,67.14 -2017-04-12 15:00:00,6272.233,0.0,70.62 -2017-04-12 16:00:00,6296.775,0.0,73.5 -2017-04-12 17:00:00,6309.1,0.0,71.83 -2017-04-12 18:00:00,6108.858,0.0,69.22 -2017-04-12 19:00:00,5977.892,0.0,66.46 -2017-04-12 20:00:00,5934.3,0.0,64.08 -2017-04-12 21:00:00,5731.842,0.0,57.9 -2017-04-12 22:00:00,5395.592,0.0,58.64 -2017-04-12 23:00:00,4992.525,0.0,57.72 -2017-04-13 00:00:00,4590.9,0.0,54.61 -2017-04-13 01:00:00,4295.608,0.0,54.61 -2017-04-13 02:00:00,4123.2,0.0,53.04 -2017-04-13 03:00:00,4027.375,0.0,49.01 -2017-04-13 04:00:00,4025.55,0.0,47.4 -2017-04-13 05:00:00,4189.625,0.0,46.37 -2017-04-13 06:00:00,4591.292,0.0,46.86 -2017-04-13 07:00:00,5077.025,0.0,49.52 -2017-04-13 08:00:00,5501.525,0.0,51.26 -2017-04-13 09:00:00,5729.025,0.0,53.8 -2017-04-13 10:00:00,5848.783,0.0,55.36 -2017-04-13 11:00:00,5868.617,0.0,58.45 -2017-04-13 12:00:00,5880.692,0.0,59.94 -2017-04-13 13:00:00,5879.658,0.0,62.31 -2017-04-13 14:00:00,5876.867,0.0,63.19 -2017-04-13 15:00:00,5894.808,0.0,64.99 -2017-04-13 16:00:00,5924.383,0.0,64.62 -2017-04-13 17:00:00,5903.2,0.0,63.39 -2017-04-13 18:00:00,5752.625,0.0,60.23 -2017-04-13 19:00:00,5661.8,0.0,57.97 -2017-04-13 20:00:00,5631.75,0.0,55.87 -2017-04-13 21:00:00,5455.258,0.0,54.62 -2017-04-13 22:00:00,5183.675,0.0,54.0 -2017-04-13 23:00:00,4819.967,0.0,52.07 -2017-04-14 00:00:00,4469.092,0.0,49.47 -2017-04-14 01:00:00,4223.567,0.0,49.71 -2017-04-14 02:00:00,4060.217,0.0,47.57 -2017-04-14 03:00:00,3989.325,0.0,47.3 -2017-04-14 04:00:00,3982.075,0.0,45.13 -2017-04-14 05:00:00,4133.367,0.0,44.5 -2017-04-14 06:00:00,4493.567,0.0,46.23 -2017-04-14 07:00:00,4920.625,0.0,49.58 -2017-04-14 08:00:00,5285.9,0.0,51.59 -2017-04-14 09:00:00,5536.492,0.0,53.78 -2017-04-14 10:00:00,5618.033,0.0,56.89 -2017-04-14 11:00:00,5658.342,0.0,61.13 -2017-04-14 12:00:00,5704.8,0.0,65.41 -2017-04-14 13:00:00,5677.392,0.0,65.4 -2017-04-14 14:00:00,5665.8,0.0,66.25 -2017-04-14 15:00:00,5650.642,0.0,65.38 -2017-04-14 16:00:00,5677.567,0.0,65.42 -2017-04-14 17:00:00,5647.458,0.0,62.58 -2017-04-14 18:00:00,5514.283,0.0,58.38 -2017-04-14 19:00:00,5445.392,0.0,55.27 -2017-04-14 20:00:00,5440.783,0.0,52.23 -2017-04-14 21:00:00,5289.958,0.0,50.7 -2017-04-14 22:00:00,5070.917,0.0,50.62 -2017-04-14 23:00:00,4759.792,0.0,50.7 -2017-04-15 00:00:00,4453.517,0.0,48.53 -2017-04-15 01:00:00,4227.417,0.0,48.36 -2017-04-15 02:00:00,4076.425,0.0,48.11 -2017-04-15 03:00:00,3988.342,0.0,45.64 -2017-04-15 04:00:00,3961.85,0.0,47.29 -2017-04-15 05:00:00,3991.408,0.0,46.53 -2017-04-15 06:00:00,4110.008,0.0,46.16 -2017-04-15 07:00:00,4306.0,0.0,50.67 -2017-04-15 08:00:00,4550.467,0.0,53.77 -2017-04-15 09:00:00,4784.842,0.0,58.17 -2017-04-15 10:00:00,4950.058,0.0,60.09 -2017-04-15 11:00:00,5046.008,0.0,60.5 -2017-04-15 12:00:00,5079.175,0.0,60.72 -2017-04-15 13:00:00,5059.633,0.0,60.11 -2017-04-15 14:00:00,5026.825,0.0,61.36 -2017-04-15 15:00:00,5015.575,0.0,61.64 -2017-04-15 16:00:00,5014.283,0.0,64.71 -2017-04-15 17:00:00,5054.258,0.0,61.01 -2017-04-15 18:00:00,5098.118,0.0,60.01 -2017-04-15 19:00:00,5172.575,0.0,58.58 -2017-04-15 20:00:00,5194.408,0.0,55.52 -2017-04-15 21:00:00,5092.15,0.0,58.42 -2017-04-15 22:00:00,4936.025,0.0,58.46 -2017-04-15 23:00:00,4704.617,0.0,57.03 -2017-04-16 00:00:00,4442.392,0.0,57.49 -2017-04-16 01:00:00,4223.942,0.0,57.91 -2017-04-16 02:00:00,4073.467,0.0,58.28 -2017-04-16 03:00:00,3967.342,0.0,57.48 -2017-04-16 04:00:00,3922.742,0.0,58.55 -2017-04-16 05:00:00,3950.383,0.0,57.76 -2017-04-16 06:00:00,4014.108,0.0,59.73 -2017-04-16 07:00:00,4172.717,0.0,62.69 -2017-04-16 08:00:00,4419.675,0.0,66.0 -2017-04-16 09:00:00,4681.667,0.0,69.93 -2017-04-16 10:00:00,4915.517,0.0,75.68 -2017-04-16 11:00:00,5114.375,0.0,81.07 -2017-04-16 12:00:00,5232.875,0.0,83.27 -2017-04-16 13:00:00,5308.142,0.0,85.15 -2017-04-16 14:00:00,5358.2,0.0,86.22 -2017-04-16 15:00:00,5382.092,0.0,85.64 -2017-04-16 16:00:00,5387.483,0.0,84.57 -2017-04-16 17:00:00,5379.667,0.0,81.69 -2017-04-16 18:00:00,5436.1,0.0,74.01 -2017-04-16 19:00:00,5477.558,0.0,75.84 -2017-04-16 20:00:00,5581.3,0.0,72.96 -2017-04-16 21:00:00,5519.067,0.0,72.96 -2017-04-16 22:00:00,5281.842,0.0237,71.18 -2017-04-16 23:00:00,4997.009,0.0,64.64 -2017-04-17 00:00:00,4696.6,0.0,66.5 -2017-04-17 01:00:00,4480.225,0.0,66.75 -2017-04-17 02:00:00,4338.658,0.0,65.63 -2017-04-17 03:00:00,4263.125,0.0,63.85 -2017-04-17 04:00:00,4276.917,0.0,63.52 -2017-04-17 05:00:00,4473.217,0.0,62.57 -2017-04-17 06:00:00,4885.583,0.0,63.7 -2017-04-17 07:00:00,5433.733,0.0,66.02 -2017-04-17 08:00:00,5885.792,0.0,66.3 -2017-04-17 09:00:00,6108.417,0.0,69.34 -2017-04-17 10:00:00,6165.442,0.0,68.02 -2017-04-17 11:00:00,6203.033,0.0,70.35 -2017-04-17 12:00:00,6234.083,0.0,73.65 -2017-04-17 13:00:00,6242.217,0.0,73.22 -2017-04-17 14:00:00,6234.925,0.0,72.6 -2017-04-17 15:00:00,6237.325,0.0,72.2 -2017-04-17 16:00:00,6263.958,0.0,73.5 -2017-04-17 17:00:00,6214.708,0.0,70.86 -2017-04-17 18:00:00,6030.192,0.0,66.53 -2017-04-17 19:00:00,5892.342,0.0,64.35 -2017-04-17 20:00:00,5832.108,0.0,60.6 -2017-04-17 21:00:00,5623.092,0.0,59.83 -2017-04-17 22:00:00,5324.617,0.0,59.21 -2017-04-17 23:00:00,4911.692,0.0,57.77 -2017-04-18 00:00:00,4501.333,0.0,55.62 -2017-04-18 01:00:00,4249.75,0.0,54.99 -2017-04-18 02:00:00,4088.975,0.0,53.11 -2017-04-18 03:00:00,4008.85,0.0,51.97 -2017-04-18 04:00:00,4014.858,0.0,50.83 -2017-04-18 05:00:00,4198.083,0.0,50.49 -2017-04-18 06:00:00,4606.433,0.0,49.71 -2017-04-18 07:00:00,5095.233,0.0,52.78 -2017-04-18 08:00:00,5513.883,0.0,54.58 -2017-04-18 09:00:00,5744.808,0.0,56.95 -2017-04-18 10:00:00,5838.95,0.0,59.68 -2017-04-18 11:00:00,5896.358,0.0,62.42 -2017-04-18 12:00:00,5938.008,0.0,65.43 -2017-04-18 13:00:00,5971.217,0.0,65.84 -2017-04-18 14:00:00,5970.767,0.0,66.39 -2017-04-18 15:00:00,5972.783,0.0,65.5 -2017-04-18 16:00:00,5969.808,0.0,61.13 -2017-04-18 17:00:00,5929.283,0.0,58.78 -2017-04-18 18:00:00,5771.55,0.0,55.12 -2017-04-18 19:00:00,5687.958,0.0,51.58 -2017-04-18 20:00:00,5727.775,0.0,49.16 -2017-04-18 21:00:00,5557.133,0.0,49.73 -2017-04-18 22:00:00,5236.275,0.0,49.05 -2017-04-18 23:00:00,4821.483,0.0,48.48 -2017-04-19 00:00:00,4446.183,0.0,48.61 -2017-04-19 01:00:00,4188.733,0.0,47.77 -2017-04-19 02:00:00,4040.917,0.0,47.04 -2017-04-19 03:00:00,3967.975,0.0,46.34 -2017-04-19 04:00:00,3981.758,0.0,45.9 -2017-04-19 05:00:00,4173.975,0.0,46.35 -2017-04-19 06:00:00,4669.783,0.0,46.27 -2017-04-19 07:00:00,5207.625,0.0,47.6 -2017-04-19 08:00:00,5590.108,0.0,48.89 -2017-04-19 09:00:00,5844.492,0.0,50.36 -2017-04-19 10:00:00,5927.4,0.0,51.47 -2017-04-19 11:00:00,5947.017,0.0,52.46 -2017-04-19 12:00:00,5952.808,0.0,54.15 -2017-04-19 13:00:00,5953.5,0.0,54.52 -2017-04-19 14:00:00,5925.708,0.0,56.49 -2017-04-19 15:00:00,5953.117,0.0,53.88 -2017-04-19 16:00:00,6061.042,0.0,53.31 -2017-04-19 17:00:00,6108.508,0.0,50.91 -2017-04-19 18:00:00,6004.267,0.0,49.26 -2017-04-19 19:00:00,5911.717,0.0,49.27 -2017-04-19 20:00:00,5828.675,0.0,49.58 -2017-04-19 21:00:00,5626.133,0.0,49.24 -2017-04-19 22:00:00,5292.325,0.0,49.64 -2017-04-19 23:00:00,4867.267,0.0,50.27 -2017-04-20 00:00:00,4479.642,0.0,50.12 -2017-04-20 01:00:00,4226.392,0.0,50.55 -2017-04-20 02:00:00,4081.892,0.0,50.94 -2017-04-20 03:00:00,4009.608,0.003,50.74 -2017-04-20 04:00:00,4021.75,0.0,51.6 -2017-04-20 05:00:00,4221.425,0.0,50.57 -2017-04-20 06:00:00,4726.083,0.003,50.88 -2017-04-20 07:00:00,5325.683,0.0439,51.58 -2017-04-20 08:00:00,5733.233,0.003,52.96 -2017-04-20 09:00:00,5952.092,0.0,52.81 -2017-04-20 10:00:00,6033.517,0.0,54.49 -2017-04-20 11:00:00,6044.858,0.0,58.92 -2017-04-20 12:00:00,6038.392,0.0,61.12 -2017-04-20 13:00:00,6038.625,0.0,63.92 -2017-04-20 14:00:00,6044.417,0.0,65.16 -2017-04-20 15:00:00,6057.8,0.0,67.44 -2017-04-20 16:00:00,6108.158,0.0,65.82 -2017-04-20 17:00:00,6096.692,0.0,64.23 -2017-04-20 18:00:00,5923.667,0.0,62.7 -2017-04-20 19:00:00,5827.458,0.0,60.17 -2017-04-20 20:00:00,5768.667,0.0,54.89 -2017-04-20 21:00:00,5561.092,0.002,56.37 -2017-04-20 22:00:00,5243.983,0.0,54.82 -2017-04-20 23:00:00,4856.792,0.0,53.71 -2017-04-21 00:00:00,4461.025,0.0,54.2 -2017-04-21 01:00:00,4215.533,0.0905,53.11 -2017-04-21 02:00:00,4085.833,0.0,51.54 -2017-04-21 03:00:00,4011.283,0.0,50.59 -2017-04-21 04:00:00,4015.767,0.0,50.52 -2017-04-21 05:00:00,4203.875,0.0,50.17 -2017-04-21 06:00:00,4687.358,0.0324,50.35 -2017-04-21 07:00:00,5265.208,0.0085,50.5 -2017-04-21 08:00:00,5638.458,0.0085,51.17 -2017-04-21 09:00:00,5898.05,0.0,50.89 -2017-04-21 10:00:00,6019.475,0.0,52.06 -2017-04-21 11:00:00,6065.267,0.0,53.04 -2017-04-21 12:00:00,6048.708,0.0,53.74 -2017-04-21 13:00:00,6057.225,0.0,54.41 -2017-04-21 14:00:00,6009.417,0.0,55.57 -2017-04-21 15:00:00,6004.367,0.0,56.26 -2017-04-21 16:00:00,5997.45,0.0,55.7 -2017-04-21 17:00:00,5972.667,0.0,55.4 -2017-04-21 18:00:00,5825.108,0.0,53.28 -2017-04-21 19:00:00,5759.925,0.0,52.28 -2017-04-21 20:00:00,5695.658,0.0,51.74 -2017-04-21 21:00:00,5519.492,0.0,51.17 -2017-04-21 22:00:00,5261.992,0.0,51.32 -2017-04-22 00:00:00,4570.083,0.0,50.87 -2017-04-22 01:00:00,4318.967,0.0,50.36 -2017-04-22 02:00:00,4149.383,0.0,50.07 -2017-04-22 03:00:00,4057.783,0.0,49.94 -2017-04-22 04:00:00,4026.4,0.0,50.11 -2017-04-22 05:00:00,4077.258,0.0,50.14 -2017-04-22 06:00:00,4201.1,0.0,51.32 -2017-04-22 07:00:00,4450.133,0.0,51.58 -2017-04-22 08:00:00,4734.658,0.0,53.04 -2017-04-22 09:00:00,5006.433,0.0,53.67 -2017-04-22 10:00:00,5165.933,0.0,53.17 -2017-04-22 11:00:00,5227.875,0.0,54.32 -2017-04-22 12:00:00,5272.383,0.052,56.82 -2017-04-22 13:00:00,5274.3,0.0,56.91 -2017-04-22 14:00:00,5283.442,0.0146,55.89 -2017-04-22 15:00:00,5249.275,0.0062,55.36 -2017-04-22 16:00:00,5250.308,0.0022,54.67 -2017-04-22 17:00:00,5271.517,0.0029,54.51 -2017-04-22 18:00:00,5262.7,0.0,53.19 -2017-04-22 19:00:00,5282.05,0.0,53.37 -2017-04-22 20:00:00,5328.983,0.0,52.38 -2017-04-22 21:00:00,5216.592,0.0,51.89 -2017-04-22 22:00:00,5043.0,0.0,51.41 -2017-04-22 23:00:00,4780.733,0.0,49.53 -2017-04-23 00:00:00,4492.008,0.0,49.22 -2017-04-23 01:00:00,4259.667,0.0,48.81 -2017-04-23 02:00:00,4091.183,0.0,46.75 -2017-04-23 03:00:00,3999.958,0.0,45.06 -2017-04-23 04:00:00,3957.408,0.0,45.14 -2017-04-23 05:00:00,3990.033,0.0,45.96 -2017-04-23 06:00:00,4055.133,0.0,46.67 -2017-04-23 07:00:00,4203.283,0.0,48.35 -2017-04-23 08:00:00,4439.55,0.0,51.24 -2017-04-23 09:00:00,4643.158,0.0,55.82 -2017-04-23 10:00:00,4808.358,0.0,57.6 -2017-04-23 11:00:00,4930.292,0.0,61.02 -2017-04-23 12:00:00,4949.792,0.0,62.92 -2017-04-23 13:00:00,4968.142,0.0,64.95 -2017-04-23 14:00:00,4977.417,0.0,66.9 -2017-04-23 15:00:00,4969.792,0.0,66.27 -2017-04-23 16:00:00,4975.117,0.0,64.11 -2017-04-23 17:00:00,5012.208,0.0,61.48 -2017-04-23 18:00:00,5047.425,0.0,56.39 -2017-04-23 19:00:00,5125.183,0.0,52.8 -2017-04-23 20:00:00,5297.492,0.0,49.4 -2017-04-23 21:00:00,5222.683,0.0,50.19 -2017-04-23 22:00:00,4977.017,0.0,49.6 -2017-04-23 23:00:00,4652.242,0.0,50.02 -2017-04-24 00:00:00,4345.833,0.0,49.01 -2017-04-24 01:00:00,4124.542,0.0,48.3 -2017-04-24 02:00:00,4004.325,0.0,47.68 -2017-04-24 03:00:00,3944.992,0.0,46.95 -2017-04-24 04:00:00,3975.308,0.0,45.34 -2017-04-24 05:00:00,4207.475,0.0,45.72 -2017-04-24 06:00:00,4681.383,0.0,46.14 -2017-04-24 07:00:00,5238.917,0.0,49.46 -2017-04-24 08:00:00,5596.583,0.0,52.85 -2017-04-24 09:00:00,5801.408,0.0,55.56 -2017-04-24 10:00:00,5909.858,0.0,57.91 -2017-04-24 11:00:00,5950.542,0.0,60.79 -2017-04-24 12:00:00,5990.2,0.0,60.28 -2017-04-24 13:00:00,5982.217,0.0024,61.86 -2017-04-24 14:00:00,5962.075,0.0034,59.48 -2017-04-24 15:00:00,5968.55,0.0137,59.01 -2017-04-24 16:00:00,5987.242,0.003,56.67 -2017-04-24 17:00:00,5968.392,0.0,56.06 -2017-04-24 18:00:00,5838.892,0.0,54.71 -2017-04-24 19:00:00,5800.083,0.0064,53.87 -2017-04-24 20:00:00,5769.533,0.002,51.75 -2017-04-24 21:00:00,5559.958,0.0,53.3 -2017-04-24 22:00:00,5232.45,0.0,51.71 -2017-04-24 23:00:00,4804.725,0.008,52.58 -2017-04-25 00:00:00,4437.458,0.0,51.59 -2017-04-25 01:00:00,4204.95,0.0,51.24 -2017-04-25 02:00:00,4067.783,0.003,50.61 -2017-04-25 03:00:00,4000.233,0.0,50.84 -2017-04-25 04:00:00,4023.758,0.003,50.36 -2017-04-25 05:00:00,4237.767,0.002,50.58 -2017-04-25 06:00:00,4729.225,0.0239,50.74 -2017-04-25 07:00:00,5306.825,0.0,50.82 -2017-04-25 08:00:00,5709.75,0.0,51.29 -2017-04-25 09:00:00,5948.5,0.0036,51.61 -2017-04-25 10:00:00,6052.442,0.0,52.3 -2017-04-25 11:00:00,6116.658,0.0,53.42 -2017-04-25 12:00:00,6130.992,0.0,53.04 -2017-04-25 13:00:00,6149.925,0.0,54.73 -2017-04-25 14:00:00,6113.6,0.0,53.87 -2017-04-25 15:00:00,6118.075,0.0123,54.89 -2017-04-25 16:00:00,6160.0,0.012,53.79 -2017-04-25 17:00:00,6179.483,0.0071,52.96 -2017-04-25 18:00:00,6063.692,0.0053,52.92 -2017-04-25 19:00:00,5977.625,0.0172,52.64 -2017-04-25 20:00:00,5906.167,0.2203,52.52 -2017-04-25 21:00:00,5687.375,0.0713,52.9 -2017-04-25 22:00:00,5338.333,0.0105,53.04 -2017-04-25 23:00:00,4898.758,0.0038,52.48 -2017-04-26 00:00:00,4500.167,0.0,53.41 -2017-04-26 01:00:00,4264.883,0.0,53.55 -2017-04-26 02:00:00,4113.792,0.0,53.8 -2017-04-26 03:00:00,4045.15,0.0,53.7 -2017-04-26 04:00:00,4049.967,0.0,53.59 -2017-04-26 05:00:00,4253.808,0.0047,53.47 -2017-04-26 06:00:00,4773.967,0.0057,54.3 -2017-04-26 07:00:00,5359.75,0.0077,54.52 -2017-04-26 08:00:00,5756.825,0.0,55.56 -2017-04-26 09:00:00,5975.608,0.0,56.2 -2017-04-26 10:00:00,6077.158,0.0,57.06 -2017-04-26 11:00:00,6125.618,0.005,58.78 -2017-04-26 12:00:00,6109.983,0.0,59.03 -2017-04-26 13:00:00,6122.417,0.0,59.7 -2017-04-26 14:00:00,6107.717,0.0,59.93 -2017-04-26 15:00:00,6115.292,0.0,60.98 -2017-04-26 18:00:00,6033.067,0.0,59.22 -2017-04-26 19:00:00,5960.75,0.0,58.86 -2017-04-26 20:00:00,5895.233,0.0,58.89 -2017-04-26 21:00:00,5653.333,0.0,58.37 -2017-04-26 22:00:00,5329.917,0.0,57.79 -2017-04-26 23:00:00,4914.725,0.0,58.49 -2017-04-27 00:00:00,4509.875,0.0,57.67 -2017-04-27 01:00:00,4248.592,0.0,57.32 -2017-04-27 02:00:00,4110.45,0.0,57.47 -2017-04-27 03:00:00,4047.092,0.0,57.23 -2017-04-27 04:00:00,4042.65,0.005,57.71 -2017-04-27 05:00:00,4242.767,0.0,57.04 -2017-04-27 06:00:00,4752.867,0.0041,58.27 -2017-04-27 07:00:00,5374.742,0.0,58.79 -2017-04-27 08:00:00,5783.717,0.0,60.27 -2017-04-27 09:00:00,6061.567,0.0,62.32 -2017-04-27 10:00:00,6104.433,0.0,63.1 -2017-04-27 11:00:00,6180.292,0.0,64.81 -2017-04-27 12:00:00,6237.827,0.0,67.97 -2017-04-27 13:00:00,6242.367,0.0,68.68 -2017-04-27 14:00:00,6231.442,0.0,68.31 -2017-04-27 15:00:00,6264.533,0.0,67.52 -2017-04-27 16:00:00,6266.1,0.0,66.94 -2017-04-27 17:00:00,6233.008,0.0,64.03 -2017-04-27 18:00:00,6053.592,0.0,61.26 -2017-04-27 19:00:00,5954.35,0.0,58.34 -2017-04-27 20:00:00,5867.942,0.0,58.63 -2017-04-27 21:00:00,5653.05,0.0,58.15 -2017-04-27 22:00:00,5313.292,0.0,57.32 -2017-04-27 23:00:00,4914.083,0.0,56.59 -2017-04-28 00:00:00,4511.792,0.0,56.9 -2017-04-28 01:00:00,4259.592,0.0,56.79 -2017-04-28 02:00:00,4109.833,0.0,57.0 -2017-04-28 03:00:00,4042.667,0.0044,57.56 -2017-04-28 04:00:00,4062.667,0.0,58.02 -2017-04-28 05:00:00,4253.95,0.0,57.68 -2017-04-28 06:00:00,4749.142,0.0,58.29 -2017-04-28 07:00:00,5330.5,0.0,59.44 -2017-04-28 08:00:00,5770.292,0.0,61.52 -2017-04-28 09:00:00,6084.2,0.0,65.2 -2017-04-28 10:00:00,6260.642,0.0,68.39 -2017-04-28 11:00:00,6424.983,0.0,74.0 -2017-04-28 12:00:00,6544.6,0.0,78.51 -2017-04-28 13:00:00,6638.05,0.0,81.46 -2017-04-28 14:00:00,6674.858,0.0,81.54 -2017-04-28 15:00:00,6732.575,0.0,82.38 -2017-04-28 16:00:00,6776.7,0.0,81.18 -2017-04-28 17:00:00,6711.95,0.0,78.47 -2017-04-28 18:00:00,6432.117,0.0,75.03 -2017-04-28 19:00:00,6219.0,0.0,71.32 -2017-04-28 20:00:00,6127.767,0.0,67.01 -2017-04-28 21:00:00,5936.567,0.0,67.05 -2017-04-28 22:00:00,5646.283,0.0,66.75 -2017-04-28 23:00:00,5275.175,0.0,65.18 -2017-04-29 00:00:00,4894.267,0.0,63.36 -2017-04-29 01:00:00,4633.217,0.0,64.11 -2017-04-29 02:00:00,4452.317,0.002,64.71 -2017-04-29 03:00:00,4350.992,0.002,63.54 -2017-04-29 04:00:00,4294.667,0.0413,64.39 -2017-04-29 05:00:00,4327.142,0.0331,65.2 -2017-04-29 06:00:00,4447.575,0.0,65.26 -2017-04-29 07:00:00,4698.792,0.0,64.92 -2017-04-29 08:00:00,5066.208,0.0,68.52 -2017-04-29 09:00:00,5394.775,0.0,70.44 -2017-04-29 10:00:00,5761.125,0.0,74.0 -2017-04-29 11:00:00,6017.458,0.0,78.16 -2017-04-29 12:00:00,6116.375,0.0,80.12 -2017-04-29 13:00:00,6170.817,0.0,81.73 -2017-04-29 14:00:00,6213.333,0.0,82.24 -2017-04-29 15:00:00,6268.008,0.0,82.46 -2017-04-29 16:00:00,6276.95,0.0,82.63 -2017-04-29 17:00:00,6211.217,0.0,80.78 -2017-04-29 18:00:00,6155.167,0.0,76.7 -2017-04-29 19:00:00,6088.033,0.0,74.84 -2017-04-29 20:00:00,6117.8,0.0,71.26 -2017-04-29 21:00:00,6015.442,0.0,70.74 -2017-04-29 22:00:00,5784.908,0.0,69.06 -2017-04-29 23:00:00,5454.85,0.0,67.33 -2017-04-30 00:00:00,5068.067,0.0,64.56 -2017-04-30 01:00:00,4742.225,0.0,63.82 -2017-04-30 02:00:00,4499.775,0.0,62.32 -2017-04-30 03:00:00,4345.483,0.0,61.2 -2017-04-30 04:00:00,4249.583,0.0,60.06 -2017-04-30 05:00:00,4228.875,0.0,59.28 -2017-04-30 06:00:00,4219.942,0.0,58.51 -2017-04-30 07:00:00,4345.725,0.0,57.35 -2017-04-30 08:00:00,4574.8,0.0,57.71 -2017-04-30 09:00:00,4810.742,0.0,58.65 -2017-04-30 10:00:00,5000.792,0.0,60.52 -2017-04-30 11:00:00,5115.392,0.0,60.03 -2017-04-30 12:00:00,5185.317,0.0,61.08 -2017-04-30 13:00:00,5170.55,0.0,63.6 -2017-04-30 14:00:00,5129.883,0.0,59.73 -2017-04-30 15:00:00,5121.292,0.0,57.96 -2017-04-30 16:00:00,5135.025,0.003,56.38 -2017-04-30 17:00:00,5152.583,0.0,56.72 -2017-04-30 18:00:00,5198.733,0.0,54.63 -2017-04-30 19:00:00,5223.075,0.0,53.83 -2017-04-30 20:00:00,5288.958,0.0,52.71 -2017-04-30 21:00:00,5190.033,0.0,52.52 -2017-04-30 22:00:00,4935.9,0.0,52.78 -2017-04-30 23:00:00,4610.158,0.0,51.94 -2017-05-01 00:00:00,4312.967,0.0,52.58 -2017-05-01 01:00:00,4102.567,0.0,52.27 -2017-05-01 02:00:00,3981.425,0.0,51.37 -2017-05-01 03:00:00,3926.008,0.0,50.83 -2017-05-01 04:00:00,3948.317,0.0,50.97 -2017-05-01 05:00:00,4171.325,0.0,50.39 -2017-05-01 06:00:00,4651.25,0.0,51.07 -2017-05-01 07:00:00,5249.1,0.0,52.19 -2017-05-01 08:00:00,5666.45,0.0,53.25 -2017-05-01 09:00:00,5898.075,0.0,54.46 -2017-05-01 10:00:00,6001.933,0.0,56.24 -2017-05-01 11:00:00,6044.158,0.0,59.48 -2017-05-01 12:00:00,6084.908,0.0,63.29 -2017-05-01 13:00:00,6143.633,0.0,66.65 -2017-05-01 14:00:00,6205.025,0.0,70.05 -2017-05-01 15:00:00,6320.733,0.0,71.4 -2017-05-01 16:00:00,6384.417,0.0,73.05 -2017-05-01 17:00:00,6353.767,0.0,71.14 -2017-05-01 18:00:00,6122.625,0.0,68.02 -2017-05-01 19:00:00,6033.875,0.0,65.61 -2017-05-01 20:00:00,6050.875,0.0,64.33 -2017-05-01 21:00:00,5844.192,0.0,67.41 -2017-05-01 22:00:00,5490.558,0.0,65.85 -2017-05-01 23:00:00,5025.375,0.0,65.32 -2017-05-02 00:00:00,4635.375,0.0,64.61 -2017-05-02 01:00:00,4382.417,0.0,65.13 -2017-05-02 02:00:00,4233.467,0.0,65.85 -2017-05-02 03:00:00,4184.308,0.0,65.2 -2017-05-02 04:00:00,4227.758,0.0,65.61 -2017-05-02 05:00:00,4470.025,0.0,66.56 -2017-05-02 06:00:00,4996.725,0.0,66.56 -2017-05-02 07:00:00,5673.858,0.009,66.0 -2017-05-02 08:00:00,6116.067,0.0,66.72 -2017-05-02 09:00:00,6435.142,0.0,67.85 -2017-05-02 10:00:00,6583.542,0.0,69.09 -2017-05-02 11:00:00,6627.125,0.0,71.43 -2017-05-02 12:00:00,6666.617,0.0,73.41 -2017-05-02 13:00:00,6657.3,0.0,74.16 -2017-05-02 14:00:00,6625.667,0.0,73.43 -2017-05-02 15:00:00,6648.108,0.0,74.4 -2017-05-02 16:00:00,6640.3,0.0,71.8 -2017-05-02 17:00:00,6524.442,0.0,71.85 -2017-05-02 18:00:00,6233.042,0.0,68.66 -2017-05-02 19:00:00,6033.483,0.0,64.85 -2017-05-02 20:00:00,5982.892,0.0,62.59 -2017-05-02 21:00:00,5783.675,0.0,63.23 -2017-05-02 22:00:00,5421.633,0.0,62.1 -2017-05-02 23:00:00,4967.833,0.0,59.82 -2017-05-03 00:00:00,4558.892,0.0,57.5 -2017-05-03 01:00:00,4281.9,0.0,57.78 -2017-05-03 02:00:00,4122.842,0.0,57.64 -2017-05-03 03:00:00,4054.267,0.0,56.06 -2017-05-03 04:00:00,4049.433,0.0,56.43 -2017-05-03 05:00:00,4230.658,0.0,56.28 -2017-05-03 06:00:00,4704.692,0.0,57.79 -2017-05-03 07:00:00,5304.258,0.0,57.5 -2017-05-03 08:00:00,5702.675,0.0,59.64 -2017-05-03 09:00:00,5956.425,0.0,62.35 -2017-05-03 10:00:00,6040.167,0.0,64.23 -2017-05-03 11:00:00,6085.983,0.0,63.18 -2017-05-03 12:00:00,6093.975,0.0,64.01 -2017-05-03 13:00:00,6088.625,0.0,64.79 -2017-05-03 14:00:00,6060.658,0.0,63.85 -2017-05-03 15:00:00,6105.892,0.0,65.12 -2017-05-03 16:00:00,6144.217,0.0,65.3 -2017-05-03 17:00:00,6089.975,0.0,64.39 -2017-05-03 18:00:00,5878.275,0.0,60.31 -2017-05-03 19:00:00,5726.008,0.0,56.13 -2017-05-03 20:00:00,5703.617,0.0,54.82 -2017-05-03 21:00:00,5536.992,0.0,54.69 -2017-05-03 22:00:00,5204.45,0.0,53.42 -2017-05-03 23:00:00,4786.208,0.0,52.71 -2017-05-04 00:00:00,4392.883,0.0,50.51 -2017-05-04 01:00:00,4145.425,0.0,49.71 -2017-05-04 02:00:00,3993.908,0.0,49.13 -2017-05-04 03:00:00,3933.35,0.0,47.88 -2017-05-04 04:00:00,3942.833,0.0,46.49 -2017-05-04 05:00:00,4124.683,0.0,47.53 -2017-05-04 06:00:00,4591.8,0.0,48.3 -2017-05-04 07:00:00,5151.692,0.0,52.67 -2017-05-04 08:00:00,5539.708,0.0,55.2 -2017-05-04 09:00:00,5778.967,0.0,59.22 -2017-05-04 10:00:00,5879.133,0.0,60.94 -2017-05-04 11:00:00,5925.992,0.0,63.72 -2017-05-04 12:00:00,5941.317,0.0,65.1 -2017-05-04 13:00:00,5938.558,0.0,63.88 -2017-05-04 14:00:00,5905.808,0.0,62.03 -2017-05-04 15:00:00,5934.1,0.0,59.98 -2017-05-04 16:00:00,5961.483,0.0,59.0 -2017-05-04 17:00:00,5921.358,0.0,56.83 -2017-05-04 18:00:00,5787.892,0.0,54.41 -2017-05-04 19:00:00,5726.317,0.0,52.72 -2017-05-04 20:00:00,5700.792,0.0,52.82 -2017-05-04 21:00:00,5505.592,0.0,53.42 -2017-05-04 22:00:00,5168.233,0.0,52.85 -2017-05-04 23:00:00,4765.092,0.003,52.71 -2017-05-05 00:00:00,4391.1,0.0,52.62 -2017-05-05 01:00:00,4152.575,0.003,52.54 -2017-05-05 02:00:00,4006.708,0.004,52.25 -2017-05-05 03:00:00,3942.092,0.0,52.09 -2017-05-05 04:00:00,3952.983,0.0,51.87 -2017-05-05 05:00:00,4135.725,0.0,52.04 -2017-05-05 06:00:00,4615.558,0.018,52.18 -2017-05-05 07:00:00,5192.458,0.042,53.45 -2017-05-05 08:00:00,5604.3,0.0045,53.06 -2017-05-05 09:00:00,5886.908,0.0361,53.07 -2017-05-05 10:00:00,6044.25,0.002,54.93 -2017-05-05 11:00:00,6193.367,0.3318,55.09 -2017-05-05 12:00:00,6251.225,0.1957,55.49 -2017-05-05 13:00:00,6259.117,0.5046,55.65 -2017-05-05 14:00:00,6210.008,0.0817,56.04 -2017-05-05 15:00:00,6144.117,0.0,55.26 -2017-05-05 16:00:00,6169.433,0.0,59.19 -2017-05-05 17:00:00,6117.675,0.0,60.72 -2017-05-05 18:00:00,5954.675,0.0,59.42 -2017-05-05 19:00:00,5862.158,0.0,58.07 -2017-05-05 20:00:00,5746.758,0.0,63.11 -2017-05-05 21:00:00,5570.583,0.0,59.57 -2017-05-05 22:00:00,5281.125,0.0,59.68 -2017-05-05 23:00:00,4922.45,0.0,59.91 -2017-05-06 00:00:00,4568.333,0.0,60.3 -2017-05-06 01:00:00,4326.3,0.022,60.49 -2017-05-06 02:00:00,4175.792,0.0075,59.4 -2017-05-06 03:00:00,4096.483,0.0,59.23 -2017-05-06 04:00:00,4060.433,0.0,60.47 -2017-05-06 05:00:00,4081.375,0.0,60.76 -2017-05-06 06:00:00,4198.708,0.0,59.36 -2017-05-06 07:00:00,4463.225,0.0,58.81 -2017-05-06 08:00:00,4766.1,0.0,59.08 -2017-05-06 09:00:00,4998.117,0.0,61.28 -2017-05-06 10:00:00,5131.733,0.0,63.46 -2017-05-06 11:00:00,5264.883,0.0,62.5 -2017-05-06 12:00:00,5312.208,0.0,65.4 -2017-05-06 13:00:00,5285.525,0.0,62.58 -2017-05-06 14:00:00,5254.483,0.0,63.38 -2017-05-06 15:00:00,5232.417,0.0,62.67 -2017-05-06 16:00:00,5210.125,0.0,60.25 -2017-05-06 17:00:00,5233.858,0.0,59.66 -2017-05-06 18:00:00,5223.858,0.0018,59.44 -2017-05-06 19:00:00,5233.842,0.003,60.1 -2017-05-06 20:00:00,5312.536,0.0,58.65 -2017-05-06 21:00:00,5208.058,0.006,56.11 -2017-05-06 22:00:00,5012.367,0.0,54.35 -2017-05-06 23:00:00,4757.917,0.0,53.7 -2017-05-07 00:00:00,4459.775,0.0,53.8 -2017-05-07 01:00:00,4209.758,0.0,52.77 -2017-05-07 02:00:00,4045.558,0.0,51.71 -2017-05-07 03:00:00,3949.025,0.0,51.87 -2017-05-07 04:00:00,3896.242,0.0,51.6 -2017-05-07 05:00:00,3911.025,0.0,51.69 -2017-05-07 06:00:00,3985.492,0.0,52.02 -2017-05-07 07:00:00,4152.95,0.0,51.67 -2017-05-07 08:00:00,4388.342,0.0,52.57 -2017-05-07 09:00:00,4648.383,0.0,54.6 -2017-05-07 10:00:00,4858.45,0.0,56.15 -2017-05-07 11:00:00,5000.4,0.0,55.85 -2017-05-07 12:00:00,5029.942,0.0,55.27 -2017-05-07 13:00:00,5006.417,0.0032,54.02 -2017-05-07 14:00:00,5012.583,0.0194,55.4 -2017-05-07 15:00:00,5047.642,0.0048,54.07 -2017-05-07 16:00:00,5065.733,0.0105,54.57 -2017-05-07 17:00:00,5085.35,0.0038,51.74 -2017-05-07 18:00:00,5093.408,0.0,50.42 -2017-05-07 19:00:00,5157.975,0.0,50.71 -2017-05-07 20:00:00,5270.475,0.0,51.04 -2017-05-07 21:00:00,5185.6,0.0,48.89 -2017-05-07 22:00:00,4953.033,0.0,48.68 -2017-05-07 23:00:00,4626.025,0.0,47.65 -2017-05-08 00:00:00,4323.8,0.0,48.19 -2017-05-08 01:00:00,4114.2,0.0,47.22 -2017-05-08 02:00:00,3989.592,0.0,45.63 -2017-05-08 03:00:00,3929.808,0.0,45.04 -2017-05-08 04:00:00,3958.0,0.0,44.97 -2017-05-08 05:00:00,4173.117,0.0,45.45 -2017-05-08 06:00:00,4630.942,0.0,45.51 -2017-05-08 07:00:00,5187.842,0.0,47.3 -2017-05-08 08:00:00,5559.983,0.0,49.66 -2017-05-08 09:00:00,5797.458,0.0,51.52 -2017-05-08 10:00:00,5892.933,0.0,53.41 -2017-05-08 11:00:00,5937.858,0.0,55.89 -2017-05-08 12:00:00,5935.658,0.0,56.01 -2017-05-08 13:00:00,5932.842,0.0,56.82 -2017-05-08 14:00:00,5908.208,0.0,58.11 -2017-05-08 15:00:00,5929.925,0.0,59.09 -2017-05-08 16:00:00,5957.717,0.0,58.12 -2017-05-08 17:00:00,5927.133,0.0,57.62 -2017-05-08 18:00:00,5777.575,0.0,56.27 -2017-05-08 19:00:00,5675.575,0.0,55.81 -2017-05-08 20:00:00,5702.375,0.0,54.62 -2017-05-08 21:00:00,5569.117,0.0,53.49 -2017-05-08 22:00:00,5240.725,0.0,51.16 -2017-05-08 23:00:00,4811.392,0.0,52.31 -2017-05-09 00:00:00,4429.333,0.0,51.34 -2017-05-09 01:00:00,4187.025,0.0,50.66 -2017-05-09 02:00:00,4050.392,0.0,47.97 -2017-05-09 03:00:00,3977.1,0.0,47.25 -2017-05-09 04:00:00,4000.258,0.0,45.9 -2017-05-09 05:00:00,4203.0,0.0,45.66 -2017-05-09 06:00:00,4673.967,0.0,46.93 -2017-05-09 07:00:00,5248.15,0.0,48.92 -2017-05-09 08:00:00,5585.167,0.0,51.53 -2017-05-09 09:00:00,5753.008,0.0,54.11 -2017-05-09 10:00:00,5860.817,0.0,57.18 -2017-05-09 11:00:00,5920.25,0.0,58.16 -2017-05-09 12:00:00,5950.717,0.0,59.97 -2017-05-09 13:00:00,5943.433,0.0,60.07 -2017-05-09 14:00:00,5925.683,0.0,60.74 -2017-05-09 15:00:00,5955.525,0.0,62.59 -2017-05-09 16:00:00,5976.925,0.0,59.8 -2017-05-09 17:00:00,5968.9,0.0,60.02 -2017-05-09 18:00:00,5840.375,0.0,57.79 -2017-05-09 19:00:00,5716.092,0.0,55.25 -2017-05-09 20:00:00,5735.283,0.0,51.73 -2017-05-09 21:00:00,5586.883,0.0,52.64 -2017-05-09 22:00:00,5247.167,0.0,51.61 -2017-05-09 23:00:00,4844.225,0.0,52.15 -2017-05-10 00:00:00,4442.608,0.009,51.46 -2017-05-10 01:00:00,4204.183,0.0,51.05 -2017-05-10 02:00:00,4049.517,0.0,50.88 -2017-05-10 03:00:00,3992.483,0.0,49.01 -2017-05-10 04:00:00,3998.6,0.0,49.45 -2017-05-10 05:00:00,4174.083,0.0,48.44 -2017-05-10 06:00:00,4649.667,0.0,49.46 -2017-05-10 07:00:00,5238.2,0.0,51.08 -2017-05-10 08:00:00,5588.7,0.0,53.03 -2017-05-10 09:00:00,5801.942,0.0,54.71 -2017-05-10 10:00:00,5884.109,0.0,58.8 -2017-05-10 11:00:00,5935.146,0.0,61.62 -2017-05-10 12:00:00,5950.718,0.0,61.03 -2017-05-10 13:00:00,5957.136,0.0,62.15 -2017-05-10 14:00:00,5925.754,0.0,62.15 -2017-05-10 15:00:00,5958.558,0.0,64.22 -2017-05-10 16:00:00,5966.492,0.0,63.13 -2017-05-10 17:00:00,5940.542,0.0,61.28 -2017-05-10 18:00:00,5774.675,0.0,58.36 -2017-05-10 19:00:00,5655.967,0.0,55.38 -2017-05-10 20:00:00,5659.35,0.0,54.46 -2017-05-10 21:00:00,5514.45,0.0,52.51 -2017-05-10 22:00:00,5214.192,0.0,51.88 -2017-05-10 23:00:00,4793.675,0.0,51.51 -2017-05-11 00:00:00,4412.025,0.003,51.43 -2017-05-11 01:00:00,4165.467,0.0,50.73 -2017-05-11 02:00:00,4022.983,0.0,50.35 -2017-05-11 03:00:00,3962.092,0.0,47.73 -2017-05-11 04:00:00,3970.483,0.0,47.55 -2017-05-11 05:00:00,4161.992,0.0,47.32 -2017-05-11 06:00:00,4596.4,0.0,48.45 -2017-05-11 07:00:00,5152.258,0.0,51.0 -2017-05-11 08:00:00,5539.408,0.0,54.63 -2017-05-11 09:00:00,5750.133,0.0,57.97 -2017-05-11 10:00:00,5827.475,0.0,58.82 -2017-05-11 11:00:00,5871.892,0.0,60.96 -2017-05-11 12:00:00,5912.817,0.0,61.82 -2017-05-11 13:00:00,5918.392,0.0,62.24 -2017-05-11 14:00:00,5901.333,0.0,63.51 -2017-05-11 15:00:00,5920.167,0.0,62.36 -2017-05-11 16:00:00,5954.742,0.0,61.01 -2017-05-11 17:00:00,5899.892,0.0,59.43 -2017-05-11 18:00:00,5746.15,0.0,57.59 -2017-05-11 19:00:00,5632.108,0.0,56.0 -2017-05-11 20:00:00,5645.25,0.0,51.99 -2017-05-11 21:00:00,5527.6,0.0,53.22 -2017-05-11 22:00:00,5213.417,0.0,51.46 -2017-05-11 23:00:00,4832.758,0.0,51.13 -2017-05-12 00:00:00,4455.217,0.0,50.89 -2017-05-12 01:00:00,4206.325,0.0,50.44 -2017-05-12 02:00:00,4052.575,0.0,48.73 -2017-05-12 03:00:00,3983.533,0.0,48.57 -2017-05-12 04:00:00,3991.55,0.0,48.03 -2017-05-12 05:00:00,4173.308,0.0,47.9 -2017-05-12 06:00:00,4625.85,0.0,49.11 -2017-05-12 07:00:00,5186.725,0.0,51.44 -2017-05-12 08:00:00,5545.675,0.0,54.28 -2017-05-12 09:00:00,5802.775,0.0,59.75 -2017-05-12 10:00:00,5902.675,0.0,59.16 -2017-05-12 11:00:00,5937.525,0.0,59.37 -2017-05-12 12:00:00,5946.95,0.0,61.92 -2017-05-12 13:00:00,5921.292,0.0,61.51 -2017-05-12 14:00:00,5900.458,0.0,63.99 -2017-05-12 15:00:00,5896.633,0.0,61.66 -2017-05-12 16:00:00,5891.117,0.0,58.64 -2017-05-12 17:00:00,5839.217,0.0,57.72 -2017-05-12 18:00:00,5692.3,0.0,56.03 -2017-05-12 19:00:00,5604.817,0.0,54.2 -2017-05-12 20:00:00,5584.775,0.0,53.42 -2017-05-12 21:00:00,5449.117,0.0,52.66 -2017-05-12 22:00:00,5182.667,0.0,53.07 -2017-05-12 23:00:00,4852.208,0.0,52.85 -2017-05-13 00:00:00,4502.558,0.0,52.89 -2017-05-13 01:00:00,4265.633,0.0,52.79 -2017-05-13 02:00:00,4102.817,0.02,52.37 -2017-05-13 03:00:00,3996.45,0.004,52.21 -2017-05-13 04:00:00,3954.15,0.0458,51.36 -2017-05-13 05:00:00,4003.358,0.021,51.15 -2017-05-13 06:00:00,4129.275,0.026,50.97 -2017-05-13 07:00:00,4369.308,0.015,50.42 -2017-05-13 08:00:00,4686.108,0.026,50.64 -2017-05-13 09:00:00,4978.058,0.0373,50.89 -2017-05-13 10:00:00,5188.592,0.053,50.63 -2017-05-13 11:00:00,5320.183,0.0577,51.86 -2017-05-13 12:00:00,5362.292,0.073,51.46 -2017-05-13 13:00:00,5357.9,0.043,51.18 -2017-05-13 14:00:00,5337.817,0.082,51.29 -2017-05-13 15:00:00,5312.817,0.042,50.5 -2017-05-13 16:00:00,5314.933,0.097,50.44 -2017-05-13 17:00:00,5319.808,0.0441,49.99 -2017-05-13 18:00:00,5326.425,0.023,48.98 -2017-05-13 19:00:00,5341.142,0.0149,47.91 -2017-05-13 20:00:00,5333.9,0.0198,47.18 -2017-05-13 21:00:00,5248.125,0.0263,46.16 -2017-05-13 22:00:00,5076.767,0.0249,46.27 -2017-05-13 23:00:00,4806.617,0.0081,46.83 -2017-05-14 00:00:00,4525.25,0.0,47.17 -2017-05-14 01:00:00,4284.517,0.003,47.3 -2017-05-14 02:00:00,4110.267,0.0,47.03 -2017-05-14 03:00:00,4004.433,0.0,47.16 -2017-05-14 04:00:00,3957.4,0.0,46.94 -2017-05-14 05:00:00,3969.683,0.0,46.85 -2017-05-14 06:00:00,4039.833,0.0,48.14 -2017-05-14 07:00:00,4191.958,0.0,49.56 -2017-05-14 08:00:00,4430.208,0.0,51.52 -2017-05-14 09:00:00,4646.333,0.0,55.49 -2017-05-14 10:00:00,4816.408,0.0,58.22 -2017-05-14 11:00:00,4920.233,0.0,61.01 -2017-05-14 12:00:00,4964.567,0.0,63.47 -2017-05-14 13:00:00,4978.342,0.0,65.63 -2017-05-14 14:00:00,4982.842,0.003,66.08 -2017-05-14 15:00:00,5003.392,0.0,66.34 -2017-05-14 16:00:00,4976.733,0.0023,65.67 -2017-05-14 17:00:00,5018.158,0.0,62.14 -2017-05-14 18:00:00,5003.833,0.0,63.05 -2017-05-14 19:00:00,5030.442,0.0,58.21 -2017-05-14 20:00:00,5168.092,0.0027,62.55 -2017-05-14 21:00:00,5133.775,0.0,58.42 -2017-05-14 22:00:00,4931.792,0.0,56.78 -2017-05-14 23:00:00,4620.533,0.0,54.02 -2017-05-15 00:00:00,4322.292,0.0,54.1 -2017-05-15 01:00:00,4107.4,0.0,53.27 -2017-05-15 02:00:00,3975.9,0.0,51.64 -2017-05-15 03:00:00,3919.65,0.0,51.39 -2017-05-15 04:00:00,3944.433,0.0,52.62 -2017-05-15 05:00:00,4153.908,0.0,53.25 -2017-05-15 06:00:00,4619.975,0.0,54.19 -2017-05-15 07:00:00,5185.825,0.0,55.92 -2017-05-15 08:00:00,5555.858,0.0,57.34 -2017-05-15 09:00:00,5793.258,0.0,59.18 -2017-05-15 10:00:00,5874.883,0.0,60.77 -2017-05-15 11:00:00,5911.058,0.0,62.71 -2017-05-15 12:00:00,5954.55,0.0,63.26 -2017-05-15 13:00:00,5982.783,0.0,64.03 -2017-05-15 14:00:00,5973.2,0.0,64.36 -2017-05-15 15:00:00,5990.617,0.0,66.24 -2017-05-15 16:00:00,6035.108,0.0,66.24 -2017-05-15 17:00:00,6053.65,0.0,67.52 -2017-05-15 18:00:00,5895.05,0.0,66.6 -2017-05-15 19:00:00,5737.067,0.0,64.97 -2017-05-15 20:00:00,5723.517,0.0,62.25 -2017-05-15 21:00:00,5599.183,0.0,60.93 -2017-05-15 22:00:00,5252.042,0.0,59.37 -2017-05-15 23:00:00,4840.317,0.0,59.7 -2017-05-16 00:00:00,4444.617,0.0,58.26 -2017-05-16 01:00:00,4201.392,0.0,57.99 -2017-05-16 02:00:00,4053.883,0.0,57.02 -2017-05-16 03:00:00,3981.492,0.0,55.61 -2017-05-16 04:00:00,3984.158,0.0,55.65 -2017-05-16 05:00:00,4164.592,0.0,54.74 -2017-05-16 06:00:00,4626.675,0.0,56.76 -2017-05-16 07:00:00,5233.242,0.0,59.47 -2017-05-16 08:00:00,5665.233,0.0,62.94 -2017-05-16 09:00:00,5954.008,0.0,65.64 -2017-05-16 10:00:00,6094.992,0.0,69.75 -2017-05-16 11:00:00,6178.392,0.0,72.39 -2017-05-16 12:00:00,6239.875,0.0,74.32 -2017-05-16 13:00:00,6329.45,0.0,76.04 -2017-05-16 14:00:00,6383.85,0.0,78.14 -2017-05-16 15:00:00,6474.375,0.0,78.04 -2017-05-16 16:00:00,6587.917,0.0,78.23 -2017-05-16 17:00:00,6554.225,0.0,77.78 -2017-05-16 18:00:00,6327.7,0.0,75.06 -2017-05-16 19:00:00,6146.667,0.0,72.97 -2017-05-16 20:00:00,6050.925,0.0,70.77 -2017-05-16 21:00:00,5921.825,0.0,69.34 -2017-05-16 22:00:00,5583.317,0.0,66.45 -2017-05-16 23:00:00,5148.625,0.0,66.06 -2017-05-17 00:00:00,4724.55,0.0,63.95 -2017-05-17 01:00:00,4446.825,0.0,63.89 -2017-05-17 02:00:00,4276.333,0.007,62.51 -2017-05-17 03:00:00,4170.992,0.0,62.1 -2017-05-17 04:00:00,4176.025,0.0,61.68 -2017-05-17 05:00:00,4377.758,0.0,60.66 -2017-05-17 06:00:00,4904.392,0.0,61.74 -2017-05-17 07:00:00,5586.058,0.0,65.63 -2017-05-17 08:00:00,6092.283,0.0,69.09 -2017-05-17 09:00:00,6457.467,0.0,74.07 -2017-05-17 10:00:00,6696.033,0.0,76.72 -2017-05-17 11:00:00,6926.883,0.0,81.49 -2017-05-17 12:00:00,7137.592,0.0,85.83 -2017-05-17 13:00:00,7347.083,0.0,87.55 -2017-05-17 14:00:00,7517.192,0.0,88.81 -2017-05-17 15:00:00,7718.033,0.0,88.26 -2017-05-17 16:00:00,7886.05,0.0,87.57 -2017-05-17 17:00:00,7929.875,0.0,87.51 -2017-05-17 18:00:00,7687.164,0.0,85.27 -2017-05-17 19:00:00,7484.575,0.0,79.81 -2017-05-17 20:00:00,7354.108,0.0,80.89 -2017-05-17 21:00:00,7240.992,0.0,78.52 -2017-05-17 22:00:00,6890.108,0.0,78.25 -2017-05-17 23:00:00,6410.758,0.0,77.97 -2017-05-18 00:00:00,5944.025,0.0,75.57 -2017-05-18 01:00:00,5600.217,0.0,76.52 -2017-05-18 02:00:00,5379.567,0.0,75.97 -2017-05-18 03:00:00,5253.867,0.0,74.65 -2017-05-18 04:00:00,5237.333,0.0,73.96 -2017-05-18 05:00:00,5436.592,0.0,72.8 -2017-05-18 06:00:00,6009.95,0.0,74.5 -2017-05-18 07:00:00,6749.208,0.0,75.58 -2017-05-18 08:00:00,7379.283,0.0,78.77 -2017-05-18 09:00:00,7870.167,0.0,82.45 -2017-05-18 10:00:00,8209.866,0.0,86.64 -2017-05-18 11:00:00,8451.083,0.0,89.38 -2017-05-18 12:00:00,8637.158,0.0,92.05 -2017-05-18 13:00:00,8772.967,0.0,93.01 -2017-05-18 14:00:00,8873.108,0.0,93.34 -2017-05-18 15:00:00,9014.475,0.0,91.93 -2017-05-18 16:00:00,9132.675,0.0,91.22 -2017-05-18 17:00:00,9095.833,0.0,89.7 -2017-05-18 18:00:00,8810.009,0.0,87.86 -2017-05-18 19:00:00,8555.95,0.0,80.06 -2017-05-18 20:00:00,8372.075,0.0,83.56 -2017-05-18 21:00:00,8244.975,0.0,80.87 -2017-05-18 22:00:00,7861.475,0.0,81.35 -2017-05-18 23:00:00,7339.183,0.0,80.09 -2017-05-19 00:00:00,6791.558,0.0,78.49 -2017-05-19 01:00:00,6421.483,0.0,78.69 -2017-05-19 02:00:00,6160.125,0.0,77.55 -2017-05-19 03:00:00,6004.967,0.0,75.18 -2017-05-19 04:00:00,5957.325,0.0,75.07 -2017-05-19 05:00:00,6125.433,0.0,74.33 -2017-05-19 06:00:00,6656.983,0.0,74.57 -2017-05-19 07:00:00,7378.717,0.0,76.35 -2017-05-19 08:00:00,7985.975,0.0,79.69 -2017-05-19 09:00:00,8414.833,0.0,83.23 -2017-05-19 10:00:00,8729.25,0.0,86.56 -2017-05-19 11:00:00,8957.283,0.0,89.49 -2017-05-19 12:00:00,9118.533,0.0,90.8 -2017-05-19 13:00:00,9244.866,0.0,91.24 -2017-05-19 14:00:00,9357.533,0.0,91.27 -2017-05-19 15:00:00,9473.134,0.0,90.01 -2017-05-19 16:00:00,9489.017,0.0,90.23 -2017-05-19 17:00:00,9430.458,0.0,87.8 -2017-05-19 18:00:00,9109.392,0.0,86.09 -2017-05-19 19:00:00,8814.208,0.0,76.71 -2017-05-19 20:00:00,8536.741,0.0,82.6 -2017-05-19 21:00:00,8112.317,0.0,76.56 -2017-05-19 22:00:00,7622.383,0.0,68.84 -2017-05-19 23:00:00,6911.358,0.0,70.39 -2017-05-20 00:00:00,6243.65,0.0,67.63 -2017-05-20 01:00:00,5776.475,0.0017,65.69 -2017-05-20 02:00:00,5446.05,0.0,62.22 -2017-05-20 03:00:00,5199.042,0.0,61.37 -2017-05-20 04:00:00,5050.308,0.0,60.25 -2017-05-20 05:00:00,4979.633,0.0018,59.84 -2017-05-20 06:00:00,4994.867,0.0459,60.39 -2017-05-20 07:00:00,5150.892,0.0,61.14 -2017-05-20 08:00:00,5376.383,0.0,59.56 -2017-05-20 09:00:00,5506.4,0.0,59.9 -2017-05-20 10:00:00,5655.6,0.006,61.17 -2017-05-20 11:00:00,5702.217,0.0,63.43 -2017-05-20 12:00:00,5706.883,0.003,61.77 -2017-05-20 13:00:00,5640.95,0.0,62.89 -2017-05-20 14:00:00,5569.408,0.0,62.31 -2017-05-20 15:00:00,5539.3,0.0,63.8 -2017-05-20 16:00:00,5510.258,0.0,65.49 -2017-05-20 17:00:00,5471.025,0.0,63.8 -2017-05-20 18:00:00,5434.85,0.0,62.04 -2017-05-20 19:00:00,5367.792,0.0,60.18 -2017-05-20 20:00:00,5396.517,0.0,57.8 -2017-05-20 21:00:00,5367.358,0.0,56.94 -2017-05-20 22:00:00,5197.983,0.0,56.42 -2017-05-20 23:00:00,4952.567,0.0,56.74 -2017-05-21 00:00:00,4671.408,0.0,55.58 -2017-05-21 01:00:00,4428.467,0.0,55.03 -2017-05-21 02:00:00,4258.192,0.0,53.65 -2017-05-21 03:00:00,4145.958,0.0,53.65 -2017-05-21 04:00:00,4086.375,0.0,52.75 -2017-05-21 05:00:00,4066.842,0.0,53.18 -2017-05-21 06:00:00,4122.55,0.0,54.18 -2017-05-21 07:00:00,4328.483,0.0,57.1 -2017-05-21 08:00:00,4599.308,0.0,61.6 -2017-05-21 09:00:00,4847.7,0.0,63.92 -2017-05-21 10:00:00,5066.058,0.0,66.65 -2017-05-21 11:00:00,5198.633,0.0,68.17 -2017-05-21 12:00:00,5242.492,0.0,69.25 -2017-05-21 13:00:00,5243.792,0.0,68.61 -2017-05-21 14:00:00,5199.942,0.0,68.04 -2017-05-21 15:00:00,5189.875,0.0,67.48 -2017-05-21 16:00:00,5203.908,0.0,65.64 -2017-05-21 17:00:00,5234.483,0.0,63.85 -2017-05-21 18:00:00,5260.683,0.0,61.21 -2017-05-21 19:00:00,5240.733,0.0,59.48 -2017-05-21 20:00:00,5320.542,0.0,56.44 -2017-05-21 21:00:00,5290.775,0.0,56.87 -2017-05-21 22:00:00,5078.375,0.0,57.4 -2017-05-21 23:00:00,4762.442,0.0,57.87 -2017-05-22 00:00:00,4467.75,0.0,57.99 -2017-05-22 01:00:00,4249.2,0.0181,57.73 -2017-05-22 02:00:00,4135.025,0.0,57.28 -2017-05-22 03:00:00,4068.2,0.1001,56.09 -2017-05-22 04:00:00,4099.35,0.0055,56.93 -2017-05-22 05:00:00,4311.442,0.0025,55.35 -2017-05-22 06:00:00,4777.192,0.0,56.62 -2017-05-22 07:00:00,5376.875,0.0,56.2 -2017-05-22 08:00:00,5809.308,0.0,57.29 -2017-05-22 09:00:00,6046.042,0.004,56.77 -2017-05-22 10:00:00,6177.892,0.0034,57.4 -2017-05-22 11:00:00,6260.4,0.004,56.9 -2017-05-22 12:00:00,6301.883,0.0,57.49 -2017-05-22 13:00:00,6325.675,0.0026,58.15 -2017-05-22 14:00:00,6310.358,0.091,58.98 -2017-05-22 15:00:00,6347.367,0.0188,61.66 -2017-05-22 16:00:00,6370.075,0.0066,61.31 -2017-05-22 17:00:00,6355.375,0.0192,61.4 -2017-05-22 18:00:00,6187.75,0.0,60.67 -2017-05-22 19:00:00,6033.525,0.0,61.98 -2017-05-22 20:00:00,5953.083,0.0,61.32 -2017-05-22 21:00:00,5767.375,0.0,61.15 -2017-05-22 22:00:00,5424.942,0.002,61.46 -2017-05-22 23:00:00,5016.692,0.0,60.12 -2017-05-23 00:00:00,4616.375,0.0,59.91 -2017-05-23 01:00:00,4366.25,0.0,60.15 -2017-05-23 02:00:00,4203.217,0.003,59.07 -2017-05-23 03:00:00,4139.908,0.0,58.47 -2017-05-23 04:00:00,4140.433,0.0,58.55 -2017-05-23 05:00:00,4314.7,0.0,58.13 -2017-05-23 06:00:00,4779.7,0.0,59.29 -2017-05-23 07:00:00,5394.142,0.0,59.9 -2017-05-23 08:00:00,5814.592,0.0,62.51 -2017-05-23 09:00:00,6056.0,0.0,63.69 -2017-05-23 10:00:00,6161.508,0.0,66.07 -2017-05-23 11:00:00,6217.642,0.0,67.61 -2017-05-23 12:00:00,6262.575,0.0,69.02 -2017-05-23 13:00:00,6315.675,0.0,69.82 -2017-05-23 14:00:00,6309.642,0.0,70.83 -2017-05-23 15:00:00,6343.692,0.0,70.62 -2017-05-23 16:00:00,6366.992,0.0,71.6 -2017-05-23 17:00:00,6331.558,0.0,68.72 -2017-05-23 18:00:00,6116.508,0.0,66.77 -2017-05-23 19:00:00,5961.017,0.0,65.21 -2017-05-23 20:00:00,5913.283,0.0,63.4 -2017-05-23 21:00:00,5751.483,0.0,63.18 -2017-05-23 22:00:00,5422.358,0.005,61.67 -2017-05-23 23:00:00,4995.8,0.0,61.17 -2017-05-24 00:00:00,4589.992,0.0,61.08 -2017-05-24 01:00:00,4334.917,0.0,60.47 -2017-05-24 02:00:00,4192.258,0.003,59.56 -2017-05-24 03:00:00,4107.075,0.0,59.07 -2017-05-24 04:00:00,4119.95,0.0171,59.52 -2017-05-24 05:00:00,4294.192,0.012,58.46 -2017-05-24 06:00:00,4776.267,0.007,58.64 -2017-05-24 07:00:00,5378.75,0.0,58.64 -2017-05-24 08:00:00,5810.392,0.0,59.71 -2017-05-24 09:00:00,6052.525,0.0,62.32 -2017-05-24 10:00:00,6174.025,0.0,61.92 -2017-05-24 11:00:00,6226.483,0.0,63.71 -2017-05-24 12:00:00,6305.75,0.0,65.15 -2017-05-24 13:00:00,6369.083,0.0,70.6 -2017-05-24 14:00:00,6399.442,0.0,67.85 -2017-05-24 15:00:00,6382.742,0.0,68.88 -2017-05-24 16:00:00,6408.675,0.0,69.11 -2017-05-24 17:00:00,6355.958,0.0,66.29 -2017-05-24 18:00:00,6108.3,0.0,66.57 -2017-05-24 19:00:00,5930.8,0.0,62.35 -2017-05-24 20:00:00,5874.908,0.0,64.11 -2017-05-24 21:00:00,5716.65,0.0,60.62 -2017-05-24 22:00:00,5389.367,0.0,59.51 -2017-05-24 23:00:00,4956.1,0.0,59.08 -2017-05-25 00:00:00,4566.258,0.0,59.02 -2017-05-25 01:00:00,4309.942,0.0,58.41 -2017-05-25 02:00:00,4154.108,0.0,57.72 -2017-05-25 03:00:00,4077.85,0.0,57.51 -2017-05-25 04:00:00,4091.408,0.0067,57.02 -2017-05-25 05:00:00,4266.392,0.0084,57.01 -2017-05-25 06:00:00,4724.55,0.013,56.41 -2017-05-25 07:00:00,5334.95,0.0143,56.41 -2017-05-25 08:00:00,5754.1,0.0064,56.35 -2017-05-25 09:00:00,6030.8,0.026,56.27 -2017-05-25 10:00:00,6165.317,0.002,56.49 -2017-05-25 11:00:00,6208.075,0.0339,57.24 -2017-05-25 12:00:00,6224.808,0.002,57.22 -2017-05-25 13:00:00,6225.667,0.0,57.66 -2017-05-25 14:00:00,6182.025,0.0,58.6 -2017-05-25 15:00:00,6186.275,0.0,58.71 -2017-05-25 16:00:00,6206.008,0.0,58.75 -2017-05-25 17:00:00,6186.983,0.0,58.93 -2017-05-25 18:00:00,5990.275,0.0,59.23 -2017-05-25 19:00:00,5897.333,0.0,58.09 -2017-05-25 20:00:00,5786.442,0.0,58.37 -2017-05-25 21:00:00,5613.642,0.0,57.73 -2017-05-25 22:00:00,5300.633,0.0,57.92 -2017-05-25 23:00:00,4909.608,0.1683,57.89 -2017-05-26 00:00:00,4538.325,0.0,57.49 -2017-05-26 01:00:00,4274.25,0.003,57.28 -2017-05-26 02:00:00,4121.0,0.0154,57.26 -2017-05-26 03:00:00,4039.325,0.003,56.56 -2017-05-26 04:00:00,4052.65,0.0,56.78 -2017-05-26 05:00:00,4229.492,0.0027,56.62 -2017-05-26 06:00:00,4680.325,0.0024,57.65 -2017-05-26 07:00:00,5240.467,0.0,58.29 -2017-05-26 08:00:00,5645.792,0.0034,60.12 -2017-05-26 09:00:00,5934.933,0.0,62.27 -2017-05-26 10:00:00,6115.642,0.0,65.73 -2017-05-26 11:00:00,6249.75,0.0,69.25 -2017-05-26 12:00:00,6343.683,0.0,72.9 -2017-05-26 13:00:00,6404.192,0.0,73.2 -2017-05-26 14:00:00,6386.158,0.0,73.97 -2017-05-26 15:00:00,6331.983,0.0,73.75 -2017-05-26 16:00:00,6325.333,0.0,70.9 -2017-05-26 17:00:00,6278.75,0.0,72.27 -2017-05-26 18:00:00,6089.917,0.0,71.81 -2017-05-26 19:00:00,5937.308,0.003,71.64 -2017-05-26 20:00:00,5821.417,0.0,67.76 -2017-05-26 21:00:00,5671.817,0.0,66.99 -2017-05-26 22:00:00,5387.733,0.0,65.39 -2017-05-26 23:00:00,5057.958,0.0,63.95 -2017-05-27 00:00:00,4678.733,0.0,63.07 -2017-05-27 01:00:00,4430.65,0.0,62.41 -2017-05-27 02:00:00,4241.3,0.0,61.19 -2017-05-27 03:00:00,4156.483,0.0,59.74 -2017-05-27 04:00:00,4101.808,0.0,59.0 -2017-05-27 05:00:00,4087.65,0.0,58.93 -2017-05-27 06:00:00,4213.9,0.0,60.21 -2017-05-27 07:00:00,4474.508,0.0,62.41 -2017-05-27 08:00:00,4795.058,0.0,64.84 -2017-05-27 09:00:00,5066.583,0.0,68.4 -2017-05-27 10:00:00,5311.717,0.0,71.14 -2017-05-27 11:00:00,5446.625,0.0,71.37 -2017-05-27 12:00:00,5503.35,0.0,72.57 -2017-05-27 13:00:00,5468.358,0.0,70.82 -2017-05-27 14:00:00,5458.475,0.0,71.61 -2017-05-27 15:00:00,5415.317,0.0,71.19 -2017-05-27 16:00:00,5393.475,0.0,70.15 -2017-05-27 17:00:00,5373.4,0.0,69.9 -2017-05-27 18:00:00,5357.817,0.0,68.54 -2017-05-27 19:00:00,5333.992,0.0,66.99 -2017-05-27 20:00:00,5319.308,0.0,65.82 -2017-05-27 21:00:00,5265.567,0.0,64.91 -2017-05-27 22:00:00,5109.267,0.0,61.88 -2017-05-27 23:00:00,4868.842,0.0,62.04 -2017-05-28 00:00:00,4603.908,0.0,61.52 -2017-05-28 01:00:00,4372.783,0.0,61.12 -2017-05-28 02:00:00,4208.983,0.0,59.59 -2017-05-28 03:00:00,4115.225,0.0,60.13 -2017-05-28 04:00:00,4050.958,0.0,59.0 -2017-05-28 05:00:00,4019.908,0.0,58.74 -2017-05-28 06:00:00,4070.125,0.0,59.91 -2017-05-28 07:00:00,4237.117,0.0,61.31 -2017-05-28 08:00:00,4469.408,0.0,63.37 -2017-05-28 09:00:00,4738.9,0.0,65.01 -2017-05-28 10:00:00,5005.975,0.0,66.73 -2017-05-28 11:00:00,5170.2,0.0,71.05 -2017-05-28 12:00:00,5248.267,0.0,72.4 -2017-05-28 13:00:00,5253.033,0.0,72.47 -2017-05-28 14:00:00,5242.775,0.0,69.19 -2017-05-28 15:00:00,5223.533,0.0,69.52 -2017-05-28 16:00:00,5219.742,0.0,68.78 -2017-05-28 17:00:00,5159.242,0.0034,67.71 -2017-05-28 18:00:00,5099.225,0.0,65.54 -2017-05-28 19:00:00,5078.975,0.0,62.09 -2017-05-28 20:00:00,5105.058,0.0,61.26 -2017-05-28 21:00:00,5084.583,0.0,61.41 -2017-05-28 22:00:00,4947.667,0.0046,60.55 -2017-05-28 23:00:00,4706.942,0.002,60.26 -2017-05-29 00:00:00,4459.917,0.004,60.31 -2017-05-29 01:00:00,4262.242,0.009,59.96 -2017-05-29 02:00:00,4120.183,0.0075,59.91 -2017-05-29 03:00:00,4039.1,0.006,59.52 -2017-05-29 04:00:00,3997.217,0.0115,57.68 -2017-05-29 05:00:00,4037.675,0.0035,57.99 -2017-05-29 06:00:00,4157.342,0.006,56.97 -2017-05-29 07:00:00,4350.183,0.0,57.07 -2017-05-29 08:00:00,4583.525,0.002,56.67 -2017-05-29 09:00:00,4811.733,0.0,57.26 -2017-05-29 10:00:00,5016.375,0.003,58.55 -2017-05-29 11:00:00,5150.733,0.0,57.79 -2017-05-29 12:00:00,5205.292,0.0,57.63 -2017-05-29 13:00:00,5203.658,0.0,57.73 -2017-05-29 14:00:00,5205.975,0.0,57.91 -2017-05-29 15:00:00,5208.275,0.0,58.68 -2017-05-29 19:00:00,5263.925,0.0,57.12 -2017-05-29 20:00:00,5275.858,0.0,57.38 -2017-05-29 21:00:00,5230.842,0.0,57.0 -2017-05-29 22:00:00,4996.8,0.0,56.85 -2017-05-29 23:00:00,4654.517,0.003,57.05 -2017-05-30 00:00:00,4363.133,0.005,57.0 -2017-05-30 01:00:00,4153.892,0.003,57.16 -2017-05-30 02:00:00,4017.167,0.0,57.0 -2017-05-30 03:00:00,3966.817,0.0,55.74 -2017-05-30 04:00:00,3988.767,0.0,55.78 -2017-05-30 05:00:00,4177.992,0.0,55.49 -2017-05-30 06:00:00,4640.525,0.0,56.08 -2017-05-30 07:00:00,5237.55,0.0,56.57 -2017-05-30 08:00:00,5635.05,0.0,56.89 -2017-05-30 09:00:00,5886.592,0.0,57.78 -2017-05-30 10:00:00,5987.783,0.0,58.49 -2017-05-30 11:00:00,6049.2,0.0,59.69 -2017-05-30 12:00:00,6087.8,0.0,60.26 -2017-05-30 13:00:00,6096.0,0.0,60.66 -2017-05-30 14:00:00,6079.867,0.0391,59.61 -2017-05-30 15:00:00,6086.733,0.0,58.62 -2017-05-30 16:00:00,6102.55,0.0,58.01 -2017-05-30 17:00:00,6075.883,0.0,59.6 -2017-05-30 18:00:00,5962.617,0.0,59.89 -2017-05-30 19:00:00,5838.358,0.0,57.92 -2017-05-30 20:00:00,5733.792,0.0,58.46 -2017-05-30 21:00:00,5596.275,0.0,58.18 -2017-05-30 22:00:00,5282.717,0.0,57.92 -2017-05-30 23:00:00,4880.558,0.002,57.87 -2017-05-31 00:00:00,4500.858,0.0,58.56 -2017-05-31 01:00:00,4274.733,0.0,58.49 -2017-05-31 02:00:00,4131.825,0.0,58.71 -2017-05-31 03:00:00,4081.333,0.0,58.4 -2017-05-31 04:00:00,4077.258,0.0,58.33 -2017-05-31 05:00:00,4258.408,0.0,58.57 -2017-05-31 06:00:00,4745.308,0.0,59.13 -2017-05-31 07:00:00,5334.875,0.0,59.77 -2017-05-31 08:00:00,5733.008,0.0,60.57 -2017-05-31 09:00:00,6010.708,0.0,61.69 -2017-05-31 10:00:00,6119.825,0.0,63.63 -2017-05-31 11:00:00,6212.117,0.0,66.61 -2017-05-31 12:00:00,6297.925,0.0,68.29 -2017-05-31 13:00:00,6442.408,0.0,73.38 -2017-05-31 14:00:00,6512.675,0.0,75.08 -2017-05-31 15:00:00,6615.017,0.0,75.15 -2017-05-31 16:00:00,6731.1,0.0,74.57 -2017-05-31 17:00:00,6760.908,0.0,73.72 -2017-05-31 18:00:00,6509.155,0.0,73.23 -2017-05-31 19:00:00,6276.758,0.0,71.06 -2017-05-31 20:00:00,6114.3,0.003,68.01 -2017-05-31 21:00:00,6007.025,0.0332,65.22 -2017-05-31 22:00:00,5691.667,0.0,64.09 -2017-05-31 23:00:00,5277.983,0.0,65.3 -2017-06-01 00:00:00,4831.067,0.0,64.05 -2017-06-01 01:00:00,4531.475,0.0,63.23 -2017-06-01 02:00:00,4344.133,0.0,61.38 -2017-06-01 03:00:00,4263.925,0.0973,59.9 -2017-06-01 04:00:00,4242.492,0.0,60.31 -2017-06-01 05:00:00,4410.492,0.0,60.52 -2017-06-01 06:00:00,4907.783,0.003,60.3 -2017-06-01 07:00:00,5558.867,0.0,62.36 -2017-06-01 08:00:00,6017.775,0.0,65.74 -2017-06-01 09:00:00,6335.05,0.0,68.89 -2017-06-01 10:00:00,6539.067,0.0,71.36 -2017-06-01 11:00:00,6724.525,0.0,76.77 -2017-06-01 12:00:00,6813.108,0.0,77.7 -2017-06-01 13:00:00,6852.0,0.0,79.07 -2017-06-01 14:00:00,6879.9,0.0,78.25 -2017-06-01 15:00:00,6925.775,0.0,78.8 -2017-06-01 16:00:00,6981.492,0.0,77.78 -2017-06-01 17:00:00,6944.8,0.0,78.23 -2017-06-01 18:00:00,6672.925,0.0,73.38 -2017-06-01 19:00:00,6409.642,0.0,74.2 -2017-06-01 20:00:00,6246.258,0.0,70.49 -2017-06-01 21:00:00,6144.408,0.0,69.82 -2017-06-01 22:00:00,5822.675,0.0,66.81 -2017-06-01 23:00:00,5394.733,0.0,67.21 -2017-06-02 00:00:00,4966.025,0.0,64.34 -2017-06-02 01:00:00,4619.992,0.0,63.75 -2017-06-02 02:00:00,4404.692,0.0,61.06 -2017-06-02 03:00:00,4289.683,0.0,58.31 -2017-06-02 04:00:00,4252.425,0.0,57.16 -2017-06-02 05:00:00,4382.542,0.0,58.04 -2017-06-02 06:00:00,4873.492,0.0,59.76 -2017-06-02 07:00:00,5504.983,0.0,61.59 -2017-06-02 08:00:00,5984.208,0.0,66.47 -2017-06-02 09:00:00,6298.458,0.0,70.18 -2017-06-02 10:00:00,6460.833,0.0,71.34 -2017-06-02 11:00:00,6563.292,0.0,73.18 -2017-06-02 12:00:00,6625.717,0.0,74.55 -2017-06-02 13:00:00,6691.45,0.0,75.61 -2017-06-02 14:00:00,6705.475,0.0,75.8 -2017-06-02 15:00:00,6732.9,0.0,74.89 -2017-06-02 16:00:00,6716.525,0.0,74.6 -2017-06-02 17:00:00,6688.075,0.0,72.34 -2017-06-02 18:00:00,6403.925,0.0,70.15 -2017-06-02 19:00:00,6153.85,0.0,70.59 -2017-06-02 20:00:00,5935.883,0.0,67.09 -2017-06-02 21:00:00,5825.708,0.0,64.3 -2017-06-02 22:00:00,5539.725,0.0,62.19 -2017-06-02 23:00:00,5158.242,0.0,62.46 -2017-06-03 00:00:00,4780.85,0.0,60.8 -2017-06-03 01:00:00,4503.275,0.0,59.31 -2017-06-03 02:00:00,4318.725,0.0,57.91 -2017-06-03 03:00:00,4208.658,0.0,56.14 -2017-06-03 04:00:00,4142.067,0.0,56.1 -2017-06-03 05:00:00,4133.017,0.0,55.18 -2017-06-03 06:00:00,4272.742,0.0,57.56 -2017-06-03 07:00:00,4547.575,0.0393,59.16 -2017-06-03 08:00:00,4785.833,0.0,62.23 -2017-06-03 09:00:00,5024.85,0.0,58.74 -2017-06-03 10:00:00,5201.033,0.0,62.34 -2017-06-03 11:00:00,5337.6,0.0,65.15 -2017-06-03 12:00:00,5450.033,0.0,71.72 -2017-06-03 13:00:00,5450.592,0.0,72.47 -2017-06-03 14:00:00,5452.583,0.0,72.69 -2017-06-03 15:00:00,5462.908,0.0,73.38 -2017-06-03 16:00:00,5486.5,0.0,74.13 -2017-06-03 17:00:00,5492.917,0.0,73.38 -2017-06-03 18:00:00,5520.975,0.0,72.49 -2017-06-03 19:00:00,5459.308,0.0,70.66 -2017-06-03 20:00:00,5435.408,0.0,68.65 -2017-06-03 21:00:00,5425.783,0.0,66.68 -2017-06-03 22:00:00,5266.392,0.0,65.28 -2017-06-03 23:00:00,4998.167,0.0,63.9 -2017-06-04 00:00:00,4713.558,0.0,62.15 -2017-06-04 01:00:00,4457.117,0.0,61.4 -2017-06-04 02:00:00,4272.05,0.0,58.34 -2017-06-04 03:00:00,4170.75,0.0,58.41 -2017-06-04 04:00:00,4079.658,0.0,56.96 -2017-06-04 05:00:00,4036.642,0.0,56.04 -2017-06-04 06:00:00,4105.292,0.0,57.94 -2017-06-04 07:00:00,4317.992,0.0,60.4 -2017-06-04 08:00:00,4606.65,0.0,66.99 -2017-06-04 09:00:00,4921.7,0.0,69.73 -2017-06-04 10:00:00,5159.633,0.0,72.05 -2017-06-04 11:00:00,5284.675,0.0,73.55 -2017-06-04 12:00:00,5323.233,0.0,70.29 -2017-06-04 13:00:00,5343.467,0.016,68.67 -2017-06-04 14:00:00,5318.1,0.0394,67.12 -2017-06-04 15:00:00,5292.175,0.0243,65.24 -2017-06-04 16:00:00,5275.433,0.0085,64.86 -2017-06-04 17:00:00,5281.267,0.006,64.76 -2017-06-04 18:00:00,5315.742,0.003,64.1 -2017-06-04 19:00:00,5378.392,0.002,62.5 -2017-06-04 20:00:00,5432.992,0.0,63.62 -2017-06-04 21:00:00,5398.067,0.0,62.35 -2017-06-04 22:00:00,5193.375,0.002,62.22 -2017-06-04 23:00:00,4880.792,0.0,61.06 -2017-06-05 00:00:00,4580.275,0.0981,61.48 -2017-06-05 01:00:00,4351.367,0.0,61.24 -2017-06-05 02:00:00,4218.067,0.0071,59.37 -2017-06-05 03:00:00,4158.167,0.0038,59.41 -2017-06-05 04:00:00,4174.9,0.0,59.4 -2017-06-05 05:00:00,4389.35,0.0019,59.56 -2017-06-05 06:00:00,4885.017,0.0,60.63 -2017-06-05 07:00:00,5505.1,0.0,61.98 -2017-06-05 08:00:00,5957.017,0.0,63.8 -2017-06-05 09:00:00,6243.525,0.0,65.43 -2017-06-05 10:00:00,6387.442,0.0,66.96 -2017-06-05 11:00:00,6504.317,0.0,67.3 -2017-06-05 12:00:00,6585.75,0.0,69.4 -2017-06-05 13:00:00,6605.133,0.0,69.82 -2017-06-05 14:00:00,6579.717,0.0,69.68 -2017-06-05 15:00:00,6596.4,0.0,67.99 -2017-06-05 16:00:00,6616.208,0.0,66.85 -2017-06-05 17:00:00,6555.383,0.0,65.93 -2017-06-05 18:00:00,6360.6,0.0,66.0 -2017-06-05 19:00:00,6191.117,0.0,64.43 -2017-06-05 20:00:00,6054.583,0.0,63.3 -2017-06-05 21:00:00,5843.533,0.0,62.32 -2017-06-05 22:00:00,5488.883,0.0,61.57 -2017-06-05 23:00:00,5057.525,0.0018,61.05 -2017-06-06 00:00:00,4639.817,0.0,60.7 -2017-06-06 01:00:00,4373.208,0.0,59.88 -2017-06-06 02:00:00,4205.167,0.0,57.64 -2017-06-06 03:00:00,4121.533,0.0,57.76 -2017-06-06 04:00:00,4122.85,0.0,56.6 -2017-06-06 05:00:00,4280.975,0.0,56.7 -2017-06-06 06:00:00,4743.058,0.002,56.47 -2017-06-06 07:00:00,5314.425,0.0242,56.49 -2017-06-06 08:00:00,5717.85,0.0,55.98 -2017-06-06 09:00:00,5974.767,0.0,56.06 -2017-06-06 10:00:00,6061.908,0.0,56.77 -2017-06-06 11:00:00,6109.392,0.0,56.78 -2017-06-06 12:00:00,6132.075,0.0,57.04 -2017-06-06 13:00:00,6130.358,0.0,55.47 -2017-06-06 14:00:00,6077.717,0.0,56.01 -2017-06-06 15:00:00,6099.7,0.0,56.98 -2017-06-06 16:00:00,6103.067,0.0,59.52 -2017-06-06 17:00:00,6086.508,0.0,57.85 -2017-06-06 18:00:00,5943.758,0.0,57.03 -2017-06-06 19:00:00,5812.942,0.0,56.02 -2017-06-06 20:00:00,5720.9,0.0,55.01 -2017-06-06 21:00:00,5532.2,0.0,53.85 -2017-06-06 22:00:00,5221.783,0.0,53.17 -2017-06-06 23:00:00,4810.633,0.0,53.59 -2017-06-07 00:00:00,4410.158,0.0,53.62 -2017-06-07 01:00:00,4157.658,0.0,52.92 -2017-06-07 02:00:00,4023.308,0.0,51.27 -2017-06-07 03:00:00,3947.908,0.0,52.46 -2017-06-07 04:00:00,3955.583,0.0,51.94 -2017-06-07 05:00:00,4111.358,0.0,52.4 -2017-06-07 06:00:00,4576.867,0.0,52.97 -2017-06-07 07:00:00,5169.975,0.0,54.74 -2017-06-07 08:00:00,5563.792,0.0,56.7 -2017-06-07 09:00:00,5822.258,0.0,58.89 -2017-06-07 10:00:00,5943.108,0.0,62.67 -2017-06-07 11:00:00,6049.925,0.0,63.74 -2017-06-07 12:00:00,6080.233,0.0,66.11 -2017-06-07 13:00:00,6106.05,0.0,65.07 -2017-06-07 14:00:00,6131.075,0.0,66.23 -2017-06-07 15:00:00,6155.85,0.0,67.62 -2017-06-07 16:00:00,6210.267,0.0,69.09 -2017-06-07 17:00:00,6191.833,0.0,69.1 -2017-06-07 18:00:00,6026.367,0.0,65.95 -2017-06-07 19:00:00,5843.283,0.0,65.29 -2017-06-07 20:00:00,5728.833,0.0,65.45 -2017-06-07 21:00:00,5674.833,0.0,62.7 -2017-06-07 22:00:00,5391.7,0.0,60.69 -2017-06-07 23:00:00,4986.458,0.0,59.51 -2017-06-08 00:00:00,4565.583,0.0,59.64 -2017-06-08 01:00:00,4279.542,0.0,58.9 -2017-06-08 02:00:00,4100.958,0.0,57.0 -2017-06-08 03:00:00,4026.758,0.0,55.88 -2017-06-08 04:00:00,4014.508,0.0,54.73 -2017-06-08 05:00:00,4175.967,0.0,55.77 -2017-06-08 06:00:00,4645.975,0.0,57.03 -2017-06-08 07:00:00,5245.767,0.0,60.53 -2017-06-08 08:00:00,5768.642,0.0,65.58 -2017-06-08 09:00:00,6059.592,0.0,67.15 -2017-06-08 10:00:00,6230.658,0.0,66.92 -2017-06-08 11:00:00,6366.725,0.0,70.6 -2017-06-08 12:00:00,6376.55,0.0,71.67 -2017-06-08 13:00:00,6368.942,0.0,69.16 -2017-06-08 14:00:00,6324.867,0.0,68.68 -2017-06-08 15:00:00,6295.467,0.0,67.26 -2017-06-08 16:00:00,6274.583,0.0,67.71 -2017-06-08 17:00:00,6173.542,0.0,65.46 -2017-06-08 18:00:00,5969.483,0.0,63.28 -2017-06-08 19:00:00,5816.725,0.0,64.69 -2017-06-08 20:00:00,5710.958,0.0,60.6 -2017-06-08 21:00:00,5575.742,0.0,60.76 -2017-06-08 22:00:00,5283.117,0.0,59.64 -2017-06-08 23:00:00,4881.667,0.0,58.28 -2017-06-09 00:00:00,4492.108,0.0,57.05 -2017-06-09 01:00:00,4228.842,0.0,56.68 -2017-06-09 02:00:00,4070.025,0.0,54.86 -2017-06-09 03:00:00,3994.525,0.0,54.83 -2017-06-09 04:00:00,3984.317,0.0,54.93 -2017-06-09 05:00:00,4143.883,0.0,53.96 -2017-06-09 06:00:00,4623.067,0.0,55.88 -2017-06-09 07:00:00,5218.7,0.0,59.24 -2017-06-09 08:00:00,5668.958,0.0,63.95 -2017-06-09 09:00:00,5987.05,0.0,66.2 -2017-06-09 10:00:00,6192.158,0.0,70.78 -2017-06-09 11:00:00,6360.3,0.0,75.55 -2017-06-09 12:00:00,6485.583,0.0,78.93 -2017-06-09 13:00:00,6607.2,0.0,80.29 -2017-06-09 14:00:00,6689.317,0.0,80.89 -2017-06-09 15:00:00,6758.267,0.0,81.03 -2017-06-09 16:00:00,6806.042,0.0,79.66 -2017-06-09 17:00:00,6824.05,0.0,80.1 -2017-06-09 18:00:00,6619.95,0.0,79.57 -2017-06-09 19:00:00,6414.15,0.0,77.56 -2017-06-09 20:00:00,6260.85,0.0,76.13 -2017-06-09 21:00:00,6145.192,0.0,74.08 -2017-06-09 22:00:00,5894.683,0.0,73.65 -2017-06-09 23:00:00,5532.025,0.0,71.43 -2017-06-10 00:00:00,5133.133,0.0,69.71 -2017-06-10 01:00:00,4830.233,0.0,68.96 -2017-06-10 02:00:00,4621.55,0.0,66.52 -2017-06-10 03:00:00,4488.025,0.0,65.44 -2017-06-10 04:00:00,4404.608,0.0,64.55 -2017-06-10 05:00:00,4388.675,0.0,63.57 -2017-06-10 06:00:00,4546.267,0.0,65.89 -2017-06-10 07:00:00,4871.992,0.0,69.25 -2017-06-10 08:00:00,5275.683,0.0,72.91 -2017-06-10 09:00:00,5680.15,0.0,75.88 -2017-06-10 10:00:00,5967.633,0.0,78.47 -2017-06-10 11:00:00,6240.333,0.0,80.82 -2017-06-10 12:00:00,6395.142,0.0,84.19 -2017-06-10 13:00:00,6474.342,0.0,85.05 -2017-06-10 14:00:00,6539.833,0.002,85.28 -2017-06-10 15:00:00,6608.233,0.0,84.91 -2017-06-10 16:00:00,6670.05,0.0,84.79 -2017-06-10 17:00:00,6676.792,0.0,83.84 -2017-06-10 18:00:00,6609.042,0.0,81.62 -2017-06-10 19:00:00,6537.275,0.002,81.3 -2017-06-10 20:00:00,6475.85,0.0,79.66 -2017-06-10 21:00:00,6472.5,0.0,78.59 -2017-06-10 22:00:00,6347.958,0.003,74.57 -2017-06-10 23:00:00,6082.358,0.0,72.22 -2017-06-11 00:00:00,5757.1,0.0,73.75 -2017-06-11 01:00:00,5483.975,0.0,73.62 -2017-06-11 02:00:00,5248.175,0.0,73.1 -2017-06-11 03:00:00,5085.75,0.0,70.95 -2017-06-11 04:00:00,4989.833,0.0,70.97 -2017-06-11 05:00:00,4925.467,0.0,69.67 -2017-06-11 06:00:00,5020.708,0.0,71.3 -2017-06-11 07:00:00,5320.425,0.0,74.26 -2017-06-11 08:00:00,5737.483,0.0,77.84 -2017-06-11 09:00:00,6209.408,0.0,81.89 -2017-06-11 10:00:00,6635.275,0.0,85.69 -2017-06-11 11:00:00,6977.542,0.0,88.95 -2017-06-11 12:00:00,7217.483,0.0,90.56 -2017-06-11 13:00:00,7388.05,0.0,91.5 -2017-06-11 14:00:00,7513.7,0.0,91.25 -2017-06-11 15:00:00,7624.617,0.0,90.84 -2017-06-11 16:00:00,7736.983,0.0,90.27 -2017-06-11 17:00:00,7830.225,0.0,89.0 -2017-06-11 18:00:00,7846.017,0.0,87.46 -2017-06-11 19:00:00,7808.425,0.0,86.29 -2017-06-11 20:00:00,7794.542,0.0,84.42 -2017-06-11 21:00:00,7877.817,0.0,83.55 -2017-06-11 22:00:00,7685.35,0.0,81.75 -2017-06-11 23:00:00,7294.425,0.0,79.52 -2017-06-12 00:00:00,6871.458,0.0,78.09 -2017-06-12 01:00:00,6543.833,0.0,77.56 -2017-06-12 02:00:00,6275.975,0.0,75.56 -2017-06-12 03:00:00,6094.3,0.0,74.25 -2017-06-12 04:00:00,6077.267,0.0,73.82 -2017-06-12 05:00:00,6219.908,0.0,73.45 -2017-06-12 06:00:00,6651.625,0.0,74.14 -2017-06-12 07:00:00,7359.075,0.0,76.57 -2017-06-12 08:00:00,8005.742,0.0,80.48 -2017-06-12 09:00:00,8530.108,0.0,84.44 -2017-06-12 10:00:00,8897.033,0.0,87.53 -2017-06-12 11:00:00,9145.991,0.0,90.57 -2017-06-12 12:00:00,9337.025,0.0,93.13 -2017-06-12 13:00:00,9527.592,0.0,94.02 -2017-06-12 14:00:00,9654.892,0.0,94.3 -2017-06-12 15:00:00,9793.767,0.0,93.66 -2017-06-12 16:00:00,9935.417,0.0,92.97 -2017-06-12 17:00:00,9967.975,0.0,91.4 -2017-06-12 18:00:00,9767.8,0.0,89.84 -2017-06-12 19:00:00,9543.167,0.0,87.33 -2017-06-12 20:00:00,9333.208,0.0,87.07 -2017-06-12 21:00:00,9239.566,0.0,85.7 -2017-06-12 22:00:00,8848.1,0.0,83.79 -2017-06-12 23:00:00,8242.675,0.0,82.85 -2017-06-13 00:00:00,7629.825,0.0,80.83 -2017-06-13 01:00:00,7174.275,0.0,80.38 -2017-06-13 02:00:00,6868.017,0.0,78.82 -2017-06-13 03:00:00,6683.308,0.0,77.16 -2017-06-13 04:00:00,6617.333,0.0,76.53 -2017-06-13 05:00:00,6732.525,0.0,75.75 -2017-06-13 06:00:00,7200.017,0.0,76.18 -2017-06-13 07:00:00,7919.558,0.0,78.57 -2017-06-13 08:00:00,8570.092,0.0,82.37 -2017-06-13 09:00:00,9096.741,0.0,86.62 -2017-06-13 10:00:00,9489.634,0.0,89.59 -2017-06-13 11:00:00,9784.366,0.0,91.15 -2017-06-13 12:00:00,9964.642,0.0,95.82 -2017-06-13 13:00:00,10128.33,0.0,93.07 -2017-06-13 14:00:00,10235.6,0.0,93.59 -2017-06-13 15:00:00,10438.53,0.0,93.71 -2017-06-13 16:00:00,10576.72,0.0,94.49 -2017-06-13 17:00:00,10603.98,0.0,92.38 -2017-06-13 18:00:00,10327.91,0.0,90.25 -2017-06-13 19:00:00,10065.4,0.0,87.73 -2017-06-13 20:00:00,9865.033,0.0,84.95 -2017-06-13 21:00:00,9700.55,0.0,86.26 -2017-06-13 22:00:00,9256.958,0.0,79.97 -2017-06-13 23:00:00,8632.892,0.0132,78.45 -2017-06-14 00:00:00,7981.533,0.0,77.74 -2017-06-14 01:00:00,7532.425,0.0,76.29 -2017-06-14 02:00:00,7156.492,0.002,73.61 -2017-06-14 03:00:00,6899.85,0.002,74.81 -2017-06-14 04:00:00,6727.217,0.0037,73.62 -2017-06-14 05:00:00,6822.325,0.003,71.87 -2017-06-14 06:00:00,7235.1,0.0,69.53 -2017-06-14 07:00:00,7796.033,0.048,69.86 -2017-06-14 08:00:00,8061.858,0.0,73.67 -2017-06-14 09:00:00,8253.7,0.0,74.5 -2017-06-14 10:00:00,8523.059,0.002,76.25 -2017-06-14 11:00:00,8623.825,0.0,78.77 -2017-06-14 12:00:00,8658.533,0.0,82.34 -2017-06-14 13:00:00,8745.625,0.0,82.01 -2017-06-14 14:00:00,8846.483,0.0,81.84 -2017-06-14 15:00:00,8929.233,0.0,82.25 -2017-06-14 16:00:00,8880.792,0.0,79.91 -2017-06-14 17:00:00,8695.65,0.0,77.85 -2017-06-14 18:00:00,8274.967,0.003,75.39 -2017-06-14 19:00:00,7891.233,0.0,72.28 -2017-06-14 20:00:00,7525.5,0.0,69.83 -2017-06-14 21:00:00,7348.567,0.0,68.33 -2017-06-14 22:00:00,7007.108,0.002,66.93 -2017-06-14 23:00:00,6541.65,0.0,65.94 -2017-06-15 00:00:00,6041.0,0.003,64.61 -2017-06-15 01:00:00,5706.833,0.003,63.82 -2017-06-15 02:00:00,5463.392,0.0,62.73 -2017-06-15 03:00:00,5333.075,0.0,61.93 -2017-06-15 04:00:00,5281.45,0.0,61.35 -2017-06-15 05:00:00,5400.867,0.0,62.4 -2017-06-15 06:00:00,5877.442,0.0,63.84 -2017-06-15 07:00:00,6533.892,0.0,65.55 -2017-06-15 08:00:00,6998.992,0.0,68.23 -2017-06-15 09:00:00,7314.7,0.0,71.21 -2017-06-15 10:00:00,7462.708,0.0,73.42 -2017-06-15 11:00:00,7539.55,0.0,76.44 -2017-06-15 12:00:00,7579.467,0.0,78.05 -2017-06-15 13:00:00,7583.6,0.0,78.81 -2017-06-15 14:00:00,7589.717,0.0,77.95 -2017-06-15 15:00:00,7629.933,0.0,77.38 -2017-06-15 16:00:00,7645.442,0.0,74.19 -2017-06-15 17:00:00,7555.833,0.0,71.89 -2017-06-15 18:00:00,7229.583,0.0,69.51 -2017-06-15 19:00:00,6914.592,0.0,67.06 -2017-06-15 20:00:00,6686.583,0.0,65.26 -2017-06-15 21:00:00,6551.217,0.0,64.01 -2017-06-15 22:00:00,6247.375,0.0,63.29 -2017-06-15 23:00:00,5840.325,0.0,62.07 -2017-06-16 00:00:00,5405.683,0.0,60.92 -2017-06-16 01:00:00,5134.417,0.0,60.29 -2017-06-16 02:00:00,4944.792,0.0,60.25 -2017-06-16 03:00:00,4834.758,0.0,60.01 -2017-06-16 04:00:00,4819.108,0.0,60.13 -2017-06-16 05:00:00,4982.125,0.0,61.8 -2017-06-16 06:00:00,5483.708,0.0,62.78 -2017-06-16 07:00:00,6120.242,0.0,63.19 -2017-06-16 08:00:00,6599.5,0.0,63.58 -2017-06-16 09:00:00,6883.183,0.0,64.25 -2017-06-16 10:00:00,6998.225,0.0,64.49 -2017-06-16 11:00:00,7063.808,0.0,64.86 -2017-06-16 12:00:00,7063.442,0.0,65.4 -2017-06-16 13:00:00,7063.567,0.0,66.22 -2017-06-16 14:00:00,7032.092,0.0,66.95 -2017-06-16 15:00:00,7035.0,0.0,67.44 -2017-06-16 16:00:00,7021.158,0.0,67.59 -2017-06-16 17:00:00,6937.283,0.0021,66.69 -2017-06-16 18:00:00,6693.008,0.0,66.26 -2017-06-16 19:00:00,6503.492,0.0,66.12 -2017-06-16 20:00:00,6347.217,0.0,65.68 -2017-06-16 21:00:00,6242.833,0.0,65.56 -2017-06-16 22:00:00,5987.533,0.0,65.57 -2017-06-16 23:00:00,5647.7,0.0,65.43 -2017-06-17 00:00:00,5302.858,0.0,65.41 -2017-06-17 01:00:00,5047.592,0.0,65.42 -2017-06-17 02:00:00,4871.908,0.0,66.31 -2017-06-17 03:00:00,4759.758,0.0,66.41 -2017-06-17 04:00:00,4707.058,0.0,66.27 -2017-06-17 05:00:00,4723.425,0.0,66.19 -2017-06-17 06:00:00,4862.117,0.0,66.51 -2017-06-17 07:00:00,5146.575,0.0059,66.79 -2017-06-17 08:00:00,5503.958,0.0,67.61 -2017-06-17 09:00:00,5830.0,0.0,68.11 -2017-06-17 10:00:00,6135.992,0.0,69.11 -2017-06-17 11:00:00,6332.525,0.0075,70.32 -2017-06-17 12:00:00,6365.083,0.183,71.96 -2017-06-17 13:00:00,6302.758,0.1617,73.34 -2017-06-17 14:00:00,6252.042,0.0,74.81 -2017-06-17 15:00:00,6288.358,0.0,75.41 -2017-06-17 16:00:00,6349.658,0.0,75.63 -2017-06-17 17:00:00,6333.517,0.0,73.69 -2017-06-17 18:00:00,6290.983,0.0,71.31 -2017-06-17 19:00:00,6234.242,0.0,70.36 -2017-06-17 20:00:00,6215.383,0.003,70.09 -2017-06-17 21:00:00,6196.158,0.0,69.27 -2017-06-17 22:00:00,6054.3,0.0,68.92 -2017-06-17 23:00:00,5836.767,0.0,68.39 -2017-06-18 00:00:00,5580.233,0.0,68.58 -2017-06-18 01:00:00,5324.3,0.0,68.9 -2017-06-18 02:00:00,5131.133,0.0,68.73 -2017-06-18 03:00:00,5037.692,0.0,69.12 -2017-06-18 04:00:00,4975.783,0.0,69.71 -2017-06-18 05:00:00,4967.683,0.0,70.07 -2017-06-18 06:00:00,5048.0,0.0,70.61 -2017-06-18 07:00:00,5277.517,0.0,71.64 -2017-06-18 08:00:00,5639.65,0.0,72.82 -2017-06-18 09:00:00,6056.858,0.0,74.61 -2017-06-18 10:00:00,6451.692,0.0,76.58 -2017-06-18 11:00:00,6841.475,0.0,79.96 -2017-06-18 12:00:00,7114.1,0.0,81.99 -2017-06-18 13:00:00,7277.767,0.0,82.55 -2017-06-18 14:00:00,7377.917,0.0,82.97 -2017-06-18 15:00:00,7436.833,0.0135,82.76 -2017-06-18 16:00:00,7507.35,0.0,81.77 -2017-06-18 17:00:00,7549.858,0.0,78.95 -2017-06-18 18:00:00,7485.825,0.0,78.0 -2017-06-18 19:00:00,7375.283,0.0,76.76 -2017-06-18 20:00:00,7333.917,0.0,75.83 -2017-06-18 21:00:00,7385.467,0.0,76.25 -2017-06-18 22:00:00,7243.358,0.0,75.48 -2017-06-18 23:00:00,6935.308,0.0,74.69 -2017-06-19 00:00:00,6579.225,0.0,74.25 -2017-06-19 01:00:00,6268.883,0.0,74.17 -2017-06-19 02:00:00,6064.65,0.0,73.27 -2017-06-19 03:00:00,5968.942,0.0,75.3 -2017-06-19 04:00:00,5982.967,0.0,74.51 -2017-06-19 05:00:00,6171.292,0.0,74.93 -2017-06-19 06:00:00,6695.542,0.0,75.75 -2017-06-19 07:00:00,7447.575,0.0,77.48 -2017-06-19 08:00:00,8122.625,0.0,80.19 -2017-06-19 09:00:00,8607.809,0.0,81.54 -2017-06-19 10:00:00,8935.283,0.0,83.77 -2017-06-19 11:00:00,9147.491,0.0,85.86 -2017-06-19 12:00:00,9280.3,0.0,86.16 -2017-06-19 13:00:00,9408.6,0.0,85.13 -2017-06-19 14:00:00,9468.616,0.0,86.56 -2017-06-19 15:00:00,9592.475,0.0,85.4 -2017-06-19 16:00:00,9596.134,0.2511,83.22 -2017-06-19 17:00:00,9045.55,0.0062,80.26 -2017-06-19 18:00:00,8558.292,0.0754,76.57 -2017-06-19 19:00:00,8200.241,0.1082,75.53 -2017-06-19 20:00:00,7940.775,0.0054,74.16 -2017-06-19 21:00:00,7713.692,0.0178,73.33 -2017-06-19 22:00:00,7307.975,0.0,72.57 -2017-06-19 23:00:00,6798.667,0.0,70.57 -2017-06-20 00:00:00,6322.433,0.0017,69.94 -2017-06-20 01:00:00,6002.425,0.0089,70.31 -2017-06-20 02:00:00,5793.275,0.0,70.54 -2017-06-20 03:00:00,5722.533,0.0,71.14 -2017-06-20 04:00:00,5752.233,0.0,71.3 -2017-06-20 05:00:00,5957.133,0.0,71.35 -2017-06-20 06:00:00,6491.158,0.0,71.99 -2017-06-20 07:00:00,7177.533,0.0,73.04 -2017-06-20 08:00:00,7699.892,0.0,74.56 -2017-06-20 09:00:00,8021.117,0.0,76.82 -2017-06-20 10:00:00,8163.817,0.0,78.65 -2017-06-20 11:00:00,8228.575,0.003,80.31 -2017-06-20 12:00:00,8267.759,0.0,81.77 -2017-06-20 13:00:00,8363.691,0.0,83.4 -2017-06-20 14:00:00,8447.991,0.0,84.48 -2017-06-20 15:00:00,8559.717,0.002,85.01 -2017-06-20 16:00:00,8598.892,0.0,84.94 -2017-06-20 17:00:00,8531.667,0.0,83.19 -2017-06-20 18:00:00,8257.225,0.0,81.83 -2017-06-20 19:00:00,7984.067,0.0,79.57 -2017-06-20 20:00:00,7752.492,0.0,77.59 -2017-06-20 21:00:00,7667.042,0.003,75.51 -2017-06-20 22:00:00,7366.167,0.0149,74.09 -2017-06-20 23:00:00,6916.125,0.0,72.77 -2017-06-21 00:00:00,6444.833,0.0,71.54 -2017-06-21 01:00:00,6117.4,0.0,71.2 -2017-06-21 02:00:00,5912.167,0.0,70.13 -2017-06-21 03:00:00,5786.158,0.0,69.22 -2017-06-21 04:00:00,5756.358,0.0,68.48 -2017-06-21 05:00:00,5877.875,0.0,68.82 -2017-06-21 06:00:00,6402.258,0.003,71.13 -2017-06-21 07:00:00,7096.783,0.0,73.21 -2017-06-21 08:00:00,7654.283,0.0,76.04 -2017-06-21 09:00:00,7987.233,0.0,78.97 -2017-06-21 10:00:00,8205.475,0.0,80.73 -2017-06-21 11:00:00,8368.083,0.0,83.02 -2017-06-21 12:00:00,8482.658,0.0,85.37 -2017-06-21 13:00:00,8414.792,0.0,83.77 -2017-06-21 14:00:00,8465.3,0.0,84.78 -2017-06-21 15:00:00,8648.184,0.0022,85.48 -2017-06-21 16:00:00,8748.658,0.0,84.28 -2017-06-21 17:00:00,8630.009,0.0,82.7 -2017-06-21 18:00:00,8394.167,0.0,79.68 -2017-06-21 19:00:00,8097.683,0.0,78.07 -2017-06-21 20:00:00,7829.975,0.0,76.54 -2017-06-21 21:00:00,7726.767,0.0,75.16 -2017-06-21 22:00:00,7416.517,0.0,73.57 -2017-06-21 23:00:00,6927.492,0.0,71.59 -2017-06-22 00:00:00,6414.183,0.0,70.31 -2017-06-22 01:00:00,6037.508,0.0,68.67 -2017-06-22 02:00:00,5781.967,0.0,67.25 -2017-06-22 03:00:00,5621.75,0.0,66.03 -2017-06-22 04:00:00,5552.217,0.0,64.9 -2017-06-22 05:00:00,5674.767,0.0,64.76 -2017-06-22 06:00:00,6165.708,0.0,66.99 -2017-06-22 07:00:00,6856.283,0.0,69.42 -2017-06-22 08:00:00,7419.475,0.0,72.52 -2017-06-22 09:00:00,7805.158,0.0,75.93 -2017-06-22 10:00:00,8027.708,0.0,78.77 -2017-06-22 11:00:00,8169.775,0.0,80.86 -2017-06-22 12:00:00,8248.642,0.0,82.19 -2017-06-22 13:00:00,8315.45,0.0,83.54 -2017-06-22 14:00:00,8382.542,0.0,84.6 -2017-06-22 15:00:00,8562.1,0.002,84.62 -2017-06-22 16:00:00,8704.283,0.0,83.86 -2017-06-22 17:00:00,8685.283,0.0,82.47 -2017-06-22 18:00:00,8381.425,0.0,79.52 -2017-06-22 19:00:00,8128.808,0.0,77.33 -2017-06-22 20:00:00,7949.508,0.0,75.49 -2017-06-22 21:00:00,7942.392,0.0,74.44 -2017-06-22 22:00:00,7764.175,0.0,73.9 -2017-06-22 23:00:00,7455.817,0.002,73.56 -2017-06-23 00:00:00,7027.767,0.0,73.51 -2017-06-23 01:00:00,6698.317,0.0,73.33 -2017-06-23 02:00:00,6463.825,0.0,72.75 -2017-06-23 03:00:00,6325.775,0.0,72.59 -2017-06-23 04:00:00,6296.908,0.0,72.36 -2017-06-23 05:00:00,6479.658,0.0,72.95 -2017-06-23 06:00:00,7025.083,0.0,75.14 -2017-06-23 07:00:00,7773.642,0.003,76.84 -2017-06-23 08:00:00,8348.875,0.0,78.58 -2017-06-23 09:00:00,8754.092,0.0,80.74 -2017-06-23 10:00:00,8970.167,0.0,81.58 -2017-06-23 11:00:00,9102.217,0.0,82.89 -2017-06-23 12:00:00,9219.65,0.0,81.93 -2017-06-23 13:00:00,9227.542,0.002,81.44 -2017-06-23 14:00:00,9006.592,0.0,81.68 -2017-06-23 15:00:00,9109.866,0.0,82.16 -2017-06-23 16:00:00,9251.259,0.0,83.49 -2017-06-23 17:00:00,9260.908,0.0,83.03 -2017-06-23 18:00:00,9010.425,0.0078,81.75 -2017-06-23 19:00:00,8734.741,0.0094,78.36 -2017-06-23 20:00:00,8456.55,0.003,77.65 -2017-06-23 21:00:00,8328.033,0.0,77.18 -2017-06-23 22:00:00,8117.892,0.0,76.92 -2017-06-23 23:00:00,7746.142,0.0,77.14 -2017-06-24 00:00:00,7294.442,0.0,76.78 -2017-06-24 01:00:00,6919.717,0.0,76.4 -2017-06-24 02:00:00,6555.517,0.0035,75.87 -2017-06-24 03:00:00,6307.45,0.0,74.86 -2017-06-24 04:00:00,6160.775,0.0186,74.1 -2017-06-24 05:00:00,6113.992,0.0521,71.68 -2017-06-24 06:00:00,6183.558,0.2071,70.56 -2017-06-24 07:00:00,6406.517,0.1229,70.87 -2017-06-24 08:00:00,6616.367,0.0,73.33 -2017-06-24 09:00:00,7063.242,0.0,75.64 -2017-06-24 10:00:00,7600.175,0.0,79.89 -2017-06-24 11:00:00,7868.567,0.0,81.71 -2017-06-24 12:00:00,7820.533,0.002,82.83 -2017-06-24 13:00:00,7709.25,0.0,83.8 -2017-06-24 14:00:00,7706.942,0.002,85.19 -2017-06-24 15:00:00,7698.65,0.0,86.06 -2017-06-24 16:00:00,7658.142,0.0,83.65 -2017-06-24 17:00:00,7591.108,0.0,82.45 -2017-06-24 18:00:00,7567.142,0.0,81.0 -2017-06-24 19:00:00,7496.508,0.0,78.87 -2017-06-24 20:00:00,7370.7,0.0,76.75 -2017-06-24 21:00:00,7379.375,0.003,75.1 -2017-06-24 22:00:00,7247.217,0.0,73.79 -2017-06-24 23:00:00,6964.892,0.0,72.67 -2017-06-25 00:00:00,6595.508,0.002,71.53 -2017-06-25 01:00:00,6201.292,0.0,70.45 -2017-06-25 02:00:00,5919.017,0.0,69.22 -2017-06-25 03:00:00,5729.042,0.0,67.49 -2017-06-25 04:00:00,5581.467,0.0,68.06 -2017-06-25 05:00:00,5471.825,0.0,67.12 -2017-06-25 06:00:00,5528.592,0.0,68.89 -2017-06-25 07:00:00,5780.992,0.0,70.77 -2017-06-25 08:00:00,6104.417,0.0,72.95 -2017-06-25 09:00:00,6463.075,0.0,75.32 -2017-06-25 10:00:00,6784.708,0.0,77.68 -2017-06-25 11:00:00,6948.042,0.0,80.56 -2017-06-25 12:00:00,7088.217,0.0,82.23 -2017-06-25 13:00:00,7189.025,0.0,82.91 -2017-06-25 14:00:00,7239.158,0.0,82.29 -2017-06-25 15:00:00,7160.208,0.0027,81.35 -2017-06-25 16:00:00,7128.625,0.0,80.4 -2017-06-25 17:00:00,7151.108,0.0,77.25 -2017-06-25 18:00:00,7128.592,0.003,76.65 -2017-06-25 19:00:00,7050.133,0.0,75.0 -2017-06-25 20:00:00,7027.667,0.0,73.53 -2017-06-25 21:00:00,7150.967,0.003,72.19 -2017-06-25 22:00:00,7028.225,0.0,71.79 -2017-06-25 23:00:00,6699.025,0.0017,70.19 -2017-06-26 00:00:00,6265.967,0.0,68.73 -2017-06-26 01:00:00,5813.675,0.0,67.24 -2017-06-26 02:00:00,5570.1,0.0,66.04 -2017-06-26 03:00:00,5409.542,0.0,65.45 -2017-06-26 04:00:00,5369.95,0.0,63.2 -2017-06-26 05:00:00,5486.583,0.0,62.96 -2017-06-26 06:00:00,5868.792,0.0,64.92 -2017-06-26 07:00:00,6444.208,0.0,67.1 -2017-06-26 08:00:00,6952.6,0.0,69.37 -2017-06-26 09:00:00,7329.95,0.0,71.66 -2017-06-26 10:00:00,7512.442,0.0,73.63 -2017-06-26 11:00:00,7613.958,0.0,75.5 -2017-06-26 12:00:00,7705.825,0.0,76.71 -2017-06-26 13:00:00,7745.067,0.0,77.79 -2017-06-26 14:00:00,7778.092,0.0,79.69 -2017-06-26 15:00:00,7785.125,0.0,79.83 -2017-06-26 16:00:00,7788.583,0.0,77.56 -2017-06-26 17:00:00,7705.283,0.0,77.21 -2017-06-26 18:00:00,7430.908,0.0,75.58 -2017-06-26 19:00:00,7219.375,0.0,73.34 -2017-06-26 20:00:00,7020.625,0.0,71.67 -2017-06-26 21:00:00,6954.7,0.0,69.79 -2017-06-26 22:00:00,6715.9,0.002,68.78 -2017-06-26 23:00:00,6297.517,0.004,67.53 -2017-06-27 00:00:00,5831.817,0.011,66.53 -2017-06-27 01:00:00,5526.833,0.0,65.34 -2017-06-27 02:00:00,5300.208,0.0,65.17 -2017-06-27 03:00:00,5116.708,0.0,63.87 -2017-06-27 04:00:00,5109.817,0.059,63.92 -2017-06-27 05:00:00,5247.633,0.2589,62.71 -2017-06-27 06:00:00,5662.592,0.0,61.73 -2017-06-27 07:00:00,6215.55,0.0,62.88 -2017-06-27 08:00:00,6746.033,0.0166,65.3 -2017-06-27 09:00:00,7148.967,0.0,68.87 -2017-06-27 10:00:00,7241.85,0.0,70.98 -2017-06-27 11:00:00,7377.917,0.0,73.0 -2017-06-27 12:00:00,7478.975,0.0,74.24 -2017-06-27 13:00:00,7592.692,0.0,76.65 -2017-06-27 14:00:00,7687.475,0.0028,78.53 -2017-06-27 15:00:00,7742.008,0.002,77.48 -2017-06-27 16:00:00,7699.65,0.0,75.48 -2017-06-27 17:00:00,7622.917,0.0,73.62 -2017-06-27 18:00:00,7320.75,0.0,72.61 -2017-06-27 19:00:00,7033.292,0.0,70.97 -2017-06-27 20:00:00,6770.4,0.0,68.97 -2017-06-27 21:00:00,6655.9,0.0,66.83 -2017-06-27 22:00:00,6392.3,0.0,65.43 -2017-06-27 23:00:00,5972.05,0.0,64.14 -2017-06-28 00:00:00,5517.708,0.0,63.18 -2017-06-28 01:00:00,5177.558,0.0,62.26 -2017-06-28 02:00:00,4954.342,0.0,60.94 -2017-06-28 03:00:00,4807.4,0.0,60.1 -2017-06-28 04:00:00,4791.567,0.0,58.87 -2017-06-28 05:00:00,4932.542,0.0,59.62 -2017-06-28 06:00:00,5387.383,0.0,61.54 -2017-06-28 07:00:00,5998.442,0.0,63.35 -2017-06-28 08:00:00,6489.55,0.0,66.72 -2017-06-28 09:00:00,6837.6,0.0,69.83 -2017-06-28 10:00:00,7037.467,0.0,72.4 -2017-06-28 11:00:00,7129.233,0.0,74.24 -2017-06-28 12:00:00,7234.892,0.0,76.03 -2017-06-28 13:00:00,7352.35,0.0,77.28 -2017-06-28 14:00:00,7418.95,0.0,78.73 -2017-06-28 15:00:00,7500.633,0.0,79.66 -2017-06-28 16:00:00,7599.108,0.0,80.3 -2017-06-28 17:00:00,7600.458,0.0,79.35 -2017-06-28 18:00:00,7331.65,0.0,77.42 -2017-06-28 19:00:00,7058.783,0.0,75.91 -2017-06-28 20:00:00,6870.083,0.0,72.44 -2017-06-28 21:00:00,6800.017,0.0,70.41 -2017-06-28 22:00:00,6550.008,0.0,68.98 -2017-06-28 23:00:00,6136.708,0.0,68.1 -2017-06-29 00:00:00,5718.292,0.0,67.55 -2017-06-29 01:00:00,5365.642,0.0,67.16 -2017-06-29 02:00:00,5138.683,0.0,66.24 -2017-06-29 03:00:00,5007.042,0.0,65.18 -2017-06-29 04:00:00,4999.5,0.0,64.9 -2017-06-29 05:00:00,5178.292,0.0,65.47 -2017-06-29 06:00:00,5647.383,0.0,67.44 -2017-06-29 07:00:00,6257.417,0.0,69.55 -2017-06-29 08:00:00,6800.808,0.0,72.07 -2017-06-29 09:00:00,7257.65,0.0,74.65 -2017-06-29 10:00:00,7556.617,0.0,77.76 -2017-06-29 11:00:00,7762.125,0.0,80.07 -2017-06-29 12:00:00,7940.967,0.0,83.02 -2017-06-29 13:00:00,8092.267,0.0,84.5 -2017-06-29 14:00:00,8206.592,0.0,84.99 -2017-06-29 15:00:00,8304.95,0.003,84.11 -2017-06-29 16:00:00,8362.108,0.0,81.57 -2017-06-29 17:00:00,8320.725,0.0,79.71 -2017-06-29 18:00:00,7971.833,0.0,78.62 -2017-06-29 19:00:00,7673.067,0.0,76.88 -2017-06-29 20:00:00,7438.892,0.0,75.68 -2017-06-29 21:00:00,7331.458,0.0,74.87 -2017-06-29 22:00:00,7072.7,0.0,74.27 -2017-06-29 23:00:00,6663.775,0.0,73.8 -2017-06-30 00:00:00,6195.542,0.0,73.2 -2017-06-30 01:00:00,5845.6,0.0,72.64 -2017-06-30 02:00:00,5602.325,0.0,71.42 -2017-06-30 03:00:00,5492.992,0.0,71.49 -2017-06-30 04:00:00,5483.417,0.0,70.91 -2017-06-30 05:00:00,5674.642,0.0,72.04 -2017-06-30 06:00:00,6154.408,0.0,73.67 -2017-06-30 07:00:00,6762.708,0.0,74.78 -2017-06-30 08:00:00,7350.792,0.0,77.8 -2017-06-30 09:00:00,7807.533,0.0,80.49 -2017-06-30 10:00:00,8195.358,0.0,83.07 -2017-06-30 11:00:00,8489.125,0.0,85.91 -2017-06-30 12:00:00,8651.634,0.0,87.66 -2017-06-30 13:00:00,8841.267,0.0,89.12 -2017-06-30 14:00:00,8994.559,0.0,89.96 -2017-06-30 15:00:00,9115.358,0.0,89.53 -2017-06-30 16:00:00,9207.991,0.0,88.11 -2017-06-30 17:00:00,9177.425,0.0,84.4 -2017-06-30 18:00:00,8849.875,0.0,83.56 -2017-06-30 19:00:00,8463.333,0.0,81.47 -2017-06-30 20:00:00,8223.667,0.0,79.97 -2017-06-30 21:00:00,8097.842,0.0,77.44 -2017-06-30 22:00:00,7834.817,0.0023,77.22 -2017-06-30 23:00:00,7418.7,0.0,76.3 -2017-07-01 00:00:00,6932.958,0.0,76.11 -2017-07-01 01:00:00,6565.8,0.0,73.0 -2017-07-01 02:00:00,6272.858,0.0,72.28 -2017-07-01 03:00:00,6072.192,0.0,72.11 -2017-07-01 04:00:00,5943.833,0.0,71.16 -2017-07-01 05:00:00,5896.6,0.0,71.59 -2017-07-01 06:00:00,6031.808,0.0042,74.3 -2017-07-01 07:00:00,6330.225,0.0,75.49 -2017-07-01 08:00:00,6712.583,0.0,76.2 -2017-07-01 09:00:00,7066.858,0.0,76.66 -2017-07-01 10:00:00,7392.975,0.0,78.04 -2017-07-01 11:00:00,7685.392,0.0,79.94 -2017-07-01 12:00:00,7833.292,0.0,80.38 -2017-07-01 13:00:00,7819.55,0.0,81.24 -2017-07-01 14:00:00,7727.95,0.0058,82.27 -2017-07-01 15:00:00,7546.658,0.0,80.26 -2017-07-01 16:00:00,7662.45,0.0,80.15 -2017-07-01 17:00:00,7680.725,0.0,79.73 -2017-07-01 18:00:00,7509.592,0.0,78.34 -2017-07-01 19:00:00,7343.483,0.002,75.7 -2017-07-01 20:00:00,7119.467,0.0,75.0 -2017-07-01 21:00:00,7062.217,0.0,74.27 -2017-07-01 22:00:00,6893.325,0.0,73.84 -2017-07-01 23:00:00,6625.1,0.0,73.2 -2017-07-02 00:00:00,6332.433,0.0,73.0 -2017-07-02 01:00:00,6075.542,0.0,72.58 -2017-07-02 02:00:00,5878.017,0.0,71.71 -2017-07-02 03:00:00,5745.625,0.0,70.79 -2017-07-02 04:00:00,5659.55,0.0,72.21 -2017-07-02 05:00:00,5606.167,0.0,72.03 -2017-07-02 06:00:00,5675.642,0.0,73.06 -2017-07-02 07:00:00,5946.1,0.0,75.25 -2017-07-02 08:00:00,6291.983,0.0,77.71 -2017-07-02 09:00:00,6631.942,0.0,80.63 -2017-07-02 10:00:00,6941.75,0.0,82.91 -2017-07-02 11:00:00,7161.358,0.0,85.04 -2017-07-02 12:00:00,7345.033,0.0,86.48 -2017-07-02 13:00:00,7489.683,0.0,88.52 -2017-07-02 14:00:00,7580.092,0.0,90.0 -2017-07-02 15:00:00,7666.158,0.0,90.9 -2017-07-02 16:00:00,7738.542,0.0,89.72 -2017-07-02 17:00:00,7755.567,0.0,86.8 -2017-07-02 18:00:00,7646.317,0.0,85.06 -2017-07-02 19:00:00,7553.55,0.0,81.74 -2017-07-02 20:00:00,7491.4,0.0,79.83 -2017-07-02 21:00:00,7565.9,0.004,78.26 -2017-07-02 22:00:00,7497.9,0.0052,77.12 -2017-07-02 23:00:00,7253.642,0.0,76.12 -2017-07-03 00:00:00,6947.55,0.0,75.22 -2017-07-03 01:00:00,6624.342,0.0,74.36 -2017-07-03 02:00:00,6358.542,0.0,72.75 -2017-07-03 03:00:00,6201.675,0.0,71.09 -2017-07-03 04:00:00,6141.683,0.0,70.45 -2017-07-03 05:00:00,6246.45,0.0,70.46 -2017-07-03 06:00:00,6641.417,0.003,73.39 -2017-07-03 07:00:00,7190.317,0.0,76.18 -2017-07-03 08:00:00,7708.458,0.0,78.42 -2017-07-03 09:00:00,8088.442,0.0,81.17 -2017-07-03 10:00:00,8325.542,0.0,83.62 -2017-07-03 11:00:00,8500.533,0.0,85.9 -2017-07-03 12:00:00,8618.325,0.0,88.13 -2017-07-03 13:00:00,8750.275,0.0,89.43 -2017-07-03 14:00:00,8840.316,0.0,89.91 -2017-07-03 15:00:00,8873.467,0.0,89.57 -2017-07-03 16:00:00,8858.65,0.0148,86.88 -2017-07-03 17:00:00,8626.017,0.0,85.47 -2017-07-03 18:00:00,8371.458,0.0,83.71 -2017-07-03 19:00:00,8176.717,0.0,81.78 -2017-07-03 20:00:00,7946.55,0.0,79.07 -2017-07-03 21:00:00,7874.142,0.002,77.89 -2017-07-03 22:00:00,7629.85,0.0,76.6 -2017-07-03 23:00:00,7212.217,0.0,75.22 -2017-07-04 00:00:00,6754.592,0.0034,74.14 -2017-07-04 01:00:00,6409.692,0.0,73.01 -2017-07-04 02:00:00,6167.55,0.0,71.43 -2017-07-04 03:00:00,5963.225,0.0,69.65 -2017-07-04 04:00:00,5805.733,0.0,68.59 -2017-07-04 05:00:00,5724.925,0.002,68.27 -2017-07-04 06:00:00,5798.342,0.0065,69.08 -2017-07-04 07:00:00,6006.425,0.0,70.84 -2017-07-04 08:00:00,6244.175,0.0,73.88 -2017-07-04 09:00:00,6409.467,0.0,76.02 -2017-07-04 10:00:00,6568.908,0.0,77.71 -2017-07-04 11:00:00,6834.308,0.0,80.44 -2017-07-04 12:00:00,6965.375,0.0,82.65 -2017-07-04 13:00:00,7096.492,0.0,85.05 -2017-07-04 14:00:00,7236.558,0.0,86.86 -2017-07-04 15:00:00,7349.733,0.0,87.8 -2017-07-04 16:00:00,7356.225,0.0,87.19 -2017-07-04 17:00:00,7277.208,0.0,84.05 -2017-07-04 18:00:00,7220.483,0.0,82.22 -2017-07-04 19:00:00,7089.142,0.0,80.35 -2017-07-04 20:00:00,7010.333,0.0,77.91 -2017-07-04 21:00:00,6983.05,0.0,75.99 -2017-07-04 22:00:00,6876.608,0.002,75.03 -2017-07-04 23:00:00,6687.508,0.0,73.7 -2017-07-05 00:00:00,6408.483,0.0,73.03 -2017-07-05 01:00:00,6136.375,0.0,71.42 -2017-07-05 02:00:00,5937.758,0.0,69.94 -2017-07-05 03:00:00,5836.908,0.0,68.72 -2017-07-05 04:00:00,5814.158,0.0,67.89 -2017-07-05 05:00:00,5888.292,0.003,67.91 -2017-07-05 06:00:00,6311.892,0.0129,70.07 -2017-07-05 07:00:00,6933.667,0.0,72.33 -2017-07-05 08:00:00,7484.85,0.0,75.08 -2017-07-05 09:00:00,7869.908,0.0,78.58 -2017-07-05 10:00:00,8149.5,0.0,81.23 -2017-07-05 11:00:00,8379.634,0.0,83.25 -2017-07-05 12:00:00,8548.309,0.0,83.92 -2017-07-05 13:00:00,8621.042,0.0,84.83 -2017-07-05 14:00:00,8634.467,0.0,85.41 -2017-07-05 15:00:00,8664.775,0.0,84.64 -2017-07-05 16:00:00,8675.525,0.0,82.89 -2017-07-05 17:00:00,8561.741,0.0,81.17 -2017-07-05 18:00:00,8217.358,0.0,79.0 -2017-07-05 19:00:00,7866.333,0.0,76.48 -2017-07-05 20:00:00,7570.858,0.0,74.06 -2017-07-05 21:00:00,7455.425,0.0,72.18 -2017-07-05 22:00:00,7197.425,0.0,70.91 -2017-07-05 23:00:00,6780.583,0.0,69.53 -2017-07-06 00:00:00,6341.817,0.0,69.21 -2017-07-06 01:00:00,6014.15,0.0,68.13 -2017-07-06 02:00:00,5791.792,0.0,68.23 -2017-07-06 03:00:00,5671.725,0.0,68.04 -2017-07-06 04:00:00,5663.983,0.0,68.31 -2017-07-06 05:00:00,5848.875,0.0,68.7 -2017-07-06 06:00:00,6306.617,0.0,70.31 -2017-07-06 07:00:00,6850.083,0.004,71.07 -2017-07-06 08:00:00,7261.533,0.003,73.08 -2017-07-06 09:00:00,7544.933,0.004,74.47 -2017-07-06 10:00:00,7694.133,0.009,74.93 -2017-07-06 11:00:00,7776.008,0.0,76.38 -2017-07-06 12:00:00,7795.575,0.0,78.7 -2017-07-06 13:00:00,7793.183,0.0,79.84 -2017-07-06 14:00:00,7842.517,0.0,80.23 -2017-07-06 15:00:00,7914.883,0.0,79.76 -2017-07-06 16:00:00,7936.775,0.0,80.41 -2017-07-06 17:00:00,7815.675,0.0,78.93 -2017-07-06 18:00:00,7534.35,0.0,75.27 -2017-07-06 19:00:00,7299.533,0.0,72.98 -2017-07-06 20:00:00,7186.067,0.0,71.51 -2017-07-06 21:00:00,7139.833,0.0028,70.71 -2017-07-06 22:00:00,6915.1,0.0,69.73 -2017-07-06 23:00:00,6580.233,0.0094,69.94 -2017-07-07 00:00:00,6187.95,0.0,70.07 -2017-07-07 01:00:00,5881.533,0.0,70.12 -2017-07-07 02:00:00,5695.667,0.003,68.83 -2017-07-07 03:00:00,5561.333,0.003,68.75 -2017-07-07 04:00:00,5564.483,0.0,68.49 -2017-07-07 05:00:00,5776.108,0.0,68.23 -2017-07-07 06:00:00,6251.108,0.0,67.97 -2017-07-07 07:00:00,6794.683,0.021,68.54 -2017-07-07 08:00:00,7221.417,0.0,68.95 -2017-07-07 09:00:00,7519.975,0.0035,71.19 -2017-07-07 10:00:00,7640.667,0.5545,71.2 -2017-07-07 11:00:00,7623.375,0.0319,70.19 -2017-07-07 12:00:00,7683.842,0.0,69.71 -2017-07-07 13:00:00,7771.933,0.0,70.89 -2017-07-07 14:00:00,7897.058,0.0,71.31 -2017-07-07 15:00:00,8017.017,0.0,74.88 -2017-07-07 16:00:00,8157.658,0.0,77.28 -2017-07-07 17:00:00,8235.934,0.0,78.07 -2017-07-07 18:00:00,8035.617,0.0,77.06 -2017-07-07 19:00:00,7773.125,0.0,75.86 -2017-07-07 20:00:00,7570.608,0.1527,73.72 -2017-07-07 21:00:00,7400.4,0.0,72.29 -2017-07-07 22:00:00,7139.592,0.0034,71.58 -2017-07-07 23:00:00,6818.467,0.0,71.52 -2017-07-08 00:00:00,6364.617,0.0,71.17 -2017-07-08 01:00:00,6021.767,0.004,70.52 -2017-07-08 02:00:00,5790.475,0.0,69.74 -2017-07-08 03:00:00,5649.608,0.0,68.33 -2017-07-08 04:00:00,5535.983,0.004,67.63 -2017-07-08 05:00:00,5494.2,0.0,67.61 -2017-07-08 06:00:00,5587.017,0.0,70.27 -2017-07-08 07:00:00,5936.35,0.0,71.52 -2017-07-08 08:00:00,6379.017,0.0,72.98 -2017-07-08 09:00:00,6717.933,0.0,75.05 -2017-07-08 10:00:00,7095.933,0.0,77.6 -2017-07-08 11:00:00,7391.233,0.0,80.35 -2017-07-08 12:00:00,7568.675,0.0,81.98 -2017-07-08 13:00:00,7665.7,0.0,82.86 -2017-07-08 14:00:00,7707.942,0.0,83.84 -2017-07-08 15:00:00,7713.7,0.0,83.36 -2017-07-08 16:00:00,7733.4,0.0,82.9 -2017-07-08 17:00:00,7635.417,0.0,81.46 -2017-07-08 18:00:00,7468.3,0.0,78.77 -2017-07-08 19:00:00,7303.767,0.0031,75.22 -2017-07-08 20:00:00,7126.875,0.0,74.09 -2017-07-08 21:00:00,7088.792,0.0,73.46 -2017-07-08 22:00:00,6918.942,0.0,71.44 -2017-07-08 23:00:00,6610.033,0.0,71.67 -2017-07-09 00:00:00,6292.9,0.0,70.66 -2017-07-09 01:00:00,5969.142,0.0,68.58 -2017-07-09 02:00:00,5704.742,0.0,68.01 -2017-07-09 03:00:00,5494.083,0.0,66.61 -2017-07-09 04:00:00,5331.433,0.0,65.64 -2017-07-09 05:00:00,5218.567,0.0,65.76 -2017-07-09 06:00:00,5229.775,0.0,67.68 -2017-07-09 07:00:00,5435.667,0.0,69.99 -2017-07-09 08:00:00,5718.267,0.0,72.86 -2017-07-09 09:00:00,6020.017,0.0,75.37 -2017-07-09 10:00:00,6291.05,0.0,77.6 -2017-07-09 11:00:00,6502.892,0.0,79.66 -2017-07-09 12:00:00,6636.517,0.0,81.47 -2017-07-09 13:00:00,6715.342,0.0,83.18 -2017-07-09 14:00:00,6806.658,0.0,84.34 -2017-07-09 15:00:00,6899.325,0.0,85.04 -2017-07-09 16:00:00,6957.358,0.0,84.76 -2017-07-09 17:00:00,7008.433,0.0,82.1 -2017-07-09 18:00:00,7001.725,0.0,80.72 -2017-07-09 19:00:00,6912.975,0.0,77.97 -2017-07-09 20:00:00,6872.292,0.0,75.51 -2017-07-09 21:00:00,6951.917,0.0,74.06 -2017-07-09 22:00:00,6822.192,0.0,72.64 -2017-07-09 23:00:00,6560.525,0.003,71.38 -2017-07-10 00:00:00,6211.717,0.0,70.46 -2017-07-10 01:00:00,5903.408,0.0,69.48 -2017-07-10 02:00:00,5686.7,0.0,68.07 -2017-07-10 03:00:00,5556.425,0.0,66.07 -2017-07-10 04:00:00,5538.7,0.0,65.49 -2017-07-10 05:00:00,5685.933,0.0,65.37 -2017-07-10 06:00:00,6113.992,0.0157,68.53 -2017-07-10 07:00:00,6739.642,0.0,70.58 -2017-07-10 08:00:00,7283.667,0.0025,74.14 -2017-07-10 09:00:00,7652.783,0.0,77.59 -2017-07-10 10:00:00,7928.992,0.0,80.27 -2017-07-10 11:00:00,8078.7,0.0,82.39 -2017-07-10 12:00:00,8230.417,0.0,83.67 -2017-07-10 13:00:00,8393.9,0.0,84.16 -2017-07-10 14:00:00,8623.825,0.0,83.77 -2017-07-10 15:00:00,8840.708,0.0,82.66 -2017-07-10 16:00:00,8917.417,0.0,80.83 -2017-07-10 17:00:00,8905.809,0.0,80.2 -2017-07-10 19:00:00,8239.618,0.0,77.82 -2017-07-10 20:00:00,8081.908,0.0,76.84 -2017-07-10 21:00:00,8010.625,0.0,75.8 -2017-07-10 22:00:00,7731.575,0.0,74.93 -2017-07-10 23:00:00,7293.792,0.0,74.16 -2017-07-11 00:00:00,6839.892,0.0,73.49 -2017-07-11 01:00:00,6502.2,0.0,73.24 -2017-07-11 02:00:00,6305.333,0.0,72.64 -2017-07-11 03:00:00,6171.258,0.0,71.73 -2017-07-11 04:00:00,6154.908,0.0,71.4 -2017-07-11 05:00:00,6355.883,0.0,71.53 -2017-07-11 06:00:00,6852.492,0.0,73.82 -2017-07-11 07:00:00,7556.533,0.0,75.21 -2017-07-11 08:00:00,8165.35,0.0,77.03 -2017-07-11 09:00:00,8435.6,0.0,79.1 -2017-07-11 10:00:00,8542.342,0.0,80.49 -2017-07-11 11:00:00,8811.975,0.0,82.61 -2017-07-11 12:00:00,9046.691,0.0,83.18 -2017-07-11 13:00:00,9205.042,0.0,83.89 -2017-07-11 14:00:00,9279.05,0.0,84.87 -2017-07-11 15:00:00,9333.05,0.0,84.78 -2017-07-11 16:00:00,9442.642,0.0,84.51 -2017-07-11 17:00:00,9334.708,0.0,83.31 -2017-07-11 18:00:00,9155.892,0.0,81.96 -2017-07-11 19:00:00,9005.95,0.0,80.92 -2017-07-11 20:00:00,8864.184,0.0,79.66 -2017-07-11 21:00:00,8805.675,0.0,78.46 -2017-07-11 22:00:00,8473.958,0.0,77.47 -2017-07-11 23:00:00,7953.05,0.0,75.85 -2017-07-12 00:00:00,7405.4,0.0,74.72 -2017-07-12 01:00:00,7034.458,0.0,73.59 -2017-07-12 02:00:00,6781.658,0.0,73.03 -2017-07-12 03:00:00,6629.867,0.0,72.83 -2017-07-12 04:00:00,6596.7,0.0,72.84 -2017-07-12 05:00:00,6750.342,0.0,73.08 -2017-07-12 06:00:00,7205.742,0.0,75.14 -2017-07-12 07:00:00,7842.467,0.0,76.74 -2017-07-12 08:00:00,8335.509,0.0,79.49 -2017-07-12 09:00:00,8724.717,0.0,82.1 -2017-07-12 10:00:00,9026.2,0.0,84.92 -2017-07-12 11:00:00,9364.533,0.0,87.11 -2017-07-12 12:00:00,9602.042,0.0,89.7 -2017-07-12 13:00:00,9749.975,0.0,90.9 -2017-07-12 14:00:00,9830.9,0.0,91.16 -2017-07-12 15:00:00,9958.417,0.0,90.79 -2017-07-12 16:00:00,10038.11,0.0,87.34 -2017-07-12 17:00:00,10017.77,0.0,85.73 -2017-07-12 18:00:00,9736.983,0.002,84.04 -2017-07-12 19:00:00,9523.975,0.0,79.93 -2017-07-12 20:00:00,9421.525,0.0,79.74 -2017-07-12 21:00:00,9300.908,0.0,78.85 -2017-07-12 22:00:00,8932.517,0.0,78.38 -2017-07-12 23:00:00,8388.358,0.0,77.75 -2017-07-13 00:00:00,7856.117,0.0,77.61 -2017-07-13 01:00:00,7479.9,0.0,77.6 -2017-07-13 02:00:00,7206.442,0.0,77.38 -2017-07-13 03:00:00,7054.092,0.0,76.94 -2017-07-13 04:00:00,7018.208,0.0,76.65 -2017-07-13 05:00:00,7189.392,0.0,76.31 -2017-07-13 06:00:00,7684.167,0.003,77.49 -2017-07-13 07:00:00,8388.975,0.0,79.56 -2017-07-13 08:00:00,8984.184,0.0,82.81 -2017-07-13 09:00:00,9491.358,0.0,86.34 -2017-07-13 10:00:00,9895.884,0.0,89.44 -2017-07-13 11:00:00,10163.54,0.0,91.28 -2017-07-13 12:00:00,10337.49,0.0,91.88 -2017-07-13 13:00:00,10350.07,0.0,92.4 -2017-07-13 14:00:00,10424.34,0.0,92.72 -2017-07-13 15:00:00,10451.17,0.0,92.24 -2017-07-13 16:00:00,10422.08,0.0,90.13 -2017-07-13 17:00:00,10198.15,0.003,87.77 -2017-07-13 18:00:00,9560.316,0.0047,82.52 -2017-07-13 19:00:00,9214.075,0.0,79.65 -2017-07-13 20:00:00,9017.358,0.0,77.94 -2017-07-13 21:00:00,8843.783,0.0,75.92 -2017-07-13 22:00:00,8450.3,0.0,74.59 -2017-07-13 23:00:00,7877.15,0.0,73.38 -2017-07-14 00:00:00,7257.292,0.0,72.17 -2017-07-14 01:00:00,6802.517,0.0,71.11 -2017-07-14 02:00:00,6482.75,0.0,70.02 -2017-07-14 03:00:00,6252.117,0.0,69.39 -2017-07-14 04:00:00,6126.467,0.0,68.17 -2017-07-14 05:00:00,6196.292,0.0,66.63 -2017-07-14 06:00:00,6525.258,0.0244,65.61 -2017-07-14 07:00:00,6934.592,0.002,65.6 -2017-07-14 08:00:00,7249.992,0.0346,66.56 -2017-07-14 09:00:00,7463.567,0.0462,66.07 -2017-07-14 10:00:00,7546.383,0.0252,66.8 -2017-07-14 11:00:00,7617.317,0.0,67.23 -2017-07-14 12:00:00,7656.125,0.0061,71.23 -2017-07-14 13:00:00,7641.858,0.0058,71.42 -2017-07-14 14:00:00,7606.933,0.0649,71.5 -2017-07-14 15:00:00,7574.625,0.009,71.34 -2017-07-14 16:00:00,7563.025,0.004,71.12 -2017-07-14 17:00:00,7534.483,0.0,70.91 -2017-07-14 18:00:00,7274.267,0.0,71.81 -2017-07-14 19:00:00,7104.733,0.0,71.7 -2017-07-14 20:00:00,6989.908,0.0,71.84 -2017-07-14 21:00:00,6870.558,0.0,71.72 -2017-07-14 22:00:00,6601.883,0.0,71.51 -2017-07-14 23:00:00,6264.25,0.0,71.39 -2017-07-15 00:00:00,5929.158,0.0,71.66 -2017-07-15 01:00:00,5676.492,0.0,71.55 -2017-07-15 02:00:00,5467.125,0.0,71.66 -2017-07-15 03:00:00,5345.458,0.0,71.2 -2017-07-15 04:00:00,5280.742,0.0,70.94 -2017-07-15 05:00:00,5281.45,0.0,69.85 -2017-07-15 06:00:00,5381.275,0.0,69.89 -2017-07-15 07:00:00,5646.783,0.0,70.45 -2017-07-15 08:00:00,5990.0,0.0,71.9 -2017-07-15 09:00:00,6362.45,0.0,73.24 -2017-07-15 10:00:00,6739.958,0.0,74.94 -2017-07-15 11:00:00,7066.533,0.0,77.77 -2017-07-15 12:00:00,7280.358,0.0,80.15 -2017-07-15 13:00:00,7350.508,0.0,82.9 -2017-07-15 14:00:00,7377.867,0.0,84.46 -2017-07-15 15:00:00,7396.125,0.0,83.85 -2017-07-15 16:00:00,7447.575,0.0,82.17 -2017-07-15 17:00:00,7382.308,0.002,82.11 -2017-07-15 18:00:00,7332.783,0.0,80.54 -2017-07-15 19:00:00,7204.008,0.0,78.63 -2017-07-15 20:00:00,7071.333,0.0,75.8 -2017-07-15 21:00:00,7040.142,0.0,73.94 -2017-07-15 22:00:00,6851.858,0.0,72.88 -2017-07-15 23:00:00,6565.358,0.0,71.55 -2017-07-16 00:00:00,6221.192,0.0,71.44 -2017-07-16 01:00:00,5924.45,0.0,71.21 -2017-07-16 02:00:00,5689.367,0.0,71.13 -2017-07-16 03:00:00,5520.975,0.0,70.24 -2017-07-16 04:00:00,5391.942,0.0,69.6 -2017-07-16 05:00:00,5343.633,0.0,69.07 -2017-07-16 06:00:00,5386.692,0.0,69.67 -2017-07-16 07:00:00,5629.7,0.0,71.57 -2017-07-16 08:00:00,5993.608,0.0,73.92 -2017-07-16 09:00:00,6354.325,0.0,76.46 -2017-07-16 10:00:00,6699.475,0.0,78.75 -2017-07-16 11:00:00,6950.875,0.0,81.08 -2017-07-16 12:00:00,7111.833,0.0,83.03 -2017-07-16 13:00:00,7238.883,0.0,84.79 -2017-07-16 14:00:00,7364.883,0.0,86.26 -2017-07-16 15:00:00,7479.1,0.0,87.33 -2017-07-16 16:00:00,7578.267,0.0,86.44 -2017-07-16 17:00:00,7636.467,0.0,83.43 -2017-07-16 18:00:00,7598.408,0.0,81.82 -2017-07-16 19:00:00,7482.442,0.0,79.29 -2017-07-16 20:00:00,7407.742,0.0,76.38 -2017-07-16 21:00:00,7465.433,0.0,74.49 -2017-07-16 22:00:00,7306.625,0.02,73.26 -2017-07-16 23:00:00,7022.775,0.0049,73.5 -2017-07-17 00:00:00,6693.017,0.0,73.52 -2017-07-17 01:00:00,6412.817,0.0,73.89 -2017-07-17 02:00:00,6194.158,0.0,73.92 -2017-07-17 03:00:00,6078.8,0.0,73.31 -2017-07-17 04:00:00,6080.067,0.0,72.65 -2017-07-17 05:00:00,6266.975,0.0,72.18 -2017-07-17 06:00:00,6709.85,0.0,72.34 -2017-07-17 07:00:00,7391.542,0.0,74.32 -2017-07-17 08:00:00,7958.35,0.0,77.02 -2017-07-17 09:00:00,8396.083,0.0,80.41 -2017-07-17 10:00:00,8727.384,0.0,83.14 -2017-07-17 11:00:00,8943.017,0.0,85.5 -2017-07-17 12:00:00,9041.217,0.0,86.61 -2017-07-17 13:00:00,9140.525,0.0,86.4 -2017-07-17 14:00:00,9252.908,0.0,86.78 -2017-07-17 15:00:00,9341.134,0.0,83.94 -2017-07-17 16:00:00,9421.792,0.0,82.79 -2017-07-17 17:00:00,9382.559,0.0,81.09 -2017-07-17 18:00:00,9070.066,0.0,80.41 -2017-07-17 19:00:00,8824.333,0.0,78.2 -2017-07-17 20:00:00,8694.55,0.0,76.66 -2017-07-17 21:00:00,8599.833,0.0,75.77 -2017-07-17 22:00:00,8258.525,0.002,74.86 -2017-07-17 23:00:00,7763.492,0.0,74.42 -2017-07-18 00:00:00,7243.783,0.0,74.95 -2017-07-18 01:00:00,6847.983,0.0,74.92 -2017-07-18 02:00:00,6545.8,0.0,75.05 -2017-07-18 03:00:00,6387.35,0.0,75.25 -2017-07-18 04:00:00,6344.258,0.0,74.72 -2017-07-18 05:00:00,6518.7,0.0,74.4 -2017-07-18 06:00:00,7005.825,0.0,74.75 -2017-07-18 07:00:00,7698.058,0.0,75.44 -2017-07-18 08:00:00,8236.767,0.0,76.67 -2017-07-18 09:00:00,8673.191,0.0,78.96 -2017-07-18 10:00:00,8987.991,0.0,81.49 -2017-07-18 11:00:00,9215.875,0.0,83.53 -2017-07-18 12:00:00,9371.092,0.0,85.77 -2017-07-18 13:00:00,9503.142,0.0,87.65 -2017-07-18 14:00:00,9630.566,0.0,88.86 -2017-07-18 15:00:00,9703.616,0.0,89.03 -2017-07-18 16:00:00,9633.575,0.0,87.99 -2017-07-18 17:00:00,9675.233,0.0,85.29 -2017-07-18 18:00:00,9470.184,0.0,84.02 -2017-07-18 19:00:00,9145.858,0.0,81.98 -2017-07-18 20:00:00,8921.167,0.0,79.95 -2017-07-18 21:00:00,8895.191,0.0,78.82 -2017-07-18 22:00:00,8608.316,0.0,78.13 -2017-07-18 23:00:00,8110.267,0.0,77.71 -2017-07-19 00:00:00,7569.225,0.0,77.89 -2017-07-19 01:00:00,7163.025,0.0,78.05 -2017-07-19 02:00:00,6885.167,0.0,78.26 -2017-07-19 03:00:00,6685.467,0.0,78.03 -2017-07-19 04:00:00,6651.483,0.0,77.05 -2017-07-19 05:00:00,6873.525,0.0,73.55 -2017-07-19 06:00:00,7385.192,0.0,76.04 -2017-07-19 07:00:00,8093.4,0.0,76.68 -2017-07-19 08:00:00,8722.125,0.0,79.72 -2017-07-19 09:00:00,9217.733,0.0,82.99 -2017-07-19 10:00:00,9540.267,0.0,86.02 -2017-07-19 11:00:00,9729.525,0.0,89.32 -2017-07-19 12:00:00,9767.017,0.0,92.08 -2017-07-19 13:00:00,9885.934,0.0,93.37 -2017-07-19 14:00:00,10014.68,0.0,94.24 -2017-07-19 15:00:00,10127.05,0.0,94.31 -2017-07-19 16:00:00,10213.92,0.0,92.57 -2017-07-19 17:00:00,10241.81,0.0,91.26 -2017-07-19 18:00:00,10050.29,0.0,89.54 -2017-07-19 19:00:00,9817.342,0.0,87.34 -2017-07-19 20:00:00,9615.733,0.0,85.3 -2017-07-19 21:00:00,9559.309,0.0,83.5 -2017-07-19 22:00:00,9201.225,0.0,82.1 -2017-07-19 23:00:00,8681.941,0.0,80.98 -2017-07-20 00:00:00,8127.342,0.0,80.39 -2017-07-20 01:00:00,7704.292,0.0,79.74 -2017-07-20 02:00:00,7449.45,0.003,77.67 -2017-07-20 03:00:00,7290.15,0.0,76.75 -2017-07-20 04:00:00,7221.95,0.0,75.39 -2017-07-20 05:00:00,7360.3,0.0,73.95 -2017-07-20 06:00:00,7794.792,0.002,74.97 -2017-07-20 07:00:00,8461.25,0.0,76.89 -2017-07-20 08:00:00,9053.733,0.0,80.9 -2017-07-20 09:00:00,9511.366,0.0,84.64 -2017-07-20 10:00:00,9896.809,0.0,87.63 -2017-07-20 11:00:00,10182.8,0.0,90.26 -2017-07-20 12:00:00,10340.91,0.0,91.35 -2017-07-20 13:00:00,10481.85,0.0,93.49 -2017-07-20 14:00:00,10585.93,0.0,94.73 -2017-07-20 15:00:00,10611.44,0.0,94.68 -2017-07-20 16:00:00,10670.37,0.0,94.46 -2017-07-20 17:00:00,10569.6,0.0,92.32 -2017-07-20 18:00:00,10248.35,0.0,91.37 -2017-07-20 19:00:00,10039.78,0.003,88.68 -2017-07-20 20:00:00,9866.092,0.003,85.33 -2017-07-20 21:00:00,9502.259,0.0,82.32 -2017-07-20 22:00:00,8992.1,0.0,80.51 -2017-07-20 23:00:00,8424.5,0.0,79.61 -2017-07-21 00:00:00,7892.442,0.0,78.31 -2017-07-21 01:00:00,7481.717,0.0,77.65 -2017-07-21 02:00:00,7184.692,0.0,76.4 -2017-07-21 03:00:00,7010.458,0.0,75.35 -2017-07-21 04:00:00,6965.517,0.0,76.37 -2017-07-21 05:00:00,7106.583,0.0,73.77 -2017-07-21 06:00:00,7546.008,0.0,76.26 -2017-07-21 07:00:00,8190.55,0.002,76.65 -2017-07-21 08:00:00,8778.8,0.0,78.95 -2017-07-21 09:00:00,9196.809,0.0,81.48 -2017-07-21 10:00:00,9493.434,0.0,83.94 -2017-07-21 11:00:00,9726.333,0.0,86.08 -2017-07-21 12:00:00,9867.875,0.0,88.75 -2017-07-21 13:00:00,9983.184,0.0,90.73 -2017-07-21 14:00:00,10062.37,0.0,92.28 -2017-07-21 15:00:00,10131.85,0.0,93.29 -2017-07-21 16:00:00,10173.42,0.0,93.64 -2017-07-21 17:00:00,10192.64,0.0,93.32 -2017-07-21 18:00:00,9947.991,0.0,90.95 -2017-07-21 19:00:00,9601.634,0.0,89.03 -2017-07-21 20:00:00,9369.167,0.0,86.86 -2017-07-21 21:00:00,9275.425,0.0,84.96 -2017-07-21 22:00:00,9005.292,0.0,83.51 -2017-07-21 23:00:00,8605.6,0.0,81.92 -2017-07-22 00:00:00,8151.925,0.0,80.9 -2017-07-22 01:00:00,7771.625,0.0,79.93 -2017-07-22 02:00:00,7485.575,0.0,79.04 -2017-07-22 03:00:00,7284.242,0.0,76.91 -2017-07-22 04:00:00,7079.008,0.0,74.82 -2017-07-22 05:00:00,6953.517,0.0,73.02 -2017-07-22 06:00:00,6968.8,0.0,73.07 -2017-07-22 07:00:00,7276.742,0.0,74.88 -2017-07-22 08:00:00,7659.817,0.0,77.54 -2017-07-22 09:00:00,8059.692,0.0,80.69 -2017-07-22 10:00:00,8411.6,0.0,83.31 -2017-07-22 11:00:00,8627.6,0.0,85.5 -2017-07-22 12:00:00,8746.691,0.0,87.97 -2017-07-22 13:00:00,8778.434,0.0,89.84 -2017-07-22 14:00:00,8758.017,0.003,90.35 -2017-07-22 15:00:00,8821.775,0.0,89.72 -2017-07-22 16:00:00,8791.55,0.0,89.59 -2017-07-22 17:00:00,8646.608,0.0,86.37 -2017-07-22 18:00:00,8400.934,0.035,85.42 -2017-07-22 19:00:00,8231.1,0.0,83.43 -2017-07-22 20:00:00,8200.208,0.021,80.82 -2017-07-22 21:00:00,8256.875,0.004,78.39 -2017-07-22 22:00:00,8092.092,0.0151,76.54 -2017-07-22 23:00:00,7689.5,0.1181,75.14 -2017-07-23 00:00:00,7190.217,0.0457,73.69 -2017-07-23 01:00:00,6824.4,0.0,72.7 -2017-07-23 02:00:00,6577.442,0.0,73.58 -2017-07-23 03:00:00,6407.417,0.0051,73.65 -2017-07-23 04:00:00,6315.458,0.002,72.95 -2017-07-23 05:00:00,6277.467,0.0026,71.89 -2017-07-23 06:00:00,6284.742,0.0,71.7 -2017-07-23 07:00:00,6420.842,0.0,71.63 -2017-07-23 08:00:00,6661.308,0.0,72.95 -2017-07-23 09:00:00,6986.417,0.0,73.85 -2017-07-23 10:00:00,7361.417,0.0,75.43 -2017-07-23 11:00:00,7601.45,0.0,77.15 -2017-07-23 12:00:00,7610.15,0.0068,79.5 -2017-07-23 13:00:00,7520.933,0.0,79.6 -2017-07-23 14:00:00,7516.358,0.0,79.93 -2017-07-23 15:00:00,7561.5,0.0,80.75 -2017-07-23 16:00:00,7629.958,0.008,80.18 -2017-07-23 17:00:00,7580.383,0.0,78.28 -2017-07-23 18:00:00,7504.75,0.0,77.84 -2017-07-23 19:00:00,7382.042,0.0,76.8 -2017-07-23 20:00:00,7404.175,0.0023,76.0 -2017-07-23 21:00:00,7444.558,0.0,75.06 -2017-07-23 22:00:00,7302.217,0.0027,74.41 -2017-07-23 23:00:00,6988.342,0.0104,74.11 -2017-07-24 00:00:00,6640.442,0.0,73.85 -2017-07-24 01:00:00,6384.375,0.0,73.47 -2017-07-24 02:00:00,6190.633,0.0,73.3 -2017-07-24 03:00:00,6058.958,0.0,73.15 -2017-07-24 04:00:00,6060.925,0.108,72.75 -2017-07-24 05:00:00,6209.167,0.0127,71.29 -2017-07-24 06:00:00,6601.308,0.0,70.86 -2017-07-24 07:00:00,7096.45,0.0,71.12 -2017-07-24 08:00:00,7520.508,0.003,71.39 -2017-07-24 09:00:00,7730.8,0.0056,72.13 -2017-07-24 10:00:00,7676.108,0.0065,73.21 -2017-07-24 11:00:00,7563.775,0.002,70.63 -2017-07-24 12:00:00,7484.175,0.0,69.54 -2017-07-24 13:00:00,7389.517,0.0,68.65 -2017-07-24 14:00:00,7327.2,0.0,68.35 -2017-07-24 15:00:00,7331.825,0.0,70.15 -2017-07-24 16:00:00,7348.542,0.0,69.92 -2017-07-24 17:00:00,7300.225,0.0,70.04 -2017-07-24 18:00:00,7026.908,0.0,68.99 -2017-07-24 19:00:00,6825.975,0.0087,69.2 -2017-07-24 20:00:00,6665.25,0.0,68.37 -2017-07-24 21:00:00,6496.433,0.0,67.59 -2017-07-24 22:00:00,6164.692,0.0013,67.0 -2017-07-24 23:00:00,5738.867,0.0,66.54 -2017-07-25 00:00:00,5345.317,0.0,66.28 -2017-07-25 01:00:00,5071.617,0.0,65.93 -2017-07-25 02:00:00,4908.292,0.0,66.03 -2017-07-25 03:00:00,4804.233,0.0,65.12 -2017-07-25 04:00:00,4814.55,0.0,64.12 -2017-07-25 05:00:00,5016.542,0.0,63.26 -2017-07-25 06:00:00,5444.475,0.0,63.25 -2017-07-25 07:00:00,6023.842,0.0,63.73 -2017-07-25 08:00:00,6450.192,0.0,64.87 -2017-07-25 09:00:00,6707.017,0.0,65.73 -2017-07-25 10:00:00,6824.825,0.0,66.89 -2017-07-25 11:00:00,6881.809,0.0,68.54 -2017-07-25 12:00:00,6903.175,0.0,70.18 -2017-07-25 13:00:00,6955.292,0.0,71.84 -2017-07-25 14:00:00,7029.917,0.0,71.75 -2017-07-25 15:00:00,7014.058,0.0,73.63 -2017-07-25 16:00:00,7069.208,0.0,75.54 -2017-07-25 17:00:00,7036.367,0.0,76.05 -2017-07-25 18:00:00,6757.225,0.0,73.96 -2017-07-25 19:00:00,6555.783,0.0,74.02 -2017-07-25 20:00:00,6430.642,0.0,72.49 -2017-07-25 21:00:00,6309.2,0.0,71.31 -2017-07-25 22:00:00,6044.0,0.0,70.78 -2017-07-25 23:00:00,5664.917,0.0,70.43 -2017-07-26 00:00:00,5264.25,0.0,70.2 -2017-07-26 01:00:00,4997.517,0.0,69.84 -2017-07-26 02:00:00,4822.275,0.0,69.29 -2017-07-26 03:00:00,4740.4,0.0,69.26 -2017-07-26 04:00:00,4734.35,, -2017-07-26 05:00:00,4938.825,0.0,67.25 -2017-07-26 06:00:00,5401.1,0.0,68.65 -2017-07-26 07:00:00,6019.317,0.0,69.83 -2017-07-26 08:00:00,6519.017,0.0,72.44 -2017-07-26 09:00:00,6886.108,, -2017-07-26 10:00:00,7085.342,0.0,74.8 -2017-07-26 11:00:00,7222.958,0.0,77.39 -2017-07-26 12:00:00,7264.642,0.0,79.32 -2017-07-26 13:00:00,7311.9,0.0,81.81 -2017-07-26 14:00:00,7389.55,0.0,83.51 -2017-07-26 15:00:00,7460.5,0.0,83.58 -2017-07-26 16:00:00,7484.975,0.0,82.8 -2017-07-26 17:00:00,7414.35,0.0,79.96 -2017-07-26 18:00:00,7091.775,0.0,78.75 -2017-07-26 19:00:00,6791.525,0.0,77.93 -2017-07-26 20:00:00,6600.258,0.0,76.49 -2017-07-26 21:00:00,6492.033,0.0,74.65 -2017-07-26 22:00:00,6233.092,0.0,73.23 -2017-07-26 23:00:00,5853.258,0.0,72.05 -2017-07-27 00:00:00,5463.6,0.0,70.98 -2017-07-27 01:00:00,5198.8,0.0,70.23 -2017-07-27 02:00:00,5012.508,0.0,69.49 -2017-07-27 03:00:00,4915.208,0.0,68.38 -2017-07-27 04:00:00,4899.183,0.0,67.16 -2017-07-27 05:00:00,5105.783,0.0,66.01 -2017-07-27 06:00:00,5568.2,0.0,65.74 -2017-07-27 07:00:00,6155.083,0.0,67.16 -2017-07-27 08:00:00,6677.517,0.0,68.61 -2017-07-27 09:00:00,7073.5,0.0,70.71 -2017-07-27 10:00:00,7326.45,0.0,73.05 -2017-07-27 11:00:00,7498.117,0.0,75.34 -2017-07-27 12:00:00,7658.15,0.0,76.7 -2017-07-27 13:00:00,7758.292,0.0,78.68 -2017-07-27 14:00:00,7773.8,0.0,80.13 -2017-07-27 15:00:00,7769.567,0.0,78.41 -2017-07-27 16:00:00,7810.133,0.004,78.54 -2017-07-27 17:00:00,7786.733,0.0,75.13 -2017-07-27 18:00:00,7581.883,0.0,75.96 -2017-07-27 19:00:00,7415.667,0.0,76.46 -2017-07-27 20:00:00,7340.55,0.0,76.28 -2017-07-27 21:00:00,7275.125,0.0,75.51 -2017-07-27 22:00:00,7048.9,0.0,74.72 -2017-07-27 23:00:00,6679.075,0.0,73.88 -2017-07-28 00:00:00,6240.175,0.0,73.47 -2017-07-28 01:00:00,5911.35,0.0,73.13 -2017-07-28 02:00:00,5687.242,0.0,73.29 -2017-07-28 03:00:00,5566.167,0.0,72.12 -2017-07-28 04:00:00,5538.45,0.0,71.07 -2017-07-28 05:00:00,5720.058,0.0,69.79 -2017-07-28 06:00:00,6189.217,0.002,68.74 -2017-07-28 07:00:00,6843.217,0.0,69.01 -2017-07-28 08:00:00,7397.342,0.0,71.22 -2017-07-28 09:00:00,7789.408,0.0,72.62 -2017-07-28 10:00:00,8079.358,0.0,73.26 -2017-07-28 11:00:00,8304.509,0.0,75.53 -2017-07-28 12:00:00,8429.208,0.0,78.68 -2017-07-28 13:00:00,8523.0,0.0,80.96 -2017-07-28 14:00:00,8575.892,0.0,82.8 -2017-07-28 15:00:00,8619.592,0.0,82.74 -2017-07-28 16:00:00,8611.467,0.0,82.32 -2017-07-28 17:00:00,8494.033,0.0,80.12 -2017-07-28 18:00:00,8130.717,0.0,78.81 -2017-07-28 19:00:00,7884.542,0.0,77.06 -2017-07-28 20:00:00,7740.042,0.0,74.91 -2017-07-28 21:00:00,7603.608,0.0,73.6 -2017-07-28 22:00:00,7328.758,0.0,71.92 -2017-07-28 23:00:00,6930.958,0.0,70.66 -2017-07-29 00:00:00,6470.117,0.0,69.79 -2017-07-29 01:00:00,6093.025,0.0,69.6 -2017-07-29 02:00:00,5806.492,0.0,69.06 -2017-07-29 03:00:00,5589.617,0.0,68.17 -2017-07-29 04:00:00,5418.175,0.0,67.04 -2017-07-29 05:00:00,5325.95,0.0,65.78 -2017-07-29 06:00:00,5351.108,0.0,63.54 -2017-07-29 07:00:00,5493.05,0.0,62.46 -2017-07-29 08:00:00,5661.0,0.0,63.04 -2017-07-29 09:00:00,5861.575,0.0,64.08 -2017-07-29 10:00:00,6011.725,0.0,66.34 -2017-07-29 11:00:00,6109.633,0.0,67.67 -2017-07-29 12:00:00,6169.367,0.0,68.75 -2017-07-29 13:00:00,6201.375,0.0,70.37 -2017-07-29 14:00:00,6187.733,0.0,71.79 -2017-07-29 15:00:00,6143.05,0.002,72.88 -2017-07-29 16:00:00,6146.533,0.0,73.75 -2017-07-29 17:00:00,6190.683,0.002,74.19 -2017-07-29 18:00:00,6159.758,0.0,74.65 -2017-07-29 19:00:00,6114.383,0.0,73.44 -2017-07-29 20:00:00,6085.883,0.0,71.54 -2017-07-29 21:00:00,6040.375,0.002,69.43 -2017-07-29 22:00:00,5868.65,0.0,67.43 -2017-07-29 23:00:00,5616.025,0.0,66.34 -2017-07-30 00:00:00,5309.733,0.0,65.23 -2017-07-30 01:00:00,5062.908,0.0,64.58 -2017-07-30 02:00:00,4867.642,0.0,64.25 -2017-07-30 03:00:00,4737.625,0.0,63.18 -2017-07-30 04:00:00,4664.15,0.0,62.06 -2017-07-30 05:00:00,4630.933,0.0,59.93 -2017-07-30 06:00:00,4647.258,0.0,59.32 -2017-07-30 07:00:00,4837.425,0.0,60.18 -2017-07-30 08:00:00,5135.483,0.0,62.91 -2017-07-30 09:00:00,5445.467,0.0,65.85 -2017-07-30 10:00:00,5718.492,0.0,69.29 -2017-07-30 11:00:00,5928.067,0.0,72.15 -2017-07-30 12:00:00,6063.617,0.0,74.87 -2017-07-30 13:00:00,6173.1,0.0,76.33 -2017-07-30 14:00:00,6253.042,0.0,77.46 -2017-07-30 15:00:00,6354.3,0.0,78.51 -2017-07-30 16:00:00,6473.492,0.0,79.8 -2017-07-30 17:00:00,6529.667,0.0,80.5 -2017-07-30 18:00:00,6558.408,0.0,79.77 -2017-07-30 19:00:00,6478.575,0.0,79.34 -2017-07-30 20:00:00,6443.792,0.0,76.68 -2017-07-30 21:00:00,6481.817,0.0,73.57 -2017-07-30 22:00:00,6296.442,0.0,71.42 -2017-07-30 23:00:00,6029.133,0.0,69.55 -2017-07-31 00:00:00,5711.275,0.0,68.11 -2017-07-31 01:00:00,5432.817,0.0,67.24 -2017-07-31 02:00:00,5236.658,0.0,66.37 -2017-07-31 03:00:00,5113.975,0.0,65.35 -2017-07-31 04:00:00,5128.083,0.0,64.64 -2017-07-31 05:00:00,5310.933,0.0,63.75 -2017-07-31 06:00:00,5725.575,0.0,63.68 -2017-07-31 07:00:00,6317.867,0.0,65.2 -2017-07-31 08:00:00,6879.225,0.0265,68.42 -2017-07-31 09:00:00,7321.275,0.0,72.03 -2017-07-31 10:00:00,7663.575,0.0,75.89 -2017-07-31 11:00:00,7921.775,0.0,75.15 -2017-07-31 12:00:00,8078.717,0.0,81.76 -2017-07-31 13:00:00,8238.275,0.0,83.5 -2017-07-31 14:00:00,8442.917,0.0,84.71 -2017-07-31 15:00:00,8639.634,0.0,86.13 -2017-07-31 16:00:00,8776.967,0.0,86.6 -2017-07-31 17:00:00,8770.608,0.0,86.85 -2017-07-31 18:00:00,8447.783,0.0,85.57 -2017-07-31 19:00:00,8134.542,0.0,83.09 -2017-07-31 20:00:00,7923.15,0.003,78.99 -2017-07-31 21:00:00,7801.125,0.0073,76.36 -2017-07-31 22:00:00,7475.442,0.003,74.66 -2017-07-31 23:00:00,7017.1,0.0193,73.41 -2017-08-01 00:00:00,6557.208,0.014,72.51 -2017-08-01 01:00:00,6223.542,0.003,72.04 -2017-08-01 02:00:00,5979.7,0.0193,71.05 -2017-08-01 03:00:00,5829.8,0.0,70.71 -2017-08-01 04:00:00,5793.083,0.0,70.26 -2017-08-01 05:00:00,5944.867,0.0,69.77 -2017-08-01 06:00:00,6374.792,0.003,68.17 -2017-08-01 07:00:00,7050.008,0.007,69.22 -2017-08-01 08:00:00,7655.483,0.004,72.38 -2017-08-01 09:00:00,8109.058,0.0,75.51 -2017-08-01 10:00:00,8417.092,0.0,79.2 -2017-08-01 11:00:00,8634.392,0.0,82.43 -2017-08-01 12:00:00,8810.35,0.0,85.34 -2017-08-01 13:00:00,8983.491,0.0,86.9 -2017-08-01 14:00:00,9154.467,0.0,87.26 -2017-08-01 15:00:00,9303.475,0.0,87.72 -2017-08-01 16:00:00,9413.825,0.0,88.27 -2017-08-01 17:00:00,9393.9,0.0,88.32 -2017-08-01 18:00:00,9074.475,0.002,86.12 -2017-08-01 19:00:00,8733.975,0.0,83.63 -2017-08-01 20:00:00,8535.45,0.0,80.4 -2017-08-01 21:00:00,8423.05,0.2488,78.01 -2017-08-01 22:00:00,8095.0,0.0,76.66 -2017-08-01 23:00:00,7644.592,0.0,75.53 -2017-08-02 00:00:00,7152.675,0.0,74.74 -2017-08-02 01:00:00,6789.25,0.0,74.31 -2017-08-02 02:00:00,6542.742,0.0,73.82 -2017-08-02 03:00:00,6391.342,0.006,73.7 -2017-08-02 04:00:00,6333.783,0.003,73.17 -2017-08-02 05:00:00,6517.925,0.004,72.59 -2017-08-02 06:00:00,6965.45,0.003,71.49 -2017-08-02 07:00:00,7577.075,0.0,71.51 -2017-08-02 08:00:00,8068.392,0.0,72.96 -2017-08-02 09:00:00,8459.775,0.0,76.4 -2017-08-02 10:00:00,8804.691,0.0,79.21 -2017-08-02 11:00:00,8990.108,0.0,82.69 -2017-08-02 12:00:00,9129.8,0.002,84.83 -2017-08-02 13:00:00,9005.925,0.0538,85.7 -2017-08-02 14:00:00,8998.741,0.0039,84.39 -2017-08-02 15:00:00,9072.009,0.009,83.01 -2017-08-02 16:00:00,9008.542,0.0,80.0 -2017-08-02 17:00:00,8498.866,0.0563,80.24 -2017-08-02 18:00:00,8026.442,0.0269,77.23 -2017-08-02 19:00:00,7744.092,0.003,76.45 -2017-08-02 20:00:00,7642.108,0.0,75.08 -2017-08-02 21:00:00,7556.917,0.0,74.13 -2017-08-02 22:00:00,7256.517,0.0,72.79 -2017-08-02 23:00:00,6853.7,0.0,71.93 -2017-08-03 00:00:00,6417.525,0.0,70.41 -2017-08-03 01:00:00,6093.0,0.0,69.94 -2017-08-03 02:00:00,5872.55,0.0,69.75 -2017-08-03 03:00:00,5760.692,0.0,69.67 -2017-08-03 04:00:00,5747.667,0.0,69.44 -2017-08-03 05:00:00,5938.775,0.0,68.79 -2017-08-03 06:00:00,6385.117,0.0,67.86 -2017-08-03 07:00:00,7020.975,0.0,67.99 -2017-08-03 08:00:00,7593.467,0.0,69.4 -2017-08-03 09:00:00,7970.5,0.0,72.12 -2017-08-03 10:00:00,8267.467,0.0,74.63 -2017-08-03 11:00:00,8526.809,0.0,77.93 -2017-08-03 12:00:00,8715.184,0.0,79.89 -2017-08-03 13:00:00,8898.142,0.0,81.9 -2017-08-03 14:00:00,9044.783,0.0,83.26 -2017-08-03 15:00:00,9191.267,0.0,84.03 -2017-08-03 16:00:00,9250.566,0.0,84.04 -2017-08-03 17:00:00,9070.059,0.0,83.37 -2017-08-03 18:00:00,8655.075,0.0,81.87 -2017-08-03 19:00:00,8348.991,0.0,80.59 -2017-08-03 20:00:00,8167.817,0.0,78.38 -2017-08-03 21:00:00,8060.483,0.0,76.26 -2017-08-03 22:00:00,7788.975,0.0,75.39 -2017-08-03 23:00:00,7360.875,0.0303,74.84 -2017-08-04 00:00:00,6849.217,0.0,74.24 -2017-08-04 01:00:00,6500.967,0.0,73.83 -2017-08-04 02:00:00,6255.425,0.0,74.04 -2017-08-04 03:00:00,6152.917,0.003,73.86 -2017-08-04 04:00:00,6140.25,0.0,74.46 -2017-08-04 05:00:00,6343.133,0.0,73.75 -2017-08-04 06:00:00,6810.542,0.0,72.82 -2017-08-04 07:00:00,7326.625,0.0824,73.43 -2017-08-04 08:00:00,7537.633,0.0035,73.86 -2017-08-04 09:00:00,7911.742,0.0,74.77 -2017-08-04 10:00:00,8341.392,0.0,76.31 -2017-08-04 11:00:00,8664.741,0.0,76.93 -2017-08-04 12:00:00,8851.158,0.0,79.37 -2017-08-04 13:00:00,8887.458,0.0,80.67 -2017-08-04 14:00:00,8887.566,0.0,81.13 -2017-08-04 15:00:00,8903.233,0.0,80.79 -2017-08-04 16:00:00,8877.509,0.0,80.54 -2017-08-04 17:00:00,8752.967,0.0,80.21 -2017-08-04 18:00:00,8505.517,0.0,79.57 -2017-08-04 19:00:00,8256.983,0.0,77.93 -2017-08-04 20:00:00,8053.567,0.0,75.91 -2017-08-04 21:00:00,7894.408,0.0,74.97 -2017-08-04 22:00:00,7593.875,0.0,74.39 -2017-08-04 23:00:00,7233.95,0.0,74.0 -2017-08-05 00:00:00,6860.875,0.0,73.88 -2017-08-05 01:00:00,6552.133,0.0,73.4 -2017-08-05 02:00:00,6342.133,0.0,74.93 -2017-08-05 03:00:00,6186.583,0.0,74.15 -2017-08-05 04:00:00,6109.9,0.0544,74.25 -2017-08-05 05:00:00,6083.833,0.005,74.42 -2017-08-05 06:00:00,6041.175,0.0757,73.3 -2017-08-05 07:00:00,6144.258,0.0,71.04 -2017-08-05 08:00:00,6426.092,0.0,71.42 -2017-08-05 09:00:00,6720.792,0.0,72.57 -2017-08-05 10:00:00,7003.542,0.0,72.96 -2017-08-05 11:00:00,7176.075,0.0,74.54 -2017-08-05 12:00:00,7296.758,0.0,73.85 -2017-08-05 13:00:00,7227.033,0.0,76.08 -2017-08-05 14:00:00,7172.017,0.0,76.24 -2017-08-05 15:00:00,7175.658,0.0,77.15 -2017-08-05 16:00:00,7192.783,0.0,79.69 -2017-08-05 17:00:00,7104.017,0.0,80.39 -2017-08-05 18:00:00,6936.408,0.0,78.1 -2017-08-05 19:00:00,6689.333,0.0,75.95 -2017-08-05 20:00:00,6552.742,0.0,73.44 -2017-08-05 21:00:00,6466.908,0.0,70.98 -2017-08-05 22:00:00,6289.342,0.0,69.37 -2017-08-05 23:00:00,6029.533,0.0,68.05 -2017-08-06 00:00:00,5724.392,0.0,66.63 -2017-08-06 01:00:00,5441.792,0.0,66.14 -2017-08-06 02:00:00,5203.275,0.0,65.8 -2017-08-06 03:00:00,5043.975,0.0,64.5 -2017-08-06 04:00:00,4935.992,0.0,64.73 -2017-08-06 05:00:00,4884.75,0.0,63.39 -2017-08-06 06:00:00,4872.825,0.0,60.96 -2017-08-06 07:00:00,5016.675,0.0,62.53 -2017-08-06 08:00:00,5276.642,0.0,64.65 -2017-08-06 09:00:00,5496.75,0.0,67.91 -2017-08-06 10:00:00,5750.325,0.0,70.4 -2017-08-06 11:00:00,5933.692,0.0,72.23 -2017-08-06 12:00:00,6058.808,0.0,73.58 -2017-08-06 13:00:00,6105.067,0.0,75.89 -2017-08-06 14:00:00,6147.85,0.0,77.54 -2017-08-06 15:00:00,6120.008,0.0,76.88 -2017-08-06 16:00:00,6193.6,0.0,78.62 -2017-08-06 17:00:00,6186.025,0.0,77.7 -2017-08-06 18:00:00,6154.817,0.0,76.41 -2017-08-06 19:00:00,6118.825,0.0,75.41 -2017-08-06 20:00:00,6185.842,0.0,72.94 -2017-08-06 21:00:00,6181.2,0.0,70.64 -2017-08-06 22:00:00,6041.617,0.0,69.27 -2017-08-06 23:00:00,5781.933,0.0,68.35 -2017-08-07 00:00:00,5507.458,0.0,66.69 -2017-08-07 01:00:00,5293.75,0.0,66.0 -2017-08-07 02:00:00,5131.533,0.0,67.21 -2017-08-07 03:00:00,5077.817,0.0,67.45 -2017-08-07 04:00:00,5100.825,0.0,66.92 -2017-08-07 05:00:00,5329.383,0.0,67.18 -2017-08-07 06:00:00,5786.75,0.0,65.66 -2017-08-07 07:00:00,6347.608,0.0,65.92 -2017-08-07 08:00:00,6830.1,0.0055,68.06 -2017-08-07 09:00:00,7136.142,0.008,68.38 -2017-08-07 10:00:00,7264.475,0.004,69.16 -2017-08-07 11:00:00,7315.192,0.0158,70.86 -2017-08-07 12:00:00,7305.617,0.0648,69.94 -2017-08-07 13:00:00,7279.708,0.0094,68.77 -2017-08-07 14:00:00,7238.1,0.059,67.83 -2017-08-07 15:00:00,7167.425,0.1122,68.51 -2017-08-07 16:00:00,7103.067,0.0396,68.25 -2017-08-07 17:00:00,7021.625,0.0296,69.2 -2017-08-07 18:00:00,6831.233,0.0435,69.83 -2017-08-07 19:00:00,6674.817,0.0905,68.99 -2017-08-07 20:00:00,6551.792,0.0277,69.92 -2017-08-07 21:00:00,6393.617,0.0,69.5 -2017-08-07 22:00:00,6118.158,0.0,68.4 -2017-08-07 23:00:00,5749.508,0.0,68.26 -2017-08-08 00:00:00,5368.625,0.0,68.18 -2017-08-08 01:00:00,5106.35,0.0,68.3 -2017-08-08 02:00:00,4947.733,0.0,68.44 -2017-08-08 03:00:00,4867.017,0.0,68.78 -2017-08-08 04:00:00,4888.2,0.0,68.7 -2017-08-08 05:00:00,5120.308,0.0,67.53 -2017-08-08 06:00:00,5590.992,0.0,66.17 -2017-08-08 07:00:00,6147.033,0.0,66.29 -2017-08-08 08:00:00,6592.425,0.0,66.72 -2017-08-08 09:00:00,6874.533,0.0,67.37 -2017-08-08 10:00:00,7010.542,0.0,68.3 -2017-08-08 11:00:00,7078.158,0.0,68.89 -2017-08-08 12:00:00,7213.317,0.0,70.6 -2017-08-08 13:00:00,7329.75,0.0,72.83 -2017-08-08 14:00:00,7426.25,0.0,73.33 -2017-08-08 15:00:00,7505.633,0.0,74.89 -2017-08-08 16:00:00,7578.192,0.0,77.9 -2017-08-08 17:00:00,7548.05,0.0,79.24 -2017-08-08 18:00:00,7357.117,0.0,78.68 -2017-08-08 19:00:00,7131.433,0.0,76.8 -2017-08-08 20:00:00,6986.575,0.0,74.6 -2017-08-08 21:00:00,6869.292,0.0,72.58 -2017-08-08 22:00:00,6587.058,0.0,70.67 -2017-08-08 23:00:00,6194.442,0.0,69.15 -2017-08-09 00:00:00,5754.708,0.0,68.47 -2017-08-09 01:00:00,5439.667,0.0,67.74 -2017-08-09 02:00:00,5195.325,0.0,67.31 -2017-08-09 03:00:00,5044.508,0.0,67.5 -2017-08-09 04:00:00,5010.0,0.0,65.22 -2017-08-09 05:00:00,5195.3,0.0,64.11 -2017-08-09 06:00:00,5651.033,0.0,63.79 -2017-08-09 07:00:00,6240.392,0.0,64.28 -2017-08-09 08:00:00,6774.967,0.033,66.56 -2017-08-09 09:00:00,7140.267,0.0,70.87 -2017-08-09 10:00:00,7348.917,0.0,74.92 -2017-08-09 11:00:00,7516.775,0.0,78.04 -2017-08-09 12:00:00,7671.625,0.0,80.18 -2017-08-09 13:00:00,7806.833,0.0,82.01 -2017-08-09 14:00:00,7949.467,0.0,82.85 -2017-08-09 15:00:00,8065.808,0.0,84.61 -2017-08-09 16:00:00,8162.875,0.0,84.2 -2017-08-09 17:00:00,8136.758,0.0,84.04 -2017-08-09 18:00:00,7852.642,0.0,82.86 -2017-08-09 19:00:00,7535.067,0.0,79.66 -2017-08-09 20:00:00,7360.883,0.0,76.28 -2017-08-09 21:00:00,7207.583,0.5815,73.6 -2017-08-09 22:00:00,6917.65,0.0448,72.26 -2017-08-09 23:00:00,6487.642,0.4814,71.1 -2017-08-10 00:00:00,6053.458,0.003,71.51 -2017-08-10 01:00:00,5714.258,0.0213,71.06 -2017-08-10 02:00:00,5497.025,0.0068,71.21 -2017-08-10 03:00:00,5360.583,0.007,70.39 -2017-08-10 04:00:00,5333.775,0.003,69.18 -2017-08-10 05:00:00,5534.683,0.0,68.09 -2012-03-11 02:00:00,,0.0,37.78 -2013-03-10 02:00:00,,0.0,38.18 -2014-03-09 02:00:00,,0.0,40.86 -2015-03-08 02:00:00,,0.0,36.96 -2015-03-11 11:00:00,,0.0,49.95 -2015-10-04 11:00:00,,0.0,55.5 -2015-10-04 12:00:00,,0.0,57.24 -2016-01-28 20:00:00,,0.0,36.62 -2016-01-28 21:00:00,,0.0,39.05 -2016-01-28 22:00:00,,0.0,38.02 -2016-01-28 23:00:00,,0.0,35.29 -2016-04-20 11:00:00,,0.0,59.21 -2016-06-07 22:00:00,,0.0,68.51 -2016-06-07 23:00:00,,0.0,66.91 -2016-06-16 08:00:00,,0.0,67.85 -2016-06-16 09:00:00,,0.0,68.38 -2016-06-16 10:00:00,,0.002,70.57 -2016-06-20 16:00:00,,0.0,79.58 -2016-06-20 17:00:00,,0.0,77.88 -2016-06-20 20:00:00,,0.0,76.86 -2016-06-20 21:00:00,,0.0,77.31 -2016-08-09 03:00:00,,0.0,72.66 -2016-10-19 05:00:00,,0.0,69.37 -2017-01-09 15:00:00,,0.0,22.63 -2017-02-23 11:00:00,,0.0,53.68 -2017-04-21 23:00:00,,0.0,50.28 -2017-04-26 16:00:00,,0.0,60.5 -2017-04-26 17:00:00,,0.0,59.78 -2017-05-29 16:00:00,,0.0,58.15 -2017-05-29 17:00:00,,0.0,58.01 -2017-05-29 18:00:00,,0.0,58.11 -2017-07-10 18:00:00,,0.0,79.05 -2017-08-10 06:00:00,,0.003,67.06 -2017-08-10 07:00:00,,0.0,67.22 -2017-08-10 08:00:00,,0.0,69.5 -2017-08-10 09:00:00,,0.0,73.69 -2017-08-10 10:00:00,,0.0,78.07 -2017-08-10 11:00:00,,0.0,81.3 -2017-08-10 12:00:00,,0.0,82.97 -2017-08-10 13:00:00,,0.0047,83.62 -2017-08-10 14:00:00,,0.0,83.69 -2017-08-10 15:00:00,,0.0,83.38 -2017-08-10 16:00:00,,0.0,83.56 -2017-08-10 17:00:00,,0.0,82.96 -2017-08-10 18:00:00,,0.0,81.18 -2017-08-10 19:00:00,,0.0,77.73 -2017-08-10 20:00:00,,0.0,74.78 -2017-08-10 21:00:00,,0.0,72.49 -2017-08-10 22:00:00,,0.0,70.78 -2017-08-10 23:00:00,,0.0,69.8 -2017-08-11 00:00:00,,0.0,69.45 -2017-08-11 01:00:00,,0.0,69.26 -2017-08-11 02:00:00,,0.0,69.12 -2017-08-11 03:00:00,,0.0,68.57 -2017-08-11 04:00:00,,0.0,67.9 -2017-08-11 05:00:00,,0.0,67.2 -2017-08-11 06:00:00,,0.0,66.85 -2017-08-11 07:00:00,,0.0,67.22 -2017-08-11 08:00:00,,0.0,68.62 -2017-08-11 09:00:00,,0.0,71.04 -2017-08-11 10:00:00,,0.0,74.08 -2017-08-11 11:00:00,,0.0,76.57 -2017-08-11 12:00:00,,0.0,78.54 -2017-08-11 13:00:00,,0.0,79.83 -2017-08-11 14:00:00,,0.0,80.21 -2017-08-11 15:00:00,,0.0,79.78 -2017-08-11 16:00:00,,0.0,79.16 -2017-08-11 17:00:00,,0.0,78.2 -2017-08-11 18:00:00,,0.0,76.53 -2017-08-11 19:00:00,,0.0,74.17 -2017-08-11 20:00:00,,0.0,72.21 -2017-08-11 21:00:00,,0.0,71.07 -2017-08-11 22:00:00,,0.0,70.51 -2017-08-11 23:00:00,,0.0,70.34 -2017-08-12 00:00:00,,0.0,70.47 -2017-08-12 01:00:00,,0.0,70.71 -2017-08-12 02:00:00,,0.0,70.84 -2017-08-12 03:00:00,,0.0,70.57 -2017-08-12 04:00:00,,0.0,69.89 -2017-08-12 05:00:00,,0.0,68.59 -2017-08-12 06:00:00,,0.0031,67.33 diff --git a/databricks/01.Installation_and_Configuration.ipynb b/databricks/01.Installation_and_Configuration.ipynb new file mode 100644 index 00000000..166661b1 --- /dev/null +++ b/databricks/01.Installation_and_Configuration.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run this notebook before proceeding."],"metadata":{}},{"cell_type":"markdown","source":["Now we support installing AML SDK as library from GUI. When attaching a library follow this https://docs.databricks.com/user-guide/libraries.html and add the below string as your PyPi package (during private preview). You can select the option to attach the library to all clusters or just one cluster.\n\nProvide this full string to install the SDK:\n\nazureml-sdk[databricks]"],"metadata":{}},{"cell_type":"code","source":["import azureml.core\n\n# Check core SDK version number - based on build number of preview/master.\nprint(\"SDK version:\", azureml.core.VERSION)"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["subscription_id = \"\"\nresource_group = \"\"\nworkspace_name = \"\"\nworkspace_region = \"\""],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"code","source":["# import the Workspace class and check the azureml SDK version\n# exist_ok checks if workspace exists or not.\n\nfrom azureml.core import Workspace\n\nws = Workspace.create(name = workspace_name,\n subscription_id = subscription_id,\n resource_group = resource_group, \n location = workspace_region,\n exist_ok=True)\n\nws.get_details()"],"metadata":{},"outputs":[],"execution_count":6},{"cell_type":"code","source":["ws = Workspace(workspace_name = workspace_name,\n subscription_id = subscription_id,\n resource_group = resource_group)\n\n# persist the subscription id, resource group name, and workspace name in aml_config/config.json.\nws.write_config()"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"code","source":["%sh\ncat /databricks/driver/aml_config/config.json"],"metadata":{},"outputs":[],"execution_count":8},{"cell_type":"code","source":["# import the Workspace class and check the azureml SDK version\nfrom azureml.core import Workspace\n\nws = Workspace.from_config()\nprint('Workspace name: ' + ws.name, \n 'Azure region: ' + ws.location, \n 'Subscription id: ' + ws.subscription_id, \n 'Resource group: ' + ws.resource_group, sep = '\\n')"],"metadata":{},"outputs":[],"execution_count":9},{"cell_type":"code","source":["dbutils.notebook.exit(\"success\")"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"code","source":[""],"metadata":{},"outputs":[],"execution_count":11}],"metadata":{"name":"01.Installation_and_Configuration","notebookId":3874566296719377},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/02.Ingest_data.ipynb b/databricks/02.Ingest_data.ipynb new file mode 100644 index 00000000..b8075a4c --- /dev/null +++ b/databricks/02.Ingest_data.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run all previous notebooks in sequence before running this."],"metadata":{}},{"cell_type":"markdown","source":["#Data Ingestion"],"metadata":{}},{"cell_type":"code","source":["import os\nimport urllib"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["# Download AdultCensusIncome.csv from Azure CDN. This file has 32,561 rows.\nbasedataurl = \"https://amldockerdatasets.azureedge.net\"\ndatafile = \"AdultCensusIncome.csv\"\ndatafile_dbfs = os.path.join(\"/dbfs\", datafile)\n\nif os.path.isfile(datafile_dbfs):\n print(\"found {} at {}\".format(datafile, datafile_dbfs))\nelse:\n print(\"downloading {} to {}\".format(datafile, datafile_dbfs))\n urllib.request.urlretrieve(os.path.join(basedataurl, datafile), datafile_dbfs)"],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"code","source":["# Create a Spark dataframe out of the csv file.\ndata_all = sqlContext.read.format('csv').options(header='true', inferSchema='true', ignoreLeadingWhiteSpace='true', ignoreTrailingWhiteSpace='true').load(datafile)\nprint(\"({}, {})\".format(data_all.count(), len(data_all.columns)))\ndata_all.printSchema()"],"metadata":{},"outputs":[],"execution_count":6},{"cell_type":"code","source":["#renaming columns\ncolumns_new = [col.replace(\"-\", \"_\") for col in data_all.columns]\ndata_all = data_all.toDF(*columns_new)\ndata_all.printSchema()"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"code","source":["display(data_all.limit(5))"],"metadata":{},"outputs":[],"execution_count":8},{"cell_type":"markdown","source":["#Data Preparation"],"metadata":{}},{"cell_type":"code","source":["# Choose feature columns and the label column.\nlabel = \"income\"\nxvals_all = set(data_all.columns) - {label}\n\n#dbutils.widgets.remove(\"xvars_multiselect\")\ndbutils.widgets.removeAll()\n\ndbutils.widgets.multiselect('xvars_multiselect', 'hours_per_week', xvals_all)\nxvars_multiselect = dbutils.widgets.get(\"xvars_multiselect\")\nxvars = xvars_multiselect.split(\",\")\n\nprint(\"label = {}\".format(label))\nprint(\"features = {}\".format(xvars))\n\ndata = data_all.select([*xvars, label])\n\n# Split data into train and test.\ntrain, test = data.randomSplit([0.75, 0.25], seed=123)\n\nprint(\"train ({}, {})\".format(train.count(), len(train.columns)))\nprint(\"test ({}, {})\".format(test.count(), len(test.columns)))"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"markdown","source":["#Data Persistence"],"metadata":{}},{"cell_type":"code","source":["# Write the train and test data sets to intermediate storage\ntrain_data_path = \"AdultCensusIncomeTrain\"\ntest_data_path = \"AdultCensusIncomeTest\"\n\ntrain_data_path_dbfs = os.path.join(\"/dbfs\", \"AdultCensusIncomeTrain\")\ntest_data_path_dbfs = os.path.join(\"/dbfs\", \"AdultCensusIncomeTest\")\n\ntrain.write.mode('overwrite').parquet(train_data_path)\ntest.write.mode('overwrite').parquet(test_data_path)\nprint(\"train and test datasets saved to {} and {}\".format(train_data_path_dbfs, test_data_path_dbfs))"],"metadata":{},"outputs":[],"execution_count":12},{"cell_type":"code","source":["dbutils.notebook.exit(\"success\")"],"metadata":{},"outputs":[],"execution_count":13},{"cell_type":"code","source":[""],"metadata":{},"outputs":[],"execution_count":14}],"metadata":{"name":"02.Ingest_data","notebookId":3874566296719393},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/03a.Build_model.ipynb b/databricks/03a.Build_model.ipynb new file mode 100644 index 00000000..15da2ac9 --- /dev/null +++ b/databricks/03a.Build_model.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run all previous notebooks in sequence before running this."],"metadata":{}},{"cell_type":"markdown","source":["#Model Building"],"metadata":{}},{"cell_type":"code","source":["import os\nimport pprint\nimport numpy as np\n\nfrom pyspark.ml import Pipeline, PipelineModel\nfrom pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler\nfrom pyspark.ml.classification import LogisticRegression\nfrom pyspark.ml.evaluation import BinaryClassificationEvaluator\nfrom pyspark.ml.tuning import CrossValidator, ParamGridBuilder"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["#get the train and test datasets\ntrain_data_path = \"AdultCensusIncomeTrain\"\ntest_data_path = \"AdultCensusIncomeTest\"\n\ntrain = spark.read.parquet(train_data_path)\ntest = spark.read.parquet(test_data_path)\n\nprint(\"train: ({}, {})\".format(train.count(), len(train.columns)))\nprint(\"test: ({}, {})\".format(test.count(), len(test.columns)))\n\ntrain.printSchema()"],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"markdown","source":["#Define ML Pipeline"],"metadata":{}},{"cell_type":"code","source":["label = \"income\"\n\nreg = 0.1\nprint(\"Regularization Rate is {}.\".format(reg))\n\n# create a new Logistic Regression model.\nlr = LogisticRegression(regParam=reg)\n\ndtypes = dict(train.dtypes)\ndtypes.pop(label)\n\nsi_xvars = []\nohe_xvars = []\nfeatureCols = []\nfor idx,key in enumerate(dtypes):\n if dtypes[key] == \"string\":\n featureCol = \"-\".join([key, \"encoded\"])\n featureCols.append(featureCol)\n \n tmpCol = \"-\".join([key, \"tmp\"])\n # string-index and one-hot encode the string column\n #https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/ml/feature/StringIndexer.html\n #handleInvalid: Param for how to handle invalid data (unseen labels or NULL values). \n #Options are 'skip' (filter out rows with invalid data), 'error' (throw an error), \n #or 'keep' (put invalid data in a special additional bucket, at index numLabels). Default: \"error\"\n si_xvars.append(StringIndexer(inputCol=key, outputCol=tmpCol, handleInvalid=\"skip\")) #, handleInvalid=\"keep\"\n ohe_xvars.append(OneHotEncoder(inputCol=tmpCol, outputCol=featureCol))\n else:\n featureCols.append(key)\n\n# string-index the label column into a column named \"label\"\nsi_label = StringIndexer(inputCol=label, outputCol='label')\n\n# assemble the encoded feature columns in to a column named \"features\"\nassembler = VectorAssembler(inputCols=featureCols, outputCol=\"features\")\n\n# put together the pipeline\npipe = Pipeline(stages=[*si_xvars, *ohe_xvars, si_label, assembler, lr])\n\n# train the model\nmodel = pipe.fit(train)\nprint(model)"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"markdown","source":["#Tune ML Pipeline"],"metadata":{}},{"cell_type":"code","source":["regs = np.arange(0.0, 1.0, 0.2)\n\nparamGrid = ParamGridBuilder().addGrid(lr.regParam, regs).build()\ncv = CrossValidator(estimator=pipe, evaluator=BinaryClassificationEvaluator(), estimatorParamMaps=paramGrid)"],"metadata":{},"outputs":[],"execution_count":9},{"cell_type":"code","source":["cvModel = cv.fit(train)"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"code","source":["model = cvModel.bestModel"],"metadata":{},"outputs":[],"execution_count":11},{"cell_type":"markdown","source":["#Model Evaluation"],"metadata":{}},{"cell_type":"code","source":["# make prediction\npred = model.transform(test)\noutput = pred[['hours_per_week','age','workclass','marital_status','income','prediction']]\ndisplay(output.limit(5))"],"metadata":{},"outputs":[],"execution_count":13},{"cell_type":"code","source":["# evaluate. note only 2 metrics are supported out of the box by Spark ML.\nbce = BinaryClassificationEvaluator(rawPredictionCol='rawPrediction')\nau_roc = bce.setMetricName('areaUnderROC').evaluate(pred)\nau_prc = bce.setMetricName('areaUnderPR').evaluate(pred)\n\nprint(\"Area under ROC: {}\".format(au_roc))\nprint(\"Area Under PR: {}\".format(au_prc))"],"metadata":{},"outputs":[],"execution_count":14},{"cell_type":"markdown","source":["#Model Persistence"],"metadata":{}},{"cell_type":"code","source":["##NOTE: by default the model is saved to and loaded from /dbfs/ instead of cwd!\nmodel_name = \"AdultCensus.mml\"\nmodel_dbfs = os.path.join(\"/dbfs\", model_name)\n\nmodel.write().overwrite().save(model_name)\nprint(\"saved model to {}\".format(model_dbfs))"],"metadata":{},"outputs":[],"execution_count":16},{"cell_type":"code","source":["%sh\n\nls -la /dbfs/AdultCensus.mml/*"],"metadata":{},"outputs":[],"execution_count":17},{"cell_type":"code","source":["dbutils.notebook.exit(\"success\")"],"metadata":{},"outputs":[],"execution_count":18}],"metadata":{"name":"03a.Build_model","notebookId":3874566296719409},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/03b.Build_model_runHistory.ipynb b/databricks/03b.Build_model_runHistory.ipynb new file mode 100644 index 00000000..6bf308e7 --- /dev/null +++ b/databricks/03b.Build_model_runHistory.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run all previous notebooks in sequence before running this."],"metadata":{}},{"cell_type":"markdown","source":["#Model Building"],"metadata":{}},{"cell_type":"code","source":["import os\nimport pprint\nimport numpy as np\n\nfrom pyspark.ml import Pipeline, PipelineModel\nfrom pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler\nfrom pyspark.ml.classification import LogisticRegression\nfrom pyspark.ml.evaluation import BinaryClassificationEvaluator\nfrom pyspark.ml.tuning import CrossValidator, ParamGridBuilder"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["import azureml.core\n\n# Check core SDK version number\nprint(\"SDK version:\", azureml.core.VERSION)"],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"code","source":["# import the Workspace class and check the azureml SDK version\nfrom azureml.core import Workspace\n\nws = Workspace.from_config()\nprint('Workspace name: ' + ws.name, \n 'Azure region: ' + ws.location, \n 'Subscription id: ' + ws.subscription_id, \n 'Resource group: ' + ws.resource_group, sep = '\\n')"],"metadata":{},"outputs":[],"execution_count":6},{"cell_type":"code","source":["#get the train and test datasets\ntrain_data_path = \"AdultCensusIncomeTrain\"\ntest_data_path = \"AdultCensusIncomeTest\"\n\ntrain = spark.read.parquet(train_data_path)\ntest = spark.read.parquet(test_data_path)\n\nprint(\"train: ({}, {})\".format(train.count(), len(train.columns)))\nprint(\"test: ({}, {})\".format(test.count(), len(test.columns)))\n\ntrain.printSchema()"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"markdown","source":["#Define ML Pipeline"],"metadata":{}},{"cell_type":"code","source":["label = \"income\"\ndtypes = dict(train.dtypes)\ndtypes.pop(label)\n\nsi_xvars = []\nohe_xvars = []\nfeatureCols = []\nfor idx,key in enumerate(dtypes):\n if dtypes[key] == \"string\":\n featureCol = \"-\".join([key, \"encoded\"])\n featureCols.append(featureCol)\n \n tmpCol = \"-\".join([key, \"tmp\"])\n # string-index and one-hot encode the string column\n #https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/ml/feature/StringIndexer.html\n #handleInvalid: Param for how to handle invalid data (unseen labels or NULL values). \n #Options are 'skip' (filter out rows with invalid data), 'error' (throw an error), \n #or 'keep' (put invalid data in a special additional bucket, at index numLabels). Default: \"error\"\n si_xvars.append(StringIndexer(inputCol=key, outputCol=tmpCol, handleInvalid=\"skip\"))\n ohe_xvars.append(OneHotEncoder(inputCol=tmpCol, outputCol=featureCol))\n else:\n featureCols.append(key)\n\n# string-index the label column into a column named \"label\"\nsi_label = StringIndexer(inputCol=label, outputCol='label')\n\n# assemble the encoded feature columns in to a column named \"features\"\nassembler = VectorAssembler(inputCols=featureCols, outputCol=\"features\")"],"metadata":{},"outputs":[],"execution_count":9},{"cell_type":"code","source":["from azureml.core.run import Run\nfrom azureml.core.experiment import Experiment\nimport numpy as np\nimport os\nimport shutil\n\nmodel_name = \"AdultCensus_runHistory.mml\"\nmodel_dbfs = os.path.join(\"/dbfs\", model_name)\nrun_history_name = 'spark-ml-notebook'\n\n# start a training run by defining an experiment\nmyexperiment = Experiment(ws, \"Azure_Databricks_Experiment\")\nroot_run = myexperiment.start_logging()\n\n# Regularization Rates\nregs = np.arange(0.0, 1.0, 0.2)\n\n# try a bunch of alpha values in a Linear Regression (Ridge) model\nfor reg in regs:\n print(\"Regularization rate: {}\".format(reg))\n # create a bunch of child runs\n with root_run.child_run(\"reg-\" + str(reg)) as run:\n # create a new Logistic Regression model.\n lr = LogisticRegression(regParam=reg)\n \n # put together the pipeline\n pipe = Pipeline(stages=[*si_xvars, *ohe_xvars, si_label, assembler, lr])\n\n # train the model\n model_pipeline = pipe.fit(train)\n \n # make prediction\n pred = model_pipeline.transform(test)\n \n # evaluate. note only 2 metrics are supported out of the box by Spark ML.\n bce = BinaryClassificationEvaluator(rawPredictionCol='rawPrediction')\n au_roc = bce.setMetricName('areaUnderROC').evaluate(pred)\n au_prc = bce.setMetricName('areaUnderPR').evaluate(pred)\n\n print(\"Area under ROC: {}\".format(au_roc))\n print(\"Area Under PR: {}\".format(au_prc))\n \n # log reg, au_roc, au_prc and feature names in run history\n run.log(\"reg\", reg)\n run.log(\"au_roc\", au_roc)\n run.log(\"au_prc\", au_prc)\n run.log_list(\"columns\", train.columns)\n\n # save model\n model_pipeline.write().overwrite().save(model_name)\n \n # upload the serialized model into run history record\n mdl, ext = model_name.split(\".\")\n model_zip = mdl + \".zip\"\n shutil.make_archive(mdl, 'zip', model_dbfs)\n run.upload_file(\"outputs/\" + model_name, model_zip) \n #run.upload_file(\"outputs/\" + model_name, path_or_stream = model_dbfs) #cannot deal with folders\n\n # now delete the serialized model from local folder since it is already uploaded to run history \n shutil.rmtree(model_dbfs)\n os.remove(model_zip)\n \n# Declare run completed\nroot_run.complete()\nroot_run_id = root_run.id\nprint (\"run id:\", root_run.id)"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"code","source":["#Load all run metrics from run history into a dictionary object.\nchild_runs = {}\nchild_run_metrics = {}\n\nfor r in root_run.get_children():\n child_runs[r.id] = r\n child_run_metrics[r.id] = r.get_metrics()"],"metadata":{},"outputs":[],"execution_count":11},{"cell_type":"code","source":["best_run_id = max(child_run_metrics, key = lambda k: child_run_metrics[k]['au_roc'])\nbest_run = child_runs[best_run_id]\nprint('Best run is:', best_run_id)\nprint('Metrics:', child_run_metrics[best_run_id])"],"metadata":{},"outputs":[],"execution_count":12},{"cell_type":"code","source":["best_reg = child_run_metrics[best_run_id]['reg']\nmax_auc = child_run_metrics[best_run_id]['au_roc']\n\nreg_auc = np.array([(child_run_metrics[k]['reg'], child_run_metrics[k]['au_roc']) for k in child_run_metrics.keys()])\nreg_auc_sorted = reg_auc[reg_auc[:,0].argsort()]\n\nimport pandas as pd\ndf = pd.DataFrame(reg_auc_sorted)\nspdf = spark.createDataFrame(df)\ndisplay(spdf)"],"metadata":{},"outputs":[],"execution_count":13},{"cell_type":"code","source":["#Download the model from the best run to a local folder\nbest_model_file_name = \"best_model.zip\"\nbest_run.download_file(name = 'outputs/' + model_name, output_file_path = best_model_file_name)"],"metadata":{},"outputs":[],"execution_count":14},{"cell_type":"markdown","source":["#Model Evaluation"],"metadata":{}},{"cell_type":"code","source":["##unzip the model to dbfs (as load() seems to require that) and load it.\nif os.path.isfile(model_dbfs) or os.path.isdir(model_dbfs):\n shutil.rmtree(model_dbfs)\nshutil.unpack_archive(best_model_file_name, model_dbfs)\n\nmodel_pipeline_best = PipelineModel.load(model_name)"],"metadata":{},"outputs":[],"execution_count":16},{"cell_type":"code","source":["# make prediction\npred = model_pipeline_best.transform(test)\noutput = pred[['hours_per_week','age','workclass','marital_status','income','prediction']]\ndisplay(output.limit(5))"],"metadata":{},"outputs":[],"execution_count":17},{"cell_type":"code","source":["# evaluate. note only 2 metrics are supported out of the box by Spark ML.\nbce = BinaryClassificationEvaluator(rawPredictionCol='rawPrediction')\nau_roc = bce.setMetricName('areaUnderROC').evaluate(pred)\nau_prc = bce.setMetricName('areaUnderPR').evaluate(pred)\n\nprint(\"Area under ROC: {}\".format(au_roc))\nprint(\"Area Under PR: {}\".format(au_prc))"],"metadata":{},"outputs":[],"execution_count":18},{"cell_type":"markdown","source":["#Model Persistence"],"metadata":{}},{"cell_type":"code","source":["##NOTE: by default the model is saved to and loaded from /dbfs/ instead of cwd!\nmodel_pipeline_best.write().overwrite().save(model_name)\nprint(\"saved model to {}\".format(model_dbfs))"],"metadata":{},"outputs":[],"execution_count":20},{"cell_type":"code","source":["%sh\n\nls -la /dbfs/AdultCensus_runHistory.mml/*"],"metadata":{},"outputs":[],"execution_count":21},{"cell_type":"code","source":["dbutils.notebook.exit(\"success\")"],"metadata":{},"outputs":[],"execution_count":22}],"metadata":{"name":"03b.Build_model_runHistory","notebookId":3874566296719353},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/04.Deploy_to_ACI.ipynb b/databricks/04.Deploy_to_ACI.ipynb new file mode 100644 index 00000000..a2c04a19 --- /dev/null +++ b/databricks/04.Deploy_to_ACI.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run all previous notebooks in sequence before running this."],"metadata":{}},{"cell_type":"markdown","source":["Please Register Azure Container Instance(ACI) using Azure Portal: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-supported-services#portal in your subscription before using the SDK to deploy your ML model to ACI."],"metadata":{}},{"cell_type":"code","source":["from azureml.core import Workspace\nimport azureml.core\n\n# Check core SDK version number\nprint(\"SDK version:\", azureml.core.VERSION)\n\n#'''\nws = Workspace.from_config()\nprint('Workspace name: ' + ws.name, \n 'Azure region: ' + ws.location, \n 'Subscription id: ' + ws.subscription_id, \n 'Resource group: ' + ws.resource_group, sep = '\\n')\n#'''"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["##NOTE: service deployment always gets the model from the current working dir.\nimport os\n\nmodel_name = \"AdultCensus.mml\" # OR AdultCensus_runHistory.mml\nmodel_name_dbfs = os.path.join(\"/dbfs\", model_name)\n\nprint(\"copy model from dbfs to local\")\nmodel_local = \"file:\" + os.getcwd() + \"/\" + model_name\ndbutils.fs.cp(model_name, model_local, True)"],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"code","source":["#Register the model\nfrom azureml.core.model import Model\nmymodel = Model.register(model_path = model_name, # this points to a local file\n model_name = model_name, # this is the name the model is registered as, am using same name for both path and name. \n description = \"ADB trained model by Parashar\",\n workspace = ws)\n\nprint(mymodel.name, mymodel.description, mymodel.version)"],"metadata":{},"outputs":[],"execution_count":6},{"cell_type":"code","source":["#%%writefile score_sparkml.py\nscore_sparkml = \"\"\"\n\nimport json\n\ndef init():\n try:\n # One-time initialization of PySpark and predictive model\n import pyspark\n from azureml.core.model import Model\n from pyspark.ml import PipelineModel\n \n global trainedModel\n global spark\n \n spark = pyspark.sql.SparkSession.builder.appName(\"ADB and AML notebook by Parashar\").getOrCreate()\n model_name = \"{model_name}\" #interpolated\n model_path = Model.get_model_path(model_name)\n trainedModel = PipelineModel.load(model_path)\n except Exception as e:\n trainedModel = e\n \ndef run(input_json):\n if isinstance(trainedModel, Exception):\n return json.dumps({{\"trainedModel\":str(trainedModel)}})\n \n try:\n sc = spark.sparkContext\n input_list = json.loads(input_json)\n input_rdd = sc.parallelize(input_list)\n input_df = spark.read.json(input_rdd)\n \n # Compute prediction\n prediction = trainedModel.transform(input_df)\n #result = prediction.first().prediction\n predictions = prediction.collect()\n\n #Get each scored result\n preds = [str(x['prediction']) for x in predictions]\n result = \",\".join(preds)\n except Exception as e:\n result = str(e)\n return json.dumps({{\"result\":result}})\n \n\"\"\".format(model_name=model_name)\n\nexec(score_sparkml)\n\nwith open(\"score_sparkml.py\", \"w\") as file:\n file.write(score_sparkml)"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"code","source":["from azureml.core.conda_dependencies import CondaDependencies \n\nmyacienv = CondaDependencies.create(conda_packages=['scikit-learn','numpy','pandas'])\n\nwith open(\"mydeployenv.yml\",\"w\") as f:\n f.write(myacienv.serialize_to_string())"],"metadata":{},"outputs":[],"execution_count":8},{"cell_type":"code","source":["#deploy to ACI\nfrom azureml.core.webservice import AciWebservice, Webservice\n\nmyaci_config = AciWebservice.deploy_configuration(\n cpu_cores = 1, \n memory_gb = 1, \n tags = {'name':'Databricks Azure ML ACI'}, \n description = 'This is for ADB and AML example. Azure Databricks & Azure ML SDK demo with ACI by Parashar.')"],"metadata":{},"outputs":[],"execution_count":9},{"cell_type":"code","source":["# this will take 10-15 minutes to finish\n\nservice_name = \"aciws\"\nruntime = \"spark-py\" \ndriver_file = \"score_sparkml.py\"\nmy_conda_file = \"mydeployenv.yml\"\n\n# image creation\nfrom azureml.core.image import ContainerImage\nmyimage_config = ContainerImage.image_configuration(execution_script = driver_file, \n runtime = runtime, \n conda_file = my_conda_file)\n\n# Webservice creation\nmyservice = Webservice.deploy_from_model(\n workspace=ws, \n name=service_name,\n deployment_config = myaci_config,\n models = [mymodel],\n image_config = myimage_config\n )\n\nmyservice.wait_for_deployment(show_output=True)"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"code","source":["help(ContainerImage)"],"metadata":{},"outputs":[],"execution_count":11},{"cell_type":"code","source":["# List images by ws\n\nfor i in ContainerImage.list(workspace = ws):\n print('{}(v.{} [{}]) stored at {} with build log {}'.format(i.name, i.version, i.creation_state, i.image_location, i.image_build_log_uri))"],"metadata":{},"outputs":[],"execution_count":12},{"cell_type":"code","source":["#for using the Web HTTP API \nprint(myservice.scoring_uri)"],"metadata":{},"outputs":[],"execution_count":13},{"cell_type":"code","source":["import json\n\n#get the some sample data\ntest_data_path = \"AdultCensusIncomeTest\"\ntest = spark.read.parquet(test_data_path).limit(5)\n\ntest_json = json.dumps(test.toJSON().collect())\n\nprint(test_json)"],"metadata":{},"outputs":[],"execution_count":14},{"cell_type":"code","source":["#using data defined above predict if income is >50K (1) or <=50K (0)\nmyservice.run(input_data=test_json)"],"metadata":{},"outputs":[],"execution_count":15},{"cell_type":"code","source":["#comment to not delete the web service\nmyservice.delete()"],"metadata":{},"outputs":[],"execution_count":16},{"cell_type":"code","source":[""],"metadata":{},"outputs":[],"execution_count":17}],"metadata":{"name":"04.DeploytoACI","notebookId":3874566296719333},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/05.Deploy_to_AKS_existingImage.ipynb b/databricks/05.Deploy_to_AKS_existingImage.ipynb new file mode 100644 index 00000000..e6a08783 --- /dev/null +++ b/databricks/05.Deploy_to_AKS_existingImage.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["Azure ML & Azure Databricks notebooks by Parashar Shah.\n\nCopyright (c) Microsoft Corporation. All rights reserved.\n\nLicensed under the MIT License."],"metadata":{}},{"cell_type":"markdown","source":["Please ensure you have run all previous notebooks in sequence before running this. This notebook uses image from ACI notebook for deploying to AKS."],"metadata":{}},{"cell_type":"code","source":["from azureml.core import Workspace\nimport azureml.core\n\n# Check core SDK version number\nprint(\"SDK version:\", azureml.core.VERSION)\n\n#'''\nws = Workspace.from_config()\nprint('Workspace name: ' + ws.name, \n 'Azure region: ' + ws.location, \n 'Subscription id: ' + ws.subscription_id, \n 'Resource group: ' + ws.resource_group, sep = '\\n')\n#'''"],"metadata":{},"outputs":[],"execution_count":3},{"cell_type":"code","source":["# List images by ws\n\nfrom azureml.core.image import ContainerImage\nfor i in ContainerImage.list(workspace = ws):\n print('{}(v.{} [{}]) stored at {} with build log {}'.format(i.name, i.version, i.creation_state, i.image_location, i.image_build_log_uri))"],"metadata":{},"outputs":[],"execution_count":4},{"cell_type":"code","source":["from azureml.core.image import Image\nmyimage = Image(workspace=ws, id=\"aciws:25\")"],"metadata":{},"outputs":[],"execution_count":5},{"cell_type":"code","source":["#create AKS compute\n#it may take 20-25 minutes to create a new cluster\n\nfrom azureml.core.compute import AksCompute, ComputeTarget\n\n# Use the default configuration (can also provide parameters to customize)\nprov_config = AksCompute.provisioning_configuration()\n\naks_name = 'ps-aks-clus2' \n\n# Create the cluster\naks_target = ComputeTarget.create(workspace = ws, \n name = aks_name, \n provisioning_configuration = prov_config)\n\naks_target.wait_for_completion(show_output = True)\n\nprint(aks_target.provisioning_state)\nprint(aks_target.provisioning_errors)"],"metadata":{},"outputs":[],"execution_count":6},{"cell_type":"code","source":["from azureml.core.webservice import Webservice\nhelp( Webservice.deploy_from_image)"],"metadata":{},"outputs":[],"execution_count":7},{"cell_type":"code","source":["from azureml.core.webservice import Webservice, AksWebservice\nfrom azureml.core.image import ContainerImage\n\n#Set the web service configuration (using default here)\naks_config = AksWebservice.deploy_configuration()\n\n#unique service name\nservice_name ='ps-aks-service'\n\n# Webservice creation using single command, there is a variant to use image directly as well.\naks_service = Webservice.deploy_from_image(\n workspace=ws, \n name=service_name,\n deployment_config = aks_config,\n image = myimage,\n deployment_target = aks_target\n )\n\naks_service.wait_for_deployment(show_output=True)"],"metadata":{},"outputs":[],"execution_count":8},{"cell_type":"code","source":["#for using the Web HTTP API \nprint(aks_service.scoring_uri)\nprint(aks_service.get_keys())"],"metadata":{},"outputs":[],"execution_count":9},{"cell_type":"code","source":["import json\n\n#get the some sample data\ntest_data_path = \"AdultCensusIncomeTest\"\ntest = spark.read.parquet(test_data_path).limit(5)\n\ntest_json = json.dumps(test.toJSON().collect())\n\nprint(test_json)"],"metadata":{},"outputs":[],"execution_count":10},{"cell_type":"code","source":["#using data defined above predict if income is >50K (1) or <=50K (0)\naks_service.run(input_data=test_json)"],"metadata":{},"outputs":[],"execution_count":11},{"cell_type":"code","source":["#comment to not delete the web service\naks_service.delete()\n#image.delete()\n#model.delete()\n#aks_target.delete()"],"metadata":{},"outputs":[],"execution_count":12},{"cell_type":"code","source":[""],"metadata":{},"outputs":[],"execution_count":13}],"metadata":{"name":"04.DeploytoACI","notebookId":3874566296719318},"nbformat":4,"nbformat_minor":0} diff --git a/databricks/Databricks_AMLSDK_github.dbc b/databricks/Databricks_AMLSDK_github.dbc new file mode 100644 index 00000000..50446c5d Binary files /dev/null and b/databricks/Databricks_AMLSDK_github.dbc differ diff --git a/databricks/readme.md b/databricks/readme.md new file mode 100644 index 00000000..704251e9 --- /dev/null +++ b/databricks/readme.md @@ -0,0 +1,29 @@ +# Azure Databricks - Azure Machine Learning SDK Sample Notebooks + +**NOTE**: With the latest version of Azure Machine Learning SDK, there are some API changes due to which previous version of notebooks will not work. +Please remove the previous SDK version and install the latest SDK by installing **azureml-sdk[databricks]** as a PyPi library in Azure Databricks workspace. + +**NOTE**: Please create your Azure Databricks cluster as v4.x (high concurrency preferred) with **Python 3** (dropdown). + +**NOTE**: Some packages like psutil upgrade libs that can cause a conflict, please install such packages by freezing lib version. Eg. "psutil **cryptography==1.5 pyopenssl==16.0.0 ipython=2.2.0**" to avoid install error. This issue is related to Databricks and not related to AML SDK. + +**NOTE**: You should at least have contributor access to your Azure subcription to run some of the notebooks. + +The iPython Notebooks have to be run sequentially after making changes based on your subscription. The corresponding DBC archive contains all the notebooks and can be imported into your Databricks workspace. You can the run notebooks after importing .dbc instead of downloading individually. + +This set of notebooks are related to Income prediction experiment based on this [dataset](https://archive.ics.uci.edu/ml/datasets/adult) and demonstrate how to data prep, train and operationalize a Spark ML model with Azure ML Python SDK from within Azure Databricks. For details on SDK concepts, please refer to [notebooks](https://github.com/Azure/MachineLearningNotebooks) + +(Recommended) [Azure Databricks AML SDK notebooks](Databricks_AMLSDK_github.dbc) A single DBC package to import all notebooks in your Azure Databricks workspace. + +01. [Installation and Configuration](01.Installation_and_Configuration.ipynb): Install the Azure ML Python SDK and Initialize an Azure ML Workspace and save the Workspace configuration file. +02. [Ingest data](02.Ingest_data.ipynb): Download the Adult Census Income dataset and split it into train and test sets. +03. [Build model](03a.Build_model.ipynb): Train a binary classification model in Azure Databricks with a Spark ML Pipeline. +04. [Build model with Run History](03b.Build_model_runHistory.ipynb): Train model and also capture run history (tracking) with Azure ML Python SDK. +05. [Deploy to ACI](04.Deploy_to_ACI.ipynb): Deploy model to Azure Container Instance (ACI) with Azure ML Python SDK. +06. [Deploy to AKS](04.Deploy_to_AKS_existingImage.ipynb): Deploy model to Azure Kubernetis Service (AKS) with Azure ML Python SDK from an existing Image with model, conda and score file. + +Copyright (c) Microsoft Corporation. All rights reserved. + +All notebooks in this folder are licensed under the MIT License. + +Apache®, Apache Spark, and Spark® are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. diff --git a/dataprep/getting-started.ipynb b/dataprep/getting-started.ipynb new file mode 100644 index 00000000..9e4e3aca --- /dev/null +++ b/dataprep/getting-started.ipynb @@ -0,0 +1,2985 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting started with Azure ML Data Prep SDK\n", + "Copyright (c) Microsoft Corporation. All rights reserved.
\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Note: Some features in this Notebook will _not_ work with the Private Preview version of the SDK; it assumes the Public Preview version.\n", + "\n", + "Wonder how you can make the most of the Azure ML Data Prep SDK? In this \"Getting Started\" guide, we'll showcase a few highlights that make this SDK shine for big datasets where `pandas` and `dplyr` can fall short. Using the [Ford GoBike dataset](https://www.fordgobike.com/system-data) as an example, we'll cover how to build Dataflows that allow you to:\n", + "\n", + "* [Read in data](#Read-in-data)\n", + "* [Get a profile of your data](#Get-data-profile)\n", + "* [Apply smart transforms by Microsoft Research](#Derive-by-example)\n", + "* [Filter quickly](#Filter-our-data)\n", + "* [Apply common data science transforms](#Transform-our-data)\n", + "* [Easily handle errors and assertions](#Assert-on-invalid-data)\n", + "* [Prepare your dataset for export and machine learning](#Export-for-machine-learning)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import display\n", + "from os import path\n", + "from tempfile import mkdtemp\n", + "\n", + "import pandas as pd\n", + "import azureml.dataprep as dprep" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Read in data\n", + "\n", + "Azure ML Data Prep supports many different file reading formats (i.e. CSV, Excel, Parquet), and also offers the ability to infer column types automatically. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timeend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
080110.02017-12-31 16:57:39.654000+00:002018-01-01 15:12:50.245000+00:0074.0Laguna St at Hayes St37.776435-122.42624443.0San Francisco Public Library (Grove St at Hyde...37.778768-122.41592996.0Customer1987.0Male
178800.02017-12-31 15:56:34.842000+00:002018-01-01 13:49:55.617000+00:00284.0Yerba Buena Center for the Arts (Howard St at ...37.784872-122.40087696.0Dolores St at 15th St37.766210-122.42661488.0Customer1965.0Female
245768.02017-12-31 22:45:48.411000+00:002018-01-01 11:28:36.883000+00:00245.0Downtown Berkeley BART37.870348-122.267764245.0Downtown Berkeley BART37.870348-122.2677641094.0CustomerNaN
362172.02017-12-31 17:31:10.636000+00:002018-01-01 10:47:23.531000+00:0060.08th St at Ringold St37.774520-122.4094495.0Powell St BART Station (Market St at 5th St)37.783899-122.4084452831.0CustomerNaN
443603.02017-12-31 14:23:14.001000+00:002018-01-01 02:29:57.571000+00:00239.0Bancroft Way at Telegraph Ave37.868813-122.258764247.0Fulton St at Bancroft Way37.867789-122.2658963167.0Subscriber1997.0Female
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time \\\n", + "0 80110.0 2017-12-31 16:57:39.654000+00:00 \n", + "1 78800.0 2017-12-31 15:56:34.842000+00:00 \n", + "2 45768.0 2017-12-31 22:45:48.411000+00:00 \n", + "3 62172.0 2017-12-31 17:31:10.636000+00:00 \n", + "4 43603.0 2017-12-31 14:23:14.001000+00:00 \n", + "\n", + " end_time start_station_id \\\n", + "0 2018-01-01 15:12:50.245000+00:00 74.0 \n", + "1 2018-01-01 13:49:55.617000+00:00 284.0 \n", + "2 2018-01-01 11:28:36.883000+00:00 245.0 \n", + "3 2018-01-01 10:47:23.531000+00:00 60.0 \n", + "4 2018-01-01 02:29:57.571000+00:00 239.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 Laguna St at Hayes St 37.776435 \n", + "1 Yerba Buena Center for the Arts (Howard St at ... 37.784872 \n", + "2 Downtown Berkeley BART 37.870348 \n", + "3 8th St at Ringold St 37.774520 \n", + "4 Bancroft Way at Telegraph Ave 37.868813 \n", + "\n", + " start_station_longitude end_station_id \\\n", + "0 -122.426244 43.0 \n", + "1 -122.400876 96.0 \n", + "2 -122.267764 245.0 \n", + "3 -122.409449 5.0 \n", + "4 -122.258764 247.0 \n", + "\n", + " end_station_name end_station_latitude \\\n", + "0 San Francisco Public Library (Grove St at Hyde... 37.778768 \n", + "1 Dolores St at 15th St 37.766210 \n", + "2 Downtown Berkeley BART 37.870348 \n", + "3 Powell St BART Station (Market St at 5th St) 37.783899 \n", + "4 Fulton St at Bancroft Way 37.867789 \n", + "\n", + " end_station_longitude bike_id user_type member_birth_year member_gender \n", + "0 -122.415929 96.0 Customer 1987.0 Male \n", + "1 -122.426614 88.0 Customer 1965.0 Female \n", + "2 -122.267764 1094.0 Customer NaN \n", + "3 -122.408445 2831.0 Customer NaN \n", + "4 -122.265896 3167.0 Subscriber 1997.0 Female " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gobike = dprep\\\n", + " .read_csv(\n", + " path='https://dprepdata.blob.core.windows.net/demo/ford_gobike/2017-fordgobike-tripdata.csv',\n", + " inference_arguments=dprep.InferenceArguments.current_culture()\n", + " )\n", + "gobike.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to iterate more quickly, we can take a sample of our data. Later, we can then apply the same transformations to the entire dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "sampled_gobike = gobike.take_sample(probability=0.1, seed=5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get data profile\n", + "\n", + "Let's understand what our data looks like. Azure ML Data Prep facilitates this process by offering data profiles that help us glimpse into column types and column summary statistics." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TypeMinMaxCountMissing CountError CountLower QuartileUpper QuartileStandard DeviationMean
duration_secFieldType.DECIMAL6186369519700.00.00.0381.842938.5743444.151099.01
start_timeFieldType.DATE2017-06-28 09:47:36.347000+00:002017-12-31 23:59:01.261000+00:00519700.00.00.0
end_timeFieldType.DATE2017-06-28 09:52:55.338000+00:002018-01-01 15:12:50.245000+00:00519700.00.00.0
start_station_idFieldType.DECIMAL3340519700.00.00.023.8481139.42486.083195.0342
start_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...519700.00.00.0
start_station_latitudeFieldType.DECIMAL37.317337.8802519700.00.00.037.773637.79530.08630537.7717
start_station_longitudeFieldType.DECIMAL-122.444-121.874519700.00.00.0-122.412-122.3910.105573-122.364
end_station_idFieldType.DECIMAL3340519700.00.00.022.7024134.2284.969592.184
end_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...519700.00.00.0
end_station_latitudeFieldType.DECIMAL37.317337.8802519700.00.00.037.774237.79560.086223837.7718
end_station_longitudeFieldType.DECIMAL-122.444-121.874519700.00.00.0-122.41-122.3910.105122-122.363
bike_idFieldType.DECIMAL103733519700.00.00.0788.6792519.96971.3571672.53
user_typeFieldType.STRINGCustomerSubscriber519700.00.00.0
member_birth_yearFieldType.DECIMAL18861999519700.066541.00.01974.331987.9910.51351980.4
member_genderFieldType.STRINGOther519700.00.00.0
" + ], + "text/plain": [ + "ColumnProfile\n", + " name: duration_sec\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 61.0\n", + " max: 86369.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 381.8421435321134\n", + " median: 595.9837506906349\n", + " upper_quartile: 938.5741138032683\n", + " std: 3444.146451247386\n", + " mean: 1099.009520877422\n", + "\n", + "ColumnProfile\n", + " name: start_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 09:47:36.347000+00:00\n", + " max: 2017-12-31 23:59:01.261000+00:00\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 09:52:55.338000+00:00\n", + " max: 2018-01-01 15:12:50.245000+00:00\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 340.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 23.848148131600635\n", + " median: 67.18427817406452\n", + " upper_quartile: 139.42430180307275\n", + " std: 86.08307797095921\n", + " mean: 95.03424475658852\n", + "\n", + "ColumnProfile\n", + " name: start_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3172979\n", + " max: 37.88022244590679\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.7735913559721\n", + " median: 37.783211475877295\n", + " upper_quartile: 37.79531236950411\n", + " std: 0.08630496061661774\n", + " mean: 37.771652603110894\n", + "\n", + "ColumnProfile\n", + " name: start_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.41170653070694\n", + " median: -122.39875282257843\n", + " upper_quartile: -122.39103429266093\n", + " std: 0.10557344899193394\n", + " mean: -122.36392726512949\n", + "\n", + "ColumnProfile\n", + " name: end_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 340.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 22.702361193995444\n", + " median: 65.22613324081779\n", + " upper_quartile: 134.21987129021295\n", + " std: 84.9694914863546\n", + " mean: 92.18404079276426\n", + "\n", + "ColumnProfile\n", + " name: end_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3172979\n", + " max: 37.88022244590679\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.774232065528906\n", + " median: 37.78329810124021\n", + " upper_quartile: 37.79557128475191\n", + " std: 0.08622383487119635\n", + " mean: 37.771843749644646\n", + "\n", + "ColumnProfile\n", + " name: end_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.41012752595213\n", + " median: -122.39855511689811\n", + " upper_quartile: -122.39096192032446\n", + " std: 0.10512220222934929\n", + " mean: -122.36323553679931\n", + "\n", + "ColumnProfile\n", + " name: bike_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 10.0\n", + " max: 3733.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 788.6785454424829\n", + " median: 1726.652793720984\n", + " upper_quartile: 2519.963581272433\n", + " std: 971.3569593530214\n", + " mean: 1672.533078699254\n", + "\n", + "ColumnProfile\n", + " name: user_type\n", + " type: FieldType.STRING\n", + "\n", + " min: Customer\n", + " max: Subscriber\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: member_birth_year\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 1886.0\n", + " max: 1999.0\n", + " count: 519700.0\n", + " missing_count: 66541.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 1974.3341624985283\n", + " median: 1982.8007516297655\n", + " upper_quartile: 1987.9916166785322\n", + " std: 10.51348753990893\n", + " mean: 1980.4047872821984\n", + "\n", + "ColumnProfile\n", + " name: member_gender\n", + " type: FieldType.STRING\n", + "\n", + " min: \n", + " max: Other\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gobike.get_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TypeMinMaxCountMissing CountError CountLower QuartileUpper QuartileStandard DeviationMean
duration_secFieldType.DECIMAL618586451853.00.00.0381.017936.3993527.181102.23
start_timeFieldType.DATE2017-06-28 10:51:23.182000+00:002017-12-31 23:55:09.686000+00:0051853.00.00.0
end_timeFieldType.DATE2017-06-28 11:01:39.557000+00:002018-01-01 15:12:50.245000+00:0051853.00.00.0
start_station_idFieldType.DECIMAL334051853.00.00.023.823139.67986.092394.8785
start_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...51853.00.00.0
start_station_latitudeFieldType.DECIMAL37.317337.880251853.00.00.037.773637.79540.086263737.7717
start_station_longitudeFieldType.DECIMAL-122.444-121.87451853.00.00.0-122.412-122.3910.105593-122.364
end_station_idFieldType.DECIMAL333851853.00.00.022.3474135.08185.091691.9201
end_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...51853.00.00.0
end_station_latitudeFieldType.DECIMAL37.318437.880251853.00.00.037.774537.79560.086191537.7719
end_station_longitudeFieldType.DECIMAL-122.444-121.87451853.00.00.0-122.41-122.3910.105075-122.363
bike_idFieldType.DECIMAL10373351853.00.00.0795.892524.9970.5061674.51
user_typeFieldType.STRINGCustomerSubscriber51853.00.00.0
member_birth_yearFieldType.DECIMAL1900199951853.06577.00.01974.291988.0110.41481980.4
member_genderFieldType.STRINGOther51853.00.00.0
" + ], + "text/plain": [ + "ColumnProfile\n", + " name: duration_sec\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 61.0\n", + " max: 85864.0\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 381.0173265588649\n", + " median: 596.0824682091602\n", + " upper_quartile: 936.3990413401431\n", + " std: 3527.1849383367376\n", + " mean: 1102.2291284978571\n", + "\n", + "ColumnProfile\n", + " name: start_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 10:51:23.182000+00:00\n", + " max: 2017-12-31 23:55:09.686000+00:00\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 11:01:39.557000+00:00\n", + " max: 2018-01-01 15:12:50.245000+00:00\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 340.0\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 23.82299260050619\n", + " median: 66.81449005522046\n", + " upper_quartile: 139.6790865298709\n", + " std: 86.09232732608726\n", + " mean: 94.87848340501073\n", + "\n", + "ColumnProfile\n", + " name: start_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3172979\n", + " max: 37.88022244590679\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.773594346717786\n", + " median: 37.78325255020885\n", + " upper_quartile: 37.795362857566715\n", + " std: 0.08626372544371842\n", + " mean: 37.771708918993944\n", + "\n", + "ColumnProfile\n", + " name: start_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.41157512442906\n", + " median: -122.39882719487981\n", + " upper_quartile: -122.39096385593315\n", + " std: 0.10559301820942323\n", + " mean: -122.36375576045955\n", + "\n", + "ColumnProfile\n", + " name: end_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 338.0\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 22.34742112221029\n", + " median: 65.60893574407544\n", + " upper_quartile: 135.08124174966116\n", + " std: 85.09162990442911\n", + " mean: 91.9201396254798\n", + "\n", + "ColumnProfile\n", + " name: end_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3184498\n", + " max: 37.88022244590679\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.77450364194883\n", + " median: 37.78358862499172\n", + " upper_quartile: 37.79555394254664\n", + " std: 0.08619152451969307\n", + " mean: 37.77190111029278\n", + "\n", + "ColumnProfile\n", + " name: end_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.40967464398858\n", + " median: -122.39857551157675\n", + " upper_quartile: -122.39085540596203\n", + " std: 0.10507512085392584\n", + " mean: -122.3629776153239\n", + "\n", + "ColumnProfile\n", + " name: bike_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 10.0\n", + " max: 3733.0\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 795.8904240211187\n", + " median: 1723.039443196501\n", + " upper_quartile: 2524.901114053501\n", + " std: 970.5058870359009\n", + " mean: 1674.5133936319962\n", + "\n", + "ColumnProfile\n", + " name: user_type\n", + " type: FieldType.STRING\n", + "\n", + " min: Customer\n", + " max: Subscriber\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: member_birth_year\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 1900.0\n", + " max: 1999.0\n", + " count: 51853.0\n", + " missing_count: 6577.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 1974.2949238618335\n", + " median: 1982.7223690704195\n", + " upper_quartile: 1988.012942765942\n", + " std: 10.414847623452637\n", + " mean: 1980.4024648820382\n", + "\n", + "ColumnProfile\n", + " name: member_gender\n", + " type: FieldType.STRING\n", + "\n", + " min: \n", + " max: Other\n", + " count: 51853.0\n", + " missing_count: 0.0\n", + " error_count: 0.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sampled_gobike.get_profile()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It appears that we have quite a few missing values in `member_birth_year`. We also immediately see that we have some empty strings in our `member_gender` column. With the data profiler, we can quickly do a sanity check on our dataset and see where we might need to start data cleaning." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Derive by example\n", + "\n", + "Azure ML Data Prep comes with additional \"smart\" transforms created by Microsoft Research. Here, we'll look at how you can derive a new column by providing examples of input-output pairs. Rather than explicitly using regular expressions to extract dates or hours from datetimes, we can provide examples for Azure ML Data Prep to learn what the pattern is. In fact, these smart transformations can also handle more complex derivations like inferring the day of the week from datetimes." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "sgb_derived = sampled_gobike\\\n", + " .to_string(\n", + " columns=['start_time', 'end_time']\n", + " )\\\n", + " .derive_column_by_example(\n", + " source_columns='start_time',\n", + " new_column_name='date',\n", + " example_data=[('2017-12-31 16:57:39.6540', '2017-12-31'), ('2017-12-31 16:57:39', '2017-12-31')]\n", + " )\\\n", + " .derive_column_by_example(\n", + " source_columns='start_time',\n", + " new_column_name='hour',\n", + " example_data=[('2017-12-31 16:57:39.6540', '16')]\n", + " )\\\n", + " .derive_column_by_example(\n", + " source_columns='start_time',\n", + " new_column_name='wday',\n", + " example_data=[('2017-12-31 16:57:39.6540', 'Sunday')]\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filter our data\n", + "\n", + "Let's verify that our derivations are correct by doing a bit of spot-checking." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timewdayhourdateend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
03456.02017-12-30 23:46:13.358000Saturday232017-12-302017-12-31 00:43:49.46900075.0Market St at Franklin St37.773793-122.42123975.0Market St at Franklin St37.773793-122.4212391642.0Subscriber1972.0Male
1204.02017-12-30 23:31:38.904000Saturday232017-12-302017-12-30 23:35:03.12100084.0Duboce Park37.769200-122.433812107.017th St at Dolores St37.763015-122.4264972201.0Subscriber1965.0Male
2743.02017-12-30 22:35:13.114000Saturday222017-12-302017-12-30 22:47:36.356000285.0Webster St at O'Farrell St37.783521-122.43115897.014th St at Mission St37.768265-122.4201101628.0Subscriber1993.0Male
3328.02017-12-30 22:19:28.760000Saturday222017-12-302017-12-30 22:24:57.4890005.0Powell St BART Station (Market St at 5th St)37.783899-122.40844564.05th St at Brannan St37.776754-122.3990182806.0Subscriber1986.0Male
4260.02017-12-30 21:22:40.116000Saturday212017-12-302017-12-30 21:27:00.885000277.0Morrison Ave at Julian St37.333658-121.908586278.0The Alameda at Bush St37.331932-121.904888465.0Subscriber1991.0Male
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time wday hour date \\\n", + "0 3456.0 2017-12-30 23:46:13.358000 Saturday 23 2017-12-30 \n", + "1 204.0 2017-12-30 23:31:38.904000 Saturday 23 2017-12-30 \n", + "2 743.0 2017-12-30 22:35:13.114000 Saturday 22 2017-12-30 \n", + "3 328.0 2017-12-30 22:19:28.760000 Saturday 22 2017-12-30 \n", + "4 260.0 2017-12-30 21:22:40.116000 Saturday 21 2017-12-30 \n", + "\n", + " end_time start_station_id \\\n", + "0 2017-12-31 00:43:49.469000 75.0 \n", + "1 2017-12-30 23:35:03.121000 84.0 \n", + "2 2017-12-30 22:47:36.356000 285.0 \n", + "3 2017-12-30 22:24:57.489000 5.0 \n", + "4 2017-12-30 21:27:00.885000 277.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 Market St at Franklin St 37.773793 \n", + "1 Duboce Park 37.769200 \n", + "2 Webster St at O'Farrell St 37.783521 \n", + "3 Powell St BART Station (Market St at 5th St) 37.783899 \n", + "4 Morrison Ave at Julian St 37.333658 \n", + "\n", + " start_station_longitude end_station_id end_station_name \\\n", + "0 -122.421239 75.0 Market St at Franklin St \n", + "1 -122.433812 107.0 17th St at Dolores St \n", + "2 -122.431158 97.0 14th St at Mission St \n", + "3 -122.408445 64.0 5th St at Brannan St \n", + "4 -121.908586 278.0 The Alameda at Bush St \n", + "\n", + " end_station_latitude end_station_longitude bike_id user_type \\\n", + "0 37.773793 -122.421239 1642.0 Subscriber \n", + "1 37.763015 -122.426497 2201.0 Subscriber \n", + "2 37.768265 -122.420110 1628.0 Subscriber \n", + "3 37.776754 -122.399018 2806.0 Subscriber \n", + "4 37.331932 -121.904888 465.0 Subscriber \n", + "\n", + " member_birth_year member_gender \n", + "0 1972.0 Male \n", + "1 1965.0 Male \n", + "2 1993.0 Male \n", + "3 1986.0 Male \n", + "4 1991.0 Male " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sgb_derived.filter(dprep.col('wday') != 'Sunday').head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also filter on other column types; let's take a peek at rides that lasted over 5 hours." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timewdayhourdateend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
080110.02017-12-31 16:57:39.654000Sunday162017-12-312018-01-01 15:12:50.24500074.0Laguna St at Hayes St37.776435-122.42624443.0San Francisco Public Library (Grove St at Hyde...37.778768-122.41592996.0Customer1987Male
122587.02017-12-31 13:51:04.538000Sunday132017-12-312017-12-31 20:07:32.139000307.0SAP Center37.332692-121.900084307.0SAP Center37.332692-121.9000841443.0CustomerNone
218067.02017-12-30 04:20:13.938000Saturday042017-12-302017-12-30 09:21:21.62800070.0Central Ave at Fell St37.773311-122.44429343.0San Francisco Public Library (Grove St at Hyde...37.778768-122.4159291928.0CustomerNone
354550.02017-12-29 10:02:38.086000Friday102017-12-292017-12-30 01:11:48.53900021.0Montgomery St BART Station (Market St at 2nd St)37.789625-122.40081184.0Duboce Park37.769200-122.433812209.0CustomerNone
463627.02017-12-27 19:12:42.794000Wednesday192017-12-272017-12-28 12:53:10.649000249.0Russell St at College Ave37.858473-122.253253244.0Shattuck Ave at Hearst Ave37.873792-122.2686181804.0Customer1988Male
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time wday hour date \\\n", + "0 80110.0 2017-12-31 16:57:39.654000 Sunday 16 2017-12-31 \n", + "1 22587.0 2017-12-31 13:51:04.538000 Sunday 13 2017-12-31 \n", + "2 18067.0 2017-12-30 04:20:13.938000 Saturday 04 2017-12-30 \n", + "3 54550.0 2017-12-29 10:02:38.086000 Friday 10 2017-12-29 \n", + "4 63627.0 2017-12-27 19:12:42.794000 Wednesday 19 2017-12-27 \n", + "\n", + " end_time start_station_id \\\n", + "0 2018-01-01 15:12:50.245000 74.0 \n", + "1 2017-12-31 20:07:32.139000 307.0 \n", + "2 2017-12-30 09:21:21.628000 70.0 \n", + "3 2017-12-30 01:11:48.539000 21.0 \n", + "4 2017-12-28 12:53:10.649000 249.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 Laguna St at Hayes St 37.776435 \n", + "1 SAP Center 37.332692 \n", + "2 Central Ave at Fell St 37.773311 \n", + "3 Montgomery St BART Station (Market St at 2nd St) 37.789625 \n", + "4 Russell St at College Ave 37.858473 \n", + "\n", + " start_station_longitude end_station_id \\\n", + "0 -122.426244 43.0 \n", + "1 -121.900084 307.0 \n", + "2 -122.444293 43.0 \n", + "3 -122.400811 84.0 \n", + "4 -122.253253 244.0 \n", + "\n", + " end_station_name end_station_latitude \\\n", + "0 San Francisco Public Library (Grove St at Hyde... 37.778768 \n", + "1 SAP Center 37.332692 \n", + "2 San Francisco Public Library (Grove St at Hyde... 37.778768 \n", + "3 Duboce Park 37.769200 \n", + "4 Shattuck Ave at Hearst Ave 37.873792 \n", + "\n", + " end_station_longitude bike_id user_type member_birth_year member_gender \n", + "0 -122.415929 96.0 Customer 1987 Male \n", + "1 -121.900084 1443.0 Customer None \n", + "2 -122.415929 1928.0 Customer None \n", + "3 -122.433812 209.0 Customer None \n", + "4 -122.268618 1804.0 Customer 1988 Male " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sgb_derived.filter(dprep.col('duration_sec') > (60 * 60 * 5)).head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transform our data\n", + "\n", + "In addition to \"smart\" transformations, Azure ML Data Prep also supports many common data science transforms familiar to other industry-standard data science libraries. Here, we'll explore the ability to `summarize` and `replace`. We'll also get to use `join` when we handle assertions.\n", + "\n", + "#### Summarize\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dateduration_sec_mean
02017-12-311982.801418
12017-12-301203.766423
22017-12-291287.324841
32017-12-28835.146465
42017-12-271658.735955
\n", + "
" + ], + "text/plain": [ + " date duration_sec_mean\n", + "0 2017-12-31 1982.801418\n", + "1 2017-12-30 1203.766423\n", + "2 2017-12-29 1287.324841\n", + "3 2017-12-28 835.146465\n", + "4 2017-12-27 1658.735955" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sgb_summary = sgb_derived\\\n", + " .summarize(\n", + " summary_columns=[\n", + " dprep\\\n", + " .SummaryColumnsValue(\n", + " column_id='duration_sec', \n", + " summary_column_name='duration_sec_mean', \n", + " summary_function=dprep.SummaryFunction.MEAN\n", + " )\n", + " ],\n", + " group_by_columns=['date']\n", + " )\n", + "sgb_summary.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Azure Data Prep also makes it easy to append this output of `summarize` to the original table based on the grouping variable. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timewdayhourdateend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_genderduration_sec_mean
080110.02017-12-31 16:57:39.654000Sunday162017-12-312018-01-01 15:12:50.24500074.0Laguna St at Hayes St37.776435-122.42624443.0San Francisco Public Library (Grove St at Hyde...37.778768-122.41592996.0Customer1987Male1982.801418
13292.02017-12-31 23:46:32.403000Sunday232017-12-312018-01-01 00:41:24.605000284.0Yerba Buena Center for the Arts (Howard St at ...37.784872-122.40087622.0Howard St at Beale St37.789756-122.3946433058.0CustomerNone1982.801418
21397.02017-12-31 23:55:09.686000Sunday232017-12-312018-01-01 00:18:26.72100078.0Folsom St at 9th St37.773717-122.41164715.0San Francisco Ferry Building (Harry Bridges Pl...37.795392-122.3942031667.0CustomerNone1982.801418
3422.02017-12-31 23:54:25.337000Sunday232017-12-312018-01-01 00:01:27.354000139.0Garfield Square (25th St at Harrison St)37.751017-122.41190199.0Folsom St at 15th St37.767037-122.4154422415.0Subscriber1985Male1982.801418
41130.02017-12-31 23:36:16.069000Sunday232017-12-312017-12-31 23:55:06.09600066.03rd St at Townsend St37.778742-122.39274123.0The Embarcadero at Steuart St37.791464-122.3910342721.0CustomerNone1982.801418
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time wday hour date \\\n", + "0 80110.0 2017-12-31 16:57:39.654000 Sunday 16 2017-12-31 \n", + "1 3292.0 2017-12-31 23:46:32.403000 Sunday 23 2017-12-31 \n", + "2 1397.0 2017-12-31 23:55:09.686000 Sunday 23 2017-12-31 \n", + "3 422.0 2017-12-31 23:54:25.337000 Sunday 23 2017-12-31 \n", + "4 1130.0 2017-12-31 23:36:16.069000 Sunday 23 2017-12-31 \n", + "\n", + " end_time start_station_id \\\n", + "0 2018-01-01 15:12:50.245000 74.0 \n", + "1 2018-01-01 00:41:24.605000 284.0 \n", + "2 2018-01-01 00:18:26.721000 78.0 \n", + "3 2018-01-01 00:01:27.354000 139.0 \n", + "4 2017-12-31 23:55:06.096000 66.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 Laguna St at Hayes St 37.776435 \n", + "1 Yerba Buena Center for the Arts (Howard St at ... 37.784872 \n", + "2 Folsom St at 9th St 37.773717 \n", + "3 Garfield Square (25th St at Harrison St) 37.751017 \n", + "4 3rd St at Townsend St 37.778742 \n", + "\n", + " start_station_longitude end_station_id \\\n", + "0 -122.426244 43.0 \n", + "1 -122.400876 22.0 \n", + "2 -122.411647 15.0 \n", + "3 -122.411901 99.0 \n", + "4 -122.392741 23.0 \n", + "\n", + " end_station_name end_station_latitude \\\n", + "0 San Francisco Public Library (Grove St at Hyde... 37.778768 \n", + "1 Howard St at Beale St 37.789756 \n", + "2 San Francisco Ferry Building (Harry Bridges Pl... 37.795392 \n", + "3 Folsom St at 15th St 37.767037 \n", + "4 The Embarcadero at Steuart St 37.791464 \n", + "\n", + " end_station_longitude bike_id user_type member_birth_year member_gender \\\n", + "0 -122.415929 96.0 Customer 1987 Male \n", + "1 -122.394643 3058.0 Customer None \n", + "2 -122.394203 1667.0 Customer None \n", + "3 -122.415442 2415.0 Subscriber 1985 Male \n", + "4 -122.391034 2721.0 Customer None \n", + "\n", + " duration_sec_mean \n", + "0 1982.801418 \n", + "1 1982.801418 \n", + "2 1982.801418 \n", + "3 1982.801418 \n", + "4 1982.801418 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sgb_appended = sgb_derived\\\n", + " .summarize(\n", + " summary_columns=[\n", + " dprep\\\n", + " .SummaryColumnsValue(\n", + " column_id='duration_sec', \n", + " summary_column_name='duration_sec_mean', \n", + " summary_function=dprep.SummaryFunction.MEAN\n", + " )\n", + " ],\n", + " group_by_columns=['date'],\n", + " join_back=True\n", + " )\n", + "sgb_appended.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Replace\n", + "\n", + "Recall that our `member_gender` column had empty strings that stood in place of `None`. Let's use our `replace` function to properly recode them as `None`s." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timeend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
080110.02017-12-31 16:57:39.654000+00:002018-01-01 15:12:50.245000+00:0074.0Laguna St at Hayes St37.776435-122.42624443.0San Francisco Public Library (Grove St at Hyde...37.778768-122.41592996.0Customer1987Male
13292.02017-12-31 23:46:32.403000+00:002018-01-01 00:41:24.605000+00:00284.0Yerba Buena Center for the Arts (Howard St at ...37.784872-122.40087622.0Howard St at Beale St37.789756-122.3946433058.0CustomerNoneNone
21397.02017-12-31 23:55:09.686000+00:002018-01-01 00:18:26.721000+00:0078.0Folsom St at 9th St37.773717-122.41164715.0San Francisco Ferry Building (Harry Bridges Pl...37.795392-122.3942031667.0CustomerNoneNone
3422.02017-12-31 23:54:25.337000+00:002018-01-01 00:01:27.354000+00:00139.0Garfield Square (25th St at Harrison St)37.751017-122.41190199.0Folsom St at 15th St37.767037-122.4154422415.0Subscriber1985Male
41130.02017-12-31 23:36:16.069000+00:002017-12-31 23:55:06.096000+00:0066.03rd St at Townsend St37.778742-122.39274123.0The Embarcadero at Steuart St37.791464-122.3910342721.0CustomerNoneNone
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time \\\n", + "0 80110.0 2017-12-31 16:57:39.654000+00:00 \n", + "1 3292.0 2017-12-31 23:46:32.403000+00:00 \n", + "2 1397.0 2017-12-31 23:55:09.686000+00:00 \n", + "3 422.0 2017-12-31 23:54:25.337000+00:00 \n", + "4 1130.0 2017-12-31 23:36:16.069000+00:00 \n", + "\n", + " end_time start_station_id \\\n", + "0 2018-01-01 15:12:50.245000+00:00 74.0 \n", + "1 2018-01-01 00:41:24.605000+00:00 284.0 \n", + "2 2018-01-01 00:18:26.721000+00:00 78.0 \n", + "3 2018-01-01 00:01:27.354000+00:00 139.0 \n", + "4 2017-12-31 23:55:06.096000+00:00 66.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 Laguna St at Hayes St 37.776435 \n", + "1 Yerba Buena Center for the Arts (Howard St at ... 37.784872 \n", + "2 Folsom St at 9th St 37.773717 \n", + "3 Garfield Square (25th St at Harrison St) 37.751017 \n", + "4 3rd St at Townsend St 37.778742 \n", + "\n", + " start_station_longitude end_station_id \\\n", + "0 -122.426244 43.0 \n", + "1 -122.400876 22.0 \n", + "2 -122.411647 15.0 \n", + "3 -122.411901 99.0 \n", + "4 -122.392741 23.0 \n", + "\n", + " end_station_name end_station_latitude \\\n", + "0 San Francisco Public Library (Grove St at Hyde... 37.778768 \n", + "1 Howard St at Beale St 37.789756 \n", + "2 San Francisco Ferry Building (Harry Bridges Pl... 37.795392 \n", + "3 Folsom St at 15th St 37.767037 \n", + "4 The Embarcadero at Steuart St 37.791464 \n", + "\n", + " end_station_longitude bike_id user_type member_birth_year member_gender \n", + "0 -122.415929 96.0 Customer 1987 Male \n", + "1 -122.394643 3058.0 Customer None None \n", + "2 -122.394203 1667.0 Customer None None \n", + "3 -122.415442 2415.0 Subscriber 1985 Male \n", + "4 -122.391034 2721.0 Customer None None " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sgb_replaced = sampled_gobike.replace_na(columns=['member_gender'])\n", + "sgb_replaced.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assert on invalid data \n", + "\n", + "Azure ML Data Prep helps prevent broken pipelines and safeguard against bad data by supporting assertions. In our case, we'll create assertions to handle potentially erroneous `member_birth_year` values. The oldest person on record is no more than 130 years old, so birth year listed as before 1900 is wrong. Though our `sampled_gobike` dataset doesn't have any issues, we would fail on the full `gobike` dataset if we made that assumption. However, Azure ML Data Prep allows us to handle these gracefully with assertions." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TypeMinMaxCountMissing CountError CountLower QuartileUpper QuartileStandard DeviationMean
duration_secFieldType.DECIMAL6186369519700.00.00.0381.842938.5743444.151099.01
start_timeFieldType.DATE2017-06-28 09:47:36.347000+00:002017-12-31 23:59:01.261000+00:00519700.00.00.0
end_timeFieldType.DATE2017-06-28 09:52:55.338000+00:002018-01-01 15:12:50.245000+00:00519700.00.00.0
start_station_idFieldType.DECIMAL3340519700.00.00.023.8481139.42486.083195.0342
start_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...519700.00.00.0
start_station_latitudeFieldType.DECIMAL37.317337.8802519700.00.00.037.773637.79530.08630537.7717
start_station_longitudeFieldType.DECIMAL-122.444-121.874519700.00.00.0-122.412-122.3910.105573-122.364
end_station_idFieldType.DECIMAL3340519700.00.00.022.7024134.2284.969592.184
end_station_nameFieldType.STRING10th Ave at E 15th StYerba Buena Center for the Arts (Howard St at ...519700.00.00.0
end_station_latitudeFieldType.DECIMAL37.317337.8802519700.00.00.037.774237.79560.086223837.7718
end_station_longitudeFieldType.DECIMAL-122.444-121.874519700.00.00.0-122.41-122.3910.105122-122.363
bike_idFieldType.DECIMAL103733519700.00.00.0788.6792519.96971.3571672.53
user_typeFieldType.STRINGCustomerSubscriber519700.00.00.0
member_birth_yearFieldType.DECIMAL19001999519700.066541.02.01974.331987.9910.51161980.41
member_genderFieldType.STRINGOther519700.00.00.0
" + ], + "text/plain": [ + "ColumnProfile\n", + " name: duration_sec\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 61.0\n", + " max: 86369.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 381.8421435321134\n", + " median: 595.9837506906349\n", + " upper_quartile: 938.5741138032683\n", + " std: 3444.146451247386\n", + " mean: 1099.009520877422\n", + "\n", + "ColumnProfile\n", + " name: start_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 09:47:36.347000+00:00\n", + " max: 2017-12-31 23:59:01.261000+00:00\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_time\n", + " type: FieldType.DATE\n", + "\n", + " min: 2017-06-28 09:52:55.338000+00:00\n", + " max: 2018-01-01 15:12:50.245000+00:00\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 340.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 23.848148131600635\n", + " median: 67.18427817406452\n", + " upper_quartile: 139.42430180307275\n", + " std: 86.08307797095921\n", + " mean: 95.03424475658852\n", + "\n", + "ColumnProfile\n", + " name: start_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: start_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3172979\n", + " max: 37.88022244590679\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.7735913559721\n", + " median: 37.783211475877295\n", + " upper_quartile: 37.79531236950411\n", + " std: 0.08630496061661774\n", + " mean: 37.771652603110894\n", + "\n", + "ColumnProfile\n", + " name: start_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.41170653070694\n", + " median: -122.39875282257843\n", + " upper_quartile: -122.39103429266093\n", + " std: 0.10557344899193394\n", + " mean: -122.36392726512949\n", + "\n", + "ColumnProfile\n", + " name: end_station_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 3.0\n", + " max: 340.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 22.702361193995444\n", + " median: 65.22613324081779\n", + " upper_quartile: 134.21987129021295\n", + " std: 84.9694914863546\n", + " mean: 92.18404079276426\n", + "\n", + "ColumnProfile\n", + " name: end_station_name\n", + " type: FieldType.STRING\n", + "\n", + " min: 10th Ave at E 15th St\n", + " max: Yerba Buena Center for the Arts (Howard St at 3rd St)\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: end_station_latitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 37.3172979\n", + " max: 37.88022244590679\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 37.774232065528906\n", + " median: 37.78329810124021\n", + " upper_quartile: 37.79557128475191\n", + " std: 0.08622383487119635\n", + " mean: 37.771843749644646\n", + "\n", + "ColumnProfile\n", + " name: end_station_longitude\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: -122.44429260492325\n", + " max: -121.8741186\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: -122.41012752595213\n", + " median: -122.39855511689811\n", + " upper_quartile: -122.39096192032446\n", + " std: 0.10512220222934929\n", + " mean: -122.36323553679931\n", + "\n", + "ColumnProfile\n", + " name: bike_id\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 10.0\n", + " max: 3733.0\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + " lower_quartile: 788.6785454424829\n", + " median: 1726.652793720984\n", + " upper_quartile: 2519.963581272433\n", + " std: 971.3569593530214\n", + " mean: 1672.533078699254\n", + "\n", + "ColumnProfile\n", + " name: user_type\n", + " type: FieldType.STRING\n", + "\n", + " min: Customer\n", + " max: Subscriber\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0\n", + "\n", + "ColumnProfile\n", + " name: member_birth_year\n", + " type: FieldType.DECIMAL\n", + "\n", + " min: 1900.0\n", + " max: 1999.0\n", + " count: 519700.0\n", + " missing_count: 66541.0\n", + " error_count: 2.0\n", + "\n", + " lower_quartile: 1974.3343079021402\n", + " median: 1982.8008012973817\n", + " upper_quartile: 1987.991638371539\n", + " std: 10.511639915765766\n", + " mean: 1980.4052039359563\n", + "\n", + "ColumnProfile\n", + " name: member_gender\n", + " type: FieldType.STRING\n", + "\n", + " min: \n", + " max: Other\n", + " count: 519700.0\n", + " missing_count: 0.0\n", + " error_count: 0.0" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gb_asserted = gobike\\\n", + " .assert_value(\n", + " columns='member_birth_year', \n", + " expression=dprep.f_or(dprep.value.is_null(), dprep.value >= 1900),\n", + " error_code='InvalidDate'\n", + " )\n", + "gb_asserted.get_profile()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can filter to see what caused the 2 errors above:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
duration_secstart_timeend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
02546.02017-08-19 17:47:32.110000+00:002017-08-19 18:29:58.825000+00:00197.0El Embarcadero at Grand Ave37.808848-122.24968172.0College Ave at Taft Ave37.841800-122.2515351448.0Customerazureml.dataprep.native.DataPrepError(\"'Invali...Male
11767.02017-08-19 13:20:02.170000+00:002017-08-19 13:49:29.735000+00:00235.0Union St at 10th St37.807239-122.28937197.0El Embarcadero at Grand Ave37.808848-122.24968091.0Customerazureml.dataprep.native.DataPrepError(\"'Invali...Male
\n", + "
" + ], + "text/plain": [ + " duration_sec start_time \\\n", + "0 2546.0 2017-08-19 17:47:32.110000+00:00 \n", + "1 1767.0 2017-08-19 13:20:02.170000+00:00 \n", + "\n", + " end_time start_station_id \\\n", + "0 2017-08-19 18:29:58.825000+00:00 197.0 \n", + "1 2017-08-19 13:49:29.735000+00:00 235.0 \n", + "\n", + " start_station_name start_station_latitude \\\n", + "0 El Embarcadero at Grand Ave 37.808848 \n", + "1 Union St at 10th St 37.807239 \n", + "\n", + " start_station_longitude end_station_id end_station_name \\\n", + "0 -122.24968 172.0 College Ave at Taft Ave \n", + "1 -122.28937 197.0 El Embarcadero at Grand Ave \n", + "\n", + " end_station_latitude end_station_longitude bike_id user_type \\\n", + "0 37.841800 -122.251535 1448.0 Customer \n", + "1 37.808848 -122.249680 91.0 Customer \n", + "\n", + " member_birth_year member_gender \n", + "0 azureml.dataprep.native.DataPrepError(\"'Invali... Male \n", + "1 azureml.dataprep.native.DataPrepError(\"'Invali... Male " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gb_errors = gb_asserted.filter(dprep.col('member_birth_year').is_error())\n", + "gb_errors.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Join\n", + "But what were the original values? Let's use `join` to figure out what the values were that caused our assert to throw an error. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
l_duration_secl_start_timel_end_timel_start_station_idl_start_station_namel_start_station_latitudel_start_station_longitudel_end_station_idl_end_station_namel_end_station_latitude...r_start_station_latituder_start_station_longituder_end_station_idr_end_station_namer_end_station_latituder_end_station_longituder_bike_idr_user_typer_member_birth_yearr_member_gender
02546.02017-08-19 17:47:32.110000+00:002017-08-19 18:29:58.825000+00:00197.0El Embarcadero at Grand Ave37.808848-122.24968172.0College Ave at Taft Ave37.841800...37.808848-122.24968172.0College Ave at Taft Ave37.841800-122.2515351448.0Customer1886.0Male
11767.02017-08-19 13:20:02.170000+00:002017-08-19 13:49:29.735000+00:00235.0Union St at 10th St37.807239-122.28937197.0El Embarcadero at Grand Ave37.808848...37.807239-122.28937197.0El Embarcadero at Grand Ave37.808848-122.24968091.0Customer1886.0Male
\n", + "

2 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " l_duration_sec l_start_time \\\n", + "0 2546.0 2017-08-19 17:47:32.110000+00:00 \n", + "1 1767.0 2017-08-19 13:20:02.170000+00:00 \n", + "\n", + " l_end_time l_start_station_id \\\n", + "0 2017-08-19 18:29:58.825000+00:00 197.0 \n", + "1 2017-08-19 13:49:29.735000+00:00 235.0 \n", + "\n", + " l_start_station_name l_start_station_latitude \\\n", + "0 El Embarcadero at Grand Ave 37.808848 \n", + "1 Union St at 10th St 37.807239 \n", + "\n", + " l_start_station_longitude l_end_station_id l_end_station_name \\\n", + "0 -122.24968 172.0 College Ave at Taft Ave \n", + "1 -122.28937 197.0 El Embarcadero at Grand Ave \n", + "\n", + " l_end_station_latitude ... r_start_station_latitude \\\n", + "0 37.841800 ... 37.808848 \n", + "1 37.808848 ... 37.807239 \n", + "\n", + " r_start_station_longitude r_end_station_id r_end_station_name \\\n", + "0 -122.24968 172.0 College Ave at Taft Ave \n", + "1 -122.28937 197.0 El Embarcadero at Grand Ave \n", + "\n", + " r_end_station_latitude r_end_station_longitude r_bike_id r_user_type \\\n", + "0 37.841800 -122.251535 1448.0 Customer \n", + "1 37.808848 -122.249680 91.0 Customer \n", + "\n", + " r_member_birth_year r_member_gender \n", + "0 1886.0 Male \n", + "1 1886.0 Male \n", + "\n", + "[2 rows x 30 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gb_errors.join(\n", + " left_dataflow=gb_errors,\n", + " right_dataflow=gobike,\n", + " join_key_pairs=[\n", + " ('duration_sec', 'duration_sec'),\n", + " ('start_station_id', 'start_station_id'),\n", + " ('bike_id', 'bike_id')\n", + " ]\n", + ").head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we look at `r_member_birth_year`, we see that these people were listed as being born in 1886. That's impossible! Now that we've identified outliers and anomalies, we can appropriately clean our data however we like." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export for machine learning\n", + "\n", + "One of the beautiful features of Azure ML Data Prep is that you only need to write your code once and choose whether to scale up or out; it takes care of figuring out how. To do so, you can export the `.dprep` file you've written tested on a smaller dataset, then run it with your larger dataset. Here, we show how you can export your new package. For a more detailed example on how to execute it on Spark, check out our [New York Taxicab scenario](https://github.com/Microsoft/PendletonDocs/blob/master/Scenarios/NYTaxiCab/01.new_york_taxi.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gobike = gobike.set_name(name=\"gobike\")\n", + "package_path = path.join(mkdtemp(), \"gobike.dprep\")\n", + "\n", + "print(\"Saving package to: {}\".format(package_path))\n", + "package = dprep.Package(arg=gobike)\n", + "package.save(file_path=package_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Want more information?\n", + "\n", + "Congratulations on finishing your introduction to the Azure ML Data Prep SDK! If you'd like more detailed tutorials on how to construct machine learning datasets or dive deeper into all of its functionality, you can find more information in our detailed notebooks [here](https://github.com/Microsoft/PendletonDocs). There, we cover topics including how to:\n", + "\n", + "* Cache your Dataflow to speed up your iterations\n", + "* Add your custom Python transforms\n", + "* Impute missing values\n", + "* Sample your data\n", + "* Reference and link between Dataflows\n", + "* Apply your Dataflow to a new, larger data source" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/getting-started/README.md b/getting-started/README.md deleted file mode 100644 index 7de9ba43..00000000 --- a/getting-started/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## Examples to get started with Azure Machine Learning service - -Learn how to use Azure Machine Learning services for experimentation and model management. - -As a pre-requisite, run the [configuration Notebook](../configuration.ipynb) notebook first to set up your Azure ML Workspace. Then, run the notebooks in following recommended order. - - * [train-within-notebook](train-within-notebook/train-within-notebook.ipynb): Train a model hile tracking run history, and learn how to deploy the model as web service to Azure Container Instance. - * [train-on-local](train-on-local/train-on-local.ipynb): Learn how to submit a run and use Azure ML managed run configuration. -* [train-on-aci](train-on-aci/train-on-aci.ipynb): Submit a remote run on serverless Docker-based compute. -* [train-on-remote-vm](train-on-remote-vm/train-on-remote-vm.ipynb): Use Data Science Virtual Machine as a target for remote runs. -* [logging-api](logging-api/logging-api.ipynb): Learn about the details of logging metrics to run history. -* [register-model-create-image-deploy-service](register-model-create-image-deploy-service/register-model-create-image-deploy-service.ipynb): Learn about the details of model management. -* [production-deploy-to-aks](production-deploy-to-aks/production-deploy-to-aks.ipynb) Deploy a model to production at scale on Azure Kubernetes Service. -* [enable-data-collection-for-models-in-aks](enable-data-collection-for-models-in-aks/enable-data-collection-for-models-in-aks.ipynb) Learn about data collection APIs for deployed model. -* [enable-app-insights-in-production-service](enable-app-insights-in-production-serviceenable-app-insights-in-production-service.ipynb) Learn how to use App Insights with production web service. - \ No newline at end of file diff --git a/getting-started/enable-app-insights-in-production-service/enable-app-insights-in-production-service.ipynb b/getting-started/enable-app-insights-in-production-service/enable-app-insights-in-production-service.ipynb deleted file mode 100644 index 47d2bbbc..00000000 --- a/getting-started/enable-app-insights-in-production-service/enable-app-insights-in-production-service.ipynb +++ /dev/null @@ -1,415 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Enabling App Insights for Services in Production\n", - "With this notebook, you can learn how to enable App Insights for standard service monitoring, plus, we provide examples for doing custom logging within a scoring files in a model. \n", - "\n", - "\n", - "## What does Application Insights monitor?\n", - "It monitors request rates, response times, failure rates, etc. For more information visit [App Insights docs.](https://docs.microsoft.com/en-us/azure/application-insights/app-insights-overview)\n", - "\n", - "\n", - "## What is different compared to standard production deployment process?\n", - "If you want to enable generic App Insights for a service run:\n", - "```python\n", - "aks_service= Webservice(ws, \"aks-w-dc2\")\n", - "aks_service.update(enable_app_insights=True)```\n", - "Where \"aks-w-dc2\" is your service name. You can also do this from the Azure Portal under your Workspace--> deployments--> Select deployment--> Edit--> Advanced Settings--> Select \"Enable AppInsights diagnostics\"\n", - "\n", - "If you want to log custom traces, you will follow the standard deplyment process for AKS and you will:\n", - "1. Update scoring file.\n", - "2. Update aks configuration.\n", - "3. Build new image and deploy it. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Import your dependencies" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace, Run\n", - "from azureml.core.compute import AksCompute, ComputeTarget\n", - "from azureml.core.webservice import Webservice, AksWebservice\n", - "from azureml.core.image import Image\n", - "from azureml.core.model import Model\n", - "\n", - "import azureml.core\n", - "print(azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Set up your configuration and create a workspace\n", - "Follow Notebook 00 instructions to do this.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Register Model\n", - "Register an existing trained model, add descirption and tags." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Register the model\n", - "from azureml.core.model import Model\n", - "model = Model.register(model_path = \"sklearn_regression_model.pkl\", # this points to a local file\n", - " model_name = \"sklearn_regression_model.pkl\", # this is the name the model is registered as\n", - " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", - " description = \"Ridge regression model to predict diabetes\",\n", - " workspace = ws)\n", - "\n", - "print(model.name, model.description, model.version)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. *Update your scoring file with custom print statements*\n", - "Here is an example:\n", - "### a. In your init function add:\n", - "```python\n", - "print (\"model initialized\" + time.strftime(\"%H:%M:%S\"))```\n", - "\n", - "### b. In your run function add:\n", - "```python\n", - "print (\"saving input data\" + time.strftime(\"%H:%M:%S\"))\n", - "print (\"saving prediction data\" + time.strftime(\"%H:%M:%S\"))```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import pickle\n", - "import json\n", - "import numpy \n", - "from sklearn.externals import joblib\n", - "from sklearn.linear_model import Ridge\n", - "from azureml.core.model import Model\n", - "from azureml.monitoring import ModelDataCollector\n", - "import time\n", - "\n", - "def init():\n", - " global model\n", - " #Print statement for appinsights custom traces:\n", - " print (\"model initialized\" + time.strftime(\"%H:%M:%S\"))\n", - " \n", - " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under the workspace\n", - " # this call should return the path to the model.pkl file on the local disk.\n", - " model_path = Model.get_model_path(model_name = 'sklearn_regression_model.pkl')\n", - " \n", - " # deserialize the model file back into a sklearn model\n", - " model = joblib.load(model_path)\n", - " \n", - " global inputs_dc, prediction_dc\n", - " \n", - " # this setup will help us save our inputs under the \"inputs\" path in our Azure Blob\n", - " inputs_dc = ModelDataCollector(model_name=\"sklearn_regression_model\", identifier=\"inputs\", feature_names=[\"feat1\", \"feat2\"]) \n", - " \n", - " # this setup will help us save our ipredictions under the \"predictions\" path in our Azure Blob\n", - " prediction_dc = ModelDataCollector(\"sklearn_regression_model\", identifier=\"predictions\", feature_names=[\"prediction1\", \"prediction2\"]) \n", - " \n", - "# note you can pass in multiple rows for scoring\n", - "def run(raw_data):\n", - " global inputs_dc, prediction_dc\n", - " try:\n", - " data = json.loads(raw_data)['data']\n", - " data = numpy.array(data)\n", - " result = model.predict(data)\n", - " \n", - " #Print statement for appinsights custom traces:\n", - " print (\"saving input data\" + time.strftime(\"%H:%M:%S\"))\n", - " \n", - " #this call is saving our input data into our blob\n", - " inputs_dc.collect(data) \n", - " #this call is saving our prediction data into our blob\n", - " prediction_dc.collect(result)\n", - " \n", - " #Print statement for appinsights custom traces:\n", - " print (\"saving prediction data\" + time.strftime(\"%H:%M:%S\"))\n", - " # you can return any data type as long as it is JSON-serializable\n", - " return result.tolist()\n", - " except Exception as e:\n", - " error = str(e)\n", - " print (error + time.strftime(\"%H:%M:%S\"))\n", - " return error" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. *Create myenv.yml file*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 6. Create your new Image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"Image with ridge regression model\",\n", - " tags = {'area': \"diabetes\", 'type': \"regression\"}\n", - " )\n", - "\n", - "image = ContainerImage.create(name = \"myimage1\",\n", - " # this is the model object\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 7. Deploy to AKS service" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create AKS compute if you haven't done so (Notebook 11)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the default configuration (can also provide parameters to customize)\n", - "prov_config = AksCompute.provisioning_configuration()\n", - "\n", - "aks_name = 'my-aks-test2' \n", - "# Create the cluster\n", - "aks_target = ComputeTarget.create(workspace = ws, \n", - " name = aks_name, \n", - " provisioning_configuration = prov_config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "aks_target.wait_for_completion(show_output = True)\n", - "print(aks_target.provisioning_state)\n", - "print(aks_target.provisioning_errors)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you already have a cluster you can attach the service to it:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```python \n", - "%%time\n", - "resource_id = '/subscriptions//resourcegroups//providers/Microsoft.ContainerService/managedClusters/'\n", - "create_name= 'myaks4'\n", - "attach_config = AksCompute.attach_configuration(resource_id=resource_id)\n", - "aks_target = ComputeTarget.attach(workspace = ws, \n", - " name = create_name, \n", - " attach_configuration=attach_config)\n", - "## Wait for the operation to complete\n", - "aks_target.wait_for_provisioning(True)```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### a. *Activate App Insights through updating AKS Webservice configuration*\n", - "In order to enable App Insights in your service you will need to update your AKS configuration file:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Set the web service configuration\n", - "aks_config = AksWebservice.deploy_configuration(enable_app_insights=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### b. Deploy your service" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "aks_service_name ='aks-w-dc3'\n", - "\n", - "aks_service = Webservice.deploy_from_image(workspace = ws, \n", - " name = aks_service_name,\n", - " image = image,\n", - " deployment_config = aks_config,\n", - " deployment_target = aks_target\n", - " )\n", - "aks_service.wait_for_deployment(show_output = True)\n", - "print(aks_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 8. Test your service " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "import json\n", - "\n", - "test_sample = json.dumps({'data': [\n", - " [1,28,13,45,54,6,57,8,8,10], \n", - " [101,9,8,37,6,45,4,3,2,41]\n", - "]})\n", - "test_sample = bytes(test_sample,encoding='utf8')\n", - "\n", - "prediction = aks_service.run(input_data=test_sample)\n", - "print(prediction)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 9. See your service telemetry in App Insights\n", - "1. Go to the [Azure Portal](https://portal.azure.com/)\n", - "2. All resources--> Select the subscription/resource group where you created your Workspace--> Select the App Insights type\n", - "3. Click on the AppInsights resource. You'll see a highlevel dashboard with information on Requests, Server response time and availability.\n", - "4. Click on the top banner \"Analytics\"\n", - "5. In the \"Schema\" section select \"traces\" and run your query.\n", - "6. Voila! All your custom traces should be there." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Disable App Insights" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "aks_service.update(enable_app_insights=False)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "marthalc" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/logging-api/logging-api.ipynb b/getting-started/logging-api/logging-api.ipynb deleted file mode 100644 index 81013269..00000000 --- a/getting-started/logging-api/logging-api.ipynb +++ /dev/null @@ -1,328 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 06. Logging APIs\n", - "This notebook showcase various ways to use the Azure Machine Learning service run logging APIs, and view the results in the Azure portal." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "Make sure you go through the [00. Installation and Configuration](../../00.configuration.ipynb) Notebook first if you haven't. Also make sure you have tqdm and matplotlib installed in the current kernel.\n", - "\n", - "```\n", - "(myenv) $ conda install -y tqdm matplotlib\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Validate Azure ML SDK installation and get version number for debugging purposes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "install" - ] - }, - "outputs": [], - "source": [ - "from azureml.core import Experiment, Run, Workspace\n", - "import azureml.core\n", - "import numpy as np\n", - "\n", - "# Check core SDK version number\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create workspace" - ] - }, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep='\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set experiment\n", - "Create a new experiment (or get the one with such name)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "exp = Experiment(workspace=ws, name='logging-api-test')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Log metrics\n", - "We will start a run, and use the various logging APIs to record different types of metrics during the run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from tqdm import tqdm\n", - "\n", - "# start logging for the run\n", - "run = exp.start_logging()\n", - "\n", - "# log a string value\n", - "run.log(name='Name', value='Logging API run')\n", - "\n", - "# log a numerical value\n", - "run.log(name='Magic Number', value=42)\n", - "\n", - "# Log a list of values. Note this will generate a single-variable line chart.\n", - "run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89])\n", - "\n", - "# create a dictionary to hold a table of values\n", - "sines = {}\n", - "sines['angle'] = []\n", - "sines['sine'] = []\n", - "\n", - "for i in tqdm(range(-10, 10)):\n", - " # log a metric value repeatedly, this will generate a single-variable line chart.\n", - " run.log(name='Sigmoid', value=1 / (1 + np.exp(-i)))\n", - " angle = i / 2.0\n", - " \n", - " # log a 2 (or more) values as a metric repeatedly. This will generate a 2-variable line chart if you have 2 numerical columns.\n", - " run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle))\n", - " \n", - " sines['angle'].append(angle)\n", - " sines['sine'].append(np.sin(angle))\n", - "\n", - "# log a dictionary as a table, this will generate a 2-variable chart if you have 2 numerical columns\n", - "run.log_table(name='Sine Wave', value=sines)\n", - "\n", - "run.complete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Even after the run is marked completed, you can still log things." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Log an image\n", - "This is how to log a _matplotlib_ pyplot object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "angle = np.linspace(-3, 3, 50)\n", - "plt.plot(angle, np.tanh(angle), label='tanh')\n", - "plt.legend(fontsize=12)\n", - "plt.title('Hyperbolic Tangent', fontsize=16)\n", - "plt.grid(True)\n", - "\n", - "run.log_image(name='Hyperbolic Tangent', plot=plt)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Upload a file" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also upload an abitrary file. First, let's create a dummy file locally." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile myfile.txt\n", - "\n", - "This is a dummy file." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's upload this file into the run record as a run artifact, and display the properties after the upload." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "props = run.upload_file(name='myfile_in_the_cloud.txt', path_or_stream='./myfile.txt')\n", - "props.serialize()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Examine the run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's take a look at the run detail page in Azure portal. Make sure you checkout the various charts and plots generated/uploaded." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can get all the metrics in that run back." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.get_metrics()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also see the files uploaded for this run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.get_file_names()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also download all the files locally." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "os.makedirs('files', exist_ok=True)\n", - "\n", - "for f in run.get_file_names():\n", - " dest = os.path.join('files', f.split('/')[-1])\n", - " print('Downloading file {} to {}...'.format(f, dest))\n", - " run.download_file(f, dest) " - ] - } - ], - "metadata": { - "authors": [ - { - "name": "haining" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/production-deploy-to-aks/production-deploy-to-aks.ipynb b/getting-started/production-deploy-to-aks/production-deploy-to-aks.ipynb deleted file mode 100644 index b7a0f545..00000000 --- a/getting-started/production-deploy-to-aks/production-deploy-to-aks.ipynb +++ /dev/null @@ -1,343 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Deploying a web service to Azure Kubernetes Service (AKS)\n", - "This notebook shows the steps for deploying a service: registering a model, creating an image, provisioning a cluster (one time action), and deploying a service to it. \n", - "We then test and delete the service, image and model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "from azureml.core.compute import AksCompute, ComputeTarget\n", - "from azureml.core.webservice import Webservice, AksWebservice\n", - "from azureml.core.image import Image\n", - "from azureml.core.model import Model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import azureml.core\n", - "print(azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Get workspace\n", - "Load existing workspace from the config file info." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.workspace import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Register the model\n", - "Register an existing trained model, add descirption and tags." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Register the model\n", - "from azureml.core.model import Model\n", - "model = Model.register(model_path = \"sklearn_regression_model.pkl\", # this points to a local file\n", - " model_name = \"sklearn_regression_model.pkl\", # this is the name the model is registered as\n", - " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", - " description = \"Ridge regression model to predict diabetes\",\n", - " workspace = ws)\n", - "\n", - "print(model.name, model.description, model.version)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create an image\n", - "Create an image using the registered model the script that will load and run the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import pickle\n", - "import json\n", - "import numpy\n", - "from sklearn.externals import joblib\n", - "from sklearn.linear_model import Ridge\n", - "from azureml.core.model import Model\n", - "\n", - "def init():\n", - " global model\n", - " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under\n", - " # this is a different behavior than before when the code is run locally, even though the code is the same.\n", - " model_path = Model.get_model_path('sklearn_regression_model.pkl')\n", - " # deserialize the model file back into a sklearn model\n", - " model = joblib.load(model_path)\n", - "\n", - "# note you can pass in multiple rows for scoring\n", - "def run(raw_data):\n", - " try:\n", - " data = json.loads(raw_data)['data']\n", - " data = numpy.array(data)\n", - " result = model.predict(data)\n", - " # you can return any data type as long as it is JSON-serializable\n", - " return result.tolist()\n", - " except Exception as e:\n", - " error = str(e)\n", - " return error" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"Image with ridge regression model\",\n", - " tags = {'area': \"diabetes\", 'type': \"regression\"}\n", - " )\n", - "\n", - "image = ContainerImage.create(name = \"myimage1\",\n", - " # this is the model object\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Provision the AKS Cluster\n", - "This is a one time setup. You can reuse this cluster for multiple deployments after it has been created. If you delete the cluster or the resource group that contains it, then you would have to recreate it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the default configuration (can also provide parameters to customize)\n", - "prov_config = AksCompute.provisioning_configuration()\n", - "\n", - "aks_name = 'my-aks-9' \n", - "# Create the cluster\n", - "aks_target = ComputeTarget.create(workspace = ws, \n", - " name = aks_name, \n", - " provisioning_configuration = prov_config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "aks_target.wait_for_completion(show_output = True)\n", - "print(aks_target.provisioning_state)\n", - "print(aks_target.provisioning_errors)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optional step: Attach existing AKS cluster\n", - "\n", - "If you have existing AKS cluster in your Azure subscription, you can attach it to the Workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "# Use the default configuration (can also provide parameters to customize)\n", - "resource_id = '/subscriptions/92c76a2f-0e1c-4216-b65e-abf7a3f34c1e/resourcegroups/raymondsdk0604/providers/Microsoft.ContainerService/managedClusters/my-aks-0605d37425356b7d01'\n", - "\n", - "create_name='my-existing-aks' \n", - "# Create the cluster\n", - "attach_config = AksCompute.attach_configuration(resource_id=resource_id)\n", - "aks_target = ComputeTarget.attach(workspace=ws, name=create_name, attach_configuration=attach_config)\n", - "# Wait for the operation to complete\n", - "aks_target.wait_for_completion(True)\n", - "'''" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Deploy web service to AKS" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Set the web service configuration (using default here)\n", - "aks_config = AksWebservice.deploy_configuration()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "aks_service_name ='aks-service-1'\n", - "\n", - "aks_service = Webservice.deploy_from_image(workspace = ws, \n", - " name = aks_service_name,\n", - " image = image,\n", - " deployment_config = aks_config,\n", - " deployment_target = aks_target)\n", - "aks_service.wait_for_deployment(show_output = True)\n", - "print(aks_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Test the web service\n", - "We test the web sevice by passing data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "import json\n", - "\n", - "test_sample = json.dumps({'data': [\n", - " [1,2,3,4,5,6,7,8,9,10], \n", - " [10,9,8,7,6,5,4,3,2,1]\n", - "]})\n", - "test_sample = bytes(test_sample,encoding = 'utf8')\n", - "\n", - "prediction = aks_service.run(input_data = test_sample)\n", - "print(prediction)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Clean up\n", - "Delete the service, image and model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "aks_service.delete()\n", - "image.delete()\n", - "model.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "raymondl" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/register-model-create-image-deploy-service/register-model-create-image-deploy-service.ipynb b/getting-started/register-model-create-image-deploy-service/register-model-create-image-deploy-service.ipynb deleted file mode 100644 index ef226a20..00000000 --- a/getting-started/register-model-create-image-deploy-service/register-model-create-image-deploy-service.ipynb +++ /dev/null @@ -1,420 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 10. Register Model, Create Image and Deploy Service\n", - "\n", - "This example shows how to deploy a web service in step-by-step fashion:\n", - "\n", - " 1. Register model\n", - " 2. Query versions of models and select one to deploy\n", - " 3. Create Docker image\n", - " 4. Query versions of images\n", - " 5. Deploy the image as web service\n", - " \n", - "**IMPORTANT**:\n", - " * This notebook requires you to first complete \"01.SDK-101-Train-and-Deploy-to-ACI.ipynb\" Notebook\n", - " \n", - "The 101 Notebook taught you how to deploy a web service directly from model in one step. This Notebook shows a more advanced approach that gives you more control over model versions and Docker image versions. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create workspace" - ] - }, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add tags and descriptions to your models. Note you need to have a `sklearn_linreg_model.pkl` file in the current directory. This file is generated by the 01 notebook. The below call registers that file as a model with the same name `sklearn_linreg_model.pkl` in the workspace.\n", - "\n", - "Using tags, you can track useful information such as the name and version of the machine learning library used to train the model. Note that tags must be alphanumeric." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from file" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "import sklearn\n", - "\n", - "library_version = \"sklearn\"+sklearn.__version__.replace(\".\",\"x\")\n", - "\n", - "model = Model.register(model_path = \"sklearn_regression_model.pkl\",\n", - " model_name = \"sklearn_regression_model.pkl\",\n", - " tags = {'area': \"diabetes\", 'type': \"regression\", 'version': library_version},\n", - " description = \"Ridge regression model to predict diabetes\",\n", - " workspace = ws)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can explore the registered models within your workspace and query by tag. Models are versioned. If you call the register_model command many times with same model name, you will get multiple versions of the model with increasing version numbers." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from file" - ] - }, - "outputs": [], - "source": [ - "regression_models = Model.list(workspace=ws, tags=['area'])\n", - "for m in regression_models:\n", - " print(\"Name:\", m.name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can pick a specific model to deploy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(model.name, model.description, model.version, sep = '\\t')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create Docker Image" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Show `score.py`. Note that the `sklearn_regression_model.pkl` in the `get_model_path` call is referring to a model named `sklearn_linreg_model.pkl` registered under the workspace. It is NOT referenceing the local file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import pickle\n", - "import json\n", - "import numpy\n", - "from sklearn.externals import joblib\n", - "from sklearn.linear_model import Ridge\n", - "from azureml.core.model import Model\n", - "\n", - "def init():\n", - " global model\n", - " # note here \"sklearn_regression_model.pkl\" is the name of the model registered under\n", - " # this is a different behavior than before when the code is run locally, even though the code is the same.\n", - " model_path = Model.get_model_path('sklearn_regression_model.pkl')\n", - " # deserialize the model file back into a sklearn model\n", - " model = joblib.load(model_path)\n", - "\n", - "# note you can pass in multiple rows for scoring\n", - "def run(raw_data):\n", - " try:\n", - " data = json.loads(raw_data)['data']\n", - " data = numpy.array(data)\n", - " result = model.predict(data)\n", - " # you can return any datatype as long as it is JSON-serializable\n", - " return result.tolist()\n", - " except Exception as e:\n", - " error = str(e)\n", - " return error" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(conda_packages=['numpy','scikit-learn'])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that following command can take few minutes. \n", - "\n", - "You can add tags and descriptions to images. Also, an image can contain multiple models." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create image" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.image import Image, ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(runtime= \"python\",\n", - " execution_script=\"score.py\",\n", - " conda_file=\"myenv.yml\",\n", - " tags = {'area': \"diabetes\", 'type': \"regression\"},\n", - " description = \"Image with ridge regression model\")\n", - "\n", - "image = Image.create(name = \"myimage1\",\n", - " # this is the model object \n", - " models = [model],\n", - " image_config = image_config, \n", - " workspace = ws)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create image" - ] - }, - "outputs": [], - "source": [ - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "List images by tag and find out the detailed build log for debugging." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create image" - ] - }, - "outputs": [], - "source": [ - "for i in Image.list(workspace = ws,tags = [\"area\"]):\n", - " print('{}(v.{} [{}]) stored at {} with build log {}'.format(i.name, i.version, i.creation_state, i.image_location, i.image_build_log_uri))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Deploy image as web service on Azure Container Instance\n", - "\n", - "Note that the service creation can take few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'area': \"diabetes\", 'type': \"regression\"}, \n", - " description = 'Predict diabetes using regression model')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "\n", - "aci_service_name = 'my-aci-service-2'\n", - "print(aci_service_name)\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test web service" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Call the web service with some dummy input data to get a prediction." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "import json\n", - "\n", - "test_sample = json.dumps({'data': [\n", - " [1,2,3,4,5,6,7,8,9,10], \n", - " [10,9,8,7,6,5,4,3,2,1]\n", - "]})\n", - "test_sample = bytes(test_sample,encoding = 'utf8')\n", - "\n", - "prediction = aci_service.run(input_data=test_sample)\n", - "print(prediction)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Delete ACI to clean up" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "aci_service.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "raymondl" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/register-model-create-image-deploy-service/sklearn_regression_model.pkl b/getting-started/register-model-create-image-deploy-service/sklearn_regression_model.pkl deleted file mode 100644 index d10309b6..00000000 Binary files a/getting-started/register-model-create-image-deploy-service/sklearn_regression_model.pkl and /dev/null differ diff --git a/getting-started/train-on-aci/train-on-aci.ipynb b/getting-started/train-on-aci/train-on-aci.ipynb deleted file mode 100644 index 97ec0d38..00000000 --- a/getting-started/train-on-aci/train-on-aci.ipynb +++ /dev/null @@ -1,289 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 03. Train on Azure Container Instance\n", - "\n", - "* Create Workspace\n", - "* Create `train.py` in the project folder.\n", - "* Configure an ACI (Azure Container Instance) run\n", - "* Execute in ACI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create workspace" - ] - }, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create An Experiment\n", - "\n", - "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment\n", - "experiment_name = 'train-on-aci'\n", - "experiment = Experiment(workspace = ws, name = experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Remote execution on ACI\n", - "\n", - "The training script `train.py` is already created for you. Let's have a look." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('./train.py', 'r') as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure for using ACI\n", - "Linux-based ACI is available in `West US`, `East US`, `West Europe`, `North Europe`, `West US 2`, `Southeast Asia`, `Australia East`, `East US 2`, and `Central US` regions. See details [here](https://docs.microsoft.com/en-us/azure/container-instances/container-instances-quotas#region-availability)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "configure run" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "# create a new runconfig object\n", - "run_config = RunConfiguration()\n", - "\n", - "# signal that you want to use ACI to execute script.\n", - "run_config.target = \"containerinstance\"\n", - "\n", - "# ACI container group is only supported in certain regions, which can be different than the region the Workspace is in.\n", - "run_config.container_instance.region = 'eastus2'\n", - "\n", - "# set the ACI CPU and Memory \n", - "run_config.container_instance.cpu_cores = 1\n", - "run_config.container_instance.memory_gb = 2\n", - "\n", - "# enable Docker \n", - "run_config.environment.docker.enabled = True\n", - "\n", - "# set Docker base image to the default CPU-based image\n", - "run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", - "\n", - "# use conda_dependencies.yml to create a conda environment in the Docker image for execution\n", - "run_config.environment.python.user_managed_dependencies = False\n", - "\n", - "# auto-prepare the Docker image when used for execution (if it is not already prepared)\n", - "run_config.auto_prepare_environment = True\n", - "\n", - "# specify CondaDependencies obj\n", - "run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Submit the Experiment\n", - "Finally, run the training job on the ACI" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "remote run", - "aci" - ] - }, - "outputs": [], - "source": [ - "%%time \n", - "from azureml.core.script_run_config import ScriptRunConfig\n", - "\n", - "script_run_config = ScriptRunConfig(source_directory='./',\n", - " script='train.py',\n", - " run_config=run_config)\n", - "\n", - "run = experiment.submit(script_run_config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history" - ] - }, - "outputs": [], - "source": [ - "# Show run details\n", - "run" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "remote run", - "aci" - ] - }, - "outputs": [], - "source": [ - "%%time\n", - "# Shows output of the run on stdout.\n", - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "get metrics" - ] - }, - "outputs": [], - "source": [ - "# get all metris logged in the run\n", - "run.get_metrics()\n", - "metrics = run.get_metrics()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", - " min(metrics['mse']), \n", - " metrics['alpha'][np.argmin(metrics['mse'])]\n", - "))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# show all the files stored within the run record\n", - "run.get_file_names()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now you can take a model produced here, register it and then deploy as a web service." - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/train-on-local/train-on-local.ipynb b/getting-started/train-on-local/train-on-local.ipynb deleted file mode 100644 index 1864013e..00000000 --- a/getting-started/train-on-local/train-on-local.ipynb +++ /dev/null @@ -1,477 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 02. Train locally\n", - "* Create or load workspace.\n", - "* Create scripts locally.\n", - "* Create `train.py` in a folder, along with a `my.lib` file.\n", - "* Configure & execute a local run in a user-managed Python environment.\n", - "* Configure & execute a local run in a system-managed Python environment.\n", - "* Configure & execute a local run in a Docker environment.\n", - "* Query run metrics to find the best model\n", - "* Register model for operationalization." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.workspace import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep='\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create An Experiment\n", - "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment\n", - "experiment_name = 'train-on-local'\n", - "exp = Experiment(workspace=ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## View `train.py`\n", - "\n", - "`train.py` is already created for you." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('./train.py', 'r') as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note `train.py` also references a `mylib.py` file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('./mylib.py', 'r') as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure & Run\n", - "### User-managed environment\n", - "Below, we use a user-managed run, which means you are responsible to ensure all the necessary packages are available in the Python environment you choose to run the script." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "\n", - "# Editing a run configuration property on-fly.\n", - "run_config_user_managed = RunConfiguration()\n", - "\n", - "run_config_user_managed.environment.python.user_managed_dependencies = True\n", - "\n", - "# You can choose a specific Python environment by pointing to a Python path \n", - "#run_config.environment.python.interpreter_path = '/home/johndoe/miniconda3/envs/sdk2/bin/python'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Submit script to run in the user-managed environment\n", - "Note whole script folder is submitted for execution, including the `mylib.py` file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import ScriptRunConfig\n", - "\n", - "src = ScriptRunConfig(source_directory='./', script='train.py', run_config=run_config_user_managed)\n", - "run = exp.submit(src)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Get run history details" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Block to wait till run finishes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### System-managed environment\n", - "You can also ask the system to build a new conda environment and execute your scripts in it. The environment is built once and will be reused in subsequent executions as long as the conda dependencies remain unchanged. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "run_config_system_managed = RunConfiguration()\n", - "\n", - "run_config_system_managed.environment.python.user_managed_dependencies = False\n", - "run_config_system_managed.auto_prepare_environment = True\n", - "\n", - "# Specify conda dependencies with scikit-learn\n", - "cd = CondaDependencies.create(conda_packages=['scikit-learn'])\n", - "run_config_system_managed.environment.python.conda_dependencies = cd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Submit script to run in the system-managed environment\n", - "A new conda environment is built based on the conda dependencies object. If you are running this for the first time, this might take up to 5 mninutes. But this conda environment is reused so long as you don't change the conda dependencies." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "src = ScriptRunConfig(source_directory=\"./\", script='train.py', run_config=run_config_system_managed)\n", - "run = exp.submit(src)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Get run history details" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Block and wait till run finishes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Docker-based execution\n", - "**IMPORTANT**: You must have Docker engine installed locally in order to use this execution mode. If your kernel is already running in a Docker container, such as **Azure Notebooks**, this mode will **NOT** work.\n", - "\n", - "You can also ask the system to pull down a Docker image and execute your scripts in it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run_config_docker = RunConfiguration()\n", - "run_config_docker.environment.python.user_managed_dependencies = False\n", - "run_config_docker.auto_prepare_environment = True\n", - "run_config_docker.environment.docker.enabled = True\n", - "run_config_docker.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", - "\n", - "# Specify conda dependencies with scikit-learn\n", - "cd = CondaDependencies.create(conda_packages=['scikit-learn'])\n", - "run_config_docker.environment.python.conda_dependencies = cd\n", - "\n", - "src = ScriptRunConfig(source_directory=\"./\", script='train.py', run_config=run_config_docker)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Submit script to run in the system-managed environment\n", - "A new conda environment is built based on the conda dependencies object. If you are running this for the first time, this might take up to 5 mninutes. But this conda environment is reused so long as you don't change the conda dependencies.\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import subprocess\n", - "\n", - "# Check if Docker is installed and Linux containers are enables\n", - "if subprocess.run(\"docker -v\", shell=True) == 0:\n", - " out = subprocess.check_output(\"docker system info\", shell=True, encoding=\"ascii\").split(\"\\n\")\n", - " if not \"OSType: linux\" in out:\n", - " print(\"Switch Docker engine to use Linux containers.\")\n", - " else:\n", - " run = exp.submit(src)\n", - "else:\n", - " print(\"Docker engine not installed.\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Get run history details\n", - "run" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Query run metrics" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history", - "get metrics" - ] - }, - "outputs": [], - "source": [ - "# get all metris logged in the run\n", - "run.get_metrics()\n", - "metrics = run.get_metrics()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's find the model that has the lowest MSE value logged." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "best_alpha = metrics['alpha'][np.argmin(metrics['mse'])]\n", - "\n", - "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", - " min(metrics['mse']), \n", - " best_alpha\n", - "))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also list all the files that are associated with this run record" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.get_file_names()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We know the model `ridge_0.40.pkl` is the best performing model from the eariler queries. So let's register it with the workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# supply a model name, and the full path to the serialized model file.\n", - "model = run.register_model(model_name='best_ridge_model', model_path='./outputs/ridge_0.40.pkl')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(model.name, model.version, model.url)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now you can deploy this model following the example in the 01 notebook." - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/train-on-remote-vm/train-on-remote-vm.ipynb b/getting-started/train-on-remote-vm/train-on-remote-vm.ipynb deleted file mode 100644 index 3e28b7c4..00000000 --- a/getting-started/train-on-remote-vm/train-on-remote-vm.ipynb +++ /dev/null @@ -1,630 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 04. Train in a remote Linux VM\n", - "* Create Workspace\n", - "* Create `train.py` file\n", - "* Create (or attach) DSVM as compute resource.\n", - "* Upoad data files into default datastore\n", - "* Configure & execute a run in a few different ways\n", - " - Use system-built conda\n", - " - Use existing Python environment\n", - " - Use Docker \n", - "* Find the best model in the run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep='\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Experiment\n", - "\n", - "**Experiment** is a logical container in an Azure ML Workspace. It hosts run records which can include run metrics and output artifacts from your experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'train-on-remote-vm'\n", - "\n", - "from azureml.core import Experiment\n", - "exp = Experiment(workspace=ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's also create a local folder to hold the training script." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "script_folder = './vm-run'\n", - "os.makedirs(script_folder, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Upload data files into datastore\n", - "Every workspace comes with a default datastore (and you can register more) which is backed by the Azure blob storage account associated with the workspace. We can use it to transfer data from local to the cloud, and access it from the compute target." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# get the default datastore\n", - "ds = ws.get_default_datastore()\n", - "print(ds.name, ds.datastore_type, ds.account_name, ds.container_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load diabetes data from `scikit-learn` and save it as 2 local files." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.datasets import load_diabetes\n", - "import numpy as np\n", - "\n", - "training_data = load_diabetes()\n", - "np.save(file='./features.npy', arr=training_data['data'])\n", - "np.save(file='./labels.npy', arr=training_data['target'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's upload the 2 files into the default datastore under a path named `diabetes`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds.upload_files(['./features.npy', './labels.npy'], target_path='diabetes', overwrite=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## View `train.py`\n", - "\n", - "For convenience, we created a training script for you. It is printed below as a text, but you can also run `%pfile ./train.py` in a cell to show the file. Please pay special attention on how we are loading the features and labels from files in the `data_folder` path, which is passed in as an argument of the training script (shown later)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# copy train.py into the script folder\n", - "import shutil\n", - "shutil.copy('./train.py', os.path.join(script_folder, 'train.py'))\n", - "\n", - "with open(os.path.join(script_folder, './train.py'), 'r') as training_script:\n", - " print(training_script.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Linux DSVM as a compute target\n", - "\n", - "**Note**: If creation fails with a message about Marketplace purchase eligibilty, go to portal.azure.com, start creating DSVM there, and select \"Want to create programmatically\" to enable programmatic creation. Once you've enabled it, you can exit without actually creating VM.\n", - " \n", - "**Note**: By default SSH runs on port 22 and you don't need to specify it. But if for security reasons you switch to a different port (such as 5022), you can specify the port number in the provisioning configuration object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import DsvmCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "compute_target_name = 'cpudsvm'\n", - "\n", - "try:\n", - " dsvm_compute = DsvmCompute(workspace=ws, name=compute_target_name)\n", - " print('found existing:', dsvm_compute.name)\n", - "except ComputeTargetException:\n", - " print('creating new.')\n", - " dsvm_config = DsvmCompute.provisioning_configuration(vm_size=\"Standard_D2_v2\")\n", - " dsvm_compute = DsvmCompute.create(ws, name=compute_target_name, provisioning_configuration=dsvm_config)\n", - " dsvm_compute.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Attach an existing Linux DSVM\n", - "You can also attach an existing Linux VM as a compute target. To create one, you can use Azure CLI command:\n", - "\n", - "```\n", - "az vm create -n cpudsvm -l eastus2 -g --size Standard_D2_v2 --image microsoft-dsvm:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest --generate-ssh-keys\n", - "```\n", - "\n", - "The ```--generate-ssh-keys``` automatically places the ssh keys to standard location, typically to ~/.ssh folder. The default port is 22." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "from azureml.core.compute import ComputeTarget, RemoteCompute \n", - "attach_config = RemoteCompute.attach_configuration(username='',\n", - " address='',\n", - " ssh_port=22,\n", - " private_key_file='./.ssh/id_rsa')\n", - "attached_dsvm_compute = ComputeTarget.attach(workspace=ws,\n", - " name='attached_vm',\n", - " attach_configuration=attach_config)\n", - "attached_dsvm_compute.wait_for_completion(show_output=True)\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure & Run\n", - "First let's create a `DataReferenceConfiguration` object to inform the system what data folder to download to the copmute target." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import DataReferenceConfiguration\n", - "dr = DataReferenceConfiguration(datastore_name=ds.name, \n", - " path_on_datastore='diabetes', \n", - " mode='download', # download files from datastore to compute target\n", - " overwrite=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can try a few different ways to run the training script in the VM." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conda run\n", - "You can ask the system to build a conda environment based on your dependency specification, and submit your script to run there. Once the environment is built, and if you don't change your dependencies, it will be reused in subsequent runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "# create a new RunConfig object\n", - "conda_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "# Set compute target to the Linux DSVM\n", - "conda_run_config.target = dsvm_compute.name\n", - "\n", - "# set the data reference of the run configuration\n", - "conda_run_config.data_references = {ds.name: dr}\n", - "\n", - "# specify CondaDependencies obj\n", - "conda_run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Run\n", - "from azureml.core import ScriptRunConfig\n", - "\n", - "src = ScriptRunConfig(source_directory=script_folder, \n", - " script='train.py', \n", - " run_config=conda_run_config, \n", - " # pass the datastore reference as a parameter to the training script\n", - " arguments=['--data-folder', str(ds.as_download())] \n", - " ) \n", - "run = exp.submit(config=src)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Show the run object. You can navigate to the Azure portal to see detailed information about the run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Native VM run\n", - "You can also configure to use an exiting Python environment in the VM to execute the script without asking the system to create a conda environment for you." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create a new RunConfig object\n", - "vm_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "# Set compute target to the Linux DSVM\n", - "vm_run_config.target = dsvm_compute.name\n", - "\n", - "# set the data reference of the run coonfiguration\n", - "conda_run_config.data_references = {ds.name: dr}\n", - "\n", - "# Let system know that you will configure the Python environment yourself.\n", - "vm_run_config.environment.python.user_managed_dependencies = True" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The below run will likely fail because `train.py` needs dependency `azureml`, `scikit-learn` and others, which are not found in that Python environment. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "src = ScriptRunConfig(source_directory=script_folder, \n", - " script='train.py', \n", - " run_config=vm_run_config,\n", - " # pass the datastore reference as a parameter to the training script\n", - " arguments=['--data-folder', str(ds.as_download())])\n", - "run = exp.submit(config=src)\n", - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can choose to SSH into the VM and install Azure ML SDK, and any other missing dependencies, in that Python environment. For demonstration purposes, we simply are going to create another script `train2.py` that doesn't have azureml dependencies, and submit it instead." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile $script_folder/train2.py\n", - "\n", - "print('####################################')\n", - "print('Hello World (without Azure ML SDK)!')\n", - "print('####################################')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's try again. And this time it should work fine." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "src = ScriptRunConfig(source_directory=script_folder, \n", - " script='train2.py', \n", - " run_config=vm_run_config)\n", - "run = exp.submit(config=src)\n", - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note even in this case you get a run record with some basic statistics." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Configure a Docker run with new conda environment on the VM\n", - "You can execute in a Docker container in the VM. If you choose this option, the system will pull down a base Docker image, build a new conda environment in it if you ask for (you can also skip this if you are using a customer Docker image when a preconfigured Python environment), start a container, and run your script in there. This image is also uploaded into your ACR (Azure Container Registry) assoicated with your workspace, an reused if your dependencies don't change in the subsequent runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "from azureml.core.conda_dependencies import CondaDependencies\n", - "\n", - "\n", - "# Load the \"cpu-dsvm.runconfig\" file (created by the above attach operation) in memory\n", - "docker_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "# Set compute target to the Linux DSVM\n", - "docker_run_config.target = dsvm_compute.name\n", - "\n", - "# Use Docker in the remote VM\n", - "docker_run_config.environment.docker.enabled = True\n", - "\n", - "# Use CPU base image from DockerHub\n", - "docker_run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", - "print('Base Docker image is:', docker_run_config.environment.docker.base_image)\n", - "\n", - "# set the data reference of the run coonfiguration\n", - "docker_run_config.data_references = {ds.name: dr}\n", - "\n", - "# specify CondaDependencies obj\n", - "docker_run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit the Experiment\n", - "Submit script to run in the Docker image in the remote VM. If you run this for the first time, the system will download the base image, layer in packages specified in the `conda_dependencies.yml` file on top of the base image, create a container and then execute the script in the container." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "src = ScriptRunConfig(source_directory=script_folder, \n", - " script='train.py', \n", - " run_config=docker_run_config,\n", - " # pass the datastore reference as a parameter to the training script\n", - " arguments=['--data-folder', str(ds.as_download())])\n", - "run = exp.submit(config=src)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### View run history details" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Find the best model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have tried various execution modes, we can find the best model from the last run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# get all metris logged in the run\n", - "run.get_metrics()\n", - "metrics = run.get_metrics()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# find the index where MSE is the smallest\n", - "indices = list(range(0, len(metrics['mse'])))\n", - "min_mse_index = min(indices, key=lambda x: metrics['mse'][x])\n", - "\n", - "print('When alpha is {1:0.2f}, we have min MSE {0:0.2f}.'.format(\n", - " metrics['mse'][min_mse_index], \n", - " metrics['alpha'][min_mse_index]\n", - "))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Clean up compute resource\n", - "\n", - "Use ```detach()``` to detach an existing DSVM from Workspace without deleting it. Use ```delete()``` if you created a new ```DsvmCompute``` and want to delete it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# dsvm_compute.detach()\n", - "# dsvm_compute.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "haining" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/getting-started/train-within-notebook/train-within-notebook.ipynb b/getting-started/train-within-notebook/train-within-notebook.ipynb deleted file mode 100644 index 0ea784e5..00000000 --- a/getting-started/train-within-notebook/train-within-notebook.ipynb +++ /dev/null @@ -1,808 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 01. Train in the Notebook & Deploy Model to ACI\n", - "\n", - "* Load workspace\n", - "* Train a simple regression model directly in the Notebook python kernel\n", - "* Record run history\n", - "* Find the best model in run history and download it.\n", - "* Deploy the model as an Azure Container Instance (ACI)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "1. Make sure you go through the [00. Installation and Configuration](../../00.configuration.ipynb) Notebook first if you haven't. \n", - "\n", - "2. Install following pre-requisite libraries to your conda environment and restart notebook.\n", - "```shell\n", - "(myenv) $ conda install -y matplotlib tqdm scikit-learn\n", - "```\n", - "\n", - "3. Check that ACI is registered for your Azure Subscription. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!az provider show -n Microsoft.ContainerInstance -o table" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If ACI is not registered, run following command to register it. Note that you have to be a subscription owner, or this command will fail." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!az provider register -n Microsoft.ContainerInstance" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Validate Azure ML SDK installation and get version number for debugging purposes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "install" - ] - }, - "outputs": [], - "source": [ - "from azureml.core import Experiment, Run, Workspace\n", - "import azureml.core\n", - "\n", - "# Check core SDK version number\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create workspace" - ] - }, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep='\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set experiment name\n", - "Choose a name for experiment." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'train-in-notebook'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start a training run in local Notebook" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load diabetes dataset, a well-known small dataset that comes with scikit-learn\n", - "from sklearn.datasets import load_diabetes\n", - "from sklearn.linear_model import Ridge\n", - "from sklearn.metrics import mean_squared_error\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.externals import joblib\n", - "\n", - "X, y = load_diabetes(return_X_y = True)\n", - "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", - "data = {\n", - " \"train\":{\"X\": X_train, \"y\": y_train}, \n", - " \"test\":{\"X\": X_test, \"y\": y_test}\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Train a simple Ridge model\n", - "Train a very simple Ridge regression model in scikit-learn, and save it as a pickle file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "reg = Ridge(alpha = 0.03)\n", - "reg.fit(X=data['train']['X'], y=data['train']['y'])\n", - "preds = reg.predict(data['test']['X'])\n", - "print('Mean Squared Error is', mean_squared_error(data['test']['y'], preds))\n", - "joblib.dump(value=reg, filename='model.pkl');" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Add experiment tracking\n", - "Now, let's add Azure ML experiment logging, and upload persisted model into run record as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "local run", - "outputs upload" - ] - }, - "outputs": [], - "source": [ - "experiment = Experiment(workspace=ws, name=experiment_name)\n", - "run = experiment.start_logging()\n", - "\n", - "run.tag(\"Description\",\"My first run!\")\n", - "run.log('alpha', 0.03)\n", - "reg = Ridge(alpha=0.03)\n", - "reg.fit(data['train']['X'], data['train']['y'])\n", - "preds = reg.predict(data['test']['X'])\n", - "run.log('mse', mean_squared_error(data['test']['y'], preds))\n", - "joblib.dump(value=reg, filename='model.pkl')\n", - "run.upload_file(name='outputs/model.pkl', path_or_stream='./model.pkl')\n", - "\n", - "run.complete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can browse to the recorded run. Please make sure you use Chrome to navigate the run history page." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Simple parameter sweep\n", - "Sweep over alpha values of a sklearn ridge model, and capture metrics and trained model in the Azure ML experiment." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import os\n", - "from tqdm import tqdm\n", - "\n", - "model_name = \"model.pkl\"\n", - "\n", - "# list of numbers from 0 to 1.0 with a 0.05 interval\n", - "alphas = np.arange(0.0, 1.0, 0.05)\n", - "\n", - "# try a bunch of alpha values in a Linear Regression (Ridge) model\n", - "for alpha in tqdm(alphas):\n", - " # create a bunch of runs, each train a model with a different alpha value\n", - " with experiment.start_logging() as run:\n", - " # Use Ridge algorithm to build a regression model\n", - " reg = Ridge(alpha=alpha)\n", - " reg.fit(X=data[\"train\"][\"X\"], y=data[\"train\"][\"y\"])\n", - " preds = reg.predict(X=data[\"test\"][\"X\"])\n", - " mse = mean_squared_error(y_true=data[\"test\"][\"y\"], y_pred=preds)\n", - "\n", - " # log alpha, mean_squared_error and feature names in run history\n", - " run.log(name=\"alpha\", value=alpha)\n", - " run.log(name=\"mse\", value=mse)\n", - " run.log_list(name=\"columns\", value=columns)\n", - "\n", - " with open(model_name, \"wb\") as file:\n", - " joblib.dump(value=reg, filename=file)\n", - " \n", - " # upload the serialized model into run history record\n", - " run.upload_file(name=\"outputs/\" + model_name, path_or_stream=model_name)\n", - "\n", - " # now delete the serialized model from local folder since it is already uploaded to run history \n", - " os.remove(path=model_name)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now let's take a look at the experiment in Azure portal.\n", - "experiment" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Select best model from the experiment\n", - "Load all experiment run metrics recursively from the experiment into a dictionary object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runs = {}\n", - "run_metrics = {}\n", - "\n", - "for r in tqdm(experiment.get_runs()):\n", - " metrics = r.get_metrics()\n", - " if 'mse' in metrics.keys():\n", - " runs[r.id] = r\n", - " run_metrics[r.id] = metrics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now find the run with the lowest Mean Squared Error value" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_run_id = min(run_metrics, key = lambda k: run_metrics[k]['mse'])\n", - "best_run = runs[best_run_id]\n", - "print('Best run is:', best_run_id)\n", - "print('Metrics:', run_metrics[best_run_id])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add tags to your runs to make them easier to catalog" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history" - ] - }, - "outputs": [], - "source": [ - "best_run.tag(key=\"Description\", value=\"The best one\")\n", - "best_run.get_tags()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot MSE over alpha\n", - "\n", - "Let's observe the best model visually by plotting the MSE values over alpha values:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "\n", - "best_alpha = run_metrics[best_run_id]['alpha']\n", - "min_mse = run_metrics[best_run_id]['mse']\n", - "\n", - "alpha_mse = np.array([(run_metrics[k]['alpha'], run_metrics[k]['mse']) for k in run_metrics.keys()])\n", - "sorted_alpha_mse = alpha_mse[alpha_mse[:,0].argsort()]\n", - "\n", - "plt.plot(sorted_alpha_mse[:,0], sorted_alpha_mse[:,1], 'r--')\n", - "plt.plot(sorted_alpha_mse[:,0], sorted_alpha_mse[:,1], 'bo')\n", - "\n", - "plt.xlabel('alpha', fontsize = 14)\n", - "plt.ylabel('mean squared error', fontsize = 14)\n", - "plt.title('MSE over alpha', fontsize = 16)\n", - "\n", - "# plot arrow\n", - "plt.arrow(x = best_alpha, y = min_mse + 39, dx = 0, dy = -26, ls = '-', lw = 0.4,\n", - " width = 0, head_width = .03, head_length = 8)\n", - "\n", - "# plot \"best run\" text\n", - "plt.text(x = best_alpha - 0.08, y = min_mse + 50, s = 'Best Run', fontsize = 14)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register the best model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Find the model file saved in the run record of best run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history" - ] - }, - "outputs": [], - "source": [ - "for f in best_run.get_file_names():\n", - " print(f)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can register this model in the model registry of the workspace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from history" - ] - }, - "outputs": [], - "source": [ - "model = best_run.register_model(model_name='best_model', model_path='outputs/model.pkl')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Verify that the model has been registered properly. If you have done this several times you'd see the version number auto-increases each time." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from history" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "models = Model.list(workspace=ws, name='best_model')\n", - "for m in models:\n", - " print(m.name, m.version)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also download the registered model. Afterwards, you should see a `model.pkl` file in the current directory. You can then use it for local testing if you'd like." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "download file" - ] - }, - "outputs": [], - "source": [ - "# remove the model file if it is already on disk\n", - "if os.path.isfile('model.pkl'): \n", - " os.remove('model.pkl')\n", - "# download the model\n", - "model.download(target_dir=\"./\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Scoring script\n", - "\n", - "Now we are ready to build a Docker image and deploy the model in it as a web service. The first step is creating the scoring script. For convenience, we have created the scoring script for you. It is printed below as text, but you can also run `%pfile ./score.py` in a cell to show the file.\n", - "\n", - "Tbe scoring script consists of two functions: `init` that is used to load the model to memory when starting the container, and `run` that makes the prediction when web service is called. Please pay special attention to how the model is loaded in the `init()` function. When Docker image is built for this model, the actual model file is downloaded and placed on disk, and `get_model_path` function returns the local path where the model is placed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('./score.py', 'r') as scoring_script:\n", - " print(scoring_script.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create environment dependency file\n", - "\n", - "We need a environment dependency file `myenv.yml` to specify which libraries are needed by the scoring script when building the Docker image for web service deployment. We can manually create this file, or we can use the `CondaDependencies` API to automatically create this file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(conda_packages=[\"scikit-learn\"])\n", - "print(myenv.serialize_to_string())\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploy web service into an Azure Container Instance\n", - "The deployment process takes the registered model and your scoring scrip, and builds a Docker image. It then deploys the Docker image into Azure Container Instance as a running container with an HTTP endpoint readying for scoring calls. Read more about [Azure Container Instance](https://azure.microsoft.com/en-us/services/container-instances/).\n", - "\n", - "Note ACI is great for quick and cost-effective dev/test deployment scenarios. For production workloads, please use [Azure Kubernentes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/) instead. Please follow in struction in [this notebook](11.production-deploy-to-aks.ipynb) to see how that can be done from Azure ML.\n", - " \n", - "** Note: ** The web service creation can take 6-7 minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice, Webservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", - " memory_gb=1, \n", - " tags={'sample name': 'AML 101'}, \n", - " description='This is a great example.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note the below `WebService.deploy_from_model()` function takes a model object registered under the workspace. It then bakes the model file in the Docker image so it can be looked-up using the `Model.get_model_path()` function in `score.py`. \n", - "\n", - "If you have a local model file instead of a registered model object, you can also use the `WebService.deploy()` function which would register the model and then deploy." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "image_config = ContainerImage.image_configuration(execution_script=\"score.py\", \n", - " runtime=\"python\", \n", - " conda_file=\"myenv.yml\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "%%time\n", - "# this will take 5-10 minutes to finish\n", - "# you can also use \"az container list\" command to find the ACI being deployed\n", - "service = Webservice.deploy_from_model(name='my-aci-svc',\n", - " deployment_config=aciconfig,\n", - " models=[model],\n", - " image_config=image_config,\n", - " workspace=ws)\n", - "\n", - "service.wait_for_deployment(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Test web service" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "print('web service is hosted in ACI:', service.scoring_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use the `run` API to call the web service with one row of data to get a prediction." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "import json\n", - "# score the first row from the test set.\n", - "test_samples = json.dumps({\"data\": X_test[0:1, :].tolist()})\n", - "service.run(input_data = test_samples)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Feed the entire test set and calculate the errors (residual values)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "# score the entire test set.\n", - "test_samples = json.dumps({'data': X_test.tolist()})\n", - "\n", - "result = service.run(input_data = test_samples)\n", - "residual = result - y_test" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also send raw HTTP request to test the web service." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "import requests\n", - "import json\n", - "\n", - "# 2 rows of input data, each with 10 made-up numerical features\n", - "input_data = \"{\\\"data\\\": [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}\"\n", - "\n", - "headers = {'Content-Type':'application/json'}\n", - "\n", - "# for AKS deployment you'd need to the service key in the header as well\n", - "# api_key = service.get_key()\n", - "# headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)} \n", - "\n", - "resp = requests.post(service.scoring_uri, input_data, headers = headers)\n", - "print(resp.text)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Residual graph\n", - "Plot a residual value graph to chart the errors on the entire test set. Observe the nice bell curve." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f, (a0, a1) = plt.subplots(1, 2, gridspec_kw={'width_ratios':[3, 1], 'wspace':0, 'hspace': 0})\n", - "f.suptitle('Residual Values', fontsize = 18)\n", - "\n", - "f.set_figheight(6)\n", - "f.set_figwidth(14)\n", - "\n", - "a0.plot(residual, 'bo', alpha=0.4);\n", - "a0.plot([0,90], [0,0], 'r', lw=2)\n", - "a0.set_ylabel('residue values', fontsize=14)\n", - "a0.set_xlabel('test data set', fontsize=14)\n", - "\n", - "a1.hist(residual, orientation='horizontal', color='blue', bins=10, histtype='step');\n", - "a1.hist(residual, orientation='horizontal', color='blue', alpha=0.2, bins=10);\n", - "a1.set_yticklabels([])\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Delete ACI to clean up" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Deleting ACI is super fast!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "deploy service", - "aci" - ] - }, - "outputs": [], - "source": [ - "%%time\n", - "service.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/onnx/mnist.py b/onnx/mnist.py new file mode 100644 index 00000000..a9a41853 --- /dev/null +++ b/onnx/mnist.py @@ -0,0 +1,124 @@ +# This is a modified version of https://github.com/pytorch/examples/blob/master/mnist/main.py which is +# licensed under BSD 3-Clause (https://github.com/pytorch/examples/blob/master/LICENSE) + +from __future__ import print_function +import argparse +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +from torchvision import datasets, transforms +import os + + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(1, 10, kernel_size=5) + self.conv2 = nn.Conv2d(10, 20, kernel_size=5) + self.conv2_drop = nn.Dropout2d() + self.fc1 = nn.Linear(320, 50) + self.fc2 = nn.Linear(50, 10) + + def forward(self, x): + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) + x = x.view(-1, 320) + x = F.relu(self.fc1(x)) + x = F.dropout(x, training=self.training) + x = self.fc2(x) + return F.log_softmax(x, dim=1) + + +def train(args, model, device, train_loader, optimizer, epoch, output_dir): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + optimizer.zero_grad() + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + if batch_idx % args.log_interval == 0: + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( + epoch, batch_idx * len(data), len(train_loader.dataset), + 100. * batch_idx / len(train_loader), loss.item())) + + +def test(args, model, device, test_loader): + model.eval() + test_loss = 0 + correct = 0 + with torch.no_grad(): + for data, target in test_loader: + data, target = data.to(device), target.to(device) + output = model(data) + test_loss += F.nll_loss(output, target, size_average=False, reduce=True).item() # sum up batch loss + pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability + correct += pred.eq(target.view_as(pred)).sum().item() + + test_loss /= len(test_loader.dataset) + print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( + test_loss, correct, len(test_loader.dataset), + 100. * correct / len(test_loader.dataset))) + + +def main(): + # Training settings + parser = argparse.ArgumentParser(description='PyTorch MNIST Example') + parser.add_argument('--batch-size', type=int, default=64, metavar='N', + help='input batch size for training (default: 64)') + parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', + help='input batch size for testing (default: 1000)') + parser.add_argument('--epochs', type=int, default=10, metavar='N', + help='number of epochs to train (default: 10)') + parser.add_argument('--lr', type=float, default=0.01, metavar='LR', + help='learning rate (default: 0.01)') + parser.add_argument('--momentum', type=float, default=0.5, metavar='M', + help='SGD momentum (default: 0.5)') + parser.add_argument('--no-cuda', action='store_true', default=False, + help='disables CUDA training') + parser.add_argument('--seed', type=int, default=1, metavar='S', + help='random seed (default: 1)') + parser.add_argument('--log-interval', type=int, default=10, metavar='N', + help='how many batches to wait before logging training status') + parser.add_argument('--output-dir', type=str, default='outputs') + args = parser.parse_args() + use_cuda = not args.no_cuda and torch.cuda.is_available() + + torch.manual_seed(args.seed) + + device = torch.device("cuda" if use_cuda else "cpu") + + output_dir = args.output_dir + os.makedirs(output_dir, exist_ok=True) + + kwargs = {'num_workers': 1, 'pin_memory': True} if use_cuda else {} + train_loader = torch.utils.data.DataLoader( + datasets.MNIST('data', train=True, download=True, + transform=transforms.Compose([transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,))]) + ), + batch_size=args.batch_size, shuffle=True, **kwargs) + test_loader = torch.utils.data.DataLoader( + datasets.MNIST('data', train=False, + transform=transforms.Compose([transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,))]) + ), + batch_size=args.test_batch_size, shuffle=True, **kwargs) + + model = Net().to(device) + optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum) + + for epoch in range(1, args.epochs + 1): + train(args, model, device, train_loader, optimizer, epoch, output_dir) + test(args, model, device, test_loader) + + # save model + dummy_input = torch.randn(1, 1, 28, 28, device=device) + model_path = os.path.join(output_dir, 'mnist.onnx') + torch.onnx.export(model, dummy_input, model_path) + + +if __name__ == '__main__': + main() diff --git a/onnx/onnx-convert-aml-deploy-tinyyolo.ipynb b/onnx/onnx-convert-aml-deploy-tinyyolo.ipynb index 9b27b555..4b3595d5 100644 --- a/onnx/onnx-convert-aml-deploy-tinyyolo.ipynb +++ b/onnx/onnx-convert-aml-deploy-tinyyolo.ipynb @@ -1,435 +1,435 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved. \n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# YOLO Real-time Object Detection using ONNX on AzureML\n", - "\n", - "This example shows how to convert the TinyYOLO model from CoreML to ONNX and operationalize it as a web service using Azure Machine Learning services and the ONNX Runtime.\n", - "\n", - "## What is ONNX\n", - "ONNX is an open format for representing machine learning and deep learning models. ONNX enables open and interoperable AI by enabling data scientists and developers to use the tools of their choice without worrying about lock-in and flexibility to deploy to a variety of platforms. ONNX is developed and supported by a community of partners including Microsoft, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai).\n", - "\n", - "## YOLO Details\n", - "You Only Look Once (YOLO) is a state-of-the-art, real-time object detection system. For more information about YOLO, please visit the [YOLO website](https://pjreddie.com/darknet/yolo/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "\n", - "To make the best use of your time, make sure you have done the following:\n", - "\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", - "* Go through the [00.configuration.ipynb](../00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (config.json)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Install necessary packages\n", - "\n", - "You'll need to run the following commands to use this tutorial:\n", - "\n", - "```sh\n", - "pip install onnxmltools\n", - "pip install coremltools # use this on Linux and Mac\n", - "pip install git+https://github.com/apple/coremltools # use this on Windows\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Convert model to ONNX\n", - "\n", - "First we download the CoreML model. We use the CoreML model listed at https://coreml.store/tinyyolo. This may take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import urllib.request\n", - "\n", - "onnx_model_url = \"https://s3-us-west-2.amazonaws.com/coreml-models/TinyYOLO.mlmodel\"\n", - "urllib.request.urlretrieve(onnx_model_url, filename=\"TinyYOLO.mlmodel\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we use ONNXMLTools to convert the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import onnxmltools\n", - "import coremltools\n", - "\n", - "# Load a CoreML model\n", - "coreml_model = coremltools.utils.load_spec('TinyYOLO.mlmodel')\n", - "\n", - "# Convert from CoreML into ONNX\n", - "onnx_model = onnxmltools.convert_coreml(coreml_model, 'TinyYOLOv2')\n", - "\n", - "# Save ONNX model\n", - "onnxmltools.utils.save_model(onnx_model, 'tinyyolov2.onnx')\n", - "\n", - "import os\n", - "print(os.path.getsize('tinyyolov2.onnx'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploying as a web service with Azure ML\n", - "\n", - "### Load Azure ML workspace\n", - "\n", - "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Registering your model with Azure ML\n", - "\n", - "Now we upload the model and register it in the workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "\n", - "model = Model.register(model_path = \"tinyyolov2.onnx\",\n", - " model_name = \"tinyyolov2\",\n", - " tags = {\"onnx\": \"demo\"},\n", - " description = \"TinyYOLO\",\n", - " workspace = ws)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Displaying your registered models\n", - "\n", - "You can optionally list out all the models that you have registered in this workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models = ws.models\n", - "for name, m in models.items():\n", - " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write scoring file\n", - "\n", - "We are now going to deploy our ONNX model on Azure ML using the ONNX Runtime. We begin by writing a score.py file that will be invoked by the web service call. The `init()` function is called once when the container is started so we load the model using the ONNX Runtime into a global session object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import json\n", - "import time\n", - "import sys\n", - "import os\n", - "from azureml.core.model import Model\n", - "import numpy as np # we're going to use numpy to process input and output data\n", - "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", - "\n", - "def init():\n", - " global session\n", - " model = Model.get_model_path(model_name = 'tinyyolov2')\n", - " session = onnxruntime.InferenceSession(model)\n", - "\n", - "def preprocess(input_data_json):\n", - " # convert the JSON data into the tensor input\n", - " return np.array(json.loads(input_data_json)['data']).astype('float32')\n", - "\n", - "def postprocess(result):\n", - " return np.array(result).tolist()\n", - "\n", - "def run(input_data_json):\n", - " try:\n", - " start = time.time() # start timer\n", - " input_data = preprocess(input_data_json)\n", - " input_name = session.get_inputs()[0].name # get the id of the first input of the model \n", - " result = session.run([], {input_name: input_data})\n", - " end = time.time() # stop timer\n", - " return {\"result\": postprocess(result),\n", - " \"time\": end - start}\n", - " except Exception as e:\n", - " result = str(e)\n", - " return {\"error\": result}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create container image\n", - "First we create a YAML file that specifies which dependencies we would like to see in our container." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(pip_packages=[\"numpy\",\"onnxruntime\",\"azureml-core\"])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we have Azure ML create the container. This step will likely take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"TinyYOLO ONNX Demo\",\n", - " tags = {\"demo\": \"onnx\"}\n", - " )\n", - "\n", - "\n", - "image = ContainerImage.create(name = \"onnxyolo\",\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you need to debug your code, the next line of code accesses the log file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(image.image_build_log_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're all set! Let's get our model chugging.\n", - "\n", - "### Deploy the container image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'demo': 'onnx'}, \n", - " description = 'web service for TinyYOLO ONNX model')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell will likely take a few minutes to run as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "from random import randint\n", - "\n", - "aci_service_name = 'onnx-tinyyolo'+str(randint(0,100))\n", - "print(\"Service\", aci_service_name)\n", - "\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case the deployment fails, you can check the logs. Make sure to delete your aci_service before trying again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if aci_service.state != 'Healthy':\n", - " # run this command for debugging.\n", - " print(aci_service.get_logs())\n", - " aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Success!\n", - "\n", - "If you've made it this far, you've deployed a working web service that does object detection using an ONNX model. You can get the URL for the webservice with the code below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(aci_service.scoring_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you are eventually done using the web service, remember to delete it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#aci_service.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "onnx" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# YOLO Real-time Object Detection using ONNX on AzureML\n", + "\n", + "This example shows how to convert the TinyYOLO model from CoreML to ONNX and operationalize it as a web service using Azure Machine Learning services and the ONNX Runtime.\n", + "\n", + "## What is ONNX\n", + "ONNX is an open format for representing machine learning and deep learning models. ONNX enables open and interoperable AI by enabling data scientists and developers to use the tools of their choice without worrying about lock-in and flexibility to deploy to a variety of platforms. ONNX is developed and supported by a community of partners including Microsoft, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai).\n", + "\n", + "## YOLO Details\n", + "You Only Look Once (YOLO) is a state-of-the-art, real-time object detection system. For more information about YOLO, please visit the [YOLO website](https://pjreddie.com/darknet/yolo/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "To make the best use of your time, make sure you have done the following:\n", + "\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](../00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (config.json)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Install necessary packages\n", + "\n", + "You'll need to run the following commands to use this tutorial:\n", + "\n", + "```sh\n", + "pip install onnxmltools\n", + "pip install coremltools # use this on Linux and Mac\n", + "pip install git+https://github.com/apple/coremltools # use this on Windows\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert model to ONNX\n", + "\n", + "First we download the CoreML model. We use the CoreML model listed at https://coreml.store/tinyyolo. This may take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import urllib.request\n", + "\n", + "onnx_model_url = \"https://s3-us-west-2.amazonaws.com/coreml-models/TinyYOLO.mlmodel\"\n", + "urllib.request.urlretrieve(onnx_model_url, filename=\"TinyYOLO.mlmodel\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we use ONNXMLTools to convert the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import onnxmltools\n", + "import coremltools\n", + "\n", + "# Load a CoreML model\n", + "coreml_model = coremltools.utils.load_spec('TinyYOLO.mlmodel')\n", + "\n", + "# Convert from CoreML into ONNX\n", + "onnx_model = onnxmltools.convert_coreml(coreml_model, 'TinyYOLOv2')\n", + "\n", + "# Save ONNX model\n", + "onnxmltools.utils.save_model(onnx_model, 'tinyyolov2.onnx')\n", + "\n", + "import os\n", + "print(os.path.getsize('tinyyolov2.onnx'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploying as a web service with Azure ML\n", + "\n", + "### Load Azure ML workspace\n", + "\n", + "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Registering your model with Azure ML\n", + "\n", + "Now we upload the model and register it in the workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "\n", + "model = Model.register(model_path = \"tinyyolov2.onnx\",\n", + " model_name = \"tinyyolov2\",\n", + " tags = {\"onnx\": \"demo\"},\n", + " description = \"TinyYOLO\",\n", + " workspace = ws)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Displaying your registered models\n", + "\n", + "You can optionally list out all the models that you have registered in this workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, m in models.items():\n", + " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write scoring file\n", + "\n", + "We are now going to deploy our ONNX model on Azure ML using the ONNX Runtime. We begin by writing a score.py file that will be invoked by the web service call. The `init()` function is called once when the container is started so we load the model using the ONNX Runtime into a global session object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import time\n", + "import sys\n", + "import os\n", + "from azureml.core.model import Model\n", + "import numpy as np # we're going to use numpy to process input and output data\n", + "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", + "\n", + "def init():\n", + " global session\n", + " model = Model.get_model_path(model_name = 'tinyyolov2')\n", + " session = onnxruntime.InferenceSession(model)\n", + "\n", + "def preprocess(input_data_json):\n", + " # convert the JSON data into the tensor input\n", + " return np.array(json.loads(input_data_json)['data']).astype('float32')\n", + "\n", + "def postprocess(result):\n", + " return np.array(result).tolist()\n", + "\n", + "def run(input_data_json):\n", + " try:\n", + " start = time.time() # start timer\n", + " input_data = preprocess(input_data_json)\n", + " input_name = session.get_inputs()[0].name # get the id of the first input of the model \n", + " result = session.run([], {input_name: input_data})\n", + " end = time.time() # stop timer\n", + " return {\"result\": postprocess(result),\n", + " \"time\": end - start}\n", + " except Exception as e:\n", + " result = str(e)\n", + " return {\"error\": result}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create container image\n", + "First we create a YAML file that specifies which dependencies we would like to see in our container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(pip_packages=[\"numpy\",\"onnxruntime\",\"azureml-core\"])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we have Azure ML create the container. This step will likely take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"TinyYOLO ONNX Demo\",\n", + " tags = {\"demo\": \"onnx\"}\n", + " )\n", + "\n", + "\n", + "image = ContainerImage.create(name = \"onnxyolo\",\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you need to debug your code, the next line of code accesses the log file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(image.image_build_log_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're all set! Let's get our model chugging.\n", + "\n", + "### Deploy the container image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'demo': 'onnx'}, \n", + " description = 'web service for TinyYOLO ONNX model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following cell will likely take a few minutes to run as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "from random import randint\n", + "\n", + "aci_service_name = 'onnx-tinyyolo'+str(randint(0,100))\n", + "print(\"Service\", aci_service_name)\n", + "\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case the deployment fails, you can check the logs. Make sure to delete your aci_service before trying again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if aci_service.state != 'Healthy':\n", + " # run this command for debugging.\n", + " print(aci_service.get_logs())\n", + " aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Success!\n", + "\n", + "If you've made it this far, you've deployed a working web service that does object detection using an ONNX model. You can get the URL for the webservice with the code below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(aci_service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are eventually done using the web service, remember to delete it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#aci_service.delete()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "onnx" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/onnx/onnx-inference-facial-expression-recognition-deploy.ipynb b/onnx/onnx-inference-facial-expression-recognition-deploy.ipynb index b067a21d..9c27ab54 100644 --- a/onnx/onnx-inference-facial-expression-recognition-deploy.ipynb +++ b/onnx/onnx-inference-facial-expression-recognition-deploy.ipynb @@ -1,809 +1,809 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved. \n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Facial Expression Recognition (FER+) using ONNX Runtime on Azure ML\n", - "\n", - "This example shows how to deploy an image classification neural network using the Facial Expression Recognition ([FER](https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data)) dataset and Open Neural Network eXchange format ([ONNX](http://aka.ms/onnxdocarticle)) on the Azure Machine Learning platform. This tutorial will show you how to deploy a FER+ model from the [ONNX model zoo](https://github.com/onnx/models), use it to make predictions using ONNX Runtime Inference, and deploy it as a web service in Azure.\n", - "\n", - "Throughout this tutorial, we will be referring to ONNX, a neural network exchange format used to represent deep learning models. With ONNX, AI developers can more easily move models between state-of-the-art tools (CNTK, PyTorch, Caffe, MXNet, TensorFlow) and choose the combination that is best for them. ONNX is developed and supported by a community of partners including Microsoft AI, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai) and [open source files](https://github.com/onnx).\n", - "\n", - "[ONNX Runtime](https://aka.ms/onnxruntime-python) is the runtime engine that enables evaluation of trained machine learning (Traditional ML and Deep Learning) models with high performance and low resource utilization. We use the CPU version of ONNX Runtime in this tutorial, but will soon be releasing an additional tutorial for deploying this model using ONNX Runtime GPU.\n", - "\n", - "#### Tutorial Objectives:\n", - "\n", - "1. Describe the FER+ dataset and pretrained Convolutional Neural Net ONNX model for Emotion Recognition, stored in the ONNX model zoo.\n", - "2. Deploy and run the pretrained FER+ ONNX model on an Azure Machine Learning instance\n", - "3. Predict labels for test set data points in the cloud using ONNX Runtime and Azure ML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "\n", - "### 1. Install Azure ML SDK and create a new workspace\n", - "Please follow [Azure ML configuration notebook](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) to set up your environment.\n", - "\n", - "### 2. Install additional packages needed for this Notebook\n", - "You need to install the popular plotting library `matplotlib`, the image manipulation library `opencv`, and the `onnx` library in the conda environment where Azure Maching Learning SDK is installed.\n", - "\n", - "```sh\n", - "(myenv) $ pip install matplotlib onnx opencv-python\n", - "```\n", - "\n", - "**Debugging tip**: Make sure that to activate your virtual environment (myenv) before you re-launch this notebook using the `jupyter notebook` comand. Choose the respective Python kernel for your new virtual environment using the `Kernel > Change Kernel` menu above. If you have completed the steps correctly, the upper right corner of your screen should state `Python [conda env:myenv]` instead of `Python [default]`.\n", - "\n", - "### 3. Download sample data and pre-trained ONNX model from ONNX Model Zoo.\n", - "\n", - "In the following lines of code, we download [the trained ONNX Emotion FER+ model and corresponding test data](https://github.com/onnx/models/tree/master/emotion_ferplus) and place them in the same folder as this tutorial notebook. For more information about the FER+ dataset, please visit Microsoft Researcher Emad Barsoum's [FER+ source data repository](https://github.com/ebarsoum/FERPlus)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# urllib is a built-in Python library to download files from URLs\n", - "\n", - "# Objective: retrieve the latest version of the ONNX Emotion FER+ model files from the\n", - "# ONNX Model Zoo and save it in the same folder as this tutorial\n", - "\n", - "import urllib.request\n", - "\n", - "onnx_model_url = \"https://www.cntk.ai/OnnxModels/emotion_ferplus/opset_7/emotion_ferplus.tar.gz\"\n", - "\n", - "urllib.request.urlretrieve(onnx_model_url, filename=\"emotion_ferplus.tar.gz\")\n", - "\n", - "# the ! magic command tells our jupyter notebook kernel to run the following line of \n", - "# code from the command line instead of the notebook kernel\n", - "\n", - "# We use tar and xvcf to unzip the files we just retrieved from the ONNX model zoo\n", - "\n", - "!tar xvzf emotion_ferplus.tar.gz" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploy a VM with your ONNX model in the Cloud\n", - "\n", - "### Load Azure ML workspace\n", - "\n", - "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Registering your model with Azure ML" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model_dir = \"emotion_ferplus\" # replace this with the location of your model files\n", - "\n", - "# leave as is if it's in the same folder as this notebook" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "\n", - "model = Model.register(model_path = model_dir + \"/\" + \"model.onnx\",\n", - " model_name = \"onnx_emotion\",\n", - " tags = {\"onnx\": \"demo\"},\n", - " description = \"FER+ emotion recognition CNN from ONNX Model Zoo\",\n", - " workspace = ws)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Optional: Displaying your registered models\n", - "\n", - "This step is not required, so feel free to skip it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models = ws.models\n", - "for name, m in models.items():\n", - " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ONNX FER+ Model Methodology\n", - "\n", - "The image classification model we are using is pre-trained using Microsoft's deep learning cognitive toolkit, [CNTK](https://github.com/Microsoft/CNTK), from the [ONNX model zoo](http://github.com/onnx/models). The model zoo has many other models that can be deployed on cloud providers like AzureML without any additional training. To ensure that our cloud deployed model works, we use testing data from the well-known FER+ data set, provided as part of the [trained Emotion Recognition model](https://github.com/onnx/models/tree/master/emotion_ferplus) in the ONNX model zoo.\n", - "\n", - "The original Facial Emotion Recognition (FER) Dataset was released in 2013 by Pierre-Luc Carrier and Aaron Courville as part of a [Kaggle Competition](https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data), but some of the labels are not entirely appropriate for the expression. In the FER+ Dataset, each photo was evaluated by at least 10 croud sourced reviewers, creating a more accurate basis for ground truth. \n", - "\n", - "You can see the difference of label quality in the sample model input below. The FER labels are the first word below each image, and the FER+ labels are the second word below each image.\n", - "\n", - "![](https://raw.githubusercontent.com/Microsoft/FERPlus/master/FER+vsFER.png)\n", - "\n", - "***Input: Photos of cropped faces from FER+ Dataset***\n", - "\n", - "***Task: Classify each facial image into its appropriate emotions in the emotion table***\n", - "\n", - "``` emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, 'anger':4, 'disgust':5, 'fear':6, 'contempt':7} ```\n", - "\n", - "***Output: Emotion prediction for input image***\n", - "\n", - "\n", - "Remember, once the application is deployed in Azure ML, you can use your own images as input for the model to classify." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# for images and plots in this notebook\n", - "import matplotlib.pyplot as plt \n", - "from IPython.display import Image\n", - "\n", - "# display images inline\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Model Description\n", - "\n", - "The FER+ model from the ONNX Model Zoo is summarized by the graphic below. You can see the entire workflow of our pre-trained model in the following image from Barsoum et. al's paper [\"Training Deep Networks for Facial Expression Recognition\n", - "with Crowd-Sourced Label Distribution\"](https://arxiv.org/pdf/1608.01041.pdf), with our (64 x 64) input images and our output probabilities for each of the labels." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![](https://raw.githubusercontent.com/vinitra/FERPlus/master/emotion_model_img.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Specify our Score and Environment Files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are now going to deploy our ONNX Model on AML with inference in ONNX Runtime. We begin by writing a score.py file, which will help us run the model in our Azure ML virtual machine (VM), and then specify our environment by writing a yml file. You will also notice that we import the onnxruntime library to do runtime inference on our ONNX models (passing in input and evaluating out model's predicted output). More information on the API and commands can be found in the [ONNX Runtime documentation](https://aka.ms/onnxruntime).\n", - "\n", - "### Write Score File\n", - "\n", - "A score file is what tells our Azure cloud service what to do. After initializing our model using azureml.core.model, we start an ONNX Runtime inference session to evaluate the data passed in on our function calls." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import json\n", - "import numpy as np\n", - "import onnxruntime\n", - "import sys\n", - "import os\n", - "from azureml.core.model import Model\n", - "import time\n", - "\n", - "def init():\n", - " global session, input_name, output_name\n", - " model = Model.get_model_path(model_name = 'onnx_emotion')\n", - " session = onnxruntime.InferenceSession(model, None)\n", - " input_name = session.get_inputs()[0].name\n", - " output_name = session.get_outputs()[0].name \n", - " \n", - "def run(input_data):\n", - " '''Purpose: evaluate test input in Azure Cloud using onnxruntime.\n", - " We will call the run function later from our Jupyter Notebook \n", - " so our azure service can evaluate our model input in the cloud. '''\n", - "\n", - " try:\n", - " # load in our data, convert to readable format\n", - " data = np.array(json.loads(input_data)['data']).astype('float32')\n", - " \n", - " start = time.time()\n", - " r = session.run([output_name], {input_name : data})\n", - " end = time.time()\n", - " \n", - " result = emotion_map(postprocess(r[0]))\n", - " \n", - " result_dict = {\"result\": result,\n", - " \"time_in_sec\": [end - start]}\n", - " except Exception as e:\n", - " result_dict = {\"error\": str(e)}\n", - " \n", - " return json.dumps(result_dict)\n", - "\n", - "def emotion_map(classes, N=1):\n", - " \"\"\"Take the most probable labels (output of postprocess) and returns the \n", - " top N emotional labels that fit the picture.\"\"\"\n", - " \n", - " emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, \n", - " 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}\n", - " \n", - " emotion_keys = list(emotion_table.keys())\n", - " emotions = []\n", - " for i in range(N):\n", - " emotions.append(emotion_keys[classes[i]])\n", - " return emotions\n", - "\n", - "def softmax(x):\n", - " \"\"\"Compute softmax values (probabilities from 0 to 1) for each possible label.\"\"\"\n", - " x = x.reshape(-1)\n", - " e_x = np.exp(x - np.max(x))\n", - " return e_x / e_x.sum(axis=0)\n", - "\n", - "def postprocess(scores):\n", - " \"\"\"This function takes the scores generated by the network and \n", - " returns the class IDs in decreasing order of probability.\"\"\"\n", - " prob = softmax(scores)\n", - " prob = np.squeeze(prob)\n", - " classes = np.argsort(prob)[::-1]\n", - " return classes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write Environment File" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(pip_packages=[\"numpy\", \"onnxruntime\", \"azureml-core\"])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create the Container Image\n", - "\n", - "This step will likely take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"Emotion ONNX Runtime container\",\n", - " tags = {\"demo\": \"onnx\"})\n", - "\n", - "\n", - "image = ContainerImage.create(name = \"onnximage\",\n", - " # this is the model object\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you need to debug your code, the next line of code accesses the log file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(image.image_build_log_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're all done specifying what we want our virtual machine to do. Let's configure and deploy our container image.\n", - "\n", - "### Deploy the container image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'demo': 'onnx'}, \n", - " description = 'ONNX for emotion recognition model')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "\n", - "aci_service_name = 'onnx-demo-emotion'\n", - "print(\"Service\", aci_service_name)\n", - "\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell will likely take a few minutes to run as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if aci_service.state != 'Healthy':\n", - " # run this command for debugging.\n", - " print(aci_service.get_logs())\n", - "\n", - " # If your deployment fails, make sure to delete your aci_service before trying again!\n", - " # aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Success!\n", - "\n", - "If you've made it this far, you've deployed a working VM with a facial emotion recognition model running in the cloud using Azure ML. Congratulations!\n", - "\n", - "Let's see how well our model deals with our test images." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Testing and Evaluation\n", - "\n", - "### Useful Helper Functions\n", - "\n", - "We preprocess and postprocess our data (see score.py file) using the helper functions specified in the [ONNX FER+ Model page in the Model Zoo repository](https://github.com/onnx/models/tree/master/emotion_ferplus)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def emotion_map(classes, N=1):\n", - " \"\"\"Take the most probable labels (output of postprocess) and returns the \n", - " top N emotional labels that fit the picture.\"\"\"\n", - " \n", - " emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, \n", - " 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}\n", - " \n", - " emotion_keys = list(emotion_table.keys())\n", - " emotions = []\n", - " for i in range(N):\n", - " emotions.append(emotion_keys[classes[i]])\n", - " return emotions\n", - "\n", - "def softmax(x):\n", - " \"\"\"Compute softmax values (probabilities from 0 to 1) for each possible label.\"\"\"\n", - " x = x.reshape(-1)\n", - " e_x = np.exp(x - np.max(x))\n", - " return e_x / e_x.sum(axis=0)\n", - "\n", - "def postprocess(scores):\n", - " \"\"\"This function takes the scores generated by the network and \n", - " returns the class IDs in decreasing order of probability.\"\"\"\n", - " prob = softmax(scores)\n", - " prob = np.squeeze(prob)\n", - " classes = np.argsort(prob)[::-1]\n", - " return classes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load Test Data\n", - "\n", - "These are already in your directory from your ONNX model download (from the model zoo).\n", - "\n", - "Notice that our Model Zoo files have a .pb extension. This is because they are [protobuf files (Protocol Buffers)](https://developers.google.com/protocol-buffers/docs/pythontutorial), so we need to read in our data through our ONNX TensorProto reader into a format we can work with, like numerical arrays." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# to manipulate our arrays\n", - "import numpy as np \n", - "\n", - "# read in test data protobuf files included with the model\n", - "import onnx\n", - "from onnx import numpy_helper\n", - "\n", - "# to use parsers to read in our model/data\n", - "import json\n", - "import os\n", - "\n", - "test_inputs = []\n", - "test_outputs = []\n", - "\n", - "# read in 3 testing images from .pb files\n", - "test_data_size = 3\n", - "\n", - "for i in np.arange(test_data_size):\n", - " input_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'input_0.pb')\n", - " output_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'output_0.pb')\n", - " \n", - " # convert protobuf tensors to np arrays using the TensorProto reader from ONNX\n", - " tensor = onnx.TensorProto()\n", - " with open(input_test_data, 'rb') as f:\n", - " tensor.ParseFromString(f.read())\n", - " \n", - " input_data = numpy_helper.to_array(tensor)\n", - " test_inputs.append(input_data)\n", - " \n", - " with open(output_test_data, 'rb') as f:\n", - " tensor.ParseFromString(f.read())\n", - " \n", - " output_data = numpy_helper.to_array(tensor)\n", - " output_processed = emotion_map(postprocess(output_data[0]))[0]\n", - " test_outputs.append(output_processed)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "nbpresent": { - "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Facial Expression Recognition (FER+) using ONNX Runtime on Azure ML\n", + "\n", + "This example shows how to deploy an image classification neural network using the Facial Expression Recognition ([FER](https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data)) dataset and Open Neural Network eXchange format ([ONNX](http://aka.ms/onnxdocarticle)) on the Azure Machine Learning platform. This tutorial will show you how to deploy a FER+ model from the [ONNX model zoo](https://github.com/onnx/models), use it to make predictions using ONNX Runtime Inference, and deploy it as a web service in Azure.\n", + "\n", + "Throughout this tutorial, we will be referring to ONNX, a neural network exchange format used to represent deep learning models. With ONNX, AI developers can more easily move models between state-of-the-art tools (CNTK, PyTorch, Caffe, MXNet, TensorFlow) and choose the combination that is best for them. ONNX is developed and supported by a community of partners including Microsoft AI, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai) and [open source files](https://github.com/onnx).\n", + "\n", + "[ONNX Runtime](https://aka.ms/onnxruntime-python) is the runtime engine that enables evaluation of trained machine learning (Traditional ML and Deep Learning) models with high performance and low resource utilization. We use the CPU version of ONNX Runtime in this tutorial, but will soon be releasing an additional tutorial for deploying this model using ONNX Runtime GPU.\n", + "\n", + "#### Tutorial Objectives:\n", + "\n", + "1. Describe the FER+ dataset and pretrained Convolutional Neural Net ONNX model for Emotion Recognition, stored in the ONNX model zoo.\n", + "2. Deploy and run the pretrained FER+ ONNX model on an Azure Machine Learning instance\n", + "3. Predict labels for test set data points in the cloud using ONNX Runtime and Azure ML" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "### 1. Install Azure ML SDK and create a new workspace\n", + "Please follow [Azure ML configuration notebook](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) to set up your environment.\n", + "\n", + "### 2. Install additional packages needed for this Notebook\n", + "You need to install the popular plotting library `matplotlib`, the image manipulation library `opencv`, and the `onnx` library in the conda environment where Azure Maching Learning SDK is installed.\n", + "\n", + "```sh\n", + "(myenv) $ pip install matplotlib onnx opencv-python\n", + "```\n", + "\n", + "**Debugging tip**: Make sure that to activate your virtual environment (myenv) before you re-launch this notebook using the `jupyter notebook` comand. Choose the respective Python kernel for your new virtual environment using the `Kernel > Change Kernel` menu above. If you have completed the steps correctly, the upper right corner of your screen should state `Python [conda env:myenv]` instead of `Python [default]`.\n", + "\n", + "### 3. Download sample data and pre-trained ONNX model from ONNX Model Zoo.\n", + "\n", + "In the following lines of code, we download [the trained ONNX Emotion FER+ model and corresponding test data](https://github.com/onnx/models/tree/master/emotion_ferplus) and place them in the same folder as this tutorial notebook. For more information about the FER+ dataset, please visit Microsoft Researcher Emad Barsoum's [FER+ source data repository](https://github.com/ebarsoum/FERPlus)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# urllib is a built-in Python library to download files from URLs\n", + "\n", + "# Objective: retrieve the latest version of the ONNX Emotion FER+ model files from the\n", + "# ONNX Model Zoo and save it in the same folder as this tutorial\n", + "\n", + "import urllib.request\n", + "\n", + "onnx_model_url = \"https://www.cntk.ai/OnnxModels/emotion_ferplus/opset_7/emotion_ferplus.tar.gz\"\n", + "\n", + "urllib.request.urlretrieve(onnx_model_url, filename=\"emotion_ferplus.tar.gz\")\n", + "\n", + "# the ! magic command tells our jupyter notebook kernel to run the following line of \n", + "# code from the command line instead of the notebook kernel\n", + "\n", + "# We use tar and xvcf to unzip the files we just retrieved from the ONNX model zoo\n", + "\n", + "!tar xvzf emotion_ferplus.tar.gz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy a VM with your ONNX model in the Cloud\n", + "\n", + "### Load Azure ML workspace\n", + "\n", + "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Registering your model with Azure ML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_dir = \"emotion_ferplus\" # replace this with the location of your model files\n", + "\n", + "# leave as is if it's in the same folder as this notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "\n", + "model = Model.register(model_path = model_dir + \"/\" + \"model.onnx\",\n", + " model_name = \"onnx_emotion\",\n", + " tags = {\"onnx\": \"demo\"},\n", + " description = \"FER+ emotion recognition CNN from ONNX Model Zoo\",\n", + " workspace = ws)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optional: Displaying your registered models\n", + "\n", + "This step is not required, so feel free to skip it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, m in models.items():\n", + " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ONNX FER+ Model Methodology\n", + "\n", + "The image classification model we are using is pre-trained using Microsoft's deep learning cognitive toolkit, [CNTK](https://github.com/Microsoft/CNTK), from the [ONNX model zoo](http://github.com/onnx/models). The model zoo has many other models that can be deployed on cloud providers like AzureML without any additional training. To ensure that our cloud deployed model works, we use testing data from the well-known FER+ data set, provided as part of the [trained Emotion Recognition model](https://github.com/onnx/models/tree/master/emotion_ferplus) in the ONNX model zoo.\n", + "\n", + "The original Facial Emotion Recognition (FER) Dataset was released in 2013 by Pierre-Luc Carrier and Aaron Courville as part of a [Kaggle Competition](https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data), but some of the labels are not entirely appropriate for the expression. In the FER+ Dataset, each photo was evaluated by at least 10 croud sourced reviewers, creating a more accurate basis for ground truth. \n", + "\n", + "You can see the difference of label quality in the sample model input below. The FER labels are the first word below each image, and the FER+ labels are the second word below each image.\n", + "\n", + "![](https://raw.githubusercontent.com/Microsoft/FERPlus/master/FER+vsFER.png)\n", + "\n", + "***Input: Photos of cropped faces from FER+ Dataset***\n", + "\n", + "***Task: Classify each facial image into its appropriate emotions in the emotion table***\n", + "\n", + "``` emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, 'anger':4, 'disgust':5, 'fear':6, 'contempt':7} ```\n", + "\n", + "***Output: Emotion prediction for input image***\n", + "\n", + "\n", + "Remember, once the application is deployed in Azure ML, you can use your own images as input for the model to classify." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# for images and plots in this notebook\n", + "import matplotlib.pyplot as plt \n", + "from IPython.display import Image\n", + "\n", + "# display images inline\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Description\n", + "\n", + "The FER+ model from the ONNX Model Zoo is summarized by the graphic below. You can see the entire workflow of our pre-trained model in the following image from Barsoum et. al's paper [\"Training Deep Networks for Facial Expression Recognition\n", + "with Crowd-Sourced Label Distribution\"](https://arxiv.org/pdf/1608.01041.pdf), with our (64 x 64) input images and our output probabilities for each of the labels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](https://raw.githubusercontent.com/vinitra/FERPlus/master/emotion_model_img.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Specify our Score and Environment Files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now going to deploy our ONNX Model on AML with inference in ONNX Runtime. We begin by writing a score.py file, which will help us run the model in our Azure ML virtual machine (VM), and then specify our environment by writing a yml file. You will also notice that we import the onnxruntime library to do runtime inference on our ONNX models (passing in input and evaluating out model's predicted output). More information on the API and commands can be found in the [ONNX Runtime documentation](https://aka.ms/onnxruntime).\n", + "\n", + "### Write Score File\n", + "\n", + "A score file is what tells our Azure cloud service what to do. After initializing our model using azureml.core.model, we start an ONNX Runtime inference session to evaluate the data passed in on our function calls." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import numpy as np\n", + "import onnxruntime\n", + "import sys\n", + "import os\n", + "from azureml.core.model import Model\n", + "import time\n", + "\n", + "def init():\n", + " global session, input_name, output_name\n", + " model = Model.get_model_path(model_name = 'onnx_emotion')\n", + " session = onnxruntime.InferenceSession(model, None)\n", + " input_name = session.get_inputs()[0].name\n", + " output_name = session.get_outputs()[0].name \n", + " \n", + "def run(input_data):\n", + " '''Purpose: evaluate test input in Azure Cloud using onnxruntime.\n", + " We will call the run function later from our Jupyter Notebook \n", + " so our azure service can evaluate our model input in the cloud. '''\n", + "\n", + " try:\n", + " # load in our data, convert to readable format\n", + " data = np.array(json.loads(input_data)['data']).astype('float32')\n", + " \n", + " start = time.time()\n", + " r = session.run([output_name], {input_name : data})\n", + " end = time.time()\n", + " \n", + " result = emotion_map(postprocess(r[0]))\n", + " \n", + " result_dict = {\"result\": result,\n", + " \"time_in_sec\": [end - start]}\n", + " except Exception as e:\n", + " result_dict = {\"error\": str(e)}\n", + " \n", + " return json.dumps(result_dict)\n", + "\n", + "def emotion_map(classes, N=1):\n", + " \"\"\"Take the most probable labels (output of postprocess) and returns the \n", + " top N emotional labels that fit the picture.\"\"\"\n", + " \n", + " emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, \n", + " 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}\n", + " \n", + " emotion_keys = list(emotion_table.keys())\n", + " emotions = []\n", + " for i in range(N):\n", + " emotions.append(emotion_keys[classes[i]])\n", + " return emotions\n", + "\n", + "def softmax(x):\n", + " \"\"\"Compute softmax values (probabilities from 0 to 1) for each possible label.\"\"\"\n", + " x = x.reshape(-1)\n", + " e_x = np.exp(x - np.max(x))\n", + " return e_x / e_x.sum(axis=0)\n", + "\n", + "def postprocess(scores):\n", + " \"\"\"This function takes the scores generated by the network and \n", + " returns the class IDs in decreasing order of probability.\"\"\"\n", + " prob = softmax(scores)\n", + " prob = np.squeeze(prob)\n", + " classes = np.argsort(prob)[::-1]\n", + " return classes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write Environment File" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(pip_packages=[\"numpy\", \"onnxruntime\", \"azureml-core\"])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create the Container Image\n", + "\n", + "This step will likely take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"Emotion ONNX Runtime container\",\n", + " tags = {\"demo\": \"onnx\"})\n", + "\n", + "\n", + "image = ContainerImage.create(name = \"onnximage\",\n", + " # this is the model object\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you need to debug your code, the next line of code accesses the log file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(image.image_build_log_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're all done specifying what we want our virtual machine to do. Let's configure and deploy our container image.\n", + "\n", + "### Deploy the container image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'demo': 'onnx'}, \n", + " description = 'ONNX for emotion recognition model')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "\n", + "aci_service_name = 'onnx-demo-emotion'\n", + "print(\"Service\", aci_service_name)\n", + "\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following cell will likely take a few minutes to run as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if aci_service.state != 'Healthy':\n", + " # run this command for debugging.\n", + " print(aci_service.get_logs())\n", + "\n", + " # If your deployment fails, make sure to delete your aci_service before trying again!\n", + " # aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Success!\n", + "\n", + "If you've made it this far, you've deployed a working VM with a facial emotion recognition model running in the cloud using Azure ML. Congratulations!\n", + "\n", + "Let's see how well our model deals with our test images." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing and Evaluation\n", + "\n", + "### Useful Helper Functions\n", + "\n", + "We preprocess and postprocess our data (see score.py file) using the helper functions specified in the [ONNX FER+ Model page in the Model Zoo repository](https://github.com/onnx/models/tree/master/emotion_ferplus)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def emotion_map(classes, N=1):\n", + " \"\"\"Take the most probable labels (output of postprocess) and returns the \n", + " top N emotional labels that fit the picture.\"\"\"\n", + " \n", + " emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, \n", + " 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}\n", + " \n", + " emotion_keys = list(emotion_table.keys())\n", + " emotions = []\n", + " for i in range(N):\n", + " emotions.append(emotion_keys[classes[i]])\n", + " return emotions\n", + "\n", + "def softmax(x):\n", + " \"\"\"Compute softmax values (probabilities from 0 to 1) for each possible label.\"\"\"\n", + " x = x.reshape(-1)\n", + " e_x = np.exp(x - np.max(x))\n", + " return e_x / e_x.sum(axis=0)\n", + "\n", + "def postprocess(scores):\n", + " \"\"\"This function takes the scores generated by the network and \n", + " returns the class IDs in decreasing order of probability.\"\"\"\n", + " prob = softmax(scores)\n", + " prob = np.squeeze(prob)\n", + " classes = np.argsort(prob)[::-1]\n", + " return classes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load Test Data\n", + "\n", + "These are already in your directory from your ONNX model download (from the model zoo).\n", + "\n", + "Notice that our Model Zoo files have a .pb extension. This is because they are [protobuf files (Protocol Buffers)](https://developers.google.com/protocol-buffers/docs/pythontutorial), so we need to read in our data through our ONNX TensorProto reader into a format we can work with, like numerical arrays." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# to manipulate our arrays\n", + "import numpy as np \n", + "\n", + "# read in test data protobuf files included with the model\n", + "import onnx\n", + "from onnx import numpy_helper\n", + "\n", + "# to use parsers to read in our model/data\n", + "import json\n", + "import os\n", + "\n", + "test_inputs = []\n", + "test_outputs = []\n", + "\n", + "# read in 3 testing images from .pb files\n", + "test_data_size = 3\n", + "\n", + "for i in np.arange(test_data_size):\n", + " input_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'input_0.pb')\n", + " output_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'output_0.pb')\n", + " \n", + " # convert protobuf tensors to np arrays using the TensorProto reader from ONNX\n", + " tensor = onnx.TensorProto()\n", + " with open(input_test_data, 'rb') as f:\n", + " tensor.ParseFromString(f.read())\n", + " \n", + " input_data = numpy_helper.to_array(tensor)\n", + " test_inputs.append(input_data)\n", + " \n", + " with open(output_test_data, 'rb') as f:\n", + " tensor.ParseFromString(f.read())\n", + " \n", + " output_data = numpy_helper.to_array(tensor)\n", + " output_processed = emotion_map(postprocess(output_data[0]))[0]\n", + " test_outputs.append(output_processed)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + } + }, + "source": [ + "### Show some sample images\n", + "We use `matplotlib` to plot 3 test images from the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "396d478b-34aa-4afa-9898-cdce8222a516" + } + }, + "outputs": [], + "source": [ + "plt.figure(figsize = (20, 20))\n", + "for test_image in np.arange(3):\n", + " test_inputs[test_image].reshape(1, 64, 64)\n", + " plt.subplot(1, 8, test_image+1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = 10, y = -10, s = test_outputs[test_image], fontsize = 18)\n", + " plt.imshow(test_inputs[test_image].reshape(64, 64), cmap = plt.cm.gray)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run evaluation / prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize = (16, 6), frameon=False)\n", + "plt.subplot(1, 8, 1)\n", + "\n", + "plt.text(x = 0, y = -30, s = \"True Label: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 0, y = -20, s = \"Result: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 0, y = -10, s = \"Inference Time: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 3, y = 14, s = \"Model Input\", fontsize = 12, color = 'black')\n", + "plt.text(x = 6, y = 18, s = \"(64 x 64)\", fontsize = 12, color = 'black')\n", + "plt.imshow(np.ones((28,28)), cmap=plt.cm.Greys) \n", + "\n", + "\n", + "for i in np.arange(test_data_size):\n", + " \n", + " input_data = json.dumps({'data': test_inputs[i].tolist()})\n", + "\n", + " # predict using the deployed model\n", + " r = json.loads(aci_service.run(input_data))\n", + " \n", + " if \"error\" in r:\n", + " print(r['error'])\n", + " break\n", + " \n", + " result = r['result'][0]\n", + " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", + " \n", + " ground_truth = test_outputs[i]\n", + " \n", + " # compare actual value vs. the predicted values:\n", + " plt.subplot(1, 8, i+2)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + "\n", + " # use different color for misclassified sample\n", + " font_color = 'red' if ground_truth != result else 'black'\n", + " clr_map = plt.cm.Greys if ground_truth != result else plt.cm.gray\n", + "\n", + " # ground truth labels are in blue\n", + " plt.text(x = 10, y = -70, s = ground_truth, fontsize = 18, color = 'blue')\n", + " \n", + " # predictions are in black if correct, red if incorrect\n", + " plt.text(x = 10, y = -45, s = result, fontsize = 18, color = font_color)\n", + " plt.text(x = 5, y = -22, s = str(time_ms) + ' ms', fontsize = 14, color = font_color)\n", + "\n", + " \n", + " plt.imshow(test_inputs[i].reshape(64, 64), cmap = clr_map)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Try classifying your own images!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocessing functions take your image and format it so it can be passed\n", + "# as input into our ONNX model\n", + "\n", + "import cv2\n", + "\n", + "def rgb2gray(rgb):\n", + " \"\"\"Convert the input image into grayscale\"\"\"\n", + " return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])\n", + "\n", + "def resize_img(img):\n", + " \"\"\"Resize image to MNIST model input dimensions\"\"\"\n", + " img = cv2.resize(img, dsize=(64, 64), interpolation=cv2.INTER_AREA)\n", + " img.resize((1, 1, 64, 64))\n", + " return img\n", + "\n", + "def preprocess(img):\n", + " \"\"\"Resize input images and convert them to grayscale.\"\"\"\n", + " if img.shape == (64, 64):\n", + " img.resize((1, 1, 64, 64))\n", + " return img\n", + " \n", + " grayscale = rgb2gray(img)\n", + " processed_img = resize_img(grayscale)\n", + " return processed_img" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace the following string with your own path/test image\n", + "# Make sure your image is square and the dimensions are equal (i.e. 100 * 100 pixels or 28 * 28 pixels)\n", + "\n", + "# Any PNG or JPG image file should work\n", + "# Make sure to include the entire path with // instead of /\n", + "\n", + "# e.g. your_test_image = \"C:/Users/vinitra.swamy/Pictures/face.png\"\n", + "\n", + "your_test_image = \"\"\n", + "\n", + "import matplotlib.image as mpimg\n", + "\n", + "if your_test_image != \"\":\n", + " img = mpimg.imread(your_test_image)\n", + " plt.subplot(1,3,1)\n", + " plt.imshow(img, cmap = plt.cm.Greys)\n", + " print(\"Old Dimensions: \", img.shape)\n", + " img = preprocess(img)\n", + " print(\"New Dimensions: \", img.shape)\n", + "else:\n", + " img = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if img is None:\n", + " print(\"Add the path for your image data.\")\n", + "else:\n", + " input_data = json.dumps({'data': img.tolist()})\n", + "\n", + " try:\n", + " r = json.loads(aci_service.run(input_data))\n", + " result = r['result'][0]\n", + " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", + " except Exception as e:\n", + " print(str(e))\n", + "\n", + " plt.figure(figsize = (16, 6))\n", + " plt.subplot(1,8,1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = -10, y = -40, s = \"Model prediction: \", fontsize = 14)\n", + " plt.text(x = -10, y = -25, s = \"Inference time: \", fontsize = 14)\n", + " plt.text(x = 100, y = -40, s = str(result), fontsize = 14)\n", + " plt.text(x = 100, y = -25, s = str(time_ms) + \" ms\", fontsize = 14)\n", + " plt.text(x = -10, y = -10, s = \"Model Input image: \", fontsize = 14)\n", + " plt.imshow(img.reshape((64, 64)), cmap = plt.cm.gray) \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# remember to delete your service after you are done using it!\n", + "\n", + "# aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations!\n", + "\n", + "In this tutorial, you have:\n", + "- familiarized yourself with ONNX Runtime inference and the pretrained models in the ONNX model zoo\n", + "- understood a state-of-the-art convolutional neural net image classification model (FER+ in ONNX) and deployed it in the Azure ML cloud\n", + "- ensured that your deep learning model is working perfectly (in the cloud) on test data, and checked it against some of your own!\n", + "\n", + "Next steps:\n", + "- If you have not already, check out another interesting ONNX/AML application that lets you set up a state-of-the-art [handwritten image classification model (MNIST)](https://github.com/Azure/MachineLearningNotebooks/tree/master/onnx/onnx-inference-mnist.ipynb) in the cloud! This tutorial deploys a pre-trained ONNX Computer Vision model for handwritten digit classification in an Azure ML virtual machine.\n", + "- Keep an eye out for an updated version of this tutorial that uses ONNX Runtime GPU.\n", + "- Contribute to our [open source ONNX repository on github](http://github.com/onnx/onnx) and/or add to our [ONNX model zoo](http://github.com/onnx/models)" + ] } - }, - "source": [ - "### Show some sample images\n", - "We use `matplotlib` to plot 3 test images from the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "nbpresent": { - "id": "396d478b-34aa-4afa-9898-cdce8222a516" - } - }, - "outputs": [], - "source": [ - "plt.figure(figsize = (20, 20))\n", - "for test_image in np.arange(3):\n", - " test_inputs[test_image].reshape(1, 64, 64)\n", - " plt.subplot(1, 8, test_image+1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.text(x = 10, y = -10, s = test_outputs[test_image], fontsize = 18)\n", - " plt.imshow(test_inputs[test_image].reshape(64, 64), cmap = plt.cm.gray)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run evaluation / prediction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize = (16, 6), frameon=False)\n", - "plt.subplot(1, 8, 1)\n", - "\n", - "plt.text(x = 0, y = -30, s = \"True Label: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 0, y = -20, s = \"Result: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 0, y = -10, s = \"Inference Time: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 3, y = 14, s = \"Model Input\", fontsize = 12, color = 'black')\n", - "plt.text(x = 6, y = 18, s = \"(64 x 64)\", fontsize = 12, color = 'black')\n", - "plt.imshow(np.ones((28,28)), cmap=plt.cm.Greys) \n", - "\n", - "\n", - "for i in np.arange(test_data_size):\n", - " \n", - " input_data = json.dumps({'data': test_inputs[i].tolist()})\n", - "\n", - " # predict using the deployed model\n", - " r = json.loads(aci_service.run(input_data))\n", - " \n", - " if \"error\" in r:\n", - " print(r['error'])\n", - " break\n", - " \n", - " result = r['result'][0]\n", - " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", - " \n", - " ground_truth = test_outputs[i]\n", - " \n", - " # compare actual value vs. the predicted values:\n", - " plt.subplot(1, 8, i+2)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - "\n", - " # use different color for misclassified sample\n", - " font_color = 'red' if ground_truth != result else 'black'\n", - " clr_map = plt.cm.Greys if ground_truth != result else plt.cm.gray\n", - "\n", - " # ground truth labels are in blue\n", - " plt.text(x = 10, y = -70, s = ground_truth, fontsize = 18, color = 'blue')\n", - " \n", - " # predictions are in black if correct, red if incorrect\n", - " plt.text(x = 10, y = -45, s = result, fontsize = 18, color = font_color)\n", - " plt.text(x = 5, y = -22, s = str(time_ms) + ' ms', fontsize = 14, color = font_color)\n", - "\n", - " \n", - " plt.imshow(test_inputs[i].reshape(64, 64), cmap = clr_map)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Try classifying your own images!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Preprocessing functions take your image and format it so it can be passed\n", - "# as input into our ONNX model\n", - "\n", - "import cv2\n", - "\n", - "def rgb2gray(rgb):\n", - " \"\"\"Convert the input image into grayscale\"\"\"\n", - " return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])\n", - "\n", - "def resize_img(img):\n", - " \"\"\"Resize image to MNIST model input dimensions\"\"\"\n", - " img = cv2.resize(img, dsize=(64, 64), interpolation=cv2.INTER_AREA)\n", - " img.resize((1, 1, 64, 64))\n", - " return img\n", - "\n", - "def preprocess(img):\n", - " \"\"\"Resize input images and convert them to grayscale.\"\"\"\n", - " if img.shape == (64, 64):\n", - " img.resize((1, 1, 64, 64))\n", - " return img\n", - " \n", - " grayscale = rgb2gray(img)\n", - " processed_img = resize_img(grayscale)\n", - " return processed_img" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Replace the following string with your own path/test image\n", - "# Make sure your image is square and the dimensions are equal (i.e. 100 * 100 pixels or 28 * 28 pixels)\n", - "\n", - "# Any PNG or JPG image file should work\n", - "# Make sure to include the entire path with // instead of /\n", - "\n", - "# e.g. your_test_image = \"C:/Users/vinitra.swamy/Pictures/face.png\"\n", - "\n", - "your_test_image = \"\"\n", - "\n", - "import matplotlib.image as mpimg\n", - "\n", - "if your_test_image != \"\":\n", - " img = mpimg.imread(your_test_image)\n", - " plt.subplot(1,3,1)\n", - " plt.imshow(img, cmap = plt.cm.Greys)\n", - " print(\"Old Dimensions: \", img.shape)\n", - " img = preprocess(img)\n", - " print(\"New Dimensions: \", img.shape)\n", - "else:\n", - " img = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if img is None:\n", - " print(\"Add the path for your image data.\")\n", - "else:\n", - " input_data = json.dumps({'data': img.tolist()})\n", - "\n", - " try:\n", - " r = json.loads(aci_service.run(input_data))\n", - " result = r['result'][0]\n", - " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", - " except Exception as e:\n", - " print(str(e))\n", - "\n", - " plt.figure(figsize = (16, 6))\n", - " plt.subplot(1,8,1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.text(x = -10, y = -40, s = \"Model prediction: \", fontsize = 14)\n", - " plt.text(x = -10, y = -25, s = \"Inference time: \", fontsize = 14)\n", - " plt.text(x = 100, y = -40, s = str(result), fontsize = 14)\n", - " plt.text(x = 100, y = -25, s = str(time_ms) + \" ms\", fontsize = 14)\n", - " plt.text(x = -10, y = -10, s = \"Model Input image: \", fontsize = 14)\n", - " plt.imshow(img.reshape((64, 64)), cmap = plt.cm.gray) \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# remember to delete your service after you are done using it!\n", - "\n", - "# aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "Congratulations!\n", - "\n", - "In this tutorial, you have:\n", - "- familiarized yourself with ONNX Runtime inference and the pretrained models in the ONNX model zoo\n", - "- understood a state-of-the-art convolutional neural net image classification model (FER+ in ONNX) and deployed it in the Azure ML cloud\n", - "- ensured that your deep learning model is working perfectly (in the cloud) on test data, and checked it against some of your own!\n", - "\n", - "Next steps:\n", - "- If you have not already, check out another interesting ONNX/AML application that lets you set up a state-of-the-art [handwritten image classification model (MNIST)](https://github.com/Azure/MachineLearningNotebooks/tree/master/onnx/onnx-inference-mnist.ipynb) in the cloud! This tutorial deploys a pre-trained ONNX Computer Vision model for handwritten digit classification in an Azure ML virtual machine.\n", - "- Keep an eye out for an updated version of this tutorial that uses ONNX Runtime GPU.\n", - "- Contribute to our [open source ONNX repository on github](http://github.com/onnx/onnx) and/or add to our [ONNX model zoo](http://github.com/onnx/models)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "viswamy" - } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "viswamy" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "vinitra.swamy" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "vinitra.swamy" - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/onnx/onnx-inference-mnist-deploy.ipynb b/onnx/onnx-inference-mnist-deploy.ipynb index 10eaf316..8110e534 100644 --- a/onnx/onnx-inference-mnist-deploy.ipynb +++ b/onnx/onnx-inference-mnist-deploy.ipynb @@ -1,792 +1,792 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved. \n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Handwritten Digit Classification (MNIST) using ONNX Runtime on Azure ML\n", - "\n", - "This example shows how to deploy an image classification neural network using the Modified National Institute of Standards and Technology ([MNIST](http://yann.lecun.com/exdb/mnist/)) dataset and Open Neural Network eXchange format ([ONNX](http://aka.ms/onnxdocarticle)) on the Azure Machine Learning platform. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of 28x28 pixels, representing number from 0 to 9. This tutorial will show you how to deploy a MNIST model from the [ONNX model zoo](https://github.com/onnx/models), use it to make predictions using ONNX Runtime Inference, and deploy it as a web service in Azure.\n", - "\n", - "Throughout this tutorial, we will be referring to ONNX, a neural network exchange format used to represent deep learning models. With ONNX, AI developers can more easily move models between state-of-the-art tools (CNTK, PyTorch, Caffe, MXNet, TensorFlow) and choose the combination that is best for them. ONNX is developed and supported by a community of partners including Microsoft AI, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai) and [open source files](https://github.com/onnx).\n", - "\n", - "[ONNX Runtime](https://aka.ms/onnxruntime-python) is the runtime engine that enables evaluation of trained machine learning (Traditional ML and Deep Learning) models with high performance and low resource utilization.\n", - "\n", - "#### Tutorial Objectives:\n", - "\n", - "- Describe the MNIST dataset and pretrained Convolutional Neural Net ONNX model, stored in the ONNX model zoo.\n", - "- Deploy and run the pretrained MNIST ONNX model on an Azure Machine Learning instance\n", - "- Predict labels for test set data points in the cloud using ONNX Runtime and Azure ML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "\n", - "### 1. Install Azure ML SDK and create a new workspace\n", - "Please follow [Azure ML configuration notebook](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) to set up your environment.\n", - "\n", - "### 2. Install additional packages needed for this tutorial notebook\n", - "You need to install the popular plotting library `matplotlib`, the image manipulation library `opencv`, and the `onnx` library in the conda environment where Azure Maching Learning SDK is installed. \n", - "\n", - "```sh\n", - "(myenv) $ pip install matplotlib onnx opencv-python\n", - "```\n", - "\n", - "**Debugging tip**: Make sure that you run the \"jupyter notebook\" command to launch this notebook after activating your virtual environment. Choose the respective Python kernel for your new virtual environment using the `Kernel > Change Kernel` menu above. If you have completed the steps correctly, the upper right corner of your screen should state `Python [conda env:myenv]` instead of `Python [default]`.\n", - "\n", - "### 3. Download sample data and pre-trained ONNX model from ONNX Model Zoo.\n", - "\n", - "In the following lines of code, we download [the trained ONNX MNIST model and corresponding test data](https://github.com/onnx/models/tree/master/mnist) and place them in the same folder as this tutorial notebook. For more information about the MNIST dataset, please visit [Yan LeCun's website](http://yann.lecun.com/exdb/mnist/)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# urllib is a built-in Python library to download files from URLs\n", - "\n", - "# Objective: retrieve the latest version of the ONNX MNIST model files from the\n", - "# ONNX Model Zoo and save it in the same folder as this tutorial\n", - "\n", - "import urllib.request\n", - "\n", - "onnx_model_url = \"https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz\"\n", - "\n", - "urllib.request.urlretrieve(onnx_model_url, filename=\"mnist.tar.gz\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# the ! magic command tells our jupyter notebook kernel to run the following line of \n", - "# code from the command line instead of the notebook kernel\n", - "\n", - "# We use tar and xvcf to unzip the files we just retrieved from the ONNX model zoo\n", - "\n", - "!tar xvzf mnist.tar.gz" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploy a VM with your ONNX model in the Cloud\n", - "\n", - "### Load Azure ML workspace\n", - "\n", - "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.resource_group, ws.location, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Registering your model with Azure ML" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model_dir = \"mnist\" # replace this with the location of your model files\n", - "\n", - "# leave as is if it's in the same folder as this notebook" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "\n", - "model = Model.register(workspace = ws,\n", - " model_path = model_dir + \"/\" + \"model.onnx\",\n", - " model_name = \"mnist_1\",\n", - " tags = {\"onnx\": \"demo\"},\n", - " description = \"MNIST image classification CNN from ONNX Model Zoo\",)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Optional: Displaying your registered models\n", - "\n", - "This step is not required, so feel free to skip it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models = ws.models\n", - "for name, m in models.items():\n", - " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "nbpresent": { - "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Handwritten Digit Classification (MNIST) using ONNX Runtime on Azure ML\n", + "\n", + "This example shows how to deploy an image classification neural network using the Modified National Institute of Standards and Technology ([MNIST](http://yann.lecun.com/exdb/mnist/)) dataset and Open Neural Network eXchange format ([ONNX](http://aka.ms/onnxdocarticle)) on the Azure Machine Learning platform. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of 28x28 pixels, representing number from 0 to 9. This tutorial will show you how to deploy a MNIST model from the [ONNX model zoo](https://github.com/onnx/models), use it to make predictions using ONNX Runtime Inference, and deploy it as a web service in Azure.\n", + "\n", + "Throughout this tutorial, we will be referring to ONNX, a neural network exchange format used to represent deep learning models. With ONNX, AI developers can more easily move models between state-of-the-art tools (CNTK, PyTorch, Caffe, MXNet, TensorFlow) and choose the combination that is best for them. ONNX is developed and supported by a community of partners including Microsoft AI, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai) and [open source files](https://github.com/onnx).\n", + "\n", + "[ONNX Runtime](https://aka.ms/onnxruntime-python) is the runtime engine that enables evaluation of trained machine learning (Traditional ML and Deep Learning) models with high performance and low resource utilization.\n", + "\n", + "#### Tutorial Objectives:\n", + "\n", + "- Describe the MNIST dataset and pretrained Convolutional Neural Net ONNX model, stored in the ONNX model zoo.\n", + "- Deploy and run the pretrained MNIST ONNX model on an Azure Machine Learning instance\n", + "- Predict labels for test set data points in the cloud using ONNX Runtime and Azure ML" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "### 1. Install Azure ML SDK and create a new workspace\n", + "Please follow [Azure ML configuration notebook](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) to set up your environment.\n", + "\n", + "### 2. Install additional packages needed for this tutorial notebook\n", + "You need to install the popular plotting library `matplotlib`, the image manipulation library `opencv`, and the `onnx` library in the conda environment where Azure Maching Learning SDK is installed. \n", + "\n", + "```sh\n", + "(myenv) $ pip install matplotlib onnx opencv-python\n", + "```\n", + "\n", + "**Debugging tip**: Make sure that you run the \"jupyter notebook\" command to launch this notebook after activating your virtual environment. Choose the respective Python kernel for your new virtual environment using the `Kernel > Change Kernel` menu above. If you have completed the steps correctly, the upper right corner of your screen should state `Python [conda env:myenv]` instead of `Python [default]`.\n", + "\n", + "### 3. Download sample data and pre-trained ONNX model from ONNX Model Zoo.\n", + "\n", + "In the following lines of code, we download [the trained ONNX MNIST model and corresponding test data](https://github.com/onnx/models/tree/master/mnist) and place them in the same folder as this tutorial notebook. For more information about the MNIST dataset, please visit [Yan LeCun's website](http://yann.lecun.com/exdb/mnist/)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# urllib is a built-in Python library to download files from URLs\n", + "\n", + "# Objective: retrieve the latest version of the ONNX MNIST model files from the\n", + "# ONNX Model Zoo and save it in the same folder as this tutorial\n", + "\n", + "import urllib.request\n", + "\n", + "onnx_model_url = \"https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz\"\n", + "\n", + "urllib.request.urlretrieve(onnx_model_url, filename=\"mnist.tar.gz\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the ! magic command tells our jupyter notebook kernel to run the following line of \n", + "# code from the command line instead of the notebook kernel\n", + "\n", + "# We use tar and xvcf to unzip the files we just retrieved from the ONNX model zoo\n", + "\n", + "!tar xvzf mnist.tar.gz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy a VM with your ONNX model in the Cloud\n", + "\n", + "### Load Azure ML workspace\n", + "\n", + "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Registering your model with Azure ML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_dir = \"mnist\" # replace this with the location of your model files\n", + "\n", + "# leave as is if it's in the same folder as this notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "\n", + "model = Model.register(workspace = ws,\n", + " model_path = model_dir + \"/\" + \"model.onnx\",\n", + " model_name = \"mnist_1\",\n", + " tags = {\"onnx\": \"demo\"},\n", + " description = \"MNIST image classification CNN from ONNX Model Zoo\",)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optional: Displaying your registered models\n", + "\n", + "This step is not required, so feel free to skip it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, m in models.items():\n", + " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + } + }, + "source": [ + "### ONNX MNIST Model Methodology\n", + "\n", + "The image classification model we are using is pre-trained using Microsoft's deep learning cognitive toolkit, [CNTK](https://github.com/Microsoft/CNTK), from the [ONNX model zoo](http://github.com/onnx/models). The model zoo has many other models that can be deployed on cloud providers like AzureML without any additional training. To ensure that our cloud deployed model works, we use testing data from the famous MNIST data set, provided as part of the [trained MNIST model](https://github.com/onnx/models/tree/master/mnist) in the ONNX model zoo.\n", + "\n", + "***Input: Handwritten Images from MNIST Dataset***\n", + "\n", + "***Task: Classify each MNIST image into an appropriate digit***\n", + "\n", + "***Output: Digit prediction for input image***\n", + "\n", + "Run the cell below to look at some of the sample images from the MNIST dataset that we used to train this ONNX model. Remember, once the application is deployed in Azure ML, you can use your own images as input for the model to classify!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# for images and plots in this notebook\n", + "import matplotlib.pyplot as plt \n", + "from IPython.display import Image\n", + "\n", + "# display images inline\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Image(url=\"http://3.bp.blogspot.com/_UpN7DfJA0j4/TJtUBWPk0SI/AAAAAAAAABY/oWPMtmqJn3k/s1600/mnist_originals.png\", width=200, height=200)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Specify our Score and Environment Files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now going to deploy our ONNX Model on AML with inference in ONNX Runtime. We begin by writing a score.py file, which will help us run the model in our Azure ML virtual machine (VM), and then specify our environment by writing a yml file. You will also notice that we import the onnxruntime library to do runtime inference on our ONNX models (passing in input and evaluating out model's predicted output). More information on the API and commands can be found in the [ONNX Runtime documentation](https://aka.ms/onnxruntime).\n", + "\n", + "### Write Score File\n", + "\n", + "A score file is what tells our Azure cloud service what to do. After initializing our model using azureml.core.model, we start an ONNX Runtime inference session to evaluate the data passed in on our function calls." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import numpy as np\n", + "import onnxruntime\n", + "import sys\n", + "import os\n", + "from azureml.core.model import Model\n", + "import time\n", + "\n", + "\n", + "def init():\n", + " global session, input_name, output_name\n", + " model = Model.get_model_path(model_name = 'mnist_1')\n", + " session = onnxruntime.InferenceSession(model, None)\n", + " input_name = session.get_inputs()[0].name\n", + " output_name = session.get_outputs()[0].name \n", + " \n", + "def run(input_data):\n", + " '''Purpose: evaluate test input in Azure Cloud using onnxruntime.\n", + " We will call the run function later from our Jupyter Notebook \n", + " so our azure service can evaluate our model input in the cloud. '''\n", + "\n", + " try:\n", + " # load in our data, convert to readable format\n", + " data = np.array(json.loads(input_data)['data']).astype('float32')\n", + "\n", + " start = time.time()\n", + " r = session.run([output_name], {input_name: data})[0]\n", + " end = time.time()\n", + " result = choose_class(r[0])\n", + " result_dict = {\"result\": [result],\n", + " \"time_in_sec\": [end - start]}\n", + " except Exception as e:\n", + " result_dict = {\"error\": str(e)}\n", + " \n", + " return json.dumps(result_dict)\n", + "\n", + "def choose_class(result_prob):\n", + " \"\"\"We use argmax to determine the right label to choose from our output\"\"\"\n", + " return int(np.argmax(result_prob, axis=0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write Environment File\n", + "\n", + "This step creates a YAML environment file that specifies which dependencies we would like to see in our Linux Virtual Machine." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(pip_packages=[\"numpy\", \"onnxruntime\", \"azureml-core\"])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create the Container Image\n", + "This step will likely take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"MNIST ONNX Runtime container\",\n", + " tags = {\"demo\": \"onnx\"}) \n", + "\n", + "\n", + "image = ContainerImage.create(name = \"onnximage\",\n", + " # this is the model object\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you need to debug your code, the next line of code accesses the log file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(image.image_build_log_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're all done specifying what we want our virtual machine to do. Let's configure and deploy our container image.\n", + "\n", + "### Deploy the container image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'demo': 'onnx'}, \n", + " description = 'ONNX for mnist model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following cell will likely take a few minutes to run as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "\n", + "aci_service_name = 'onnx-demo-mnist'\n", + "print(\"Service\", aci_service_name)\n", + "\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if aci_service.state != 'Healthy':\n", + " # run this command for debugging.\n", + " print(aci_service.get_logs())\n", + "\n", + " # If your deployment fails, make sure to delete your aci_service or rename your service before trying again!\n", + " # aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Success!\n", + "\n", + "If you've made it this far, you've deployed a working VM with a handwritten digit classifier running in the cloud using Azure ML. Congratulations!\n", + "\n", + "Let's see how well our model deals with our test images." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing and Evaluation\n", + "\n", + "### Load Test Data\n", + "\n", + "These are already in your directory from your ONNX model download (from the model zoo).\n", + "\n", + "Notice that our Model Zoo files have a .pb extension. This is because they are [protobuf files (Protocol Buffers)](https://developers.google.com/protocol-buffers/docs/pythontutorial), so we need to read in our data through our ONNX TensorProto reader into a format we can work with, like numerical arrays." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# to manipulate our arrays\n", + "import numpy as np \n", + "\n", + "# read in test data protobuf files included with the model\n", + "import onnx\n", + "from onnx import numpy_helper\n", + "\n", + "# to use parsers to read in our model/data\n", + "import json\n", + "import os\n", + "\n", + "test_inputs = []\n", + "test_outputs = []\n", + "\n", + "# read in 3 testing images from .pb files\n", + "test_data_size = 3\n", + "\n", + "for i in np.arange(test_data_size):\n", + " input_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'input_0.pb')\n", + " output_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'output_0.pb')\n", + " \n", + " # convert protobuf tensors to np arrays using the TensorProto reader from ONNX\n", + " tensor = onnx.TensorProto()\n", + " with open(input_test_data, 'rb') as f:\n", + " tensor.ParseFromString(f.read())\n", + " \n", + " input_data = numpy_helper.to_array(tensor)\n", + " test_inputs.append(input_data)\n", + " \n", + " with open(output_test_data, 'rb') as f:\n", + " tensor.ParseFromString(f.read())\n", + " \n", + " output_data = numpy_helper.to_array(tensor)\n", + " test_outputs.append(output_data)\n", + " \n", + "if len(test_inputs) == test_data_size:\n", + " print('Test data loaded successfully.')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + } + }, + "source": [ + "### Show some sample images\n", + "We use `matplotlib` to plot 3 test images from the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "396d478b-34aa-4afa-9898-cdce8222a516" + } + }, + "outputs": [], + "source": [ + "plt.figure(figsize = (16, 6))\n", + "for test_image in np.arange(3):\n", + " plt.subplot(1, 15, test_image+1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.imshow(test_inputs[test_image].reshape(28, 28), cmap = plt.cm.Greys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run evaluation / prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize = (16, 6), frameon=False)\n", + "plt.subplot(1, 8, 1)\n", + "\n", + "plt.text(x = 0, y = -30, s = \"True Label: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 0, y = -20, s = \"Result: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 0, y = -10, s = \"Inference Time: \", fontsize = 13, color = 'black')\n", + "plt.text(x = 3, y = 14, s = \"Model Input\", fontsize = 12, color = 'black')\n", + "plt.text(x = 6, y = 18, s = \"(28 x 28)\", fontsize = 12, color = 'black')\n", + "plt.imshow(np.ones((28,28)), cmap=plt.cm.Greys) \n", + "\n", + "\n", + "for i in np.arange(test_data_size):\n", + " \n", + " input_data = json.dumps({'data': test_inputs[i].tolist()})\n", + " \n", + " # predict using the deployed model\n", + " r = json.loads(aci_service.run(input_data))\n", + " \n", + " if \"error\" in r:\n", + " print(r['error'])\n", + " break\n", + " \n", + " result = r['result'][0]\n", + " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", + " \n", + " ground_truth = int(np.argmax(test_outputs[i]))\n", + " \n", + " # compare actual value vs. the predicted values:\n", + " plt.subplot(1, 8, i+2)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + "\n", + " # use different color for misclassified sample\n", + " font_color = 'red' if ground_truth != result else 'black'\n", + " clr_map = plt.cm.gray if ground_truth != result else plt.cm.Greys\n", + "\n", + " # ground truth labels are in blue\n", + " plt.text(x = 10, y = -30, s = ground_truth, fontsize = 18, color = 'blue')\n", + " \n", + " # predictions are in black if correct, red if incorrect\n", + " plt.text(x = 10, y = -20, s = result, fontsize = 18, color = font_color)\n", + " plt.text(x = 5, y = -10, s = str(time_ms) + ' ms', fontsize = 14, color = font_color)\n", + "\n", + " \n", + " plt.imshow(test_inputs[i].reshape(28, 28), cmap = clr_map)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Try classifying your own images!\n", + "\n", + "Create your own handwritten image and pass it into the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocessing functions take your image and format it so it can be passed\n", + "# as input into our ONNX model\n", + "\n", + "import cv2\n", + "\n", + "def rgb2gray(rgb):\n", + " \"\"\"Convert the input image into grayscale\"\"\"\n", + " return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])\n", + "\n", + "def resize_img(img):\n", + " \"\"\"Resize image to MNIST model input dimensions\"\"\"\n", + " img = cv2.resize(img, dsize=(28, 28), interpolation=cv2.INTER_AREA)\n", + " img.resize((1, 1, 28, 28))\n", + " return img\n", + "\n", + "def preprocess(img):\n", + " \"\"\"Resize input images and convert them to grayscale.\"\"\"\n", + " if img.shape == (28, 28):\n", + " img.resize((1, 1, 28, 28))\n", + " return img\n", + " \n", + " grayscale = rgb2gray(img)\n", + " processed_img = resize_img(grayscale)\n", + " return processed_img" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace this string with your own path/test image\n", + "# Make sure your image is square and the dimensions are equal (i.e. 100 * 100 pixels or 28 * 28 pixels)\n", + "\n", + "# Any PNG or JPG image file should work\n", + "\n", + "your_test_image = \"\"\n", + "\n", + "# e.g. your_test_image = \"C:/Users/vinitra.swamy/Pictures/handwritten_digit.png\"\n", + "\n", + "import matplotlib.image as mpimg\n", + "\n", + "if your_test_image != \"\":\n", + " img = mpimg.imread(your_test_image)\n", + " plt.subplot(1,3,1)\n", + " plt.imshow(img, cmap = plt.cm.Greys)\n", + " print(\"Old Dimensions: \", img.shape)\n", + " img = preprocess(img)\n", + " print(\"New Dimensions: \", img.shape)\n", + "else:\n", + " img = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if img is None:\n", + " print(\"Add the path for your image data.\")\n", + "else:\n", + " input_data = json.dumps({'data': img.tolist()})\n", + "\n", + " try:\n", + " r = json.loads(aci_service.run(input_data))\n", + " result = r['result'][0]\n", + " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", + " except Exception as e:\n", + " print(str(e))\n", + "\n", + " plt.figure(figsize = (16, 6))\n", + " plt.subplot(1, 15,1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = -100, y = -20, s = \"Model prediction: \", fontsize = 14)\n", + " plt.text(x = -100, y = -10, s = \"Inference time: \", fontsize = 14)\n", + " plt.text(x = 0, y = -20, s = str(result), fontsize = 14)\n", + " plt.text(x = 0, y = -10, s = str(time_ms) + \" ms\", fontsize = 14)\n", + " plt.text(x = -100, y = 14, s = \"Input image: \", fontsize = 14)\n", + " plt.imshow(img.reshape(28, 28), cmap = plt.cm.gray) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional: How does our ONNX MNIST model work? \n", + "#### A brief explanation of Convolutional Neural Networks\n", + "\n", + "A [convolutional neural network](https://en.wikipedia.org/wiki/Convolutional_neural_network) (CNN, or ConvNet) is a type of [feed-forward](https://en.wikipedia.org/wiki/Feedforward_neural_network) artificial neural network made up of neurons that have learnable weights and biases. The CNNs take advantage of the spatial nature of the data. In nature, we perceive different objects by their shapes, size and colors. For example, objects in a natural scene are typically edges, corners/vertices (defined by two of more edges), color patches etc. These primitives are often identified using different detectors (e.g., edge detection, color detector) or combination of detectors interacting to facilitate image interpretation (object classification, region of interest detection, scene description etc.) in real world vision related tasks. These detectors are also known as filters. Convolution is a mathematical operator that takes an image and a filter as input and produces a filtered output (representing say edges, corners, or colors in the input image). \n", + "\n", + "Historically, these filters are a set of weights that were often hand crafted or modeled with mathematical functions (e.g., [Gaussian](https://en.wikipedia.org/wiki/Gaussian_filter) / [Laplacian](http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm) / [Canny](https://en.wikipedia.org/wiki/Canny_edge_detector) filter). The filter outputs are mapped through non-linear activation functions mimicking human brain cells called [neurons](https://en.wikipedia.org/wiki/Neuron). Popular deep CNNs or ConvNets (such as [AlexNet](https://en.wikipedia.org/wiki/AlexNet), [VGG](https://arxiv.org/abs/1409.1556), [Inception](http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf), [ResNet](https://arxiv.org/pdf/1512.03385v1.pdf)) that are used for various [computer vision](https://en.wikipedia.org/wiki/Computer_vision) tasks have many of these architectural primitives (inspired from biology). \n", + "\n", + "### Convolution Layer\n", + "\n", + "A convolution layer is a set of filters. Each filter is defined by a weight (**W**) matrix, and bias ($b$).\n", + "\n", + "![](https://www.cntk.ai/jup/cntk103d_filterset_v2.png)\n", + "\n", + "These filters are scanned across the image performing the dot product between the weights and corresponding input value ($x$). The bias value is added to the output of the dot product and the resulting sum is optionally mapped through an activation function. This process is illustrated in the following animation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Image(url=\"https://www.cntk.ai/jup/cntk103d_conv2d_final.gif\", width= 200)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Description\n", + "\n", + "The MNIST model from the ONNX Model Zoo uses maxpooling to update the weights in its convolutions, summarized by the graphic below. You can see the entire workflow of our pre-trained model in the following image, with our input images and our output probabilities of each of our 10 labels. If you're interested in exploring the logic behind creating a Deep Learning model further, please look at the [training tutorial for our ONNX MNIST Convolutional Neural Network](https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_103D_MNIST_ConvolutionalNeuralNetwork.ipynb). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Max-Pooling for Convolutional Neural Nets\n", + "\n", + "![](http://www.cntk.ai/jup/c103d_max_pooling.gif)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Pre-Trained Model Architecture\n", + "\n", + "![](http://www.cntk.ai/jup/conv103d_mnist-conv-mp.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# remember to delete your service after you are done using it!\n", + "\n", + "# aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations!\n", + "\n", + "In this tutorial, you have:\n", + "- familiarized yourself with ONNX Runtime inference and the pretrained models in the ONNX model zoo\n", + "- understood a state-of-the-art convolutional neural net image classification model (MNIST in ONNX) and deployed it in Azure ML cloud\n", + "- ensured that your deep learning model is working perfectly (in the cloud) on test data, and checked it against some of your own!\n", + "\n", + "Next steps:\n", + "- Check out another interesting application based on a Microsoft Research computer vision paper that lets you set up a [facial emotion recognition model](https://github.com/Azure/MachineLearningNotebooks/tree/master/onnx/onnx-inference-emotion-recognition.ipynb) in the cloud! This tutorial deploys a pre-trained ONNX Computer Vision model in an Azure ML virtual machine.\n", + "- Contribute to our [open source ONNX repository on github](http://github.com/onnx/onnx) and/or add to our [ONNX model zoo](http://github.com/onnx/models)" + ] } - }, - "source": [ - "### ONNX MNIST Model Methodology\n", - "\n", - "The image classification model we are using is pre-trained using Microsoft's deep learning cognitive toolkit, [CNTK](https://github.com/Microsoft/CNTK), from the [ONNX model zoo](http://github.com/onnx/models). The model zoo has many other models that can be deployed on cloud providers like AzureML without any additional training. To ensure that our cloud deployed model works, we use testing data from the famous MNIST data set, provided as part of the [trained MNIST model](https://github.com/onnx/models/tree/master/mnist) in the ONNX model zoo.\n", - "\n", - "***Input: Handwritten Images from MNIST Dataset***\n", - "\n", - "***Task: Classify each MNIST image into an appropriate digit***\n", - "\n", - "***Output: Digit prediction for input image***\n", - "\n", - "Run the cell below to look at some of the sample images from the MNIST dataset that we used to train this ONNX model. Remember, once the application is deployed in Azure ML, you can use your own images as input for the model to classify!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# for images and plots in this notebook\n", - "import matplotlib.pyplot as plt \n", - "from IPython.display import Image\n", - "\n", - "# display images inline\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Image(url=\"http://3.bp.blogspot.com/_UpN7DfJA0j4/TJtUBWPk0SI/AAAAAAAAABY/oWPMtmqJn3k/s1600/mnist_originals.png\", width=200, height=200)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Specify our Score and Environment Files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are now going to deploy our ONNX Model on AML with inference in ONNX Runtime. We begin by writing a score.py file, which will help us run the model in our Azure ML virtual machine (VM), and then specify our environment by writing a yml file. You will also notice that we import the onnxruntime library to do runtime inference on our ONNX models (passing in input and evaluating out model's predicted output). More information on the API and commands can be found in the [ONNX Runtime documentation](https://aka.ms/onnxruntime).\n", - "\n", - "### Write Score File\n", - "\n", - "A score file is what tells our Azure cloud service what to do. After initializing our model using azureml.core.model, we start an ONNX Runtime inference session to evaluate the data passed in on our function calls." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import json\n", - "import numpy as np\n", - "import onnxruntime\n", - "import sys\n", - "import os\n", - "from azureml.core.model import Model\n", - "import time\n", - "\n", - "\n", - "def init():\n", - " global session, input_name, output_name\n", - " model = Model.get_model_path(model_name = 'mnist_1')\n", - " session = onnxruntime.InferenceSession(model, None)\n", - " input_name = session.get_inputs()[0].name\n", - " output_name = session.get_outputs()[0].name \n", - " \n", - "def run(input_data):\n", - " '''Purpose: evaluate test input in Azure Cloud using onnxruntime.\n", - " We will call the run function later from our Jupyter Notebook \n", - " so our azure service can evaluate our model input in the cloud. '''\n", - "\n", - " try:\n", - " # load in our data, convert to readable format\n", - " data = np.array(json.loads(input_data)['data']).astype('float32')\n", - "\n", - " start = time.time()\n", - " r = session.run([output_name], {input_name: data})[0]\n", - " end = time.time()\n", - " result = choose_class(r[0])\n", - " result_dict = {\"result\": [result],\n", - " \"time_in_sec\": [end - start]}\n", - " except Exception as e:\n", - " result_dict = {\"error\": str(e)}\n", - " \n", - " return json.dumps(result_dict)\n", - "\n", - "def choose_class(result_prob):\n", - " \"\"\"We use argmax to determine the right label to choose from our output\"\"\"\n", - " return int(np.argmax(result_prob, axis=0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write Environment File\n", - "\n", - "This step creates a YAML environment file that specifies which dependencies we would like to see in our Linux Virtual Machine." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(pip_packages=[\"numpy\", \"onnxruntime\", \"azureml-core\"])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create the Container Image\n", - "This step will likely take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"MNIST ONNX Runtime container\",\n", - " tags = {\"demo\": \"onnx\"}) \n", - "\n", - "\n", - "image = ContainerImage.create(name = \"onnximage\",\n", - " # this is the model object\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you need to debug your code, the next line of code accesses the log file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(image.image_build_log_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're all done specifying what we want our virtual machine to do. Let's configure and deploy our container image.\n", - "\n", - "### Deploy the container image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'demo': 'onnx'}, \n", - " description = 'ONNX for mnist model')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell will likely take a few minutes to run as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "\n", - "aci_service_name = 'onnx-demo-mnist'\n", - "print(\"Service\", aci_service_name)\n", - "\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if aci_service.state != 'Healthy':\n", - " # run this command for debugging.\n", - " print(aci_service.get_logs())\n", - "\n", - " # If your deployment fails, make sure to delete your aci_service or rename your service before trying again!\n", - " # aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Success!\n", - "\n", - "If you've made it this far, you've deployed a working VM with a handwritten digit classifier running in the cloud using Azure ML. Congratulations!\n", - "\n", - "Let's see how well our model deals with our test images." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Testing and Evaluation\n", - "\n", - "### Load Test Data\n", - "\n", - "These are already in your directory from your ONNX model download (from the model zoo).\n", - "\n", - "Notice that our Model Zoo files have a .pb extension. This is because they are [protobuf files (Protocol Buffers)](https://developers.google.com/protocol-buffers/docs/pythontutorial), so we need to read in our data through our ONNX TensorProto reader into a format we can work with, like numerical arrays." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# to manipulate our arrays\n", - "import numpy as np \n", - "\n", - "# read in test data protobuf files included with the model\n", - "import onnx\n", - "from onnx import numpy_helper\n", - "\n", - "# to use parsers to read in our model/data\n", - "import json\n", - "import os\n", - "\n", - "test_inputs = []\n", - "test_outputs = []\n", - "\n", - "# read in 3 testing images from .pb files\n", - "test_data_size = 3\n", - "\n", - "for i in np.arange(test_data_size):\n", - " input_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'input_0.pb')\n", - " output_test_data = os.path.join(model_dir, 'test_data_set_{0}'.format(i), 'output_0.pb')\n", - " \n", - " # convert protobuf tensors to np arrays using the TensorProto reader from ONNX\n", - " tensor = onnx.TensorProto()\n", - " with open(input_test_data, 'rb') as f:\n", - " tensor.ParseFromString(f.read())\n", - " \n", - " input_data = numpy_helper.to_array(tensor)\n", - " test_inputs.append(input_data)\n", - " \n", - " with open(output_test_data, 'rb') as f:\n", - " tensor.ParseFromString(f.read())\n", - " \n", - " output_data = numpy_helper.to_array(tensor)\n", - " test_outputs.append(output_data)\n", - " \n", - "if len(test_inputs) == test_data_size:\n", - " print('Test data loaded successfully.')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "nbpresent": { - "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" - } - }, - "source": [ - "### Show some sample images\n", - "We use `matplotlib` to plot 3 test images from the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "nbpresent": { - "id": "396d478b-34aa-4afa-9898-cdce8222a516" - } - }, - "outputs": [], - "source": [ - "plt.figure(figsize = (16, 6))\n", - "for test_image in np.arange(3):\n", - " plt.subplot(1, 15, test_image+1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.imshow(test_inputs[test_image].reshape(28, 28), cmap = plt.cm.Greys)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run evaluation / prediction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize = (16, 6), frameon=False)\n", - "plt.subplot(1, 8, 1)\n", - "\n", - "plt.text(x = 0, y = -30, s = \"True Label: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 0, y = -20, s = \"Result: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 0, y = -10, s = \"Inference Time: \", fontsize = 13, color = 'black')\n", - "plt.text(x = 3, y = 14, s = \"Model Input\", fontsize = 12, color = 'black')\n", - "plt.text(x = 6, y = 18, s = \"(28 x 28)\", fontsize = 12, color = 'black')\n", - "plt.imshow(np.ones((28,28)), cmap=plt.cm.Greys) \n", - "\n", - "\n", - "for i in np.arange(test_data_size):\n", - " \n", - " input_data = json.dumps({'data': test_inputs[i].tolist()})\n", - " \n", - " # predict using the deployed model\n", - " r = json.loads(aci_service.run(input_data))\n", - " \n", - " if \"error\" in r:\n", - " print(r['error'])\n", - " break\n", - " \n", - " result = r['result'][0]\n", - " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", - " \n", - " ground_truth = int(np.argmax(test_outputs[i]))\n", - " \n", - " # compare actual value vs. the predicted values:\n", - " plt.subplot(1, 8, i+2)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - "\n", - " # use different color for misclassified sample\n", - " font_color = 'red' if ground_truth != result else 'black'\n", - " clr_map = plt.cm.gray if ground_truth != result else plt.cm.Greys\n", - "\n", - " # ground truth labels are in blue\n", - " plt.text(x = 10, y = -30, s = ground_truth, fontsize = 18, color = 'blue')\n", - " \n", - " # predictions are in black if correct, red if incorrect\n", - " plt.text(x = 10, y = -20, s = result, fontsize = 18, color = font_color)\n", - " plt.text(x = 5, y = -10, s = str(time_ms) + ' ms', fontsize = 14, color = font_color)\n", - "\n", - " \n", - " plt.imshow(test_inputs[i].reshape(28, 28), cmap = clr_map)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Try classifying your own images!\n", - "\n", - "Create your own handwritten image and pass it into the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Preprocessing functions take your image and format it so it can be passed\n", - "# as input into our ONNX model\n", - "\n", - "import cv2\n", - "\n", - "def rgb2gray(rgb):\n", - " \"\"\"Convert the input image into grayscale\"\"\"\n", - " return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])\n", - "\n", - "def resize_img(img):\n", - " \"\"\"Resize image to MNIST model input dimensions\"\"\"\n", - " img = cv2.resize(img, dsize=(28, 28), interpolation=cv2.INTER_AREA)\n", - " img.resize((1, 1, 28, 28))\n", - " return img\n", - "\n", - "def preprocess(img):\n", - " \"\"\"Resize input images and convert them to grayscale.\"\"\"\n", - " if img.shape == (28, 28):\n", - " img.resize((1, 1, 28, 28))\n", - " return img\n", - " \n", - " grayscale = rgb2gray(img)\n", - " processed_img = resize_img(grayscale)\n", - " return processed_img" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Replace this string with your own path/test image\n", - "# Make sure your image is square and the dimensions are equal (i.e. 100 * 100 pixels or 28 * 28 pixels)\n", - "\n", - "# Any PNG or JPG image file should work\n", - "\n", - "your_test_image = \"\"\n", - "\n", - "# e.g. your_test_image = \"C:/Users/vinitra.swamy/Pictures/handwritten_digit.png\"\n", - "\n", - "import matplotlib.image as mpimg\n", - "\n", - "if your_test_image != \"\":\n", - " img = mpimg.imread(your_test_image)\n", - " plt.subplot(1,3,1)\n", - " plt.imshow(img, cmap = plt.cm.Greys)\n", - " print(\"Old Dimensions: \", img.shape)\n", - " img = preprocess(img)\n", - " print(\"New Dimensions: \", img.shape)\n", - "else:\n", - " img = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if img is None:\n", - " print(\"Add the path for your image data.\")\n", - "else:\n", - " input_data = json.dumps({'data': img.tolist()})\n", - "\n", - " try:\n", - " r = json.loads(aci_service.run(input_data))\n", - " result = r['result'][0]\n", - " time_ms = np.round(r['time_in_sec'][0] * 1000, 2)\n", - " except Exception as e:\n", - " print(str(e))\n", - "\n", - " plt.figure(figsize = (16, 6))\n", - " plt.subplot(1, 15,1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.text(x = -100, y = -20, s = \"Model prediction: \", fontsize = 14)\n", - " plt.text(x = -100, y = -10, s = \"Inference time: \", fontsize = 14)\n", - " plt.text(x = 0, y = -20, s = str(result), fontsize = 14)\n", - " plt.text(x = 0, y = -10, s = str(time_ms) + \" ms\", fontsize = 14)\n", - " plt.text(x = -100, y = 14, s = \"Input image: \", fontsize = 14)\n", - " plt.imshow(img.reshape(28, 28), cmap = plt.cm.gray) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optional: How does our ONNX MNIST model work? \n", - "#### A brief explanation of Convolutional Neural Networks\n", - "\n", - "A [convolutional neural network](https://en.wikipedia.org/wiki/Convolutional_neural_network) (CNN, or ConvNet) is a type of [feed-forward](https://en.wikipedia.org/wiki/Feedforward_neural_network) artificial neural network made up of neurons that have learnable weights and biases. The CNNs take advantage of the spatial nature of the data. In nature, we perceive different objects by their shapes, size and colors. For example, objects in a natural scene are typically edges, corners/vertices (defined by two of more edges), color patches etc. These primitives are often identified using different detectors (e.g., edge detection, color detector) or combination of detectors interacting to facilitate image interpretation (object classification, region of interest detection, scene description etc.) in real world vision related tasks. These detectors are also known as filters. Convolution is a mathematical operator that takes an image and a filter as input and produces a filtered output (representing say edges, corners, or colors in the input image). \n", - "\n", - "Historically, these filters are a set of weights that were often hand crafted or modeled with mathematical functions (e.g., [Gaussian](https://en.wikipedia.org/wiki/Gaussian_filter) / [Laplacian](http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm) / [Canny](https://en.wikipedia.org/wiki/Canny_edge_detector) filter). The filter outputs are mapped through non-linear activation functions mimicking human brain cells called [neurons](https://en.wikipedia.org/wiki/Neuron). Popular deep CNNs or ConvNets (such as [AlexNet](https://en.wikipedia.org/wiki/AlexNet), [VGG](https://arxiv.org/abs/1409.1556), [Inception](http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf), [ResNet](https://arxiv.org/pdf/1512.03385v1.pdf)) that are used for various [computer vision](https://en.wikipedia.org/wiki/Computer_vision) tasks have many of these architectural primitives (inspired from biology). \n", - "\n", - "### Convolution Layer\n", - "\n", - "A convolution layer is a set of filters. Each filter is defined by a weight (**W**) matrix, and bias ($b$).\n", - "\n", - "![](https://www.cntk.ai/jup/cntk103d_filterset_v2.png)\n", - "\n", - "These filters are scanned across the image performing the dot product between the weights and corresponding input value ($x$). The bias value is added to the output of the dot product and the resulting sum is optionally mapped through an activation function. This process is illustrated in the following animation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Image(url=\"https://www.cntk.ai/jup/cntk103d_conv2d_final.gif\", width= 200)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Model Description\n", - "\n", - "The MNIST model from the ONNX Model Zoo uses maxpooling to update the weights in its convolutions, summarized by the graphic below. You can see the entire workflow of our pre-trained model in the following image, with our input images and our output probabilities of each of our 10 labels. If you're interested in exploring the logic behind creating a Deep Learning model further, please look at the [training tutorial for our ONNX MNIST Convolutional Neural Network](https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_103D_MNIST_ConvolutionalNeuralNetwork.ipynb). " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Max-Pooling for Convolutional Neural Nets\n", - "\n", - "![](http://www.cntk.ai/jup/c103d_max_pooling.gif)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Pre-Trained Model Architecture\n", - "\n", - "![](http://www.cntk.ai/jup/conv103d_mnist-conv-mp.png)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# remember to delete your service after you are done using it!\n", - "\n", - "# aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "Congratulations!\n", - "\n", - "In this tutorial, you have:\n", - "- familiarized yourself with ONNX Runtime inference and the pretrained models in the ONNX model zoo\n", - "- understood a state-of-the-art convolutional neural net image classification model (MNIST in ONNX) and deployed it in Azure ML cloud\n", - "- ensured that your deep learning model is working perfectly (in the cloud) on test data, and checked it against some of your own!\n", - "\n", - "Next steps:\n", - "- Check out another interesting application based on a Microsoft Research computer vision paper that lets you set up a [facial emotion recognition model](https://github.com/Azure/MachineLearningNotebooks/tree/master/onnx/onnx-inference-emotion-recognition.ipynb) in the cloud! This tutorial deploys a pre-trained ONNX Computer Vision model in an Azure ML virtual machine.\n", - "- Contribute to our [open source ONNX repository on github](http://github.com/onnx/onnx) and/or add to our [ONNX model zoo](http://github.com/onnx/models)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "viswamy" - } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "viswamy" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "vinitra.swamy" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "vinitra.swamy" - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/onnx/onnx-modelzoo-aml-deploy-resnet50.ipynb b/onnx/onnx-modelzoo-aml-deploy-resnet50.ipynb index 1d587a6d..4e2ed695 100644 --- a/onnx/onnx-modelzoo-aml-deploy-resnet50.ipynb +++ b/onnx/onnx-modelzoo-aml-deploy-resnet50.ipynb @@ -1,419 +1,419 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved. \n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# ResNet50 Image Classification using ONNX and AzureML\n", - "\n", - "This example shows how to deploy the ResNet50 ONNX model as a web service using Azure Machine Learning services and the ONNX Runtime.\n", - "\n", - "## What is ONNX\n", - "ONNX is an open format for representing machine learning and deep learning models. ONNX enables open and interoperable AI by enabling data scientists and developers to use the tools of their choice without worrying about lock-in and flexibility to deploy to a variety of platforms. ONNX is developed and supported by a community of partners including Microsoft, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai).\n", - "\n", - "## ResNet50 Details\n", - "ResNet classifies the major object in an input image into a set of 1000 pre-defined classes. For more information about the ResNet50 model and how it was created can be found on the [ONNX Model Zoo github](https://github.com/onnx/models/tree/master/models/image_classification/resnet). " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "\n", - "To make the best use of your time, make sure you have done the following:\n", - "\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", - "* Go through the [00.configuration.ipynb](../00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (config.json)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Download pre-trained ONNX model from ONNX Model Zoo.\n", - "\n", - "Download the [ResNet50v2 model and test data](https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.tar.gz) and extract it in the same folder as this tutorial notebook.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import urllib.request\n", - "\n", - "onnx_model_url = \"https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.tar.gz\"\n", - "urllib.request.urlretrieve(onnx_model_url, filename=\"resnet50v2.tar.gz\")\n", - "\n", - "!tar xvzf resnet50v2.tar.gz" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploying as a web service with Azure ML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load your Azure ML workspace\n", - "\n", - "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register your model with Azure ML\n", - "\n", - "Now we upload the model and register it in the workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.model import Model\n", - "\n", - "model = Model.register(model_path = \"resnet50v2/resnet50v2.onnx\",\n", - " model_name = \"resnet50v2\",\n", - " tags = {\"onnx\": \"demo\"},\n", - " description = \"ResNet50v2 from ONNX Model Zoo\",\n", - " workspace = ws)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Displaying your registered models\n", - "\n", - "You can optionally list out all the models that you have registered in this workspace." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "models = ws.models\n", - "for name, m in models.items():\n", - " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write scoring file\n", - "\n", - "We are now going to deploy our ONNX model on Azure ML using the ONNX Runtime. We begin by writing a score.py file that will be invoked by the web service call. The `init()` function is called once when the container is started so we load the model using the ONNX Runtime into a global session object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import json\n", - "import time\n", - "import sys\n", - "import os\n", - "from azureml.core.model import Model\n", - "import numpy as np # we're going to use numpy to process input and output data\n", - "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", - "\n", - "def softmax(x):\n", - " x = x.reshape(-1)\n", - " e_x = np.exp(x - np.max(x))\n", - " return e_x / e_x.sum(axis=0)\n", - "\n", - "def init():\n", - " global session\n", - " model = Model.get_model_path(model_name = 'resnet50v2')\n", - " session = onnxruntime.InferenceSession(model, None)\n", - "\n", - "def preprocess(input_data_json):\n", - " # convert the JSON data into the tensor input\n", - " img_data = np.array(json.loads(input_data_json)['data']).astype('float32')\n", - " \n", - " #normalize\n", - " mean_vec = np.array([0.485, 0.456, 0.406])\n", - " stddev_vec = np.array([0.229, 0.224, 0.225])\n", - " norm_img_data = np.zeros(img_data.shape).astype('float32')\n", - " for i in range(img_data.shape[0]):\n", - " norm_img_data[i,:,:] = (img_data[i,:,:]/255 - mean_vec[i]) / stddev_vec[i]\n", - "\n", - " return norm_img_data\n", - "\n", - "def postprocess(result):\n", - " return softmax(np.array(result)).tolist()\n", - "\n", - "def run(input_data_json):\n", - " try:\n", - " start = time.time()\n", - " # load in our data which is expected as NCHW 224x224 image\n", - " input_data = preprocess(input_data_json)\n", - " input_name = session.get_inputs()[0].name # get the id of the first input of the model \n", - " result = session.run([], {input_name: input_data})\n", - " end = time.time() # stop timer\n", - " return {\"result\": postprocess(result),\n", - " \"time\": end - start}\n", - " except Exception as e:\n", - " result = str(e)\n", - " return {\"error\": result}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create container image" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First we create a YAML file that specifies which dependencies we would like to see in our container." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies.create(pip_packages=[\"numpy\",\"onnxruntime\",\"azureml-core\"])\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we have Azure ML create the container. This step will likely take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.image import ContainerImage\n", - "\n", - "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", - " runtime = \"python\",\n", - " conda_file = \"myenv.yml\",\n", - " description = \"ONNX ResNet50 Demo\",\n", - " tags = {\"demo\": \"onnx\"}\n", - " )\n", - "\n", - "\n", - "image = ContainerImage.create(name = \"onnxresnet50v2\",\n", - " models = [model],\n", - " image_config = image_config,\n", - " workspace = ws)\n", - "\n", - "image.wait_for_creation(show_output = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you need to debug your code, the next line of code accesses the log file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(image.image_build_log_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're all set! Let's get our model chugging.\n", - "\n", - "### Deploy the container image" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", - " memory_gb = 1, \n", - " tags = {'demo': 'onnx'}, \n", - " description = 'web service for ResNet50 ONNX model')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell will likely take a few minutes to run as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.webservice import Webservice\n", - "from random import randint\n", - "\n", - "aci_service_name = 'onnx-demo-resnet50'+str(randint(0,100))\n", - "print(\"Service\", aci_service_name)\n", - "\n", - "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", - " image = image,\n", - " name = aci_service_name,\n", - " workspace = ws)\n", - "\n", - "aci_service.wait_for_deployment(True)\n", - "print(aci_service.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case the deployment fails, you can check the logs. Make sure to delete your aci_service before trying again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if aci_service.state != 'Healthy':\n", - " # run this command for debugging.\n", - " print(aci_service.get_logs())\n", - " aci_service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Success!\n", - "\n", - "If you've made it this far, you've deployed a working web service that does image classification using an ONNX model. You can get the URL for the webservice with the code below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(aci_service.scoring_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you are eventually done using the web service, remember to delete it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#aci_service.delete()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "onnx" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ResNet50 Image Classification using ONNX and AzureML\n", + "\n", + "This example shows how to deploy the ResNet50 ONNX model as a web service using Azure Machine Learning services and the ONNX Runtime.\n", + "\n", + "## What is ONNX\n", + "ONNX is an open format for representing machine learning and deep learning models. ONNX enables open and interoperable AI by enabling data scientists and developers to use the tools of their choice without worrying about lock-in and flexibility to deploy to a variety of platforms. ONNX is developed and supported by a community of partners including Microsoft, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai).\n", + "\n", + "## ResNet50 Details\n", + "ResNet classifies the major object in an input image into a set of 1000 pre-defined classes. For more information about the ResNet50 model and how it was created can be found on the [ONNX Model Zoo github](https://github.com/onnx/models/tree/master/models/image_classification/resnet). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "To make the best use of your time, make sure you have done the following:\n", + "\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](../00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (config.json)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Download pre-trained ONNX model from ONNX Model Zoo.\n", + "\n", + "Download the [ResNet50v2 model and test data](https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.tar.gz) and extract it in the same folder as this tutorial notebook.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import urllib.request\n", + "\n", + "onnx_model_url = \"https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.tar.gz\"\n", + "urllib.request.urlretrieve(onnx_model_url, filename=\"resnet50v2.tar.gz\")\n", + "\n", + "!tar xvzf resnet50v2.tar.gz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploying as a web service with Azure ML" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load your Azure ML workspace\n", + "\n", + "We begin by instantiating a workspace object from the existing workspace created earlier in the configuration notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.location, ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register your model with Azure ML\n", + "\n", + "Now we upload the model and register it in the workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "\n", + "model = Model.register(model_path = \"resnet50v2/resnet50v2.onnx\",\n", + " model_name = \"resnet50v2\",\n", + " tags = {\"onnx\": \"demo\"},\n", + " description = \"ResNet50v2 from ONNX Model Zoo\",\n", + " workspace = ws)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Displaying your registered models\n", + "\n", + "You can optionally list out all the models that you have registered in this workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, m in models.items():\n", + " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write scoring file\n", + "\n", + "We are now going to deploy our ONNX model on Azure ML using the ONNX Runtime. We begin by writing a score.py file that will be invoked by the web service call. The `init()` function is called once when the container is started so we load the model using the ONNX Runtime into a global session object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import time\n", + "import sys\n", + "import os\n", + "from azureml.core.model import Model\n", + "import numpy as np # we're going to use numpy to process input and output data\n", + "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", + "\n", + "def softmax(x):\n", + " x = x.reshape(-1)\n", + " e_x = np.exp(x - np.max(x))\n", + " return e_x / e_x.sum(axis=0)\n", + "\n", + "def init():\n", + " global session\n", + " model = Model.get_model_path(model_name = 'resnet50v2')\n", + " session = onnxruntime.InferenceSession(model, None)\n", + "\n", + "def preprocess(input_data_json):\n", + " # convert the JSON data into the tensor input\n", + " img_data = np.array(json.loads(input_data_json)['data']).astype('float32')\n", + " \n", + " #normalize\n", + " mean_vec = np.array([0.485, 0.456, 0.406])\n", + " stddev_vec = np.array([0.229, 0.224, 0.225])\n", + " norm_img_data = np.zeros(img_data.shape).astype('float32')\n", + " for i in range(img_data.shape[0]):\n", + " norm_img_data[i,:,:] = (img_data[i,:,:]/255 - mean_vec[i]) / stddev_vec[i]\n", + "\n", + " return norm_img_data\n", + "\n", + "def postprocess(result):\n", + " return softmax(np.array(result)).tolist()\n", + "\n", + "def run(input_data_json):\n", + " try:\n", + " start = time.time()\n", + " # load in our data which is expected as NCHW 224x224 image\n", + " input_data = preprocess(input_data_json)\n", + " input_name = session.get_inputs()[0].name # get the id of the first input of the model \n", + " result = session.run([], {input_name: input_data})\n", + " end = time.time() # stop timer\n", + " return {\"result\": postprocess(result),\n", + " \"time\": end - start}\n", + " except Exception as e:\n", + " result = str(e)\n", + " return {\"error\": result}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create container image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we create a YAML file that specifies which dependencies we would like to see in our container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(pip_packages=[\"numpy\",\"onnxruntime\",\"azureml-core\"])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we have Azure ML create the container. This step will likely take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"ONNX ResNet50 Demo\",\n", + " tags = {\"demo\": \"onnx\"}\n", + " )\n", + "\n", + "\n", + "image = ContainerImage.create(name = \"onnxresnet50v2\",\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you need to debug your code, the next line of code accesses the log file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(image.image_build_log_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're all set! Let's get our model chugging.\n", + "\n", + "### Deploy the container image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'demo': 'onnx'}, \n", + " description = 'web service for ResNet50 ONNX model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following cell will likely take a few minutes to run as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "from random import randint\n", + "\n", + "aci_service_name = 'onnx-demo-resnet50'+str(randint(0,100))\n", + "print(\"Service\", aci_service_name)\n", + "\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case the deployment fails, you can check the logs. Make sure to delete your aci_service before trying again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if aci_service.state != 'Healthy':\n", + " # run this command for debugging.\n", + " print(aci_service.get_logs())\n", + " aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Success!\n", + "\n", + "If you've made it this far, you've deployed a working web service that does image classification using an ONNX model. You can get the URL for the webservice with the code below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(aci_service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are eventually done using the web service, remember to delete it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#aci_service.delete()" + ] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "onnx" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.6" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/onnx/onnx-train-pytorch-aml-deploy-mnist.ipynb b/onnx/onnx-train-pytorch-aml-deploy-mnist.ipynb new file mode 100644 index 00000000..2c1b40fd --- /dev/null +++ b/onnx/onnx-train-pytorch-aml-deploy-mnist.ipynb @@ -0,0 +1,667 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MNIST Handwritten Digit Classification using ONNX and AzureML\n", + "\n", + "This example shows how to train a model on the MNIST data using PyTorch, save it as an ONNX model, and deploy it as a web service using Azure Machine Learning services and the ONNX Runtime.\n", + "\n", + "## What is ONNX\n", + "ONNX is an open format for representing machine learning and deep learning models. ONNX enables open and interoperable AI by enabling data scientists and developers to use the tools of their choice without worrying about lock-in and flexibility to deploy to a variety of platforms. ONNX is developed and supported by a community of partners including Microsoft, Facebook, and Amazon. For more information, explore the [ONNX website](http://onnx.ai).\n", + "\n", + "## MNIST Details\n", + "The Modified National Institute of Standards and Technology (MNIST) dataset consists of 70,000 grayscale images. Each image is a handwritten digit of 28x28 pixels, representing numbers from 0 to 9. For more information about the MNIST dataset, please visit [Yan LeCun's website](http://yann.lecun.com/exdb/mnist/). For more information about the MNIST model and how it was created can be found on the [ONNX Model Zoo github](https://github.com/onnx/models/tree/master/mnist). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model\n", + "\n", + "### Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target.')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "project_folder = './pytorch-mnist'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy the training script `mnist.py` into your project directory. Make sure the training script has the following code to create an ONNX file:\n", + "```python\n", + "dummy_input = torch.randn(1, 1, 28, 28, device=device)\n", + "model_path = os.path.join(output_dir, 'mnist.onnx')\n", + "torch.onnx.export(model, dummy_input, model_path)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('mnist.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this transfer learning PyTorch tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'pytorch1-mnist'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a PyTorch estimator\n", + "The AML SDK's PyTorch estimator enables you to easily submit PyTorch training jobs for both single-node and distributed runs. For more information on the PyTorch estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-pytorch). The following code will define a single-node PyTorch job." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import PyTorch\n", + "\n", + "estimator = PyTorch(source_directory=project_folder, \n", + " script_params={'--output-dir': './outputs'},\n", + " compute_target=compute_target,\n", + " entry_script='mnist.py',\n", + " use_gpu=True)\n", + "\n", + "# upgrade to PyTorch 1.0 Preview, which has better support for ONNX\n", + "estimator.conda_dependencies.remove_conda_package('pytorch=0.4.0')\n", + "estimator.conda_dependencies.add_conda_package('pytorch-nightly')\n", + "estimator.conda_dependencies.add_channel('pytorch')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `script_params` parameter is a dictionary containing the command-line arguments to your training script `entry_script`. Please note the following:\n", + "- We specified the output directory as `./outputs`. The `outputs` directory is specially treated by AML in that all the content in this directory gets uploaded to your workspace as part of your run history. The files written to this directory are therefore accessible even once your remote run is over. In this tutorial, we will save our trained model to this output directory.\n", + "\n", + "To leverage the Azure VM's GPU for training, we set `use_gpu=True`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run.get_details())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can block until the script has completed training before running more code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download the model (optional)\n", + "\n", + "Once the run completes, you can choose to download the ONNX model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list all the files from the run\n", + "run.get_file_names()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "model_path = os.path.join('outputs', 'mnist.onnx')\n", + "run.download_file(model_path, output_file_path=model_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register the model\n", + "You can also register the model from your run to your workspace. The `model_path` parameter takes in the relative path on the remote VM to the model file in your `outputs` directory. You can then deploy this registered model as a web service through the AML SDK." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = run.register_model(model_name='mnist', model_path=model_path)\n", + "print(model.name, model.id, model.version, sep = '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Displaying your registered models (optional)\n", + "\n", + "You can optionally list out all the models that you have registered in this workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, m in models.items():\n", + " print(\"Name:\", name,\"\\tVersion:\", m.version, \"\\tDescription:\", m.description, m.tags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploying as a web service\n", + "\n", + "### Write scoring file\n", + "\n", + "We are now going to deploy our ONNX model on Azure ML using the ONNX Runtime. We begin by writing a score.py file that will be invoked by the web service call. The `init()` function is called once when the container is started so we load the model using the ONNX Runtime into a global session object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import time\n", + "import sys\n", + "import os\n", + "from azureml.core.model import Model\n", + "import numpy as np # we're going to use numpy to process input and output data\n", + "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", + "\n", + "def init():\n", + " global session\n", + " model = Model.get_model_path(model_name = 'mnist')\n", + " session = onnxruntime.InferenceSession(model)\n", + "\n", + "def preprocess(input_data_json):\n", + " # convert the JSON data into the tensor input\n", + " return np.array(json.loads(input_data_json)['data']).astype('float32')\n", + "\n", + "def postprocess(result):\n", + " # We use argmax to pick the highest confidence label\n", + " return int(np.argmax(np.array(result).squeeze(), axis=0))\n", + "\n", + "def run(input_data_json):\n", + " try:\n", + " start = time.time() # start timer\n", + " input_data = preprocess(input_data_json)\n", + " input_name = session.get_inputs()[0].name # get the id of the first input of the model \n", + " result = session.run([], {input_name: input_data})\n", + " end = time.time() # stop timer\n", + " return {\"result\": postprocess(result),\n", + " \"time\": end - start}\n", + " except Exception as e:\n", + " result = str(e)\n", + " return {\"error\": result}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create container image\n", + "First we create a YAML file that specifies which dependencies we would like to see in our container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies.create(pip_packages=[\"numpy\",\"onnxruntime\",\"azureml-core\"])\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we have Azure ML create the container. This step will likely take a few minutes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script = \"score.py\",\n", + " runtime = \"python\",\n", + " conda_file = \"myenv.yml\",\n", + " description = \"MNIST ONNX Demo\",\n", + " tags = {\"demo\": \"onnx\"}\n", + " )\n", + "\n", + "\n", + "image = ContainerImage.create(name = \"onnxmnistdemo\",\n", + " models = [model],\n", + " image_config = image_config,\n", + " workspace = ws)\n", + "\n", + "image.wait_for_creation(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you need to debug your code, the next line of code accesses the log file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(image.image_build_log_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're all set! Let's get our model chugging.\n", + "\n", + "### Deploy the container image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, \n", + " memory_gb = 1, \n", + " tags = {'demo': 'onnx'}, \n", + " description = 'web service for MNIST ONNX model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following cell will likely take a few minutes to run as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "from random import randint\n", + "\n", + "aci_service_name = 'onnx-demo-mnist'+str(randint(0,100))\n", + "print(\"Service\", aci_service_name)\n", + "\n", + "aci_service = Webservice.deploy_from_image(deployment_config = aciconfig,\n", + " image = image,\n", + " name = aci_service_name,\n", + " workspace = ws)\n", + "\n", + "aci_service.wait_for_deployment(True)\n", + "print(aci_service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case the deployment fails, you can check the logs. Make sure to delete your aci_service before trying again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if aci_service.state != 'Healthy':\n", + " # run this command for debugging.\n", + " print(aci_service.get_logs())\n", + " aci_service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Success!\n", + "\n", + "If you've made it this far, you've deployed a working web service that does handwritten digit classification using an ONNX model. You can get the URL for the webservice with the code below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(aci_service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are eventually done using the web service, remember to delete it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#aci_service.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "onnx" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.6" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "c899ddfc2b134ca9b89a4f278ac7c997": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.1.0", + "model_name": "LayoutModel", + "state": {} + }, + "d146cbdbd4e04710b3eebc15a66957ce": { + "model_module": "azureml_train_widgets", + "model_module_version": "1.0.0", + "model_name": "ShowRunDetailsModel", + "state": { + "child_runs_metrics": {}, + "compute_target_status": { + "current_node_count": 1, + "node_state_counts": { + "idleNodeCount": 1, + "leavingNodeCount": 0, + "preparingNodeCount": 0, + "runningNodeCount": 0, + "unusableNodeCount": 0 + }, + "provisioning_errors": null, + "provisioning_state": "Succeeded", + "requested_node_count": 1, + "scale_settings": { + "autoScale": { + "initialNodeCount": 0, + "maximumNodeCount": 4, + "minimumNodeCount": 0 + }, + "manual": null + }, + "vm_size": "STANDARD_NC6" + }, + "error": "", + "layout": "IPY_MODEL_c899ddfc2b134ca9b89a4f278ac7c997", + "run_id": "pytorch1-mnist_1537876563990", + "run_logs": "Uploading experiment status to history service.\nAdding run profile attachment azureml-logs/60_control_log.txt\nUploading experiment status to history service.\nAdding run profile attachment azureml-logs/80_driver_log.txt\nScript process exited with code 0\nUploading driver log...\nFinalizing run...\n\nDownloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\nDownloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\nDownloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\nDownloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\nProcessing...\nDone!\nTrain Epoch: 1 [0/60000 (0%)]\tLoss: 2.365850\nTrain Epoch: 1 [640/60000 (1%)]\tLoss: 2.305295\nTrain Epoch: 1 [1280/60000 (2%)]\tLoss: 2.301407\nTrain Epoch: 1 [1920/60000 (3%)]\tLoss: 2.316538\nTrain Epoch: 1 [2560/60000 (4%)]\tLoss: 2.255810\nTrain Epoch: 1 [3200/60000 (5%)]\tLoss: 2.224511\nTrain Epoch: 1 [3840/60000 (6%)]\tLoss: 2.216569\nTrain Epoch: 1 [4480/60000 (7%)]\tLoss: 2.181396\nTrain Epoch: 1 [5120/60000 (9%)]\tLoss: 2.116898\nTrain Epoch: 1 [5760/60000 (10%)]\tLoss: 2.045963\nTrain Epoch: 1 [6400/60000 (11%)]\tLoss: 1.973494\nTrain Epoch: 1 [7040/60000 (12%)]\tLoss: 1.968609\nTrain Epoch: 1 [7680/60000 (13%)]\tLoss: 1.787280\nTrain Epoch: 1 [8320/60000 (14%)]\tLoss: 1.735044\nTrain Epoch: 1 [8960/60000 (15%)]\tLoss: 1.680426\nTrain Epoch: 1 [9600/60000 (16%)]\tLoss: 1.486279\nTrain Epoch: 1 [10240/60000 (17%)]\tLoss: 1.545747\nTrain Epoch: 1 [10880/60000 (18%)]\tLoss: 1.193543\nTrain Epoch: 1 [11520/60000 (19%)]\tLoss: 1.652350\nTrain Epoch: 1 [12160/60000 (20%)]\tLoss: 0.982182\nTrain Epoch: 1 [12800/60000 (21%)]\tLoss: 1.331902\nTrain Epoch: 1 [13440/60000 (22%)]\tLoss: 1.089598\nTrain Epoch: 1 [14080/60000 (23%)]\tLoss: 0.998703\nTrain Epoch: 1 [14720/60000 (25%)]\tLoss: 0.992036\nTrain Epoch: 1 [15360/60000 (26%)]\tLoss: 0.979473\nTrain Epoch: 1 [16000/60000 (27%)]\tLoss: 1.141276\nTrain Epoch: 1 [16640/60000 (28%)]\tLoss: 0.836921\nTrain Epoch: 1 [17280/60000 (29%)]\tLoss: 0.764657\nTrain Epoch: 1 [17920/60000 (30%)]\tLoss: 0.826818\nTrain Epoch: 1 [18560/60000 (31%)]\tLoss: 0.837834\nTrain Epoch: 1 [19200/60000 (32%)]\tLoss: 0.899033\nTrain Epoch: 1 [19840/60000 (33%)]\tLoss: 0.868245\nTrain Epoch: 1 [20480/60000 (34%)]\tLoss: 0.930491\nTrain Epoch: 1 [21120/60000 (35%)]\tLoss: 0.795202\nTrain Epoch: 1 [21760/60000 (36%)]\tLoss: 0.575117\nTrain Epoch: 1 [22400/60000 (37%)]\tLoss: 0.577884\nTrain Epoch: 1 [23040/60000 (38%)]\tLoss: 0.708801\nTrain Epoch: 1 [23680/60000 (39%)]\tLoss: 0.927512\nTrain Epoch: 1 [24320/60000 (41%)]\tLoss: 0.598836\nTrain Epoch: 1 [24960/60000 (42%)]\tLoss: 0.944021\nTrain Epoch: 1 [25600/60000 (43%)]\tLoss: 0.811654\nTrain Epoch: 1 [26240/60000 (44%)]\tLoss: 0.590322\nTrain Epoch: 1 [26880/60000 (45%)]\tLoss: 0.555104\nTrain Epoch: 1 [27520/60000 (46%)]\tLoss: 0.795565\nTrain Epoch: 1 [28160/60000 (47%)]\tLoss: 0.603378\nTrain Epoch: 1 [28800/60000 (48%)]\tLoss: 0.552437\nTrain Epoch: 1 [29440/60000 (49%)]\tLoss: 0.662064\nTrain Epoch: 1 [30080/60000 (50%)]\tLoss: 0.682541\nTrain Epoch: 1 [30720/60000 (51%)]\tLoss: 0.659051\nTrain Epoch: 1 [31360/60000 (52%)]\tLoss: 0.781052\nTrain Epoch: 1 [32000/60000 (53%)]\tLoss: 0.595491\nTrain Epoch: 1 [32640/60000 (54%)]\tLoss: 0.367289\nTrain Epoch: 1 [33280/60000 (55%)]\tLoss: 0.459428\nTrain Epoch: 1 [33920/60000 (57%)]\tLoss: 0.819237\nTrain Epoch: 1 [34560/60000 (58%)]\tLoss: 0.773166\nTrain Epoch: 1 [35200/60000 (59%)]\tLoss: 0.557691\nTrain Epoch: 1 [35840/60000 (60%)]\tLoss: 0.854719\nTrain Epoch: 1 [36480/60000 (61%)]\tLoss: 0.497524\nTrain Epoch: 1 [37120/60000 (62%)]\tLoss: 0.582861\nTrain Epoch: 1 [37760/60000 (63%)]\tLoss: 0.839674\nTrain Epoch: 1 [38400/60000 (64%)]\tLoss: 0.557275\nTrain Epoch: 1 [39040/60000 (65%)]\tLoss: 0.419819\nTrain Epoch: 1 [39680/60000 (66%)]\tLoss: 0.694659\nTrain Epoch: 1 [40320/60000 (67%)]\tLoss: 0.678524\nTrain Epoch: 1 [40960/60000 (68%)]\tLoss: 0.514364\nTrain Epoch: 1 [41600/60000 (69%)]\tLoss: 0.400510\nTrain Epoch: 1 [42240/60000 (70%)]\tLoss: 0.526099\nTrain Epoch: 1 [42880/60000 (71%)]\tLoss: 0.387087\nTrain Epoch: 1 [43520/60000 (72%)]\tLoss: 0.730123\nTrain Epoch: 1 [44160/60000 (74%)]\tLoss: 0.678924\nTrain Epoch: 1 [44800/60000 (75%)]\tLoss: 0.425195\nTrain Epoch: 1 [45440/60000 (76%)]\tLoss: 0.656437\nTrain Epoch: 1 [46080/60000 (77%)]\tLoss: 0.348130\nTrain Epoch: 1 [46720/60000 (78%)]\tLoss: 0.487442\nTrain Epoch: 1 [47360/60000 (79%)]\tLoss: 0.649533\nTrain Epoch: 1 [48000/60000 (80%)]\tLoss: 0.541395\nTrain Epoch: 1 [48640/60000 (81%)]\tLoss: 0.464202\nTrain Epoch: 1 [49280/60000 (82%)]\tLoss: 0.750336\nTrain Epoch: 1 [49920/60000 (83%)]\tLoss: 0.548484\nTrain Epoch: 1 [50560/60000 (84%)]\tLoss: 0.421382\nTrain Epoch: 1 [51200/60000 (85%)]\tLoss: 0.680766\nTrain Epoch: 1 [51840/60000 (86%)]\tLoss: 0.483003\nTrain Epoch: 1 [52480/60000 (87%)]\tLoss: 0.610840\nTrain Epoch: 1 [53120/60000 (88%)]\tLoss: 0.483278\nTrain Epoch: 1 [53760/60000 (90%)]\tLoss: 0.553161\nTrain Epoch: 1 [54400/60000 (91%)]\tLoss: 0.465237\nTrain Epoch: 1 [55040/60000 (92%)]\tLoss: 0.558884\nTrain Epoch: 1 [55680/60000 (93%)]\tLoss: 0.528969\nTrain Epoch: 1 [56320/60000 (94%)]\tLoss: 0.370189\nTrain Epoch: 1 [56960/60000 (95%)]\tLoss: 0.379404\nTrain Epoch: 1 [57600/60000 (96%)]\tLoss: 0.263894\nTrain Epoch: 1 [58240/60000 (97%)]\tLoss: 0.432745\nTrain Epoch: 1 [58880/60000 (98%)]\tLoss: 0.455681\nTrain Epoch: 1 [59520/60000 (99%)]\tLoss: 0.483901\n/azureml-envs/azureml_de892a6d0f01a442356c3959dd42e13b/lib/python3.6/site-packages/torch/nn/functional.py:54: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n warnings.warn(warning.format(ret))\n\nTest set: Average loss: 0.2073, Accuracy: 9384/10000 (94%)\n\nTrain Epoch: 2 [0/60000 (0%)]\tLoss: 0.390797\nTrain Epoch: 2 [640/60000 (1%)]\tLoss: 0.214512\nTrain Epoch: 2 [1280/60000 (2%)]\tLoss: 0.226415\nTrain Epoch: 2 [1920/60000 (3%)]\tLoss: 0.491764\nTrain Epoch: 2 [2560/60000 (4%)]\tLoss: 0.333604\nTrain Epoch: 2 [3200/60000 (5%)]\tLoss: 0.514239\nTrain Epoch: 2 [3840/60000 (6%)]\tLoss: 0.430618\nTrain Epoch: 2 [4480/60000 (7%)]\tLoss: 0.579474\nTrain Epoch: 2 [5120/60000 (9%)]\tLoss: 0.259456\nTrain Epoch: 2 [5760/60000 (10%)]\tLoss: 0.651198\nTrain Epoch: 2 [6400/60000 (11%)]\tLoss: 0.338269\nTrain Epoch: 2 [7040/60000 (12%)]\tLoss: 0.335233\nTrain Epoch: 2 [7680/60000 (13%)]\tLoss: 0.518132\nTrain Epoch: 2 [8320/60000 (14%)]\tLoss: 0.363488\nTrain Epoch: 2 [8960/60000 (15%)]\tLoss: 0.437092\nTrain Epoch: 2 [9600/60000 (16%)]\tLoss: 0.362660\nTrain Epoch: 2 [10240/60000 (17%)]\tLoss: 0.432337\nTrain Epoch: 2 [10880/60000 (18%)]\tLoss: 0.360611\nTrain Epoch: 2 [11520/60000 (19%)]\tLoss: 0.305427\nTrain Epoch: 2 [12160/60000 (20%)]\tLoss: 0.347859\nTrain Epoch: 2 [12800/60000 (21%)]\tLoss: 0.408770\nTrain Epoch: 2 [13440/60000 (22%)]\tLoss: 0.469975\nTrain Epoch: 2 [14080/60000 (23%)]\tLoss: 0.673716\nTrain Epoch: 2 [14720/60000 (25%)]\tLoss: 0.388876\nTrain Epoch: 2 [15360/60000 (26%)]\tLoss: 0.462371\nTrain Epoch: 2 [16000/60000 (27%)]\tLoss: 0.530107\nTrain Epoch: 2 [16640/60000 (28%)]\tLoss: 0.448767\nTrain Epoch: 2 [17280/60000 (29%)]\tLoss: 0.412764\nTrain Epoch: 2 [17920/60000 (30%)]\tLoss: 0.301494\nTrain Epoch: 2 [18560/60000 (31%)]\tLoss: 0.465599\nTrain Epoch: 2 [19200/60000 (32%)]\tLoss: 0.434249\nTrain Epoch: 2 [19840/60000 (33%)]\tLoss: 0.324006\nTrain Epoch: 2 [20480/60000 (34%)]\tLoss: 0.447446\nTrain Epoch: 2 [21120/60000 (35%)]\tLoss: 0.291222\nTrain Epoch: 2 [21760/60000 (36%)]\tLoss: 0.557065\nTrain Epoch: 2 [22400/60000 (37%)]\tLoss: 0.552659\nTrain Epoch: 2 [23040/60000 (38%)]\tLoss: 0.378901\nTrain Epoch: 2 [23680/60000 (39%)]\tLoss: 0.360550\nTrain Epoch: 2 [24320/60000 (41%)]\tLoss: 0.283795\nTrain Epoch: 2 [24960/60000 (42%)]\tLoss: 0.475816\nTrain Epoch: 2 [25600/60000 (43%)]\tLoss: 0.283652\nTrain Epoch: 2 [26240/60000 (44%)]\tLoss: 0.276265\nTrain Epoch: 2 [26880/60000 (45%)]\tLoss: 0.527902\nTrain Epoch: 2 [27520/60000 (46%)]\tLoss: 0.437130\nTrain Epoch: 2 [28160/60000 (47%)]\tLoss: 0.277132\nTrain Epoch: 2 [28800/60000 (48%)]\tLoss: 0.471580\nTrain Epoch: 2 [29440/60000 (49%)]\tLoss: 0.380154\nTrain Epoch: 2 [30080/60000 (50%)]\tLoss: 0.232072\nTrain Epoch: 2 [30720/60000 (51%)]\tLoss: 0.366567\nTrain Epoch: 2 [31360/60000 (52%)]\tLoss: 0.469628\nTrain Epoch: 2 [32000/60000 (53%)]\tLoss: 0.440017\nTrain Epoch: 2 [32640/60000 (54%)]\tLoss: 0.421814\nTrain Epoch: 2 [33280/60000 (55%)]\tLoss: 0.367687\nTrain Epoch: 2 [33920/60000 (57%)]\tLoss: 0.448384\nTrain Epoch: 2 [34560/60000 (58%)]\tLoss: 0.550283\nTrain Epoch: 2 [35200/60000 (59%)]\tLoss: 0.609798\nTrain Epoch: 2 [35840/60000 (60%)]\tLoss: 0.461334\nTrain Epoch: 2 [36480/60000 (61%)]\tLoss: 0.443838\nTrain Epoch: 2 [37120/60000 (62%)]\tLoss: 0.306666\nTrain Epoch: 2 [37760/60000 (63%)]\tLoss: 0.432083\nTrain Epoch: 2 [38400/60000 (64%)]\tLoss: 0.277025\nTrain Epoch: 2 [39040/60000 (65%)]\tLoss: 0.298752\nTrain Epoch: 2 [39680/60000 (66%)]\tLoss: 0.427435\nTrain Epoch: 2 [40320/60000 (67%)]\tLoss: 0.374736\nTrain Epoch: 2 [40960/60000 (68%)]\tLoss: 0.246496\nTrain Epoch: 2 [41600/60000 (69%)]\tLoss: 0.662259\nTrain Epoch: 2 [42240/60000 (70%)]\tLoss: 0.497635\nTrain Epoch: 2 [42880/60000 (71%)]\tLoss: 0.237556\nTrain Epoch: 2 [43520/60000 (72%)]\tLoss: 0.194535\nTrain Epoch: 2 [44160/60000 (74%)]\tLoss: 0.258943\nTrain Epoch: 2 [44800/60000 (75%)]\tLoss: 0.437360\nTrain Epoch: 2 [45440/60000 (76%)]\tLoss: 0.355489\nTrain Epoch: 2 [46080/60000 (77%)]\tLoss: 0.335020\nTrain Epoch: 2 [46720/60000 (78%)]\tLoss: 0.565189\nTrain Epoch: 2 [47360/60000 (79%)]\tLoss: 0.430366\nTrain Epoch: 2 [48000/60000 (80%)]\tLoss: 0.266303\nTrain Epoch: 2 [48640/60000 (81%)]\tLoss: 0.172954\nTrain Epoch: 2 [49280/60000 (82%)]\tLoss: 0.245803\nTrain Epoch: 2 [49920/60000 (83%)]\tLoss: 0.426530\nTrain Epoch: 2 [50560/60000 (84%)]\tLoss: 0.468984\nTrain Epoch: 2 [51200/60000 (85%)]\tLoss: 0.370892\nTrain Epoch: 2 [51840/60000 (86%)]\tLoss: 0.300021\nTrain Epoch: 2 [52480/60000 (87%)]\tLoss: 0.392199\nTrain Epoch: 2 [53120/60000 (88%)]\tLoss: 0.510658\nTrain Epoch: 2 [53760/60000 (90%)]\tLoss: 0.376290\nTrain Epoch: 2 [54400/60000 (91%)]\tLoss: 0.273752\nTrain Epoch: 2 [55040/60000 (92%)]\tLoss: 0.234505\nTrain Epoch: 2 [55680/60000 (93%)]\tLoss: 0.610978\nTrain Epoch: 2 [56320/60000 (94%)]\tLoss: 0.154850\nTrain Epoch: 2 [56960/60000 (95%)]\tLoss: 0.374254\nTrain Epoch: 2 [57600/60000 (96%)]\tLoss: 0.292167\nTrain Epoch: 2 [58240/60000 (97%)]\tLoss: 0.478376\nTrain Epoch: 2 [58880/60000 (98%)]\tLoss: 0.303128\nTrain Epoch: 2 [59520/60000 (99%)]\tLoss: 0.376779\n\nTest set: Average loss: 0.1297, Accuracy: 9597/10000 (96%)\n\nTrain Epoch: 3 [0/60000 (0%)]\tLoss: 0.450588\nTrain Epoch: 3 [640/60000 (1%)]\tLoss: 0.361118\nTrain Epoch: 3 [1280/60000 (2%)]\tLoss: 0.374497\nTrain Epoch: 3 [1920/60000 (3%)]\tLoss: 0.312127\nTrain Epoch: 3 [2560/60000 (4%)]\tLoss: 0.353896\nTrain Epoch: 3 [3200/60000 (5%)]\tLoss: 0.320840\nTrain Epoch: 3 [3840/60000 (6%)]\tLoss: 0.218477\nTrain Epoch: 3 [4480/60000 (7%)]\tLoss: 0.295629\nTrain Epoch: 3 [5120/60000 (9%)]\tLoss: 0.339400\nTrain Epoch: 3 [5760/60000 (10%)]\tLoss: 0.170357\nTrain Epoch: 3 [6400/60000 (11%)]\tLoss: 0.416447\nTrain Epoch: 3 [7040/60000 (12%)]\tLoss: 0.320326\nTrain Epoch: 3 [7680/60000 (13%)]\tLoss: 0.318410\nTrain Epoch: 3 [8320/60000 (14%)]\tLoss: 0.384793\nTrain Epoch: 3 [8960/60000 (15%)]\tLoss: 0.343415\nTrain Epoch: 3 [9600/60000 (16%)]\tLoss: 0.284627\nTrain Epoch: 3 [10240/60000 (17%)]\tLoss: 0.151805\nTrain Epoch: 3 [10880/60000 (18%)]\tLoss: 0.401332\nTrain Epoch: 3 [11520/60000 (19%)]\tLoss: 0.253159\nTrain Epoch: 3 [12160/60000 (20%)]\tLoss: 0.339563\nTrain Epoch: 3 [12800/60000 (21%)]\tLoss: 0.237430\nTrain Epoch: 3 [13440/60000 (22%)]\tLoss: 0.311402\nTrain Epoch: 3 [14080/60000 (23%)]\tLoss: 0.241667\nTrain Epoch: 3 [14720/60000 (25%)]\tLoss: 0.265347\nTrain Epoch: 3 [15360/60000 (26%)]\tLoss: 0.367453\nTrain Epoch: 3 [16000/60000 (27%)]\tLoss: 0.190671\nTrain Epoch: 3 [16640/60000 (28%)]\tLoss: 0.313052\nTrain Epoch: 3 [17280/60000 (29%)]\tLoss: 0.368028\nTrain Epoch: 3 [17920/60000 (30%)]\tLoss: 0.268639\nTrain Epoch: 3 [18560/60000 (31%)]\tLoss: 0.341066\nTrain Epoch: 3 [19200/60000 (32%)]\tLoss: 0.457961\nTrain Epoch: 3 [19840/60000 (33%)]\tLoss: 0.732400\nTrain Epoch: 3 [20480/60000 (34%)]\tLoss: 0.330679\nTrain Epoch: 3 [21120/60000 (35%)]\tLoss: 0.279778\nTrain Epoch: 3 [21760/60000 (36%)]\tLoss: 0.305972\nTrain Epoch: 3 [22400/60000 (37%)]\tLoss: 0.402131\nTrain Epoch: 3 [23040/60000 (38%)]\tLoss: 0.345302\nTrain Epoch: 3 [23680/60000 (39%)]\tLoss: 0.251726\nTrain Epoch: 3 [24320/60000 (41%)]\tLoss: 0.152062\nTrain Epoch: 3 [24960/60000 (42%)]\tLoss: 0.149305\nTrain Epoch: 3 [25600/60000 (43%)]\tLoss: 0.364678\nTrain Epoch: 3 [26240/60000 (44%)]\tLoss: 0.067165\nTrain Epoch: 3 [26880/60000 (45%)]\tLoss: 0.229927\nTrain Epoch: 3 [27520/60000 (46%)]\tLoss: 0.236894\nTrain Epoch: 3 [28160/60000 (47%)]\tLoss: 0.486373\nTrain Epoch: 3 [28800/60000 (48%)]\tLoss: 0.453053\nTrain Epoch: 3 [29440/60000 (49%)]\tLoss: 0.283823\nTrain Epoch: 3 [30080/60000 (50%)]\tLoss: 0.185119\nTrain Epoch: 3 [30720/60000 (51%)]\tLoss: 0.381274\nTrain Epoch: 3 [31360/60000 (52%)]\tLoss: 0.394533\nTrain Epoch: 3 [32000/60000 (53%)]\tLoss: 0.392791\nTrain Epoch: 3 [32640/60000 (54%)]\tLoss: 0.230672\nTrain Epoch: 3 [33280/60000 (55%)]\tLoss: 0.393846\nTrain Epoch: 3 [33920/60000 (57%)]\tLoss: 0.676802\nTrain Epoch: 3 [34560/60000 (58%)]\tLoss: 0.160434\nTrain Epoch: 3 [35200/60000 (59%)]\tLoss: 0.211318\nTrain Epoch: 3 [35840/60000 (60%)]\tLoss: 0.245763\nTrain Epoch: 3 [36480/60000 (61%)]\tLoss: 0.198454\nTrain Epoch: 3 [37120/60000 (62%)]\tLoss: 0.243536\nTrain Epoch: 3 [37760/60000 (63%)]\tLoss: 0.151804\nTrain Epoch: 3 [38400/60000 (64%)]\tLoss: 0.176093\nTrain Epoch: 3 [39040/60000 (65%)]\tLoss: 0.237228\nTrain Epoch: 3 [39680/60000 (66%)]\tLoss: 0.146441\nTrain Epoch: 3 [40320/60000 (67%)]\tLoss: 0.345162\nTrain Epoch: 3 [40960/60000 (68%)]\tLoss: 0.400378\nTrain Epoch: 3 [41600/60000 (69%)]\tLoss: 0.259152\nTrain Epoch: 3 [42240/60000 (70%)]\tLoss: 0.569659\nTrain Epoch: 3 [42880/60000 (71%)]\tLoss: 0.166401\nTrain Epoch: 3 [43520/60000 (72%)]\tLoss: 0.220592\nTrain Epoch: 3 [44160/60000 (74%)]\tLoss: 0.303227\nTrain Epoch: 3 [44800/60000 (75%)]\tLoss: 0.193691\nTrain Epoch: 3 [45440/60000 (76%)]\tLoss: 0.257408\nTrain Epoch: 3 [46080/60000 (77%)]\tLoss: 0.391211\nTrain Epoch: 3 [46720/60000 (78%)]\tLoss: 0.419841\nTrain Epoch: 3 [47360/60000 (79%)]\tLoss: 0.121861\nTrain Epoch: 3 [48000/60000 (80%)]\tLoss: 0.176442\nTrain Epoch: 3 [48640/60000 (81%)]\tLoss: 0.534631\nTrain Epoch: 3 [49280/60000 (82%)]\tLoss: 0.296596\nTrain Epoch: 3 [49920/60000 (83%)]\tLoss: 0.190096\nTrain Epoch: 3 [50560/60000 (84%)]\tLoss: 0.360826\nTrain Epoch: 3 [51200/60000 (85%)]\tLoss: 0.427482\nTrain Epoch: 3 [51840/60000 (86%)]\tLoss: 0.251076\nTrain Epoch: 3 [52480/60000 (87%)]\tLoss: 0.319904\nTrain Epoch: 3 [53120/60000 (88%)]\tLoss: 0.228778\nTrain Epoch: 3 [53760/60000 (90%)]\tLoss: 0.180340\nTrain Epoch: 3 [54400/60000 (91%)]\tLoss: 0.236512\nTrain Epoch: 3 [55040/60000 (92%)]\tLoss: 0.206779\nTrain Epoch: 3 [55680/60000 (93%)]\tLoss: 0.323677\nTrain Epoch: 3 [56320/60000 (94%)]\tLoss: 0.406382\nTrain Epoch: 3 [56960/60000 (95%)]\tLoss: 0.426768\nTrain Epoch: 3 [57600/60000 (96%)]\tLoss: 0.595419\nTrain Epoch: 3 [58240/60000 (97%)]\tLoss: 0.175457\nTrain Epoch: 3 [58880/60000 (98%)]\tLoss: 0.301019\nTrain Epoch: 3 [59520/60000 (99%)]\tLoss: 0.419139\n\nTest set: Average loss: 0.1049, Accuracy: 9686/10000 (97%)\n\nTrain Epoch: 4 [0/60000 (0%)]\tLoss: 0.352631\nTrain Epoch: 4 [640/60000 (1%)]\tLoss: 0.343671\nTrain Epoch: 4 [1280/60000 (2%)]\tLoss: 0.170439\nTrain Epoch: 4 [1920/60000 (3%)]\tLoss: 0.289486\nTrain Epoch: 4 [2560/60000 (4%)]\tLoss: 0.096597\nTrain Epoch: 4 [3200/60000 (5%)]\tLoss: 0.263759\nTrain Epoch: 4 [3840/60000 (6%)]\tLoss: 0.369941\nTrain Epoch: 4 [4480/60000 (7%)]\tLoss: 0.326594\nTrain Epoch: 4 [5120/60000 (9%)]\tLoss: 0.174094\nTrain Epoch: 4 [5760/60000 (10%)]\tLoss: 0.442069\nTrain Epoch: 4 [6400/60000 (11%)]\tLoss: 0.179002\nTrain Epoch: 4 [7040/60000 (12%)]\tLoss: 0.292742\nTrain Epoch: 4 [7680/60000 (13%)]\tLoss: 0.209898\nTrain Epoch: 4 [8320/60000 (14%)]\tLoss: 0.401671\nTrain Epoch: 4 [8960/60000 (15%)]\tLoss: 0.205146\nTrain Epoch: 4 [9600/60000 (16%)]\tLoss: 0.250836\nTrain Epoch: 4 [10240/60000 (17%)]\tLoss: 0.156622\nTrain Epoch: 4 [10880/60000 (18%)]\tLoss: 0.214578\nTrain Epoch: 4 [11520/60000 (19%)]\tLoss: 0.155916\nTrain Epoch: 4 [12160/60000 (20%)]\tLoss: 0.416294\nTrain Epoch: 4 [12800/60000 (21%)]\tLoss: 0.197429\nTrain Epoch: 4 [13440/60000 (22%)]\tLoss: 0.154103\nTrain Epoch: 4 [14080/60000 (23%)]\tLoss: 0.377950\nTrain Epoch: 4 [14720/60000 (25%)]\tLoss: 0.338084\nTrain Epoch: 4 [15360/60000 (26%)]\tLoss: 0.242834\nTrain Epoch: 4 [16000/60000 (27%)]\tLoss: 0.139219\nTrain Epoch: 4 [16640/60000 (28%)]\tLoss: 0.242067\nTrain Epoch: 4 [17280/60000 (29%)]\tLoss: 0.189929\nTrain Epoch: 4 [17920/60000 (30%)]\tLoss: 0.358215\nTrain Epoch: 4 [18560/60000 (31%)]\tLoss: 0.354969\nTrain Epoch: 4 [19200/60000 (32%)]\tLoss: 0.303644\nTrain Epoch: 4 [19840/60000 (33%)]\tLoss: 0.322343\nTrain Epoch: 4 [20480/60000 (34%)]\tLoss: 0.225422\nTrain Epoch: 4 [21120/60000 (35%)]\tLoss: 0.614347\nTrain Epoch: 4 [21760/60000 (36%)]\tLoss: 0.448674\nTrain Epoch: 4 [22400/60000 (37%)]\tLoss: 0.362976\nTrain Epoch: 4 [23040/60000 (38%)]\tLoss: 0.100357\nTrain Epoch: 4 [23680/60000 (39%)]\tLoss: 0.289331\nTrain Epoch: 4 [24320/60000 (41%)]\tLoss: 0.405818\nTrain Epoch: 4 [24960/60000 (42%)]\tLoss: 0.212617\nTrain Epoch: 4 [25600/60000 (43%)]\tLoss: 0.348597\nTrain Epoch: 4 [26240/60000 (44%)]\tLoss: 0.351009\nTrain Epoch: 4 [26880/60000 (45%)]\tLoss: 0.341456\nTrain Epoch: 4 [27520/60000 (46%)]\tLoss: 0.297527\nTrain Epoch: 4 [28160/60000 (47%)]\tLoss: 0.281190\nTrain Epoch: 4 [28800/60000 (48%)]\tLoss: 0.187359\nTrain Epoch: 4 [29440/60000 (49%)]\tLoss: 0.178844\nTrain Epoch: 4 [30080/60000 (50%)]\tLoss: 0.201243\nTrain Epoch: 4 [30720/60000 (51%)]\tLoss: 0.305701\nTrain Epoch: 4 [31360/60000 (52%)]\tLoss: 0.370592\nTrain Epoch: 4 [32000/60000 (53%)]\tLoss: 0.241955\nTrain Epoch: 4 [32640/60000 (54%)]\tLoss: 0.278765\nTrain Epoch: 4 [33280/60000 (55%)]\tLoss: 0.284302\nTrain Epoch: 4 [33920/60000 (57%)]\tLoss: 0.337426\nTrain Epoch: 4 [34560/60000 (58%)]\tLoss: 0.277304\nTrain Epoch: 4 [35200/60000 (59%)]\tLoss: 0.221228\nTrain Epoch: 4 [35840/60000 (60%)]\tLoss: 0.150985\nTrain Epoch: 4 [36480/60000 (61%)]\tLoss: 0.312087\nTrain Epoch: 4 [37120/60000 (62%)]\tLoss: 0.170111\nTrain Epoch: 4 [37760/60000 (63%)]\tLoss: 0.291135\nTrain Epoch: 4 [38400/60000 (64%)]\tLoss: 0.160971\nTrain Epoch: 4 [39040/60000 (65%)]\tLoss: 0.390679\nTrain Epoch: 4 [39680/60000 (66%)]\tLoss: 0.434802\nTrain Epoch: 4 [40320/60000 (67%)]\tLoss: 0.281539\nTrain Epoch: 4 [40960/60000 (68%)]\tLoss: 0.172577\nTrain Epoch: 4 [41600/60000 (69%)]\tLoss: 0.348624\nTrain Epoch: 4 [42240/60000 (70%)]\tLoss: 0.380416\nTrain Epoch: 4 [42880/60000 (71%)]\tLoss: 0.483520\nTrain Epoch: 4 [43520/60000 (72%)]\tLoss: 0.216825\nTrain Epoch: 4 [44160/60000 (74%)]\tLoss: 0.320874\nTrain Epoch: 4 [44800/60000 (75%)]\tLoss: 0.213358\nTrain Epoch: 4 [45440/60000 (76%)]\tLoss: 0.218650\nTrain Epoch: 4 [46080/60000 (77%)]\tLoss: 0.221090\nTrain Epoch: 4 [46720/60000 (78%)]\tLoss: 0.325981\nTrain Epoch: 4 [47360/60000 (79%)]\tLoss: 0.283184\nTrain Epoch: 4 [48000/60000 (80%)]\tLoss: 0.072845\nTrain Epoch: 4 [48640/60000 (81%)]\tLoss: 0.206940\nTrain Epoch: 4 [49280/60000 (82%)]\tLoss: 0.423454\nTrain Epoch: 4 [49920/60000 (83%)]\tLoss: 0.475285\nTrain Epoch: 4 [50560/60000 (84%)]\tLoss: 0.128978\nTrain Epoch: 4 [51200/60000 (85%)]\tLoss: 0.195609\nTrain Epoch: 4 [51840/60000 (86%)]\tLoss: 0.125730\nTrain Epoch: 4 [52480/60000 (87%)]\tLoss: 0.137783\nTrain Epoch: 4 [53120/60000 (88%)]\tLoss: 0.375247\nTrain Epoch: 4 [53760/60000 (90%)]\tLoss: 0.243497\nTrain Epoch: 4 [54400/60000 (91%)]\tLoss: 0.236100\nTrain Epoch: 4 [55040/60000 (92%)]\tLoss: 0.266795\nTrain Epoch: 4 [55680/60000 (93%)]\tLoss: 0.229095\nTrain Epoch: 4 [56320/60000 (94%)]\tLoss: 0.167610\nTrain Epoch: 4 [56960/60000 (95%)]\tLoss: 0.240640\nTrain Epoch: 4 [57600/60000 (96%)]\tLoss: 0.153999\nTrain Epoch: 4 [58240/60000 (97%)]\tLoss: 0.753790\nTrain Epoch: 4 [58880/60000 (98%)]\tLoss: 0.143998\nTrain Epoch: 4 [59520/60000 (99%)]\tLoss: 0.310583\n\nTest set: Average loss: 0.0843, Accuracy: 9739/10000 (97%)\n\nTrain Epoch: 5 [0/60000 (0%)]\tLoss: 0.227892\nTrain Epoch: 5 [640/60000 (1%)]\tLoss: 0.162702\nTrain Epoch: 5 [1280/60000 (2%)]\tLoss: 0.227571\nTrain Epoch: 5 [1920/60000 (3%)]\tLoss: 0.148511\nTrain Epoch: 5 [2560/60000 (4%)]\tLoss: 0.187414\nTrain Epoch: 5 [3200/60000 (5%)]\tLoss: 0.194418\nTrain Epoch: 5 [3840/60000 (6%)]\tLoss: 0.276495\nTrain Epoch: 5 [4480/60000 (7%)]\tLoss: 0.268769\nTrain Epoch: 5 [5120/60000 (9%)]\tLoss: 0.163968\nTrain Epoch: 5 [5760/60000 (10%)]\tLoss: 0.349296\nTrain Epoch: 5 [6400/60000 (11%)]\tLoss: 0.217248\nTrain Epoch: 5 [7040/60000 (12%)]\tLoss: 0.195263\nTrain Epoch: 5 [7680/60000 (13%)]\tLoss: 0.339447\nTrain Epoch: 5 [8320/60000 (14%)]\tLoss: 0.224461\nTrain Epoch: 5 [8960/60000 (15%)]\tLoss: 0.095605\nTrain Epoch: 5 [9600/60000 (16%)]\tLoss: 0.196891\nTrain Epoch: 5 [10240/60000 (17%)]\tLoss: 0.218742\nTrain Epoch: 5 [10880/60000 (18%)]\tLoss: 0.071347\nTrain Epoch: 5 [11520/60000 (19%)]\tLoss: 0.403286\nTrain Epoch: 5 [12160/60000 (20%)]\tLoss: 0.149740\nTrain Epoch: 5 [12800/60000 (21%)]\tLoss: 0.160939\nTrain Epoch: 5 [13440/60000 (22%)]\tLoss: 0.236512\nTrain Epoch: 5 [14080/60000 (23%)]\tLoss: 0.348727\nTrain Epoch: 5 [14720/60000 (25%)]\tLoss: 0.190054\nTrain Epoch: 5 [15360/60000 (26%)]\tLoss: 0.272029\nTrain Epoch: 5 [16000/60000 (27%)]\tLoss: 0.427739\nTrain Epoch: 5 [16640/60000 (28%)]\tLoss: 0.322332\nTrain Epoch: 5 [17280/60000 (29%)]\tLoss: 0.141410\nTrain Epoch: 5 [17920/60000 (30%)]\tLoss: 0.098900\nTrain Epoch: 5 [18560/60000 (31%)]\tLoss: 0.252387\nTrain Epoch: 5 [19200/60000 (32%)]\tLoss: 0.182150\nTrain Epoch: 5 [19840/60000 (33%)]\tLoss: 0.133239\nTrain Epoch: 5 [20480/60000 (34%)]\tLoss: 0.126683\nTrain Epoch: 5 [21120/60000 (35%)]\tLoss: 0.370189\nTrain Epoch: 5 [21760/60000 (36%)]\tLoss: 0.162514\nTrain Epoch: 5 [22400/60000 (37%)]\tLoss: 0.272352\nTrain Epoch: 5 [23040/60000 (38%)]\tLoss: 0.298543\nTrain Epoch: 5 [23680/60000 (39%)]\tLoss: 0.235891\nTrain Epoch: 5 [24320/60000 (41%)]\tLoss: 0.187710\nTrain Epoch: 5 [24960/60000 (42%)]\tLoss: 0.185363\nTrain Epoch: 5 [25600/60000 (43%)]\tLoss: 0.193369\nTrain Epoch: 5 [26240/60000 (44%)]\tLoss: 0.155984\nTrain Epoch: 5 [26880/60000 (45%)]\tLoss: 0.388923\nTrain Epoch: 5 [27520/60000 (46%)]\tLoss: 0.192868\nTrain Epoch: 5 [28160/60000 (47%)]\tLoss: 0.535787\nTrain Epoch: 5 [28800/60000 (48%)]\tLoss: 0.161020\nTrain Epoch: 5 [29440/60000 (49%)]\tLoss: 0.242179\nTrain Epoch: 5 [30080/60000 (50%)]\tLoss: 0.136554\nTrain Epoch: 5 [30720/60000 (51%)]\tLoss: 0.190672\nTrain Epoch: 5 [31360/60000 (52%)]\tLoss: 0.118027\nTrain Epoch: 5 [32000/60000 (53%)]\tLoss: 0.278750\nTrain Epoch: 5 [32640/60000 (54%)]\tLoss: 0.418058\nTrain Epoch: 5 [33280/60000 (55%)]\tLoss: 0.287063\nTrain Epoch: 5 [33920/60000 (57%)]\tLoss: 0.279596\nTrain Epoch: 5 [34560/60000 (58%)]\tLoss: 0.181579\nTrain Epoch: 5 [35200/60000 (59%)]\tLoss: 0.443592\nTrain Epoch: 5 [35840/60000 (60%)]\tLoss: 0.095470\nTrain Epoch: 5 [36480/60000 (61%)]\tLoss: 0.277385\nTrain Epoch: 5 [37120/60000 (62%)]\tLoss: 0.263358\nTrain Epoch: 5 [37760/60000 (63%)]\tLoss: 0.190867\nTrain Epoch: 5 [38400/60000 (64%)]\tLoss: 0.176580\nTrain Epoch: 5 [39040/60000 (65%)]\tLoss: 0.360235\nTrain Epoch: 5 [39680/60000 (66%)]\tLoss: 0.172416\nTrain Epoch: 5 [40320/60000 (67%)]\tLoss: 0.174126\nTrain Epoch: 5 [40960/60000 (68%)]\tLoss: 0.202162\nTrain Epoch: 5 [41600/60000 (69%)]\tLoss: 0.196991\nTrain Epoch: 5 [42240/60000 (70%)]\tLoss: 0.224622\nTrain Epoch: 5 [42880/60000 (71%)]\tLoss: 0.180406\nTrain Epoch: 5 [43520/60000 (72%)]\tLoss: 0.060447\nTrain Epoch: 5 [44160/60000 (74%)]\tLoss: 0.322497\nTrain Epoch: 5 [44800/60000 (75%)]\tLoss: 0.239324\nTrain Epoch: 5 [45440/60000 (76%)]\tLoss: 0.348920\nTrain Epoch: 5 [46080/60000 (77%)]\tLoss: 0.240017\nTrain Epoch: 5 [46720/60000 (78%)]\tLoss: 0.237575\nTrain Epoch: 5 [47360/60000 (79%)]\tLoss: 0.142648\nTrain Epoch: 5 [48000/60000 (80%)]\tLoss: 0.227562\nTrain Epoch: 5 [48640/60000 (81%)]\tLoss: 0.254358\nTrain Epoch: 5 [49280/60000 (82%)]\tLoss: 0.135818\nTrain Epoch: 5 [49920/60000 (83%)]\tLoss: 0.386120\nTrain Epoch: 5 [50560/60000 (84%)]\tLoss: 0.328150\nTrain Epoch: 5 [51200/60000 (85%)]\tLoss: 0.276833\nTrain Epoch: 5 [51840/60000 (86%)]\tLoss: 0.308869\nTrain Epoch: 5 [52480/60000 (87%)]\tLoss: 0.246442\nTrain Epoch: 5 [53120/60000 (88%)]\tLoss: 0.240874\nTrain Epoch: 5 [53760/60000 (90%)]\tLoss: 0.114337\nTrain Epoch: 5 [54400/60000 (91%)]\tLoss: 0.217325\nTrain Epoch: 5 [55040/60000 (92%)]\tLoss: 0.223010\nTrain Epoch: 5 [55680/60000 (93%)]\tLoss: 0.138459\nTrain Epoch: 5 [56320/60000 (94%)]\tLoss: 0.283678\nTrain Epoch: 5 [56960/60000 (95%)]\tLoss: 0.158834\nTrain Epoch: 5 [57600/60000 (96%)]\tLoss: 0.164267\nTrain Epoch: 5 [58240/60000 (97%)]\tLoss: 0.290795\nTrain Epoch: 5 [58880/60000 (98%)]\tLoss: 0.451639\nTrain Epoch: 5 [59520/60000 (99%)]\tLoss: 0.349018\n\nTest set: Average loss: 0.0797, Accuracy: 9758/10000 (98%)\n\nTrain Epoch: 6 [0/60000 (0%)]\tLoss: 0.311334\nTrain Epoch: 6 [640/60000 (1%)]\tLoss: 0.129143\nTrain Epoch: 6 [1280/60000 (2%)]\tLoss: 0.227222\nTrain Epoch: 6 [1920/60000 (3%)]\tLoss: 0.157591\nTrain Epoch: 6 [2560/60000 (4%)]\tLoss: 0.205490\nTrain Epoch: 6 [3200/60000 (5%)]\tLoss: 0.421089\nTrain Epoch: 6 [3840/60000 (6%)]\tLoss: 0.157544\nTrain Epoch: 6 [4480/60000 (7%)]\tLoss: 0.087023\nTrain Epoch: 6 [5120/60000 (9%)]\tLoss: 0.130669\nTrain Epoch: 6 [5760/60000 (10%)]\tLoss: 0.059450\nTrain Epoch: 6 [6400/60000 (11%)]\tLoss: 0.121786\nTrain Epoch: 6 [7040/60000 (12%)]\tLoss: 0.177859\nTrain Epoch: 6 [7680/60000 (13%)]\tLoss: 0.217464\nTrain Epoch: 6 [8320/60000 (14%)]\tLoss: 0.183426\nTrain Epoch: 6 [8960/60000 (15%)]\tLoss: 0.237282\nTrain Epoch: 6 [9600/60000 (16%)]\tLoss: 0.210031\nTrain Epoch: 6 [10240/60000 (17%)]\tLoss: 0.256110\nTrain Epoch: 6 [10880/60000 (18%)]\tLoss: 0.155481\nTrain Epoch: 6 [11520/60000 (19%)]\tLoss: 0.166967\nTrain Epoch: 6 [12160/60000 (20%)]\tLoss: 0.144590\nTrain Epoch: 6 [12800/60000 (21%)]\tLoss: 0.229593\nTrain Epoch: 6 [13440/60000 (22%)]\tLoss: 0.092102\nTrain Epoch: 6 [14080/60000 (23%)]\tLoss: 0.144247\nTrain Epoch: 6 [14720/60000 (25%)]\tLoss: 0.459083\nTrain Epoch: 6 [15360/60000 (26%)]\tLoss: 0.174974\nTrain Epoch: 6 [16000/60000 (27%)]\tLoss: 0.146433\nTrain Epoch: 6 [16640/60000 (28%)]\tLoss: 0.291392\nTrain Epoch: 6 [17280/60000 (29%)]\tLoss: 0.203127\nTrain Epoch: 6 [17920/60000 (30%)]\tLoss: 0.255063\nTrain Epoch: 6 [18560/60000 (31%)]\tLoss: 0.167576\nTrain Epoch: 6 [19200/60000 (32%)]\tLoss: 0.171914\nTrain Epoch: 6 [19840/60000 (33%)]\tLoss: 0.215950\nTrain Epoch: 6 [20480/60000 (34%)]\tLoss: 0.246624\nTrain Epoch: 6 [21120/60000 (35%)]\tLoss: 0.242730\nTrain Epoch: 6 [21760/60000 (36%)]\tLoss: 0.345666\nTrain Epoch: 6 [22400/60000 (37%)]\tLoss: 0.229078\nTrain Epoch: 6 [23040/60000 (38%)]\tLoss: 0.283169\nTrain Epoch: 6 [23680/60000 (39%)]\tLoss: 0.246430\nTrain Epoch: 6 [24320/60000 (41%)]\tLoss: 0.217211\nTrain Epoch: 6 [24960/60000 (42%)]\tLoss: 0.168141\nTrain Epoch: 6 [25600/60000 (43%)]\tLoss: 0.297715\nTrain Epoch: 6 [26240/60000 (44%)]\tLoss: 0.200130\nTrain Epoch: 6 [26880/60000 (45%)]\tLoss: 0.344390\nTrain Epoch: 6 [27520/60000 (46%)]\tLoss: 0.246202\nTrain Epoch: 6 [28160/60000 (47%)]\tLoss: 0.272422\nTrain Epoch: 6 [28800/60000 (48%)]\tLoss: 0.117001\nTrain Epoch: 6 [29440/60000 (49%)]\tLoss: 0.246031\nTrain Epoch: 6 [30080/60000 (50%)]\tLoss: 0.138119\nTrain Epoch: 6 [30720/60000 (51%)]\tLoss: 0.214345\nTrain Epoch: 6 [31360/60000 (52%)]\tLoss: 0.134483\nTrain Epoch: 6 [32000/60000 (53%)]\tLoss: 0.201771\nTrain Epoch: 6 [32640/60000 (54%)]\tLoss: 0.201668\nTrain Epoch: 6 [33280/60000 (55%)]\tLoss: 0.111183\nTrain Epoch: 6 [33920/60000 (57%)]\tLoss: 0.093289\nTrain Epoch: 6 [34560/60000 (58%)]\tLoss: 0.171475\nTrain Epoch: 6 [35200/60000 (59%)]\tLoss: 0.178729\nTrain Epoch: 6 [35840/60000 (60%)]\tLoss: 0.144986\nTrain Epoch: 6 [36480/60000 (61%)]\tLoss: 0.302206\nTrain Epoch: 6 [37120/60000 (62%)]\tLoss: 0.389723\nTrain Epoch: 6 [37760/60000 (63%)]\tLoss: 0.268302\nTrain Epoch: 6 [38400/60000 (64%)]\tLoss: 0.358240\nTrain Epoch: 6 [39040/60000 (65%)]\tLoss: 0.241359\nTrain Epoch: 6 [39680/60000 (66%)]\tLoss: 0.282464\nTrain Epoch: 6 [40320/60000 (67%)]\tLoss: 0.205064\nTrain Epoch: 6 [40960/60000 (68%)]\tLoss: 0.106739\nTrain Epoch: 6 [41600/60000 (69%)]\tLoss: 0.076333\nTrain Epoch: 6 [42240/60000 (70%)]\tLoss: 0.157558\nTrain Epoch: 6 [42880/60000 (71%)]\tLoss: 0.217494\nTrain Epoch: 6 [43520/60000 (72%)]\tLoss: 0.183687\nTrain Epoch: 6 [44160/60000 (74%)]\tLoss: 0.217155\nTrain Epoch: 6 [44800/60000 (75%)]\tLoss: 0.108482\nTrain Epoch: 6 [45440/60000 (76%)]\tLoss: 0.324247\nTrain Epoch: 6 [46080/60000 (77%)]\tLoss: 0.352494\nTrain Epoch: 6 [46720/60000 (78%)]\tLoss: 0.163462\nTrain Epoch: 6 [47360/60000 (79%)]\tLoss: 0.154820\nTrain Epoch: 6 [48000/60000 (80%)]\tLoss: 0.174164\nTrain Epoch: 6 [48640/60000 (81%)]\tLoss: 0.196258\nTrain Epoch: 6 [49280/60000 (82%)]\tLoss: 0.226030\nTrain Epoch: 6 [49920/60000 (83%)]\tLoss: 0.306971\nTrain Epoch: 6 [50560/60000 (84%)]\tLoss: 0.387282\nTrain Epoch: 6 [51200/60000 (85%)]\tLoss: 0.213550\nTrain Epoch: 6 [51840/60000 (86%)]\tLoss: 0.133755\nTrain Epoch: 6 [52480/60000 (87%)]\tLoss: 0.176044\nTrain Epoch: 6 [53120/60000 (88%)]\tLoss: 0.282900\nTrain Epoch: 6 [53760/60000 (90%)]\tLoss: 0.154157\nTrain Epoch: 6 [54400/60000 (91%)]\tLoss: 0.138895\nTrain Epoch: 6 [55040/60000 (92%)]\tLoss: 0.254137\nTrain Epoch: 6 [55680/60000 (93%)]\tLoss: 0.107765\nTrain Epoch: 6 [56320/60000 (94%)]\tLoss: 0.118788\nTrain Epoch: 6 [56960/60000 (95%)]\tLoss: 0.142051\nTrain Epoch: 6 [57600/60000 (96%)]\tLoss: 0.176375\nTrain Epoch: 6 [58240/60000 (97%)]\tLoss: 0.131573\nTrain Epoch: 6 [58880/60000 (98%)]\tLoss: 0.347166\nTrain Epoch: 6 [59520/60000 (99%)]\tLoss: 0.217951\n\nTest set: Average loss: 0.0690, Accuracy: 9776/10000 (98%)\n\nTrain Epoch: 7 [0/60000 (0%)]\tLoss: 0.142441\nTrain Epoch: 7 [640/60000 (1%)]\tLoss: 0.078599\nTrain Epoch: 7 [1280/60000 (2%)]\tLoss: 0.121731\nTrain Epoch: 7 [1920/60000 (3%)]\tLoss: 0.070044\nTrain Epoch: 7 [2560/60000 (4%)]\tLoss: 0.224216\nTrain Epoch: 7 [3200/60000 (5%)]\tLoss: 0.104122\nTrain Epoch: 7 [3840/60000 (6%)]\tLoss: 0.228575\nTrain Epoch: 7 [4480/60000 (7%)]\tLoss: 0.377044\nTrain Epoch: 7 [5120/60000 (9%)]\tLoss: 0.296184\nTrain Epoch: 7 [5760/60000 (10%)]\tLoss: 0.099891\nTrain Epoch: 7 [6400/60000 (11%)]\tLoss: 0.269691\nTrain Epoch: 7 [7040/60000 (12%)]\tLoss: 0.240640\nTrain Epoch: 7 [7680/60000 (13%)]\tLoss: 0.171192\nTrain Epoch: 7 [8320/60000 (14%)]\tLoss: 0.306889\nTrain Epoch: 7 [8960/60000 (15%)]\tLoss: 0.238503\nTrain Epoch: 7 [9600/60000 (16%)]\tLoss: 0.286252\nTrain Epoch: 7 [10240/60000 (17%)]\tLoss: 0.171058\nTrain Epoch: 7 [10880/60000 (18%)]\tLoss: 0.208866\nTrain Epoch: 7 [11520/60000 (19%)]\tLoss: 0.418091\nTrain Epoch: 7 [12160/60000 (20%)]\tLoss: 0.115058\nTrain Epoch: 7 [12800/60000 (21%)]\tLoss: 0.159557\nTrain Epoch: 7 [13440/60000 (22%)]\tLoss: 0.085076\nTrain Epoch: 7 [14080/60000 (23%)]\tLoss: 0.244673\nTrain Epoch: 7 [14720/60000 (25%)]\tLoss: 0.316326\nTrain Epoch: 7 [15360/60000 (26%)]\tLoss: 0.370775\nTrain Epoch: 7 [16000/60000 (27%)]\tLoss: 0.235262\nTrain Epoch: 7 [16640/60000 (28%)]\tLoss: 0.296188\nTrain Epoch: 7 [17280/60000 (29%)]\tLoss: 0.224960\nTrain Epoch: 7 [17920/60000 (30%)]\tLoss: 0.162341\nTrain Epoch: 7 [18560/60000 (31%)]\tLoss: 0.136551\nTrain Epoch: 7 [19200/60000 (32%)]\tLoss: 0.111435\nTrain Epoch: 7 [19840/60000 (33%)]\tLoss: 0.173483\nTrain Epoch: 7 [20480/60000 (34%)]\tLoss: 0.170351\nTrain Epoch: 7 [21120/60000 (35%)]\tLoss: 0.109828\nTrain Epoch: 7 [21760/60000 (36%)]\tLoss: 0.219692\nTrain Epoch: 7 [22400/60000 (37%)]\tLoss: 0.085780\nTrain Epoch: 7 [23040/60000 (38%)]\tLoss: 0.076800\nTrain Epoch: 7 [23680/60000 (39%)]\tLoss: 0.163377\nTrain Epoch: 7 [24320/60000 (41%)]\tLoss: 0.178391\nTrain Epoch: 7 [24960/60000 (42%)]\tLoss: 0.311988\nTrain Epoch: 7 [25600/60000 (43%)]\tLoss: 0.215559\nTrain Epoch: 7 [26240/60000 (44%)]\tLoss: 0.199207\nTrain Epoch: 7 [26880/60000 (45%)]\tLoss: 0.201917\nTrain Epoch: 7 [27520/60000 (46%)]\tLoss: 0.163283\nTrain Epoch: 7 [28160/60000 (47%)]\tLoss: 0.107533\nTrain Epoch: 7 [28800/60000 (48%)]\tLoss: 0.046209\nTrain Epoch: 7 [29440/60000 (49%)]\tLoss: 0.173062\nTrain Epoch: 7 [30080/60000 (50%)]\tLoss: 0.088925\nTrain Epoch: 7 [30720/60000 (51%)]\tLoss: 0.068962\nTrain Epoch: 7 [31360/60000 (52%)]\tLoss: 0.223214\nTrain Epoch: 7 [32000/60000 (53%)]\tLoss: 0.096083\nTrain Epoch: 7 [32640/60000 (54%)]\tLoss: 0.327635\nTrain Epoch: 7 [33280/60000 (55%)]\tLoss: 0.278620\nTrain Epoch: 7 [33920/60000 (57%)]\tLoss: 0.223806\nTrain Epoch: 7 [34560/60000 (58%)]\tLoss: 0.121638\nTrain Epoch: 7 [35200/60000 (59%)]\tLoss: 0.182739\nTrain Epoch: 7 [35840/60000 (60%)]\tLoss: 0.172866\nTrain Epoch: 7 [36480/60000 (61%)]\tLoss: 0.180873\nTrain Epoch: 7 [37120/60000 (62%)]\tLoss: 0.298984\nTrain Epoch: 7 [37760/60000 (63%)]\tLoss: 0.251939\nTrain Epoch: 7 [38400/60000 (64%)]\tLoss: 0.105321\nTrain Epoch: 7 [39040/60000 (65%)]\tLoss: 0.200500\nTrain Epoch: 7 [39680/60000 (66%)]\tLoss: 0.309791\nTrain Epoch: 7 [40320/60000 (67%)]\tLoss: 0.114949\nTrain Epoch: 7 [40960/60000 (68%)]\tLoss: 0.066153\nTrain Epoch: 7 [41600/60000 (69%)]\tLoss: 0.327437\nTrain Epoch: 7 [42240/60000 (70%)]\tLoss: 0.179023\nTrain Epoch: 7 [42880/60000 (71%)]\tLoss: 0.089861\nTrain Epoch: 7 [43520/60000 (72%)]\tLoss: 0.111230\nTrain Epoch: 7 [44160/60000 (74%)]\tLoss: 0.108233\nTrain Epoch: 7 [44800/60000 (75%)]\tLoss: 0.145669\nTrain Epoch: 7 [45440/60000 (76%)]\tLoss: 0.122024\nTrain Epoch: 7 [46080/60000 (77%)]\tLoss: 0.083490\nTrain Epoch: 7 [46720/60000 (78%)]\tLoss: 0.116002\nTrain Epoch: 7 [47360/60000 (79%)]\tLoss: 0.200240\nTrain Epoch: 7 [48000/60000 (80%)]\tLoss: 0.363707\nTrain Epoch: 7 [48640/60000 (81%)]\tLoss: 0.294594\nTrain Epoch: 7 [49280/60000 (82%)]\tLoss: 0.127643\nTrain Epoch: 7 [49920/60000 (83%)]\tLoss: 0.202008\nTrain Epoch: 7 [50560/60000 (84%)]\tLoss: 0.159551\nTrain Epoch: 7 [51200/60000 (85%)]\tLoss: 0.221197\nTrain Epoch: 7 [51840/60000 (86%)]\tLoss: 0.266463\nTrain Epoch: 7 [52480/60000 (87%)]\tLoss: 0.073967\nTrain Epoch: 7 [53120/60000 (88%)]\tLoss: 0.350092\nTrain Epoch: 7 [53760/60000 (90%)]\tLoss: 0.106500\nTrain Epoch: 7 [54400/60000 (91%)]\tLoss: 0.208859\nTrain Epoch: 7 [55040/60000 (92%)]\tLoss: 0.209937\nTrain Epoch: 7 [55680/60000 (93%)]\tLoss: 0.215286\nTrain Epoch: 7 [56320/60000 (94%)]\tLoss: 0.117026\nTrain Epoch: 7 [56960/60000 (95%)]\tLoss: 0.132321\nTrain Epoch: 7 [57600/60000 (96%)]\tLoss: 0.286004\nTrain Epoch: 7 [58240/60000 (97%)]\tLoss: 0.170485\nTrain Epoch: 7 [58880/60000 (98%)]\tLoss: 0.196613\nTrain Epoch: 7 [59520/60000 (99%)]\tLoss: 0.293870\n\nTest set: Average loss: 0.0657, Accuracy: 9801/10000 (98%)\n\nTrain Epoch: 8 [0/60000 (0%)]\tLoss: 0.315451\nTrain Epoch: 8 [640/60000 (1%)]\tLoss: 0.114413\nTrain Epoch: 8 [1280/60000 (2%)]\tLoss: 0.129036\nTrain Epoch: 8 [1920/60000 (3%)]\tLoss: 0.141999\nTrain Epoch: 8 [2560/60000 (4%)]\tLoss: 0.118697\nTrain Epoch: 8 [3200/60000 (5%)]\tLoss: 0.126823\nTrain Epoch: 8 [3840/60000 (6%)]\tLoss: 0.053924\nTrain Epoch: 8 [4480/60000 (7%)]\tLoss: 0.296224\nTrain Epoch: 8 [5120/60000 (9%)]\tLoss: 0.121338\nTrain Epoch: 8 [5760/60000 (10%)]\tLoss: 0.255161\nTrain Epoch: 8 [6400/60000 (11%)]\tLoss: 0.170684\nTrain Epoch: 8 [7040/60000 (12%)]\tLoss: 0.092008\nTrain Epoch: 8 [7680/60000 (13%)]\tLoss: 0.283091\nTrain Epoch: 8 [8320/60000 (14%)]\tLoss: 0.027133\nTrain Epoch: 8 [8960/60000 (15%)]\tLoss: 0.195686\nTrain Epoch: 8 [9600/60000 (16%)]\tLoss: 0.343612\nTrain Epoch: 8 [10240/60000 (17%)]\tLoss: 0.108563\nTrain Epoch: 8 [10880/60000 (18%)]\tLoss: 0.223832\nTrain Epoch: 8 [11520/60000 (19%)]\tLoss: 0.175617\nTrain Epoch: 8 [12160/60000 (20%)]\tLoss: 0.145828\nTrain Epoch: 8 [12800/60000 (21%)]\tLoss: 0.178722\nTrain Epoch: 8 [13440/60000 (22%)]\tLoss: 0.151158\nTrain Epoch: 8 [14080/60000 (23%)]\tLoss: 0.183155\nTrain Epoch: 8 [14720/60000 (25%)]\tLoss: 0.110281\nTrain Epoch: 8 [15360/60000 (26%)]\tLoss: 0.282224\nTrain Epoch: 8 [16000/60000 (27%)]\tLoss: 0.097411\nTrain Epoch: 8 [16640/60000 (28%)]\tLoss: 0.264533\nTrain Epoch: 8 [17280/60000 (29%)]\tLoss: 0.194778\nTrain Epoch: 8 [17920/60000 (30%)]\tLoss: 0.235924\nTrain Epoch: 8 [18560/60000 (31%)]\tLoss: 0.236801\nTrain Epoch: 8 [19200/60000 (32%)]\tLoss: 0.178174\nTrain Epoch: 8 [19840/60000 (33%)]\tLoss: 0.218752\nTrain Epoch: 8 [20480/60000 (34%)]\tLoss: 0.208353\nTrain Epoch: 8 [21120/60000 (35%)]\tLoss: 0.193034\nTrain Epoch: 8 [21760/60000 (36%)]\tLoss: 0.138453\nTrain Epoch: 8 [22400/60000 (37%)]\tLoss: 0.175271\nTrain Epoch: 8 [23040/60000 (38%)]\tLoss: 0.157295\nTrain Epoch: 8 [23680/60000 (39%)]\tLoss: 0.156248\nTrain Epoch: 8 [24320/60000 (41%)]\tLoss: 0.153413\nTrain Epoch: 8 [24960/60000 (42%)]\tLoss: 0.084870\nTrain Epoch: 8 [25600/60000 (43%)]\tLoss: 0.150966\nTrain Epoch: 8 [26240/60000 (44%)]\tLoss: 0.160973\nTrain Epoch: 8 [26880/60000 (45%)]\tLoss: 0.231433\nTrain Epoch: 8 [27520/60000 (46%)]\tLoss: 0.144396\nTrain Epoch: 8 [28160/60000 (47%)]\tLoss: 0.200417\nTrain Epoch: 8 [28800/60000 (48%)]\tLoss: 0.152939\nTrain Epoch: 8 [29440/60000 (49%)]\tLoss: 0.109962\nTrain Epoch: 8 [30080/60000 (50%)]\tLoss: 0.134907\nTrain Epoch: 8 [30720/60000 (51%)]\tLoss: 0.088782\nTrain Epoch: 8 [31360/60000 (52%)]\tLoss: 0.129031\nTrain Epoch: 8 [32000/60000 (53%)]\tLoss: 0.184744\nTrain Epoch: 8 [32640/60000 (54%)]\tLoss: 0.155463\nTrain Epoch: 8 [33280/60000 (55%)]\tLoss: 0.174192\nTrain Epoch: 8 [33920/60000 (57%)]\tLoss: 0.172103\nTrain Epoch: 8 [34560/60000 (58%)]\tLoss: 0.201503\nTrain Epoch: 8 [35200/60000 (59%)]\tLoss: 0.287885\nTrain Epoch: 8 [35840/60000 (60%)]\tLoss: 0.133675\nTrain Epoch: 8 [36480/60000 (61%)]\tLoss: 0.243534\nTrain Epoch: 8 [37120/60000 (62%)]\tLoss: 0.196020\nTrain Epoch: 8 [37760/60000 (63%)]\tLoss: 0.101380\nTrain Epoch: 8 [38400/60000 (64%)]\tLoss: 0.108299\nTrain Epoch: 8 [39040/60000 (65%)]\tLoss: 0.159048\nTrain Epoch: 8 [39680/60000 (66%)]\tLoss: 0.204734\nTrain Epoch: 8 [40320/60000 (67%)]\tLoss: 0.238383\nTrain Epoch: 8 [40960/60000 (68%)]\tLoss: 0.592663\nTrain Epoch: 8 [41600/60000 (69%)]\tLoss: 0.116080\nTrain Epoch: 8 [42240/60000 (70%)]\tLoss: 0.039719\nTrain Epoch: 8 [42880/60000 (71%)]\tLoss: 0.148190\nTrain Epoch: 8 [43520/60000 (72%)]\tLoss: 0.241765\nTrain Epoch: 8 [44160/60000 (74%)]\tLoss: 0.235942\nTrain Epoch: 8 [44800/60000 (75%)]\tLoss: 0.175277\nTrain Epoch: 8 [45440/60000 (76%)]\tLoss: 0.143608\nTrain Epoch: 8 [46080/60000 (77%)]\tLoss: 0.114853\nTrain Epoch: 8 [46720/60000 (78%)]\tLoss: 0.232284\nTrain Epoch: 8 [47360/60000 (79%)]\tLoss: 0.321072\nTrain Epoch: 8 [48000/60000 (80%)]\tLoss: 0.310765\nTrain Epoch: 8 [48640/60000 (81%)]\tLoss: 0.102070\nTrain Epoch: 8 [49280/60000 (82%)]\tLoss: 0.372137\nTrain Epoch: 8 [49920/60000 (83%)]\tLoss: 0.109344\nTrain Epoch: 8 [50560/60000 (84%)]\tLoss: 0.382866\nTrain Epoch: 8 [51200/60000 (85%)]\tLoss: 0.270467\nTrain Epoch: 8 [51840/60000 (86%)]\tLoss: 0.061211\nTrain Epoch: 8 [52480/60000 (87%)]\tLoss: 0.233812\nTrain Epoch: 8 [53120/60000 (88%)]\tLoss: 0.176510\nTrain Epoch: 8 [53760/60000 (90%)]\tLoss: 0.120536\nTrain Epoch: 8 [54400/60000 (91%)]\tLoss: 0.241959\nTrain Epoch: 8 [55040/60000 (92%)]\tLoss: 0.183966\nTrain Epoch: 8 [55680/60000 (93%)]\tLoss: 0.125279\nTrain Epoch: 8 [56320/60000 (94%)]\tLoss: 0.152849\nTrain Epoch: 8 [56960/60000 (95%)]\tLoss: 0.219788\nTrain Epoch: 8 [57600/60000 (96%)]\tLoss: 0.077843\nTrain Epoch: 8 [58240/60000 (97%)]\tLoss: 0.304191\nTrain Epoch: 8 [58880/60000 (98%)]\tLoss: 0.363550\nTrain Epoch: 8 [59520/60000 (99%)]\tLoss: 0.326421\n\nTest set: Average loss: 0.0632, Accuracy: 9807/10000 (98%)\n\nTrain Epoch: 9 [0/60000 (0%)]\tLoss: 0.140965\nTrain Epoch: 9 [640/60000 (1%)]\tLoss: 0.206063\nTrain Epoch: 9 [1280/60000 (2%)]\tLoss: 0.189364\nTrain Epoch: 9 [1920/60000 (3%)]\tLoss: 0.367962\nTrain Epoch: 9 [2560/60000 (4%)]\tLoss: 0.108362\nTrain Epoch: 9 [3200/60000 (5%)]\tLoss: 0.109142\nTrain Epoch: 9 [3840/60000 (6%)]\tLoss: 0.270022\nTrain Epoch: 9 [4480/60000 (7%)]\tLoss: 0.200647\nTrain Epoch: 9 [5120/60000 (9%)]\tLoss: 0.162118\nTrain Epoch: 9 [5760/60000 (10%)]\tLoss: 0.167245\nTrain Epoch: 9 [6400/60000 (11%)]\tLoss: 0.188903\nTrain Epoch: 9 [7040/60000 (12%)]\tLoss: 0.280550\nTrain Epoch: 9 [7680/60000 (13%)]\tLoss: 0.116265\nTrain Epoch: 9 [8320/60000 (14%)]\tLoss: 0.602693\nTrain Epoch: 9 [8960/60000 (15%)]\tLoss: 0.148682\nTrain Epoch: 9 [9600/60000 (16%)]\tLoss: 0.225477\nTrain Epoch: 9 [10240/60000 (17%)]\tLoss: 0.133642\nTrain Epoch: 9 [10880/60000 (18%)]\tLoss: 0.116083\nTrain Epoch: 9 [11520/60000 (19%)]\tLoss: 0.348113\nTrain Epoch: 9 [12160/60000 (20%)]\tLoss: 0.219562\nTrain Epoch: 9 [12800/60000 (21%)]\tLoss: 0.117716\nTrain Epoch: 9 [13440/60000 (22%)]\tLoss: 0.218508\nTrain Epoch: 9 [14080/60000 (23%)]\tLoss: 0.323755\nTrain Epoch: 9 [14720/60000 (25%)]\tLoss: 0.211174\nTrain Epoch: 9 [15360/60000 (26%)]\tLoss: 0.451853\nTrain Epoch: 9 [16000/60000 (27%)]\tLoss: 0.155174\nTrain Epoch: 9 [16640/60000 (28%)]\tLoss: 0.134905\nTrain Epoch: 9 [17280/60000 (29%)]\tLoss: 0.172428\nTrain Epoch: 9 [17920/60000 (30%)]\tLoss: 0.306172\nTrain Epoch: 9 [18560/60000 (31%)]\tLoss: 0.133085\nTrain Epoch: 9 [19200/60000 (32%)]\tLoss: 0.449040\nTrain Epoch: 9 [19840/60000 (33%)]\tLoss: 0.084722\nTrain Epoch: 9 [20480/60000 (34%)]\tLoss: 0.188086\nTrain Epoch: 9 [21120/60000 (35%)]\tLoss: 0.222472\nTrain Epoch: 9 [21760/60000 (36%)]\tLoss: 0.275132\nTrain Epoch: 9 [22400/60000 (37%)]\tLoss: 0.287421\nTrain Epoch: 9 [23040/60000 (38%)]\tLoss: 0.105733\nTrain Epoch: 9 [23680/60000 (39%)]\tLoss: 0.157949\nTrain Epoch: 9 [24320/60000 (41%)]\tLoss: 0.073462\nTrain Epoch: 9 [24960/60000 (42%)]\tLoss: 0.240201\nTrain Epoch: 9 [25600/60000 (43%)]\tLoss: 0.060848\nTrain Epoch: 9 [26240/60000 (44%)]\tLoss: 0.173801\nTrain Epoch: 9 [26880/60000 (45%)]\tLoss: 0.148143\nTrain Epoch: 9 [27520/60000 (46%)]\tLoss: 0.180779\nTrain Epoch: 9 [28160/60000 (47%)]\tLoss: 0.393192\nTrain Epoch: 9 [28800/60000 (48%)]\tLoss: 0.239243\nTrain Epoch: 9 [29440/60000 (49%)]\tLoss: 0.064345\nTrain Epoch: 9 [30080/60000 (50%)]\tLoss: 0.315658\nTrain Epoch: 9 [30720/60000 (51%)]\tLoss: 0.105739\nTrain Epoch: 9 [31360/60000 (52%)]\tLoss: 0.246439\nTrain Epoch: 9 [32000/60000 (53%)]\tLoss: 0.145221\nTrain Epoch: 9 [32640/60000 (54%)]\tLoss: 0.287615\nTrain Epoch: 9 [33280/60000 (55%)]\tLoss: 0.310717\nTrain Epoch: 9 [33920/60000 (57%)]\tLoss: 0.322760\nTrain Epoch: 9 [34560/60000 (58%)]\tLoss: 0.294462\nTrain Epoch: 9 [35200/60000 (59%)]\tLoss: 0.168697\nTrain Epoch: 9 [35840/60000 (60%)]\tLoss: 0.153495\nTrain Epoch: 9 [36480/60000 (61%)]\tLoss: 0.146843\nTrain Epoch: 9 [37120/60000 (62%)]\tLoss: 0.176622\nTrain Epoch: 9 [37760/60000 (63%)]\tLoss: 0.400825\nTrain Epoch: 9 [38400/60000 (64%)]\tLoss: 0.197533\nTrain Epoch: 9 [39040/60000 (65%)]\tLoss: 0.109741\nTrain Epoch: 9 [39680/60000 (66%)]\tLoss: 0.049689\nTrain Epoch: 9 [40320/60000 (67%)]\tLoss: 0.253087\nTrain Epoch: 9 [40960/60000 (68%)]\tLoss: 0.222971\nTrain Epoch: 9 [41600/60000 (69%)]\tLoss: 0.095467\nTrain Epoch: 9 [42240/60000 (70%)]\tLoss: 0.043052\nTrain Epoch: 9 [42880/60000 (71%)]\tLoss: 0.105347\nTrain Epoch: 9 [43520/60000 (72%)]\tLoss: 0.133342\nTrain Epoch: 9 [44160/60000 (74%)]\tLoss: 0.266375\nTrain Epoch: 9 [44800/60000 (75%)]\tLoss: 0.156081\nTrain Epoch: 9 [45440/60000 (76%)]\tLoss: 0.206747\nTrain Epoch: 9 [46080/60000 (77%)]\tLoss: 0.158561\nTrain Epoch: 9 [46720/60000 (78%)]\tLoss: 0.416148\nTrain Epoch: 9 [47360/60000 (79%)]\tLoss: 0.147991\nTrain Epoch: 9 [48000/60000 (80%)]\tLoss: 0.112567\nTrain Epoch: 9 [48640/60000 (81%)]\tLoss: 0.100846\nTrain Epoch: 9 [49280/60000 (82%)]\tLoss: 0.103345\nTrain Epoch: 9 [49920/60000 (83%)]\tLoss: 0.205922\nTrain Epoch: 9 [50560/60000 (84%)]\tLoss: 0.097610\nTrain Epoch: 9 [51200/60000 (85%)]\tLoss: 0.071967\nTrain Epoch: 9 [51840/60000 (86%)]\tLoss: 0.068125\nTrain Epoch: 9 [52480/60000 (87%)]\tLoss: 0.057313\nTrain Epoch: 9 [53120/60000 (88%)]\tLoss: 0.162428\nTrain Epoch: 9 [53760/60000 (90%)]\tLoss: 0.097614\nTrain Epoch: 9 [54400/60000 (91%)]\tLoss: 0.075174\nTrain Epoch: 9 [55040/60000 (92%)]\tLoss: 0.095530\nTrain Epoch: 9 [55680/60000 (93%)]\tLoss: 0.142529\nTrain Epoch: 9 [56320/60000 (94%)]\tLoss: 0.132163\nTrain Epoch: 9 [56960/60000 (95%)]\tLoss: 0.201932\nTrain Epoch: 9 [57600/60000 (96%)]\tLoss: 0.238939\nTrain Epoch: 9 [58240/60000 (97%)]\tLoss: 0.037396\nTrain Epoch: 9 [58880/60000 (98%)]\tLoss: 0.077772\nTrain Epoch: 9 [59520/60000 (99%)]\tLoss: 0.177759\n\nTest set: Average loss: 0.0559, Accuracy: 9813/10000 (98%)\n\nTrain Epoch: 10 [0/60000 (0%)]\tLoss: 0.112115\nTrain Epoch: 10 [640/60000 (1%)]\tLoss: 0.089035\nTrain Epoch: 10 [1280/60000 (2%)]\tLoss: 0.177925\nTrain Epoch: 10 [1920/60000 (3%)]\tLoss: 0.147350\nTrain Epoch: 10 [2560/60000 (4%)]\tLoss: 0.170561\nTrain Epoch: 10 [3200/60000 (5%)]\tLoss: 0.207891\nTrain Epoch: 10 [3840/60000 (6%)]\tLoss: 0.340160\nTrain Epoch: 10 [4480/60000 (7%)]\tLoss: 0.229032\nTrain Epoch: 10 [5120/60000 (9%)]\tLoss: 0.335419\nTrain Epoch: 10 [5760/60000 (10%)]\tLoss: 0.101219\nTrain Epoch: 10 [6400/60000 (11%)]\tLoss: 0.085085\nTrain Epoch: 10 [7040/60000 (12%)]\tLoss: 0.053658\nTrain Epoch: 10 [7680/60000 (13%)]\tLoss: 0.106224\nTrain Epoch: 10 [8320/60000 (14%)]\tLoss: 0.146947\nTrain Epoch: 10 [8960/60000 (15%)]\tLoss: 0.210157\nTrain Epoch: 10 [9600/60000 (16%)]\tLoss: 0.167598\nTrain Epoch: 10 [10240/60000 (17%)]\tLoss: 0.184822\nTrain Epoch: 10 [10880/60000 (18%)]\tLoss: 0.149518\nTrain Epoch: 10 [11520/60000 (19%)]\tLoss: 0.091374\nTrain Epoch: 10 [12160/60000 (20%)]\tLoss: 0.331635\nTrain Epoch: 10 [12800/60000 (21%)]\tLoss: 0.345818\nTrain Epoch: 10 [13440/60000 (22%)]\tLoss: 0.057789\nTrain Epoch: 10 [14080/60000 (23%)]\tLoss: 0.189208\nTrain Epoch: 10 [14720/60000 (25%)]\tLoss: 0.116747\nTrain Epoch: 10 [15360/60000 (26%)]\tLoss: 0.101344\nTrain Epoch: 10 [16000/60000 (27%)]\tLoss: 0.116675\nTrain Epoch: 10 [16640/60000 (28%)]\tLoss: 0.158562\nTrain Epoch: 10 [17280/60000 (29%)]\tLoss: 0.173697\nTrain Epoch: 10 [17920/60000 (30%)]\tLoss: 0.167972\nTrain Epoch: 10 [18560/60000 (31%)]\tLoss: 0.125186\nTrain Epoch: 10 [19200/60000 (32%)]\tLoss: 0.116458\nTrain Epoch: 10 [19840/60000 (33%)]\tLoss: 0.107688\nTrain Epoch: 10 [20480/60000 (34%)]\tLoss: 0.131942\nTrain Epoch: 10 [21120/60000 (35%)]\tLoss: 0.189690\nTrain Epoch: 10 [21760/60000 (36%)]\tLoss: 0.106075\nTrain Epoch: 10 [22400/60000 (37%)]\tLoss: 0.100791\nTrain Epoch: 10 [23040/60000 (38%)]\tLoss: 0.151750\nTrain Epoch: 10 [23680/60000 (39%)]\tLoss: 0.242852\nTrain Epoch: 10 [24320/60000 (41%)]\tLoss: 0.367772\nTrain Epoch: 10 [24960/60000 (42%)]\tLoss: 0.160668\nTrain Epoch: 10 [25600/60000 (43%)]\tLoss: 0.209858\nTrain Epoch: 10 [26240/60000 (44%)]\tLoss: 0.267443\nTrain Epoch: 10 [26880/60000 (45%)]\tLoss: 0.134159\nTrain Epoch: 10 [27520/60000 (46%)]\tLoss: 0.176844\nTrain Epoch: 10 [28160/60000 (47%)]\tLoss: 0.083609\nTrain Epoch: 10 [28800/60000 (48%)]\tLoss: 0.093472\nTrain Epoch: 10 [29440/60000 (49%)]\tLoss: 0.133502\nTrain Epoch: 10 [30080/60000 (50%)]\tLoss: 0.207314\nTrain Epoch: 10 [30720/60000 (51%)]\tLoss: 0.095819\nTrain Epoch: 10 [31360/60000 (52%)]\tLoss: 0.165338\nTrain Epoch: 10 [32000/60000 (53%)]\tLoss: 0.172792\nTrain Epoch: 10 [32640/60000 (54%)]\tLoss: 0.200346\nTrain Epoch: 10 [33280/60000 (55%)]\tLoss: 0.188566\nTrain Epoch: 10 [33920/60000 (57%)]\tLoss: 0.063107\nTrain Epoch: 10 [34560/60000 (58%)]\tLoss: 0.208076\nTrain Epoch: 10 [35200/60000 (59%)]\tLoss: 0.336500\nTrain Epoch: 10 [35840/60000 (60%)]\tLoss: 0.098523\nTrain Epoch: 10 [36480/60000 (61%)]\tLoss: 0.239501\nTrain Epoch: 10 [37120/60000 (62%)]\tLoss: 0.108441\nTrain Epoch: 10 [37760/60000 (63%)]\tLoss: 0.161891\nTrain Epoch: 10 [38400/60000 (64%)]\tLoss: 0.232178\nTrain Epoch: 10 [39040/60000 (65%)]\tLoss: 0.281599\nTrain Epoch: 10 [39680/60000 (66%)]\tLoss: 0.202701\nTrain Epoch: 10 [40320/60000 (67%)]\tLoss: 0.313276\nTrain Epoch: 10 [40960/60000 (68%)]\tLoss: 0.149932\nTrain Epoch: 10 [41600/60000 (69%)]\tLoss: 0.078690\nTrain Epoch: 10 [42240/60000 (70%)]\tLoss: 0.068174\nTrain Epoch: 10 [42880/60000 (71%)]\tLoss: 0.114682\nTrain Epoch: 10 [43520/60000 (72%)]\tLoss: 0.278032\nTrain Epoch: 10 [44160/60000 (74%)]\tLoss: 0.207701\nTrain Epoch: 10 [44800/60000 (75%)]\tLoss: 0.149129\nTrain Epoch: 10 [45440/60000 (76%)]\tLoss: 0.209997\nTrain Epoch: 10 [46080/60000 (77%)]\tLoss: 0.181944\nTrain Epoch: 10 [46720/60000 (78%)]\tLoss: 0.071149\nTrain Epoch: 10 [47360/60000 (79%)]\tLoss: 0.088598\nTrain Epoch: 10 [48000/60000 (80%)]\tLoss: 0.196593\nTrain Epoch: 10 [48640/60000 (81%)]\tLoss: 0.195960\nTrain Epoch: 10 [49280/60000 (82%)]\tLoss: 0.227564\nTrain Epoch: 10 [49920/60000 (83%)]\tLoss: 0.051203\nTrain Epoch: 10 [50560/60000 (84%)]\tLoss: 0.105916\nTrain Epoch: 10 [51200/60000 (85%)]\tLoss: 0.176384\nTrain Epoch: 10 [51840/60000 (86%)]\tLoss: 0.054657\nTrain Epoch: 10 [52480/60000 (87%)]\tLoss: 0.107465\nTrain Epoch: 10 [53120/60000 (88%)]\tLoss: 0.072626\nTrain Epoch: 10 [53760/60000 (90%)]\tLoss: 0.187904\nTrain Epoch: 10 [54400/60000 (91%)]\tLoss: 0.104509\nTrain Epoch: 10 [55040/60000 (92%)]\tLoss: 0.174006\nTrain Epoch: 10 [55680/60000 (93%)]\tLoss: 0.122760\nTrain Epoch: 10 [56320/60000 (94%)]\tLoss: 0.150131\nTrain Epoch: 10 [56960/60000 (95%)]\tLoss: 0.076365\nTrain Epoch: 10 [57600/60000 (96%)]\tLoss: 0.127536\nTrain Epoch: 10 [58240/60000 (97%)]\tLoss: 0.233154\nTrain Epoch: 10 [58880/60000 (98%)]\tLoss: 0.113188\nTrain Epoch: 10 [59520/60000 (99%)]\tLoss: 0.282389\n\nTest set: Average loss: 0.0531, Accuracy: 9837/10000 (98%)\n\n\n\nThe experiment completed successfully. Finalizing run...\nLogging experiment finalizing status in history service\n\n\nRun is completed.", + "run_properties": { + "SendToClient": "1", + "arguments": "--output-dir ./outputs", + "created_utc": "2018-09-25T11:56:04.832205Z", + "distributed_processes": [], + "end_time_utc": "2018-09-25T12:15:57.841467Z", + "log_files": { + "azureml-logs/55_batchai_execution.txt": "https://onnxamlistorageekgyifen.blob.core.windows.net/azureml/ExperimentRun/pytorch1-mnist_1537876563990/azureml-logs/55_batchai_execution.txt?sv=2017-04-17&sr=b&sig=NNkIC62xdG1h6156XtjtgwTJ1ScXlfxhBiBicNNoExE%3D&st=2018-09-25T12%3A06%3A00Z&se=2018-09-25T20%3A16%3A00Z&sp=r", + "azureml-logs/60_control_log.txt": "https://onnxamlistorageekgyifen.blob.core.windows.net/azureml/ExperimentRun/pytorch1-mnist_1537876563990/azureml-logs/60_control_log.txt?sv=2017-04-17&sr=b&sig=i2mtPt6w5xHkEjpkyfl%2BSD1GPpIdpzIbY6sVUQ62QMo%3D&st=2018-09-25T12%3A06%3A00Z&se=2018-09-25T20%3A16%3A00Z&sp=r", + "azureml-logs/80_driver_log.txt": "https://onnxamlistorageekgyifen.blob.core.windows.net/azureml/ExperimentRun/pytorch1-mnist_1537876563990/azureml-logs/80_driver_log.txt?sv=2017-04-17&sr=b&sig=CvqNHP18huWuXWdi%2BeiPcnztgJfI1iQQ6fV6Li25z1Y%3D&st=2018-09-25T12%3A06%3A00Z&se=2018-09-25T20%3A16%3A00Z&sp=r", + "azureml-logs/azureml.log": "https://onnxamlistorageekgyifen.blob.core.windows.net/azureml/ExperimentRun/pytorch1-mnist_1537876563990/azureml-logs/azureml.log?sv=2017-04-17&sr=b&sig=UTaxvUU4Ua%2FpsXPwQnSIV%2FbKK1zERtclIIjcTfbcSzQ%3D&st=2018-09-25T12%3A06%3A00Z&se=2018-09-25T20%3A16%3A00Z&sp=r" + }, + "properties": { + "ContentSnapshotId": "727976ee-33bf-44c7-af65-ef1a1cbd2980", + "azureml.runsource": "experiment" + }, + "run_duration": "0:19:53", + "run_id": "pytorch1-mnist_1537876563990", + "script_name": "mnist.py", + "status": "Completed", + "tags": {} + }, + "widget_settings": {}, + "workbench_uri": "https://mlworkspace.azure.ai/portal/subscriptions/75f78a03-482f-4fd8-8c71-5ddc08f92726/resourceGroups/onnxdemos/providers/Microsoft.MachineLearningServices/workspaces/onnx-aml-ignite-demo/experiment/pytorch1-mnist/run/pytorch1-mnist_1537876563990" + } + } + }, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/pipeline/00.pipeline-setup.ipynb b/pipeline/00.pipeline-setup.ipynb index 69f07953..2c83bff0 100644 --- a/pipeline/00.pipeline-setup.ipynb +++ b/pipeline/00.pipeline-setup.ipynb @@ -1,81 +1,81 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install pandas\n", - "!pip install requests" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Widgets\n", - "Install the following widgets to see the status of each run" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!jupyter nbextension install --py --user azureml.widgets\n", - "!jupyter nbextension enable --py --user azureml.widgets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "authors": [ - { - "name": "hichando" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install pandas\n", + "!pip install requests" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Widgets\n", + "Install the following widgets to see the status of each run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!jupyter nbextension install --py --user azureml.train.widgets\n", + "!jupyter nbextension enable --py --user azureml.train.widgets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" + "metadata": { + "authors": [ + { + "name": "hichando" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/pipeline/pipeline-batch-scoring.ipynb b/pipeline/pipeline-batch-scoring.ipynb new file mode 100644 index 00000000..d16048cf --- /dev/null +++ b/pipeline/pipeline-batch-scoring.ipynb @@ -0,0 +1,664 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates how to run batch scoring job. __[Inception-V3 model](https://arxiv.org/abs/1512.00567)__ and unlabeled images from __[ImageNet](http://image-net.org/)__ dataset will be used. It registers a pretrained inception model in model registry then uses the model to do batch scoring on images in a blob container." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](./00.configuration.ipynb) Notebook first if you haven't.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from azureml.core import Workspace, Run, Experiment\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')\n", + "\n", + "# Also create a Project and attach to Workspace\n", + "scripts_folder = \"scripts\"\n", + "\n", + "if not os.path.isdir(scripts_folder):\n", + " os.mkdir(scripts_folder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import BatchAiCompute, ComputeTarget\n", + "from azureml.core.datastore import Datastore\n", + "from azureml.data.data_reference import DataReference\n", + "from azureml.pipeline.core import Pipeline, PipelineData\n", + "from azureml.pipeline.steps import PythonScriptStep\n", + "from azureml.core.runconfig import CondaDependencies, RunConfiguration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create and attach Compute targets\n", + "Use the below code to create and attach Compute targets. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "# choose a name for your cluster\n", + "batchai_cluster_name = os.environ.get(\"BATCHAI_CLUSTER_NAME\", \"gpu-cluster\")\n", + "cluster_min_nodes = os.environ.get(\"BATCHAI_CLUSTER_MIN_NODES\", 0)\n", + "cluster_max_nodes = os.environ.get(\"BATCHAI_CLUSTER_MAX_NODES\", 1)\n", + "vm_size = os.environ.get(\"BATCHAI_CLUSTER_SKU\", \"STANDARD_NC6\")\n", + "autoscale_enabled = os.environ.get(\"BATCHAI_CLUSTER_AUTOSCALE_ENABLED\", True)\n", + "\n", + "\n", + "if batchai_cluster_name in ws.compute_targets:\n", + " compute_target = ws.compute_targets[batchai_cluster_name]\n", + " if compute_target and type(compute_target) is BatchAiCompute:\n", + " print('found compute target. just use it. ' + batchai_cluster_name)\n", + "else:\n", + " print('creating a new compute target...')\n", + " provisioning_config = BatchAiCompute.provisioning_configuration(vm_size = vm_size, # NC6 is GPU-enabled\n", + " vm_priority = 'lowpriority', # optional\n", + " autoscale_enabled = autoscale_enabled,\n", + " cluster_min_nodes = cluster_min_nodes, \n", + " cluster_max_nodes = cluster_max_nodes)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, batchai_cluster_name, provisioning_config)\n", + " \n", + " # can poll for a minimum number of nodes and for a specific timeout. \n", + " # if no min node count is provided it will use the scale settings for the cluster\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", + " \n", + " # For a more detailed view of current BatchAI cluster status, use the 'status' property \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Python scripts to run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python scripts that run the batch scoring. `batchai_score.py` takes input images in `dataset_path`, pretrained models in `model_dir` and outputs a `results-label.txt` to `output_dir`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $scripts_folder/batchai_score.py\n", + "import os\n", + "import argparse\n", + "import datetime,time\n", + "import tensorflow as tf\n", + "from math import ceil\n", + "import numpy as np\n", + "import shutil\n", + "from tensorflow.contrib.slim.python.slim.nets import inception_v3\n", + "from azureml.core.model import Model\n", + "\n", + "slim = tf.contrib.slim\n", + "\n", + "parser = argparse.ArgumentParser(description=\"Start a tensorflow model serving\")\n", + "parser.add_argument('--model_name', dest=\"model_name\", required=True)\n", + "parser.add_argument('--label_dir', dest=\"label_dir\", required=True)\n", + "parser.add_argument('--dataset_path', dest=\"dataset_path\", required=True)\n", + "parser.add_argument('--output_dir', dest=\"output_dir\", required=True)\n", + "parser.add_argument('--batch_size', dest=\"batch_size\", type=int, required=True)\n", + "\n", + "args = parser.parse_args()\n", + "\n", + "image_size = 299\n", + "num_channel = 3\n", + "\n", + "# create output directory if it does not exist\n", + "os.makedirs(args.output_dir, exist_ok=True)\n", + "\n", + "def get_class_label_dict(label_file):\n", + " label = []\n", + " proto_as_ascii_lines = tf.gfile.GFile(label_file).readlines()\n", + " for l in proto_as_ascii_lines:\n", + " label.append(l.rstrip())\n", + " return label\n", + "\n", + "\n", + "class DataIterator:\n", + " def __init__(self, data_dir):\n", + " self.file_paths = []\n", + " image_list = os.listdir(data_dir)\n", + " total_size = len(image_list)\n", + " self.file_paths = [data_dir + '/' + file_name.rstrip() for file_name in image_list ]\n", + "\n", + " self.labels = [1 for file_name in self.file_paths]\n", + "\n", + " @property\n", + " def size(self):\n", + " return len(self.labels)\n", + "\n", + " def input_pipeline(self, batch_size):\n", + " images_tensor = tf.convert_to_tensor(self.file_paths, dtype=tf.string)\n", + " labels_tensor = tf.convert_to_tensor(self.labels, dtype=tf.int64)\n", + " input_queue = tf.train.slice_input_producer([images_tensor, labels_tensor], shuffle=False)\n", + " labels = input_queue[1]\n", + " images_content = tf.read_file(input_queue[0])\n", + "\n", + " image_reader = tf.image.decode_jpeg(images_content, channels=num_channel, name=\"jpeg_reader\")\n", + " float_caster = tf.cast(image_reader, tf.float32)\n", + " new_size = tf.constant([image_size, image_size], dtype=tf.int32)\n", + " images = tf.image.resize_images(float_caster, new_size)\n", + " images = tf.divide(tf.subtract(images, [0]), [255])\n", + "\n", + " image_batch, label_batch = tf.train.batch([images, labels], batch_size=batch_size, capacity=5 * batch_size)\n", + " return image_batch\n", + "\n", + "def main(_):\n", + " start_time = datetime.datetime.now()\n", + " label_file_name = os.path.join(args.label_dir, \"labels.txt\")\n", + " label_dict = get_class_label_dict(label_file_name)\n", + " classes_num = len(label_dict)\n", + " test_feeder = DataIterator(data_dir=args.dataset_path)\n", + " total_size = len(test_feeder.labels)\n", + " count = 0\n", + " # get model from model registry\n", + " model_path = Model.get_model_path(args.model_name)\n", + " with tf.Session() as sess:\n", + " test_images = test_feeder.input_pipeline(batch_size=args.batch_size)\n", + " with slim.arg_scope(inception_v3.inception_v3_arg_scope()):\n", + " input_images = tf.placeholder(tf.float32, [args.batch_size, image_size, image_size, num_channel])\n", + " logits, _ = inception_v3.inception_v3(input_images,\n", + " num_classes=classes_num,\n", + " is_training=False)\n", + " probabilities = tf.argmax(logits, 1)\n", + "\n", + " sess.run(tf.global_variables_initializer())\n", + " sess.run(tf.local_variables_initializer())\n", + " coord = tf.train.Coordinator()\n", + " threads = tf.train.start_queue_runners(sess=sess, coord=coord)\n", + " saver = tf.train.Saver()\n", + " saver.restore(sess, model_path)\n", + " out_filename = os.path.join(args.output_dir, \"result-labels.txt\")\n", + " with open(out_filename, \"w\") as result_file:\n", + " i = 0\n", + " while count < total_size and not coord.should_stop():\n", + " test_images_batch = sess.run(test_images)\n", + " file_names_batch = test_feeder.file_paths[i*args.batch_size: min(test_feeder.size, (i+1)*args.batch_size)]\n", + " results = sess.run(probabilities, feed_dict={input_images: test_images_batch})\n", + " new_add = min(args.batch_size, total_size-count)\n", + " count += new_add\n", + " i += 1\n", + " for j in range(new_add):\n", + " result_file.write(os.path.basename(file_names_batch[j]) + \": \" + label_dict[results[j]] + \"\\n\")\n", + " result_file.flush()\n", + " coord.request_stop()\n", + " coord.join(threads)\n", + " \n", + " # copy the file to artifacts\n", + " shutil.copy(out_filename, \"./outputs/\")\n", + " # Move the processed data out of the blob so that the next run can process the data.\n", + "\n", + "if __name__ == \"__main__\":\n", + " tf.app.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare Model and Input data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download Model\n", + "\n", + "Download and extract model from http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz to `\"models\"`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create directory for model\n", + "model_dir = 'models'\n", + "if not os.path.isdir(model_dir):\n", + " os.mkdir(model_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import tarfile\n", + "import urllib.request\n", + "\n", + "url=\"http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz\"\n", + "response = urllib.request.urlretrieve(url, \"model.tar.gz\")\n", + "tar = tarfile.open(\"model.tar.gz\", \"r:gz\")\n", + "tar.extractall(model_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a datastore that points to blob container containing sample images\n", + "\n", + "We have created a public blob container `sampledata` on an account named `pipelinedata` containing images from ImageNet evaluation set. In the next step, we create a datastore with name `images_datastore` that points to this container. The `overwrite=True` step overwrites any datastore that was created previously with that name. \n", + "\n", + "This step can be changed to point to your blob container by providing an additional `account_key` parameter with `account_name`. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "account_name = \"pipelinedata\"\n", + "sample_data = Datastore.register_azure_blob_container(ws, datastore_name=\"images_datastore\", container_name=\"sampledata\", \n", + " account_name=account_name, \n", + " overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Output datastore" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We write the outputs to the default datastore" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "default_ds = ws.get_default_datastore()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Specify where the data is stored or will be written to" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies\n", + "from azureml.data.data_reference import DataReference\n", + "from azureml.pipeline.core import Pipeline, PipelineData\n", + "from azureml.core import Datastore\n", + "from azureml.core import Experiment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "input_images = DataReference(datastore=sample_data, \n", + " data_reference_name=\"input_images\",\n", + " path_on_datastore=\"batchscoring/images\",\n", + " mode=\"download\"\n", + " )\n", + "model_dir = DataReference(datastore=sample_data, \n", + " data_reference_name=\"input_model\",\n", + " path_on_datastore=\"batchscoring/models\",\n", + " mode=\"download\" \n", + " )\n", + "label_dir = DataReference(datastore=sample_data, \n", + " data_reference_name=\"input_labels\",\n", + " path_on_datastore=\"batchscoring/labels\",\n", + " mode=\"download\" \n", + " )\n", + "output_dir = PipelineData(name=\"scores\", \n", + " datastore=default_ds, \n", + " output_path_on_compute=\"batchscoring/results\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the model with Workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "from azureml.core.model import Model\n", + "\n", + "# register downloaded model \n", + "model = Model.register(model_path = \"models/inception_v3.ckpt\",\n", + " model_name = \"inception\", # this is the name the model is registered as\n", + " tags = {'pretrained': \"inception\"},\n", + " description = \"Imagenet trained tensorflow inception\",\n", + " workspace = ws)\n", + "# remove the downloaded dir after registration if you wish\n", + "shutil.rmtree(\"models\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Specify environment to run the script" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cd = CondaDependencies.create(pip_packages=[\"tensorflow-gpu==1.4.0\", \"azureml-defaults\"])\n", + "\n", + "# Runconfig\n", + "batchai_run_config = RunConfiguration(conda_dependencies=cd)\n", + "batchai_run_config.environment.docker.enabled = True\n", + "batchai_run_config.environment.docker.gpu_support = True\n", + "batchai_run_config.environment.docker.base_image = \"microsoft/mmlspark:gpu-0.12\"\n", + "batchai_run_config.environment.spark.precache_packages = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Steps to run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A subset of the parameters to the python script can be given as input when we re-run a `PublishedPipeline`. In the current example, we define `batch_size` taken by the script as such parameter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.pipeline.core.graph import PipelineParameter\n", + "batch_size_param = PipelineParameter(name=\"param_batch_size\", default_value=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "inception_model_name = \"inception_v3.ckpt\"\n", + "\n", + "batch_score_step = PythonScriptStep(\n", + " name=\"batch ai scoring\",\n", + " script_name=\"batchai_score.py\",\n", + " arguments=[\"--dataset_path\", input_images, \n", + " \"--model_name\", \"inception\",\n", + " \"--label_dir\", label_dir, \n", + " \"--output_dir\", output_dir, \n", + " \"--batch_size\", batch_size_param],\n", + " target=compute_target,\n", + " inputs=[input_images, label_dir],\n", + " outputs=[output_dir],\n", + " runconfig=batchai_run_config,\n", + " source_directory=scripts_folder\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pipeline = Pipeline(workspace=ws, steps=[batch_score_step])\n", + "pipeline_run = Experiment(ws, 'batch_scoring').submit(pipeline, pipeline_params={\"param_batch_size\": 20})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Monitor run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(pipeline_run).show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_run.wait_for_completion(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Download and review output" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "step_run = list(pipeline_run.get_children())[0]\n", + "step_run.download_file(\"./outputs/result-labels.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv(\"result-labels.txt\", delimiter=\":\", header=None)\n", + "df.columns = [\"Filename\", \"Prediction\"]\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Publish a pipeline and rerun using a REST call" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a published pipeline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "published_pipeline = pipeline_run.publish_pipeline(\n", + " name=\"Inception v3 scoring\", description=\"Batch scoring using Inception v3 model\", version=\"1.0\")\n", + "\n", + "published_id = published_pipeline.id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rerun using REST call" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get AAD token" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.authentication import AzureCliAuthentication\n", + "import requests\n", + "\n", + "cli_auth = AzureCliAuthentication()\n", + "aad_token = cli_auth.get_authentication_header()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run published pipeline using its REST endpoint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.pipeline.core import PublishedPipeline\n", + "\n", + "rest_endpoint = published_pipeline.endpoint\n", + "# specify batch size when running the pipeline\n", + "response = requests.post(rest_endpoint, \n", + " headers=aad_token, \n", + " json={\"ExperimentName\": \"batch_scoring\",\n", + " \"ParameterAssignments\": {\"param_batch_size\": 50}})\n", + "run_id = response.json()[\"Id\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Monitor the new run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.pipeline.core.run import PipelineRun\n", + "published_pipeline_run = PipelineRun(ws.experiments[\"batch_scoring\"], run_id)\n", + "\n", + "RunDetails(published_pipeline_run).show()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "hichando" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/project-brainwave/project-brainwave-custom-weights.ipynb b/project-brainwave/project-brainwave-custom-weights.ipynb new file mode 100644 index 00000000..c833396e --- /dev/null +++ b/project-brainwave/project-brainwave-custom-weights.ipynb @@ -0,0 +1,625 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Development with Custom Weights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example shows how to retrain a model with custom weights and fine-tune the model with quantization, then deploy the model running on FPGA. Only Windows is supported. We use TensorFlow and Keras to build our model. We are going to use transfer learning, with ResNet50 as a featurizer. We don't use the last layer of ResNet50 in this case and instead add our own classification layer using Keras.\n", + "\n", + "The custom wegiths are trained with ImageNet on ResNet50. We will use the Kaggle Cats and Dogs dataset to retrain and fine-tune the model. The dataset can be downloaded [here](https://www.microsoft.com/en-us/download/details.aspx?id=54765). Download the zip and extract to a directory named 'catsanddogs' under your user directory (\"~/catsanddogs\"). \n", + "\n", + "Please set up your environment as described in the [quick start](project-brainwave-quickstart.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import tensorflow as tf\n", + "import numpy as np\n", + "from keras import backend as K" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup Environment\n", + "After you train your model in float32, you'll write the weights to a place on disk. We also need a location to store the models that get downloaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "custom_weights_dir = os.path.expanduser(\"~/custom-weights\")\n", + "saved_model_dir = os.path.expanduser(\"~/models\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare Data\n", + "Load the files we are going to use for training and testing. By default this notebook uses only a very small subset of the Cats and Dogs dataset. That makes it run relatively quickly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import imghdr\n", + "datadir = os.path.expanduser(\"~/catsanddogs\")\n", + "\n", + "cat_files = glob.glob(os.path.join(datadir, 'PetImages', 'Cat', '*.jpg'))\n", + "dog_files = glob.glob(os.path.join(datadir, 'PetImages', 'Dog', '*.jpg'))\n", + "\n", + "# Limit the data set to make the notebook execute quickly.\n", + "cat_files = cat_files[:64]\n", + "dog_files = dog_files[:64]\n", + "\n", + "# The data set has a few images that are not jpeg. Remove them.\n", + "cat_files = [f for f in cat_files if imghdr.what(f) == 'jpeg']\n", + "dog_files = [f for f in dog_files if imghdr.what(f) == 'jpeg']\n", + "\n", + "if(not len(cat_files) or not len(dog_files)):\n", + " print(\"Please download the Kaggle Cats and Dogs dataset form https://www.microsoft.com/en-us/download/details.aspx?id=54765 and extract the zip to \" + datadir) \n", + " raise ValueError(\"Data not found\")\n", + "else:\n", + " print(cat_files[0])\n", + " print(dog_files[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Construct a numpy array as labels\n", + "image_paths = cat_files + dog_files\n", + "total_files = len(cat_files) + len(dog_files)\n", + "labels = np.zeros(total_files)\n", + "labels[len(cat_files):] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Split images data as training data and test data\n", + "from sklearn.model_selection import train_test_split\n", + "onehot_labels = np.array([[0,1] if i else [1,0] for i in labels])\n", + "img_train, img_test, label_train, label_test = train_test_split(image_paths, onehot_labels, random_state=42, shuffle=True)\n", + "\n", + "print(len(img_train), len(img_test), label_train.shape, label_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Construct Model\n", + "We use ResNet50 for the featuirzer and build our own classifier using Keras layers. We train the featurizer and the classifier as one model. The weights trained on ImageNet are used as the starting point for the retraining of our featurizer. The weights are loaded from tensorflow chkeckpoint files." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before passing image dataset to the ResNet50 featurizer, we need to preprocess the input file to get it into the form expected by ResNet50. ResNet50 expects float tensors representing the images in BGR, channel last order. We've provided a default implementation of the preprocessing that you can use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import azureml.contrib.brainwave.models.utils as utils\n", + "\n", + "def preprocess_images():\n", + " # Convert images to 3D tensors [width,height,channel] - channels are in BGR order.\n", + " in_images = tf.placeholder(tf.string)\n", + " image_tensors = utils.preprocess_array(in_images)\n", + " return in_images, image_tensors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use Keras layer APIs to construct the classifier. Because we're using the tensorflow backend, we can train this classifier in one session with our Resnet50 model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def construct_classifier(in_tensor):\n", + " from keras.layers import Dropout, Dense, Flatten\n", + " K.set_session(tf.get_default_session())\n", + " \n", + " FC_SIZE = 1024\n", + " NUM_CLASSES = 2\n", + "\n", + " x = Dropout(0.2, input_shape=(1, 1, 2048,))(in_tensor)\n", + " x = Dense(FC_SIZE, activation='relu', input_dim=(1, 1, 2048,))(x)\n", + " x = Flatten()(x)\n", + " preds = Dense(NUM_CLASSES, activation='softmax', input_dim=FC_SIZE, name='classifier_output')(x)\n", + " return preds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now every component of the model is defined, we can construct the model. Constructing the model with the project brainwave models is two steps - first we import the graph definition, then we restore the weights of the model into a tensorflow session. Because the quantized graph defintion and the float32 graph defintion share the same node names in the graph definitions, we can initally train the weights in float32, and then reload them with the quantized operations (which take longer) to fine-tune the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def construct_model(quantized, starting_weights_directory = None):\n", + " from azureml.contrib.brainwave.models import Resnet50, QuantizedResnet50\n", + " \n", + " # Convert images to 3D tensors [width,height,channel]\n", + " in_images, image_tensors = preprocess_images()\n", + "\n", + " # Construct featurizer using quantized or unquantized ResNet50 model\n", + " if not quantized:\n", + " featurizer = Resnet50(saved_model_dir)\n", + " else:\n", + " featurizer = QuantizedResnet50(saved_model_dir, custom_weights_directory = starting_weights_directory)\n", + "\n", + "\n", + " features = featurizer.import_graph_def(input_tensor=image_tensors)\n", + " # Construct classifier\n", + " preds = construct_classifier(features)\n", + " \n", + " # Initialize weights\n", + " sess = tf.get_default_session()\n", + " tf.global_variables_initializer().run()\n", + "\n", + " featurizer.restore_weights(sess)\n", + "\n", + " return in_images, image_tensors, features, preds, featurizer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train Model\n", + "First we train the model with custom weights but without quantization. Training is done with native float precision (32-bit floats). We load the traing data set and batch the training with 10 epochs. When the performance reaches desired level or starts decredation, we stop the training iteration and save the weights as tensorflow checkpoint files. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def read_files(files):\n", + " \"\"\" Read files to array\"\"\"\n", + " contents = []\n", + " for path in files:\n", + " with open(path, 'rb') as f:\n", + " contents.append(f.read())\n", + " return contents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def train_model(preds, in_images, img_train, label_train, is_retrain = False, train_epoch = 10):\n", + " \"\"\" training model \"\"\"\n", + " from keras.objectives import binary_crossentropy\n", + " from tqdm import tqdm\n", + " \n", + " learning_rate = 0.001 if is_retrain else 0.01\n", + " \n", + " # Specify the loss function\n", + " in_labels = tf.placeholder(tf.float32, shape=(None, 2)) \n", + " cross_entropy = tf.reduce_mean(binary_crossentropy(in_labels, preds))\n", + " optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n", + "\n", + " def chunks(a, b, n):\n", + " \"\"\"Yield successive n-sized chunks from a and b.\"\"\"\n", + " if (len(a) != len(b)):\n", + " print(\"a and b are not equal in chunks(a,b,n)\")\n", + " raise ValueError(\"Parameter error\")\n", + "\n", + " for i in range(0, len(a), n):\n", + " yield a[i:i + n], b[i:i + n]\n", + "\n", + " chunk_size = 16\n", + " chunk_num = len(label_train) / chunk_size\n", + "\n", + " sess = tf.get_default_session()\n", + " for epoch in range(train_epoch):\n", + " avg_loss = 0\n", + " for img_chunk, label_chunk in tqdm(chunks(img_train, label_train, chunk_size)):\n", + " contents = read_files(img_chunk)\n", + " _, loss = sess.run([optimizer, cross_entropy],\n", + " feed_dict={in_images: contents,\n", + " in_labels: label_chunk,\n", + " K.learning_phase(): 1})\n", + " avg_loss += loss / chunk_num\n", + " print(\"Epoch:\", (epoch + 1), \"loss = \", \"{:.3f}\".format(avg_loss))\n", + " \n", + " # Reach desired performance\n", + " if (avg_loss < 0.001):\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def test_model(preds, in_images, img_test, label_test):\n", + " \"\"\"Test the model\"\"\"\n", + " from keras.metrics import categorical_accuracy\n", + "\n", + " in_labels = tf.placeholder(tf.float32, shape=(None, 2))\n", + " accuracy = tf.reduce_mean(categorical_accuracy(in_labels, preds))\n", + " contents = read_files(img_test)\n", + "\n", + " accuracy = accuracy.eval(feed_dict={in_images: contents,\n", + " in_labels: label_test,\n", + " K.learning_phase(): 0})\n", + " return accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Launch the training\n", + "tf.reset_default_graph()\n", + "sess = tf.Session(graph=tf.get_default_graph())\n", + "\n", + "with sess.as_default():\n", + " in_images, image_tensors, features, preds, featurizer = construct_model(quantized=False)\n", + " train_model(preds, in_images, img_train, label_train, is_retrain=False, train_epoch=10) \n", + " accuracy = test_model(preds, in_images, img_test, label_test) \n", + " print(\"Accuracy:\", accuracy)\n", + " featurizer.save_weights(custom_weights_dir + \"/rn50\", tf.get_default_session())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test Model\n", + "After training, we evaluate the trained model's accuracy on test dataset with quantization. So that we know the model's performance if it is deployed on the FPGA." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tf.reset_default_graph()\n", + "sess = tf.Session(graph=tf.get_default_graph())\n", + "\n", + "with sess.as_default():\n", + " print(\"Testing trained model with quantization\")\n", + " in_images, image_tensors, features, preds, quantized_featurizer = construct_model(quantized=True, starting_weights_directory=custom_weights_dir)\n", + " accuracy = test_model(preds, in_images, img_test, label_test) \n", + " print(\"Accuracy:\", accuracy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fine-Tune Model\n", + "Sometimes, the model's accuracy can drop significantly after quantization. In those cases, we need to retrain the model enabled with quantization to get better model accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if (accuracy < 0.93):\n", + " with sess.as_default():\n", + " print(\"Fine-tuning model with quantization\")\n", + " train_model(preds, in_images, img_train, label_train, is_retrain=True, train_epoch=10)\n", + " accuracy = test_model(preds, in_images, img_test, label_test) \n", + " print(\"Accuracy:\", accuracy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Service Definition\n", + "Like in the QuickStart notebook our service definition pipeline consists of three stages. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.pipeline import ModelDefinition, TensorflowStage, BrainWaveStage\n", + "\n", + "model_def_path = os.path.join(saved_model_dir, 'model_def.zip')\n", + "\n", + "model_def = ModelDefinition()\n", + "model_def.pipeline.append(TensorflowStage(sess, in_images, image_tensors))\n", + "model_def.pipeline.append(BrainWaveStage(sess, quantized_featurizer))\n", + "model_def.pipeline.append(TensorflowStage(sess, features, preds))\n", + "model_def.save(model_def_path)\n", + "print(model_def_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy\n", + "Go to our [GitHub repo](https://aka.ms/aml-real-time-ai) \"docs\" folder to learn how to create a Model Management Account and find the required information below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first time the code below runs it will create a new service running your model. If you want to change the model you can make changes above in this notebook and save a new service definition. Then this code will update the running service in place to run the new model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "from azureml.core.image import Image\n", + "from azureml.core.webservice import Webservice\n", + "from azureml.contrib.brainwave import BrainwaveWebservice, BrainwaveImage\n", + "from azureml.exceptions import WebserviceException\n", + "\n", + "model_name = \"catsanddogs-resnet50-model\"\n", + "image_name = \"catsanddogs-resnet50-image\"\n", + "service_name = \"modelbuild-service\"\n", + "\n", + "registered_model = Model.register(ws, model_def_path, model_name)\n", + "\n", + "image_config = BrainwaveImage.image_configuration()\n", + "deployment_config = BrainwaveWebservice.deploy_configuration()\n", + " \n", + "try:\n", + " service = Webservice(ws, service_name)\n", + " service.delete()\n", + " service = Webservice.deploy_from_model(ws, service_name, [registered_model], image_config, deployment_config)\n", + " service.wait_for_deployment(True)\n", + "except WebserviceException:\n", + " service = Webservice.deploy_from_model(ws, service_name, [registered_model], image_config, deployment_config)\n", + " service.wait_for_deployment(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The service is now running in Azure and ready to serve requests. We can check the address and port." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.ipAddress + ':' + str(service.port))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Client\n", + "There is a simple test client at amlrealtimeai.PredictionClient which can be used for testing. We'll use this client to score an image with our new service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.client import PredictionClient\n", + "client = PredictionClient(service.ipAddress, service.port)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can adapt the client [code](../../pythonlib/amlrealtimeai/client.py) to meet your needs. There is also an example C# [client](../../sample-clients/csharp).\n", + "\n", + "The service provides an API that is compatible with TensorFlow Serving. There are instructions to download a sample client [here](https://www.tensorflow.org/serving/setup)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Request\n", + "Let's see how our service does on a few images. It may get a few wrong." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify an image to classify\n", + "print('CATS')\n", + "for image_file in cat_files[:8]:\n", + " results = client.score_image(image_file)\n", + " result = 'CORRECT ' if results[0] > results[1] else 'WRONG '\n", + " print(result + str(results))\n", + "print('DOGS')\n", + "for image_file in dog_files[:8]:\n", + " results = client.score_image(image_file)\n", + " result = 'CORRECT ' if results[1] > results[0] else 'WRONG '\n", + " print(result + str(results))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\n", + "Run the cell below to delete your service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "License for plot_confusion_matrix:\n", + "\n", + "New BSD License\n", + "\n", + "Copyright (c) 2007-2018 The scikit-learn developers.\n", + "All rights reserved.\n", + "\n", + "\n", + "Redistribution and use in source and binary forms, with or without\n", + "modification, are permitted provided that the following conditions are met:\n", + "\n", + " a. Redistributions of source code must retain the above copyright notice,\n", + " this list of conditions and the following disclaimer.\n", + " b. Redistributions in binary form must reproduce the above copyright\n", + " notice, this list of conditions and the following disclaimer in the\n", + " documentation and/or other materials provided with the distribution.\n", + " c. Neither the name of the Scikit-learn Developers nor the names of\n", + " its contributors may be used to endorse or promote products\n", + " derived from this software without specific prior written\n", + " permission. \n", + "\n", + "\n", + "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + "AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + "ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR\n", + "ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n", + "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n", + "SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n", + "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n", + "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n", + "OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n", + "DAMAGE.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "authors": [ + { + "name": "coverste" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/project-brainwave/project-brainwave-quickstart.ipynb b/project-brainwave/project-brainwave-quickstart.ipynb new file mode 100644 index 00000000..c8f7f362 --- /dev/null +++ b/project-brainwave/project-brainwave-quickstart.ipynb @@ -0,0 +1,312 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Azure ML Hardware Accelerated Models Quickstart" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial will show you how to deploy an image recognition service based on the ResNet 50 classifier in just a few minutes using the Azure Machine Learning Accelerated AI service. Get more help from our [documentation](https://aka.ms/aml-real-time-ai) or [forum](https://aka.ms/aml-forum).\n", + "\n", + "We will use an accelerated ResNet50 featurizer running on an FPGA. This functionality is powered by Project Brainwave, which handles translating deep neural networks (DNN) into an FPGA program.\n", + "\n", + "## Request Quota\n", + "**IMPORTANT:** You must [request quota](https://aka.ms/aml-real-time-ai-request) and be approved before you can successfully run this notebook. Notebook 00 will show you how to create a workspace which you can use to request quota." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import tensorflow as tf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Image preprocessing\n", + "We'd like our service to accept JPEG images as input. However the input to ResNet50 is a tensor. So we need code that decodes JPEG images and does the preprocessing required by ResNet50. The Accelerated AI service can execute TensorFlow graphs as part of the service and we'll use that ability to do the image preprocessing. This code defines a TensorFlow graph that preprocesses an array of JPEG images (as strings) and produces a tensor that is ready to be featurized by ResNet50." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Input images as a two-dimensional tensor containing an arbitrary number of images represented a strings\n", + "import azureml.contrib.brainwave.models.utils as utils\n", + "in_images = tf.placeholder(tf.string)\n", + "image_tensors = utils.preprocess_array(in_images)\n", + "print(image_tensors.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Featurizer\n", + "We use ResNet50 as a featurizer. In this step we initialize the model. This downloads a TensorFlow checkpoint of the quantized ResNet50." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.models import QuantizedResnet50\n", + "model_path = os.path.expanduser('~/models')\n", + "model = QuantizedResnet50(model_path, is_frozen = True)\n", + "feature_tensor = model.import_graph_def(image_tensors)\n", + "print(model.version)\n", + "print(feature_tensor.name)\n", + "print(feature_tensor.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classifier\n", + "The model we downloaded includes a classifier which takes the output of the ResNet50 and identifies an image. This classifier is trained on the ImageNet dataset. We are going to use this classifier for our service. The next [notebook](project-brainwave-trainsfer-learning.ipynb) shows how to train a classifier for a different data set. The input to the classifier is a tensor matching the output of our ResNet50 featurizer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "classifier_output = model.get_default_classifier(feature_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Service Definition\n", + "Now that we've definied the image preprocessing, featurizer, and classifier that we will execute on our service we can create a service definition. The service definition is a set of files generated from the model that allow us to deploy to the FPGA service. The service definition consists of a pipeline. The pipeline is a series of stages that are executed in order. We support TensorFlow stages, Keras stages, and BrainWave stages. The stages will be executed in order on the service, with the output of each stage input into the subsequent stage.\n", + "\n", + "To create a TensorFlow stage we specify a session containing the graph (in this case we are using the default graph) and the input and output tensors to this stage. We use this information to save the graph so that we can execute it on the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.pipeline import ModelDefinition, TensorflowStage, BrainWaveStage\n", + "\n", + "save_path = os.path.expanduser('~/models/save')\n", + "model_def_path = os.path.join(save_path, 'model_def.zip')\n", + "\n", + "model_def = ModelDefinition()\n", + "with tf.Session() as sess:\n", + " model_def.pipeline.append(TensorflowStage(sess, in_images, image_tensors))\n", + " model_def.pipeline.append(BrainWaveStage(sess, model))\n", + " model_def.pipeline.append(TensorflowStage(sess, feature_tensor, classifier_output))\n", + " model_def.save(model_def_path)\n", + " print(model_def_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy\n", + "Time to create a service from the service definition. You need a Workspace in the **East US 2** location. In the previous notebooks, you've created this Workspace. The code below will load that Workspace from a configuration file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Upload the model to the workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "model_name = \"resnet-50-rtai\"\n", + "registered_model = Model.register(ws, model_def_path, model_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a service from the model that we registered. If this is a new service then we create it. If you already have a service with this name then the existing service will be updated to use this model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "from azureml.exceptions import WebserviceException\n", + "from azureml.contrib.brainwave import BrainwaveWebservice, BrainwaveImage\n", + "service_name = \"imagenet-infer\"\n", + "service = None\n", + "try:\n", + " service = Webservice(ws, service_name)\n", + "except WebserviceException:\n", + " image_config = BrainwaveImage.image_configuration()\n", + " deployment_config = BrainwaveWebservice.deploy_configuration()\n", + " service = Webservice.deploy_from_model(ws, service_name, [registered_model], image_config, deployment_config)\n", + " service.wait_for_deployment(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Client\n", + "The service supports gRPC and the TensorFlow Serving \"predict\" API. We provide a client that can call the service to get predictions on aka.ms/rtai. You can also invoke the service like any other web service." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To understand the results we need a mapping to the human readable imagenet classes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "classes_entries = requests.get(\"https://raw.githubusercontent.com/Lasagne/Recipes/master/examples/resnet50/imagenet_classes.txt\").text.splitlines()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now send an image to the service and get the predictions. Let's see if it can identify a snow leopard.\n", + "![title](snowleopardgaze.jpg)\n", + "Snow leopard in a zoo. Photo by Peter Bolliger.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results = service.run('snowleopardgaze.jpg')\n", + "# map results [class_id] => [confidence]\n", + "results = enumerate(results)\n", + "# sort results by confidence\n", + "sorted_results = sorted(results, key=lambda x: x[1], reverse=True)\n", + "# print top 5 results\n", + "for top in sorted_results[:5]:\n", + " print(classes_entries[top[0]], 'confidence:', top[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\n", + "Run the cell below to delete your service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations! You've just created a service that does predictions using an FPGA. The next [notebook](project-brainwave-trainsfer-learning.ipynb) shows how to customize the service using transfer learning to classify different types of images." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "authors": [ + { + "name": "coverste" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/project-brainwave/project-brainwave-transfer-learning.ipynb b/project-brainwave/project-brainwave-transfer-learning.ipynb new file mode 100644 index 00000000..1448deeb --- /dev/null +++ b/project-brainwave/project-brainwave-transfer-learning.ipynb @@ -0,0 +1,572 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Development" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example shows how to build, train, evaluate and deploy a model running on FPGA. Only Windows is supported. We use TensorFlow and Keras to build our model. We are going to use transfer learning, with ResNet152 as a featurizer. We don't use the last layer of ResNet152 in this case and instead add and train our own classification layer.\n", + "\n", + "We will use the Kaggle Cats and Dogs dataset to train the classifier. The dataset can be downloaded [here](https://www.microsoft.com/en-us/download/details.aspx?id=54765). Download the zip and extract to a directory named 'catsanddogs' under your user directory (\"~/catsanddogs\").\n", + "\n", + "Please set up your environment as described in the [quick start](project-brainwave-quickstart.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import tensorflow as tf\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model Construction\n", + "Load the files we are going to use for training and testing. By default this notebook uses only a very small subset of the Cats and Dogs dataset. That makes it run quickly, but doesn't create a very accurate classifier. You can improve the classifier by using more of the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import imghdr\n", + "datadir = os.path.expanduser(\"~/catsanddogs\")\n", + "\n", + "cat_files = glob.glob(os.path.join(datadir, 'PetImages', 'Cat', '*.jpg'))\n", + "dog_files = glob.glob(os.path.join(datadir, 'PetImages', 'Dog', '*.jpg'))\n", + "\n", + "# Limit the data set to make the notebook execute quickly.\n", + "cat_files = cat_files[:64]\n", + "dog_files = dog_files[:64]\n", + "\n", + "# The data set has a few images that are not jpeg. Remove them.\n", + "cat_files = [f for f in cat_files if imghdr.what(f) == 'jpeg']\n", + "dog_files = [f for f in dog_files if imghdr.what(f) == 'jpeg']\n", + "\n", + "if(not len(cat_files) or not len(dog_files)):\n", + " print(\"Please download the Kaggle Cats and Dogs dataset form https://www.microsoft.com/en-us/download/details.aspx?id=54765 and extract the zip to \" + datadir) \n", + " raise ValueError(\"Data not found\")\n", + "else:\n", + " print(cat_files[0])\n", + " print(dog_files[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# constructing a numpy array as labels\n", + "image_paths = cat_files + dog_files\n", + "total_files = len(cat_files) + len(dog_files)\n", + "labels = np.zeros(total_files)\n", + "labels[len(cat_files):] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to preprocess the input file to get it into the form expected by ResNet152. We've provided a default implementation of the preprocessing that you can use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Input images as a two-dimensional tensor containing an arbitrary number of images represented a strings\n", + "import azureml.contrib.brainwave.models.utils as utils\n", + "in_images = tf.placeholder(tf.string)\n", + "image_tensors = utils.preprocess_array(in_images)\n", + "print(image_tensors.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, if you would like to customize the preprocessing, you can write your own preprocessor using TensorFlow operations.\n", + "\n", + "The input to the classifier we are training is the set of features produced by ResNet50. To train the classifier we need to \n", + "featurize the images using ResNet50. You can also run the featurizer locally on CPU or GPU. We import the featurizer as frozen, so that we are only training the classifier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.models import QuantizedResnet152\n", + "model_path = os.path.expanduser('~/models')\n", + "bwmodel = QuantizedResnet152(model_path, is_frozen = True)\n", + "print(bwmodel.version)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calling import_graph_def on the featurizer will create a service that runs the featurizer on FPGA." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "features = bwmodel.import_graph_def(input_tensor=image_tensors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pre-compute features\n", + "Load the data set and compute the features. These can be precomputed because they don't change during training. This can take a while to run on CPU." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "\n", + "def chunks(l, n):\n", + " \"\"\"Yield successive n-sized chunks from l.\"\"\"\n", + " for i in range(0, len(l), n):\n", + " yield l[i:i + n]\n", + "\n", + "def read_files(files):\n", + " contents = []\n", + " for path in files:\n", + " with open(path, 'rb') as f:\n", + " contents.append(f.read())\n", + " return contents\n", + " \n", + "feature_list = []\n", + "with tf.Session() as sess:\n", + " for chunk in tqdm(chunks(image_paths, 5)):\n", + " contents = read_files(chunk)\n", + " result = sess.run([features], feed_dict={in_images: contents})\n", + " feature_list.extend(result[0])\n", + "\n", + "feature_results = np.array(feature_list)\n", + "print(feature_results.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add and Train the classifier\n", + "We use Keras to define and train a simple classifier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dropout, Dense, Flatten\n", + "from keras import optimizers\n", + "\n", + "FC_SIZE = 1024\n", + "NUM_CLASSES = 2\n", + "\n", + "model = Sequential()\n", + "model.add(Dropout(0.2, input_shape=(1, 1, 2048,)))\n", + "model.add(Dense(FC_SIZE, activation='relu', input_dim=(1, 1, 2048,)))\n", + "model.add(Flatten())\n", + "model.add(Dense(NUM_CLASSES, activation='sigmoid', input_dim=FC_SIZE))\n", + "\n", + "model.compile(optimizer=optimizers.SGD(lr=1e-4,momentum=0.9), loss='binary_crossentropy', metrics=['accuracy'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare the train and test data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "onehot_labels = np.array([[0,1] if i else [1,0] for i in labels])\n", + "X_train, X_test, y_train, y_test = train_test_split(feature_results, onehot_labels, random_state=42, shuffle=True)\n", + "print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Train the classifier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model.fit(X_train, y_train, epochs=16, batch_size=32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test the Classifier\n", + "Let's test the classifier and see how well it does. Since we only trained on a few images, we are not expecting to win a Kaggle competition, but it will likely get most of the images correct. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import argmax\n", + "\n", + "y_probs = model.predict(X_test)\n", + "y_prob_max = np.argmax(y_probs, 1)\n", + "y_test_max = np.argmax(y_test, 1)\n", + "print(y_prob_max)\n", + "print(y_test_max)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import confusion_matrix, roc_auc_score, accuracy_score, precision_score, recall_score, f1_score\n", + "import itertools\n", + "import matplotlib\n", + "from matplotlib import pyplot as plt\n", + "\n", + "# compute a bunch of classification metrics \n", + "def classification_metrics(y_true, y_pred, y_prob):\n", + " cm_dict = {}\n", + " cm_dict['Accuracy'] = accuracy_score(y_true, y_pred)\n", + " cm_dict['Precision'] = precision_score(y_true, y_pred)\n", + " cm_dict['Recall'] = recall_score(y_true, y_pred)\n", + " cm_dict['F1'] = f1_score(y_true, y_pred) \n", + " cm_dict['AUC'] = roc_auc_score(y_true, y_prob[:,0])\n", + " cm_dict['Confusion Matrix'] = confusion_matrix(y_true, y_pred).tolist()\n", + " return cm_dict\n", + "\n", + "def plot_confusion_matrix(cm, classes, normalize=False, title='Confusion matrix', cmap=plt.cm.Blues):\n", + " \"\"\"Plots a confusion matrix.\n", + " Source: http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html\n", + " New BSD License - see appendix\n", + " \"\"\"\n", + " cm_max = cm.max()\n", + " cm_min = cm.min()\n", + " if cm_min > 0: cm_min = 0\n", + " if normalize:\n", + " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", + " cm_max = 1\n", + " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", + " plt.title(title)\n", + " plt.colorbar()\n", + " tick_marks = np.arange(len(classes))\n", + " plt.xticks(tick_marks, classes, rotation=45)\n", + " plt.yticks(tick_marks, classes)\n", + " thresh = cm_max / 2.\n", + " plt.clim(cm_min, cm_max)\n", + "\n", + " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", + " plt.text(j, i,\n", + " round(cm[i, j], 3), # round to 3 decimals if they are float\n", + " horizontalalignment=\"center\",\n", + " color=\"white\" if cm[i, j] > thresh else \"black\")\n", + " plt.ylabel('True label')\n", + " plt.xlabel('Predicted label')\n", + " plt.show()\n", + " \n", + "cm_dict = classification_metrics(y_test_max, y_prob_max, y_probs)\n", + "for m in cm_dict:\n", + " print(m, cm_dict[m])\n", + "cm = np.asarray(cm_dict['Confusion Matrix'])\n", + "plot_confusion_matrix(cm, ['fail','pass'], normalize=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Service Definition\n", + "Like in the QuickStart notebook our service definition pipeline consists of three stages. Because the preprocessing and featurizing stage don't contain any variables, we can use a default session.\n", + "Here we use the Keras classifier as the final stage." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.pipeline import ModelDefinition, TensorflowStage, BrainWaveStage, KerasStage\n", + "\n", + "model_def = ModelDefinition()\n", + "model_def.pipeline.append(TensorflowStage(tf.Session(), in_images, image_tensors))\n", + "model_def.pipeline.append(BrainWaveStage(tf.Session(), bwmodel))\n", + "model_def.pipeline.append(KerasStage(model))\n", + "\n", + "model_def_path = os.path.join(datadir, 'save', 'model_def')\n", + "model_def.save(model_def_path)\n", + "print(model_def_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')\n", + "model_name = \"catsanddogs-model\"\n", + "service_name = \"modelbuild-service\"\n", + "\n", + "registered_model = Model.register(ws, model_def_path, model_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first time the code below runs it will create a new service running your model. If you want to change the model you can make changes above in this notebook and save a new service definition. Then this code will update the running service in place to run the new model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import Webservice\n", + "from azureml.exceptions import WebserviceException\n", + "from azureml.contrib.brainwave import BrainwaveWebservice, BrainwaveImage\n", + "try:\n", + " service = Webservice(ws, service_name)\n", + "except WebserviceException:\n", + " image_config = BrainwaveImage.image_configuration()\n", + " deployment_config = BrainwaveWebservice.deploy_configuration()\n", + " service = Webservice.deploy_from_model(ws, service_name, [registered_model], image_config, deployment_config)\n", + " service.wait_for_deployment(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The service is now running in Azure and ready to serve requests. We can check the address and port." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.ipAddress + ':' + str(service.port))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Client\n", + "There is a simple test client at amlrealtimeai.PredictionClient which can be used for testing. We'll use this client to score an image with our new service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.brainwave.client import PredictionClient\n", + "client = PredictionClient(service.ipAddress, service.port)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can adapt the client [code](../../pythonlib/amlrealtimeai/client.py) to meet your needs. There is also an example C# [client](../../sample-clients/csharp).\n", + "\n", + "The service provides an API that is compatible with TensorFlow Serving. There are instructions to download a sample client [here](https://www.tensorflow.org/serving/setup)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Request\n", + "Let's see how our service does on a few images. It may get a few wrong." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify an image to classify\n", + "print('CATS')\n", + "for image_file in cat_files[:8]:\n", + " results = client.score_image(image_file)\n", + " result = 'CORRECT ' if results[0] > results[1] else 'WRONG '\n", + " print(result + str(results))\n", + "print('DOGS')\n", + "for image_file in dog_files[:8]:\n", + " results = client.score_image(image_file)\n", + " result = 'CORRECT ' if results[1] > results[0] else 'WRONG '\n", + " print(result + str(results))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\n", + "Run the cell below to delete your service. In the [next notebook](project-brainwave-custom-weights.ipynb) you will learn how to retrain all the weights of one of the models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()\n", + " \n", + "registered_model.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "License for plot_confusion_matrix:\n", + "\n", + "New BSD License\n", + "\n", + "Copyright (c) 2007\u00e2\u20ac\u201c2018 The scikit-learn developers.\n", + "All rights reserved.\n", + "\n", + "\n", + "Redistribution and use in source and binary forms, with or without\n", + "modification, are permitted provided that the following conditions are met:\n", + "\n", + " a. Redistributions of source code must retain the above copyright notice,\n", + " this list of conditions and the following disclaimer.\n", + " b. Redistributions in binary form must reproduce the above copyright\n", + " notice, this list of conditions and the following disclaimer in the\n", + " documentation and/or other materials provided with the distribution.\n", + " c. Neither the name of the Scikit-learn Developers nor the names of\n", + " its contributors may be used to endorse or promote products\n", + " derived from this software without specific prior written\n", + " permission. \n", + "\n", + "\n", + "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + "AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + "ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR\n", + "ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n", + "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n", + "SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n", + "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n", + "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n", + "OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n", + "DAMAGE.\n" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "coverste" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/01.train-hyperparameter-tune-deploy-with-pytorch/01.train-hyperparameter-tune-deploy-with-pytorch.ipynb b/training/01.train-hyperparameter-tune-deploy-with-pytorch/01.train-hyperparameter-tune-deploy-with-pytorch.ipynb new file mode 100644 index 00000000..bd190af5 --- /dev/null +++ b/training/01.train-hyperparameter-tune-deploy-with-pytorch/01.train-hyperparameter-tune-deploy-with-pytorch.ipynb @@ -0,0 +1,804 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved. \n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 01. Train, hyperparameter tune, and deploy with PyTorch\n", + "\n", + "In this tutorial, you will train, hyperparameter tune, and deploy a PyTorch model using the Azure Machine Learning (AML) Python SDK.\n", + "\n", + "This tutorial will train an image classification model using transfer learning, based on PyTorch's [Transfer Learning tutorial](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html). The model is trained to classify ants and bees by first using a pretrained ResNet18 model that has been trained on the [ImageNet](http://image-net.org/index) dataset." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target.')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload training data\n", + "The dataset we will use consists of about 120 training images each for ants and bees, with 75 validation images for each class.\n", + "\n", + "First, download the dataset (located [here](https://download.pytorch.org/tutorial/hymenoptera_data.zip) as a zip file) locally to your current directory and extract the files. This will create a folder called `hymenoptera_data` with two subfolders `train` and `val` that contain the training and validation images, respectively. [Hymenoptera](https://en.wikipedia.org/wiki/Hymenoptera) is the order of insects that includes ants and bees." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib\n", + "from zipfile import ZipFile\n", + "\n", + "# download data\n", + "download_url = 'https://download.pytorch.org/tutorial/hymenoptera_data.zip'\n", + "data_file = './hymenoptera_data.zip'\n", + "urllib.request.urlretrieve(download_url, filename=data_file)\n", + "\n", + "# extract files\n", + "with ZipFile(data_file, 'r') as zip:\n", + " print('extracting files...')\n", + " zip.extractall()\n", + " print('done')\n", + " \n", + "# delete zip file\n", + "os.remove(data_file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make the data accessible for remote training, you will need to upload the data from your local machine to the cloud. AML provides a convenient way to do so via a [Datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data). The datastore provides a mechanism for you to upload/download data, and interact with it from your remote compute targets. \n", + "\n", + "**Note: If your data is already stored in Azure, or you download the data as part of your training script, you will not need to do this step.**\n", + "\n", + "Each workspace is associated with a default datastore. In this tutorial, we will upload the training data to this default datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "print(ds.datastore_type, ds.account_name, ds.container_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code will upload the training data to the path `./hymenoptera_data` on the default datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds.upload(src_dir='./hymenoptera_data', target_path='hymenoptera_data')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's get a reference to the path on the datastore with the training data. We can do so using the `path` method. In the next section, we can then pass this reference to our training script's `--data_dir` argument. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "path_on_datastore = 'hymenoptera_data'\n", + "ds_data = ds.path(path_on_datastore)\n", + "print(ds_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model on the remote compute\n", + "Now that you have your data and training script prepared, you are ready to train on your remote compute cluster. You can take advantage of Azure compute to leverage GPUs to cut down your training time. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "project_folder = './pytorch-hymenoptera'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare training script\n", + "Now you will need to create your training script. In this tutorial, the training script is already provided for you at `pytorch_train.py`. In practice, you should be able to take any custom training script as is and run it with AML without having to modify your code.\n", + "\n", + "However, if you would like to use AML's [tracking and metrics](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#metrics) capabilities, you will have to add a small amount of AML code inside your training script. \n", + "\n", + "In `pytorch_train.py`, we will log some metrics to our AML run. To do so, we will access the AML run object within the script:\n", + "```Python\n", + "from azureml.core.run import Run\n", + "run = Run.get_context()\n", + "```\n", + "Further within `pytorch_train.py`, we log the learning rate and momentum parameters, and the best validation accuracy the model achieves:\n", + "```Python\n", + "run.log('lr', np.float(learning_rate))\n", + "run.log('momentum', np.float(momentum))\n", + "\n", + "run.log('best_val_acc', np.float(best_acc))\n", + "```\n", + "These run metrics will become particularly important when we begin hyperparameter tuning our model in the \"Tune model hyperparameters\" section." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once your script is ready, copy the training script `pytorch_train.py` into your project directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('pytorch_train.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this transfer learning PyTorch tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'pytorch-hymenoptera'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a PyTorch estimator\n", + "The AML SDK's PyTorch estimator enables you to easily submit PyTorch training jobs for both single-node and distributed runs. For more information on the PyTorch estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-pytorch). The following code will define a single-node PyTorch job." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import PyTorch\n", + "\n", + "script_params = {\n", + " '--data_dir': ds_data,\n", + " '--num_epochs': 25,\n", + " '--output_dir': './outputs'\n", + "}\n", + "\n", + "estimator = PyTorch(source_directory=project_folder, \n", + " script_params=script_params,\n", + " compute_target=compute_target,\n", + " entry_script='pytorch_train.py',\n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `script_params` parameter is a dictionary containing the command-line arguments to your training script `entry_script`. Please note the following:\n", + "- We passed our training data reference `ds_data` to our script's `--data_dir` argument. This will 1) mount our datastore on the remote compute and 2) provide the path to the training data `hymenoptera_data` on our datastore.\n", + "- We specified the output directory as `./outputs`. The `outputs` directory is specially treated by AML in that all the content in this directory gets uploaded to your workspace as part of your run history. The files written to this directory are therefore accessible even once your remote run is over. In this tutorial, we will save our trained model to this output directory.\n", + "\n", + "To leverage the Azure VM's GPU for training, we set `use_gpu=True`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run.get_details())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tune model hyperparameters\n", + "Now that we've seen how to do a simple PyTorch training run using the SDK, let's see if we can further improve the accuracy of our model. We can optimize our model's hyperparameters using Azure Machine Learning's hyperparameter tuning capabilities." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Start a hyperparameter sweep\n", + "First, we will define the hyperparameter space to sweep over. Since our training script uses a learning rate schedule to decay the learning rate every several epochs, let's tune the initial learning rate and the momentum parameters. In this example we will use random sampling to try different configuration sets of hyperparameters to maximize our primary metric, the best validation accuracy (`best_val_acc`).\n", + "\n", + "Then, we specify the early termination policy to use to early terminate poorly performing runs. Here we use the `BanditPolicy`, which will terminate any run that doesn't fall within the slack factor of our primary evaluation metric. In this tutorial, we will apply this policy every epoch (since we report our `best_val_acc` metric every epoch and `evaluation_interval=1`). Notice we will delay the first policy evaluation until after the first `10` epochs (`delay_evaluation=10`).\n", + "Refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-tune-hyperparameters#specify-an-early-termination-policy) for more information on the BanditPolicy and other policies available." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.hyperdrive import *\n", + "\n", + "param_sampling = RandomParameterSampling( {\n", + " 'learning_rate': uniform(0.0005, 0.005),\n", + " 'momentum': uniform(0.9, 0.99)\n", + " }\n", + ")\n", + "\n", + "early_termination_policy = BanditPolicy(slack_factor=0.15, evaluation_interval=1, delay_evaluation=10)\n", + "\n", + "hyperdrive_run_config = HyperDriveRunConfig(estimator=estimator,\n", + " hyperparameter_sampling=param_sampling, \n", + " policy=early_termination_policy,\n", + " primary_metric_name='best_val_acc',\n", + " primary_metric_goal=PrimaryMetricGoal.MAXIMIZE,\n", + " max_total_runs=20,\n", + " max_concurrent_runs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, lauch the hyperparameter tuning job." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# start the HyperDrive run\n", + "hyperdrive_run = experiment.submit(hyperdrive_run_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor HyperDrive runs\n", + "You can monitor the progress of the runs with the following Jupyter widget. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "\n", + "RunDetails(hyperdrive_run).show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hyperdrive_run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Find and register the best model\n", + "Once all the runs complete, we can find the run that produced the model with the highest accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run = hyperdrive_run.get_best_run_by_primary_metric()\n", + "best_run_metrics = best_run.get_metrics()\n", + "print(best_run)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Best Run is:\\n Validation accuracy: {0:.5f} \\n Learning rate: {1:.5f} \\n Momentum: {2:.5f}'.format(\n", + " best_run_metrics['best_val_acc'][-1],\n", + " best_run_metrics['lr'],\n", + " best_run_metrics['momentum'])\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, register the model from your best-performing run to your workspace. The `model_path` parameter takes in the relative path on the remote VM to the model file in your `outputs` directory. In the next section, we will deploy this registered model as a web service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = best_run.register_model(model_name = 'pytorch-hymenoptera', model_path = 'outputs/model.pt')\n", + "print(model.name, model.id, model.version, sep = '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy model as web service\n", + "Once you have your trained model, you can deploy the model on Azure. In this tutorial, we will deploy the model as a web service in [Azure Container Instances](https://docs.microsoft.com/en-us/azure/container-instances/) (ACI). For more information on deploying models using Azure ML, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-deploy-and-where)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create scoring script\n", + "\n", + "First, we will create a scoring script that will be invoked by the web service call. Note that the scoring script must have two required functions:\n", + "* `init()`: In this function, you typically load the model into a `global` object. This function is executed only once when the Docker container is started. \n", + "* `run(input_data)`: In this function, the model is used to predict a value based on the input data. The input and output typically use JSON as serialization and deserialization format, but you are not limited to that.\n", + "\n", + "Refer to the scoring script `pytorch_score.py` for this tutorial. Our web service will use this file to predict whether an image is an ant or a bee. When writing your own scoring script, don't forget to test it locally first before you go and deploy the web service." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create environment file\n", + "Then, we will need to create an environment file (`myenv.yml`) that specifies all of the scoring script's package dependencies. This file is used to ensure that all of those dependencies are installed in the Docker image by AML. In this case, we need to specify `torch`, `torchvision`, `pillow`, and `azureml-sdk`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile myenv.yml\n", + "name: myenv\n", + "channels:\n", + " - defaults\n", + "dependencies:\n", + " - pip:\n", + " - torch\n", + " - torchvision\n", + " - pillow\n", + " - azureml-core" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure the container image\n", + "Now configure the Docker image that you will use to build your ACI container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "\n", + "image_config = ContainerImage.image_configuration(execution_script='pytorch_score.py', \n", + " runtime='python', \n", + " conda_file='myenv.yml',\n", + " description='Image with hymenoptera model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure the ACI container\n", + "We are almost ready to deploy. Create a deployment configuration file to specify the number of CPUs and gigabytes of RAM needed for your ACI container. While it depends on your model, the default of `1` core and `1` gigabyte of RAM is usually sufficient for many models." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", + " memory_gb=1, \n", + " tags={'data': 'hymenoptera', 'method':'transfer learning', 'framework':'pytorch'},\n", + " description='Classify ants/bees using transfer learning with PyTorch')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy the registered model\n", + "Finally, let's deploy a web service from our registered model. First, retrieve the model from your workspace." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.model import Model\n", + "\n", + "model = Model(ws, name='pytorch-hymenoptera')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, deploy the web service using the ACI config and image config files created in the previous steps. We pass the `model` object in a list to the `models` parameter. If you would like to deploy more than one registered model, append the additional models to this list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "from azureml.core.webservice import Webservice\n", + "\n", + "service_name = 'aci-hymenoptera'\n", + "service = Webservice.deploy_from_model(workspace=ws,\n", + " name=service_name,\n", + " models=[model],\n", + " image_config=image_config,\n", + " deployment_config=aciconfig,)\n", + "\n", + "service.wait_for_deployment(show_output=True)\n", + "print(service.state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If your deployment fails for any reason and you need to redeploy, make sure to delete the service before you do so: `service.delete()`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tip: If something goes wrong with the deployment, the first thing to look at is the logs from the service by running the following command:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.get_logs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the web service's HTTP endpoint, which accepts REST client calls. This endpoint can be shared with anyone who wants to test the web service or integrate it into an application." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the web service\n", + "Finally, let's test our deployed web service. We will send the data as a JSON string to the web service hosted in ACI and use the SDK's `run` API to invoke the service. Here we will take an arbitrary image from our validation data to predict on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os, json, base64\n", + "from io import BytesIO\n", + "from PIL import Image\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def imgToBase64(img):\n", + " \"\"\"Convert pillow image to base64-encoded image\"\"\"\n", + " imgio = BytesIO()\n", + " img.save(imgio, 'JPEG')\n", + " img_str = base64.b64encode(imgio.getvalue())\n", + " return img_str.decode('utf-8')\n", + "\n", + "test_img = os.path.join('hymenoptera_data', 'val', 'bees', '10870992_eebeeb3a12.jpg') #arbitary image from val dataset\n", + "plt.imshow(Image.open(test_img))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "base64Img = imgToBase64(Image.open(test_img))\n", + "\n", + "result = service.run(input_data=json.dumps({'data': base64Img}))\n", + "print(json.loads(result))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Delete web service\n", + "Once you no longer need the web service, you should delete it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "minxia" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "minxia" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_score.py b/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_score.py new file mode 100644 index 00000000..4701758c --- /dev/null +++ b/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_score.py @@ -0,0 +1,57 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. + +import torch +import torch.nn as nn +from torchvision import transforms +import json +import base64 +from io import BytesIO +from PIL import Image + +from azureml.core.model import Model + + +def preprocess_image(image_file): + """Preprocess the input image.""" + data_transforms = transforms.Compose([ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) + ]) + + image = Image.open(image_file) + image = data_transforms(image).float() + image = torch.tensor(image) + image = image.unsqueeze(0) + return image + + +def base64ToImg(base64ImgString): + base64Img = base64ImgString.encode('utf-8') + decoded_img = base64.b64decode(base64Img) + return BytesIO(decoded_img) + + +def init(): + global model + model_path = Model.get_model_path('pytorch-hymenoptera') + model = torch.load(model_path, map_location=lambda storage, loc: storage) + model.eval() + + +def run(input_data): + img = base64ToImg(json.loads(input_data)['data']) + img = preprocess_image(img) + + # get prediction + output = model(img) + + classes = ['ants', 'bees'] + softmax = nn.Softmax(dim=1) + pred_probs = softmax(model(img)).detach().numpy()[0] + index = torch.argmax(output, 1) + + result = {"label": classes[index], "probability": str(pred_probs[index])} + return result diff --git a/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_train.py b/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_train.py new file mode 100644 index 00000000..0c310f93 --- /dev/null +++ b/training/01.train-hyperparameter-tune-deploy-with-pytorch/pytorch_train.py @@ -0,0 +1,176 @@ +# Copyright (c) 2017, PyTorch contributors +# Modifications copyright (C) Microsoft Corporation +# Licensed under the BSD license +# Adapted from https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html + +from __future__ import print_function, division +import torch +import torch.nn as nn +import torch.optim as optim +from torch.optim import lr_scheduler +from torchvision import datasets, models, transforms +import numpy as np +import time +import os +import copy +import argparse + +from azureml.core.run import Run +# get the Azure ML run object +run = Run.get_context() + + +def load_data(data_dir): + """Load the train/val data.""" + + # Data augmentation and normalization for training + # Just normalization for validation + data_transforms = { + 'train': transforms.Compose([ + transforms.RandomResizedCrop(224), + transforms.RandomHorizontalFlip(), + transforms.ToTensor(), + transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) + ]), + 'val': transforms.Compose([ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) + ]), + } + + image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), + data_transforms[x]) + for x in ['train', 'val']} + dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4, + shuffle=True, num_workers=0) + for x in ['train', 'val']} + dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']} + class_names = image_datasets['train'].classes + + return dataloaders, dataset_sizes, class_names + + +def train_model(model, criterion, optimizer, scheduler, num_epochs, data_dir): + """Train the model.""" + + # load training/validation data + dataloaders, dataset_sizes, class_names = load_data(data_dir) + + device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + since = time.time() + + best_model_wts = copy.deepcopy(model.state_dict()) + best_acc = 0.0 + + for epoch in range(num_epochs): + print('Epoch {}/{}'.format(epoch, num_epochs - 1)) + print('-' * 10) + + # Each epoch has a training and validation phase + for phase in ['train', 'val']: + if phase == 'train': + scheduler.step() + model.train() # Set model to training mode + else: + model.eval() # Set model to evaluate mode + + running_loss = 0.0 + running_corrects = 0 + + # Iterate over data. + for inputs, labels in dataloaders[phase]: + inputs = inputs.to(device) + labels = labels.to(device) + + # zero the parameter gradients + optimizer.zero_grad() + + # forward + # track history if only in train + with torch.set_grad_enabled(phase == 'train'): + outputs = model(inputs) + _, preds = torch.max(outputs, 1) + loss = criterion(outputs, labels) + + # backward + optimize only if in training phase + if phase == 'train': + loss.backward() + optimizer.step() + + # statistics + running_loss += loss.item() * inputs.size(0) + running_corrects += torch.sum(preds == labels.data) + + epoch_loss = running_loss / dataset_sizes[phase] + epoch_acc = running_corrects.double() / dataset_sizes[phase] + + print('{} Loss: {:.4f} Acc: {:.4f}'.format( + phase, epoch_loss, epoch_acc)) + + # deep copy the model + if phase == 'val' and epoch_acc > best_acc: + best_acc = epoch_acc + best_model_wts = copy.deepcopy(model.state_dict()) + + # log the best val accuracy to AML run + run.log('best_val_acc', np.float(best_acc)) + + print() + + time_elapsed = time.time() - since + print('Training complete in {:.0f}m {:.0f}s'.format( + time_elapsed // 60, time_elapsed % 60)) + print('Best val Acc: {:4f}'.format(best_acc)) + + # load best model weights + model.load_state_dict(best_model_wts) + return model + + +def fine_tune_model(num_epochs, data_dir, learning_rate, momentum): + """Load a pretrained model and reset the final fully connected layer.""" + + # log the hyperparameter metrics to the AML run + run.log('lr', np.float(learning_rate)) + run.log('momentum', np.float(momentum)) + + model_ft = models.resnet18(pretrained=True) + num_ftrs = model_ft.fc.in_features + model_ft.fc = nn.Linear(num_ftrs, 2) # only 2 classes to predict + + device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + model_ft = model_ft.to(device) + + criterion = nn.CrossEntropyLoss() + + # Observe that all parameters are being optimized + optimizer_ft = optim.SGD(model_ft.parameters(), lr=learning_rate, momentum=momentum) + + # Decay LR by a factor of 0.1 every 7 epochs + exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1) + + model = train_model(model_ft, criterion, optimizer_ft, exp_lr_scheduler, num_epochs, data_dir) + + return model + + +def main(): + # get command-line arguments + parser = argparse.ArgumentParser() + parser.add_argument('--data_dir', type=str, help='directory of training data') + parser.add_argument('--num_epochs', type=int, default=25, help='number of epochs to train') + parser.add_argument('--output_dir', type=str, help='output directory') + parser.add_argument('--learning_rate', type=float, default=0.001, help='learning rate') + parser.add_argument('--momentum', type=float, default=0.9, help='momentum') + args = parser.parse_args() + + print("data directory is: " + args.data_dir) + model = fine_tune_model(args.num_epochs, args.data_dir, args.learning_rate, args.momentum) + os.makedirs(args.output_dir, exist_ok=True) + torch.save(model, os.path.join(args.output_dir, 'model.pt')) + + +if __name__ == "__main__": + main() diff --git a/training/02.distributed-pytorch-with-horovod/02.distributed-pytorch-with-horovod.ipynb b/training/02.distributed-pytorch-with-horovod/02.distributed-pytorch-with-horovod.ipynb new file mode 100644 index 00000000..1c3f9e08 --- /dev/null +++ b/training/02.distributed-pytorch-with-horovod/02.distributed-pytorch-with-horovod.ipynb @@ -0,0 +1,315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 02. Distributed PyTorch with Horovod\n", + "In this tutorial, you will train a PyTorch model on the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset using distributed training via [Horovod](https://github.com/uber/horovod)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)\n", + "* Review the [tutorial](https://aka.ms/aml-notebook-pytorch) on single-node PyTorch training using the SDK" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target.')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model on the remote compute\n", + "Now that we have the cluster ready to go, let's run our distributed training job." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "project_folder = './pytorch-distr-hvd'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy the training script `pytorch_horovod_mnist.py` into this project directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('pytorch_horovod_mnist.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed PyTorch tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'pytorch-distr-hvd'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a PyTorch estimator\n", + "The AML SDK's PyTorch estimator enables you to easily submit PyTorch training jobs for both single-node and distributed runs. For more information on the PyTorch estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-pytorch)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import PyTorch\n", + "\n", + "estimator = PyTorch(source_directory=project_folder,\n", + " compute_target=compute_target,\n", + " entry_script='pytorch_horovod_mnist.py',\n", + " node_count=2,\n", + " process_count_per_node=1,\n", + " distributed_backend='mpi',\n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code specifies that we will run our training script on `2` nodes, with one worker per node. In order to execute a distributed run using MPI/Horovod, you must provide the argument `distributed_backend='mpi'`. Using this estimator with these settings, PyTorch, Horovod and their dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `PyTorch` constructor's `pip_packages` or `conda_packages` parameters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run.get_details())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can block until the script has completed training before running more code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True) # this provides a verbose log" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "minxia" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "minxia" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/distributed-pytorch-with-horovod/pytorch_horovod_mnist.py b/training/02.distributed-pytorch-with-horovod/pytorch_horovod_mnist.py similarity index 100% rename from training/distributed-pytorch-with-horovod/pytorch_horovod_mnist.py rename to training/02.distributed-pytorch-with-horovod/pytorch_horovod_mnist.py diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.gitignore b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.gitignore new file mode 100644 index 00000000..82f0c3ac --- /dev/null +++ b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.gitignore @@ -0,0 +1 @@ +/data/ diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.ipynb_checkpoints/03.train-hyperparameter-tune-deploy-with-tensorflow-checkpoint.ipynb b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.ipynb_checkpoints/03.train-hyperparameter-tune-deploy-with-tensorflow-checkpoint.ipynb new file mode 100644 index 00000000..b2920041 --- /dev/null +++ b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/.ipynb_checkpoints/03.train-hyperparameter-tune-deploy-with-tensorflow-checkpoint.ipynb @@ -0,0 +1,1624 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "bf74d2e9-2708-49b1-934b-e0ede342f475" + } + }, + "source": [ + "# 03. Training MNIST dataset with hyperparameter tuning & deploy to ACI\n", + "\n", + "## Introduction\n", + "This tutorial shows how to train a simple deep neural network using the MNIST dataset and TensorFlow on Azure Machine Learning. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of `28x28` pixels, representing number from 0 to 9. The goal is to create a multi-class classifier to identify the digit each image represents, and deploy it as a web service in Azure.\n", + "\n", + "For more information about the MNIST dataset, please visit [Yan LeCun's website](http://yann.lecun.com/exdb/mnist/).\n", + "\n", + "## Prerequisite:\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's get started. First let's import some Python libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "c377ea0c-0cd9-4345-9be2-e20fb29c94c3" + } + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import os\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "edaa7f2f-2439-4148-b57a-8c794c0945ec" + } + }, + "outputs": [], + "source": [ + "import azureml\n", + "from azureml.core import Workspace, Run\n", + "\n", + "# check core SDK version number\n", + "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "59f52294-4a25-4c92-bab8-3b07f0f44d15" + } + }, + "source": [ + "## Create an Azure ML experiment\n", + "Let's create an experiment named \"tf-mnist\" and a folder to hold the training scripts. The script runs will be recorded under the experiment in Azure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "bc70f780-c240-4779-96f3-bc5ef9a37d59" + } + }, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "script_folder = './tf-mnist'\n", + "os.makedirs(script_folder, exist_ok=True)\n", + "\n", + "exp = Experiment(workspace=ws, name='tf-mnist')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "defe921f-8097-44c3-8336-8af6700804a7" + } + }, + "source": [ + "## Download MNIST dataset\n", + "In order to train on the MNIST dataset we will first need to download it from Yan LeCun's web site directly and save them in a `data` folder locally." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib\n", + "\n", + "os.makedirs('./data/mnist', exist_ok=True)\n", + "\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz', filename = './data/mnist/train-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz', filename = './data/mnist/train-labels.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename = './data/mnist/test-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename = './data/mnist/test-labels.gz')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + } + }, + "source": [ + "## Show some sample images\n", + "Let's load the downloaded compressed file into numpy arrays using some utility functions included in the `utils.py` library file from the current folder. Then we use `matplotlib` to plot 30 random images from the dataset along with their labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "396d478b-34aa-4afa-9898-cdce8222a516" + } + }, + "outputs": [], + "source": [ + "from utils import load_data\n", + "\n", + "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the neural network converge faster.\n", + "X_train = load_data('./data/mnist/train-images.gz', False) / 255.0\n", + "y_train = load_data('./data/mnist/train-labels.gz', True).reshape(-1)\n", + "\n", + "X_test = load_data('./data/mnist/test-images.gz', False) / 255.0\n", + "y_test = load_data('./data/mnist/test-labels.gz', True).reshape(-1)\n", + "\n", + "count = 0\n", + "sample_size = 30\n", + "plt.figure(figsize = (16, 6))\n", + "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", + " count = count + 1\n", + " plt.subplot(1, sample_size, count)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = 10, y = -10, s = y_train[i], fontsize = 18)\n", + " plt.imshow(X_train[i].reshape(28, 28), cmap = plt.cm.Greys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload MNIST dataset to default datastore \n", + "A [datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data) is a place where data can be stored that is then made accessible to a Run either by means of mounting or copying the data to the compute target. A datastore can either be backed by an Azure Blob Storage or and Azure File Share (ADLS will be supported in the future). For simple data handling, each workspace provides a default datastore that can be used, in case the data is not already in Blob Storage or File Share.\n", + "\n", + "In this next step, we will upload the training and test set into the workspace's default datastore, which we will then later be mount on a Batch AI cluster for training.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "ds.upload(src_dir='./data/mnist', target_path='mnist', overwrite=True, show_progress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Batch AI cluster as compute target\n", + "[Batch AI](https://docs.microsoft.com/en-us/azure/batch-ai/overview) is a service for provisioning and managing clusters of Azure virtual machines for running machine learning workloads. Let's create a new Batch AI cluster in the current workspace, if it doesn't already exist. We will then run the training script on this compute target." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we could not find the cluster with the given name in the previous cell, then we will create a new cluster here. We will create a Batch AI Cluster of `STANDARD_D2_V2` CPU VMs. This process is broken down into 3 steps:\n", + "1. create the configuration (this step is local and only takes a second)\n", + "2. create the Batch AI cluster (this step will take about **20 seconds**)\n", + "3. provision the VMs to bring the cluster to the initial size (of 1 in this case). This step will take about **3-5 minutes** and is providing only sparse output in the process. Please make sure to wait until the call returns before moving to the next cell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "batchai_cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " # look for the existing cluster by name\n", + " compute_target = ComputeTarget(workspace=ws, name=batchai_cluster_name)\n", + " if compute_target is BatchAiCompute:\n", + " print('found compute target {}, just use it.'.format(batchai_cluster_name))\n", + " else:\n", + " print('{} exists but it is not a Batch AI cluster. Please choose a different name.'.format(batchai_cluster_name))\n", + "except ComputeTargetException:\n", + " print('creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size=\"STANDARD_NC6\", # GPU-based VM\n", + " #vm_priority='lowpriority', # optional\n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=6)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, batchai_cluster_name, compute_config)\n", + " \n", + " # can poll for a minimum number of nodes and for a specific timeout. \n", + " # if no min node count is provided it uses the scale settings for the cluster\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", + " \n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that you have created the compute target, let's see what the workspace's `compute_targets()` function returns. You should now see one entry named 'cpucluster' of type BatchAI." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for ct in ws.compute_targets():\n", + " print(ct.name, ct.type, ct.provisioning_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Copy the training files into the script folder\n", + "The TensorFlow training script is already created for you. You can simply copy it into the script folder, together with the utility library used to load compressed data file into numpy array." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "# the training logic is in the tf_mnist.py file.\n", + "shutil.copy('./tf_mnist.py', script_folder)\n", + "\n", + "# the utils.py just helps loading data from the downloaded MNIST dataset into numpy arrays.\n", + "shutil.copy('./utils.py', script_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "2039d2d5-aca6-4f25-a12f-df9ae6529cae" + } + }, + "source": [ + "## Construct neural network in TensorFlow\n", + "In the training script `tf_mnist.py`, it creates a very simple DNN (deep neural network), with just 2 hidden layers. The input layer has 28 * 28 = 784 neurons, each representing a pixel in an image. The first hidden layer has 300 neurons, and the second hidden layer has 100 neurons. The output layer has 10 neurons, each representing a targeted label from 0 to 9.\n", + "\n", + "![DNN](nn.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Azure ML concepts \n", + "Please note the following three things in the code below:\n", + "1. The script accepts arguments using the argparse package. In this case there is one argument `--data_folder` which specifies the file system folder in which the script can find the MNIST data\n", + "```\n", + " parser = argparse.ArgumentParser()\n", + " parser.add_argument('--data_folder')\n", + "```\n", + "2. The script is accessing the Azure ML `Run` object by executing `run = Run.get_submitted_run()`. Further down the script is using the `run` to report the training accuracy and the validation accuracy as training progresses.\n", + "```\n", + " run.log('training_acc', np.float(acc_train))\n", + " run.log('validation_acc', np.float(acc_val))\n", + "```\n", + "3. When running the script on Azure ML, you can write files out to a folder `./outputs` that is relative to the root directory. This folder is specially tracked by Azure ML in the sense that any files written to that folder during script execution on the remote target will be picked up by Run History; these files (known as artifacts) will be available as part of the run history record." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next cell will print out the training code for you to inspect it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(script_folder, './tf_mnist.py'), 'r') as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create TensorFlow estimator\n", + "Next, we construct an `azureml.train.dnn.TensorFlow` estimator object, use the Batch AI cluster as compute target, and pass the mount-point of the datastore to the training code as a parameter.\n", + "The TensorFlow estimator is providing a simple way of launching a TensorFlow training job on a compute target. It will automatically provide a docker image that has TensorFlow installed -- if additional pip or conda packages are required, their names can be passed in via the `pip_packages` and `conda_packages` arguments and they will be included in the resulting docker." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import TensorFlow\n", + "\n", + "script_params = {\n", + " '--data-folder': ws.get_default_datastore().as_mount(),\n", + " '--batch-size': 50,\n", + " '--first-layer-neurons': 300,\n", + " '--second-layer-neurons': 100,\n", + " '--learning-rate': 0.01\n", + "}\n", + "\n", + "est = TensorFlow(source_directory=script_folder,\n", + " script_params=script_params,\n", + " compute_target=compute_target,\n", + " entry_script='tf_mnist.py', \n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Submit job to run\n", + "Calling the `fit` function on the estimator submits the job to Azure ML for execution. Submitting the job should only take a few seconds." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = exp.submit(config=est)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor the Run\n", + "As the Run is executed, it will go through the following stages:\n", + "1. Preparing: A docker image is created matching the Python environment specified by the TensorFlow estimator and it will be uploaded to the workspace's Azure Container Registry. This step will only happen once for each Python environment -- the container will then be cached for subsequent runs. Creating and uploading the image takes about **5 minutes**. While the job is preparing, logs are streamed to the run history and can be viewed to monitor the progress of the image creation.\n", + "\n", + "2. Scaling: If the compute needs to be scaled up (i.e. the Batch AI cluster requires more nodes to execute the run than currently available), the Batch AI cluster will attempt to scale up in order to make the required amount of nodes available. Scaling typically takes about **5 minutes**.\n", + "\n", + "3. Running: All scripts in the script folder are uploaded to the compute target, data stores are mounted/copied and the `entry_script` is executed. While the job is running, stdout and the `./logs` folder are streamed to the run history and can be viewed to monitor the progress of the run.\n", + "\n", + "4. Post-Processing: The `./outputs` folder of the run is copied over to the run history\n", + "\n", + "There are multiple ways to check the progress of a running job. We can use a Jupyter notebook widget. \n", + "\n", + "**Note: The widget will automatically update ever 10-15 seconds, always showing you the most up-to-date information about the run**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also periodically check the status of the run object, and navigate to Azure portal to monitor the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Run object\n", + "The Run object provides the interface to the run history -- both to the job and to the control plane (this notebook), and both while the job is running and after it has completed. It provides a number of interesting features for instance:\n", + "* `run.get_details()`: Provides a rich set of properties of the run\n", + "* `run.get_metrics()`: Provides a dictionary with all the metrics that were reported for the Run\n", + "* `run.get_file_names()`: List all the files that were uploaded to the run history for this Run. This will include the `outputs` and `logs` folder, azureml-logs and other logs, as well as files that were explicitly uploaded to the run using `run.upload_file()`\n", + "\n", + "Below are some examples -- please run through them and inspect their output. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_details()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_metrics()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot accuracy over epochs\n", + "Since we can retrieve the metrics from the run, we can easily make plots using `matplotlib` in the notebook. Then we can add the plotted image to the run using `run.log_image()`, so all information about the run is kept together." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.makedirs('./imgs', exist_ok = True)\n", + "metrics = run.get_metrics()\n", + "\n", + "plt.figure(figsize = (13,5))\n", + "plt.plot(metrics['validation_acc'], 'r-', lw = 4, alpha = .6)\n", + "plt.plot(metrics['training_acc'], 'b--', alpha = 0.5)\n", + "plt.legend(['Full evaluation set', 'Training set mini-batch'])\n", + "plt.xlabel('epochs', fontsize = 14)\n", + "plt.ylabel('accuracy', fontsize = 14)\n", + "plt.title('Accuracy over Epochs', fontsize = 16)\n", + "run.log_image(name = 'acc_over_epochs.png', plot = plt)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the saved model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the training script, a TensorFlow `saver` object is used to persist the model in a local folder (local to the compute target). The model was saved to the `./outputs` folder on the disk of the Batch AI cluster node where the job is run. Azure ML automatically uploaded anything written in the `./outputs` folder into run history file store. Subsequently, we can use the `Run` object to download the model files the `saver` object saved. They are under the the `outputs/model` folder in the run history file store, and are downloaded into a local folder named `model`. Note the TensorFlow model consists of four files in binary format and they are not human-readable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create a model folder in the current directory\n", + "os.makedirs('./model', exist_ok = True)\n", + "\n", + "for f in run.get_file_names():\n", + " if f.startswith('outputs/model'):\n", + " output_file_path = os.path.join('./model', f.split('/')[-1])\n", + " print('Downloading from {} to {} ...'.format(f, output_file_path))\n", + " run.download_file(name = f, output_file_path = output_file_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predict on the test set\n", + "Now load the saved TensorFlow graph, and list all operations under the `network` scope. This way we can discover the input tensor `network/X:0` and the output tensor `network/output/MatMul:0`, and use them in the scoring script in the next step.\n", + "\n", + "Note: if your local TensorFlow version is different than the version running in the cluster where the model is trained, you might see a \"compiletime version mismatch\" warning. You can ignore it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "tf.reset_default_graph()\n", + "\n", + "saver = tf.train.import_meta_graph(\"./model/mnist-tf.model.meta\")\n", + "graph = tf.get_default_graph()\n", + "\n", + "for op in graph.get_operations():\n", + " if op.name.startswith('network'):\n", + " print(op.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Feed test dataset to the persisted model to get predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# input tensor. this is an array of 784 elements, each representing the intensity of a pixel in the digit image.\n", + "X = tf.get_default_graph().get_tensor_by_name(\"network/X:0\")\n", + "# output tensor. this is an array of 10 elements, each representing the probability of predicted value of the digit.\n", + "output = tf.get_default_graph().get_tensor_by_name(\"network/output/MatMul:0\")\n", + "\n", + "with tf.Session() as sess:\n", + " saver.restore(sess, './model/mnist-tf.model')\n", + " k = output.eval(feed_dict = {X : X_test})\n", + "# get the prediction, which is the index of the element that has the largest probability value.\n", + "y_hat = np.argmax(k, axis = 1)\n", + "\n", + "# print the first 30 labels and predictions\n", + "print('labels: \\t', y_test[:30])\n", + "print('predictions:\\t', y_hat[:30])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the overall accuracy by comparing the predicted value against the test set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Accuracy on the test set:\", np.average(y_hat == y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Intelligent hyperparameter tuning\n", + "We have trained the model with one set of hyperparameters, now let's how we can do hyperparameter tuning by launching multiple runs on the cluster. First let's define the parameter space using random sampling." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.hyperdrive import *\n", + "\n", + "ps = RandomParameterSampling(\n", + " {\n", + " '--batch-size': choice(25, 50, 100),\n", + " '--first-layer-neurons': choice(10, 50, 200, 300, 500),\n", + " '--second-layer-neurons': choice(10, 50, 200, 500),\n", + " '--learning-rate': loguniform(-6, -1)\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we will create a new estimator without the above parameters since they will be passed in later. Note we still need to keep the `data-folder` parameter since that's not a hyperparamter we will sweep." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "est = TensorFlow(source_directory=script_folder,\n", + " script_params={'--data-folder': ws.get_default_datastore().as_mount()},\n", + " compute_target=compute_target,\n", + " entry_script='tf_mnist.py', \n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will define an early termnination policy. The `BanditPolicy` basically states to check the job every 2 iterations. If the primary metric (defined later) falls outside of the top 10% range, Azure ML terminate the job. This saves us from continuing to explore hyperparameters that don't show promise of helping reach our target metric." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "policy = BanditPolicy(evaluation_interval=2, slack_factor=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are ready to configure a run configuration object, and specify the primary metric `validation_acc` that's recorded in your training runs. If you go back to visit the training script, you will notice that this value is being logged after every epoch (a full batch set). We also want to tell the service that we are looking to maximizing this value. We also set the number of samples to 20, and maximal concurrent job to 4, which is the same as the number of nodes in our computer cluster." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "htc = HyperDriveRunConfig(estimator=est, \n", + " hyperparameter_sampling=ps, \n", + " primary_metric_name='validation_acc', \n", + " primary_metric_goal=PrimaryMetricGoal.MAXIMIZE, \n", + " max_total_runs=20,\n", + " max_concurrent_runs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, let's launch the hyperparameter tuning job." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "htr = exp.submit(config=htc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use a run history widget to show the progress. Be patient as this might take a while to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "RunDetails(htr).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Find and register best model\n", + "When all the jobs finish, we can find out the one that has the highest accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run = htr.get_best_run_by_primary_metric()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's list the model files uploaded during the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(best_run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then register the folder (and all files in it) as a model named `tf-dnn-mnist` under the workspace for deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = best_run.register_model(model_name='tf-dnn-mnist', model_path='outputs/model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy the model in ACI\n", + "Now we are ready to deploy the model as a web service running in Azure Container Instance [ACI](https://azure.microsoft.com/en-us/services/container-instances/). Azure Machine Learning accomplishes this by constructing a Docker image with the scoring logic and model baked in.\n", + "### Create score.py\n", + "First, we will create a scoring script that will be invoked by the web service call. \n", + "\n", + "* Note that the scoring script must have two required functions, `init()` and `run(input_data)`. \n", + " * In `init()` function, you typically load the model into a global object. This function is executed only once when the Docker container is started. \n", + " * In `run(input_data)` function, the model is used to predict a value based on the input data. The input and output to `run` typically use JSON as serialization and de-serialization format but you are not limited to that." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import numpy as np\n", + "import os\n", + "import tensorflow as tf\n", + "\n", + "from azureml.core.model import Model\n", + "\n", + "def init():\n", + " global X, output, sess\n", + " tf.reset_default_graph()\n", + " model_root = Model.get_model_path('tf-dnn-mnist')\n", + " saver = tf.train.import_meta_graph(os.path.join(model_root, 'mnist-tf.model.meta'))\n", + " X = tf.get_default_graph().get_tensor_by_name(\"network/X:0\")\n", + " output = tf.get_default_graph().get_tensor_by_name(\"network/output/MatMul:0\")\n", + " \n", + " sess = tf.Session()\n", + " saver.restore(sess, os.path.join(model_root, 'mnist-tf.model'))\n", + "\n", + "def run(raw_data):\n", + " data = np.array(json.loads(raw_data)['data'])\n", + " # make prediction\n", + " out = output.eval(session = sess, feed_dict = {X: data})\n", + " y_hat = np.argmax(out, axis = 1)\n", + " return json.dumps(y_hat.tolist())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create myenv.yml\n", + "We also need to create an environment file so that Azure Machine Learning can install the necessary packages in the Docker image which are required by your scoring script. In this case, we need to specify packages `numpy`, `tensorflow`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import CondaDependencies\n", + "cd = CondaDependencies.create()\n", + "cd.add_conda_package('numpy')\n", + "cd.add_tensorflow_conda_package()\n", + "cd.save_to_file(base_directory='./', conda_file_path='myenv.yml')\n", + "\n", + "print(cd.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy to ACI\n", + "We are almost ready to deploy. Create a deployment configuration and specify the number of CPUs and gigbyte of RAM needed for your ACI container. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", + " memory_gb=1, \n", + " tags={'name':'mnist', 'framework': 'TensorFlow DNN'},\n", + " description='Tensorflow DNN on MNIST')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Deployment Process\n", + "Now we can deploy. **This cell will run for about 7-8 minutes**. Behind the scene, it will do the following:\n", + "1. **Register model** \n", + "Take the local `model` folder (which contains our previously downloaded trained model files) and register it (and the files inside that folder) as a model named `model` under the workspace. Azure ML will register the model directory or model file(s) we specify to the `model_paths` parameter of the `Webservice.deploy` call.\n", + "2. **Build Docker image** \n", + "Build a Docker image using the scoring file (`score.py`), the environment file (`myenv.yml`), and the `model` folder containing the TensorFlow model files. \n", + "3. **Register image** \n", + "Register that image under the workspace. \n", + "4. **Ship to ACI** \n", + "And finally ship the image to the ACI infrastructure, start up a container in ACI using that image, and expose an HTTP endpoint to accept REST client calls." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "imgconfig = ContainerImage.image_configuration(execution_script=\"score.py\", \n", + " runtime=\"python\", \n", + " conda_file=\"myenv.yml\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "from azureml.core.webservice import Webservice\n", + "\n", + "service = Webservice.deploy_from_model(workspace=ws,\n", + " name='tf-mnist-svc',\n", + " deployment_config=aciconfig,\n", + " models=[model],\n", + " image_config=imgconfig)\n", + "\n", + "service.wait_for_deployment(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tip: If something goes wrong with the deployment, the first thing to look at is the logs from the service by running the following command:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.get_logs())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the scoring web service endpoint:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the deployed model\n", + "Let's test the deployed model. Pick 30 random samples from the test set, and send it to the web service hosted in ACI. Note here we are using the `run` API in the SDK to invoke the service. You can also make raw HTTP calls using any HTTP tool such as curl.\n", + "\n", + "After the invocation, we print the returned predictions and plot them along with the input images. Use red font color and inversed image (white on black) to highlight the misclassified samples. Note since the model accuracy is pretty high, you might have to run the below cell a few times before you can see a misclassified sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "# find 30 random samples from test set\n", + "n = 30\n", + "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", + "\n", + "test_samples = json.dumps({\"data\": X_test[sample_indices].tolist()})\n", + "test_samples = bytes(test_samples, encoding = 'utf8')\n", + "\n", + "# predict using the deployed model\n", + "result = json.loads(service.run(input_data = test_samples))\n", + "\n", + "# compare actual value vs. the predicted values:\n", + "i = 0\n", + "plt.figure(figsize = (20, 1))\n", + "\n", + "for s in sample_indices:\n", + " plt.subplot(1, n, i + 1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " \n", + " # use different color for misclassified sample\n", + " font_color = 'red' if y_test[s] != result[i] else 'black'\n", + " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", + " \n", + " plt.text(x = 10, y = -10, s = y_hat[s], fontsize = 18, color = font_color)\n", + " plt.imshow(X_test[s].reshape(28, 28), cmap = clr_map)\n", + " \n", + " i = i + 1\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also send raw HTTP request to the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "\n", + "# send a random row from the test set to score\n", + "random_index = np.random.randint(0, len(X_test)-1)\n", + "input_data = \"{\\\"data\\\": [\" + str(list(X_test[random_index])) + \"]}\"\n", + "\n", + "headers = {'Content-Type':'application/json'}\n", + "\n", + "resp = requests.post(service.scoring_uri, input_data, headers=headers)\n", + "\n", + "print(\"POST to url\", service.scoring_uri)\n", + "#print(\"input data:\", input_data)\n", + "print(\"label:\", y_test[random_index])\n", + "print(\"prediction:\", resp.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the workspace after the web service was deployed. You should see \n", + "* a registered model named 'model' and with the id 'model:1'\n", + "* an image called 'tf-mnist' and with a docker image location pointing to your workspace's Azure Container Registry (ACR) \n", + "* a webservice called 'tf-mnist' with some scoring URL" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for model in ws.models():\n", + " print(\"Model:\", model.name, model.id)\n", + "\n", + "for image in ws.images():\n", + " print(\"Image:\", image.name, image.image_location)\n", + "\n", + "for webservice in ws.webservices():\n", + " print(\"Webservice:\", webservice.name, webservice.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clean up\n", + "You can delete the ACI deployment with a simple delete API call." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also delete the computer cluster. But remember if you set the `cluster_min_nodes` value to 0 when you created the cluster, once the jobs are finished, all nodes are deleted automatically. So you don't have to delete the cluster itself since it won't incur any cost. Next time you submit jobs to it, the cluster will then automatically \"grow\" up to the `cluster_min_nodes` which is set to 4." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# delete the cluster if you need to.\n", + "compute_target.delete()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "nbpresent": { + "slides": { + "05bb34ad-74b0-42b3-9654-8357d1ba9c99": { + "id": "05bb34ad-74b0-42b3-9654-8357d1ba9c99", + "prev": "851089af-9725-40c9-8f0b-9bf892b2b1fe", + "regions": { + "23fb396d-50f9-4770-adb3-0d6abcb40767": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "2039d2d5-aca6-4f25-a12f-df9ae6529cae", + "part": "whole" + }, + "id": "23fb396d-50f9-4770-adb3-0d6abcb40767" + } + } + }, + "11bebe14-d1dc-476d-a31a-5828b9c3adf0": { + "id": "11bebe14-d1dc-476d-a31a-5828b9c3adf0", + "prev": "502648cb-26fe-496b-899f-84c8fe1dcbc0", + "regions": { + "a42499db-623e-4414-bea2-ff3617fd8fc5": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "4788c040-27a2-4dc1-8ed0-378a99b3a255", + "part": "whole" + }, + "id": "a42499db-623e-4414-bea2-ff3617fd8fc5" + } + } + }, + "134f92d0-6389-4226-af51-1134ae8e8278": { + "id": "134f92d0-6389-4226-af51-1134ae8e8278", + "prev": "36b8728c-32ad-4941-be03-5cef51cdc430", + "regions": { + "b6d82a77-2d58-4b9e-a375-3103214b826c": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7ab0e6d0-1f1c-451b-8ac5-687da44a8287", + "part": "whole" + }, + "id": "b6d82a77-2d58-4b9e-a375-3103214b826c" + } + } + }, + "282a2421-697b-4fd0-9485-755abf5a0c18": { + "id": "282a2421-697b-4fd0-9485-755abf5a0c18", + "prev": "a8b9ceb9-b38f-4489-84df-b644c6fe28f2", + "regions": { + "522fec96-abe7-4a34-bd34-633733afecc8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "d58e7785-c2ee-4a45-8e3d-4c538bf8075a", + "part": "whole" + }, + "id": "522fec96-abe7-4a34-bd34-633733afecc8" + } + } + }, + "2dfec088-8a70-411a-9199-904ef3fa2383": { + "id": "2dfec088-8a70-411a-9199-904ef3fa2383", + "prev": "282a2421-697b-4fd0-9485-755abf5a0c18", + "regions": { + "0535fcb6-3a2b-4b46-98a7-3ebb1a38c47e": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "c377ea0c-0cd9-4345-9be2-e20fb29c94c3", + "part": "whole" + }, + "id": "0535fcb6-3a2b-4b46-98a7-3ebb1a38c47e" + } + } + }, + "36a814c9-c540-4a6d-92d9-c03553d3d2c2": { + "id": "36a814c9-c540-4a6d-92d9-c03553d3d2c2", + "prev": "b52e4d09-5186-44e5-84db-3371c087acde", + "regions": { + "8bfba503-9907-43f0-b1a6-46a0b4311793": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "d5e4a56c-dfac-4346-be83-1c15b503deac", + "part": "whole" + }, + "id": "8bfba503-9907-43f0-b1a6-46a0b4311793" + } + } + }, + "36b8728c-32ad-4941-be03-5cef51cdc430": { + "id": "36b8728c-32ad-4941-be03-5cef51cdc430", + "prev": "05bb34ad-74b0-42b3-9654-8357d1ba9c99", + "regions": { + "a36a5bdf-7f62-49b0-8634-e155a98851dc": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "e33dfc47-e7df-4623-a7a6-ab6bcf944629", + "part": "whole" + }, + "id": "a36a5bdf-7f62-49b0-8634-e155a98851dc" + } + } + }, + "3f136f2a-f14c-4a4b-afea-13380556a79c": { + "id": "3f136f2a-f14c-4a4b-afea-13380556a79c", + "prev": "54cb8dfd-a89c-4922-867b-3c87d8b67cd3", + "regions": { + "80ecf237-d1b0-401e-83d2-6d04b7fcebd3": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7debeb2b-ecea-414f-9b50-49657abb3e6a", + "part": "whole" + }, + "id": "80ecf237-d1b0-401e-83d2-6d04b7fcebd3" + } + } + }, + "502648cb-26fe-496b-899f-84c8fe1dcbc0": { + "id": "502648cb-26fe-496b-899f-84c8fe1dcbc0", + "prev": "3f136f2a-f14c-4a4b-afea-13380556a79c", + "regions": { + "4c83bb4d-2a52-41ba-a77f-0c6efebd83a6": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "dbd22f6b-6d49-4005-b8fe-422ef8ef1d42", + "part": "whole" + }, + "id": "4c83bb4d-2a52-41ba-a77f-0c6efebd83a6" + } + } + }, + "54cb8dfd-a89c-4922-867b-3c87d8b67cd3": { + "id": "54cb8dfd-a89c-4922-867b-3c87d8b67cd3", + "prev": "aa224267-f885-4c0c-95af-7bacfcc186d9", + "regions": { + "0848f0a7-032d-46c7-b35c-bfb69c83f961": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "3c32c557-d0e8-4bb3-a61a-aa51a767cd4e", + "part": "whole" + }, + "id": "0848f0a7-032d-46c7-b35c-bfb69c83f961" + } + } + }, + "636b563c-faee-4c9e-a6a3-f46a905bfa82": { + "id": "636b563c-faee-4c9e-a6a3-f46a905bfa82", + "prev": "c5f59b98-a227-4344-9d6d-03abdd01c6aa", + "regions": { + "9c64f662-05dc-4b14-9cdc-d450b96f4368": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "70640ac0-7041-47a8-9a7f-e871defd74b2", + "part": "whole" + }, + "id": "9c64f662-05dc-4b14-9cdc-d450b96f4368" + } + } + }, + "793cec2f-8413-484d-aa1e-388fd2b53a45": { + "id": "793cec2f-8413-484d-aa1e-388fd2b53a45", + "prev": "c66f3dfd-2d27-482b-be78-10ba733e826b", + "regions": { + "d08f9cfa-3b8d-4fb4-91ba-82d9858ea93e": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "dd56113e-e3db-41ae-91b7-2472ed194308", + "part": "whole" + }, + "id": "d08f9cfa-3b8d-4fb4-91ba-82d9858ea93e" + } + } + }, + "83e912ff-260a-4391-8a12-331aba098506": { + "id": "83e912ff-260a-4391-8a12-331aba098506", + "prev": "fe5a0732-69f5-462a-8af6-851f84a9fdec", + "regions": { + "2fefcf5f-ea20-4604-a528-5e6c91bcb100": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea", + "part": "whole" + }, + "id": "2fefcf5f-ea20-4604-a528-5e6c91bcb100" + } + } + }, + "851089af-9725-40c9-8f0b-9bf892b2b1fe": { + "id": "851089af-9725-40c9-8f0b-9bf892b2b1fe", + "prev": "636b563c-faee-4c9e-a6a3-f46a905bfa82", + "regions": { + "31c9dda5-fdf4-45e2-bcb7-12aa0f30e1d8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "8408b90e-6cdd-44d1-86d3-648c23f877ac", + "part": "whole" + }, + "id": "31c9dda5-fdf4-45e2-bcb7-12aa0f30e1d8" + } + } + }, + "87ab653d-e804-470f-bde9-c67caaa0f354": { + "id": "87ab653d-e804-470f-bde9-c67caaa0f354", + "prev": "a8c2d446-caee-42c8-886a-ed98f4935d78", + "regions": { + "bc3aeb56-c465-4868-a1ea-2de82584de98": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "59f52294-4a25-4c92-bab8-3b07f0f44d15", + "part": "whole" + }, + "id": "bc3aeb56-c465-4868-a1ea-2de82584de98" + } + } + }, + "8b887c97-83bc-4395-83ac-f6703cbe243d": { + "id": "8b887c97-83bc-4395-83ac-f6703cbe243d", + "prev": "36a814c9-c540-4a6d-92d9-c03553d3d2c2", + "regions": { + "9d0bc72a-cb13-483f-a572-2bf60d0d145f": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "75499c85-d0a1-43db-8244-25778b9b2736", + "part": "whole" + }, + "id": "9d0bc72a-cb13-483f-a572-2bf60d0d145f" + } + } + }, + "a8b9ceb9-b38f-4489-84df-b644c6fe28f2": { + "id": "a8b9ceb9-b38f-4489-84df-b644c6fe28f2", + "prev": null, + "regions": { + "f741ed94-3f24-4427-b615-3ab8753e5814": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bf74d2e9-2708-49b1-934b-e0ede342f475", + "part": "whole" + }, + "id": "f741ed94-3f24-4427-b615-3ab8753e5814" + } + } + }, + "a8c2d446-caee-42c8-886a-ed98f4935d78": { + "id": "a8c2d446-caee-42c8-886a-ed98f4935d78", + "prev": "2dfec088-8a70-411a-9199-904ef3fa2383", + "regions": { + "f03457d8-b2a7-4e14-9a73-cab80c5b815d": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "edaa7f2f-2439-4148-b57a-8c794c0945ec", + "part": "whole" + }, + "id": "f03457d8-b2a7-4e14-9a73-cab80c5b815d" + } + } + }, + "aa224267-f885-4c0c-95af-7bacfcc186d9": { + "id": "aa224267-f885-4c0c-95af-7bacfcc186d9", + "prev": "793cec2f-8413-484d-aa1e-388fd2b53a45", + "regions": { + "0d7ac442-5e1d-49a5-91b3-1432d72449d8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "4d6826fe-2cb8-4468-85ed-a242a1ce7155", + "part": "whole" + }, + "id": "0d7ac442-5e1d-49a5-91b3-1432d72449d8" + } + } + }, + "b52e4d09-5186-44e5-84db-3371c087acde": { + "id": "b52e4d09-5186-44e5-84db-3371c087acde", + "prev": "134f92d0-6389-4226-af51-1134ae8e8278", + "regions": { + "7af7d997-80b2-497d-bced-ef8341763439": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "376882ec-d469-4fad-9462-18e4bbea64ca", + "part": "whole" + }, + "id": "7af7d997-80b2-497d-bced-ef8341763439" + } + } + }, + "c5f59b98-a227-4344-9d6d-03abdd01c6aa": { + "id": "c5f59b98-a227-4344-9d6d-03abdd01c6aa", + "prev": "83e912ff-260a-4391-8a12-331aba098506", + "regions": { + "7268abff-0540-4c06-aefc-c386410c0953": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "396d478b-34aa-4afa-9898-cdce8222a516", + "part": "whole" + }, + "id": "7268abff-0540-4c06-aefc-c386410c0953" + } + } + }, + "c66f3dfd-2d27-482b-be78-10ba733e826b": { + "id": "c66f3dfd-2d27-482b-be78-10ba733e826b", + "prev": "8b887c97-83bc-4395-83ac-f6703cbe243d", + "regions": { + "6cbe8e0e-8645-41a1-8a38-e44acb81be4b": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7594c7c7-b808-48f7-9500-d7830a07968a", + "part": "whole" + }, + "id": "6cbe8e0e-8645-41a1-8a38-e44acb81be4b" + } + } + }, + "d22045e5-7e3e-452e-bc7b-c6c4a893da8e": { + "id": "d22045e5-7e3e-452e-bc7b-c6c4a893da8e", + "prev": "ec41f96a-63a3-4825-9295-f4657a440ddb", + "regions": { + "24e2a3a9-bf65-4dab-927f-0bf6ffbe581d": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "defe921f-8097-44c3-8336-8af6700804a7", + "part": "whole" + }, + "id": "24e2a3a9-bf65-4dab-927f-0bf6ffbe581d" + } + } + }, + "d24c958c-e419-4e4d-aa9c-d228a8ca55e4": { + "id": "d24c958c-e419-4e4d-aa9c-d228a8ca55e4", + "prev": "11bebe14-d1dc-476d-a31a-5828b9c3adf0", + "regions": { + "25312144-9faa-4680-bb8e-6307ea71370f": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bed09a92-9a7a-473b-9464-90e479883a3e", + "part": "whole" + }, + "id": "25312144-9faa-4680-bb8e-6307ea71370f" + } + } + }, + "ec41f96a-63a3-4825-9295-f4657a440ddb": { + "id": "ec41f96a-63a3-4825-9295-f4657a440ddb", + "prev": "87ab653d-e804-470f-bde9-c67caaa0f354", + "regions": { + "22e8be98-c254-4d04-b0e4-b9b5ae46eefe": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bc70f780-c240-4779-96f3-bc5ef9a37d59", + "part": "whole" + }, + "id": "22e8be98-c254-4d04-b0e4-b9b5ae46eefe" + } + } + }, + "fe5a0732-69f5-462a-8af6-851f84a9fdec": { + "id": "fe5a0732-69f5-462a-8af6-851f84a9fdec", + "prev": "d22045e5-7e3e-452e-bc7b-c6c4a893da8e", + "regions": { + "671b89f5-fa9c-4bc1-bdeb-6e0a4ce8939b": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "fd46e2ab-4ab6-4001-b536-1f323525d7d3", + "part": "whole" + }, + "id": "671b89f5-fa9c-4bc1-bdeb-6e0a4ce8939b" + } + } + } + }, + "themes": {} + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/03.train-hyperparameter-tune-deploy-with-tensorflow.ipynb b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/03.train-hyperparameter-tune-deploy-with-tensorflow.ipynb new file mode 100644 index 00000000..614dba5f --- /dev/null +++ b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/03.train-hyperparameter-tune-deploy-with-tensorflow.ipynb @@ -0,0 +1,1674 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "bf74d2e9-2708-49b1-934b-e0ede342f475" + } + }, + "source": [ + "# 03. Training, hyperparameter tune, and deploy with TensorFlow\n", + "\n", + "## Introduction\n", + "This tutorial shows how to train a simple deep neural network using the MNIST dataset and TensorFlow on Azure Machine Learning. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of `28x28` pixels, representing number from 0 to 9. The goal is to create a multi-class classifier to identify the digit each image represents, and deploy it as a web service in Azure.\n", + "\n", + "For more information about the MNIST dataset, please visit [Yan LeCun's website](http://yann.lecun.com/exdb/mnist/).\n", + "\n", + "## Prerequisite:\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's get started. First let's import some Python libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "c377ea0c-0cd9-4345-9be2-e20fb29c94c3" + } + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import os\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "edaa7f2f-2439-4148-b57a-8c794c0945ec" + } + }, + "outputs": [], + "source": [ + "import azureml\n", + "from azureml.core import Workspace, Run\n", + "\n", + "# check core SDK version number\n", + "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "59f52294-4a25-4c92-bab8-3b07f0f44d15" + } + }, + "source": [ + "## Create an Azure ML experiment\n", + "Let's create an experiment named \"tf-mnist\" and a folder to hold the training scripts. The script runs will be recorded under the experiment in Azure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "bc70f780-c240-4779-96f3-bc5ef9a37d59" + } + }, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "script_folder = './tf-mnist'\n", + "os.makedirs(script_folder, exist_ok=True)\n", + "\n", + "exp = Experiment(workspace=ws, name='tf-mnist')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "defe921f-8097-44c3-8336-8af6700804a7" + } + }, + "source": [ + "## Download MNIST dataset\n", + "In order to train on the MNIST dataset we will first need to download it from Yan LeCun's web site directly and save them in a `data` folder locally." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib\n", + "\n", + "os.makedirs('./data/mnist', exist_ok=True)\n", + "\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz', filename = './data/mnist/train-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz', filename = './data/mnist/train-labels.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename = './data/mnist/test-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename = './data/mnist/test-labels.gz')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea" + } + }, + "source": [ + "## Show some sample images\n", + "Let's load the downloaded compressed file into numpy arrays using some utility functions included in the `utils.py` library file from the current folder. Then we use `matplotlib` to plot 30 random images from the dataset along with their labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbpresent": { + "id": "396d478b-34aa-4afa-9898-cdce8222a516" + } + }, + "outputs": [], + "source": [ + "from utils import load_data\n", + "\n", + "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the neural network converge faster.\n", + "X_train = load_data('./data/mnist/train-images.gz', False) / 255.0\n", + "y_train = load_data('./data/mnist/train-labels.gz', True).reshape(-1)\n", + "\n", + "X_test = load_data('./data/mnist/test-images.gz', False) / 255.0\n", + "y_test = load_data('./data/mnist/test-labels.gz', True).reshape(-1)\n", + "\n", + "count = 0\n", + "sample_size = 30\n", + "plt.figure(figsize = (16, 6))\n", + "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", + " count = count + 1\n", + " plt.subplot(1, sample_size, count)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = 10, y = -10, s = y_train[i], fontsize = 18)\n", + " plt.imshow(X_train[i].reshape(28, 28), cmap = plt.cm.Greys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload MNIST dataset to default datastore \n", + "A [datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data) is a place where data can be stored that is then made accessible to a Run either by means of mounting or copying the data to the compute target. A datastore can either be backed by an Azure Blob Storage or and Azure File Share (ADLS will be supported in the future). For simple data handling, each workspace provides a default datastore that can be used, in case the data is not already in Blob Storage or File Share.\n", + "\n", + "In this next step, we will upload the training and test set into the workspace's default datastore, which we will then later be mount on a Batch AI cluster for training.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "ds.upload(src_dir='./data/mnist', target_path='mnist', overwrite=True, show_progress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create Batch AI cluster as compute target\n", + "[Batch AI](https://docs.microsoft.com/en-us/azure/batch-ai/overview) is a service for provisioning and managing clusters of Azure virtual machines for running machine learning workloads. Let's create a new Batch AI cluster in the current workspace, if it doesn't already exist. We will then run the training script on this compute target." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we could not find the cluster with the given name in the previous cell, then we will create a new cluster here. We will create a Batch AI Cluster of `STANDARD_D2_V2` CPU VMs. This process is broken down into 3 steps:\n", + "1. create the configuration (this step is local and only takes a second)\n", + "2. create the Batch AI cluster (this step will take about **20 seconds**)\n", + "3. provision the VMs to bring the cluster to the initial size (of 1 in this case). This step will take about **3-5 minutes** and is providing only sparse output in the process. Please make sure to wait until the call returns before moving to the next cell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " # look for the existing cluster by name\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " if type(compute_target) is BatchAiCompute:\n", + " print('Found existing compute target {}.'.format(cluster_name))\n", + " else:\n", + " print('{} exists but it is not a Batch AI cluster. Please choose a different name.'.format(cluster_name))\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size=\"STANDARD_NC6\", # GPU-based VM\n", + " #vm_priority='lowpriority', # optional\n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + " \n", + " # can poll for a minimum number of nodes and for a specific timeout. \n", + " # if no min node count is provided it uses the scale settings for the cluster\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", + " \n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that you have created the compute target, let's see what the workspace's `compute_targets` property returns. You should now see one entry named 'gpucluster' of type BatchAI." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "compute_targets = ws.compute_targets\n", + "for name, ct in compute_targets.items():\n", + " print(name, ct.type, ct.provisioning_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Copy the training files into the script folder\n", + "The TensorFlow training script is already created for you. You can simply copy it into the script folder, together with the utility library used to load compressed data file into numpy array." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "# the training logic is in the tf_mnist.py file.\n", + "shutil.copy('./tf_mnist.py', script_folder)\n", + "\n", + "# the utils.py just helps loading data from the downloaded MNIST dataset into numpy arrays.\n", + "shutil.copy('./utils.py', script_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "2039d2d5-aca6-4f25-a12f-df9ae6529cae" + } + }, + "source": [ + "## Construct neural network in TensorFlow\n", + "In the training script `tf_mnist.py`, it creates a very simple DNN (deep neural network), with just 2 hidden layers. The input layer has 28 * 28 = 784 neurons, each representing a pixel in an image. The first hidden layer has 300 neurons, and the second hidden layer has 100 neurons. The output layer has 10 neurons, each representing a targeted label from 0 to 9.\n", + "\n", + "![DNN](nn.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Azure ML concepts \n", + "Please note the following three things in the code below:\n", + "1. The script accepts arguments using the argparse package. In this case there is one argument `--data_folder` which specifies the file system folder in which the script can find the MNIST data\n", + "```\n", + " parser = argparse.ArgumentParser()\n", + " parser.add_argument('--data_folder')\n", + "```\n", + "2. The script is accessing the Azure ML `Run` object by executing `run = Run.get_context()`. Further down the script is using the `run` to report the training accuracy and the validation accuracy as training progresses.\n", + "```\n", + " run.log('training_acc', np.float(acc_train))\n", + " run.log('validation_acc', np.float(acc_val))\n", + "```\n", + "3. When running the script on Azure ML, you can write files out to a folder `./outputs` that is relative to the root directory. This folder is specially tracked by Azure ML in the sense that any files written to that folder during script execution on the remote target will be picked up by Run History; these files (known as artifacts) will be available as part of the run history record." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next cell will print out the training code for you to inspect it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(script_folder, './tf_mnist.py'), 'r') as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create TensorFlow estimator\n", + "Next, we construct an `azureml.train.dnn.TensorFlow` estimator object, use the Batch AI cluster as compute target, and pass the mount-point of the datastore to the training code as a parameter.\n", + "The TensorFlow estimator is providing a simple way of launching a TensorFlow training job on a compute target. It will automatically provide a docker image that has TensorFlow installed -- if additional pip or conda packages are required, their names can be passed in via the `pip_packages` and `conda_packages` arguments and they will be included in the resulting docker." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import TensorFlow\n", + "\n", + "script_params = {\n", + " '--data-folder': ws.get_default_datastore().as_mount(),\n", + " '--batch-size': 50,\n", + " '--first-layer-neurons': 300,\n", + " '--second-layer-neurons': 100,\n", + " '--learning-rate': 0.01\n", + "}\n", + "\n", + "est = TensorFlow(source_directory=script_folder,\n", + " script_params=script_params,\n", + " compute_target=compute_target,\n", + " entry_script='tf_mnist.py', \n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Submit job to run\n", + "Calling the `fit` function on the estimator submits the job to Azure ML for execution. Submitting the job should only take a few seconds." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = exp.submit(config=est)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor the Run\n", + "As the Run is executed, it will go through the following stages:\n", + "1. Preparing: A docker image is created matching the Python environment specified by the TensorFlow estimator and it will be uploaded to the workspace's Azure Container Registry. This step will only happen once for each Python environment -- the container will then be cached for subsequent runs. Creating and uploading the image takes about **5 minutes**. While the job is preparing, logs are streamed to the run history and can be viewed to monitor the progress of the image creation.\n", + "\n", + "2. Scaling: If the compute needs to be scaled up (i.e. the Batch AI cluster requires more nodes to execute the run than currently available), the Batch AI cluster will attempt to scale up in order to make the required amount of nodes available. Scaling typically takes about **5 minutes**.\n", + "\n", + "3. Running: All scripts in the script folder are uploaded to the compute target, data stores are mounted/copied and the `entry_script` is executed. While the job is running, stdout and the `./logs` folder are streamed to the run history and can be viewed to monitor the progress of the run.\n", + "\n", + "4. Post-Processing: The `./outputs` folder of the run is copied over to the run history\n", + "\n", + "There are multiple ways to check the progress of a running job. We can use a Jupyter notebook widget. \n", + "\n", + "**Note: The widget will automatically update ever 10-15 seconds, always showing you the most up-to-date information about the run**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also periodically check the status of the run object, and navigate to Azure portal to monitor the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Run object\n", + "The Run object provides the interface to the run history -- both to the job and to the control plane (this notebook), and both while the job is running and after it has completed. It provides a number of interesting features for instance:\n", + "* `run.get_details()`: Provides a rich set of properties of the run\n", + "* `run.get_metrics()`: Provides a dictionary with all the metrics that were reported for the Run\n", + "* `run.get_file_names()`: List all the files that were uploaded to the run history for this Run. This will include the `outputs` and `logs` folder, azureml-logs and other logs, as well as files that were explicitly uploaded to the run using `run.upload_file()`\n", + "\n", + "Below are some examples -- please run through them and inspect their output. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_details()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_metrics()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot accuracy over epochs\n", + "Since we can retrieve the metrics from the run, we can easily make plots using `matplotlib` in the notebook. Then we can add the plotted image to the run using `run.log_image()`, so all information about the run is kept together." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.makedirs('./imgs', exist_ok = True)\n", + "metrics = run.get_metrics()\n", + "\n", + "plt.figure(figsize = (13,5))\n", + "plt.plot(metrics['validation_acc'], 'r-', lw = 4, alpha = .6)\n", + "plt.plot(metrics['training_acc'], 'b--', alpha = 0.5)\n", + "plt.legend(['Full evaluation set', 'Training set mini-batch'])\n", + "plt.xlabel('epochs', fontsize = 14)\n", + "plt.ylabel('accuracy', fontsize = 14)\n", + "plt.title('Accuracy over Epochs', fontsize = 16)\n", + "run.log_image(name = 'acc_over_epochs.png', plot = plt)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the saved model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the training script, a TensorFlow `saver` object is used to persist the model in a local folder (local to the compute target). The model was saved to the `./outputs` folder on the disk of the Batch AI cluster node where the job is run. Azure ML automatically uploaded anything written in the `./outputs` folder into run history file store. Subsequently, we can use the `Run` object to download the model files the `saver` object saved. They are under the the `outputs/model` folder in the run history file store, and are downloaded into a local folder named `model`. Note the TensorFlow model consists of four files in binary format and they are not human-readable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create a model folder in the current directory\n", + "os.makedirs('./model', exist_ok = True)\n", + "\n", + "for f in run.get_file_names():\n", + " if f.startswith('outputs/model'):\n", + " output_file_path = os.path.join('./model', f.split('/')[-1])\n", + " print('Downloading from {} to {} ...'.format(f, output_file_path))\n", + " run.download_file(name = f, output_file_path = output_file_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predict on the test set\n", + "Now load the saved TensorFlow graph, and list all operations under the `network` scope. This way we can discover the input tensor `network/X:0` and the output tensor `network/output/MatMul:0`, and use them in the scoring script in the next step.\n", + "\n", + "Note: if your local TensorFlow version is different than the version running in the cluster where the model is trained, you might see a \"compiletime version mismatch\" warning. You can ignore it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "tf.reset_default_graph()\n", + "\n", + "saver = tf.train.import_meta_graph(\"./model/mnist-tf.model.meta\")\n", + "graph = tf.get_default_graph()\n", + "\n", + "for op in graph.get_operations():\n", + " if op.name.startswith('network'):\n", + " print(op.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Feed test dataset to the persisted model to get predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# input tensor. this is an array of 784 elements, each representing the intensity of a pixel in the digit image.\n", + "X = tf.get_default_graph().get_tensor_by_name(\"network/X:0\")\n", + "# output tensor. this is an array of 10 elements, each representing the probability of predicted value of the digit.\n", + "output = tf.get_default_graph().get_tensor_by_name(\"network/output/MatMul:0\")\n", + "\n", + "with tf.Session() as sess:\n", + " saver.restore(sess, './model/mnist-tf.model')\n", + " k = output.eval(feed_dict = {X : X_test})\n", + "# get the prediction, which is the index of the element that has the largest probability value.\n", + "y_hat = np.argmax(k, axis = 1)\n", + "\n", + "# print the first 30 labels and predictions\n", + "print('labels: \\t', y_test[:30])\n", + "print('predictions:\\t', y_hat[:30])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the overall accuracy by comparing the predicted value against the test set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Accuracy on the test set:\", np.average(y_hat == y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Intelligent hyperparameter tuning\n", + "We have trained the model with one set of hyperparameters, now let's how we can do hyperparameter tuning by launching multiple runs on the cluster. First let's define the parameter space using random sampling." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.hyperdrive import *\n", + "\n", + "ps = RandomParameterSampling(\n", + " {\n", + " '--batch-size': choice(25, 50, 100),\n", + " '--first-layer-neurons': choice(10, 50, 200, 300, 500),\n", + " '--second-layer-neurons': choice(10, 50, 200, 500),\n", + " '--learning-rate': loguniform(-6, -1)\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we will create a new estimator without the above parameters since they will be passed in later. Note we still need to keep the `data-folder` parameter since that's not a hyperparamter we will sweep." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "est = TensorFlow(source_directory=script_folder,\n", + " script_params={'--data-folder': ws.get_default_datastore().as_mount()},\n", + " compute_target=compute_target,\n", + " entry_script='tf_mnist.py', \n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will define an early termnination policy. The `BanditPolicy` basically states to check the job every 2 iterations. If the primary metric (defined later) falls outside of the top 10% range, Azure ML terminate the job. This saves us from continuing to explore hyperparameters that don't show promise of helping reach our target metric." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "policy = BanditPolicy(evaluation_interval=2, slack_factor=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are ready to configure a run configuration object, and specify the primary metric `validation_acc` that's recorded in your training runs. If you go back to visit the training script, you will notice that this value is being logged after every epoch (a full batch set). We also want to tell the service that we are looking to maximizing this value. We also set the number of samples to 20, and maximal concurrent job to 4, which is the same as the number of nodes in our computer cluster." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "htc = HyperDriveRunConfig(estimator=est, \n", + " hyperparameter_sampling=ps, \n", + " primary_metric_name='validation_acc', \n", + " primary_metric_goal=PrimaryMetricGoal.MAXIMIZE, \n", + " policy=policy,\n", + " max_total_runs=20,\n", + " max_concurrent_runs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, let's launch the hyperparameter tuning job." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "htr = exp.submit(config=htc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use a run history widget to show the progress. Be patient as this might take a while to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "RunDetails(htr).show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "htr.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Find and register best model\n", + "When all the jobs finish, we can find out the one that has the highest accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_run = htr.get_best_run_by_primary_metric()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's list the model files uploaded during the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(best_run.get_file_names()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then register the folder (and all files in it) as a model named `tf-dnn-mnist` under the workspace for deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = best_run.register_model(model_name='tf-dnn-mnist', model_path='outputs/model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy the model in ACI\n", + "Now we are ready to deploy the model as a web service running in Azure Container Instance [ACI](https://azure.microsoft.com/en-us/services/container-instances/). Azure Machine Learning accomplishes this by constructing a Docker image with the scoring logic and model baked in.\n", + "### Create score.py\n", + "First, we will create a scoring script that will be invoked by the web service call. \n", + "\n", + "* Note that the scoring script must have two required functions, `init()` and `run(input_data)`. \n", + " * In `init()` function, you typically load the model into a global object. This function is executed only once when the Docker container is started. \n", + " * In `run(input_data)` function, the model is used to predict a value based on the input data. The input and output to `run` typically use JSON as serialization and de-serialization format but you are not limited to that." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import numpy as np\n", + "import os\n", + "import tensorflow as tf\n", + "\n", + "from azureml.core.model import Model\n", + "\n", + "def init():\n", + " global X, output, sess\n", + " tf.reset_default_graph()\n", + " model_root = Model.get_model_path('tf-dnn-mnist')\n", + " saver = tf.train.import_meta_graph(os.path.join(model_root, 'mnist-tf.model.meta'))\n", + " X = tf.get_default_graph().get_tensor_by_name(\"network/X:0\")\n", + " output = tf.get_default_graph().get_tensor_by_name(\"network/output/MatMul:0\")\n", + " \n", + " sess = tf.Session()\n", + " saver.restore(sess, os.path.join(model_root, 'mnist-tf.model'))\n", + "\n", + "def run(raw_data):\n", + " data = np.array(json.loads(raw_data)['data'])\n", + " # make prediction\n", + " out = output.eval(session=sess, feed_dict={X: data})\n", + " y_hat = np.argmax(out, axis=1)\n", + " return y_hat.tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create myenv.yml\n", + "We also need to create an environment file so that Azure Machine Learning can install the necessary packages in the Docker image which are required by your scoring script. In this case, we need to specify packages `numpy`, `tensorflow`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import CondaDependencies\n", + "cd = CondaDependencies.create()\n", + "cd.add_conda_package('numpy')\n", + "cd.add_tensorflow_conda_package()\n", + "cd.save_to_file(base_directory='./', conda_file_path='myenv.yml')\n", + "\n", + "print(cd.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy to ACI\n", + "We are almost ready to deploy. Create a deployment configuration and specify the number of CPUs and gigbyte of RAM needed for your ACI container. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", + " memory_gb=1, \n", + " tags={'name':'mnist', 'framework': 'TensorFlow DNN'},\n", + " description='Tensorflow DNN on MNIST')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Deployment Process\n", + "Now we can deploy. **This cell will run for about 7-8 minutes**. Behind the scene, it will do the following:\n", + "1. **Register model** \n", + "Take the local `model` folder (which contains our previously downloaded trained model files) and register it (and the files inside that folder) as a model named `model` under the workspace. Azure ML will register the model directory or model file(s) we specify to the `model_paths` parameter of the `Webservice.deploy` call.\n", + "2. **Build Docker image** \n", + "Build a Docker image using the scoring file (`score.py`), the environment file (`myenv.yml`), and the `model` folder containing the TensorFlow model files. \n", + "3. **Register image** \n", + "Register that image under the workspace. \n", + "4. **Ship to ACI** \n", + "And finally ship the image to the ACI infrastructure, start up a container in ACI using that image, and expose an HTTP endpoint to accept REST client calls." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.image import ContainerImage\n", + "imgconfig = ContainerImage.image_configuration(execution_script=\"score.py\", \n", + " runtime=\"python\", \n", + " conda_file=\"myenv.yml\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "from azureml.core.webservice import Webservice\n", + "\n", + "service = Webservice.deploy_from_model(workspace=ws,\n", + " name='tf-mnist-svc',\n", + " deployment_config=aciconfig,\n", + " models=[model],\n", + " image_config=imgconfig)\n", + "\n", + "service.wait_for_deployment(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tip: If something goes wrong with the deployment, the first thing to look at is the logs from the service by running the following command:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.get_logs())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the scoring web service endpoint:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the deployed model\n", + "Let's test the deployed model. Pick 30 random samples from the test set, and send it to the web service hosted in ACI. Note here we are using the `run` API in the SDK to invoke the service. You can also make raw HTTP calls using any HTTP tool such as curl.\n", + "\n", + "After the invocation, we print the returned predictions and plot them along with the input images. Use red font color and inversed image (white on black) to highlight the misclassified samples. Note since the model accuracy is pretty high, you might have to run the below cell a few times before you can see a misclassified sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "# find 30 random samples from test set\n", + "n = 30\n", + "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", + "\n", + "test_samples = json.dumps({\"data\": X_test[sample_indices].tolist()})\n", + "test_samples = bytes(test_samples, encoding='utf8')\n", + "\n", + "# predict using the deployed model\n", + "result = json.loads(service.run(input_data=test_samples))\n", + "\n", + "# compare actual value vs. the predicted values:\n", + "i = 0\n", + "plt.figure(figsize = (20, 1))\n", + "\n", + "for s in sample_indices:\n", + " plt.subplot(1, n, i + 1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " \n", + " # use different color for misclassified sample\n", + " font_color = 'red' if y_test[s] != result[i] else 'black'\n", + " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", + " \n", + " plt.text(x=10, y=-10, s=y_hat[s], fontsize=18, color=font_color)\n", + " plt.imshow(X_test[s].reshape(28, 28), cmap=clr_map)\n", + " \n", + " i = i + 1\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also send raw HTTP request to the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "\n", + "# send a random row from the test set to score\n", + "random_index = np.random.randint(0, len(X_test)-1)\n", + "input_data = \"{\\\"data\\\": [\" + str(list(X_test[random_index])) + \"]}\"\n", + "\n", + "headers = {'Content-Type':'application/json'}\n", + "\n", + "resp = requests.post(service.scoring_uri, input_data, headers=headers)\n", + "\n", + "print(\"POST to url\", service.scoring_uri)\n", + "#print(\"input data:\", input_data)\n", + "print(\"label:\", y_test[random_index])\n", + "print(\"prediction:\", resp.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the workspace after the web service was deployed. You should see \n", + "* a registered model named 'model' and with the id 'model:1'\n", + "* an image called 'tf-mnist' and with a docker image location pointing to your workspace's Azure Container Registry (ACR) \n", + "* a webservice called 'tf-mnist' with some scoring URL" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "models = ws.models\n", + "for name, model in models.items():\n", + " print(\"Model: {}, ID: {}\".format(name, model.id))\n", + " \n", + "images = ws.images\n", + "for name, image in images.items():\n", + " print(\"Image: {}, location: {}\".format(name, image.image_location))\n", + " \n", + "webservices = ws.webservices\n", + "for name, webservice in webservices.items():\n", + " print(\"Webservice: {}, scoring URI: {}\".format(name, webservice.scoring_uri))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clean up\n", + "You can delete the ACI deployment with a simple delete API call." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also delete the computer cluster. But remember if you set the `cluster_min_nodes` value to 0 when you created the cluster, once the jobs are finished, all nodes are deleted automatically. So you don't have to delete the cluster itself since it won't incur any cost. Next time you submit jobs to it, the cluster will then automatically \"grow\" up to the `cluster_min_nodes` which is set to 4." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# delete the cluster if you need to.\n", + "compute_target.delete()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "minxia" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "nbpresent": { + "slides": { + "05bb34ad-74b0-42b3-9654-8357d1ba9c99": { + "id": "05bb34ad-74b0-42b3-9654-8357d1ba9c99", + "prev": "851089af-9725-40c9-8f0b-9bf892b2b1fe", + "regions": { + "23fb396d-50f9-4770-adb3-0d6abcb40767": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "2039d2d5-aca6-4f25-a12f-df9ae6529cae", + "part": "whole" + }, + "id": "23fb396d-50f9-4770-adb3-0d6abcb40767" + } + } + }, + "11bebe14-d1dc-476d-a31a-5828b9c3adf0": { + "id": "11bebe14-d1dc-476d-a31a-5828b9c3adf0", + "prev": "502648cb-26fe-496b-899f-84c8fe1dcbc0", + "regions": { + "a42499db-623e-4414-bea2-ff3617fd8fc5": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "4788c040-27a2-4dc1-8ed0-378a99b3a255", + "part": "whole" + }, + "id": "a42499db-623e-4414-bea2-ff3617fd8fc5" + } + } + }, + "134f92d0-6389-4226-af51-1134ae8e8278": { + "id": "134f92d0-6389-4226-af51-1134ae8e8278", + "prev": "36b8728c-32ad-4941-be03-5cef51cdc430", + "regions": { + "b6d82a77-2d58-4b9e-a375-3103214b826c": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7ab0e6d0-1f1c-451b-8ac5-687da44a8287", + "part": "whole" + }, + "id": "b6d82a77-2d58-4b9e-a375-3103214b826c" + } + } + }, + "282a2421-697b-4fd0-9485-755abf5a0c18": { + "id": "282a2421-697b-4fd0-9485-755abf5a0c18", + "prev": "a8b9ceb9-b38f-4489-84df-b644c6fe28f2", + "regions": { + "522fec96-abe7-4a34-bd34-633733afecc8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "d58e7785-c2ee-4a45-8e3d-4c538bf8075a", + "part": "whole" + }, + "id": "522fec96-abe7-4a34-bd34-633733afecc8" + } + } + }, + "2dfec088-8a70-411a-9199-904ef3fa2383": { + "id": "2dfec088-8a70-411a-9199-904ef3fa2383", + "prev": "282a2421-697b-4fd0-9485-755abf5a0c18", + "regions": { + "0535fcb6-3a2b-4b46-98a7-3ebb1a38c47e": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "c377ea0c-0cd9-4345-9be2-e20fb29c94c3", + "part": "whole" + }, + "id": "0535fcb6-3a2b-4b46-98a7-3ebb1a38c47e" + } + } + }, + "36a814c9-c540-4a6d-92d9-c03553d3d2c2": { + "id": "36a814c9-c540-4a6d-92d9-c03553d3d2c2", + "prev": "b52e4d09-5186-44e5-84db-3371c087acde", + "regions": { + "8bfba503-9907-43f0-b1a6-46a0b4311793": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "d5e4a56c-dfac-4346-be83-1c15b503deac", + "part": "whole" + }, + "id": "8bfba503-9907-43f0-b1a6-46a0b4311793" + } + } + }, + "36b8728c-32ad-4941-be03-5cef51cdc430": { + "id": "36b8728c-32ad-4941-be03-5cef51cdc430", + "prev": "05bb34ad-74b0-42b3-9654-8357d1ba9c99", + "regions": { + "a36a5bdf-7f62-49b0-8634-e155a98851dc": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "e33dfc47-e7df-4623-a7a6-ab6bcf944629", + "part": "whole" + }, + "id": "a36a5bdf-7f62-49b0-8634-e155a98851dc" + } + } + }, + "3f136f2a-f14c-4a4b-afea-13380556a79c": { + "id": "3f136f2a-f14c-4a4b-afea-13380556a79c", + "prev": "54cb8dfd-a89c-4922-867b-3c87d8b67cd3", + "regions": { + "80ecf237-d1b0-401e-83d2-6d04b7fcebd3": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7debeb2b-ecea-414f-9b50-49657abb3e6a", + "part": "whole" + }, + "id": "80ecf237-d1b0-401e-83d2-6d04b7fcebd3" + } + } + }, + "502648cb-26fe-496b-899f-84c8fe1dcbc0": { + "id": "502648cb-26fe-496b-899f-84c8fe1dcbc0", + "prev": "3f136f2a-f14c-4a4b-afea-13380556a79c", + "regions": { + "4c83bb4d-2a52-41ba-a77f-0c6efebd83a6": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "dbd22f6b-6d49-4005-b8fe-422ef8ef1d42", + "part": "whole" + }, + "id": "4c83bb4d-2a52-41ba-a77f-0c6efebd83a6" + } + } + }, + "54cb8dfd-a89c-4922-867b-3c87d8b67cd3": { + "id": "54cb8dfd-a89c-4922-867b-3c87d8b67cd3", + "prev": "aa224267-f885-4c0c-95af-7bacfcc186d9", + "regions": { + "0848f0a7-032d-46c7-b35c-bfb69c83f961": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "3c32c557-d0e8-4bb3-a61a-aa51a767cd4e", + "part": "whole" + }, + "id": "0848f0a7-032d-46c7-b35c-bfb69c83f961" + } + } + }, + "636b563c-faee-4c9e-a6a3-f46a905bfa82": { + "id": "636b563c-faee-4c9e-a6a3-f46a905bfa82", + "prev": "c5f59b98-a227-4344-9d6d-03abdd01c6aa", + "regions": { + "9c64f662-05dc-4b14-9cdc-d450b96f4368": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "70640ac0-7041-47a8-9a7f-e871defd74b2", + "part": "whole" + }, + "id": "9c64f662-05dc-4b14-9cdc-d450b96f4368" + } + } + }, + "793cec2f-8413-484d-aa1e-388fd2b53a45": { + "id": "793cec2f-8413-484d-aa1e-388fd2b53a45", + "prev": "c66f3dfd-2d27-482b-be78-10ba733e826b", + "regions": { + "d08f9cfa-3b8d-4fb4-91ba-82d9858ea93e": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "dd56113e-e3db-41ae-91b7-2472ed194308", + "part": "whole" + }, + "id": "d08f9cfa-3b8d-4fb4-91ba-82d9858ea93e" + } + } + }, + "83e912ff-260a-4391-8a12-331aba098506": { + "id": "83e912ff-260a-4391-8a12-331aba098506", + "prev": "fe5a0732-69f5-462a-8af6-851f84a9fdec", + "regions": { + "2fefcf5f-ea20-4604-a528-5e6c91bcb100": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "c3f2f57c-7454-4d3e-b38d-b0946cf066ea", + "part": "whole" + }, + "id": "2fefcf5f-ea20-4604-a528-5e6c91bcb100" + } + } + }, + "851089af-9725-40c9-8f0b-9bf892b2b1fe": { + "id": "851089af-9725-40c9-8f0b-9bf892b2b1fe", + "prev": "636b563c-faee-4c9e-a6a3-f46a905bfa82", + "regions": { + "31c9dda5-fdf4-45e2-bcb7-12aa0f30e1d8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "8408b90e-6cdd-44d1-86d3-648c23f877ac", + "part": "whole" + }, + "id": "31c9dda5-fdf4-45e2-bcb7-12aa0f30e1d8" + } + } + }, + "87ab653d-e804-470f-bde9-c67caaa0f354": { + "id": "87ab653d-e804-470f-bde9-c67caaa0f354", + "prev": "a8c2d446-caee-42c8-886a-ed98f4935d78", + "regions": { + "bc3aeb56-c465-4868-a1ea-2de82584de98": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "59f52294-4a25-4c92-bab8-3b07f0f44d15", + "part": "whole" + }, + "id": "bc3aeb56-c465-4868-a1ea-2de82584de98" + } + } + }, + "8b887c97-83bc-4395-83ac-f6703cbe243d": { + "id": "8b887c97-83bc-4395-83ac-f6703cbe243d", + "prev": "36a814c9-c540-4a6d-92d9-c03553d3d2c2", + "regions": { + "9d0bc72a-cb13-483f-a572-2bf60d0d145f": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "75499c85-d0a1-43db-8244-25778b9b2736", + "part": "whole" + }, + "id": "9d0bc72a-cb13-483f-a572-2bf60d0d145f" + } + } + }, + "a8b9ceb9-b38f-4489-84df-b644c6fe28f2": { + "id": "a8b9ceb9-b38f-4489-84df-b644c6fe28f2", + "prev": null, + "regions": { + "f741ed94-3f24-4427-b615-3ab8753e5814": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bf74d2e9-2708-49b1-934b-e0ede342f475", + "part": "whole" + }, + "id": "f741ed94-3f24-4427-b615-3ab8753e5814" + } + } + }, + "a8c2d446-caee-42c8-886a-ed98f4935d78": { + "id": "a8c2d446-caee-42c8-886a-ed98f4935d78", + "prev": "2dfec088-8a70-411a-9199-904ef3fa2383", + "regions": { + "f03457d8-b2a7-4e14-9a73-cab80c5b815d": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "edaa7f2f-2439-4148-b57a-8c794c0945ec", + "part": "whole" + }, + "id": "f03457d8-b2a7-4e14-9a73-cab80c5b815d" + } + } + }, + "aa224267-f885-4c0c-95af-7bacfcc186d9": { + "id": "aa224267-f885-4c0c-95af-7bacfcc186d9", + "prev": "793cec2f-8413-484d-aa1e-388fd2b53a45", + "regions": { + "0d7ac442-5e1d-49a5-91b3-1432d72449d8": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "4d6826fe-2cb8-4468-85ed-a242a1ce7155", + "part": "whole" + }, + "id": "0d7ac442-5e1d-49a5-91b3-1432d72449d8" + } + } + }, + "b52e4d09-5186-44e5-84db-3371c087acde": { + "id": "b52e4d09-5186-44e5-84db-3371c087acde", + "prev": "134f92d0-6389-4226-af51-1134ae8e8278", + "regions": { + "7af7d997-80b2-497d-bced-ef8341763439": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "376882ec-d469-4fad-9462-18e4bbea64ca", + "part": "whole" + }, + "id": "7af7d997-80b2-497d-bced-ef8341763439" + } + } + }, + "c5f59b98-a227-4344-9d6d-03abdd01c6aa": { + "id": "c5f59b98-a227-4344-9d6d-03abdd01c6aa", + "prev": "83e912ff-260a-4391-8a12-331aba098506", + "regions": { + "7268abff-0540-4c06-aefc-c386410c0953": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "396d478b-34aa-4afa-9898-cdce8222a516", + "part": "whole" + }, + "id": "7268abff-0540-4c06-aefc-c386410c0953" + } + } + }, + "c66f3dfd-2d27-482b-be78-10ba733e826b": { + "id": "c66f3dfd-2d27-482b-be78-10ba733e826b", + "prev": "8b887c97-83bc-4395-83ac-f6703cbe243d", + "regions": { + "6cbe8e0e-8645-41a1-8a38-e44acb81be4b": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "7594c7c7-b808-48f7-9500-d7830a07968a", + "part": "whole" + }, + "id": "6cbe8e0e-8645-41a1-8a38-e44acb81be4b" + } + } + }, + "d22045e5-7e3e-452e-bc7b-c6c4a893da8e": { + "id": "d22045e5-7e3e-452e-bc7b-c6c4a893da8e", + "prev": "ec41f96a-63a3-4825-9295-f4657a440ddb", + "regions": { + "24e2a3a9-bf65-4dab-927f-0bf6ffbe581d": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "defe921f-8097-44c3-8336-8af6700804a7", + "part": "whole" + }, + "id": "24e2a3a9-bf65-4dab-927f-0bf6ffbe581d" + } + } + }, + "d24c958c-e419-4e4d-aa9c-d228a8ca55e4": { + "id": "d24c958c-e419-4e4d-aa9c-d228a8ca55e4", + "prev": "11bebe14-d1dc-476d-a31a-5828b9c3adf0", + "regions": { + "25312144-9faa-4680-bb8e-6307ea71370f": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bed09a92-9a7a-473b-9464-90e479883a3e", + "part": "whole" + }, + "id": "25312144-9faa-4680-bb8e-6307ea71370f" + } + } + }, + "ec41f96a-63a3-4825-9295-f4657a440ddb": { + "id": "ec41f96a-63a3-4825-9295-f4657a440ddb", + "prev": "87ab653d-e804-470f-bde9-c67caaa0f354", + "regions": { + "22e8be98-c254-4d04-b0e4-b9b5ae46eefe": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "bc70f780-c240-4779-96f3-bc5ef9a37d59", + "part": "whole" + }, + "id": "22e8be98-c254-4d04-b0e4-b9b5ae46eefe" + } + } + }, + "fe5a0732-69f5-462a-8af6-851f84a9fdec": { + "id": "fe5a0732-69f5-462a-8af6-851f84a9fdec", + "prev": "d22045e5-7e3e-452e-bc7b-c6c4a893da8e", + "regions": { + "671b89f5-fa9c-4bc1-bdeb-6e0a4ce8939b": { + "attrs": { + "height": 0.8, + "width": 0.8, + "x": 0.1, + "y": 0.1 + }, + "content": { + "cell": "fd46e2ab-4ab6-4001-b536-1f323525d7d3", + "part": "whole" + }, + "id": "671b89f5-fa9c-4bc1-bdeb-6e0a4ce8939b" + } + } + } + }, + "themes": {} + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/nn.png b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/nn.png new file mode 100644 index 00000000..8910281e Binary files /dev/null and b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/nn.png differ diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/tf_mnist.py b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/tf_mnist.py new file mode 100644 index 00000000..746bc048 --- /dev/null +++ b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/tf_mnist.py @@ -0,0 +1,106 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +import numpy as np +import argparse +import os +import tensorflow as tf + +from azureml.core import Run +from utils import load_data + +print("TensorFlow version:", tf.VERSION) + +parser = argparse.ArgumentParser() +parser.add_argument('--data-folder', type=str, dest='data_folder', help='data folder mounting point') +parser.add_argument('--batch-size', type=int, dest='batch_size', default=50, help='mini batch size for training') +parser.add_argument('--first-layer-neurons', type=int, dest='n_hidden_1', default=100, + help='# of neurons in the first layer') +parser.add_argument('--second-layer-neurons', type=int, dest='n_hidden_2', default=100, + help='# of neurons in the second layer') +parser.add_argument('--learning-rate', type=float, dest='learning_rate', default=0.01, help='learning rate') +args = parser.parse_args() + +data_folder = os.path.join(args.data_folder, 'mnist') + +print('training dataset is stored here:', data_folder) + +X_train = load_data(os.path.join(data_folder, 'train-images.gz'), False) / 255.0 +X_test = load_data(os.path.join(data_folder, 'test-images.gz'), False) / 255.0 + +y_train = load_data(os.path.join(data_folder, 'train-labels.gz'), True).reshape(-1) +y_test = load_data(os.path.join(data_folder, 'test-labels.gz'), True).reshape(-1) + +print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, sep='\n') +training_set_size = X_train.shape[0] + +n_inputs = 28 * 28 +n_h1 = args.n_hidden_1 +n_h2 = args.n_hidden_2 +n_outputs = 10 +learning_rate = args.learning_rate +n_epochs = 50 +batch_size = args.batch_size + +with tf.name_scope('network'): + # construct the DNN + X = tf.placeholder(tf.float32, shape=(None, n_inputs), name='X') + y = tf.placeholder(tf.int64, shape=(None), name='y') + h1 = tf.layers.dense(X, n_h1, activation=tf.nn.relu, name='h1') + h2 = tf.layers.dense(h1, n_h2, activation=tf.nn.relu, name='h2') + output = tf.layers.dense(h2, n_outputs, name='output') + +with tf.name_scope('train'): + cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=output) + loss = tf.reduce_mean(cross_entropy, name='loss') + optimizer = tf.train.GradientDescentOptimizer(learning_rate) + train_op = optimizer.minimize(loss) + +with tf.name_scope('eval'): + correct = tf.nn.in_top_k(output, y, 1) + acc_op = tf.reduce_mean(tf.cast(correct, tf.float32)) + +init = tf.global_variables_initializer() +saver = tf.train.Saver() + +# start an Azure ML run +run = Run.get_context() + +with tf.Session() as sess: + init.run() + for epoch in range(n_epochs): + + # randomly shuffle training set + indices = np.random.permutation(training_set_size) + X_train = X_train[indices] + y_train = y_train[indices] + + # batch index + b_start = 0 + b_end = b_start + batch_size + for _ in range(training_set_size // batch_size): + # get a batch + X_batch, y_batch = X_train[b_start: b_end], y_train[b_start: b_end] + + # update batch index for the next batch + b_start = b_start + batch_size + b_end = min(b_start + batch_size, training_set_size) + + # train + sess.run(train_op, feed_dict={X: X_batch, y: y_batch}) + # evaluate training set + acc_train = acc_op.eval(feed_dict={X: X_batch, y: y_batch}) + # evaluate validation set + acc_val = acc_op.eval(feed_dict={X: X_test, y: y_test}) + + # log accuracies + run.log('training_acc', np.float(acc_train)) + run.log('validation_acc', np.float(acc_val)) + print(epoch, '-- Training accuracy:', acc_train, '\b Validation accuracy:', acc_val) + y_hat = np.argmax(output.eval(feed_dict={X: X_test}), axis=1) + + run.log('final_acc', np.float(acc_val)) + + os.makedirs('./outputs/model', exist_ok=True) + # files saved in the "./outputs" folder are automatically uploaded into run history + saver.save(sess, './outputs/model/mnist-tf.model') diff --git a/training/03.train-hyperparameter-tune-deploy-with-tensorflow/utils.py b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/utils.py new file mode 100644 index 00000000..98170ada --- /dev/null +++ b/training/03.train-hyperparameter-tune-deploy-with-tensorflow/utils.py @@ -0,0 +1,27 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +import gzip +import numpy as np +import struct + + +# load compressed MNIST gz files and return numpy arrays +def load_data(filename, label=False): + with gzip.open(filename) as gz: + struct.unpack('I', gz.read(4)) + n_items = struct.unpack('>I', gz.read(4)) + if not label: + n_rows = struct.unpack('>I', gz.read(4))[0] + n_cols = struct.unpack('>I', gz.read(4))[0] + res = np.frombuffer(gz.read(n_items[0] * n_rows * n_cols), dtype=np.uint8) + res = res.reshape(n_items[0], n_rows * n_cols) + else: + res = np.frombuffer(gz.read(n_items[0]), dtype=np.uint8) + res = res.reshape(n_items[0], 1) + return res + + +# one-hot encode a 1-D array +def one_hot_encode(array, num_of_classes): + return np.eye(num_of_classes)[array.reshape(-1)] diff --git a/training/04.distributed-tensorflow-with-horovod/.gitignore b/training/04.distributed-tensorflow-with-horovod/.gitignore new file mode 100644 index 00000000..9795c1f1 --- /dev/null +++ b/training/04.distributed-tensorflow-with-horovod/.gitignore @@ -0,0 +1,2 @@ +/data/ +/tf-distr-hvd/ diff --git a/training/04.distributed-tensorflow-with-horovod/04.distributed-tensorflow-with-horovod.ipynb b/training/04.distributed-tensorflow-with-horovod/04.distributed-tensorflow-with-horovod.ipynb new file mode 100644 index 00000000..137c98d7 --- /dev/null +++ b/training/04.distributed-tensorflow-with-horovod/04.distributed-tensorflow-with-horovod.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 04. Distributed Tensorflow with Horovod\n", + "In this tutorial, you will train a word2vec model in TensorFlow using distributed training via [Horovod](https://github.com/uber/horovod)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)\n", + "* Review the [tutorial](https://aka.ms/aml-notebook-hyperdrive) on single-node TensorFlow training using the SDK" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload data to datastore\n", + "To make data accessible for remote training, AML provides a convenient way to do so via a [Datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data). The datastore provides a mechanism for you to upload/download data to Azure Storage, and interact with it from your remote compute targets. \n", + "\n", + "If your data is already stored in Azure, or you download the data as part of your training script, you will not need to do this step. For this tutorial, although you can download the data in your training script, we will demonstrate how to upload the training data to a datastore and access it during training to illustrate the datastore functionality." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, download the training data from [here](http://mattmahoney.net/dc/text8.zip) to your local machine:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib\n", + "\n", + "os.makedirs('./data', exist_ok=True)\n", + "download_url = 'http://mattmahoney.net/dc/text8.zip'\n", + "urllib.request.urlretrieve(download_url, filename='./data/text8.zip')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each workspace is associated with a default datastore. In this tutorial, we will upload the training data to this default datastore. The below code will upload the contents of the data directory to the path `./data` on the default datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "print(ds.datastore_type, ds.account_name, ds.container_name)\n", + "\n", + "ds.upload(src_dir='data', target_path='data', overwrite=True, show_progress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For convenience, let's get a reference to the path on the datastore with the zip file of training data. We can do so using the `path` method. In the next section, we can then pass this reference to our training script's `--input_data` argument. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "path_on_datastore = 'data/text8.zip'\n", + "ds_data = ds.path(path_on_datastore)\n", + "print(ds_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model on the remote compute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script, and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "project_folder = './tf-distr-hvd'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy the training script `tf_horovod_word2vec.py` into this project directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('tf_horovod_word2vec.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed TensorFlow tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'tf-distr-hvd'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a TensorFlow estimator\n", + "The AML SDK's TensorFlow estimator enables you to easily submit TensorFlow training jobs for both single-node and distributed runs. For more information on the TensorFlow estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-tensorflow)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import TensorFlow\n", + "\n", + "script_params={\n", + " '--input_data': ds_data\n", + "}\n", + "\n", + "estimator= TensorFlow(source_directory=project_folder,\n", + " compute_target=compute_target,\n", + " script_params=script_params,\n", + " entry_script='tf_horovod_word2vec.py',\n", + " node_count=2,\n", + " process_count_per_node=1,\n", + " distributed_backend='mpi',\n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code specifies that we will run our training script on `2` nodes, with one worker per node. In order to execute a distributed run using MPI/Horovod, you must provide the argument `distributed_backend='mpi'`. Using this estimator with these settings, TensorFlow, Horovod and their dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `TensorFlow` constructor's `pip_packages` or `conda_packages` parameters.\n", + "\n", + "Note that we passed our training data reference `ds_data` to our script's `--input_data` argument. This will 1) mount our datastore on the remote compute and 2) provide the path to the data zip file on our datastore." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can block until the script has completed training before running more code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "minxia" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py b/training/04.distributed-tensorflow-with-horovod/tf_horovod_word2vec.py similarity index 100% rename from training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py rename to training/04.distributed-tensorflow-with-horovod/tf_horovod_word2vec.py diff --git a/training/05.distributed-tensorflow-with-parameter-server/.gitignore b/training/05.distributed-tensorflow-with-parameter-server/.gitignore new file mode 100644 index 00000000..7d49cdc5 --- /dev/null +++ b/training/05.distributed-tensorflow-with-parameter-server/.gitignore @@ -0,0 +1 @@ +/tf-distr-ps/ diff --git a/training/05.distributed-tensorflow-with-parameter-server/05.distributed-tensorflow-with-parameter-server.ipynb b/training/05.distributed-tensorflow-with-parameter-server/05.distributed-tensorflow-with-parameter-server.ipynb new file mode 100644 index 00000000..bc6eafd9 --- /dev/null +++ b/training/05.distributed-tensorflow-with-parameter-server/05.distributed-tensorflow-with-parameter-server.ipynb @@ -0,0 +1,313 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 05. Distributed TensorFlow with parameter server\n", + "In this tutorial, you will train a TensorFlow model on the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset using native [distributed TensorFlow](https://www.tensorflow.org/deploy/distributed)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", + "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)\n", + "* Review the [tutorial](https://aka.ms/aml-notebook-hyperdrive) on single-node TensorFlow training using the SDK" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target.')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model on the remote compute\n", + "Now that we have the cluster ready to go, let's run our distributed training job." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script, and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "project_folder = './tf-distr-ps'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy the training script `tf_mnist_replica.py` into this project directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('tf_mnist_replica.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed TensorFlow tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'tf-distr-ps'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a TensorFlow estimator\n", + "The AML SDK's TensorFlow estimator enables you to easily submit TensorFlow training jobs for both single-node and distributed runs. For more information on the TensorFlow estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-tensorflow)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import TensorFlow\n", + "\n", + "script_params={\n", + " '--num_gpus': 1\n", + "}\n", + "\n", + "estimator = TensorFlow(source_directory=project_folder,\n", + " compute_target=compute_target,\n", + " script_params=script_params,\n", + " entry_script='tf_mnist_replica.py',\n", + " node_count=2,\n", + " worker_count=2,\n", + " parameter_server_count=1, \n", + " distributed_backend='ps',\n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above code specifies that we will run our training script on `2` nodes, with two workers and one parameter server. In order to execute a native distributed TensorFlow run, you must provide the argument `distributed_backend='ps'`. Using this estimator with these settings, TensorFlow and its dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `TensorFlow` constructor's `pip_packages` or `conda_packages` parameters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run.get_details())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can block until the script has completed training before running more code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True) # this provides a verbose log" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "minxia" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "minxia" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/distributed-tensorflow-with-parameter-server/tf_mnist_replica.py b/training/05.distributed-tensorflow-with-parameter-server/tf_mnist_replica.py similarity index 100% rename from training/distributed-tensorflow-with-parameter-server/tf_mnist_replica.py rename to training/05.distributed-tensorflow-with-parameter-server/tf_mnist_replica.py diff --git a/training/06.distributed-cntk-with-custom-docker/06.distributed-cntk-with-custom-docker.ipynb b/training/06.distributed-cntk-with-custom-docker/06.distributed-cntk-with-custom-docker.ipynb new file mode 100644 index 00000000..2891012d --- /dev/null +++ b/training/06.distributed-cntk-with-custom-docker/06.distributed-cntk-with-custom-docker.ipynb @@ -0,0 +1,391 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 06. Distributed CNTK using custom docker images\n", + "In this tutorial, you will train a CNTK model on the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset using a custom docker image and distributed training." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through the [00.configuration.ipynb]() notebook to:\n", + " * install the AML SDK\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize workspace\n", + "\n", + "Initialize a [Workspace](https://review.docs.microsoft.com/en-us/azure/machine-learning/service/concept-azure-machine-learning-architecture?branch=release-ignite-aml#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.workspace import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a remote compute target\n", + "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an [Azure Batch AI](https://docs.microsoft.com/azure/batch-ai/overview) cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", + "\n", + "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, BatchAiCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"gpucluster\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", + " print('Found existing compute target.')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = BatchAiCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " autoscale_enabled=True,\n", + " cluster_min_nodes=0, \n", + " cluster_max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", + "\n", + " compute_target.wait_for_completion(show_output=True)\n", + "\n", + " # Use the 'status' property to get a detailed status for the current cluster. \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload training data\n", + "For this tutorial, we will be using the MNIST dataset.\n", + "\n", + "First, let's download the dataset. We've included the `install_mnist.py` script to download the data and convert it to a CNTK-supported format. Our data files will get written to a directory named `'mnist'`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import install_mnist\n", + "\n", + "install_mnist.main('mnist')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make the data accessible for remote training, you will need to upload the data from your local machine to the cloud. AML provides a convenient way to do so via a [Datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data). The datastore provides a mechanism for you to upload/download data, and interact with it from your remote compute targets. \n", + "\n", + "Each workspace is associated with a default datastore. In this tutorial, we will upload the training data to this default datastore, which we will then mount on the remote compute for training in the next section." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "print(ds.datastore_type, ds.account_name, ds.container_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code will upload the training data to the path `./mnist` on the default datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds.upload(src_dir='./mnist', target_path='./mnist')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's get a reference to the path on the datastore with the training data. We can do so using the `path` method. In the next section, we can then pass this reference to our training script's `--data_dir` argument. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "path_on_datastore = 'mnist'\n", + "ds_data = ds.path(path_on_datastore)\n", + "print(ds_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train model on the remote compute\n", + "Now that we have the cluster ready to go, let's run our distributed training job." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a project directory\n", + "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script, and any additional files your training script depends on." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "project_folder = './cntk-distr'\n", + "os.makedirs(project_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy the training script `cntk_distr_mnist.py` into this project directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('cntk_distr_mnist.py', project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an experiment\n", + "Create an [experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed CNTK tutorial. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment\n", + "\n", + "experiment_name = 'cntk-distr'\n", + "experiment = Experiment(ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an Estimator\n", + "The AML SDK's base Estimator enables you to easily submit custom scripts for both single-node and distributed runs. You should this generic estimator for training code using frameworks such as sklearn or CNTK that don't have corresponding custom estimators. For more information on using the generic estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-ml-models)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.estimator import *\n", + "\n", + "script_params = {\n", + " '--num_epochs': 50,\n", + " '--data_dir': ds_data.as_mount(),\n", + " '--output_dir': './outputs'\n", + "}\n", + "\n", + "estimator = Estimator(source_directory=project_folder,\n", + " compute_target=compute_target,\n", + " entry_script='cntk_distr_mnist.py',\n", + " script_params=script_params,\n", + " node_count=2,\n", + " process_count_per_node=1,\n", + " distributed_backend='mpi', \n", + " pip_packages=['cntk-gpu==2.6'],\n", + " custom_docker_base_image='microsoft/mmlspark:gpu-0.12',\n", + " use_gpu=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We would like to train our model using a [pre-built Docker container](https://hub.docker.com/r/microsoft/mmlspark/). To do so, specify the name of the docker image to the argument `custom_docker_base_image`. You can only provide images available in public docker repositories such as Docker Hub using this argument. To use an image from a private docker repository, use the constructor's `environment_definition` parameter instead. Finally, we provide the `cntk` package to `pip_packages` to install CNTK 2.6 on our custom image.\n", + "\n", + "The above code specifies that we will run our training script on `2` nodes, with one worker per node. In order to run distributed CNTK, which uses MPI, you must provide the argument `distributed_backend='mpi'`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job\n", + "Run your experiment by submitting your estimator object. Note that this call is asynchronous." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = experiment.submit(estimator)\n", + "print(run.get_details())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monitor your run\n", + "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can block until the script has completed training before running more code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "minxia" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/06.distributed-cntk-with-custom-docker/cntk_distr_mnist.py b/training/06.distributed-cntk-with-custom-docker/cntk_distr_mnist.py new file mode 100644 index 00000000..9d263e07 --- /dev/null +++ b/training/06.distributed-cntk-with-custom-docker/cntk_distr_mnist.py @@ -0,0 +1,117 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. +# Adapted from: +# https://github.com/Microsoft/CNTK/blob/master/Examples/Image/Classification/ConvNet/Python/ConvNet_MNIST.py +# ==================================================================== +"""Train a CNN model on the MNIST dataset via distributed training.""" + +from __future__ import print_function +import numpy as np +import os +import cntk as C +import argparse +from cntk.train.training_session import CheckpointConfig, TestConfig + + +def create_reader(path, is_training, input_dim, label_dim, total_number_of_samples): + """Define the reader for both training and evaluation action.""" + return C.io.MinibatchSource(C.io.CTFDeserializer(path, C.io.StreamDefs( + features=C.io.StreamDef(field='features', shape=input_dim), + labels=C.io.StreamDef(field='labels', shape=label_dim) + )), randomize=is_training, max_samples=total_number_of_samples) + + +def convnet_mnist(max_epochs, output_dir, data_dir, debug_output=False, epoch_size=60000, minibatch_size=64): + """Creates and trains a feedforward classification model for MNIST images.""" + image_height = 28 + image_width = 28 + num_channels = 1 + input_dim = image_height * image_width * num_channels + num_output_classes = 10 + + # Input variables denoting the features and label data + input_var = C.ops.input_variable((num_channels, image_height, image_width), np.float32) + label_var = C.ops.input_variable(num_output_classes, np.float32) + + # Instantiate the feedforward classification model + scaled_input = C.ops.element_times(C.ops.constant(0.00390625), input_var) + + with C.layers.default_options(activation=C.ops.relu, pad=False): + conv1 = C.layers.Convolution2D((5, 5), 32, pad=True)(scaled_input) + pool1 = C.layers.MaxPooling((3, 3), (2, 2))(conv1) + conv2 = C.layers.Convolution2D((3, 3), 48)(pool1) + pool2 = C.layers.MaxPooling((3, 3), (2, 2))(conv2) + conv3 = C.layers.Convolution2D((3, 3), 64)(pool2) + f4 = C.layers.Dense(96)(conv3) + drop4 = C.layers.Dropout(0.5)(f4) + z = C.layers.Dense(num_output_classes, activation=None)(drop4) + + ce = C.losses.cross_entropy_with_softmax(z, label_var) + pe = C.metrics.classification_error(z, label_var) + + # Load train data + reader_train = create_reader(os.path.join(data_dir, 'Train-28x28_cntk_text.txt'), True, + input_dim, num_output_classes, max_epochs * epoch_size) + # Load test data + reader_test = create_reader(os.path.join(data_dir, 'Test-28x28_cntk_text.txt'), False, + input_dim, num_output_classes, C.io.FULL_DATA_SWEEP) + + # Set learning parameters + lr_per_sample = [0.001] * 10 + [0.0005] * 10 + [0.0001] + lr_schedule = C.learning_parameter_schedule_per_sample(lr_per_sample, epoch_size=epoch_size) + mms = [0] * 5 + [0.9990239141819757] + mm_schedule = C.learners.momentum_schedule_per_sample(mms, epoch_size=epoch_size) + + # Instantiate the trainer object to drive the model training + local_learner = C.learners.momentum_sgd(z.parameters, lr_schedule, mm_schedule) + progress_printer = C.logging.ProgressPrinter( + tag='Training', + rank=C.train.distributed.Communicator.rank(), + num_epochs=max_epochs, + ) + + learner = C.train.distributed.data_parallel_distributed_learner(local_learner) + trainer = C.Trainer(z, (ce, pe), learner, progress_printer) + + # define mapping from reader streams to network inputs + input_map_train = { + input_var: reader_train.streams.features, + label_var: reader_train.streams.labels + } + + input_map_test = { + input_var: reader_test.streams.features, + label_var: reader_test.streams.labels + } + + C.logging.log_number_of_parameters(z) + print() + + C.train.training_session( + trainer=trainer, + mb_source=reader_train, + model_inputs_to_streams=input_map_train, + mb_size=minibatch_size, + progress_frequency=epoch_size, + checkpoint_config=CheckpointConfig(frequency=epoch_size, + filename=os.path.join(output_dir, "ConvNet_MNIST")), + test_config=TestConfig(reader_test, minibatch_size=minibatch_size, + model_inputs_to_streams=input_map_test) + ).train() + + return + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--num_epochs', help='Total number of epochs to train', type=int, default='40') + parser.add_argument('--output_dir', help='Output directory', required=False, default='outputs') + parser.add_argument('--data_dir', help='Directory with training data') + args = parser.parse_args() + + os.makedirs(args.output_dir, exist_ok=True) + + convnet_mnist(args.num_epochs, args.output_dir, args.data_dir) + + # Must call MPI finalize when process exit without exceptions + C.train.distributed.Communicator.finalize() diff --git a/training/06.distributed-cntk-with-custom-docker/install_mnist.py b/training/06.distributed-cntk-with-custom-docker/install_mnist.py new file mode 100644 index 00000000..f0fe108f --- /dev/null +++ b/training/06.distributed-cntk-with-custom-docker/install_mnist.py @@ -0,0 +1,96 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. +# Script from: +# https://github.com/Microsoft/CNTK/blob/master/Examples/Image/DataSets/MNIST/install_mnist.py + +from __future__ import print_function +try: + from urllib.request import urlretrieve +except ImportError: + from urllib import urlretrieve +import gzip +import os +import struct +import numpy as np + + +def loadData(src, cimg): + print('Downloading ' + src) + gzfname, h = urlretrieve(src, './delete.me') + print('Done.') + try: + with gzip.open(gzfname) as gz: + n = struct.unpack('I', gz.read(4)) + # Read magic number. + if n[0] != 0x3080000: + raise Exception('Invalid file: unexpected magic number.') + # Read number of entries. + n = struct.unpack('>I', gz.read(4))[0] + if n != cimg: + raise Exception('Invalid file: expected {0} entries.'.format(cimg)) + crow = struct.unpack('>I', gz.read(4))[0] + ccol = struct.unpack('>I', gz.read(4))[0] + if crow != 28 or ccol != 28: + raise Exception('Invalid file: expected 28 rows/cols per image.') + # Read data. + res = np.fromstring(gz.read(cimg * crow * ccol), dtype=np.uint8) + finally: + os.remove(gzfname) + return res.reshape((cimg, crow * ccol)) + + +def loadLabels(src, cimg): + print('Downloading ' + src) + gzfname, h = urlretrieve(src, './delete.me') + print('Done.') + try: + with gzip.open(gzfname) as gz: + n = struct.unpack('I', gz.read(4)) + # Read magic number. + if n[0] != 0x1080000: + raise Exception('Invalid file: unexpected magic number.') + # Read number of entries. + n = struct.unpack('>I', gz.read(4)) + if n[0] != cimg: + raise Exception('Invalid file: expected {0} rows.'.format(cimg)) + # Read labels. + res = np.fromstring(gz.read(cimg), dtype=np.uint8) + finally: + os.remove(gzfname) + return res.reshape((cimg, 1)) + + +def load(dataSrc, labelsSrc, cimg): + data = loadData(dataSrc, cimg) + labels = loadLabels(labelsSrc, cimg) + return np.hstack((data, labels)) + + +def savetxt(filename, ndarray): + with open(filename, 'w') as f: + labels = list(map(' '.join, np.eye(10, dtype=np.uint).astype(str))) + for row in ndarray: + row_str = row.astype(str) + label_str = labels[row[-1]] + feature_str = ' '.join(row_str[:-1]) + f.write('|labels {} |features {}\n'.format(label_str, feature_str)) + + +def main(data_dir): + os.makedirs(data_dir, exist_ok=True) + train = load('http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz', + 'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz', 60000) + print('Writing train text file...') + train_txt = os.path.join(data_dir, 'Train-28x28_cntk_text.txt') + savetxt(train_txt, train) + print('Done.') + test = load('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', + 'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', 10000) + print('Writing test text file...') + test_txt = os.path.join(data_dir, 'Test-28x28_cntk_text.txt') + savetxt(test_txt, test) + print('Done.') + + +if __name__ == "__main__": + main('mnist') diff --git a/training/07.tensorboard/07.tensorboard.ipynb b/training/07.tensorboard/07.tensorboard.ipynb new file mode 100644 index 00000000..08927891 --- /dev/null +++ b/training/07.tensorboard/07.tensorboard.ipynb @@ -0,0 +1,531 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 40. Tensorboard Integration with Run History\n", + "\n", + "1. Run a Tensorflow job locally and view its TB output live.\n", + "2. The same, for a DSVM.\n", + "3. And once more, with Batch AI.\n", + "4. Finally, we'll collect all of these historical runs together into a single Tensorboard graph." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Diagnostics\n", + "Opt-in diagnostics for better experience, quality, and security of future releases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "Diagnostics" + ] + }, + "outputs": [], + "source": [ + "from azureml.telemetry import set_diagnostics_collection\n", + "set_diagnostics_collection(send_diagnostics = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set experiment name and create project\n", + "Choose a name for your run history container in the workspace, and create a folder for the project." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from os import path, makedirs\n", + "experiment_name = 'tensorboard-demo'\n", + "\n", + "# experiment folder\n", + "exp_dir = './sample_projects/' + experiment_name\n", + "\n", + "if not path.exists(exp_dir):\n", + " makedirs(exp_dir)\n", + "\n", + "# runs we started in this session, for the finale\n", + "runs = []" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download Tensorflow Tensorboard demo code\n", + "\n", + "Tensorflow's repository has an MNIST demo with extensive Tensorboard instrumentation. We'll use it here for our purposes.\n", + "\n", + "Note that we don't need to make any code changes at all - the code works without modification from the Tensorflow repository." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import os\n", + "import tempfile\n", + "tf_code = requests.get(\"https://raw.githubusercontent.com/tensorflow/tensorflow/r1.8/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py\")\n", + "with open(os.path.join(exp_dir, \"mnist_with_summaries.py\"), \"w\") as file:\n", + " file.write(tf_code.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure and run locally\n", + "\n", + "We'll start by running this locally. While it might not initially seem that useful to use this for a local run - why not just run TB against the files generated locally? - even in this case there is some value to using this feature. Your local run will be registered in the run history, and your Tensorboard logs will be uploaded to the artifact store associated with this run. Later, you'll be able to restore the logs from any run, regardless of where it happened.\n", + "\n", + "Note that for this run, you will need to install Tensorflow on your local machine by yourself. Further, the Tensorboard module (that is, the one included with Tensorflow) must be accessible to this notebook's kernel, as the local machine is what runs Tensorboard." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.runconfig import RunConfiguration\n", + "\n", + "# Create a run configuration.\n", + "run_config = RunConfiguration()\n", + "run_config.environment.python.user_managed_dependencies = True\n", + "\n", + "# You can choose a specific Python environment by pointing to a Python path \n", + "#run_config.environment.python.interpreter_path = '/home/ninghai/miniconda3/envs/sdk2/bin/python'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Experiment, Run\n", + "from azureml.core.script_run_config import ScriptRunConfig\n", + "import tensorflow as tf\n", + "\n", + "logs_dir = os.path.join(os.curdir, \"logs\")\n", + "data_dir = os.path.abspath(os.path.join(os.curdir, \"mnist_data\"))\n", + "\n", + "if not path.exists(data_dir):\n", + " makedirs(data_dir)\n", + "\n", + "os.environ[\"TEST_TMPDIR\"] = data_dir\n", + "\n", + "# Writing logs to ./logs results in their being uploaded to Artifact Service,\n", + "# and thus, made accessible to our Tensorboard instance.\n", + "arguments_list = [\"--log_dir\", logs_dir]\n", + "\n", + "# Create an experiment\n", + "exp = Experiment(ws, experiment_name)\n", + "\n", + "# If you would like the run to go for longer, add --max_steps 5000 to the arguments list:\n", + "# arguments_list += [\"--max_steps\", \"5000\"]\n", + "\n", + "script = ScriptRunConfig(exp_dir,\n", + " script=\"mnist_with_summaries.py\",\n", + " run_config=run_config,\n", + " arguments=arguments_list)\n", + "\n", + "run = exp.submit(script)\n", + "# You can also wait for the run to complete\n", + "# run.wait_for_completion(show_output=True)\n", + "runs.append(run)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Tensorboard\n", + "\n", + "Now, while the run is in progress, we just need to start Tensorboard with the run as its target, and it will begin streaming logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.tensorboard import Tensorboard\n", + "\n", + "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", + "tb = Tensorboard([run])\n", + "\n", + "# If successful, start() returns a string with the URI of the instance.\n", + "tb.start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Tensorboard\n", + "\n", + "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tb.stop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Now, with a DSVM\n", + "\n", + "Tensorboard uploading works with all compute targets. Here we demonstrate it from a DSVM.\n", + "Note that the Tensorboard instance itself will be run by the notebook kernel. Again, this means this notebook's kernel must have access to the Tensorboard module.\n", + "\n", + "If you are unfamiliar with DSVM configuration, check [04. Train in a remote VM (Ubuntu DSVM)](04.train-on-remote-vm.ipynb) for a more detailed breakdown." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import DsvmCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "compute_target_name = 'cpu-dsvm'\n", + "\n", + "try:\n", + " compute_target = DsvmCompute(workspace = ws, name = compute_target_name)\n", + " print('found existing:', compute_target.name)\n", + "except ComputeTargetException:\n", + " print('creating new.')\n", + " dsvm_config = DsvmCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\")\n", + " compute_target = DsvmCompute.create(ws, name = compute_target_name, provisioning_configuration = dsvm_config)\n", + " compute_target.wait_for_completion(show_output = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Submit run using TensorFlow estimator\n", + "\n", + "Instead of manually configuring the DSVM environment, we can use the TensorFlow estimator and everything is set up automatically." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.dnn import TensorFlow\n", + "\n", + "script_params = {\"--log_dir\": \"./logs\"}\n", + "\n", + "# If you want the run to go longer, set --max-steps to a higher number.\n", + "# script_params[\"--max_steps\"] = \"5000\"\n", + "\n", + "tf_estimator = TensorFlow(source_directory=exp_dir,\n", + " compute_target=compute_target,\n", + " entry_script='mnist_with_summaries.py',\n", + " script_params=script_params)\n", + "\n", + "run = exp.submit(tf_estimator)\n", + "\n", + "runs.append(run)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Tensorboard with this run\n", + "\n", + "Just like before." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", + "tb = Tensorboard([run])\n", + "\n", + "# If successful, start() returns a string with the URI of the instance.\n", + "tb.start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Tensorboard\n", + "\n", + "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tb.stop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Once more, with a Batch AI cluster\n", + "\n", + "Just to prove we can, let's create a Batch AI cluster using MLC, and run our demo there, as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import BatchAiCompute\n", + "\n", + "clust_name = ws.name + \"cpu\"\n", + "\n", + "try:\n", + " # If you already have a cluster named this, we don't need to make a new one.\n", + " cts = ws.compute_targets \n", + " compute_target = cts[clust_name]\n", + " assert compute_target.type == 'BatchAI'\n", + "except:\n", + " # Let's make a new one here.\n", + " provisioning_config = BatchAiCompute.provisioning_configuration(cluster_max_nodes=2, \n", + " autoscale_enabled=True, \n", + " cluster_min_nodes=1,\n", + " vm_size='Standard_D11_V2')\n", + " \n", + " compute_target = BatchAiCompute.create(ws, clust_name, provisioning_config)\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=1, timeout_in_minutes=20)\n", + "print(compute_target.name)\n", + " # For a more detailed view of current BatchAI cluster status, use the 'status' property \n", + " # print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Submit run using TensorFlow estimator\n", + "\n", + "Again, we can use the TensorFlow estimator and everything is set up automatically." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "script_params = {\"--log_dir\": \"./logs\"}\n", + "\n", + "# If you want the run to go longer, set --max-steps to a higher number.\n", + "# script_params[\"--max_steps\"] = \"5000\"\n", + "\n", + "tf_estimator = TensorFlow(source_directory=exp_dir,\n", + " compute_target=compute_target,\n", + " entry_script='mnist_with_summaries.py',\n", + " script_params=script_params)\n", + "\n", + "run = exp.submit(tf_estimator)\n", + "\n", + "runs.append(run)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Tensorboard with this run\n", + "\n", + "Once more..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", + "tb = Tensorboard([run])\n", + "\n", + "# If successful, start() returns a string with the URI of the instance.\n", + "tb.start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Tensorboard\n", + "\n", + "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tb.stop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finale\n", + "\n", + "If you've paid close attention, you'll have noticed that we've been saving the run objects in an array as we went along. We can start a Tensorboard instance that combines all of these run objects into a single process. This way, you can compare historical runs. You can even do this with live runs; if you made some of those previous runs longer via the `--max_steps` parameter, they might still be running, and you'll see them live in this instance as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# The Tensorboard constructor takes an array of runs...\n", + "# and it turns out that we have been building one of those all along.\n", + "tb = Tensorboard(runs)\n", + "\n", + "# If successful, start() returns a string with the URI of the instance.\n", + "tb.start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Tensorboard\n", + "\n", + "As you might already know, make sure to call the `stop()` method of the Tensorboard object, or it will stay running (until you kill the kernel associated with this notebook, at least)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tb.stop()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/08.export-run-history-to-tensorboard/08.export-run-history-to-tensorboard.ipynb b/training/08.export-run-history-to-tensorboard/08.export-run-history-to-tensorboard.ipynb new file mode 100644 index 00000000..8d305481 --- /dev/null +++ b/training/08.export-run-history-to-tensorboard/08.export-run-history-to-tensorboard.ipynb @@ -0,0 +1,248 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 41. Export Run History as Tensorboard logs\n", + "\n", + "1. Run some training and log some metrics into Run History\n", + "2. Export the run history to some directory as Tensorboard logs\n", + "3. Launch a local Tensorboard to view the run history" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "Make sure you go through the [00. Installation and Configuration](00.configuration.ipynb) Notebook first if you haven't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check core SDK version number\n", + "import azureml.core\n", + "\n", + "print(\"SDK version:\", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize Workspace\n", + "\n", + "Initialize a workspace object from persisted configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Workspace, Run, Experiment\n", + "\n", + "\n", + "ws = Workspace.from_config()\n", + "print('Workspace name: ' + ws.name, \n", + " 'Azure region: ' + ws.location, \n", + " 'Subscription id: ' + ws.subscription_id, \n", + " 'Resource group: ' + ws.resource_group, sep = '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set experiment name and start the run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "experiment_name = 'export-to-tensorboard'\n", + "exp = Experiment(ws, experiment_name)\n", + "root_run = exp.start_logging()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load diabetes dataset, a well-known built-in small dataset that comes with scikit-learn\n", + "from sklearn.datasets import load_diabetes\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X, y = load_diabetes(return_X_y=True)\n", + "\n", + "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", + "\n", + "x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "data = {\n", + " \"train\":{\"x\":x_train, \"y\":y_train}, \n", + " \"test\":{\"x\":x_test, \"y\":y_test}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Example experiment\n", + "from tqdm import tqdm\n", + "\n", + "alphas = [.1, .2, .3, .4, .5, .6 , .7]\n", + "\n", + "# try a bunch of alpha values in a Linear Regression (Ridge) model\n", + "for alpha in tqdm(alphas):\n", + " # create a bunch of child runs\n", + " with root_run.child_run(\"alpha\" + str(alpha)) as run:\n", + " # More data science stuff\n", + " reg = Ridge(alpha=alpha)\n", + " reg.fit(data[\"train\"][\"x\"], data[\"train\"][\"y\"])\n", + " # TODO save model\n", + " preds = reg.predict(data[\"test\"][\"x\"])\n", + " mse = mean_squared_error(preds, data[\"test\"][\"y\"])\n", + " # End train and eval\n", + "\n", + " # log alpha, mean_squared_error and feature names in run history\n", + " root_run.log(\"alpha\", alpha)\n", + " root_run.log(\"mse\", mse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export Run History to Tensorboard logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Export Run History to Tensorboard logs\n", + "from azureml.contrib.tensorboard.export import export_to_tensorboard\n", + "import os\n", + "import tensorflow as tf\n", + "\n", + "logdir = 'exportedTBlogs'\n", + "log_path = os.path.join(os.getcwd(), logdir)\n", + "try:\n", + " os.stat(log_path)\n", + "except os.error:\n", + " os.mkdir(log_path)\n", + "print(logdir)\n", + "\n", + "# export run history for the project\n", + "export_to_tensorboard(root_run, logdir)\n", + "\n", + "# or export a particular run\n", + "# export_to_tensorboard(run, logdir)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root_run.complete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Tensorboard\n", + "\n", + "Or you can start the Tensorboard outside this notebook to view the result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.contrib.tensorboard import Tensorboard\n", + "\n", + "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", + "tb = Tensorboard([], local_root=logdir, port=6006)\n", + "\n", + "# If successful, start() returns a string with the URI of the instance.\n", + "tb.start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Tensorboard\n", + "\n", + "When you're done, make sure to call the `stop()` method of the Tensorboard object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tb.stop()" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/training/README.md b/training/README.md deleted file mode 100644 index f553f7df..00000000 --- a/training/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Azure Machine Learning service training examples - -These examples show you: - * Distributed training of models on Machine Learning Compute cluster - * Hyperparameter tuning at scale - * Using Tensorboard with Azure ML Python SDK. \ No newline at end of file diff --git a/training/distributed-pytorch-with-horovod/distributed-pytorch-with-horovod.ipynb b/training/distributed-pytorch-with-horovod/distributed-pytorch-with-horovod.ipynb deleted file mode 100644 index a059baf7..00000000 --- a/training/distributed-pytorch-with-horovod/distributed-pytorch-with-horovod.ipynb +++ /dev/null @@ -1,316 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Distributed PyTorch with Horovod\n", - "In this tutorial, you will train a PyTorch model on the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset using distributed training via [Horovod](https://github.com/uber/horovod)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", - "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (`config.json`)\n", - "* Review the [tutorial](https://aka.ms/aml-notebook-pytorch) on single-node PyTorch training using the SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "Diagnostics" - ] - }, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize workspace\n", - "\n", - "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.workspace import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create a remote compute target\n", - "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an `AmlCompute` cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", - "\n", - "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "# choose a name for your cluster\n", - "cluster_name = \"gpucluster\"\n", - "\n", - "try:\n", - " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", - " print('Found existing compute target.')\n", - "except ComputeTargetException:\n", - " print('Creating a new compute target...')\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", - " max_nodes=4)\n", - "\n", - " # create the cluster\n", - " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", - "\n", - " compute_target.wait_for_completion(show_output=True)\n", - "\n", - "# Use the 'status' property to get a detailed status for the current cluster. \n", - "print(compute_target.status.serialize())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train model on the remote compute\n", - "Now that we have the cluster ready to go, let's run our distributed training job." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a project directory\n", - "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script and any additional files your training script depends on." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "project_folder = './pytorch-distr-hvd'\n", - "os.makedirs(project_folder, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copy the training script `pytorch_horovod_mnist.py` into this project directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "\n", - "shutil.copy('pytorch_horovod_mnist.py', project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create an experiment\n", - "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed PyTorch tutorial. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment\n", - "\n", - "experiment_name = 'pytorch-distr-hvd'\n", - "experiment = Experiment(ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a PyTorch estimator\n", - "The AML SDK's PyTorch estimator enables you to easily submit PyTorch training jobs for both single-node and distributed runs. For more information on the PyTorch estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-pytorch)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.dnn import PyTorch\n", - "\n", - "estimator = PyTorch(source_directory=project_folder,\n", - " compute_target=compute_target,\n", - " entry_script='pytorch_horovod_mnist.py',\n", - " node_count=2,\n", - " process_count_per_node=1,\n", - " distributed_backend='mpi',\n", - " use_gpu=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above code specifies that we will run our training script on `2` nodes, with one worker per node. In order to execute a distributed run using MPI/Horovod, you must provide the argument `distributed_backend='mpi'`. Using this estimator with these settings, PyTorch, Horovod and their dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `PyTorch` constructor's `pip_packages` or `conda_packages` parameters." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit job\n", - "Run your experiment by submitting your estimator object. Note that this call is asynchronous." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run = experiment.submit(estimator)\n", - "print(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Monitor your run\n", - "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "\n", - "RunDetails(run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, you can block until the script has completed training before running more code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True) # this provides a verbose log" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "minxia" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "minxia" - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/training/distributed-tensorflow-with-horovod/distributed-tensorflow-with-horovod.ipynb b/training/distributed-tensorflow-with-horovod/distributed-tensorflow-with-horovod.ipynb deleted file mode 100644 index e9f1c96f..00000000 --- a/training/distributed-tensorflow-with-horovod/distributed-tensorflow-with-horovod.ipynb +++ /dev/null @@ -1,402 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Distributed Tensorflow with Horovod\n", - "In this tutorial, you will train a word2vec model in TensorFlow using distributed training via [Horovod](https://github.com/uber/horovod)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", - "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (`config.json`)\n", - "* Review the [tutorial](https://aka.ms/aml-notebook-hyperdrive) on single-node TensorFlow training using the SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "Diagnostics" - ] - }, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize workspace\n", - "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.workspace import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create a remote compute target\n", - "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an `AmlCompute` cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", - "\n", - "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "# choose a name for your cluster\n", - "cluster_name = \"gpucluster\"\n", - "\n", - "try:\n", - " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", - " print('Found existing compute target')\n", - "except ComputeTargetException:\n", - " print('Creating a new compute target...')\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", - " max_nodes=4)\n", - "\n", - " # create the cluster\n", - " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", - "\n", - " compute_target.wait_for_completion(show_output=True)\n", - "\n", - "# Use the 'status' property to get a detailed status for the current cluster. \n", - "print(compute_target.status.serialize())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above code creates a GPU cluster. If you instead want to create a CPU cluster, provide a different VM size to the `vm_size` parameter, such as `STANDARD_D2_V2`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Upload data to datastore\n", - "To make data accessible for remote training, AML provides a convenient way to do so via a [Datastore](https://docs.microsoft.com/azure/machine-learning/service/how-to-access-data). The datastore provides a mechanism for you to upload/download data to Azure Storage, and interact with it from your remote compute targets. \n", - "\n", - "If your data is already stored in Azure, or you download the data as part of your training script, you will not need to do this step. For this tutorial, although you can download the data in your training script, we will demonstrate how to upload the training data to a datastore and access it during training to illustrate the datastore functionality." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, download the training data from [here](http://mattmahoney.net/dc/text8.zip) to your local machine:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import urllib\n", - "\n", - "os.makedirs('./data', exist_ok=True)\n", - "download_url = 'http://mattmahoney.net/dc/text8.zip'\n", - "urllib.request.urlretrieve(download_url, filename='./data/text8.zip')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each workspace is associated with a default datastore. In this tutorial, we will upload the training data to this default datastore." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds = ws.get_default_datastore()\n", - "print(ds.datastore_type, ds.account_name, ds.container_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Upload the contents of the data directory to the path `./data` on the default datastore." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds.upload(src_dir='data', target_path='data', overwrite=True, show_progress=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For convenience, let's get a reference to the path on the datastore with the zip file of training data. We can do so using the `path` method. In the next section, we can then pass this reference to our training script's `--input_data` argument. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "path_on_datastore = 'data/text8.zip'\n", - "ds_data = ds.path(path_on_datastore)\n", - "print(ds_data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train model on the remote compute" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a project directory\n", - "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script, and any additional files your training script depends on." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "project_folder = './tf-distr-hvd'\n", - "os.makedirs(project_folder, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copy the training script `tf_horovod_word2vec.py` into this project directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "\n", - "shutil.copy('tf_horovod_word2vec.py', project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create an experiment\n", - "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed TensorFlow tutorial. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment\n", - "\n", - "experiment_name = 'tf-distr-hvd'\n", - "experiment = Experiment(ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a TensorFlow estimator\n", - "The AML SDK's TensorFlow estimator enables you to easily submit TensorFlow training jobs for both single-node and distributed runs. For more information on the TensorFlow estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-tensorflow)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.dnn import TensorFlow\n", - "\n", - "script_params={\n", - " '--input_data': ds_data\n", - "}\n", - "\n", - "estimator= TensorFlow(source_directory=project_folder,\n", - " compute_target=compute_target,\n", - " script_params=script_params,\n", - " entry_script='tf_horovod_word2vec.py',\n", - " node_count=2,\n", - " process_count_per_node=1,\n", - " distributed_backend='mpi',\n", - " use_gpu=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above code specifies that we will run our training script on `2` nodes, with one worker per node. In order to execute a distributed run using MPI/Horovod, you must provide the argument `distributed_backend='mpi'`. Using this estimator with these settings, TensorFlow, Horovod and their dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `TensorFlow` constructor's `pip_packages` or `conda_packages` parameters.\n", - "\n", - "Note that we passed our training data reference `ds_data` to our script's `--input_data` argument. This will 1) mount our datastore on the remote compute and 2) provide the path to the data zip file on our datastore." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit job\n", - "Run your experiment by submitting your estimator object. Note that this call is asynchronous." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run = experiment.submit(estimator)\n", - "print(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Monitor your run\n", - "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, you can block until the script has completed training before running more code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "minxia" - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/training/distributed-tensorflow-with-parameter-server/distributed-tensorflow-with-parameter-server.ipynb b/training/distributed-tensorflow-with-parameter-server/distributed-tensorflow-with-parameter-server.ipynb deleted file mode 100644 index 2f695409..00000000 --- a/training/distributed-tensorflow-with-parameter-server/distributed-tensorflow-with-parameter-server.ipynb +++ /dev/null @@ -1,315 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Distributed TensorFlow with parameter server\n", - "In this tutorial, you will train a TensorFlow model on the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset using native [distributed TensorFlow](https://www.tensorflow.org/deploy/distributed)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning (AML)\n", - "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (`config.json`)\n", - "* Review the [tutorial](https://aka.ms/aml-notebook-hyperdrive) on single-node TensorFlow training using the SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "Diagnostics" - ] - }, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize workspace\n", - "Initialize a [Workspace](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#workspace) object from the existing workspace you created in the Prerequisites step. `Workspace.from_config()` creates a workspace object from the details stored in `config.json`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.workspace import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create a remote compute target\n", - "You will need to create a [compute target](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#compute-target) to execute your training script on. In this tutorial, you create an `AmlCompute` cluster as your training compute resource. This code creates a cluster for you if it does not already exist in your workspace.\n", - "\n", - "**Creation of the cluster takes approximately 5 minutes.** If the cluster is already in your workspace this code will skip the cluster creation process." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "# choose a name for your cluster\n", - "cluster_name = \"gpucluster\"\n", - "\n", - "try:\n", - " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", - " print('Found existing compute target.')\n", - "except ComputeTargetException:\n", - " print('Creating a new compute target...')\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", - " max_nodes=4)\n", - "\n", - " # create the cluster\n", - " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", - "\n", - " compute_target.wait_for_completion(show_output=True)\n", - "\n", - "# Use the 'status' property to get a detailed status for the current cluster. \n", - "print(compute_target.status.serialize())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train model on the remote compute\n", - "Now that we have the cluster ready to go, let's run our distributed training job." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a project directory\n", - "Create a directory that will contain all the necessary code from your local machine that you will need access to on the remote resource. This includes the training script, and any additional files your training script depends on." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "project_folder = './tf-distr-ps'\n", - "os.makedirs(project_folder, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copy the training script `tf_mnist_replica.py` into this project directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "\n", - "shutil.copy('tf_mnist_replica.py', project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create an experiment\n", - "Create an [Experiment](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture#experiment) to track all the runs in your workspace for this distributed TensorFlow tutorial. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment\n", - "\n", - "experiment_name = 'tf-distr-ps'\n", - "experiment = Experiment(ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a TensorFlow estimator\n", - "The AML SDK's TensorFlow estimator enables you to easily submit TensorFlow training jobs for both single-node and distributed runs. For more information on the TensorFlow estimator, refer [here](https://docs.microsoft.com/azure/machine-learning/service/how-to-train-tensorflow)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.dnn import TensorFlow\n", - "\n", - "script_params={\n", - " '--num_gpus': 1,\n", - " '--train_steps': 500\n", - "}\n", - "\n", - "estimator = TensorFlow(source_directory=project_folder,\n", - " compute_target=compute_target,\n", - " script_params=script_params,\n", - " entry_script='tf_mnist_replica.py',\n", - " node_count=2,\n", - " worker_count=2,\n", - " parameter_server_count=1, \n", - " distributed_backend='ps',\n", - " use_gpu=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above code specifies that we will run our training script on `2` nodes, with two workers and one parameter server. In order to execute a native distributed TensorFlow run, you must provide the argument `distributed_backend='ps'`. Using this estimator with these settings, TensorFlow and its dependencies will be installed for you. However, if your script also uses other packages, make sure to install them via the `TensorFlow` constructor's `pip_packages` or `conda_packages` parameters." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit job\n", - "Run your experiment by submitting your estimator object. Note that this call is asynchronous." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run = experiment.submit(estimator)\n", - "print(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Monitor your run\n", - "You can monitor the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "\n", - "RunDetails(run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, you can block until the script has completed training before running more code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=True) # this provides a verbose log" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "minxia" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "minxia" - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/training/export-run-history-to-tensorboard/export-run-history-to-tensorboard.ipynb b/training/export-run-history-to-tensorboard/export-run-history-to-tensorboard.ipynb deleted file mode 100644 index bd005204..00000000 --- a/training/export-run-history-to-tensorboard/export-run-history-to-tensorboard.ipynb +++ /dev/null @@ -1,267 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Export Run History as Tensorboard logs\n", - "\n", - "1. Run some training and log some metrics into Run History\n", - "2. Export the run history to some directory as Tensorboard logs\n", - "3. Launch a local Tensorboard to view the run history" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", - "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (`config.json`)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install the Azure ML TensorBoard integration package if you haven't already." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install azureml-contrib-tensorboard" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace, Run, Experiment\n", - "\n", - "\n", - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set experiment name and start the run" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment_name = 'export-to-tensorboard'\n", - "exp = Experiment(ws, experiment_name)\n", - "root_run = exp.start_logging()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load diabetes dataset, a well-known built-in small dataset that comes with scikit-learn\n", - "from sklearn.datasets import load_diabetes\n", - "from sklearn.linear_model import Ridge\n", - "from sklearn.metrics import mean_squared_error\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "X, y = load_diabetes(return_X_y=True)\n", - "\n", - "columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']\n", - "\n", - "x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", - "data = {\n", - " \"train\":{\"x\":x_train, \"y\":y_train}, \n", - " \"test\":{\"x\":x_test, \"y\":y_test}\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Example experiment\n", - "from tqdm import tqdm\n", - "\n", - "alphas = [.1, .2, .3, .4, .5, .6 , .7]\n", - "\n", - "# try a bunch of alpha values in a Linear Regression (Ridge) model\n", - "for alpha in tqdm(alphas):\n", - " # create a bunch of child runs\n", - " with root_run.child_run(\"alpha\" + str(alpha)) as run:\n", - " # More data science stuff\n", - " reg = Ridge(alpha=alpha)\n", - " reg.fit(data[\"train\"][\"x\"], data[\"train\"][\"y\"])\n", - " # TODO save model\n", - " preds = reg.predict(data[\"test\"][\"x\"])\n", - " mse = mean_squared_error(preds, data[\"test\"][\"y\"])\n", - " # End train and eval\n", - "\n", - " # log alpha, mean_squared_error and feature names in run history\n", - " root_run.log(\"alpha\", alpha)\n", - " root_run.log(\"mse\", mse)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Export Run History to Tensorboard logs" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Export Run History to Tensorboard logs\n", - "from azureml.contrib.tensorboard.export import export_to_tensorboard\n", - "import os\n", - "import tensorflow as tf\n", - "\n", - "logdir = 'exportedTBlogs'\n", - "log_path = os.path.join(os.getcwd(), logdir)\n", - "try:\n", - " os.stat(log_path)\n", - "except os.error:\n", - " os.mkdir(log_path)\n", - "print(logdir)\n", - "\n", - "# export run history for the project\n", - "export_to_tensorboard(root_run, logdir)\n", - "\n", - "# or export a particular run\n", - "# export_to_tensorboard(run, logdir)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "root_run.complete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start Tensorboard\n", - "\n", - "Or you can start the Tensorboard outside this notebook to view the result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.contrib.tensorboard import Tensorboard\n", - "\n", - "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", - "tb = Tensorboard([], local_root=logdir, port=6006)\n", - "\n", - "# If successful, start() returns a string with the URI of the instance.\n", - "tb.start()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stop Tensorboard\n", - "\n", - "When you're done, make sure to call the `stop()` method of the Tensorboard object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tb.stop()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/training/tensorboard/tensorboard.ipynb b/training/tensorboard/tensorboard.ipynb deleted file mode 100644 index e481a310..00000000 --- a/training/tensorboard/tensorboard.ipynb +++ /dev/null @@ -1,560 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tensorboard Integration with Run History\n", - "\n", - "1. Run a Tensorflow job locally and view its TB output live.\n", - "2. The same, for a DSVM.\n", - "3. And once more, with an AmlCompute cluster.\n", - "4. Finally, we'll collect all of these historical runs together into a single Tensorboard graph." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", - "* Go through the [00.configuration.ipynb](https://github.com/Azure/MachineLearningNotebooks/blob/master/00.configuration.ipynb) notebook to:\n", - " * install the AML SDK\n", - " * create a workspace and its configuration file (`config.json`)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check core SDK version number\n", - "import azureml.core\n", - "\n", - "print(\"SDK version:\", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install the Azure ML TensorBoard package." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install azureml-contrib-tensorboard" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Diagnostics\n", - "Opt-in diagnostics for better experience, quality, and security of future releases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "Diagnostics" - ] - }, - "outputs": [], - "source": [ - "from azureml.telemetry import set_diagnostics_collection\n", - "\n", - "set_diagnostics_collection(send_diagnostics=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize Workspace\n", - "\n", - "Initialize a workspace object from persisted configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "\n", - "ws = Workspace.from_config()\n", - "print('Workspace name: ' + ws.name, \n", - " 'Azure region: ' + ws.location, \n", - " 'Subscription id: ' + ws.subscription_id, \n", - " 'Resource group: ' + ws.resource_group, sep = '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set experiment name and create project\n", - "Choose a name for your run history container in the workspace, and create a folder for the project." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from os import path, makedirs\n", - "experiment_name = 'tensorboard-demo'\n", - "\n", - "# experiment folder\n", - "exp_dir = './sample_projects/' + experiment_name\n", - "\n", - "if not path.exists(exp_dir):\n", - " makedirs(exp_dir)\n", - "\n", - "# runs we started in this session, for the finale\n", - "runs = []" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Download Tensorflow Tensorboard demo code\n", - "\n", - "Tensorflow's repository has an MNIST demo with extensive Tensorboard instrumentation. We'll use it here for our purposes.\n", - "\n", - "Note that we don't need to make any code changes at all - the code works without modification from the Tensorflow repository." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "import os\n", - "import tempfile\n", - "tf_code = requests.get(\"https://raw.githubusercontent.com/tensorflow/tensorflow/r1.8/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py\")\n", - "with open(os.path.join(exp_dir, \"mnist_with_summaries.py\"), \"w\") as file:\n", - " file.write(tf_code.text)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure and run locally\n", - "\n", - "We'll start by running this locally. While it might not initially seem that useful to use this for a local run - why not just run TB against the files generated locally? - even in this case there is some value to using this feature. Your local run will be registered in the run history, and your Tensorboard logs will be uploaded to the artifact store associated with this run. Later, you'll be able to restore the logs from any run, regardless of where it happened.\n", - "\n", - "Note that for this run, you will need to install Tensorflow on your local machine by yourself. Further, the Tensorboard module (that is, the one included with Tensorflow) must be accessible to this notebook's kernel, as the local machine is what runs Tensorboard." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.runconfig import RunConfiguration\n", - "\n", - "# Create a run configuration.\n", - "run_config = RunConfiguration()\n", - "run_config.environment.python.user_managed_dependencies = True\n", - "\n", - "# You can choose a specific Python environment by pointing to a Python path \n", - "#run_config.environment.python.interpreter_path = '/home/ninghai/miniconda3/envs/sdk2/bin/python'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core import Experiment, Run\n", - "from azureml.core.script_run_config import ScriptRunConfig\n", - "import tensorflow as tf\n", - "\n", - "logs_dir = os.path.join(os.curdir, \"logs\")\n", - "data_dir = os.path.abspath(os.path.join(os.curdir, \"mnist_data\"))\n", - "\n", - "if not path.exists(data_dir):\n", - " makedirs(data_dir)\n", - "\n", - "os.environ[\"TEST_TMPDIR\"] = data_dir\n", - "\n", - "# Writing logs to ./logs results in their being uploaded to Artifact Service,\n", - "# and thus, made accessible to our Tensorboard instance.\n", - "arguments_list = [\"--log_dir\", logs_dir]\n", - "\n", - "# Create an experiment\n", - "exp = Experiment(ws, experiment_name)\n", - "\n", - "# If you would like the run to go for longer, add --max_steps 5000 to the arguments list:\n", - "# arguments_list += [\"--max_steps\", \"5000\"]\n", - "\n", - "script = ScriptRunConfig(exp_dir,\n", - " script=\"mnist_with_summaries.py\",\n", - " run_config=run_config,\n", - " arguments=arguments_list)\n", - "\n", - "run = exp.submit(script)\n", - "# You can also wait for the run to complete\n", - "# run.wait_for_completion(show_output=True)\n", - "runs.append(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start Tensorboard\n", - "\n", - "Now, while the run is in progress, we just need to start Tensorboard with the run as its target, and it will begin streaming logs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.contrib.tensorboard import Tensorboard\n", - "\n", - "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", - "tb = Tensorboard([run])\n", - "\n", - "# If successful, start() returns a string with the URI of the instance.\n", - "tb.start()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stop Tensorboard\n", - "\n", - "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tb.stop()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Now, with a DSVM\n", - "\n", - "Tensorboard uploading works with all compute targets. Here we demonstrate it from a DSVM.\n", - "Note that the Tensorboard instance itself will be run by the notebook kernel. Again, this means this notebook's kernel must have access to the Tensorboard module.\n", - "\n", - "If you are unfamiliar with DSVM configuration, check [04. Train in a remote VM](04.train-on-remote-vm.ipynb) for a more detailed breakdown.\n", - "\n", - "**Note**: To streamline the compute that Azure Machine Learning creates, we are making updates to support creating only single to multi-node AmlCompute. The `DSVMCompute` class will be deprecated in a later release, but the DSVM can be created using the below single line command and then attached(like any VM) using the sample code below. Also note that we only support Linux VMs and the commands below will spin a Linux VM only.\n", - "\n", - "```shell\n", - "# create a DSVM in your resource group\n", - "# note you need to be at least a contributor to the resource group in order to execute this command successfully.\n", - "(myenv) $ az vm create --resource-group --name --image microsoft-dsvm:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest --admin-username --admin-password --generate-ssh-keys --authentication-type password\n", - "```\n", - "You can also use [this url](https://portal.azure.com/#create/microsoft-dsvm.linux-data-science-vm-ubuntulinuxdsvmubuntu) to create the VM using the Azure Portal." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import DsvmCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "compute_target_name = 'cpudsvm'\n", - "\n", - "try:\n", - " compute_target = DsvmCompute(workspace=ws, name=compute_target_name)\n", - " print('found existing:', compute_target.name)\n", - "except ComputeTargetException:\n", - " print('creating new.')\n", - " dsvm_config = DsvmCompute.provisioning_configuration(vm_size=\"Standard_D2_v2\")\n", - " compute_target = DsvmCompute.create(ws, name=compute_target_name, provisioning_configuration=dsvm_config)\n", - "compute_target.wait_for_completion(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Submit run using TensorFlow estimator\n", - "\n", - "Instead of manually configuring the DSVM environment, we can use the TensorFlow estimator and everything is set up automatically." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.train.dnn import TensorFlow\n", - "\n", - "script_params = {\"--log_dir\": \"./logs\"}\n", - "\n", - "# If you want the run to go longer, set --max-steps to a higher number.\n", - "# script_params[\"--max_steps\"] = \"5000\"\n", - "\n", - "tf_estimator = TensorFlow(source_directory=exp_dir,\n", - " compute_target=compute_target,\n", - " entry_script='mnist_with_summaries.py',\n", - " script_params=script_params)\n", - "\n", - "run = exp.submit(tf_estimator)\n", - "\n", - "runs.append(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start Tensorboard with this run\n", - "\n", - "Just like before." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", - "tb = Tensorboard([run])\n", - "\n", - "# If successful, start() returns a string with the URI of the instance.\n", - "tb.start()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stop Tensorboard\n", - "\n", - "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tb.stop()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Once more, with an AmlCompute cluster\n", - "\n", - "Just to prove we can, let's create an AmlCompute CPU cluster, and run our demo there, as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azureml.core.compute import ComputeTarget, AmlCompute\n", - "from azureml.core.compute_target import ComputeTargetException\n", - "\n", - "# choose a name for your cluster\n", - "cluster_name = \"cpucluster\"\n", - "\n", - "try:\n", - " compute_target = ComputeTarget(workspace=ws, name=cluster_name)\n", - " print('Found existing compute target.')\n", - "except ComputeTargetException:\n", - " print('Creating a new compute target...')\n", - " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2', \n", - " max_nodes=4)\n", - "\n", - " # create the cluster\n", - " compute_target = ComputeTarget.create(ws, cluster_name, compute_config)\n", - "\n", - "compute_target.wait_for_completion(show_output=True, min_node_count=1, timeout_in_minutes=20)\n", - "\n", - "# Use the 'status' property to get a detailed status for the current cluster. \n", - "print(compute_target.status.serialize())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Submit run using TensorFlow estimator\n", - "\n", - "Again, we can use the TensorFlow estimator and everything is set up automatically." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "script_params = {\"--log_dir\": \"./logs\"}\n", - "\n", - "# If you want the run to go longer, set --max-steps to a higher number.\n", - "# script_params[\"--max_steps\"] = \"5000\"\n", - "\n", - "tf_estimator = TensorFlow(source_directory=exp_dir,\n", - " compute_target=compute_target,\n", - " entry_script='mnist_with_summaries.py',\n", - " script_params=script_params)\n", - "\n", - "run = exp.submit(tf_estimator)\n", - "\n", - "runs.append(run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Start Tensorboard with this run\n", - "\n", - "Once more..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# The Tensorboard constructor takes an array of runs, so be sure and pass it in as a single-element array here\n", - "tb = Tensorboard([run])\n", - "\n", - "# If successful, start() returns a string with the URI of the instance.\n", - "tb.start()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stop Tensorboard\n", - "\n", - "When you're done, make sure to call the `stop()` method of the Tensorboard object, or it will stay running even after your job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tb.stop()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Finale\n", - "\n", - "If you've paid close attention, you'll have noticed that we've been saving the run objects in an array as we went along. We can start a Tensorboard instance that combines all of these run objects into a single process. This way, you can compare historical runs. You can even do this with live runs; if you made some of those previous runs longer via the `--max_steps` parameter, they might still be running, and you'll see them live in this instance as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# The Tensorboard constructor takes an array of runs...\n", - "# and it turns out that we have been building one of those all along.\n", - "tb = Tensorboard(runs)\n", - "\n", - "# If successful, start() returns a string with the URI of the instance.\n", - "tb.start()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stop Tensorboard\n", - "\n", - "As you might already know, make sure to call the `stop()` method of the Tensorboard object, or it will stay running (until you kill the kernel associated with this notebook, at least)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tb.stop()" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/01.train-models.ipynb b/tutorials/01.train-models.ipynb new file mode 100644 index 00000000..e0be0db8 --- /dev/null +++ b/tutorials/01.train-models.ipynb @@ -0,0 +1,719 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial #1: Train an image classification model with Azure Machine Learning\n", + "\n", + "In this tutorial, you train a machine learning model both locally and on remote compute resources. You'll use the training and deployment workflow for Azure Machine Learning service (preview) in a Python Jupyter notebook. You can then use the notebook as a template to train your own machine learning model with your own data. This tutorial is **part one of a two-part tutorial series**. \n", + "\n", + "This tutorial trains a simple logistic regression using the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset and [scikit-learn](http://scikit-learn.org) with Azure Machine Learning. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of 28x28 pixels, representing a number from 0 to 9. The goal is to create a multi-class classifier to identify the digit a given image represents. \n", + "\n", + "Learn how to:\n", + "\n", + "> * Set up your development environment\n", + "> * Access and examine the data\n", + "> * Train a simple logistic regression model locally using the popular scikit-learn machine learning library \n", + "> * Train multiple models on a remote cluster\n", + "> * Review training results, find and register the best model\n", + "\n", + "You'll learn how to select a model and deploy it in [part two of this tutorial](deploy-models.ipynb) later. \n", + "\n", + "## Prerequisites\n", + "\n", + "Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: \n", + "* Create a workspace and its configuration file (**config.json**) \n", + "* Save your **config.json** to the same folder as this notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up your development environment\n", + "\n", + "All the setup for your development work can be accomplished in a Python notebook. Setup includes:\n", + "\n", + "* Importing Python packages\n", + "* Connecting to a workspace to enable communication between your local computer and remote resources\n", + "* Creating an experiment to track all your runs\n", + "* Creating a remote compute target to use for training\n", + "\n", + "### Import packages\n", + "\n", + "Import Python packages you need in this session. Also display the Azure Machine Learning SDK version." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "check version" + ] + }, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "import numpy as np\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import azureml\n", + "from azureml.core import Workspace, Run\n", + "\n", + "# check core SDK version number\n", + "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to workspace\n", + "\n", + "Create a workspace object from the existing workspace. `Workspace.from_config()` reads the file **config.json** and loads the details into an object named `ws`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "load workspace" + ] + }, + "outputs": [], + "source": [ + "# load workspace configuration from the config.json file in the current folder.\n", + "ws = Workspace.from_config()\n", + "print(ws.name, ws.location, ws.resource_group, ws.location, sep = '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create experiment\n", + "\n", + "Create an experiment to track the runs in your workspace. A workspace can have muliple experiments. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create experiment" + ] + }, + "outputs": [], + "source": [ + "experiment_name = 'sklearn-mnist'\n", + "\n", + "from azureml.core import Experiment\n", + "exp = Experiment(workspace=ws, name=experiment_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create remote compute target\n", + "\n", + "Azure Azure ML Managed Compute is a managed service that enables data scientists to train machine learning models on clusters of Azure virtual machines, including VMs with GPU support. In this tutorial, you create an Azure Managed Compute cluster as your training environment. This code creates a cluster for you if it does not already exist in your workspace. \n", + "\n", + " **Creation of the cluster takes approximately 5 minutes.** If the cluster is already in the workspace this code uses it and skips the creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "create mlc", + "batchai" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.compute import BatchAiCompute\n", + "from azureml.core.compute import ComputeTarget\n", + "import os\n", + "\n", + "# choose a name for your cluster\n", + "batchai_cluster_name = os.environ.get(\"BATCHAI_CLUSTER_NAME\", ws.name + \"gpu\")\n", + "cluster_min_nodes = os.environ.get(\"BATCHAI_CLUSTER_MIN_NODES\", 1)\n", + "cluster_max_nodes = os.environ.get(\"BATCHAI_CLUSTER_MAX_NODES\", 3)\n", + "vm_size = os.environ.get(\"BATCHAI_CLUSTER_SKU\", \"STANDARD_NC6\")\n", + "autoscale_enabled = os.environ.get(\"BATCHAI_CLUSTER_AUTOSCALE_ENABLED\", True)\n", + "\n", + "\n", + "if batchai_cluster_name in ws.compute_targets:\n", + " compute_target = ws.compute_targets[batchai_cluster_name]\n", + " if compute_target and type(compute_target) is BatchAiCompute:\n", + " print('found compute target. just use it. ' + batchai_cluster_name)\n", + "else:\n", + " print('creating a new compute target...')\n", + " provisioning_config = BatchAiCompute.provisioning_configuration(vm_size = vm_size, # NC6 is GPU-enabled\n", + " vm_priority = 'lowpriority', # optional\n", + " autoscale_enabled = autoscale_enabled,\n", + " cluster_min_nodes = cluster_min_nodes, \n", + " cluster_max_nodes = cluster_max_nodes)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(ws, batchai_cluster_name, provisioning_config)\n", + " \n", + " # can poll for a minimum number of nodes and for a specific timeout. \n", + " # if no min node count is provided it will use the scale settings for the cluster\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", + " \n", + " # For a more detailed view of current BatchAI cluster status, use the 'status' property \n", + " print(compute_target.status.serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You now have the necessary packages and compute resources to train a model in the cloud. \n", + "\n", + "## Explore data\n", + "\n", + "Before you train a model, you need to understand the data that you are using to train it. You also need to copy the data into the cloud so it can be accessed by your cloud training environment. In this section you learn how to:\n", + "\n", + "* Download the MNIST dataset\n", + "* Display some sample images\n", + "* Upload data to the cloud\n", + "\n", + "### Download the MNIST dataset\n", + "\n", + "Download the MNIST dataset and save the files into a `data` directory locally. Images and labels for both training and testing are downloaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib.request\n", + "\n", + "os.makedirs('./data', exist_ok = True)\n", + "\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz', filename='./data/train-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz', filename='./data/train-labels.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename='./data/test-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename='./data/test-labels.gz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Display some sample images\n", + "\n", + "Load the compressed files into `numpy` arrays. Then use `matplotlib` to plot 30 random images from the dataset with their labels above them. Note this step requires a `load_data` function that's included in an `util.py` file. This file is included in the sample folder. Please make sure it is placed in the same folder as this notebook. The `load_data` function simply parses the compresse files into numpy arrays." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make sure utils.py is in the same directory as this code\n", + "from utils import load_data\n", + "\n", + "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the model converge faster.\n", + "X_train = load_data('./data/train-images.gz', False) / 255.0\n", + "y_train = load_data('./data/train-labels.gz', True).reshape(-1)\n", + "\n", + "X_test = load_data('./data/test-images.gz', False) / 255.0\n", + "y_test = load_data('./data/test-labels.gz', True).reshape(-1)\n", + "\n", + "# now let's show some randomly chosen images from the traininng set.\n", + "count = 0\n", + "sample_size = 30\n", + "plt.figure(figsize = (16, 6))\n", + "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", + " count = count + 1\n", + " plt.subplot(1, sample_size, count)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x=10, y=-10, s=y_train[i], fontsize=18)\n", + " plt.imshow(X_train[i].reshape(28, 28), cmap=plt.cm.Greys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you have an idea of what these images look like and the expected prediction outcome.\n", + "\n", + "### Upload data to the cloud\n", + "\n", + "Now make the data accessible remotely by uploading that data from your local machine into Azure so it can be accessed for remote training. The datastore is a convenient construct associated with your workspace for you to upload/download data, and interact with it from your remote compute targets. It is backed by Azure blob storage account.\n", + "\n", + "The MNIST files are uploaded into a directory named `mnist` at the root of the datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "use datastore" + ] + }, + "outputs": [], + "source": [ + "ds = ws.get_default_datastore()\n", + "print(ds.datastore_type, ds.account_name, ds.container_name)\n", + "\n", + "ds.upload(src_dir='./data', target_path='mnist', overwrite=True, show_progress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You now have everything you need to start training a model. \n", + "\n", + "## Train a local model\n", + "\n", + "Train a simple logistic regression model using scikit-learn locally.\n", + "\n", + "**Training locally can take a minute or two** depending on your computer configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "clf = LogisticRegression()\n", + "clf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, make predictions using the test set and calculate the accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y_hat = clf.predict(X_test)\n", + "print(np.average(y_hat == y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With just a few lines of code, you have a 92% accuracy.\n", + "\n", + "## Train on a remote cluster\n", + "\n", + "Now you can expand on this simple model by building a model with a different regularization rate. This time you'll train the model on a remote resource. \n", + "\n", + "For this task, submit the job to the remote training cluster you set up earlier. To submit a job you:\n", + "* Create a directory\n", + "* Create a training script\n", + "* Create an estimator object\n", + "* Submit the job \n", + "\n", + "### Create a directory\n", + "\n", + "Create a directory to deliver the necessary code from your computer to the remote resource." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "script_folder = './sklearn-mnist'\n", + "os.makedirs(script_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a training script\n", + "\n", + "To submit the job to the cluster, first create a training script. Run the following code to create the training script called `train.py` in the directory you just created. This training adds a regularization rate to the training algorithm, so produces a slightly different model than the local version." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile $script_folder/train.py\n", + "\n", + "import argparse\n", + "import os\n", + "import numpy as np\n", + "\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.externals import joblib\n", + "\n", + "from azureml.core import Run\n", + "from utils import load_data\n", + "\n", + "# let user feed in 2 parameters, the location of the data files (from datastore), and the regularization rate of the logistic regression model\n", + "parser = argparse.ArgumentParser()\n", + "parser.add_argument('--data-folder', type=str, dest='data_folder', help='data folder mounting point')\n", + "parser.add_argument('--regularization', type=float, dest='reg', default=0.01, help='regularization rate')\n", + "args = parser.parse_args()\n", + "\n", + "data_folder = os.path.join(args.data_folder, 'mnist')\n", + "print('Data folder:', data_folder)\n", + "\n", + "# load train and test set into numpy arrays\n", + "# note we scale the pixel intensity values to 0-1 (by dividing it with 255.0) so the model can converge faster.\n", + "X_train = load_data(os.path.join(data_folder, 'train-images.gz'), False) / 255.0\n", + "X_test = load_data(os.path.join(data_folder, 'test-images.gz'), False) / 255.0\n", + "y_train = load_data(os.path.join(data_folder, 'train-labels.gz'), True).reshape(-1)\n", + "y_test = load_data(os.path.join(data_folder, 'test-labels.gz'), True).reshape(-1)\n", + "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, sep = '\\n')\n", + "\n", + "# get hold of the current run\n", + "run = Run.get_context()\n", + "\n", + "print('Train a logistic regression model with regularizaion rate of', args.reg)\n", + "clf = LogisticRegression(C=1.0/args.reg, random_state=42)\n", + "clf.fit(X_train, y_train)\n", + "\n", + "print('Predict the test set')\n", + "y_hat = clf.predict(X_test)\n", + "\n", + "# calculate accuracy on the prediction\n", + "acc = np.average(y_hat == y_test)\n", + "print('Accuracy is', acc)\n", + "\n", + "run.log('regularization rate', np.float(args.reg))\n", + "run.log('accuracy', np.float(acc))\n", + "\n", + "os.makedirs('outputs', exist_ok=True)\n", + "# note file saved in the outputs folder is automatically uploaded into experiment record\n", + "joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice how the script gets data and saves models:\n", + "\n", + "+ The training script reads an argument to find the directory containing the data. When you submit the job later, you point to the datastore for this argument:\n", + "`parser.add_argument('--data-folder', type=str, dest='data_folder', help='data directory mounting point')`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "+ The training script saves your model into a directory named outputs.
\n", + "`joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')`
\n", + "Anything written in this directory is automatically uploaded into your workspace. You'll access your model from this directory later in the tutorial." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The file `utils.py` is referenced from the training script to load the dataset correctly. Copy this script into the script folder so that it can be accessed along with the training script on the remote resource." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil\n", + "shutil.copy('utils.py', script_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an estimator\n", + "\n", + "An estimator object is used to submit the run. Create your estimator by running the following code to define:\n", + "\n", + "* The name of the estimator object, `est`\n", + "* The directory that contains your scripts. All the files in this directory are uploaded into the cluster nodes for execution. \n", + "* The compute target. In this case you will use the Batch AI cluster you created\n", + "* The training script name, train.py\n", + "* Parameters required from the training script \n", + "* Python packages needed for training\n", + "\n", + "In this tutorial, this target is the Batch AI cluster. All files in the script folder are uploaded into the cluster nodes for execution. The data_folder is set to use the datastore (`ds.as_mount()`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "configure estimator" + ] + }, + "outputs": [], + "source": [ + "from azureml.train.estimator import Estimator\n", + "\n", + "script_params = {\n", + " '--data-folder': ds.as_mount(),\n", + " '--regularization': 0.8\n", + "}\n", + "\n", + "est = Estimator(source_directory=script_folder,\n", + " script_params=script_params,\n", + " compute_target=compute_target,\n", + " entry_script='train.py',\n", + " conda_packages=['scikit-learn'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit the job to the cluster\n", + "\n", + "Run the experiment by submitting the estimator object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remote run", + "batchai", + "scikit-learn" + ] + }, + "outputs": [], + "source": [ + "run = exp.submit(config=est)\n", + "run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since the call is asynchronous, it returns a **Preparing** or **Running** state as soon as the job is started.\n", + "\n", + "## Monitor a remote run\n", + "\n", + "In total, the first run takes **approximately 10 minutes**. But for subsequent runs, as long as the script dependencies don't change, the same image is reused and hence the container start up time is much faster.\n", + "\n", + "Here is what's happening while you wait:\n", + "\n", + "- **Image creation**: A Docker image is created matching the Python environment specified by the estimator. The image is uploaded to the workspace. Image creation and uploading takes **about 5 minutes**. \n", + "\n", + " This stage happens once for each Python environment since the container is cached for subsequent runs. During image creation, logs are streamed to the run history. You can monitor the image creation progress using these logs.\n", + "\n", + "- **Scaling**: If the remote cluster requires more nodes to execute the run than currently available, additional nodes are added automatically. Scaling typically takes **about 5 minutes.**\n", + "\n", + "- **Running**: In this stage, the necessary scripts and files are sent to the compute target, then data stores are mounted/copied, then the entry_script is run. While the job is running, stdout and the ./logs directory are streamed to the run history. You can monitor the run's progress using these logs.\n", + "\n", + "- **Post-Processing**: The ./outputs directory of the run is copied over to the run history in your workspace so you can access these results.\n", + "\n", + "\n", + "You can check the progress of a running job in multiple ways. This tutorial uses a Jupyter widget as well as a `wait_for_completion` method. \n", + "\n", + "### Jupyter widget\n", + "\n", + "Watch the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "use notebook widget" + ] + }, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Get log results upon completion\n", + "\n", + "Model training and monitoring happen in the background. Wait until the model has completed training before running more code. Use `wait_for_completion` to show when the model training is complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remote run", + "batchai", + "scikit-learn" + ] + }, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=False) # specify True for a verbose log" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Display run results\n", + "\n", + "You now have a model trained on a remote cluster. Retrieve the accuracy of the model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "get metrics" + ] + }, + "outputs": [], + "source": [ + "print(run.get_metrics())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next tutorial you will explore this model in more detail.\n", + "\n", + "## Register model\n", + "\n", + "The last step in the training script wrote the file `outputs/sklearn_mnist_model.pkl` in a directory named `outputs` in the VM of the cluster where the job is executed. `outputs` is a special directory in that all content in this directory is automatically uploaded to your workspace. This content appears in the run record in the experiment under your workspace. Hence, the model file is now also available in your workspace.\n", + "\n", + "You can see files associated with that run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history" + ] + }, + "outputs": [], + "source": [ + "print(run.get_file_names())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Register the model in the workspace so that you (or other collaborators) can later query, examine, and deploy this model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from history" + ] + }, + "outputs": [], + "source": [ + "# register model \n", + "model = run.register_model(model_name='sklearn_mnist', model_path='outputs/sklearn_mnist_model.pkl')\n", + "print(model.name, model.id, model.version, sep = '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "In this Azure Machine Learning tutorial, you used Python to:\n", + "\n", + "> * Set up your development environment\n", + "> * Access and examine the data\n", + "> * Train a simple logistic regression locally using the popular scikit-learn machine learning library\n", + "> * Train multiple models on a remote cluster\n", + "> * Review training details and register the best model\n", + "\n", + "You are ready to deploy this registered model using the instructions in the next part of the tutorial series:\n", + "\n", + "> [Tutorial 2 - Deploy models](02.deploy-models.ipynb)" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "sgilley" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/tutorials/02.deploy-models.ipynb b/tutorials/02.deploy-models.ipynb new file mode 100644 index 00000000..d6e27a3d --- /dev/null +++ b/tutorials/02.deploy-models.ipynb @@ -0,0 +1,615 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial #2: Deploy an image classification model in Azure Container Instance (ACI)\n", + "\n", + "This tutorial is **part two of a two-part tutorial series**. In the [previous tutorial](01.train-models.ipynb), you trained machine learning models and then registered a model in your workspace on the cloud. \n", + "\n", + "Now, you're ready to deploy the model as a web service in [Azure Container Instances](https://docs.microsoft.com/azure/container-instances/) (ACI). A web service is an image, in this case a Docker image, that encapsulates the scoring logic and the model itself. \n", + "\n", + "In this part of the tutorial, you use Azure Machine Learning service (Preview) to:\n", + "\n", + "> * Set up your testing environment\n", + "> * Retrieve the model from your workspace\n", + "> * Test the model locally\n", + "> * Deploy the model to ACI\n", + "> * Test the deployed model\n", + "\n", + "ACI is not ideal for production deployments, but it is great for testing and understanding the workflow. For scalable production deployments, consider using AKS.\n", + "\n", + "\n", + "## Prerequisites\n", + "\n", + "Complete the model training in the [Tutorial #1: Train an image classification model with Azure Machine Learning](01.train-models.ipynb) notebook. \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "register model from file" + ] + }, + "outputs": [], + "source": [ + "# If you did NOT complete the tutorial, you can instead run this cell \n", + "# This will register a model and download the data needed for this tutorial\n", + "# These prerequisites are created in the training tutorial\n", + "# Feel free to skip this cell if you completed the training tutorial \n", + "\n", + "# register a model\n", + "from azureml.core import Workspace\n", + "ws = Workspace.from_config()\n", + "\n", + "from azureml.core.model import Model\n", + "\n", + "model_name = \"sklearn_mnist\"\n", + "model = Model.register(model_path=\"sklearn_mnist_model.pkl\",\n", + " model_name=model_name,\n", + " tags={\"data\": \"mnist\", \"model\": \"classification\"},\n", + " description=\"Mnist handwriting recognition\",\n", + " workspace=ws)\n", + "\n", + "# download test data\n", + "import os\n", + "import urllib.request\n", + "\n", + "os.makedirs('./data', exist_ok=True)\n", + "\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename='./data/test-images.gz')\n", + "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename='./data/test-labels.gz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up the environment\n", + "\n", + "Start by setting up a testing environment.\n", + "\n", + "### Import packages\n", + "\n", + "Import the Python packages needed for this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "check version" + ] + }, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "import numpy as np\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + " \n", + "import azureml\n", + "from azureml.core import Workspace, Run\n", + "\n", + "# display the core SDK version number\n", + "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve the model\n", + "\n", + "You registered a model in your workspace in the previous tutorial. Now, load this workspace and download the model to your local directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "load workspace", + "download model" + ] + }, + "outputs": [], + "source": [ + "from azureml.core import Workspace\n", + "from azureml.core.model import Model\n", + "\n", + "ws = Workspace.from_config()\n", + "model=Model(ws, 'sklearn_mnist')\n", + "model.download(target_dir='.', exists_ok=True)\n", + "import os \n", + "# verify the downloaded model file\n", + "os.stat('./sklearn_mnist_model.pkl')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test model locally\n", + "\n", + "Before deploying, make sure your model is working locally by:\n", + "* Loading test data\n", + "* Predicting test data\n", + "* Examining the confusion matrix\n", + "\n", + "### Load test data\n", + "\n", + "Load the test data from the **./data/** directory created during the training tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from utils import load_data\n", + "\n", + "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the neural network converge faster\n", + "X_test = load_data('./data/test-images.gz', False) / 255.0\n", + "y_test = load_data('./data/test-labels.gz', True).reshape(-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict test data\n", + "\n", + "Feed the test dataset to the model to get predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle\n", + "from sklearn.externals import joblib\n", + "\n", + "clf = joblib.load('./sklearn_mnist_model.pkl')\n", + "y_hat = clf.predict(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Examine the confusion matrix\n", + "\n", + "Generate a confusion matrix to see how many samples from the test set are classified correctly. Notice the mis-classified value for the incorrect predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "\n", + "conf_mx = confusion_matrix(y_test, y_hat)\n", + "print(conf_mx)\n", + "print('Overall accuracy:', np.average(y_hat == y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `matplotlib` to display the confusion matrix as a graph. In this graph, the X axis represents the actual values, and the Y axis represents the predicted values. The color in each grid represents the error rate. The lighter the color, the higher the error rate is. For example, many 5's are mis-classified as 3's. Hence you see a bright grid at (5,3)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# normalize the diagnal cells so that they don't overpower the rest of the cells when visualized\n", + "row_sums = conf_mx.sum(axis=1, keepdims=True)\n", + "norm_conf_mx = conf_mx / row_sums\n", + "np.fill_diagonal(norm_conf_mx, 0)\n", + "\n", + "fig = plt.figure(figsize=(8,5))\n", + "ax = fig.add_subplot(111)\n", + "cax = ax.matshow(norm_conf_mx, cmap=plt.cm.bone)\n", + "ticks = np.arange(0, 10, 1)\n", + "ax.set_xticks(ticks)\n", + "ax.set_yticks(ticks)\n", + "ax.set_xticklabels(ticks)\n", + "ax.set_yticklabels(ticks)\n", + "fig.colorbar(cax)\n", + "plt.ylabel('true labels', fontsize=14)\n", + "plt.xlabel('predicted values', fontsize=14)\n", + "plt.savefig('conf.png')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy as web service\n", + "\n", + "Once you've tested the model and are satisfied with the results, deploy the model as a web service hosted in ACI. \n", + "\n", + "To build the correct environment for ACI, provide the following:\n", + "* A scoring script to show how to use the model\n", + "* An environment file to show what packages need to be installed\n", + "* A configuration file to build the ACI\n", + "* The model you trained before\n", + "\n", + "### Create scoring script\n", + "\n", + "Create the scoring script, called score.py, used by the web service call to show how to use the model.\n", + "\n", + "You must include two required functions into the scoring script:\n", + "* The `init()` function, which typically loads the model into a global object. This function is run only once when the Docker container is started. \n", + "\n", + "* The `run(input_data)` function uses the model to predict a value based on the input data. Inputs and outputs to the run typically use JSON for serialization and de-serialization, but other formats are supported.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile score.py\n", + "import json\n", + "import numpy as np\n", + "import os\n", + "import pickle\n", + "from sklearn.externals import joblib\n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "from azureml.core.model import Model\n", + "\n", + "def init():\n", + " global model\n", + " # retreive the path to the model file using the model name\n", + " model_path = Model.get_model_path('sklearn_mnist')\n", + " model = joblib.load(model_path)\n", + "\n", + "def run(raw_data):\n", + " data = np.array(json.loads(raw_data)['data'])\n", + " # make prediction\n", + " y_hat = model.predict(data)\n", + " # you can return any data type as long as it is JSON-serializable\n", + " return y_hat.tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create environment file\n", + "\n", + "Next, create an environment file, called myenv.yml, that specifies all of the script's package dependencies. This file is used to ensure that all of those dependencies are installed in the Docker image. This model needs `scikit-learn` and `azureml-sdk`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "set conda dependencies" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.conda_dependencies import CondaDependencies \n", + "\n", + "myenv = CondaDependencies()\n", + "myenv.add_conda_package(\"scikit-learn\")\n", + "\n", + "with open(\"myenv.yml\",\"w\") as f:\n", + " f.write(myenv.serialize_to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Review the content of the `myenv.yml` file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"myenv.yml\",\"r\") as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create configuration file\n", + "\n", + "Create a deployment configuration file and specify the number of CPUs and gigabyte of RAM needed for your ACI container. While it depends on your model, the default of 1 core and 1 gigabyte of RAM is usually sufficient for many models. If you feel you need more later, you would have to recreate the image and redeploy the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "configure web service", + "aci" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.webservice import AciWebservice\n", + "\n", + "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", + " memory_gb=1, \n", + " tags={\"data\": \"MNIST\", \"method\" : \"sklearn\"}, \n", + " description='Predict MNIST with sklearn')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deploy in ACI\n", + "Estimated time to complete: **about 7-8 minutes**\n", + "\n", + "Configure the image and deploy. The following code goes through these steps:\n", + "\n", + "1. Build an image using:\n", + " * The scoring file (`score.py`)\n", + " * The environment file (`myenv.yml`)\n", + " * The model file\n", + "1. Register that image under the workspace. \n", + "1. Send the image to the ACI container.\n", + "1. Start up a container in ACI using the image.\n", + "1. Get the web service HTTP endpoint." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "configure image", + "create image", + "deploy web service", + "aci" + ] + }, + "outputs": [], + "source": [ + "%%time\n", + "from azureml.core.webservice import Webservice\n", + "from azureml.core.image import ContainerImage\n", + "\n", + "# configure the image\n", + "image_config = ContainerImage.image_configuration(execution_script=\"score.py\", \n", + " runtime=\"python\", \n", + " conda_file=\"myenv.yml\")\n", + "\n", + "service = Webservice.deploy_from_model(workspace=ws,\n", + " name='sklearn-mnist-svc',\n", + " deployment_config=aciconfig,\n", + " models=[model],\n", + " image_config=image_config)\n", + "\n", + "service.wait_for_deployment(show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the scoring web service's HTTP endpoint, which accepts REST client calls. This endpoint can be shared with anyone who wants to test the web service or integrate it into an application." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "get scoring uri" + ] + }, + "outputs": [], + "source": [ + "print(service.scoring_uri)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test deployed service\n", + "\n", + "Earlier you scored all the test data with the local version of the model. Now, you can test the deployed model with a random sample of 30 images from the test data. \n", + "\n", + "The following code goes through these steps:\n", + "1. Send the data as a JSON array to the web service hosted in ACI. \n", + "\n", + "1. Use the SDK's `run` API to invoke the service. You can also make raw calls using any HTTP tool such as curl.\n", + "\n", + "1. Print the returned predictions and plot them along with the input images. Red font and inverse image (white on black) is used to highlight the misclassified samples. \n", + "\n", + " Since the model accuracy is high, you might have to run the following code a few times before you can see a misclassified sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "score web service" + ] + }, + "outputs": [], + "source": [ + "import json\n", + "\n", + "# find 30 random samples from test set\n", + "n = 30\n", + "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", + "\n", + "test_samples = json.dumps({\"data\": X_test[sample_indices].tolist()})\n", + "test_samples = bytes(test_samples, encoding='utf8')\n", + "\n", + "# predict using the deployed model\n", + "result = service.run(input_data=test_samples)\n", + "\n", + "# compare actual value vs. the predicted values:\n", + "i = 0\n", + "plt.figure(figsize = (20, 1))\n", + "\n", + "for s in sample_indices:\n", + " plt.subplot(1, n, i + 1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " \n", + " # use different color for misclassified sample\n", + " font_color = 'red' if y_test[s] != result[i] else 'black'\n", + " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", + " \n", + " plt.text(x=10, y =-10, s=result[i], fontsize=18, color=font_color)\n", + " plt.imshow(X_test[s].reshape(28, 28), cmap=clr_map)\n", + " \n", + " i = i + 1\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also send raw HTTP request to test the web service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "score web service" + ] + }, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "\n", + "# send a random row from the test set to score\n", + "random_index = np.random.randint(0, len(X_test)-1)\n", + "input_data = \"{\\\"data\\\": [\" + str(list(X_test[random_index])) + \"]}\"\n", + "\n", + "headers = {'Content-Type':'application/json'}\n", + "\n", + "# for AKS deployment you'd need to the service key in the header as well\n", + "# api_key = service.get_key()\n", + "# headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)} \n", + "\n", + "resp = requests.post(service.scoring_uri, input_data, headers=headers)\n", + "\n", + "print(\"POST to url\", service.scoring_uri)\n", + "#print(\"input data:\", input_data)\n", + "print(\"label:\", y_test[random_index])\n", + "print(\"prediction:\", resp.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clean up resources\n", + "\n", + "To keep the resource group and workspace for other tutorials and exploration, you can delete only the ACI deployment using this API call:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "delete web service" + ] + }, + "outputs": [], + "source": [ + "service.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "If you're not going to use what you've created here, delete the resources you just created with this quickstart so you don't incur any charges. In the Azure portal, select and delete your resource group. You can also keep the resource group, but delete a single workspace by displaying the workspace properties and selecting the Delete button.\n", + "\n", + "\n", + "## Next steps\n", + "\n", + "In this Azure Machine Learning tutorial, you used Python to:\n", + "\n", + "> * Set up your testing environment\n", + "> * Retrieve the model from your workspace\n", + "> * Test the model locally\n", + "> * Deploy the model to ACI\n", + "> * Test the deployed model\n", + " \n", + "You can also try out the [Automatic algorithm selection tutorial](03.auto-train-models.ipynb) to see how Azure Machine Learning can auto-select and tune the best algorithm for your model and build that model for you." + ] + } + ], + "metadata": { + "authors": [ + { + "name": "roastala" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "sgilley" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/tutorials/03.auto-train-models.ipynb b/tutorials/03.auto-train-models.ipynb new file mode 100644 index 00000000..cbaab83a --- /dev/null +++ b/tutorials/03.auto-train-models.ipynb @@ -0,0 +1,427 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial: Train a classification model with automated machine learning\n", + "\n", + "In this tutorial, you'll learn how to generate a machine learning model using automated machine learning (automated ML). Azure Machine Learning can perform algorithm selection and hyperparameter selection in an automated way for you. The final model can then be deployed following the workflow in the [Deploy a model](02.deploy-models.ipynb) tutorial.\n", + "\n", + "[flow diagram](./imgs/flow2.png)\n", + "\n", + "Similar to the [train models tutorial](01.train-models.ipynb), this tutorial classifies handwritten images of digits (0-9) from the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset. But this time you don't to specify an algorithm or tune hyperparameters. The automated ML technique iterates over many combinations of algorithms and hyperparameters until it finds the best model based on your criterion.\n", + "\n", + "You'll learn how to:\n", + "\n", + "> * Set up your development environment\n", + "> * Access and examine the data\n", + "> * Train using an automated classifier locally with custom parameters\n", + "> * Explore the results\n", + "> * Review training results\n", + "> * Register the best model\n", + "\n", + "## Prerequisites\n", + "\n", + "Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: \n", + "* Create a workspace and its configuration file (**config.json**) \n", + "* Upload your **config.json** to the same folder as this notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Start a notebook\n", + "\n", + "To follow along, start a new notebook from the same directory as **config.json** and copy the code from the sections below.\n", + "\n", + "\n", + "## Set up your development environment\n", + "\n", + "All the setup for your development work can be accomplished in the Python notebook. Setup includes:\n", + "\n", + "* Import Python packages\n", + "* Configure a workspace to enable communication between your local computer and remote resources\n", + "* Create a directory to store training scripts\n", + "\n", + "### Import packages\n", + "Import Python packages you need in this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import azureml.core\n", + "import pandas as pd\n", + "from azureml.core.workspace import Workspace\n", + "from azureml.train.automl.run import AutoMLRun\n", + "import time\n", + "import logging\n", + "from sklearn import datasets\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.pyplot import imshow\n", + "import random\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure workspace\n", + "\n", + "Create a workspace object from the existing workspace. `Workspace.from_config()` reads the file **aml_config/config.json** and loads the details into an object named `ws`. `ws` is used throughout the rest of the code in this tutorial.\n", + "\n", + "Once you have a workspace object, specify a name for the experiment and create and register a local directory with the workspace. The history of all runs is recorded under the specified experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ws = Workspace.from_config()\n", + "# choose a name for the run history container in the workspace\n", + "experiment_name = 'automl-classifier'\n", + "# project folder\n", + "project_folder = './automl-classifier'\n", + "\n", + "import os\n", + "\n", + "output = {}\n", + "output['SDK version'] = azureml.core.VERSION\n", + "output['Subscription ID'] = ws.subscription_id\n", + "output['Workspace'] = ws.name\n", + "output['Resource Group'] = ws.resource_group\n", + "output['Location'] = ws.location\n", + "output['Project Directory'] = project_folder\n", + "pd.set_option('display.max_colwidth', -1)\n", + "pd.DataFrame(data=output, index=['']).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore data\n", + "\n", + "The initial training tutorial used a high-resolution version of the MNIST dataset (28x28 pixels). Since auto training requires many iterations, this tutorial uses a smaller resolution version of the images (8x8 pixels) to demonstrate the concepts while speeding up the time needed for each iteration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "\n", + "digits = datasets.load_digits()\n", + "\n", + "# Exclude the first 100 rows from training so that they can be used for test.\n", + "X_train = digits.data[100:,:]\n", + "y_train = digits.target[100:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Display some sample images\n", + "\n", + "Load the data into `numpy` arrays. Then use `matplotlib` to plot 30 random images from the dataset with their labels above them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "count = 0\n", + "sample_size = 30\n", + "plt.figure(figsize = (16, 6))\n", + "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", + " count = count + 1\n", + " plt.subplot(1, sample_size, count)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " plt.text(x = 2, y = -2, s = y_train[i], fontsize = 18)\n", + " plt.imshow(X_train[i].reshape(8, 8), cmap = plt.cm.Greys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You now have the necessary packages and data ready for auto training for your model. \n", + "\n", + "## Auto train a model \n", + "\n", + "To auto train a model, first define settings for autogeneration and tuning and then run the automatic classifier.\n", + "\n", + "\n", + "### Define settings for autogeneration and tuning\n", + "\n", + "Define the experiment parameters and models settings for autogeneration and tuning. \n", + "\n", + "\n", + "|Property| Value in this tutorial |Description|\n", + "|----|----|---|\n", + "|**primary_metric**|AUC Weighted | Metric that you want to optimize.|\n", + "|**max_time_sec**|12,000|Time limit in seconds for each iteration|\n", + "|**iterations**|20|Number of iterations. In each iteration, the model trains with the data with a specific pipeline|\n", + "|**n_cross_validations**|3|Number of cross validation splits|\n", + "|**exit_score**|0.9985|*double* value indicating the target for *primary_metric*. Once the target is surpassed the run terminates|\n", + "|**blacklist_algos**|['kNN','LinearSVM']|*Array* of *strings* indicating algorithms to ignore.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "configure automl" + ] + }, + "outputs": [], + "source": [ + "from azureml.train.automl import AutoMLConfig\n", + "\n", + "##Local compute \n", + "Automl_config = AutoMLConfig(task = 'classification',\n", + " primary_metric = 'AUC_weighted',\n", + " max_time_sec = 12000,\n", + " iterations = 20,\n", + " n_cross_validations = 3,\n", + " exit_score = 0.9985,\n", + " blacklist_algos = ['kNN','LinearSVM'],\n", + " X = X_train,\n", + " y = y_train,\n", + " path=project_folder)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the automatic classifier\n", + "\n", + "Start the experiment to run locally. Define the compute target as local and set the output to true to view progress on the experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "local submitted run", + "automl" + ] + }, + "outputs": [], + "source": [ + "from azureml.core.experiment import Experiment\n", + "experiment=Experiment(ws, experiment_name)\n", + "local_run = experiment.submit(Automl_config, show_output=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore the results\n", + "\n", + "Explore the results of automatic training with a Jupyter widget or by examining the experiment history.\n", + "\n", + "### Jupyter widget\n", + "\n", + "Use the Jupyter notebook widget to see a graph and a table of all results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "use notebook widget" + ] + }, + "outputs": [], + "source": [ + "from azureml.train.widgets import RunDetails\n", + "RunDetails(local_run).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve all iterations\n", + "\n", + "View the experiment history and see individual metrics for each iteration run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "get metrics", + "query history" + ] + }, + "outputs": [], + "source": [ + "children = list(local_run.get_children())\n", + "metricslist = {}\n", + "for run in children:\n", + " properties = run.get_properties()\n", + " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", + " metricslist[int(properties['iteration'])] = metrics\n", + "\n", + "import pandas as pd\n", + "rundata = pd.DataFrame(metricslist).sort_index(1)\n", + "rundata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register the best model \n", + "\n", + "Use the `local_run` object to get the best model and register it into the workspace. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "query history", + "register model from history" + ] + }, + "outputs": [], + "source": [ + "# find the run with the highest accuracy value.\n", + "best_run, fitted_model = local_run.get_output()\n", + "\n", + "# register model in workspace\n", + "description = 'Automated Machine Learning Model'\n", + "tags = None\n", + "local_run.register_model(description=description, tags=tags)\n", + "local_run.model_id # Use this id to deploy the model as a web service in Azure" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test the best model\n", + "\n", + "Use the model to predict a few random digits. Display the predicted and the image. Red font and inverse image (white on black) is used to highlight the misclassified samples.\n", + "\n", + "Since the model accuracy is high, you might have to run the following code a few times before you can see a misclassified sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find 30 random samples from test set\n", + "n = 30\n", + "X_test = digits.data[:100, :]\n", + "y_test = digits.target[:100]\n", + "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", + "test_samples = X_test[sample_indices]\n", + "\n", + "\n", + "# predict using the model\n", + "result = fitted_model.predict(test_samples)\n", + "\n", + "# compare actual value vs. the predicted values:\n", + "i = 0\n", + "plt.figure(figsize = (20, 1))\n", + "\n", + "for s in sample_indices:\n", + " plt.subplot(1, n, i + 1)\n", + " plt.axhline('')\n", + " plt.axvline('')\n", + " \n", + " # use different color for misclassified sample\n", + " font_color = 'red' if y_test[s] != result[i] else 'black'\n", + " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", + " \n", + " plt.text(x = 2, y = -2, s = result[i], fontsize = 18, color = font_color)\n", + " plt.imshow(X_test[s].reshape(8, 8), cmap = clr_map)\n", + " \n", + " i = i + 1\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "In this Azure Machine Learning tutorial, you used Python to:\n", + "\n", + "> * Set up your development environment\n", + "> * Access and examine the data\n", + "> * Train using an automated classifier locally with custom parameters\n", + "> * Explore the results\n", + "> * Review training results\n", + "> * Register the best model\n", + "\n", + "Learn more about [how to configure settings for automatic training](https://aka.ms/aml-how-to-configure-auto) or [how to use automatic training on a remote resource](https://aka.ms/aml-how-to-auto-remote)." + ] + } + ], + "metadata": { + "authors": [ + { + "name": "jeffshep" + } + ], + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + }, + "msauthor": "sgilley" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/tutorials/auto-train-models.ipynb b/tutorials/auto-train-models.ipynb deleted file mode 100644 index 10cfb770..00000000 --- a/tutorials/auto-train-models.ipynb +++ /dev/null @@ -1,427 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tutorial: Train a classification model with automated machine learning\n", - "\n", - "In this tutorial, you'll learn how to generate a machine learning model using automated machine learning (automated ML). Azure Machine Learning can perform algorithm selection and hyperparameter selection in an automated way for you. The final model can then be deployed following the workflow in the [Deploy a model](02.deploy-models.ipynb) tutorial.\n", - "\n", - "[flow diagram](./imgs/flow2.png)\n", - "\n", - "Similar to the [train models tutorial](01.train-models.ipynb), this tutorial classifies handwritten images of digits (0-9) from the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset. But this time you don't to specify an algorithm or tune hyperparameters. The automated ML technique iterates over many combinations of algorithms and hyperparameters until it finds the best model based on your criterion.\n", - "\n", - "You'll learn how to:\n", - "\n", - "> * Set up your development environment\n", - "> * Access and examine the data\n", - "> * Train using an automated classifier locally with custom parameters\n", - "> * Explore the results\n", - "> * Review training results\n", - "> * Register the best model\n", - "\n", - "## Prerequisites\n", - "\n", - "Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: \n", - "* Create a workspace and its configuration file (**config.json**) \n", - "* Upload your **config.json** to the same folder as this notebook" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Start a notebook\n", - "\n", - "To follow along, start a new notebook from the same directory as **config.json** and copy the code from the sections below.\n", - "\n", - "\n", - "## Set up your development environment\n", - "\n", - "All the setup for your development work can be accomplished in the Python notebook. Setup includes:\n", - "\n", - "* Import Python packages\n", - "* Configure a workspace to enable communication between your local computer and remote resources\n", - "* Create a directory to store training scripts\n", - "\n", - "### Import packages\n", - "Import Python packages you need in this tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import azureml.core\n", - "import pandas as pd\n", - "from azureml.core.workspace import Workspace\n", - "from azureml.train.automl.run import AutoMLRun\n", - "import time\n", - "import logging\n", - "from sklearn import datasets\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.pyplot import imshow\n", - "import random\n", - "import numpy as np" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Configure workspace\n", - "\n", - "Create a workspace object from the existing workspace. `Workspace.from_config()` reads the file **aml_config/config.json** and loads the details into an object named `ws`. `ws` is used throughout the rest of the code in this tutorial.\n", - "\n", - "Once you have a workspace object, specify a name for the experiment and create and register a local directory with the workspace. The history of all runs is recorded under the specified experiment." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ws = Workspace.from_config()\n", - "# choose a name for the run history container in the workspace\n", - "experiment_name = 'automl-classifier'\n", - "# project folder\n", - "project_folder = './automl-classifier'\n", - "\n", - "import os\n", - "\n", - "output = {}\n", - "output['SDK version'] = azureml.core.VERSION\n", - "output['Subscription ID'] = ws.subscription_id\n", - "output['Workspace'] = ws.name\n", - "output['Resource Group'] = ws.resource_group\n", - "output['Location'] = ws.location\n", - "output['Project Directory'] = project_folder\n", - "pd.set_option('display.max_colwidth', -1)\n", - "pd.DataFrame(data=output, index=['']).T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore data\n", - "\n", - "The initial training tutorial used a high-resolution version of the MNIST dataset (28x28 pixels). Since auto training requires many iterations, this tutorial uses a smaller resolution version of the images (8x8 pixels) to demonstrate the concepts while speeding up the time needed for each iteration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import datasets\n", - "\n", - "digits = datasets.load_digits()\n", - "\n", - "# Exclude the first 100 rows from training so that they can be used for test.\n", - "X_train = digits.data[100:,:]\n", - "y_train = digits.target[100:]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Display some sample images\n", - "\n", - "Load the data into `numpy` arrays. Then use `matplotlib` to plot 30 random images from the dataset with their labels above them." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "count = 0\n", - "sample_size = 30\n", - "plt.figure(figsize = (16, 6))\n", - "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", - " count = count + 1\n", - " plt.subplot(1, sample_size, count)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.text(x = 2, y = -2, s = y_train[i], fontsize = 18)\n", - " plt.imshow(X_train[i].reshape(8, 8), cmap = plt.cm.Greys)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You now have the necessary packages and data ready for auto training for your model. \n", - "\n", - "## Auto train a model \n", - "\n", - "To auto train a model, first define settings for autogeneration and tuning and then run the automatic classifier.\n", - "\n", - "\n", - "### Define settings for autogeneration and tuning\n", - "\n", - "Define the experiment parameters and models settings for autogeneration and tuning. \n", - "\n", - "\n", - "|Property| Value in this tutorial |Description|\n", - "|----|----|---|\n", - "|**primary_metric**|AUC Weighted | Metric that you want to optimize.|\n", - "|**max_time_sec**|12,000|Time limit in seconds for each iteration|\n", - "|**iterations**|20|Number of iterations. In each iteration, the model trains with the data with a specific pipeline|\n", - "|**n_cross_validations**|3|Number of cross validation splits|\n", - "|**exit_score**|0.9985|*double* value indicating the target for *primary_metric*. Once the target is surpassed the run terminates|\n", - "|**blacklist_algos**|['kNN','LinearSVM']|*Array* of *strings* indicating algorithms to ignore.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "configure automl" - ] - }, - "outputs": [], - "source": [ - "from azureml.train.automl import AutoMLConfig\n", - "\n", - "##Local compute \n", - "Automl_config = AutoMLConfig(task = 'classification',\n", - " primary_metric = 'AUC_weighted',\n", - " max_time_sec = 12000,\n", - " iterations = 20,\n", - " n_cross_validations = 3,\n", - " exit_score = 0.9985,\n", - " blacklist_algos = ['kNN','LinearSVM'],\n", - " X = X_train,\n", - " y = y_train,\n", - " path=project_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the automatic classifier\n", - "\n", - "Start the experiment to run locally. Define the compute target as local and set the output to true to view progress on the experiment." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "local submitted run", - "automl" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.experiment import Experiment\n", - "experiment=Experiment(ws, experiment_name)\n", - "local_run = experiment.submit(Automl_config, show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explore the results\n", - "\n", - "Explore the results of automatic training with a Jupyter widget or by examining the experiment history.\n", - "\n", - "### Jupyter widget\n", - "\n", - "Use the Jupyter notebook widget to see a graph and a table of all results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "use notebook widget" - ] - }, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(local_run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve all iterations\n", - "\n", - "View the experiment history and see individual metrics for each iteration run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "get metrics", - "query history" - ] - }, - "outputs": [], - "source": [ - "children = list(local_run.get_children())\n", - "metricslist = {}\n", - "for run in children:\n", - " properties = run.get_properties()\n", - " metrics = {k: v for k, v in run.get_metrics().items() if isinstance(v, float)}\n", - " metricslist[int(properties['iteration'])] = metrics\n", - "\n", - "import pandas as pd\n", - "rundata = pd.DataFrame(metricslist).sort_index(1)\n", - "rundata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register the best model \n", - "\n", - "Use the `local_run` object to get the best model and register it into the workspace. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history", - "register model from history" - ] - }, - "outputs": [], - "source": [ - "# find the run with the highest accuracy value.\n", - "best_run, fitted_model = local_run.get_output()\n", - "\n", - "# register model in workspace\n", - "description = 'Automated Machine Learning Model'\n", - "tags = None\n", - "local_run.register_model(description=description, tags=tags)\n", - "local_run.model_id # Use this id to deploy the model as a web service in Azure" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test the best model\n", - "\n", - "Use the model to predict a few random digits. Display the predicted and the image. Red font and inverse image (white on black) is used to highlight the misclassified samples.\n", - "\n", - "Since the model accuracy is high, you might have to run the following code a few times before you can see a misclassified sample." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# find 30 random samples from test set\n", - "n = 30\n", - "X_test = digits.data[:100, :]\n", - "y_test = digits.target[:100]\n", - "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", - "test_samples = X_test[sample_indices]\n", - "\n", - "\n", - "# predict using the model\n", - "result = fitted_model.predict(test_samples)\n", - "\n", - "# compare actual value vs. the predicted values:\n", - "i = 0\n", - "plt.figure(figsize = (20, 1))\n", - "\n", - "for s in sample_indices:\n", - " plt.subplot(1, n, i + 1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " \n", - " # use different color for misclassified sample\n", - " font_color = 'red' if y_test[s] != result[i] else 'black'\n", - " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", - " \n", - " plt.text(x = 2, y = -2, s = result[i], fontsize = 18, color = font_color)\n", - " plt.imshow(X_test[s].reshape(8, 8), cmap = clr_map)\n", - " \n", - " i = i + 1\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "In this Azure Machine Learning tutorial, you used Python to:\n", - "\n", - "> * Set up your development environment\n", - "> * Access and examine the data\n", - "> * Train using an automated classifier locally with custom parameters\n", - "> * Explore the results\n", - "> * Review training results\n", - "> * Register the best model\n", - "\n", - "Learn more about [how to configure settings for automatic training](https://aka.ms/aml-how-to-configure-auto) or [how to use automatic training on a remote resource](https://aka.ms/aml-how-to-auto-remote)." - ] - } - ], - "metadata": { - "authors": [ - { - "name": "jeffshep" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "sgilley" - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/deploy-models.ipynb b/tutorials/deploy-models.ipynb deleted file mode 100644 index d28b5b2c..00000000 --- a/tutorials/deploy-models.ipynb +++ /dev/null @@ -1,615 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tutorial #2: Deploy an image classification model in Azure Container Instance (ACI)\n", - "\n", - "This tutorial is **part two of a two-part tutorial series**. In the [previous tutorial](01.train-models.ipynb), you trained machine learning models and then registered a model in your workspace on the cloud. \n", - "\n", - "Now, you're ready to deploy the model as a web service in [Azure Container Instances](https://docs.microsoft.com/azure/container-instances/) (ACI). A web service is an image, in this case a Docker image, that encapsulates the scoring logic and the model itself. \n", - "\n", - "In this part of the tutorial, you use Azure Machine Learning service (Preview) to:\n", - "\n", - "> * Set up your testing environment\n", - "> * Retrieve the model from your workspace\n", - "> * Test the model locally\n", - "> * Deploy the model to ACI\n", - "> * Test the deployed model\n", - "\n", - "ACI is not ideal for production deployments, but it is great for testing and understanding the workflow. For scalable production deployments, consider using AKS.\n", - "\n", - "\n", - "## Prerequisites\n", - "\n", - "Complete the model training in the [Tutorial #1: Train an image classification model with Azure Machine Learning](train-models.ipynb) notebook. \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from file" - ] - }, - "outputs": [], - "source": [ - "# If you did NOT complete the tutorial, you can instead run this cell \n", - "# This will register a model and download the data needed for this tutorial\n", - "# These prerequisites are created in the training tutorial\n", - "# Feel free to skip this cell if you completed the training tutorial \n", - "\n", - "# register a model\n", - "from azureml.core import Workspace\n", - "ws = Workspace.from_config()\n", - "\n", - "from azureml.core.model import Model\n", - "\n", - "model_name = \"sklearn_mnist\"\n", - "model = Model.register(model_path=\"sklearn_mnist_model.pkl\",\n", - " model_name=model_name,\n", - " tags={\"data\": \"mnist\", \"model\": \"classification\"},\n", - " description=\"Mnist handwriting recognition\",\n", - " workspace=ws)\n", - "\n", - "# download test data\n", - "import os\n", - "import urllib.request\n", - "\n", - "os.makedirs('./data', exist_ok=True)\n", - "\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename='./data/test-images.gz')\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename='./data/test-labels.gz')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set up the environment\n", - "\n", - "Start by setting up a testing environment.\n", - "\n", - "### Import packages\n", - "\n", - "Import the Python packages needed for this tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "check version" - ] - }, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "import numpy as np\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - " \n", - "import azureml\n", - "from azureml.core import Workspace, Run\n", - "\n", - "# display the core SDK version number\n", - "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve the model\n", - "\n", - "You registered a model in your workspace in the previous tutorial. Now, load this workspace and download the model to your local directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "load workspace", - "download model" - ] - }, - "outputs": [], - "source": [ - "from azureml.core import Workspace\n", - "from azureml.core.model import Model\n", - "\n", - "ws = Workspace.from_config()\n", - "model=Model(ws, 'sklearn_mnist')\n", - "model.download(target_dir='.', exist_ok=True)\n", - "import os \n", - "# verify the downloaded model file\n", - "os.stat('./sklearn_mnist_model.pkl')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test model locally\n", - "\n", - "Before deploying, make sure your model is working locally by:\n", - "* Loading test data\n", - "* Predicting test data\n", - "* Examining the confusion matrix\n", - "\n", - "### Load test data\n", - "\n", - "Load the test data from the **./data/** directory created during the training tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from utils import load_data\n", - "\n", - "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the neural network converge faster\n", - "X_test = load_data('./data/test-images.gz', False) / 255.0\n", - "y_test = load_data('./data/test-labels.gz', True).reshape(-1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Predict test data\n", - "\n", - "Feed the test dataset to the model to get predictions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pickle\n", - "from sklearn.externals import joblib\n", - "\n", - "clf = joblib.load('./sklearn_mnist_model.pkl')\n", - "y_hat = clf.predict(X_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Examine the confusion matrix\n", - "\n", - "Generate a confusion matrix to see how many samples from the test set are classified correctly. Notice the mis-classified value for the incorrect predictions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.metrics import confusion_matrix\n", - "\n", - "conf_mx = confusion_matrix(y_test, y_hat)\n", - "print(conf_mx)\n", - "print('Overall accuracy:', np.average(y_hat == y_test))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use `matplotlib` to display the confusion matrix as a graph. In this graph, the X axis represents the actual values, and the Y axis represents the predicted values. The color in each grid represents the error rate. The lighter the color, the higher the error rate is. For example, many 5's are mis-classified as 3's. Hence you see a bright grid at (5,3)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# normalize the diagnal cells so that they don't overpower the rest of the cells when visualized\n", - "row_sums = conf_mx.sum(axis=1, keepdims=True)\n", - "norm_conf_mx = conf_mx / row_sums\n", - "np.fill_diagonal(norm_conf_mx, 0)\n", - "\n", - "fig = plt.figure(figsize=(8,5))\n", - "ax = fig.add_subplot(111)\n", - "cax = ax.matshow(norm_conf_mx, cmap=plt.cm.bone)\n", - "ticks = np.arange(0, 10, 1)\n", - "ax.set_xticks(ticks)\n", - "ax.set_yticks(ticks)\n", - "ax.set_xticklabels(ticks)\n", - "ax.set_yticklabels(ticks)\n", - "fig.colorbar(cax)\n", - "plt.ylabel('true labels', fontsize=14)\n", - "plt.xlabel('predicted values', fontsize=14)\n", - "plt.savefig('conf.png')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploy as web service\n", - "\n", - "Once you've tested the model and are satisfied with the results, deploy the model as a web service hosted in ACI. \n", - "\n", - "To build the correct environment for ACI, provide the following:\n", - "* A scoring script to show how to use the model\n", - "* An environment file to show what packages need to be installed\n", - "* A configuration file to build the ACI\n", - "* The model you trained before\n", - "\n", - "### Create scoring script\n", - "\n", - "Create the scoring script, called score.py, used by the web service call to show how to use the model.\n", - "\n", - "You must include two required functions into the scoring script:\n", - "* The `init()` function, which typically loads the model into a global object. This function is run only once when the Docker container is started. \n", - "\n", - "* The `run(input_data)` function uses the model to predict a value based on the input data. Inputs and outputs to the run typically use JSON for serialization and de-serialization, but other formats are supported.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile score.py\n", - "import json\n", - "import numpy as np\n", - "import os\n", - "import pickle\n", - "from sklearn.externals import joblib\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "from azureml.core.model import Model\n", - "\n", - "def init():\n", - " global model\n", - " # retreive the path to the model file using the model name\n", - " model_path = Model.get_model_path('sklearn_mnist')\n", - " model = joblib.load(model_path)\n", - "\n", - "def run(raw_data):\n", - " data = np.array(json.loads(raw_data)['data'])\n", - " # make prediction\n", - " y_hat = model.predict(data)\n", - " # you can return any data type as long as it is JSON-serializable\n", - " return y_hat.tolist()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create environment file\n", - "\n", - "Next, create an environment file, called myenv.yml, that specifies all of the script's package dependencies. This file is used to ensure that all of those dependencies are installed in the Docker image. This model needs `scikit-learn` and `azureml-sdk`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "set conda dependencies" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.conda_dependencies import CondaDependencies \n", - "\n", - "myenv = CondaDependencies()\n", - "myenv.add_conda_package(\"scikit-learn\")\n", - "\n", - "with open(\"myenv.yml\",\"w\") as f:\n", - " f.write(myenv.serialize_to_string())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Review the content of the `myenv.yml` file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"myenv.yml\",\"r\") as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create configuration file\n", - "\n", - "Create a deployment configuration file and specify the number of CPUs and gigabyte of RAM needed for your ACI container. While it depends on your model, the default of 1 core and 1 gigabyte of RAM is usually sufficient for many models. If you feel you need more later, you would have to recreate the image and redeploy the service." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "configure web service", - "aci" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.webservice import AciWebservice\n", - "\n", - "aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, \n", - " memory_gb=1, \n", - " tags={\"data\": \"MNIST\", \"method\" : \"sklearn\"}, \n", - " description='Predict MNIST with sklearn')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Deploy in ACI\n", - "Estimated time to complete: **about 7-8 minutes**\n", - "\n", - "Configure the image and deploy. The following code goes through these steps:\n", - "\n", - "1. Build an image using:\n", - " * The scoring file (`score.py`)\n", - " * The environment file (`myenv.yml`)\n", - " * The model file\n", - "1. Register that image under the workspace. \n", - "1. Send the image to the ACI container.\n", - "1. Start up a container in ACI using the image.\n", - "1. Get the web service HTTP endpoint." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "configure image", - "create image", - "deploy web service", - "aci" - ] - }, - "outputs": [], - "source": [ - "%%time\n", - "from azureml.core.webservice import Webservice\n", - "from azureml.core.image import ContainerImage\n", - "\n", - "# configure the image\n", - "image_config = ContainerImage.image_configuration(execution_script=\"score.py\", \n", - " runtime=\"python\", \n", - " conda_file=\"myenv.yml\")\n", - "\n", - "service = Webservice.deploy_from_model(workspace=ws,\n", - " name='sklearn-mnist-svc',\n", - " deployment_config=aciconfig,\n", - " models=[model],\n", - " image_config=image_config)\n", - "\n", - "service.wait_for_deployment(show_output=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get the scoring web service's HTTP endpoint, which accepts REST client calls. This endpoint can be shared with anyone who wants to test the web service or integrate it into an application." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "get scoring uri" - ] - }, - "outputs": [], - "source": [ - "print(service.scoring_uri)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test deployed service\n", - "\n", - "Earlier you scored all the test data with the local version of the model. Now, you can test the deployed model with a random sample of 30 images from the test data. \n", - "\n", - "The following code goes through these steps:\n", - "1. Send the data as a JSON array to the web service hosted in ACI. \n", - "\n", - "1. Use the SDK's `run` API to invoke the service. You can also make raw calls using any HTTP tool such as curl.\n", - "\n", - "1. Print the returned predictions and plot them along with the input images. Red font and inverse image (white on black) is used to highlight the misclassified samples. \n", - "\n", - " Since the model accuracy is high, you might have to run the following code a few times before you can see a misclassified sample." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "score web service" - ] - }, - "outputs": [], - "source": [ - "import json\n", - "\n", - "# find 30 random samples from test set\n", - "n = 30\n", - "sample_indices = np.random.permutation(X_test.shape[0])[0:n]\n", - "\n", - "test_samples = json.dumps({\"data\": X_test[sample_indices].tolist()})\n", - "test_samples = bytes(test_samples, encoding='utf8')\n", - "\n", - "# predict using the deployed model\n", - "result = service.run(input_data=test_samples)\n", - "\n", - "# compare actual value vs. the predicted values:\n", - "i = 0\n", - "plt.figure(figsize = (20, 1))\n", - "\n", - "for s in sample_indices:\n", - " plt.subplot(1, n, i + 1)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " \n", - " # use different color for misclassified sample\n", - " font_color = 'red' if y_test[s] != result[i] else 'black'\n", - " clr_map = plt.cm.gray if y_test[s] != result[i] else plt.cm.Greys\n", - " \n", - " plt.text(x=10, y =-10, s=result[i], fontsize=18, color=font_color)\n", - " plt.imshow(X_test[s].reshape(28, 28), cmap=clr_map)\n", - " \n", - " i = i + 1\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also send raw HTTP request to test the web service." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "score web service" - ] - }, - "outputs": [], - "source": [ - "import requests\n", - "import json\n", - "\n", - "# send a random row from the test set to score\n", - "random_index = np.random.randint(0, len(X_test)-1)\n", - "input_data = \"{\\\"data\\\": [\" + str(list(X_test[random_index])) + \"]}\"\n", - "\n", - "headers = {'Content-Type':'application/json'}\n", - "\n", - "# for AKS deployment you'd need to the service key in the header as well\n", - "# api_key = service.get_key()\n", - "# headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)} \n", - "\n", - "resp = requests.post(service.scoring_uri, input_data, headers=headers)\n", - "\n", - "print(\"POST to url\", service.scoring_uri)\n", - "#print(\"input data:\", input_data)\n", - "print(\"label:\", y_test[random_index])\n", - "print(\"prediction:\", resp.text)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Clean up resources\n", - "\n", - "To keep the resource group and workspace for other tutorials and exploration, you can delete only the ACI deployment using this API call:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "delete web service" - ] - }, - "outputs": [], - "source": [ - "service.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "If you're not going to use what you've created here, delete the resources you just created with this quickstart so you don't incur any charges. In the Azure portal, select and delete your resource group. You can also keep the resource group, but delete a single workspace by displaying the workspace properties and selecting the Delete button.\n", - "\n", - "\n", - "## Next steps\n", - "\n", - "In this Azure Machine Learning tutorial, you used Python to:\n", - "\n", - "> * Set up your testing environment\n", - "> * Retrieve the model from your workspace\n", - "> * Test the model locally\n", - "> * Deploy the model to ACI\n", - "> * Test the deployed model\n", - " \n", - "You can also try out the [Automatic algorithm selection tutorial](03.auto-train-models.ipynb) to see how Azure Machine Learning can auto-select and tune the best algorithm for your model and build that model for you." - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3.6", - "language": "python", - "name": "python36" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "msauthor": "sgilley" - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/imgs/flow2.png b/tutorials/imgs/flow2.png new file mode 100644 index 00000000..f5c8968b Binary files /dev/null and b/tutorials/imgs/flow2.png differ diff --git a/tutorials/train-models.ipynb b/tutorials/train-models.ipynb deleted file mode 100644 index b9038341..00000000 --- a/tutorials/train-models.ipynb +++ /dev/null @@ -1,718 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copyright (c) Microsoft Corporation. All rights reserved.\n", - "\n", - "Licensed under the MIT License." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tutorial #1: Train an image classification model with Azure Machine Learning\n", - "\n", - "In this tutorial, you train a machine learning model both locally and on remote compute resources. You'll use the training and deployment workflow for Azure Machine Learning service (preview) in a Python Jupyter notebook. You can then use the notebook as a template to train your own machine learning model with your own data. This tutorial is **part one of a two-part tutorial series**. \n", - "\n", - "This tutorial trains a simple logistic regression using the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset and [scikit-learn](http://scikit-learn.org) with Azure Machine Learning. MNIST is a popular dataset consisting of 70,000 grayscale images. Each image is a handwritten digit of 28x28 pixels, representing a number from 0 to 9. The goal is to create a multi-class classifier to identify the digit a given image represents. \n", - "\n", - "Learn how to:\n", - "\n", - "> * Set up your development environment\n", - "> * Access and examine the data\n", - "> * Train a simple logistic regression model locally using the popular scikit-learn machine learning library \n", - "> * Train multiple models on a remote cluster\n", - "> * Review training results, find and register the best model\n", - "\n", - "You'll learn how to select a model and deploy it in [part two of this tutorial](deploy-models.ipynb) later. \n", - "\n", - "## Prerequisites\n", - "\n", - "Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: \n", - "* Create a workspace and its configuration file (**config.json**) \n", - "* Save your **config.json** to the same folder as this notebook" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set up your development environment\n", - "\n", - "All the setup for your development work can be accomplished in a Python notebook. Setup includes:\n", - "\n", - "* Importing Python packages\n", - "* Connecting to a workspace to enable communication between your local computer and remote resources\n", - "* Creating an experiment to track all your runs\n", - "* Creating a remote compute target to use for training\n", - "\n", - "### Import packages\n", - "\n", - "Import Python packages you need in this session. Also display the Azure Machine Learning SDK version." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "check version" - ] - }, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "import numpy as np\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "\n", - "import azureml\n", - "from azureml.core import Workspace, Run\n", - "\n", - "# check core SDK version number\n", - "print(\"Azure ML SDK Version: \", azureml.core.VERSION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Connect to workspace\n", - "\n", - "Create a workspace object from the existing workspace. `Workspace.from_config()` reads the file **config.json** and loads the details into an object named `ws`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "load workspace" - ] - }, - "outputs": [], - "source": [ - "# load workspace configuration from the config.json file in the current folder.\n", - "ws = Workspace.from_config()\n", - "print(ws.name, ws.location, ws.resource_group, ws.location, sep = '\\t')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create experiment\n", - "\n", - "Create an experiment to track the runs in your workspace. A workspace can have muliple experiments. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create experiment" - ] - }, - "outputs": [], - "source": [ - "experiment_name = 'sklearn-mnist'\n", - "\n", - "from azureml.core import Experiment\n", - "exp = Experiment(workspace=ws, name=experiment_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create remote compute target\n", - "\n", - "Azure Machine Learning Managed Compute(AmlCompute) is a managed service that enables data scientists to train machine learning models on clusters of Azure virtual machines, including VMs with GPU support. In this tutorial, you create AmlCompute as your training environment. This code creates compute for you if it does not already exist in your workspace. \n", - "\n", - " **Creation of the compute takes approximately 5 minutes.** If the compute is already in the workspace this code uses it and skips the creation process." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "create mlc", - "batchai" - ] - }, - "outputs": [], - "source": [ - "from azureml.core.compute import AmlCompute\n", - "from azureml.core.compute import ComputeTarget\n", - "import os\n", - "\n", - "# choose a name for your cluster\n", - "compute_name = os.environ.get(\"BATCHAI_CLUSTER_NAME\", \"cpucluster\")\n", - "compute_min_nodes = os.environ.get(\"BATCHAI_CLUSTER_MIN_NODES\", 0)\n", - "compute_max_nodes = os.environ.get(\"BATCHAI_CLUSTER_MAX_NODES\", 4)\n", - "\n", - "# This example uses CPU VM. For using GPU VM, set SKU to STANDARD_NC6\n", - "vm_size = os.environ.get(\"BATCHAI_CLUSTER_SKU\", \"STANDARD_D2_V2\")\n", - "\n", - "\n", - "if compute_name in ws.compute_targets:\n", - " compute_target = ws.compute_targets[compute_name]\n", - " if compute_target and type(compute_target) is AmlCompute:\n", - " print('found compute target. just use it. ' + compute_name)\n", - "else:\n", - " print('creating a new compute target...')\n", - " provisioning_config = AmlCompute.provisioning_configuration(vm_size = vm_size,\n", - " min_nodes = compute_min_nodes, \n", - " max_nodes = compute_max_nodes)\n", - "\n", - " # create the cluster\n", - " compute_target = ComputeTarget.create(ws, compute_name, provisioning_config)\n", - " \n", - " # can poll for a minimum number of nodes and for a specific timeout. \n", - " # if no min node count is provided it will use the scale settings for the cluster\n", - " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", - " \n", - " # For a more detailed view of current BatchAI cluster status, use the 'status' property \n", - " print(compute_target.status.serialize())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You now have the necessary packages and compute resources to train a model in the cloud. \n", - "\n", - "## Explore data\n", - "\n", - "Before you train a model, you need to understand the data that you are using to train it. You also need to copy the data into the cloud so it can be accessed by your cloud training environment. In this section you learn how to:\n", - "\n", - "* Download the MNIST dataset\n", - "* Display some sample images\n", - "* Upload data to the cloud\n", - "\n", - "### Download the MNIST dataset\n", - "\n", - "Download the MNIST dataset and save the files into a `data` directory locally. Images and labels for both training and testing are downloaded." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import urllib.request\n", - "\n", - "os.makedirs('./data', exist_ok = True)\n", - "\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz', filename='./data/train-images.gz')\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz', filename='./data/train-labels.gz')\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz', filename='./data/test-images.gz')\n", - "urllib.request.urlretrieve('http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz', filename='./data/test-labels.gz')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Display some sample images\n", - "\n", - "Load the compressed files into `numpy` arrays. Then use `matplotlib` to plot 30 random images from the dataset with their labels above them. Note this step requires a `load_data` function that's included in an `util.py` file. This file is included in the sample folder. Please make sure it is placed in the same folder as this notebook. The `load_data` function simply parses the compresse files into numpy arrays." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make sure utils.py is in the same directory as this code\n", - "from utils import load_data\n", - "\n", - "# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the model converge faster.\n", - "X_train = load_data('./data/train-images.gz', False) / 255.0\n", - "y_train = load_data('./data/train-labels.gz', True).reshape(-1)\n", - "\n", - "X_test = load_data('./data/test-images.gz', False) / 255.0\n", - "y_test = load_data('./data/test-labels.gz', True).reshape(-1)\n", - "\n", - "# now let's show some randomly chosen images from the traininng set.\n", - "count = 0\n", - "sample_size = 30\n", - "plt.figure(figsize = (16, 6))\n", - "for i in np.random.permutation(X_train.shape[0])[:sample_size]:\n", - " count = count + 1\n", - " plt.subplot(1, sample_size, count)\n", - " plt.axhline('')\n", - " plt.axvline('')\n", - " plt.text(x=10, y=-10, s=y_train[i], fontsize=18)\n", - " plt.imshow(X_train[i].reshape(28, 28), cmap=plt.cm.Greys)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now you have an idea of what these images look like and the expected prediction outcome.\n", - "\n", - "### Upload data to the cloud\n", - "\n", - "Now make the data accessible remotely by uploading that data from your local machine into Azure so it can be accessed for remote training. The datastore is a convenient construct associated with your workspace for you to upload/download data, and interact with it from your remote compute targets. It is backed by Azure blob storage account.\n", - "\n", - "The MNIST files are uploaded into a directory named `mnist` at the root of the datastore." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "use datastore" - ] - }, - "outputs": [], - "source": [ - "ds = ws.get_default_datastore()\n", - "print(ds.datastore_type, ds.account_name, ds.container_name)\n", - "\n", - "ds.upload(src_dir='./data', target_path='mnist', overwrite=True, show_progress=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You now have everything you need to start training a model. \n", - "\n", - "## Train a local model\n", - "\n", - "Train a simple logistic regression model using scikit-learn locally.\n", - "\n", - "**Training locally can take a minute or two** depending on your computer configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "clf = LogisticRegression()\n", - "clf.fit(X_train, y_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, make predictions using the test set and calculate the accuracy." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y_hat = clf.predict(X_test)\n", - "print(np.average(y_hat == y_test))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With just a few lines of code, you have a 92% accuracy.\n", - "\n", - "## Train on a remote cluster\n", - "\n", - "Now you can expand on this simple model by building a model with a different regularization rate. This time you'll train the model on a remote resource. \n", - "\n", - "For this task, submit the job to the remote training cluster you set up earlier. To submit a job you:\n", - "* Create a directory\n", - "* Create a training script\n", - "* Create an estimator object\n", - "* Submit the job \n", - "\n", - "### Create a directory\n", - "\n", - "Create a directory to deliver the necessary code from your computer to the remote resource." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "script_folder = './sklearn-mnist'\n", - "os.makedirs(script_folder, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a training script\n", - "\n", - "To submit the job to the cluster, first create a training script. Run the following code to create the training script called `train.py` in the directory you just created. This training adds a regularization rate to the training algorithm, so produces a slightly different model than the local version." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile $script_folder/train.py\n", - "\n", - "import argparse\n", - "import os\n", - "import numpy as np\n", - "\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.externals import joblib\n", - "\n", - "from azureml.core import Run\n", - "from utils import load_data\n", - "\n", - "# let user feed in 2 parameters, the location of the data files (from datastore), and the regularization rate of the logistic regression model\n", - "parser = argparse.ArgumentParser()\n", - "parser.add_argument('--data-folder', type=str, dest='data_folder', help='data folder mounting point')\n", - "parser.add_argument('--regularization', type=float, dest='reg', default=0.01, help='regularization rate')\n", - "args = parser.parse_args()\n", - "\n", - "data_folder = os.path.join(args.data_folder, 'mnist')\n", - "print('Data folder:', data_folder)\n", - "\n", - "# load train and test set into numpy arrays\n", - "# note we scale the pixel intensity values to 0-1 (by dividing it with 255.0) so the model can converge faster.\n", - "X_train = load_data(os.path.join(data_folder, 'train-images.gz'), False) / 255.0\n", - "X_test = load_data(os.path.join(data_folder, 'test-images.gz'), False) / 255.0\n", - "y_train = load_data(os.path.join(data_folder, 'train-labels.gz'), True).reshape(-1)\n", - "y_test = load_data(os.path.join(data_folder, 'test-labels.gz'), True).reshape(-1)\n", - "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, sep = '\\n')\n", - "\n", - "# get hold of the current run\n", - "run = Run.get_context()\n", - "\n", - "print('Train a logistic regression model with regularizaion rate of', args.reg)\n", - "clf = LogisticRegression(C=1.0/args.reg, random_state=42)\n", - "clf.fit(X_train, y_train)\n", - "\n", - "print('Predict the test set')\n", - "y_hat = clf.predict(X_test)\n", - "\n", - "# calculate accuracy on the prediction\n", - "acc = np.average(y_hat == y_test)\n", - "print('Accuracy is', acc)\n", - "\n", - "run.log('regularization rate', np.float(args.reg))\n", - "run.log('accuracy', np.float(acc))\n", - "\n", - "os.makedirs('outputs', exist_ok=True)\n", - "# note file saved in the outputs folder is automatically uploaded into experiment record\n", - "joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice how the script gets data and saves models:\n", - "\n", - "+ The training script reads an argument to find the directory containing the data. When you submit the job later, you point to the datastore for this argument:\n", - "`parser.add_argument('--data-folder', type=str, dest='data_folder', help='data directory mounting point')`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "+ The training script saves your model into a directory named outputs.
\n", - "`joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')`
\n", - "Anything written in this directory is automatically uploaded into your workspace. You'll access your model from this directory later in the tutorial." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The file `utils.py` is referenced from the training script to load the dataset correctly. Copy this script into the script folder so that it can be accessed along with the training script on the remote resource." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "shutil.copy('utils.py', script_folder)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create an estimator\n", - "\n", - "An estimator object is used to submit the run. Create your estimator by running the following code to define:\n", - "\n", - "* The name of the estimator object, `est`\n", - "* The directory that contains your scripts. All the files in this directory are uploaded into the cluster nodes for execution. \n", - "* The compute target. In this case you will use the Batch AI cluster you created\n", - "* The training script name, train.py\n", - "* Parameters required from the training script \n", - "* Python packages needed for training\n", - "\n", - "In this tutorial, this target is the Batch AI cluster. All files in the script folder are uploaded into the cluster nodes for execution. The data_folder is set to use the datastore (`ds.as_mount()`)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "configure estimator" - ] - }, - "outputs": [], - "source": [ - "from azureml.train.estimator import Estimator\n", - "\n", - "script_params = {\n", - " '--data-folder': ds.as_mount(),\n", - " '--regularization': 0.8\n", - "}\n", - "\n", - "est = Estimator(source_directory=script_folder,\n", - " script_params=script_params,\n", - " compute_target=compute_target,\n", - " entry_script='train.py',\n", - " conda_packages=['scikit-learn'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit the job to the cluster\n", - "\n", - "Run the experiment by submitting the estimator object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "remote run", - "batchai", - "scikit-learn" - ] - }, - "outputs": [], - "source": [ - "run = exp.submit(config=est)\n", - "run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since the call is asynchronous, it returns a **Preparing** or **Running** state as soon as the job is started.\n", - "\n", - "## Monitor a remote run\n", - "\n", - "In total, the first run takes **approximately 10 minutes**. But for subsequent runs, as long as the script dependencies don't change, the same image is reused and hence the container start up time is much faster.\n", - "\n", - "Here is what's happening while you wait:\n", - "\n", - "- **Image creation**: A Docker image is created matching the Python environment specified by the estimator. The image is uploaded to the workspace. Image creation and uploading takes **about 5 minutes**. \n", - "\n", - " This stage happens once for each Python environment since the container is cached for subsequent runs. During image creation, logs are streamed to the run history. You can monitor the image creation progress using these logs.\n", - "\n", - "- **Scaling**: If the remote cluster requires more nodes to execute the run than currently available, additional nodes are added automatically. Scaling typically takes **about 5 minutes.**\n", - "\n", - "- **Running**: In this stage, the necessary scripts and files are sent to the compute target, then data stores are mounted/copied, then the entry_script is run. While the job is running, stdout and the ./logs directory are streamed to the run history. You can monitor the run's progress using these logs.\n", - "\n", - "- **Post-Processing**: The ./outputs directory of the run is copied over to the run history in your workspace so you can access these results.\n", - "\n", - "\n", - "You can check the progress of a running job in multiple ways. This tutorial uses a Jupyter widget as well as a `wait_for_completion` method. \n", - "\n", - "### Jupyter widget\n", - "\n", - "Watch the progress of the run with a Jupyter widget. Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "use notebook widget" - ] - }, - "outputs": [], - "source": [ - "from azureml.widgets import RunDetails\n", - "RunDetails(run).show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get log results upon completion\n", - "\n", - "Model training and monitoring happen in the background. Wait until the model has completed training before running more code. Use `wait_for_completion` to show when the model training is complete." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "remote run", - "batchai", - "scikit-learn" - ] - }, - "outputs": [], - "source": [ - "run.wait_for_completion(show_output=False) # specify True for a verbose log" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Display run results\n", - "\n", - "You now have a model trained on a remote cluster. Retrieve the accuracy of the model:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "get metrics" - ] - }, - "outputs": [], - "source": [ - "print(run.get_metrics())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the next tutorial you will explore this model in more detail.\n", - "\n", - "## Register model\n", - "\n", - "The last step in the training script wrote the file `outputs/sklearn_mnist_model.pkl` in a directory named `outputs` in the VM of the cluster where the job is executed. `outputs` is a special directory in that all content in this directory is automatically uploaded to your workspace. This content appears in the run record in the experiment under your workspace. Hence, the model file is now also available in your workspace.\n", - "\n", - "You can see files associated with that run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "query history" - ] - }, - "outputs": [], - "source": [ - "print(run.get_file_names())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Register the model in the workspace so that you (or other collaborators) can later query, examine, and deploy this model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "register model from history" - ] - }, - "outputs": [], - "source": [ - "# register model \n", - "model = run.register_model(model_name='sklearn_mnist', model_path='outputs/sklearn_mnist_model.pkl')\n", - "print(model.name, model.id, model.version, sep = '\\t')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "In this Azure Machine Learning tutorial, you used Python to:\n", - "\n", - "> * Set up your development environment\n", - "> * Access and examine the data\n", - "> * Train a simple logistic regression locally using the popular scikit-learn machine learning library\n", - "> * Train multiple models on a remote cluster\n", - "> * Review training details and register the best model\n", - "\n", - "You are ready to deploy this registered model using the instructions in the next part of the tutorial series:\n", - "\n", - "> [Tutorial 2 - Deploy models](02.deploy-models.ipynb)" - ] - } - ], - "metadata": { - "authors": [ - { - "name": "roastala" - } - ], - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.2" - }, - "msauthor": "sgilley" - }, - "nbformat": 4, - "nbformat_minor": 2 -}