Exemple #1
0
    def loadAllGenKwData(ert: EnKFMain, case_name, keys=None, realization_index=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)

        if realization_index is not None:
            if realization_index not in realizations:
                raise IndexError(f"No such realization ({realization_index})")
            realizations = [realization_index]

        gen_kw_keys = ert.getKeyManager().genKwKeys()

        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 = _lib.enkf_fs_keyword_data.keyword_data_get_realizations(
            ert.ensembleConfig(), fs, gen_kw_keys, realizations
        )
        gen_kw_data = DataFrame(
            data=gen_kw_array, index=realizations, columns=gen_kw_keys
        )

        gen_kw_data.index.name = "Realization"
        return gen_kw_data
Exemple #2
0
 def loadObservationData(ert: EnKFMain, case_name, keys=None):
     """
     @type ert: EnKFMain
     @type case_name: str
     @type keys: list of str
     @rtype: DataFrame
     """
     observations = ert.getObservations()
     history_length = ert.getHistoryLength()
     dates = [
         observations.getObservationTime(index).datetime()
         for index in range(1, history_length + 1)
     ]
     summary_keys = ert.getKeyManager().summaryKeysWithObservations()
     if keys is not None:
         summary_keys = [key for key in keys if key in summary_keys
                         ]  # ignore keys that doesn't exist
     columns = summary_keys
     std_columns = ["STD_%s" % key for key in summary_keys]
     df = DataFrame(index=dates, columns=columns + std_columns)
     for key in summary_keys:
         observation_keys = ert.ensembleConfig().getNode(
             key).getObservationKeys()
         for obs_key in observation_keys:
             observation_data = observations[obs_key]
             for index in range(0, history_length + 1):
                 if observation_data.isActive(index):
                     obs_time = observations.getObservationTime(
                         index).datetime()
                     node = observation_data.getNode(index)
                     value = node.getValue()
                     std = node.getStandardDeviation()
                     df[key][obs_time] = value
                     df["STD_%s" % key][obs_time] = std
     return df
Exemple #3
0
    def loadAllMisfitData(ert: EnKFMain, case_name) -> DataFrame:
        """
        @type ert: EnKFMain
        @type case_name: str
        @rtype: DataFrame
        """
        fs = ert.getEnkfFsManager().getFileSystem(case_name)

        realizations = MisfitCollector.createActiveList(ert, fs)
        misfit_keys = ert.getKeyManager().misfitKeys(sort_keys=False)
        misfit_sum_index = len(misfit_keys) - 1

        misfit_array = numpy.empty(shape=(len(misfit_keys), len(realizations)),
                                   dtype=numpy.float64)
        misfit_array.fill(numpy.nan)
        misfit_array[misfit_sum_index] = 0.0

        for column_index, obs_vector in enumerate(ert.getObservations()):

            for realization_index, realization_number in enumerate(
                    realizations):
                misfit = obs_vector.getTotalChi2(fs, realization_number)

                misfit_array[column_index][realization_index] = misfit
                misfit_array[misfit_sum_index][realization_index] += misfit

        misfit_data = DataFrame(data=numpy.transpose(misfit_array),
                                index=realizations,
                                columns=misfit_keys)
        misfit_data.index.name = "Realization"

        return misfit_data
Exemple #4
0
    def loadAllSummaryData(ert: EnKFMain,
                           case_name,
                           keys=None,
                           realization_index=None):
        """
        @type ert: EnKFMain
        @type case_name: str
        @type keys: list of str
        @rtype: DataFrame
        """

        fs = ert.getEnkfFsManager().getFileSystem(case_name)

        time_map = fs.getTimeMap()
        dates = [
            time_map[index].datetime() for index in range(1, len(time_map))
        ]

        realizations = SummaryCollector.createActiveList(ert, fs)
        if realization_index is not None:
            if realization_index not in realizations:
                raise IndexError(f"No such realization {realization_index}")
            realizations = [realization_index]

        summary_keys = ert.getKeyManager().summaryKeys()
        if keys is not None:
            summary_keys = [key for key in keys if key in summary_keys
                            ]  # ignore keys that doesn't exist

        summary_data = _lib.enkf_fs_summary_data.get_summary_data(
            ert.ensembleConfig(), fs, summary_keys, realizations, len(dates))

        multi_index = MultiIndex.from_product([realizations, dates],
                                              names=["Realization", "Date"])

        df = DataFrame(data=summary_data,
                       index=multi_index,
                       columns=summary_keys)

        return df
Exemple #5
0
 def getAllObservationKeys(ert: EnKFMain):
     """
     @type ert: EnKFMain
     @rtype: list of str
     """
     return ert.getKeyManager().summaryKeysWithObservations()