def createSystemPage(configPanel, parent): configPanel.startPage("System") # Should call enkf_main_get_site_config_file() to get the name of # the site configuration file; this should only be a label - not # user editable. r = configPanel.addRow(ActiveLabel(None, "Site Config", "", "Not specified.")) r.initialize = lambda ert: [ert.prototype("char* enkf_main_get_site_config_file(long)")] r.getter = lambda ert : ert.enkf.enkf_main_get_site_config_file(ert.main) r.modelConnect("casesUpdated()", r.fetchContent) r = configPanel.addRow(PathChooser(parent, "Job script", "config/systemenv/job_script", True)) r.initialize = lambda ert : [ert.prototype("char* site_config_get_job_script(long)"), ert.prototype("void site_config_set_job_script(long, char*)")] r.getter = lambda ert : ert.enkf.site_config_get_job_script(ert.site_config) r.setter = lambda ert, value : ert.enkf.site_config_set_job_script(ert.site_config, str(value)) internalPanel = ConfigPanel(parent) internalPanel.startPage("setenv") r = internalPanel.addRow(KeywordTable(parent, "", "config/systemenv/setenv")) r.initialize = lambda ert : [ert.prototype("long site_config_get_env_hash(long)"), ert.prototype("void site_config_clear_env(long)"), ert.prototype("void site_config_setenv(long, char*, char*)")] r.getter = lambda ert : ert.getHash(ert.enkf.site_config_get_env_hash(ert.site_config)) def setenv(ert, value): ert.enkf.site_config_clear_env(ert.site_config) for env in value: ert.enkf.site_config_setenv(ert.site_config, env[0], env[1]) r.setter = setenv internalPanel.endPage() internalPanel.startPage("Update path") r = internalPanel.addRow(KeywordTable(parent, "", "config/systemenv/update_path")) r.initialize = lambda ert : [ert.prototype("long site_config_get_path_variables(long)"), ert.prototype("long site_config_get_path_values(long)"), ert.prototype("void site_config_clear_pathvar(long)"), ert.prototype("void site_config_update_pathvar(long, char*, char*)")] def get_update_path(ert): paths = ert.getStringList(ert.enkf.site_config_get_path_variables(ert.site_config)) values = ert.getStringList(ert.enkf.site_config_get_path_values(ert.site_config)) return [[p, v] for p, v in zip(paths, values)] r.getter = get_update_path def update_pathvar(ert, value): ert.enkf.site_config_clear_pathvar(ert.site_config) for pathvar in value: ert.enkf.site_config_update_pathvar(ert.site_config, pathvar[0], pathvar[1]) r.setter = update_pathvar internalPanel.endPage() internalPanel.startPage("Jobs") r = internalPanel.addRow(JobsPanel(parent)) r.initialize = lambda ert : [ert.prototype("long site_config_get_installed_jobs(long)"), ert.prototype("char* site_config_get_license_root_path(long)"), ert.prototype("int ext_job_is_private(long)", lib=ert.job_queue), ert.prototype("char* ext_job_get_config_file(long)", lib=ert.job_queue), ert.prototype("void ext_job_set_config_file(long, char*)", lib=ert.job_queue), ert.prototype("long ext_job_alloc(char*, char*, int)", lib=ert.job_queue), ert.prototype("long ext_job_fscanf_alloc(char*, char*, int, char*)", lib=ert.job_queue), ert.prototype("long ext_joblist_get_job(long, char*)", lib=ert.job_queue), ert.prototype("int ext_joblist_del_job(long, char*)", lib=ert.job_queue), ert.prototype("int ext_joblist_has_job(long, char*)", lib=ert.job_queue), ert.prototype("void ext_joblist_add_job(long, char*, long)", lib=ert.job_queue), ert.prototype("long ext_joblist_get_jobs(long)", lib=ert.job_queue)] def get_jobs(ert): jl = ert.enkf.site_config_get_installed_jobs(ert.site_config) h = ert.job_queue.ext_joblist_get_jobs(jl) jobs = ert.getHash(h, return_type="long") private_jobs = [] for k, v in jobs: v = int(v) path = ert.job_queue.ext_job_get_config_file(v) if ert.job_queue.ext_job_is_private(v): private_jobs.append(Job(k, path)) return private_jobs def update_job(ert, value): jl = ert.enkf.site_config_get_installed_jobs(ert.site_config) if os.path.exists(value.path): license = ert.enkf.site_config_get_license_root_path(ert.site_config) job = ert.job_queue.ext_job_fscanf_alloc(value.name, license, True, value.path) ert.job_queue.ext_joblist_add_job(jl, value.name, job) else: job = ert.job_queue.ext_joblist_get_job(jl, value.name) ert.job_queue.ext_job_set_config_file(job, value.path) def add_job(ert, value): jl = ert.enkf.site_config_get_installed_jobs(ert.site_config) if not ert.job_queue.ext_joblist_has_job(jl, value.name): license = ert.enkf.site_config_get_license_root_path(ert.site_config) if os.path.exists(value.path): job = ert.job_queue.ext_job_fscanf_alloc(value.name, license, True, value.path) ert.job_queue.ext_joblist_add_job(jl, value.name, job) else: job = ert.job_queue.ext_job_alloc(value.name, license, True) ert.job_queue.ext_job_set_config_file(job, value.path) ert.job_queue.ext_joblist_add_job(jl, value.name, job) return True return False def remove_job(ert, value): jl = ert.enkf.site_config_get_installed_jobs(ert.site_config) success = ert.job_queue.ext_joblist_del_job(jl, value.name) if not success: QtGui.QMessageBox.question(parent, "Failed", "Unable to delete job!", QtGui.QMessageBox.Ok) return False return True r.getter = get_jobs r.setter = update_job r.insert = add_job r.remove = remove_job internalPanel.endPage() configPanel.addRow(internalPanel) r = configPanel.addRow(PathChooser(parent, "Log file", "config/systemenv/log_file", True)) r.initialize = lambda ert : [ert.prototype("char* log_get_filename(long)", lib=ert.util), ert.prototype("void log_reset_filename(long, char*)", lib=ert.util)] r.getter = lambda ert : ert.util.log_get_filename(ert.logh) r.setter = lambda ert, value : ert.util.log_reset_filename(ert.logh, value) r = configPanel.addRow(ert_gui.widgets.spinnerwidgets.IntegerSpinner(parent, "Log level", "config/systemenv/log_level", 0, 1000)) r.initialize = lambda ert : [ert.prototype("int log_get_level(long)", lib=ert.util), ert.prototype("void log_set_level(long, int)", lib=ert.util)] r.getter = lambda ert : ert.util.log_get_level(ert.logh) r.setter = lambda ert, value : ert.util.log_set_level(ert.logh, value) configPanel.endPage()
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()
def createQueueSystemPage(configPanel, parent): configPanel.startPage("Queue System") r = configPanel.addRow(ComboChoice(parent, ["LSF", "RSH", "LOCAL"], "Queue system", "config/queue_system/queue_system")) r.initialize = lambda ert : ert.main.site_config.get_queue_name r.getter = lambda ert : ert.main.site_config.get_queue_name r.setter = lambda ert, value : ert.main.site_config.set_job_queue(str(value)) internalPanel = ConfigPanel(parent) internalPanel.startPage("LSF") r = internalPanel.addRow(StringBox(parent, "LSF Queue", "config/queue_system/lsf_queue")) r.initialize = lambda ert : ert.main.site_config.get_lsf_queue r.getter = lambda ert : ert.main.site_config.get_lsf_queue r.setter = lambda ert, value : ert.main.site_config.set_lsf_queue( str(value)) r = internalPanel.addRow(IntegerSpinner(parent, "Max running", "config/queue_system/max_running_lsf", 1, 1000)) r.initialize = lambda ert : ert.main.site_config.get_max_running_lsf r.getter = lambda ert : ert.main.site_config.get_max_running_lsf r.setter = lambda ert, value : ert.main.site_config.set_max_running_lsf( value) r = internalPanel.addRow(StringBox(parent, "Resources", "config/queue_system/lsf_resources")) r.initialize = lambda ert : ert.main.site_config.get_lsf_request r.getter = lambda ert : ert.main.site_config.get_lsf_request r.setter = lambda ert, value : ert.main.site_config.set_lsf_request(str(value)) internalPanel.endPage() internalPanel.startPage("RSH") r = internalPanel.addRow(PathChooser(parent, "Command", "config/queue_system/rsh_command", show_files=True, must_exist=True, is_executable_file=True)) r.initialize = lambda ert : ert.main.site_config.get_rsh_command r.getter = lambda ert : ert.main.site_config.get_rsh_command r.setter = lambda ert, value : ert.main.site_config.set_rsh_command(str(value)) r = internalPanel.addRow(IntegerSpinner(parent, "Max running", "config/queue_system/max_running_rsh", 1, 1000)) r.initialize = lambda ert : ert.main.site_config.get_max_running_rsh r.getter = lambda ert : ert.main.site_config.get_max_running_rsh r.setter = lambda ert, value : ert.main.site_config.set_max_running_rsh( value) r = internalPanel.addRow(KeywordTable(parent, "Host List", "config/queue_system/rsh_host_list", "Host", "Number of jobs")) r.initialize = lambda ert : ert.getHash(ert.main.site_config.get_rsh_host_list, True) r.getter = lambda ert : ert.getHash(ert.main.site_config.get_rsh_host_list, True) def add_rsh_host(ert, listOfKeywords): ert.main.site_config.clear_rsh_host_list for keyword in listOfKeywords: if keyword[1].strip() == "": max_running = 1 else: max_running = int(keyword[1]) ert.main.site_config.add_rsh_host( keyword[0], max_running) r.setter = add_rsh_host internalPanel.endPage() internalPanel.startPage("LOCAL") r = internalPanel.addRow(IntegerSpinner(parent, "Max running", "config/queue_system/max_running_local", 1, 1000)) r.initialize = lambda ert : ert.main.site_config.get_max_running_local r.getter = lambda ert : ert.main.site_config.get_max_running_local r.setter = lambda ert, value : ert.main.site_config.set_max_running_local(value) internalPanel.endPage() configPanel.addRow(internalPanel) configPanel.endPage()
def createQueueSystemPage(configPanel, parent): configPanel.startPage("Queue System") r = configPanel.addRow( ComboChoice(parent, ["LSF", "RSH", "LOCAL"], "Queue system", "config/queue_system/queue_system")) r.getter = lambda ert: ert.enkf.site_config_get_queue_name(ert.site_config) r.setter = lambda ert, value: ert.enkf.site_config_set_job_queue( ert.site_config, str(value)) internalPanel = ConfigPanel(parent) internalPanel.startPage("LSF") r = internalPanel.addRow( StringBox(parent, "LSF Queue", "config/queue_system/lsf_queue")) r.getter = lambda ert: ert.enkf.site_config_get_lsf_queue(ert.site_config) r.setter = lambda ert, value: ert.enkf.site_config_set_lsf_queue( ert.site_config, str(value)) r = internalPanel.addRow( IntegerSpinner(parent, "Max running", "config/queue_system/max_running_lsf", 1, 1000)) r.getter = lambda ert: ert.enkf.site_config_get_max_running_lsf( ert.site_config) r.setter = lambda ert, value: ert.enkf.site_config_set_max_running_lsf( ert.site_config, value) r = internalPanel.addRow( StringBox(parent, "Resources", "config/queue_system/lsf_resources")) r.getter = lambda ert: ert.enkf.site_config_get_lsf_request(ert.site_config ) r.setter = lambda ert, value: ert.enkf.site_config_set_lsf_request( ert.site_config, str(value)) internalPanel.endPage() internalPanel.startPage("RSH") r = internalPanel.addRow( PathChooser(parent, "Command", "config/queue_system/rsh_command", show_files=True, must_exist=True, is_executable_file=True)) r.getter = lambda ert: ert.enkf.site_config_get_rsh_command(ert.site_config ) r.setter = lambda ert, value: ert.enkf.site_config_set_rsh_command( ert.site_config, str(value)) r = internalPanel.addRow( IntegerSpinner(parent, "Max running", "config/queue_system/max_running_rsh", 1, 1000)) r.getter = lambda ert: ert.enkf.site_config_get_max_running_rsh( ert.site_config) r.setter = lambda ert, value: ert.enkf.site_config_set_max_running_rsh( ert.site_config, value) r = internalPanel.addRow( KeywordTable(parent, "Host List", "config/queue_system/rsh_host_list", "Host", "Number of jobs")) r.getter = lambda ert: ert.getHash( ert.enkf.site_config_get_rsh_host_list(ert.site_config), True) def add_rsh_host(ert, listOfKeywords): ert.enkf.site_config_clear_rsh_host_list(ert.site_config) for keyword in listOfKeywords: if keyword[1].strip() == "": max_running = 1 else: max_running = int(keyword[1]) ert.enkf.site_config_add_rsh_host(ert.site_config, keyword[0], max_running) r.setter = add_rsh_host internalPanel.endPage() internalPanel.startPage("LOCAL") r = internalPanel.addRow( IntegerSpinner(parent, "Max running", "config/queue_system/max_running_local", 1, 1000)) r.getter = lambda ert: ert.enkf.site_config_get_max_running_local( ert.site_config) r.setter = lambda ert, value: ert.enkf.site_config_set_max_running_local( ert.site_config, value) internalPanel.endPage() configPanel.addRow(internalPanel) configPanel.endPage()
def createSimulationsPage(configPanel, parent): configPanel.startPage("Simulations") r = configPanel.addRow(IntegerSpinner(parent, "Max submit", "config/simulation/max_submit", 1, 10000)) r.initialize = lambda ert : ert.main.site_config.get_max_submit r.getter = lambda ert : ert.main.site_config.get_max_submit r.setter = lambda ert, value : ert.main.site_config.set_max_submit( value) r = configPanel.addRow(IntegerSpinner(parent, "Max internal submit", "config/simulation/max_resample", 1, 10000)) r.initialize = lambda ert : ert.main.model_config.get_max_internal_submit r.getter = lambda ert : ert.main.model_config.get_max_internal_submit r.setter = lambda ert, value : ert.main.model_config.set_max_internal_submit( value) r = configPanel.addRow(ForwardModelPanel(parent)) def get_forward_model(ert): site_config = ert.main.site_config installed_jobs = ert.main.site_config.get_installed_jobs available_jobs = installed_jobs.alloc_list result = {'available_jobs': available_jobs} model_config = ert.main.model_config forward_model = model_config.get_forward_model job_names = forward_model.alloc_joblist forward_model_jobs = [] count = 0 for name in job_names: ext_job = forward_model.iget_job( count) arg_string = ext_job.get_private_args_as_string help_text = ext_job.get_help_text forward_model_jobs.append((name, arg_string, help_text)) count+=1 result['forward_model'] = forward_model_jobs return result r.getter = get_forward_model r.initialize = get_forward_model def update_forward_model(ert, forward_model): forward_model_object = ert.main.model_config.get_forward_model forward_model_object.clear for job in forward_model: name = job[0] args = job[1] ext_job = forward_model.add_job( name) ext_job.set_private_args_from_string( args) r.setter = update_forward_model r = configPanel.addRow(PathChooser(parent, "Case table", "config/simulation/case_table")) def get_case_table(ert): return ert.main.model_config.get_case_table_file r.getter = get_case_table r.initialize = get_case_table def set_case_table(ert, value): if os.path.exists(value): ert.main.set_case_table( ert.nonify(value)) r.setter = set_case_table r = configPanel.addRow(PathChooser(parent, "License path", "config/simulation/license_path")) r.getter = lambda ert : ert.main.site_config.get_license_root_path r.initialize = lambda ert : ert.main.site_config.get_license_root_path def ls(string): if string is None: return "" else: return string r.setter = lambda ert, value : ert.main.site_config.set_license_root_path( 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.main.model_config.get_runpath_as_char r.initialize = lambda ert : ert.main.model_config.get_runpath_as_char r.setter = lambda ert, value : ert.main.model_config.select_runpath( 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.main.get_pre_clear_runpath r.initialize = lambda ert : ert.main.get_pre_clear_runpath r.setter = lambda ert, value : ert.main.set_pre_clear_runpath( value) r = internalPanel.addRow(RunpathMemberPanel(widgetLabel="Retain runpath", helpLabel="config/simulation/runpath_retain")) def get_runpath_retain_state(ert): ensemble_size = ert.main.ens_size result = [] for index in range(ensemble_size): state = ert.main.iget_keep_runpath( index) result.append((index, keep_runpath_type.resolveValue(state))) return result r.getter = get_runpath_retain_state r.initialize = get_runpath_retain_state def set_runpath_retain_state(ert, items): for item in items: ert.main.iset_keep_runpath(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.main.get_templates template_names = templates.alloc_list result = [] for name in template_names: template = templates.get_template(name) template_file = template.get_template_file target_file = template.get_target_file arguments = template.get_args_as_string result.append((name, template_file, target_file, arguments)) return result r.getter = get_run_templates r.initialize = get_run_templates def set_run_templates(ert, template_list): templates_object = ert.main.get_templates templates_object.clear for template in template_list: templates_object.add_template( 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()
def createEclipsePage(configPanel, parent): configPanel.startPage("Eclipse") r = configPanel.addRow(PathChooser(parent, "Eclipse Base", "config/eclipse/eclbase", path_format=True)) r.initialize = lambda ert: ert.main.ecl_config.get_eclbase r.getter = lambda ert: ert.main.ecl_config.get_eclbase r.setter = lambda ert, value: ert.main.set_eclbase(str(value)) r = configPanel.addRow(PathChooser(parent, "Data file", "config/eclipse/data_file", show_files=True)) r.initialize = lambda ert: ert.main.ecl_config.get_data_file r.getter = lambda ert: ert.main.ecl_config.get_data_file r.setter = lambda ert, value: ert.main.set_datafile(str(value)) r = configPanel.addRow(PathChooser(parent, "Grid", "config/eclipse/grid", show_files=True)) r.initialize = lambda ert: ert.main.ecl_config.get_gridfile r.getter = lambda ert: ert.main.ecl_config.get_gridfile r.setter = lambda ert, value: ert.main.ecl_config.set_gridfile(str(value)) r = configPanel.addRow(PathChooser(parent, "Schedule file", "config/eclipse/schedule_file", show_files=True)) r.initialize = lambda ert: ert.main.ecl_config.get_schedule_file r.getter = lambda ert: ert.main.ecl_config.get_schedule_file r.setter = lambda ert, value: ert.main.ecl_config.set_schedule_file(str(value)) r = configPanel.addRow(PathChooser(parent, "Init section", "config/eclipse/init_section", show_files=True)) r.initialize = lambda ert: ert.main.ecl_config.get_init_section r.getter = lambda ert: ert.main.ecl_config.get_init_section r.setter = lambda ert, value: ert.main.ecl_config.set_init_section(str(value)) r = configPanel.addRow(PathChooser(parent, "Refcase", "config/eclipse/refcase", show_files=True)) r.initialize = lambda ert: ert.main.ecl_config.get_refcase_name r.getter = lambda ert: ert.main.ecl_config.get_refcase_name r.setter = lambda ert, value: ert.main.ecl_config.load_refcase(str(value)) r = configPanel.addRow( PathChooser(parent, "Schedule prediction file", "config/eclipse/schedule_prediction_file", show_files=True) ) r.initialize = lambda ert: ert.main.get_schedule_prediction_file r.getter = lambda ert: ert.main.get_schedule_prediction_file r.setter = lambda ert, value: ert.main.set_schedule_prediction_file(ert.nonify(value)) r = configPanel.addRow(KeywordTable(parent, "Data keywords", "config/eclipse/data_kw")) r.getter = lambda ert: ert.getSubstitutionList(ert.main.get_data_kw) def add_data_kw(ert, listOfKeywords): ert.main.clear_data_kw for keyword in listOfKeywords: ert.main.add_data_kw(keyword[0], keyword[1]) r.setter = add_data_kw r.initialize = lambda ert: ert.getSubstitutionList(ert.main.get_data_kw) configPanel.addSeparator() internalPanel = ConfigPanel(parent) internalPanel.startPage("Static keywords") r = internalPanel.addRow(KeywordList(parent, "", "config/eclipse/add_static_kw")) r.getter = lambda ert: ert.main.ecl_config.get_static_kw_list def add_static_kw(ert, listOfKeywords): ert.main.ecl_config.clear_static_kw for keyword in listOfKeywords: ert.main.ecl_config.add_static_kw(keyword) r.setter = add_static_kw r.initialize = lambda ert: ert.main.ecl_config.get_static_kw_list internalPanel.endPage() # todo: add support for fixed length schedule keywords # internalPanel.startPage("Fixed length schedule keywords") # # r = internalPanel.addRow(KeywordList(widget, "", "add_fixed_length_schedule_kw")) # r.getter = lambda ert : ert.getAttribute("add_fixed_length_schedule_kw") # r.setter = lambda ert, value : ert.setAttribute("add_fixed_length_schedule_kw", value) # # internalPanel.endPage() configPanel.addRow(internalPanel) configPanel.endPage()
def createEclipsePage(configPanel, parent): configPanel.startPage("Eclipse") r = configPanel.addRow(PathChooser(parent, "Eclipse Base", "config/eclipse/eclbase", path_format=True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_eclbase(long)"), ert.prototype("void enkf_main_set_eclbase(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_eclbase(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.enkf_main_set_eclbase(ert.main , str(value)) r = configPanel.addRow(PathChooser(parent, "Data file", "config/eclipse/data_file", show_files=True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_data_file(long)"), ert.prototype("void enkf_main_set_data_file(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_data_file(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.enkf_main_set_data_file(ert.main , str(value)) r = configPanel.addRow(PathChooser(parent, "Grid", "config/eclipse/grid", show_files=True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_gridfile(long)"), ert.prototype("void ecl_config_set_grid(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_gridfile(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_grid(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Schedule file" , "config/eclipse/schedule_file" , show_files = True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_schedule_file(long)"), ert.prototype("void ecl_config_set_schedule_file(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_schedule_file(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_schedule_file(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Init section", "config/eclipse/init_section", show_files=True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_init_section(long)"), ert.prototype("void ecl_config_set_init_section(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_init_section(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_init_section(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Refcase", "config/eclipse/refcase", show_files=True)) r.initialize = lambda ert : [ert.prototype("char* ecl_config_get_refcase_name(long)"), ert.prototype("void ecl_config_load_refcase(long, char*)")] r.getter = lambda ert : ert.enkf.ecl_config_get_refcase_name(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_load_refcase(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Schedule prediction file", "config/eclipse/schedule_prediction_file", show_files=True)) r.initialize = lambda ert : [ert.prototype("char* enkf_main_get_schedule_prediction_file(long)"), ert.prototype("void enkf_main_set_schedule_prediction_file(long, char*)")] r.getter = lambda ert : ert.enkf.enkf_main_get_schedule_prediction_file(ert.main) r.setter = lambda ert, value : ert.enkf.enkf_main_set_schedule_prediction_file(ert.main, ert.nonify( value )) r = configPanel.addRow(KeywordTable(parent, "Data keywords", "config/eclipse/data_kw")) r.initialize = lambda ert : [ert.prototype("long enkf_main_get_data_kw(long)"), ert.prototype("void enkf_main_clear_data_kw(long)"), ert.prototype("void enkf_main_add_data_kw(long, char*, char*)")] r.getter = lambda ert : ert.getSubstitutionList(ert.enkf.enkf_main_get_data_kw(ert.main)) def add_data_kw(ert, listOfKeywords): ert.enkf.enkf_main_clear_data_kw(ert.main) for keyword in listOfKeywords: ert.enkf.enkf_main_add_data_kw(ert.main, keyword[0], keyword[1]) r.setter = add_data_kw configPanel.addSeparator() internalPanel = ConfigPanel(parent) internalPanel.startPage("Static keywords") r = internalPanel.addRow(KeywordList(parent, "", "config/eclipse/add_static_kw")) r.initialize = lambda ert : [ert.prototype("long ecl_config_get_static_kw_list(long)"), ert.prototype("void ecl_config_clear_static_kw(long)"), ert.prototype("void ecl_config_add_static_kw(long, char*)")] r.getter = lambda ert : ert.getStringList(ert.enkf.ecl_config_get_static_kw_list(ert.ecl_config)) def add_static_kw(ert, listOfKeywords): ert.enkf.ecl_config_clear_static_kw(ert.ecl_config) for keyword in listOfKeywords: ert.enkf.ecl_config_add_static_kw(ert.ecl_config, keyword) r.setter = add_static_kw internalPanel.endPage() # todo: add support for fixed length schedule keywords #internalPanel.startPage("Fixed length schedule keywords") # #r = internalPanel.addRow(KeywordList(widget, "", "add_fixed_length_schedule_kw")) #r.getter = lambda ert : ert.getAttribute("add_fixed_length_schedule_kw") #r.setter = lambda ert, value : ert.setAttribute("add_fixed_length_schedule_kw", value) # #internalPanel.endPage() configPanel.addRow(internalPanel) configPanel.endPage()
def createSystemPage(configPanel, parent): configPanel.startPage("System") # Should call enkf_main_get_site_config_file() to get the name of # the site configuration file; this should only be a label - not # user editable. r = configPanel.addRow(ActiveLabel(None, "Site Config", "", "Not specified.")) r.initialize = lambda ert : ert.main.get_site_config_file r.getter = lambda ert : ert.main.get_site_config_file r.modelConnect("casesUpdated()", r.fetchContent) r = configPanel.addRow(PathChooser(parent, "Job script", "config/systemenv/job_script", True)) r.initialize = lambda ert : ert.main.site_config.get_job_script r.getter = lambda ert : ert.main.site_config.get_job_script r.setter = lambda ert, value : ert.main.site_config.set_job_script( str(value)) internalPanel = ConfigPanel(parent) internalPanel.startPage("setenv") r = internalPanel.addRow(KeywordTable(parent, "", "config/systemenv/setenv")) r.initialize = lambda ert : ert.getHash(ert.main.site_config.get_env_hash) r.getter = lambda ert : ert.getHash(ert.main.site_config.get_env_hash) def setenv(ert, value): ert.main.site_config.clear_env for env in value: ert.main.site_config.setenv( env[0], env[1]) r.setter = setenv internalPanel.endPage() internalPanel.startPage("Update path") r = internalPanel.addRow(KeywordTable(parent, "", "config/systemenv/update_path")) def get_update_path(ert): paths = ert.main.site_config.get_path_variables values = ert.main.site_config.get_path_values return [[p, v] for p, v in zip(paths, values)] r.getter = get_update_path r.initialize = get_update_path def update_pathvar(ert, value): ert.main.site_config.clear_pathvar for pathvar in value: ert.main.site_config.update_pathvar( pathvar[0], pathvar[1]) r.setter = update_pathvar internalPanel.endPage() internalPanel.startPage("Jobs") r = internalPanel.addRow(JobsPanel(parent)) def get_jobs(ert): jl = ert.main.site_config.get_installed_jobs h = jl.get_jobs stringlist = jl.alloc_list jobs = ert.getHash(h, return_type="c_void_p") private_jobs = [] for v in stringlist: job = jl.get_job(v) path = job.get_config_file if job.is_private: private_jobs.append(Job(v, path)) #for k, v in jobs: # job = jl.get_job(v) # path = job.get_config_file # if v.is_private: # private_jobs.append(Job(k, path)) return private_jobs def update_job(ert, value): jl = ert.main.site_config.get_installed_jobs if os.path.exists(value.path): license = ert.main.site_config.get_license_root_path job = ert.job_queue.ext_job_fscanf_alloc(value.name, license, True, value.path) jl.add_job(value.name, job) else: job = jl.get_job(value.name) job.set_config_file(value.path) def add_job(ert, value): jl = ert.main.site_config.get_installed_jobs if not jl.has_job(value.name): license = ert.main.site_config.get_license_root_path if os.path.exists(value.path): job = ert.job_queue.ext_job_fscanf_alloc(value.name, license, True, value.path) jl.add_job(value.name, job) else: job = ert.job_queue.ext_job_alloc(value.name, license, True) job.set_config_file(value.path) jl.add_job(value.name, job) return True return False def remove_job(ert, value): jl = ert.main.site_config.get_installed_jobs success = jl.del_job(value.name) if not success: QtGui.QMessageBox.question(parent, "Failed", "Unable to delete job!", QtGui.QMessageBox.Ok) return False return True r.getter = get_jobs r.initialize = get_jobs r.setter = update_job r.insert = add_job r.remove = remove_job internalPanel.endPage() configPanel.addRow(internalPanel) r = configPanel.addRow(PathChooser(parent, "Log file", "config/systemenv/log_file", True)) r.initialize = lambda ert: ert.main.logh.get_filename r.getter = lambda ert : ert.main.logh.get_filename r.setter = lambda ert, value : ert.main.logh.reopen(value) r = configPanel.addRow(ert_gui.widgets.spinnerwidgets.IntegerSpinner(parent, "Log level", "config/systemenv/log_level", 0, 1000)) r.initialize = lambda ert : ert.main.logh.get_level r.getter = lambda ert : ert.main.logh.get_level r.setter = lambda ert, value : ert.main.logh.set_level( value) configPanel.endPage()
def createEclipsePage(configPanel, parent): configPanel.startPage("Eclipse") r = configPanel.addRow(PathChooser(parent, "Eclipse Base", "config/eclipse/eclbase", path_format=True)) r.getter = lambda ert : ert.enkf.ecl_config_get_eclbase(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.enkf_main_set_eclbase(ert.main , str(value)) r = configPanel.addRow(PathChooser(parent, "Data file", "config/eclipse/data_file", show_files=True)) r.getter = lambda ert : ert.enkf.ecl_config_get_data_file(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.enkf_main_set_data_file(ert.main , str(value)) r = configPanel.addRow(PathChooser(parent, "Grid", "config/eclipse/grid", show_files=True)) r.getter = lambda ert : ert.enkf.ecl_config_get_gridfile(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_grid(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Schedule file" , "config/eclipse/schedule_file" , show_files = True)) r.getter = lambda ert : ert.enkf.ecl_config_get_schedule_file(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_schedule_file(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Init section", "config/eclipse/init_section", show_files=True)) r.getter = lambda ert : ert.enkf.ecl_config_get_init_section(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_set_init_section(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Refcase", "config/eclipse/refcase", show_files=True)) r.getter = lambda ert : ert.enkf.ecl_config_get_refcase_name(ert.ecl_config) r.setter = lambda ert, value : ert.enkf.ecl_config_load_refcase(ert.ecl_config, str(value)) r = configPanel.addRow(PathChooser(parent, "Schedule prediction file", "config/eclipse/schedule_prediction_file", show_files=True)) r.getter = lambda ert : ert.enkf.enkf_main_get_schedule_prediction_file(ert.main) r.setter = lambda ert, value : ert.enkf.enkf_main_set_schedule_prediction_file(ert.main, ert.nonify( value )) r = configPanel.addRow(KeywordTable(parent, "Data keywords", "config/eclipse/data_kw")) r.getter = lambda ert : ert.getSubstitutionList(ert.enkf.enkf_main_get_data_kw(ert.main)) def add_data_kw(ert, listOfKeywords): ert.enkf.enkf_main_clear_data_kw(ert.main) for keyword in listOfKeywords: ert.enkf.enkf_main_add_data_kw(ert.main, keyword[0], keyword[1]) r.setter = add_data_kw configPanel.addSeparator() internalPanel = ConfigPanel(parent) internalPanel.startPage("Static keywords") r = internalPanel.addRow(KeywordList(parent, "", "config/eclipse/add_static_kw")) r.getter = lambda ert : ert.getStringList(ert.enkf.ecl_config_get_static_kw_list(ert.ecl_config)) def add_static_kw(ert, listOfKeywords): ert.enkf.ecl_config_clear_static_kw(ert.ecl_config) for keyword in listOfKeywords: ert.enkf.ecl_config_add_static_kw(ert.ecl_config, keyword) r.setter = add_static_kw internalPanel.endPage() # todo: add support for fixed length schedule keywords #internalPanel.startPage("Fixed length schedule keywords") # #r = internalPanel.addRow(KeywordList(widget, "", "add_fixed_length_schedule_kw")) #r.getter = lambda ert : ert.getAttribute("add_fixed_length_schedule_kw") #r.setter = lambda ert, value : ert.setAttribute("add_fixed_length_schedule_kw", value) # #internalPanel.endPage() configPanel.addRow(internalPanel) configPanel.endPage()
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()