示例#1
0
    def fetchData(self, key, case=None):
        key, keyword = key.split(":")
        ensemble_config_node = self.getEnsembleConfigNode(key)
        enkf_fs = self.ert().getEnkfFsManager().getFileSystem(case)
        ensemble_plot_gen_kw = EnsemblePlotGenKW(ensemble_config_node, enkf_fs)
        keyword_index = ensemble_plot_gen_kw.getIndexForKeyword(keyword)

        use_log_scale = ensemble_plot_gen_kw.shouldUseLogScale(keyword_index)

        data = {"x": [0], "y": [], "min_y": None, "max_y": None, "min_x": 0, "max_x": 0, "use_log_scale": use_log_scale}

        for vector in ensemble_plot_gen_kw:
            y = []
            data["y"].append(y)

            if len(vector) > keyword_index:
                value = vector.getValue(keyword_index)
                y.append(value)

                if data["min_y"] is None or data["min_y"] > value:
                    data["min_y"] = value

                if data["max_y"] is None or data["max_y"] < value:
                    data["max_y"] = value

        return data
示例#2
0
    def loadAllGenKwData(ert, case_name, keys=None):
        """
        @type ert: EnKFMain
        @type case_name: str
        @type keys: list of str
        @rtype: DataFrame
        """
        fs = ert.getEnkfFsManager().getFileSystem(case_name)

        realizations = GenKwCollector.createActiveList(ert, fs)

        gen_kw_keys = GenKwCollector.getAllGenKwKeys(ert)

        if keys is not None:
            gen_kw_keys = [key for key in keys if key in gen_kw_keys
                           ]  # ignore keys that doesn't exist

        gen_kw_array = numpy.empty(shape=(len(gen_kw_keys), len(realizations)),
                                   dtype=numpy.float64)
        gen_kw_array.fill(numpy.nan)

        for column_index, key in enumerate(gen_kw_keys):
            key, keyword = key.split(":")

            use_log_scale = False
            if key.startswith("LOG10_"):
                key = key[6:]
                use_log_scale = True

            ensemble_config_node = ert.ensembleConfig().getNode(key)
            ensemble_data = EnsemblePlotGenKW(ensemble_config_node, fs)
            keyword_index = ensemble_data.getIndexForKeyword(keyword)

            for realization_index, realization_number in enumerate(
                    realizations):
                realization_vector = ensemble_data[realization_number]

                value = realization_vector[keyword_index]

                if use_log_scale:
                    value = math.log10(value)

                gen_kw_array[column_index][realization_index] = value

        gen_kw_data = DataFrame(data=numpy.transpose(gen_kw_array),
                                index=realizations,
                                columns=gen_kw_keys)
        gen_kw_data.index.name = "Realization"

        return gen_kw_data
class EnsembleGenKWFetcher(DataFetcher):
    def __init__(self, ert):
        super(EnsembleGenKWFetcher, self).__init__(ert)

    def fetchSupportedKeys(self):
        gen_kw_keys = self.ert().ensembleConfig().getKeylistFromImplType(
            ErtImplType.GEN_KW)
        gen_kw_list = []
        for key in gen_kw_keys:
            enkf_config_node = self.ert().ensembleConfig().getNode(key)
            model_config = enkf_config_node.getModelConfig()
            assert isinstance(model_config, GenKwConfig)

            model_keys = model_config.getKeyWords()
            for key_word in model_keys:
                gen_kw_list.append("%s:%s" % (key, key_word))

        return gen_kw_list

    def getEnsembleConfigNode(self, key):
        """ @rtype: EnsembleConfig """
        ensemble_config = self.ert().ensembleConfig()
        assert key in ensemble_config
        return ensemble_config.getNode(key)

    def fetchData(self, key, case=None):
        key, keyword = key.split(":")
        ensemble_config_node = self.getEnsembleConfigNode(key)
        enkf_fs = self.ert().getEnkfFsManager().getFileSystem(case)
        ensemble_plot_gen_kw = EnsemblePlotGenKW(ensemble_config_node, enkf_fs)
        keyword_index = ensemble_plot_gen_kw.getIndexForKeyword(keyword)

        use_log_scale = ensemble_plot_gen_kw.shouldUseLogScale(keyword_index)

        data = {
            "x": [0],
            "y": [],
            "min_y": None,
            "max_y": None,
            "min_x": 0,
            "max_x": 0,
            "use_log_scale": use_log_scale
        }

        for vector in ensemble_plot_gen_kw:
            y = []
            data["y"].append(y)

            if len(vector) > keyword_index:
                value = vector.getValue(keyword_index)
                y.append(value)

                if data["min_y"] is None or data["min_y"] > value:
                    data["min_y"] = value

                if data["max_y"] is None or data["max_y"] < value:
                    data["max_y"] = value

        return data
示例#4
0
    def loadAllGenKwData(ert, case_name, keys=None):
        """
        @type ert: EnKFMain
        @type case_name: str
        @type keys: list of str
        @rtype: DataFrame
        """
        fs = ert.getEnkfFsManager().getFileSystem(case_name)

        realizations = GenKwCollector.createActiveList(ert, fs)

        gen_kw_keys = GenKwCollector.getAllGenKwKeys(ert)

        if keys is not None:
            gen_kw_keys = [key for key in keys if key in gen_kw_keys] # ignore keys that doesn't exist

        gen_kw_array = numpy.empty(shape=(len(gen_kw_keys), len(realizations)), dtype=numpy.float64)
        gen_kw_array.fill(numpy.nan)

        for column_index, key in enumerate(gen_kw_keys):
            key, keyword = key.split(":")

            use_log_scale = False
            if key.startswith("LOG10_"):
                key = key[6:]
                use_log_scale = True

            ensemble_config_node = ert.ensembleConfig().getNode(key)
            ensemble_data = EnsemblePlotGenKW(ensemble_config_node, fs)
            keyword_index = ensemble_data.getIndexForKeyword(keyword)

            for realization_index, realization_number in enumerate(realizations):
                realization_vector = ensemble_data[realization_number]

                value = realization_vector[keyword_index]

                if use_log_scale:
                    value = math.log10(value)

                gen_kw_array[column_index][realization_index] = value

        gen_kw_data = DataFrame(data=numpy.transpose(gen_kw_array), index=realizations, columns=gen_kw_keys)
        gen_kw_data.index.name = "Realization"

        return gen_kw_data