From 0e6c72082c1179aedb55a2936ce9416332092d9d Mon Sep 17 00:00:00 2001 From: AndresOrtegaGuerrero Date: Fri, 31 Mar 2023 07:32:59 +0000 Subject: [PATCH 1/6] adding a intslider (tot_charge) to select the total charge --- aiidalab_qe/parameters/qeapp.yaml | 2 ++ aiidalab_qe/steps.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/aiidalab_qe/parameters/qeapp.yaml b/aiidalab_qe/parameters/qeapp.yaml index 16bc9518..9b62a57b 100644 --- a/aiidalab_qe/parameters/qeapp.yaml +++ b/aiidalab_qe/parameters/qeapp.yaml @@ -19,3 +19,5 @@ electronic_type: metal protocol: moderate kpoints_distance_override: pseudo_family: SSSP/1.2/PBEsol/efficiency + +tot_charge: 0 diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index c86dd9b0..bb018001 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -108,6 +108,14 @@ def __init__(self, **kwargs): style={"description_width": "initial"}, ) + # tot_charge: total charge of the simulations + self.tot_charge = ipw.IntSlider( + value=DEFAULT_PARAMETERS["tot_charge"], + min=-2, + max=2, + step=1, + ) + # Checkbox to see if the band structure should be calculated self.bands_run = ipw.Checkbox( description="", @@ -159,6 +167,17 @@ def __init__(self, **kwargs): self.spin_type, ] ), + ipw.HBox( + children=[ + ipw.Label( + "Total charge:", + layout=ipw.Layout( + justify_content="flex-start", width="120px" + ), + ), + self.tot_charge, + ] + ), self.properties_title, ipw.HTML("Select which properties to calculate:"), ipw.HBox(children=[ipw.HTML("Band structure"), self.bands_run]), @@ -404,6 +423,7 @@ def set_input_parameters(self, parameters): self.workchain_settings.bands_run.value = parameters["run_bands"] self.workchain_settings.pdos_run.value = parameters["run_pdos"] self.workchain_settings.workchain_protocol.value = parameters["protocol"] + self.workchain_settings.tot_charge.value = parameters["tot_charge"] # Advanced settings self.pseudo_family_selector.value = parameters["pseudo_family"] @@ -774,6 +794,7 @@ def get_input_parameters(self): run_bands=self.workchain_settings.bands_run.value, run_pdos=self.workchain_settings.pdos_run.value, protocol=self.workchain_settings.workchain_protocol.value, + tot_charge=self.workchain_settings.total_charge.value, # Codes pw_code=self.pw_code.value, dos_code=self.dos_code.value, @@ -856,6 +877,14 @@ def update_builder(buildy, resources, npools): electronic_type=ElectronicType(parameters["electronic_type"]), ) + # Updating tot_charge of the builder + builder.relax.base.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] + builder.bands.bands.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] + builder.bands.scf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] + builder.pdos.scf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] + builder.pdos.nscf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] + + if "kpoints_distance_override" in parameters: builder.kpoints_distance_override = Float( parameters["kpoints_distance_override"] From 644a2fbc2597d26cb7a05f1d2840d7568003540f Mon Sep 17 00:00:00 2001 From: AndresOrtegaGuerrero Date: Fri, 31 Mar 2023 07:36:40 +0000 Subject: [PATCH 2/6] adding the tot_charge to the final report --- aiidalab_qe/report.py | 1 + aiidalab_qe/static/workflow_summary.jinja | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/aiidalab_qe/report.py b/aiidalab_qe/report.py index b7646c92..8b181d41 100644 --- a/aiidalab_qe/report.py +++ b/aiidalab_qe/report.py @@ -42,6 +42,7 @@ def _generate_report_dict(qeapp_wc: WorkChainNode): # Material settings yield "material_magnetic", builder_parameters["spin_type"] yield "electronic_type", builder_parameters["electronic_type"] + yield "tot_charge", builder_parameters["tot_charge"] # Calculation settings yield "protocol", builder_parameters["protocol"] diff --git a/aiidalab_qe/static/workflow_summary.jinja b/aiidalab_qe/static/workflow_summary.jinja index ba317a40..c556c845 100644 --- a/aiidalab_qe/static/workflow_summary.jinja +++ b/aiidalab_qe/static/workflow_summary.jinja @@ -32,7 +32,11 @@ Electronic type {{ electronic_type }} - + + Total Charge + {{ tot_charge }} + +
From a02923c5136b67dab9f95b9b4021ef99ffe5022b Mon Sep 17 00:00:00 2001 From: AndresOrtegaGuerrero Date: Fri, 31 Mar 2023 08:03:24 +0000 Subject: [PATCH 3/6] pre-commit fix --- aiidalab_qe/static/workflow_summary.jinja | 2 +- aiidalab_qe/steps.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/aiidalab_qe/static/workflow_summary.jinja b/aiidalab_qe/static/workflow_summary.jinja index c556c845..b8d0b26e 100644 --- a/aiidalab_qe/static/workflow_summary.jinja +++ b/aiidalab_qe/static/workflow_summary.jinja @@ -36,7 +36,7 @@ Total Charge {{ tot_charge }} - +
diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index bb018001..9ab763d5 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -878,12 +878,21 @@ def update_builder(buildy, resources, npools): ) # Updating tot_charge of the builder - builder.relax.base.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] - builder.bands.bands.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] - builder.bands.scf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] - builder.pdos.scf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] - builder.pdos.nscf.pw.parameters['SYSTEM']['tot_charge'] = parameters["tot_charge"] - + builder.relax.base.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + "tot_charge" + ] + builder.bands.bands.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + "tot_charge" + ] + builder.bands.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + "tot_charge" + ] + builder.pdos.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + "tot_charge" + ] + builder.pdos.nscf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + "tot_charge" + ] if "kpoints_distance_override" in parameters: builder.kpoints_distance_override = Float( From 397835a9505ba1e5e55af552e23523ab6d386f3d Mon Sep 17 00:00:00 2001 From: AndresOrtegaGuerrero Date: Thu, 6 Apr 2023 09:30:47 +0000 Subject: [PATCH 4/6] adding tot_charge in advanced tab --- aiidalab_qe/steps.py | 103 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 88 insertions(+), 15 deletions(-) diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index 9ab763d5..ce5ba0ab 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -196,6 +196,66 @@ def __init__(self, **kwargs): **kwargs, ) +class PwAdvancedSettings(ipw.VBox): + + title = ipw.HTML( + """
+

