Dynamic Workflows
Dynamic workflows are created at runtime using
OptimizerBuilder. They combine an
optimizer, evaluator, and extractor into a single WorkChain class that can be
executed with AiiDA run().
Important
Dynamic workflows cannot be submitted to the AiiDA daemon because the generated WorkChain classes are not importable. Use Static Workflows for daemon-managed or long-running tasks.
OptimizerBuilder
OptimizerBuilder is the main
factory for assembling workflows dynamically.
Factory Methods
from_problemBuild an optimizer from a simple function-like problem (no structure).
from aiida_reoptimize.base import OptimizerBuilder, BasicExtractor from aiida_reoptimize.optimizers.convex.GD import AdamOptimizer from aiida_reoptimize.problems.problems import Sphere builder = OptimizerBuilder.from_problem( optimizer_workchain=AdamOptimizer, problem_workchain=Sphere, extractor=BasicExtractor(lambda outputs: outputs.value.value), ) optimizer = builder.get_optimizer() result = run(optimizer, parameters=Dict({"initial_parameters": [1.0, 1.0]}))
from_aseBuild an optimizer from an ASE Atoms structure and a calculator workchain.
from ase.build import bulk from aiida_reoptimize.base import OptimizerBuilder, BasicExtractor from aiida_reoptimize.optimizers.convex.GD import BFGSOptimizer builder = OptimizerBuilder.from_ase( optimizer_workchain=BFGSOptimizer, calculator_workchain=FleurScfWorkChain, extractor=BasicExtractor(lambda out: out.output_scf_wc_para.total_energy.value), calculator_parameters={...}, bulk=bulk("SrTiO3", "perovskite", a=3.905), )
from_MPDSBuild an optimizer with a structure retrieved from the MPDS database.
builder = OptimizerBuilder.from_MPDS( optimizer_workchain=BFGSOptimizer, calculator_workchain=FleurScfWorkChain, extractor=extractor, calculator_parameters={...}, mpds_query="WS2/194", )
Evaluator WorkChains
Two base evaluator WorkChains are used by the builder:
EvalWorkChainProblemFor plain parameter-vector problems. Submits a
problem_workchainfor each target in a batch.EvalWorkChainStructureProblemFor structure-based problems. Uses a
StructureCalculatorto generate builders from parameter vectors.
Extractors
BasicExtractor walks the outputs of each
finished AiiDA process using a user-supplied function and returns the objective value.
If the process failed or the output is missing, it returns a configurable penalty value
instead.