From 0b758692e0c133b9e102f67670b0bf67cbd05a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Eide?= Date: Tue, 3 Sep 2024 15:24:01 +0200 Subject: [PATCH] Convert ErtConfig to dataclass --- src/ert/config/design_matrix.py | 10 ++-- src/ert/config/ensemble_config.py | 15 +++-- src/ert/config/ert_config.py | 55 ++++++++++++++----- src/ert/config/field.py | 2 +- src/ert/config/forward_model_step.py | 9 +++ src/ert/config/general_observation.py | 10 ++-- src/ert/config/observations.py | 10 ++-- src/ert/config/queue_config.py | 3 +- src/ert/config/refcase.py | 8 +-- src/ert/config/workflow.py | 11 ++-- src/ert/config/workflow_job.py | 2 +- src/ert/substitutions.py | 41 +++++++++++++- .../config/observations_generator.py | 9 ++- .../ert/unit_tests/config/test_ert_config.py | 25 ++++++++- .../unit_tests/config/test_observations.py | 13 ++--- .../0/snake_oil_measured_output.csv | 13 +++++ .../unit_tests/data/test_integration_data.py | 4 +- .../0/misfit_collector.csv | 8 +++ .../test_that_storage_matches/parameters | 2 +- tests/ert/unit_tests/test_libres_facade.py | 2 +- 20 files changed, 189 insertions(+), 63 deletions(-) diff --git a/src/ert/config/design_matrix.py b/src/ert/config/design_matrix.py index 9ef318e9c9f..79297215c98 100644 --- a/src/ert/config/design_matrix.py +++ b/src/ert/config/design_matrix.py @@ -29,10 +29,12 @@ class DesignMatrix: xls_filename: Path design_sheet: str default_sheet: str - num_realizations: Optional[int] = None - active_realizations: Optional[List[bool]] = None - design_matrix_df: Optional[pd.DataFrame] = None - parameter_configuration: Optional[Dict[str, ParameterConfig]] = None + + def __post_init__(self) -> None: + self.num_realizations: Optional[int] = None + self.active_realizations: Optional[List[bool]] = None + self.design_matrix_df: Optional[pd.DataFrame] = None + self.parameter_configuration: Optional[Dict[str, ParameterConfig]] = None @classmethod def from_config_list(cls, config_list: List[str]) -> "DesignMatrix": diff --git a/src/ert/config/ensemble_config.py b/src/ert/config/ensemble_config.py index 0908cad5610..24ffc6be561 100644 --- a/src/ert/config/ensemble_config.py +++ b/src/ert/config/ensemble_config.py @@ -15,7 +15,8 @@ from ert.field_utils import get_shape -from .field import Field +from .ext_param_config import ExtParamConfig +from .field import Field as FieldConfig from .gen_data_config import GenDataConfig from .gen_kw_config import GenKwConfig from .parameter_config import ParameterConfig @@ -49,8 +50,12 @@ def _get_abs_path(file: Optional[str]) -> Optional[str]: @dataclass class EnsembleConfig: grid_file: Optional[str] = None - response_configs: Dict[str, ResponseConfig] = field(default_factory=dict) - parameter_configs: Dict[str, ParameterConfig] = field(default_factory=dict) + response_configs: Dict[str, Union[SummaryConfig, GenDataConfig]] = field( + default_factory=dict + ) + parameter_configs: Dict[ + str, GenKwConfig | FieldConfig | SurfaceConfig | ExtParamConfig + ] = field(default_factory=dict) refcase: Optional[Refcase] = None def __post_init__(self) -> None: @@ -92,7 +97,7 @@ def from_dict(cls, config_dict: ConfigDict) -> EnsembleConfig: grid_file_path, ) from err - def make_field(field_list: List[str]) -> Field: + def make_field(field_list: List[str]) -> FieldConfig: if grid_file_path is None: raise ConfigValidationError.with_context( "In order to use the FIELD keyword, a GRID must be supplied.", @@ -103,7 +108,7 @@ def make_field(field_list: List[str]) -> Field: f"Grid file {grid_file_path} did not contain dimensions", grid_file_path, ) - return Field.from_config_list(grid_file_path, dims, field_list) + return FieldConfig.from_config_list(grid_file_path, dims, field_list) parameter_configs = ( [GenKwConfig.from_config_list(g) for g in gen_kw_list] diff --git a/src/ert/config/ert_config.py b/src/ert/config/ert_config.py index 4c3241be5cb..3de35137443 100644 --- a/src/ert/config/ert_config.py +++ b/src/ert/config/ert_config.py @@ -4,13 +4,14 @@ import logging import os from collections import defaultdict -from dataclasses import dataclass, field +from dataclasses import field from datetime import datetime from os import path from pathlib import Path from typing import ( Any, ClassVar, + DefaultDict, Dict, List, Optional, @@ -24,6 +25,8 @@ import polars from pydantic import ValidationError as PydanticValidationError +from pydantic import field_validator +from pydantic.dataclasses import dataclass from typing_extensions import Self from ert.plugins import ErtPluginManager @@ -49,6 +52,7 @@ ConfigWarning, ErrorInfo, ForwardModelStepKeys, + HistorySource, HookRuntime, init_forward_model_schema, init_site_config_schema, @@ -256,7 +260,9 @@ class ErtConfig: queue_config: QueueConfig = field(default_factory=QueueConfig) workflow_jobs: Dict[str, WorkflowJob] = field(default_factory=dict) workflows: Dict[str, Workflow] = field(default_factory=dict) - hooked_workflows: Dict[HookRuntime, List[Workflow]] = field(default_factory=dict) + hooked_workflows: DefaultDict[HookRuntime, List[Workflow]] = field( + default_factory=lambda: defaultdict(list) + ) runpath_file: Path = Path(DEFAULT_RUNPATH_FILE) ert_templates: List[Tuple[str, str]] = field(default_factory=list) installed_forward_model_steps: Dict[str, ForwardModelStep] = field( @@ -269,6 +275,14 @@ class ErtConfig: observation_config: List[ Tuple[str, Union[HistoryValues, SummaryValues, GenObsValues]] ] = field(default_factory=list) + enkf_obs: EnkfObs = field(default_factory=EnkfObs) + + @field_validator("substitution_list", mode="before") + @classmethod + def convert_to_substitution_list(cls, v: Dict[str, str]) -> SubstitutionList: + if isinstance(v, SubstitutionList): + return v + return SubstitutionList(v) def __eq__(self, other: object) -> bool: if not isinstance(other, ErtConfig): @@ -298,8 +312,6 @@ def __post_init__(self) -> None: if self.user_config_file else os.getcwd() ) - self.enkf_obs: EnkfObs = self._create_observations(self.observation_config) - self.observations: Dict[str, polars.DataFrame] = self.enkf_obs.datasets @staticmethod @@ -456,7 +468,7 @@ def from_dict(cls, config_dict) -> Self: errors.append(err) obs_config_file = config_dict.get(ConfigKeys.OBS_CONFIG) - obs_config_content = None + obs_config_content = [] try: if obs_config_file: if path.isfile(obs_config_file) and path.getsize(obs_config_file) == 0: @@ -487,6 +499,19 @@ def from_dict(cls, config_dict) -> Self: [key] for key in summary_obs if key not in summary_keys ] ensemble_config = EnsembleConfig.from_dict(config_dict=config_dict) + if model_config: + observations = cls._create_observations( + obs_config_content, + ensemble_config, + model_config.time_map, + model_config.history_source, + ) + else: + errors.append( + ConfigValidationError( + "Not possible to validate observations without valid model config" + ) + ) except ConfigValidationError as err: errors.append(err) @@ -519,6 +544,7 @@ def from_dict(cls, config_dict) -> Self: model_config=model_config, user_config_file=config_file_path, observation_config=obs_config_content, + enkf_obs=observations, ) @classmethod @@ -970,24 +996,25 @@ def _installed_forward_model_steps_from_dict( def preferred_num_cpu(self) -> int: return int(self.substitutions.get(f"<{ConfigKeys.NUM_CPU}>", 1)) + @staticmethod def _create_observations( - self, obs_config_content: Optional[ Dict[str, Union[HistoryValues, SummaryValues, GenObsValues]] ], + ensemble_config: EnsembleConfig, + time_map: Optional[List[datetime]], + history: HistorySource, ) -> EnkfObs: if not obs_config_content: return EnkfObs({}, []) obs_vectors: Dict[str, ObsVector] = {} obs_time_list: Sequence[datetime] = [] - if self.ensemble_config.refcase is not None: - obs_time_list = self.ensemble_config.refcase.all_dates - elif self.model_config.time_map is not None: - obs_time_list = self.model_config.time_map + if ensemble_config.refcase is not None: + obs_time_list = ensemble_config.refcase.all_dates + elif time_map is not None: + obs_time_list = time_map - history = self.model_config.history_source time_len = len(obs_time_list) - ensemble_config = self.ensemble_config config_errors: List[ErrorInfo] = [] for obs_name, values in obs_config_content: try: @@ -1059,7 +1086,7 @@ def _get_files_in_directory(job_path, errors): def _substitutions_from_dict(config_dict) -> Substitutions: - subst_list = Substitutions() + subst_list = {} for key, val in config_dict.get("DEFINE", []): subst_list[key] = val @@ -1077,7 +1104,7 @@ def _substitutions_from_dict(config_dict) -> Substitutions: for key, val in config_dict.get("DATA_KW", []): subst_list[key] = val - return subst_list + return Substitutions(subst_list) @no_type_check diff --git a/src/ert/config/field.py b/src/ert/config/field.py index 520ff9d82d1..79691f83bbc 100644 --- a/src/ert/config/field.py +++ b/src/ert/config/field.py @@ -3,13 +3,13 @@ import logging import os import time -from dataclasses import dataclass from functools import cached_property from pathlib import Path from typing import TYPE_CHECKING, Any, List, Optional, Union, overload import numpy as np import xarray as xr +from pydantic.dataclasses import dataclass from typing_extensions import Self from ert.field_utils import FieldFileFormat, Shape, read_field, read_mask, save_field diff --git a/src/ert/config/forward_model_step.py b/src/ert/config/forward_model_step.py index 8e5026e7805..cb98fe1bcac 100644 --- a/src/ert/config/forward_model_step.py +++ b/src/ert/config/forward_model_step.py @@ -5,12 +5,14 @@ from dataclasses import dataclass, field from typing import ( ClassVar, + Dict, Literal, Optional, TypedDict, Union, ) +from pydantic import field_validator from typing_extensions import NotRequired, Unpack from ert.config.parsing.config_errors import ConfigWarning @@ -172,6 +174,13 @@ class ForwardModelStep: "_ERT_RUNPATH": "", } + @field_validator("private_args", mode="before") + @classmethod + def convert_to_substitution_list(cls, v: Dict[str, str]) -> SubstitutionList: + if isinstance(v, SubstitutionList): + return v + return SubstitutionList(v) + def validate_pre_experiment(self, fm_step_json: ForwardModelStepJSON) -> None: """ Raise errors pertaining to the environment not being diff --git a/src/ert/config/general_observation.py b/src/ert/config/general_observation.py index d2a31ccc07b..40744641f7a 100644 --- a/src/ert/config/general_observation.py +++ b/src/ert/config/general_observation.py @@ -1,17 +1,17 @@ from __future__ import annotations from dataclasses import dataclass +from typing import List import numpy as np -import numpy.typing as npt @dataclass(eq=False) class GenObservation: - values: npt.NDArray[np.double] - stds: npt.NDArray[np.double] - indices: npt.NDArray[np.int32] - std_scaling: npt.NDArray[np.double] + values: List[float] + stds: List[float] + indices: List[int] + std_scaling: List[float] def __post_init__(self) -> None: for val in self.stds: diff --git a/src/ert/config/observations.py b/src/ert/config/observations.py index e25c0f8c442..9fec489699f 100644 --- a/src/ert/config/observations.py +++ b/src/ert/config/observations.py @@ -1,5 +1,5 @@ import os -from dataclasses import dataclass +from dataclasses import dataclass, field from datetime import datetime, timedelta from pathlib import Path from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Tuple, Union @@ -39,8 +39,8 @@ def history_key(key: str) -> str: @dataclass class EnkfObs: - obs_vectors: Dict[str, ObsVector] - obs_time: List[datetime] + obs_vectors: Dict[str, ObsVector] = field(default_factory=dict) + obs_time: List[datetime] = field(default_factory=list) def __post_init__(self) -> None: grouped: Dict[str, List[polars.DataFrame]] = {} @@ -394,7 +394,9 @@ def _create_gen_obs( f"index list ({indices}) must be of equal length", obs_file if obs_file is not None else "", ) - return GenObservation(values, stds, indices, std_scaling) + return GenObservation( + values.tolist(), stds.tolist(), indices.tolist(), std_scaling.tolist() + ) @classmethod def _handle_general_observation( diff --git a/src/ert/config/queue_config.py b/src/ert/config/queue_config.py index 9ed6653b263..61a76f68acc 100644 --- a/src/ert/config/queue_config.py +++ b/src/ert/config/queue_config.py @@ -8,7 +8,6 @@ from typing import Any, Dict, List, Literal, Mapping, Optional, Union, no_type_check import pydantic -from pydantic import Field from pydantic.dataclasses import dataclass from typing_extensions import Annotated @@ -270,7 +269,7 @@ class QueueConfig: queue_system: QueueSystem = QueueSystem.LOCAL queue_options: Union[ LsfQueueOptions, TorqueQueueOptions, SlurmQueueOptions, LocalQueueOptions - ] = Field(default_factory=LocalQueueOptions, discriminator="name") + ] = pydantic.Field(default_factory=LocalQueueOptions, discriminator="name") queue_options_test_run: LocalQueueOptions = field(default_factory=LocalQueueOptions) stop_long_running: bool = False diff --git a/src/ert/config/refcase.py b/src/ert/config/refcase.py index f5c1fbb4964..3c62873f1a3 100644 --- a/src/ert/config/refcase.py +++ b/src/ert/config/refcase.py @@ -1,14 +1,12 @@ from dataclasses import dataclass from datetime import datetime from typing import ( - Any, List, Optional, Sequence, ) import numpy as np -import numpy.typing as npt from ._read_summary import read_summary from .parsing.config_dict import ConfigDict @@ -21,7 +19,7 @@ class Refcase: start_date: datetime keys: List[str] dates: Sequence[datetime] - values: npt.NDArray[Any] + values: List[List[float]] def __eq__(self, other: object) -> bool: if not isinstance(other, Refcase): @@ -50,5 +48,7 @@ def from_config_dict(cls, config_dict: ConfigDict) -> Optional["Refcase"]: raise ConfigValidationError(f"Could not read refcase: {err}") from err return ( - cls(start_date, refcase_keys, time_map, data) if data is not None else None + cls(start_date, refcase_keys, time_map, data.tolist()) + if data is not None + else None ) diff --git a/src/ert/config/workflow.py b/src/ert/config/workflow.py index 9016401a8b9..7f5d3f3d93a 100644 --- a/src/ert/config/workflow.py +++ b/src/ert/config/workflow.py @@ -1,6 +1,7 @@ from __future__ import annotations import os +from dataclasses import dataclass from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Tuple from .parsing import ConfigValidationError, ErrorInfo, init_workflow_schema, parse @@ -11,14 +12,10 @@ from .workflow_job import WorkflowJob +@dataclass class Workflow: - def __init__( - self, - src_file: str, - cmd_list: List[Tuple[WorkflowJob, Any]], - ): - self.src_file = src_file - self.cmd_list = cmd_list + src_file: str + cmd_list: List[Tuple[WorkflowJob, Any]] def __len__(self) -> int: return len(self.cmd_list) diff --git a/src/ert/config/workflow_job.py b/src/ert/config/workflow_job.py index af816329ec1..4eea83c515d 100644 --- a/src/ert/config/workflow_job.py +++ b/src/ert/config/workflow_job.py @@ -82,7 +82,7 @@ def from_file(cls, config_file: str, name: Optional[str] = None) -> "WorkflowJob arg_types_list = cls._make_arg_types_list(content_dict) return cls( name=name, - internal=content_dict.get("INTERNAL"), # type: ignore + internal=bool(content_dict.get("INTERNAL", False)), # type: ignore min_args=content_dict.get("MIN_ARG"), # type: ignore max_args=content_dict.get("MAX_ARG"), # type: ignore arg_types=arg_types_list, diff --git a/src/ert/substitutions.py b/src/ert/substitutions.py index bf1973a04d4..bda5dc09983 100644 --- a/src/ert/substitutions.py +++ b/src/ert/substitutions.py @@ -2,7 +2,11 @@ import logging import re -from typing import Optional +from typing import Any, Optional + +from pydantic import GetCoreSchemaHandler, GetJsonSchemaHandler +from pydantic.json_schema import JsonSchemaValue +from pydantic_core import core_schema logger = logging.getLogger(__name__) _PATTERN = re.compile("<[^<>]+>") @@ -67,6 +71,41 @@ def __repr__(self) -> str: def __str__(self) -> str: return f"Substitutions({self._concise_representation()})" + @classmethod + def __get_pydantic_core_schema__( + cls, + _source_type: Any, + _handler: GetCoreSchemaHandler, + ) -> core_schema.CoreSchema: + def _serialize(instance: Any, info: Any) -> Any: + return dict(instance) + + from_str_schema = core_schema.chain_schema( + [ + core_schema.str_schema(), + core_schema.no_info_plain_validator_function(cls), + ] + ) + + return core_schema.json_or_python_schema( + json_schema=from_str_schema, + python_schema=core_schema.union_schema( + [ + from_str_schema, + core_schema.is_instance_schema(cls), + ] + ), + serialization=core_schema.plain_serializer_function_ser_schema( + _serialize, info_arg=True + ), + ) + + @classmethod + def __get_pydantic_json_schema__( + cls, _core_schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler + ) -> JsonSchemaValue: + return handler(core_schema.str_schema()) + def _replace_strings(subst_list: Substitutions, string: str) -> Optional[str]: start = 0 diff --git a/tests/ert/unit_tests/config/observations_generator.py b/tests/ert/unit_tests/config/observations_generator.py index 90da212276f..9853ab2113c 100644 --- a/tests/ert/unit_tests/config/observations_generator.py +++ b/tests/ert/unit_tests/config/observations_generator.py @@ -137,7 +137,7 @@ def general_observations(draw, ensemble_keys, std_cutoff, names): } val_type = draw(st.sampled_from(["value", "obs_file"])) if val_type == "value": - kws["value"] = draw(st.floats(allow_nan=False)) + kws["value"] = draw(st.floats(allow_nan=False, allow_infinity=False)) if val_type == "obs_file": kws["obs_file"] = draw(names) kws["error"] = None @@ -243,7 +243,10 @@ def observations(draw, ensemble_keys, summary_keys, std_cutoff, start_date): st.builds( HistoryObservation, error=st.floats( - min_value=std_cutoff, allow_nan=False, allow_infinity=False + min_value=std_cutoff, + max_value=1e20, + allow_nan=False, + allow_infinity=False, ), segment=st.lists( st.builds( @@ -253,12 +256,14 @@ def observations(draw, ensemble_keys, summary_keys, std_cutoff, start_date): stop=st.integers(min_value=1, max_value=10), error=st.floats( min_value=0.01, + max_value=1e20, allow_nan=False, allow_infinity=False, exclude_min=True, ), error_min=st.floats( min_value=0.0, + max_value=1e20, allow_nan=False, allow_infinity=False, exclude_min=True, diff --git a/tests/ert/unit_tests/config/test_ert_config.py b/tests/ert/unit_tests/config/test_ert_config.py index 93e5af10a2a..2f496f12df7 100644 --- a/tests/ert/unit_tests/config/test_ert_config.py +++ b/tests/ert/unit_tests/config/test_ert_config.py @@ -11,6 +11,7 @@ import pytest from hypothesis import assume, given, settings from hypothesis import strategies as st +from pydantic import RootModel, TypeAdapter from ert.config import AnalysisConfig, ConfigValidationError, ErtConfig, HookRuntime from ert.config.ert_config import ( @@ -26,7 +27,6 @@ ContextList, ContextString, ) -from ert.config.parsing.observations_parser import ObservationConfigError from ert.config.parsing.queue_system import QueueSystem from .config_dict_generator import config_generators @@ -453,6 +453,25 @@ def test_that_creating_ert_config_from_dict_is_same_as_from_file( @pytest.mark.integration_test +@pytest.mark.filterwarnings("ignore::ert.config.ConfigWarning") +@pytest.mark.usefixtures("set_site_config") +@settings(max_examples=20) +@given(config_generators()) +def test_that_ert_config_is_serializable(tmp_path_factory, config_generator): + filename = "config.ert" + with config_generator(tmp_path_factory, filename) as config_values: + ert_config = ErtConfig.from_dict( + config_values.to_config_dict("config.ert", os.getcwd()) + ) + config_json = json.loads(RootModel[ErtConfig](ert_config).model_dump_json()) + from_json = ErtConfig(**config_json) + assert from_json == ert_config + + +def test_that_ert_config_has_valid_schema(): + TypeAdapter(ErtConfig).json_schema() + + @pytest.mark.filterwarnings("ignore::ert.config.ConfigWarning") @pytest.mark.usefixtures("set_site_config") @settings(max_examples=10) @@ -1375,7 +1394,7 @@ def test_no_timemap_or_refcase_provides_clear_error(): print(line, end="") with pytest.raises( - ObservationConfigError, + ConfigValidationError, match="Missing REFCASE or TIME_MAP for observations: WPR_DIFF_1", ): ErtConfig.from_file("snake_oil.ert") @@ -1416,7 +1435,7 @@ def test_that_multiple_errors_are_shown_when_generating_observations(): continue print(line, end="") - with pytest.raises(ObservationConfigError) as err: + with pytest.raises(ConfigValidationError) as err: _ = ErtConfig.from_file("snake_oil.ert") expected_errors = [ diff --git a/tests/ert/unit_tests/config/test_observations.py b/tests/ert/unit_tests/config/test_observations.py index ace152a3ad5..c32fb8b3c5c 100644 --- a/tests/ert/unit_tests/config/test_observations.py +++ b/tests/ert/unit_tests/config/test_observations.py @@ -4,7 +4,6 @@ from pathlib import Path from textwrap import dedent -import numpy as np import pytest from hypothesis import given, settings from hypothesis import strategies as st @@ -181,10 +180,10 @@ def test_summary_obs_invalid_observation_std(std): def test_gen_obs_invalid_observation_std(std): with pytest.raises(ValueError, match="must be strictly > 0"): GenObservation( - np.array(range(len(std))), - np.array(std), - np.array(range(len(std))), - np.array(range(len(std))), + list(range(len(std))), + list(std), + list(range(len(std))), + list(range(len(std))), ) @@ -303,7 +302,7 @@ def test_that_index_list_is_read(tmpdir): ) observations = ErtConfig.from_file("config.ert").enkf_obs - assert observations["OBS"].observations[0].indices.tolist() == [0, 2, 4, 6, 8] + assert observations["OBS"].observations[0].indices == [0, 2, 4, 6, 8] def test_that_index_file_is_read(tmpdir): @@ -337,7 +336,7 @@ def test_that_index_file_is_read(tmpdir): ) observations = ErtConfig.from_file("config.ert").enkf_obs - assert observations["OBS"].observations[0].indices.tolist() == [0, 2, 4, 6, 8] + assert observations["OBS"].observations[0].indices == [0, 2, 4, 6, 8] def test_that_missing_obs_file_raises_exception(tmpdir): diff --git a/tests/ert/unit_tests/data/snapshots/test_integration_data/test_all_measured_snapshot/0/snake_oil_measured_output.csv b/tests/ert/unit_tests/data/snapshots/test_integration_data/test_all_measured_snapshot/0/snake_oil_measured_output.csv index 374643657d6..286e3fe76b0 100644 --- a/tests/ert/unit_tests/data/snapshots/test_integration_data/test_all_measured_snapshot/0/snake_oil_measured_output.csv +++ b/tests/ert/unit_tests/data/snapshots/test_integration_data/test_all_measured_snapshot/0/snake_oil_measured_output.csv @@ -1,3 +1,4 @@ +<<<<<<< HEAD observation_key,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,WOPR_OP1_108,WOPR_OP1_144,WOPR_OP1_190,WOPR_OP1_36,WOPR_OP1_72,WOPR_OP1_9,WPR_DIFF_1,WPR_DIFF_1,WPR_DIFF_1,WPR_DIFF_1 key_index,2010-01-10 00:00:00.000,2010-01-20 00:00:00.000,2010-01-30 00:00:00.000,2010-02-09 00:00:00.000,2010-02-19 00:00:00.000,2010-03-01 00:00:00.000,2010-03-11 00:00:00.000,2010-03-21 00:00:00.000,2010-03-31 00:00:00.000,2010-04-10 00:00:00.000,2010-04-20 00:00:00.000,2010-04-30 00:00:00.000,2010-05-10 00:00:00.000,2010-05-20 00:00:00.000,2010-05-30 00:00:00.000,2010-06-09 00:00:00.000,2010-06-19 00:00:00.000,2010-06-29 00:00:00.000,2010-07-09 00:00:00.000,2010-07-19 00:00:00.000,2010-07-29 00:00:00.000,2010-08-08 00:00:00.000,2010-08-18 00:00:00.000,2010-08-28 00:00:00.000,2010-09-07 00:00:00.000,2010-09-17 00:00:00.000,2010-09-27 00:00:00.000,2010-10-07 00:00:00.000,2010-10-17 00:00:00.000,2010-10-27 00:00:00.000,2010-11-06 00:00:00.000,2010-11-16 00:00:00.000,2010-11-26 00:00:00.000,2010-12-06 00:00:00.000,2010-12-16 00:00:00.000,2010-12-26 00:00:00.000,2011-01-05 00:00:00.000,2011-01-15 00:00:00.000,2011-01-25 00:00:00.000,2011-02-04 00:00:00.000,2011-02-14 00:00:00.000,2011-02-24 00:00:00.000,2011-03-06 00:00:00.000,2011-03-16 00:00:00.000,2011-03-26 00:00:00.000,2011-04-05 00:00:00.000,2011-04-15 00:00:00.000,2011-04-25 00:00:00.000,2011-05-05 00:00:00.000,2011-05-15 00:00:00.000,2011-05-25 00:00:00.000,2011-06-04 00:00:00.000,2011-06-14 00:00:00.000,2011-06-24 00:00:00.000,2011-07-04 00:00:00.000,2011-07-14 00:00:00.000,2011-07-24 00:00:00.000,2011-08-03 00:00:00.000,2011-08-13 00:00:00.000,2011-08-23 00:00:00.000,2011-09-02 00:00:00.000,2011-09-12 00:00:00.000,2011-09-22 00:00:00.000,2011-10-02 00:00:00.000,2011-10-12 00:00:00.000,2011-10-22 00:00:00.000,2011-11-01 00:00:00.000,2011-11-11 00:00:00.000,2011-11-21 00:00:00.000,2011-12-01 00:00:00.000,2011-12-11 00:00:00.000,2011-12-21 00:00:00.000,2011-12-31 00:00:00.000,2012-01-10 00:00:00.000,2012-01-20 00:00:00.000,2012-01-30 00:00:00.000,2012-02-09 00:00:00.000,2012-02-19 00:00:00.000,2012-02-29 00:00:00.000,2012-03-10 00:00:00.000,2012-03-20 00:00:00.000,2012-03-30 00:00:00.000,2012-04-09 00:00:00.000,2012-04-19 00:00:00.000,2012-04-29 00:00:00.000,2012-05-09 00:00:00.000,2012-05-19 00:00:00.000,2012-05-29 00:00:00.000,2012-06-08 00:00:00.000,2012-06-18 00:00:00.000,2012-06-28 00:00:00.000,2012-07-08 00:00:00.000,2012-07-18 00:00:00.000,2012-07-28 00:00:00.000,2012-08-07 00:00:00.000,2012-08-17 00:00:00.000,2012-08-27 00:00:00.000,2012-09-06 00:00:00.000,2012-09-16 00:00:00.000,2012-09-26 00:00:00.000,2012-10-06 00:00:00.000,2012-10-16 00:00:00.000,2012-10-26 00:00:00.000,2012-11-05 00:00:00.000,2012-11-15 00:00:00.000,2012-11-25 00:00:00.000,2012-12-05 00:00:00.000,2012-12-15 00:00:00.000,2012-12-25 00:00:00.000,2013-01-04 00:00:00.000,2013-01-14 00:00:00.000,2013-01-24 00:00:00.000,2013-02-03 00:00:00.000,2013-02-13 00:00:00.000,2013-02-23 00:00:00.000,2013-03-05 00:00:00.000,2013-03-15 00:00:00.000,2013-03-25 00:00:00.000,2013-04-04 00:00:00.000,2013-04-14 00:00:00.000,2013-04-24 00:00:00.000,2013-05-04 00:00:00.000,2013-05-14 00:00:00.000,2013-05-24 00:00:00.000,2013-06-03 00:00:00.000,2013-06-13 00:00:00.000,2013-06-23 00:00:00.000,2013-07-03 00:00:00.000,2013-07-13 00:00:00.000,2013-07-23 00:00:00.000,2013-08-02 00:00:00.000,2013-08-12 00:00:00.000,2013-08-22 00:00:00.000,2013-09-01 00:00:00.000,2013-09-11 00:00:00.000,2013-09-21 00:00:00.000,2013-10-01 00:00:00.000,2013-10-11 00:00:00.000,2013-10-21 00:00:00.000,2013-10-31 00:00:00.000,2013-11-10 00:00:00.000,2013-11-20 00:00:00.000,2013-11-30 00:00:00.000,2013-12-10 00:00:00.000,2013-12-20 00:00:00.000,2013-12-30 00:00:00.000,2014-01-09 00:00:00.000,2014-01-19 00:00:00.000,2014-01-29 00:00:00.000,2014-02-08 00:00:00.000,2014-02-18 00:00:00.000,2014-02-28 00:00:00.000,2014-03-10 00:00:00.000,2014-03-20 00:00:00.000,2014-03-30 00:00:00.000,2014-04-09 00:00:00.000,2014-04-19 00:00:00.000,2014-04-29 00:00:00.000,2014-05-09 00:00:00.000,2014-05-19 00:00:00.000,2014-05-29 00:00:00.000,2014-06-08 00:00:00.000,2014-06-18 00:00:00.000,2014-06-28 00:00:00.000,2014-07-08 00:00:00.000,2014-07-18 00:00:00.000,2014-07-28 00:00:00.000,2014-08-07 00:00:00.000,2014-08-17 00:00:00.000,2014-08-27 00:00:00.000,2014-09-06 00:00:00.000,2014-09-16 00:00:00.000,2014-09-26 00:00:00.000,2014-10-06 00:00:00.000,2014-10-16 00:00:00.000,2014-10-26 00:00:00.000,2014-11-05 00:00:00.000,2014-11-15 00:00:00.000,2014-11-25 00:00:00.000,2014-12-05 00:00:00.000,2014-12-15 00:00:00.000,2014-12-25 00:00:00.000,2015-01-04 00:00:00.000,2015-01-14 00:00:00.000,2015-01-24 00:00:00.000,2015-02-03 00:00:00.000,2015-02-13 00:00:00.000,2015-02-23 00:00:00.000,2015-03-05 00:00:00.000,2015-03-15 00:00:00.000,2015-03-25 00:00:00.000,2015-04-04 00:00:00.000,2015-04-14 00:00:00.000,2015-04-24 00:00:00.000,2015-05-04 00:00:00.000,2015-05-14 00:00:00.000,2015-05-24 00:00:00.000,2015-06-03 00:00:00.000,2015-06-13 00:00:00.000,2015-06-23 00:00:00.000,2012-12-15 00:00:00.000,2013-12-10 00:00:00.000,2015-03-15 00:00:00.000,2010-12-26 00:00:00.000,2011-12-21 00:00:00.000,2010-03-31 00:00:00.000,"199, 400","199, 800","199, 1200","199, 1800" OBS,0.0016968873,0.007549145,0.017537246,0.03158785,0.049602818,0.07146798,0.09703562,0.12614505,0.15861532,0.19425455,0.23281695,0.27404672,0.3176907,0.36344424,0.41098633,0.4600255,0.51025933,0.56143636,0.6133571,0.66553444,0.7178516,0.7704012,0.82269627,0.8746449,0.9261661,0.97700804,1.0266837,1.075046,1.1215502,1.1657692,1.2075442,1.2470088,1.283505,1.3167048,1.3460836,1.3711467,1.3915883,1.4073505,1.4176364,1.4222338,1.4235653,1.4251764,1.4272525,1.4300299,1.4334416,1.4376937,1.4429182,1.4488641,1.4547948,1.4603125,1.4656056,1.4704256,1.4741873,1.4752847,1.4738245,1.4694165,1.4611896,1.449487,1.4363856,1.4213961,1.4026655,1.3793243,1.3527155,1.3241467,1.2965815,1.2704608,1.2434195,1.2160033,1.1891444,1.1614685,1.1344153,1.1116309,1.0911471,1.0719005,1.0527072,1.0326412,1.0128752,0.99458045,0.9754697,0.95573056,0.9363317,0.9158328,0.89282525,0.8686986,0.8423309,0.81245947,0.77893275,0.7419268,0.7024904,0.6612976,0.6193502,0.5782304,0.53965735,0.5051061,0.47489527,0.45020473,0.43144864,0.4186316,0.41004148,0.40574685,0.4042486,0.39915204,0.38872367,0.37419528,0.35517636,0.33174545,0.30616295,0.28151485,0.2636555,0.24812838,0.23326682,0.2185264,0.2046949,0.19195016,0.17977433,0.16876085,0.15952761,0.15166986,0.14568953,0.14111458,0.1373079,0.1336918,0.13018894,0.12653682,0.12283045,0.119267896,0.11993221,0.12808073,0.1359953,0.14335634,0.1499063,0.15490334,0.15908614,0.16274403,0.16555065,0.16695149,0.1671911,0.16613625,0.164992,0.1643203,0.16512139,0.16901411,0.17592156,0.18565156,0.19735679,0.21057734,0.22475953,0.239172,0.25242954,0.26408574,0.27468532,0.28491238,0.29450402,0.30279353,0.30875587,0.31200513,0.31252342,0.30972025,0.3039142,0.29564658,0.2858532,0.27539688,0.2641619,0.25273055,0.24120258,0.2295282,0.21775572,0.2068884,0.1965159,0.18688032,0.17763661,0.16827875,0.1587631,0.14956273,0.14119677,0.13354658,0.12660715,0.120499015,0.115329266,0.11091871,0.106530644,0.10148542,0.09563612,0.0887933,0.08123062,0.07339937,0.06549388,0.057671394,0.050342962,0.04377567,0.037934422,0.032930486,0.028952241,0.025974156,0.023769772,0.022172002,0.021033743,0.020261472,0.019794177,0.019617574,0.3,0.2,0.015,0.7,0.5,0.1,0.0,0.1,0.2,0.0 @@ -7,3 +8,15 @@ STD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1, 2,0.0,0.0,0.0,0.0009306805,0.009585856,0.020108461,0.032440223,0.04651827,0.062277738,0.079637356,0.09848104,0.118658215,0.14888968,0.196603,0.24429931,0.29457676,0.34531662,0.39578354,0.45030624,0.50482506,0.5587749,0.6141867,0.66813636,0.7211779,0.77194047,0.82550544,0.8687918,0.9061084,0.94382465,0.9824877,1.0182258,1.0524622,1.0842314,1.1144633,1.1407459,1.1650633,1.185322,1.1931417,1.1973448,1.1967074,1.1917431,1.1848559,1.1863984,1.180171,1.1808456,1.1644539,1.1476175,1.1396906,1.1310341,1.1272389,1.115221,1.0937736,1.0590318,1.022045,0.9824434,0.95815665,0.9283046,0.889345,0.8637833,0.8359287,0.8034586,0.81108934,0.788393,0.76957,0.7365993,0.69923747,0.67774653,0.6741882,0.6710441,0.6680765,0.6647745,0.6605854,0.65569735,0.6500317,0.6434631,0.63577193,0.6268971,0.6173589,0.6077398,0.59873766,0.5895726,0.57850236,0.5655543,0.5514233,0.53619516,0.52024835,0.5043804,0.4890173,0.4747702,0.4622876,0.45095524,0.43948683,0.42823333,0.41782838,0.40857902,0.40063167,0.41902545,0.43807945,0.42125186,0.42329723,0.40412924,0.3852273,0.38371232,0.38165757,0.37873572,0.37440464,0.36859018,0.36165804,0.3533221,0.34460396,0.33640635,0.32908574,0.3230304,0.31812266,0.31358474,0.30919126,0.30504936,0.3004008,0.2947161,0.28817132,0.28165388,0.2761517,0.2717742,0.2684633,0.26549742,0.26251367,0.25927567,0.25492778,0.24965855,0.2432902,0.23669581,0.23137821,0.22729014,0.22418691,0.22185725,0.22002003,0.21842611,0.21708915,0.21592605,0.21536626,0.21474978,0.21293288,0.21053028,0.20779079,0.20465551,0.20135003,0.19799858,0.19402647,0.18963765,0.18482012,0.17949183,0.17377988,0.16786565,0.1613103,0.15413634,0.14697275,0.1403906,0.13427737,0.12885694,0.12410006,0.11916771,0.113189,0.10661362,0.099841125,0.09322841,0.086768344,0.080384396,0.07439789,0.06882855,0.06383583,0.0594506,0.055510625,0.051901817,0.048607033,0.045524687,0.042628214,0.039948195,0.03743287,0.03510833,0.03296606,0.030791184,0.028320136,0.025629934,0.022796795,0.019936543,0.017027922,0.014029206,0.011087421,0.008258548,0.0056246156,0.003316156,0.0014094743,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.36165804,0.20779079,0.0056246156,0.6489679,0.6605854,0.062277738,0.0,0.167201,0.264971,0.229273 3,0.2839923,0.2900899,0.30051348,0.31520578,0.33403203,0.3568198,0.38345975,0.41381514,0.44766536,0.48479968,0.5248952,0.5675288,0.61249346,0.6594644,0.7083309,0.75912666,0.8110881,0.8637502,0.916986,0.97087765,1.0252818,1.0793012,1.1328692,1.1856927,1.2374732,1.2876266,1.335498,1.3810326,1.4239223,1.4638844,1.5013425,1.5354033,1.5647893,1.589538,1.6103185,1.6276175,1.6417066,1.6522436,1.6595404,1.6629419,1.662216,1.660496,1.6582338,1.6521094,1.6410725,1.628004,1.6145401,1.5991586,1.582807,1.5639279,1.5427363,1.5189189,1.4938638,1.4694625,1.4498372,1.4321578,1.4089341,1.3835155,1.3558307,1.3286929,1.3047575,1.2844636,1.2640172,1.243375,1.2219152,1.199724,1.1781434,1.1593405,1.1392289,1.1183892,1.0908748,1.056387,1.0184337,0.98075366,0.94586104,0.91333956,0.87930644,0.8442027,0.80802286,0.7783214,0.7529441,0.7308405,0.71599996,0.7056357,0.69517785,0.68310946,0.67207354,0.6578577,0.64617795,0.63734823,0.6276737,0.6161054,0.6078272,0.6010143,0.59488636,0.59227574,0.59620595,0.60162234,0.6080637,0.6132355,0.612318,0.61224693,0.6102298,0.60863876,0.6013227,0.587871,0.5724339,0.55602646,0.53417087,0.51330894,0.4981172,0.4873057,0.4790615,0.476649,0.4725334,0.46626446,0.46118507,0.45502642,0.44456482,0.43355775,0.42516062,0.41411468,0.40562218,0.39623836,0.38828775,0.38285297,0.3740274,0.36259592,0.35377988,0.34560052,0.3363795,0.32862866,0.3196942,0.3088421,0.29796812,0.29072046,0.28436866,0.28121653,0.2817123,0.28330866,0.2853419,0.28691757,0.28495058,0.2814405,0.2781463,0.2747631,0.27228296,0.2727141,0.2723371,0.2720319,0.27342114,0.2760096,0.27884558,0.2836582,0.28787607,0.2923819,0.2984456,0.3024549,0.30422297,0.30586937,0.307229,0.30770335,0.3087846,0.30966422,0.3103528,0.31194395,0.31266963,0.313227,0.31337002,0.3134888,0.3131746,0.3127416,0.31145945,0.3094651,0.306534,0.30323496,0.3004686,0.29757687,0.29431015,0.290395,0.28660133,0.28363025,0.2822752,0.2817083,0.28173846,0.28266236,0.28464934,0.2868161,0.289353,0.29160944,0.29359668,0.295201,0.29642186,0.2974215,0.2982702,0.2988855,0.2993037,0.29959962,0.2997273,0.29976672,0.28203553,0.15045837,0.10954739,0.7725099,0.52430737,0.170063,-0.120237,-0.098908,-0.004551,0.019996 4,0.02509654,0.028275477,0.03370005,0.041331254,0.0511149,0.062982604,0.07685298,0.09263297,0.11021918,0.12949924,0.15035124,0.17264456,0.21688063,0.26655793,0.31835392,0.37198913,0.42720312,0.48359478,0.5406858,0.5980349,0.6550778,0.71119344,0.76599175,0.81908506,0.8700788,0.9185892,0.9642108,1.0068879,1.0467757,1.0840752,1.1184549,1.1493537,1.1766772,1.2003511,1.220341,1.2367598,1.2497233,1.2590172,1.2645817,1.2663132,1.2647986,1.2609127,1.2547251,1.2461302,1.2350308,1.2211872,1.2045375,1.185195,1.163001,1.1378574,1.1104543,1.0816,1.0511289,1.019842,0.9876242,0.95497,0.923216,0.892486,0.8628618,0.83473474,0.80830723,0.7841457,0.76289344,0.74458444,0.7288459,0.7142982,0.6996053,0.68460655,0.6691861,0.6542112,0.639658,0.6247348,0.6098152,0.5952073,0.58026916,0.5646029,0.5484599,0.53078854,0.51078904,0.48859674,0.46520126,0.44159096,0.41829437,0.3958168,0.37400123,0.3536297,0.33617395,0.32118374,0.30964026,0.30152667,0.2962655,0.2928557,0.290957,0.28927323,0.287525,0.28604135,0.28523937,0.2941271,0.29974955,0.30188352,0.30280775,0.30590305,0.3110742,0.31811467,0.32674533,0.33662698,0.34737518,0.35857677,0.36980653,0.38064334,0.3907493,0.39983857,0.40756068,0.41360563,0.41771594,0.4196948,0.41941193,0.41680706,0.41188982,0.4047373,0.39652687,0.38884622,0.38171345,0.37512413,0.3690653,0.36351517,0.35844737,0.35383835,0.34966516,0.34590644,0.34253225,0.33951256,0.3368389,0.33450806,0.33252054,0.3308785,0.32958513,0.3286458,0.32806528,0.32784706,0.32724503,0.32518786,0.3217241,0.31694993,0.3109956,0.30402103,0.29620656,0.28774014,0.2788123,0.269609,0.26029444,0.2510134,0.24190938,0.23310415,0.22469567,0.21675612,0.20933285,0.20245112,0.19611491,0.1903093,0.18420985,0.17677793,0.16823912,0.158843,0.1488428,0.13848704,0.12801021,0.11762371,0.10751237,0.0978315,0.088704556,0.080223896,0.0724542,0.06543454,0.059183158,0.05370298,0.04898725,0.045024928,0.041805558,0.039323147,0.037376013,0.035673793,0.03421722,0.033006907,0.032039654,0.03130674,0.03079403,0.030483134,0.03035045,0.030367943,0.03050199,0.030718181,0.030987171,0.03128131,0.031575482,0.03184779,0.032080103,0.032258306,0.03237228,0.032415867,0.35857677,0.31694993,0.030367943,0.6498204,0.17971112,0.11021918,0.036091,0.194078,-0.082472,0.242714 +======= +,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,FOPR,WOPR_OP1_108,WOPR_OP1_144,WOPR_OP1_190,WOPR_OP1_36,WOPR_OP1_72,WOPR_OP1_9,WPR_DIFF_1,WPR_DIFF_1,WPR_DIFF_1,WPR_DIFF_1 +key_index,2010-01-10 00:00:00,2010-01-20 00:00:00,2010-01-30 00:00:00,2010-02-09 00:00:00,2010-02-19 00:00:00,2010-03-01 00:00:00,2010-03-11 00:00:00,2010-03-21 00:00:00,2010-03-31 00:00:00,2010-04-10 00:00:00,2010-04-20 00:00:00,2010-04-30 00:00:00,2010-05-10 00:00:00,2010-05-20 00:00:00,2010-05-30 00:00:00,2010-06-09 00:00:00,2010-06-19 00:00:00,2010-06-29 00:00:00,2010-07-09 00:00:00,2010-07-19 00:00:00,2010-07-29 00:00:00,2010-08-08 00:00:00,2010-08-18 00:00:00,2010-08-28 00:00:00,2010-09-07 00:00:00,2010-09-17 00:00:00,2010-09-27 00:00:00,2010-10-07 00:00:00,2010-10-17 00:00:00,2010-10-27 00:00:00,2010-11-06 00:00:00,2010-11-16 00:00:00,2010-11-26 00:00:00,2010-12-06 00:00:00,2010-12-16 00:00:00,2010-12-26 00:00:00,2011-01-05 00:00:00,2011-01-15 00:00:00,2011-01-25 00:00:00,2011-02-04 00:00:00,2011-02-14 00:00:00,2011-02-24 00:00:00,2011-03-06 00:00:00,2011-03-16 00:00:00,2011-03-26 00:00:00,2011-04-05 00:00:00,2011-04-15 00:00:00,2011-04-25 00:00:00,2011-05-05 00:00:00,2011-05-15 00:00:00,2011-05-25 00:00:00,2011-06-04 00:00:00,2011-06-14 00:00:00,2011-06-24 00:00:00,2011-07-04 00:00:00,2011-07-14 00:00:00,2011-07-24 00:00:00,2011-08-03 00:00:00,2011-08-13 00:00:00,2011-08-23 00:00:00,2011-09-02 00:00:00,2011-09-12 00:00:00,2011-09-22 00:00:00,2011-10-02 00:00:00,2011-10-12 00:00:00,2011-10-22 00:00:00,2011-11-01 00:00:00,2011-11-11 00:00:00,2011-11-21 00:00:00,2011-12-01 00:00:00,2011-12-11 00:00:00,2011-12-21 00:00:00,2011-12-31 00:00:00,2012-01-10 00:00:00,2012-01-20 00:00:00,2012-01-30 00:00:00,2012-02-09 00:00:00,2012-02-19 00:00:00,2012-02-29 00:00:00,2012-03-10 00:00:00,2012-03-20 00:00:00,2012-03-30 00:00:00,2012-04-09 00:00:00,2012-04-19 00:00:00,2012-04-29 00:00:00,2012-05-09 00:00:00,2012-05-19 00:00:00,2012-05-29 00:00:00,2012-06-08 00:00:00,2012-06-18 00:00:00,2012-06-28 00:00:00,2012-07-08 00:00:00,2012-07-18 00:00:00,2012-07-28 00:00:00,2012-08-07 00:00:00,2012-08-17 00:00:00,2012-08-27 00:00:00,2012-09-06 00:00:00,2012-09-16 00:00:00,2012-09-26 00:00:00,2012-10-06 00:00:00,2012-10-16 00:00:00,2012-10-26 00:00:00,2012-11-05 00:00:00,2012-11-15 00:00:00,2012-11-25 00:00:00,2012-12-05 00:00:00,2012-12-15 00:00:00,2012-12-25 00:00:00,2013-01-04 00:00:00,2013-01-14 00:00:00,2013-01-24 00:00:00,2013-02-03 00:00:00,2013-02-13 00:00:00,2013-02-23 00:00:00,2013-03-05 00:00:00,2013-03-15 00:00:00,2013-03-25 00:00:00,2013-04-04 00:00:00,2013-04-14 00:00:00,2013-04-24 00:00:00,2013-05-04 00:00:00,2013-05-14 00:00:00,2013-05-24 00:00:00,2013-06-03 00:00:00,2013-06-13 00:00:00,2013-06-23 00:00:00,2013-07-03 00:00:00,2013-07-13 00:00:00,2013-07-23 00:00:00,2013-08-02 00:00:00,2013-08-12 00:00:00,2013-08-22 00:00:00,2013-09-01 00:00:00,2013-09-11 00:00:00,2013-09-21 00:00:00,2013-10-01 00:00:00,2013-10-11 00:00:00,2013-10-21 00:00:00,2013-10-31 00:00:00,2013-11-10 00:00:00,2013-11-20 00:00:00,2013-11-30 00:00:00,2013-12-10 00:00:00,2013-12-20 00:00:00,2013-12-30 00:00:00,2014-01-09 00:00:00,2014-01-19 00:00:00,2014-01-29 00:00:00,2014-02-08 00:00:00,2014-02-18 00:00:00,2014-02-28 00:00:00,2014-03-10 00:00:00,2014-03-20 00:00:00,2014-03-30 00:00:00,2014-04-09 00:00:00,2014-04-19 00:00:00,2014-04-29 00:00:00,2014-05-09 00:00:00,2014-05-19 00:00:00,2014-05-29 00:00:00,2014-06-08 00:00:00,2014-06-18 00:00:00,2014-06-28 00:00:00,2014-07-08 00:00:00,2014-07-18 00:00:00,2014-07-28 00:00:00,2014-08-07 00:00:00,2014-08-17 00:00:00,2014-08-27 00:00:00,2014-09-06 00:00:00,2014-09-16 00:00:00,2014-09-26 00:00:00,2014-10-06 00:00:00,2014-10-16 00:00:00,2014-10-26 00:00:00,2014-11-05 00:00:00,2014-11-15 00:00:00,2014-11-25 00:00:00,2014-12-05 00:00:00,2014-12-15 00:00:00,2014-12-25 00:00:00,2015-01-04 00:00:00,2015-01-14 00:00:00,2015-01-24 00:00:00,2015-02-03 00:00:00,2015-02-13 00:00:00,2015-02-23 00:00:00,2015-03-05 00:00:00,2015-03-15 00:00:00,2015-03-25 00:00:00,2015-04-04 00:00:00,2015-04-14 00:00:00,2015-04-24 00:00:00,2015-05-04 00:00:00,2015-05-14 00:00:00,2015-05-24 00:00:00,2015-06-03 00:00:00,2015-06-13 00:00:00,2015-06-23 00:00:00,2012-12-15 00:00:00,2013-12-10 00:00:00,2015-03-15 00:00:00,2010-12-26 00:00:00,2011-12-21 00:00:00,2010-03-31 00:00:00,400,800,1200,1800 +data_index,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,107,143,189,35,71,8,400,800,1200,1800 +OBS,0.0016968873,0.0075491448,0.0175372455,0.0315878503,0.0496028177,0.0714679807,0.0970356166,0.1261450499,0.1586153209,0.1942545474,0.2328169495,0.2740467191,0.3176907003,0.3634442389,0.4109863341,0.4600254893,0.5102593303,0.5614363551,0.6133571267,0.6655344367,0.7178515792,0.7704011798,0.8226962686,0.8746448755,0.9261661172,0.9770080447,1.0266836882,1.0750459433,1.1215502024,1.1657692194,1.2075442076,1.2470088005,1.2835049629,1.3167047501,1.3460836411,1.3711466789,1.3915883303,1.4073505402,1.4176363945,1.42223382,1.4235652685,1.4251763821,1.4272525311,1.4300298691,1.4334416389,1.4376937151,1.4429181814,1.4488641024,1.4547947645,1.4603124857,1.4656056166,1.4704256058,1.4741872549,1.4752846956,1.473824501,1.4694164991,1.4611896276,1.4494869709,1.4363856316,1.4213961363,1.4026654959,1.379324317,1.3527154922,1.3241467476,1.2965815067,1.270460844,1.243419528,1.2160032988,1.1891443729,1.1614685059,1.1344152689,1.1116309166,1.0911470652,1.0719004869,1.0527071953,1.0326411724,1.0128751993,0.9945804477,0.9754697084,0.9557305574,0.9363316894,0.9158328176,0.8928252459,0.868698597,0.842330873,0.8124594688,0.7789327502,0.7419267893,0.7024903893,0.6612976193,0.6193501949,0.578230381,0.5396573544,0.5051060915,0.4748952687,0.45020473,0.4314486384,0.4186316133,0.4100414813,0.4057468474,0.4042485952,0.3991520405,0.3887236714,0.3741952777,0.3551763594,0.3317454457,0.3061629534,0.2815148532,0.2636555135,0.2481283844,0.2332668155,0.2185263932,0.2046948969,0.1919501573,0.1797743291,0.168760851,0.1595276147,0.1516698599,0.1456895322,0.1411145777,0.1373078972,0.1336918026,0.130188942,0.1265368164,0.1228304505,0.1192678958,0.1199322119,0.1280807257,0.1359952986,0.1433563381,0.1499062926,0.1549033374,0.159086138,0.1627440304,0.1655506492,0.1669514924,0.1671911031,0.1661362499,0.1649920046,0.164320305,0.1651213914,0.1690141112,0.1759215593,0.1856515557,0.1973567903,0.2105773389,0.224759534,0.2391719967,0.2524295449,0.2640857399,0.2746853232,0.2849123776,0.2945040166,0.3027935326,0.3087558746,0.3120051324,0.3125234246,0.309720248,0.3039141893,0.2956465781,0.2858532071,0.2753968835,0.2641619146,0.2527305484,0.2412025779,0.2295282036,0.21775572,0.2068883926,0.1965159029,0.1868803203,0.1776366085,0.1682787538,0.1587630957,0.1495627314,0.1411967725,0.1335465759,0.1266071498,0.1204990149,0.1153292656,0.1109187081,0.106530644,0.1014854163,0.0956361219,0.0887933001,0.0812306181,0.0733993724,0.0654938817,0.0576713942,0.0503429621,0.0437756702,0.0379344225,0.0329304859,0.0289522409,0.0259741563,0.0237697717,0.0221720021,0.0210337434,0.0202614721,0.0197941773,0.0196175743,0.3,0.2,0.015,0.7,0.5,0.1,0.0,0.1,0.2,0.0 +STD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1026683688,0.1075045943,0.1121550202,0.1165769219,0.1207544208,0.1247008801,0.1283504963,0.131670475,0.1346083641,0.1371146679,0.139158833,0.140735054,0.1417636395,0.142223382,0.1423565269,0.1425176382,0.1427252531,0.1430029869,0.1433441639,0.1437693715,0.1442918181,0.1448864102,0.1454794765,0.1460312486,0.1465605617,0.1470425606,0.1474187255,0.1475284696,0.1473824501,0.1469416499,0.1461189628,0.1449486971,0.1436385632,0.1421396136,0.1402665496,0.1379324317,0.1352715492,0.1324146748,0.1296581507,0.1270460844,0.1243419528,0.1216003299,0.1189144373,0.1161468506,0.1134415269,0.1111630917,0.1091147065,0.1071900487,0.1052707195,0.1032641172,0.1012875199,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.075,0.035,0.01,0.07,0.05,0.05,0.1,0.2,0.15,0.05 +0,0.0559611544,0.0590599105,0.0643376261,0.0717428625,0.0812084153,0.092655994,0.1060009152,0.1211559176,0.1380334496,0.1565460712,0.176556021,0.2009483874,0.2462178469,0.2936668396,0.3425387442,0.3926513493,0.4441823959,0.4966517985,0.5499683022,0.6037714481,0.6578561068,0.7111904621,0.7627429366,0.8122514486,0.859428823,0.9040638208,0.9463410974,0.986210227,1.0224096775,1.0546443462,1.0845394135,1.1104881763,1.1315896511,1.1479130983,1.1595455408,1.1676330566,1.1722285748,1.1743475199,1.1731048822,1.1686681509,1.1611611843,1.15257442,1.1427159309,1.1304982901,1.1179068089,1.1081316471,1.093965888,1.0752445459,1.0542879105,1.0333474874,1.0119364262,0.9916933775,0.9730311632,0.9550253749,0.9345653653,0.9155836105,0.8953654766,0.8732743263,0.8482869864,0.8196418881,0.7878987193,0.7517772317,0.7119350433,0.6717563272,0.6330385804,0.5994275212,0.5638179183,0.5303453207,0.4990736246,0.4738128483,0.4495185912,0.4257318377,0.4019607604,0.3778245449,0.3561695218,0.333820492,0.3128863275,0.2942618132,0.2768097222,0.2524546087,0.2306328267,0.2152853012,0.2033361644,0.1938701272,0.1832569987,0.1716025323,0.1574374139,0.1465218663,0.1305121928,0.1204445288,0.110485889,0.1022446901,0.095710516,0.090763174,0.0872076899,0.0848005265,0.0832802802,0.0823993906,0.0819536522,0.0818061605,0.0830383003,0.0871763602,0.0938313827,0.1023586318,0.1119394526,0.1216664016,0.130636543,0.1380424052,0.1432507634,0.1458611786,0.147187978,0.1492451876,0.1518167108,0.1545982808,0.1572465897,0.1594137549,0.1607818156,0.1610934585,0.1601760238,0.1579564363,0.1550230682,0.152313605,0.1501068175,0.1488043666,0.1488730013,0.1507741362,0.1548961997,0.1614965796,0.1706589013,0.1822691709,0.1943687499,0.2043376863,0.2121737152,0.2180357575,0.2221850604,0.2278409749,0.2312601209,0.2310339659,0.2298966646,0.2282317132,0.2288496047,0.2323354036,0.2407100648,0.2498974949,0.259870708,0.2709311247,0.2825491726,0.295378387,0.3056764603,0.3122561276,0.3177250624,0.3260450065,0.3330646455,0.3378613293,0.3401772678,0.3393363655,0.3351342082,0.3276712,0.3184562027,0.3070579171,0.2937939465,0.2805998921,0.2658464611,0.2500576079,0.2338989824,0.2171536237,0.2064875066,0.1967580169,0.186816141,0.1767863929,0.166967392,0.1577021778,0.1490896493,0.141210407,0.1341284066,0.1278918833,0.1225355193,0.1180830821,0.1145504639,0.1119482741,0.1093004793,0.1052546203,0.1000397056,0.0940267667,0.0876630023,0.081409134,0.0756784156,0.0707871765,0.0669243783,0.0641435385,0.0621890798,0.0607629232,0.0598708689,0.0594729111,0.0594835989,0.05978195,0.06022726,0.0606785752,0.0610149391,0.0611531734,0.1380424052,0.2387853712,0.0641435385,0.6714974046,0.2962648869,0.1380334496,0.047452,0.186768,0.183387,0.206747 +1,0.0159827992,0.0189847797,0.0241106134,0.0313280635,0.0405923389,0.0518447869,0.0650113076,0.0800079778,0.0967428088,0.116666697,0.1547873169,0.1955150515,0.2385824174,0.2837105095,0.3306137919,0.3790050149,0.4285930693,0.4790826142,0.5301654339,0.5815176964,0.6328243017,0.6837797761,0.7340631485,0.783387661,0.8314805031,0.8780428767,0.9227654934,0.9654030204,1.005700469,1.0433998108,1.0782145262,1.1098326445,1.1379904747,1.162473917,1.1830859184,1.1996260881,1.2118992805,1.2197221518,1.2229278088,1.221378684,1.216935277,1.2124816179,1.2080864906,1.2037124634,1.1992862225,1.1947860718,1.1902142763,1.1854646206,1.1803616285,1.1747498512,1.1685671806,1.1618250608,1.1543725729,1.1459240913,1.1362092495,1.1248874664,1.1115686893,1.0958844423,1.077563405,1.056297183,1.0329523087,1.0090575218,0.9846935868,0.9599347711,0.9349110126,0.9096108079,0.8839359879,0.8580445647,0.8321131468,0.8062962294,0.7803827524,0.7539368868,0.7269884944,0.6998342872,0.6727391481,0.6459682584,0.6198227406,0.5945395827,0.5701333284,0.5466149449,0.5241619349,0.5030096173,0.483091861,0.4642410278,0.4463691413,0.4295010269,0.4137351215,0.3993065655,0.3863489032,0.3749893904,0.36516276,0.3567117751,0.3495837748,0.343827188,0.3394446075,0.3363114297,0.3341835141,0.3328339458,0.3321660459,0.3319650292,0.3318219781,0.3313627243,0.3306573331,0.3297367394,0.3287767172,0.327570349,0.3257341087,0.3234176636,0.3206343949,0.3175012469,0.3141641319,0.310667485,0.3068810999,0.3028078377,0.2981817126,0.292963624,0.2872481048,0.2808453441,0.2736074626,0.2654832304,0.2569913864,0.248756811,0.2405483723,0.2321856022,0.2234626114,0.2145440578,0.2057448924,0.1969687045,0.1914897263,0.1869451255,0.1823016703,0.1777462363,0.1735029668,0.1696420312,0.166249454,0.1633484364,0.160881415,0.1588770747,0.1575704217,0.1570591033,0.1567646116,0.1558055282,0.1541944593,0.1519314498,0.1490677595,0.1457849145,0.1422934085,0.1386564821,0.1424351037,0.147064507,0.1514731944,0.1554172486,0.1586218029,0.1608921438,0.1620252281,0.1617590934,0.1599448621,0.1566599607,0.1519542187,0.1459613442,0.1394758523,0.1334103048,0.1276789755,0.1222987697,0.1171929389,0.1122278348,0.1073111519,0.1024002284,0.0974106714,0.0923248678,0.0872180089,0.0821717456,0.0771602243,0.0748082027,0.0727887228,0.0707435757,0.068692416,0.0666555762,0.064624466,0.0625824928,0.0604839437,0.0582571588,0.0559065416,0.0534492694,0.0509343743,0.0483927429,0.0458406433,0.0433243662,0.0408974439,0.0385876596,0.0363934375,0.0343283713,0.032449048,0.0307896566,0.0293813534,0.0282282289,0.0273269191,0.0266798884,0.026284758,0.0261376332,0.1432377547,0.0,0.0,0.5081279874,0.3630423844,0.0,-0.018255,-0.045011,0.003181,-0.063963 +2,0.0,0.0,0.0,0.0009306805,0.0095858565,0.0201084614,0.0324402228,0.0465182699,0.062277738,0.0796373561,0.0984810367,0.1186582148,0.1488896757,0.1966030002,0.2442993075,0.2945767641,0.3453166187,0.3957835436,0.4503062367,0.5048250556,0.5587748885,0.6141867042,0.6681363583,0.721177876,0.7719404697,0.8255054355,0.8687918186,0.9061083794,0.9438246489,0.9824876785,1.0182257891,1.0524622202,1.0842313766,1.1144633293,1.1407458782,1.165063262,1.1853220463,1.1931416988,1.19734478,1.1967073679,1.1917431355,1.184855938,1.186398387,1.1801710129,1.1808456182,1.1644538641,1.1476174593,1.1396906376,1.1310341358,1.1272388697,1.1152210236,1.0937736034,1.0590318441,1.0220450163,0.9824433923,0.9581566453,0.9283046126,0.8893449903,0.8637832999,0.8359286785,0.8034585714,0.8110893369,0.7883930206,0.769569993,0.7365993261,0.6992374659,0.6777465343,0.6741881967,0.6710441113,0.6680765152,0.6647744775,0.6605854034,0.6556973457,0.6500316858,0.6434630752,0.6357719302,0.6268970966,0.617358923,0.6077398062,0.5987376571,0.5895726085,0.578502357,0.5655543208,0.5514233112,0.536195159,0.5202483535,0.5043804049,0.4890173078,0.4747701883,0.4622876048,0.4509552419,0.4394868314,0.4282333255,0.4178283811,0.4085790217,0.4006316662,0.4190254509,0.4380794466,0.4212518632,0.4232972264,0.4041292369,0.3852272928,0.3837123215,0.3816575706,0.3787357211,0.374404639,0.3685901761,0.3616580367,0.3533220887,0.3446039557,0.3364063501,0.3290857375,0.3230304122,0.3181226552,0.3135847449,0.3091912568,0.3050493598,0.3004007936,0.29471609,0.2881713212,0.2816538811,0.2761516869,0.2717742026,0.2684633136,0.2654974163,0.2625136673,0.2592756748,0.2549277842,0.2496585548,0.2432902008,0.2366958112,0.2313782126,0.2272901386,0.2241869122,0.2218572497,0.220020026,0.2184261084,0.2170891464,0.2159260511,0.2153662592,0.2147497833,0.2129328847,0.2105302811,0.207790792,0.2046555132,0.2013500333,0.1979985833,0.1940264702,0.1896376461,0.1848201156,0.1794918329,0.173779875,0.1678656489,0.1613103002,0.1541363448,0.1469727457,0.1403906047,0.1342773736,0.1288569421,0.1241000593,0.1191677079,0.1131889969,0.1066136211,0.0998411253,0.0932284072,0.086768344,0.080384396,0.0743978918,0.068828553,0.0638358295,0.0594506003,0.0555106252,0.0519018173,0.0486070327,0.0455246866,0.0426282138,0.0399481952,0.0374328718,0.0351083316,0.0329660587,0.0307911839,0.0283201355,0.0256299339,0.0227967948,0.019936543,0.017027922,0.0140292058,0.0110874213,0.0082585476,0.0056246156,0.0033161561,0.0014094743,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.3616580367,0.207790792,0.0056246156,0.6489679217,0.6605854034,0.062277738,0.0,0.167201,0.264971,0.229273 +3,0.2839922905,0.2900899053,0.3005134761,0.3152057827,0.3340320289,0.3568198085,0.3834597468,0.4138151407,0.4476653636,0.4847996831,0.5248951912,0.5675287843,0.6124934554,0.6594644189,0.7083309293,0.7591266632,0.8110880852,0.8637502193,0.9169859886,0.9708776474,1.0252817869,1.0793012381,1.1328692436,1.185692668,1.2374732494,1.2876266241,1.3354979753,1.3810325861,1.4239223003,1.4638843536,1.501342535,1.5354032516,1.5647892952,1.5895379782,1.6103185415,1.6276174784,1.6417065859,1.6522436142,1.6595404148,1.6629419327,1.6622159481,1.6604959965,1.6582337618,1.6521093845,1.6410725117,1.6280039549,1.6145401001,1.5991586447,1.5828069448,1.5639278889,1.5427362919,1.5189188719,1.493863821,1.4694625139,1.4498372078,1.4321577549,1.4089341164,1.3835154772,1.3558306694,1.3286929131,1.3047574759,1.284463644,1.2640172243,1.2433749437,1.2219152451,1.199723959,1.1781433821,1.1593405008,1.13922894,1.1183892488,1.0908747911,1.0563869476,1.0184336901,0.9807536602,0.9458610415,0.9133395553,0.8793064356,0.8442026973,0.8080228567,0.7783213854,0.7529441118,0.7308405042,0.7159999609,0.7056357265,0.6951778531,0.6831094623,0.6720735431,0.6578577161,0.6461779475,0.6373482347,0.6276736856,0.6161053777,0.6078271866,0.6010143161,0.5948863626,0.5922757387,0.5962059498,0.6016223431,0.6080636978,0.6132354736,0.6123179793,0.6122469306,0.6102297902,0.6086387634,0.6013227105,0.5878710151,0.5724338889,0.5560264587,0.534170866,0.5133089423,0.4981172085,0.4873057008,0.4790615141,0.4766489863,0.4725334048,0.4662644565,0.4611850679,0.455026418,0.4445648193,0.4335577488,0.4251606166,0.4141146839,0.4056221843,0.3962383568,0.3882877529,0.3828529716,0.3740274012,0.3625959158,0.3537798822,0.3456005156,0.3363794982,0.3286286592,0.3196941912,0.3088420928,0.2979681194,0.2907204628,0.284368664,0.281216532,0.2817122936,0.283308655,0.2853418887,0.2869175673,0.2849505842,0.2814404964,0.2781462967,0.2747631073,0.272282958,0.2727141082,0.2723371089,0.2720319033,0.2734211385,0.2760095894,0.2788455784,0.2836582065,0.2878760695,0.2923819125,0.2984456122,0.3024548888,0.3042229712,0.3058693707,0.3072290123,0.307703346,0.3087846041,0.3096642196,0.3103528023,0.3119439483,0.3126696348,0.3132269979,0.3133700192,0.3134888113,0.3131746054,0.3127416074,0.3114594519,0.3094651103,0.3065339923,0.3032349646,0.3004685938,0.2975768745,0.2943101525,0.2903949916,0.2866013348,0.2836302519,0.2822751999,0.2817083001,0.2817384601,0.2826623619,0.2846493423,0.2868160903,0.289353013,0.2916094363,0.2935966849,0.2952010036,0.2964218557,0.2974214852,0.2982701957,0.2988854945,0.2993037105,0.2995996177,0.2997272909,0.2997667193,0.2820355296,0.1504583657,0.1095473915,0.7725098729,0.5243073702,0.1700630039,-0.120237,-0.098908,-0.004551,0.019996 +4,0.0250965394,0.0282754768,0.0337000489,0.0413312539,0.0511148982,0.0629826039,0.0768529773,0.0926329717,0.1102191806,0.1294992417,0.1503512412,0.1726445556,0.2168806344,0.2665579319,0.3183539212,0.371989131,0.4272031188,0.4835947752,0.5406857729,0.5980349183,0.6550778151,0.7111934423,0.7659917474,0.8190850616,0.8700788021,0.9185891747,0.9642108083,1.0068879128,1.0467756987,1.0840752125,1.1184549332,1.1493537426,1.176677227,1.200351119,1.2203409672,1.2367597818,1.2497233152,1.2590172291,1.2645816803,1.2663131952,1.2647986412,1.2609126568,1.2547250986,1.246130228,1.2350307703,1.2211872339,1.2045375109,1.1851949692,1.1630009413,1.1378574371,1.1104543209,1.0815999508,1.0511288643,1.0198420286,0.987624228,0.9549700022,0.9232159853,0.8924859762,0.8628618121,0.8347347379,0.8083072305,0.7841457129,0.7628934383,0.7445844412,0.7288458943,0.7142981887,0.6996052861,0.6846065521,0.6691861153,0.6542112231,0.6396579742,0.6247348189,0.6098151803,0.595207274,0.5802691579,0.5646029115,0.5484598875,0.5307885408,0.5107890368,0.4885967374,0.4652012587,0.4415909648,0.4182943702,0.395816803,0.3740012348,0.3536297083,0.3361739516,0.3211837411,0.3096402586,0.3015266657,0.2962655127,0.2928557098,0.2909570038,0.2892732322,0.2875249982,0.2860413492,0.2852393687,0.2941271067,0.2997495532,0.3018835187,0.3028077483,0.3059030473,0.3110741973,0.3181146681,0.3267453313,0.3366269767,0.3473751843,0.3585767746,0.3698065281,0.380643338,0.3907493055,0.3998385668,0.4075606763,0.4136056304,0.4177159369,0.4196948111,0.4194119275,0.4168070555,0.4118898213,0.4047372937,0.3965268731,0.3888462186,0.38171345,0.3751241267,0.3690653145,0.3635151684,0.3584473729,0.3538383543,0.3496651649,0.3459064364,0.3425322473,0.3395125568,0.336838901,0.3345080614,0.3325205445,0.3308784962,0.329585135,0.3286457956,0.3280652761,0.3278470635,0.3272450268,0.3251878619,0.321724087,0.3169499338,0.3109956086,0.3040210307,0.2962065637,0.2877401412,0.2788122892,0.2696090043,0.2602944374,0.2510133982,0.2419093847,0.2331041545,0.2246956676,0.2167561203,0.2093328536,0.2024511248,0.1961149126,0.190309301,0.1842098534,0.1767779291,0.1682391167,0.1588429958,0.1488427967,0.138487041,0.1280102134,0.1176237091,0.1075123698,0.0978315026,0.0887045562,0.0802238956,0.0724541992,0.0654345378,0.059183158,0.0537029803,0.0489872508,0.0450249277,0.0418055579,0.0393231474,0.0373760127,0.0356737934,0.0342172198,0.0330069065,0.0320396535,0.0313067399,0.0307940301,0.0304831341,0.0303504504,0.0303679425,0.0305019896,0.0307181813,0.0309871715,0.0312813111,0.0315754823,0.0318477899,0.0320801027,0.0322583057,0.032372281,0.0324158669,0.3585767746,0.3169499338,0.0303679425,0.6498203874,0.1797111183,0.1102191806,0.036091,0.194078,-0.082472,0.242714 +>>>>>>> 329b3249e (Convert ErtConfig to dataclass) diff --git a/tests/ert/unit_tests/data/test_integration_data.py b/tests/ert/unit_tests/data/test_integration_data.py index 37d33b91739..9ef8e96424f 100644 --- a/tests/ert/unit_tests/data/test_integration_data.py +++ b/tests/ert/unit_tests/data/test_integration_data.py @@ -154,7 +154,9 @@ def test_all_measured_snapshot(snapshot, snake_oil_storage, create_measured_data experiment = next(snake_oil_storage.experiments) obs_keys = experiment.observation_keys measured_data = create_measured_data(obs_keys) - snapshot.assert_match(measured_data.data.to_csv(), "snake_oil_measured_output.csv") + snapshot.assert_match( + measured_data.data.round(10).to_csv(), "snake_oil_measured_output.csv" + ) def test_that_measured_data_gives_error_on_missing_response(snake_oil_case_storage): diff --git a/tests/ert/unit_tests/snapshots/test_libres_facade/test_misfit_collector/0/misfit_collector.csv b/tests/ert/unit_tests/snapshots/test_libres_facade/test_misfit_collector/0/misfit_collector.csv index 1bff34c1de8..7239113e0a1 100644 --- a/tests/ert/unit_tests/snapshots/test_libres_facade/test_misfit_collector/0/misfit_collector.csv +++ b/tests/ert/unit_tests/snapshots/test_libres_facade/test_misfit_collector/0/misfit_collector.csv @@ -1,6 +1,14 @@ Realization,MISFIT:FOPR,MISFIT:WOPR_OP1_108,MISFIT:WOPR_OP1_144,MISFIT:WOPR_OP1_190,MISFIT:WOPR_OP1_36,MISFIT:WOPR_OP1_72,MISFIT:WOPR_OP1_9,MISFIT:WPR_DIFF_1,MISFIT:TOTAL +<<<<<<< HEAD 0,1572.4551,4.6631575,1.2280039,24.150873,0.16579537,16.603199,0.5786172,17.52338,1637.3682 1,564.73254,4.3687825,32.65306,2.25,7.5132375,7.502955,4.0,3.917212,626.9378 2,760.21344,0.67585987,0.04954808,0.8789783,0.53148407,10.315068,0.56918764,21.326956,794.56055 3,762.2886,0.057372905,2.0035706,89.3921,1.0729967,0.2363393,1.9635296,4.454344,861.46875 4,978.6854,0.60999763,11.165132,2.3617368,0.51387596,41.033993,0.04177265,27.461798,1061.8737 +======= +0,1572.45515162,4.66315778,1.2280041,24.15087374,0.1657955,16.60319853,0.57861732,17.52338148,1637.36818006 +1,564.73254573,4.3687825,32.65306122,2.25,7.51323862,7.50295539,4.0,3.91721179,626.93779525 +2,760.21348181,0.67586018,0.04954811,0.87897833,0.53148429,10.31506872,0.56918762,21.32695303,794.56056209 +3,762.28864138,0.05737283,2.00357023,89.39209246,1.07299626,0.2363393,1.96352981,4.45434439,861.46888666 +4,978.68545447,0.60999796,11.16513225,2.36173658,0.51387623,41.03398709,0.04177266,27.46179847,1061.8737557 +>>>>>>> 329b3249e (Convert ErtConfig to dataclass) diff --git a/tests/ert/unit_tests/storage/snapshots/test_storage_migration/test_that_storage_matches/parameters b/tests/ert/unit_tests/storage/snapshots/test_storage_migration/test_that_storage_matches/parameters index 11c37522e80..74f07f09cf8 100644 --- a/tests/ert/unit_tests/storage/snapshots/test_storage_migration/test_that_storage_matches/parameters +++ b/tests/ert/unit_tests/storage/snapshots/test_storage_migration/test_that_storage_matches/parameters @@ -1 +1 @@ -{'BPR': GenKwConfig(name='BPR', forward_init=False, update=True, template_file='/home/eivind/Projects/ert/test-data/all_data_types/template.txt', output_file='params.txt', transform_function_definitions=[{'name': 'BPR', 'param_name': 'NORMAL', 'values': ['0', '1']}], forward_init_file=None), 'PORO': Field(name='PORO', forward_init=False, update=True, nx=2, ny=3, nz=4, file_format='grdecl', output_transformation=None, input_transformation=None, truncation_min=None, truncation_max=None, forward_init_file='data/poro%d.grdecl', output_file='poro.grdecl', grid_file='/home/eivind/Projects/ert/test-data/all_data_types/refcase/CASE.EGRID', mask_file=''), 'TOP': SurfaceConfig(name='TOP', forward_init=False, update=True, ncol=2, nrow=3, xori=0.0, yori=0.0, xinc=1.0, yinc=1.0, rotation=0.0, yflip=1, forward_init_file='data/surf%d.irap', output_file='surf.irap', base_surface_path='data/basesurf.irap')} +{'BPR': GenKwConfig(name='BPR', forward_init=False, update=True, template_file='/home/eivind/Projects/ert/test-data/all_data_types/template.txt', output_file='params.txt', transform_function_definitions=[{'name': 'BPR', 'param_name': 'NORMAL', 'values': ['0', '1']}], forward_init_file=None), 'PORO': Field(name='PORO', forward_init=False, update=True, nx=2, ny=3, nz=4, file_format=, output_transformation=None, input_transformation=None, truncation_min=None, truncation_max=None, forward_init_file='data/poro%d.grdecl', output_file=PosixPath('poro.grdecl'), grid_file='/home/eivind/Projects/ert/test-data/all_data_types/refcase/CASE.EGRID', mask_file=''), 'TOP': SurfaceConfig(name='TOP', forward_init=False, update=True, ncol=2, nrow=3, xori=0.0, yori=0.0, xinc=1.0, yinc=1.0, rotation=0.0, yflip=1, forward_init_file='data/surf%d.irap', output_file='surf.irap', base_surface_path='data/basesurf.irap')} diff --git a/tests/ert/unit_tests/test_libres_facade.py b/tests/ert/unit_tests/test_libres_facade.py index be24bc0d8ae..c8991d59046 100644 --- a/tests/ert/unit_tests/test_libres_facade.py +++ b/tests/ert/unit_tests/test_libres_facade.py @@ -129,7 +129,7 @@ def test_summary_collector( def test_misfit_collector(snake_oil_case_storage, snake_oil_default_storage, snapshot): facade = LibresFacade(snake_oil_case_storage) data = facade.load_all_misfit_data(snake_oil_default_storage) - snapshot.assert_match(data.to_csv(), "misfit_collector.csv") + snapshot.assert_match(data.round(8).to_csv(), "misfit_collector.csv") with pytest.raises(KeyError): # realization 60: