Example #1
0
    def getArguments(self, parent=None):
        description = "The CSV export requires some information before it starts:"
        dialog = CustomDialog("CSV Export", description, parent)

        default_csv_output_path = self.getDataKWValue("CSV_OUTPUT_PATH",
                                                      default="output.csv")
        output_path_model = DefaultPathModel(default_csv_output_path)
        output_path_chooser = PathChooser(output_path_model,
                                          path_label="Output file path")

        design_matrix_default = self.getDataKWValue("DESIGN_MATRIX_PATH",
                                                    default="")
        design_matrix_path_model = DefaultPathModel(design_matrix_default,
                                                    is_required=False,
                                                    must_exist=True)
        design_matrix_path_chooser = PathChooser(
            design_matrix_path_model, path_label="Design Matrix path")

        all_case_list = self.getAllCaseList()
        list_edit = ListEditBox(all_case_list, "List of cases to export")

        infer_iteration_model = DefaultBooleanModel()
        infer_iteration_checkbox = CheckBox(infer_iteration_model,
                                            label="Infer iteration number",
                                            show_label=False)
        infer_iteration_checkbox.setToolTip(CSVExportJob.INFER_HELP)

        dialog.addOption(output_path_chooser)
        dialog.addOption(design_matrix_path_chooser)
        dialog.addOption(list_edit)
        dialog.addOption(infer_iteration_checkbox)

        dialog.addButtons()

        success = dialog.showAndTell()

        if success:
            design_matrix_path = design_matrix_path_model.getPath()
            if design_matrix_path.strip() == "":
                design_matrix_path = None

            case_list = ",".join(list_edit.getItems())

            return [
                output_path_model.getPath(), case_list, design_matrix_path,
                infer_iteration_model.isTrue()
            ]

        raise CancelPluginException("User cancelled!")
Example #2
0
    def getArguments(self, parent=None):
        description = "The CSV export requires some information before it starts:"
        dialog = CustomDialog("CSV Export", description, parent)

        default_csv_output_path = self.getDataKWValue("CSV_OUTPUT_PATH", default="output.csv")
        output_path_model = DefaultPathModel(default_csv_output_path)
        output_path_chooser = PathChooser(output_path_model, path_label="Output file path")

        design_matrix_default = self.getDataKWValue("DESIGN_MATRIX_PATH", default="")
        design_matrix_path_model = DefaultPathModel(design_matrix_default, is_required=False, must_exist=True)
        design_matrix_path_chooser = PathChooser(design_matrix_path_model, path_label="Design Matrix path")

        all_case_list = self.getAllCaseList()
        list_edit = ListEditBox(all_case_list, "List of cases to export")

        infer_iteration_model = DefaultBooleanModel()
        infer_iteration_checkbox = CheckBox(infer_iteration_model, label="Infer iteration number", show_label=False)
        infer_iteration_checkbox.setToolTip(CSVExportJob.INFER_HELP)

        dialog.addOption(output_path_chooser)
        dialog.addOption(design_matrix_path_chooser)
        dialog.addOption(list_edit)
        dialog.addOption(infer_iteration_checkbox)

        dialog.addButtons()

        success = dialog.showAndTell()

        if success:
            design_matrix_path = design_matrix_path_model.getPath()
            if design_matrix_path.strip() == "":
                design_matrix_path = None

            case_list = ",".join(list_edit.getItems())

            return [output_path_model.getPath(), case_list, design_matrix_path, infer_iteration_model.isTrue()]

        raise CancelPluginException("User cancelled!")
Example #3
0
    def getArguments(self, parent=None):
        description = "The GEN_DATA RFT CSV export requires some information before it starts:"
        dialog = CustomDialog("Robust CSV Export", description, parent)
        
        output_path_model = DefaultPathModel("output.csv")
        output_path_chooser = PathChooser(output_path_model, path_label="Output file path")

        trajectory_model = DefaultPathModel("wellpath" , must_be_a_directory=True , must_be_a_file = False , must_exist = True)
        trajectory_chooser = PathChooser(trajectory_model, path_label="Trajectory file")

        fs_manager = self.ert().getEnkfFsManager()
        all_case_list = fs_manager.getCaseList()
        all_case_list = [case for case in all_case_list if fs_manager.caseHasData(case)]
        list_edit = ListEditBox(all_case_list, "List of cases to export")


        infer_iteration_model = DefaultBooleanModel()
        infer_iteration_checkbox = CheckBox(infer_iteration_model, label="Infer iteration number", show_label=False)
        infer_iteration_checkbox.setToolTip(GenDataRFTCSVExportJob.INFER_HELP)

        dialog.addOption(output_path_chooser)
        dialog.addOption(trajectory_chooser)
        dialog.addOption(list_edit)
        dialog.addOption(infer_iteration_checkbox)

        dialog.addButtons()

        success = dialog.showAndTell()

        if success:
            case_list = ",".join(list_edit.getItems())
            try:
                return [output_path_model.getPath(), trajectory_model.getPath() , case_list, infer_iteration_model.isTrue()]
            except ValueError:
                pass

        raise CancelPluginException("User cancelled!")
