def __init__( self, app, webviz_settings: WebvizSettings, ensembles: list = None, parameter_csv: Path = None, response_csv: Path = None, response_file: str = None, response_filters: dict = None, response_ignore: list = None, response_include: list = None, parameter_ignore: list = None, column_keys: list = None, sampling: str = "monthly", aggregation: str = "sum", no_responses=False, ): super().__init__() self.parameter_csv = parameter_csv if parameter_csv else None self.response_csv = response_csv if response_csv else None self.response_file = response_file if response_file else None self.response_filters = response_filters if response_filters else {} self.column_keys = column_keys self.time_index = sampling self.aggregation = aggregation self.no_responses = no_responses self.response_columns = [] if response_ignore and response_include: raise ValueError( 'Incorrent argument. Either provide "response_include", ' '"response_ignore" or neither') if parameter_csv: if ensembles or response_file: raise ValueError( 'Incorrect arguments. Either provide "parameter_csv" or ' '"ensembles and/or response_file".') if not self.no_responses: if self.response_csv: self.responsedf = read_csv(self.response_csv) else: raise ValueError( "Incorrect arguments. Missing response_csv.") self.parameterdf = read_csv(self.parameter_csv) elif ensembles: if self.response_csv: raise ValueError( 'Incorrect arguments. Either provide "response_csv" or ' '"ensembles and/or response_file".') self.emodel: EnsembleSetModel = ( caching_ensemble_set_model_factory.get_or_create_model( ensemble_paths={ ens: webviz_settings.shared_settings["scratch_ensembles"] [ens] for ens in ensembles }, time_index=self.time_index, column_keys=self.column_keys, )) self.parameterdf = self.emodel.load_parameters() if not self.no_responses: if self.response_file: self.responsedf = self.emodel.load_csv( csv_file=response_file) else: self.responsedf = self.emodel.get_or_load_smry_cached() self.response_filters["DATE"] = "single" else: raise ValueError( "Incorrect arguments." 'You have to define at least "ensembles" or "parameter_csv".') if not self.no_responses: parresp.check_runs(parameterdf=self.parameterdf, responsedf=self.responsedf) parresp.check_response_filters( responsedf=self.responsedf, response_filters=self.response_filters) # only select numerical responses self.response_columns = parresp.filter_numerical_columns( df=self.responsedf, column_ignore=response_ignore, column_include=response_include, filter_columns=self.response_filters.keys(), ) # Only select numerical parameters self.parameter_columns = parresp.filter_numerical_columns( df=self.parameterdf, column_ignore=parameter_ignore) self.theme = webviz_settings.theme self.set_callbacks(app)
def __init__( self, app, webviz_settings: WebvizSettings, parameter_csv: Path = None, response_csv: Path = None, ensembles: list = None, response_file: str = None, response_filters: dict = None, response_ignore: list = None, response_include: list = None, column_keys: list = None, sampling: str = "monthly", aggregation: str = "sum", corr_method: str = "pearson", ): super().__init__() self.parameter_csv = parameter_csv if parameter_csv else None self.response_csv = response_csv if response_csv else None self.response_file = response_file if response_file else None self.response_filters = response_filters if response_filters else {} self.column_keys = column_keys self.time_index = sampling self.corr_method = corr_method self.aggregation = aggregation if response_ignore and response_include: raise ValueError( 'Incorrent argument. either provide "response_include", ' '"response_ignore" or neither') if parameter_csv and response_csv: if ensembles or response_file: raise ValueError( 'Incorrect arguments. Either provide "csv files" or ' '"ensembles and response_file".') self.parameterdf = read_csv(self.parameter_csv) self.responsedf = read_csv(self.response_csv) elif ensembles: self.ens_paths = { ens: webviz_settings.shared_settings["scratch_ensembles"][ens] for ens in ensembles } self.parameterdf = load_parameters(ensemble_paths=self.ens_paths, ensemble_set_name="EnsembleSet") if self.response_file: self.responsedf = load_csv( ensemble_paths=self.ens_paths, csv_file=response_file, ensemble_set_name="EnsembleSet", ) else: self.emodel: EnsembleSetModel = ( caching_ensemble_set_model_factory.get_or_create_model( ensemble_paths=self.ens_paths, column_keys=self.column_keys, time_index=self.time_index, )) self.responsedf = self.emodel.get_or_load_smry_cached() self.response_filters["DATE"] = "single" else: raise ValueError( 'Incorrect arguments. Either provide "csv files" or "ensembles and response_file".' ) parresp.check_runs(self.parameterdf, self.responsedf) parresp.check_response_filters(self.responsedf, self.response_filters) # Only select numerical responses self.response_columns = parresp.filter_numerical_columns( df=self.responsedf, column_ignore=response_ignore, column_include=response_include, filter_columns=self.response_filters.keys(), ) # Only select numerical parameters self.parameter_columns = parresp.filter_numerical_columns( df=self.parameterdf) self.theme = webviz_settings.theme self.set_callbacks(app)
def __init__( self, app, webviz_settings: WebvizSettings, parameter_csv: Path = None, response_csv: Path = None, ensembles: list = None, rel_file_pattern: str = "share/results/unsmry/*.arrow", response_file: str = None, response_filters: dict = None, response_ignore: list = None, response_include: list = None, column_keys: list = None, sampling: str = "monthly", aggregation: str = "sum", corr_method: str = "pearson", ): super().__init__() self.parameter_csv = parameter_csv if parameter_csv else None self.response_csv = response_csv if response_csv else None self.response_file = response_file if response_file else None self.response_filters = response_filters if response_filters else {} self.column_keys = column_keys self._sampling = Frequency(sampling) self.corr_method = corr_method self.aggregation = aggregation if response_ignore and response_include: raise ValueError( 'Incorrent argument. either provide "response_include", ' '"response_ignore" or neither') if parameter_csv and response_csv: if ensembles or response_file: raise ValueError( 'Incorrect arguments. Either provide "csv files" or ' '"ensembles and response_file".') parameterdf = read_csv(self.parameter_csv) self.responsedf = read_csv(self.response_csv) elif ensembles: self.ens_paths = { ens: webviz_settings.shared_settings["scratch_ensembles"][ens] for ens in ensembles } table_provider_factory = EnsembleTableProviderFactory.instance() parameterdf = create_df_from_table_provider( table_provider_factory. create_provider_set_from_per_realization_parameter_file( self.ens_paths)) if self.response_file: self.responsedf = load_csv( ensemble_paths=self.ens_paths, csv_file=response_file, ensemble_set_name="EnsembleSet", ) else: smry_provider_factory = EnsembleSummaryProviderFactory.instance( ) provider_set = { ens_name: smry_provider_factory.create_from_arrow_unsmry_presampled( ens_path, rel_file_pattern, self._sampling) for ens_name, ens_path in self.ens_paths.items() } self.response_filters["DATE"] = "single" self.responsedf = create_df_from_summary_provider( provider_set, self.column_keys, ) else: raise ValueError( 'Incorrect arguments. Either provide "csv files" or "ensembles and response_file".' ) pmodel = ParametersModel(dataframe=parameterdf, keep_numeric_only=True, drop_constants=True) self.parameterdf = pmodel.dataframe self.parameter_columns = pmodel.parameters parresp.check_runs(self.parameterdf, self.responsedf) parresp.check_response_filters(self.responsedf, self.response_filters) # Only select numerical responses self.response_columns = parresp.filter_numerical_columns( df=self.responsedf, column_ignore=response_ignore, column_include=response_include, filter_columns=self.response_filters.keys(), ) self.theme = webviz_settings.theme self.set_callbacks(app)