Pw Advanced Settings

""" + ) + pw_advanced_settings = ipw.HTML( + """Select the advanced settings for the pw.x code.""" + ) + #set here defaul values for the advanced settings + tot_charge_default = 0 + + def __init__(self, **kwargs): + self.override_pw_advanced_settings = ipw.Checkbox( + description="Override", + indent=False, + value=False, + ) + self.override_tot_charge = ipw.Checkbox( + description ="", + indent=False, + value=False, + ) + + self.tot_charge = ipw.IntSlider( + value=0, + min=-2, + max=2, + step=1, + disabled=False, + description="Total charge:", + style={"description_width": "initial"}, + ) + ipw.dlink( + (self.override_pw_advanced_settings, "value"), + (self.override_tot_charge, "disabled"), + lambda override: not override, + ) + ipw.dlink( + (self.override_tot_charge, "value"), + (self.tot_charge, "disabled"), + lambda override: not override, + ) + self.tot_charge.observe(self.set_pw_settings, "value") + self.override_pw_advanced_settings.observe(self.set_pw_settings, "value") + super().__init__( + children=[ + self.title, + ipw.HBox([self.pw_advanced_settings, self.override_pw_advanced_settings,],layout=ipw.Layout(justify_content="space-between"),), + ipw.HBox([self.tot_charge, self.override_tot_charge], layout=ipw.Layout(justify_content="space-between")), + ], + **kwargs, + ) + def set_pw_settings(self, _=None): + self.tot_charge.value = ( + self.tot_charge.value + if self.pw_advanced_settings.value and self.override_tot_charge.value + else self.tot_charge_default + ) + class SmearingSettings(ipw.VBox): @@ -330,6 +390,7 @@ class ConfigureQeAppWorkChainStep(ipw.VBox, WizardAppWidgetStep): workchain_settings = traitlets.Instance(WorkChainSettings, allow_none=True) kpoints_settings = traitlets.Instance(KpointSettings, allow_none=True) smearing_settings = traitlets.Instance(SmearingSettings, allow_none=True) + pw_advanced_settings = traitlets.Instance(PwAdvancedSettings, allow_none=True) pseudo_family_selector = traitlets.Instance(PseudoFamilySelector, allow_none=True) def __init__(self, **kwargs): @@ -341,6 +402,7 @@ def __init__(self, **kwargs): self.kpoints_settings = KpointSettings() self.smearing_settings = SmearingSettings() + self.pw_advanced_settings = PwAdvancedSettings() self.pseudo_family_selector = PseudoFamilySelector() ipw.dlink( @@ -372,6 +434,7 @@ def __init__(self, **kwargs): self.workchain_settings, ipw.VBox( children=[ + self.pw_advanced_settings, self.pseudo_family_selector, self.kpoints_settings, self.smearing_settings, @@ -495,6 +558,7 @@ class SubmitQeAppWorkChainStep(ipw.VBox, WizardAppWidgetStep): previous_step_state = traitlets.UseEnum(WizardAppWidgetStep.State) workchain_settings = traitlets.Instance(WorkChainSettings, allow_none=True) kpoints_settings = traitlets.Instance(KpointSettings, allow_none=True) + pw_advanced_settings = traitlets.Instance(PwAdvancedSettings, allow_none=True) smearing_settings = traitlets.Instance(SmearingSettings, allow_none=True) pseudo_family_selector = traitlets.Instance(PseudoFamilySelector, allow_none=True) _submission_blockers = traitlets.List(traitlets.Unicode) @@ -802,6 +866,14 @@ def get_input_parameters(self): # Advanced settings pseudo_family=self.pseudo_family_selector.value, ) + #Should we make this logic in the class of advanced settings? + if self.pw_advanced_settings.override_protocol_settings.value: + parameters["override"] = {"pw": {"parameters": {"SYSTEM": {}}},} + if self.pw_advanced_settings.override_tot_charge.value: + parameters["override"]["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.pw_advanced_settings.total_charge.value + else: + parameters["override"] = None + if self.kpoints_settings.override_protocol_kpoints.value: parameters[ "kpoints_distance_override" @@ -871,6 +943,7 @@ def update_builder(buildy, resources, npools): dos_code=load_code(parameters["dos_code"]), projwfc_code=load_code(parameters["projwfc_code"]), protocol=parameters["protocol"], + overrides=parameters["override"], pseudo_family=parameters["pseudo_family"], relax_type=RelaxType(parameters["relax_type"]), spin_type=SpinType(parameters["spin_type"]), @@ -878,21 +951,21 @@ def update_builder(buildy, resources, npools): ) # Updating tot_charge of the builder - builder.relax.base.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - "tot_charge" - ] - builder.bands.bands.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - "tot_charge" - ] - builder.bands.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - "tot_charge" - ] - builder.pdos.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - "tot_charge" - ] - builder.pdos.nscf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - "tot_charge" - ] + # builder.relax.base.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + # "tot_charge" + # ] + # builder.bands.bands.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + # "tot_charge" + # ] + # builder.bands.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + # "tot_charge" + # ] + # builder.pdos.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + # "tot_charge" + # ] + # builder.pdos.nscf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ + # "tot_charge" + # ] if "kpoints_distance_override" in parameters: builder.kpoints_distance_override = Float( From 59ed8957494e3f3bbcd1e8a0277622439435e6e5 Mon Sep 17 00:00:00 2001 From: AndresOrtegaGuerrero Date: Thu, 6 Apr 2023 12:43:59 +0000 Subject: [PATCH 5/6] updating tot_charge settings and tot_charge in advanced report --- aiidalab_qe/parameters/qeapp.yaml | 1 - aiidalab_qe/report.py | 4 +- aiidalab_qe/static/workflow_summary.jinja | 9 ++- aiidalab_qe/steps.py | 73 +++++++++-------------- qe.ipynb | 1 + 5 files changed, 37 insertions(+), 51 deletions(-) diff --git a/aiidalab_qe/parameters/qeapp.yaml b/aiidalab_qe/parameters/qeapp.yaml index 9b62a57b..1af57544 100644 --- a/aiidalab_qe/parameters/qeapp.yaml +++ b/aiidalab_qe/parameters/qeapp.yaml @@ -20,4 +20,3 @@ protocol: moderate kpoints_distance_override: pseudo_family: SSSP/1.2/PBEsol/efficiency -tot_charge: 0 diff --git a/aiidalab_qe/report.py b/aiidalab_qe/report.py index 8b181d41..f5ca5956 100644 --- a/aiidalab_qe/report.py +++ b/aiidalab_qe/report.py @@ -42,7 +42,9 @@ def _generate_report_dict(qeapp_wc: WorkChainNode): # Material settings yield "material_magnetic", builder_parameters["spin_type"] yield "electronic_type", builder_parameters["electronic_type"] - yield "tot_charge", builder_parameters["tot_charge"] + + #Advanced settings + yield "tot_charge", builder_parameters.get("tot_charge", None) # Calculation settings yield "protocol", builder_parameters["protocol"] diff --git a/aiidalab_qe/static/workflow_summary.jinja b/aiidalab_qe/static/workflow_summary.jinja index b8d0b26e..6c835144 100644 --- a/aiidalab_qe/static/workflow_summary.jinja +++ b/aiidalab_qe/static/workflow_summary.jinja @@ -32,11 +32,6 @@ Electronic type {{ electronic_type }} - - Total Charge - {{ tot_charge }} - -
@@ -90,6 +85,10 @@ {{ nscf_kpoints_distance }} Å-1 {% endif %} + {% if tot_charge %} + Total Charge + {{ tot_charge }} + {% endif %}
diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index ce5ba0ab..b8aa739e 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -108,14 +108,6 @@ def __init__(self, **kwargs): style={"description_width": "initial"}, ) - # tot_charge: total charge of the simulations - self.tot_charge = ipw.IntSlider( - value=DEFAULT_PARAMETERS["tot_charge"], - min=-2, - max=2, - step=1, - ) - # Checkbox to see if the band structure should be calculated self.bands_run = ipw.Checkbox( description="", @@ -167,17 +159,6 @@ def __init__(self, **kwargs): self.spin_type, ] ), - ipw.HBox( - children=[ - ipw.Label( - "Total charge:", - layout=ipw.Layout( - justify_content="flex-start", width="120px" - ), - ), - self.tot_charge, - ] - ), self.properties_title, ipw.HTML("Select which properties to calculate:"), ipw.HBox(children=[ipw.HTML("Band structure"), self.bands_run]), @@ -202,7 +183,7 @@ class PwAdvancedSettings(ipw.VBox): """

