Getting Started

Installation

Install from source:

git clone https://github.com/mpds-io/aiida-reoptimize.git
cd aiida-reoptimize
pip install .

Documentation dependencies can be installed with:

pip install ".[docs]"

Quick Start

The package offers two workflow paradigms:

Dynamic workflows are assembled at runtime via OptimizerBuilder. They can only be used with AiiDA run() (not submit()), making them suitable for interactive or short-running tasks.

Static workflows are pre-defined, importable workchains registered as AiiDA entry points. They work with both run() and submit() and are suitable for daemon-managed production use.

Dynamic workflow example

from aiida.engine import run
from aiida_reoptimize.base import OptimizerBuilder, BasicExtractor
from aiida_reoptimize.optimizers.convex.GD import AdamOptimizer
from aiida_reoptimize.problems.problems import Sphere

extractor = BasicExtractor(lambda outputs: outputs.value.value)
builder = OptimizerBuilder.from_problem(
    optimizer_workchain=AdamOptimizer,
    problem_workchain=Sphere,
    extractor=extractor,
)
optimizer = builder.get_optimizer()
result = run(optimizer, parameters=Dict({"initial_parameters": [1.0, 1.0]}))

Static workflow example

from aiida.engine import submit
from aiida.orm import Dict, Int, Str, StructureData
from aiida_reoptimize.workflows import AdamFleurSCFOptimizer

result = submit(
    AdamFleurSCFOptimizer,
    parameters=Dict({...}),
    structure=StructureData(...),
    itmax=Int(50),
)