Example #4
0
def createAnalysisPage(configPanel, parent):
    configPanel.startPage("Analysis")

    r = configPanel.addRow(CheckBox(parent, "ENKF rerun", "config/analysis/enkf_rerun", "Perform rerun"))
    r.getter = lambda ert : ert.enkf.analysis_config_get_rerun(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_rerun(ert.analysis_config, value)

    r = configPanel.addRow(IntegerSpinner(parent, "Rerun start", "config/analysis/rerun_start",  0, 100000))
    r.getter = lambda ert : ert.enkf.analysis_config_get_rerun_start(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_rerun_start(ert.analysis_config, value)

    r = configPanel.addRow(PathChooser(parent, "ENKF schedule file", "config/analysis/enkf_sched_file"))
    r.getter = lambda ert : ert.enkf.model_config_get_enkf_sched_file(ert.enkf.enkf_main_get_model_config(ert.main))
    r.setter = lambda ert, value : ert.enkf.model_config_set_enkf_sched_file(ert.enkf.enkf_main_get_model_config(ert.main), str(value))

    r = configPanel.addRow(ert_gui.widgets.tablewidgets.KeywordList(parent, "Local config", "config/analysis/local_config"))
    r.newKeywordPopup = lambda list : QtGui.QFileDialog.getOpenFileName(r, "Select a path", "")

    def get_local_config_files(ert):
        local_config = ert.enkf.enkf_main_get_local_config(ert.main)
        config_files_pointer = ert.enkf.local_config_get_config_files(local_config)
        return ert.getStringList(config_files_pointer)

    r.getter = get_local_config_files

    def add_config_file(ert, value):
        local_config = ert.enkf.enkf_main_get_local_config(ert.main)
        ert.enkf.local_config_clear_config_files(local_config)

        for file in value:
            ert.enkf.local_config_add_config_file(local_config, file)

    r.setter = add_config_file

    r = configPanel.addRow(PathChooser(parent, "Update log", "config/analysis/update_log"))
    r.getter = lambda ert : ert.enkf.analysis_config_get_log_path(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_log_path(ert.analysis_config, str(value))


    configPanel.startGroup("EnKF")

    r = configPanel.addRow(DoubleSpinner(parent, "Alpha", "config/analysis/enkf_alpha", 0, 100000, 2))
    r.getter = lambda ert : ert.enkf.analysis_config_get_alpha(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_alpha(ert.analysis_config, value)

    r = configPanel.addRow(CheckBox(parent, "Merge Observations", "config/analysis/enkf_merge_observations", "Perform merge"))
    r.getter = lambda ert : ert.enkf.analysis_config_get_merge_observations(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_merge_observations(ert.analysis_config, value)


    enkf_mode_type = {"ENKF_STANDARD" : 10, "ENKF_SQRT" : 20}
    enkf_mode_type_inverted = {10 : "ENKF_STANDARD" , 20 : "ENKF_SQRT"}
    r = configPanel.addRow(ComboChoice(parent, enkf_mode_type.keys(), "Mode", "config/analysis/enkf_mode"))
    r.getter = lambda ert : enkf_mode_type_inverted[ert.enkf.analysis_config_get_enkf_mode(ert.analysis_config)]
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_enkf_mode(ert.analysis_config, enkf_mode_type[str(value)])


    r = configPanel.addRow(DoubleSpinner(parent, "Truncation", "config/analysis/enkf_truncation", 0, 1, 2))
    r.getter = lambda ert : ert.enkf.analysis_config_get_truncation(ert.analysis_config)
    r.setter = lambda ert, value : ert.enkf.analysis_config_set_truncation(ert.analysis_config, value)



    configPanel.endGroup()
    configPanel.endPage()
Example #5
0
                                            must_be_a_directory=True,
                                            must_be_a_file=False,
                                            must_exist=True)
        trajectory_chooser = PathChooser(trajectory_model,
                                         path_label="Trajectory file")

        fs_manager = self.ert().getEnkfFsManager()
        all_case_list = fs_manager.getCaseList()
        all_case_list = [
            case for case in all_case_list if fs_manager.caseHasData(case)
        ]
        list_edit = ListEditBox(all_case_list, "List of cases to export")

        infer_iteration_model = DefaultBooleanModel()
        infer_iteration_checkbox = CheckBox(infer_iteration_model,
                                            label="Infer iteration number",
                                            show_label=False)
        infer_iteration_checkbox.setToolTip(GenDataRFTCSVExportJob.INFER_HELP)

        dialog.addOption(output_path_chooser)
        dialog.addOption(trajectory_chooser)
        dialog.addOption(list_edit)
        dialog.addOption(infer_iteration_checkbox)

        dialog.addButtons()

        success = dialog.showAndTell()

        if success:
            case_list = ",".join(list_edit.getItems())
            try:
Example #6
0
def createSimulationsPage(configPanel, parent):
    configPanel.startPage("Simulations")

    r = configPanel.addRow(
        IntegerSpinner(parent, "Max submit", "config/simulation/max_submit", 1,
                       10000))
    r.getter = lambda ert: ert.enkf.site_config_get_max_submit(ert.site_config)
    r.setter = lambda ert, value: ert.enkf.site_config_set_max_submit(
        ert.site_config, value)

    r = configPanel.addRow(
        IntegerSpinner(parent, "Max resample",
                       "config/simulation/max_resample", 1, 10000))
    r.getter = lambda ert: ert.enkf.model_config_get_max_resample(ert.
                                                                  model_config)
    r.setter = lambda ert, value: ert.enkf.model_config_set_max_resample(
        ert.model_config, value)

    r = configPanel.addRow(ForwardModelPanel(parent))

    def get_forward_model(ert):
        site_config = ert.site_config
        installed_jobs_pointer = ert.enkf.site_config_get_installed_jobs(
            site_config)
        installed_jobs_stringlist_pointer = ert.job_queue.ext_joblist_alloc_list(
            installed_jobs_pointer)
        available_jobs = ert.getStringList(installed_jobs_stringlist_pointer,
                                           free_after_use=True)

        result = {'available_jobs': available_jobs}

        model_config = ert.model_config
        forward_model = ert.enkf.model_config_get_forward_model(model_config)
        name_string_list = ert.job_queue.forward_model_alloc_joblist(
            forward_model)
        job_names = ert.getStringList(name_string_list, free_after_use=True)

        forward_model_jobs = []

        count = 0
        for name in job_names:
            ext_job = ert.job_queue.forward_model_iget_job(
                forward_model, count)
            arg_string = ert.job_queue.ext_job_get_private_args_as_string(
                ext_job)
            help_text = ert.job_queue.ext_job_get_help_text(ext_job)
            forward_model_jobs.append((name, arg_string, help_text))
            count += 1

        result['forward_model'] = forward_model_jobs

        return result

    r.getter = get_forward_model

    def update_forward_model(ert, forward_model):
        forward_model_pointer = ert.enkf.model_config_get_forward_model(
            ert.model_config)
        ert.job_queue.forward_model_clear(forward_model_pointer)

        for job in forward_model:
            name = job[0]
            args = job[1]
            ext_job = ert.job_queue.forward_model_add_job(
                forward_model_pointer, name)
            ert.job_queue.ext_job_set_private_args_from_string(ext_job, args)

    r.setter = update_forward_model

    r = configPanel.addRow(
        PathChooser(parent, "Case table", "config/simulation/case_table"))

    def get_case_table(ert):
        return ert.enkf.model_config_get_case_table_file(ert.model_config)

    r.getter = get_case_table

    def set_case_table(ert, value):
        if os.path.exists(value):
            ert.enkf.enkf_main_set_case_table(ert.model_config,
                                              ert.nonify(value))

    r.setter = set_case_table

    r = configPanel.addRow(
        PathChooser(parent, "License path", "config/simulation/license_path"))
    r.getter = lambda ert: ert.enkf.site_config_get_license_root_path(
        ert.site_config)

    def ls(string):
        if string is None:
            return ""
        else:
            return string

    r.setter = lambda ert, value: ert.enkf.site_config_set_license_root_path(
        ert.site_config, ls(value))

    internalPanel = ConfigPanel(parent)

    internalPanel.startPage("Runpath")

    r = internalPanel.addRow(
        PathChooser(parent,
                    "Runpath",
                    "config/simulation/runpath",
                    path_format=True))

    r.getter = lambda ert: ert.enkf.model_config_get_runpath_as_char(
        ert.model_config)
    r.setter = lambda ert, value: ert.enkf.model_config_set_runpath_fmt(
        ert.model_config, str(value))
    parent.connect(r, QtCore.SIGNAL("contentsChanged()"),
                   lambda: r.modelEmit("runpathChanged()"))

    r = internalPanel.addRow(
        CheckBox(parent, "Pre clear", "config/simulation/pre_clear_runpath",
                 "Perform pre clear"))

    r.getter = lambda ert: ert.enkf.enkf_main_get_pre_clear_runpath(ert.main)
    r.setter = lambda ert, value: ert.enkf.enkf_main_set_pre_clear_runpath(
        ert.main, value)

    r = internalPanel.addRow(
        RunpathMemberPanel(widgetLabel="Retain runpath",
                           helpLabel="config/simulation/runpath_retain"))

    def get_runpath_retain_state(ert):
        ensemble_size = ert.enkf.enkf_main_get_ensemble_size(ert.main)

        result = []
        for index in range(ensemble_size):
            state = ert.enkf.enkf_main_iget_keep_runpath(ert.main, index)
            result.append((index, keep_runpath_type.resolveValue(state)))

        return result

    r.getter = get_runpath_retain_state

    def set_runpath_retain_state(ert, items):
        for item in items:
            ert.enkf.enkf_main_iset_keep_runpath(ert.main, item.member,
                                                 item.runpath_state.value())

    r.setter = set_runpath_retain_state

    internalPanel.endPage()

    internalPanel.startPage("Run Template")

    r = internalPanel.addRow(RunTemplatePanel(parent))

    def get_run_templates(ert):
        templates = ert.enkf.enkf_main_get_templates(ert.main)
        template_list = ert.enkf.ert_template_alloc_list(templates)

        template_names = ert.getStringList(template_list, free_after_use=True)
        result = []
        for name in template_names:
            template = ert.enkf.ert_template_get_template(templates, name)
            template_file = ert.enkf.ert_template_get_template_file(template)
            target_file = ert.enkf.ert_template_get_target_file(template)
            arguments = ert.enkf.ert_template_get_args_as_string(template)
            result.append((name, template_file, target_file, arguments))
        return result

    r.getter = get_run_templates

    def set_run_templates(ert, template_list):
        templates_pointer = ert.enkf.enkf_main_get_templates(ert.main)
        ert.enkf.ert_template_clear(templates_pointer)

        for template in template_list:
            ert.enkf.ert_template_add_template(templates_pointer, template[0],
                                               template[1], template[2],
                                               template[3])

    r.setter = set_run_templates

    #    r = internalPanel.addRow(MultiColumnTable(parent, "", "run_template", ["Template", "Target file", "Arguments"]))
    #    r.getter = lambda ert : ert.getAttribute("run_template")
    #    r.setter = lambda ert, value : ert.setAttribute("run_template", value)

    internalPanel.endPage()
    configPanel.addRow(internalPanel)

    configPanel.endPage()