@mat3ra/wode 2025.10.1-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +17 -0
- package/LICENSE.md +15 -0
- package/README.md +164 -0
- package/assets/subworkflows/deepmd/deepmd.yml +31 -0
- package/assets/subworkflows/deepmd/espresso_cp_md.yml +16 -0
- package/assets/subworkflows/espresso/average_electrostatic_potential_find_minima.yml +27 -0
- package/assets/subworkflows/espresso/average_electrostatic_potential_via_band_structure.yml +67 -0
- package/assets/subworkflows/espresso/band_gap.yml +21 -0
- package/assets/subworkflows/espresso/band_gap_hse_dos.yml +30 -0
- package/assets/subworkflows/espresso/band_structure.yml +26 -0
- package/assets/subworkflows/espresso/band_structure_dos.yml +34 -0
- package/assets/subworkflows/espresso/band_structure_hse.yml +30 -0
- package/assets/subworkflows/espresso/band_structure_magn.yml +31 -0
- package/assets/subworkflows/espresso/band_structure_soc.yml +30 -0
- package/assets/subworkflows/espresso/dielectric_tensor.yml +35 -0
- package/assets/subworkflows/espresso/dos.yml +24 -0
- package/assets/subworkflows/espresso/electronic_density_mesh.yml +19 -0
- package/assets/subworkflows/espresso/esm.yml +14 -0
- package/assets/subworkflows/espresso/esm_relax.yml +14 -0
- package/assets/subworkflows/espresso/espresso_extract_kpoints.yml +16 -0
- package/assets/subworkflows/espresso/espresso_xml_get_qpt_irr.yml +12 -0
- package/assets/subworkflows/espresso/fixed_cell_relaxation.yml +16 -0
- package/assets/subworkflows/espresso/gw_band_structure_band_gap_full_frequency.yml +22 -0
- package/assets/subworkflows/espresso/gw_band_structure_band_gap_plasmon_pole.yml +22 -0
- package/assets/subworkflows/espresso/hubbard_u_hp.yml +21 -0
- package/assets/subworkflows/espresso/kpoint_convergence.yml +86 -0
- package/assets/subworkflows/espresso/neb.yml +16 -0
- package/assets/subworkflows/espresso/ph_init_qpoints.yml +14 -0
- package/assets/subworkflows/espresso/ph_single_irr_qpt.yml +14 -0
- package/assets/subworkflows/espresso/phonon_dispersions.yml +29 -0
- package/assets/subworkflows/espresso/phonon_dos.yml +29 -0
- package/assets/subworkflows/espresso/phonon_dos_dispersion.yml +34 -0
- package/assets/subworkflows/espresso/phonon_reduce.yml +29 -0
- package/assets/subworkflows/espresso/post_processor.yml +14 -0
- package/assets/subworkflows/espresso/pre_processor.yml +14 -0
- package/assets/subworkflows/espresso/pw_scf.yml +16 -0
- package/assets/subworkflows/espresso/recalculate_bands.yml +19 -0
- package/assets/subworkflows/espresso/surface_energy.yml +16 -0
- package/assets/subworkflows/espresso/total_energy.yml +16 -0
- package/assets/subworkflows/espresso/valence_band_offset_calc_from_previous_esp_vbm.yml +35 -0
- package/assets/subworkflows/espresso/variable_cell_relaxation.yml +18 -0
- package/assets/subworkflows/espresso/zero_point_energy.yml +19 -0
- package/assets/subworkflows/jupyterLab/jupyter_notebook.yml +17 -0
- package/assets/subworkflows/nwchem/total_energy.yml +16 -0
- package/assets/subworkflows/python/ml/classification_tail.yml +56 -0
- package/assets/subworkflows/python/ml/clustering_tail.yml +62 -0
- package/assets/subworkflows/python/ml/regression_tail.yml +56 -0
- package/assets/subworkflows/python/ml/train_head.yml +61 -0
- package/assets/subworkflows/python/python_script.yml +14 -0
- package/assets/subworkflows/shell/batch_espresso_pwscf.yml +14 -0
- package/assets/subworkflows/shell/hello_world.yml +14 -0
- package/assets/subworkflows/vasp/band_gap.yml +21 -0
- package/assets/subworkflows/vasp/band_structure.yml +21 -0
- package/assets/subworkflows/vasp/band_structure_dos.yml +23 -0
- package/assets/subworkflows/vasp/dos.yml +18 -0
- package/assets/subworkflows/vasp/fixed_cell_relaxation.yml +16 -0
- package/assets/subworkflows/vasp/initial_final_total_energies.yml +25 -0
- package/assets/subworkflows/vasp/kpoint_convergence.yml +89 -0
- package/assets/subworkflows/vasp/neb_subworkflow.yml +16 -0
- package/assets/subworkflows/vasp/prepare_images.yml +16 -0
- package/assets/subworkflows/vasp/recalculate_bands.yml +16 -0
- package/assets/subworkflows/vasp/surface_energy.yml +18 -0
- package/assets/subworkflows/vasp/total_energy.yml +16 -0
- package/assets/subworkflows/vasp/variable_cell_relaxation.yml +18 -0
- package/assets/subworkflows/vasp/zero_point_energy.yml +16 -0
- package/assets/workflows/deepmd/deepmd_md.yml +6 -0
- package/assets/workflows/espresso/band_gap.yml +4 -0
- package/assets/workflows/espresso/band_gap_dos_hse.yml +4 -0
- package/assets/workflows/espresso/band_structure.yml +4 -0
- package/assets/workflows/espresso/band_structure_dos.yml +4 -0
- package/assets/workflows/espresso/band_structure_hse.yml +14 -0
- package/assets/workflows/espresso/band_structure_magn.yml +7 -0
- package/assets/workflows/espresso/band_structure_soc.yml +7 -0
- package/assets/workflows/espresso/dielectric_tensor.yml +4 -0
- package/assets/workflows/espresso/dos.yml +4 -0
- package/assets/workflows/espresso/electronic_density_mesh.yml +4 -0
- package/assets/workflows/espresso/esm.yml +4 -0
- package/assets/workflows/espresso/esm_relax.yml +4 -0
- package/assets/workflows/espresso/fixed_cell_relaxation.yml +4 -0
- package/assets/workflows/espresso/gw_band_structure_band_gap_full_frequency.yml +4 -0
- package/assets/workflows/espresso/gw_band_structure_band_gap_plasmon_pole.yml +4 -0
- package/assets/workflows/espresso/hubbard_u_hp.yml +7 -0
- package/assets/workflows/espresso/kpoint_convergence.yml +4 -0
- package/assets/workflows/espresso/neb.yml +4 -0
- package/assets/workflows/espresso/phonon_dispersions.yml +4 -0
- package/assets/workflows/espresso/phonon_dos.yml +4 -0
- package/assets/workflows/espresso/phonon_dos_dispersion.yml +4 -0
- package/assets/workflows/espresso/phonon_map.yml +28 -0
- package/assets/workflows/espresso/recalculate_bands.yml +4 -0
- package/assets/workflows/espresso/surface_energy.yml +4 -0
- package/assets/workflows/espresso/total_energy.yml +4 -0
- package/assets/workflows/espresso/valence_band_offset.yml +171 -0
- package/assets/workflows/espresso/variable_cell_relaxation.yml +4 -0
- package/assets/workflows/espresso/zero_point_energy.yml +4 -0
- package/assets/workflows/jupyterLab/jupyter_notebook.yml +4 -0
- package/assets/workflows/nwchem/total_energy.yml +4 -0
- package/assets/workflows/python/ml/classification_workflow.yml +9 -0
- package/assets/workflows/python/ml/clustering_workflow.yml +9 -0
- package/assets/workflows/python/ml/regression_workflow.yml +9 -0
- package/assets/workflows/python/python_script.yml +4 -0
- package/assets/workflows/shell/batch_espresso_pwscf.yml +4 -0
- package/assets/workflows/shell/hello_world.yml +4 -0
- package/assets/workflows/vasp/band_gap.yml +4 -0
- package/assets/workflows/vasp/band_structure.yml +4 -0
- package/assets/workflows/vasp/band_structure_dos.yml +4 -0
- package/assets/workflows/vasp/dos.yml +4 -0
- package/assets/workflows/vasp/fixed_cell_relaxation.yml +4 -0
- package/assets/workflows/vasp/kpoint_convergence.yml +4 -0
- package/assets/workflows/vasp/neb.yml +8 -0
- package/assets/workflows/vasp/recalculate_bands.yml +4 -0
- package/assets/workflows/vasp/surface_energy.yml +4 -0
- package/assets/workflows/vasp/total_energy.yml +4 -0
- package/assets/workflows/vasp/variable_cell_relaxation.yml +4 -0
- package/assets/workflows/vasp/zero_point_energy.yml +4 -0
- package/build_workflows.js +65 -0
- package/dist/context/context.js +49 -0
- package/dist/context/mixins/ApplicationContextMixin.js +19 -0
- package/dist/context/mixins/JobContextMixin.js +39 -0
- package/dist/context/mixins/MaterialContextMixin.js +40 -0
- package/dist/context/mixins/MaterialsContextMixin.js +19 -0
- package/dist/context/mixins/MaterialsSetContextMixin.js +25 -0
- package/dist/context/mixins/MethodDataContextMixin.js +48 -0
- package/dist/context/mixins/WorkflowContextMixin.js +28 -0
- package/dist/context/providers/BoundaryConditionsFormDataProvider.js +86 -0
- package/dist/context/providers/CollinearMagnetizationContextProvider.js +113 -0
- package/dist/context/providers/HubbardContextProviderLegacy.js +81 -0
- package/dist/context/providers/HubbardJContextProvider.js +74 -0
- package/dist/context/providers/HubbardUContextProvider.js +77 -0
- package/dist/context/providers/HubbardVContextProvider.js +104 -0
- package/dist/context/providers/IonDynamicsContextProvider.js +62 -0
- package/dist/context/providers/MLSettingsContextProvider.js +52 -0
- package/dist/context/providers/MLTrainTestSplitContextProvider.js +48 -0
- package/dist/context/providers/NEBFormDataProvider.js +38 -0
- package/dist/context/providers/NonCollinearMagnetizationContextProvider.js +253 -0
- package/dist/context/providers/PlanewaveCutoffsContextProvider.js +67 -0
- package/dist/context/providers/PointsGridFormDataProvider.js +272 -0
- package/dist/context/providers/PointsPathFormDataProvider.js +155 -0
- package/dist/context/providers/by_application/ExecutableContextProvider.js +17 -0
- package/dist/context/providers/by_application/espresso/QENEBContextProvider.js +60 -0
- package/dist/context/providers/by_application/espresso/QEPWXContextProvider.js +149 -0
- package/dist/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +84 -0
- package/dist/context/providers/by_application/vasp/VASPContextProvider.js +64 -0
- package/dist/context/providers/by_application/vasp/VASPNEBContextProvider.js +56 -0
- package/dist/context/providers/settings.js +37 -0
- package/dist/context/providers.js +199 -0
- package/dist/enums.js +65 -0
- package/dist/index.js +64 -0
- package/dist/patch.js +19 -0
- package/dist/subworkflows/convergence/factory.js +35 -0
- package/dist/subworkflows/convergence/non_uniform_kgrid.js +31 -0
- package/dist/subworkflows/convergence/parameter.js +70 -0
- package/dist/subworkflows/convergence/uniform_kgrid.js +26 -0
- package/dist/subworkflows/convergence.js +189 -0
- package/dist/subworkflows/create.js +285 -0
- package/dist/subworkflows/dynamic/espresso/getQpointIrrep.js +34 -0
- package/dist/subworkflows/dynamic/index.js +19 -0
- package/dist/subworkflows/dynamic/surfaceEnergy.js +67 -0
- package/dist/subworkflows/index.js +19 -0
- package/dist/subworkflows/subworkflow.js +279 -0
- package/dist/units/assertion.js +37 -0
- package/dist/units/assignment.js +42 -0
- package/dist/units/base.js +91 -0
- package/dist/units/builders/AssertionUnitConfigBuilder.js +34 -0
- package/dist/units/builders/AssignmentUnitConfigBuilder.js +41 -0
- package/dist/units/builders/ExecutionUnitConfigBuilder.js +67 -0
- package/dist/units/builders/IOUnitConfigBuilder.js +54 -0
- package/dist/units/builders/UnitConfigBuilder.js +79 -0
- package/dist/units/builders/index.js +18 -0
- package/dist/units/condition.js +52 -0
- package/dist/units/execution.js +222 -0
- package/dist/units/factory.js +53 -0
- package/dist/units/index.js +82 -0
- package/dist/units/io.js +148 -0
- package/dist/units/map.js +38 -0
- package/dist/units/processing.js +41 -0
- package/dist/units/reduce.js +24 -0
- package/dist/units/subworkflow.js +23 -0
- package/dist/utils.js +92 -0
- package/dist/workflows/create.js +312 -0
- package/dist/workflows/default.js +41 -0
- package/dist/workflows/index.js +108 -0
- package/dist/workflows/relaxation.js +37 -0
- package/dist/workflows/workflow.js +303 -0
- package/package.json +94 -0
- package/src/context/context.js +47 -0
- package/src/context/mixins/ApplicationContextMixin.js +19 -0
- package/src/context/mixins/JobContextMixin.js +36 -0
- package/src/context/mixins/MaterialContextMixin.js +41 -0
- package/src/context/mixins/MaterialsContextMixin.js +18 -0
- package/src/context/mixins/MaterialsSetContextMixin.js +24 -0
- package/src/context/mixins/MethodDataContextMixin.js +48 -0
- package/src/context/mixins/WorkflowContextMixin.js +25 -0
- package/src/context/providers/BoundaryConditionsFormDataProvider.js +80 -0
- package/src/context/providers/CollinearMagnetizationContextProvider.js +117 -0
- package/src/context/providers/HubbardContextProviderLegacy.js +75 -0
- package/src/context/providers/HubbardJContextProvider.js +73 -0
- package/src/context/providers/HubbardUContextProvider.js +100 -0
- package/src/context/providers/HubbardVContextProvider.js +111 -0
- package/src/context/providers/IonDynamicsContextProvider.js +56 -0
- package/src/context/providers/MLSettingsContextProvider.js +48 -0
- package/src/context/providers/MLTrainTestSplitContextProvider.js +45 -0
- package/src/context/providers/NEBFormDataProvider.js +32 -0
- package/src/context/providers/NonCollinearMagnetizationContextProvider.js +269 -0
- package/src/context/providers/PlanewaveCutoffsContextProvider.js +68 -0
- package/src/context/providers/PointsGridFormDataProvider.js +285 -0
- package/src/context/providers/PointsPathFormDataProvider.js +165 -0
- package/src/context/providers/by_application/ExecutableContextProvider.js +10 -0
- package/src/context/providers/by_application/espresso/QENEBContextProvider.js +56 -0
- package/src/context/providers/by_application/espresso/QEPWXContextProvider.js +166 -0
- package/src/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +86 -0
- package/src/context/providers/by_application/vasp/VASPContextProvider.js +56 -0
- package/src/context/providers/by_application/vasp/VASPNEBContextProvider.js +46 -0
- package/src/context/providers/settings.js +38 -0
- package/src/context/providers.js +140 -0
- package/src/enums.js +65 -0
- package/src/index.js +17 -0
- package/src/patch.js +12 -0
- package/src/subworkflows/convergence/factory.js +14 -0
- package/src/subworkflows/convergence/non_uniform_kgrid.js +28 -0
- package/src/subworkflows/convergence/parameter.js +58 -0
- package/src/subworkflows/convergence/uniform_kgrid.js +22 -0
- package/src/subworkflows/convergence.js +196 -0
- package/src/subworkflows/create.js +201 -0
- package/src/subworkflows/dynamic/espresso/getQpointIrrep.js +35 -0
- package/src/subworkflows/dynamic/index.js +8 -0
- package/src/subworkflows/dynamic/surfaceEnergy.js +124 -0
- package/src/subworkflows/index.js +2 -0
- package/src/subworkflows/subworkflow.js +329 -0
- package/src/units/assertion.js +29 -0
- package/src/units/assignment.js +34 -0
- package/src/units/base.js +97 -0
- package/src/units/builders/AssertionUnitConfigBuilder.js +28 -0
- package/src/units/builders/AssignmentUnitConfigBuilder.js +36 -0
- package/src/units/builders/ExecutionUnitConfigBuilder.js +59 -0
- package/src/units/builders/IOUnitConfigBuilder.js +53 -0
- package/src/units/builders/UnitConfigBuilder.js +86 -0
- package/src/units/builders/index.js +15 -0
- package/src/units/condition.js +47 -0
- package/src/units/execution.js +263 -0
- package/src/units/factory.js +53 -0
- package/src/units/index.js +25 -0
- package/src/units/io.js +163 -0
- package/src/units/map.js +33 -0
- package/src/units/processing.js +39 -0
- package/src/units/reduce.js +17 -0
- package/src/units/subworkflow.js +15 -0
- package/src/utils.js +73 -0
- package/src/workflows/create.js +222 -0
- package/src/workflows/default.js +39 -0
- package/src/workflows/index.js +99 -0
- package/src/workflows/relaxation.js +41 -0
- package/src/workflows/workflow.js +351 -0
package/.babelrc
ADDED
package/LICENSE.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright 2022 Exabyte Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
[](https://badge.fury.io/js/%40exabyte-io%2Fwode.js)
|
|
2
|
+
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
3
|
+
|
|
4
|
+
# wode.js
|
|
5
|
+
|
|
6
|
+
WOrkflow DEfinitions in JavaScript - wode.js - houses entity definitions for use in the Mat3ra platform.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
For usage within a javascript project:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @exabyte-io/wode.js
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For development:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone https://github.com/Exabyte-io/wode.js.git
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## Contribution
|
|
25
|
+
|
|
26
|
+
This repository is an [open-source](LICENSE.md) work-in-progress and we welcome contributions.
|
|
27
|
+
|
|
28
|
+
We regularly deploy the latest code containing all accepted contributions online as part of the
|
|
29
|
+
[Mat3ra.com](https://mat3ra.com) platform, so contributors will see their code in action there.
|
|
30
|
+
|
|
31
|
+
See [ESSE](https://github.com/Exabyte-io/esse) for additional context regarding the data schemas used here.
|
|
32
|
+
|
|
33
|
+
Useful commands for development:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# run linter without persistence
|
|
37
|
+
npm run lint
|
|
38
|
+
|
|
39
|
+
# run linter and save edits
|
|
40
|
+
npm run lint:fix
|
|
41
|
+
|
|
42
|
+
# compile the library
|
|
43
|
+
npm run transpile
|
|
44
|
+
|
|
45
|
+
# run tests
|
|
46
|
+
npm run test
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Using Linter
|
|
50
|
+
|
|
51
|
+
Linter setup will prevent committing files that don't adhere to the code standard. It will
|
|
52
|
+
attempt to fix what it can automatically prior to the commit in order to reduce diff noise. This can lead to "unexpected" behavior where a
|
|
53
|
+
file that is staged for commit is not identical to the file that actually gets committed. This happens
|
|
54
|
+
in the `lint-staged` directive of the `package.json` file (by using a `husky` pre-commit hook). For example,
|
|
55
|
+
if you add extra whitespace to a file, stage it, and try to commit it, you will see the following:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
➜ repo-js git:(feature/cool-feature) ✗ git commit -m "Awesome feature works great"
|
|
59
|
+
✔ Preparing...
|
|
60
|
+
✔ Running tasks...
|
|
61
|
+
✖ Prevented an empty git commit!
|
|
62
|
+
✔ Reverting to original state because of errors...
|
|
63
|
+
✔ Cleaning up...
|
|
64
|
+
|
|
65
|
+
⚠ lint-staged prevented an empty git commit.
|
|
66
|
+
Use the --allow-empty option to continue, or check your task configuration
|
|
67
|
+
|
|
68
|
+
husky - pre-commit hook exited with code 1 (error)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The staged change may remain but will not have been committed. Then it will look like you still have a staged
|
|
72
|
+
change to commit, but the pre-commit hook will not actually commit it for you, quite frustrating! Styling can
|
|
73
|
+
be applied manually and fixed by running:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm run lint:fix
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
In which case, you may need to then add the linter edits to your staging, which in the example above, puts the
|
|
80
|
+
file back to identical with the base branch, resulting in no staged changes whatsoever.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
WoDe
|
|
84
|
+
====
|
|
85
|
+
|
|
86
|
+
The`WoDe` package synthesizes other entity definition (`De`) libraries
|
|
87
|
+
in the Mat3ra workflow ecosystem and implements the following entities:
|
|
88
|
+
|
|
89
|
+
- `Workflow` - a workflow to be executed on the Mat3ra platform
|
|
90
|
+
- `Subworkflow` - a logical collection of units of work defined by a unique `Applidation`
|
|
91
|
+
- `Units` - one of the following:
|
|
92
|
+
- `AssertionUnit` - assert an expression
|
|
93
|
+
- `AssignmentUnit` - assign a value
|
|
94
|
+
- `ConditionUnit` - evaluate a condition
|
|
95
|
+
- `IOUnit` - Read or write data
|
|
96
|
+
- `ExecutionUnit` - execute an `ADe` `Application`
|
|
97
|
+
- `MapUnit` - create a dynamic number of units based on output of a previous unit
|
|
98
|
+
- `ReduceUnit` - collect the results of a fanned out operation
|
|
99
|
+
|
|
100
|
+
Workflow configurations are processed at build time using `build_workflows.js` and compiled into
|
|
101
|
+
a single JS file so that workflow configurations can be accessed in the browser runtime, not just
|
|
102
|
+
in a NodeJS process.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
Workflow Spec
|
|
106
|
+
-------------
|
|
107
|
+
|
|
108
|
+
Workflows defined as configuration conform to the following specification:
|
|
109
|
+
|
|
110
|
+
- `Workflow: Object` - The workflow configuration itself
|
|
111
|
+
- `name: String` - a human readable name describing the functionality of the workflow
|
|
112
|
+
- `units: Array` - a list of workflow units where each unit takes the following shape *Not == Unit*
|
|
113
|
+
- `name: String` - the snake_case name of a subworkflow or another workflow that must exist
|
|
114
|
+
- `config: Optional[Object]` - see `Config` defined below
|
|
115
|
+
- `type: String` - one of:
|
|
116
|
+
- `subworkflow|workflow`
|
|
117
|
+
- **Note:** workflow units may specify `mapUnit: true` in their config
|
|
118
|
+
- `units: Optional[Array]` - if `type == workflow` see above (recursively defined)
|
|
119
|
+
- `config: Optional[Object]` - see `Config` defined below
|
|
120
|
+
- `Subworkflow: Object` - a logical collection of workflow units
|
|
121
|
+
- `application: Object` - an application specification
|
|
122
|
+
- `name: String` - an application name recognized by ADe
|
|
123
|
+
- `version: Optional[String]` - (often a semver) application version string supported by ADe
|
|
124
|
+
- `build: Optional[String]` - application build string supported by ADe
|
|
125
|
+
- `method: Object` - a method specification
|
|
126
|
+
- `name: String` - a named method class exported from MeDe
|
|
127
|
+
- `config: Optional[Object]` - see `Config` defined below
|
|
128
|
+
- `model: Object` - a model specification
|
|
129
|
+
- `name: String` - a named model class exported from MeDe
|
|
130
|
+
- `config: Optional[Object]` - see `Config` defined below
|
|
131
|
+
- `config: Optional[Object]` - see `Config` defined below
|
|
132
|
+
- `units: Array` - a list of subworkflow units where each unit is a Unit defined below
|
|
133
|
+
- `Unit: Object` - a unit of computational work in a workflow
|
|
134
|
+
- `type: String` - one of:
|
|
135
|
+
- `execution|assignment|condition|io|processing|map|subworkflow|assertion`
|
|
136
|
+
- **Note:** optionally may have `Builder` appended to type to use unit builders instead of units directly
|
|
137
|
+
- `executionBuilder` is the primary use case for this
|
|
138
|
+
- `config: Object` - arguments to pass to constructor based on type
|
|
139
|
+
- `functions: Object` - similar to `Config`.functions defined below
|
|
140
|
+
- in the case of builders, functions are applied before calling build
|
|
141
|
+
- `attributes: Object` - similar to `Config`.attributes defined below
|
|
142
|
+
- in the case of builders, attributes are applied after calling build
|
|
143
|
+
- `Config: Object` - custom configuration to apply to an entity
|
|
144
|
+
- **Note:** `functions` and `attributes` may not be supported for all entities, please check the implementation
|
|
145
|
+
- `functions: Object` - collection of functions defined on the entity to run
|
|
146
|
+
- `[key]: {{functionName}}: String` - name of function to run
|
|
147
|
+
- `[value]: {{args}}: Any` - arguments matching the call signature
|
|
148
|
+
- `attributes: Object` - collection of attributes to assign to the entity on creation
|
|
149
|
+
- `[key]: {{attributeName}}: String` - name of function to run
|
|
150
|
+
- `[value]: {{value}}: Any` - value to assign to attribute
|
|
151
|
+
- `[key]: {{constructorArgument}}: String` - parameter passed to constructor
|
|
152
|
+
- `[value]: {{constructorValue}}: Any` - value for a given constructor parameter
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
Workflow Creation
|
|
156
|
+
-----------------
|
|
157
|
+
|
|
158
|
+
The Workflow instances associated with the workflow configurations are built by
|
|
159
|
+
the `createWorkflows` function traversing all three levels (workflow, subworkflow, unit):
|
|
160
|
+

|
|
161
|
+
|
|
162
|
+
## Links
|
|
163
|
+
|
|
164
|
+
1. Workflows explained in Mat3ra documentation: https://docs.mat3ra.com/workflows/overview/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: deepmd
|
|
3
|
+
version: "2.0.2"
|
|
4
|
+
method:
|
|
5
|
+
name: UnknownMethod
|
|
6
|
+
model:
|
|
7
|
+
name: UnknownModel
|
|
8
|
+
name: DeePMD
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: python
|
|
12
|
+
flavorName: espresso_cp_to_deepmd
|
|
13
|
+
name: espresso_cp_to_deepmd
|
|
14
|
+
functions:
|
|
15
|
+
head: true
|
|
16
|
+
type: executionBuilder
|
|
17
|
+
- config:
|
|
18
|
+
execName: dp
|
|
19
|
+
flavorName: dp_train_se_e2_r
|
|
20
|
+
name: dp_train_se_e2_r
|
|
21
|
+
type: executionBuilder
|
|
22
|
+
- config:
|
|
23
|
+
execName: python
|
|
24
|
+
flavorName: espresso_to_lammps_structure
|
|
25
|
+
name: espresso_to_lammps_structure
|
|
26
|
+
type: executionBuilder
|
|
27
|
+
- config:
|
|
28
|
+
execName: lmp
|
|
29
|
+
flavorName: lammps_md
|
|
30
|
+
name: lammps_md
|
|
31
|
+
type: executionBuilder
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "7.2"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: CP-MD
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: cp.x
|
|
12
|
+
flavorName: cp
|
|
13
|
+
name: cp
|
|
14
|
+
functions:
|
|
15
|
+
head: true
|
|
16
|
+
type: executionBuilder
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Note: this subworkflow is assumed to be used as part of the valence band offset workflow
|
|
2
|
+
# and is this NOT self-sufficient!
|
|
3
|
+
# Furthermore, this subworkflow expects the following variable(s) to exist in the global context:
|
|
4
|
+
# array_from_context
|
|
5
|
+
application:
|
|
6
|
+
name: python
|
|
7
|
+
version: 3.10.13
|
|
8
|
+
method:
|
|
9
|
+
name: UnknownMethod
|
|
10
|
+
model:
|
|
11
|
+
name: UnknownModel
|
|
12
|
+
name: Find ESP Value
|
|
13
|
+
units:
|
|
14
|
+
- config:
|
|
15
|
+
name: Find Extrema
|
|
16
|
+
execName: python
|
|
17
|
+
flavorName: generic:processing:find_extrema:scipy
|
|
18
|
+
flowchartId: python-find-extrema
|
|
19
|
+
type: executionBuilder
|
|
20
|
+
- config:
|
|
21
|
+
name: Set Average ESP Value
|
|
22
|
+
operand: AVG_ESP
|
|
23
|
+
value: "json.loads(STDOUT)['minima']"
|
|
24
|
+
input:
|
|
25
|
+
- name: STDOUT
|
|
26
|
+
scope: python-find-extrema
|
|
27
|
+
type: assignment
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
config:
|
|
2
|
+
isMultiMaterial: true
|
|
3
|
+
application:
|
|
4
|
+
name: espresso
|
|
5
|
+
version: "6.3"
|
|
6
|
+
method:
|
|
7
|
+
name: PseudopotentialMethod
|
|
8
|
+
model:
|
|
9
|
+
name: DFTModel
|
|
10
|
+
name: Band Structure + average ESP
|
|
11
|
+
units:
|
|
12
|
+
- config:
|
|
13
|
+
name: Set Material Index
|
|
14
|
+
operand: MATERIAL_INDEX
|
|
15
|
+
value: 0
|
|
16
|
+
type: assignment
|
|
17
|
+
- config:
|
|
18
|
+
execName: pw.x
|
|
19
|
+
flavorName: pw_scf
|
|
20
|
+
name: pw_scf
|
|
21
|
+
type: executionBuilder
|
|
22
|
+
- config:
|
|
23
|
+
execName: pw.x
|
|
24
|
+
flavorName: pw_bands
|
|
25
|
+
name: pw_bands
|
|
26
|
+
flowchartId: pw-bands-calculate-band-gap
|
|
27
|
+
type: executionBuilder
|
|
28
|
+
attributes:
|
|
29
|
+
results:
|
|
30
|
+
- name: band_gaps
|
|
31
|
+
- config:
|
|
32
|
+
name: Select indirect band gap
|
|
33
|
+
operand: BAND_GAP_INDIRECT
|
|
34
|
+
value: "[bandgap for bandgap in band_gaps['values'] if bandgap['type'] == 'indirect'][0]"
|
|
35
|
+
input:
|
|
36
|
+
- name: band_gaps
|
|
37
|
+
scope: pw-bands-calculate-band-gap
|
|
38
|
+
type: assignment
|
|
39
|
+
- config:
|
|
40
|
+
name: Set Valence Band Maximum
|
|
41
|
+
operand: VBM
|
|
42
|
+
value: "BAND_GAP_INDIRECT['eigenvalueValence']"
|
|
43
|
+
type: assignment
|
|
44
|
+
- config:
|
|
45
|
+
execName: bands.x
|
|
46
|
+
flavorName: bands
|
|
47
|
+
name: bands
|
|
48
|
+
type: executionBuilder
|
|
49
|
+
- config:
|
|
50
|
+
execName: pp.x
|
|
51
|
+
flavorName: pp_electrostatic_potential
|
|
52
|
+
name: Electrostatic Potential (ESP)
|
|
53
|
+
type: executionBuilder
|
|
54
|
+
- config:
|
|
55
|
+
execName: average.x
|
|
56
|
+
flavorName: average_potential
|
|
57
|
+
name: average ESP
|
|
58
|
+
flowchartId: average-electrostatic-potential
|
|
59
|
+
type: executionBuilder
|
|
60
|
+
- config:
|
|
61
|
+
name: Set Macroscopically Averaged ESP Data
|
|
62
|
+
operand: array_from_context
|
|
63
|
+
value: "average_potential_profile['yDataSeries'][1]"
|
|
64
|
+
input:
|
|
65
|
+
- name: average_potential_profile
|
|
66
|
+
scope: average-electrostatic-potential
|
|
67
|
+
type: assignment
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Band Gap
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf
|
|
13
|
+
name: pw_scf
|
|
14
|
+
functions:
|
|
15
|
+
head: true
|
|
16
|
+
type: executionBuilder
|
|
17
|
+
- config:
|
|
18
|
+
execName: pw.x
|
|
19
|
+
flavorName: pw_nscf
|
|
20
|
+
name: pw_nscf
|
|
21
|
+
type: executionBuilder
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: HSE Band Gap
|
|
2
|
+
application:
|
|
3
|
+
name: espresso
|
|
4
|
+
version: "6.3"
|
|
5
|
+
model:
|
|
6
|
+
name: DFTModel
|
|
7
|
+
config:
|
|
8
|
+
type: dft
|
|
9
|
+
subtype: hybrid
|
|
10
|
+
functional:
|
|
11
|
+
name: hse06
|
|
12
|
+
slug: hse06
|
|
13
|
+
method:
|
|
14
|
+
name: PseudopotentialMethod
|
|
15
|
+
config:
|
|
16
|
+
type: pseudopotential
|
|
17
|
+
subtype: us
|
|
18
|
+
units:
|
|
19
|
+
- config:
|
|
20
|
+
execName: pw.x
|
|
21
|
+
flavorName: pw_scf_hse
|
|
22
|
+
name: pw_scf_hse
|
|
23
|
+
functions:
|
|
24
|
+
head: true
|
|
25
|
+
type: executionBuilder
|
|
26
|
+
- config:
|
|
27
|
+
execName: projwfc.x
|
|
28
|
+
flavorName: projwfc
|
|
29
|
+
name: projwfc
|
|
30
|
+
type: executionBuilder
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Band Structure
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf
|
|
13
|
+
name: pw_scf
|
|
14
|
+
functions:
|
|
15
|
+
head: true
|
|
16
|
+
type: executionBuilder
|
|
17
|
+
- config:
|
|
18
|
+
execName: pw.x
|
|
19
|
+
flavorName: pw_bands
|
|
20
|
+
name: pw_bands
|
|
21
|
+
type: executionBuilder
|
|
22
|
+
- config:
|
|
23
|
+
execName: bands.x
|
|
24
|
+
flavorName: bands
|
|
25
|
+
name: bands
|
|
26
|
+
type: executionBuilder
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Band Structure + Density of States
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf
|
|
13
|
+
name: pw_scf
|
|
14
|
+
type: executionBuilder
|
|
15
|
+
- config:
|
|
16
|
+
execName: pw.x
|
|
17
|
+
flavorName: pw_bands
|
|
18
|
+
name: pw_bands
|
|
19
|
+
type: executionBuilder
|
|
20
|
+
- config:
|
|
21
|
+
execName: bands.x
|
|
22
|
+
flavorName: bands
|
|
23
|
+
name: bands
|
|
24
|
+
type: executionBuilder
|
|
25
|
+
- config:
|
|
26
|
+
execName: pw.x
|
|
27
|
+
flavorName: pw_nscf
|
|
28
|
+
name: pw_nscf
|
|
29
|
+
type: executionBuilder
|
|
30
|
+
- config:
|
|
31
|
+
execName: projwfc.x
|
|
32
|
+
flavorName: projwfc
|
|
33
|
+
name: projwfc
|
|
34
|
+
type: executionBuilder
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Note: this subworkflow is assumed to be part of the "Band Structure - HSE" workflow
|
|
2
|
+
# and is this NOT self-sufficient!
|
|
3
|
+
name: Band Structure - HSE
|
|
4
|
+
application:
|
|
5
|
+
name: espresso
|
|
6
|
+
version: "6.3"
|
|
7
|
+
model:
|
|
8
|
+
name: DFTModel
|
|
9
|
+
config:
|
|
10
|
+
type: dft
|
|
11
|
+
subtype: hybrid
|
|
12
|
+
functional:
|
|
13
|
+
name: hse06
|
|
14
|
+
slug: hse06
|
|
15
|
+
method:
|
|
16
|
+
name: PseudopotentialMethod
|
|
17
|
+
config:
|
|
18
|
+
type: pseudopotential
|
|
19
|
+
subtype: us
|
|
20
|
+
units:
|
|
21
|
+
- config:
|
|
22
|
+
execName: pw.x
|
|
23
|
+
flavorName: pw_scf_bands_hse
|
|
24
|
+
name: pw_scf_bands_hse
|
|
25
|
+
type: executionBuilder
|
|
26
|
+
- config:
|
|
27
|
+
execName: bands.x
|
|
28
|
+
flavorName: bands
|
|
29
|
+
name: bands
|
|
30
|
+
type: executionBuilder
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Spin magnetic bandstructure
|
|
2
|
+
application:
|
|
3
|
+
name: espresso
|
|
4
|
+
version: "6.3"
|
|
5
|
+
method:
|
|
6
|
+
name: PseudopotentialMethod
|
|
7
|
+
model:
|
|
8
|
+
name: DFTModel
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf_magn
|
|
13
|
+
name: pw_scf_magn
|
|
14
|
+
functions:
|
|
15
|
+
head: true
|
|
16
|
+
type: executionBuilder
|
|
17
|
+
- config:
|
|
18
|
+
execName: pw.x
|
|
19
|
+
flavorName: pw_bands_magn
|
|
20
|
+
name: pw_bands_magn
|
|
21
|
+
type: executionBuilder
|
|
22
|
+
- config:
|
|
23
|
+
execName: bands.x
|
|
24
|
+
flavorName: bands_spin_up
|
|
25
|
+
name: bands_spin_up
|
|
26
|
+
type: executionBuilder
|
|
27
|
+
- config:
|
|
28
|
+
execName: bands.x
|
|
29
|
+
flavorName: bands_spin_dn
|
|
30
|
+
name: bands_spin_dn
|
|
31
|
+
type: executionBuilder
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Spin orbit coupling bandstructure
|
|
2
|
+
application:
|
|
3
|
+
name: espresso
|
|
4
|
+
version: "6.3"
|
|
5
|
+
method:
|
|
6
|
+
name: PseudopotentialMethod
|
|
7
|
+
setSearchText: nc-fr
|
|
8
|
+
config:
|
|
9
|
+
type: pseudopotential
|
|
10
|
+
subtype: nc-fr
|
|
11
|
+
model:
|
|
12
|
+
name: DFTModel
|
|
13
|
+
units:
|
|
14
|
+
- config:
|
|
15
|
+
execName: pw.x
|
|
16
|
+
flavorName: pw_scf_soc
|
|
17
|
+
name: pw_scf_soc
|
|
18
|
+
functions:
|
|
19
|
+
head: true
|
|
20
|
+
type: executionBuilder
|
|
21
|
+
- config:
|
|
22
|
+
execName: pw.x
|
|
23
|
+
flavorName: pw_bands_soc
|
|
24
|
+
name: pw_bands_soc
|
|
25
|
+
type: executionBuilder
|
|
26
|
+
- config:
|
|
27
|
+
execName: bands.x
|
|
28
|
+
flavorName: bands
|
|
29
|
+
name: bands
|
|
30
|
+
type: executionBuilder
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
config:
|
|
6
|
+
data: {}
|
|
7
|
+
subtype: nc
|
|
8
|
+
type: pseudopotential
|
|
9
|
+
name: PseudopotentialMethod
|
|
10
|
+
model:
|
|
11
|
+
name: DFTModel
|
|
12
|
+
name: Compute Dielectric Function
|
|
13
|
+
units:
|
|
14
|
+
- config:
|
|
15
|
+
execName: pw.x
|
|
16
|
+
flavorName: pw_scf
|
|
17
|
+
name: pw_scf
|
|
18
|
+
functions:
|
|
19
|
+
head: true
|
|
20
|
+
type: executionBuilder
|
|
21
|
+
- config:
|
|
22
|
+
name: Set No-Symmetry Flag
|
|
23
|
+
operand: NO_SYMMETRY_NO_INVERSION
|
|
24
|
+
value: True # yamllint disable-line rule:truthy
|
|
25
|
+
type: assignment
|
|
26
|
+
- config:
|
|
27
|
+
execName: pw.x
|
|
28
|
+
flavorName: pw_nscf
|
|
29
|
+
name: pw_nscf
|
|
30
|
+
type: executionBuilder
|
|
31
|
+
- config:
|
|
32
|
+
execName: epsilon.x
|
|
33
|
+
flavorName: dielectric_tensor
|
|
34
|
+
name: Compute dielectric function
|
|
35
|
+
type: executionBuilder
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Density of States
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf
|
|
13
|
+
name: pw_scf
|
|
14
|
+
type: executionBuilder
|
|
15
|
+
- config:
|
|
16
|
+
execName: pw.x
|
|
17
|
+
flavorName: pw_nscf
|
|
18
|
+
name: pw_nscf
|
|
19
|
+
type: executionBuilder
|
|
20
|
+
- config:
|
|
21
|
+
execName: projwfc.x
|
|
22
|
+
flavorName: projwfc
|
|
23
|
+
name: projwfc
|
|
24
|
+
type: executionBuilder
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Electronic Density Mesh
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_scf
|
|
13
|
+
name: pw_scf
|
|
14
|
+
type: executionBuilder
|
|
15
|
+
- config:
|
|
16
|
+
execName: pp.x
|
|
17
|
+
flavorName: pp_density
|
|
18
|
+
name: pp_density
|
|
19
|
+
type: executionBuilder
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Effective Screening Medium (ESM)
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_esm
|
|
13
|
+
name: pw_esm
|
|
14
|
+
type: executionBuilder
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
application:
|
|
2
|
+
name: espresso
|
|
3
|
+
version: "6.3"
|
|
4
|
+
method:
|
|
5
|
+
name: PseudopotentialMethod
|
|
6
|
+
model:
|
|
7
|
+
name: DFTModel
|
|
8
|
+
name: Effective Screening Medium (ESM) Relax
|
|
9
|
+
units:
|
|
10
|
+
- config:
|
|
11
|
+
execName: pw.x
|
|
12
|
+
flavorName: pw_esm_relax
|
|
13
|
+
name: pw_esm_relax
|
|
14
|
+
type: executionBuilder
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Note: this subworkflow is assumed to be run after a pw_scf unit
|
|
2
|
+
# and is this NOT self-sufficient!
|
|
3
|
+
name: Extract KPOINTS
|
|
4
|
+
application:
|
|
5
|
+
name: python
|
|
6
|
+
version: 3.10.13
|
|
7
|
+
method:
|
|
8
|
+
name: UnknownMethod
|
|
9
|
+
model:
|
|
10
|
+
name: UnknownModel
|
|
11
|
+
units:
|
|
12
|
+
- config:
|
|
13
|
+
name: Extract kpoints
|
|
14
|
+
execName: python
|
|
15
|
+
flavorName: espresso_extract_kpoints
|
|
16
|
+
type: executionBuilder
|