Pw Advanced Settings

""" ) - pw_advanced_settings = ipw.HTML( + description = ipw.HTML( """Select the advanced settings for the pw.x code.""" ) #set here defaul values for the advanced settings @@ -244,7 +225,7 @@ def __init__(self, **kwargs): super().__init__( children=[ self.title, - ipw.HBox([self.pw_advanced_settings, self.override_pw_advanced_settings,],layout=ipw.Layout(justify_content="space-between"),), + ipw.HBox([self.description, self.override_pw_advanced_settings,],layout=ipw.Layout(justify_content="space-between"),), ipw.HBox([self.tot_charge, self.override_tot_charge], layout=ipw.Layout(justify_content="space-between")), ], **kwargs, @@ -252,7 +233,7 @@ def __init__(self, **kwargs): def set_pw_settings(self, _=None): self.tot_charge.value = ( self.tot_charge.value - if self.pw_advanced_settings.value and self.override_tot_charge.value + if self.override_pw_advanced_settings.value and self.override_tot_charge.value else self.tot_charge_default ) @@ -486,7 +467,6 @@ def set_input_parameters(self, parameters): self.workchain_settings.bands_run.value = parameters["run_bands"] self.workchain_settings.pdos_run.value = parameters["run_pdos"] self.workchain_settings.workchain_protocol.value = parameters["protocol"] - self.workchain_settings.tot_charge.value = parameters["tot_charge"] # Advanced settings self.pseudo_family_selector.value = parameters["pseudo_family"] @@ -858,7 +838,7 @@ def get_input_parameters(self): run_bands=self.workchain_settings.bands_run.value, run_pdos=self.workchain_settings.pdos_run.value, protocol=self.workchain_settings.workchain_protocol.value, - tot_charge=self.workchain_settings.total_charge.value, + # Codes pw_code=self.pw_code.value, dos_code=self.dos_code.value, @@ -867,10 +847,32 @@ def get_input_parameters(self): pseudo_family=self.pseudo_family_selector.value, ) #Should we make this logic in the class of advanced settings? - if self.pw_advanced_settings.override_protocol_settings.value: - parameters["override"] = {"pw": {"parameters": {"SYSTEM": {}}},} + if self.pw_advanced_settings.override_pw_advanced_settings.value: + pw_base = {"pw": {"parameters": {"SYSTEM": {}}},} + if self.pw_advanced_settings.override_tot_charge.value: - parameters["override"]["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.pw_advanced_settings.total_charge.value + pw_base["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.pw_advanced_settings.tot_charge.value + parameters["tot_charge"] = self.pw_advanced_settings.tot_charge.value # This to be placed in the builder and also for report + + parameters["override"] = { + "relax": { + "base": pw_base, + "base_final_scf": pw_base, + }, + "bands": { + "relax": { + "base": pw_base, + "base_final_scf": pw_base, + }, + "scf": pw_base, + "bands": pw_base, + }, + "pdos": { + "scf": pw_base, + "nscf": pw_base, + }, + + } else: parameters["override"] = None @@ -950,23 +952,6 @@ def update_builder(buildy, resources, npools): electronic_type=ElectronicType(parameters["electronic_type"]), ) - # Updating tot_charge of the builder - # builder.relax.base.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - # "tot_charge" - # ] - # builder.bands.bands.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - # "tot_charge" - # ] - # builder.bands.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - # "tot_charge" - # ] - # builder.pdos.scf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - # "tot_charge" - # ] - # builder.pdos.nscf.pw.parameters["SYSTEM"]["tot_charge"] = parameters[ - # "tot_charge" - # ] - if "kpoints_distance_override" in parameters: builder.kpoints_distance_override = Float( parameters["kpoints_distance_override"] diff --git a/qe.ipynb b/qe.ipynb index 729cfa74..9ed6d329 100644 --- a/qe.ipynb +++ b/qe.ipynb @@ -83,6 +83,7 @@ "ipw.dlink((configure_qe_app_work_chain_step, 'state'), (submit_qe_app_work_chain_step, 'previous_step_state'))\n", "ipw.dlink((configure_qe_app_work_chain_step, 'workchain_settings'), (submit_qe_app_work_chain_step, 'workchain_settings'))\n", "ipw.dlink((configure_qe_app_work_chain_step, 'kpoints_settings'), (submit_qe_app_work_chain_step, 'kpoints_settings'))\n", + "ipw.dlink((configure_qe_app_work_chain_step, 'pw_advanced_settings'), (submit_qe_app_work_chain_step, 'pw_advanced_settings'))\n", "ipw.dlink((configure_qe_app_work_chain_step, 'smearing_settings'), (submit_qe_app_work_chain_step, 'smearing_settings'))\n", "ipw.dlink((configure_qe_app_work_chain_step, 'pseudo_family_selector'), (submit_qe_app_work_chain_step, 'pseudo_family_selector'))\n", "\n", From 4b056952b10f06d414921a2ff14eda63b0e18f55 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Apr 2023 12:44:20 +0000 Subject: [PATCH 6/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- aiidalab_qe/parameters/qeapp.yaml | 1 - aiidalab_qe/report.py | 4 +-- aiidalab_qe/steps.py | 50 ++++++++++++++++++++----------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/aiidalab_qe/parameters/qeapp.yaml b/aiidalab_qe/parameters/qeapp.yaml index 1af57544..16bc9518 100644 --- a/aiidalab_qe/parameters/qeapp.yaml +++ b/aiidalab_qe/parameters/qeapp.yaml @@ -19,4 +19,3 @@ electronic_type: metal protocol: moderate kpoints_distance_override: pseudo_family: SSSP/1.2/PBEsol/efficiency - diff --git a/aiidalab_qe/report.py b/aiidalab_qe/report.py index f5ca5956..d4f8f918 100644 --- a/aiidalab_qe/report.py +++ b/aiidalab_qe/report.py @@ -42,8 +42,8 @@ def _generate_report_dict(qeapp_wc: WorkChainNode): # Material settings yield "material_magnetic", builder_parameters["spin_type"] yield "electronic_type", builder_parameters["electronic_type"] - - #Advanced settings + + # Advanced settings yield "tot_charge", builder_parameters.get("tot_charge", None) # Calculation settings diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index b8aa739e..287f2f97 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -177,16 +177,15 @@ def __init__(self, **kwargs): **kwargs, ) + class PwAdvancedSettings(ipw.VBox): title = ipw.HTML( """

