From fb8f666c77d036bd02ab3339e9682bc86d912df8 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:24:08 -0400 Subject: [PATCH 01/23] Add abstract domain detectors. Adding AbstractDomainDetector and ItemDomainDetector abstract classes for data domain detection. --- python/lib/core/dmod/core/dataset.py | 142 ++++++++++++++++++++++++++- 1 file changed, 140 insertions(+), 2 deletions(-) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index e97222f16..ced7b24bd 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -8,12 +8,13 @@ from .serializable import Serializable, ResultIndicator from .enum import PydanticEnum -from typing import Any, Callable, ClassVar, Dict, FrozenSet, List, Optional, Set, Tuple, Type, Union +from pathlib import Path +from typing import Any, Callable, ClassVar, Dict, FrozenSet, List, Optional, Set, Tuple, Type, TypeVar, Union from pydantic import Field, validator, PrivateAttr from pydantic.fields import ModelField from uuid import UUID, uuid4 -from .common.reader import Reader +from .common.reader import Reader, RepeatableReader class DatasetType(PydanticEnum): @@ -486,6 +487,143 @@ def unlink_to_dataset(self, dataset: Dataset) -> bool: return dataset.manager is not None and dataset.manager.unlink_user(user=self, dataset=dataset) +DataItem = TypeVar('DataItem', bound=Union[bytes, RepeatableReader, Path]) + + +class AbstractDomainDetector(ABC): + """ Abstraction for something that will automatically detect a :class:`DataDomain` for some data. """ + + def __init__(self, *args, **kwargs): + self._data_domain: Optional[DataDomain] = None + + @abstractmethod + def detect(self, **kwargs) -> DataDomain: + """ + Detect and return the data domain. + + Parameters + ---------- + kwargs + Optional kwargs applicable to the subtype, which may enhance or add to the domain detection and generation + capabilities, but which should not be required to produce a valid domain. + + Returns + ------- + DataDomain + The detected domain. + + Raises + ------ + DmodRuntimeError + If it was not possible to properly detect the domain. + """ + pass + + @property + def data_domain(self) -> DataDomain: + """ + The domain detected by the instance, lazily initialized via :method:`detect` if needed. + + Returns + ------- + DataDomain + The domain detected by the instance. + """ + if self._data_domain is None: + self._data_domain = self.detect() + return self._data_domain + + def reset(self): + """ + Reset domain property so the next call to :method:`data_domain` calls and sets via :method:`detect` again. + """ + self._data_domain = None + + +class ItemDataDomainDetector(AbstractDomainDetector, ABC): + """ + Type that can examine a data item and detect its individual :class:`DataDomain`. + + Abstraction for detecting the of a single data item. Here, a data item specifically means either + :class:`bytes` object with raw data, a :class:`RepeatableReader` object that can read data multiple times, or a + :class:`Path` object pointing to a file (not a directory). + + Base type provides a class method :method:`get_type_for_format` that allows for getting an appropriate subtype for + detecting in the contexts of a specific :class:`DataFormat`, assuming one exists. + + A subclass may optionally register with this type if the subclass itself is given a ``format_type`` keyword argument + containing a :class:`DataFormat` value. A ``name`` keyword argument may also optionally be provided; by default, + the class's name is used. E.g.: + + ``` + class DomainDetectorSubtype(ItemDataDomainDetector, format_type=DataFormat.AORC_CSV): + ``` + + This will register the subclass as a type that can detect domains for data having that format. This type provides + a class method :method:`get_types_for_format` for accessing the collection of registered subclasses for a format. + """ + + _all_subclasses: Dict[Type['ItemDataDomainDetector'], str] = dict() + """ All known subclasses, keyed to its name identifier (which defaults to the class's name). """ + _detector_registry: Dict[DataFormat, Dict[str, Type['ItemDataDomainDetector']]] = {f: dict() for f in DataFormat} + """ + Registered subclasses in the form of an outer dictionary mapping supported format to inner dictionaries, mapping + subclass name to subclass. + """ + _subclass_formats: Dict[Type['ItemDataDomainDetector'], DataFormat] = dict() + """ A collection to reverse the format for a particulr subclass. """ + + @classmethod + def get_data_format(cls) -> Optional[DataFormat]: + """ + Get the registered data format for this subclass of :class:`ItemDataDomainDetector`, if it is registered. + + Returns + ------- + Optional[DataFormat] + The :class:`DataFormat` of this subclass, if it registered one; otherwise ``None``. + """ + return cls._subclass_formats.get(cls) + + @classmethod + def get_types_for_format(cls, data_format: DataFormat) -> Dict[str, Type['ItemDataDomainDetector']]: + """ + Return subclass type registered as capable of detecting domains for data with the given data format. + + Parameters + ---------- + data_format: DataFormat + The data format of interest. + + Returns + ------- + Dict[str,Type['ItemDataDomainDetector']] + Dictionary (keyed by class name) of registered subclasses capable of detecting domains for data with the + given data format. + """ + return cls._detector_registry.get(data_format, dict()) + + def __init_subclass__(cls, format_type: Optional[DataFormat] = None, name: Optional[str] = None, **kwargs): + super().__init_subclass__(**kwargs) + cls._subclass_formats[cls] = format_type + cls._all_subclasses[cls] = cls.__name__ if name is None else name + if format_type is not None: + cls._detector_registry[format_type][cls.__name__ if name is None else name] = cls + + def __init__(self, item: DataItem, item_name: Optional[str] = None, decode_format: str = 'utf-8', *args, **kwargs): + super().__init__(*args, **kwargs) + self._item: DataItem = item + """ The data item for which to detect a domain. """ + self._is_item_file = isinstance(self._item, Path) + """ Private flag of whether data item is a :class:`Path` object (that points to a file, per other checks). """ + self._item_name = self._item.name if self._is_item_file else item_name + """ Name for the item; in some situations, contains important constraint metadata (e.g. catchment name). """ + self._decode_format = decode_format + """ A decoder format sometimes used when reading data item in order to get metadata. """ + if self._is_item_file and self._item.is_dir(): + raise ValueError(f"{self.__class__.__name__} can't initialize with a directory path as its data item") + + class DatasetManager(ABC): """ Abstract representation of manager of ::class:`Dataset` instances. From b50a2e54795f5ed74ac0c88764d1c8f59a870915 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:25:38 -0400 Subject: [PATCH 02/23] Add UniversalItemDomainDetector. Adding UniversalItemDomainDetector subclass of ItemDataDomainDetector that can leverage the known, registered subclasses of ItemDataDomainDetector to perform domain detection for multiple formats. --- python/lib/core/dmod/core/dataset.py | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index ced7b24bd..aa841388e 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -624,6 +624,115 @@ def __init__(self, item: DataItem, item_name: Optional[str] = None, decode_forma raise ValueError(f"{self.__class__.__name__} can't initialize with a directory path as its data item") +class UniversalItemDomainDetector(ItemDataDomainDetector): + """ + General type of detector that works with all supported formats by trying all registered, format-specific subtypes. + """ + + def detect(self, **kwargs) -> DataDomain: + """ + Detect and return the data domain. + + Detect a domain by calling the analogous method of an instance of some or all registered subclasses of + :class:`ItemDataDomainDetector`. Selection of the right subclass to use for this is based on brute-force + trials - i.e., a subclass is selected, an instance is created, the ``detect`` method is called, and we assess + what happens - along with an early exit mechanism for explicit format suggestions. + + Subclasses are tried in groups according to their registered ``data_format``. The order of groups may be + controlled by providing one or more format "suggestions", which will be tried first in the order provided. Also, + one or more excluded formats can be optionally provided. Iteration order of subclasses within a group is based + on registration ``name`` by default, but a sorting key function can be provided to control this also. + + If/when a subclass instance's ``detect`` call returns a domain, no other subclasses for that format group are + tried, but this function only returns that domain value immediately if the associated format was a provided + suggestion. Otherwise, iteration continues to the next group. This is important, because if more than one + class can detect a domain, there is an implicit ambiguity in the domain, and a :class:`DmodRuntimeError` is + raised. + + Parameters + ---------- + kwargs + Optional kwargs applicable to the subtype, which may enhance or add to the domain detection and generation + capabilities, but which should not be required to produce a valid domain. + + Keyword Args + ------------ + excluded_formats: Union[DataFormat, Set[DataFormat]] + Optional individual or set of :class:`DataFormat` to be excluded from testing; a :class:`ValueError` is + raised if a format appears in both this and ``suggested_formats``. + suggested_formats: Union[DataFormat, List[DataFormat]] + An optional :class:`DataFormat` or list of :class:`DataFormat` values to try first, with any successes + being immediately returned; a :class:`ValueError` is raised if a format appears more than once across both + this and ``excluded_formats``. + sort_key: + Optional function of one argument (the subclass type) used to extract a comparison key from each registered + subclasses when attempting to determine the order in which to try them (within the context of those + associated with the particular data format being tried); if not provided, the order is based on each + subclass's registration ``name``. + + Returns + ------- + DataDomain + The detected domain. + + Raises + ------ + ValueError + Raised if a :class:`DataFormat` appears multiple times across both ``excluded_formats`` and + ``suggested_formats``; i.e., if any data format value is duplicated in the hypothetical list produced by + ``list(kwargs.get('excluded_formats', [])) + list(kwargs.get('suggested_formats', []))``. + DmodRuntimeError + If it was not possible to properly detect the domain. + """ + def try_detection(d_format: DataFormat, subtype_ordered_list_func) -> Optional[DataDomain]: + # Note that subtype_ordered_list_func is based on `sorted_key` (if given) but it's not the same thing + possible_types = subtype_ordered_list_func(self.get_types_for_format(data_format=d_format)) + for subclass_type in subtype_ordered_list_func(self.get_types_for_format(data_format=d_format)): + try: + return subclass_type(item=self._item, item_name=self._item_name).detect() + except: + pass + return None + + excluded = kwargs.get('excluded_formats', set()) + if isinstance(excluded, DataFormat): + excluded = {excluded} + suggested = kwargs.get('suggested_formats', list()) + if isinstance(suggested, DataFormat): + suggested = [suggested] + if not excluded.isdisjoint(suggested): + raise ValueError(f"Can't include data format in both exclusions and suggestions for domain detection.") + if len(suggested) != len(set(suggested)): + raise ValueError(f"Can't include data format multiple times in ordered suggestions for domain detection.") + + remaining_formats = {df for df in DataFormat if df not in excluded} + + # Build an ordering function, either using provided sort key or just based on registration name + if 'sort_key' in kwargs: + order_func = lambda subs: sorted([subclass for name, subclass in subs.items()], key=kwargs['sort_key']) + else: + order_func = lambda subs: [subs[name] for name in sorted(subs.keys())] + + # Try suggestions first, returning immediately if any are successful + for data_format in suggested: + remaining_formats.remove(data_format) + result = try_detection(d_format=data_format, subtype_ordered_list_func=order_func) + if result is not None: + return result + + # Now we get to others + main_trials = (try_detection(d_format=df, subtype_ordered_list_func=order_func) for df in remaining_formats) + main_results = [t for t in main_trials if t is not None] + if len(main_results) == 0: + raise DmodRuntimeError("No domain could be detected for item.") + elif len(main_results) == 1: + return main_results[0] + # Multiple results mean there's a problem (also, they can't be equal because they will have different formats) + else: + raise DmodRuntimeError(f"Multiple conflicting domain detected for item in the following formats: " + f"{','.join([d.data_format.name for d in main_results])}") + + class DatasetManager(ABC): """ Abstract representation of manager of ::class:`Dataset` instances. From fbf0c9dce3d72284808f6121d92b8ad39f531143 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:28:01 -0400 Subject: [PATCH 03/23] Add first format specific detector classes. Adding AorcCsvFileDomainDetector, GeoPackageHydrofabricDomainDetector, and RealizationConfigDomainDetector. --- .../modeldata/data/item_domain_detector.py | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py diff --git a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py new file mode 100644 index 000000000..c8cd7d27c --- /dev/null +++ b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py @@ -0,0 +1,207 @@ +from dmod.core.meta_data import DataDomain, DataFormat, DiscreteRestriction, StandardDatasetIndex, TimeRange +from dmod.core.common.reader import RepeatableReader +from dmod.core.exception import DmodRuntimeError +from dmod.core.dataset import ItemDataDomainDetector +from pandas import read_csv as pandas_read_csv + +from typing import Optional +from io import StringIO +import re + +from ..hydrofabric.geopackage_hydrofabric import GeoPackageHydrofabric + +# Try to do this if ngen-config package is available +try: + import ngen.config.realization + __NGEN_CONFIG_INSTALLED = True +except ModuleNotFoundError: + __NGEN_CONFIG_INSTALLED = False + + +class AorcCsvFileDomainDetector(ItemDataDomainDetector, format_type=DataFormat.AORC_CSV): + """ + Subclass for detecting domains of NextGen regridded per-catchment AORC forcing CSV files. + + Instances must be explicitly or implicitly provided an item name along with the item. Receiving a :class:`Path` + object implicitly satisfies this, with the object's ``name`` property used. This is required because the applicable + catchment for data is not within the data itself; the convention is to include the catchment id as part of the file + name. + """ + + _csv_header: str = "Time,RAINRATE,Q2D,T2D,U2D,V2D,LWDOWN,SWDOWN,PSFC" + _datetime_format: str = "%Y-%m-%d %H:%M:%S" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self._item_name is None: + raise DmodRuntimeError(f"{self.__class__.__name__} must be passed an item name on init unless item is file") + + self._num_time_steps = None + + def _get_catchment_id(self) -> str: + # TODO: test + pattern = re.compile('^.*(cat)[_-](\d+)\D.*$') + matches = pattern.match(self._item_name) + if matches: + return f"{matches.group(1)}-{matches.group(2)}" + else: + raise DmodRuntimeError(f"{self.__class__.__name__} couldn't parse cat id from name '{self._item_name}'") + + def _get_cat_restriction(self) -> DiscreteRestriction: + """ Get :class:`DiscreteRestriction` defining applicable catchments (i.e., catchment) for the domain. """ + return DiscreteRestriction(variable=StandardDatasetIndex.CATCHMENT_ID, values=[self._get_catchment_id()]) + + def detect(self, **kwargs) -> DataDomain: + """ + Detect and return the data domain. + + Parameters + ---------- + kwargs + Optional kwargs applicable to the subtype, which may enhance or add to the domain detection and generation + capabilities, but which should not be required to produce a valid domain. + + Returns + ------- + DataDomain + The detected domain. + + Raises + ------ + DmodRuntimeError + If it was not possible to properly detect the domain. + """ + + # Do this early to fail here rather than try to load the dataframe + cat_restriction = self._get_cat_restriction() + data = StringIO(self._item.decode(self._decode_format)) if isinstance(self._item, bytes) else self._item + dt_index = self.get_data_format().indices_to_fields()[StandardDatasetIndex.TIME] + # TODO: (later) perhaps do a little more about the header checking + df = pandas_read_csv(data, parse_dates=[0]) + self._num_time_steps = df.shape[0] + date_range = TimeRange(begin=df.iloc[0][dt_index].to_pydatetime(), end=df.iloc[-1][dt_index].to_pydatetime()) + return DataDomain(data_format=self.get_data_format(), continuous_restrictions=[date_range], + discrete_restrictions=[cat_restriction]) + + +# TODO: track and record hydrofabric ids and file names of what's out there so that we recognize known versions/regions + + +# TODO: might need to expand things in the future ... there are other geopackage formats (e.g., older NextGen +# hydrofabric versions that used "id" instead of "divide_id") and maybe we need to account for that in detectors (and +# in formats) +class GeoPackageHydrofabricDomainDetector(ItemDataDomainDetector, format_type=DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2): + + def _is_region_string_for_conus(self, region_str: Optional[str]) -> bool: + """ + Whether this is a region string signifies CONUS. + + Parameters + ---------- + region_str: Optional[str] + A region string, or ``None``. + + Returns + ------- + bool + Whether there was a region string provided that indicates CONUS. + """ + if not isinstance(region_str, str): + return False + else: + return region_str.strip().lower() == 'conus' + + def detect(self, **kwargs) -> DataDomain: + """ + Detect and return the data domain. + + Parameters + ---------- + kwargs + Optional kwargs applicable to the subtype, which may enhance or add to the domain detection and generation + capabilities, but which should not be required to produce a valid domain. + + Keyword Args + ------------ + version: str + A version string for a constraint using the ``HYDROFABRIC_VERSION`` index. + region: str + A region string for a constraint using the ``HYDROFABRIC_REGION`` index; if provided, it will be converted + to lower case and have any non-alphanumeric characters removed before use. + + Returns + ------- + DataDomain + The detected domain. + + Raises + ------ + DmodRuntimeError + If it was not possible to properly detect the domain. + """ + # TODO: (later) probably isn't necessary to treat separately, but don't have a good way to test yet + if isinstance(self._item, RepeatableReader): + gpkg_data = self._item.read() + self._item.reset() + else: + gpkg_data = self._item + + if isinstance(kwargs.get('region'), str): + raw_str = kwargs['region'].strip().lower() + if raw_str == 'conus': + vpu = None + conus = True + else: + conus = False + pattern = re.compile('(vpu)([-_]?)(\d+)') + matches = pattern.match(raw_str) + vpu = int(matches.groups()[-1]) if matches else None + else: + vpu = None + conus = False + + try: + hydrofabric = GeoPackageHydrofabric.from_file(geopackage_file=gpkg_data, vpu=vpu, is_conus=conus) + d_restricts = [ + # Define range of catchment ids for catchment ids + DiscreteRestriction(variable=StandardDatasetIndex.CATCHMENT_ID, + values=list(hydrofabric.get_all_catchment_ids())), + # Define hydrofabric id restriction for domain + DiscreteRestriction(variable=StandardDatasetIndex.HYDROFABRIC_ID, values=[hydrofabric.uid])] + # If included, also append region restriction + # TODO: (later) implement this part later + # TODO: (later) consider whether conus should literally also include all the individual VPUs, plus "CONUS" + if hydrofabric.is_conus: + d_restricts.append(DiscreteRestriction(variable=StandardDatasetIndex.HYDROFABRIC_REGION, + values=["CONUS"])) + elif vpu is not None: + d_restricts.append(DiscreteRestriction(variable=StandardDatasetIndex.HYDROFABRIC_REGION, + values=[f"VPU{vpu:02d}"])) + if 'version' in kwargs: + d_restricts.append(DiscreteRestriction(variable=StandardDatasetIndex.HYDROFABRIC_VERSION, + values=[kwargs['version']])) + + return DataDomain(data_format=DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2, discrete_restrictions=d_restricts) + except Exception as e: + raise DmodRuntimeError(f"{self.__class__.__name__} encountered {e.__class__.__name__} attempting to detect " + f"domain for data item: {e!s}") + + +if __NGEN_CONFIG_INSTALLED: + import json + + class RealizationConfigDomainDetector(ItemDataDomainDetector, format_type=DataFormat.NGEN_REALIZATION_CONFIG): + def detect(self, **kwargs) -> DataDomain: + try: + real_obj = ngen.config.realization.NgenRealization(**json.load(self._item)) + except Exception as e: + raise DmodRuntimeError(f"{self.__class__.__name__} failed detect due to {e.__class__.__name__}: {e!s}") + + # When there is a global config, make catchment restriction values empty list to indicate "all" + has_global_config = real_obj.global_config is not None and real_obj.global_config.formulations + cat_restrict = DiscreteRestriction(variable=StandardDatasetIndex.CATCHMENT_ID, + values=[] if has_global_config else sorted(real_obj.catchments.keys())) + time_range = TimeRange(begin=real_obj.time.start_time, end=real_obj.time.end_time) + # An individual file won't have a data id (i.e., data_id only applies to a Dataset or collection) + return DataDomain(data_format=self.get_data_format(), continuous_restrictions=[time_range], + discrete_restrictions=[cat_restrict]) From 6c556dee2d7e52a13179caca7e96324297595f71 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:28:31 -0400 Subject: [PATCH 04/23] Add tests for AORC CSV file domain detector. --- .../test_aorc_csv_file_domain_detector.py | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py diff --git a/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py b/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py new file mode 100644 index 000000000..cd7f73603 --- /dev/null +++ b/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py @@ -0,0 +1,72 @@ +import unittest +from datetime import datetime + +from dmod.core.meta_data import DataFormat, StandardDatasetIndex +from dmod.core.dataset import ItemDataDomainDetector +from ..modeldata.data.item_domain_detector import AorcCsvFileDomainDetector +from . import find_git_root_dir + + +class TestAorcCsvFileDomainDetector(unittest.TestCase): + + def setUp(self): + self.detector_subclass = AorcCsvFileDomainDetector + self.expected_data_format = DataFormat.AORC_CSV + + # Setup example 0 + self.example_data = {0: find_git_root_dir().joinpath("data/example_forcing_aorc_csv/cat-12.csv")} + self.example_begins = {0: datetime.strptime("2016-01-01 00:00:00", self.detector_subclass._datetime_format)} + self.example_ends = {0: datetime.strptime("2016-01-31 23:00:00", self.detector_subclass._datetime_format)} + self.example_cat_id = {0: "cat-12"} + + def test_get_data_format_0_a(self): + """ Test that we get the correct data format for this subclass type. """ + self.assertEqual(self.expected_data_format, self.detector_subclass.get_data_format()) + + def test_registration_0_a(self): + """ Test that ``__init_subclass__`` registration added this type to superclass's registered collection. """ + registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format) + self.assertIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + + def test_detect_0_a(self): + """ Test that detect returns a domain with the right data format. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.expected_data_format, domain.data_format) + + def test_detect_0_b(self): + """ Test that detect returns a domain with the right begin time. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + time_range = domain.continuous_restrictions[StandardDatasetIndex.TIME] + self.assertEqual(self.example_begins[ex_idx], time_range.begin) + + def test_detect_0_c(self): + """ Test that detect returns a domain with the right end time. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + time_range = domain.continuous_restrictions[StandardDatasetIndex.TIME] + self.assertEqual(self.example_ends[ex_idx], time_range.end) + + def test_detect_0_d(self): + """ Test that detect returns a domain with a single catchment id restriction. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(1, len(domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values)) + + def test_detect_0_e(self): + """ Test that detect returns a domain with the right catchment id restriction. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.example_cat_id[ex_idx], + domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values[0]) From f84e8496bb387113d7a1319a55c4b794e6c4a288 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:29:18 -0400 Subject: [PATCH 05/23] Add tests for geopackage file domain detector. --- ..._geopackage_hydrofabric_domain_detector.py | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py diff --git a/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py b/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py new file mode 100644 index 000000000..e134cc856 --- /dev/null +++ b/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py @@ -0,0 +1,93 @@ +import unittest + +from dmod.core.meta_data import DataFormat, StandardDatasetIndex +from dmod.core.dataset import ItemDataDomainDetector +from ..modeldata.data.item_domain_detector import GeoPackageHydrofabricDomainDetector + +from . import find_git_root_dir + + +class TestGeoPackageHydrofabricDomainDetector(unittest.TestCase): + + def setUp(self): + self.detector_subclass = GeoPackageHydrofabricDomainDetector + self.expected_data_format = DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2 + self.hyfab_ver = "2.0.1" + + # Setup example 0 + self.example_data = {0: find_git_root_dir().joinpath("data/example_hydrofabric_2/hydrofabric.gpkg")} + self.example_vpu = {0: "vpu-9"} + self.example_restriction_vpu = {0: "VPU09"} + self.example_cat_ids = {0: sorted(['cat-8', 'cat-5', 'cat-9', 'cat-6', 'cat-7', 'cat-10', 'cat-11'])} + + def test_get_data_format_0_a(self): + """ Test that we get the correct data format for this subclass type. """ + self.assertEqual(self.detector_subclass.get_data_format(), self.expected_data_format) + + def test_registration_0_a(self): + """ Test that ``__init_subclass__`` registration added this type to superclass's registered collection. """ + registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format) + self.assertIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + + def test_detect_0_a(self): + """ Test that detect returns a domain with the right data format. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver, region=self.example_vpu[ex_idx]) + self.assertEqual(self.expected_data_format, domain.data_format) + + def test_detect_0_b(self): + """ Test that detect returns a domain with the right catchments. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver, region=self.example_vpu[ex_idx]) + self.assertEqual(self.example_cat_ids[ex_idx], + sorted(domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values)) + + def test_detect_0_c(self): + """ Test that domain from detect includes version when provided. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver, region=self.example_vpu[ex_idx]) + version_restrict = domain.discrete_restrictions[StandardDatasetIndex.HYDROFABRIC_VERSION] + self.assertEqual(1, len(version_restrict.values)) + self.assertEqual(self.hyfab_ver, version_restrict.values[0]) + + def test_detect_0_d(self): + """ Test that domain from detect doesn't include version when not provided. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(region=self.example_vpu[ex_idx]) + self.assertNotIn(StandardDatasetIndex.HYDROFABRIC_VERSION, domain.discrete_restrictions.keys()) + + def test_detect_0_e(self): + """ Test that domain from detect includes region when provided. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver, region=self.example_vpu[ex_idx]) + region_restrict = domain.discrete_restrictions[StandardDatasetIndex.HYDROFABRIC_REGION] + self.assertEqual(1, len(region_restrict.values)) + self.assertEqual(self.example_restriction_vpu[ex_idx], region_restrict.values[0]) + + def test_detect_0_f(self): + """ Test that domain from detect includes region when provided. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver, region=self.example_restriction_vpu[ex_idx]) + region_restrict = domain.discrete_restrictions[StandardDatasetIndex.HYDROFABRIC_REGION] + self.assertEqual(1, len(region_restrict.values)) + self.assertEqual(self.example_restriction_vpu[ex_idx], region_restrict.values[0]) + + def test_detect_0_g(self): + """ Test that domain from detect doesn't include region when not provided. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect(version=self.hyfab_ver) + self.assertNotIn(StandardDatasetIndex.HYDROFABRIC_REGION, domain.discrete_restrictions.keys()) From 7c04d5de5342866153b44d484fc4e41586ee59d7 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:30:21 -0400 Subject: [PATCH 06/23] Add tests for universal item domain detector. --- .../test_universal_item_domain_detector.py | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py diff --git a/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py b/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py new file mode 100644 index 000000000..eac275914 --- /dev/null +++ b/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py @@ -0,0 +1,105 @@ +import unittest +from datetime import datetime + +from dmod.core.meta_data import DataFormat, StandardDatasetIndex +from dmod.core.dataset import ItemDataDomainDetector, UniversalItemDomainDetector + +from ..modeldata.data.item_domain_detector import AorcCsvFileDomainDetector, GeoPackageHydrofabricDomainDetector +from . import find_git_root_dir + + +class TestUniversalItemDomainDetector(unittest.TestCase): + + def setUp(self): + self.detector_subclass = UniversalItemDomainDetector + + # Setup example 0 + self.expected_data_format = {0: DataFormat.AORC_CSV} + self.example_data = {0: find_git_root_dir().joinpath("data/example_forcing_aorc_csv/cat-12.csv")} + self.example_begins = {0: datetime.strptime("2016-01-01 00:00:00", AorcCsvFileDomainDetector._datetime_format)} + self.example_ends = {0: datetime.strptime("2016-01-31 23:00:00", AorcCsvFileDomainDetector._datetime_format)} + self.example_cat_ids = {0: "cat-12"} + + # Setup example 1 + self.expected_data_format[1] = DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2 + self.example_data[1] = find_git_root_dir().joinpath("data/example_hydrofabric_2/hydrofabric.gpkg") + self.example_cat_ids[1] = sorted(['cat-8', 'cat-5', 'cat-9', 'cat-6', 'cat-7', 'cat-10', 'cat-11']) + + def test_registration_0_a(self): + """ Test ``__init_subclass__`` registration doesn't add this type to superclass's registered collection. """ + ex_idx = 0 + registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) + self.assertNotIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + + def test_registration_0_b(self): + """ Test ``__init_subclass__`` registration adds first imported type to superclass's registered collection. """ + ex_idx = 0 + registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) + self.assertIn(AorcCsvFileDomainDetector, {val for _, val in registered_subtypes.items()}) + + def test_registration_1_b(self): + """ Test ``__init_subclass__`` registration adds second imported type to superclass's registered collection. """ + ex_idx = 1 + registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) + self.assertIn(GeoPackageHydrofabricDomainDetector, {val for _, val in registered_subtypes.items()}) + + def test_detect_0_a(self): + """ Test that detect returns a domain with the right data format. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.expected_data_format[ex_idx], domain.data_format) + + def test_detect_0_b(self): + """ Test that detect returns a domain with the right begin time. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + time_range = domain.continuous_restrictions[StandardDatasetIndex.TIME] + self.assertEqual(self.example_begins[ex_idx], time_range.begin) + + def test_detect_0_c(self): + """ Test that detect returns a domain with the right end time. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + time_range = domain.continuous_restrictions[StandardDatasetIndex.TIME] + self.assertEqual(self.example_ends[ex_idx], time_range.end) + + def test_detect_0_d(self): + """ Test that detect returns a domain with a single catchment id restriction. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(1, len(domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values)) + + def test_detect_0_e(self): + """ Test that detect returns a domain with the right catchment id restriction. """ + ex_idx = 0 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.example_cat_ids[ex_idx], + domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values[0]) + + def test_detect_1_a(self): + """ Test that detect returns a domain with the right data format. """ + ex_idx = 1 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.expected_data_format[ex_idx], domain.data_format) + + def test_detect_1_b(self): + """ Test that detect returns a domain with the right catchments. """ + ex_idx = 1 + + detector = self.detector_subclass(item=self.example_data[ex_idx]) + domain = detector.detect() + self.assertEqual(self.example_cat_ids[ex_idx], + sorted(domain.discrete_restrictions[StandardDatasetIndex.CATCHMENT_ID].values)) + From a4d4d8e492c42e3d91e3fde254dedd5e2677a683 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 10:30:50 -0400 Subject: [PATCH 07/23] Add common function needed for several tests. --- python/lib/modeldata/dmod/test/__init__.py | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/python/lib/modeldata/dmod/test/__init__.py b/python/lib/modeldata/dmod/test/__init__.py index e69de29bb..0b3cf7158 100644 --- a/python/lib/modeldata/dmod/test/__init__.py +++ b/python/lib/modeldata/dmod/test/__init__.py @@ -0,0 +1,32 @@ +import git + +from pathlib import Path +from typing import Optional + + +def find_git_root_dir(path: Optional[Path] = None) -> Path: + """ + Given a path (with ``None`` implying the current directory) assumed to be in a Git repo, find repo's root. + + Parameters + ---------- + path : Path + A file path within the project directory structure, or ``None`` to imply use the current directory. + + Returns + ------- + Path + The root directory for the Git repo containing the given/current path. + + Raises + ------- + InvalidGitRepositoryError : If the given path is not within a Git repo. + NoSuchPathError : If the given path is not valid. + BadObject : If the given revision of the obtained ::class:`git.Repo` could not be found. + ValueError : If the rev of the obtained ::class:`git.Repo` couldn't be parsed + IndexError: If an invalid reflog index is specified. + """ + if path is None: + path = Path('.') + git_repo = git.Repo(path, search_parent_directories=True) + return Path(git_repo.git.rev_parse("--show-toplevel")) \ No newline at end of file From da8a377cb134d87e950c6f13d5ca828a7ca40ce1 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 2 Apr 2024 14:43:58 -0400 Subject: [PATCH 08/23] Adding test CSV forcing files. --- data/example_forcing_aorc_csv/cat-12.csv | 745 +++++++++++++++++++++++ data/example_forcing_aorc_csv/cat-13.csv | 745 +++++++++++++++++++++++ 2 files changed, 1490 insertions(+) create mode 100644 data/example_forcing_aorc_csv/cat-12.csv create mode 100644 data/example_forcing_aorc_csv/cat-13.csv diff --git a/data/example_forcing_aorc_csv/cat-12.csv b/data/example_forcing_aorc_csv/cat-12.csv new file mode 100644 index 000000000..c4048fd81 --- /dev/null +++ b/data/example_forcing_aorc_csv/cat-12.csv @@ -0,0 +1,745 @@ +Time,RAINRATE,Q2D,T2D,U2D,V2D,LWDOWN,SWDOWN,PSFC +2016-01-01 00:00:00,0.0,0.0036773780716396177,278.7632942720677,4.8570855331479015,-2.199522727510183,271.3558740160172,0.0,101656.7497998862 +2016-01-01 01:00:00,0.0,0.003654374476375234,278.5756003753467,5.107984737558659,-2.4994921768480407,273.20671530664544,0.0,101695.64977441596 +2016-01-01 02:00:00,0.0,0.0036637615377466837,278.14205015221404,5.37410312410826,-2.8023809094827175,274.5086420585242,0.0,101666.57196853161 +2016-01-01 03:00:00,0.0,0.0036628338003188766,278.1300529435255,5.649382060857349,-3.0901051240402726,283.7385166158538,0.0,101691.91066691556 +2016-01-01 04:00:00,0.0,0.003544952953683877,277.7371792281575,5.387277540413597,-2.931822693186915,283.0091422479952,0.0,101638.61175172165 +2016-01-01 05:00:00,0.0,0.0033529694412728637,277.4109217309003,5.131822725969469,-2.7760640760645026,282.10968638449805,0.0,101669.11098690674 +2016-01-01 06:00:00,0.0,0.0032445074773038273,276.74156714584075,4.899522767743319,-2.6076717016587083,268.541423582402,0.0,101609.17425480403 +2016-01-01 07:00:00,0.0,0.003223846633033808,276.62758419992105,4.807984733088311,-2.5394979793781327,269.09745787092044,0.0,101596.81813004788 +2016-01-01 08:00:00,0.0,0.0029861971427541665,276.3641427344605,4.744820628612703,-2.439975283160388,268.12590235955787,0.0,101610.8529519815 +2016-01-01 09:00:00,0.0,0.00306252345939328,276.52527588949306,4.673205931344872,-2.354227322863161,284.47403398923666,0.0,101585.8135996405 +2016-01-01 10:00:00,0.0,0.003208656747406437,276.3952265370947,5.339975326373755,-2.287246939087506,285.16179883948615,0.0,101601.59454844048 +2016-01-01 11:00:00,0.0,0.0032713016149182733,276.3380071529851,5.9944987800772855,-2.2079846943452917,285.1338022910012,0.0,101572.56436875142 +2016-01-01 12:00:00,0.0,0.0032445074773038273,276.51351391400163,6.644820656924909,-2.1399752786900397,288.7656203660046,0.0,101556.94126367984 +2016-01-01 13:00:00,0.0,0.0032788663991169783,276.77195532729405,6.744820658415025,-2.187277492729881,288.44141150920507,70.58933430091392,101558.60038208733 +2016-01-01 14:00:00,0.0,0.0034501112658296067,277.7536365245934,6.831822751301444,-2.231822682756102,292.14636924811214,160.07305024770906,101612.71230689481 +2016-01-01 15:00:00,0.0,0.0034457432600977674,278.2239354075836,6.908149071006074,-2.2732058955820844,291.916397152032,275.84311590291765,101553.15433806402 +2016-01-01 16:00:00,0.0,0.003413920611402322,278.6858765701635,6.799522796055524,-1.654227312432348,292.05588756261795,340.2884197867338,101465.6251591118 +2016-01-01 17:00:00,0.0,0.00331753871827017,279.17097008688444,6.631822748321212,-1.0318226648747089,291.59566473035454,358.71685092669986,101356.10178184566 +2016-01-01 18:00:00,0.0,0.0034501112658296067,279.151568642942,6.500000096857548,-0.40814897414852513,300.82007298369444,310.75668271696526,101305.83655999554 +2016-01-01 19:00:00,0.0,0.0033081488844957595,279.0604194235032,6.699522794565408,0.09185103330205545,299.52122357044664,243.36283481198632,101168.92901956581 +2016-01-01 20:00:00,0.0,0.00316661972329479,278.6428230684833,6.89952279754564,0.5000000074505806,296.8142127575161,157.45710712199735,101180.84927404606 +2016-01-01 21:00:00,0.0,0.0030591574260917707,277.82467737931955,7.087247010613081,1.0000000149011612,295.757335386959,29.441692297731013,101227.68036679164 +2016-01-01 22:00:00,0.0,0.002861595727017898,277.4153658468703,7.372733298311033,0.7000000104308128,292.8451547311289,0.0,101255.9582536789 +2016-01-01 23:00:00,0.0,0.002791487942750319,276.9670484021183,7.644343366553699,0.4000000059604645,290.5741890033402,0.0,101245.06643652852 +2016-01-02 00:00:00,0.0,0.0027678142619156445,276.4675873169165,7.944312815891556,0.12931767518286627,273.6722092799948,0.0,101303.45820156879 +2016-01-02 01:00:00,0.0,0.0028294550687220726,275.7059956039451,8.080404971657533,-1.0043630725923163,275.235188939025,0.0,101321.73371789597 +2016-01-02 02:00:00,0.0,0.0028582602488476526,275.1819480437728,8.244312820361904,-2.108148999480499,277.72573199498856,0.0,101336.21323045487 +2016-01-02 03:00:00,0.0,0.002793109008840926,275.0913319160857,8.380404976127883,-3.2448206062609604,257.1079658312331,0.0,101299.6097472176 +2016-01-02 04:00:00,0.0,0.0027502755901318184,274.72142646983355,7.980404970167418,-3.3727332387063877,258.71264711996224,0.0,101332.49285322819 +2016-01-02 05:00:00,0.0,0.002650275592658031,274.29850533431227,7.580882269479325,-3.499492191749202,259.7170029841385,0.0,101377.15562729324 +2016-01-02 06:00:00,0.0,0.0026505885912925077,274.41723365622,7.162376362576795,-3.6023809214036464,241.61684866644973,0.0,101369.47831890771 +2016-01-02 07:00:00,0.0,0.0025247484650190496,274.0315762438554,7.161899057304423,-3.4313453953651245,240.682494682233,0.0,101452.79372330055 +2016-01-02 08:00:00,0.0,0.002498430366494555,274.2687976469114,7.144343359103118,-3.2537500310018346,242.549561878734,0.0,101421.11518441148 +2016-01-02 09:00:00,0.0,0.002461118431869547,273.8899443878914,7.139498047923475,-3.0808822024240996,226.18594053434575,0.0,101453.4901364923 +2016-01-02 10:00:00,0.0,0.00251283054485426,273.69275447038603,7.019069659096512,-2.8443432950281244,226.09896510441206,0.0,101470.52178397105 +2016-01-02 11:00:00,0.0,0.0024242711622920604,273.2975997756052,6.894811792135379,-2.594498729413338,224.4747531619543,0.0,101498.09874160013 +2016-01-02 12:00:00,0.0,0.00232505683670074,272.9410996832571,6.780877625553,-2.362376291051222,210.0281229875457,0.0,101523.14546964836 +2016-01-02 13:00:00,0.0,0.002261118436921972,273.3548225255569,6.87559146389229,-2.4067439612134085,208.21165481097074,102.31809904970412,101577.07516210349 +2016-01-02 14:00:00,0.0,0.0021587375717843416,274.5260214791672,6.954227391408502,-2.4318226857363343,208.80452318035523,232.47499104857783,101585.34573620454 +2016-01-02 15:00:00,0.0,0.00203368311739335,275.7454426967637,7.031822754281676,-2.4727332252953422,232.64012013123244,344.1965615517435,101590.29501868263 +2016-01-02 16:00:00,0.0,0.0021497983000358925,276.34042080510704,7.107671768713934,-1.700000025331974,233.68802824494122,424.9863931748991,101538.85364143731 +2016-01-02 17:00:00,0.0,0.0020850544066717985,276.89284065864746,7.202380975047827,-0.939975260808646,233.4874563777995,448.3253422013689,101432.2487574829 +2016-01-02 18:00:00,0.0,0.0022327331338397333,277.22970008720614,7.273205970087891,-0.20000000298023224,277.7512185623185,348.7803461100273,101359.43177024461 +2016-01-02 19:00:00,0.0,0.002113290834499926,277.2233844490246,7.087247010613081,-0.03182264997354758,275.1947361252419,273.7038553538749,101320.39429997044 +2016-01-02 20:00:00,0.0,0.0020531167550199647,277.04530199147126,6.895395975820908,0.12679414018070229,272.7280131992409,177.7712253573773,101249.95006822135 +2016-01-02 21:00:00,0.0,0.0020957511760318582,276.4004287019002,6.695739526620215,0.3004773097427198,260.00501619947926,36.06492928465579,101316.12604208273 +2016-01-02 22:00:00,0.0,0.002202498727921256,275.589442472504,6.439498037492662,0.3918510377724038,258.3765174596509,0.0,101372.75722013901 +2016-01-02 23:00:00,0.0,0.002399640549951787,275.373659188797,6.180882248617699,0.4014050486979038,259.9577400532726,0.0,101374.23345227087 +2016-01-03 00:00:00,0.0,0.002402498722868831,274.3978471067417,5.894811777234217,0.49185103926251994,278.4523639416648,0.0,101434.55299983914 +2016-01-03 01:00:00,0.0,0.0024719105359220046,274.85249579962743,6.139498033022313,0.7918510437328683,281.51164715706,0.0,101485.02491307099 +2016-01-03 02:00:00,0.0,0.002458737564205704,274.26776771162406,6.353750077195434,1.0918510482032167,279.0529723715712,0.0,101418.41952334749 +2016-01-03 03:00:00,0.0,0.0023911749542206923,274.64946840175446,6.573205959657078,1.3918510526735648,273.74793841242195,0.0,101333.64602781383 +2016-01-03 04:00:00,0.0,0.0023332104365667225,274.583960829232,6.73949804196301,1.4000000208616257,272.78960728252974,0.0,101297.32727498631 +2016-01-03 05:00:00,0.0,0.002386652634452588,274.5138328951414,6.894811792135379,1.401405063599065,272.5441860876972,0.0,101238.18050250958 +2016-01-03 06:00:00,0.0,0.0024730360980334412,274.4836238696132,7.061899055814307,1.455179463774497,262.489445370204,0.0,101156.61914488663 +2016-01-03 07:00:00,0.0,0.002578326890450956,275.12361323056416,7.039467491300867,1.6918510571439134,266.05357637929774,0.0,101184.34101920974 +2016-01-03 08:00:00,0.0,0.00269385161623353,274.491040297931,6.981354933805604,1.8918510601241456,265.0018017921209,0.0,101073.68038943026 +2016-01-03 09:00:00,0.0,0.0028721070843375335,274.49210353887696,6.95660825916797,2.1000000312924385,225.93850136543347,0.0,100947.09448779086 +2016-01-03 10:00:00,0.0,0.0031505667499493904,275.27538181673276,6.73949804196301,2.6000000387430187,230.1098160953103,0.0,100934.16540627272 +2016-01-03 11:00:00,0.0,0.0035108402330414038,276.9914189282142,6.539498038982778,3.200000047683716,237.54385818632878,0.0,100942.06173438067 +2016-01-03 12:00:00,0.0,0.003467091190472445,278.84117526285974,6.338570298537477,3.7000000551342964,244.0688168628204,0.0,100882.78760978034 +2016-01-03 13:00:00,0.0,0.0033332104113045977,279.4368152829768,6.961899054324191,4.400000065565109,240.35403090226552,100.4562532920078,100924.45956745623 +2016-01-03 14:00:00,0.0,0.0031619106728362945,280.08312393376247,7.595395986251721,5.000000074505806,236.79510701192524,228.49307154229254,100889.99631476022 +2016-01-03 15:00:00,0.0,0.003164217026918892,280.26097538934647,8.249382099600368,5.600000083446503,240.65105263551007,362.7009363471371,100880.08279024331 +2016-01-03 16:00:00,0.0,0.0032286341995982812,280.169416921303,8.40798478673249,4.500000067055225,238.8573899894251,448.1263378774047,100826.64690494942 +2016-01-03 17:00:00,0.0,0.0029684598711698495,280.13746981292667,8.587247032964822,3.4525141008698137,235.38221110358595,473.108165557396,100749.23928296298 +2016-01-03 18:00:00,0.0,0.0028154929916097923,279.9832691325618,8.772733319172659,2.3525140844785364,232.55448808699705,407.7109477952552,100696.90295849837 +2016-01-03 19:00:00,0.0,0.0029044858483057647,280.604149979475,8.007671782124978,1.055844911405839,237.50008386261067,320.4954628630517,100655.48265559136 +2016-01-03 20:00:00,0.0,0.0028195892580375145,279.2497853187831,7.275591469852754,-0.22524314636423162,234.65801578639045,209.05190126195984,100727.7590486574 +2016-01-03 21:00:00,0.0,0.0026860203792443684,278.1540823948716,6.539498038982778,-1.5460783427541713,225.18538129080784,35.79473407386677,100758.1331714943 +2016-01-03 22:00:00,0.0,0.002702498715290193,277.1245015257488,6.344343347182189,-1.799522721549719,224.74939265028482,0.0,100818.23246883425 +2016-01-03 23:00:00,0.0,0.0027176784933384806,276.1484289781895,6.144343344201957,-2.0000000298023224,224.91722018834764,0.0,100869.15490730871 +2016-01-04 00:00:00,0.0,0.002702498715290193,275.78684959508405,5.944343341221725,-2.244820591359799,228.23824698619975,0.0,100985.94418206498 +2016-01-04 01:00:00,0.0,0.002815520904189451,275.2687945597245,5.794498777097053,-2.63997528614062,229.9506310848752,0.0,100971.97024123941 +2016-01-04 02:00:00,0.0,0.002733210426461872,275.25865037205455,5.654227372036993,-3.0313453894046596,232.57824745882672,0.0,101024.35164909644 +2016-01-04 03:00:00,0.0,0.002816418086485994,274.70894491695066,5.507984743519123,-3.407954157094194,253.18605161385022,0.0,100971.66496845878 +2016-01-04 04:00:00,0.0,0.0028582602488476526,274.7560586663703,4.944820631592935,-3.6313453983453567,254.01988108098692,0.0,100945.39318336581 +2016-01-04 05:00:00,0.0,0.0028573630665511096,274.1386454371407,4.39859502282767,-3.839497998749642,252.0285353379079,0.0,100973.98724168597 +2016-01-04 06:00:00,0.0,0.0027323086121601183,272.8902923439367,3.808149024812473,-4.044820618181889,262.95271926709944,0.0,100948.33514623175 +2016-01-04 07:00:00,0.0,0.002883083514174463,272.60445066788964,3.3448206077510765,-4.131345405795937,262.3943168748772,0.0,100984.86919327808 +2016-01-04 08:00:00,0.0,0.002857332511419846,272.2994630195435,2.899522737940996,-4.19010514043155,260.72091669236823,0.0,101021.7262431542 +2016-01-04 09:00:00,0.0,0.002948901097529649,272.9308535009896,2.4081490039508475,-4.272733252117432,277.1983763796069,0.0,101014.1407904614 +2016-01-04 10:00:00,0.0,0.0029134433187801836,273.6294917345741,2.108148999480499,-4.744820628612703,280.13878326856155,0.0,101051.60025103079 +2016-01-04 11:00:00,0.0,0.0025175081833486053,273.07150765603404,1.8000000268220901,-5.208462044321147,275.4114937289916,0.0,101148.32674960236 +2016-01-04 12:00:00,0.0,0.0021975972480474276,272.5255754106316,1.5000000223517418,-5.699522779664247,286.688577100564,0.0,101227.6780297493 +2016-01-04 13:00:00,0.0,0.0020612630803291303,272.5472772078879,1.2366716082705775,-6.208462059222308,286.34799624940916,45.28123479584166,101301.02325746408 +2016-01-04 14:00:00,7.559624030472886e-05,0.0022502756027628808,272.3528940075545,1.0000000149011612,-6.75422738842827,288.6360224717657,103.05299188752844,101356.21114144451 +2016-01-04 15:00:00,0.0,0.0022710133586778865,272.2644443347616,0.7000000104308128,-7.299522803506107,279.3234327061581,178.83201027242444,101354.20876794473 +2016-01-04 16:00:00,2.5770485140773334e-07,0.0024216241205665314,272.2890789649606,0.7004773157031843,-7.454227398859084,282.3280404637008,221.05429998824465,101408.18971500883 +2016-01-04 17:00:00,2.870685410642615e-06,0.0024067592959152776,271.2803186009729,0.7311843961029494,-7.6084620800839335,279.7278858043977,233.46490651008386,101407.01740046497 +2016-01-04 18:00:00,9.457338565697917e-05,0.00197098281112526,271.93556960887867,0.800000011920929,-7.799522810956685,242.578093862537,324.3601468011446,101375.58867242253 +2016-01-04 19:00:00,0.0,0.0017840112793906073,271.817220676425,0.800000011920929,-7.772733304271496,242.4080569315733,255.49504010127563,101385.58287791593 +2016-01-04 20:00:00,0.0,0.0017451164159910464,271.497611527925,0.9000000134110451,-7.754227403329431,242.56488846685403,167.35076312606768,101534.20015773132 +2016-01-04 21:00:00,0.0,0.0016611184520792467,270.37106717550085,0.9985949721637218,-7.707671777654631,214.32755934927894,41.216729783371306,101628.7066529914 +2016-01-04 22:00:00,0.0,0.0015300346532196904,269.6434550682916,0.5000000074505806,-8.139975368097007,213.49518665676746,0.0,101754.53457330716 +2016-01-04 23:00:00,0.0,0.0016501113113014314,269.36610732490146,0.0,-8.586349850632246,216.5436640524681,0.0,101908.96164661476 +2016-01-05 00:00:00,0.0,0.0014839807318379806,268.24672801579334,-0.42114688275222223,-9.00767179702614,192.99526411245228,0.0,101942.83577497132 +2016-01-05 01:00:00,0.0,0.001316731123013658,266.92052519881656,-0.6985949676933736,-9.207671800006372,190.49094531347748,0.0,102119.67679011026 +2016-01-05 02:00:00,0.0,0.001215490389477587,266.2511130339666,-0.8990722759459773,-9.402381007830382,190.34446595776672,0.0,102187.27077875183 +2016-01-05 03:00:00,0.0,0.001080240942243397,265.6218985951386,-1.1000000163912773,-9.599522837778776,194.3563720939322,0.0,102278.3374411527 +2016-01-05 04:00:00,0.0,0.001062833866000401,264.5773235838472,-0.957065806768592,-10.072733338544168,192.01744249569543,0.0,102390.29207098777 +2016-01-05 05:00:00,0.0,0.0009999999747378752,263.7422821694283,-0.8081489801089896,-10.507984818024928,189.92532538987052,0.0,102459.72393868842 +2016-01-05 06:00:00,0.0,0.0009004772825172891,262.7035393804097,-0.7000000104308128,-10.981354993410248,171.51531136741704,0.0,102533.5758114224 +2016-01-05 07:00:00,0.0,0.000868916175878319,262.4467119310008,-0.5000000074505806,-10.539498098587421,173.1324003328178,0.0,102719.61078523922 +2016-01-05 08:00:00,0.0,0.0008446583113815786,261.8643039361488,-0.30000000447034836,-10.07606418484298,173.8102087485509,0.0,102812.17615677504 +2016-01-05 09:00:00,0.0,0.0008441856381335883,261.22752885236685,-0.03997524739760085,-9.631345487752323,159.7172285761431,0.0,102844.14233617272 +2016-01-05 10:00:00,0.0,0.0008402646987343943,261.25197070908314,0.19185103479217155,-9.407984801633653,161.79065627866632,0.0,102914.50247318103 +2016-01-05 11:00:00,0.0,0.0008971418043470437,260.57277474615535,0.4000000059604645,-9.181354966588158,162.28138066222388,0.0,103021.43183248924 +2016-01-05 12:00:00,0.0,0.0008004772850435013,260.55995485350365,0.6000000089406967,-8.961899084126514,159.4931916867386,0.0,103091.3505422797 +2016-01-05 13:00:00,0.0,0.0007878993838565402,261.8630756645069,0.10000000149011612,-8.439467512162492,160.86316759599123,104.63023623981154,103242.41424696853 +2016-01-05 14:00:00,0.0,0.0008681773285686423,263.10899185925444,-0.4000000059604645,-7.880882273949673,163.3336647955025,238.1417131211655,103274.37371429335 +2016-01-05 15:00:00,0.0,0.0008769054691255768,264.55514819971296,-0.9000000134110451,-7.331345453479653,169.26290964186697,382.25224969394225,103422.64130089489 +2016-01-05 16:00:00,0.0,0.0008502756381298558,265.4503253631687,-0.5081489756386413,-6.744820658415025,167.79209448929697,472.7207894220698,103351.53581627185 +2016-01-05 17:00:00,0.0,0.0008616263326734117,267.734311923713,-0.10814896967817678,-6.176064126728451,170.87643471864976,499.76253130724405,103215.34939645235 +2016-01-05 18:00:00,0.0,0.0008996405878449742,269.44063949682004,0.2918510362822877,-5.6076717463621915,178.4244011847918,435.994650280582,103179.55377991361 +2016-01-05 19:00:00,0.0,0.0008813173059768445,271.1370686610831,0.6551794518535682,-4.7318227200090055,181.82233340679625,344.04010805467635,103249.14796973506 +2016-01-05 20:00:00,0.0,0.0009081489451248589,270.81787934027767,1.0551794578140326,-3.8399753040220133,179.22654563158306,226.30199685934292,103290.16717358 +2016-01-05 21:00:00,0.0,0.0008637616084806327,269.87984408829504,1.4918510541636811,-2.999522739431112,177.6776679418845,45.792668673174745,103375.90742172152 +2016-01-05 22:00:00,0.0,0.000953446807155164,269.19480234768673,1.5918510556537973,-2.500000037252903,176.38999901347037,0.0,103409.02536814254 +2016-01-05 23:00:00,0.0,0.0010502756330774306,268.79494571719454,1.6918510571439134,-2.008148997990383,176.11795670176855,0.0,103450.91637710489 +2016-01-06 00:00:00,0.0,0.0011394638582347698,268.3442317692228,1.8000000268220901,-1.5448205809289863,175.3103071359041,0.0,103463.53561641599 +2016-01-06 01:00:00,0.0,0.0010667658587598927,267.6476502358832,1.9000000283122063,-1.5448205809289863,173.5079930782216,0.0,103463.96921600067 +2016-01-06 02:00:00,0.0,0.0011625514199709755,267.48646965887565,2.1000000312924385,-1.5985949811044187,175.01868908870404,0.0,103471.24349672691 +2016-01-06 03:00:00,0.0,0.0012209931426462246,267.1009940257518,2.2000000327825546,-1.587246928656693,178.03894334259473,0.0,103487.74030095113 +2016-01-06 04:00:00,0.0,0.0011312195437678065,266.87301773355966,2.3000000342726707,-1.7023808930914401,176.6395532941029,0.0,103443.79720896416 +2016-01-06 05:00:00,0.0,0.0012809873391966846,266.0862964961545,2.500000037252903,-1.8081489950101508,176.16888606763712,0.0,103406.52423800508 +2016-01-06 06:00:00,0.0,0.0012107748770310636,266.127589224159,2.6000000387430187,-1.944820586889451,176.7633693996832,0.0,103377.39427734204 +2016-01-06 07:00:00,0.0,0.0013932325709589655,266.767592144839,2.9000000432133675,-1.5081489905398024,179.84186549269825,0.0,103412.26954732761 +2016-01-06 08:00:00,0.0,0.0013216044800908777,264.9627888868707,3.200000047683716,-1.1067439418418987,174.01610342210515,0.0,103343.07087467931 +2016-01-06 09:00:00,0.0,0.0012365103361853215,264.7608686163725,3.499492191749202,-0.6732058717402266,172.29427391910784,0.0,103343.83947992077 +2016-01-06 10:00:00,0.0,0.0013278535054138724,264.7504219252684,3.699492194729434,-0.30814897265840907,172.53816297240917,0.0,103239.94995651377 +2016-01-06 11:00:00,0.0,0.0014174043983244157,265.3233029947423,3.872733246156968,0.06002475409251527,174.3222876507688,0.0,103292.05850207215 +2016-01-06 12:00:00,0.0,0.0014174043983244157,265.3448716225411,4.039975307002245,0.4000000059604645,172.7234854035455,0.0,103342.79730403202 +2016-01-06 13:00:00,0.0,0.0016007973501052455,266.5778214436295,4.30238093183446,0.6000000089406967,172.92736705672786,107.6004784812412,103310.93076975204 +2016-01-06 14:00:00,0.0,0.001603099575082797,269.7255012012143,4.554227355645716,0.800000011920929,176.9028996621528,244.72568848238708,103350.42721556732 +2016-01-06 15:00:00,0.0,0.0016021430744544243,273.9929241137601,4.807671734441263,1.0000000149011612,193.90595125520233,382.9726811609375,103353.22570371351 +2016-01-06 16:00:00,0.0,0.0022798952698880287,275.9252898568141,4.787246976340409,1.3000000193715093,201.67447934449908,473.8066480226448,103264.72518556457 +2016-01-06 17:00:00,0.0,0.0027501595009194768,276.3298437417666,4.744820628612703,1.5633284334526738,202.1568357853103,501.23368448805354,103151.94756250006 +2016-01-06 18:00:00,0.0,0.0022809843786997398,276.7766494131351,4.708149038223518,1.8000000268220901,204.64955439266544,435.61094821099766,103105.62231699355 +2016-01-06 19:00:00,0.0,0.002145093378682443,277.4336428681191,4.644820627122587,2.0692883188872764,205.7549003741458,344.2954632176993,102957.96612242394 +2016-01-06 20:00:00,0.0,0.0023159864199449477,277.00593261338656,4.581354898042816,2.3000000342726707,205.9648598013747,227.56717398394602,102942.26040661722 +2016-01-06 21:00:00,0.0,0.0019661133372847815,276.50798363629485,4.539498009180455,2.500000037252903,200.20126481646452,47.02412299560345,102935.56297917804 +2016-01-06 22:00:00,0.0,0.00192226239747337,276.66657247770684,4.707954176465704,2.3000000342726707,201.29689743515223,0.0,102941.03165807873 +2016-01-06 23:00:00,0.0,0.0019317812208786745,276.1232915203987,4.881354902513165,2.2000000327825546,201.09463748876965,0.0,102935.06524756184 +2016-01-07 00:00:00,0.0,0.0022505886013973577,275.4291793987417,5.080882232226422,2.044820588379567,203.3719785701906,0.0,102868.89575051637 +2016-01-07 01:00:00,0.0,0.0025614421438506256,274.36321824465705,4.753750053353577,1.8000000268220901,202.02609548788053,0.0,102906.73827837053 +2016-01-07 02:00:00,0.0,0.002315883516211946,273.8130921678958,4.444343318869983,1.5081489905398024,199.04123287024507,0.0,102889.84746839854 +2016-01-07 03:00:00,0.0,0.0023549603896484534,273.9105932229557,4.139975308492361,1.3000000193715093,204.13274748147126,0.0,102889.4051340638 +2016-01-07 04:00:00,0.0,0.0023648553114043683,274.0330145237996,4.007671722520334,1.1000000163912773,204.6311872855423,0.0,102822.11585012192 +2016-01-07 05:00:00,0.0,0.002527572728366501,273.9691036335561,3.8542273452149023,0.9000000134110451,205.62913519535223,0.0,102795.98064950012 +2016-01-07 06:00:00,0.0,0.0022554656100075257,273.44084673500566,3.708149023322357,0.7000000104308128,203.63605868827625,0.0,102771.03056470149 +2016-01-07 07:00:00,0.0,0.002068937199158963,273.42527833571336,3.6732059164437105,0.5000000074505806,202.62779818879656,0.0,102716.54610460174 +2016-01-07 08:00:00,0.0,0.002194326291566188,271.45944431532683,3.608149021832241,0.3004773097427198,198.05649838283477,0.0,102667.41883104258 +2016-01-07 09:00:00,0.0,0.0021771139249247237,271.4500698714874,3.5732059149535944,0.15517944440298762,196.69228030002824,0.0,102650.69832922102 +2016-01-07 10:00:00,0.0,0.002057230047160072,270.89119725792915,3.398595007926509,0.20000000298023224,195.0867295706729,0.0,102589.2833261941 +2016-01-07 11:00:00,0.0,0.002023952335763135,270.8374317846671,3.198595004946277,0.20047730825260368,195.70016802211717,0.0,102643.55394675535 +2016-01-07 12:00:00,0.0,0.0019117071040008538,270.9964067107257,2.9990723072384156,0.2918510362822877,191.29538820185363,0.0,102610.90907319554 +2016-01-07 13:00:00,0.0,0.002161623657281044,272.0100260324697,2.9985950019660446,-0.14482056006736074,192.8753939309768,106.45339520838293,102580.3195536692 +2016-01-07 14:00:00,0.0,0.002173168305275311,274.3331734502802,2.9994921842986213,-0.5995227036683253,196.71855554644006,241.86815749506493,102547.40592333139 +2016-01-07 15:00:00,0.0,0.0018573773331188362,275.91077410230264,2.999522739431112,-1.0000000149011612,209.72361545894842,372.70436729381424,102575.3265155026 +2016-01-07 16:00:00,0.0,0.0017183538899043077,277.1207698368827,2.008148997990383,-1.0000000149011612,211.0958469792735,461.21807306319016,102510.4694377404 +2016-01-07 17:00:00,0.0,0.0016957339894298643,278.2867455108119,1.098594973653838,-1.0000000149011612,213.1015454091833,488.3741896290104,102434.50876421978 +2016-01-07 18:00:00,0.0,0.0018955696777587148,278.8757106909636,0.10000000149011612,-1.0081489830892219,227.97877164049677,423.9742351295442,102342.72186251736 +2016-01-07 19:00:00,0.0,0.00248698032990233,278.87203097295134,-0.10000000149011612,-0.5000000074505806,232.38346549732904,335.72089567406454,102287.75517015309 +2016-01-07 20:00:00,0.0,0.002345752014305314,279.09647359780166,-0.30000000447034836,0.0,232.2292289216608,222.78250235474107,102300.75673579794 +2016-01-07 21:00:00,0.0,0.002288050609768174,278.03049534667116,-0.5000000074505806,0.5000000074505806,228.9725894470367,52.06231624022552,102293.87192417249 +2016-01-07 22:00:00,0.0,0.0020115448831309955,276.3893816217088,-0.7000000104308128,0.4000000059604645,221.56129748331105,0.0,102320.68059033406 +2016-01-07 23:00:00,0.0,0.002114743964735962,275.8527984169042,-0.800000011920929,0.30000000447034836,220.87928841456628,0.0,102274.5177107533 +2016-01-08 00:00:00,0.0,0.0021756670887732414,274.08620144481984,-1.0000000149011612,0.19470920782400922,208.14827366734332,0.0,102312.42200728724 +2016-01-08 01:00:00,0.0,0.0021055910713928486,272.89671865635046,-1.4000000208616257,-0.4000000059604645,205.94194711827427,0.0,102294.73704087056 +2016-01-08 02:00:00,0.0,0.0021628471966364834,272.8490422680678,-1.700927762797042,-0.9000000134110451,208.02166186614164,0.0,102248.25711515929 +2016-01-08 03:00:00,0.0,0.0019698649391129827,272.5488886601513,-2.1000000312924385,-1.5000000223517418,211.03294152325316,0.0,102257.2475446736 +2016-01-08 04:00:00,0.0,0.0019753325051451455,271.87622460295114,-2.310334501750984,-1.600000023841858,208.39347179479395,0.0,102217.87158777195 +2016-01-08 05:00:00,0.0,0.002074063687483966,272.3660137819752,-2.6000000387430187,-1.7081489935200347,210.2177922688107,0.0,102170.17934816971 +2016-01-08 06:00:00,0.0,0.002098218318142572,272.18102324260377,-2.8000000417232513,-1.8081489950101508,210.32084530461032,0.0,102178.18145168491 +2016-01-08 07:00:00,0.0,0.00208720754812891,271.8984754243639,-3.1028582192254373,-2.1000000312924385,209.38369146811823,0.0,102136.86678697546 +2016-01-08 08:00:00,0.0,0.002167982586126348,271.6986349957716,-3.4084620174990565,-2.3028582073045083,209.4048950687978,0.0,102100.8449046844 +2016-01-08 09:00:00,0.0,0.0022896654748338656,271.7478784117576,-3.7079847166970334,-2.508149005440964,212.1475948376566,0.0,102090.64324957275 +2016-01-08 10:00:00,0.0,0.002652149789996421,271.74931317164055,-3.847678788233495,-2.5448205958301475,213.78140656753067,0.0,102095.0836570904 +2016-01-08 11:00:00,0.0,0.0028636333157135182,272.4315598977245,-3.9944987502749636,-2.6067439641936403,216.4224836394947,0.0,102141.02344996037 +2016-01-08 12:00:00,0.0,0.0030689253717680713,272.98967996415973,-4.106743986545382,-2.6076717016587083,214.53689810792105,0.0,102109.52754608594 +2016-01-08 13:00:00,0.0,0.0030717036358355733,273.1952193712337,-4.5529695938205315,-2.831822691696799,210.9684583033999,103.74166666195907,102156.02713812309 +2016-01-08 14:00:00,0.0,0.0031085359021347835,274.8974828809159,-5.007671737421496,-3.0985950034561607,212.42590238126448,235.30832011838962,102229.72109681627 +2016-01-08 15:00:00,0.0,0.0035452487556115104,277.03570253566056,-5.4741031255983765,-3.300000049173832,232.686643196446,368.94834573499196,102259.53407121424 +2016-01-08 16:00:00,0.0,0.003919589230249177,278.25645135179684,-5.707671747852308,-3.0081490128915442,235.9088641143223,456.77259016199775,102198.61691965867 +2016-01-08 17:00:00,0.0,0.004203108818876174,280.63707164217857,-5.9084620547519595,-2.739975287630736,242.54512932886803,483.90935730187437,102205.6995995196 +2016-01-08 18:00:00,0.0,0.004149798249511643,280.84680756589665,-6.172733280429639,-2.474103080894894,250.48774616121102,413.6790120606602,102157.40601725529 +2016-01-08 19:00:00,0.0,0.004174767467401738,280.3885099098748,-5.999492229002104,-2.349382011683517,251.09043186012389,328.24279506094445,102198.16716046404 +2016-01-08 20:00:00,0.0,0.0042526076405671265,279.4326908925665,-5.806744011877356,-2.208461999617663,249.78711393268463,218.82173346707944,102114.56883069439 +2016-01-08 21:00:00,0.0,0.0040034237773256326,278.4144416797789,-5.631314873015188,-2.108148999480499,242.11697270391667,46.36921803047002,102122.42100859917 +2016-01-08 22:00:00,0.0,0.0039891352360803545,277.7741561082483,-5.652492304939437,-1.9399752757098068,242.74168582588487,0.0,102183.82150404832 +2016-01-08 23:00:00,0.0,0.003981295637618214,277.75165219525024,-5.681354914434093,-1.8000000268220901,245.7769640957696,0.0,102199.41620529506 +2016-01-09 00:00:00,0.0,0.0038983997759963157,277.4150682279721,-5.7515645689644845,-1.6081489920299186,257.32807653507996,0.0,102157.51825397552 +2016-01-09 01:00:00,0.0,0.003916418058697657,277.6758908237342,-5.330417686212262,-1.700000025331974,258.47629849597575,0.0,102202.47307937809 +2016-01-09 02:00:00,0.0,0.00402048521152781,278.2168967197846,-4.881354902513165,-1.8000000268220901,261.0760715364448,0.0,102159.14946221841 +2016-01-09 03:00:00,0.0,0.004026437569837658,278.0850493549692,-4.46237632234366,-1.9000000283122063,284.46415502328574,0.0,102260.8737979291 +2016-01-09 04:00:00,0.0,0.004020664521424811,277.9326490160032,-4.644343321850215,-1.973205891111736,282.7990364466829,0.0,102231.48126067748 +2016-01-09 05:00:00,0.0,0.004039463784974608,277.52279993769366,-4.831314861094259,-2.0000000298023224,280.32050081310115,0.0,102192.64805228624 +2016-01-09 06:00:00,0.0,0.004149798249511643,277.65652840446194,-4.994498765176125,-2.099522726020067,319.43472958812305,0.0,102199.80368037474 +2016-01-09 07:00:00,0.0,0.00423842514721621,277.93206572210113,-5.194498768156357,-1.9000000283122063,318.8655846353057,0.0,102164.17183727905 +2016-01-09 08:00:00,0.0,0.004315971115802693,277.48854531848366,-5.407641188249468,-1.7081489935200347,315.0627560892744,0.0,102153.71147854938 +2016-01-09 09:00:00,0.0,0.004348901062162675,277.5460158045449,-5.602380951205969,-1.5445075822819387,328.4929028075082,0.0,102176.44580494257 +2016-01-09 10:00:00,0.0,0.004279135350118991,277.45257524690385,-5.37273326850871,-1.3000000193715093,325.97083514318405,0.0,102174.61210577081 +2016-01-09 11:00:00,0.0,0.004365378956917956,277.60053268129565,-5.1394980181211505,-1.1000000163912773,325.5492790363448,0.0,102189.26810336851 +2016-01-09 12:00:00,0.0,0.004329874907872227,277.69370409616863,-4.90705699711336,-0.9000000134110451,312.81689070957617,0.0,102185.46159629083 +2016-01-09 13:00:00,0.0,0.004397155074354026,277.57591798605637,-5.406744005916891,-0.6081489771287575,308.3650919479214,74.60923107975728,102224.71789804644 +2016-01-09 14:00:00,0.0,0.004550275544659994,278.06492172646074,-5.881354917414325,-0.4000000059604645,307.00942319985865,168.88721038350644,102190.48481302954 +2016-01-09 15:00:00,0.0,0.004553446716211515,279.18427645206845,-6.3808822515979315,-0.20000000298023224,330.3620716123883,161.6059978437976,102320.97730897715 +2016-01-09 16:00:00,0.0,0.004651516278196065,279.28394702581846,-6.330417701113424,0.05877062150332296,329.1026364043336,200.12845807533412,102296.50930049838 +2016-01-09 17:00:00,0.0,0.004764238815211547,280.70181298168876,-6.280404944835444,0.30000000447034836,334.04886150473124,212.1207108312011,102165.59234024174 +2016-01-09 18:00:00,0.0,0.005005290668633104,280.87398601764954,-6.239467479379938,0.5995227036683253,333.68266573899496,149.02818274892974,102180.26934761221 +2016-01-09 19:00:00,0.0,0.0050999998711631625,281.50804808706596,-6.3618990453834945,0.6995227051584414,336.83598359145867,118.4628044507234,102113.68955304695 +2016-01-09 20:00:00,0.0,0.005105767971360091,281.44984475338646,-6.526325066737407,0.800000011920929,335.88956392694377,79.24354887347324,102089.9558466008 +2016-01-09 21:00:00,0.0,0.005232299822585597,280.24466371045304,-6.661868494721353,0.9000000134110451,334.19188716527304,21.623688460335345,102074.806415812 +2016-01-09 22:00:00,0.0,0.005042139792741224,279.49965206107163,-6.652461764708106,0.9525140636169107,330.8218720446579,0.0,102034.0743813556 +2016-01-09 23:00:00,0.0,0.004915970243812532,279.263600188137,-6.652461764708106,1.0000000149011612,330.00141245016374,0.0,102128.3816172061 +2016-01-10 00:00:00,0.0,0.00504665376039933,279.7331109039484,-6.6515645823755305,1.0525140651070268,334.14968637325984,0.0,102155.26319489052 +2016-01-10 01:00:00,0.0,0.005242417729038156,279.77741751141076,-6.725847764445267,0.9000000134110451,336.53354228639967,0.0,102130.92422835856 +2016-01-10 02:00:00,0.0,0.00555825753808831,279.9203254564276,-6.781190624200047,0.800000011920929,339.70023882681375,0.0,102153.04746406386 +2016-01-10 03:00:00,0.0,0.005677881302701567,280.12385909827054,-6.861899052834075,0.7000000104308128,342.09244231467216,0.0,102088.71643224817 +2016-01-10 04:00:00,0.0,0.0055517286496339045,279.5406451303382,-7.161899057304423,0.6000000089406967,338.29755801846153,0.0,101987.73284440716 +2016-01-10 05:00:00,0.0,0.0054032450490881685,279.174379780868,-7.452492331761527,0.6000000089406967,335.54492634432955,0.0,101865.22771744669 +2016-01-10 06:00:00,0.0,0.005303245051614381,278.791631319059,-7.752461781099384,0.5106474735759419,328.87262260240925,0.0,101801.83683866671 +2016-01-10 07:00:00,0.0,0.00533180531809934,279.0252820106138,-8.081190643571556,0.6000000089406967,329.3530599428342,0.0,101738.40165405998 +2016-01-10 08:00:00,0.0,0.005582250672583272,279.76318712466525,-8.447170996373973,0.6000000089406967,333.1109274066284,0.0,101609.16516454572 +2016-01-10 09:00:00,0.0,0.005808734545963282,279.7031530610975,-8.780404982088347,0.673630380805829,332.46494053078527,0.0,101483.94629192419 +2016-01-10 10:00:00,0.0,0.006091637721323658,280.2117392403552,-9.752492366034199,1.541229402338535,334.2253883846684,0.0,101356.52515185314 +2016-01-10 11:00:00,7.711629537616089e-05,0.006017391369156093,280.10977205548335,-10.746273848314067,2.4003130344098347,331.8387037324422,0.0,101235.71182944093 +2016-01-10 12:00:00,0.00017443698385200955,0.006359665203111224,281.1243163422894,-11.743415690183392,3.300000049173832,356.50648828422504,0.0,101062.40102595753 +2016-01-10 13:00:00,0.0004863490703560823,0.007170808152578419,282.82739145217437,-11.844343429138576,5.387246985281105,360.4493105269802,29.820219583381295,100947.54117026752 +2016-01-10 14:00:00,0.00198447427521165,0.008067685284512025,284.1129918910284,-11.954227465914308,7.444343363573466,362.20559599231973,67.30453501215119,100681.8439860282 +2016-01-10 15:00:00,0.0014985040569700796,0.0081990516220351,284.655438675934,-12.072733368346489,9.53946752855377,366.4418808020056,144.13808221278725,100410.88231112462 +2016-01-10 16:00:00,0.001382039026452774,0.008845604774460536,285.4767376104167,-9.674103188183253,9.83949808815661,371.9773041258043,178.50237209607553,100170.89132666212 +2016-01-10 17:00:00,0.001011567509939578,0.0091460820721351,286.1256373992776,-7.287277568725804,10.167888028854641,375.7923643359334,189.26870223222446,99998.57830196364 +2016-01-10 18:00:00,0.0005020388155814284,0.009147009809562907,286.2177750584964,-4.852986794998413,10.482432305229873,357.00436082453996,231.2766786650456,99727.2046351376 +2016-01-10 19:00:00,0.0008117574885677238,0.009006050724230923,285.90679820952636,-3.0000000447034836,10.200000151991842,354.0611887550336,184.1703612475261,99636.20104033223 +2016-01-10 20:00:00,0.000906326027672635,0.009106081276835976,285.83135660768403,-1.1429342245238465,9.902858320553333,352.7047645114386,123.88698464630545,99469.55127306216 +2016-01-10 21:00:00,0.00011111111276679568,0.008995406364192297,285.5086811704928,0.7000000104308128,9.668785203736634,338.44814800516997,29.937283925224285,99350.00739841544 +2016-01-10 22:00:00,0.0,0.008797628901921699,285.25789427721566,2.1000000312924385,8.900000132620335,337.44882917172026,0.0,99298.13897800472 +2016-01-10 23:00:00,0.0,0.008960045352791504,285.3782526875929,3.4706823784613143,8.129153487766832,339.15045724175076,0.0,99306.12925504408 +2016-01-11 00:00:00,0.0,0.00814795800564051,284.37959183961624,4.821146948317332,7.3879030132334655,313.30931043921925,0.0,99322.0051939031 +2016-01-11 01:00:00,0.0,0.007679128298079173,283.23927669500773,6.370682421674681,4.829790418485297,310.1406611795805,0.0,99376.52797542547 +2016-01-11 02:00:00,0.0,0.007437476275354408,283.56614748933384,7.900000117719173,2.3000000342726707,314.5067912356124,0.0,99454.24790906947 +2016-01-11 03:00:00,0.0,0.006290593111213173,283.50735967112297,9.400000140070915,-0.2366715933694162,257.9302207545095,0.0,99482.80832729902 +2016-01-11 04:00:00,0.0,0.005738400556343336,282.0796580238057,9.49952283628866,-0.7000000104308128,258.5123860546778,0.0,99621.02472997307 +2016-01-11 05:00:00,0.0,0.00458889040751438,280.67339383739767,9.607641250834346,-1.2000000178813934,257.1988722971694,0.0,99748.32674960236 +2016-01-11 06:00:00,0.0,0.003975664654750706,278.9031179274895,9.680882300771765,-1.700000025331974,248.6605489076058,0.0,99850.64904001004 +2016-01-11 07:00:00,0.0,0.003715490326322275,278.1469591321236,9.875591508595774,-1.844820585399335,249.2239485198141,0.0,99948.56114847315 +2016-01-11 08:00:00,0.0,0.003315490336427125,277.26045543483013,10.073206011811141,-2.0000000298023224,248.58146920467723,0.0,100070.03610344022 +2016-01-11 09:00:00,0.0,0.0032407215669589765,276.6721942443248,10.273630523856976,-2.1985949900451156,277.6540642172934,0.0,100232.5052953201 +2016-01-11 10:00:00,0.0,0.002987760773792735,275.9676766461816,10.39573958175451,-1.7727332148645296,278.0562714636592,0.0,100373.53033909111 +2016-01-11 11:00:00,0.0,0.002519110761871253,275.0415301307567,10.55375013978031,-1.344820577948754,275.9371369374335,0.0,100495.06643652852 +2016-01-11 12:00:00,0.0,0.002128469920767894,274.3633128728683,10.67511421524433,-0.9081489815991057,271.2766283574981,0.0,100675.14628344936 +2016-01-11 13:00:00,0.0,0.0020424178098769562,274.1463982592574,10.507984818024928,-1.2448205764586382,271.597594123721,91.64261738676949,100766.88072977634 +2016-01-11 14:00:00,0.0,0.0019126321988770553,274.34593959773275,10.348904825620433,-1.5448205809289863,272.8240892453337,206.23330735965743,100857.21975098211 +2016-01-11 15:00:00,0.0,0.0019394638380250697,274.64980877572117,10.190105229838515,-1.8995227230398346,224.3615612183965,373.57720070405645,100914.63872348976 +2016-01-11 16:00:00,0.0,0.001815490374320312,275.21255699408596,10.031345493712788,-1.4000000208616257,225.2894530844445,462.74559019885606,100969.59900358866 +2016-01-11 17:00:00,0.0,0.00202095793530005,275.3752899824611,9.873206008830909,-0.9000000134110451,227.82242455402374,491.061889624315,100879.60960320174 +2016-01-11 18:00:00,0.0,0.0017112298038000778,275.4040826365234,9.707984806104001,-0.4000000059604645,208.6674492419796,440.9715538899987,101005.1054547131 +2016-01-11 19:00:00,0.0,0.0015833171764920424,275.43540313676107,9.5760641773924,-0.6000000089406967,207.85443046016016,351.9784120312986,100979.86756661898 +2016-01-11 20:00:00,0.0,0.0016117071115794917,275.4738641279643,9.453750123389035,-0.9000000134110451,208.18505606316648,237.6738334468672,101017.12592516489 +2016-01-11 21:00:00,0.0,0.0016294199119001476,274.3591406415495,9.319069693369181,-1.1985949751439542,194.85805965026472,57.03555206547119,101176.5265495003 +2016-01-11 22:00:00,0.0,0.001446649219337769,273.16535915628947,8.656608284499942,-1.108148984579338,191.3442393400003,0.0,101311.02472997307 +2016-01-11 23:00:00,0.0,0.001492631736428487,273.0548967364658,8.00502863049225,-1.1000000163912773,192.82863201305332,0.0,101446.44612146237 +2016-01-12 00:00:00,0.0,0.0014024987481309557,272.2728698451745,7.347170979982697,-1.1000000163912773,188.2085821500514,0.0,101574.0062545147 +2016-01-12 01:00:00,0.0,0.0013437910489469379,272.24781437718934,6.861899052834075,-1.2448205764586382,188.1770742103801,0.0,101604.17566302656 +2016-01-12 02:00:00,0.0,0.0012750391594776433,271.86527573777346,6.3808822515979315,-1.399522715589254,186.7995894538122,0.0,101677.2302762855 +2016-01-12 03:00:00,0.0,0.0012402316943214465,271.8042447207438,5.894811777234217,-1.5084619891868503,187.13790947535236,0.0,101790.94600429936 +2016-01-12 04:00:00,0.0,0.0011706761044879355,271.2600319597654,5.361899030482333,-1.4995227170793701,185.10528771698213,0.0,101784.5032238371 +2016-01-12 05:00:00,0.0,0.00119932758163186,270.99455817544595,4.844343324830447,-1.4542273094521159,184.41992843412947,0.0,101817.12768607176 +2016-01-12 06:00:00,0.0,0.00119932758163186,269.71595871888087,4.307056988172662,-1.4081489890496863,187.8478099560137,0.0,101860.56360324481 +2016-01-12 07:00:00,0.0,0.0012327331591018584,268.96217803648693,4.03131484917333,-0.8028581849527666,186.34301192360874,0.0,101808.857536804 +2016-01-12 08:00:00,0.0,0.0012543745370043335,268.83707112408587,3.7394979972595257,-0.20000000298023224,186.12403199625945,0.0,101772.90985679193 +2016-01-12 09:00:00,0.0,0.0013168179162957687,268.4776581677857,3.4542273392544387,0.4000000059604645,199.84741507177122,0.0,101810.59628688278 +2016-01-12 10:00:00,0.0,0.001504263177704865,268.3855537758733,3.087246951008435,1.1918510496933328,201.99706365982598,0.0,101806.74581226113 +2016-01-12 11:00:00,0.0,0.0016081489274413715,268.0430803331858,2.7318226902066827,1.9918510616142617,202.3424197308748,0.0,101794.67758652192 +2016-01-12 12:00:00,0.0,0.0017448205138314917,267.8395147965836,2.387246940577622,2.727266852190696,199.86233592711633,0.0,101805.7389774948 +2016-01-12 13:00:00,0.0,0.0016464362221711585,268.42550355532876,2.0542273183928126,3.7000000551342964,197.3502624966285,106.12838479446953,101649.31187040664 +2016-01-12 14:00:00,0.0,0.0015413594246371936,272.4209890551555,1.6995227200596024,4.6000000685453415,204.75485528404715,238.01583808001837,101641.82172360845 +2016-01-12 15:00:00,0.0,0.0019216546883288575,273.8305178819442,1.3872774808089519,5.600000083446503,241.67236400401254,337.92982031061234,101534.62561963909 +2016-01-12 16:00:00,0.0,0.002209864311047976,275.41296075326153,1.1412293963780704,6.100000090897083,244.04544330858218,418.69837826340967,101341.6975756264 +2016-01-12 17:00:00,0.0,0.0026004772395716766,276.16082133387107,0.9000000134110451,6.70000009983778,244.2654303448382,444.50052500118096,101163.67260426964 +2016-01-12 18:00:00,0.0,0.0031708771083959328,276.8772172755716,0.7000000104308128,7.200000107288361,290.4656521057084,241.6082316871597,101051.45062164773 +2016-01-12 19:00:00,0.0,0.0031238466355600204,278.3715429569292,1.208148986069454,7.500000111758709,292.8871504466107,193.22344691722327,100877.76771822374 +2016-01-12 20:00:00,0.0,0.003726478957235028,278.45893265396614,1.7448205839092188,7.808149084417117,293.65116394585493,131.01977107526864,100659.15530755221 +2016-01-12 21:00:00,0.00012662358401809503,0.004334782487368676,277.67914519946544,2.2813548637701455,8.139498062824634,307.44279170262934,33.91307661524198,100538.00344634989 +2016-01-12 22:00:00,9.598360795255655e-05,0.004114709574034979,279.57604642898116,3.6070569777418493,7.472733299801147,314.8072133937882,0.0,100384.13478656011 +2016-01-12 23:00:00,0.000230038180964664,0.004680421268369364,277.70065666184587,4.944343326320563,6.799522796055524,308.3354745835905,0.0,100362.8996277759 +2016-01-13 00:00:00,0.00018613884278832358,0.004089956092573084,277.67474663515463,6.272255976647384,6.1368358580602305,298.7467175471895,0.0,100303.83199783566 +2016-01-13 01:00:00,0.0,0.003674855156946332,276.405373108814,6.95660825916797,4.000000059604645,294.3373986139273,0.0,100308.89559167577 +2016-01-13 02:00:00,0.0,0.0035261377970724236,275.93040417427824,7.647201539585535,1.8666079167401461,294.97097531621347,0.0,100219.20609359193 +2016-01-13 03:00:00,0.0,0.003391487927593044,274.70912918761496,8.352461790040081,-0.29859496173290906,253.56975639506828,0.0,100165.37479303735 +2016-01-13 04:00:00,0.0,0.0034233739547333926,274.66598176576906,9.004551340121042,-0.9000000134110451,258.35581407408097,0.0,100125.16681039835 +2016-01-13 05:00:00,5.56881411812788e-05,0.003362833807897514,273.416935194937,9.661899094557327,-1.5448205809289863,258.1626294575033,0.0,100127.56163320613 +2016-01-13 06:00:00,0.0,0.0026971551172996384,273.31757070019995,10.343415669321764,-2.1985949900451156,234.05430557149643,0.0,100190.12714662714 +2016-01-13 07:00:00,0.0,0.0021164181041694813,272.01729531227744,10.9804050148709,-2.339975281670272,228.4303795264677,0.0,100312.42559359451 +2016-01-13 08:00:00,0.0,0.001675332512723783,270.7196421973773,11.63206763624555,-2.452969562528092,223.37704895356907,0.0,100389.32856328343 +2016-01-13 09:00:00,0.0,0.0016321354980958667,270.09511312334246,12.280718032889459,-2.6067439641936403,223.561311206505,0.0,100459.07413243533 +2016-01-13 10:00:00,0.0,0.0015057680623037412,269.9085686659735,12.630080512998905,-2.607641146526217,223.31494006788418,0.0,100592.51800909152 +2016-01-13 11:00:00,0.0,0.0015338693775909372,269.7266167970764,12.96189914373116,-2.639467425735757,224.65932083444318,0.0,100731.20857191211 +2016-01-13 12:00:00,0.0,0.0015708771488153325,269.71342415656625,13.304551404196035,-2.6443432920478918,209.6233082198963,0.0,100845.13035790794 +2016-01-13 13:00:00,0.0,0.0015134518779418348,269.9185119296847,13.180405047653457,-3.044820603280728,210.55853473686415,98.40233013702782,100866.05762078505 +2016-01-13 14:00:00,0.0,0.0015317919468563388,270.5463534235191,13.056608350065053,-3.472733240196504,213.3145581328552,219.78469122321525,101006.77355002981 +2016-01-13 15:00:00,0.0,0.0014113941179974396,270.9366212689695,12.939498134350208,-3.8985950153770896,237.88742875453516,294.9587794892907,101047.58033122859 +2016-01-13 16:00:00,0.0,0.0014007807068154709,270.9069280898398,12.395739611556834,-3.844820615201657,238.28242592404064,365.4793556743816,101038.3099186966 +2016-01-13 17:00:00,0.0,0.001438496622241151,271.1599579317462,11.881355006821293,-3.8076717195401013,240.94794556649825,388.16993616523655,101100.37970064746 +2016-01-13 18:00:00,0.0,0.001446649219337769,271.84206189938834,11.339975415780723,-3.7448206137115414,217.50641502260797,425.9210627739362,101128.24565532822 +2016-01-13 19:00:00,0.0,0.001398232033148412,271.7794021827315,10.572733345994747,-3.5985950109067413,215.87505120547866,341.1747412480711,101079.7709058228 +2016-01-13 20:00:00,0.0,0.0014027678448834669,271.84897326521246,9.77410318967337,-3.373205911973362,215.32199138657506,232.47584424647036,101044.56387593626 +2016-01-13 21:00:00,0.0,0.0013027678474096796,271.2221391057165,8.999522828838078,-3.15422733478409,209.87957324720125,63.26045834857544,101103.50300231615 +2016-01-13 22:00:00,0.0,0.0013286342475963184,270.92791981958385,8.94938211003118,-2.700000040233135,210.00193343856043,0.0,101181.9164427502 +2016-01-13 23:00:00,0.0,0.0013979225338984268,270.6520687292311,8.907671795536023,-2.27273322231511,210.50962028800157,0.0,101269.90587230463 +2016-01-14 00:00:00,0.0,0.0013745618516982294,270.0186880106701,8.83997537852782,-1.8000000268220901,234.23319925542344,0.0,101375.1748430898 +2016-01-14 01:00:00,0.0,0.0013300392902773264,269.27929914571087,8.190105200036195,-1.700000025331974,231.94961651412464,0.0,101355.19061425605 +2016-01-14 02:00:00,0.0,0.0014490178611979115,268.93959473899315,7.539975359156309,-1.6028581968736957,233.41605309565213,0.0,101373.66543077282 +2016-01-14 03:00:00,0.0,0.0014759948044326834,268.93189125478165,6.887277562765339,-1.5081489905398024,240.28248448238563,0.0,101360.24831360672 +2016-01-14 04:00:00,0.0,0.0014985250031587219,268.89390302504347,6.753750083155899,-1.0000000149011612,239.8354485398406,0.0,101394.14097729791 +2016-01-14 05:00:00,0.0,0.0014129670541895335,269.0266410139025,6.59539597135056,-0.4995227021782091,238.09024346725317,0.0,101359.16977651068 +2016-01-14 06:00:00,0.0,0.0013657225864700713,269.0016705965178,6.444343348672305,0.027266811957560633,241.29330181433343,0.0,101330.94994296085 +2016-01-14 07:00:00,0.0,0.001311127329435454,269.13599896606854,6.756608256187736,0.30000000447034836,239.7250180221285,0.0,101316.33505986245 +2016-01-14 08:00:00,0.0,0.0013172084282668595,268.46860061300254,7.07511416160015,0.5918510407526361,236.5938562283335,0.0,101285.00826861162 +2016-01-14 09:00:00,0.0,0.0012159506690184029,267.8221128591686,7.380404961226722,0.8915380465759366,223.32031514050462,0.0,101251.3325546075 +2016-01-14 10:00:00,0.0,0.0012253573986538433,268.2075540280548,7.744312812911322,1.2136502953991353,224.58215523461917,0.0,101221.11444820499 +2016-01-14 11:00:00,0.0,0.0012670970765460284,268.69486060652525,8.126325090579265,1.600000023841858,226.58823501723828,0.0,101210.62844970787 +2016-01-14 12:00:00,0.0,0.0014145652895489603,268.90397512444173,8.480717976265046,2.0000000298023224,272.04969990938406,0.0,101215.17471254824 +2016-01-14 13:00:00,0.0,0.0018496696004936094,269.22692978827286,8.704551335650693,1.700000025331974,277.5387615859345,27.553719837967563,101284.4391122541 +2016-01-14 14:00:00,0.0,0.0021136484213049394,270.0600717359093,8.904551338630926,1.4000000208616257,282.21403857361696,61.238760267700066,101170.81812195489 +2016-01-14 15:00:00,0.0,0.0020955866984186753,270.90050715243814,9.117695202784002,1.1014050591287168,270.83154585155626,207.43988456363925,101209.99927379869 +2016-01-14 16:00:00,0.0,0.0020117071014746414,271.7627684910398,8.618172500605793,0.3918510377724038,272.8456971902759,257.0154983410058,101163.87641438567 +2016-01-14 17:00:00,0.0,0.0020479563571253693,272.64368999823125,8.118172493155212,-0.4000000059604645,276.19350124031996,273.09749377379194,101147.87102629313 +2016-01-14 18:00:00,0.0,0.0020582602690573525,273.08494874925196,7.607954219679071,-1.1106169273841475,263.93206043868844,330.14729210865755,101093.59654550336 +2016-01-14 19:00:00,0.0,0.0021664128636277587,273.51940371679586,7.939498059844402,-0.6000000089406967,264.15359739617884,264.8704359365269,101011.34343014043 +2016-01-14 20:00:00,0.0,0.0021573630842345974,273.2168876676192,8.275591484753914,0.0,260.52221386756815,181.32407798394473,101136.32890554726 +2016-01-14 21:00:00,0.0,0.002228629592855195,273.05441578650255,8.59570899979993,0.6000000089406967,274.5196362449177,49.22159398723001,101162.01252699373 +2016-01-14 22:00:00,0.0,0.0023664128585753337,272.682943745645,8.295708995329582,0.4000000059604645,272.88427138689764,0.0,101269.18003374767 +2016-01-14 23:00:00,0.0,0.002467666988587943,272.4152697350545,7.9957089908592325,0.30000000447034836,271.30234636280625,0.0,101432.28662252618 +2016-01-15 00:00:00,0.0,0.0023444574800192564,273.39981576711756,7.707984776301678,0.10000000149011612,293.57177980861724,0.0,101426.73195649995 +2016-01-15 01:00:00,0.0,0.0023117070938960043,273.19489677609994,7.0537500876262476,0.06817735151656854,291.26008888948706,0.0,101469.9304436538 +2016-01-15 02:00:00,0.0,0.002415490359163037,273.739852184348,6.395395968370328,0.0,293.4642897959716,0.0,101529.3603922372 +2016-01-15 03:00:00,0.0,0.0024212925138757213,273.1852019704382,5.739498027061848,-0.10000000149011612,272.61655142236975,0.0,101500.51821502131 +2016-01-15 04:00:00,0.0,0.0024949384314555895,273.4261244163289,4.331822714048541,-0.1736303733552485,274.2082514143164,0.0,101464.03382587439 +2016-01-15 05:00:00,0.0,0.0024670970462314784,273.4924400078634,2.908149011401428,-0.20000000298023224,274.2134556218725,0.0,101462.66939278836 +2016-01-15 06:00:00,0.0,0.0024978041253979465,273.4414215292405,1.5000000223517418,-0.27410304811233904,276.78600092676066,0.0,101417.01308960994 +2016-01-15 07:00:00,0.0,0.0026054804174845143,273.32289981474173,0.6995227051584414,0.10000000149011612,275.4368040572655,0.0,101421.36837335603 +2016-01-15 08:00:00,0.0,0.0025743182741382303,272.4485192414436,-0.19185103479217155,0.4891882346998957,270.2112062620856,0.0,101398.1381145607 +2016-01-15 09:00:00,0.0,0.0025248800605598793,272.4426497718467,-1.0000000149011612,0.800000011920929,273.61388647520107,0.0,101394.33457962968 +2016-01-15 10:00:00,0.0,0.00269482950731438,272.84282183341065,-1.329790366331234,0.9000000134110451,275.29631835961845,0.0,101405.19061425605 +2016-01-15 11:00:00,0.0,0.0027481120305867315,272.73794006440875,-1.700000025331974,1.0000000149011612,274.06375206390146,0.0,101383.82399251891 +2016-01-15 12:00:00,0.0,0.0028850744372879286,273.3063323149237,-2.0659846618788595,1.1951547067017496,298.7523869270634,0.0,101444.03839463457 +2016-01-15 13:00:00,0.0,0.0031644135854392713,273.9489922129702,-2.568812287228787,1.3000000193715093,296.3135352347318,90.58375840624544,101460.75673579794 +2016-01-15 14:00:00,0.0,0.0037925029712046806,276.24377462682446,-3.034684496944861,1.4000000208616257,303.48176993218885,200.4223882235699,101428.2484448157 +2016-01-15 15:00:00,0.0,0.004399054954712,279.40888105660287,-3.5318227021276116,1.4741030659937324,264.37194522634115,370.17906467474484,101333.47847846313 +2016-01-15 16:00:00,0.0,0.004874603143099526,279.8125726999822,-2.908149011401428,2.1000000312924385,263.5000862663831,458.6379431105926,101331.02472997307 +2016-01-15 17:00:00,0.0,0.004952969400853464,279.82551485391673,-2.3000000342726707,2.700000040233135,259.43336720598904,487.5567129126294,101233.24456853209 +2016-01-15 18:00:00,0.0,0.005230535250010737,280.54816256109393,-1.700000025331974,3.300000049173832,258.00998482926576,435.6479289098348,101144.54215760781 +2016-01-15 19:00:00,0.0,0.005404483396599742,280.75607379002605,-2.0000000298023224,2.700000040233135,262.21064683381394,350.28688878801074,100978.61175172165 +2016-01-15 20:00:00,0.0,0.005386349586615024,280.2339328812847,-2.391851067574726,2.199522727510183,263.3052552357458,240.80199707540976,101045.24920030513 +2016-01-15 21:00:00,0.0,0.005270686825600693,279.43758963144404,-2.691851072045074,1.600000023841858,261.419152596952,65.65479707019345,100973.33556701976 +2016-01-15 22:00:00,0.0,0.005183491418750404,278.5515759196319,-2.4014050785002263,1.8081489950101508,260.8135444455529,0.0,100807.39645465254 +2016-01-15 23:00:00,0.0,0.004870982737865098,278.25799576501686,-2.191851064594494,2.1000000312924385,262.21012656898796,0.0,100863.10136083438 +2016-01-16 00:00:00,0.0,0.004852969403379676,278.3591705645063,-1.9014050710496455,2.3081490024607314,290.04869308466346,0.0,100817.09448779086 +2016-01-16 01:00:00,0.0,0.004869278293640044,277.80776176417896,-1.6457727367414838,2.700000040233135,286.7197263520651,0.0,100768.2242921209 +2016-01-16 02:00:00,0.0,0.004466886481542225,277.5057090802945,-1.3191178631410094,3.1000000461935997,282.8751589343525,0.0,100644.8805851915 +2016-01-16 03:00:00,0.0,0.004678358633216894,277.52295185061126,-1.0376237596127265,3.500000052154064,317.4162255527524,0.0,100516.29578286644 +2016-01-16 04:00:00,0.0,0.004649378359837238,277.5455384992725,-2.1000000312924385,1.3000000193715093,315.55820270475806,0.0,100340.96403132011 +2016-01-16 05:00:00,0.0,0.004687257502467869,277.3946183619238,-3.1994921872788535,-0.8542273005114193,313.4026806415205,0.0,100211.85664859731 +2016-01-16 06:00:00,0.0,0.004728209652656541,277.31049828385335,-4.231822712558425,-3.044820603280728,337.35779587539565,0.0,100012.6529634495 +2016-01-16 07:00:00,0.0,0.004551499084015434,276.8255206023485,-4.9076717359313795,-3.8399753040220133,332.8476798386886,0.0,99754.93218597572 +2016-01-16 08:00:00,5.555555638339784e-05,0.004461836126414286,276.8721585534558,-5.574103127088493,-4.607671731461031,331.3402039579292,0.0,99535.14153230908 +2016-01-16 09:00:00,0.0008564120798590207,0.004638973846655553,276.71310478388386,-6.208462059222308,-5.399522775193899,329.1974212950147,0.0,99347.31404615482 +2016-01-16 10:00:00,0.0022741026967882643,0.004637096130726554,276.7947810243275,-3.5606630705479905,-5.508149050144446,329.14810470147006,0.0,99222.57261768276 +2016-01-16 11:00:00,0.002801469143201495,0.0047426171055730635,276.8201220327237,-0.8633284230218612,-5.608149051634563,329.422641972082,0.0,99059.7784400525 +2016-01-16 12:00:00,0.0007957763640565786,0.004772387783072318,276.806903806694,1.8236737086075772,-5.789665618948422,327.3941054570428,0.0,99117.11491690569 +2016-01-16 13:00:00,0.0003359598781118795,0.0050515332938036,277.5314825473784,2.8674424360995836,-5.40000008046627,332.39012484251043,26.97338881652793,99214.97945330171 +2016-01-16 14:00:00,0.0007070319009830729,0.004913916944273288,277.878591669263,3.9026633693885513,-5.002858247537644,333.53957411924364,59.36133750430012,99248.07238139321 +2016-01-16 15:00:00,8.22539589032124e-05,0.005195931514788886,278.51965569135746,4.953750056333809,-4.687002161431761,335.08584932830416,95.56695790611364,99487.96289826001 +2016-01-16 16:00:00,0.00013458534170710432,0.004670373842123492,277.44994287830576,5.081354905493396,-3.8000000566244125,326.7395443309298,118.36395662023543,99548.85319948054 +2016-01-16 17:00:00,0.0,0.005117065034833109,278.4222555908238,5.231345422187214,-2.908149011401428,332.6310141076123,125.87474822539538,99552.15792340858 +2016-01-16 18:00:00,0.0,0.0052371633322966064,279.5815766199903,5.37273326850871,-2.0741030749344294,323.418097723539,236.2167074527694,99663.09773912182 +2016-01-16 19:00:00,0.0,0.005385255845798101,280.4858765969856,5.053750057823923,-1.208461984716502,326.2094074273358,190.28076906178515,99765.02148674468 +2016-01-16 20:00:00,0.0,0.005210356800974986,280.46465096868974,4.739498012160687,-0.4000000059604645,323.1236471823665,131.39140038388942,99892.15024909425 +2016-01-16 21:00:00,0.0,0.005000720284897483,279.52996981954374,4.4394980076903385,0.4000000059604645,288.88936819020574,52.71027071778368,99986.15929222915 +2016-01-16 22:00:00,0.0,0.005655795578982883,279.5969422376121,4.390105143411782,0.2918510362822877,294.16420107239867,0.0,100179.37298976659 +2016-01-16 23:00:00,0.0,0.0057504705971458325,279.6394469740283,4.339975311472593,0.10000000149011612,297.14047590968454,0.0,100208.76270917471 +2016-01-17 00:00:00,0.0,0.0054999998610583125,279.8906385727032,4.299522758802622,-0.09859495875267682,335.71385770187345,0.0,100257.09459456186 +2016-01-17 01:00:00,0.0,0.005663913991712391,280.196732007657,4.773205932834988,-0.5000000074505806,338.44191512119744,0.0,100344.58758075941 +2016-01-17 02:00:00,0.0,0.005617561878561926,280.0791232875574,5.254227366076528,-0.9000000134110451,338.40516041588427,0.0,100482.46502958717 +2016-01-17 03:00:00,0.0,0.005364078305909753,279.4040280029571,5.744343338241492,-1.302858192403347,313.1603741704769,0.0,100493.82539253082 +2016-01-17 04:00:00,0.0,0.00483463152654331,278.92166654718847,5.972733277449406,-1.6994921649271115,311.7193905594681,0.0,100527.03175791392 +2016-01-17 05:00:00,0.0,0.0039021977095203345,278.7591348766175,6.187246997202034,-2.044820588379567,309.6132460476516,0.0,100518.54202124798 +2016-01-17 06:00:00,0.0,0.0036625234442360056,278.2218111751182,6.399522790095061,-2.400000035762787,290.042595506949,0.0,100633.50667732868 +2016-01-17 07:00:00,0.0,0.0037531446246540107,277.37120430546474,5.699522779664247,-2.6081490069310793,290.10276326493147,0.0,100702.96601470464 +2016-01-17 08:00:00,0.0,0.0035446436972712313,276.2685332733554,4.974133673280288,-2.808149009911312,287.42068658476813,0.0,100725.33547440608 +2016-01-17 09:00:00,0.0,0.003154374489006296,275.6846037708293,4.268785123270366,-3.044820603280728,276.16990838772034,0.0,100835.86133016703 +2016-01-17 10:00:00,0.0,0.0028543744965849336,274.74069053631825,3.0000000447034836,-3.2399752950813165,273.1790666677975,0.0,100851.03264168401 +2016-01-17 11:00:00,0.0,0.002649529190652318,274.2395467304123,1.7493820027428204,-3.444820609241193,272.47218048411696,0.0,100910.53538244226 +2016-01-17 12:00:00,0.0,0.002654374501637358,273.6305438099536,0.5000000074505806,-3.6318227036177277,279.9418334617368,0.0,100963.25049573193 +2016-01-17 13:00:00,0.0,0.0025841572117441926,273.65366723436983,0.20000000298023224,-3.7076717180499856,277.5180894602415,94.30865085898338,100947.36552425398 +2016-01-17 14:00:00,0.0,0.002425221140793252,274.3221485818737,0.0,-3.7985950138869735,277.346216787073,206.37679858249123,101081.27667663895 +2016-01-17 15:00:00,0.0,0.002590593204683035,274.8339104349644,-0.2990722670052805,-3.844820615201657,265.54786168495195,325.7915426782864,101107.84852529438 +2016-01-17 16:00:00,0.0,0.0026182886373438607,275.16076842841306,-1.0081489830892219,-4.444820624142354,266.29519412502697,403.4653485601572,100980.48299309387 +2016-01-17 17:00:00,0.0,0.0026999999317922625,275.0516460951869,-1.799522721549719,-5.008149042693867,265.24228910445186,429.26672312161315,100900.7314891737 +2016-01-17 18:00:00,0.0,0.0027052907267359903,274.98019835979017,-2.5028582102847405,-5.600000083446503,278.98904007502927,364.5599086807637,100858.20121904396 +2016-01-17 19:00:00,0.0,0.0028129978373477083,274.9210606804507,-3.172733235726155,-4.200000062584877,280.550285549333,294.19643748450466,100729.55849289372 +2016-01-17 20:00:00,5.555555638339784e-05,0.002936478735339081,274.8711720326941,-3.8023809243838786,-2.7081490084211954,281.97118026367036,203.99114255890615,100671.32440716549 +2016-01-17 21:00:00,0.0,0.003118765929966,273.65658348289,-4.40814903375317,-1.3000000193715093,290.0748323454008,70.03786960388223,100510.50991338117 +2016-01-17 22:00:00,0.0,0.0033441550198470126,272.52203010993424,-3.8542273452149023,-2.008148997990383,286.40923137705266,0.0,100551.48142642027 +2016-01-17 23:00:00,2.777777819169892e-05,0.003276480899447924,271.84916952301495,-3.307671712089521,-2.7081490084211954,282.88549612915955,0.0,100545.08825980639 +2016-01-18 00:00:00,2.777777819169892e-05,0.0033991027318122325,271.9632336844336,-2.7448205988103798,-3.444820609241193,292.739844307751,0.0,100515.7219967243 +2016-01-18 01:00:00,2.777777819169892e-05,0.0032501112708820316,271.8618733264496,-1.6081489920299186,-3.544820610731309,292.0142155488724,0.0,100421.8281252294 +2016-01-18 02:00:00,0.0,0.0032501112708820316,271.97129943113373,-0.5000000074505806,-3.707641162917495,293.1360727248564,0.0,100334.52056004682 +2016-01-18 03:00:00,2.4921731460468735e-07,0.0033134433086753337,271.8545643898803,0.6000000089406967,-3.8076717195401013,291.68481746084694,0.0,100323.73636367547 +2016-01-18 04:00:00,0.0,0.003205290714104928,271.66837370166473,1.5000000223517418,-3.307671712089521,291.90941035430114,0.0,100330.05927783542 +2016-01-18 05:00:00,0.0,0.0030637812211679488,271.96241745738706,2.3448205928499153,-2.7953959147261473,294.1785259104789,0.0,100294.87508799261 +2016-01-18 06:00:00,0.0,0.003118765929966,272.3613254192571,3.2318226976572633,-2.2808821905031706,291.0096719660236,0.0,100211.28881413385 +2016-01-18 07:00:00,0.0,0.003099999921687413,272.5996024675097,4.407984727127847,-1.554227310942232,291.4554832118453,0.0,100194.80124653655 +2016-01-18 08:00:00,0.0,0.002944155029951862,272.19313724156257,5.606744008897123,-0.8084619787560374,288.56914819908883,0.0,100258.66227737445 +2016-01-18 09:00:00,0.0,0.0029163014916972273,272.44804803156273,6.781195256205444,-0.10767166440580535,282.7238973383116,0.0,100236.84729080078 +2016-01-18 10:00:00,0.0,0.003017360889811204,272.42888818410415,7.956608274069129,-0.5084619742856891,285.2039448349154,0.0,100290.64181220494 +2016-01-18 11:00:00,0.0,0.002910199551588247,272.13616989798345,9.147201561937278,-0.9542273020015352,285.16088161208876,0.0,100267.61796243739 +2016-01-18 12:00:00,0.0,0.002303245127400756,270.04874620146404,10.338570358142121,-1.3985949781241862,231.2340102162833,0.0,100372.36273353011 +2016-01-18 13:00:00,0.0,0.001925776059521999,268.7120389686166,10.581354987449783,-2.244820591359799,227.73295256753116,96.32627282909661,100457.8430240682 +2016-01-18 14:00:00,0.0,0.0017286647926227322,268.91781956008316,10.85375014425066,-3.1081490143816604,231.7376792381468,209.4786538182541,100527.75550823477 +2016-01-18 15:00:00,0.0,0.0015692710517020772,269.50256501128706,11.131345510104063,-3.9702097126449196,210.30868685291236,334.19463249723253,100494.88873842836 +2016-01-18 16:00:00,0.0,0.0015573630993918719,269.5572614686883,11.081354994900364,-4.298595021337554,213.03878451040768,413.81587390783005,100527.65691781498 +2016-01-18 17:00:00,0.0,0.0015209579479311124,270.51953509664406,11.08088232163339,-4.5995227632729705,218.73283345482335,440.3387405042158,100527.33590440283 +2016-01-18 18:00:00,0.0,0.0014582602842146276,270.66103586377335,11.044820722490016,-4.899522767743319,222.32774965112563,417.07371067798937,100542.12686320067 +2016-01-18 19:00:00,0.0,0.001205939021487413,270.82235629693815,11.207641274676202,-4.3994922051602465,219.99977162441857,337.09571335393906,100515.28975222122 +2016-01-18 20:00:00,0.0,0.0011821151370555749,270.0885447295926,11.381354999370712,-3.8994921977096664,217.85329983066364,234.77946273355093,100597.58331086863 +2016-01-18 21:00:00,0.0,0.0013476433761743798,269.5466625051821,11.554227459953843,-3.3863497731462067,224.63554466611345,66.86191088400746,100621.07068317752 +2016-01-18 22:00:00,0.0,0.001274561854224442,269.2794494192963,11.775591536907978,-3.400000050663948,223.28288137715637,0.0,100778.78908125042 +2016-01-18 23:00:00,0.0,0.0012298749861848143,268.72115742395795,11.976064213155185,-3.4084620174990565,221.57604832661352,0.0,100791.99354566305 +2016-01-19 00:00:00,0.0,0.0012064163267406143,268.5324189341407,12.182252193624217,-3.498595009416625,204.85151912460563,0.0,100848.30136935155 +2016-01-19 01:00:00,0.0,0.0011057680724085913,268.51272531749476,12.00798484037667,-3.472733240196504,203.7317531466549,0.0,100966.00632079263 +2016-01-19 02:00:00,0.0,0.001145082812851494,267.86885703418056,11.83949811795893,-3.444820609241193,203.2060890437877,0.0,100977.90109057681 +2016-01-19 03:00:00,0.0,0.0011398448141124152,267.5837081645678,11.66189912435965,-3.444820609241193,220.43597973159657,0.0,100969.47333730002 +2016-01-19 04:00:00,0.0,0.0011722516464699269,267.0366293364231,11.83949811795893,-4.2448206211621216,219.40054264989953,0.0,100911.63564039656 +2016-01-19 05:00:00,0.0,0.0011717789732219367,266.84179058153546,12.031314968382619,-5.0448206330830505,219.10452752647262,0.0,100957.71092719337 +2016-01-19 06:00:00,0.0,0.0013098643337838883,266.39054312557954,12.181668009938688,-5.87273327595929,210.21084964941164,0.0,100990.61674624123 +2016-01-19 07:00:00,0.0,0.0013311889835841177,266.3742574912019,12.239498123919395,-5.402380948225736,210.04601234564512,0.0,100995.99054896616 +2016-01-19 08:00:00,0.0,0.0013127225067009324,265.89676239951876,12.28040503424241,-4.931822722989238,207.6753354375423,0.0,100992.29752894797 +2016-01-19 09:00:00,0.0,0.0013175678176859725,265.8472482811681,12.319100293205157,-4.4732059283646395,213.15402006917247,0.0,100992.47279952695 +2016-01-19 10:00:00,0.0,0.001300477272412439,265.8943616050822,12.353750166602403,-4.4892079625693215,213.6575826288554,0.0,101119.87474330582 +2016-01-19 11:00:00,0.0,0.001300477272412439,265.86869869687376,12.375114240576305,-4.507641174838423,214.4155389837341,0.0,101072.57340664606 +2016-01-19 12:00:00,0.0,0.0012999999671592375,265.6442699329885,12.382565195251498,-4.507671729970915,196.19765690525867,0.0,101142.4100008561 +2016-01-19 13:00:00,0.0,0.001231639418284936,266.2551732591688,12.54890485840299,-4.506743992505847,197.36637108148193,113.53999161401381,101099.03635158086 +2016-01-19 14:00:00,0.0,0.001227884063071349,267.2746625860904,12.682252201074798,-4.4732059283646395,200.07274115648318,245.30972955499072,101032.6055338588 +2016-01-19 15:00:00,0.0,0.001225866369872089,268.30682295026986,12.83134553543604,-4.444820624142354,201.4319027395018,382.8145971510657,101010.67812338931 +2016-01-19 16:00:00,0.0,0.0012410367043927816,269.0871981433284,12.49573961304695,-5.308149047164214,202.68720889567135,473.91510236482094,100935.49803246802 +2016-01-19 17:00:00,0.0,0.001411229811378715,269.98884557371855,12.176961398467995,-6.207641200170397,206.13014473552147,504.47494335192016,100886.43251437243 +2016-01-19 18:00:00,0.0,0.001305290762102965,270.3917962058292,11.872733365366257,-7.099492245393382,214.89075915466427,420.01907785509644,100845.66089993152 +2016-01-19 19:00:00,0.0,0.0013792488276964032,271.0485340030205,11.431345514574412,-6.908462069653121,218.1997120264317,340.20299379779163,100863.03274413846 +2016-01-19 20:00:00,0.0,0.0013452488111881846,270.61334929840905,10.995396036915668,-6.75422738842827,216.28301347605793,237.92147126060235,100898.18408418038 +2016-01-19 21:00:00,0.0,0.001411229811378715,270.11312400391955,10.539975403859792,-6.6076717612633535,221.98338774919182,72.83004646799898,100938.4220225345 +2016-01-19 22:00:00,0.0,0.0015112298088525028,269.3807654991968,10.962376419201206,-6.372733283409871,219.55490628922038,0.0,101088.81948369683 +2016-01-19 23:00:00,0.0,0.0015321049454908157,269.6680976194235,11.381354999370712,-6.108149059085144,219.89623273557393,0.0,101093.31548488446 +2016-01-20 00:00:00,0.0,0.001597922528846002,269.86457799986556,11.781355005331177,-5.873205949226264,226.0832935092096,0.0,101176.1727121735 +2016-01-20 01:00:00,0.0,0.0015698649492178326,269.7388525060425,11.280405019341249,-6.039975336804567,224.52176038287226,0.0,101217.96612242394 +2016-01-20 02:00:00,0.0,0.0016693876414384187,269.74523534528913,10.780405011890668,-6.206744017837821,224.33484919636192,0.0,101201.52570828437 +2016-01-20 03:00:00,0.0,0.001889080053749334,270.2166010711526,10.247201578328553,-6.34482065245456,229.8726270832515,0.0,101348.3874437629 +2016-01-20 04:00:00,0.0,0.001812753049201134,269.91885093551565,9.647201569387859,-6.73949804196301,228.6491520750723,0.0,101391.94802132521 +2016-01-20 05:00:00,0.0,0.001901404994682971,270.30308975324624,9.044343387415324,-7.107984767360982,231.1448530805377,0.0,101420.58302399046 +2016-01-20 06:00:00,0.0,0.002002767829726192,270.1499490339026,8.439498067294982,-7.507641219541907,209.6435355491016,0.0,101425.58721326177 +2016-01-20 07:00:00,0.0,0.0019745618365409547,269.89566514772525,8.080882276929906,-7.207984768851098,209.407982953598,0.0,101476.3606720271 +2016-01-20 08:00:00,0.0,0.0018330326753399847,269.4680976164433,7.707984776301678,-6.9399753502156125,207.8923557932844,0.0,101561.32583129607 +2016-01-20 09:00:00,0.0,0.0018582602741097777,269.34989149941947,7.3493820861893235,-6.67273328788022,196.01952306761964,0.0,101664.44487964705 +2016-01-20 10:00:00,0.0,0.001815490374320312,268.9642904992634,7.131822755771792,-7.007984765870866,195.14527356256963,0.0,101757.35008094215 +2016-01-20 11:00:00,0.0,0.001603080838465519,268.5738809639217,6.908462069653121,-7.372733298311033,192.81804387606562,0.0,101820.1485751623 +2016-01-20 12:00:00,0.0,0.001602767839831042,268.06445176118217,6.7081490680258415,-7.702380982498408,192.44604672963027,0.0,101900.97819796829 +2016-01-20 13:00:00,0.0,0.0016447851956786982,268.8510960306413,6.749382077248627,-7.14482066437549,192.7527269417857,121.48620335978687,101985.40983280078 +2016-01-20 14:00:00,0.0,0.0017479563647040065,270.0894721475759,6.774103144969888,-6.5985950556102235,194.62795686876836,260.7622202504324,101971.45233107019 +2016-01-20 15:00:00,0.0,0.0017127224965960827,271.2551577918142,6.787277561275223,-6.008149057595028,200.55389629611318,405.28977205188744,101924.17630659355 +2016-01-20 16:00:00,0.0,0.0019027678322524044,272.6329826647168,6.500000096857548,-5.600000083446503,204.42008923911777,501.39668280759264,101909.02655235871 +2016-01-20 17:00:00,0.0,0.0019479258045203179,273.432055630953,6.200000092387199,-5.198595034748598,205.31522392479346,533.9269500986533,101848.96354324585 +2016-01-20 18:00:00,0.0,0.0019515949890900935,274.005880251819,5.902858260948689,-4.700000070035458,219.26437658476175,465.44594311233715,101775.19129136472 +2016-01-20 19:00:00,0.0,0.0019394638380250697,274.8595221785858,5.900000087916851,-4.300000064074993,220.92892142928812,377.58493786668095,101768.77269398195 +2016-01-20 20:00:00,0.0,0.0018974770373086773,274.9576714486667,5.900000087916851,-3.8000000566244125,219.68442282955624,265.21990450216697,101670.48910412028 +2016-01-20 21:00:00,0.0,0.0018035581386662953,274.1321455815018,5.899492227511988,-3.39907231319888,230.34113262973403,71.86158234526262,101652.86419892055 +2016-01-20 22:00:00,0.0,0.001729874973553752,273.4411153983109,5.499492221551524,-3.300000049173832,227.76009359400325,0.0,101648.60164711924 +2016-01-20 23:00:00,0.0,0.0017451164159910464,272.961444035817,5.09952277072355,-3.300000049173832,226.73124996520795,0.0,101696.18050827862 +2016-01-21 00:00:00,0.0,0.0016582602791622026,272.75924260231204,4.687277529982785,-3.200000047683716,256.2818016808007,0.0,101715.70515637452 +2016-01-21 01:00:00,0.0,0.001625221161002952,271.8526377705391,3.9995227543322733,-3.3448206077510765,252.67117342110592,0.0,101750.16623715576 +2016-01-21 02:00:00,0.0,0.0015587375869416163,270.6420760494397,3.300000049173832,-3.4995227468816927,248.04607351811364,0.0,101729.04405624385 +2016-01-21 03:00:00,0.0,0.0015582602816884151,270.47035009267364,2.6000000387430187,-3.6000000536441803,250.8591557444644,0.0,101744.89763893624 +2016-01-21 04:00:00,0.0,0.001552969486744688,269.76807609289654,2.700000040233135,-4.09952275582239,249.11868430899597,0.0,101704.26108890134 +2016-01-21 05:00:00,0.0,0.0015596653243694233,269.9502539602392,2.8000000417232513,-4.5995227632729705,251.40435556214234,0.0,101649.59637923779 +2016-01-21 06:00:00,0.0,0.0016111273218568163,269.4060194045187,2.9000000432133675,-5.09952277072355,238.54590217123996,0.0,101683.35808662743 +2016-01-21 07:00:00,0.0,0.0016167311154350206,269.0239337064247,2.600897221075596,-5.3542273675666445,238.12039100889737,0.0,101636.33505986245 +2016-01-21 08:00:00,0.0,0.0016582602791622026,269.19629356296207,2.400000035762787,-5.608149051634563,239.70024395149466,0.0,101595.23834478257 +2016-01-21 09:00:00,0.0,0.0016529694842184754,268.9838665452105,2.2000000327825546,-5.906744013367472,253.78365143886884,0.0,101584.5229432199 +2016-01-21 10:00:00,0.0,0.0016529694842184754,268.44920101626843,2.800897224055828,-6.181354921884674,253.4637917683821,0.0,101656.25425907879 +2016-01-21 11:00:00,0.0,0.001659634766711947,268.4711434198432,3.500000052154064,-6.473205958166962,255.37818340214147,0.0,101745.34725175024 +2016-01-21 12:00:00,0.0,0.00159932757152701,267.6202707271092,4.1796058596165135,-6.772733289370336,244.82260930494004,0.0,101771.313068432 +2016-01-21 13:00:00,0.0,0.0017291420978759336,268.6588739341377,4.100000061094761,-6.807671764243586,249.5760592052982,97.72425157305648,101778.7016760622 +2016-01-21 14:00:00,0.0,0.0016611184520792467,270.57226617435805,4.000000059604645,-6.8448206599051415,255.13893039628462,208.2818589873462,101775.00117582851 +2016-01-21 15:00:00,0.0,0.0015615957598586604,271.6456675597723,3.9081490263025893,-6.908149071006074,200.22468127356817,407.32542814438074,101736.86657992151 +2016-01-21 16:00:00,0.0,0.0015861971781211414,272.5564394626903,4.608149036733402,-6.508149065045609,202.2029081522364,503.8730334848471,101745.75098844238 +2016-01-21 17:00:00,0.0,0.0015024987456047432,273.3313068388764,5.300000078976153,-6.108149059085144,202.79634873479355,536.6276699074987,101821.36394039211 +2016-01-21 18:00:00,0.0,0.0015876503083571772,273.7911827236693,6.000000089406967,-5.769288374021572,207.48237921318258,482.80948905139354,101726.24566765736 +2016-01-21 19:00:00,0.0,0.0014277382612652607,274.6999443558112,6.3000000938773155,-5.502858254988224,207.8096773468057,392.3599031412697,101667.38363492936 +2016-01-21 20:00:00,0.0,0.0015015710081769365,274.4532015909992,6.573205959657078,-5.302858252007992,206.54614328050334,276.78669463483214,101695.0713493453 +2016-01-21 21:00:00,0.0,0.0015024987456047432,273.7575158538506,6.831822751301444,-5.100000075995921,215.7611116456384,86.67363345738747,101736.24306337087 +2016-01-21 22:00:00,0.0,0.0015102022295068276,273.0868572880441,6.799522796055524,-5.244820636063283,214.28586240827352,0.0,101743.2917825731 +2016-01-21 23:00:00,0.0,0.0015015710081769365,272.24080074650163,6.73997534723538,-5.40814904865433,211.76677515353626,0.0,101827.96812327222 +2016-01-22 00:00:00,0.0,0.0015847921354401333,271.5973325215749,6.699522794565408,-5.544820640533631,232.45190726612844,0.0,101935.13739533542 +2016-01-22 01:00:00,0.0,0.0015111273243830288,270.9300530283884,6.1542273794875735,-5.544820640533631,230.81270627178344,0.0,101955.55193767723 +2016-01-22 02:00:00,0.0,0.0014582602842146276,270.06032835862936,5.60285825647834,-5.606744008897123,228.787908963365,0.0,101990.65923272951 +2016-01-22 03:00:00,0.0,0.0014582602842146276,269.614227489356,5.073205937305335,-5.6076717463621915,208.7054195368951,0.0,102007.72049068441 +2016-01-22 04:00:00,0.0,0.001338973930020565,268.8861760053554,4.873205934325104,-5.90767175083254,207.16249854245677,0.0,101998.50108932385 +2016-01-22 05:00:00,0.0,0.0013195892959307022,268.2003000783301,4.654227357135832,-6.207984753949937,206.57603697912285,0.0,102089.53570389026 +2016-01-22 06:00:00,0.0,0.0012615957674372979,267.799323871778,4.4727332550976655,-6.531345441558724,176.74887426915095,0.0,102186.61869998892 +2016-01-22 07:00:00,0.0,0.0011385012618249995,267.5045617096072,4.299522758802622,-6.544820655434793,176.83874586409775,0.0,102138.32674960236 +2016-01-22 08:00:00,0.0,0.0011668865649072377,267.00914545641456,4.100313059741809,-6.572733286390104,177.74267227697456,0.0,102089.70624629226 +2016-01-22 09:00:00,0.0,0.0011615957699635103,266.44366526211445,3.96399755204326,-6.60238096610713,175.92672591686977,0.0,102153.64721316138 +2016-01-22 10:00:00,0.0,0.0011710133864662237,266.1123348388872,3.863997550553144,-6.144343344201957,175.76824729729594,0.0,102198.41952334749 +2016-01-22 11:00:00,0.0,0.0011587375970464665,265.59833876238656,3.763997549063027,-5.706744010387239,174.57645042349884,0.0,102177.25109351093 +2016-01-22 12:00:00,0.0,0.0011164181294316062,265.18850453925864,3.687277515081623,-5.2524922989789715,174.0165925544447,0.0,102358.24483629236 +2016-01-22 13:00:00,0.0,0.0011336831401292625,266.3351664945379,2.9000000432133675,-5.744343338241492,176.5532058546082,127.09624374810434,102399.60289919245 +2016-01-22 14:00:00,0.0,0.0011706761044879355,268.1729335784597,2.1103344987707517,-6.206744017837821,180.91882703156077,268.8324449199867,102362.94383529131 +2016-01-22 15:00:00,0.0,0.0011733453872868494,268.9130604288537,1.4000000208616257,-6.686349822320039,191.65380161183603,409.54729347681877,102289.02199839926 +2016-01-22 16:00:00,0.0,0.0012611184621840966,269.94633522611497,1.187005738513689,-6.34482065245456,193.3518539885685,506.320515594239,102285.84942621854 +2016-01-22 17:00:00,0.0,0.00123368313760305,271.2734534512497,0.9000000134110451,-6.000000089406967,194.74525652231338,539.4499016404112,102282.56022449445 +2016-01-22 18:00:00,0.0,0.0012534467995765266,272.0935699634445,0.7000000104308128,-5.700000084936619,209.65115319862284,476.4493772317013,102176.17474910528 +2016-01-22 19:00:00,0.0,0.0012543745370043335,272.4858764777763,-0.10000000149011612,-5.600000083446503,209.85474559176947,387.96164147767433,102118.41952334749 +2016-01-22 20:00:00,0.0,0.0012481241833382853,272.29462296975976,-0.9995227096287898,-5.500000081956386,208.4156243806665,274.62825381718625,102016.84537577082 +2016-01-22 21:00:00,0.0,0.0013081489350200088,272.2337831802703,-1.8000000268220901,-5.40000008046627,249.67671265463605,101.45066899996269,102110.02840428997 +2016-01-22 22:00:00,0.0,0.0012543745370043335,271.94095631896596,-2.0000000298023224,-5.000000074505806,248.18686810333827,0.0,102048.51367183047 +2016-01-22 23:00:00,0.0,0.0012628365034995817,272.0714044828247,-2.2236737145680414,-4.6000000685453415,248.62169514268538,0.0,102081.2926441007 +2016-01-23 00:00:00,0.0,0.0012722432331350219,271.8381486205518,-2.4448205943400314,-4.300000064074993,268.42204816137877,0.0,102105.74499295576 +2016-01-23 01:00:00,0.0,0.0013927837785666012,271.4595484522167,-3.2995227439014605,-4.300000064074993,266.43700846731696,0.0,102086.57196853161 +2016-01-23 02:00:00,0.0,0.001475977716540495,271.1035600118312,-4.144820619672005,-4.300000064074993,264.3466486789068,0.0,102040.05311410924 +2016-01-23 03:00:00,0.0,0.001465692028812595,271.1896744201703,-5.039467461498544,-4.300000064074993,265.70061262901345,0.0,101991.53007276349 +2016-01-23 04:00:00,0.0,0.0014408688933371403,270.95878120145204,-5.644343336751376,-4.700000070035458,263.3368899455162,0.0,101984.65043186596 +2016-01-23 05:00:00,0.0,0.0013318359742791029,270.74984192636435,-6.280882250107815,-5.100000075995921,260.15883981367006,0.0,101980.44137359376 +2016-01-23 06:00:00,0.0,0.0013308249621597937,270.448210098722,-6.930417710054121,-5.499492221551524,273.1984803519788,0.0,101924.87731171887 +2016-01-23 07:00:00,0.0,0.0014195892934044895,270.57719541843215,-7.652492334741758,-6.199522787114828,275.17354108493896,0.0,101849.6467341152 +2016-01-23 08:00:00,0.0,0.0015154930244505548,270.78225433318863,-8.405028636452714,-6.900000102818012,277.5314959335922,0.0,101636.8502876123 +2016-01-23 09:00:00,1.8857743986919915e-05,0.0018731810629846373,271.340634133975,-9.156608291950525,-7.600000113248825,299.41180536187755,0.0,101561.2342699221 +2016-01-23 10:00:00,5.555555638339784e-05,0.0020186615408194076,271.52572546104955,-9.826325115911239,-7.699522809466569,298.58383566434816,0.0,101401.75704009728 +2016-01-23 11:00:00,5.555555638339784e-05,0.002232308624791181,272.0309334144671,-10.462212105125303,-7.787277576176383,299.73256586322907,0.0,101290.02303448766 +2016-01-23 12:00:00,0.0,0.002432733128787309,272.26746515104895,-11.152461831763333,-7.874103161361163,305.2705446756379,0.0,101174.47015718714 +2016-01-23 13:00:00,0.00011839412836965032,0.002604096486407175,272.34093404649025,-11.839319425081266,-7.667887991601736,301.10323373696787,75.28418735062866,101120.1687270458 +2016-01-23 14:00:00,0.00031911502845168293,0.003095137413995529,271.7121694172166,-12.529603206236416,-7.42367379205408,296.380887832796,158.07340291193762,101011.86155747983 +2016-01-23 15:00:00,0.00036444989737657396,0.0032582602387428027,272.91139727456766,-13.207409575737755,-7.200000107288361,303.7774928718387,195.91946784929172,100810.17493874527 +2016-01-23 16:00:00,0.00020734393803395696,0.0032147439369476245,273.0680893242492,-12.952492413717913,-8.099522815427033,303.3643328251418,242.05903882567472,100720.58068138431 +2016-01-23 17:00:00,0.0002559370995560217,0.0033656919808145577,272.67601989764506,-12.680718038849923,-8.94482069119758,301.70548568813234,258.029821714486,100477.96548522197 +2016-01-23 18:00:00,0.000400106304220497,0.003448901084898587,272.47362655916413,-12.394811874091765,-9.806744071482001,288.0678929345309,235.07331344945578,100321.17589591755 +2016-01-23 19:00:00,0.00022950524113644604,0.003375098710449998,272.7838182910969,-11.880405028281945,-10.262376408770393,289.6242152839496,191.80655526627083,100318.62871617296 +2016-01-23 20:00:00,0.00027121136443327977,0.003320988457590552,272.5742097175327,-11.352461834743565,-10.707057083540093,288.8305270724678,136.35446508401498,100249.76006564414 +2016-01-23 21:00:00,0.00019049101041741787,0.0030457214414905624,270.64661741369554,-10.826321501576407,-11.18135499639048,284.3013526678456,49.51413166091162,100280.83702108641 +2016-01-23 22:00:00,0.00014617190656134927,0.002706083621948959,269.6459627445624,-9.88135497701897,-11.852492397326635,279.21256686981724,0.0,100353.76295137886 +2016-01-23 23:00:00,0.00013754297118637133,0.0027609542475235402,269.64215952185117,-8.98040498506858,-12.494811875581881,281.3188737345167,0.0,100298.25711515929 +2016-01-24 00:00:00,0.00015574800046910478,0.002506416293899852,268.9847097847011,-8.047201545546,-13.152492416698145,275.780979117406,0.0,100321.10947330146 +2016-01-24 01:00:00,2.777777819169892e-05,0.0025286342172817686,268.9942183637956,-7.062376361086679,-12.680405040202876,278.2866373942044,0.0,100166.3857179114 +2016-01-24 02:00:00,5.555555638339784e-05,0.0024625208319989495,268.86833398259336,-6.082252102727135,-12.180882338024666,279.91452477555134,0.0,100142.78563856649 +2016-01-24 03:00:00,8.399668806797465e-05,0.002299999941897113,268.49560490818266,-5.095426504131308,-11.675591535417862,280.9088093636116,0.0,100156.2989537844 +2016-01-24 04:00:00,0.00018221123131483094,0.002213650221392827,268.2306816474172,-3.972733247647084,-11.348904840521596,282.0860070414994,0.0,100259.13859089582 +2016-01-24 05:00:00,0.00015244516187470434,0.0022996405524779995,268.7722051306307,-2.808149009911312,-11.031345508613947,287.98857355395967,0.0,100263.35595455635 +2016-01-24 06:00:00,0.0001579759795634556,0.002253720435400572,269.70728342786725,-1.6872774852793004,-10.695709031092369,269.0017147224829,0.0,100282.15716345853 +2016-01-24 07:00:00,0.0001462053005397426,0.0021390044649421285,270.6890512705951,-1.5318226723252895,-10.280405004440087,273.7415012528431,0.0,100390.59568205514 +2016-01-24 08:00:00,0.00014595608322513792,0.00211549300929328,270.51759806800726,-1.4081489890496863,-9.842356261188447,273.9300667889307,0.0,100491.07414168307 +2016-01-24 09:00:00,7.812059035817149e-05,0.0019678142821253444,270.87249820580416,-1.3000000193715093,-9.41910024999179,235.388511821315,0.0,100493.78308603089 +2016-01-24 10:00:00,0.0,0.0018318359616480405,270.0322962222889,-0.8028581849527666,-8.880404983578464,233.19552942075478,0.0,100593.1666473426 +2016-01-24 11:00:00,0.0,0.0015248800858220044,268.9254478635079,-0.30000000447034836,-8.352492345172571,228.47412311613633,0.0,100718.18102866717 +2016-01-24 12:00:00,0.0,0.0012282155715708871,268.5223303782208,0.20000000298023224,-7.8385666916532255,183.79490937143234,0.0,100807.77943133844 +2016-01-24 13:00:00,0.0,0.0011097626943043447,268.721107933214,0.5000000074505806,-7.83417307882958,181.93046562354823,128.63347889810444,100952.57094955345 +2016-01-24 14:00:00,0.0,0.0011195893009831271,270.1225853522599,0.800000011920929,-7.853750099547175,184.8898129847456,268.02084295020353,100934.05140711516 +2016-01-24 15:00:00,0.0,0.0010655057913509204,271.09201259466136,1.1000000163912773,-7.849382093639904,199.6419434781974,410.02970112414033,100990.36307804404 +2016-01-24 16:00:00,0.0,0.0011109607222048415,272.6392914900083,1.5000000223517418,-7.372733298311033,200.92728575931247,506.48987967260416,101011.19687399722 +2016-01-24 17:00:00,0.0,0.0012024987531833809,274.1086440359855,1.8918510601241456,-6.854227389918386,203.09207218580627,539.7764720659131,100999.6722029302 +2016-01-24 18:00:00,0.0,0.0012642896337356176,275.2409490825092,2.2000000327825546,-6.354227382467806,238.9073333165784,440.00940289775514,101047.91114664775 +2016-01-24 19:00:00,0.0,0.00128815817632028,276.11589662745047,2.455179478675658,-5.554227370546877,242.16807721550305,359.4993282565458,101035.19061425605 +2016-01-24 20:00:00,0.0,0.0014026718899835444,275.7385919386945,2.691851072045074,-4.786349794007832,242.2668608078897,256.6884642914993,101081.44570122653 +2016-01-24 21:00:00,0.0,0.0013890553560906103,275.18095273921614,2.891851075025307,-4.008149027792705,265.17386100995805,96.44326250133567,101223.08628032912 +2016-01-24 22:00:00,0.0,0.001319289644046927,274.0541802805051,3.1000000461935997,-3.4081490188520087,259.84942440873476,0.0,101279.2035764532 +2016-01-24 23:00:00,0.0,0.0014287269262874187,273.8571236895872,3.300000049173832,-2.844820600300496,261.2195147214174,0.0,101335.5956411161 +2016-01-25 00:00:00,0.0,0.001601300585326679,271.9758279558598,3.4872775121013904,-2.25296955954786,275.19733248804135,0.0,101433.93225366587 +2016-01-25 01:00:00,0.0,0.0016656920237601701,272.0707217180989,3.500000052154064,-2.344343287577544,276.5327714975514,0.0,101520.56805451156 +2016-01-25 02:00:00,0.0,0.001708148924915159,271.32310316590076,3.5318227021276116,-2.3813548652602616,273.8576850508833,0.0,101578.92606564396 +2016-01-25 03:00:00,0.0,0.0016048180812763373,270.09428782605687,3.554227340744555,-2.439975283160388,269.53627986576,0.0,101615.8135996405 +2016-01-25 04:00:00,0.0,0.0015769054514420892,270.1125704846313,3.5084620189891726,-2.3448205928499153,269.65056958583403,0.0,101659.69531183556 +2016-01-25 05:00:00,0.0,0.0014625234998126798,270.4825306043382,3.5076411599372626,-2.2732058955820844,269.84821026248625,0.0,101701.1205592314 +2016-01-25 06:00:00,0.0,0.0014345076443929258,269.5957633426636,3.4732059134634783,-2.1985949900451156,250.8361930881564,0.0,101736.99036050255 +2016-01-25 07:00:00,0.0,0.001406595014558678,269.6740475456377,3.6076717165598695,-2.386349758245045,251.44211473378041,0.0,101827.01153703243 +2016-01-25 08:00:00,0.0,0.0015078491445712876,269.87158445886894,3.772733244666852,-2.5727332267854583,253.9733807515252,0.0,101775.01770776705 +2016-01-25 09:00:00,0.0,0.0015078491445712876,269.52428209415217,3.9026939245210426,-2.7542273288236254,234.57728953483942,0.0,101869.36829830332 +2016-01-25 10:00:00,0.0,0.0015263550447700953,269.0745373300271,3.4736304225290806,-2.6076717016587083,234.13237034301673,0.0,101994.81753443136 +2016-01-25 11:00:00,0.0,0.0015596653243694233,269.358627037023,3.0000000447034836,-2.4448205943400314,236.72760953332335,0.0,102089.12967056964 +2016-01-25 12:00:00,0.0,0.0015455409300920238,268.15966960000685,2.500313035899951,-2.2994921738678085,226.53420521573184,0.0,102162.99867263943 +2016-01-25 13:00:00,0.0,0.0016710133738351612,269.87787985782387,2.1000000312924385,-2.2995227290002993,230.58507754258787,121.6364913341676,102235.9715294063 +2016-01-25 14:00:00,0.0,0.0017611184495530342,272.6584732260189,1.652986747314698,-2.2995227290002993,237.97514423804236,251.47720698843597,102300.16717358 +2016-01-25 15:00:00,0.0,0.001891083756192788,274.294592109913,1.2000000178813934,-2.2995227290002993,224.586225523827,409.27987857226924,102393.50717514224 +2016-01-25 16:00:00,0.0,0.001974472819310556,275.3570882884757,0.6000000089406967,-1.9000000283122063,227.33625511530767,505.33068046376013,102427.31368978831 +2016-01-25 17:00:00,0.0,0.002147013223078606,275.5359426257,0.10000000149011612,-1.5687850830372303,228.06805395271388,538.5786144087614,102392.72154324566 +2016-01-25 18:00:00,0.0,0.0024909537866873734,275.3848250169022,-0.5000000074505806,-1.1872774778287196,226.4426119738721,486.9070768162881,102447.9024613054 +2016-01-25 19:00:00,0.0,0.0023863496624013988,275.5771501546767,-0.3918510377724038,-0.26928829206518623,225.15710394783358,398.5415407826068,102416.7299557087 +2016-01-25 20:00:00,0.0,0.0026127192859148663,275.05285326386706,-0.20000000298023224,0.6307117213458587,223.49438111799952,285.57102489567933,102399.87539016483 +2016-01-25 21:00:00,0.0,0.0026999999317922625,274.3849577145329,-0.029317673692750144,1.600000023841858,228.24251180781053,96.92348914975051,102457.40178557148 +2016-01-25 22:00:00,0.0,0.0028586232675026127,273.48094769250474,-0.05549244155991933,2.0000000298023224,228.0390371513457,0.0,102399.23559566756 +2016-01-25 23:00:00,0.0,0.0028401577933887916,273.4358841130399,-0.10000000149011612,2.400000035762787,229.7095160811205,0.0,102458.44924307344 +2016-01-26 00:00:00,0.0,0.0028818071786143747,273.35073837802486,-0.10000000149011612,2.8000000417232513,249.9466933586899,0.0,102474.6187724782 +2016-01-26 01:00:00,0.0,0.0028835996555162647,273.8221452042897,-0.10000000149011612,3.2318226976572633,251.00062287796064,0.0,102494.89090364201 +2016-01-26 02:00:00,0.0,0.0028746214178278595,273.4980787149073,-0.20000000298023224,3.708149023322357,248.63585022098343,0.0,102496.88664773626 +2016-01-26 03:00:00,0.0,0.0028319211754130238,272.7184968661266,-0.2918510362822877,4.194498753255195,228.33230016584452,0.0,102439.84187953545 +2016-01-26 04:00:00,0.0,0.0027158059927704817,271.54100313944076,0.4995227021782091,3.7863497791066707,223.37782207269473,0.0,102417.76801714594 +2016-01-26 05:00:00,0.0,0.0028057622099795774,271.6704484342033,1.2000000178813934,3.398595007926509,223.83634307965883,0.0,102380.47827538125 +2016-01-26 06:00:00,0.0,0.002730788552178153,271.2693759936885,1.9000000283122063,2.9990723072384156,231.43921057209187,0.0,102305.46451126927 +2016-01-26 07:00:00,0.0,0.00285384700031679,272.28745868364484,1.9863497522845808,3.1000000461935997,234.25794006448277,0.0,102197.7917430178 +2016-01-26 08:00:00,0.0,0.0028886289921902014,272.13918444170287,2.044820588379567,3.2448206062609604,232.1753854656195,0.0,102122.22743674509 +2016-01-26 09:00:00,0.0,0.003167153553110055,272.83858257019085,2.102858204324276,3.400000050663948,261.98836826606407,0.0,102010.2136503072 +2016-01-26 10:00:00,0.0,0.004888235388496294,277.42213973500475,2.508149005440964,4.000000059604645,286.1992801440538,0.0,101996.46628911293 +2016-01-26 11:00:00,0.0,0.004812309314307255,277.18850508743026,2.908149011401428,4.608149036733402,282.0728501545275,0.0,101978.57491514493 +2016-01-26 12:00:00,0.0,0.004811331499870815,277.4402419675594,3.3081490173618926,5.2732059402855676,254.62104421471878,0.0,101876.69518920331 +2016-01-26 13:00:00,0.0,0.005170034559470984,279.68896857679294,3.808149024812473,5.744820643513863,262.56271007541613,130.27538049558177,101839.19064588372 +2016-01-26 14:00:00,0.0,0.005191060596888501,279.8559391839242,4.300000064074993,6.20814906057526,261.36492711127573,267.0810399689898,101797.12194325062 +2016-01-26 15:00:00,0.0,0.005388679724172234,280.922095072016,4.799522766253203,6.7081490680258415,281.6031889575845,373.45436727930195,101754.60770023862 +2016-01-26 16:00:00,0.0,0.005458770482727427,280.93790259803546,4.831822721499122,6.808149069515958,278.54880650233076,460.8402943104943,101681.52286660428 +2016-01-26 17:00:00,0.0,0.005894642894538489,281.15954384993603,4.87273326105813,6.902858275849851,277.62354210777096,491.21085375339146,101487.61595139487 +2016-01-26 18:00:00,0.0,0.005635758279510749,281.0313183486949,4.9081490412037505,7.000000104308128,310.6500374685658,351.5644035469755,101496.25122204848 +2016-01-26 19:00:00,0.0,0.005215802538295094,281.096277760856,5.274103122618144,6.199522787114828,312.22948462115994,288.1437035410794,101336.63435626056 +2016-01-26 20:00:00,0.0,0.005223506745487534,280.6601440872568,5.631822733420051,5.341229458962947,312.88545668370773,207.2919162416295,101276.7453045144 +2016-01-26 21:00:00,0.0,0.0053164719303691104,279.84096713998434,6.007671752322656,4.508149035243286,329.869151540395,68.29832187604524,101263.91406714435 +2016-01-26 22:00:00,0.0,0.005095736655565111,279.304834278064,6.008149057595028,4.508149035243286,328.24491824478577,0.0,101256.19872519084 +2016-01-26 23:00:00,0.0,0.004854374446060685,279.0295874937962,6.031345434108143,4.499522761782854,328.00876480065847,0.0,101252.64797283895 +2016-01-27 00:00:00,0.0,0.004846225478199913,278.82353017122466,6.031345434108143,4.4542273541555994,335.9728674696495,0.0,101313.54791980071 +2016-01-27 01:00:00,0.0,0.004877382673330279,278.6031498158878,6.094498781567402,4.1081490292828216,335.99789062076104,0.0,101328.30447900502 +2016-01-27 02:00:00,0.0,0.004908656704460825,278.690167169235,6.144820649474328,3.7985950138869735,337.76810002726637,0.0,101266.10509249714 +2016-01-27 03:00:00,0.0,0.0050004771789425775,278.5930394650456,6.207984753949937,3.4081490188520087,305.9756677833094,0.0,101233.42053825274 +2016-01-27 04:00:00,0.0,0.004905767976412517,279.20514007040606,5.807984747989472,2.7076717031488244,309.6688913353364,0.0,101197.96001139753 +2016-01-27 05:00:00,0.0,0.004905290671159316,279.1416583022975,5.40814904865433,1.908148996500267,310.4120526190651,0.0,101260.3428570275 +2016-01-27 06:00:00,0.0,0.0050388641819576726,279.04593624679853,5.031822724479354,1.199522712609022,304.09680020025223,0.0,101240.54739242654 +2016-01-27 07:00:00,0.0,0.005024911793220967,279.0792277897973,4.972733262548246,0.4000000059604645,304.31917037566114,0.0,101142.66790087816 +2016-01-27 08:00:00,0.0,0.0047587375061028175,279.1281411192433,4.899522767743319,-0.4000000059604645,303.76182386910193,0.0,101083.60099083422 +2016-01-27 09:00:00,0.00016163539731126682,0.004773840913308354,278.5018671979357,4.808462038360683,-1.1947092227251705,334.07528248164147,0.0,101153.51973009709 +2016-01-27 10:00:00,0.00015876471190062424,0.0048572299764261225,277.602324566511,4.286349786557251,-1.2000000178813934,329.771588665074,0.0,101173.06588726779 +2016-01-27 11:00:00,0.00013619967792585056,0.004709406610903454,277.52520135611894,3.7000000551342964,-1.2000000178813934,328.9180405096854,0.0,101228.89874643959 +2016-01-27 12:00:00,0.0,0.004655761419877898,276.49959492138214,3.1448206047708442,-1.2000000178813934,322.7436779759523,0.0,101337.644682678 +2016-01-27 13:00:00,0.0,0.004319899830228093,277.4234205394895,3.808149024812473,-1.526794161042328,324.5922932936384,58.528939727608766,101401.40369992981 +2016-01-27 14:00:00,0.0,0.004133343227320864,278.37290932772873,4.4732059283646395,-1.9000000283122063,327.2758549529107,118.96650182762859,101392.29194339793 +2016-01-27 15:00:00,0.0,0.00420285223631921,278.8416535413421,5.108149044183982,-2.2000000327825546,288.621238154211,327.59351776698975,101454.44487964705 +2016-01-27 16:00:00,0.0,0.0032539856712793845,279.2922042567306,5.244820636063283,-2.400897218095364,284.4454220252782,403.9927972445134,101430.43780760595 +2016-01-27 17:00:00,0.0,0.002979211382434229,279.1293172006014,5.39859503772883,-2.6000000387430187,280.795579715084,430.73930248518377,101452.066479477 +2016-01-27 18:00:00,0.0,0.0033333934709258183,279.76469984641085,5.499522776684015,-2.839975289120852,243.91017377378938,480.1266300959781,101377.11286151802 +2016-01-27 19:00:00,0.0,0.0025827707496907833,280.16915320273273,5.344820637553399,-2.6000000387430187,242.237263656287,394.2990810695766,101385.1292852583 +2016-01-27 20:00:00,0.0,0.002815971993633385,279.25415567386864,5.207641185269236,-2.3081490024607314,242.06330373644388,284.7442725997294,101461.78920366362 +2016-01-27 21:00:00,0.0,0.0026062826956958014,280.10399202103355,5.054227363096296,-2.073205892601852,243.31959145720364,103.76891216154816,101549.25660496317 +2016-01-27 22:00:00,0.0,0.0021874797938989192,278.3045483428909,4.444820624142354,-2.354227322863161,237.39326855553372,0.0,101524.87380834302 +2016-01-27 23:00:00,0.0,0.002405356895785875,277.4702527900055,3.808149024812473,-2.6318226887165665,239.4796108188926,0.0,101633.63840172488 +2016-01-28 00:00:00,0.0,0.002562836470658819,276.0421495164813,3.2081490158717765,-2.908149011401428,225.15929389081927,0.0,101757.84478312948 +2016-01-28 01:00:00,0.0,0.0025596652991072984,274.0224124091097,2.8000000417232513,-2.739975287630736,221.21432885840787,0.0,101770.47406110897 +2016-01-28 02:00:00,0.0,0.002405290734314628,273.5339810315056,2.400000035762787,-2.5872774986903453,221.31913045306246,0.0,101813.14407442296 +2016-01-28 03:00:00,0.0,0.0022747687138914736,273.3394789484855,2.0000000298023224,-2.400000035762787,210.70573049468493,0.0,101799.1918753063 +2016-01-28 04:00:00,0.0,0.0020996405575304244,272.4539976077154,1.8000000268220901,-2.0000000298023224,205.78942391375293,0.0,101814.07519108552 +2016-01-28 05:00:00,0.0,0.0020760264807185673,271.9721730943449,1.5000000223517418,-1.600000023841858,203.60437476658075,0.0,101855.13733371679 +2016-01-28 06:00:00,0.0,0.002073385504974945,271.2892811828851,1.2000000178813934,-1.2000000178813934,200.14933772906937,0.0,101874.67761830505 +2016-01-28 07:00:00,0.0,0.0022127224839650203,270.74878243163164,0.9000000134110451,-0.6081489771287575,199.4096869317989,0.0,101805.58317907085 +2016-01-28 08:00:00,0.0,0.0022045735161042492,270.6917997352823,0.52589696380859,-0.044820558577244624,199.5018784174826,0.0,101847.4295696509 +2016-01-28 09:00:00,0.0,0.0023456253720520173,269.66198965011915,0.20000000298023224,0.5136502849683222,198.18925142664915,0.0,101768.03687365772 +2016-01-28 10:00:00,0.0,0.002438052304369762,269.34083393362283,-0.10285817452195377,1.0000000149011612,198.17571327102473,0.0,101718.50104503275 +2016-01-28 11:00:00,0.0,0.002259518025779597,268.916350048681,-0.4000000059604645,1.4918510541636811,196.3052234622054,0.0,101700.99085934003 +2016-01-28 12:00:00,0.0,0.0022041898600866573,267.19466244372137,-0.7330804222295453,1.9014050710496455,188.65069849839597,0.0,101701.51810209775 +2016-01-28 13:00:00,0.0,0.0023412426786524184,270.2309273306957,-0.20000000298023224,2.6000000387430187,194.70763942796012,141.24044723423972,101680.62757798724 +2016-01-28 14:00:00,0.0,0.00264812414797131,273.53313985331164,0.30000000447034836,3.200000047683716,202.5097153936835,284.6710018598951,101515.95389818163 +2016-01-28 15:00:00,0.0,0.003050947970606771,276.2039126284792,0.9000000134110451,3.808149024812473,225.7280027481505,429.1190617050197,101424.17503150842 +2016-01-28 16:00:00,0.0,0.0027481241454450976,276.68136613735726,1.2000000178813934,4.000000059604645,222.0792504542708,528.7995035271465,101456.27231149364 +2016-01-28 17:00:00,0.0,0.0032068947544831496,277.3036211072292,1.600000023841858,4.200000062584877,222.99278891836025,563.6945043063181,101327.16021390611 +2016-01-28 18:00:00,0.0,0.0034068947494307247,277.8613727500033,2.0000000298023224,4.400927803030177,231.37160916822748,504.5985041295428,101179.75534560875 +2016-01-28 19:00:00,0.0,0.0036793436942653295,278.2935607557194,2.2000000327825546,4.0918510929067,234.60175526259923,415.0025232995493,101115.06643652852 +2016-01-28 20:00:00,0.0,0.004055977178305551,277.8621870244179,2.3994921753579246,3.7000000551342964,235.37740749657,300.8284780034007,100936.64576970582 +2016-01-28 21:00:00,0.0,0.004136085760718785,277.73870898771,2.5995227334706477,3.3551794920867035,236.82567242028932,105.21038759990503,100947.586442255 +2016-01-28 22:00:00,0.0,0.0043452977534031685,277.45352626548447,2.4872469420677383,3.0000000447034836,241.47838749195847,0.0,100894.08782130433 +2016-01-28 23:00:00,0.0,0.004408148856707422,277.30133075916234,2.3995227304904154,2.700000040233135,246.4497154687819,0.0,100799.5026617911 +2016-01-29 00:00:00,0.0,0.00457003457462826,276.55186925259216,2.2995227290002993,2.400000035762787,244.21700427351473,0.0,100669.68291741685 +2016-01-29 01:00:00,0.0,0.00464433818710221,276.8376465654881,2.1000000312924385,2.400000035762787,246.3446610586299,0.0,100729.18003374767 +2016-01-29 02:00:00,0.0,0.004865872359990986,276.7079969173645,1.974133628576804,2.400000035762787,247.5483508195167,0.0,100607.15173192654 +2016-01-29 03:00:00,0.0,0.00466408914828071,276.4620980407896,1.8000000268220901,2.400000035762787,252.73014421578884,0.0,100569.82877010001 +2016-01-29 04:00:00,0.0,0.004066470031101828,276.04942953421926,1.700000025331974,1.9000000283122063,248.03146494229657,0.0,100491.19687399722 +2016-01-29 05:00:00,0.0,0.003826165956074339,275.5786519257243,1.5000000223517418,1.4127531160467903,244.39596554160883,0.0,100401.84666282978 +2016-01-29 06:00:00,0.0,0.0038161150891726802,275.2433674569954,1.4000000208616257,0.9457727263106709,264.1691147306359,0.0,100314.92952834425 +2016-01-29 07:00:00,0.0,0.0038034401723079578,274.31861821546335,1.2000000178813934,0.7000000104308128,259.2013184385128,0.0,100202.99353345155 +2016-01-29 08:00:00,0.0,0.003816883564348303,274.1799526491387,1.0000000149011612,0.455179448873336,257.59366520145187,0.0,100037.46128034 +2016-01-29 09:00:00,0.0,0.0037483932169354844,274.12348845980546,0.800000011920929,0.20000000298023224,249.74928324067577,0.0,99924.44667426066 +2016-01-29 10:00:00,0.0,0.0037488705221886856,273.71438478073213,0.4000000059604645,0.3551794473832198,248.2008890186224,0.0,99899.55127306216 +2016-01-29 11:00:00,0.0,0.0038407215518017016,274.1287716171689,-0.06332841110093217,0.49185103926251994,250.1798212082579,0.0,99798.7016760622 +2016-01-29 12:00:00,0.0,0.0036492140784806387,273.7266269574184,-0.5000000074505806,0.6004773142130682,273.1754171592376,0.0,99653.2438276321 +2016-01-29 13:00:00,0.0,0.0037230575496978143,274.1536171165244,0.6727331984732522,0.22726681493779285,270.8417682206087,130.4601718825487,99660.76456574484 +2016-01-29 14:00:00,0.0,0.003889695989545729,275.21425367163556,1.8000000268220901,-0.14482056006736074,271.6794066887071,260.72692881555355,99517.65314579055 +2016-01-29 15:00:00,0.0,0.003926338974912342,277.08170191231767,2.9000000432133675,-0.5081489756386413,247.98222205958047,367.7787643452419,99571.69166714049 +2016-01-29 16:00:00,0.0,0.0037605471283292664,277.77504459633155,3.808462023459521,-0.9000000134110451,248.82035631334767,452.9588229427551,99573.85739336733 +2016-01-29 17:00:00,0.0,0.003154661340193278,278.85255028297723,4.739975317433059,-1.3000000193715093,249.1278475066987,482.86430944737185,99488.784106782 +2016-01-29 18:00:00,0.0,0.0033520722589763198,278.7911551750065,5.654227372036993,-1.6985949825945348,287.6356393286097,267.481937292896,99396.42482432109 +2016-01-29 19:00:00,0.0,0.00320265200525327,278.9315560123736,5.707984746499356,-2.1000000312924385,288.6560675485096,220.31001363532633,99458.87934724681 +2016-01-29 20:00:00,0.0,0.0031512953068917686,279.57941323753477,5.790105164273408,-2.6000000387430187,292.42616808012866,160.25367112761649,99512.38075054267 +2016-01-29 21:00:00,0.0,0.0035102302250747575,277.571394850927,5.854227375017225,-3.0000000447034836,296.08708330733384,53.646545281107656,99606.05567394797 +2016-01-29 22:00:00,0.0,0.0034576781383033905,276.9140242195439,6.087246995711918,-3.400000050663948,295.2269410332515,0.0,99815.63599453698 +2016-01-29 23:00:00,0.0,0.0031943155504312493,276.43908584014065,6.3076412016605135,-3.74122943512109,293.8662828856636,0.0,99819.4309451048 +2016-01-30 00:00:00,0.0,0.0029885780104180093,276.0041071765378,6.507671759773237,-4.100000061094761,270.3837310660124,0.0,100004.67475172601 +2016-01-30 01:00:00,0.0,0.0027710133460468237,275.1948593985372,6.2995227886049445,-4.187277522532203,268.89914975866515,0.0,100152.48871658766 +2016-01-30 02:00:00,0.0,0.002653446764209552,273.852641258673,6.0727332789395225,-4.208149030772938,266.00268757824995,0.0,100272.83078411769 +2016-01-30 03:00:00,0.0,0.0026092388579506995,273.29310619610993,5.839975333824335,-4.300000064074993,254.04120013243016,0.0,100389.10429737408 +2016-01-30 04:00:00,0.0,0.0024625208319989495,272.4590694984757,5.754227373527109,-4.308462030910102,250.77859227796407,0.0,100493.86538230487 +2016-01-30 05:00:00,0.0,0.002259665306685936,271.8889528687076,5.673205946246032,-4.387246970379945,248.08468217816272,0.0,100689.7784400525 +2016-01-30 06:00:00,0.0,0.002129874963448902,271.5288651309144,5.59949222304164,-4.40814903375317,232.75623588712966,0.0,100683.66071323426 +2016-01-30 07:00:00,0.0,0.0022194258563594453,271.24536907483963,5.339975326373755,-4.007671722520334,233.18327935548587,0.0,100812.98100923249 +2016-01-30 08:00:00,0.0,0.002173871534121143,270.8912332501635,5.107671738911611,-3.581354883141655,232.42186389405458,0.0,101039.40113861821 +2016-01-30 09:00:00,0.0,0.0022073720849984757,270.75264266761286,4.87273326105813,-3.1570855078159274,205.45399357146997,0.0,101098.58624368114 +2016-01-30 10:00:00,0.0,0.0021534467768406142,270.6406918035666,4.931822722989238,-2.839975289120852,205.40797531030776,0.0,101233.79258483034 +2016-01-30 11:00:00,0.0,0.0021719105435006416,270.44309129476875,4.999522769233435,-2.508149005440964,205.56846310275796,0.0,101408.62038836449 +2016-01-30 12:00:00,0.0,0.0021615957447013857,270.5460443255445,5.072733264038361,-2.2067439582331763,208.95924742182592,0.0,101510.03887548913 +2016-01-30 13:00:00,0.0,0.002188389882315831,271.82992032956764,4.52653192187255,-2.0727332193348778,211.21110512527284,138.8490836974544,101556.55884190668 +2016-01-30 14:00:00,0.0,0.002244040044678961,273.24413416757693,4.000000059604645,-1.9084619951473145,213.90950602532416,275.0733765825717,101581.76909428861 +2016-01-30 15:00:00,0.0,0.002266619746030702,273.7975537607866,3.500000052154064,-1.799522721549719,241.96983981588127,367.39872110284557,101623.50403550622 +2016-01-30 16:00:00,0.0,0.0024084619058661488,275.296795781628,3.500000052154064,-0.5985949662032575,245.73493044112342,452.02133784265817,101587.76893467018 +2016-01-30 17:00:00,0.0,0.0027160019653542505,275.66396199875464,3.500000052154064,0.6918510422427521,246.55927333910634,482.0141449989795,101612.10298176826 +2016-01-30 18:00:00,0.0,0.0029999999242136255,275.36294209947505,3.586349776126439,1.9000000283122063,279.2433321246469,354.5933839798087,101508.39658478239 +2016-01-30 19:00:00,0.0,0.00309910273939087,274.796843022337,3.7000000551342964,2.755179483146007,277.609215380829,292.49514616208575,101600.67898764959 +2016-01-30 20:00:00,0.0,0.002999102741917082,274.72969935100065,3.83182270659796,3.6000000536441803,276.78307853642417,213.59205989982524,101569.38321457828 +2016-01-30 21:00:00,0.0,0.003168815534741531,275.43401698729156,3.9995227543322733,4.500000067055225,292.9911075300296,60.0913283975358,101547.28285356876 +2016-01-30 22:00:00,0.0,0.0032084618856564485,275.27685808799805,4.008462026439753,4.700000070035458,292.4272938754596,0.0,101517.12768607176 +2016-01-30 23:00:00,0.0,0.0033043935292821724,275.2331558170203,4.044820618181889,5.000000074505806,292.6708208765192,0.0,101496.5560514739 +2016-01-31 00:00:00,0.0,0.0035999999090563506,275.62970714372955,4.106743986545382,5.300000078976153,265.0304130635488,0.0,101555.87156662541 +2016-01-31 01:00:00,0.0,0.003854371828771203,275.48380927825644,4.508149035243286,5.300000078976153,266.17548677364647,0.0,101565.29524760754 +2016-01-31 02:00:00,0.0,0.003970373859806979,275.98098293397095,4.9985950317683665,5.300000078976153,269.47936438040887,0.0,101518.44941959868 +2016-01-31 03:00:00,0.0,0.004167515681837509,276.60136643000675,5.40814904865433,5.300000078976153,253.58731912492934,0.0,101479.71345649977 +2016-01-31 04:00:00,0.0,0.0038720676370501976,276.52264320249355,5.399522775193899,4.300000064074993,252.34623154752413,0.0,101445.57261982965 +2016-01-31 05:00:00,0.0,0.004022110943924552,276.92222966926255,5.3542273675666445,3.300000049173832,254.84522163864668,0.0,101430.9497076409 +2016-01-31 06:00:00,0.0,0.0040000045309567115,277.41736994633067,5.308462045811263,2.3000000342726707,265.09674485943475,0.0,101325.641507914 +2016-01-31 07:00:00,0.0,0.004157542992744087,277.5386617744123,4.987246979320641,2.500000037252903,266.5003708878906,0.0,101387.92433115211 +2016-01-31 08:00:00,0.0,0.004028995957358405,276.5328039664834,4.608149036733402,2.700000040233135,262.16031804720325,0.0,101318.58150272613 +2016-01-31 09:00:00,0.0,0.003992251172250392,276.08510233840275,4.272733252117432,2.9542273318038577,249.7749895680042,0.0,101341.61810223153 +2016-01-31 10:00:00,0.0,0.004121293107492843,275.93302839456095,3.80285822965625,2.6000000387430187,250.85976148335573,0.0,101318.66227737445 +2016-01-31 11:00:00,0.0,0.0041663821244597235,275.2304936028057,3.3448206077510765,2.3000000342726707,249.59043667495288,0.0,101324.59079377778 +2016-01-31 12:00:00,0.0,0.004303885643635583,275.7299908034912,2.907251829068851,1.9000000283122063,289.6887113519753,0.0,101318.17910755429 +2016-01-31 13:00:00,0.0,0.0042990721539450565,278.0100478713644,3.0985950034561607,2.112994310660143,292.08744048820824,129.0388466412389,101360.24305147868 +2016-01-31 14:00:00,0.0,0.004136851593342803,278.5293764807957,3.2448206062609604,2.400000035762787,285.9375772300106,253.45244301701175,101367.32573733854 +2016-01-31 15:00:00,0.0,0.0041914092202829075,278.7929659189488,3.4081490188520087,2.6000000387430187,290.2237076631089,378.8966496587932,101364.0957076662 +2016-01-31 16:00:00,0.0,0.003848614781334381,278.89169176250124,3.3995227453915766,2.8000000417232513,286.16272868805004,465.90048982698056,101345.79513072602 +2016-01-31 17:00:00,0.0,0.0038318053559925264,280.06314196096855,3.3542273377643226,3.0000000447034836,288.4425244836122,496.62399242766276,101250.52178397105 +2016-01-31 18:00:00,0.0,0.003950783926913112,281.28288837174637,3.3028582222056695,3.200000047683716,279.39336289886364,432.48500815772337,101176.15595708988 +2016-01-31 19:00:00,0.0,0.004288768242013073,281.01994747607847,2.999522739431112,3.200000047683716,280.7184228138306,357.36029151690144,101131.65208499829 +2016-01-31 20:00:00,0.0,0.00427930849197158,280.20627892276235,2.6741030838751256,3.2493820250945626,278.073966729926,261.8867863600521,101084.10425196662 +2016-01-31 21:00:00,0.0,0.004097517254378121,280.5249078144286,2.3412294142594643,3.300000049173832,258.04322233225156,114.92766765501308,101138.26385375157 +2016-01-31 22:00:00,0.0,0.00430976248361419,278.84545665640906,2.1736304031575706,3.1995227424113444,256.4932694711869,0.0,101086.45578166522 +2016-01-31 23:00:00,0.0,0.004852072221083133,278.84666802195596,1.9995227245299507,3.031822694677031,262.210880076717,0.0,101145.04733649202 diff --git a/data/example_forcing_aorc_csv/cat-13.csv b/data/example_forcing_aorc_csv/cat-13.csv new file mode 100644 index 000000000..2a1dc33f9 --- /dev/null +++ b/data/example_forcing_aorc_csv/cat-13.csv @@ -0,0 +1,745 @@ +Time,RAINRATE,Q2D,T2D,U2D,V2D,LWDOWN,SWDOWN,PSFC +2016-01-01 00:00:00,0.0,0.0036675996533339817,279.69272233332356,7.255675537478679,-3.454108748255627,257.0283369593465,0.0,101671.43192186923 +2016-01-01 01:00:00,0.0,0.0035932657729814328,279.59771157971016,6.9755214156956145,-3.648633840874135,259.81957630364445,0.0,101684.73912170534 +2016-01-01 02:00:00,0.0,0.0036314077537655367,279.44537351586393,6.695167220896255,-3.793794643353074,262.92652180372033,0.0,101677.69331889157 +2016-01-01 03:00:00,0.0,0.0037148328456945525,279.2626169860606,6.400000095367432,-3.9937946463333063,283.7622090220937,0.0,101714.4415376205 +2016-01-01 04:00:00,0.0,0.003666565193737904,279.1515879795552,6.100000090897083,-3.791358136345178,284.16448854948777,0.0,101661.54367941627 +2016-01-01 05:00:00,0.0,0.003506176776101738,278.4319484913731,5.815208231334702,-3.5845005861406247,281.7039529883235,0.0,101657.08509091112 +2016-01-01 06:00:00,0.0,0.003472217743180523,278.05900603119136,5.600000083446503,-3.3845005831603925,285.449047758799,0.0,101569.32910179858 +2016-01-01 07:00:00,0.0,0.003339421282967604,277.91009995869587,5.492009206452185,-3.195167168742189,284.7568363865226,0.0,101565.2437170063 +2016-01-01 08:00:00,0.0,0.0032114183882627004,277.8204635242659,5.305474989337878,-2.9994227411250787,284.33908724148256,0.0,101592.42493076873 +2016-01-01 09:00:00,0.0,0.0031972172077762697,277.6736591188921,5.200000077486038,-2.865111070507163,287.6293717287682,0.0,101560.77968677547 +2016-01-01 10:00:00,0.0,0.003169247591243879,277.72927399811283,5.993794676135629,-2.600000038743019,287.92722876628926,0.0,101582.94266017125 +2016-01-01 11:00:00,0.0,0.0032139487147804405,277.7285852460166,6.776098716293788,-2.400000035762787,288.45890931887214,0.0,101566.23012087925 +2016-01-01 12:00:00,0.0,0.0032003626139475772,277.9246576731873,7.571175009452582,-2.115499498795994,295.0127417245986,0.0,101545.30177837588 +2016-01-01 13:00:00,0.0,0.0031634687860067926,277.86370456404927,7.59942280967042,-2.3000000342726707,294.5719088990179,72.92912871117632,101568.92600447695 +2016-01-01 14:00:00,0.0,0.003328218096262805,278.2377087782929,7.693794701467604,-2.500000037252903,297.47553004598393,159.546774458492,101606.25505775498 +2016-01-01 15:00:00,0.0,0.0033377141958355846,278.55729156418937,7.776098731194949,-2.6717522400152975,292.3398217165418,283.4212362973388,101556.0625649128 +2016-01-01 16:00:00,0.0,0.0034744074125070408,278.5275564814484,7.471752311540872,-2.457927877224959,292.9387883141764,354.845330657275,101497.53075493065 +2016-01-01 17:00:00,0.0,0.0034440596313057045,278.6469754267657,7.105475016159968,-2.175521344170041,293.0471551273527,366.17350008097924,101375.81337205382 +2016-01-01 18:00:00,0.0,0.0035239142738795253,278.7042189222035,6.800000101327896,-1.9625330057268457,297.05830869204726,316.1008289667603,101259.88794161819 +2016-01-01 19:00:00,0.0,0.003484324145483695,278.6207877755602,6.900000102818012,-1.0631102958942056,295.39056846883346,243.87549102766897,101208.00946781322 +2016-01-01 20:00:00,0.0,0.0034870365898273564,278.67651631844745,6.900000102818012,-0.0978025863876591,294.3644215991475,156.21269457081846,101173.09810586381 +2016-01-01 21:00:00,0.0,0.0034602643675386347,278.69370156774283,7.000000104308128,0.800000011920929,299.7602733936446,35.73215272524947,101176.35841309655 +2016-01-01 22:00:00,0.0,0.003234677680921506,278.44083110491476,7.400000110268593,0.20620541625157043,296.43338694296773,0.0,101173.61919589939 +2016-01-01 23:00:00,0.0,0.0029799469490035505,278.27448287360556,7.793143658182687,-0.45625273972918745,293.10573294834035,0.0,101207.39778728536 +2016-01-02 00:00:00,0.0,0.002903264842055047,277.46883154443225,8.171752321971685,-1.1296300253704423,287.1056637803206,0.0,101268.97555095884 +2016-01-02 01:00:00,0.0,0.0029032706814485173,277.5007157233728,8.200000122189522,-1.768336960381595,289.99698700009264,0.0,101267.44284630536 +2016-01-02 02:00:00,0.0,0.0028077228063564854,277.29621187855804,8.300000123679638,-2.4760986522187944,291.70731872705943,0.0,101299.42463509388 +2016-01-02 03:00:00,0.0,0.0028357601995319657,277.10982495222356,8.39942282159135,-3.200000047683716,278.60356819970485,0.0,101295.60693251203 +2016-01-02 04:00:00,0.0,0.0027973320827069286,276.6869173994898,8.397802710067296,-3.3054749595355553,279.36016910686936,0.0,101332.00058242452 +2016-01-02 05:00:00,0.0,0.002641649188727935,276.21102215017635,8.475521438047357,-3.500000052154064,279.2478358243153,0.0,101358.78834339316 +2016-01-02 06:00:00,0.0,0.0025870759219738765,276.0055612383109,8.551774062790622,-3.7000000551342964,253.74058578776842,0.0,101359.13905082879 +2016-01-02 07:00:00,0.0,0.002515566190095689,276.05621559999014,8.283923352597677,-3.799422753046008,254.63235847650586,0.0,101424.38258097215 +2016-01-02 08:00:00,0.0,0.0026229046690858866,275.79405995453874,8.08175430880064,-3.89379464484319,255.36037676262032,0.0,101379.93474776391 +2016-01-02 09:00:00,0.0,0.00250862470384208,275.49298605859497,7.884500650215618,-3.984500592101089,219.87537668936795,0.0,101411.95803290642 +2016-01-02 10:00:00,0.0,0.0025697078265916233,275.2067196564702,7.684500647235386,-3.9755213709921313,219.56386786161707,0.0,101448.03252845637 +2016-01-02 11:00:00,0.0,0.0023882385375553266,275.28985656230594,7.493794698487371,-4.039501426394431,218.8733272145871,0.0,101466.57088916277 +2016-01-02 12:00:00,0.0,0.002423137600147162,275.1216002320557,7.299422805200072,-4.036487615808131,214.25532371209832,0.0,101479.92147466744 +2016-01-02 13:00:00,0.0,0.0024993529873890592,275.0214534689633,7.495167232817184,-3.5698932553387333,213.8590971304366,115.41485207666632,101512.83343350895 +2016-01-02 14:00:00,0.0,0.0023715010166148434,275.2637871221141,7.693794701467604,-3.1731169276678575,213.25867806217605,252.82618131284684,101551.35311749087 +2016-01-02 15:00:00,0.0,0.002455074140882713,275.8614404274897,7.891358197439939,-2.7717522415054137,227.40213714075804,362.96004413728406,101625.38736609655 +2016-01-02 16:00:00,0.0,0.0024849670571767514,276.20579653208154,7.79379470295772,-2.188560212109045,227.96245006472216,454.80286172130025,101566.16232799899 +2016-01-02 17:00:00,0.0,0.0025641411128288446,276.3847980619931,7.699422811160536,-1.5937946105705199,227.9439233185474,469.5276563491585,101438.41281317026 +2016-01-02 18:00:00,0.0,0.002494676520292784,276.4900627968649,7.5937946999774875,-0.9994227113227565,268.9917728965031,352.7852300964983,101346.85906014999 +2016-01-02 19:00:00,0.0,0.0025016409070701484,276.7366232297292,7.587909247800283,-0.7845005444173736,267.9316826022925,272.7026562781398,101333.15734021418 +2016-01-02 20:00:00,0.0,0.0024761184529655074,276.91143318757844,7.576098728214717,-0.5711749051444542,266.46725483086817,175.51071422477727,101328.34563794544 +2016-01-02 21:00:00,0.0,0.002542666819292142,276.72371446995174,7.500000111758709,-0.29379459119901014,285.743927573396,34.8516276745631,101294.38171266665 +2016-01-02 22:00:00,0.0,0.002546286777598364,276.8180158918298,7.200000107288361,-0.4695547921302858,285.52502698431573,0.0,101353.95015264374 +2016-01-02 23:00:00,0.0,0.002678021206053008,276.887010942009,6.800000101327896,-0.575521320328183,286.10699467591735,0.0,101384.40134511564 +2016-01-03 00:00:00,0.0,0.002680503120180596,276.52665233784944,6.500000096857548,-0.755675440621131,289.0772711893211,0.0,101402.01766683927 +2016-01-03 01:00:00,0.0,0.00275671017694667,276.64721603425056,6.600000098347664,-0.15410869908179478,290.350375957622,0.0,101480.49088495155 +2016-01-03 02:00:00,0.0,0.002893291505387041,276.66507440822016,6.70000009983778,0.5086419277298146,291.3705220741608,0.0,101421.53257638049 +2016-01-03 03:00:00,0.0,0.0029088800813840236,276.7701397788629,6.8191911235711835,1.100577319969682,293.96737115578907,0.0,101344.30149494979 +2016-01-03 04:00:00,0.0,0.0029084227447423398,276.86430653594624,7.299422805200072,0.9282478136288829,293.2149987577897,0.0,101314.12283407187 +2016-01-03 05:00:00,0.0,0.0028322314253584452,276.4990849640473,7.693143656692571,0.8154994794244843,290.15419750246707,0.0,101250.73385993778 +2016-01-03 06:00:00,0.0,0.00294923094644045,276.4176385620477,8.084500653195851,0.6344532224298727,288.7030192117721,0.0,101236.53327831553 +2016-01-03 07:00:00,0.0,0.003001470037839295,277.02699166021824,8.08415974635608,1.124478705003791,291.19325252205755,0.0,101211.1536264953 +2016-01-03 08:00:00,0.0,0.0029529024433181316,276.79082221599185,8.00000011920929,1.6239014088759667,289.7456721211381,0.0,101129.46725997911 +2016-01-03 09:00:00,0.0,0.003099051977288561,276.8636483953883,8.00000011920929,2.1000000312924385,272.9187601622481,0.0,101033.84380503773 +2016-01-03 10:00:00,0.0,0.003226129136255531,277.3587873836069,8.200000122189522,2.7000000402331352,274.19542929583713,0.0,100963.00960378787 +2016-01-03 11:00:00,0.0,0.003080610088976048,278.347702476709,8.468337060219376,3.300000049173832,275.73157095380486,0.0,100944.0102295082 +2016-01-03 12:00:00,0.0,0.003134177040427163,279.15878981908946,8.660021973524033,3.9000000581145287,245.51608071915913,0.0,100947.69285442219 +2016-01-03 13:00:00,0.0,0.003682317728127096,279.9538179571165,8.684500662136548,4.700000070035458,248.53149741426105,111.93962098043627,100904.84498672758 +2016-01-03 14:00:00,0.0,0.0035156876018954037,280.4117198063403,8.700000129640102,5.408645029043602,247.23370601085716,245.55396461017457,100912.88010658688 +2016-01-03 15:00:00,0.0,0.0033795360184548577,280.5172927167396,8.72824792985794,6.200000092387199,242.1974954206017,372.79453064479117,100895.25184258516 +2016-01-03 16:00:00,0.0,0.0031885954033239617,280.7971853237401,8.915499600123889,4.73039190643034,241.30010028396916,467.22333858288874,100833.8679425601 +2016-01-03 17:00:00,0.0,0.003319660075800753,280.54893302436915,9.023901519144559,3.3244787377863454,240.23139597798752,482.79038367530586,100757.75567824178 +2016-01-03 18:00:00,0.0,0.0034490841946540896,280.460839943365,9.200730640000298,1.844324598121888,237.41480443304758,420.9893903267144,100664.01154787064 +2016-01-03 19:00:00,0.0,0.003353868445112894,280.37926432536244,8.600000128149986,1.12882512018752,238.29679140548598,326.1258939638116,100618.57059816239 +2016-01-03 20:00:00,0.0,0.003191583757898139,280.04094523509593,8.00000011920929,0.4994227038721758,237.950223751123,210.64791510261603,100642.5483741198 +2016-01-03 21:00:00,0.0,0.0030651013635254964,279.32520996410136,7.379449373134444,-0.22488415752444849,233.14628418993726,46.610132488866874,100698.38861321853 +2016-01-03 22:00:00,0.0,0.0030099642992801974,278.9317189058882,7.284500641274922,-1.1000000163912773,232.66750136116806,0.0,100764.22827268625 +2016-01-03 23:00:00,0.0,0.0029985147471853577,278.5070414862694,7.25508657893044,-1.9000000283122063,232.28223687163643,0.0,100843.37868836717 +2016-01-04 00:00:00,0.0,0.0030573438039427064,278.23565322459865,7.155675535988563,-2.775521353110738,229.85971466631605,0.0,100937.80339873303 +2016-01-04 01:00:00,0.0,0.003144795102422838,278.2944538981523,6.565546884858489,-3.1711749438874737,233.98494093464024,0.0,100966.06956117254 +2016-01-04 02:00:00,0.0,0.0031760426860306164,278.1395202204065,5.8937946746455125,-3.5006420835742618,237.0148904758054,0.0,100962.1285409595 +2016-01-04 03:00:00,0.0,0.003011341241622859,278.0714464301546,5.300000078976154,-3.8920091826103267,276.6034704633043,0.0,100972.78233909592 +2016-01-04 04:00:00,0.0,0.0031076514077734477,277.95647429569914,4.976098689471697,-3.9978026445021873,277.9094006904247,0.0,100985.11488287586 +2016-01-04 05:00:00,0.0,0.0031676107886461176,277.83539394833065,4.665546856546282,-4.100000061094761,278.93227733370446,0.0,100947.9719147028 +2016-01-04 06:00:00,0.0,0.0032333585719027413,277.5984157690935,4.354108761666672,-4.200000062584877,268.9351040268205,0.0,100929.55017697485 +2016-01-04 07:00:00,0.0,0.003228080945115917,277.3499844208154,3.6655468416451207,-4.279449326940846,267.6703715361454,0.0,100992.71857978778 +2016-01-04 08:00:00,0.0,0.003598444711660132,276.9917581380381,2.976098659669375,-4.300000064074993,267.77201433372005,0.0,101003.36376803846 +2016-01-04 09:00:00,0.0,0.003340332305149886,276.48935714721773,2.3634027860965667,-4.300000064074993,289.16414342165945,0.0,100980.78912086676 +2016-01-04 10:00:00,0.0,0.0032497840836153975,275.3639829255347,1.5000000223517418,-4.799422767947169,284.71415398521015,0.0,101040.48982280713 +2016-01-04 11:00:00,0.0,0.003175714766665292,275.16963914583096,0.800000011920929,-5.271752278758317,284.1104796039456,0.0,101108.15080714827 +2016-01-04 12:00:00,0.0,0.0030754284486020998,274.7504416751076,0.002197415102457027,-5.69379467166528,301.81051063329704,0.0,101177.90054367331 +2016-01-04 13:00:00,0.0,0.0028944011698045662,274.44409338749296,-0.28450053696679295,-6.000000089406967,300.4270171023753,43.364461722463965,101228.50435948081 +2016-01-04 14:00:00,1.3735223142003518e-05,0.0029055997983681776,273.96755233448226,-0.5739650521931352,-6.3000000938773155,299.7305719333272,95.27063495722298,101297.23054868578 +2016-01-04 15:00:00,0.0,0.0029679751515298922,273.70644245009424,-0.8655467999218691,-6.535866843614153,294.0510788889101,137.64406600359666,101294.87923683721 +2016-01-04 16:00:00,0.0,0.002992813782021481,273.0087048357469,-0.5845005414371414,-7.200000107288361,292.8837354332644,172.5624579599273,101372.03613339717 +2016-01-04 17:00:00,0.0,0.0028456998335912773,273.0748815493394,-0.3696081695655824,-7.7978027011266,293.6243657056088,178.449430754218,101326.90231765204 +2016-01-04 18:00:00,0.0,0.0028295721047671757,272.4387754030999,-0.10000000149011612,-8.3845006576662,278.56617274730974,210.07494665008355,101303.70001261868 +2016-01-04 19:00:00,4.575682182209675e-06,0.002551729485290275,272.04594684015694,-0.0978025863876591,-8.373117005153896,276.15509148005094,163.09697859959235,101320.88004350709 +2016-01-04 20:00:00,0.0,0.0024153018364098835,271.3815400855545,-0.08856018081660612,-8.295167244738112,273.4030892391557,105.72158192814364,101504.95546216772 +2016-01-04 21:00:00,1.7167474780648007e-05,0.002454369430321996,270.76009734327755,-0.08209509643112173,-8.27944938654549,250.90357489325163,31.350120028550215,101608.62930120542 +2016-01-04 22:00:00,0.0,0.0022801796687030706,270.36161986538764,-0.5048976142338997,-8.889975575478504,249.8019411946736,0.0,101740.39401087395 +2016-01-04 23:00:00,0.0,0.002139894324967567,270.2610959174233,-0.9760986298670523,-9.55567557175135,250.08660443228,0.0,101815.991609152 +2016-01-05 00:00:00,4.961207621701029e-06,0.0019515790920959107,270.1837496049264,-1.4655468088625658,-10.162533127916367,216.66973076259174,0.0,101882.01682822256 +2016-01-05 01:00:00,6.3864465623690765e-06,0.0018708253168504651,270.0501513291988,-1.6631103048349023,-9.983923377929651,217.9773709694555,0.0,101988.49437203878 +2016-01-05 02:00:00,6.3864465623690765e-06,0.0017495265498302308,269.40147862426517,-1.8562527605908132,-9.86511117481529,217.44902159129853,0.0,102089.96518456357 +2016-01-05 03:00:00,0.0,0.0016417971401423543,268.5745821592344,-2.055675459992641,-9.700000144541264,243.37533856846358,0.0,102202.01637325739 +2016-01-05 04:00:00,0.0,0.0015997107979366263,267.8345886949647,-1.6711749215357317,-10.771752360714704,241.14636164251235,0.0,102291.84514163277 +2016-01-05 05:00:00,0.0,0.0014966298429945164,266.9622946663183,-1.2760986343374006,-11.85567560602402,238.14459847728702,0.0,102367.58799227151 +2016-01-05 06:00:00,0.0,0.0014360608859777186,266.27492755071535,-0.9000000134110451,-12.939282829380543,218.36492496511994,0.0,102435.0910710819 +2016-01-05 07:00:00,0.0,0.0014738795875983085,265.73045261099674,-0.9000000134110451,-12.061874358107946,219.56776083031878,0.0,102627.34595274474 +2016-01-05 08:00:00,0.0,0.0014740183993585364,265.3921857859246,-0.8994227098326404,-11.248056650544555,221.08316200626612,0.0,102708.83657969732 +2016-01-05 09:00:00,0.0,0.001442945447026791,264.85629018077344,-0.8845005459074897,-10.374186576970732,237.55014314732557,0.0,102756.59290109767 +2016-01-05 10:00:00,0.0,0.0012080354743886064,264.18752769277387,-0.9845005473976058,-10.755675589632743,234.8593476562632,0.0,102819.49970768101 +2016-01-05 11:00:00,0.0,0.0011891004620169236,263.44135077978933,-1.1545091844549524,-11.131774210559097,234.2599060687789,0.0,102979.2265347425 +2016-01-05 12:00:00,0.0,0.001139948486037942,263.3770623365185,-1.2500473383787782,-11.506042512246545,230.85633688661648,0.0,103078.1651390677 +2016-01-05 13:00:00,0.0,0.0011713450509294764,263.52424246367434,-1.1655468043922175,-10.53015409009435,231.04182693568427,85.72174160974079,103269.55253914844 +2016-01-05 14:00:00,0.0,0.001199804788914886,264.19832527954725,-1.0641332696346715,-9.551419996388228,232.70890930308784,188.1756900957173,103258.65373237555 +2016-01-05 15:00:00,0.0,0.0012030111742300565,265.2341746318669,-0.9154994809146004,-8.57126586417435,206.8378458402403,334.9706405480584,103386.41761182784 +2016-01-05 16:00:00,0.0,0.0011290175751188147,266.2369901122141,-0.8080676569198556,-8.16931602030567,207.16062920889786,420.1965307293912,103343.28649937198 +2016-01-05 17:00:00,0.0,0.0012189779856685208,267.3084536392724,-0.7937945986495908,-7.758109767145754,209.60589334725188,434.84663390311766,103253.17776079095 +2016-01-05 18:00:00,0.0,0.0013114193760897556,268.706482696056,-0.6820951053718185,-7.3564896496612375,201.66073346076845,415.29150991511926,103242.62672914463 +2016-01-05 19:00:00,0.0,0.0011150264172651518,269.9930112974659,-0.39379459268912625,-5.969487825169818,201.771768017439,322.8918799572482,103267.83857762792 +2016-01-05 20:00:00,0.0,0.0009769991335863864,270.83871216890583,-0.1631102824831604,-4.5760986835112325,200.95023457418267,210.48130416272727,103330.91919627019 +2016-01-05 21:00:00,0.0,0.0010047884026181011,270.8416444801928,0.1305122657272658,-3.200000047683716,188.29598557423625,56.536970847136025,103359.51202355871 +2016-01-05 22:00:00,0.0,0.0010251092209911247,270.80895582905936,0.5344532209397566,-3.181754235784951,187.61078856286872,0.0,103435.78840653565 +2016-01-05 23:00:00,0.0,0.0010714796357749429,270.6558197910286,0.934453226900221,-3.1698932493782688,186.70116633269086,0.0,103472.10076725461 +2016-01-06 00:00:00,0.0,0.001082324957862428,270.91977396012106,1.3344532328606855,-3.2220897540027136,188.56097068851824,0.0,103477.03215715724 +2016-01-06 01:00:00,0.0,0.001181571748988497,270.52121290960133,1.536597272017962,-2.739501407022922,188.05443038351913,0.0,103487.19399048341 +2016-01-06 02:00:00,0.0,0.0011667395752355315,270.826550741215,1.8062054400934282,-2.2634027846064506,188.34924392395624,0.0,103511.75821700232 +2016-01-06 03:00:00,0.0,0.0011604291055039196,271.0507558351773,2.0062054430736604,-1.7741864488207477,188.9330590097349,0.0,103475.419686359 +2016-01-06 04:00:00,0.0,0.0016304748316866063,271.6660465336086,2.600000038743019,-2.1711749289863125,194.4318068745315,0.0,103493.77521575858 +2016-01-06 05:00:00,0.0,0.0016802636977672266,271.75687154516294,3.1000000461935997,-2.569893240437572,194.07762758042227,0.0,103502.83245591579 +2016-01-06 06:00:00,0.0,0.0018510014578649605,271.78711614295344,3.671752254916459,-2.966879435811736,197.22996905480832,0.0,103399.21628631862 +2016-01-06 07:00:00,0.0,0.00197776234438168,272.31717436472,3.89379464484319,-2.649706452400633,198.89432123800407,0.0,103495.12663220231 +2016-01-06 08:00:00,0.0,0.0017995278177443943,272.3818383166851,4.17175226236704,-2.255675462972873,197.21236372766163,0.0,103352.90884862671 +2016-01-06 09:00:00,0.0,0.0018070211932585834,272.54062246897786,4.399422761986704,-1.939912978036276,197.63383902863734,0.0,103345.39692074654 +2016-01-06 10:00:00,0.0,0.0018612383705306629,273.168701367641,4.400000065565109,-1.0535314089144352,198.94198070656796,0.0,103299.97734310346 +2016-01-06 11:00:00,0.0,0.002164588670079503,273.8465089598755,4.400000065565109,-0.09942269791171136,202.0956166994248,0.0,103305.33505255879 +2016-01-06 12:00:00,0.0,0.0024424489943667155,273.8577170975369,4.32824786429283,0.7994227083425242,204.14050430690696,0.0,103357.4994588121 +2016-01-06 13:00:00,0.0,0.0024960259175446616,274.5634048625088,4.800000071525574,1.0994227128128726,203.6905769484162,119.34865658828637,103413.70848827434 +2016-01-06 14:00:00,0.0,0.0026954261968502326,275.7358025662156,5.226691609568828,1.399422717283221,205.31326213630604,261.86282142775906,103362.53700980905 +2016-01-06 15:00:00,0.0,0.002689575420458851,276.4494637350005,5.700000084936619,1.700000025331974,212.52107787658394,389.64027745043273,103351.18937558618 +2016-01-06 16:00:00,0.0,0.002402936701760785,276.8305130995508,5.900000087916851,1.8994227247338014,210.57629624453446,489.31436081989926,103340.9763439341 +2016-01-06 17:00:00,0.0,0.0021622344482222712,276.96352609965504,6.17609870735309,2.0920091557882365,207.82682320317969,506.548860414562,103247.64744215425 +2016-01-06 18:00:00,0.0,0.0020630738832495576,277.2513551573601,6.384500627863876,2.292009158768469,211.95106826996607,442.76183692772,103167.38887001266 +2016-01-06 19:00:00,0.0,0.0018568628541183556,277.51385522356776,6.475115942313331,2.39780262066033,210.2067653753177,345.00838439685157,103028.98315314815 +2016-01-06 20:00:00,0.0,0.0018030891709987147,277.5378676545063,6.555086568499627,2.500000037252903,208.67220283677972,225.80681605715213,103003.67730888983 +2016-01-06 21:00:00,0.0,0.0020078515039799833,277.4560417934882,6.578872057635111,2.5337227478324644,209.92285370619,57.605634301742995,103017.02614157811 +2016-01-06 22:00:00,0.0,0.0021839540709736455,277.32678276592867,6.475521408245034,2.6945251298714115,210.33604049854515,0.0,102982.0630102964 +2016-01-06 23:00:00,0.0,0.002214133275585318,277.4300100920108,6.371752295149594,2.7705859793787706,210.4454807286132,0.0,102963.23278816906 +2016-01-07 00:00:00,0.0,0.0024460637249896578,277.39303350835957,6.200000092387199,2.8695548278930727,211.8938532337558,0.0,102921.02825643221 +2016-01-07 01:00:00,0.0,0.0025206630519029345,277.5011530544327,6.093794677625745,2.4741864592515603,212.45577821982803,0.0,102989.1151499391 +2016-01-07 02:00:00,0.0,0.0027817640061297503,277.25114359568425,5.971174985610724,2.0937946180211005,212.86753368562637,0.0,102947.41963175665 +2016-01-07 03:00:00,0.0,0.0028747664672060225,277.4705095313592,5.784500618923179,1.700000025331974,218.30488837844695,0.0,102885.88966734652 +2016-01-07 04:00:00,0.0,0.0027779584129013013,277.2861781426377,5.775521397814221,1.5000000223517418,217.29311381599024,0.0,102912.19624107727 +2016-01-07 05:00:00,0.0,0.002822663125100925,276.623114144397,5.769487822189586,1.2000000178813934,215.5071983097612,0.0,102831.2798066197 +2016-01-07 06:00:00,0.0,0.0031710311343781327,276.8602707821384,5.755675515126937,1.0000000149011612,219.01429842535413,0.0,102791.69535536884 +2016-01-07 07:00:00,0.0,0.002897390492201042,277.04722457182766,5.365546866977095,0.6282478091585344,219.0957185431978,0.0,102813.74298233213 +2016-01-07 08:00:00,0.0,0.0024483777389756466,276.9340996333462,4.899422769437285,0.23039183937511432,217.14727682678165,0.0,102717.52726578337 +2016-01-07 09:00:00,0.0,0.002719475803625574,277.0018980838284,4.500000067055225,-0.08450053398656071,217.10039026726463,0.0,102673.06403852045 +2016-01-07 10:00:00,0.0,0.0023707374459180745,276.9442464635228,4.669030930062171,0.006205413271338173,215.5825154963817,0.0,102632.75394731402 +2016-01-07 11:00:00,0.0,0.0022470972534227324,277.34612002582463,4.765546858036398,0.10000000149011612,216.60600931037197,0.0,102693.20720118527 +2016-01-07 12:00:00,0.0,0.002444155298597509,277.88238460819343,4.86924222993521,0.13372271206967762,216.390761943429,0.0,102616.8349814164 +2016-01-07 13:00:00,0.0,0.002790080621185446,277.7040255189259,4.371174961768866,-0.10000000149011612,217.1981846536348,116.98734086275287,102655.32733870037 +2016-01-07 14:00:00,0.0,0.0030489047376670068,277.74569890264394,3.8000000566244125,-0.4000000059604645,217.96237700543256,256.38261432374634,102610.43678195318 +2016-01-07 15:00:00,0.0,0.002532243245531262,277.9142256630084,3.300000049173832,-0.7000000104308128,221.77611811790368,376.4673545378279,102624.26871616236 +2016-01-07 16:00:00,0.0,0.002421328302978136,277.9843697151033,2.600000038743019,-0.8662773028314836,221.54308279387556,472.7592199778905,102598.21741040304 +2016-01-07 17:00:00,0.0,0.0028431129976583492,278.4552019323161,1.8845005608086507,-1.0000000149011612,225.49649120372032,489.9302113352335,102494.61833622941 +2016-01-07 18:00:00,0.0,0.003327438829520119,278.71488361628695,1.1755213292688798,-1.184500550377838,238.43167046367506,425.4998904078522,102395.85155430078 +2016-01-07 19:00:00,0.0,0.003099230684334825,279.30872555195515,0.37609862092635565,-0.5000000074505806,238.42520765912795,332.2591229753884,102323.1108189554 +2016-01-07 20:00:00,0.0,0.003274387639897332,279.2855415466573,-0.4154994734640199,0.10000000149011612,238.25463003312151,218.47810419769195,102306.22351687911 +2016-01-07 21:00:00,0.0,0.0031563640404204795,278.96100407904123,-1.2687115310084431,0.7717522117030913,242.2822573834235,57.23278281728501,102284.70383356759 +2016-01-07 22:00:00,0.0,0.0031216843735897637,278.7904524728575,-1.4000000208616257,0.10000000149011612,240.25060142443485,0.0,102349.12732383127 +2016-01-07 23:00:00,0.0,0.0030315876412379543,278.0518969908162,-1.5994227202634532,-0.5760986239065878,235.83896954873865,0.0,102296.23302393973 +2016-01-08 00:00:00,0.0,0.002803696501461105,278.1758330738437,-1.7845005593185346,-1.2556754480717116,228.58245864028854,0.0,102306.61160210466 +2016-01-08 01:00:00,0.0,0.002963216947501447,277.18343712569185,-1.9000000283122063,-1.3655468073724497,226.91469802259917,0.0,102324.65517840958 +2016-01-08 02:00:00,0.0,0.0031404854374643444,277.1483722222731,-2.1000000312924385,-1.4760986373176328,228.15168770522362,0.0,102318.70646796559 +2016-01-08 03:00:00,0.0,0.003268064180902988,277.39838146672275,-2.21549950028611,-1.600000023841858,233.41217786271454,0.0,102233.84675009648 +2016-01-08 04:00:00,0.0,0.0033684111567799484,276.9600569145225,-2.6239014237771277,-2.1879091673340123,232.2400101377975,0.0,102243.11535436628 +2016-01-08 05:00:00,0.0,0.0034121952905257526,276.975949706271,-3.0282478449213213,-2.7717522415054137,232.38283839791828,0.0,102206.56401823313 +2016-01-08 06:00:00,0.0,0.0033889911175675335,276.8652106687937,-3.500000052154064,-3.354108746765511,231.75840955580358,0.0,102149.43918712513 +2016-01-08 07:00:00,0.0,0.0034355375582966192,276.33218860602227,-3.969608223209763,-3.557517351800756,230.62386135864176,0.0,102182.47853748765 +2016-01-08 08:00:00,0.0,0.003649305284591843,276.4025312811232,-4.393794652293771,-3.684500587630741,232.17922538307624,0.0,102109.41385414175 +2016-01-08 09:00:00,0.0,0.0038394827237264047,276.25527731475245,-4.875521384403176,-3.884500590610973,235.68787156188475,0.0,102103.79234284439 +2016-01-08 10:00:00,0.0,0.003956906008084271,276.7770451837884,-5.555420080824632,-4.245310201841217,237.44278880434476,0.0,102122.44026527498 +2016-01-08 11:00:00,0.0,0.004360283602775949,277.2384121682669,-6.231774137543409,-4.540479207895413,239.86862572735313,0.0,102117.35906879055 +2016-01-08 12:00:00,0.0,0.004176962509953192,276.9634928966183,-6.916926814423649,-4.841068170914,238.0739800791525,0.0,102127.55141127958 +2016-01-08 13:00:00,0.0,0.004281557811951205,277.80364983701674,-6.730154033469937,-4.769893273220127,239.93570294376462,111.90000166743994,102171.9139767665 +2016-01-08 14:00:00,0.0,0.0043511050071971535,278.1969420353795,-6.543509461816217,-4.766911538238378,240.35731467019696,244.98159566782343,102194.50738706056 +2016-01-08 15:00:00,0.0,0.004460239698800857,279.30755735047063,-6.293794680605977,-4.7647753561891655,255.00630231593368,346.4790322774611,102243.19214594018 +2016-01-08 16:00:00,0.0,0.00453373030154641,279.64276831886775,-6.576098713313556,-4.384500598061553,255.80568302160842,435.27006633368615,102175.89792873472 +2016-01-08 17:00:00,0.0,0.004350119172497648,280.09385241540633,-6.863556052483002,-4.064133314338155,255.99825112588863,451.14021890140725,102219.50391904225 +2016-01-08 18:00:00,0.0,0.00424802930602684,280.06033718571973,-7.076098720764136,-3.7000000551342964,304.78493724185506,339.45223819376713,102188.5883920557 +2016-01-08 19:00:00,0.0,0.0042558315300400195,279.9034466064807,-6.97609871927402,-3.864133311357923,304.24582103954475,265.5019133989073,102199.42586147277 +2016-01-08 20:00:00,0.0,0.004097563155097625,279.6120394197065,-6.875115948273796,-3.984500592101089,302.4933125876732,175.40518324189915,102137.2274880599 +2016-01-08 21:00:00,0.0,0.004018043159024523,279.48753708744033,-6.765546887838721,-4.165546849095701,299.6639767068958,43.79892057251406,102118.91889833692 +2016-01-08 22:00:00,0.0,0.004125466187738364,279.1843794192254,-7.338924171989858,-3.8609663014404125,299.0306545524257,0.0,102238.24063936037 +2016-01-08 23:00:00,0.0,0.00415249185121742,278.8049604612031,-7.838631708609588,-3.5550976362584303,297.6849477401094,0.0,102199.31251680481 +2016-01-09 00:00:00,0.0,0.004129477105530536,278.8634368704014,-8.408239881155403,-3.2486338349136705,293.5758754186178,0.0,102144.62328803688 +2016-01-09 01:00:00,0.0,0.004159124460617399,279.0423660818416,-7.623424708956652,-2.984500577199928,295.02066311493854,0.0,102165.02504554097 +2016-01-09 02:00:00,0.0,0.004296440147007841,279.20436628061225,-6.838273119764247,-2.776098656689143,296.74363108503167,0.0,102159.26196797604 +2016-01-09 03:00:00,0.0,0.004285221938838971,279.11699005643857,-6.05319057658047,-2.5705859763985384,281.17032662762034,0.0,102203.63166318172 +2016-01-09 04:00:00,0.0,0.004408948285352374,279.42329140681073,-6.155675521087401,-2.600000038743019,282.59444948857487,0.0,102262.2391228337 +2016-01-09 05:00:00,0.0,0.00435965324265703,279.5530185553593,-6.263110373380243,-2.7000000402331352,282.5385006929089,0.0,102233.22473413253 +2016-01-09 06:00:00,0.0,0.004426291600662045,279.38270043609043,-6.369893297061985,-2.728247840450973,314.63458383307244,0.0,102151.62972033852 +2016-01-09 07:00:00,0.0,0.004474910979968658,279.29525439883764,-6.2845006263737595,-2.8937946299420294,313.185683143965,0.0,102262.33014132798 +2016-01-09 08:00:00,0.0,0.004526078280329393,279.3143043480538,-6.271752293659478,-2.984500577199928,312.1293751836883,0.0,102181.35268760225 +2016-01-09 09:00:00,0.0,0.004636237680931591,279.22996949187507,-6.189735032285816,-3.0839232751116397,327.7266365178163,0.0,102139.33169689828 +2016-01-09 10:00:00,0.0,0.004688012030785129,279.16249742499053,-6.2728218356739935,-2.7655468282340756,326.94097299277706,0.0,102161.73383856234 +2016-01-09 11:00:00,0.0,0.004629104416907417,279.09326527131867,-6.365546881878256,-2.3760986507286783,325.80747154722803,0.0,102207.42887839576 +2016-01-09 12:00:00,0.0,0.004712687949044813,279.2475609566877,-6.4556755255577505,-1.9994227262239175,306.8908742962953,0.0,102179.00444106998 +2016-01-09 13:00:00,0.0,0.004754556194030727,279.3664434712548,-6.855675531518215,-1.5756931728760464,306.8893212873073,78.16970935115617,102238.85461620244 +2016-01-09 14:00:00,0.0,0.00491603312032096,279.4959318614259,-7.265965392528784,-1.1000000163912773,307.3372375303124,170.74244355852886,102198.99122748342 +2016-01-09 15:00:00,0.0,0.004930088212816266,279.75302268328363,-7.6692422716584625,-0.6303918453355788,326.8640743793224,219.84299517023257,102252.27812575838 +2016-01-09 16:00:00,0.0,0.005105694197244405,279.97984514007516,-7.4698933134532615,-0.5239013924846895,327.52822269889,276.2306688859174,102326.27362580273 +2016-01-09 17:00:00,0.0,0.005128096365827202,280.2261820358326,-7.2717523085606395,-0.4000000059604645,327.47694544559215,286.5864167090279,102211.89863962776 +2016-01-09 18:00:00,0.0,0.0050687873582935,280.3242645022722,-7.000000104308128,-0.30000000447034836,331.05597478896146,188.02188841948228,102136.96754684323 +2016-01-09 19:00:00,0.0,0.005230560391648051,280.6032010368444,-7.2717523085606395,-0.27609861943623953,332.361154145349,147.30897503334575,102194.0718254564 +2016-01-09 20:00:00,0.0,0.005460373551594912,280.6889475727081,-7.476098726724601,-0.27000863854746265,332.9206613511205,97.71930743487259,102102.82376128959 +2016-01-09 21:00:00,0.0,0.0054134554293852446,280.6023940370268,-7.684500647235386,-0.18450053547667683,334.1156139068093,24.374129725519364,102062.49379901274 +2016-01-09 22:00:00,0.0,0.0056990733870495806,280.66922589212675,-7.865546904229999,-0.4698932091451336,335.7967552199673,0.0,102102.46043930225 +2016-01-09 23:00:00,0.0,0.005722677213532101,280.8513850559009,-8.056252852978012,-0.7596163898731573,336.84804983380087,0.0,102113.45318180931 +2016-01-10 00:00:00,0.0,0.005528848336687108,280.93914652087636,-8.169893323884073,-1.050047335398546,337.80616610733244,0.0,102177.47441786336 +2016-01-10 01:00:00,0.0,0.005913065546706319,280.70376432855323,-7.965546905720115,-0.8556754421112471,339.0096952662877,0.0,102183.06713540107 +2016-01-10 02:00:00,0.0,0.005798025225852616,280.5731209022761,-7.684500647235386,-0.6562527427094197,338.8374775455934,0.0,102176.29671329746 +2016-01-10 03:00:00,0.0,0.005878704755569233,280.51001111911694,-7.471752311540872,-0.39379459268912625,340.24525551116943,0.0,102126.25133098023 +2016-01-10 04:00:00,0.0,0.005875450264230529,280.4997990033513,-7.500000111758709,-0.4845005399470252,339.48284108859804,0.0,101990.35237740492 +2016-01-10 05:00:00,0.0,0.005699999856005888,279.97153574610894,-7.600000113248825,-0.5839232378587366,335.8642564935626,0.0,101894.24766635768 +2016-01-10 06:00:00,0.0,0.006006008142809832,280.38614856716305,-7.700000114738941,-0.6809962321800229,330.7601342307858,0.0,101785.96108367757 +2016-01-10 07:00:00,0.0,0.005920056759362371,280.2107838726775,-8.400000125169754,-0.4698932091451336,329.1091365840984,0.0,101824.85912335894 +2016-01-10 08:00:00,0.0,0.005964940606152215,280.35593125854194,-9.100000135600567,-0.2698932061649013,329.2559858088873,0.0,101650.30242507231 +2016-01-10 09:00:00,0.0,0.0062554252832166405,280.57474379147567,-9.80000014603138,-0.06768589027458884,325.43133329438854,0.0,101497.61969317596 +2016-01-10 10:00:00,0.0,0.006460734011604564,281.1220032830172,-10.100000150501728,0.5437472751719737,327.4256102783721,0.0,101420.62566506078 +2016-01-10 11:00:00,5.2292858161990213e-05,0.006709741468724372,281.8867746800701,-10.500000156462193,1.224478706493907,330.4969319821856,0.0,101313.71189405398 +2016-01-10 12:00:00,1.5516670342416157e-05,0.007058606587083287,282.4284409833527,-10.884159788079332,1.8323417011251888,357.2757236700231,0.0,101116.37936822997 +2016-01-10 13:00:00,6.512392973243891e-05,0.007452352414736186,283.2902259114947,-11.175647506185953,3.8349771947665805,360.048102763681,34.42316370692937,101079.58238599123 +2016-01-10 14:00:00,0.00014181868892499273,0.0077189364614427235,283.6500712317759,-11.415499637376792,5.8365973360929555,359.9208839214095,75.0637845459107,100800.83343018721 +2016-01-10 15:00:00,0.00013165444857902758,0.007617919614449284,284.02015358944465,-11.718823289820756,7.836597365895278,353.2761046478726,159.21482705937274,100508.5526496848 +2016-01-10 16:00:00,0.00013140158825793286,0.008446396005194638,285.1123327688745,-9.535608504714563,9.215499604594237,359.7277081012467,200.05654058172647,100246.95907804024 +2016-01-10 17:00:00,0.00018943252150229486,0.008913750464178334,285.8746486049239,-7.424478798881107,10.526335763712796,363.8063313723834,207.63665157403884,100070.85773625628 +2016-01-10 18:00:00,6.889329714749675e-05,0.008865268445724005,286.2289464911746,-5.31549954647971,11.900000177323818,366.1921257553707,231.9005056703359,99908.61435569014 +2016-01-10 19:00:00,9.063925361517005e-05,0.008788245553215094,286.0423561220462,-3.300000049173832,11.400000169873238,364.26880389589644,182.12037778492132,99791.63383712101 +2016-01-10 20:00:00,0.00020359722966273972,0.009047014472132027,286.2131467635113,-1.2793847231454298,10.808408712771238,365.0102061465279,121.3272517938357,99569.97359020793 +2016-01-10 21:00:00,0.00011384479347505281,0.00878259827337162,285.5232517072496,0.7288251142270553,10.30000015348196,342.90290786530585,33.24480645416379,99474.00156517253 +2016-01-10 22:00:00,6.841003219930508e-06,0.008872541470366585,285.87147849761004,1.9282478285300442,9.210265197192067,345.209811923584,0.0,99393.59301306168 +2016-01-10 23:00:00,0.0,0.008881327527567753,285.4401408219753,3.1070238532996926,8.04196192469782,343.76050912796507,0.0,99296.6287828698 +2016-01-11 00:00:00,0.0,0.00849676426178494,284.64642432455224,4.300000064074993,6.9443246741178095,313.94592535174723,0.0,99326.5407759595 +2016-01-11 01:00:00,0.0,0.007986663704615619,284.16332061942893,5.629414145790983,5.235104335750247,311.97391070783067,0.0,99414.97488103135 +2016-01-11 02:00:00,0.0,0.007333866081061894,283.4870931456631,7.0154995718116835,3.6000000536441803,308.7852580604346,0.0,99469.7753400411 +2016-01-11 03:00:00,0.0,0.007100445567864973,283.71728859367806,8.331817873329745,1.882095123253212,279.60352199081956,0.0,99447.11191231475 +2016-01-11 04:00:00,0.0,0.006576474883066549,283.3085158463829,8.928247932838172,1.1994227143029887,280.10451285255476,0.0,99590.81776452396 +2016-01-11 05:00:00,0.0,0.004945824290114916,281.57024785454905,9.600000143051147,0.5760986239065878,272.0364522740097,0.0,99732.37925804766 +2016-01-11 06:00:00,0.0,0.00422664048935187,280.4674573767139,10.176098766957736,-0.034453213489175905,245.29334463998217,0.0,99767.664810886 +2016-01-11 07:00:00,0.0,0.0038422685590490044,279.858237736574,10.200000151991844,-0.6114398296142067,246.00632779188072,0.0,99899.3149771351 +2016-01-11 08:00:00,0.0,0.003642637148145612,279.13683283913093,10.30000015348196,-1.134888989097482,247.23308346261794,0.0,100058.76477267258 +2016-01-11 09:00:00,0.0,0.0033046383204440215,278.5276481098781,10.315499620985515,-1.700000025331974,286.7873946229381,0.0,100109.34767667584 +2016-01-11 10:00:00,0.0,0.0028943920282495416,277.9939923958214,10.623901542986417,-1.6662773147524124,286.4971372583631,0.0,100349.94826807172 +2016-01-11 11:00:00,0.0,0.002807383261409119,277.29562530961147,10.974527492751202,-1.576098638807749,287.4768528146978,0.0,100448.61693731516 +2016-01-11 12:00:00,0.0,0.002297504516607976,276.2440092939178,11.284500700879567,-1.4845005548481864,279.9928271527842,0.0,100634.6987216241 +2016-01-11 13:00:00,0.0,0.0021170118006903532,275.3257155419853,11.175693315927195,-1.600000023841858,277.37034943549867,93.18771129877678,100752.69157876844 +2016-01-11 14:00:00,0.0,0.002181814206302273,275.1772050409641,11.071752365185052,-1.7760986417879814,280.1066062545966,202.51260224454114,100856.94163385559 +2016-01-11 15:00:00,0.0,0.0021256153644658004,275.1050122921589,10.969608327517891,-1.9000000283122063,232.7614128205807,376.23044915244367,100898.60680871713 +2016-01-11 16:00:00,0.0,0.002201942645283684,275.08098968383973,10.776098775898433,-1.2000000178813934,233.96297073930404,473.17191566256145,101007.11089745635 +2016-01-11 17:00:00,0.0,0.0022319895541966918,275.12632859242586,10.582095252893314,-0.6000000089406967,235.14740664326155,491.28586871533446,100884.74535978286 +2016-01-11 18:00:00,0.0,0.0021040593702372234,275.02523756410983,10.391358234692841,0.07175220127227838,210.59912291399894,454.83740003267565,100966.66061887836 +2016-01-11 19:00:00,0.0,0.001981938320689131,275.01367225492424,10.299422849903555,-0.4000000059604645,208.92672045407602,357.8311980715135,100991.21916306154 +2016-01-11 20:00:00,0.0,0.0019195935533533512,274.9618396859917,10.200000151991844,-0.9000000134110451,207.3699058224414,239.56573675371402,101079.4072564201 +2016-01-11 21:00:00,0.0,0.0019149674520739031,275.20091184319034,10.100000150501728,-1.3937946075902876,204.04128999231907,69.99027269604797,101141.07079692197 +2016-01-11 22:00:00,0.0,0.0018198562060272156,274.8436830410591,9.669608308146382,-1.57175222362402,203.29762499420247,0.0,101309.21100049175 +2016-01-11 23:00:00,0.0,0.0016977911426416007,274.5807516639387,9.175693286124872,-1.6845005578284185,202.75329328408253,0.0,101486.4238294502 +2016-01-12 00:00:00,0.0,0.001596663277521466,274.1830088364626,8.67552144102759,-1.871174924515964,198.5208448598987,0.0,101566.31337350816 +2016-01-12 01:00:00,0.0,0.0016688286086247424,273.654234363366,8.073495854631137,-2.07609864625833,198.55395049772812,0.0,101649.77282550311 +2016-01-12 02:00:00,0.0,0.0015699268071262273,272.91599542944044,7.463110391261637,-2.284500566769115,196.46939475476157,0.0,101664.36213443888 +2016-01-12 03:00:00,0.0,0.0014397565257845389,272.63131442433445,6.854108798919574,-2.564775323406611,194.80573022187028,0.0,101763.2182047739 +2016-01-12 04:00:00,0.0,0.0013996046740742734,272.1635014206972,6.275521405264802,-2.3951671568212602,193.57680549410327,0.0,101809.45690714222 +2016-01-12 05:00:00,0.0,0.0013120217381374698,271.80237795839076,5.769893288121288,-2.2937946210013327,192.3985008295822,0.0,101889.41187431896 +2016-01-12 06:00:00,0.0,0.0013698977470495309,271.3828237391549,5.256252811254761,-2.184500565278999,198.46302987177057,0.0,101966.14749473691 +2016-01-12 07:00:00,0.0,0.001411995835042985,270.87666614359733,4.5841596942020155,-1.693794612060636,197.58689297322118,0.0,101830.71719124669 +2016-01-12 08:00:00,0.0,0.0014248472759243764,270.8349986707643,3.9000000581145287,-1.2695548040512148,197.65076080227308,0.0,101905.47577638036 +2016-01-12 09:00:00,0.0,0.0015364027707538742,270.6946179412917,3.300000049173832,-0.7698932136154819,209.72979102048902,0.0,101893.09240516301 +2016-01-12 10:00:00,0.0,0.0015558072808608972,270.8029687440503,2.8000000417232513,0.31549947197390377,210.35464180737557,0.0,101847.7494104819 +2016-01-12 11:00:00,0.0,0.0016147894894719668,271.07649448700863,2.2303918691774367,1.3358667661281154,212.0183242247087,0.0,101886.80862202555 +2016-01-12 12:00:00,0.0,0.0018108574145791268,270.41279381149405,1.728247825549812,2.4154995032663424,209.50023479597374,0.0,101829.84036536652 +2016-01-12 13:00:00,0.0,0.0021263083008696976,271.41941848724645,1.706205438603312,3.400000050663948,211.96984661764634,115.91458748255874,101709.83436595812 +2016-01-12 14:00:00,0.0,0.0019501270871482659,272.3397690702695,1.6282478240596958,4.335866810831599,210.8197177855104,251.27903387874338,101801.22106184725 +2016-01-12 15:00:00,0.0,0.002129236278515293,273.3821060356174,1.6154994913454135,5.31549954647971,262.93725625957944,302.74319791391986,101557.35162846118 +2016-01-12 16:00:00,0.0,0.0025877000599654957,274.5916082161425,1.4282478210794636,5.6120909488950455,266.4445059912736,380.6462790726391,101419.7619079815 +2016-01-12 17:00:00,0.0,0.0025853506824104794,276.13478569231114,1.3005773229499142,5.904832966858377,268.00331815436095,395.53332565613067,101238.65210677631 +2016-01-12 18:00:00,0.0,0.002919504952426354,277.1052797879853,1.1158403907346035,6.2021975074896565,295.89925621986754,238.1637970961938,101163.70644498114 +2016-01-12 19:00:00,0.0,0.003437034838784185,278.11225074402034,1.5179049274107361,6.807990976832098,298.2743523245811,187.78172868938535,101033.50823259514 +2016-01-12 20:00:00,0.0,0.0036626638480468468,278.55872390754797,1.9980501918941058,7.500000111758709,296.555054408335,126.19554639195294,100809.720842566 +2016-01-12 21:00:00,0.0,0.00372025522294457,278.933872262829,2.4655468237637272,8.171752321971685,297.0299012243815,45.967976277930454,100678.44145561714 +2016-01-12 22:00:00,1.3735223142003518e-05,0.003914028741516525,280.00285388581824,3.580809031400893,7.2005774108667655,300.7557311405216,0.0,100487.86531844948 +2016-01-12 23:00:00,1.6190516017306036e-05,0.004073724777070351,279.2133157252869,4.700000070035458,6.243747360108593,296.82294182861386,0.0,100421.31042840453 +2016-01-13 00:00:00,4.812422753895902e-05,0.004560949363356424,277.68447941260285,5.821128127139287,5.350293666808656,294.59901889821884,0.0,100329.83104342355 +2016-01-13 01:00:00,2.899938892086912e-05,0.004018890206319401,277.58829490151794,7.029403054190323,3.7246319430780197,295.20343106241285,0.0,100351.5775319002 +2016-01-13 02:00:00,0.0,0.0036630520911583382,277.6249496952689,8.293143665633268,2.0351042880665307,297.0268623096564,0.0,100309.38786557627 +2016-01-13 03:00:00,0.0,0.0034384384280589314,277.50234846489536,9.556252875329754,0.41584038030379067,269.5684629242152,0.0,100205.34060429165 +2016-01-13 04:00:00,0.0,0.003567750829120591,276.95917264006397,9.764895887767173,-0.3954147042131786,271.77981039460343,0.0,100199.32957787001 +2016-01-13 05:00:00,6.572629879490375e-06,0.0034369811200517224,275.26422463659975,9.965546935522436,-1.2000000178813934,268.33365360636134,0.0,100152.71757501336 +2016-01-13 06:00:00,6.3864465623690765e-06,0.0031936947796858367,275.1218974056535,10.165546938502668,-2.071752231074601,247.3983886897491,0.0,100116.08943147285 +2016-01-13 07:00:00,0.0,0.0025688183461733158,273.7985724263207,10.984159789569448,-2.875521354600854,242.3022422788276,0.0,100263.7261613645 +2016-01-13 08:00:00,0.0,0.002167073163565442,272.64335992551236,11.800000175833702,-3.7556754853246144,238.8501129087061,0.0,100357.57036159365 +2016-01-13 09:00:00,0.0,0.0019577304248482447,271.91705347126214,12.600000187754631,-4.624001967831573,218.589605445518,0.0,100399.65158160469 +2016-01-13 10:00:00,0.0,0.00180949375172993,271.7187776567034,13.300000198185444,-4.530154000687383,217.89634784851592,0.0,100552.25702471072 +2016-01-13 11:00:00,0.0,0.0018467748992673438,271.63766823469484,13.981754396717493,-4.43863165794564,218.9006189864945,0.0,100697.40005092195 +2016-01-13 12:00:00,0.0,0.0018793800787035608,271.50135414514176,14.668337152606576,-4.3404171186883875,223.25395104050634,0.0,100772.42269074783 +2016-01-13 13:00:00,0.0,0.0019208461034367224,271.14298127663153,14.471175112270597,-4.554055385721491,223.20952900256032,103.44979973718861,100832.56672164166 +2016-01-13 14:00:00,0.0,0.0019618506014480596,271.39824350253474,14.200000211596489,-4.83648762772906,225.17742038258262,223.45265637961452,100941.53272965245 +2016-01-13 15:00:00,0.0,0.0018360696804581782,271.5028372619499,14.000000208616257,-5.054055393172072,236.05248142031593,313.2812777731137,101027.29144532874 +2016-01-13 16:00:00,0.0,0.0018061441065078234,271.4105412853007,13.784500738132468,-5.0395014412955925,237.3066736755753,394.0345355009037,101064.80692711398 +2016-01-13 17:00:00,0.0,0.0017954937227221978,271.52028632045705,13.569554987335497,-4.9584656502546895,239.45988942784848,409.6393212235676,101108.46835476534 +2016-01-13 18:00:00,0.0,0.0017312357074367945,271.50820785572705,13.353531592198717,-4.955675503206008,217.42547600361075,426.8076596063487,101159.84457947664 +2016-01-13 19:00:00,0.0,0.001645145884327737,271.52761367061214,12.266919504124917,-4.456252799333832,216.50361323964503,336.9166473743444,101133.48176312035 +2016-01-13 20:00:00,0.0,0.0015972205877843833,271.7016270456039,11.184500699389451,-3.9048976648978475,216.2077043477075,227.6630183052573,101077.24800883254 +2016-01-13 21:00:00,0.0,0.001550622249477646,271.44243832739664,10.100000150501728,-3.400000050663948,205.1819202521496,76.05929478823523,101132.68658949512 +2016-01-13 22:00:00,0.0,0.0014509969316322238,271.3655458158044,10.000000149011612,-3.084500578690044,204.23006696213656,0.0,101148.82329579719 +2016-01-13 23:00:00,0.0,0.0014105547530380142,271.1721150511441,9.979449411877464,-2.7000000402331352,203.58598635005288,0.0,101294.79214426246 +2016-01-14 00:00:00,0.0,0.0015090791958773532,270.8104926965318,9.884500680017942,-2.3845005682592313,222.71263881553043,0.0,101353.83870176043 +2016-01-14 01:00:00,0.0,0.0015561993103181187,270.82412800376983,8.800000131130219,-2.2000000327825546,224.13549923752626,0.0,101363.47479961695 +2016-01-14 02:00:00,0.0,0.0016629634386555172,270.6275971977602,7.723901499773049,-2.0000000298023224,225.63792935809315,0.0,101415.33334869947 +2016-01-14 03:00:00,0.0,0.0015939297380118483,270.5483772355886,6.628825202143907,-1.8000000268220901,243.84128249453033,0.0,101324.76838370506 +2016-01-14 04:00:00,0.0,0.0015597410108762917,270.21357510836134,6.613714103618356,-1.700000025331974,241.84792128967695,0.0,101396.95842056832 +2016-01-14 05:00:00,0.0,0.0015480947813725564,270.1319851514065,6.600000098347664,-1.5794492867077101,240.61467615893784,0.0,101371.75177590299 +2016-01-14 06:00:00,0.0,0.001463409626405374,269.841291479269,6.571752298129827,-1.4711749185554992,255.70710832388764,0.0,101317.47661618519 +2016-01-14 07:00:00,0.0,0.0017030408263014607,270.05140474974206,6.705475010199503,-1.0711749125950347,258.0512564457622,0.0,101374.60412670953 +2016-01-14 08:00:00,0.0,0.0017066737357542626,270.1697625842101,6.97609871927402,-0.6711749066345704,257.341897585725,0.0,101321.06999902576 +2016-01-14 09:00:00,0.0,0.0017927510488718879,270.27457026663313,7.200000107288361,-0.2711749006741059,265.3521975457741,0.0,101269.42784678648 +2016-01-14 10:00:00,0.0,0.0018900581129811754,270.407931044802,7.700000114738941,0.4062054192318027,265.88288285825115,0.0,101248.00221926768 +2016-01-14 11:00:00,0.0,0.0020404343773264616,270.5983740217373,8.200000122189522,1.0239013999352702,267.27573850649463,0.0,101239.20645384358 +2016-01-14 12:00:00,0.0,0.001990763074929027,270.4250538580847,8.700000129640102,1.700000025331974,277.83417561464677,0.0,101249.86654560357 +2016-01-14 13:00:00,1.3392998608666883e-06,0.0019861370286885756,270.4945539637539,9.376098755036807,1.0062054281724992,277.23238953946236,29.10000043362379,101376.79517322444 +2016-01-14 14:00:00,3.8125953605885844e-07,0.0022369735948835332,270.8757019526308,9.984500681508058,0.324478693082862,279.8256426597486,62.60000093281269,101278.13375361044 +2016-01-14 15:00:00,3.8125953605885844e-07,0.002506594016749657,271.85593817779585,10.667981168169744,-0.43101265180222703,277.4481202503625,156.2720100060403,101276.17583503143 +2016-01-14 16:00:00,3.8125953605885844e-07,0.0025935153503433466,271.8196338253401,10.239654718112842,-0.5845005414371414,278.5014805023985,196.46918552027176,101221.5561656603 +2016-01-14 17:00:00,1.3392998608666883e-06,0.002492230427447645,272.36740940961505,9.755675574731582,-0.8641332666544392,280.42003351163805,204.37577579536085,101164.24867135342 +2016-01-14 18:00:00,3.8125953605885844e-07,0.002399656857974444,273.0749448369373,9.338924201792182,-1.1000000163912773,267.14299127208994,325.60417419098025,101121.02975818953 +2016-01-14 19:00:00,0.0,0.002393413056769589,273.17160555235955,9.268337072140305,-0.7191910326741001,264.8407703160978,257.63875997824067,101066.79810730429 +2016-01-14 20:00:00,0.0,0.0025008872681178402,273.64813453974074,9.197802721988225,-0.4000000059604645,265.0545392593104,174.93609053581272,101151.26433244237 +2016-01-14 21:00:00,3.8125953605885844e-07,0.0023156513475913357,273.77157644997226,9.200000137090683,-0.09379458821877795,275.3377729584593,58.232782832186174,101180.02623456779 +2016-01-14 22:00:00,3.8125953605885844e-07,0.002519209893972618,274.351099847492,9.07454248243141,-0.30000000447034836,277.9087746400943,0.0,101384.31530843365 +2016-01-14 23:00:00,0.0,0.0026488745542902962,274.55997744285116,8.900000132620335,-0.5760986239065878,278.3525614140759,0.0,101465.27186306631 +2016-01-15 00:00:00,3.8125953605885844e-07,0.0025377348633299963,275.05886193052044,8.784500663626664,-0.7994227083425242,291.2065315095012,0.0,101443.75759539405 +2016-01-15 01:00:00,3.8125953605885844e-07,0.0025637586332768183,275.3906542021881,8.2937947104083,-0.6000000089406967,291.87449804214737,0.0,101485.13470240845 +2016-01-15 02:00:00,3.8125953605885844e-07,0.0026130697403858798,275.68703007910943,7.795167237287532,-0.4000000059604645,292.37246634082015,0.0,101620.02782837916 +2016-01-15 03:00:00,1.3392998608666883e-06,0.0026001984657642494,276.2037951770678,7.369030970295306,-0.2158403773235584,282.4068090238041,0.0,101540.49163176428 +2016-01-15 04:00:00,3.8125953605885844e-07,0.0027874551901973413,276.355049079719,5.69379467166528,-0.5994227053622919,283.1792871402305,0.0,101567.27265039955 +2016-01-15 05:00:00,0.0,0.0027593474377119774,276.12901287548016,4.084500593591205,-0.8994227098326404,281.0066482086164,0.0,101550.437711602 +2016-01-15 06:00:00,3.8125953605885844e-07,0.002749924914636655,276.0106676565161,2.482095132193909,-1.2695548040512148,273.3612803574613,0.0,101462.07363558808 +2016-01-15 07:00:00,3.8125953605885844e-07,0.0028933304259448054,275.870244503092,1.6736091437522267,-0.7845005444173736,273.3404925556139,0.0,101517.42072170404 +2016-01-15 08:00:00,3.8125953605885844e-07,0.0027694991058007513,275.6642672995401,0.8655467999218691,-0.30000000447034836,271.36982773029183,0.0,101463.043898698 +2016-01-15 09:00:00,3.8125953605885844e-07,0.0027611001563322105,276.08156228832615,0.05509758410436622,0.17609861794612336,270.42981635736817,0.0,101451.47291896233 +2016-01-15 10:00:00,3.8125953605885844e-07,0.002961253289194684,275.8045543270549,-0.3437472721917415,0.5000000074505806,268.39877580345916,0.0,101463.73193697087 +2016-01-15 11:00:00,3.8125953605885844e-07,0.0034964512805450367,276.49947978159656,-0.743747278152206,0.9000000134110451,271.7843504389202,0.0,101422.24867055556 +2016-01-15 12:00:00,3.8125953605885844e-07,0.0039347166145064835,277.27655375193314,-1.1372483108325298,1.3000000193715096,268.33376387047105,0.0,101445.03025048351 +2016-01-15 13:00:00,0.0,0.003872938456647185,278.18410180916817,-2.02824783002016,1.4000000208616257,268.3165600215721,110.29960207541235,101516.3954518183 +2016-01-15 14:00:00,0.0,0.004168023094310142,278.78862337593563,-2.9062054564847055,1.5000000223517418,268.8142368600727,236.13023917811586,101523.16528579946 +2016-01-15 15:00:00,0.0,0.004453089899325835,279.1258895369426,-3.8000000566244125,1.664190463572049,259.47938993707,381.0633047213417,101400.40913088006 +2016-01-15 16:00:00,0.0,0.004733181540161686,279.82226077717,-3.300000049173832,2.271752234054833,260.29742505318717,479.15965111594596,101421.07186431764 +2016-01-15 17:00:00,0.0,0.005114689598494242,280.14839705707027,-2.9000000432133675,2.87175224299553,260.1759239504802,498.47985966976313,101331.34894075201 +2016-01-15 18:00:00,0.0,0.005411993477472695,280.60316641394434,-2.4717522370350653,3.471752251936227,258.48598079483213,441.8563620039473,101142.79700385404 +2016-01-15 19:00:00,0.0,0.005542942712090147,280.6197698258226,-2.3000000342726707,2.884500575709812,258.51453765880933,350.28283316078756,101079.69392661523 +2016-01-15 20:00:00,0.0,0.005724500150670311,280.66456207947294,-2.1086419515716726,2.369554820442492,258.80201636506746,238.80681625086723,101048.56571874204 +2016-01-15 21:00:00,0.0,0.005781620279515017,280.26625987782614,-1.9246319162559296,1.7811769113449203,262.86483786072387,75.55230280731067,101027.38422794851 +2016-01-15 22:00:00,0.0,0.005830963757470526,279.94636684332056,-1.9301068266176535,2.156252765061162,261.79818542777457,0.0,100828.23930542014 +2016-01-15 23:00:00,0.0,0.005837918759419535,280.1433504279741,-1.9301068266176535,2.469487773015753,262.5836319745151,0.0,100981.0018832683 +2016-01-16 00:00:00,0.0,0.005862877330249512,280.07334876996276,-1.9301068266176535,2.775521353110738,293.45927429836007,0.0,100909.7746135138 +2016-01-16 01:00:00,0.0,0.005761692159290105,280.1140791417741,-0.6443245802404947,2.400000035762787,294.18161933406697,0.0,100823.56822137552 +2016-01-16 02:00:00,0.0,0.00561072310003993,279.7032984124114,0.6382730273770467,2.0320190210750035,292.9511599340742,0.0,100740.7895834717 +2016-01-16 03:00:00,0.0,0.005480670676677049,279.47869279825886,1.8491291369012997,1.6613684329514433,327.332509113795,0.0,100540.18977377303 +2016-01-16 04:00:00,0.0,0.005701884254191561,279.91418993550667,-0.43010680426591147,-0.23746533323411964,331.21864485616135,0.0,100372.76446831488 +2016-01-16 05:00:00,0.0,0.005829752008285523,280.1811455570558,-2.7062054535044733,-2.0694877670552887,333.9955159558084,0.0,100289.17246166788 +2016-01-16 06:00:00,0.0,0.005921536111946189,280.4021371706634,-4.991358154226572,-3.965546846115469,345.8930574247667,0.0,100045.62255701794 +2016-01-16 07:00:00,0.0,0.0058926785215366664,280.280817662834,-5.600000083446503,-4.784500604022018,345.82066267988876,0.0,99765.34638472993 +2016-01-16 08:00:00,7.135928966457467e-05,0.006058270918905643,279.79298022106786,-6.200000092387199,-5.67609869990251,344.6200411134512,0.0,99554.60976255265 +2016-01-16 09:00:00,0.0001700738393180749,0.00575154781284462,279.58095212467396,-6.815499568831451,-6.571174994551421,344.4072902093385,0.0,99329.66647901617 +2016-01-16 10:00:00,0.0003191503853567744,0.005817201443948467,279.3813555751928,-5.865546874427675,-6.865546889328837,343.2101470877998,0.0,99204.5273373815 +2016-01-16 11:00:00,0.00016646374443830486,0.005736226789122982,279.2058838949577,-4.844418818813962,-7.155675535988563,341.9474232346188,0.0,99012.09978185224 +2016-01-16 12:00:00,9.957021102798106e-05,0.005947784030212908,279.94179735785764,-3.895176853604518,-7.450047430765977,342.41409727123306,0.0,99007.03870346857 +2016-01-16 13:00:00,7.111983531118479e-05,0.005585733861477576,279.357884158918,-1.038116389930081,-6.855097685432263,339.0723435018632,30.690412380534074,99117.87495389936 +2016-01-16 14:00:00,6.3864465623690765e-06,0.005490324413746478,278.82882655129606,1.823901411856199,-6.200000092387199,336.96603383619885,65.34480510487347,99134.83557879015 +2016-01-16 15:00:00,3.6595054151741486e-05,0.005594538710538958,279.12535590162105,4.684500602531902,-5.600000083446503,334.79040761161656,108.6794846093693,99278.2303401098 +2016-01-16 16:00:00,2.899938892086912e-05,0.005200661240526146,278.46951872872035,5.184500609982482,-5.200000077486038,331.05892164304726,136.66398254425397,99476.0214147557 +2016-01-16 17:00:00,8.683257388255608e-06,0.004795936321779711,277.8453366056075,5.675521396324105,-4.861617361116607,327.4058785041201,142.14979618953774,99565.61768530356 +2016-01-16 18:00:00,1.567703244752859e-05,0.005010450242971571,278.61984353598825,6.1755214037746855,-4.455675495755427,319.68053844888584,228.09452848859314,99607.22342792455 +2016-01-16 19:00:00,0.0,0.0051865943026830775,279.2014706619615,5.493794668685048,-3.0712657822179645,321.55759686449784,181.1052592359635,99739.0697539304 +2016-01-16 20:00:00,0.0,0.005118727068759245,279.9363243503099,4.800000071525574,-1.6845005578284185,323.0587122005872,124.09287873813321,99926.31289977014 +2016-01-16 21:00:00,0.0,0.00508981344269551,279.94706810583915,4.200000062584877,-0.37175220574262674,307.05880532549116,54.07351967592785,99929.62883767168 +2016-01-16 22:00:00,0.0,0.005113108008898366,280.0698878890043,4.505474977416949,-0.18209509792123785,306.8314887592989,0.0,100153.11777815432 +2016-01-16 23:00:00,0.0,0.005231918317464748,280.3226748750238,4.90000007301569,0.002197415102457027,307.38891461320634,0.0,100270.79046010933 +2016-01-17 00:00:00,0.0,0.0052122539001387995,280.4092402374569,5.293794665704816,0.12824780170795386,331.46017328445174,0.0,100283.65387652368 +2016-01-17 01:00:00,0.0,0.005239499373027472,280.4429484404067,5.493143623910016,-0.10000000149011612,332.9980863430521,0.0,100408.72633550673 +2016-01-17 02:00:00,0.0,0.005157813513245189,280.4948805143172,5.600000083446503,-0.4000000059604645,334.26335535574236,0.0,100488.39930193158 +2016-01-17 03:00:00,0.0,0.004927310155054825,280.5176198145257,5.800000086426735,-0.6079908844448986,310.5622847477165,0.0,100494.81751308819 +2016-01-17 04:00:00,0.0,0.00480439968563337,280.39239675531684,5.894525177555128,-1.2000000178813934,311.72291391970106,0.0,100565.14193602036 +2016-01-17 05:00:00,0.0,0.004406024093837299,280.1722757219284,5.918245899815616,-1.700000025331974,311.27530999802053,0.0,100525.9203724275 +2016-01-17 06:00:00,0.0,0.0038711896155909464,279.6495029143415,5.936597337583072,-2.284500566769115,297.9320944180833,0.0,100589.69410776197 +2016-01-17 07:00:00,0.0,0.003870973662012388,279.0983617766531,5.230445292806333,-2.8711749394171253,297.9383970744866,0.0,100670.30694403988 +2016-01-17 08:00:00,0.0,0.0036340992509591176,277.9039024816274,4.516417744976956,-3.3845005831603925,294.3862369051211,0.0,100711.11322988152 +2016-01-17 09:00:00,0.0,0.00342750875671695,277.16826791097304,3.7351043133985047,-3.9698932612991977,290.79623102029444,0.0,100817.65652069074 +2016-01-17 10:00:00,0.0,0.0030400435202682183,276.1640299514653,3.1000000461935997,-3.965546846115469,287.46905532071065,0.0,100881.06716929257 +2016-01-17 11:00:00,0.0,0.0027943423695624818,275.68995155682944,2.469608200858021,-3.884500590610973,286.7099137806951,0.0,100953.32806765588 +2016-01-17 12:00:00,0.0,0.002746728134227132,275.0279311937335,1.7698932285166429,-3.8760986730804197,285.8953673033628,0.0,100960.42723526624 +2016-01-17 13:00:00,0.0,0.0026744846993902414,275.0908037543778,1.0937946031199393,-3.9756932086388335,286.69975520589793,93.23797591705765,101026.8134388585 +2016-01-17 14:00:00,0.0,0.002671101627163966,274.9385627298426,0.4000000059604645,-4.076098676060652,286.9647034500586,197.57973219009827,101120.48093395635 +2016-01-17 15:00:00,0.0,0.0026445401439384466,275.05701431404015,-0.20000000298023224,-4.175521373972363,285.4606871161179,288.8832458070675,101098.33781109197 +2016-01-17 16:00:00,0.0,0.0026143770805638175,275.2198885976667,-1.1000000163912773,-4.784500604022018,285.56121839823214,363.21920797269064,101065.720714953 +2016-01-17 17:00:00,0.0,0.0027244534750172286,275.3678826245793,-1.9994227262239175,-5.4000000804662704,286.3205142595795,378.1981225700371,100944.87559021704 +2016-01-17 18:00:00,0.0,0.002837351224735975,275.31845567250207,-2.884500575709812,-6.000000089406967,287.2453626941173,335.02644266798086,100843.07845297044 +2016-01-17 19:00:00,0.0,0.0029139335161281143,275.2857203696271,-3.784500589120857,-4.992009199001604,287.42556379865357,266.48622832538473,100821.68909832429 +2016-01-17 20:00:00,0.0,0.0029273226775539288,275.4276423499426,-4.684500602531902,-3.9755213709921313,287.671807684382,183.37226545112324,100707.37554278315 +2016-01-17 21:00:00,0.0,0.002902916180481611,275.0581643653908,-5.648633870676457,-2.9584656204523663,295.6773174135109,63.53432040824427,100514.10952519363 +2016-01-17 22:00:00,0.0,0.003349219481554325,273.8716942530161,-5.253531471499312,-3.941068157502955,292.08377250489474,0.0,100570.63934098811 +2016-01-17 23:00:00,0.0,0.0035395256830300903,273.0087715011446,-4.850785121143638,-4.928009970470803,288.1275627215037,0.0,100534.17357165038 +2016-01-18 00:00:00,0.0,0.0035469458883123526,272.79206115561254,-4.455675495755427,-5.841068185815161,296.51924804627464,0.0,100503.69980023286 +2016-01-18 01:00:00,0.0,0.003491969557986691,272.7495424055372,-3.1679810564110347,-5.916970808706311,296.41836849579107,0.0,100429.52254272981 +2016-01-18 02:00:00,0.0,0.003496753592423544,272.6694331565727,-1.8845005608086507,-5.938924151128234,296.2676991422725,0.0,100321.8378041523 +2016-01-18 03:00:00,0.0,0.0033278542895618106,272.778161306545,-0.6717522102129752,-5.955675518107169,295.10740128585695,0.0,100266.69810166108 +2016-01-18 04:00:00,0.0,0.0034264654811423144,272.7319335113912,0.3239013895044572,-5.369893282160824,297.1460479195582,0.0,100292.80137982845 +2016-01-18 05:00:00,0.0,0.0032981662248639026,272.6558095526945,1.315499486875065,-4.860448783972884,297.80504192408677,0.0,100270.77364061348 +2016-01-18 06:00:00,0.0,0.0033106785941140293,272.7321259340428,2.3005773378510757,-4.3513090383460495,293.5239779758238,0.0,100198.12021803015 +2016-01-18 07:00:00,0.0,0.003316617316976739,272.8451512983582,3.4243069016297594,-3.555675482344382,293.87733594767184,0.0,100220.89839389111 +2016-01-18 08:00:00,0.0,0.003263069188408112,272.70335729798086,4.6000000685453415,-2.7556754704234536,292.8633982130766,0.0,100229.92235339437 +2016-01-18 09:00:00,0.0,0.0031672564144198724,273.16497503052625,5.707990960440821,-1.9556754585025244,282.01513801422016,0.0,100246.63938412658 +2016-01-18 10:00:00,0.0,0.0030102753990684985,273.6669216076333,7.200000107288361,-1.8545203073480516,284.6700401735618,0.0,100322.78167157454 +2016-01-18 11:00:00,0.0,0.003103811941847013,274.6205795691613,8.771752330912381,-1.673901225195408,290.7912841131747,0.0,100327.36721003812 +2016-01-18 12:00:00,0.0,0.0028967000930322745,273.8163685141403,10.271175049685718,-1.565546810352682,241.83932193865243,0.0,100330.44080479917 +2016-01-18 13:00:00,0.0,0.00246357190523698,271.3293321227306,10.671752359224588,-2.3541087318643497,234.33906944257052,96.86507702583738,100409.79195921909 +2016-01-18 14:00:00,0.0,0.002167197787915205,269.92728677385065,11.074542512233732,-3.08117693071643,231.4285818090076,204.12252598474385,100529.15672796023 +2016-01-18 15:00:00,0.0,0.001749924625503566,269.9577407011748,11.475693320397543,-3.8683369916740333,199.4707500322236,376.86390601132325,100511.31580636045 +2016-01-18 16:00:00,0.0,0.0015968676072974752,270.05314182631696,11.975521490201421,-4.084500593591205,200.89048699447622,473.7864149523617,100573.0944601941 +2016-01-18 17:00:00,0.0,0.0015403003927749199,270.1646401687439,12.539501553054302,-4.375693214599298,203.17235187247232,493.4426700051509,100587.82063211958 +2016-01-18 18:00:00,0.0,0.0014862656125773923,270.45530941359874,13.038631786095626,-4.6000000685453415,212.9093029533407,448.35117520143837,100557.09467013658 +2016-01-18 19:00:00,0.0,0.0014171787868226208,270.84203237207413,12.959616571667324,-4.484500599551669,213.29110976687474,357.2975557508977,100519.6672990523 +2016-01-18 20:00:00,0.0,0.0014168915637044804,270.8662406254491,12.955675622415297,-4.373965108817547,213.2993773427715,246.96050016554153,100576.57382830375 +2016-01-18 21:00:00,0.0,0.0013341668232106749,270.66321018199744,12.873901392088413,-4.265546850585817,221.07385715341917,81.47831172832838,100585.34577664183 +2016-01-18 22:00:00,0.0,0.0014092575913244303,270.63121912723597,12.884500724721423,-4.375521376952595,220.53834236408858,0.0,100778.3163725072 +2016-01-18 23:00:00,0.0,0.0013770771734272587,270.2572130337277,12.899422888646576,-4.559084099300557,217.34847063097385,0.0,100810.58340786162 +2016-01-19 00:00:00,0.0,0.001434397792646707,269.9986541290472,12.90000019222498,-4.746368655232062,204.30298771302984,0.0,100810.15964638826 +2016-01-19 01:00:00,0.0,0.0013316341292580094,269.6212827805744,13.071752394987374,-4.841645474492405,204.64267916740027,0.0,100984.89451595771 +2016-01-19 02:00:00,0.0,0.001386926373462966,269.24248277788655,13.173965239947767,-4.941068172404116,206.3921282972775,0.0,100957.13473071794 +2016-01-19 03:00:00,0.0,0.0014439552024758362,268.92967028471486,13.343509563144112,-5.0404171291192,218.16676195788548,0.0,100935.25075724037 +2016-01-19 04:00:00,0.0,0.0014658652493676864,268.61535879732315,13.175521508082813,-5.369893282160824,216.09535052375574,0.0,100934.05327594557 +2016-01-19 05:00:00,0.0,0.0014703352973758246,268.44567512824506,13.075521506592697,-5.76955487110644,214.46986589586044,0.0,100985.65181709538 +2016-01-19 06:00:00,0.0,0.0015052203243970522,268.07924691366844,12.976098808680987,-6.100000090897083,207.672353410556,0.0,100951.87273433499 +2016-01-19 07:00:00,0.0,0.0015211005333692794,268.6657018300148,12.874186614223635,-5.797802671324278,209.07334234296047,0.0,101002.29749518936 +2016-01-19 08:00:00,0.0,0.0015056798366177068,268.2879459421365,12.701950027152964,-5.475693230990576,207.0724082689514,0.0,101006.03684500493 +2016-01-19 09:00:00,0.0,0.0015045382835560564,268.2265058035948,12.619191209997918,-5.171174973689795,219.6773103070797,0.0,100985.3503812221 +2016-01-19 10:00:00,0.0,0.0015003932534940476,268.17889037910277,12.800000190734863,-5.365546866977095,220.00616177576345,0.0,101083.7445303381 +2016-01-19 11:00:00,0.0,0.0015420193902061796,268.1098748512086,12.90000019222498,-5.565546869957327,220.6063444007937,0.0,101051.56427477533 +2016-01-19 12:00:00,0.0,0.00151055854486846,267.9586061436319,13.100000195205212,-5.76532320939994,209.12388051702632,0.0,101153.15883699598 +2016-01-19 13:00:00,0.0,0.0015136099128403595,268.35059931219064,13.300000198185444,-5.655675513636821,210.30110130413973,112.02268993266782,101119.84384672562 +2016-01-19 14:00:00,0.0,0.001541171220464273,268.7241368217752,13.597802787553334,-5.5556755121467045,211.8841682080232,234.5755155797888,101100.95192212415 +2016-01-19 15:00:00,0.0,0.0015431227781512165,268.8239223325912,13.800000205636024,-5.455675510656588,226.59142285263593,322.4965599752315,101093.188204646 +2016-01-19 16:00:00,0.0,0.00155739789244853,269.6442485093372,13.178885143040937,-6.3556755240676335,228.8841478093019,405.28564432736164,101008.74125450003 +2016-01-19 17:00:00,0.0,0.0014434281261618742,270.33026986210325,12.500000186264515,-7.269893310473029,229.49003859744175,422.498743711909,100989.55875785535 +2016-01-19 18:00:00,0.0,0.001480834234310502,270.80419115168337,11.800000175833702,-8.24350948714819,221.9049701366215,410.7871352187201,100930.67339028296 +2016-01-19 19:00:00,0.0,0.0014958771341514715,271.13610955829586,11.892009301819616,-7.775521427616543,223.93786875832575,327.96974889794615,100949.24616531291 +2016-01-19 20:00:00,0.0,0.0015881361283943247,271.46479705496324,11.963402929147714,-7.375521421656079,226.6012568184746,227.56112734110056,100918.10695746304 +2016-01-19 21:00:00,0.0,0.0015877484686046574,271.45461897077126,11.965546965324759,-6.97609871927402,226.27193631501626,80.95320322709469,100945.73757093519 +2016-01-19 22:00:00,0.0,0.0016668742815254705,271.4431555219999,12.639501554544418,-6.969554888987833,224.79195746157646,0.0,101137.98223461956 +2016-01-19 23:00:00,0.0,0.0017221064879348969,271.6058508355807,13.255675626885646,-6.95410880040969,223.5961650863325,0.0,101137.99443575868 +2016-01-20 00:00:00,0.0,0.001757197169190109,271.5379369484904,13.938273225562492,-6.875521414205498,230.36886119037868,0.0,101201.4686023693 +2016-01-20 01:00:00,0.0,0.0018496271608824774,271.20161795787163,12.869893393919533,-7.234026563716424,230.3960479613855,0.0,101295.46848308398 +2016-01-20 02:00:00,0.0,0.0018500736850160216,271.076322841446,11.873901377187252,-7.5395014785484955,230.58099869744535,0.0,101323.41156565772 +2016-01-20 03:00:00,0.0,0.001964427228520717,271.3065130304564,10.875521473810144,-7.838273134665408,240.31966042122318,0.0,101412.6582353448 +2016-01-20 04:00:00,0.0,0.0020650961111115225,271.42541930814275,10.465546942973017,-8.055675549399608,242.23270068912112,0.0,101439.24039735852 +2016-01-20 05:00:00,0.0,0.0021486784854609755,271.58809143799294,10.064895892237521,-8.275368235735915,244.1369039423776,0.0,101445.84996439757 +2016-01-20 06:00:00,0.0,0.0021179885027210552,271.5841458342452,9.655675573241465,-8.563110407652914,238.45041261974902,0.0,101424.56405680334 +2016-01-20 07:00:00,0.0,0.0021297466388996407,271.66202845314143,9.153531529613842,-8.075521432086893,239.40534705390536,0.0,101521.99813658826 +2016-01-20 08:00:00,0.0,0.002043299468522175,271.35381275349226,8.584500660646432,-7.58450064574527,238.45498059910437,0.0,101617.31371404167 +2016-01-20 09:00:00,0.0,0.001996886411124651,271.1922951860964,8.092009245195204,-7.105475016159968,208.92459083865,0.0,101663.9096967767 +2016-01-20 10:00:00,0.0,0.0019991946143560774,270.7282857662055,8.374542472000597,-7.392009234764391,207.71990833498037,0.0,101770.46283531917 +2016-01-20 11:00:00,0.0,0.0018663177135841398,270.4888253787859,8.668337063199608,-7.600000113248825,206.24748393246776,0.0,101826.57755506967 +2016-01-20 12:00:00,0.0,0.0018802756496518428,270.39666794866014,8.955675562810653,-7.8879092522706316,198.24729340107854,0.0,101872.09003392028 +2016-01-20 13:00:00,0.0,0.001847278528917162,270.5377669101626,8.366919446010389,-7.681517906101542,197.71615349014698,134.84105065324343,101988.987778226 +2016-01-20 14:00:00,0.0,0.0018576085817745404,270.85883686102005,7.769608279834175,-7.5395014785484955,197.92462354895653,280.7206463089524,101951.46197525055 +2016-01-20 15:00:00,0.0,0.0019025921477984899,271.2018547418892,7.1000001057982445,-7.331774153934686,199.76489259872173,416.5775788269752,101898.42947541454 +2016-01-20 16:00:00,0.0,0.0019873844717777692,271.97703605063685,6.900000102818012,-6.555675527047867,201.69190188830638,523.3726831238259,101925.53886038219 +2016-01-20 17:00:00,0.0,0.0019567952140465876,272.71684736832043,6.702023678942624,-5.76955487110644,202.6596257974055,545.5417887287634,101925.75586769867 +2016-01-20 18:00:00,0.0,0.00192848638669546,273.8259260332653,6.500000096857548,-4.98450060700225,211.76086885672564,485.17165801621013,101709.66972390353 +2016-01-20 19:00:00,0.0,0.0019226802236672082,274.4084630442042,6.797802686225439,-4.684500602531902,211.72884902584724,388.0374966707582,101765.57566392665 +2016-01-20 20:00:00,0.0,0.0019238672945142445,274.87144165273054,7.069554890477949,-4.384500598061553,211.43920437757717,270.49542080424726,101661.8498092328 +2016-01-20 21:00:00,0.0,0.0018570780299671378,274.8733493439798,7.343509473737146,-4.15410875868644,226.30763249031864,92.15704607078048,101660.30544128282 +2016-01-20 22:00:00,0.0,0.0017910834645321681,274.70826859456514,6.6697095677270966,-4.084500593591205,224.93971769501158,0.0,101658.92003457344 +2016-01-20 23:00:00,0.0,0.001649258151847764,274.29813184709593,6.0655468774079075,-4.076098676060652,222.03526710466997,0.0,101714.37631666573 +2016-01-21 00:00:00,0.0,0.001733866597247876,274.2303592746294,5.3920092049620685,-4.071752260876924,255.7584529667997,0.0,101713.65647934409 +2016-01-21 01:00:00,0.0,0.001639798636174372,273.9499302291086,4.779449334391426,-4.084500593591205,255.34528666324283,0.0,101836.23460290067 +2016-01-21 02:00:00,0.0,0.0016714352005575345,273.67347414356345,4.171174958788634,-4.171174958788634,255.73090708186106,0.0,101820.84200045725 +2016-01-21 03:00:00,0.0,0.0016660284820306653,273.16093323422973,3.4937946388827257,-4.184500595081321,253.17373600425637,0.0,101746.12511309415 +2016-01-21 04:00:00,0.0,0.001687937720380858,272.8504696854941,3.3756931996981367,-4.471752266837388,253.34714304606513,0.0,101694.40176896218 +2016-01-21 05:00:00,0.0,0.0017660861040045815,272.7233523139439,3.200000047683716,-4.700000070035458,254.57573411371254,0.0,101688.7803735708 +2016-01-21 06:00:00,0.0,0.0017609914850083605,272.3796888285507,3.094525135831876,-5.000000074505806,244.23975753896732,0.0,101681.30547562172 +2016-01-21 07:00:00,0.0,0.0018966889137325784,272.24724986877584,2.9000000432133675,-5.5717522832286654,245.6491796843648,0.0,101677.93003842248 +2016-01-21 08:00:00,0.0,0.0017897875216489035,271.76872228146584,2.8000000417232513,-6.093794677625745,243.6000441128574,0.0,101606.76590345535 +2016-01-21 09:00:00,0.0,0.0017654384093784285,271.6641345931575,2.600000038743019,-6.670860369930441,264.1037975900289,0.0,101576.27967394528 +2016-01-21 10:00:00,0.0,0.0017307389082228753,271.16874292209764,2.928247843431205,-6.765546887838721,262.91198508015555,0.0,101694.51293310129 +2016-01-21 11:00:00,0.0,0.001696473740530373,270.96501294222725,3.228247847901553,-6.784500633824341,263.18557329046365,0.0,101807.4516224391 +2016-01-21 12:00:00,0.0,0.001720365277223748,270.6038917008705,3.53445326564324,-6.876098717783904,255.48910747743946,0.0,101762.34196463827 +2016-01-21 13:00:00,0.0,0.0017275379818158015,270.5212629218472,4.094525150733038,-7.57126584927319,255.55494875557616,94.49861666342713,101828.46374166374 +2016-01-21 14:00:00,0.0,0.0017993303959647823,270.85605726793636,4.581754256646576,-8.341068223068064,258.1589090859956,195.45191766175353,101781.13346367789 +2016-01-21 15:00:00,0.0,0.0017537665355437078,270.8868337528062,5.075521387383408,-9.025568765995322,208.28405993106466,406.89159535585674,101785.92077959917 +2016-01-21 16:00:00,0.0,0.0017383151824803087,271.46871452141585,5.1937946642147,-7.938924180930555,209.55371868582517,510.98500887558265,101755.48286361249 +2016-01-21 17:00:00,0.0,0.0017453569452543294,272.443808211966,5.300000078976154,-6.766919422168532,212.29644792970907,532.7981202435732,101866.60380771954 +2016-01-21 18:00:00,0.0,0.0017063324233195236,273.1104570601238,5.423901465500379,-5.600000083446503,208.48167449727634,491.52175242332413,101743.5753681612 +2016-01-21 19:00:00,0.0,0.001703786506495946,273.99346130396196,6.006205502678306,-5.4000000804662704,208.97297196039688,393.7844987205872,101713.6647998296 +2016-01-21 20:00:00,0.0,0.0017274684837240875,274.42510063000435,6.600000098347664,-5.200000077486038,208.63395061055957,275.7188521790054,101701.52172727363 +2016-01-21 21:00:00,0.0,0.001718637868394724,274.475674512207,7.1845006397848055,-5.000000074505806,209.40715438578746,101.81218113590486,101663.06281862658 +2016-01-21 22:00:00,0.0,0.0016817841527143988,274.3002339734295,7.000000104308128,-5.666919405777255,208.3802623745301,0.0,101807.40948390718 +2016-01-21 23:00:00,0.0,0.0017334289901802713,273.750286369912,6.800000101327896,-6.269893295571869,207.09090827560476,0.0,101794.08980503205 +2016-01-22 00:00:00,0.0,0.0017092280009802843,273.11863082296645,6.600000098347664,-6.940417157431407,241.32870207184877,0.0,101960.39099413424 +2016-01-22 01:00:00,0.0,0.001701422194728204,272.8514522117357,6.200000092387199,-6.856845567042844,242.44007987240653,0.0,101981.08605448299 +2016-01-22 02:00:00,0.0,0.0016288300514937769,272.3096477345824,5.8937946746455125,-6.84970651498551,241.88119851944984,0.0,101978.44624582387 +2016-01-22 03:00:00,0.0,0.001649411202591619,271.9998835552936,5.4978026668539295,-6.769893303022449,237.4525082647446,0.0,101983.74044029361 +2016-01-22 04:00:00,0.0,0.0015992399768257812,271.4391926845168,5.3760986954321615,-7.055675534498447,236.3258649467208,0.0,102042.69978484654 +2016-01-22 05:00:00,0.0,0.0015434801659335944,270.98992343439096,5.1937946642147,-7.340874009898076,235.3214882482201,0.0,102075.9902726622 +2016-01-22 06:00:00,0.0,0.0014730335820581839,270.3055961717489,5.071752275778085,-7.566911579961629,195.6485262110386,0.0,102140.07915453381 +2016-01-22 07:00:00,0.0,0.0015539218058830996,269.6765193405819,4.6000000685453415,-7.275521420165963,196.09563225564753,0.0,102175.4363698491 +2016-01-22 08:00:00,0.0,0.0015762454654978295,268.6982622420434,4.2045853643321625,-6.984500636804573,194.92050221739433,0.0,102128.43348105407 +2016-01-22 09:00:00,0.0,0.001359731553774345,268.31886615335486,3.737248349575549,-6.70000009983778,181.8983222427279,0.0,102148.22172623625 +2016-01-22 10:00:00,0.0,0.0013471619698662719,267.9905836367567,3.5244787407665776,-6.775521412715382,181.45079285439923,0.0,102268.95523720609 +2016-01-22 11:00:00,0.0,0.0013386538865191352,267.643275010636,3.2437473154051086,-6.855675531518215,180.96828034446645,0.0,102157.74070854562 +2016-01-22 12:00:00,0.0,0.0014298773550218322,267.55056489468456,3.035104302967692,-6.929630111797176,182.8302080106403,0.0,102393.01043621956 +2016-01-22 13:00:00,0.0,0.0013969849335900785,267.8945805463839,2.634453252232195,-7.055675534498447,183.27253011800414,139.57754583647508,102429.97576335796 +2016-01-22 14:00:00,0.0,0.0013947506721226459,267.89042145279336,2.3005773378510757,-7.175521418675847,183.2377725398977,286.7334755174372,102408.68085070536 +2016-01-22 15:00:00,0.0,0.001419819956495403,268.64606219543856,1.9000000283122063,-7.366911576981397,191.75998573344307,418.36528624602863,102291.60663585336 +2016-01-22 16:00:00,0.0,0.0013838844311706597,269.7364467955931,1.600000023841858,-6.7700087354050105,193.32578867211038,525.2855235577089,102337.70232049681 +2016-01-22 17:00:00,0.0,0.0015017254549154438,270.170841134816,1.2239014029155024,-6.100000090897083,194.41667466490404,547.7026372974339,102320.34477349988 +2016-01-22 18:00:00,0.0,0.001506104282245436,270.97101042723665,0.9000000134110451,-5.500000081956387,205.98166318548115,479.48074533278185,102178.02487415524 +2016-01-22 19:00:00,0.0,0.0014224142883317971,271.54103496526375,0.38856018528695446,-5.600000083446503,205.49781694887332,385.11147684960406,102161.78413325103 +2016-01-22 20:00:00,0.0,0.0013591923711889077,271.6667580455902,-0.200577306558637,-5.684500617433063,204.0237901717524,270.64243096701443,102092.4177612706 +2016-01-22 21:00:00,0.0,0.001335561563803066,272.1847871478407,-0.7260349671783743,-5.776098701392626,236.89142396226273,98.37051569237455,102110.51857465634 +2016-01-22 22:00:00,0.0,0.0013919392213520877,272.1773988473742,-1.028247815118999,-5.200000077486038,237.6602448776031,0.0,102056.90221433002 +2016-01-22 23:00:00,0.0,0.0014445408117818893,272.47722419743934,-1.4000000208616257,-4.684500602531902,239.38637765905705,0.0,102088.28175957526 +2016-01-23 00:00:00,0.0,0.0014337494196468477,272.4289450318202,-1.700000025331974,-4.100000061094761,269.3281615831882,0.0,102155.16529231097 +2016-01-23 01:00:00,0.0,0.00148745061958731,272.2850046103202,-2.600000038743019,-3.7000000551342964,267.92901344575904,0.0,102181.44044730795 +2016-01-23 02:00:00,0.0,0.001608275098982629,272.2543169097273,-3.500000052154064,-3.2344532611728916,267.50297664927103,0.0,102137.35023628385 +2016-01-23 03:00:00,0.0,0.0016953445882895736,272.3213200872032,-4.3054749744367165,-2.8301068400286984,279.9927114573884,0.0,102089.35725398787 +2016-01-23 04:00:00,0.0,0.0017119743404534955,272.46772258973397,-5.284500611472598,-3.8239014416585215,278.2980574241365,0.0,102092.69603434482 +2016-01-23 05:00:00,0.0,0.0017209627720960218,272.3824825748977,-6.189735032285816,-4.887906821479576,275.73396368345766,0.0,102002.28005740543 +2016-01-23 06:00:00,0.0,0.0019186032575544236,272.4499166845468,-7.1562528395669665,-5.873609206337103,285.2298381968308,0.0,101958.12998955644 +2016-01-23 07:00:00,0.0,0.0022316870132197647,272.45383864325936,-7.975521430596776,-6.400000095367432,286.5916382773251,0.0,101901.43186721744 +2016-01-23 08:00:00,7.238568927233386e-06,0.0023138364828800486,272.86780701180214,-8.784500663626664,-7.000000104308128,287.49403694180154,0.0,101687.58085270274 +2016-01-23 09:00:00,1.5516670342416157e-05,0.0026109854926387108,273.28352830956004,-9.600000143051147,-7.515499579262264,302.5167632851406,0.0,101586.20119794997 +2016-01-23 10:00:00,1.648485433712452e-05,0.0030078926904043668,273.80975412653754,-10.397802739869618,-7.334453322267652,304.5297977871899,0.0,101448.77427218144 +2016-01-23 11:00:00,2.6189836066108173e-05,0.0030390522520762015,274.42732900866497,-11.265546954893946,-7.2244787959008745,304.17004146253095,0.0,101248.5712767428 +2016-01-23 12:00:00,1.8429412965845455e-06,0.0031630834506326585,274.7422195421309,-12.056252912582657,-7.044324675607926,308.0863815957448,0.0,101141.76932366905 +2016-01-23 13:00:00,1.2551891647366542e-05,0.003385111030198448,274.8046332556536,-12.575521499142118,-6.6604987330479934,306.6999524625636,69.29462162673761,101146.62549642727 +2016-01-23 14:00:00,3.467139711789708e-05,0.0035976494688375444,274.6075357799022,-13.097802780102754,-6.344324665177114,303.9335612876408,141.35254122161888,101011.0971871409 +2016-01-23 15:00:00,3.467139711789708e-05,0.0036544147122598396,274.2537472541373,-13.600000202655792,-5.956490724448299,301.81459616266216,160.95231730616214,100774.69809625998 +2016-01-23 16:00:00,9.366706688272261e-05,0.00368519493458008,274.2988024062734,-13.599422899077389,-7.61790501830782,301.91304335705325,201.99049390673537,100802.6870884751 +2016-01-23 17:00:00,0.00020994509567110397,0.003750833589508583,273.68981278057254,-13.575693351689981,-9.284159764237474,299.15837391927636,210.640897113418,100508.58523519927 +2016-01-23 18:00:00,0.00012108336240228618,0.0037014517144198645,273.7487441102542,-13.491358280886443,-10.875521473810144,296.51529800539583,180.47941555824013,100340.18833166729 +2016-01-23 19:00:00,4.167620865733554e-05,0.0037581633294542756,273.90738781634616,-13.375521511063045,-11.739501541133373,297.4030512753864,145.1127425434992,100231.60403547235 +2016-01-23 20:00:00,3.7765163994990346e-05,0.00360603276402685,273.9963911034502,-13.257040307087625,-12.538924249475897,297.21059849038176,102.54207128579988,100256.72630032356 +2016-01-23 21:00:00,2.9370391728931995e-05,0.003690227639153331,273.99339175172787,-13.146723867728982,-13.33060798121501,297.8365091372452,42.84753425954452,100241.7873430459 +2016-01-23 22:00:00,2.0945815169335357e-05,0.0036158231650443642,273.79225796353325,-12.055675609004252,-13.949470224045122,297.18220282572906,0.0,100288.13044591839 +2016-01-23 23:00:00,3.104131146079565e-05,0.0037442256384722476,273.8710723457138,-10.969893365607325,-14.63746554781084,298.69449552440807,0.0,100192.65300491522 +2016-01-24 00:00:00,3.794826051703207e-05,0.0037144784452898525,273.8405634031694,-9.945129624004217,-15.251420081324847,294.6537017304965,0.0,100137.96843176156 +2016-01-24 01:00:00,2.3931174283332813e-05,0.003522610874986832,272.86040834076755,-9.063761459878528,-14.45567564476704,291.36107961154875,0.0,100111.49314991118 +2016-01-24 02:00:00,3.334548537984364e-05,0.003365338051258141,272.0386686347033,-8.175115967645306,-13.58790933720725,288.8443133686293,0.0,100059.9616360055 +2016-01-24 03:00:00,1.6422234276471476e-05,0.0030706946495571573,271.09520330303775,-7.292009233274275,-12.7909004580447,283.4666147973899,0.0,100123.33399545816 +2016-01-24 04:00:00,1.8768170616833064e-05,0.0028922095101108435,270.3590890892232,-5.971174985610724,-12.574186609753287,282.578957680621,0.0,100157.76769258574 +2016-01-24 05:00:00,1.6879394764258265e-05,0.002801375824395029,270.15299657138235,-4.5845006010417855,-12.371752384556562,284.40561397052227,0.0,100190.89562707582 +2016-01-24 06:00:00,1.8768170616833064e-05,0.002662457807220436,269.9993665269912,-3.2711749453775893,-12.171175077997924,283.1833671384203,0.0,100190.85940904866 +2016-01-24 07:00:00,1.5157019258805458e-05,0.0026108581941999224,270.3847181838578,-3.095167167252073,-11.983923407731973,285.77470926410876,0.0,100329.82396309548 +2016-01-24 08:00:00,1.5653031525105095e-05,0.0026293215742530756,270.6115241272616,-2.9920091691992816,-11.859661511657437,288.13577370874253,0.0,100462.81085252046 +2016-01-24 09:00:00,1.4470968429305324e-05,0.0025899519266269918,270.8106176572123,-2.876098658179259,-11.739501541133373,259.54913253151295,0.0,100402.31736674062 +2016-01-24 10:00:00,6.2875785534285506e-06,0.002592669910073155,270.51719386747897,-2.3845005682592313,-11.727027302288592,259.95732662023926,0.0,100545.2691181221 +2016-01-24 11:00:00,0.0,0.0022205265475917645,269.3420891840546,-1.8879091628636637,-11.71627634675566,254.68005236310808,0.0,100684.98398523043 +2016-01-24 12:00:00,0.0,0.002064921844841848,268.83186804796054,-1.4619440397280266,-11.696488271110141,198.8392484519834,0.0,100794.1161885657 +2016-01-24 13:00:00,0.0,0.0020653452628993717,268.70856598497807,-1.278871978658957,-10.906042503305848,199.33270456492545,135.8030317356215,100917.98987845815 +2016-01-24 14:00:00,0.0,0.0018496908094241225,268.99256147005866,-1.1655468043922175,-10.046368734208217,199.53633690013132,275.0627607580874,100960.26472236439 +2016-01-24 15:00:00,0.0,0.0017570062309336858,269.7673255361445,-1.0507850645192254,-9.184500669587129,210.13259472289204,406.2808588486169,100940.94881206981 +2016-01-24 16:00:00,0.0,0.0016583795888675972,270.5551097753565,-0.45353139997373837,-8.57360924657024,209.96383016082814,509.7434074806628,101008.75031576034 +2016-01-24 17:00:00,0.0,0.0016156967634134275,271.79403543561244,0.13838271338919997,-7.96376144348725,211.5526125474299,531.6629821319591,100944.59809598641 +2016-01-24 18:00:00,0.0,0.0016402236945176733,273.2420246448968,0.8021974270233859,-7.353588687788431,231.45903202259817,469.6472404795586,101029.02877050804 +2016-01-24 19:00:00,0.0,0.0016375859807060964,274.5990693910081,1.028247815118999,-6.55908412910288,234.79619978216414,378.44072146449616,101023.47972477778 +2016-01-24 20:00:00,0.0,0.0015151404990824849,275.2751900761578,1.3239014044056185,-5.831258311111827,234.62547872022463,268.16734700587665,101065.74378288213 +2016-01-24 21:00:00,0.0,0.0018494638944880142,275.74390639422364,1.6154994913454135,-5.046723747029576,265.7875243946596,95.08767994436874,101190.74881960214 +2016-01-24 22:00:00,0.0,0.001553977482845903,275.70149203116097,2.123901416326547,-4.9301540066478475,261.62297829612237,0.0,101267.58956070823 +2016-01-24 23:00:00,0.0,0.0020302051705443427,275.9840428839738,2.6288251425392613,-4.821925584095033,266.8563251471692,0.0,101387.63581951932 +2016-01-25 00:00:00,0.0,0.0018323166967312671,275.8272304409745,3.206856505730086,-4.695176865525447,269.01389239946354,0.0,101428.65957576982 +2016-01-25 01:00:00,0.0,0.001936193689664125,275.7732620784393,3.2945251388121086,-4.225568694469748,269.78487681599927,0.0,101494.03620313124 +2016-01-25 02:00:00,0.0,0.0018572352848407736,275.491639172972,3.315840423517158,-3.829630065603578,267.87115295051905,0.0,101540.9533038322 +2016-01-25 03:00:00,0.0,0.0018031930551784315,274.7504636759397,3.400000050663948,-3.3655468371747723,283.1408502287114,0.0,101602.32066385399 +2016-01-25 04:00:00,0.0,0.0018178973191309289,274.33886171582157,3.684500587630741,-3.35567547936415,281.5693969826007,0.0,101694.22575381404 +2016-01-25 05:00:00,0.0,0.0017132104248331317,274.1884234362886,3.89379464484319,-3.286651844058386,280.13463266966494,0.0,101666.13367053369 +2016-01-25 06:00:00,0.0,0.0016745597118104003,273.7175107243258,4.17511590804066,-3.269893250868385,259.07498014331213,0.0,101758.12466284249 +2016-01-25 07:00:00,0.0,0.002405966586250303,273.1909764817795,4.000000059604645,-3.35567547936415,263.3908239579017,0.0,101864.52016258553 +2016-01-25 08:00:00,0.0,0.0021607142377481417,273.0123816066726,3.9000000581145287,-3.3683369842234527,260.765638708893,0.0,101842.14047788188 +2016-01-25 09:00:00,0.0,0.0019280026798038706,272.7719055296053,3.7182458670330614,-3.454108748255627,242.54358247191922,0.0,101885.81153870815 +2016-01-25 10:00:00,0.0,0.0019513751017950394,272.8837256143503,3.223901432717825,-3.3655468371747723,243.58610850748963,0.0,102010.72460147743 +2016-01-25 11:00:00,0.0,0.002175279203207449,273.1865246798424,2.7239014252672438,-3.2755213605613185,247.37716837661998,0.0,102125.88884938268 +2016-01-25 12:00:00,0.0,0.0022174808273099553,272.5950214065768,2.223901417816663,-3.2541087452753947,233.6380908955735,0.0,102218.13932021972 +2016-01-25 13:00:00,0.0,0.002018052844466493,272.6242133877557,1.539033779025858,-3.076098661159491,232.36090009293952,135.26475485852393,102281.6099030698 +2016-01-25 14:00:00,0.0,0.002063110799944562,273.0317558189047,0.9301068117164921,-2.8937946299420294,234.15605131312313,272.040019111988,102385.95457264691 +2016-01-25 15:00:00,0.0,0.0019736967654198183,273.3070879634944,0.258354601503517,-2.7717522415054137,216.74622295775055,423.7321585069,102397.46633084344 +2016-01-25 16:00:00,0.0,0.0020458053271494247,274.0375278109684,0.12447869010262974,-2.294525123910947,218.76574755841474,531.0999978886136,102496.45541899823 +2016-01-25 17:00:00,0.0,0.0022595133675678545,274.4678019547349,0.0,-1.7239014103660828,220.83555293570512,554.275209637149,102469.19219300381 +2016-01-25 18:00:00,0.0,0.0023737107309497623,274.88270630685344,-0.12639088306986357,-1.2239014029155024,225.43453355885512,494.8579611619164,102469.90502105422 +2016-01-25 19:00:00,0.0,0.002397057904736545,275.4656058995618,0.05727679668713982,-0.5000000074505806,225.910654036346,399.54056006382245,102448.4884335761 +2016-01-25 20:00:00,0.0,0.0024466555483092962,275.52426265575093,0.17552131436771862,0.27609861943623953,224.84873760907405,284.29681392338784,102430.75563979072 +2016-01-25 21:00:00,0.0,0.0025852103165542265,275.81828687899724,0.36903086598717766,1.0000000149011612,232.30738133767602,111.45787912788192,102495.27532199948 +2016-01-25 22:00:00,0.0,0.0027628921040369517,275.4027768845948,0.0,1.600000023841858,230.76326250898072,0.0,102466.41170806797 +2016-01-25 23:00:00,0.0,0.0027338493234113047,275.72606888555794,-0.30000000447034836,2.123181393253542,230.54790766249027,0.0,102516.16056281367 +2016-01-26 00:00:00,0.0,0.0028073838489002232,275.7178230230411,-0.5931435508943262,2.7000000402331352,246.4564803322242,0.0,102515.60435589353 +2016-01-26 01:00:00,0.0,0.0029376573966438183,275.91872682701427,-0.20000000298023224,3.6000000536441803,245.82910337502838,0.0,102546.97217097944 +2016-01-26 02:00:00,0.0,0.003270756328464148,275.5776382663094,0.20000000298023224,4.476098682021116,244.31778136551864,0.0,102563.13889108955 +2016-01-26 03:00:00,0.0,0.0035483426949838954,275.7321029851066,0.6000000089406967,5.365546866977095,240.00231995397507,0.0,102524.45515807968 +2016-01-26 04:00:00,0.0,0.00362337643619865,275.76273398245866,1.275693168405698,5.069487811758773,237.95255382968534,0.0,102469.88699301807 +2016-01-26 05:00:00,0.0,0.00392318539198881,276.7521030177278,1.9000000283122063,4.769893273220127,240.05049227210867,0.0,102415.44853499881 +2016-01-26 06:00:00,0.0,0.0036634582879954917,277.48692285724906,2.500000037252903,4.540479207895413,246.62601610037663,0.0,102378.45407087663 +2016-01-26 07:00:00,0.0,0.004026555953497811,278.2427894052921,2.500000037252903,4.453531459578383,249.6064360782234,0.0,102332.33961101652 +2016-01-26 08:00:00,0.0,0.004609689406880673,279.22077826393286,2.500000037252903,4.284500596571437,253.93453648035424,0.0,102203.99873396821 +2016-01-26 09:00:00,0.0,0.004861845546981998,279.9191909683702,2.430391872157669,4.192009187080675,285.55018464705637,0.0,102053.30366228614 +2016-01-26 10:00:00,0.0,0.005066536015896518,279.97303309401235,3.500000052154064,4.893794659744351,285.5950485739707,0.0,102040.2863742917 +2016-01-26 11:00:00,0.0,0.005458173450563625,280.0036131338096,4.476098682021116,5.657927924908674,286.04652885595664,0.0,102043.74817930003 +2016-01-26 12:00:00,0.0,0.005352083593796444,280.7669102425268,5.469487817719237,6.365546881878256,259.44385605214745,0.0,101996.25990672046 +2016-01-26 13:00:00,0.0,0.005359888040604569,281.3149032421105,5.371752280248433,6.983923333226168,261.04271446202574,134.5095934120829,101962.49356327203 +2016-01-26 14:00:00,0.0,0.005282851762442936,281.709829726348,5.2282478777038754,7.665546901249766,261.68321376435307,268.47561197653425,101929.10702052788 +2016-01-26 15:00:00,0.0,0.005741345333614591,281.8113539956148,5.130106874301369,8.355675553869956,270.52318256717206,381.288754470433,101787.01148881314 +2016-01-26 16:00:00,0.0,0.005782643017470183,282.11823129346027,5.624478772059017,8.17887208147697,270.8672188850279,477.73549988235357,101764.67737173947 +2016-01-26 17:00:00,0.0,0.005858397969055259,282.3353349520416,6.13586683765369,8.076098735665298,270.9906602646269,498.5178740014419,101595.48451397059 +2016-01-26 18:00:00,0.0,0.0058349229017050745,282.6107220721278,6.70000009983778,7.971752318991452,293.0208829154573,411.3962278407874,101455.45065416873 +2016-01-26 19:00:00,0.0,0.005660451499404686,281.7954944639834,6.900000102818012,7.676098729704833,289.4451771204694,332.74518072112335,101399.8603172911 +2016-01-26 20:00:00,0.0,0.005484204169849531,281.58534352321965,7.1000001057982445,7.383923339186633,288.37531282688735,237.70072620362328,101335.62417300533 +2016-01-26 21:00:00,0.0,0.005334388523784338,281.5361848463522,7.315840483121803,7.154055424464511,312.7230116326371,79.65785378003662,101253.84778081841 +2016-01-26 22:00:00,0.0,0.0051591229755611106,281.1485431576075,7.8651111450129685,6.761518354299606,311.02833309897466,0.0,101264.1421215935 +2016-01-26 23:00:00,0.0,0.005146207621626468,281.24521410804164,8.360966368495639,6.368337028926937,311.96752393781253,0.0,101282.18465376784 +2016-01-27 00:00:00,0.0,0.005134590348013819,280.88078242046976,8.840479271970407,5.969893291101521,341.0906005929335,0.0,101306.55402316114 +2016-01-27 01:00:00,0.0,0.005274125515328104,280.73001628536616,8.553531520673145,5.954055406583117,341.97413497213336,0.0,101368.96553093893 +2016-01-27 02:00:00,0.0,0.00529444444767193,280.62022371847706,8.184500654685968,5.858465663665735,342.86335560101276,0.0,101343.53508859916 +2016-01-27 03:00:00,0.0,0.005293597919866809,280.6716661894217,7.897802702616716,5.840417141040129,324.3556879569621,0.0,101279.3430491528 +2016-01-27 04:00:00,3.785941909230459e-07,0.005282730799468098,280.89306356553885,7.587909247800283,4.755675500225776,326.8420183569416,0.0,101233.30089852847 +2016-01-27 05:00:00,0.0,0.005334373167133257,281.02280509594016,7.353531502791751,3.6655468416451207,329.1119595674719,0.0,101327.24046814124 +2016-01-27 06:00:00,3.5796989734685756e-05,0.005271977606022334,280.7504074583128,7.049505949241911,2.593794625471681,330.1737906833506,0.0,101245.84316464554 +2016-01-27 07:00:00,9.51963879918914e-06,0.005146747397091275,280.7710439840317,6.2711749900810725,1.8845005608086507,329.8164651524651,0.0,101176.30223191922 +2016-01-27 08:00:00,1.207170012129268e-05,0.004981344646476691,280.62262220352284,5.500000081956387,1.2584950915784863,328.6286440639392,0.0,101139.16697996623 +2016-01-27 09:00:00,3.785941909230459e-07,0.004881054035440787,280.280278052903,4.723901455069567,0.5556754376408988,335.01289459252337,0.0,101141.02021469008 +2016-01-27 10:00:00,9.51963879918914e-06,0.00487522980507559,279.7227066150672,4.505474977416949,0.26828400551296366,332.6805894160312,0.0,101205.46852943656 +2016-01-27 11:00:00,2.0383181619736416e-05,0.004926278256623875,279.40158056849856,4.376098680531,-0.023901385034108873,331.5962287221689,0.0,101222.91765196211 +2016-01-27 12:00:00,4.4801324108829015e-05,0.004744782702196035,278.3026124286364,4.16989326427943,-0.31549947197390377,323.4209185238192,0.0,101264.50762889472 +2016-01-27 13:00:00,2.7846594045571415e-05,0.004614816421443512,277.92918794485854,4.664895811771249,-0.515499474954136,321.9852711894125,55.39017767123064,101367.58741598156 +2016-01-27 14:00:00,0.0,0.004031772602388666,278.34124613483726,5.084500608492366,-0.7154994779343682,322.0562378034711,109.69804617517467,101415.3969823064 +2016-01-27 15:00:00,0.0,0.003464724379504456,278.5992511449749,5.584500615942947,-0.8464686193977711,300.1705678903233,286.64925519160533,101455.73587871325 +2016-01-27 16:00:00,0.0,0.0033382958460968005,278.7520322552964,5.784500618923179,-1.3368897398685813,300.75072269465494,359.0569516258562,101455.38538253825 +2016-01-27 17:00:00,0.0,0.003325673144637256,278.66565628738215,6.054108786998646,-1.8288251306183325,301.14556886916625,374.77968675493685,101446.62227212213 +2016-01-27 18:00:00,0.0,0.0033762159902936415,278.96062350740794,6.256252826155922,-2.3243068852384825,268.4792315902092,375.1292340763072,101409.92246872526 +2016-01-27 19:00:00,0.0,0.0030319013916205186,279.16322652597796,6.156252824665806,-2.400000035762787,267.73360267334056,303.8769151568286,101442.22302647062 +2016-01-27 20:00:00,0.0,0.0031130005766753874,279.1644144314386,6.0655468774079075,-2.4931435792065324,268.7170423071171,217.878403394597,101471.22023243186 +2016-01-27 21:00:00,0.0,0.003124558926252464,279.09165065305615,5.972539665812704,-2.571174934946777,233.6806008522636,120.49250612408318,101547.72094371251 +2016-01-27 22:00:00,0.0,0.0031095087099460798,278.91113028376947,5.465546868467211,-3.0648957879293914,233.84559388194094,0.0,101558.57419043448 +2016-01-27 23:00:00,0.0,0.002937691105874216,278.7040128195179,4.955675503206008,-3.5535314461673377,233.30646809728302,0.0,101621.20314252234 +2016-01-28 00:00:00,0.0,0.0026606942867979273,278.0820005438973,4.455675495755427,-3.9698932612991977,222.8020065109262,0.0,101737.71520766037 +2016-01-28 01:00:00,0.0,0.0026354015428058193,277.43882382186155,3.775521368011899,-3.5788720129316283,222.2335700950598,0.0,101834.73262269703 +2016-01-28 02:00:00,0.0,0.0023151885632661695,276.6797166277185,3.16554683419454,-3.1760986626496073,219.61820040644048,0.0,101835.81721050103 +2016-01-28 03:00:00,0.0,0.0023246990529943207,275.74960355513196,2.4845005697493474,-2.7845005742196958,213.06302795517308,0.0,101792.03651849317 +2016-01-28 04:00:00,0.0,0.002228578460722445,275.09457899905095,1.9000000283122063,-2.5845005712394635,210.53976142003216,0.0,101874.78970189928 +2016-01-28 05:00:00,0.0,0.0020662733279689276,274.5622629482542,1.4000000208616257,-2.3755213471502734,207.89818141204287,0.0,101843.01866633623 +2016-01-28 06:00:00,0.0,0.0020271788118863825,273.6458867058956,0.800000011920929,-2.1739012326459886,204.33283816712068,0.0,101922.15227737508 +2016-01-28 07:00:00,0.0,0.001960883916412038,273.12482653504327,0.3239013895044572,-1.569709491731175,203.2197930472813,0.0,101853.81674248312 +2016-01-28 08:00:00,0.0,0.0017783541494211916,272.09049921274186,-0.1717522027623945,-0.9655468014119852,199.80176954183563,0.0,101856.10166016038 +2016-01-28 09:00:00,0.0,0.0018380280721930042,272.23485962011523,-0.5994227053622919,-0.36340275629424423,202.98831431587263,0.0,101791.63025571602 +2016-01-28 10:00:00,0.0,0.001803559307538144,272.2022959738718,-0.4000000059604645,0.43039184235534655,202.84738668477,0.0,101811.2497540022 +2016-01-28 11:00:00,0.0,0.0018235524522876576,271.3257472466302,-0.20000000298023224,1.2945251090097858,200.2949602945695,0.0,101712.62542323206 +2016-01-28 12:00:00,0.0,0.001751483271135511,270.9926093886936,0.07175220127227838,2.0702182699649034,196.3305300248396,0.0,101701.08131736168 +2016-01-28 13:00:00,0.0,0.0023140479800841554,274.02655141409645,0.29135808419111425,2.8913581229341334,207.6675371766895,154.61926768038737,101821.69043816769 +2016-01-28 14:00:00,0.0,0.0025609965304067895,274.94863796667335,0.5000000074505806,3.699422751555892,210.84833293069022,303.7713859950058,101618.4822930228 +2016-01-28 15:00:00,0.0,0.002454669755825914,275.664153652517,0.7154994779343682,4.5711749647490985,226.99165170382537,425.2624855326702,101525.46773596291 +2016-01-28 16:00:00,0.0,0.002533937753295732,276.75976589575663,1.2282478180992313,4.200000062584877,228.44070561799919,532.2112953970346,101532.60118753869 +2016-01-28 17:00:00,0.0,0.002770493370569844,277.1438007183982,1.8000000268220901,3.828825160420655,228.47025840398607,555.4048662357757,101400.59678214567 +2016-01-28 18:00:00,0.0,0.002988040962736678,277.4718409092647,2.400000035762787,3.5301068504595112,241.285358462154,490.22155952880394,101253.4434165276 +2016-01-28 19:00:00,0.0,0.0031875676419786452,277.86856955421894,2.2005773363609595,3.346809563490445,242.76565891373443,397.6616072231154,101227.09135394634 +2016-01-28 20:00:00,0.0,0.0033440835506852035,278.0629006533885,2.0288251335985645,3.2344532611728916,243.35553772950217,286.27607259554384,100996.11479654894 +2016-01-28 21:00:00,0.0,0.003741479856561583,278.10054883636593,1.9184822369496053,3.1239014312277082,296.5260254969602,102.85649713227505,100955.60054623587 +2016-01-28 22:00:00,0.0,0.003919910822589397,277.6433767978597,1.830646483764959,2.928247843431205,295.8020814766796,0.0,100935.83966657896 +2016-01-28 23:00:00,0.0,0.004055039012192058,277.41242697591406,1.7458913292304112,2.8000000417232513,295.7954553342707,0.0,100849.94185227394 +2016-01-29 00:00:00,0.0,0.0043138707866008435,277.57551522476007,1.7301068236374213,2.600000038743019,282.41056016627954,0.0,100756.83834124019 +2016-01-29 01:00:00,0.0,0.004430003833756434,277.74608158309,1.5305122865888916,2.500000037252903,284.2975436600188,0.0,100800.41767761648 +2016-01-29 02:00:00,0.0,0.00456852733149962,277.8379061677006,1.3368897398685813,2.3154995017762263,285.8660490578436,0.0,100625.1630402841 +2016-01-29 03:00:00,0.0,0.0044962569744409035,278.13707652534384,1.1437472841126706,2.2005773363609595,292.28232336126246,0.0,100574.20526515211 +2016-01-29 04:00:00,0.0,0.004293424266321456,278.15330296915283,1.0301068132066082,1.6048329027833843,291.4960270938363,0.0,100564.85074643622 +2016-01-29 05:00:00,0.0,0.004062528658956331,278.1682704576376,0.8443245832207269,1.0062054281724992,290.5344088648428,0.0,100434.01886418014 +2016-01-29 06:00:00,0.0,0.003911181740103772,277.9198642681486,0.6595097571283383,0.4062054192318027,296.14141648305986,0.0,100357.76647738296 +2016-01-29 07:00:00,0.0,0.0035915667065827207,277.01904876591004,0.144324572789914,0.21549947048378765,291.2512782129464,0.0,100287.06504034562 +2016-01-29 08:00:00,0.0,0.003721968710543411,276.8289550158402,-0.3653231289336688,0.015499467503555412,291.36681953269897,0.0,100090.61989414648 +2016-01-29 09:00:00,0.0,0.00396077975256147,276.79255133490716,-0.949164951505057,-0.1717522027623945,267.52869468422716,0.0,99977.92251731748 +2016-01-29 10:00:00,0.0,0.0038187838784128547,275.9074211269995,-0.972539591306898,-0.28450053696679295,263.46573588154257,0.0,99946.99071190278 +2016-01-29 11:00:00,0.0,0.0040348295285235515,276.2242314430601,-1.0000000149011612,-0.39379459268912625,265.43550162262557,0.0,99820.40729249448 +2016-01-29 12:00:00,0.0,0.003886089648559952,276.04924191763627,-1.0239013999352702,-0.4937945941792424,282.46227073167256,0.0,99717.1289810414 +2016-01-29 13:00:00,0.0,0.0036167336484820727,276.34993294636274,0.0,-0.7048976172141319,281.6512917431373,128.15654782820656,99711.83573448006 +2016-01-29 14:00:00,0.0,0.003933083343528449,276.8697895105235,1.1000000163912773,-0.9705970650189668,284.29278857600934,249.84969893428666,99549.38357720764 +2016-01-29 15:00:00,0.0,0.003996854062758116,276.68516150723156,2.2000000327825546,-1.1717522176635555,238.00961126430047,422.98250888586136,99557.5268496786 +2016-01-29 16:00:00,0.0,0.004074786835795647,277.1502773540628,3.0303918810983657,-1.4717522221339039,239.93460533756195,528.9199844508546,99613.59658109749 +2016-01-29 17:00:00,0.0,0.0035292817495388494,277.28194437604196,3.9239014431486376,-1.7717522266042522,238.09213231748038,552.1672685642138,99506.8462217153 +2016-01-29 18:00:00,0.0,0.003332382697170729,277.6321298347406,4.81549953902913,-2.0711749274961964,273.2554337322501,312.37963449840765,99413.27802382171 +2016-01-29 19:00:00,0.0,0.003128581049378961,278.21077257926845,5.020209904800184,-1.9000000283122063,274.60003679673724,253.7932210786617,99503.76081368714 +2016-01-29 20:00:00,0.0,0.00322463679716334,278.23633098430173,5.20799095299024,-1.708641945611208,275.5854182511173,183.4426775143981,99470.26188560398 +2016-01-29 21:00:00,0.0,0.003193619947915403,278.2867224828185,5.476098696922278,-1.5305122865888916,293.78100306500943,62.748101442000475,99546.54245002485 +2016-01-29 22:00:00,0.0,0.003516807768153473,277.0813708937928,6.000000089406967,-2.4239014207968954,291.56481176466144,0.0,99798.5119323811 +2016-01-29 23:00:00,0.0,0.0035309112416520897,277.25276000892165,6.500000096857548,-3.3048329281153586,293.0428129782969,0.0,99770.44722597653 +2016-01-30 00:00:00,0.0,0.0033441116568846702,276.7695214854773,7.071752305580407,-4.200000062584877,280.3023782849608,0.0,99933.97193118933 +2016-01-30 01:00:00,0.0,0.0030051871096372427,276.3476067243527,6.671752299619943,-4.399422761986704,279.05384725305987,0.0,100130.80297476181 +2016-01-30 02:00:00,0.0,0.0028632342110473112,275.67116690238333,6.271752293659478,-4.5845006010417855,277.8238140311507,0.0,100213.74995274731 +2016-01-30 03:00:00,0.0,0.0027347706770589637,274.90306317191516,5.8806799193261785,-4.7717522713077365,252.53714599028984,0.0,100302.63443351793 +2016-01-30 04:00:00,0.0,0.0026273673719575804,274.0933520720268,5.900000087916851,-4.975521385893292,249.66493495978247,0.0,100476.45366035031 +2016-01-30 05:00:00,0.0,0.0025084117190577082,273.46538398730445,5.964133342650361,-5.248056561137588,247.32191559213697,0.0,100665.67376065775 +2016-01-30 06:00:00,0.0,0.002515448748396073,273.1009756841908,5.984500621903411,-5.455675510656588,225.78111456119365,0.0,100664.18441089294 +2016-01-30 07:00:00,0.0,0.0024968330762828107,273.1065570184401,5.97175228918913,-5.153531470009196,226.05574860969043,0.0,100814.34370497041 +2016-01-30 08:00:00,0.0,0.0024851978528086325,272.91636344422403,5.969554874086672,-4.83950143831536,225.5280721378841,0.0,100956.11426345087 +2016-01-30 09:00:00,0.0,0.0024239904649018193,272.7924821289244,5.9648958311427585,-4.468259454464638,211.5615451701644,0.0,101065.44432875875 +2016-01-30 10:00:00,0.0,0.002456920646586729,272.6394560372403,5.4913581616771525,-4.4292246086125715,211.66992371114927,0.0,101244.24520678802 +2016-01-30 11:00:00,0.0,0.002219872471499852,272.5805500585554,5.015499542009362,-4.330153997707151,210.47681244456615,0.0,101379.66235314461 +2016-01-30 12:00:00,0.0,0.0024656566723100905,272.20569717592775,4.6154995360488975,-4.225568694469748,207.58866906339173,0.0,101484.0780386191 +2016-01-30 13:00:00,0.0,0.0024449977899675336,272.5066125644488,4.115499528598317,-3.5365447933542313,209.3453066000368,158.11699410001094,101593.1823908048 +2016-01-30 14:00:00,0.0,0.0023903857347493036,273.0316991624558,3.615499521147736,-2.775521353110738,211.5451113779238,305.805125392773,101584.01517744076 +2016-01-30 15:00:00,0.0,0.0025265271803053134,273.73121096251026,3.1239014312277082,-2.0937946180211005,229.54790507009685,407.74198643416196,101639.69363136466 +2016-01-30 16:00:00,0.0,0.002551113412226977,274.5185547168442,3.2303918840785975,-1.0711749125950347,230.97939318812962,509.56821340579336,101555.00820008846 +2016-01-30 17:00:00,0.0,0.002578873977149737,274.93364940579215,3.400000050663948,0.015499467503555412,231.36734415241892,531.8697924086437,101683.74803215977 +2016-01-30 18:00:00,0.0,0.002780777160333193,275.51626182401935,3.59314359559781,1.030512279138311,273.49650664434154,347.7887712145466,101526.90254980966 +2016-01-30 19:00:00,0.0,0.0027894735636222905,276.0522583046773,3.9000000581145287,2.1344532447816142,273.671264639295,282.89807706775406,101669.2224576427 +2016-01-30 20:00:00,0.0,0.002916804232715657,276.14880767941133,4.200000062584877,3.3062054624451704,272.7713546392523,205.3027488430056,101630.14485225928 +2016-01-30 21:00:00,0.0,0.0029047895369836343,276.29184045633326,4.506856525101596,4.415840439908435,294.30018409246134,62.05088634710606,101610.29307886705 +2016-01-30 22:00:00,0.0,0.0030345840012575426,276.2683501117532,5.000000074505806,4.90000007301569,293.0721797189385,0.0,101573.84827957436 +2016-01-30 23:00:00,0.0,0.003194388903693814,276.6759412384889,5.4845006144528305,5.300000078976154,293.89496310772637,0.0,101593.72509765468 +2016-01-31 00:00:00,0.0,0.0033688377892915652,277.32930637112025,6.045129565889687,5.700000084936619,270.6329848204015,0.0,101539.50703648533 +2016-01-31 01:00:00,0.0,0.004113086596819644,277.83755024642744,6.356252827646038,5.600000083446503,275.2314602842293,0.0,101621.28404650165 +2016-01-31 02:00:00,0.0,0.00410161988379197,278.18915878481886,6.665546886348605,5.500000081956387,275.68037471442886,0.0,101527.80530334351 +2016-01-31 03:00:00,0.0,0.004413435921569094,278.6768099630319,6.97609871927402,5.419191102709558,255.3114458078827,0.0,101484.5519299076 +2016-01-31 04:00:00,0.0,0.00406320322739344,278.9130412510855,6.899422799239607,4.700000070035458,254.38144895102005,0.0,101490.33620036177 +2016-01-31 05:00:00,0.0,0.00349705416209375,279.0675860180363,6.86960826642313,3.9717522593868075,252.0879174754701,0.0,101464.22996615947 +2016-01-31 06:00:00,0.0,0.0037223223513055594,279.26877090223115,6.800000101327896,3.199422744105311,254.49536513174834,0.0,101367.32195799839 +2016-01-31 07:00:00,0.0,0.0038815747972374935,279.3320441541299,6.3000000938773155,3.2937946359024934,255.29127274239357,0.0,101495.48831856874 +2016-01-31 08:00:00,0.0,0.0040213344285469025,279.38132401961286,5.800000086426735,3.371752250446111,255.85211013323715,0.0,101384.42342528891 +2016-01-31 09:00:00,0.0,0.004773432620423841,279.34988340986064,5.323901464010263,3.400000050663948,255.86332050263601,0.0,101355.73566905498 +2016-01-31 10:00:00,0.0,0.004820761738378153,279.2412076964135,5.371752280248433,3.371752250446111,255.32570812663892,0.0,101354.17379336728 +2016-01-31 11:00:00,0.0,0.0050308448324298816,279.28587023725316,5.355675509166472,3.2755213605613185,255.7532591859458,0.0,101337.16770414956 +2016-01-31 12:00:00,0.0,0.004844852592971087,279.30504796431626,5.341068178364581,3.1698932493782688,276.274247744252,0.0,101314.30332487458 +2016-01-31 13:00:00,0.0,0.004562887934925262,279.34449425173574,5.255675507676356,3.265546835684656,274.04431524815357,138.02096884173932,101438.84756297711 +2016-01-31 14:00:00,0.0,0.004689773275193338,279.948326454965,5.159661411819658,3.2845005816702764,275.5070040837062,264.783710047122,101402.36715515563 +2016-01-31 15:00:00,0.0,0.004497444081508964,280.2364859869165,4.999422770927401,3.3711749468677055,287.23318757990086,379.24333185336786,101372.4124090304 +2016-01-31 16:00:00,0.0,0.004004908561008014,280.58714670253977,4.90000007301569,3.593794640372842,285.45687066101743,473.62216314461983,101345.89486238909 +2016-01-31 17:00:00,0.0,0.004179126321554164,280.89044664551585,4.800000071525574,3.882095153055534,286.6904724733244,494.4816344351178,101313.0259412624 +2016-01-31 18:00:00,0.0,0.004220602398312955,281.02102012687243,4.628247868763179,4.100000061094761,276.1383075969274,435.26054456304644,101241.43355645426 +2016-01-31 19:00:00,0.0,0.004325596554197498,280.58684070673803,4.400000065565109,4.174186484583535,274.877370931284,354.76054336350296,101196.6245242158 +2016-01-31 20:00:00,0.0,0.004462294413606703,280.48750393459744,4.12390144612887,4.200000062584877,274.8528170133405,258.2869155948163,101102.46470389393 +2016-01-31 21:00:00,0.0,0.0046442390215464665,280.48501971882297,3.8945251477528053,4.200000062584877,260.133938478683,128.1070353489325,101146.23363024321 +2016-01-31 22:00:00,0.0,0.004961385597133149,280.17402392196533,3.523901437188173,4.200000062584877,260.4181630771129,0.0,101158.11080802736 +2016-01-31 23:00:00,0.0,0.005633754145871897,280.01066176679996,3.215840422027042,4.264533787790383,262.3500817468833,0.0,101149.14990804132 From d4a17c6f5cd9148f5360c7fe173ee791ed01fc60 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 3 Apr 2024 16:25:04 -0400 Subject: [PATCH 09/23] Switch to ReadSeeker in dataset.py. Replace usage of RepeatableReader with ReadSeeker. --- python/lib/core/dmod/core/dataset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index aa841388e..1cfc3039c 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -14,7 +14,7 @@ from pydantic.fields import ModelField from uuid import UUID, uuid4 -from .common.reader import Reader, RepeatableReader +from .common.reader import Reader, ReadSeeker class DatasetType(PydanticEnum): @@ -487,7 +487,7 @@ def unlink_to_dataset(self, dataset: Dataset) -> bool: return dataset.manager is not None and dataset.manager.unlink_user(user=self, dataset=dataset) -DataItem = TypeVar('DataItem', bound=Union[bytes, RepeatableReader, Path]) +DataItem = TypeVar('DataItem', bound=Union[bytes, ReadSeeker, Path]) class AbstractDomainDetector(ABC): From 4994384100c862a420fd2a7977f2a8893504873b Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 3 Apr 2024 16:25:50 -0400 Subject: [PATCH 10/23] Switch to ReadSeeker in item_domain_detector.py. Replace use of RepeatableReader with ReadSeeker and change call to removed reset() method to analogous seek() call. --- .../modeldata/dmod/modeldata/data/item_domain_detector.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py index c8cd7d27c..70eac1203 100644 --- a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py +++ b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py @@ -1,5 +1,5 @@ from dmod.core.meta_data import DataDomain, DataFormat, DiscreteRestriction, StandardDatasetIndex, TimeRange -from dmod.core.common.reader import RepeatableReader +from dmod.core.common.reader import ReadSeeker from dmod.core.exception import DmodRuntimeError from dmod.core.dataset import ItemDataDomainDetector from pandas import read_csv as pandas_read_csv @@ -140,9 +140,9 @@ def detect(self, **kwargs) -> DataDomain: If it was not possible to properly detect the domain. """ # TODO: (later) probably isn't necessary to treat separately, but don't have a good way to test yet - if isinstance(self._item, RepeatableReader): + if isinstance(self._item, ReadSeeker): gpkg_data = self._item.read() - self._item.reset() + self._item.seek(0) else: gpkg_data = self._item From 7eb6fadc83ba9a31cc69018cc7cfd7b794305b27 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Thu, 4 Apr 2024 17:19:32 -0400 Subject: [PATCH 11/23] Remove lazy property from AbstractDomainDetector. And other things related, like init (needed for backing attribute) and reset method. --- python/lib/core/dmod/core/dataset.py | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index 1cfc3039c..8d159d87f 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -493,9 +493,6 @@ def unlink_to_dataset(self, dataset: Dataset) -> bool: class AbstractDomainDetector(ABC): """ Abstraction for something that will automatically detect a :class:`DataDomain` for some data. """ - def __init__(self, *args, **kwargs): - self._data_domain: Optional[DataDomain] = None - @abstractmethod def detect(self, **kwargs) -> DataDomain: """ @@ -519,26 +516,6 @@ def detect(self, **kwargs) -> DataDomain: """ pass - @property - def data_domain(self) -> DataDomain: - """ - The domain detected by the instance, lazily initialized via :method:`detect` if needed. - - Returns - ------- - DataDomain - The domain detected by the instance. - """ - if self._data_domain is None: - self._data_domain = self.detect() - return self._data_domain - - def reset(self): - """ - Reset domain property so the next call to :method:`data_domain` calls and sets via :method:`detect` again. - """ - self._data_domain = None - class ItemDataDomainDetector(AbstractDomainDetector, ABC): """ From 576a6873b44aa8d8ca0c9101654d399babd37a91 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Fri, 5 Apr 2024 14:27:24 -0400 Subject: [PATCH 12/23] Optimizing re use in aorc csv domain detector. --- .../lib/modeldata/dmod/modeldata/data/item_domain_detector.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py index 70eac1203..7d2c13777 100644 --- a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py +++ b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py @@ -39,9 +39,7 @@ def __init__(self, *args, **kwargs): self._num_time_steps = None def _get_catchment_id(self) -> str: - # TODO: test - pattern = re.compile('^.*(cat)[_-](\d+)\D.*$') - matches = pattern.match(self._item_name) + matches = re.match('^.*(cat)[_-](\d+)\D.*$', self._item_name) if matches: return f"{matches.group(1)}-{matches.group(2)}" else: From 5b1510dd6b692cfed77463e4e771232107cbfaaf Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 9 Apr 2024 11:07:45 -0400 Subject: [PATCH 13/23] Redesign to use ItemDataDomainDetectorRegistry. Removing registry components from ItemDataDomainDetector and placing within dedicated registry class; also removing __init_subclass__ registration process in favor of manual registration with a singleton registry. --- python/lib/core/dmod/core/dataset.py | 218 ++++++++++++++++++++------- 1 file changed, 162 insertions(+), 56 deletions(-) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index 8d159d87f..19bf1272b 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -517,75 +517,181 @@ def detect(self, **kwargs) -> DataDomain: pass +class ItemDataDomainDetectorRegistry: + """ A singleton registry in which to track the subtypes of :class`ItemDataDomainDetector`. """ + + _instance = None + + @classmethod + def get_instance(cls) -> ItemDataDomainDetectorRegistry: + """ Get the singleton registry instance. """ + if cls._instance is None: + cls._instance = ItemDataDomainDetectorRegistry() + return cls._instance + + def __init__(self): + if self._instance is not None: + raise RuntimeError(f"Attempting to create second {self.__class__.__name__} instance!") + self._detectors: Dict[str, Type[ItemDataDomainDetector]] = dict() + """ All registered subclasses, keyed by name. """ + self._formats_to_detectors: Dict[DataFormat, Set[str]] = {f: set() for f in DataFormat} + """ + Collection of :class:`DataFormat` enum values mapped to sets containing the names of the registered subclasses + that are associated with that particular format. + """ + + def is_registered(self, entry: Union[str, Type[ItemDataDomainDetector]]) -> bool: + """ + Whether this is a registered subclass or the registered name of one. + + Parameters + ---------- + entry: Union[str, Type[ItemDataDomainDetector]] + The potential registration name or subclass type. + + Returns + ------- + bool + Whether this is a registered subclass or the registered name of one. + """ + return (entry if isinstance(entry, str) else entry.get_registration_name()) in self._detectors + + def get_for_format(self, data_format: DataFormat) -> List[Type[ItemDataDomainDetector]]: + """ + Get a list (sorted by registration name) of the detector subclasses associated with the given format. + + Parameters + ---------- + data_format: DataFormat + The data format of interest. + + Returns + ------- + List[Type[ItemDataDomainDetector]] + The sorted detector subclasses associated with the given format. + """ + return [self._detectors[name] for name in sorted(self._formats_to_detectors[data_format])] + + def get_for_name(self, name: str) -> Type[ItemDataDomainDetector]: + """ + Get the registered subclass for the given registration name. + + Parameters + ---------- + name: str + The subclass registration name. + + Returns + ------- + Type[ItemDataDomainDetector] + The registered subclass for the given registration name. + + Raises + ------ + KeyError + Raised if this is not a valid, recognized registration name. + """ + return self._detectors[name] + + def register(self, subclass: Type[ItemDataDomainDetector]): + """ + Register the given subclass of :class:`ItemDataDomainDetector`. + + Parameters + ---------- + subclass: Type[ItemDataDomainDetector] + A subclass of :class:`ItemDataDomainDetector`. + + Notes + ----- + If an already-registered subclass is passed in another call to this method, nothing will happen. The instance's + state will not change, nor will an error be thrown, and the method will quietly return. + + Raises + ------ + DmodRuntimeError + If the registration name is already in use for a different subclass. + """ + name = subclass.get_registration_name() + if name not in self._detectors: + self._detectors[name] = subclass + if subclass.get_data_format() is not None: + self._formats_to_detectors[subclass.get_data_format()].add(name) + elif self._detectors[name] != subclass: + raise DmodRuntimeError(f"{self.__class__.__name__} failed to register subclass '{subclass.__name__}' with " + f"registration name '{name}' that is already in use") + + def unregister(self, subclass: Type[ItemDataDomainDetector]): + """ + Unregister the given subclass of :class:`ItemDataDomainDetector`. + + Parameters + ---------- + subclass + + Raises + ------- + DmodRuntimeError + If the given subclass was not already registered. + """ + name = subclass.get_registration_name() + if name not in self._detectors: + raise DmodRuntimeError(f"{self.__class__.__name__} can't unregister unknown name '{name}'") + subclass = self._detectors.pop(name) + self._formats_to_detectors[subclass.get_data_format()].remove(name) + + class ItemDataDomainDetector(AbstractDomainDetector, ABC): """ Type that can examine a data item and detect its individual :class:`DataDomain`. - Abstraction for detecting the of a single data item. Here, a data item specifically means either - :class:`bytes` object with raw data, a :class:`RepeatableReader` object that can read data multiple times, or a - :class:`Path` object pointing to a file (not a directory). + Abstraction for detecting the of a single data item. Here, a data item specifically means either :class:`bytes` + object with raw data, a :class:`ReadSeeker` object that can read data multiple times, or a :class:`Path` object + pointing to a file (not a directory). - Base type provides a class method :method:`get_type_for_format` that allows for getting an appropriate subtype for - detecting in the contexts of a specific :class:`DataFormat`, assuming one exists. + This class provides two class functions important for use with the :class:`ItemDataDomainDetectorRegistry` singleton + object: :method:`get_data_format` and :method:`get_registration_name`. Subclasses must be implemented to set + backing class variables if they want to change the default behavior. - A subclass may optionally register with this type if the subclass itself is given a ``format_type`` keyword argument - containing a :class:`DataFormat` value. A ``name`` keyword argument may also optionally be provided; by default, - the class's name is used. E.g.: + The :method:`get_data_format` class method helps the registry (and other users) identify the :class:`DataFormat` for + which a subclass can determine domains. It is optional, though, and the default is ``None``. - ``` - class DomainDetectorSubtype(ItemDataDomainDetector, format_type=DataFormat.AORC_CSV): - ``` + The :method:`get_registration_name` method provides a unique registration name, primarily intended for use with the + registry. If the backing class attribute is not explicitly set, it will default to the name of the subclass. - This will register the subclass as a type that can detect domains for data having that format. This type provides - a class method :method:`get_types_for_format` for accessing the collection of registered subclasses for a format. + Note that subtypes must explicitly be registered with the :class:`ItemDataDomainDetectorRegistry` singleton. """ - _all_subclasses: Dict[Type['ItemDataDomainDetector'], str] = dict() - """ All known subclasses, keyed to its name identifier (which defaults to the class's name). """ - _detector_registry: Dict[DataFormat, Dict[str, Type['ItemDataDomainDetector']]] = {f: dict() for f in DataFormat} - """ - Registered subclasses in the form of an outer dictionary mapping supported format to inner dictionaries, mapping - subclass name to subclass. - """ - _subclass_formats: Dict[Type['ItemDataDomainDetector'], DataFormat] = dict() - """ A collection to reverse the format for a particulr subclass. """ + _data_format: Optional[DataFormat] = None + """ The associated :class:`DataFormat` of this subclass. """ + _registration_name: Optional[str] = None + """ The registration name identifier for this subclass; it will be replaced with class name if ``None``. """ @classmethod def get_data_format(cls) -> Optional[DataFormat]: """ - Get the registered data format for this subclass of :class:`ItemDataDomainDetector`, if it is registered. + Get the associated data format for this subclass of :class:`ItemDataDomainDetector`, if it has one. Returns ------- Optional[DataFormat] - The :class:`DataFormat` of this subclass, if it registered one; otherwise ``None``. + The associated :class:`DataFormat` of this subclass, if it has one; otherwise ``None``. """ - return cls._subclass_formats.get(cls) + return cls._data_format @classmethod - def get_types_for_format(cls, data_format: DataFormat) -> Dict[str, Type['ItemDataDomainDetector']]: + def get_registration_name(cls) -> str: """ - Return subclass type registered as capable of detecting domains for data with the given data format. + Get the registration name for this subclass. - Parameters - ---------- - data_format: DataFormat - The data format of interest. + If the backing private class attribute is set to ``None``, this method will return the subclass's ``__name__``. Returns ------- - Dict[str,Type['ItemDataDomainDetector']] - Dictionary (keyed by class name) of registered subclasses capable of detecting domains for data with the - given data format. + str + The registration name for this subclass. """ - return cls._detector_registry.get(data_format, dict()) - - def __init_subclass__(cls, format_type: Optional[DataFormat] = None, name: Optional[str] = None, **kwargs): - super().__init_subclass__(**kwargs) - cls._subclass_formats[cls] = format_type - cls._all_subclasses[cls] = cls.__name__ if name is None else name - if format_type is not None: - cls._detector_registry[format_type][cls.__name__ if name is None else name] = cls + return cls._registration_name if cls._registration_name else cls.__name__ def __init__(self, item: DataItem, item_name: Optional[str] = None, decode_format: str = 'utf-8', *args, **kwargs): super().__init__(*args, **kwargs) @@ -615,10 +721,11 @@ def detect(self, **kwargs) -> DataDomain: trials - i.e., a subclass is selected, an instance is created, the ``detect`` method is called, and we assess what happens - along with an early exit mechanism for explicit format suggestions. - Subclasses are tried in groups according to their registered ``data_format``. The order of groups may be + Subclasses are tried in groups according to their associated :class:`DataFormat`. The order of groups may be controlled by providing one or more format "suggestions", which will be tried first in the order provided. Also, one or more excluded formats can be optionally provided. Iteration order of subclasses within a group is based - on registration ``name`` by default, but a sorting key function can be provided to control this also. + on registration name by default - i.e., the value from :method:`ItemDataDomainDetector.get_registration_name` + for each subclass - but a sorting key function can be provided to control this also. If/when a subclass instance's ``detect`` call returns a domain, no other subclasses for that format group are tried, but this function only returns that domain value immediately if the associated format was a provided @@ -661,10 +768,11 @@ class can detect a domain, there is an implicit ambiguity in the domain, and a : DmodRuntimeError If it was not possible to properly detect the domain. """ - def try_detection(d_format: DataFormat, subtype_ordered_list_func) -> Optional[DataDomain]: - # Note that subtype_ordered_list_func is based on `sorted_key` (if given) but it's not the same thing - possible_types = subtype_ordered_list_func(self.get_types_for_format(data_format=d_format)) - for subclass_type in subtype_ordered_list_func(self.get_types_for_format(data_format=d_format)): + def try_detection(d_format: DataFormat) -> Optional[DataDomain]: + subclasses = ItemDataDomainDetectorRegistry.get_instance().get_for_format(d_format) + if 'sort_key' in kwargs: + subclasses = sorted(subclasses, key=kwargs['sort_key']) + for subclass_type in subclasses: try: return subclass_type(item=self._item, item_name=self._item_name).detect() except: @@ -684,21 +792,15 @@ def try_detection(d_format: DataFormat, subtype_ordered_list_func) -> Optional[D remaining_formats = {df for df in DataFormat if df not in excluded} - # Build an ordering function, either using provided sort key or just based on registration name - if 'sort_key' in kwargs: - order_func = lambda subs: sorted([subclass for name, subclass in subs.items()], key=kwargs['sort_key']) - else: - order_func = lambda subs: [subs[name] for name in sorted(subs.keys())] - # Try suggestions first, returning immediately if any are successful for data_format in suggested: remaining_formats.remove(data_format) - result = try_detection(d_format=data_format, subtype_ordered_list_func=order_func) + result = try_detection(d_format=data_format) if result is not None: return result # Now we get to others - main_trials = (try_detection(d_format=df, subtype_ordered_list_func=order_func) for df in remaining_formats) + main_trials = (try_detection(d_format=df) for df in remaining_formats) main_results = [t for t in main_trials if t is not None] if len(main_results) == 0: raise DmodRuntimeError("No domain could be detected for item.") @@ -710,6 +812,10 @@ def try_detection(d_format: DataFormat, subtype_ordered_list_func) -> Optional[D f"{','.join([d.data_format.name for d in main_results])}") +# Register the universal tracker type +ItemDataDomainDetectorRegistry.get_instance().register(UniversalItemDomainDetector) + + class DatasetManager(ABC): """ Abstract representation of manager of ::class:`Dataset` instances. From 516262879dffc0c1bcaefd323c1315beb80f7a4b Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 9 Apr 2024 11:09:27 -0400 Subject: [PATCH 14/23] Update detector implementations for new registry. Update existing concrete implementations of ItemDataDomainDetector for redesign of registration setup that uses ItemDataDomainDetectorRegistry. --- .../dmod/modeldata/data/item_domain_detector.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py index 7d2c13777..2dc770164 100644 --- a/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py +++ b/python/lib/modeldata/dmod/modeldata/data/item_domain_detector.py @@ -18,7 +18,7 @@ __NGEN_CONFIG_INSTALLED = False -class AorcCsvFileDomainDetector(ItemDataDomainDetector, format_type=DataFormat.AORC_CSV): +class AorcCsvFileDomainDetector(ItemDataDomainDetector): """ Subclass for detecting domains of NextGen regridded per-catchment AORC forcing CSV files. @@ -29,6 +29,7 @@ class AorcCsvFileDomainDetector(ItemDataDomainDetector, format_type=DataFormat.A """ _csv_header: str = "Time,RAINRATE,Q2D,T2D,U2D,V2D,LWDOWN,SWDOWN,PSFC" + _data_format = DataFormat.AORC_CSV _datetime_format: str = "%Y-%m-%d %H:%M:%S" def __init__(self, *args, **kwargs): @@ -88,7 +89,9 @@ def detect(self, **kwargs) -> DataDomain: # TODO: might need to expand things in the future ... there are other geopackage formats (e.g., older NextGen # hydrofabric versions that used "id" instead of "divide_id") and maybe we need to account for that in detectors (and # in formats) -class GeoPackageHydrofabricDomainDetector(ItemDataDomainDetector, format_type=DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2): +class GeoPackageHydrofabricDomainDetector(ItemDataDomainDetector): + + _data_format = DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2 def _is_region_string_for_conus(self, region_str: Optional[str]) -> bool: """ @@ -188,7 +191,10 @@ def detect(self, **kwargs) -> DataDomain: if __NGEN_CONFIG_INSTALLED: import json - class RealizationConfigDomainDetector(ItemDataDomainDetector, format_type=DataFormat.NGEN_REALIZATION_CONFIG): + class RealizationConfigDomainDetector(ItemDataDomainDetector): + + _data_format = DataFormat.NGEN_REALIZATION_CONFIG + def detect(self, **kwargs) -> DataDomain: try: real_obj = ngen.config.realization.NgenRealization(**json.load(self._item)) From 968b0452b6139e2fb7de2b670378b9759dda300c Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 9 Apr 2024 11:10:02 -0400 Subject: [PATCH 15/23] Fix AorcCsvFileDomainDetector tests for redesign. --- .../dmod/test/test_aorc_csv_file_domain_detector.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py b/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py index cd7f73603..9881fc140 100644 --- a/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py +++ b/python/lib/modeldata/dmod/test/test_aorc_csv_file_domain_detector.py @@ -2,7 +2,7 @@ from datetime import datetime from dmod.core.meta_data import DataFormat, StandardDatasetIndex -from dmod.core.dataset import ItemDataDomainDetector +from dmod.core.dataset import ItemDataDomainDetectorRegistry from ..modeldata.data.item_domain_detector import AorcCsvFileDomainDetector from . import find_git_root_dir @@ -12,6 +12,8 @@ class TestAorcCsvFileDomainDetector(unittest.TestCase): def setUp(self): self.detector_subclass = AorcCsvFileDomainDetector self.expected_data_format = DataFormat.AORC_CSV + self.registry = ItemDataDomainDetectorRegistry.get_instance() + self.registry.register(self.detector_subclass) # Setup example 0 self.example_data = {0: find_git_root_dir().joinpath("data/example_forcing_aorc_csv/cat-12.csv")} @@ -24,9 +26,8 @@ def test_get_data_format_0_a(self): self.assertEqual(self.expected_data_format, self.detector_subclass.get_data_format()) def test_registration_0_a(self): - """ Test that ``__init_subclass__`` registration added this type to superclass's registered collection. """ - registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format) - self.assertIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + """ Test that registration added this type to superclass's registered collection. """ + self.assertTrue(self.registry.is_registered(self.detector_subclass)) def test_detect_0_a(self): """ Test that detect returns a domain with the right data format. """ From 5e99138d90a6ad2aeb227536087d8516bf7f2dda Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 9 Apr 2024 11:10:22 -0400 Subject: [PATCH 16/23] Fix geopackage domain detector tests for redesign. --- .../test/test_geopackage_hydrofabric_domain_detector.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py b/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py index e134cc856..c026ce502 100644 --- a/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py +++ b/python/lib/modeldata/dmod/test/test_geopackage_hydrofabric_domain_detector.py @@ -1,7 +1,7 @@ import unittest from dmod.core.meta_data import DataFormat, StandardDatasetIndex -from dmod.core.dataset import ItemDataDomainDetector +from dmod.core.dataset import ItemDataDomainDetectorRegistry from ..modeldata.data.item_domain_detector import GeoPackageHydrofabricDomainDetector from . import find_git_root_dir @@ -12,6 +12,8 @@ class TestGeoPackageHydrofabricDomainDetector(unittest.TestCase): def setUp(self): self.detector_subclass = GeoPackageHydrofabricDomainDetector self.expected_data_format = DataFormat.NGEN_GEOPACKAGE_HYDROFABRIC_V2 + self.registry = ItemDataDomainDetectorRegistry.get_instance() + self.registry.register(self.detector_subclass) self.hyfab_ver = "2.0.1" # Setup example 0 @@ -25,9 +27,8 @@ def test_get_data_format_0_a(self): self.assertEqual(self.detector_subclass.get_data_format(), self.expected_data_format) def test_registration_0_a(self): - """ Test that ``__init_subclass__`` registration added this type to superclass's registered collection. """ - registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format) - self.assertIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + """ Test that registration added this type to superclass's registered collection. """ + self.assertTrue(self.registry.is_registered(self.detector_subclass)) def test_detect_0_a(self): """ Test that detect returns a domain with the right data format. """ From 827086ee5c18f4266a71906796039a5fcd428b75 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 9 Apr 2024 11:10:37 -0400 Subject: [PATCH 17/23] Fix universal domain detector tests for redesign. --- .../test_universal_item_domain_detector.py | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py b/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py index eac275914..7b7e2118d 100644 --- a/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py +++ b/python/lib/modeldata/dmod/test/test_universal_item_domain_detector.py @@ -2,7 +2,7 @@ from datetime import datetime from dmod.core.meta_data import DataFormat, StandardDatasetIndex -from dmod.core.dataset import ItemDataDomainDetector, UniversalItemDomainDetector +from dmod.core.dataset import ItemDataDomainDetectorRegistry, UniversalItemDomainDetector from ..modeldata.data.item_domain_detector import AorcCsvFileDomainDetector, GeoPackageHydrofabricDomainDetector from . import find_git_root_dir @@ -11,6 +11,9 @@ class TestUniversalItemDomainDetector(unittest.TestCase): def setUp(self): + self.registry = ItemDataDomainDetectorRegistry.get_instance() + self.registry.register(AorcCsvFileDomainDetector) + self.registry.register(GeoPackageHydrofabricDomainDetector) self.detector_subclass = UniversalItemDomainDetector # Setup example 0 @@ -25,23 +28,21 @@ def setUp(self): self.example_data[1] = find_git_root_dir().joinpath("data/example_hydrofabric_2/hydrofabric.gpkg") self.example_cat_ids[1] = sorted(['cat-8', 'cat-5', 'cat-9', 'cat-6', 'cat-7', 'cat-10', 'cat-11']) + def test_get_data_format_0_a(self): + """ Test that we get ``None`` for the data format for this subclass type. """ + self.assertIsNone(self.detector_subclass.get_data_format()) + def test_registration_0_a(self): - """ Test ``__init_subclass__`` registration doesn't add this type to superclass's registered collection. """ - ex_idx = 0 - registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) - self.assertNotIn(self.detector_subclass, {val for _, val in registered_subtypes.items()}) + """ Test registration adds this type to superclass's registered collection. """ + self.assertTrue(self.registry.is_registered(self.detector_subclass)) def test_registration_0_b(self): - """ Test ``__init_subclass__`` registration adds first imported type to superclass's registered collection. """ - ex_idx = 0 - registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) - self.assertIn(AorcCsvFileDomainDetector, {val for _, val in registered_subtypes.items()}) + """ Test registration adds first imported type to superclass's registered collection. """ + self.assertTrue(self.registry.is_registered(AorcCsvFileDomainDetector)) def test_registration_1_b(self): - """ Test ``__init_subclass__`` registration adds second imported type to superclass's registered collection. """ - ex_idx = 1 - registered_subtypes = ItemDataDomainDetector.get_types_for_format(self.expected_data_format[ex_idx]) - self.assertIn(GeoPackageHydrofabricDomainDetector, {val for _, val in registered_subtypes.items()}) + """ Test registration adds second imported type to superclass's registered collection. """ + self.assertTrue(self.registry.is_registered(GeoPackageHydrofabricDomainDetector)) def test_detect_0_a(self): """ Test that detect returns a domain with the right data format. """ From e5545b131fe18d10fd5165f0353c2d21bb822365 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 10 Apr 2024 11:10:10 -0400 Subject: [PATCH 18/23] Bump core package version to 0.15.1. --- python/lib/core/dmod/core/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lib/core/dmod/core/_version.py b/python/lib/core/dmod/core/_version.py index a842d05a7..6fccdee46 100644 --- a/python/lib/core/dmod/core/_version.py +++ b/python/lib/core/dmod/core/_version.py @@ -1 +1 @@ -__version__ = '0.15.0' +__version__ = '0.15.1' From bca858679b8ad75e2523fdad64964b5a417e86f8 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 10 Apr 2024 11:11:28 -0400 Subject: [PATCH 19/23] Update modeldata dependency on core to ver 0.15.1. --- python/lib/modeldata/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lib/modeldata/setup.py b/python/lib/modeldata/setup.py index d551006d1..8d6893285 100644 --- a/python/lib/modeldata/setup.py +++ b/python/lib/modeldata/setup.py @@ -25,7 +25,7 @@ "pandas", "geopandas", "dmod-communication>=0.4.2", - "dmod-core>=0.13.1", + "dmod-core>=0.15.1", "minio", "aiohttp~=3.8", "shapely>=2.0.0", From e4a1de5224377a4d4ee7fa3482101f1beb06505a Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 10 Apr 2024 11:11:44 -0400 Subject: [PATCH 20/23] Bump modeldata package version to 0.11.0. --- python/lib/modeldata/dmod/modeldata/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lib/modeldata/dmod/modeldata/_version.py b/python/lib/modeldata/dmod/modeldata/_version.py index 9d1bb721b..f323a57be 100644 --- a/python/lib/modeldata/dmod/modeldata/_version.py +++ b/python/lib/modeldata/dmod/modeldata/_version.py @@ -1 +1 @@ -__version__ = '0.10.0' +__version__ = '0.11.0' From 6c7b408241ca303d7bed3eda001eba5ca0481cbd Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 10 Apr 2024 11:12:14 -0400 Subject: [PATCH 21/23] Update client dependency on core to ver 0.15.1. --- python/lib/client/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lib/client/setup.py b/python/lib/client/setup.py index 280337ecc..b4ca71ea7 100644 --- a/python/lib/client/setup.py +++ b/python/lib/client/setup.py @@ -22,7 +22,7 @@ license='', include_package_data=True, #install_requires=['websockets', 'jsonschema'],vi - install_requires=['dmod-core>=0.11.0', 'websockets>=8.1', 'pydantic>=1.10.8,~=1.10', 'dmod-communication>=0.17.0', + install_requires=['dmod-core>=0.15.0', 'websockets>=8.1', 'pydantic>=1.10.8,~=1.10', 'dmod-communication>=0.17.0', 'dmod-externalrequests>=0.6.0'], packages=find_namespace_packages(include=['dmod.*'], exclude=['dmod.test']) ) From 105fd3ec4ae6a0f2c944d304d644abfe32a585fe Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Wed, 10 Apr 2024 11:12:30 -0400 Subject: [PATCH 22/23] Bump client package version to 0.6.0. --- python/lib/client/dmod/client/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lib/client/dmod/client/_version.py b/python/lib/client/dmod/client/_version.py index 2b8877c50..ef7eb44d9 100644 --- a/python/lib/client/dmod/client/_version.py +++ b/python/lib/client/dmod/client/_version.py @@ -1 +1 @@ -__version__ = '0.5.0' +__version__ = '0.6.0' From 389a127e1108a07de45549fef52c90cd3770f1e4 Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Mon, 6 May 2024 17:06:44 -0400 Subject: [PATCH 23/23] Scrap private _is_item_file for domain detector. --- python/lib/core/dmod/core/dataset.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/python/lib/core/dmod/core/dataset.py b/python/lib/core/dmod/core/dataset.py index 19bf1272b..72f428d65 100644 --- a/python/lib/core/dmod/core/dataset.py +++ b/python/lib/core/dmod/core/dataset.py @@ -697,13 +697,12 @@ def __init__(self, item: DataItem, item_name: Optional[str] = None, decode_forma super().__init__(*args, **kwargs) self._item: DataItem = item """ The data item for which to detect a domain. """ - self._is_item_file = isinstance(self._item, Path) - """ Private flag of whether data item is a :class:`Path` object (that points to a file, per other checks). """ - self._item_name = self._item.name if self._is_item_file else item_name + is_item_file = isinstance(self._item, Path) + self._item_name = self._item.name if is_item_file else item_name """ Name for the item; in some situations, contains important constraint metadata (e.g. catchment name). """ self._decode_format = decode_format """ A decoder format sometimes used when reading data item in order to get metadata. """ - if self._is_item_file and self._item.is_dir(): + if is_item_file and self._item.is_dir(): raise ValueError(f"{self.__class__.__name__} can't initialize with a directory path as its data item")