@mat3ra/wode 2026.5.23-0 → 2026.6.5-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 +1 -1
- package/dist/js/Subworkflow.d.ts +714 -0
- package/dist/js/Subworkflow.js +397 -0
- package/dist/js/Workflow.d.ts +82 -0
- package/dist/js/Workflow.js +286 -0
- package/dist/js/WorkflowDesignerMaterial.d.ts +21 -0
- package/dist/js/WorkflowDesignerMaterial.js +26 -0
- package/dist/js/context/mixins/ApplicationContextMixin.d.ts +10 -0
- package/dist/js/context/mixins/ApplicationContextMixin.js +10 -17
- package/dist/js/context/mixins/MaterialContextMixin.d.ts +18 -0
- package/dist/js/context/mixins/MaterialContextMixin.js +14 -38
- package/dist/js/context/mixins/MaterialsContextMixin.d.ts +10 -0
- package/dist/js/context/mixins/MaterialsContextMixin.js +11 -17
- package/dist/js/context/mixins/MaterialsSetContextMixin.d.ts +14 -0
- package/dist/js/context/mixins/MaterialsSetContextMixin.js +21 -23
- package/dist/js/context/providers/BoundaryConditionsFormDataManager.d.ts +30 -0
- package/dist/js/context/providers/BoundaryConditionsFormDataManager.js +62 -0
- package/dist/js/context/providers/CollinearMagnetizationDataManager.d.ts +42 -0
- package/dist/js/context/providers/CollinearMagnetizationDataManager.js +101 -0
- package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.d.ts +29 -0
- package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.js +69 -0
- package/dist/js/context/providers/Hubbard/HubbardContextProvider.d.ts +20 -0
- package/dist/js/context/providers/Hubbard/HubbardContextProvider.js +47 -0
- package/dist/js/context/providers/Hubbard/HubbardJContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardJContextManager.js +61 -0
- package/dist/js/context/providers/Hubbard/HubbardUContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardUContextManager.js +57 -0
- package/dist/js/context/providers/Hubbard/HubbardVContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardVContextManager.js +79 -0
- package/dist/js/context/providers/IonDynamicsDataManager.d.ts +27 -0
- package/dist/js/context/providers/IonDynamicsDataManager.js +48 -0
- package/dist/js/context/providers/MLSettingsDataManager.d.ts +24 -0
- package/dist/js/context/providers/MLSettingsDataManager.js +42 -0
- package/dist/js/context/providers/MLTrainTestSplitDataManager.d.ts +23 -0
- package/dist/js/context/providers/MLTrainTestSplitDataManager.js +40 -0
- package/dist/js/context/providers/NEBFormDataManager.d.ts +23 -0
- package/dist/js/context/providers/NEBFormDataManager.js +39 -0
- package/dist/js/context/providers/NonCollinearMagnetizationDataManager.d.ts +78 -0
- package/dist/js/context/providers/NonCollinearMagnetizationDataManager.js +181 -0
- package/dist/js/context/providers/PlanewaveCutoffDataManager.d.ts +26 -0
- package/dist/js/context/providers/PlanewaveCutoffDataManager.js +69 -0
- package/dist/js/context/providers/PointsGrid/IGridFormDataManager.d.ts +13 -0
- package/dist/js/context/providers/PointsGrid/IGridFormDataManager.js +23 -0
- package/dist/js/context/providers/PointsGrid/KGridFormDataManager.d.ts +15 -0
- package/dist/js/context/providers/PointsGrid/KGridFormDataManager.js +30 -0
- package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.d.ts +171 -0
- package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.js +270 -0
- package/dist/js/context/providers/PointsGrid/QGridFormDataManager.d.ts +13 -0
- package/dist/js/context/providers/PointsGrid/QGridFormDataManager.js +23 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.d.ts +10 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.js +19 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.d.ts +9 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.js +18 -0
- package/dist/js/context/providers/PointsPath/IPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/IPathFormDataManager.js +17 -0
- package/dist/js/context/providers/PointsPath/KPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/KPathFormDataManager.js +17 -0
- package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.d.ts +40 -0
- package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.js +125 -0
- package/dist/js/context/providers/PointsPath/QPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/QPathFormDataManager.js +17 -0
- package/dist/js/context/providers/base/ContextProvider.d.ts +75 -0
- package/dist/js/context/providers/base/ContextProvider.js +87 -0
- package/dist/js/context/providers/base/JSONSchemaDataProvider.d.ts +16 -0
- package/dist/js/context/providers/base/JSONSchemaDataProvider.js +17 -0
- package/dist/js/context/providers/base/JSONSchemaFormDataProvider.d.ts +19 -0
- package/dist/js/context/providers/base/JSONSchemaFormDataProvider.js +32 -0
- package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.d.ts +26 -0
- package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.js +54 -0
- package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.d.ts +78 -0
- package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.js +104 -0
- package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.d.ts +36 -0
- package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.js +58 -0
- package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.d.ts +36 -0
- package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.js +56 -0
- package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.d.ts +30 -0
- package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.js +50 -0
- package/dist/js/context/providers/index.d.ts +92 -0
- package/dist/js/context/providers/index.js +107 -0
- package/dist/js/context/providers/settings.d.ts +7 -0
- package/dist/js/context/providers/settings.js +11 -33
- package/dist/js/convergence/ConvergenceParameter.d.ts +26 -0
- package/dist/js/convergence/ConvergenceParameter.js +13 -0
- package/dist/js/convergence/NonUniformKGridConvergence.d.ts +12 -0
- package/dist/js/convergence/NonUniformKGridConvergence.js +31 -0
- package/dist/js/convergence/UniformKGridConvergence.d.ts +8 -0
- package/dist/js/convergence/UniformKGridConvergence.js +22 -0
- package/dist/js/convergence/factory.d.ts +8 -0
- package/dist/js/convergence/factory.js +18 -0
- package/dist/js/enums.d.ts +62 -0
- package/dist/js/enums.js +66 -61
- package/dist/js/generated/AssertionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/AssertionUnitSchemaMixin.js +27 -0
- package/dist/js/generated/AssignmentUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/AssignmentUnitSchemaMixin.js +33 -0
- package/dist/js/generated/BaseUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/BaseUnitSchemaMixin.js +57 -0
- package/dist/js/generated/ConditionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ConditionUnitSchemaMixin.js +51 -0
- package/dist/js/generated/ExecutionUnitInputSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ExecutionUnitInputSchemaMixin.js +27 -0
- package/dist/js/generated/ExecutionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ExecutionUnitSchemaMixin.js +45 -0
- package/dist/js/generated/IOUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/IOUnitSchemaMixin.js +33 -0
- package/dist/js/generated/MapUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/MapUnitSchemaMixin.js +27 -0
- package/dist/js/generated/ReduceUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ReduceUnitSchemaMixin.js +27 -0
- package/dist/js/generated/StatusSchemaMixin.d.ts +5 -0
- package/dist/js/generated/StatusSchemaMixin.js +21 -0
- package/dist/js/generated/SubworkflowSchemaMixin.d.ts +5 -0
- package/dist/js/generated/SubworkflowSchemaMixin.js +51 -0
- package/dist/js/generated/SubworkflowUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/SubworkflowUnitSchemaMixin.js +15 -0
- package/dist/js/generated/WorkflowSchemaMixin.d.ts +5 -0
- package/dist/js/generated/WorkflowSchemaMixin.js +51 -0
- package/dist/js/index.d.ts +13 -0
- package/dist/js/index.js +66 -176
- package/dist/js/units/AssertionUnit.d.ts +20 -0
- package/dist/js/units/AssertionUnit.js +33 -0
- package/dist/js/units/AssignmentUnit.d.ts +17 -0
- package/dist/js/units/AssignmentUnit.js +35 -0
- package/dist/js/units/BaseUnit.d.ts +39 -0
- package/dist/js/units/BaseUnit.js +70 -0
- package/dist/js/units/ConditionUnit.d.ts +17 -0
- package/dist/js/units/ConditionUnit.js +37 -0
- package/dist/js/units/ExecutionUnit.d.ts +115 -0
- package/dist/js/units/ExecutionUnit.js +181 -0
- package/dist/js/units/ExecutionUnitInput.d.ts +22 -0
- package/dist/js/units/ExecutionUnitInput.js +47 -0
- package/dist/js/units/IOUnit.d.ts +16 -0
- package/dist/js/units/IOUnit.js +31 -0
- package/dist/js/units/MapUnit.d.ts +34 -0
- package/dist/js/units/MapUnit.js +46 -0
- package/dist/js/units/ReduceUnit.d.ts +16 -0
- package/dist/js/units/ReduceUnit.js +30 -0
- package/dist/js/units/SubworkflowUnit.d.ts +16 -0
- package/dist/js/units/SubworkflowUnit.js +28 -0
- package/dist/js/units/factory.d.ts +31 -0
- package/dist/js/units/factory.js +65 -47
- package/dist/js/units/index.d.ts +14 -0
- package/dist/js/units/index.js +25 -81
- package/dist/js/units/mixins/RuntimeItemsUILogicMixin.d.ts +26 -0
- package/dist/js/units/mixins/RuntimeItemsUILogicMixin.js +50 -0
- package/dist/js/utils/baseUnits.d.ts +2 -0
- package/dist/js/utils/baseUnits.js +11 -0
- package/dist/js/utils/index.d.ts +3 -0
- package/dist/js/utils/index.js +39 -0
- package/dist/js/utils/subworkflow.d.ts +2 -0
- package/dist/js/utils/subworkflow.js +29 -0
- package/dist/js/utils/underscoreStringSlugify.d.ts +6 -0
- package/dist/js/utils/underscoreStringSlugify.js +32 -0
- package/dist/js/utils/units.d.ts +4 -0
- package/dist/js/utils/units.js +16 -0
- package/dist/js/utils/workflow.d.ts +9 -0
- package/dist/js/utils/workflow.js +67 -0
- package/dist/js/workflows/default.d.ts +3 -0
- package/dist/js/workflows/default.js +43 -39
- package/dist/js/workflows/workflow.d.ts +4404 -0
- package/dist/js/workflows/workflow.js +310 -306
- package/package.json +56 -44
- package/src/js/Subworkflow.ts +532 -0
- package/src/js/Workflow.ts +390 -0
- package/src/js/context/mixins/ApplicationContextMixin.ts +21 -0
- package/src/js/context/mixins/MaterialContextMixin.ts +35 -0
- package/src/js/context/mixins/MaterialsContextMixin.ts +24 -0
- package/src/js/context/mixins/MaterialsSetContextMixin.ts +42 -0
- package/src/js/context/providers/BoundaryConditionsFormDataManager.ts +88 -0
- package/src/js/context/providers/CollinearMagnetizationDataManager.ts +140 -0
- package/src/js/context/providers/Hubbard/HubbardContextManagerLegacy.ts +93 -0
- package/src/js/context/providers/Hubbard/HubbardContextProvider.ts +85 -0
- package/src/js/context/providers/Hubbard/HubbardJContextManager.ts +82 -0
- package/src/js/context/providers/Hubbard/HubbardUContextManager.ts +78 -0
- package/src/js/context/providers/Hubbard/HubbardVContextManager.ts +100 -0
- package/src/js/context/providers/IonDynamicsDataManager.ts +64 -0
- package/src/js/context/providers/MLSettingsDataManager.ts +61 -0
- package/src/js/context/providers/MLTrainTestSplitDataManager.ts +59 -0
- package/src/js/context/providers/NEBFormDataManager.ts +57 -0
- package/src/js/context/providers/NonCollinearMagnetizationDataManager.ts +229 -0
- package/src/js/context/providers/PlanewaveCutoffDataManager.ts +110 -0
- package/src/js/context/providers/PointsGrid/IGridFormDataManager.ts +36 -0
- package/src/js/context/providers/PointsGrid/KGridFormDataManager.ts +46 -0
- package/src/js/context/providers/PointsGrid/PointsGridFormDataProvider.ts +371 -0
- package/src/js/context/providers/PointsGrid/QGridFormDataManager.ts +36 -0
- package/src/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.ts +26 -0
- package/src/js/context/providers/PointsPath/ExplicitKPathFormDataManager.ts +24 -0
- package/src/js/context/providers/PointsPath/IPathFormDataManager.ts +22 -0
- package/src/js/context/providers/PointsPath/KPathFormDataManager.ts +22 -0
- package/src/js/context/providers/PointsPath/PointsPathFormDataProvider.ts +192 -0
- package/src/js/context/providers/PointsPath/QPathFormDataManager.ts +22 -0
- package/src/js/context/providers/base/ContextProvider.ts +150 -0
- package/src/js/context/providers/base/JSONSchemaDataProvider.ts +31 -0
- package/src/js/context/providers/base/JSONSchemaFormDataProvider.ts +38 -0
- package/src/js/context/providers/by_application/espresso/QENEBInputDataManager.ts +107 -0
- package/src/js/context/providers/by_application/espresso/QEPWXInputDataManager.ts +178 -0
- package/src/js/context/providers/by_application/nwchem/NWChemInputDataManager.ts +93 -0
- package/src/js/context/providers/by_application/vasp/VASPInputDataManager.ts +89 -0
- package/src/js/context/providers/by_application/vasp/VASPNEBInputDataManager.ts +92 -0
- package/src/js/context/providers/index.ts +155 -0
- package/src/js/context/providers/settings.ts +13 -0
- package/src/js/convergence/ConvergenceParameter.ts +37 -0
- package/src/js/convergence/NonUniformKGridConvergence.ts +38 -0
- package/src/js/convergence/UniformKGridConvergence.ts +26 -0
- package/src/js/convergence/factory.ts +18 -0
- package/src/js/{enums.js → enums.ts} +27 -22
- package/src/js/generated/AssertionUnitSchemaMixin.ts +34 -0
- package/src/js/generated/AssignmentUnitSchemaMixin.ts +40 -0
- package/src/js/generated/BaseUnitSchemaMixin.ts +64 -0
- package/src/js/generated/ConditionUnitSchemaMixin.ts +58 -0
- package/src/js/generated/ExecutionUnitInputSchemaMixin.ts +36 -0
- package/src/js/generated/ExecutionUnitSchemaMixin.ts +52 -0
- package/src/js/generated/IOUnitSchemaMixin.ts +40 -0
- package/src/js/generated/MapUnitSchemaMixin.ts +34 -0
- package/src/js/generated/ReduceUnitSchemaMixin.ts +34 -0
- package/src/js/generated/StatusSchemaMixin.ts +28 -0
- package/src/js/generated/SubworkflowSchemaMixin.ts +58 -0
- package/src/js/generated/SubworkflowUnitSchemaMixin.ts +22 -0
- package/src/js/generated/WorkflowSchemaMixin.ts +58 -0
- package/src/js/index.ts +44 -0
- package/src/js/units/AssertionUnit.ts +49 -0
- package/src/js/units/AssignmentUnit.ts +49 -0
- package/src/js/units/BaseUnit.ts +117 -0
- package/src/js/units/ConditionUnit.ts +52 -0
- package/src/js/units/ExecutionUnit.ts +274 -0
- package/src/js/units/ExecutionUnitInput.ts +71 -0
- package/src/js/units/IOUnit.ts +43 -0
- package/src/js/units/MapUnit.ts +59 -0
- package/src/js/units/ReduceUnit.ts +46 -0
- package/src/js/units/SubworkflowUnit.ts +44 -0
- package/src/js/units/factory.ts +131 -0
- package/src/js/units/index.ts +27 -0
- package/src/js/units/mixins/RuntimeItemsUILogicMixin.ts +81 -0
- package/src/js/utils/baseUnits.ts +11 -0
- package/src/js/utils/index.ts +3 -0
- package/src/js/utils/units.ts +23 -0
- package/src/js/utils/workflow.ts +69 -0
- package/src/js/workflows/{default.js → default.ts} +8 -1
- package/build_workflows.js +0 -65
- package/dist/js/context/context.js +0 -49
- package/dist/js/context/mixins/JobContextMixin.js +0 -39
- package/dist/js/context/mixins/MethodDataContextMixin.js +0 -48
- package/dist/js/context/mixins/WorkflowContextMixin.js +0 -28
- package/dist/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -84
- package/dist/js/context/providers/CollinearMagnetizationContextProvider.js +0 -96
- package/dist/js/context/providers/HubbardContextProviderLegacy.js +0 -68
- package/dist/js/context/providers/HubbardJContextProvider.js +0 -67
- package/dist/js/context/providers/HubbardUContextProvider.js +0 -70
- package/dist/js/context/providers/HubbardVContextProvider.js +0 -92
- package/dist/js/context/providers/IonDynamicsContextProvider.js +0 -58
- package/dist/js/context/providers/MLSettingsContextProvider.js +0 -51
- package/dist/js/context/providers/MLTrainTestSplitContextProvider.js +0 -47
- package/dist/js/context/providers/NEBFormDataProvider.js +0 -42
- package/dist/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -187
- package/dist/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -67
- package/dist/js/context/providers/PointsGridFormDataProvider.js +0 -263
- package/dist/js/context/providers/PointsPathFormDataProvider.js +0 -147
- package/dist/js/context/providers/by_application/ExecutableContextProvider.js +0 -25
- package/dist/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -61
- package/dist/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -150
- package/dist/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -85
- package/dist/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -65
- package/dist/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -57
- package/dist/js/context/providers.js +0 -199
- package/dist/js/patch.js +0 -19
- package/dist/js/subworkflows/convergence/non_uniform_kgrid.js +0 -31
- package/dist/js/subworkflows/convergence/parameter.js +0 -70
- package/dist/js/subworkflows/convergence/uniform_kgrid.js +0 -26
- package/dist/js/subworkflows/convergence.js +0 -189
- package/dist/js/subworkflows/create.js +0 -293
- package/dist/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -34
- package/dist/js/subworkflows/dynamic/index.js +0 -19
- package/dist/js/subworkflows/dynamic/surfaceEnergy.js +0 -67
- package/dist/js/subworkflows/index.js +0 -19
- package/dist/js/units/assertion.js +0 -37
- package/dist/js/units/assignment.js +0 -42
- package/dist/js/units/base.js +0 -91
- package/dist/js/units/builders/AssertionUnitConfigBuilder.js +0 -34
- package/dist/js/units/builders/AssignmentUnitConfigBuilder.js +0 -41
- package/dist/js/units/builders/ExecutionUnitConfigBuilder.js +0 -67
- package/dist/js/units/builders/IOUnitConfigBuilder.js +0 -54
- package/dist/js/units/builders/UnitConfigBuilder.js +0 -85
- package/dist/js/units/builders/index.js +0 -18
- package/dist/js/units/condition.js +0 -52
- package/dist/js/units/execution.js +0 -225
- package/dist/js/units/io.js +0 -148
- package/dist/js/units/map.js +0 -38
- package/dist/js/units/processing.js +0 -41
- package/dist/js/units/reduce.js +0 -24
- package/dist/js/units/subworkflow.js +0 -23
- package/dist/js/workflows/create.js +0 -318
- package/dist/js/workflows/index.js +0 -113
- package/dist/js/workflows/relaxation.js +0 -38
- package/src/js/context/context.js +0 -47
- package/src/js/context/mixins/ApplicationContextMixin.js +0 -19
- package/src/js/context/mixins/JobContextMixin.js +0 -36
- package/src/js/context/mixins/MaterialContextMixin.js +0 -41
- package/src/js/context/mixins/MaterialsContextMixin.js +0 -18
- package/src/js/context/mixins/MaterialsSetContextMixin.js +0 -24
- package/src/js/context/mixins/MethodDataContextMixin.js +0 -48
- package/src/js/context/mixins/WorkflowContextMixin.js +0 -25
- package/src/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -72
- package/src/js/context/providers/CollinearMagnetizationContextProvider.js +0 -105
- package/src/js/context/providers/HubbardContextProviderLegacy.js +0 -67
- package/src/js/context/providers/HubbardJContextProvider.js +0 -65
- package/src/js/context/providers/HubbardUContextProvider.js +0 -95
- package/src/js/context/providers/HubbardVContextProvider.js +0 -96
- package/src/js/context/providers/IonDynamicsContextProvider.js +0 -44
- package/src/js/context/providers/MLSettingsContextProvider.js +0 -45
- package/src/js/context/providers/MLTrainTestSplitContextProvider.js +0 -43
- package/src/js/context/providers/NEBFormDataProvider.js +0 -33
- package/src/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -179
- package/src/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -65
- package/src/js/context/providers/PointsGridFormDataProvider.js +0 -271
- package/src/js/context/providers/PointsPathFormDataProvider.js +0 -163
- package/src/js/context/providers/by_application/ExecutableContextProvider.js +0 -17
- package/src/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -58
- package/src/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -168
- package/src/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -89
- package/src/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -58
- package/src/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -48
- package/src/js/context/providers/settings.js +0 -38
- package/src/js/context/providers.js +0 -140
- package/src/js/index.js +0 -57
- package/src/js/patch.js +0 -12
- package/src/js/subworkflows/convergence/enums.js +0 -12
- package/src/js/subworkflows/convergence/factory.js +0 -15
- package/src/js/subworkflows/convergence/non_uniform_kgrid.js +0 -28
- package/src/js/subworkflows/convergence/parameter.js +0 -58
- package/src/js/subworkflows/convergence/uniform_kgrid.js +0 -22
- package/src/js/subworkflows/convergence.js +0 -196
- package/src/js/subworkflows/create.js +0 -220
- package/src/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -35
- package/src/js/subworkflows/dynamic/index.js +0 -8
- package/src/js/subworkflows/dynamic/surfaceEnergy.js +0 -124
- package/src/js/subworkflows/index.js +0 -2
- package/src/js/subworkflows/subworkflow.js +0 -345
- package/src/js/units/assertion.js +0 -29
- package/src/js/units/assignment.js +0 -34
- package/src/js/units/base.js +0 -97
- package/src/js/units/builders/AssertionUnitConfigBuilder.js +0 -28
- package/src/js/units/builders/AssignmentUnitConfigBuilder.js +0 -36
- package/src/js/units/builders/ExecutionUnitConfigBuilder.js +0 -59
- package/src/js/units/builders/IOUnitConfigBuilder.js +0 -53
- package/src/js/units/builders/UnitConfigBuilder.js +0 -92
- package/src/js/units/builders/index.js +0 -15
- package/src/js/units/condition.js +0 -47
- package/src/js/units/execution.js +0 -267
- package/src/js/units/factory.js +0 -53
- package/src/js/units/index.js +0 -25
- package/src/js/units/io.js +0 -163
- package/src/js/units/map.js +0 -33
- package/src/js/units/processing.js +0 -39
- package/src/js/units/reduce.js +0 -17
- package/src/js/units/subworkflow.js +0 -15
- package/src/js/utils.js +0 -73
- package/src/js/workflows/create.js +0 -227
- package/src/js/workflows/index.js +0 -98
- package/src/js/workflows/relaxation.js +0 -42
- package/src/js/workflows/workflow.js +0 -388
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ade_1 = require("@mat3ra/ade");
|
|
7
|
+
const entity_1 = require("@mat3ra/code/dist/js/entity");
|
|
8
|
+
const DefaultableMixin_1 = require("@mat3ra/code/dist/js/entity/mixins/DefaultableMixin");
|
|
9
|
+
const HashedEntityMixin_1 = require("@mat3ra/code/dist/js/entity/mixins/HashedEntityMixin");
|
|
10
|
+
const NamedEntityMixin_1 = require("@mat3ra/code/dist/js/entity/mixins/NamedEntityMixin");
|
|
11
|
+
const JSONSchemasInterface_1 = __importDefault(require("@mat3ra/esse/dist/js/esse/JSONSchemasInterface"));
|
|
12
|
+
const compute_1 = require("@mat3ra/ide/dist/js/compute");
|
|
13
|
+
const mode_1 = require("@mat3ra/mode");
|
|
14
|
+
const standata_1 = require("@mat3ra/standata");
|
|
15
|
+
const utils_1 = require("@mat3ra/utils");
|
|
16
|
+
const factory_1 = require("./convergence/factory");
|
|
17
|
+
const enums_1 = require("./enums");
|
|
18
|
+
const SubworkflowSchemaMixin_1 = require("./generated/SubworkflowSchemaMixin");
|
|
19
|
+
const units_1 = require("./units");
|
|
20
|
+
class Subworkflow extends entity_1.InMemoryEntity {
|
|
21
|
+
static get jsonSchema() {
|
|
22
|
+
return JSONSchemasInterface_1.default.getSchemaById("workflow/subworkflow");
|
|
23
|
+
}
|
|
24
|
+
constructor(config, _ModelFactory = mode_1.ModelFactory) {
|
|
25
|
+
super(config);
|
|
26
|
+
this.properties = [];
|
|
27
|
+
this.repetition = 0;
|
|
28
|
+
this.ModelFactory = _ModelFactory;
|
|
29
|
+
this.applicationInstance = new ade_1.Application(this.application);
|
|
30
|
+
this.modelInstance = this.ModelFactory.create({
|
|
31
|
+
...this.model,
|
|
32
|
+
application: this.application,
|
|
33
|
+
});
|
|
34
|
+
this.setUnits(this.units.map((cfg) => units_1.UnitFactory.createInSubworkflow(cfg)));
|
|
35
|
+
}
|
|
36
|
+
static get defaultConfig() {
|
|
37
|
+
const defaultName = "New Subworkflow";
|
|
38
|
+
return {
|
|
39
|
+
_id: utils_1.Utils.uuid.getUUID(),
|
|
40
|
+
name: defaultName,
|
|
41
|
+
application: new standata_1.ApplicationRegistry().getDefaultApplication(),
|
|
42
|
+
// TODO: confirm if `functional` is required field. If not, update ESSE schema
|
|
43
|
+
// `Model.defaultConfig` from @mat3ra/mode may omit `functional`; ESSE subworkflow schema requires it once schemas are registered.
|
|
44
|
+
model: { ...mode_1.Model.defaultConfig, functional: "pbe" },
|
|
45
|
+
properties: [],
|
|
46
|
+
units: [],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
setRepetition(repetition) {
|
|
50
|
+
this.repetition = repetition;
|
|
51
|
+
this.unitsInstances.forEach((u) => u.setRepetition(repetition));
|
|
52
|
+
}
|
|
53
|
+
getAsUnit() {
|
|
54
|
+
return new units_1.SubworkflowUnit({
|
|
55
|
+
type: enums_1.UnitType.subworkflow,
|
|
56
|
+
_id: this.id,
|
|
57
|
+
name: this.name,
|
|
58
|
+
preProcessors: [],
|
|
59
|
+
postProcessors: [],
|
|
60
|
+
monitors: [],
|
|
61
|
+
results: [],
|
|
62
|
+
flowchartId: "",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
setApplication(application) {
|
|
66
|
+
// TODO: adjust the logic above to take into account whether units need re-rendering after version change etc.
|
|
67
|
+
// reset units if application name changes
|
|
68
|
+
const previousApplicationName = this.application.name;
|
|
69
|
+
this.applicationInstance = application;
|
|
70
|
+
if (previousApplicationName !== application.name) {
|
|
71
|
+
// TODO: figure out how to set a default unit per new application instead of removing all
|
|
72
|
+
this.setUnits([]);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// propagate new application version to all units
|
|
76
|
+
this.unitsInstances
|
|
77
|
+
.filter((unit) => unit.type === enums_1.UnitType.execution)
|
|
78
|
+
.forEach((unit) => {
|
|
79
|
+
unit.setApplication({ application });
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
this.application = application.toJSON();
|
|
83
|
+
// set model to the default one for the application selected
|
|
84
|
+
this.setModel(this.ModelFactory.createFromApplication({
|
|
85
|
+
application: this.application,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
setModel(model) {
|
|
89
|
+
this.modelInstance = model;
|
|
90
|
+
this.model = model.toJSON();
|
|
91
|
+
}
|
|
92
|
+
buildExternalContext(context) {
|
|
93
|
+
const subworkflowContext = this.units
|
|
94
|
+
.filter((u) => u.type === enums_1.UnitType.assignment)
|
|
95
|
+
.reduce((acc, u) => {
|
|
96
|
+
return {
|
|
97
|
+
...acc,
|
|
98
|
+
[u.operand]: u.value,
|
|
99
|
+
};
|
|
100
|
+
}, {});
|
|
101
|
+
return {
|
|
102
|
+
...context,
|
|
103
|
+
application: this.applicationInstance.toJSON(),
|
|
104
|
+
methodData: this.model.method.data,
|
|
105
|
+
subworkflowContext,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
render(context) {
|
|
109
|
+
const ctx = this.buildExternalContext(context);
|
|
110
|
+
this.unitsInstances.forEach((u) => {
|
|
111
|
+
if (u.type === enums_1.UnitType.execution) {
|
|
112
|
+
u.render(ctx);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
// Keep serialized `units` in sync with instances after execution units update `input`.
|
|
116
|
+
this.units = this.unitsInstances.map((u) => u.toJSON());
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* TODO: reuse workflow function instead
|
|
120
|
+
*/
|
|
121
|
+
addUnit(unit, index = -1) {
|
|
122
|
+
const { unitsInstances } = this;
|
|
123
|
+
if (unitsInstances.length === 0) {
|
|
124
|
+
this.setUnits([unit]);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
if (index >= 0) {
|
|
128
|
+
unitsInstances.splice(index, 0, unit);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
unitsInstances.push(unit);
|
|
132
|
+
}
|
|
133
|
+
this.setUnits(unitsInstances);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
setUnits(units) {
|
|
137
|
+
this.unitsInstances = (0, standata_1.setUnitLinks)(units);
|
|
138
|
+
this.units = units.map((x) => x.toJSON());
|
|
139
|
+
this.properties = units.map((x) => x.resultNames).flat();
|
|
140
|
+
}
|
|
141
|
+
removeUnit(flowchartId) {
|
|
142
|
+
const previousUnit = this.unitsInstances.find((x) => x.next === flowchartId);
|
|
143
|
+
if (previousUnit) {
|
|
144
|
+
previousUnit.unsetProp("next");
|
|
145
|
+
}
|
|
146
|
+
this.setUnits(this.unitsInstances.filter((x) => x.flowchartId !== flowchartId));
|
|
147
|
+
}
|
|
148
|
+
getUnit(flowchartId) {
|
|
149
|
+
return this.unitsInstances.find((x) => x.flowchartId === flowchartId);
|
|
150
|
+
}
|
|
151
|
+
unitIndex(flowchartId) {
|
|
152
|
+
return this.units.findIndex((unit) => {
|
|
153
|
+
return unit.flowchartId === flowchartId;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
replaceUnit(index, unit) {
|
|
157
|
+
this.unitsInstances[index] = unit;
|
|
158
|
+
this.setUnits([...this.unitsInstances]);
|
|
159
|
+
}
|
|
160
|
+
setIsDraft(bool) {
|
|
161
|
+
this.isDraft = bool;
|
|
162
|
+
}
|
|
163
|
+
get methodData() {
|
|
164
|
+
return this.modelInstance.Method.data;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* @summary
|
|
168
|
+
* Returns object for hashing of the workflow. Meaningful fields are units, app and model.
|
|
169
|
+
* units must be sorted topologically before hashing (already sorted).
|
|
170
|
+
*/
|
|
171
|
+
getHashObject() {
|
|
172
|
+
return {
|
|
173
|
+
application: this.applicationInstance.calculateHash(),
|
|
174
|
+
model: this.modelInstance.calculateHash(),
|
|
175
|
+
units: this.unitsInstances.map((u) => u.calculateHash()).join(),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
findUnitById(id) {
|
|
179
|
+
// TODO: come back and refactor after converting flowchartId to id
|
|
180
|
+
return this.units.find((u) => u.flowchartId === id);
|
|
181
|
+
}
|
|
182
|
+
findUnitKeyById(id) {
|
|
183
|
+
const index = this.units.findIndex((u) => u.flowchartId === id);
|
|
184
|
+
return `units.${index}`;
|
|
185
|
+
}
|
|
186
|
+
findUnitWithTag(tag) {
|
|
187
|
+
return this.units
|
|
188
|
+
.filter((unit) => unit.type === enums_1.UnitType.assignment)
|
|
189
|
+
.find((unit) => { var _a; return (_a = unit.tags) === null || _a === void 0 ? void 0 : _a.includes(tag); });
|
|
190
|
+
}
|
|
191
|
+
get hasConvergence() {
|
|
192
|
+
return !!this.convergenceParam && !!this.convergenceResult;
|
|
193
|
+
}
|
|
194
|
+
get convergenceParam() {
|
|
195
|
+
var _a;
|
|
196
|
+
return (_a = this.findUnitWithTag(enums_1.UnitTag.hasConvergenceParam)) === null || _a === void 0 ? void 0 : _a.operand;
|
|
197
|
+
}
|
|
198
|
+
get convergenceResult() {
|
|
199
|
+
var _a;
|
|
200
|
+
return (_a = this.findUnitWithTag(enums_1.UnitTag.hasConvergenceResult)) === null || _a === void 0 ? void 0 : _a.operand;
|
|
201
|
+
}
|
|
202
|
+
convergenceSeries(scopeTrack) {
|
|
203
|
+
if (!this.hasConvergence || !(scopeTrack === null || scopeTrack === void 0 ? void 0 : scopeTrack.length)) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
let prevResult;
|
|
207
|
+
return scopeTrack
|
|
208
|
+
.map((scopeItem, i) => {
|
|
209
|
+
var _a, _b;
|
|
210
|
+
return {
|
|
211
|
+
x: i,
|
|
212
|
+
// TODO: fix types
|
|
213
|
+
// @ts-ignore
|
|
214
|
+
param: (_a = scopeItem.scope) === null || _a === void 0 ? void 0 : _a.global[this.convergenceParam],
|
|
215
|
+
// @ts-ignore
|
|
216
|
+
y: (_b = scopeItem.scope) === null || _b === void 0 ? void 0 : _b.global[this.convergenceResult],
|
|
217
|
+
};
|
|
218
|
+
})
|
|
219
|
+
.filter(({ y }) => {
|
|
220
|
+
const changed = prevResult !== y;
|
|
221
|
+
prevResult = y;
|
|
222
|
+
return changed;
|
|
223
|
+
})
|
|
224
|
+
.map((item, i) => {
|
|
225
|
+
return {
|
|
226
|
+
x: i + 1,
|
|
227
|
+
param: item.param,
|
|
228
|
+
y: item.y,
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
updateMethodData(materials, metaProperties) {
|
|
233
|
+
const method = this.modelInstance.Method;
|
|
234
|
+
const { model } = this;
|
|
235
|
+
const uniqueElements = [...new Set(materials.map((m) => m.uniqueElements).flat())];
|
|
236
|
+
const appName = this.application.name;
|
|
237
|
+
const methodDataItems = metaProperties
|
|
238
|
+
.filter((metaProperty) => {
|
|
239
|
+
return (
|
|
240
|
+
// @ts-ignore TODO: fix types
|
|
241
|
+
uniqueElements.includes(metaProperty.data.element) &&
|
|
242
|
+
metaProperty.data.apps.includes(appName));
|
|
243
|
+
})
|
|
244
|
+
.map((metaProperty) => metaProperty.property);
|
|
245
|
+
if (method.type !== "pseudopotential" || !methodDataItems.length) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const filters = {
|
|
249
|
+
appName,
|
|
250
|
+
exchangeCorrelation: {
|
|
251
|
+
approximation: model.subtype,
|
|
252
|
+
functional: "functional" in model ? model.functional : undefined,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
// We cycle materials in reverse order below b/c of render(),
|
|
256
|
+
// since the default state index is zero, the last material thus corresponds to index 0.
|
|
257
|
+
// Without reversing, context providers in workflow consider material as changed when any update to the workflow
|
|
258
|
+
// is triggered.
|
|
259
|
+
// TODO: figure out how to simplify or remove the need for the above
|
|
260
|
+
(materials || [])
|
|
261
|
+
.concat()
|
|
262
|
+
.reverse()
|
|
263
|
+
.forEach((material) => {
|
|
264
|
+
// updates methodData & overwrites method in subworkflow.model
|
|
265
|
+
method.updateMethodDataByApplicationAndMaterials(methodDataItems, {
|
|
266
|
+
elements: material.uniqueElements,
|
|
267
|
+
...filters,
|
|
268
|
+
});
|
|
269
|
+
this.modelInstance.setMethod(method);
|
|
270
|
+
this.model = this.modelInstance.toJSON();
|
|
271
|
+
});
|
|
272
|
+
// TODO: Try if/else instead of running both
|
|
273
|
+
if (materials.length > 1) {
|
|
274
|
+
method.updateMethodDataByApplicationAndMaterials(methodDataItems, {
|
|
275
|
+
elements: uniqueElements,
|
|
276
|
+
...filters,
|
|
277
|
+
});
|
|
278
|
+
this.modelInstance.setMethod(method);
|
|
279
|
+
this.model = this.modelInstance.toJSON();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
addConvergence({ parameter, parameterInitial, parameterIncrement, result, resultInitial, condition, operator, tolerance, maxOccurrences, externalContext, }) {
|
|
283
|
+
// Find unit to converge: should contain passed result in its results list
|
|
284
|
+
// TODO: make user to select unit for convergence explicitly
|
|
285
|
+
const unitForConvergence = this.unitsInstances
|
|
286
|
+
.filter((x) => x.type === enums_1.UnitType.execution)
|
|
287
|
+
.find((x) => {
|
|
288
|
+
return x.resultNames.find((name) => name === result);
|
|
289
|
+
});
|
|
290
|
+
if (!unitForConvergence) {
|
|
291
|
+
throw new Error(`Subworkflow does not contain unit with '${result}' as extracted property.`);
|
|
292
|
+
}
|
|
293
|
+
// initialize parameter
|
|
294
|
+
const convergenceParameter = (0, factory_1.createConvergenceParameter)({
|
|
295
|
+
name: parameter,
|
|
296
|
+
initialValue: parameterInitial,
|
|
297
|
+
increment: parameterIncrement,
|
|
298
|
+
});
|
|
299
|
+
const context = this.buildExternalContext(externalContext);
|
|
300
|
+
unitForConvergence.render(context, convergenceParameter);
|
|
301
|
+
const prevResult = "prev_result";
|
|
302
|
+
const iteration = "iteration";
|
|
303
|
+
// Assignment with result's initial value
|
|
304
|
+
const prevResultInit = new units_1.AssignmentUnit({
|
|
305
|
+
name: "init result",
|
|
306
|
+
head: true,
|
|
307
|
+
operand: prevResult,
|
|
308
|
+
value: resultInitial,
|
|
309
|
+
});
|
|
310
|
+
// Assignment with initial value of convergence parameter
|
|
311
|
+
const paramInit = new units_1.AssignmentUnit({
|
|
312
|
+
name: "init parameter",
|
|
313
|
+
operand: convergenceParameter.name,
|
|
314
|
+
value: convergenceParameter.initialValue,
|
|
315
|
+
tags: [enums_1.UnitTag.hasConvergenceParam],
|
|
316
|
+
});
|
|
317
|
+
// Assignment with initial value of iteration counter
|
|
318
|
+
const iterInit = new units_1.AssignmentUnit({
|
|
319
|
+
name: "init counter",
|
|
320
|
+
operand: iteration,
|
|
321
|
+
value: 1,
|
|
322
|
+
});
|
|
323
|
+
// Assignment for storing iteration result: extracts 'result' from convergence unit scope
|
|
324
|
+
const storePrevResult = new units_1.AssignmentUnit({
|
|
325
|
+
name: "store result",
|
|
326
|
+
input: [
|
|
327
|
+
{
|
|
328
|
+
scope: unitForConvergence.flowchartId,
|
|
329
|
+
name: result,
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
operand: prevResult,
|
|
333
|
+
value: result,
|
|
334
|
+
});
|
|
335
|
+
// Assignment for convergence param increase
|
|
336
|
+
const nextStep = new units_1.AssignmentUnit({
|
|
337
|
+
name: "update parameter",
|
|
338
|
+
input: convergenceParameter.useVariablesFromUnitContext(unitForConvergence.flowchartId),
|
|
339
|
+
operand: convergenceParameter.name,
|
|
340
|
+
value: convergenceParameter.increment,
|
|
341
|
+
next: unitForConvergence.flowchartId,
|
|
342
|
+
});
|
|
343
|
+
// Final step of convergence
|
|
344
|
+
const exit = new units_1.AssignmentUnit({
|
|
345
|
+
name: "exit",
|
|
346
|
+
input: [],
|
|
347
|
+
operand: convergenceParameter.name,
|
|
348
|
+
value: convergenceParameter.finalValue,
|
|
349
|
+
});
|
|
350
|
+
// Final step of convergence
|
|
351
|
+
const storeResult = new units_1.AssignmentUnit({
|
|
352
|
+
name: "update result",
|
|
353
|
+
input: [
|
|
354
|
+
{
|
|
355
|
+
scope: unitForConvergence.flowchartId,
|
|
356
|
+
name: result,
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
operand: result,
|
|
360
|
+
value: result,
|
|
361
|
+
tags: [enums_1.UnitTag.hasConvergenceResult],
|
|
362
|
+
});
|
|
363
|
+
// Assign next iteration value
|
|
364
|
+
const nextIter = new units_1.AssignmentUnit({
|
|
365
|
+
name: "update counter",
|
|
366
|
+
input: [],
|
|
367
|
+
operand: iteration,
|
|
368
|
+
value: `${iteration} + 1`,
|
|
369
|
+
});
|
|
370
|
+
// Convergence condition unit
|
|
371
|
+
const conditionUnit = new units_1.ConditionUnit({
|
|
372
|
+
name: "check convergence",
|
|
373
|
+
statement: `${condition} ${operator} ${tolerance}`,
|
|
374
|
+
then: exit.flowchartId,
|
|
375
|
+
else: storePrevResult.flowchartId,
|
|
376
|
+
maxOccurrences,
|
|
377
|
+
next: storePrevResult.flowchartId,
|
|
378
|
+
});
|
|
379
|
+
this.addUnit(paramInit, 0);
|
|
380
|
+
this.addUnit(prevResultInit, 1);
|
|
381
|
+
this.addUnit(iterInit, 2);
|
|
382
|
+
this.addUnit(storeResult);
|
|
383
|
+
this.addUnit(conditionUnit);
|
|
384
|
+
this.addUnit(storePrevResult);
|
|
385
|
+
this.addUnit(nextIter);
|
|
386
|
+
this.addUnit(nextStep);
|
|
387
|
+
this.addUnit(exit);
|
|
388
|
+
// `addUnit` adjusts the `next` field, hence the below.
|
|
389
|
+
nextStep.next = unitForConvergence.flowchartId;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
(0, NamedEntityMixin_1.namedEntityMixin)(Subworkflow.prototype);
|
|
393
|
+
(0, DefaultableMixin_1.defaultableEntityMixin)(Subworkflow);
|
|
394
|
+
(0, compute_1.computedEntityMixin)(Subworkflow.prototype);
|
|
395
|
+
(0, SubworkflowSchemaMixin_1.subworkflowSchemaMixin)(Subworkflow.prototype);
|
|
396
|
+
(0, HashedEntityMixin_1.hashedEntityMixin)(Subworkflow.prototype);
|
|
397
|
+
exports.default = Subworkflow;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type NamedInMemoryEntity, InMemoryEntity } from "@mat3ra/code/dist/js/entity";
|
|
2
|
+
import { type Defaultable } from "@mat3ra/code/dist/js/entity/mixins/DefaultableMixin";
|
|
3
|
+
import { type HasDescription } from "@mat3ra/code/dist/js/entity/mixins/HasDescriptionMixin";
|
|
4
|
+
import { type HashedEntity } from "@mat3ra/code/dist/js/entity/mixins/HashedEntityMixin";
|
|
5
|
+
import { Taggable } from "@mat3ra/code/dist/js/entity/mixins/TaggableMixin";
|
|
6
|
+
import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
|
|
7
|
+
import type { ApplicationSchema, WorkflowSchema } from "@mat3ra/esse/dist/js/types";
|
|
8
|
+
import { ComputedEntityMixin } from "@mat3ra/ide/dist/js/compute";
|
|
9
|
+
import type { Material } from "@mat3ra/made";
|
|
10
|
+
import type { MetaPropertyHolder } from "@mat3ra/prode";
|
|
11
|
+
import type { MaterialExternalContext } from "./context/mixins/MaterialContextMixin";
|
|
12
|
+
import type { MaterialsExternalContext } from "./context/mixins/MaterialsContextMixin";
|
|
13
|
+
import type { MaterialsSetExternalContext } from "./context/mixins/MaterialsSetContextMixin";
|
|
14
|
+
import type { JobExternalContext } from "./context/providers/by_application/espresso/QEPWXInputDataManager";
|
|
15
|
+
import { UnitType } from "./enums";
|
|
16
|
+
import { type WorkflowSchemaMixin } from "./generated/WorkflowSchemaMixin";
|
|
17
|
+
import Subworkflow from "./Subworkflow";
|
|
18
|
+
import { MapUnit } from "./units";
|
|
19
|
+
import { type AnyWorkflowUnit } from "./units/factory";
|
|
20
|
+
interface Workflow extends Defaultable, NamedInMemoryEntity, WorkflowSchemaMixin, Taggable, HashedEntity, ComputedEntityMixin, HasDescription {
|
|
21
|
+
compute: WorkflowSchema["compute"];
|
|
22
|
+
}
|
|
23
|
+
/** Context passed to Workflow.render() before `workflowHasRelaxation` is injected for subworkflows. */
|
|
24
|
+
export type WorkflowRenderContext = MaterialExternalContext & MaterialsExternalContext & MaterialsSetExternalContext & JobExternalContext;
|
|
25
|
+
declare class Workflow extends InMemoryEntity implements WorkflowSchema {
|
|
26
|
+
createDefault: () => Workflow;
|
|
27
|
+
static readonly defaultConfig: WorkflowSchema;
|
|
28
|
+
_json: WorkflowSchema & AnyObject;
|
|
29
|
+
static get jsonSchema(): import("json-schema").JSONSchema7 | undefined;
|
|
30
|
+
subworkflowInstances: Subworkflow[];
|
|
31
|
+
unitInstances: AnyWorkflowUnit[];
|
|
32
|
+
workflowInstances: Workflow[];
|
|
33
|
+
repetition: number;
|
|
34
|
+
totalRepetitions: number;
|
|
35
|
+
setTotalRepetitions(totalRepetition: number): void;
|
|
36
|
+
setRepetition(repetition: number): void;
|
|
37
|
+
static fromSubworkflow(subworkflow: Subworkflow): Workflow;
|
|
38
|
+
constructor(config: WorkflowSchema & {
|
|
39
|
+
applicationName?: string;
|
|
40
|
+
});
|
|
41
|
+
get workflows(): WorkflowSchema[];
|
|
42
|
+
set workflows(value: WorkflowSchema[]);
|
|
43
|
+
addSubworkflow(subworkflow: Subworkflow, head?: boolean, index?: number): void;
|
|
44
|
+
updateMethodData(materials: Material[], metaProperties: MetaPropertyHolder[]): void;
|
|
45
|
+
removeSubworkflow(id: string): void;
|
|
46
|
+
setUnits(arr: AnyWorkflowUnit[]): void;
|
|
47
|
+
/**
|
|
48
|
+
* A top-level subworkflow branch is represented twice: a {@link UnitType.subworkflow} unit in
|
|
49
|
+
* `unitInstances` (flowchart card) and a full {@link Subworkflow} in `subworkflowInstances`
|
|
50
|
+
* (linked by the same `id` as {@link Subworkflow.getAsUnit}). Their display names must match
|
|
51
|
+
* so `toJSON()` and editors stay consistent. Call this after mutating a subworkflow unit's
|
|
52
|
+
* `name` (and updating `unitInstances` via {@link setUnits}).
|
|
53
|
+
*/
|
|
54
|
+
syncLinkedSubworkflowNameFromUnit(unit: AnyWorkflowUnit): void;
|
|
55
|
+
render(context: WorkflowRenderContext): void;
|
|
56
|
+
get usedApplications(): ApplicationSchema[];
|
|
57
|
+
get usedApplicationNames(): string[];
|
|
58
|
+
get usedApplicationVersions(): string[];
|
|
59
|
+
get usedApplicationNamesWithVersions(): string[];
|
|
60
|
+
getUsedModels(): ("dft" | "ml" | "unknown")[];
|
|
61
|
+
getHumanReadableUsedModels(): string[];
|
|
62
|
+
toJSON(): WorkflowSchema & AnyObject;
|
|
63
|
+
getHumanReadableProperties(): string[];
|
|
64
|
+
getProperties(): string[];
|
|
65
|
+
getSystemName(): string;
|
|
66
|
+
getDefaultDescription(): string;
|
|
67
|
+
private addUnit;
|
|
68
|
+
removeUnit(flowchartId: string): void;
|
|
69
|
+
addUnitType(type: UnitType, head?: boolean, index?: number): void;
|
|
70
|
+
addMapUnit(mapUnit: MapUnit, mapWorkflow: Workflow): void;
|
|
71
|
+
get allSubworkflows(): Subworkflow[];
|
|
72
|
+
get hasRelaxation(): boolean;
|
|
73
|
+
toggleRelaxation(): void;
|
|
74
|
+
getHashObject(): {
|
|
75
|
+
units: string;
|
|
76
|
+
subworkflows: string;
|
|
77
|
+
workflows: string;
|
|
78
|
+
};
|
|
79
|
+
private getStandataRelaxationSubworkflow;
|
|
80
|
+
private getRelaxationSubworkflow;
|
|
81
|
+
}
|
|
82
|
+
export default Workflow;
|