Pw Advanced Settings

""" ) - description = ipw.HTML( - """Select the advanced settings for the pw.x code.""" - ) - #set here defaul values for the advanced settings + description = ipw.HTML("""Select the advanced settings for the pw.x code.""") + # set here defaul values for the advanced settings tot_charge_default = 0 def __init__(self, **kwargs): @@ -196,11 +195,11 @@ def __init__(self, **kwargs): value=False, ) self.override_tot_charge = ipw.Checkbox( - description ="", + description="", indent=False, value=False, ) - + self.tot_charge = ipw.IntSlider( value=0, min=-2, @@ -225,15 +224,26 @@ def __init__(self, **kwargs): super().__init__( children=[ self.title, - ipw.HBox([self.description, self.override_pw_advanced_settings,],layout=ipw.Layout(justify_content="space-between"),), - ipw.HBox([self.tot_charge, self.override_tot_charge], layout=ipw.Layout(justify_content="space-between")), + ipw.HBox( + [ + self.description, + self.override_pw_advanced_settings, + ], + layout=ipw.Layout(justify_content="space-between"), + ), + ipw.HBox( + [self.tot_charge, self.override_tot_charge], + layout=ipw.Layout(justify_content="space-between"), + ), ], **kwargs, ) + def set_pw_settings(self, _=None): self.tot_charge.value = ( - self.tot_charge.value - if self.override_pw_advanced_settings.value and self.override_tot_charge.value + self.tot_charge.value + if self.override_pw_advanced_settings.value + and self.override_tot_charge.value else self.tot_charge_default ) @@ -838,7 +848,6 @@ def get_input_parameters(self): run_bands=self.workchain_settings.bands_run.value, run_pdos=self.workchain_settings.pdos_run.value, protocol=self.workchain_settings.workchain_protocol.value, - # Codes pw_code=self.pw_code.value, dos_code=self.dos_code.value, @@ -846,14 +855,22 @@ def get_input_parameters(self): # Advanced settings pseudo_family=self.pseudo_family_selector.value, ) - #Should we make this logic in the class of advanced settings? + # Should we make this logic in the class of advanced settings? if self.pw_advanced_settings.override_pw_advanced_settings.value: - pw_base = {"pw": {"parameters": {"SYSTEM": {}}},} + pw_base = { + "pw": {"parameters": {"SYSTEM": {}}}, + } if self.pw_advanced_settings.override_tot_charge.value: - pw_base["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.pw_advanced_settings.tot_charge.value - parameters["tot_charge"] = self.pw_advanced_settings.tot_charge.value # This to be placed in the builder and also for report - + pw_base["pw"]["parameters"]["SYSTEM"][ + "tot_charge" + ] = self.pw_advanced_settings.tot_charge.value + parameters[ + "tot_charge" + ] = ( + self.pw_advanced_settings.tot_charge.value + ) # This to be placed in the builder and also for report + parameters["override"] = { "relax": { "base": pw_base, @@ -871,7 +888,6 @@ def get_input_parameters(self): "scf": pw_base, "nscf": pw_base, }, - } else: parameters["override"] = None