diff --git a/src/ert/config/design_matrix.py b/src/ert/config/design_matrix.py index 25c200ba35e..f866766e41c 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 91026bde8e6..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] @@ -152,21 +157,6 @@ def hasNodeGenData(self, key: str) -> bool: config = self.response_configs["gen_data"] return key in config.keys - def addNode(self, config_node: Union[ParameterConfig, ResponseConfig]) -> None: - assert config_node is not None - if config_node.name in self: - raise ConfigValidationError( - f"Config node with key {config_node.name!r} already present in ensemble config" - ) - - if isinstance(config_node, ParameterConfig): - logger.info( - f"Adding {type(config_node).__name__} config (of size {len(config_node)}) to parameter_configs" - ) - self.parameter_configs[config_node.name] = config_node - else: - self.response_configs[config_node.name] = config_node - def get_keylist_gen_kw(self) -> List[str]: return [ val.name diff --git a/src/ert/config/ert_config.py b/src/ert/config/ert_config.py index 4c3241be5cb..61d5032439d 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("substitutions", mode="before") + @classmethod + def convert_to_substitutions(cls, v: Dict[str, str]) -> Substitutions: + if isinstance(v, Substitutions): + return v + return Substitutions(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..04a353e2a7b 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_substitutions(cls, v: Dict[str, str]) -> Substitutions: + if isinstance(v, Substitutions): + return v + return Substitutions(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 dd204b45e81..b89d1f2fbc2 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/src/everest/simulator/everest_to_ert.py b/src/everest/simulator/everest_to_ert.py index 8916f481489..5151172d3c2 100644 --- a/src/everest/simulator/everest_to_ert.py +++ b/src/everest/simulator/everest_to_ert.py @@ -538,12 +538,10 @@ def _get_variables( # configuration key. When initializing an ERT config object, it is ignored. # It is used by the Simulator object to inject ExtParamConfig nodes. for control in ever_config.controls or []: - ens_config.addNode( - ExtParamConfig( - name=control.name, - input_keys=_get_variables(control.variables), - output_file=control.name + ".json", - ) + ens_config.parameter_configs[control.name] = ExtParamConfig( + name=control.name, + input_keys=_get_variables(control.variables), + output_file=control.name + ".json", ) return ert_config 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 9accd20c4a8..0e95a057738 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 @@ -456,6 +456,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) @@ -1378,7 +1397,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") @@ -1419,7 +1438,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..9cbfdf28683 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,9 +1,9 @@ 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 -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.10266837,0.1075046,0.11215502,0.116576925,0.12075442,0.12470088,0.1283505,0.13167048,0.13460837,0.13711467,0.13915883,0.14073506,0.14176364,0.14222339,0.14235653,0.14251764,0.14272526,0.14300299,0.14334416,0.14376937,0.14429182,0.14488642,0.14547949,0.14603125,0.14656056,0.14704256,0.14741872,0.14752847,0.14738245,0.14694165,0.14611897,0.1449487,0.14363857,0.14213961,0.14026655,0.13793243,0.13527155,0.13241468,0.12965815,0.1270461,0.12434196,0.12160033,0.11891444,0.116146855,0.11344153,0.111163095,0.10911471,0.10719005,0.10527072,0.103264116,0.10128752,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.055961154,0.05905991,0.064337626,0.07174286,0.081208415,0.092655994,0.106000915,0.12115592,0.13803345,0.15654607,0.17655602,0.20094839,0.24621785,0.29366684,0.34253874,0.39265135,0.4441824,0.4966518,0.5499683,0.60377145,0.6578561,0.71119046,0.76274294,0.81225145,0.8594288,0.9040638,0.9463411,0.9862102,1.0224097,1.0546443,1.0845394,1.1104882,1.1315897,1.1479131,1.1595455,1.167633,1.1722286,1.1743475,1.1731049,1.1686682,1.1611612,1.1525744,1.1427159,1.1304983,1.1179068,1.1081316,1.0939659,1.0752445,1.0542879,1.0333475,1.0119364,0.9916934,0.97303116,0.9550254,0.93456537,0.9155836,0.8953655,0.8732743,0.848287,0.8196419,0.7878987,0.75177723,0.71193504,0.6717563,0.6330386,0.5994275,0.5638179,0.5303453,0.49907362,0.47381285,0.4495186,0.42573184,0.40196076,0.37782454,0.35616952,0.3338205,0.31288633,0.2942618,0.27680972,0.2524546,0.23063283,0.2152853,0.20333616,0.19387013,0.183257,0.17160253,0.15743741,0.14652187,0.1305122,0.12044453,0.11048589,0.10224469,0.095710516,0.090763174,0.08720769,0.08480053,0.08328028,0.08239939,0.08195365,0.08180616,0.0830383,0.08717636,0.09383138,0.10235863,0.11193945,0.1216664,0.13063654,0.1380424,0.14325076,0.14586118,0.14718798,0.14924519,0.15181671,0.15459828,0.15724659,0.15941375,0.16078182,0.16109346,0.16017602,0.15795644,0.15502307,0.1523136,0.15010682,0.14880437,0.148873,0.15077414,0.1548962,0.16149658,0.1706589,0.18226917,0.19436875,0.20433769,0.21217372,0.21803576,0.22218506,0.22784097,0.23126012,0.23103397,0.22989666,0.22823171,0.2288496,0.2323354,0.24071006,0.2498975,0.2598707,0.27093112,0.28254917,0.2953784,0.30567646,0.31225613,0.31772506,0.326045,0.33306465,0.33786133,0.34017727,0.33933637,0.3351342,0.3276712,0.3184562,0.30705792,0.29379395,0.2805999,0.26584646,0.2500576,0.23389898,0.21715362,0.2064875,0.19675802,0.18681614,0.1767864,0.16696739,0.15770218,0.14908965,0.1412104,0.1341284,0.12789188,0.12253552,0.11808308,0.114550464,0.111948274,0.10930048,0.10525462,0.100039706,0.09402677,0.087663,0.081409134,0.075678416,0.07078718,0.06692438,0.06414354,0.06218908,0.060762923,0.05987087,0.05947291,0.0594836,0.05978195,0.06022726,0.060678575,0.06101494,0.061153173,0.1380424,0.23878537,0.06414354,0.6714974,0.2962649,0.13803345,0.047452,0.186768,0.183387,0.206747 -1,0.0159828,0.01898478,0.024110613,0.031328063,0.04059234,0.051844787,0.06501131,0.08000798,0.09674281,0.1166667,0.15478732,0.19551505,0.23858242,0.2837105,0.3306138,0.379005,0.42859307,0.4790826,0.53016543,0.5815177,0.6328243,0.6837798,0.73406315,0.78338766,0.8314805,0.8780429,0.9227655,0.965403,1.0057005,1.0433998,1.0782145,1.1098326,1.1379905,1.1624739,1.1830859,1.1996261,1.2118993,1.2197222,1.2229278,1.2213787,1.2169353,1.2124816,1.2080865,1.2037125,1.1992862,1.1947861,1.1902143,1.1854646,1.1803616,1.1747499,1.1685672,1.1618251,1.1543726,1.1459241,1.1362092,1.1248875,1.1115687,1.0958844,1.0775634,1.0562972,1.0329523,1.0090575,0.9846936,0.9599348,0.934911,0.9096108,0.883936,0.85804456,0.83211315,0.8062962,0.78038275,0.7539369,0.7269885,0.6998343,0.67273915,0.64596826,0.61982274,0.5945396,0.5701333,0.54661494,0.52416193,0.5030096,0.48309186,0.46424103,0.44636914,0.42950103,0.41373512,0.39930657,0.3863489,0.3749894,0.36516276,0.35671178,0.34958377,0.3438272,0.3394446,0.33631143,0.3341835,0.33283395,0.33216605,0.33196503,0.33182198,0.33136272,0.33065733,0.32973674,0.32877672,0.32757035,0.3257341,0.32341766,0.3206344,0.31750125,0.31416413,0.31066748,0.3068811,0.30280784,0.2981817,0.29296362,0.2872481,0.28084534,0.27360746,0.26548323,0.2569914,0.24875681,0.24054837,0.2321856,0.22346261,0.21454406,0.20574489,0.1969687,0.19148973,0.18694513,0.18230167,0.17774624,0.17350297,0.16964203,0.16624945,0.16334844,0.16088142,0.15887707,0.15757042,0.1570591,0.15676461,0.15580553,0.15419446,0.15193145,0.14906776,0.14578491,0.14229341,0.13865648,0.1424351,0.1470645,0.1514732,0.15541725,0.1586218,0.16089214,0.16202523,0.1617591,0.15994486,0.15665996,0.15195422,0.14596134,0.13947585,0.1334103,0.12767898,0.12229877,0.11719294,0.112227835,0.10731115,0.10240023,0.09741067,0.09232487,0.08721801,0.082171746,0.077160224,0.0748082,0.07278872,0.070743576,0.068692416,0.066655576,0.064624466,0.06258249,0.060483944,0.05825716,0.05590654,0.05344927,0.050934374,0.048392743,0.045840643,0.043324366,0.040897444,0.03858766,0.036393438,0.03432837,0.032449048,0.030789657,0.029381353,0.028228229,0.02732692,0.026679888,0.026284758,0.026137633,0.14323775,0.0,0.0,0.508128,0.36304238,0.0,-0.018255,-0.045011,0.003181,-0.063963 -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 +OBS,0.0016968874,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.9945805,0.97546965,0.95573056,0.9363317,0.9158328,0.8928253,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.11926789,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.22475952,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.2412026,0.22952819,0.21775572,0.2068884,0.1965159,0.18688032,0.17763661,0.16827875,0.1587631,0.14956273,0.14119677,0.13354658,0.12660715,0.12049902,0.115329266,0.11091871,0.106530644,0.10148542,0.09563612,0.0887933,0.08123062,0.07339937,0.06549388,0.05767139,0.050342962,0.04377567,0.037934422,0.032930486,0.02895224,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 +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.10266837,0.10750459,0.11215502,0.116576925,0.12075442,0.124700874,0.1283505,0.13167048,0.13460836,0.13711467,0.13915883,0.14073506,0.14176364,0.14222339,0.14235653,0.14251764,0.14272526,0.14300299,0.14334416,0.14376937,0.14429182,0.1448864,0.14547947,0.14603125,0.14656056,0.14704256,0.14741872,0.14752847,0.14738245,0.14694165,0.14611897,0.14494869,0.14363857,0.14213961,0.14026655,0.13793243,0.13527155,0.13241467,0.12965815,0.12704608,0.12434195,0.12160033,0.11891445,0.11614684,0.11344153,0.111163095,0.1091147,0.10719005,0.10527072,0.103264116,0.10128752,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.05596115,0.05905991,0.064337626,0.07174286,0.081208415,0.092655994,0.106000915,0.12115592,0.13803345,0.15654607,0.17655602,0.20094839,0.24621786,0.29366684,0.34253874,0.39265135,0.44418237,0.49665177,0.5499683,0.60377145,0.6578561,0.71119046,0.76274294,0.81225145,0.8594289,0.9040638,0.9463411,0.9862102,1.0224097,1.0546443,1.0845394,1.1104882,1.1315897,1.1479131,1.1595455,1.167633,1.1722286,1.1743475,1.1731049,1.1686682,1.1611612,1.1525744,1.1427159,1.1304983,1.1179068,1.1081316,1.0939659,1.0752445,1.0542879,1.0333475,1.0119364,0.99169344,0.9730311,0.95502543,0.93456537,0.9155836,0.8953654,0.8732744,0.848287,0.8196419,0.7878987,0.75177723,0.71193504,0.6717563,0.6330386,0.5994275,0.5638179,0.5303453,0.49907362,0.47381285,0.4495186,0.42573184,0.40196076,0.37782454,0.35616952,0.3338205,0.31288633,0.2942618,0.27680972,0.2524546,0.23063283,0.2152853,0.20333616,0.19387013,0.183257,0.17160253,0.15743741,0.14652187,0.1305122,0.12044453,0.11048589,0.10224469,0.095710516,0.090763174,0.08720769,0.08480053,0.08328028,0.08239939,0.08195365,0.08180616,0.0830383,0.08717636,0.09383138,0.10235863,0.11193945,0.12166641,0.13063654,0.1380424,0.14325076,0.14586118,0.14718798,0.14924519,0.15181671,0.15459828,0.15724659,0.15941375,0.16078182,0.16109346,0.16017602,0.15795644,0.15502307,0.1523136,0.15010682,0.14880437,0.148873,0.15077414,0.1548962,0.16149658,0.1706589,0.18226917,0.19436875,0.20433769,0.21217372,0.21803576,0.22218506,0.22784097,0.2312601,0.23103395,0.22989665,0.2282317,0.22884962,0.23233542,0.24071006,0.2498975,0.2598707,0.27093112,0.28254917,0.2953784,0.30567646,0.31225613,0.31772506,0.326045,0.33306465,0.33786133,0.34017727,0.33933637,0.3351342,0.3276712,0.3184562,0.30705792,0.29379395,0.2805999,0.26584646,0.2500576,0.23389898,0.21715361,0.2064875,0.19675802,0.18681614,0.1767864,0.16696739,0.15770218,0.14908965,0.1412104,0.1341284,0.12789188,0.12253551,0.11808308,0.114550464,0.111948274,0.10930048,0.10525462,0.100039706,0.09402677,0.087663,0.081409134,0.075678416,0.07078718,0.06692438,0.06414354,0.06218908,0.060762923,0.05987087,0.059472907,0.059483595,0.059781954,0.060227256,0.06067857,0.06101494,0.06115317,0.1380424,0.23878539,0.06414354,0.6714974,0.2962649,0.13803345,0.047452,0.186768,0.183387,0.206747 +1,0.0159828,0.01898478,0.024110613,0.031328063,0.04059234,0.051844787,0.06501131,0.08000798,0.09674281,0.116666704,0.15478732,0.19551505,0.23858243,0.2837105,0.3306138,0.379005,0.42859307,0.47908258,0.53016543,0.5815177,0.6328243,0.6837798,0.73406315,0.78338766,0.8314805,0.8780428,0.9227655,0.965403,1.0057005,1.0433998,1.0782145,1.1098326,1.1379905,1.1624739,1.1830859,1.1996261,1.2118993,1.2197222,1.2229278,1.2213787,1.2169353,1.2124816,1.2080865,1.2037125,1.1992862,1.1947861,1.1902143,1.1854646,1.1803616,1.1747499,1.1685672,1.1618251,1.1543726,1.1459241,1.1362092,1.1248875,1.1115687,1.0958844,1.0775634,1.0562972,1.0329523,1.0090575,0.9846935,0.9599348,0.93491095,0.9096108,0.8839359,0.85804456,0.83211315,0.8062962,0.78038275,0.7539369,0.7269885,0.6998343,0.67273915,0.64596826,0.61982274,0.5945396,0.5701333,0.54661494,0.52416193,0.5030096,0.48309186,0.46424106,0.4463691,0.42950103,0.41373512,0.39930657,0.3863489,0.3749894,0.36516276,0.35671178,0.34958377,0.3438272,0.3394446,0.33631143,0.3341835,0.33283395,0.33216605,0.33196503,0.33182198,0.33136272,0.33065733,0.32973674,0.32877672,0.32757035,0.3257341,0.32341766,0.3206344,0.31750125,0.31416413,0.31066748,0.3068811,0.30280784,0.2981817,0.29296362,0.2872481,0.28084534,0.27360746,0.26548323,0.2569914,0.24875681,0.24054837,0.2321856,0.22346261,0.21454406,0.20574489,0.1969687,0.19148973,0.18694513,0.18230167,0.17774624,0.17350297,0.16964203,0.16624945,0.16334844,0.16088142,0.15887707,0.15757042,0.1570591,0.15676461,0.15580553,0.15419446,0.15193145,0.14906776,0.14578491,0.14229341,0.13865648,0.1424351,0.1470645,0.1514732,0.15541725,0.1586218,0.16089214,0.16202523,0.1617591,0.15994486,0.15665996,0.15195422,0.14596134,0.13947585,0.1334103,0.12767898,0.12229876,0.11719293,0.11222784,0.10731115,0.10240023,0.09741067,0.09232487,0.08721801,0.082171746,0.077160224,0.0748082,0.07278872,0.070743576,0.068692416,0.066655576,0.064624466,0.06258249,0.060483944,0.05825716,0.05590654,0.05344927,0.050934374,0.048392743,0.045840643,0.043324366,0.040897444,0.03858766,0.036393438,0.03432837,0.032449048,0.030789658,0.029381353,0.02822823,0.02732692,0.026679888,0.026284758,0.026137633,0.14323775,0.0,0.0,0.508128,0.36304238,0.0,-0.018255,-0.045011,0.003181,-0.063963 +2,0.0,0.0,0.0,0.0009306805,0.009585856,0.020108461,0.032440223,0.04651827,0.06227774,0.079637356,0.09848104,0.118658215,0.14888968,0.196603,0.24429932,0.29457676,0.34531662,0.39578354,0.45030627,0.50482506,0.5587749,0.6141867,0.66813636,0.7211779,0.77194047,0.82550544,0.8687918,0.90610844,0.9438247,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.9581566,0.9283046,0.88934505,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.48901728,0.4747702,0.4622876,0.45095527,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.24965854,0.24329019,0.23669581,0.2313782,0.22729014,0.22418691,0.22185725,0.22002003,0.21842611,0.21708915,0.21592604,0.21536627,0.21474977,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.11318899,0.10661362,0.099841125,0.09322841,0.086768344,0.080384396,0.07439789,0.06882855,0.06383583,0.059450597,0.055510625,0.051901817,0.048607033,0.045524687,0.042628214,0.039948195,0.03743287,0.03510833,0.03296606,0.030791184,0.028320134,0.025629934,0.022796795,0.019936543,0.017027922,0.014029207,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.06227774,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.9169859,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.9807536,0.94586104,0.9133396,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.48730567,0.4790615,0.47664902,0.4725334,0.4662645,0.46118507,0.45502642,0.44456485,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.12023701,-0.098908,-0.004551,0.019996 +4,0.02509654,0.028275475,0.03370005,0.041331254,0.0511149,0.062982604,0.07685298,0.09263297,0.11021917,0.12949924,0.15035124,0.17264456,0.21688063,0.26655793,0.31835392,0.37198913,0.42720312,0.48359475,0.5406858,0.5980349,0.6550778,0.71119344,0.76599175,0.81908506,0.87007874,0.9185891,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.8924859,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.441591,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.24190937,0.23310415,0.22469568,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.059183154,0.053702984,0.04898725,0.045024928,0.041805558,0.039323147,0.037376013,0.035673793,0.03421722,0.033006907,0.032039654,0.03130674,0.030794028,0.030483132,0.03035045,0.030367943,0.03050199,0.030718183,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.11021917,0.036091,0.194078,-0.082472,0.242714 diff --git a/tests/ert/unit_tests/data/test_integration_data.py b/tests/ert/unit_tests/data/test_integration_data.py index ee84dabbf34..a95fb17b358 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/simulator/test_batch_sim.py b/tests/ert/unit_tests/simulator/test_batch_sim.py index 461ae965547..a24b3be6d8f 100644 --- a/tests/ert/unit_tests/simulator/test_batch_sim.py +++ b/tests/ert/unit_tests/simulator/test_batch_sim.py @@ -49,21 +49,17 @@ def __init__(self, ert_config, storage, controls, results, callback=None): try: ens_config = ert_config.ensemble_config for control_name, variables in controls.items(): - ens_config.addNode( - ExtParamConfig( - name=control_name, - input_keys=variables, - output_file=control_name + ".json", - ) + ens_config.parameter_configs[control_name] = ExtParamConfig( + name=control_name, + input_keys=variables, + output_file=control_name + ".json", ) if "gen_data" not in ens_config: - ens_config.addNode( - GenDataConfig( - keys=results, - input_files=[f"{k}" for k in results], - report_steps_list=[None for _ in results], - ) + ens_config.response_configs["gen_data"] = GenDataConfig( + keys=results, + input_files=[f"{k}" for k in results], + report_steps_list=[None for _ in results], ) else: existing_gendata = ens_config.response_configs["gen_data"] 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..04935eac725 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,6 @@ 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 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 +1,564.73254,4.3687825,32.65306,2.25,7.513238,7.502955,4.0,3.9172122,626.9378 +2,760.21344,0.67585987,0.04954808,0.8789783,0.53148407,10.315068,0.56918764,21.326956,794.5605 +3,762.2885,0.0573729,2.0035706,89.3921,1.0729967,0.2363393,1.9635296,4.454344,861.46875 +4,978.6855,0.60999763,11.165132,2.3617368,0.51387596,41.033993,0.04177265,27.461798,1061.8737 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 3cc2787777a..bcc3efa098a 100644 --- a/tests/ert/unit_tests/test_libres_facade.py +++ b/tests/ert/unit_tests/test_libres_facade.py @@ -139,7 +139,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: