From a3af4ccf3c4e09e0dee062240b8b40ff13011b07 Mon Sep 17 00:00:00 2001 From: ymzhang0 Date: Fri, 5 Dec 2025 16:11:08 +0100 Subject: [PATCH 1/2] Improve help text for all workflow inputs --- src/aiida_epw/workflows/base.py | 37 ++++++++----- src/aiida_epw/workflows/prep.py | 84 +++++++++++++++++++++++++---- src/aiida_epw/workflows/supercon.py | 73 +++++++++++++++++++++---- 3 files changed, 163 insertions(+), 31 deletions(-) diff --git a/src/aiida_epw/workflows/base.py b/src/aiida_epw/workflows/base.py index a09698f..545a209 100644 --- a/src/aiida_epw/workflows/base.py +++ b/src/aiida_epw/workflows/base.py @@ -94,8 +94,9 @@ def define(cls, spec): required=True, serializer=to_aiida_type, help=( - "The options dictionary for the calculation." - "It must be defined in the top-level as a solution of the conflict between `metadata_calculation` of the WorkChain and `metadata` of the Calculation." + "Dictionary containing the options for the calculation job." + "This input is defined at the top-level to resolve the conflict between" + "the WorkChain's `metadata` and the Calculation's `metadata` namespace." ) ) @@ -104,12 +105,14 @@ def define(cls, spec): valid_type=orm.StructureData, required=False, help=( - "The structure data to use for the generation of k/q points by `create_kpoints_from_distance` calcfunction." - "In principle, we should take the structure as the one we used in the previous calculation." - "However, it is a bit difficult to take all the restart cases into account if we have a long chain of EPW calculations." - "Therefore, for now we just provide it manually as an input." - "But in the future, it will be removed." - "In cases that the coarse and fine k/q points are explicitly speficied, this input is not necessary anymore." + "The StructureData used for generating k-points and q-points via the " + "`create_kpoints_from_distance` calculation function. This structure should match " + "the one used in the previous calculation (e.g., SCF, NSCF, or phonon calculation). " + "This input is only required when fine k/q-points need to be generated from a " + "distance specification. If coarse and fine k/q-points are explicitly provided " + "as `KpointsData` nodes, this input is not necessary. Note: This manual input " + "may be removed in future versions when automatic structure extraction from parent " + "calculations is implemented." ) ) @@ -119,9 +122,12 @@ def define(cls, spec): serializer=to_aiida_type, required=False, help=( - "The q-points distance to generate the find qpoints" - "If specified, the fine qpoints will be generated from `create_kpoints_from_distance` calcfunction." - "If not specified, the fine qpoints will be read from the inputs.qfpoints input." + "The distance between q-points in the fine q-point mesh. " + "If specified, the fine q-points will be automatically generated using the " + "`create_kpoints_from_distance` calculation function based on this distance and " + "the input StructureData. If not specified, the fine q-points must be explicitly " + "provided via the `qfpoints` input as a `KpointsData` node. This parameter is " + "mutually exclusive with `qfpoints` - only one should be provided." ) ) @@ -132,8 +138,13 @@ def define(cls, spec): serializer=to_aiida_type, required=False, help=( - "The factor to multiply the q-point mesh to get the fine k-point mesh" - "If not specified, the fine kpoints will be generated from the parent folder of the nscf calculation." + "Integer factor used to multiply each dimension of the fine q-point mesh to " + "obtain the fine k-point mesh. For example, if the fine q-point mesh is [4, 4, 4] " + "and `kfpoints_factor` is 2, the fine k-point mesh will be [8, 8, 8]. This ensures " + "that the k-point and q-point meshes are compatible. If not specified, the fine " + "k-points will be automatically extracted from the parent folder of the NSCF " + "calculation (when available), or must be explicitly provided via the `kfpoints` " + "input. This parameter is mutually exclusive with `kfpoints` - only one should be provided." ) ) diff --git a/src/aiida_epw/workflows/prep.py b/src/aiida_epw/workflows/prep.py index 6bf5c77..b913224 100644 --- a/src/aiida_epw/workflows/prep.py +++ b/src/aiida_epw/workflows/prep.py @@ -38,23 +38,65 @@ def define(cls, spec): """Define the work chain specification.""" super().define(spec) - spec.input("structure", valid_type=orm.StructureData) spec.input( - "clean_workdir", valid_type=orm.Bool, default=lambda: orm.Bool(False) + "structure", + valid_type=orm.StructureData, + help=( + "The StructureData for which the `EpwPrepWorkChain` will be performed. " + "This structure is used throughout the workflow for generating k-points and " + "q-points meshes, and is passed to all sub-workchains (Wannier90, phonon, and EPW)." + ) ) spec.input( - "qpoints_distance", valid_type=orm.Float, default=lambda: orm.Float(0.5) + "clean_workdir", + valid_type=orm.Bool, + default=lambda: orm.Bool(False), + help=( + "Whether the remote working directories of all child calculations " + "will be cleaned up after the workchain terminates." + ) + ) + spec.input( + "qpoints_distance", + valid_type=orm.Float, + default=lambda: orm.Float(0.5), + help=( + "The distance between q-points in the coarse q-point " + "mesh used for the `PhBaseWorkChain`. This distance is used to automatically " + "generate the q-point mesh via `create_kpoints_from_distance`." + ) ) spec.input( "kpoints_distance_scf", valid_type=orm.Float, default=lambda: orm.Float(0.15), + help=( + "The distance between k-points in the k-point mesh " + "used for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain`." + "This distance is used to automatically " + "generate the k-point mesh via `create_kpoints_from_distance`. " + ) ) spec.input( - "kpoints_factor_nscf", valid_type=orm.Int, default=lambda: orm.Int(2) + "kpoints_factor_nscf", + valid_type=orm.Int, + default=lambda: orm.Int(2), + help=( + "Factor used to multiply each dimension of the coarse q-point mesh to " + "obtain the coarse k-point mesh for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain`. " + "For example, if the coarse q-point mesh is [4, 4, 4] and `kpoints_factor_nscf` is 2, " + "the coarse k-point mesh will be [8, 8, 8]. This ensures compatibility between " + "coarse k-point and coarse q-point meshes as required by `EpwBaseWorkChain`. " + ) ) spec.input( - "w90_chk_to_ukk_script", valid_type=(orm.RemoteData, orm.SinglefileData) + "w90_chk_to_ukk_script", + valid_type=(orm.RemoteData, orm.SinglefileData), + help=( + "A Julia script that converts the Wannier90 output files " + "(`prefix.chk`, `prefix.mmn`, ...) to the `epw.x` input format. This script is executed " + "as a prepend command before running `epw.x`. " + ) ) spec.expose_inputs( @@ -65,7 +107,10 @@ def define(cls, spec): "clean_workdir", ), namespace_options={ - "help": "Inputs for the `Wannier90OptimizeWorkChain/Wannier90BandsWorkChain`." + "help": ( + "Inputs for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain` that performs the Wannierization externally. " + "The `structure` and `clean_workdir` inputs are excluded as they are coordinated by the `EpwPrepWorkChain` " + ) }, ) spec.inputs["w90_bands"].validator = validate_inputs_bands @@ -79,7 +124,11 @@ def define(cls, spec): "qpoints_distance", ), namespace_options={ - "help": "Inputs for the `PhBaseWorkChain` that does the `ph.x` calculation." + "help": ( + "Inputs for the `PhBaseWorkChain` that performs the `ph.x` calculation. " + "The `clean_workdir`, `ph.parent_folder`, `qpoints`, " + "and `qpoints_distance` inputs are excluded as they are coordinated by the `EpwPrepWorkChain`." + ) }, ) spec.expose_inputs( @@ -99,7 +148,15 @@ def define(cls, spec): "parent_folder_epw", "parent_folder_chk", ), - namespace_options={"help": "Inputs for the `EpwBaseWorkChain`."}, + namespace_options={ + "help": ( + "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation " + "for the transition from coarse Bloch representation to Wannier representation. " + "The `structure`, `clean_workdir`, `kpoints`, `qpoints`, `kfpoints`, `qfpoints`, " + "`qfpoints_distance`, `kfpoints_factor`, and parent folder inputs are excluded " + "as they are coordinated by the `EpwPrepWorkChain`." + ) + }, ) spec.expose_inputs( EpwBaseWorkChain, @@ -115,7 +172,16 @@ def define(cls, spec): "kfpoints_factor", "parent_folder_epw", ), - namespace_options={"help": "Inputs namespace for `EpwBaseWorkChain` that runs the `epw.x` calculation in interpolation mode, i.e. the interpolated electron and phonon band structures."}, + namespace_options={ + "help": ( + "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation " + "for the interpolation of electron and phonon band structures. " + "The `structure`, `clean_workdir`, `kpoints`, `qpoints`, `kfpoints`, `qfpoints`, " + "`qfpoints_distance`, `kfpoints_factor`, and `parent_folder_epw` inputs are " + "excluded as they are coordinated by the `EpwPrepWorkChain`. The fine k/q-points " + "are set to the band structure k-points path for the interpolation." + ) + }, ) spec.output("retrieved", valid_type=orm.FolderData) spec.output("epw_folder", valid_type=orm.RemoteStashFolderData) diff --git a/src/aiida_epw/workflows/supercon.py b/src/aiida_epw/workflows/supercon.py index d954808..a5909d4 100644 --- a/src/aiida_epw/workflows/supercon.py +++ b/src/aiida_epw/workflows/supercon.py @@ -54,17 +54,60 @@ def define(cls, spec): """Define the work chain specification.""" super().define(spec) - spec.input("structure", valid_type=orm.StructureData) spec.input( - "clean_workdir", valid_type=orm.Bool, default=lambda: orm.Bool(False) + "structure", + valid_type=orm.StructureData, + help=( + "The StructureData for which the `SuperConWorkChain` will be performed. " + "This structure should match the one used in the " + "parent `EpwBaseWorkChain` or `EpwPrepWorkChain` (i.e. creator of the `parent_folder_epw`)." + ) + ) + spec.input( + "clean_workdir", + valid_type=orm.Bool, + default=lambda: orm.Bool(False), + help=( + "Whether the remote working directories of all child calculations " + "will be cleaned up after the workchain terminates." + ) ) spec.input( - "parent_folder_epw", valid_type=(orm.RemoteData, orm.RemoteStashFolderData) + "parent_folder_epw", + valid_type=(orm.RemoteData, orm.RemoteStashFolderData), + help=( + "The remote folder containing the output files from a previous `epw.x` calculation. " + "This usually comes from the output of an `EpwBaseWorkChain` or `EpwPrepWorkChain` that " + "has performed the `epw.x` calculation for the transition from coarse Bloch representation to Wannier representation. " + "The folder contains the out/prefix.epmatwp, crystal.fmt, dmedata.fmt, vmedata.fmt, ... files " + "needed for the subsequent `EpwBaseWorkChain` calculations. " + ) ) - spec.input("interpolation_distance", valid_type=(orm.Float, orm.List)) - spec.input("convergence_threshold", valid_type=orm.Float, required=False) spec.input( - "always_run_final", valid_type=orm.Bool, default=lambda: orm.Bool(False) + "interpolation_distance", + valid_type=(orm.Float, orm.List), + help=( + "A list of distances between q-points in the fine q-point " + "mesh used for the convergence study of the Allen-Dynes critical temperature. " + ) + ) + spec.input( + "convergence_threshold", + valid_type=orm.Float, + required=False, + help=( + "The convergence threshold for the Allen-Dynes critical temperature. " + "The convergence loop will stop when the difference between consecutive Allen-Dynes critical temperatures is less than this threshold. " + ) + ) + spec.input( + "always_run_final", + valid_type=orm.Bool, + default=lambda: orm.Bool(False), + help=( + "Whether the final isotropic and anisotropic `EpwBaseWorkChain`s will be run " + "even if the Allen-Dynes critical temperature has not converged with respect to the convergence threshold. " + ) ) spec.expose_inputs( @@ -79,7 +122,11 @@ def define(cls, spec): "kfpoints", ), namespace_options={ - "help": "Inputs for the interpolation `EpwBaseWorkChain`s." + "help": ( + "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation for Allen-Dynes Tc convergence. " + "The `clean_workdir`, `parent_folder_epw`, `qfpoints_distance`, and `kfpoints_factor` inputs " + "are excluded as they are coordinated by the `SuperConWorkChain`." + ) }, ) spec.expose_inputs( @@ -94,7 +141,11 @@ def define(cls, spec): "kfpoints_factor", ), namespace_options={ - "help": "Inputs for the final isotropic `EpwBaseWorkChain`." + "help": ( + "Inputs for the final `EpwBaseWorkChain` that performs the `epw.x` calculation for the isotropic Migdal-Eliashberg equation. " + "The `clean_workdir`, `parent_folder_epw`, `qfpoints`, and `kfpoints` inputs " + "are excluded as they are coordinated by the `SuperConWorkChain`." + ) }, ) spec.expose_inputs( @@ -109,7 +160,11 @@ def define(cls, spec): "kfpoints_factor", ), namespace_options={ - "help": "Inputs for the final anisotropic `EpwBaseWorkChain`." + "help": ( + "Inputs for the final `EpwBaseWorkChain` that performs the `epw.x` calculation for the anisotropic Migdal-Eliashberg equation. " + "The `clean_workdir`, `parent_folder_epw`, `qfpoints`, and `kfpoints` inputs " + "are excluded as they are coordinated by the `SuperConWorkChain`." + ) }, ) spec.outline( From baed0c90116d713352263e0aab788fdd9219cc5f Mon Sep 17 00:00:00 2001 From: ymzhang0 Date: Mon, 8 Dec 2025 14:44:23 +0100 Subject: [PATCH 2/2] improve doc clean up those `help` strings with unnecessarily technical information. --- src/aiida_epw/workflows/base.py | 36 +++++++------------- src/aiida_epw/workflows/prep.py | 53 +++++++++++------------------ src/aiida_epw/workflows/supercon.py | 42 +++++++++++------------ 3 files changed, 50 insertions(+), 81 deletions(-) diff --git a/src/aiida_epw/workflows/base.py b/src/aiida_epw/workflows/base.py index 545a209..ac0a177 100644 --- a/src/aiida_epw/workflows/base.py +++ b/src/aiida_epw/workflows/base.py @@ -94,9 +94,7 @@ def define(cls, spec): required=True, serializer=to_aiida_type, help=( - "Dictionary containing the options for the calculation job." - "This input is defined at the top-level to resolve the conflict between" - "the WorkChain's `metadata` and the Calculation's `metadata` namespace." + "Dictionary containing the `metadata.options` for the `EpwCalculation`." ) ) @@ -105,14 +103,9 @@ def define(cls, spec): valid_type=orm.StructureData, required=False, help=( - "The StructureData used for generating k-points and q-points via the " - "`create_kpoints_from_distance` calculation function. This structure should match " - "the one used in the previous calculation (e.g., SCF, NSCF, or phonon calculation). " - "This input is only required when fine k/q-points need to be generated from a " - "distance specification. If coarse and fine k/q-points are explicitly provided " - "as `KpointsData` nodes, this input is not necessary. Note: This manual input " - "may be removed in future versions when automatic structure extraction from parent " - "calculations is implemented." + "Structure used to generate k-point and q-point meshes. Should match the " + "one used in the previous `Wannier90BandsWorkChain`. Only required when " + "fine k/q meshes are built from a distance." ) ) @@ -122,12 +115,10 @@ def define(cls, spec): serializer=to_aiida_type, required=False, help=( - "The distance between q-points in the fine q-point mesh. " - "If specified, the fine q-points will be automatically generated using the " - "`create_kpoints_from_distance` calculation function based on this distance and " - "the input StructureData. If not specified, the fine q-points must be explicitly " - "provided via the `qfpoints` input as a `KpointsData` node. This parameter is " - "mutually exclusive with `qfpoints` - only one should be provided." + "Distance between q-points in the fine mesh. Mutually exclusive with " + "`qfpoints`; provide only one. When set, fine q-points are generated " + "from the input structure and this distance. Otherwise, supply fine " + "q-points explicitly." ) ) @@ -138,13 +129,10 @@ def define(cls, spec): serializer=to_aiida_type, required=False, help=( - "Integer factor used to multiply each dimension of the fine q-point mesh to " - "obtain the fine k-point mesh. For example, if the fine q-point mesh is [4, 4, 4] " - "and `kfpoints_factor` is 2, the fine k-point mesh will be [8, 8, 8]. This ensures " - "that the k-point and q-point meshes are compatible. If not specified, the fine " - "k-points will be automatically extracted from the parent folder of the NSCF " - "calculation (when available), or must be explicitly provided via the `kfpoints` " - "input. This parameter is mutually exclusive with `kfpoints` - only one should be provided." + "Factor applied to each dimension of the fine q-point mesh to obtain the " + "fine k-point mesh. Mutually exclusive with `kfpoints`; provide only one. " + "For example, a fine q-mesh [40, 40, 40] with `kfpoints_factor=2` becomes " + "[80, 80, 80]." ) ) diff --git a/src/aiida_epw/workflows/prep.py b/src/aiida_epw/workflows/prep.py index b913224..77fb153 100644 --- a/src/aiida_epw/workflows/prep.py +++ b/src/aiida_epw/workflows/prep.py @@ -42,9 +42,9 @@ def define(cls, spec): "structure", valid_type=orm.StructureData, help=( - "The StructureData for which the `EpwPrepWorkChain` will be performed. " - "This structure is used throughout the workflow for generating k-points and " - "q-points meshes, and is passed to all sub-workchains (Wannier90, phonon, and EPW)." + "Structure used to generate k-point and q-point meshes and passed to all " + "child workflows (`Wannier90BandsWorkChain`/`Wannier90OptimizeWorkChain`, " + "`PhBaseWorkChain`, and `EpwBaseWorkChain`)." ) ) spec.input( @@ -52,8 +52,8 @@ def define(cls, spec): valid_type=orm.Bool, default=lambda: orm.Bool(False), help=( - "Whether the remote working directories of all child calculations " - "will be cleaned up after the workchain terminates." + "Whether the remote working directories of all child calculations will be " + "cleaned up after the workchain terminates." ) ) spec.input( @@ -61,9 +61,7 @@ def define(cls, spec): valid_type=orm.Float, default=lambda: orm.Float(0.5), help=( - "The distance between q-points in the coarse q-point " - "mesh used for the `PhBaseWorkChain`. This distance is used to automatically " - "generate the q-point mesh via `create_kpoints_from_distance`." + "Distance between q-points in the coarse q-point mesh used for the `PhBaseWorkChain`." ) ) spec.input( @@ -71,10 +69,8 @@ def define(cls, spec): valid_type=orm.Float, default=lambda: orm.Float(0.15), help=( - "The distance between k-points in the k-point mesh " - "used for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain`." - "This distance is used to automatically " - "generate the k-point mesh via `create_kpoints_from_distance`. " + "Distance between k-points in the k-point mesh used for the " + "`Wannier90OptimizeWorkChain`/`Wannier90BandsWorkChain`." ) ) spec.input( @@ -82,20 +78,18 @@ def define(cls, spec): valid_type=orm.Int, default=lambda: orm.Int(2), help=( - "Factor used to multiply each dimension of the coarse q-point mesh to " - "obtain the coarse k-point mesh for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain`. " - "For example, if the coarse q-point mesh is [4, 4, 4] and `kpoints_factor_nscf` is 2, " - "the coarse k-point mesh will be [8, 8, 8]. This ensures compatibility between " - "coarse k-point and coarse q-point meshes as required by `EpwBaseWorkChain`. " + "Factor applied to each dimension of the coarse q-point mesh to build the " + "coarse k-point mesh for the `Wannier90OptimizeWorkChain`/`Wannier90BandsWorkChain`. " + "For example, a q-mesh [4, 4, 4] with `kpoints_factor_nscf=2` becomes a k-mesh [8, 8, 8]. " ) ) spec.input( "w90_chk_to_ukk_script", valid_type=(orm.RemoteData, orm.SinglefileData), help=( - "A Julia script that converts the Wannier90 output files " - "(`prefix.chk`, `prefix.mmn`, ...) to the `epw.x` input format. This script is executed " - "as a prepend command before running `epw.x`. " + "Julia script that converts `prefix.chk` from `wannier90.x` to the " + "`epw.x`-readable `prefix.ukk` (and adapts `prefix.mmn` for EPW >= v6.0). " + "Run as a prepend command before launching `epw.x`." ) ) @@ -108,8 +102,8 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the `Wannier90OptimizeWorkChain` or `Wannier90BandsWorkChain` that performs the Wannierization externally. " - "The `structure` and `clean_workdir` inputs are excluded as they are coordinated by the `EpwPrepWorkChain` " + "Inputs forwarded to `Wannier90OptimizeWorkChain / Wannier90BandsWorkChain` " + "that handle Wannierisation independently of the `epw.x` calculation." ) }, ) @@ -125,9 +119,7 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the `PhBaseWorkChain` that performs the `ph.x` calculation. " - "The `clean_workdir`, `ph.parent_folder`, `qpoints`, " - "and `qpoints_distance` inputs are excluded as they are coordinated by the `EpwPrepWorkChain`." + "Inputs forwarded to `PhBaseWorkChain` for running the `ph.x` calculation." ) }, ) @@ -150,11 +142,8 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation " - "for the transition from coarse Bloch representation to Wannier representation. " - "The `structure`, `clean_workdir`, `kpoints`, `qpoints`, `kfpoints`, `qfpoints`, " - "`qfpoints_distance`, `kfpoints_factor`, and parent folder inputs are excluded " - "as they are coordinated by the `EpwPrepWorkChain`." + "Inputs forwarded to `EpwBaseWorkChain` for the `epw.x` calculation that " + "bridges coarse Bloch and Wannier representations." ) }, ) @@ -176,10 +165,6 @@ def define(cls, spec): "help": ( "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation " "for the interpolation of electron and phonon band structures. " - "The `structure`, `clean_workdir`, `kpoints`, `qpoints`, `kfpoints`, `qfpoints`, " - "`qfpoints_distance`, `kfpoints_factor`, and `parent_folder_epw` inputs are " - "excluded as they are coordinated by the `EpwPrepWorkChain`. The fine k/q-points " - "are set to the band structure k-points path for the interpolation." ) }, ) diff --git a/src/aiida_epw/workflows/supercon.py b/src/aiida_epw/workflows/supercon.py index a5909d4..f0eb22e 100644 --- a/src/aiida_epw/workflows/supercon.py +++ b/src/aiida_epw/workflows/supercon.py @@ -58,9 +58,9 @@ def define(cls, spec): "structure", valid_type=orm.StructureData, help=( - "The StructureData for which the `SuperConWorkChain` will be performed. " - "This structure should match the one used in the " - "parent `EpwBaseWorkChain` or `EpwPrepWorkChain` (i.e. creator of the `parent_folder_epw`)." + "Structure used for this `SuperConWorkChain`. Should match the structure " + "used in the parent `EpwBaseWorkChain` or `EpwPrepWorkChain` that " + "produced `parent_folder_epw`." ) ) spec.input( @@ -76,19 +76,18 @@ def define(cls, spec): "parent_folder_epw", valid_type=(orm.RemoteData, orm.RemoteStashFolderData), help=( - "The remote folder containing the output files from a previous `epw.x` calculation. " - "This usually comes from the output of an `EpwBaseWorkChain` or `EpwPrepWorkChain` that " - "has performed the `epw.x` calculation for the transition from coarse Bloch representation to Wannier representation. " - "The folder contains the out/prefix.epmatwp, crystal.fmt, dmedata.fmt, vmedata.fmt, ... files " - "needed for the subsequent `EpwBaseWorkChain` calculations. " + "Remote folder with outputs from a previous `epw.x` run (typically from " + "`EpwBaseWorkChain` or `EpwPrepWorkChain`). Must contain files such as " + "`out/prefix.epmatwp`, `crystal.fmt`, `dmedata.fmt`, `vmedata.fmt`, etc., " + "needed by the next `EpwBaseWorkChain` calculations." ) ) spec.input( "interpolation_distance", valid_type=(orm.Float, orm.List), help=( - "A list of distances between q-points in the fine q-point " - "mesh used for the convergence study of the Allen-Dynes critical temperature. " + "Distance (or list of distances) between q-points in the fine mesh used " + "to converge the Allen-Dynes critical temperature." ) ) spec.input( @@ -96,8 +95,8 @@ def define(cls, spec): valid_type=orm.Float, required=False, help=( - "The convergence threshold for the Allen-Dynes critical temperature. " - "The convergence loop will stop when the difference between consecutive Allen-Dynes critical temperatures is less than this threshold. " + "Stopping threshold for the Allen-Dynes critical temperature: the loop " + "stops when consecutive values differ by less than this amount." ) ) spec.input( @@ -105,8 +104,8 @@ def define(cls, spec): valid_type=orm.Bool, default=lambda: orm.Bool(False), help=( - "Whether the final isotropic and anisotropic `EpwBaseWorkChain`s will be run " - "even if the Allen-Dynes critical temperature has not converged with respect to the convergence threshold. " + "Run the final isotropic and anisotropic `EpwBaseWorkChain`s even if the " + "Allen-Dynes temperature has not yet converged." ) ) @@ -123,9 +122,8 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the `EpwBaseWorkChain` that performs the `epw.x` calculation for Allen-Dynes Tc convergence. " - "The `clean_workdir`, `parent_folder_epw`, `qfpoints_distance`, and `kfpoints_factor` inputs " - "are excluded as they are coordinated by the `SuperConWorkChain`." + "Inputs forwarded to `EpwBaseWorkChain` for the `epw.x` runs used in " + "the Allen-Dynes Tc convergence." ) }, ) @@ -142,9 +140,8 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the final `EpwBaseWorkChain` that performs the `epw.x` calculation for the isotropic Migdal-Eliashberg equation. " - "The `clean_workdir`, `parent_folder_epw`, `qfpoints`, and `kfpoints` inputs " - "are excluded as they are coordinated by the `SuperConWorkChain`." + "Inputs forwarded to the final `EpwBaseWorkChain` for the isotropic " + "Migdal-Eliashberg calculation." ) }, ) @@ -161,9 +158,8 @@ def define(cls, spec): ), namespace_options={ "help": ( - "Inputs for the final `EpwBaseWorkChain` that performs the `epw.x` calculation for the anisotropic Migdal-Eliashberg equation. " - "The `clean_workdir`, `parent_folder_epw`, `qfpoints`, and `kfpoints` inputs " - "are excluded as they are coordinated by the `SuperConWorkChain`." + "Inputs forwarded to the final `EpwBaseWorkChain` for the anisotropic " + "Migdal-Eliashberg calculation." ) }, )