Equation of State workflow

This gallery example builds a realistic Equation of State (EOS) workflow using node_graph. It demonstrates optional structure relaxation, generation of a family of strained structures, nested sub-workflows, and provenance checks across multiple execution engines.

The same definition can be executed by every Engine adaptor to produce byte-for-byte identical provenance, illustrating the common data model used to compare and analyse runs from different orchestrators.

Define workflow nodes

We define individual nodes for relaxing the initial structure, generating strained variants, evaluating each variant, and fitting the resulting data to a Birch-Murnaghan EOS model. Dynamic namespaces allow the workflow to emit a variable number of structures and results without losing provenance fidelity.

[2]:
from typing import Annotated

from ase import Atoms
from ase.build import bulk
from ase.calculators.emt import EMT
from ase.optimize import BFGS

from node_graph import dynamic, namespace, task
from node_graph_engine.engines.dask import DaskEngine
from node_graph_engine.engines.parsl import ParslEngine
from aiida_pythonjob.data.jsonable_data import JsonableData
from aiida import load_profile

load_profile()


@task()
def relax_structure(atoms: Atoms) -> Atoms:
    """Relax the atomic structure to its minimum energy configuration using ASE."""
    atoms = Atoms.fromdict(atoms)
    atoms.calc = EMT()
    optimizer = BFGS(atoms)
    optimizer.run(fmax=0.01)
    return JsonableData._make_jsonable(atoms.todict())


@task()
def create_strained_structures(
    atoms: Atoms, scales: list
) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:
    """Generate a series of strained structures from a list of scaling factors."""
    atoms = Atoms.fromdict(atoms)
    scaled_structures = {}
    for i, scale in enumerate(scales):
        strained_atoms = atoms.copy()
        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)
        # Each structure gets a unique key, like "strain_0", "strain_1", etc.
        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(
            strained_atoms.todict()
        )
    return {"scaled_structures": scaled_structures}


@task()
def calculate_energy_and_volume(atoms: Atoms) -> dict:
    """Calculate the energy and volume for a single atomic structure."""

    print("Calculating energy and volume...")
    atoms = Atoms.fromdict(atoms)
    atoms.calc = EMT()
    atoms.get_potential_energy()
    return {
        "energy": atoms.calc.results["energy"],
        "volume": atoms.get_volume(),
    }


@task.graph()
def calc_all_structures(
    scaled_structures: Annotated[dict, dynamic(Atoms)],
) -> Annotated[dict, namespace(results=dynamic(dict))]:
    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""
    results = {}
    for key, atoms in scaled_structures.items():
        # The key for each result (e.g., "strain_0") becomes an output link
        # under the "results" namespace.
        results[key] = calculate_energy_and_volume(atoms).result

    # The returned dictionary's key "results" must match the name in the `outputs` decorator.
    return {"results": results}


@task()
def fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:
    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""
    from ase.eos import EquationOfState
    from ase.units import kJ

    # Unpack the energies and volumes from the input data dictionary
    volumes_list = [value["volume"] for value in data.values()]
    energies_list = [value["energy"] for value in data.values()]

    eos = EquationOfState(volumes_list, energies_list)
    v0, e0, B = eos.fit()

    # The bulk modulus B is converted from eV/ų to GPa.
    B_GPa = B / kJ * 1.0e24
    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}


@task.graph()
def eos_workflow(atoms: Atoms, scales: list, run_relax: bool = True) -> dict:
    """The complete EOS workflow graph."""
    if run_relax:
        atoms = relax_structure(atoms=atoms).result
    strained = create_strained_structures(atoms=atoms, scales=scales)
    emt_outputs = calc_all_structures(scaled_structures=strained.scaled_structures)
    return fit_eos_model(data=emt_outputs.results).result

Build and run the workflow

The same graph definition can be executed by any engine.

[3]:
cu = bulk("Cu", "fcc", a=3.6)
scales = [0.95, 0.98, 1.0, 1.02, 1.05]
ng = eos_workflow.build(JsonableData._make_jsonable(cu.todict()), scales)

Local engine

[3]:
from node_graph_engine.engines.local import LocalEngine

engine = LocalEngine("eos_workflow_local")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
Running task: relax_structure
      Step     Time          Energy          fmax
BFGS:    0 14:09:21       -0.006689        0.000000
Running task: create_strained_structures
Running task: calc_all_structures
Running task: calculate_energy_and_volume
Calculating energy and volume...
Running task: calculate_energy_and_volume1
Calculating energy and volume...
Running task: calculate_energy_and_volume2
Calculating energy and volume...
Running task: calculate_energy_and_volume3
Calculating energy and volume...
Running task: calculate_energy_and_volume4
Calculating energy and volume...
Running task: fit_eos_model
Fitted EOS parameters: {'result': <Dict: uuid: 8cdd830b-72b9-432c-8f6a-b4f505991f0a (pk: 220264)>}
[3]:
100%
N220243 Graph<eos_workflow> (05f1fa2d) State: finished Exit Code: 0 N220244 relax_structure (c0a81760) State: finished Exit Code: 0 N220243->N220244 CALL_CALC relax_structure N220246 create_strained_structures (88009ff2) State: finished Exit Code: 0 N220243->N220246 CALL_CALC create_strained_structures N220252 Graph<calc_all_structures> (c91b6365) State: finished Exit Code: 0 N220243->N220252 CALL_WORK calc_all_structures N220263 fit_eos_model (5763c5ad) State: finished Exit Code: 0 N220243->N220263 CALL_CALC fit_eos_model N220264 Dict (8cdd830b) N220243->N220264 RETURN result N220240 Dict (515e25d3) N220240->N220243 INPUT_WORK atoms N220241 List (5b454f35) N220241->N220243 INPUT_WORK scales N220242 Bool (92d88b06) True N220242->N220243 INPUT_WORK run_relax N220245 Dict (6d75c74c) N220244->N220245 CREATE result N220245->N220246 INPUT_CALC atoms N220247 Dict (08393007) N220246->N220247 CREATE scaled_structures__strain_0 N220248 Dict (e8057383) N220246->N220248 CREATE scaled_structures__strain_1 N220249 Dict (c2c7ec51) N220246->N220249 CREATE scaled_structures__strain_2 N220250 Dict (04b31e56) N220246->N220250 CREATE scaled_structures__strain_3 N220251 Dict (17366b88) N220246->N220251 CREATE scaled_structures__strain_4 N220247->N220252 INPUT_WORK scaled_structures__strain_0 N220253 calculate_energy_and_volume (5a110a83) State: finished Exit Code: 0 N220247->N220253 INPUT_CALC atoms N220248->N220252 INPUT_WORK scaled_structures__strain_1 N220255 calculate_energy_and_volume1 (312937fb) State: finished Exit Code: 0 N220248->N220255 INPUT_CALC atoms N220249->N220252 INPUT_WORK scaled_structures__strain_2 N220257 calculate_energy_and_volume2 (a916833c) State: finished Exit Code: 0 N220249->N220257 INPUT_CALC atoms N220250->N220252 INPUT_WORK scaled_structures__strain_3 N220259 calculate_energy_and_volume3 (03698ab5) State: finished Exit Code: 0 N220250->N220259 INPUT_CALC atoms N220251->N220252 INPUT_WORK scaled_structures__strain_4 N220261 calculate_energy_and_volume4 (22b2f6aa) State: finished Exit Code: 0 N220251->N220261 INPUT_CALC atoms N220252->N220253 CALL_CALC calculate_energy_and_volume N220254 Dict (d856bf82) N220252->N220254 RETURN results__strain_0 N220252->N220255 CALL_CALC calculate_energy_and_volume1 N220256 Dict (9ddac7a7) N220252->N220256 RETURN results__strain_1 N220252->N220257 CALL_CALC calculate_energy_and_volume2 N220258 Dict (0b27a00c) N220252->N220258 RETURN results__strain_2 N220252->N220259 CALL_CALC calculate_energy_and_volume3 N220260 Dict (d9fc849d) N220252->N220260 RETURN results__strain_3 N220252->N220261 CALL_CALC calculate_energy_and_volume4 N220262 Dict (d40d50d2) N220252->N220262 RETURN results__strain_4 N220253->N220254 CREATE result N220254->N220263 INPUT_CALC data__strain_0 N220255->N220256 CREATE result N220256->N220263 INPUT_CALC data__strain_1 N220257->N220258 CREATE result N220258->N220263 INPUT_CALC data__strain_2 N220259->N220260 CREATE result N220260->N220263 INPUT_CALC data__strain_3 N220261->N220262 CREATE result N220262->N220263 INPUT_CALC data__strain_4 N220263->N220264 CREATE result

Dask engine

[4]:
engine = DaskEngine("eos_workflow_dask")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
      Step     Time          Energy          fmax
BFGS:    0 14:09:25       -0.006689        0.000000
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Fitted EOS parameters: {'result': <Dict: uuid: 8c9c7484-8b74-42c9-8f1c-d64bc330a763 (pk: 220289)>}
[4]:
100%
N220268 Graph<eos_workflow> (c54d1e9e) State: finished Exit Code: 0 N220269 relax_structure (6797987b) State: finished Exit Code: 0 N220268->N220269 CALL_CALC relax_structure N220271 create_strained_structures (ff95711c) State: finished Exit Code: 0 N220268->N220271 CALL_CALC create_strained_structures N220277 Graph<calc_all_structures> (caa485b5) State: finished Exit Code: 0 N220268->N220277 CALL_WORK calc_all_structures N220288 fit_eos_model (2093f60a) State: finished Exit Code: 0 N220268->N220288 CALL_CALC fit_eos_model N220289 Dict (8c9c7484) N220268->N220289 RETURN result N220265 Dict (6755f981) N220265->N220268 INPUT_WORK atoms N220266 List (8c276b18) N220266->N220268 INPUT_WORK scales N220267 Bool (0539281c) True N220267->N220268 INPUT_WORK run_relax N220270 Dict (d903d7bf) N220269->N220270 CREATE result N220270->N220271 INPUT_CALC atoms N220272 Dict (242964fc) N220271->N220272 CREATE scaled_structures__strain_0 N220273 Dict (afdc5211) N220271->N220273 CREATE scaled_structures__strain_1 N220274 Dict (4f0ae25d) N220271->N220274 CREATE scaled_structures__strain_2 N220275 Dict (2004f8f4) N220271->N220275 CREATE scaled_structures__strain_3 N220276 Dict (733b99e4) N220271->N220276 CREATE scaled_structures__strain_4 N220272->N220277 INPUT_WORK scaled_structures__strain_0 N220281 calculate_energy_and_volume (8c44b22b) State: finished Exit Code: 0 N220272->N220281 INPUT_CALC atoms N220273->N220277 INPUT_WORK scaled_structures__strain_1 N220282 calculate_energy_and_volume1 (e2b28ccb) State: finished Exit Code: 0 N220273->N220282 INPUT_CALC atoms N220274->N220277 INPUT_WORK scaled_structures__strain_2 N220280 calculate_energy_and_volume2 (573207d7) State: finished Exit Code: 0 N220274->N220280 INPUT_CALC atoms N220275->N220277 INPUT_WORK scaled_structures__strain_3 N220278 calculate_energy_and_volume3 (240682fa) State: finished Exit Code: 0 N220275->N220278 INPUT_CALC atoms N220276->N220277 INPUT_WORK scaled_structures__strain_4 N220279 calculate_energy_and_volume4 (4ed48003) State: finished Exit Code: 0 N220276->N220279 INPUT_CALC atoms N220277->N220278 CALL_CALC calculate_energy_and_volume3 N220277->N220279 CALL_CALC calculate_energy_and_volume4 N220277->N220280 CALL_CALC calculate_energy_and_volume2 N220277->N220281 CALL_CALC calculate_energy_and_volume N220277->N220282 CALL_CALC calculate_energy_and_volume1 N220283 Dict (a5fad9e9) N220277->N220283 RETURN results__strain_3 N220284 Dict (50411701) N220277->N220284 RETURN results__strain_4 N220285 Dict (7cf50366) N220277->N220285 RETURN results__strain_2 N220286 Dict (843b2644) N220277->N220286 RETURN results__strain_1 N220287 Dict (98329daa) N220277->N220287 RETURN results__strain_0 N220278->N220283 CREATE result N220279->N220284 CREATE result N220280->N220285 CREATE result N220281->N220287 CREATE result N220282->N220286 CREATE result N220283->N220288 INPUT_CALC data__strain_3 N220284->N220288 INPUT_CALC data__strain_4 N220285->N220288 INPUT_CALC data__strain_2 N220286->N220288 INPUT_CALC data__strain_1 N220287->N220288 INPUT_CALC data__strain_0 N220288->N220289 CREATE result

Prefect engine

[5]:
from node_graph_engine.engines.prefect import PrefectEngine

engine = PrefectEngine("eos_workflow_prefect")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
14:09:34.580 | INFO    | prefect - Starting temporary server on http://127.0.0.1:8614
See https://docs.prefect.io/v3/concepts/server#how-to-guides for more information on running a dedicated Prefect server.
/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py:2249: UnsupportedFieldAttributeWarning: The 'default' attribute with value 'UTC' was provided to the `Field()` function, which has no effect in the context it was used. 'default' is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.
  warnings.warn(
14:09:40.509 | INFO    | Flow run 'omniscient-magpie' - Beginning flow run 'omniscient-magpie' for flow 'eos_workflow_prefect'
      Step     Time          Energy          fmax
BFGS:    0 14:09:40       -0.006689        0.000000
14:09:40.995 | INFO    | Task run 'task:relax_structure-354' - Finished in state Completed()
14:09:41.006 | INFO    | Task run 'ng:get_nested-dba' - Finished in state Completed()
14:09:41.406 | INFO    | Task run 'task:create_strained_structures-199' - Finished in state Completed()
14:09:41.423 | INFO    | Task run 'ng:get_nested-a04' - Finished in state Completed()
14:09:41.890 | INFO    | Task run 'task:calc_all_structures-6b6' - Beginning subflow run 'expert-whippet' for flow 'calc_all_structures'
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
14:09:42.875 | INFO    | Task run 'task:calculate_energy_and_volume1-e2e' - Finished in state Completed()
14:09:43.022 | INFO    | Task run 'task:calculate_energy_and_volume4-50b' - Finished in state Completed()
14:09:43.061 | INFO    | Task run 'task:calculate_energy_and_volume-c78' - Finished in state Completed()
14:09:43.081 | INFO    | Task run 'task:calculate_energy_and_volume3-4a7' - Finished in state Completed()
14:09:43.102 | INFO    | Task run 'task:calculate_energy_and_volume2-9ad' - Finished in state Completed()
14:09:43.145 | INFO    | Flow run 'expert-whippet' - Finished in state Completed()
state_map: {'graph_inputs': {'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': 'b497575d-a592-4066-8f05-a35be0eec69d'}, 'strain_1': {'__ng_tagged__': True, 'uuid': 'ca07074e-0519-43f8-816d-eaacd02f3004'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'b544d7e5-f559-4b91-861f-bf67685450bf'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'c4d1df8b-8731-43c8-b951-22def83be529'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fa087cc5-cf70-44ef-ab0b-c45e1f2265a1'}}}, 'calculate_energy_and_volume': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/7ac8e8bf67cb438e9ea727b9618d0cc7', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': '971b21aa-526e-4277-9e76-4671acfa2742'}})), 'calculate_energy_and_volume1': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/1ffd93415dc642f8a9b1e8a5beeecb30', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': 'c6be3c7b-2a7b-4619-b622-90dfef343990'}})), 'calculate_energy_and_volume2': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/62b3e6c276f84f549bc679f70f1c21e2', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': 'a2b1d55b-854c-4cc8-b39d-f453bd01ceef'}})), 'calculate_energy_and_volume3': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/9641809751d04bb1bb8b7496d4d332af', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': '1b1d03ac-1ca1-4bc5-bf73-06638e79a5f6'}})), 'calculate_energy_and_volume4': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/35fa4658d676405ba09cfc650d1e3e5d', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': '9ad20db6-2742-45c2-89e3-59194563a6e7'}}))}
14:09:43.495 | INFO    | Task run 'task:calc_all_structures-6b6' - Finished in state Completed()
14:09:43.508 | INFO    | Task run 'ng:get_nested-ed9' - Finished in state Completed()
14:09:43.847 | INFO    | Task run 'task:fit_eos_model-75a' - Finished in state Completed()
14:09:43.892 | INFO    | Flow run 'omniscient-magpie' - Finished in state Completed()
state_map: {'graph_inputs': {'atoms': {'__ng_tagged__': True, 'uuid': 'cb3b6e2b-c6c2-4efb-ab3f-4d77b94eeb16'}, 'scales': {'__ng_tagged__': True, 'uuid': '60a379db-5640-4b41-8384-02f545312fbc'}, 'run_relax': {'__ng_tagged__': True, 'uuid': '98ea8b8e-b35c-4140-a710-03a30b24145d'}}, 'relax_structure': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/72546c500e394e5c85bb4c7853a86f38', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': 'f5876b13-de5d-4b92-905a-c10a6fb975ca'}})), 'create_strained_structures': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/d35c0057b50c46b794a23f52d586fe64', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': 'b497575d-a592-4066-8f05-a35be0eec69d'}, 'strain_1': {'__ng_tagged__': True, 'uuid': 'ca07074e-0519-43f8-816d-eaacd02f3004'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'b544d7e5-f559-4b91-861f-bf67685450bf'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'c4d1df8b-8731-43c8-b951-22def83be529'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fa087cc5-cf70-44ef-ab0b-c45e1f2265a1'}}})), 'calc_all_structures': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/6fc58ae76dad4518ac496dbf24ba0dd3', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '971b21aa-526e-4277-9e76-4671acfa2742'}, 'strain_1': {'__ng_tagged__': True, 'uuid': 'c6be3c7b-2a7b-4619-b622-90dfef343990'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'a2b1d55b-854c-4cc8-b39d-f453bd01ceef'}, 'strain_3': {'__ng_tagged__': True, 'uuid': '1b1d03ac-1ca1-4bc5-bf73-06638e79a5f6'}, 'strain_4': {'__ng_tagged__': True, 'uuid': '9ad20db6-2742-45c2-89e3-59194563a6e7'}}})), 'fit_eos_model': Completed(message=None, type=COMPLETED, result=ResultRecord(metadata=ResultRecordMetadata(storage_key='/home/xing/.prefect/storage/8ae946d411cb4407a8977a327af483c8', expiration=None, serializer=PickleSerializer(type='pickle', picklelib='cloudpickle', picklelib_version=None), prefect_version='3.4.23', storage_block_id=None), result={'result': {'__ng_tagged__': True, 'uuid': 'ae8ee1fe-7408-40d5-b0c7-a6e0b04ea510'}}))}
Fitted EOS parameters: {'result': <Dict: uuid: ae8ee1fe-7408-40d5-b0c7-a6e0b04ea510 (pk: 220314)>}
[5]:
100%
N220293 Graph<eos_workflow> (f66d7be5) State: finished Exit Code: 0 N220294 relax_structure (546fb0a4) State: finished Exit Code: 0 N220293->N220294 CALL_CALC relax_structure N220296 create_strained_structures (03a9844f) State: finished Exit Code: 0 N220293->N220296 CALL_CALC create_strained_structures N220302 Graph<calc_all_structures> (96c776e9) State: finished Exit Code: 0 N220293->N220302 CALL_WORK calc_all_structures N220313 fit_eos_model (54e6a046) State: finished Exit Code: 0 N220293->N220313 CALL_CALC fit_eos_model N220314 Dict (ae8ee1fe) N220293->N220314 RETURN result N220290 Dict (cb3b6e2b) N220290->N220293 INPUT_WORK atoms N220291 List (60a379db) N220291->N220293 INPUT_WORK scales N220292 Bool (98ea8b8e) True N220292->N220293 INPUT_WORK run_relax N220295 Dict (f5876b13) N220294->N220295 CREATE result N220295->N220296 INPUT_CALC atoms N220297 Dict (b497575d) N220296->N220297 CREATE scaled_structures__strain_0 N220298 Dict (ca07074e) N220296->N220298 CREATE scaled_structures__strain_1 N220299 Dict (b544d7e5) N220296->N220299 CREATE scaled_structures__strain_2 N220300 Dict (c4d1df8b) N220296->N220300 CREATE scaled_structures__strain_3 N220301 Dict (fa087cc5) N220296->N220301 CREATE scaled_structures__strain_4 N220297->N220302 INPUT_WORK scaled_structures__strain_0 N220305 calculate_energy_and_volume (f3ea3e9d) State: finished Exit Code: 0 N220297->N220305 INPUT_CALC atoms N220298->N220302 INPUT_WORK scaled_structures__strain_1 N220303 calculate_energy_and_volume1 (17ca6ea8) State: finished Exit Code: 0 N220298->N220303 INPUT_CALC atoms N220299->N220302 INPUT_WORK scaled_structures__strain_2 N220307 calculate_energy_and_volume2 (0208b97f) State: finished Exit Code: 0 N220299->N220307 INPUT_CALC atoms N220300->N220302 INPUT_WORK scaled_structures__strain_3 N220306 calculate_energy_and_volume3 (283adad5) State: finished Exit Code: 0 N220300->N220306 INPUT_CALC atoms N220301->N220302 INPUT_WORK scaled_structures__strain_4 N220304 calculate_energy_and_volume4 (13ab4be4) State: finished Exit Code: 0 N220301->N220304 INPUT_CALC atoms N220302->N220303 CALL_CALC calculate_energy_and_volume1 N220302->N220304 CALL_CALC calculate_energy_and_volume4 N220302->N220305 CALL_CALC calculate_energy_and_volume N220302->N220306 CALL_CALC calculate_energy_and_volume3 N220302->N220307 CALL_CALC calculate_energy_and_volume2 N220308 Dict (c6be3c7b) N220302->N220308 RETURN results__strain_1 N220309 Dict (9ad20db6) N220302->N220309 RETURN results__strain_4 N220310 Dict (971b21aa) N220302->N220310 RETURN results__strain_0 N220311 Dict (a2b1d55b) N220302->N220311 RETURN results__strain_2 N220312 Dict (1b1d03ac) N220302->N220312 RETURN results__strain_3 N220303->N220308 CREATE result N220304->N220309 CREATE result N220305->N220310 CREATE result N220306->N220312 CREATE result N220307->N220311 CREATE result N220308->N220313 INPUT_CALC data__strain_1 N220309->N220313 INPUT_CALC data__strain_4 N220310->N220313 INPUT_CALC data__strain_0 N220311->N220313 INPUT_CALC data__strain_2 N220312->N220313 INPUT_CALC data__strain_3 N220313->N220314 CREATE result

Airflow engine

[6]:
from node_graph_engine.engines.airflow import AirflowEngine

engine = AirflowEngine("eos_workflow_airflow")
results = engine.submit(ng, wait=True)
print("Fitted EOS parameters:", results)
engine.provenance_graph
2025-11-27T13:09:45.796876Z [info     ] Waiting for Airflow scheduler to parse DAG 'eos_workflow_airflow' located at '/home/xing/airflow/dags/eos_workflow_airflow.py' [node_graph_engine.engines.airflow] loc=airflow.py:786
2025-11-27T13:09:45.797905Z [info     ] Filling up the DagBag from /home/xing/airflow/dags [airflow.models.dagbag.DagBag] loc=dagbag.py:593
2025-11-27T13:09:45.931668Z [info     ] DagBag detected DAG 'eos_workflow_airflow' after 1 attempt(s) [node_graph_engine.engines.airflow] loc=airflow.py:786
2025-11-27T13:09:45.932635Z [info     ] Filling up the DagBag from /home/xing/airflow/dags [airflow.models.dagbag.DagBag] loc=dagbag.py:593
2025-11-27T13:09:46.195489Z [info     ] Trigger attempt 1 for DAG 'eos_workflow_airflow' failed (Dag id eos_workflow_airflow not found in DagModel); retrying in 5.0s [node_graph_engine.engines.airflow] loc=airflow.py:661
2025-11-27T13:09:51.198159Z [info     ] Trigger attempt 2 for DAG 'eos_workflow_airflow' failed (Dag id eos_workflow_airflow not found in DagModel); retrying in 5.0s [node_graph_engine.engines.airflow] loc=airflow.py:661
2025-11-27T13:09:56.202035Z [info     ] Trigger attempt 3 for DAG 'eos_workflow_airflow' failed (Dag id eos_workflow_airflow not found in DagModel); retrying in 5.0s [node_graph_engine.engines.airflow] loc=airflow.py:661
2025-11-27T13:10:01.206584Z [info     ] Trigger attempt 4 for DAG 'eos_workflow_airflow' failed (Dag id eos_workflow_airflow not found in DagModel); retrying in 5.0s [node_graph_engine.engines.airflow] loc=airflow.py:661
2025-11-27T13:10:06.262476Z [info     ] Successfully triggered DAG 'eos_workflow_airflow' after 5 attempt(s) [node_graph_engine.engines.airflow] loc=airflow.py:671
Fitted EOS parameters: {'result': <Dict: uuid: 6e5ce806-19ee-473e-8fbc-bbde60d9361a (pk: 220339)>}
[6]:
100%
N220318 Graph<eos_workflow> (b3596577) State: finished Exit Code: 0 N220319 relax_structure (da31aeed) State: finished Exit Code: 0 N220318->N220319 CALL_CALC relax_structure N220321 create_strained_structures (d455b20d) State: finished Exit Code: 0 N220318->N220321 CALL_CALC create_strained_structures N220327 Graph<calc_all_structures> (d2687b57) State: finished Exit Code: 0 N220318->N220327 CALL_WORK calc_all_structures N220338 fit_eos_model (83351557) State: finished Exit Code: 0 N220318->N220338 CALL_CALC fit_eos_model N220339 Dict (6e5ce806) N220318->N220339 RETURN result N220315 Dict (30223064) N220315->N220318 INPUT_WORK atoms N220316 Bool (266a7edb) True N220316->N220318 INPUT_WORK run_relax N220317 List (9546437c) N220317->N220318 INPUT_WORK scales N220320 Dict (a60f4aee) N220319->N220320 CREATE result N220320->N220321 INPUT_CALC atoms N220322 Dict (d031b73e) N220321->N220322 CREATE scaled_structures__strain_0 N220323 Dict (f5aa5d26) N220321->N220323 CREATE scaled_structures__strain_1 N220324 Dict (92b92d74) N220321->N220324 CREATE scaled_structures__strain_2 N220325 Dict (e813e88e) N220321->N220325 CREATE scaled_structures__strain_3 N220326 Dict (c02b6312) N220321->N220326 CREATE scaled_structures__strain_4 N220322->N220327 INPUT_WORK scaled_structures__strain_0 N220329 calculate_energy_and_volume (1f0b1afb) State: finished Exit Code: 0 N220322->N220329 INPUT_CALC atoms N220323->N220327 INPUT_WORK scaled_structures__strain_1 N220334 calculate_energy_and_volume1 (99e35c92) State: finished Exit Code: 0 N220323->N220334 INPUT_CALC atoms N220324->N220327 INPUT_WORK scaled_structures__strain_2 N220331 calculate_energy_and_volume2 (27ce05b6) State: finished Exit Code: 0 N220324->N220331 INPUT_CALC atoms N220325->N220327 INPUT_WORK scaled_structures__strain_3 N220328 calculate_energy_and_volume3 (de471bea) State: finished Exit Code: 0 N220325->N220328 INPUT_CALC atoms N220326->N220327 INPUT_WORK scaled_structures__strain_4 N220330 calculate_energy_and_volume4 (0a1f03b9) State: finished Exit Code: 0 N220326->N220330 INPUT_CALC atoms N220327->N220328 CALL_CALC calculate_energy_and_volume3 N220327->N220329 CALL_CALC calculate_energy_and_volume N220327->N220330 CALL_CALC calculate_energy_and_volume4 N220327->N220331 CALL_CALC calculate_energy_and_volume2 N220332 Dict (fb4ceddd) N220327->N220332 RETURN results__strain_3 N220333 Dict (9e98f98c) N220327->N220333 RETURN results__strain_0 N220327->N220334 CALL_CALC calculate_energy_and_volume1 N220335 Dict (dc70894e) N220327->N220335 RETURN results__strain_4 N220336 Dict (f1ac2466) N220327->N220336 RETURN results__strain_2 N220337 Dict (99df66fc) N220327->N220337 RETURN results__strain_1 N220328->N220332 CREATE result N220329->N220333 CREATE result N220330->N220335 CREATE result N220331->N220336 CREATE result N220332->N220338 INPUT_CALC data__strain_3 N220333->N220338 INPUT_CALC data__strain_0 N220334->N220337 CREATE result N220335->N220338 INPUT_CALC data__strain_4 N220336->N220338 INPUT_CALC data__strain_2 N220337->N220338 INPUT_CALC data__strain_1 N220338->N220339 CREATE result

Celery engine

[4]:
from node_graph_engine.engines.celery import CeleryEngine

engine = CeleryEngine(
    "celery-flow",
    broker_url="redis://localhost:6379/0",
    backend_url="redis://localhost:6379/1",
)
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
Fitted EOS parameters: {'result': <Dict: uuid: 91370dc4-33ca-4f41-8656-895f96eceed6 (pk: 220487)>}
[4]:
100%
N220466 Graph<eos_workflow> (77421f84) State: finished Exit Code: 0 N220467 relax_structure (ddddc924) State: finished Exit Code: 0 N220466->N220467 CALL_CALC relax_structure N220469 create_strained_structures (650e5967) State: finished Exit Code: 0 N220466->N220469 CALL_CALC create_strained_structures N220475 Graph<calc_all_structures> (80875cdb) State: finished Exit Code: 0 N220466->N220475 CALL_WORK calc_all_structures N220486 fit_eos_model (264bb563) State: finished Exit Code: 0 N220466->N220486 CALL_CALC fit_eos_model N220487 Dict (91370dc4) N220466->N220487 RETURN result N220463 Dict (13538e1d) N220463->N220466 INPUT_WORK atoms N220464 List (b9665e25) N220464->N220466 INPUT_WORK scales N220465 Bool (c94470f7) True N220465->N220466 INPUT_WORK run_relax N220468 Dict (bccfdbde) N220467->N220468 CREATE result N220468->N220469 INPUT_CALC atoms N220470 Dict (10d768cc) N220469->N220470 CREATE scaled_structures__strain_0 N220471 Dict (d6809436) N220469->N220471 CREATE scaled_structures__strain_1 N220472 Dict (de04f006) N220469->N220472 CREATE scaled_structures__strain_2 N220473 Dict (491848d9) N220469->N220473 CREATE scaled_structures__strain_3 N220474 Dict (96195a94) N220469->N220474 CREATE scaled_structures__strain_4 N220470->N220475 INPUT_WORK scaled_structures__strain_0 N220478 calculate_energy_and_volume (45c7848c) State: finished Exit Code: 0 N220470->N220478 INPUT_CALC atoms N220471->N220475 INPUT_WORK scaled_structures__strain_1 N220477 calculate_energy_and_volume1 (7cd5b480) State: finished Exit Code: 0 N220471->N220477 INPUT_CALC atoms N220472->N220475 INPUT_WORK scaled_structures__strain_2 N220476 calculate_energy_and_volume2 (03b16520) State: finished Exit Code: 0 N220472->N220476 INPUT_CALC atoms N220473->N220475 INPUT_WORK scaled_structures__strain_3 N220479 calculate_energy_and_volume3 (62098341) State: finished Exit Code: 0 N220473->N220479 INPUT_CALC atoms N220474->N220475 INPUT_WORK scaled_structures__strain_4 N220480 calculate_energy_and_volume4 (e14790fd) State: finished Exit Code: 0 N220474->N220480 INPUT_CALC atoms N220475->N220476 CALL_CALC calculate_energy_and_volume2 N220475->N220477 CALL_CALC calculate_energy_and_volume1 N220475->N220478 CALL_CALC calculate_energy_and_volume N220475->N220479 CALL_CALC calculate_energy_and_volume3 N220475->N220480 CALL_CALC calculate_energy_and_volume4 N220481 Dict (a20a8eaa) N220475->N220481 RETURN results__strain_1 N220482 Dict (4ddbb371) N220475->N220482 RETURN results__strain_2 N220483 Dict (4997f2d4) N220475->N220483 RETURN results__strain_0 N220484 Dict (593fbfdb) N220475->N220484 RETURN results__strain_3 N220485 Dict (df562a04) N220475->N220485 RETURN results__strain_4 N220476->N220482 CREATE result N220477->N220481 CREATE result N220478->N220483 CREATE result N220479->N220484 CREATE result N220480->N220485 CREATE result N220481->N220486 INPUT_CALC data__strain_1 N220482->N220486 INPUT_CALC data__strain_2 N220483->N220486 INPUT_CALC data__strain_0 N220484->N220486 INPUT_CALC data__strain_3 N220485->N220486 INPUT_CALC data__strain_4 N220486->N220487 CREATE result

Parsl engine

[8]:
engine = ParslEngine("eos_workflow_parsl")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
2025-11-27T13:11:25.360479Z [info     ] Starting DataFlowKernel with config
Config(
    app_cache=True,
    checkpoint_files=None,
    checkpoint_mode=None,
    checkpoint_period=None,
    dependency_resolver=None,
    executors=(ThreadPoolExecutor(
        label='threads',
        max_threads=4,
        remote_monitoring_radio=<parsl.monitoring.radios.multiprocessing.MultiprocessingQueueRadio object at 0x7a1c2664c9d0>,
        storage_access=None,
        thread_name_prefix='',
        working_dir=None
    ),),
    exit_mode='cleanup',
    garbage_collect=True,
    initialize_logging=True,
    internal_tasks_max_threads=10,
    max_idletime=120.0,
    monitoring=None,
    project_name=None,
    retries=0,
    retry_handler=None,
    run_dir='runinfo',
    std_autopath=None,
    strategy=None,
    strategy_period=5,
    usage_tracking=0
) [parsl.dataflow.dflow] loc=dflow.py:100
2025-11-27T13:11:25.361086Z [info     ] Parsl version: 2025.10.06      [parsl.dataflow.dflow] loc=dflow.py:102
2025-11-27T13:11:25.361500Z [info     ] Run id is: a068f710-3104-4bc9-a8bf-eb9dbbe6a882 [parsl.dataflow.dflow] loc=dflow.py:127
2025-11-27T13:11:25.394286Z [info     ] App caching initialized        [parsl.dataflow.memoization] loc=memoization.py:161
2025-11-27T13:11:25.614656Z [info     ] Task 0 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.624123Z [info     ] Parsl task 0 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:25.633890Z [info     ] Standard out for task 0 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.641507Z [info     ] Standard error for task 0 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.645830Z [info     ] Task 1 submitted for App _parsl_get_nested, waiting on task 0 [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.666318Z [info     ] Task 2 submitted for App _node_app, waiting on task 1 [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.669612Z [info     ] Task 3 submitted for App _parsl_get_nested, waiting on task 2 [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.670869Z [info     ] Task 4 submitted for App _node_app, waiting on task 3 [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.688065Z [info     ] Task 5 submitted for App _parsl_get_nested, waiting on task 4 [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:25.692129Z [info     ] Task 6 submitted for App _node_app, waiting on task 5 [parsl.dataflow.dflow] loc=dflow.py:1088
      Step     Time          Energy          fmax
BFGS:    0 14:11:25       -0.006689        0.000000
2025-11-27T13:11:25.761631Z [info     ] Task 0 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:25.762498Z [info     ] Standard out for task 0 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.763148Z [info     ] Standard error for task 0 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.763695Z [info     ] Parsl task 1 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:25.764279Z [info     ] Standard out for task 1 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.764732Z [info     ] Standard error for task 1 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.765339Z [info     ] Task 1 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:25.765840Z [info     ] Standard out for task 1 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.766217Z [info     ] Standard error for task 1 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.766802Z [info     ] Parsl task 2 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:25.775563Z [info     ] Standard out for task 2 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:25.781457Z [info     ] Standard error for task 2 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.022297Z [info     ] Task 2 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:26.023363Z [info     ] Standard out for task 2 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.024064Z [info     ] Standard error for task 2 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.024488Z [info     ] Parsl task 3 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.025010Z [info     ] Standard out for task 3 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.025385Z [info     ] Standard error for task 3 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.025869Z [info     ] Task 3 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:26.026331Z [info     ] Standard out for task 3 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.026658Z [info     ] Standard error for task 3 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.027223Z [info     ] Parsl task 4 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.042591Z [info     ] Standard out for task 4 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.044342Z [info     ] Standard error for task 4 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.230725Z [info     ] Task 7 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:26.231682Z [info     ] Task 8 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:26.236126Z [info     ] Parsl task 7 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.247965Z [info     ] Standard out for task 7 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.258098Z [info     ] Standard error for task 7 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.260442Z [info     ] Task 9 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:26.269042Z [info     ] Parsl task 8 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.286064Z [info     ] Standard out for task 8 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.307605Z [info     ] Task 10 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:26.311991Z [info     ] Standard error for task 8 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.349554Z [info     ] Parsl task 9 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.358261Z [info     ] Task 11 submitted for App _node_app, not waiting on any dependency [parsl.dataflow.dflow] loc=dflow.py:1088
2025-11-27T13:11:26.367940Z [info     ] Standard out for task 9 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.392998Z [info     ] Standard error for task 9 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.402508Z [info     ] Parsl task 10 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.405121Z [info     ] Standard out for task 10 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.412482Z [info     ] Standard error for task 10 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.416731Z [info     ] Parsl task 11 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:26.430045Z [info     ] Standard out for task 11 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.448006Z [info     ] Standard error for task 11 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
Calculating energy and volume...
Calculating energy and volume...
2025-11-27T13:11:26.721321Z [info     ] Task 8 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:26.722750Z [info     ] Standard out for task 8 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.729157Z [info     ] Standard error for task 8 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.763788Z [info     ] Task 7 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:26.764608Z [info     ] Standard out for task 7 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.765059Z [info     ] Standard error for task 7 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
Calculating energy and volume...
2025-11-27T13:11:26.953982Z [info     ] Task 9 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:26.956287Z [info     ] Standard out for task 9 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:26.960403Z [info     ] Standard error for task 9 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
Calculating energy and volume...
Calculating energy and volume...
2025-11-27T13:11:27.180853Z [info     ] Task 10 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:27.183076Z [info     ] Standard out for task 10 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.186605Z [info     ] Standard error for task 10 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.189446Z [info     ] Task 11 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:27.191265Z [info     ] Standard out for task 11 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.203158Z [info     ] Standard error for task 11 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.401958Z [info     ] Task 4 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:27.402745Z [info     ] Standard out for task 4 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.403859Z [info     ] Standard error for task 4 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.404373Z [info     ] Parsl task 5 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:27.404944Z [info     ] Standard out for task 5 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.405204Z [info     ] Standard error for task 5 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.405717Z [info     ] Task 5 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:27.406120Z [info     ] Standard out for task 5 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.406401Z [info     ] Standard error for task 5 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.406773Z [info     ] Parsl task 6 try 0 launched on executor threads [parsl.dataflow.dflow] loc=dflow.py:775
2025-11-27T13:11:27.414205Z [info     ] Standard out for task 6 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.415418Z [info     ] Standard error for task 6 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.604113Z [info     ] Task 6 completed (launched -> exec_done) [parsl.dataflow.dflow] loc=dflow.py:593
2025-11-27T13:11:27.605212Z [info     ] Standard out for task 6 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
2025-11-27T13:11:27.614693Z [info     ] Standard error for task 6 will not be redirected. [parsl.dataflow.dflow] loc=dflow.py:1339
Fitted EOS parameters: {'result': <Dict: uuid: 58ab0e3f-d0b0-47c3-843c-52ff53304c81 (pk: 220364)>}
[8]:
100%
N220343 Graph<eos_workflow> (96df35bb) State: finished Exit Code: 0 N220344 relax_structure (248e85d1) State: finished Exit Code: 0 N220343->N220344 CALL_CALC relax_structure N220346 create_strained_structures (ae6baf67) State: finished Exit Code: 0 N220343->N220346 CALL_CALC create_strained_structures N220352 Graph<calc_all_structures> (310b69fa) State: finished Exit Code: 0 N220343->N220352 CALL_WORK calc_all_structures N220363 fit_eos_model (a4aa6aab) State: finished Exit Code: 0 N220343->N220363 CALL_CALC fit_eos_model N220364 Dict (58ab0e3f) N220343->N220364 RETURN result N220340 Dict (9046f889) N220340->N220343 INPUT_WORK atoms N220341 List (ef34e630) N220341->N220343 INPUT_WORK scales N220342 Bool (62e8427d) True N220342->N220343 INPUT_WORK run_relax N220345 Dict (d9e5123a) N220344->N220345 CREATE result N220345->N220346 INPUT_CALC atoms N220347 Dict (2e13b989) N220346->N220347 CREATE scaled_structures__strain_0 N220348 Dict (a400c9de) N220346->N220348 CREATE scaled_structures__strain_1 N220349 Dict (e4aa5f49) N220346->N220349 CREATE scaled_structures__strain_2 N220350 Dict (fa86d396) N220346->N220350 CREATE scaled_structures__strain_3 N220351 Dict (8253d25b) N220346->N220351 CREATE scaled_structures__strain_4 N220347->N220352 INPUT_WORK scaled_structures__strain_0 N220353 calculate_energy_and_volume (5179e1ee) State: finished Exit Code: 0 N220347->N220353 INPUT_CALC atoms N220348->N220352 INPUT_WORK scaled_structures__strain_1 N220354 calculate_energy_and_volume1 (9080947d) State: finished Exit Code: 0 N220348->N220354 INPUT_CALC atoms N220349->N220352 INPUT_WORK scaled_structures__strain_2 N220355 calculate_energy_and_volume2 (375f4231) State: finished Exit Code: 0 N220349->N220355 INPUT_CALC atoms N220350->N220352 INPUT_WORK scaled_structures__strain_3 N220359 calculate_energy_and_volume3 (27f4a25f) State: finished Exit Code: 0 N220350->N220359 INPUT_CALC atoms N220351->N220352 INPUT_WORK scaled_structures__strain_4 N220360 calculate_energy_and_volume4 (bb8a3fa9) State: finished Exit Code: 0 N220351->N220360 INPUT_CALC atoms N220352->N220353 CALL_CALC calculate_energy_and_volume N220352->N220354 CALL_CALC calculate_energy_and_volume1 N220352->N220355 CALL_CALC calculate_energy_and_volume2 N220356 Dict (8d398d15) N220352->N220356 RETURN results__strain_1 N220357 Dict (9f6bded4) N220352->N220357 RETURN results__strain_0 N220358 Dict (c1c3dec6) N220352->N220358 RETURN results__strain_2 N220352->N220359 CALL_CALC calculate_energy_and_volume3 N220352->N220360 CALL_CALC calculate_energy_and_volume4 N220361 Dict (a08957c2) N220352->N220361 RETURN results__strain_3 N220362 Dict (8fb19e58) N220352->N220362 RETURN results__strain_4 N220353->N220357 CREATE result N220354->N220356 CREATE result N220355->N220358 CREATE result N220356->N220363 INPUT_CALC data__strain_1 N220357->N220363 INPUT_CALC data__strain_0 N220358->N220363 INPUT_CALC data__strain_2 N220359->N220361 CREATE result N220360->N220362 CREATE result N220361->N220363 INPUT_CALC data__strain_3 N220362->N220363 INPUT_CALC data__strain_4 N220363->N220364 CREATE result

Jobflow engine

[9]:
from node_graph_engine.engines.jobflow import JobflowEngine

engine = JobflowEngine("eos_workflow_jobflow")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
2025-11-27 14:11:33,277 INFO Started executing jobs locally
2025-11-27T13:11:33.278465Z [info     ] Started executing jobs locally [jobflow.managers.local] loc=local.py:179
2025-11-27 14:11:33,482 INFO Starting job - relax_structure (47622e37-a333-403c-9bc2-aace79cc290a)
2025-11-27T13:11:33.483684Z [info     ] Starting job - relax_structure (47622e37-a333-403c-9bc2-aace79cc290a) [jobflow.core.job] loc=job.py:586
      Step     Time          Energy          fmax
BFGS:    0 14:11:33       -0.006689        0.000000
2025-11-27 14:11:33,651 INFO Finished job - relax_structure (47622e37-a333-403c-9bc2-aace79cc290a)
2025-11-27T13:11:33.652219Z [info     ] Finished job - relax_structure (47622e37-a333-403c-9bc2-aace79cc290a) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:33,652 INFO Starting job - jobflow_get_nested (ed2f064b-d42c-458c-a790-dd184eded13b)
2025-11-27T13:11:33.653214Z [info     ] Starting job - jobflow_get_nested (ed2f064b-d42c-458c-a790-dd184eded13b) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:33,654 INFO Finished job - jobflow_get_nested (ed2f064b-d42c-458c-a790-dd184eded13b)
2025-11-27T13:11:33.655143Z [info     ] Finished job - jobflow_get_nested (ed2f064b-d42c-458c-a790-dd184eded13b) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:33,656 INFO Starting job - create_strained_structures (beaf0893-93ff-415c-b749-532f80cf7c2b)
2025-11-27T13:11:33.656910Z [info     ] Starting job - create_strained_structures (beaf0893-93ff-415c-b749-532f80cf7c2b) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:33,913 INFO Finished job - create_strained_structures (beaf0893-93ff-415c-b749-532f80cf7c2b)
2025-11-27T13:11:33.914399Z [info     ] Finished job - create_strained_structures (beaf0893-93ff-415c-b749-532f80cf7c2b) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:33,914 INFO Starting job - jobflow_get_nested (932b3a1d-1ea6-4a0a-aa17-bfc8b121cb5e)
2025-11-27T13:11:33.915197Z [info     ] Starting job - jobflow_get_nested (932b3a1d-1ea6-4a0a-aa17-bfc8b121cb5e) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:33,916 INFO Finished job - jobflow_get_nested (932b3a1d-1ea6-4a0a-aa17-bfc8b121cb5e)
2025-11-27T13:11:33.916607Z [info     ] Finished job - jobflow_get_nested (932b3a1d-1ea6-4a0a-aa17-bfc8b121cb5e) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:33,916 INFO Starting job - calc_all_structures (8630b8b8-79f3-41c9-8e29-766be65b5e97)
2025-11-27T13:11:33.917039Z [info     ] Starting job - calc_all_structures (8630b8b8-79f3-41c9-8e29-766be65b5e97) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:34,115 INFO Started executing jobs locally
2025-11-27T13:11:34.116664Z [info     ] Started executing jobs locally [jobflow.managers.local] loc=local.py:179
2025-11-27 14:11:34,119 INFO Starting job - calculate_energy_and_volume (3ed40a6a-7399-49ea-a2ff-853a122d478a)
2025-11-27T13:11:34.119427Z [info     ] Starting job - calculate_energy_and_volume (3ed40a6a-7399-49ea-a2ff-853a122d478a) [jobflow.core.job] loc=job.py:586
Calculating energy and volume...
2025-11-27 14:11:34,226 INFO Finished job - calculate_energy_and_volume (3ed40a6a-7399-49ea-a2ff-853a122d478a)
2025-11-27T13:11:34.227576Z [info     ] Finished job - calculate_energy_and_volume (3ed40a6a-7399-49ea-a2ff-853a122d478a) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:34,228 INFO Starting job - calculate_energy_and_volume1 (4d036a72-a392-48b2-af84-bd3906e6edcd)
2025-11-27T13:11:34.228519Z [info     ] Starting job - calculate_energy_and_volume1 (4d036a72-a392-48b2-af84-bd3906e6edcd) [jobflow.core.job] loc=job.py:586
Calculating energy and volume...
2025-11-27 14:11:34,367 INFO Finished job - calculate_energy_and_volume1 (4d036a72-a392-48b2-af84-bd3906e6edcd)
2025-11-27T13:11:34.367929Z [info     ] Finished job - calculate_energy_and_volume1 (4d036a72-a392-48b2-af84-bd3906e6edcd) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:34,368 INFO Starting job - calculate_energy_and_volume2 (3d1cb255-9dc4-401b-a7ad-3a569e05cab9)
2025-11-27T13:11:34.368716Z [info     ] Starting job - calculate_energy_and_volume2 (3d1cb255-9dc4-401b-a7ad-3a569e05cab9) [jobflow.core.job] loc=job.py:586
Calculating energy and volume...
2025-11-27 14:11:34,478 INFO Finished job - calculate_energy_and_volume2 (3d1cb255-9dc4-401b-a7ad-3a569e05cab9)
2025-11-27T13:11:34.478932Z [info     ] Finished job - calculate_energy_and_volume2 (3d1cb255-9dc4-401b-a7ad-3a569e05cab9) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:34,479 INFO Starting job - calculate_energy_and_volume3 (a6a02580-672a-40b3-a4cd-c72f0ccbf06a)
2025-11-27T13:11:34.479724Z [info     ] Starting job - calculate_energy_and_volume3 (a6a02580-672a-40b3-a4cd-c72f0ccbf06a) [jobflow.core.job] loc=job.py:586
Calculating energy and volume...
2025-11-27 14:11:34,587 INFO Finished job - calculate_energy_and_volume3 (a6a02580-672a-40b3-a4cd-c72f0ccbf06a)
2025-11-27T13:11:34.588144Z [info     ] Finished job - calculate_energy_and_volume3 (a6a02580-672a-40b3-a4cd-c72f0ccbf06a) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:34,588 INFO Starting job - calculate_energy_and_volume4 (48fb2bdc-f258-46fe-a646-ed848d46c99e)
2025-11-27T13:11:34.588970Z [info     ] Starting job - calculate_energy_and_volume4 (48fb2bdc-f258-46fe-a646-ed848d46c99e) [jobflow.core.job] loc=job.py:586
Calculating energy and volume...
2025-11-27 14:11:34,700 INFO Finished job - calculate_energy_and_volume4 (48fb2bdc-f258-46fe-a646-ed848d46c99e)
2025-11-27T13:11:34.701076Z [info     ] Finished job - calculate_energy_and_volume4 (48fb2bdc-f258-46fe-a646-ed848d46c99e) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:34,701 INFO Finished executing jobs locally
2025-11-27T13:11:34.701631Z [info     ] Finished executing jobs locally [jobflow.managers.local] loc=local.py:181
2025-11-27 14:11:35,024 INFO Finished job - calc_all_structures (8630b8b8-79f3-41c9-8e29-766be65b5e97)
2025-11-27T13:11:35.024737Z [info     ] Finished job - calc_all_structures (8630b8b8-79f3-41c9-8e29-766be65b5e97) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:35,025 INFO Starting job - jobflow_get_nested (6ee443b6-88d8-457d-a1b6-d2f7f3b4666a)
2025-11-27T13:11:35.025642Z [info     ] Starting job - jobflow_get_nested (6ee443b6-88d8-457d-a1b6-d2f7f3b4666a) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:35,027 INFO Finished job - jobflow_get_nested (6ee443b6-88d8-457d-a1b6-d2f7f3b4666a)
2025-11-27T13:11:35.028106Z [info     ] Finished job - jobflow_get_nested (6ee443b6-88d8-457d-a1b6-d2f7f3b4666a) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:35,028 INFO Starting job - fit_eos_model (7746440f-c13d-4fd6-8ccf-39ffe0f46da9)
2025-11-27T13:11:35.029201Z [info     ] Starting job - fit_eos_model (7746440f-c13d-4fd6-8ccf-39ffe0f46da9) [jobflow.core.job] loc=job.py:586
2025-11-27 14:11:35,296 INFO Finished job - fit_eos_model (7746440f-c13d-4fd6-8ccf-39ffe0f46da9)
2025-11-27T13:11:35.297055Z [info     ] Finished job - fit_eos_model (7746440f-c13d-4fd6-8ccf-39ffe0f46da9) [jobflow.core.job] loc=job.py:673
2025-11-27 14:11:35,297 INFO Finished executing jobs locally
2025-11-27T13:11:35.297954Z [info     ] Finished executing jobs locally [jobflow.managers.local] loc=local.py:181
Fitted EOS parameters: {'result': <Dict: uuid: e197083f-a464-48ce-8645-32de535d4aad (pk: 220389)>}
[9]:
100%
N220368 Graph<eos_workflow> (309c3a64) State: finished Exit Code: 0 N220369 relax_structure (0700f824) State: finished Exit Code: 0 N220368->N220369 CALL_CALC relax_structure N220371 create_strained_structures (8dd0d90e) State: finished Exit Code: 0 N220368->N220371 CALL_CALC create_strained_structures N220377 Graph<calc_all_structures> (267b094a) State: finished Exit Code: 0 N220368->N220377 CALL_WORK calc_all_structures N220388 fit_eos_model (f07070e0) State: finished Exit Code: 0 N220368->N220388 CALL_CALC fit_eos_model N220389 Dict (e197083f) N220368->N220389 RETURN result N220365 Dict (ece365e9) N220365->N220368 INPUT_WORK atoms N220366 List (9139e9b9) N220366->N220368 INPUT_WORK scales N220367 Bool (de545ac0) True N220367->N220368 INPUT_WORK run_relax N220370 Dict (beb549f5) N220369->N220370 CREATE result N220370->N220371 INPUT_CALC atoms N220372 Dict (36fd7d05) N220371->N220372 CREATE scaled_structures__strain_0 N220373 Dict (4ac1446f) N220371->N220373 CREATE scaled_structures__strain_1 N220374 Dict (6b4dc797) N220371->N220374 CREATE scaled_structures__strain_2 N220375 Dict (436cf899) N220371->N220375 CREATE scaled_structures__strain_3 N220376 Dict (ae4df6b3) N220371->N220376 CREATE scaled_structures__strain_4 N220372->N220377 INPUT_WORK scaled_structures__strain_0 N220378 calculate_energy_and_volume (9f6e92af) State: finished Exit Code: 0 N220372->N220378 INPUT_CALC atoms N220373->N220377 INPUT_WORK scaled_structures__strain_1 N220380 calculate_energy_and_volume1 (c7c6e6b7) State: finished Exit Code: 0 N220373->N220380 INPUT_CALC atoms N220374->N220377 INPUT_WORK scaled_structures__strain_2 N220382 calculate_energy_and_volume2 (32cbc17e) State: finished Exit Code: 0 N220374->N220382 INPUT_CALC atoms N220375->N220377 INPUT_WORK scaled_structures__strain_3 N220384 calculate_energy_and_volume3 (834adad5) State: finished Exit Code: 0 N220375->N220384 INPUT_CALC atoms N220376->N220377 INPUT_WORK scaled_structures__strain_4 N220386 calculate_energy_and_volume4 (f1f7e80a) State: finished Exit Code: 0 N220376->N220386 INPUT_CALC atoms N220377->N220378 CALL_CALC calculate_energy_and_volume N220379 Dict (cbd180c5) N220377->N220379 RETURN results__strain_0 N220377->N220380 CALL_CALC calculate_energy_and_volume1 N220381 Dict (b644b2a0) N220377->N220381 RETURN results__strain_1 N220377->N220382 CALL_CALC calculate_energy_and_volume2 N220383 Dict (28da7312) N220377->N220383 RETURN results__strain_2 N220377->N220384 CALL_CALC calculate_energy_and_volume3 N220385 Dict (043fa31f) N220377->N220385 RETURN results__strain_3 N220377->N220386 CALL_CALC calculate_energy_and_volume4 N220387 Dict (b48adb6f) N220377->N220387 RETURN results__strain_4 N220378->N220379 CREATE result N220379->N220388 INPUT_CALC data__strain_0 N220380->N220381 CREATE result N220381->N220388 INPUT_CALC data__strain_1 N220382->N220383 CREATE result N220383->N220388 INPUT_CALC data__strain_2 N220384->N220385 CREATE result N220385->N220388 INPUT_CALC data__strain_3 N220386->N220387 CREATE result N220387->N220388 INPUT_CALC data__strain_4 N220388->N220389 CREATE result

Executorlib (pyiron) engine

[10]:
from node_graph_engine.engines.executorlib import ExecutorlibEngine

engine = ExecutorlibEngine("eos_workflow_executorlib")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
      Step     Time          Energy          fmax
BFGS:    0 14:11:43       -0.006689        0.000000
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Fitted EOS parameters: {'result': <Dict: uuid: 484c7376-5ab7-4394-9205-ab60e40b7f1c (pk: 220414)>}
[10]:
100%
N220393 Graph<eos_workflow> (c4ba6301) State: finished Exit Code: 0 N220394 relax_structure (20111195) State: finished Exit Code: 0 N220393->N220394 CALL_CALC relax_structure N220396 create_strained_structures (61cac323) State: finished Exit Code: 0 N220393->N220396 CALL_CALC create_strained_structures N220402 Graph<calc_all_structures> (94e62083) State: finished Exit Code: 0 N220393->N220402 CALL_WORK calc_all_structures N220413 fit_eos_model (3b1d3116) State: finished Exit Code: 0 N220393->N220413 CALL_CALC fit_eos_model N220414 Dict (484c7376) N220393->N220414 RETURN result N220390 Dict (104f4041) N220390->N220393 INPUT_WORK atoms N220391 List (a6a5437d) N220391->N220393 INPUT_WORK scales N220392 Bool (904e87ef) True N220392->N220393 INPUT_WORK run_relax N220395 Dict (52922241) N220394->N220395 CREATE result N220395->N220396 INPUT_CALC atoms N220397 Dict (b18c1164) N220396->N220397 CREATE scaled_structures__strain_0 N220398 Dict (483144c4) N220396->N220398 CREATE scaled_structures__strain_1 N220399 Dict (8b606d76) N220396->N220399 CREATE scaled_structures__strain_2 N220400 Dict (70550ca8) N220396->N220400 CREATE scaled_structures__strain_3 N220401 Dict (b487a5bd) N220396->N220401 CREATE scaled_structures__strain_4 N220397->N220402 INPUT_WORK scaled_structures__strain_0 N220406 calculate_energy_and_volume (b6861121) State: finished Exit Code: 0 N220397->N220406 INPUT_CALC atoms N220398->N220402 INPUT_WORK scaled_structures__strain_1 N220404 calculate_energy_and_volume1 (c1f5beb8) State: finished Exit Code: 0 N220398->N220404 INPUT_CALC atoms N220399->N220402 INPUT_WORK scaled_structures__strain_2 N220403 calculate_energy_and_volume2 (b271dbc8) State: finished Exit Code: 0 N220399->N220403 INPUT_CALC atoms N220400->N220402 INPUT_WORK scaled_structures__strain_3 N220408 calculate_energy_and_volume3 (90d539de) State: finished Exit Code: 0 N220400->N220408 INPUT_CALC atoms N220401->N220402 INPUT_WORK scaled_structures__strain_4 N220405 calculate_energy_and_volume4 (29a862db) State: finished Exit Code: 0 N220401->N220405 INPUT_CALC atoms N220402->N220403 CALL_CALC calculate_energy_and_volume2 N220402->N220404 CALL_CALC calculate_energy_and_volume1 N220402->N220405 CALL_CALC calculate_energy_and_volume4 N220402->N220406 CALL_CALC calculate_energy_and_volume N220407 Dict (fb8784fd) N220402->N220407 RETURN results__strain_2 N220402->N220408 CALL_CALC calculate_energy_and_volume3 N220409 Dict (f9e8a8bc) N220402->N220409 RETURN results__strain_1 N220410 Dict (6ec70f3a) N220402->N220410 RETURN results__strain_0 N220411 Dict (7010073b) N220402->N220411 RETURN results__strain_4 N220412 Dict (3da7d5c7) N220402->N220412 RETURN results__strain_3 N220403->N220407 CREATE result N220404->N220409 CREATE result N220405->N220411 CREATE result N220406->N220410 CREATE result N220407->N220413 INPUT_CALC data__strain_2 N220408->N220412 CREATE result N220409->N220413 INPUT_CALC data__strain_1 N220410->N220413 INPUT_CALC data__strain_0 N220411->N220413 INPUT_CALC data__strain_4 N220412->N220413 INPUT_CALC data__strain_3 N220413->N220414 CREATE result

Dagster engine

[5]:
from node_graph_engine.engines.dagster import DagsterEngine

engine = DagsterEngine("eos_workflow_dagster")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
No dagster instance configuration file (dagster.yaml) found at /tmp/tmp2gc70l5o. Defaulting to loading and storing all metadata with /tmp/tmp2gc70l5o. If this is the desired behavior, create an empty dagster.yaml file in /tmp/tmp2gc70l5o.
No dagster instance configuration file (dagster.yaml) found at /tmp/tmp2gc70l5o. Defaulting to loading and storing all metadata with /tmp/tmp2gc70l5o. If this is the desired behavior, create an empty dagster.yaml file in /tmp/tmp2gc70l5o.
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - RUN_START - Started execution of run for "eos_workflow_dagster".
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - ENGINE_EVENT - Executing steps in process (pid: 1072455)
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - RESOURCE_INIT_STARTED - Starting initialization of resources [io_manager].
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - RESOURCE_INIT_SUCCESS - Finished initialization of resources [io_manager].
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - LOGS_CAPTURED - Started capturing logs in process (pid: 1072455).
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__init - STEP_START - Started execution of step "engine__init".

  Telemetry:

  As an open-source project, we collect usage statistics to inform development priorities. For more
  information, read https://docs.dagster.io/about/telemetry.

  We will not see or store any data that is processed by your code.

  To opt-out, add the following to $DAGSTER_HOME/dagster.yaml, creating that file if necessary:

    telemetry:
      enabled: false


  Welcome to Dagster!

  If you have any questions or would like to engage with the Dagster team, please join us on Slack
  (https://bit.ly/39dvSsF).

2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__init - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__init - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__init - STEP_SUCCESS - Finished execution of step "engine__init" in 193ms.
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - STEP_START - Started execution of step "relax_structure".
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:00 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
      Step     Time          Energy          fmax
BFGS:    0 14:14:00       -0.006689        0.000000
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - relax_structure - STEP_SUCCESS - Finished execution of step "relax_structure" in 137ms.
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - STEP_START - Started execution of step "create_strained_structures".
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - LOADED_INPUT - Loaded input "dep_0" using input manager "io_manager", from output "result" of step "relax_structure"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - STEP_INPUT - Got input "dep_0" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - create_strained_structures - STEP_SUCCESS - Finished execution of step "create_strained_structures" in 288ms.
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - STEP_START - Started execution of step "calc_all_structures".
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - LOADED_INPUT - Loaded input "dep_0" using input manager "io_manager", from output "result" of step "create_strained_structures"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - STEP_INPUT - Got input "dep_0" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
No dagster instance configuration file (dagster.yaml) found at /tmp/tmp2gc70l5o. Defaulting to loading and storing all metadata with /tmp/tmp2gc70l5o. If this is the desired behavior, create an empty dagster.yaml file in /tmp/tmp2gc70l5o.
No dagster instance configuration file (dagster.yaml) found at /tmp/tmp2gc70l5o. Defaulting to loading and storing all metadata with /tmp/tmp2gc70l5o. If this is the desired behavior, create an empty dagster.yaml file in /tmp/tmp2gc70l5o.
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - RUN_START - Started execution of run for "calc_all_structures".
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - ENGINE_EVENT - Executing steps in process (pid: 1072455)
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - RESOURCE_INIT_STARTED - Starting initialization of resources [io_manager].
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - RESOURCE_INIT_SUCCESS - Finished initialization of resources [io_manager].
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - LOGS_CAPTURED - Started capturing logs in process (pid: 1072455).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__init - STEP_START - Started execution of step "engine__init".
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__init - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__init - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__init - STEP_SUCCESS - Finished execution of step "engine__init" in 174ms.
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - STEP_START - Started execution of step "calculate_energy_and_volume".
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:01 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume - STEP_SUCCESS - Finished execution of step "calculate_energy_and_volume" in 143ms.
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - STEP_START - Started execution of step "calculate_energy_and_volume1".
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
Calculating energy and volume...
Calculating energy and volume...
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume1 - STEP_SUCCESS - Finished execution of step "calculate_energy_and_volume1" in 166ms.
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - STEP_START - Started execution of step "calculate_energy_and_volume2".
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume2 - STEP_SUCCESS - Finished execution of step "calculate_energy_and_volume2" in 157ms.
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - STEP_START - Started execution of step "calculate_energy_and_volume3".
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
Calculating energy and volume...
Calculating energy and volume...
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume3 - STEP_SUCCESS - Finished execution of step "calculate_energy_and_volume3" in 182ms.
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - STEP_START - Started execution of step "calculate_energy_and_volume4".
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - calculate_energy_and_volume4 - STEP_SUCCESS - Finished execution of step "calculate_energy_and_volume4" in 231ms.
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_START - Started execution of step "engine__finalize".
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_0" using input manager "io_manager", from output "result" of step "calculate_energy_and_volume"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_1" using input manager "io_manager", from output "result" of step "calculate_energy_and_volume1"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_2" using input manager "io_manager", from output "result" of step "calculate_energy_and_volume2"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_3" using input manager "io_manager", from output "result" of step "calculate_energy_and_volume3"
Calculating energy and volume...
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_4" using input manager "io_manager", from output "result" of step "calculate_energy_and_volume4"
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:02 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "node_0" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "node_1" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "node_2" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "node_3" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_INPUT - Got input "node_4" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - engine__finalize - STEP_SUCCESS - Finished execution of step "engine__finalize" in 611ms.
/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/dagster/_core/execution/context_creation_job.py:276: RuntimeWarning: coroutine 'BaseEventLoop.shutdown_asyncgens' was never awaited
  pass
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - ENGINE_EVENT - Finished steps in process (pid: 1072455) in 1.86s
2025-11-27 14:14:03 +0100 - dagster - DEBUG - calc_all_structures - 38664681-c56a-4982-b953-f182cc9177fc - 1072455 - RUN_SUCCESS - Finished execution of run for "calc_all_structures".
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - calc_all_structures - STEP_SUCCESS - Finished execution of step "calc_all_structures" in 2.22s.
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - STEP_START - Started execution of step "fit_eos_model".
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - LOADED_INPUT - Loaded input "dep_0" using input manager "io_manager", from output "result" of step "calc_all_structures"
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - STEP_INPUT - Got input "dep_0" of type "Any". (Type check passed).
2025-11-27 14:14:03 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - fit_eos_model - STEP_SUCCESS - Finished execution of step "fit_eos_model" in 412ms.
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_START - Started execution of step "engine__finalize".
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "engine_context" using input manager "io_manager", from output "result" of step "engine__init"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_0" using input manager "io_manager", from output "result" of step "relax_structure"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_1" using input manager "io_manager", from output "result" of step "create_strained_structures"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_2" using input manager "io_manager", from output "result" of step "calc_all_structures"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - LOADED_INPUT - Loaded input "node_3" using input manager "io_manager", from output "result" of step "fit_eos_model"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_INPUT - Got input "engine_context" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_INPUT - Got input "node_0" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_INPUT - Got input "node_1" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_INPUT - Got input "node_2" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_INPUT - Got input "node_3" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - engine__finalize - STEP_SUCCESS - Finished execution of step "engine__finalize" in 445ms.
/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/dagster/_core/execution/context_creation_job.py:276: RuntimeWarning: coroutine 'BaseEventLoop.shutdown_asyncgens' was never awaited
  pass
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - ENGINE_EVENT - Finished steps in process (pid: 1072455) in 3.91s
2025-11-27 14:14:04 +0100 - dagster - DEBUG - eos_workflow_dagster - 5198a545-bb84-4449-a1b5-c2f8ace657c2 - 1072455 - RUN_SUCCESS - Finished execution of run for "eos_workflow_dagster".
Fitted EOS parameters: {'result': <Dict: uuid: 96792910-5dd6-4521-bf3e-0897f3ca2416 (pk: 220512)>}
[5]:
100%
N220491 Graph<eos_workflow> (bae1030c) State: finished Exit Code: 0 N220492 relax_structure (125a0594) State: finished Exit Code: 0 N220491->N220492 CALL_CALC relax_structure N220494 create_strained_structures (4be5e346) State: finished Exit Code: 0 N220491->N220494 CALL_CALC create_strained_structures N220500 Graph<calc_all_structures> (6d81b3a6) State: finished Exit Code: 0 N220491->N220500 CALL_WORK calc_all_structures N220511 fit_eos_model (150667be) State: finished Exit Code: 0 N220491->N220511 CALL_CALC fit_eos_model N220512 Dict (96792910) N220491->N220512 RETURN result N220488 Dict (f2e6fe74) N220488->N220491 INPUT_WORK atoms N220489 List (6e69df37) N220489->N220491 INPUT_WORK scales N220490 Bool (fcebce32) True N220490->N220491 INPUT_WORK run_relax N220493 Dict (25681c14) N220492->N220493 CREATE result N220493->N220494 INPUT_CALC atoms N220495 Dict (bdbb3a16) N220494->N220495 CREATE scaled_structures__strain_0 N220496 Dict (9c87d8ee) N220494->N220496 CREATE scaled_structures__strain_1 N220497 Dict (46a0e8fe) N220494->N220497 CREATE scaled_structures__strain_2 N220498 Dict (361d3c1d) N220494->N220498 CREATE scaled_structures__strain_3 N220499 Dict (93492edf) N220494->N220499 CREATE scaled_structures__strain_4 N220495->N220500 INPUT_WORK scaled_structures__strain_0 N220501 calculate_energy_and_volume (d73147d6) State: finished Exit Code: 0 N220495->N220501 INPUT_CALC atoms N220496->N220500 INPUT_WORK scaled_structures__strain_1 N220503 calculate_energy_and_volume1 (af54147a) State: finished Exit Code: 0 N220496->N220503 INPUT_CALC atoms N220497->N220500 INPUT_WORK scaled_structures__strain_2 N220505 calculate_energy_and_volume2 (5405abc3) State: finished Exit Code: 0 N220497->N220505 INPUT_CALC atoms N220498->N220500 INPUT_WORK scaled_structures__strain_3 N220507 calculate_energy_and_volume3 (97d5b6ae) State: finished Exit Code: 0 N220498->N220507 INPUT_CALC atoms N220499->N220500 INPUT_WORK scaled_structures__strain_4 N220509 calculate_energy_and_volume4 (4de4e280) State: finished Exit Code: 0 N220499->N220509 INPUT_CALC atoms N220500->N220501 CALL_CALC calculate_energy_and_volume N220502 Dict (05c31e91) N220500->N220502 RETURN results__strain_0 N220500->N220503 CALL_CALC calculate_energy_and_volume1 N220504 Dict (4bc8ad8b) N220500->N220504 RETURN results__strain_1 N220500->N220505 CALL_CALC calculate_energy_and_volume2 N220506 Dict (13b65b0b) N220500->N220506 RETURN results__strain_2 N220500->N220507 CALL_CALC calculate_energy_and_volume3 N220508 Dict (56039763) N220500->N220508 RETURN results__strain_3 N220500->N220509 CALL_CALC calculate_energy_and_volume4 N220510 Dict (0ac6ff35) N220500->N220510 RETURN results__strain_4 N220501->N220502 CREATE result N220502->N220511 INPUT_CALC data__strain_0 N220503->N220504 CREATE result N220504->N220511 INPUT_CALC data__strain_1 N220505->N220506 CREATE result N220506->N220511 INPUT_CALC data__strain_2 N220507->N220508 CREATE result N220508->N220511 INPUT_CALC data__strain_3 N220509->N220510 CREATE result N220510->N220511 INPUT_CALC data__strain_4 N220511->N220512 CREATE result

Redun engine

[12]:
from node_graph_engine.engines.redun import RedunEngine

engine = RedunEngine("eos_workflow_redun")
results = engine.run(ng)
print("Fitted EOS parameters:", results)
engine.provenance_graph
[redun] Upgrading db from version -1.0 to 3.5...
2025-11-27T13:12:18.435077Z [info     ] Upgrading db from version -1.0 to 3.5... [redun] loc=__init__.py:1663
[redun] Start Execution 4e88eb48-1f64-44a8-a741-a97c7435a215:  redun 'redun.root_task(QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'"'"'mode'"'"': '"'"'pickled_callable'"'"', '"'"'module_path'"'"': None, '"'"'callable_name'"'"': '"'"'calc_all_...'
2025-11-27T13:12:18.682346Z [info     ] Start Execution 4e88eb48-1f64-44a8-a741-a97c7435a215:  redun 'redun.root_task(QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'"'"'mode'"'"': '"'"'pickled_callable'"'"', '"'"'module_path'"'"': None, '"'"'callable_name'"'"': '"'"'calc_all_...' [redun] loc=scheduler.py:1028
[redun] Tasks will require namespace soon. Either set namespace in the `@task` decorator or with the module-level variable `redun_namespace`.
tasks needing namespace: redun.py:_redun_get_nested, redun.py:_redun_bundle, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job
2025-11-27T13:12:18.683246Z [warning  ] Tasks will require namespace soon. Either set namespace in the `@task` decorator or with the module-level variable `redun_namespace`.
tasks needing namespace: redun.py:_redun_get_nested, redun.py:_redun_bundle, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job [redun] loc=scheduler.py:1042
[redun] Run    Job 76049a94:  redun.root_task(expr=QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'ca...) on default
2025-11-27T13:12:18.689524Z [info     ] Run    Job 76049a94:  redun.root_task(expr=QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'ca...) on default [redun] loc=scheduler.py:1028
[redun] Run    Job a97ed9d7:  task_eos_workflow_redun_relax_structure(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'require..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2x..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:18.695686Z [info     ] Run    Job a97ed9d7:  task_eos_workflow_redun_relax_structure(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'require..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2x..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
self.instance: QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), create_strained_structures=task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), fit_eos_model=task_eos_workflow_redun_fit_eos_model(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, data=ng_get_nested(task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), 'results', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), graph_outputs=ng_bundle(result=ng_get_nested(task_eos_workflow_redun_fit_eos_model(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, data=ng_get_nested(task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), 'results', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None)), relax_structure=task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360')))
self.instance: QuotedExpression(ng_bundle(calc_all_structures=task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), create_strained_structures=task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), fit_eos_model=task_eos_workflow_redun_fit_eos_model(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, data=ng_get_nested(task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), 'results', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), graph_outputs=ng_bundle(result=ng_get_nested(task_eos_workflow_redun_fit_eos_model(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, data=ng_get_nested(task_eos_workflow_redun_calc_all_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scaled_structures=ng_get_nested(task_eos_workflow_redun_create_strained_structures(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms=ng_get_nested(task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', scales={'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}), 'scaled_structures', default=None)), 'results', default=None), parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360'), 'result', default=None)), relax_structure=task_eos_workflow_redun_relax_structure(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='eos_workflow_redun', _ng_meta=TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}, parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360')))
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: result
self.instance: None
self.instance: {'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: scaled_structures
self.instance: None
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: results
self.instance: None
self.instance: result
self.instance: None
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='relax_structure', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'relax_structure', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVfwQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwJLBEsDQ/6XAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BQAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwMAAAAAAAAAAHQJAAAAAAAAAAAAAHwApgEAAKsBAAAAAAAAAAB9AXwBoAUAAAAAAAAAAAAAAAAAAAAAAAAAAGQBrAKmAQAAqwEAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAABTAJSMSVJlbGF4IHRoZSBhdG9taWMgc3RydWN0dXJlIHRvIGl0cyBtaW5pbXVtIGVuZXJneSBjb25maWd1cmF0aW9uIHVzaW5nIEFTRS6URz+EeuFHrhR7jARmbWF4lIWUh5QojAVBdG9tc5SMCGZyb21kaWN0lIwDRU1UlIwEY2FsY5SMBEJGR1OUjANydW6UjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lIwFYXRvbXOUjAlvcHRpbWl6ZXKUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwPcmVsYXhfc3RydWN0dXJllIwPcmVsYXhfc3RydWN0dXJllEsRQ1uAAPUGAA0Sj06KTpg10Qwh1AwhgEXdERSRFZQVgEWESt0QFJBVkQuUC4BJ2AQNh02CTZB0gE3RBBzUBBzQBBzdCxfXCybSCyagdad8onyhfqR+0Qs21As20AQ2lEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoJn2UfZQoaCOMD3JlbGF4X3N0cnVjdHVyZZSMDF9fcXVhbG5hbWVfX5SMD3JlbGF4X3N0cnVjdHVyZZSMD19fYW5ub3RhdGlvbnNfX5R9lChoF4wJYXNlLmF0b21zlGgNk5SMBnJldHVybpRoMXWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgkjAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZQoaA1oMWgPjBNhc2UuY2FsY3VsYXRvcnMuZW10lGgPk5RoEYwRYXNlLm9wdGltaXplLmJmZ3OUaBGTlGgTjCJhaWlkYV9weXRob25qb2IuZGF0YS5qc29uYWJsZV9kYXRhlGgTk5R1dYaUhlIwLg==', 'source_code': '@task()\ndef relax_structure(atoms: Atoms) -> Atoms:\n    """Relax the atomic structure to its minimum energy configuration using ASE."""\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    optimizer = BFGS(atoms)\n    optimizer.run(fmax=0.01)\n    return JsonableData._make_jsonable(atoms.todict())\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '8a3599dc-8b61-440f-b38d-9d7d4da944a8'}
      Step     Time          Energy          fmax
BFGS:    0 14:12:18       -0.006689        0.000000
[redun] Run    Job 43e3d290:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '456ddfdb-1061-46e2-9d6e-84e69330be41'}}, dotted='result', default=None) on default
2025-11-27T13:12:18.810246Z [info     ] Run    Job 43e3d290:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '456ddfdb-1061-46e2-9d6e-84e69330be41'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job bc93f60c:  task_eos_workflow_redun_create_strained_structures(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynami..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNs..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': ..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:18.818373Z [info     ] Run    Job bc93f60c:  task_eos_workflow_redun_create_strained_structures(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynami..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNs..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': ..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '456ddfdb-1061-46e2-9d6e-84e69330be41'}}
self.instance: result
self.instance: None
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='create_strained_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'create_strained_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVvQcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwJLAEsASwZLBUsDQlABAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQBpAH0CdAUAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAEQAXXdcAgAAfQN9BHwAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQV8BaAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKAFAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwEegUAAGQBrAKmAgAAqwIAAAAAAAAAAAEAdAwAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHwFoAgAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB8AmQDfAObAJ0CPAAAAIx4ZAR8AmkBUwCUKIxIR2VuZXJhdGUgYSBzZXJpZXMgb2Ygc3RyYWluZWQgc3RydWN0dXJlcyBmcm9tIGEgbGlzdCBvZiBzY2FsaW5nIGZhY3RvcnMulIiMC3NjYWxlX2F0b21zlIWUjAdzdHJhaW5flIwRc2NhbGVkX3N0cnVjdHVyZXOUdJQojAVBdG9tc5SMCGZyb21kaWN0lIwJZW51bWVyYXRllIwEY29weZSMCHNldF9jZWxslIwIZ2V0X2NlbGyUjAxKc29uYWJsZURhdGGUjA5fbWFrZV9qc29uYWJsZZSMBnRvZGljdJR0lCiMBWF0b21zlIwGc2NhbGVzlGgNjAFplIwFc2NhbGWUjA5zdHJhaW5lZF9hdG9tc5R0lIwjL3RtcC9pcHlrZXJuZWxfMTA2NjI0Ny81ODUwODEwNjYucHmUjBpjcmVhdGVfc3RyYWluZWRfc3RydWN0dXJlc5SMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlEsbQ6yAAPUKAA0Sj06KTpg10Qwh1AwhgEXYGBrQBBXdFB2YZtEUJdQUJfAABgUK8AAGBQqJCIgBiDXYGR6fGpoamRycHIgO2AgW1wgf0ggfoAWnDqIO0SAw1CAwsDXRIDjAZNAIH9EIS9QIS9AIS+UrN9crRtIrRtgMGtcMIdIMIdEMI9QMI/EDAiwK9AACLArQCBmYLaBBmC2YLdEIKNAIKPAGAA0g0CEy0Asz0AQzlEMAlCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoK32UfZQoaCiMGmNyZWF0ZV9zdHJhaW5lZF9zdHJ1Y3R1cmVzlIwMX19xdWFsbmFtZV9flIwaY3JlYXRlX3N0cmFpbmVkX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBmMCWFzZS5hdG9tc5RoD5OUaBqMCGJ1aWx0aW5zlIwEbGlzdJSTlIwGcmV0dXJulIwJX29wZXJhdG9ylIwHZ2V0aXRlbZSTlIwGdHlwaW5nlIwJQW5ub3RhdGVklJOUaDeMBGRpY3SUk5SMFm5vZGVfZ3JhcGguc29ja2V0X3NwZWOUjApTb2NrZXRTcGVjlJOUKYGUfZQojAppZGVudGlmaWVylIwUbm9kZV9ncmFwaC5uYW1lc3BhY2WUjARpdGVtlE6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UaA1oRSmBlH2UKGhIaEloSmhFKYGUfZQoaEiMDm5vZGVfZ3JhcGguYW55lGhKTmhLaE9oUE5oUX2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1YmhLaE9oUE5oUX2UaFloXCmBlH2UKGhfTmhgiGhhTmhiiWhjiGhkSwFoZU5oZk5oZ32UaGlOdWJ1YnNoWWhcKYGUfZQoaF9OaGCIaGFOaGKJaGOJaGRLAWhlTmhmTmhnfZRoaU51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCmMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoD2g2aBWMImFpaWRhX3B5dGhvbmpvYi5kYXRhLmpzb25hYmxlX2RhdGGUaBWTlHV1hpSGUjAu', 'source_code': '@task()\ndef create_strained_structures(\n    atoms: Atoms, scales: list\n) -> Annotated[dict, namespace(scaled_structures=dynamic(Atoms))]:\n    """Generate a series of strained structures from a list of scaling factors."""\n    atoms = Atoms.fromdict(atoms)\n    scaled_structures = {}\n    for i, scale in enumerate(scales):\n        strained_atoms = atoms.copy()\n        strained_atoms.set_cell(atoms.get_cell() * scale, scale_atoms=True)\n        # Each structure gets a unique key, like "strain_0", "strain_1", etc.\n        scaled_structures[f"strain_{i}"] = JsonableData._make_jsonable(\n            strained_atoms.todict()\n        )\n    return {"scaled_structures": scaled_structures}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, 'scales': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '456ddfdb-1061-46e2-9d6e-84e69330be41'}
self.instance: {'__ng_tagged__': True, 'uuid': 'b39e3819-ecaa-48a2-99d2-5f2df5533178'}
[redun] Run    Job f365a719:  ng_get_nested(d={'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, 'str..., dotted='scaled_structures', default=None) on default
2025-11-27T13:12:19.059497Z [info     ] Run    Job f365a719:  ng_get_nested(d={'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, 'str..., dotted='scaled_structures', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 04b0b5c9:  task_eos_workflow_redun_calc_all_structures(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item':..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGl..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'me..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:19.064404Z [info     ] Run    Job 04b0b5c9:  task_eos_workflow_redun_calc_all_structures(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item':..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGl..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'me..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Upgrading db from version -1.0 to 3.5...
2025-11-27T13:12:19.119026Z [info     ] Upgrading db from version -1.0 to 3.5... [redun] loc=__init__.py:1663
self.instance: {'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, 'strain_3': {'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, 'strain_4': {'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}}}
self.instance: scaled_structures
self.instance: None
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='calc_all_structures', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='return', is_graph=True, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calc_all_structures', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVMhUAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwRLBEsDQ3CXAGkAfQF8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQAXRxcAgAAfQJ9A3QDAAAAAAAAAAAAAHwDpgEAAKsBAAAAAAAAAABqAgAAAAAAAAAAfAF8AjwAAACMHWQBfAFpAVMAlIxUU3ViLXdvcmtmbG93IHRvIGNhbGN1bGF0ZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYWxsIHN0cmFpbmVkIHN0cnVjdHVyZXMgaW4gcGFyYWxsZWwulIwHcmVzdWx0c5SGlIwFaXRlbXOUjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUjAZyZXN1bHSUh5QojBFzY2FsZWRfc3RydWN0dXJlc5RoCowDa2V5lIwFYXRvbXOUdJSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwTY2FsY19hbGxfc3RydWN0dXJlc5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUSzpDT4AA8AoADxGAR9gWJ9cWLdIWLdEWL9QWL/AAAwVBAfAAAwVBAYkKiAOIVfUGABgzsDXRFznUFznUF0CIB5ADiQyIDPAGAA0WkHfQCx/QBB+UQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGggfZR9lChoHYwTY2FsY19hbGxfc3RydWN0dXJlc5SMDF9fcXVhbG5hbWVfX5SME2NhbGNfYWxsX3N0cnVjdHVyZXOUjA9fX2Fubm90YXRpb25zX1+UfZQoaBCMCV9vcGVyYXRvcpSMB2dldGl0ZW2Uk5SMBnR5cGluZ5SMCUFubm90YXRlZJSTlIwIYnVpbHRpbnOUjARkaWN0lJOUjBZub2RlX2dyYXBoLnNvY2tldF9zcGVjlIwKU29ja2V0U3BlY5STlCmBlH2UKIwKaWRlbnRpZmllcpSMFG5vZGVfZ3JhcGgubmFtZXNwYWNllIwEaXRlbZRoNSmBlH2UKGg4jA5ub2RlX2dyYXBoLmFueZRoOk6MB2RlZmF1bHSUjAtkYXRhY2xhc3Nlc5SMDV9NSVNTSU5HX1RZUEWUk5QpgZSMCmxpbmtfbGltaXSUTowGZmllbGRzlH2UjARtZXRhlIwWbm9kZV9ncmFwaC5zb2NrZXRfbWV0YZSMClNvY2tldE1ldGGUk5QpgZR9lCiMBGhlbHCUTowIcmVxdWlyZWSUiIwJY2FsbF9yb2xllE6MC2lzX21ldGFkYXRhlImMB2R5bmFtaWOUiYwYY2hpbGRfZGVmYXVsdF9saW5rX2xpbWl0lEsBjAtzb2NrZXRfdHlwZZROjAhhcmdfdHlwZZROjAZleHRyYXOUfZSMCXNlbWFudGljc5ROdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YoaUhpRSlIwGcmV0dXJulGgsaC9oMmg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaApoNSmBlH2UKGg4aDloOmg1KYGUfZQoaDhoPWg6Tmg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiWhRSwFoUk5oU05oVH2UaFZOdWJ1Ymg+aEJoQ05oRH2UaEZoSSmBlH2UKGhMTmhNiGhOTmhPiWhQiGhRSwFoUk5oU05oVH2UaFZOdWJ1YnNoRmhJKYGUfZQoaExOaE2IaE5OaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVihpSGlFKUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaB6MB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lGgNjBRub2RlX2dyYXBoLnRhc2tfc3BlY5SMClRhc2tIYW5kbGWUk5QpgZR9lChoOGgNjAVfc3BlY5RofYwIVGFza1NwZWOUk5QpgZR9lChoOGgNjA1zY2hlbWFfc291cmNllGh9jAxTY2hlbWFTb3VyY2WUk5SMCGVtYmVkZGVklIWUUpSMCXRhc2tfdHlwZZSMCEZ1bmN0aW9ulIwHY2F0YWxvZ5SMBk90aGVyc5SMBmlucHV0c5RoNSmBlH2UKGg4aDloOk5oPmhCaENOaER9lGgSaDUpgZR9lChoOGg9aDpOaD5oQmhDTmhEfZRoRmhJKYGUfZQoaExOaE2IaE5oR4wIQ2FsbFJvbGWUk5SMBmt3YXJnc5SFlFKUaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVic2hGaEkpgZR9lChoTE5oTYhoTmieaE+JaFCJaFFLAWhSTmhTTmhUfZRoVk51YnVijAdvdXRwdXRzlGg1KYGUfZQoaDhoOWg6Tmg+aEJoQ05oRH2UaA5oNSmBlH2UKGg4aD1oOk5oPmhCaENOaER9lGhGaEkpgZR9lChoTE5oTYhoTk5oT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWJzaEZoSSmBlH2UKGhMTmhNiGhOaJtoXoWUUpRoT4loUIloUUsBaFJOaFNOaFR9lGhWTnVidWKMCGV4ZWN1dG9ylIwTbm9kZV9ncmFwaC5leGVjdXRvcpSMD1J1bnRpbWVFeGVjdXRvcpSTlCmBlH2UKIwEbW9kZZRos4wMRXhlY3V0b3JNb2RllJOUjBBwaWNrbGVkX2NhbGxhYmxllIWUUpSMC21vZHVsZV9wYXRolE6MDWNhbGxhYmxlX25hbWWUaA2MDWNhbGxhYmxlX2tpbmSUTowKZ3JhcGhfZGF0YZROaLtYJAYAAGdBV1ZrQVFBQUFBQUFBQ01GMk5zYjNWa2NHbGphMnhsTG1Oc2IzVmtjR2xqYTJ4bGxJd09YMjFoYTJWZlpuVnVZM1JwYjI2VWs1UW9hQUNNRFY5aWRXbHNkR2x1WDNSNWNHV1VrNVNNQ0VOdlpHVlVlWEJsbElXVVVwUW9Td0ZMQUVzQVN3RkxBMHNEUS9DWEFIUUJBQUFBQUFBQUFBQUFBR1FCcGdFQUFLc0JBQUFBQUFBQUFBQUJBSFFDQUFBQUFBQUFBQUFBQUtBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhBS1lCQUFDckFRQUFBQUFBQUFBQWZRQjBCd0FBQUFBQUFBQUFBQUNtQUFBQXF3QUFBQUFBQUFBQUFId0FYd1FBQUFBQUFBQUFBSHdBb0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLWUFBQUNyQUFBQUFBQUFBQUFBQVFCOEFHb0VBQUFBQUFBQUFBQnFCZ0FBQUFBQUFBQUFaQUlaQUFBQUFBQUFBQUFBZkFDZ0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFwZ0FBQUtzQUFBQUFBQUFBQUFCa0E1d0NVd0NVS0l3K1EyRnNZM1ZzWVhSbElIUm9aU0JsYm1WeVoza2dZVzVrSUhadmJIVnRaU0JtYjNJZ1lTQnphVzVuYkdVZ1lYUnZiV2xqSUhOMGNuVmpkSFZ5WlM2VWpDQkRZV3hqZFd4aGRHbHVaeUJsYm1WeVoza2dZVzVrSUhadmJIVnRaUzR1THBTTUJtVnVaWEpuZVpSb0M0d0dkbTlzZFcxbGxJYVVkSlFvakFWd2NtbHVkSlNNQlVGMGIyMXpsSXdJWm5KdmJXUnBZM1NVakFORlRWU1VqQVJqWVd4amxJd1VaMlYwWDNCdmRHVnVkR2xoYkY5bGJtVnlaM21VakFkeVpYTjFiSFJ6bEl3S1oyVjBYM1p2YkhWdFpaUjBsSXdGWVhSdmJYT1VoWlNNSXk5MGJYQXZhWEI1YTJWeWJtVnNYekV3TmpZeU5EY3ZOVGcxTURneE1EWTJMbkI1bEl3YlkyRnNZM1ZzWVhSbFgyVnVaWEpuZVY5aGJtUmZkbTlzZFcxbGxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsRXNzUTJ5QUFQVUlBQVVLMEFvczBRUXQxQVF0MEFRdDNRd1JqMDZLVHBnMTBRd2gxQXdoZ0VYZEVSU1JGWlFWZ0VXRVN0Z0VDZGNFSHRJRUh0RUVJTlFFSU5BRUlPQVNGNVFxMUJJa29GalVFaTdZRWhmWEVpTFNFaUxSRWlUVUVpVHdCUU1NQnZBQUF3d0c4QUFEQlFhVVF3Q1VLU2wwbEZLVWZaUW9qQXRmWDNCaFkydGhaMlZmWDVST2pBaGZYMjVoYldWZlg1U01DRjlmYldGcGJsOWZsSFZPVGs1MGxGS1VhQUNNRWw5bWRXNWpkR2x2Ymw5elpYUnpkR0YwWlpTVGxHZ21mWlI5bENob0k0d2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdNWDE5eGRXRnNibUZ0WlY5ZmxJd2JZMkZzWTNWc1lYUmxYMlZ1WlhKbmVWOWhibVJmZG05c2RXMWxsSXdQWDE5aGJtNXZkR0YwYVc5dWMxOWZsSDJVS0dnWWpBbGhjMlV1WVhSdmJYT1VhQkNUbEl3R2NtVjBkWEp1bEl3SVluVnBiSFJwYm5PVWpBUmthV04wbEpPVWRZd09YMTlyZDJSbFptRjFiSFJ6WDErVVRvd01YMTlrWldaaGRXeDBjMTlmbEU2TUNsOWZiVzlrZFd4bFgxK1VhQ1NNQjE5ZlpHOWpYMStVYUFtTUMxOWZZMnh2YzNWeVpWOWZsRTZNRjE5amJHOTFaSEJwWTJ0c1pWOXpkV0p0YjJSMWJHVnpsRjJVakF0ZlgyZHNiMkpoYkhOZlg1UjlsQ2hvRUdneGFCS01FMkZ6WlM1allXeGpkV3hoZEc5eWN5NWxiWFNVYUJLVGxIVjFocFNHVWpBdZSMC3NvdXJjZV9jb2RllFh6AQAAQHRhc2soKQpkZWYgY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1lKGF0b21zOiBBdG9tcykgLT4gZGljdDoKICAgICIiIkNhbGN1bGF0ZSB0aGUgZW5lcmd5IGFuZCB2b2x1bWUgZm9yIGEgc2luZ2xlIGF0b21pYyBzdHJ1Y3R1cmUuIiIiCgogICAgcHJpbnQoIkNhbGN1bGF0aW5nIGVuZXJneSBhbmQgdm9sdW1lLi4uIikKICAgIGF0b21zID0gQXRvbXMuZnJvbWRpY3QoYXRvbXMpCiAgICBhdG9tcy5jYWxjID0gRU1UKCkKICAgIGF0b21zLmdldF9wb3RlbnRpYWxfZW5lcmd5KCkKICAgIHJldHVybiB7CiAgICAgICAgImVuZXJneSI6IGF0b21zLmNhbGMucmVzdWx0c1siZW5lcmd5Il0sCiAgICAgICAgInZvbHVtZSI6IGF0b21zLmdldF92b2x1bWUoKSwKICAgIH0KlIwIbWV0YWRhdGGUTnVijA5lcnJvcl9oYW5kbGVyc5R9lIwXYXR0YWNoZWRfZXJyb3JfaGFuZGxlcnOUfZRoxX2UjA9iYXNlX2NsYXNzX3BhdGiUjCtub2RlX2dyYXBoLnRhc2tzLmZ1bmN0aW9uX3Rhc2suRnVuY3Rpb25UYXNrlIwKYmFzZV9jbGFzc5SMHm5vZGVfZ3JhcGgudGFza3MuZnVuY3Rpb25fdGFza5SMDEZ1bmN0aW9uVGFza5STlIwHdmVyc2lvbpROdWKMDF9pbnB1dHNfc3BlY5RokowNX291dHB1dHNfc3BlY5RopIwSX2dldF9jdXJyZW50X2dyYXBolIwSbm9kZV9ncmFwaC5tYW5hZ2VylIwRZ2V0X2N1cnJlbnRfZ3JhcGiUk5SMDF9ncmFwaF9jbGFzc5ROjAlfY2FsbGFibGWUaAIoaAcoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRo3YwGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUaAqMCmdldF92b2x1bWWUdJRoEoWUaBSMG2NhbGN1bGF0ZV9lbmVyZ3lfYW5kX3ZvbHVtZZRoDUssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUaBgpKXSUUpRoG05OTnSUUpRoImjvfZR9lChoHYwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llGgmjBtjYWxjdWxhdGVfZW5lcmd5X2FuZF92b2x1bWWUaCh9lChoEowJYXNlLmF0b21zlGjik5RoXmgydWh0Tmh1Tmh2aB5od2jbaHhOaHldlGh7fZQoaOJo9mjkjBNhc2UuY2FsY3VsYXRvcnMuZW10lGjkk5R1dYaUhlIwdWJzdYaUhlIwLg==', 'source_code': '@task.graph()\ndef calc_all_structures(\n    scaled_structures: Annotated[dict, dynamic(Atoms)],\n) -> Annotated[dict, namespace(results=dynamic(dict))]:\n    """Sub-workflow to calculate energy and volume for all strained structures in parallel."""\n    results = {}\n    for key, atoms in scaled_structures.items():\n        # The key for each result (e.g., "strain_0") becomes an output link\n        # under the "results" namespace.\n        results[key] = calculate_energy_and_volume(atoms).result\n\n    # The returned dictionary\'s key "results" must match the name in the `outputs` decorator.\n    return {"results": results}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'scaled_structures': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'results': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'strain_0': {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, 'strain_3': {'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, 'strain_4': {'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}}
11/27/2025 02:12:19 PM <1066247> sqlalchemy.pool.impl.NullPool: [ERROR] Exception during reset or similar
Traceback (most recent call last):
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 985, in _finalize_fairy
    fairy._reset(
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1433, in _reset
    pool._dialect.do_rollback(self)
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 711, in do_rollback
    dbapi_connection.rollback()
sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 134265329550848 and this is thread id 134260715452096.
11/27/2025 02:12:19 PM <1066247> sqlalchemy.pool.impl.NullPool: [ERROR] Exception terminating connection <sqlite3.Connection object at 0x7a1c25b41d50>
Traceback (most recent call last):
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 985, in _finalize_fairy
    fairy._reset(
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1433, in _reset
    pool._dialect.do_rollback(self)
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 711, in do_rollback
    dbapi_connection.rollback()
sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 134265329550848 and this is thread id 134260715452096.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 372, in _close_connection
    self._dialect.do_terminate(connection)
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 717, in do_terminate
    self.do_close(dbapi_connection)
  File "/home/xing/apps/miniforge3/envs/aiida/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 720, in do_close
    dbapi_connection.close()
sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 134265329550848 and this is thread id 134260715452096.
[redun] Start Execution 36726e9d-9f22-44f9-a503-2f5b5494937f:  redun 'redun.root_task(QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'"'"'mode'"'"': '"'"'pickled_callable'"'"', '"'"'module_path'"'"': None, '"'"'callable_...'
2025-11-27T13:12:19.865630Z [info     ] Start Execution 36726e9d-9f22-44f9-a503-2f5b5494937f:  redun 'redun.root_task(QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'"'"'mode'"'"': '"'"'pickled_callable'"'"', '"'"'module_path'"'"': None, '"'"'callable_...' [redun] loc=scheduler.py:1028
[redun] Tasks will require namespace soon. Either set namespace in the `@task` decorator or with the module-level variable `redun_namespace`.
tasks needing namespace: redun.py:_redun_get_nested, redun.py:_redun_bundle, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job
2025-11-27T13:12:19.867321Z [warning  ] Tasks will require namespace soon. Either set namespace in the `@task` decorator or with the module-level variable `redun_namespace`.
tasks needing namespace: redun.py:_redun_get_nested, redun.py:_redun_bundle, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job, redun.py:_node_job [redun] loc=scheduler.py:1042
[redun] Run    Job a5fa8836:  redun.root_task(expr=QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculat...) on default
2025-11-27T13:12:19.877166Z [info     ] Run    Job a5fa8836:  redun.root_task(expr=QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculat...) on default [redun] loc=scheduler.py:1028
[redun] Run    Job ee1fc595:  task_calc_all_structures_calculate_energy_and_volume(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:19.889670Z [info     ] Run    Job ee1fc595:  task_calc_all_structures_calculate_energy_and_volume(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 36d5c4d6:  task_calc_all_structures_calculate_energy_and_volume1(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:19.905057Z [info     ] Run    Job 36d5c4d6:  task_calc_all_structures_calculate_energy_and_volume1(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 17484179:  task_calc_all_structures_calculate_energy_and_volume2(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:19.944380Z [info     ] Run    Job 17484179:  task_calc_all_structures_calculate_energy_and_volume2(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job c171ef3a:  task_calc_all_structures_calculate_energy_and_volume3(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:20.003647Z [info     ] Run    Job c171ef3a:  task_calc_all_structures_calculate_energy_and_volume3(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job a523d9b3:  task_calc_all_structures_calculate_energy_and_volume4(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
self.instance: QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume1=task_calc_all_structures_calculate_energy_and_volume1(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume2=task_calc_all_structures_calculate_energy_and_volume2(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume3=task_calc_all_structures_calculate_energy_and_volume3(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume4=task_calc_all_structures_calculate_energy_and_volume4(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), graph_outputs=ng_bundle(results={'strain_0': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_1': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume1(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_2': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume2(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_3': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume3(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_4': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume4(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None)})))
self.instance: QuotedExpression(ng_bundle(calculate_energy_and_volume=task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume1=task_calc_all_structures_calculate_energy_and_volume1(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume2=task_calc_all_structures_calculate_energy_and_volume2(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume3=task_calc_all_structures_calculate_energy_and_volume3(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), calculate_energy_and_volume4=task_calc_all_structures_calculate_energy_and_volume4(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), graph_outputs=ng_bundle(results={'strain_0': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_1': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume1(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_2': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume2(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_3': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume3(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_4': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume4(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None)})))
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}
self.instance: {'strain_0': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_1': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume1(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_2': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume2(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_3': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume3(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None), 'strain_4': ng_get_nested(task_calc_all_structures_calculate_energy_and_volume4(_ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}, _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_engine_name='calc_all_structures', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None), _ng_preserve_session=True, _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}, _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, atoms={'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}, parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57'), 'result', default=None)}
self.instance: result
self.instance: None
self.instance: result
self.instance: None
self.instance: result
self.instance: None
self.instance: result
self.instance: None
self.instance: result
self.instance: None
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume1', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume2', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume3', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}
self.instance: dcb17baf-8fcc-45dc-a612-360c3264ae57
self.instance: TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLA0sDQ/CXAHQBAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAABAHQCAAAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQB0BwAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAHwAXwQAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAAQB8AGoEAAAAAAAAAABqBgAAAAAAAAAAZAIZAAAAAAAAAAAAfACgBwAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABkA5wCUwCUKIw+Q2FsY3VsYXRlIHRoZSBlbmVyZ3kgYW5kIHZvbHVtZSBmb3IgYSBzaW5nbGUgYXRvbWljIHN0cnVjdHVyZS6UjCBDYWxjdWxhdGluZyBlbmVyZ3kgYW5kIHZvbHVtZS4uLpSMBmVuZXJneZRoC4wGdm9sdW1llIaUdJQojAVwcmludJSMBUF0b21zlIwIZnJvbWRpY3SUjANFTVSUjARjYWxjlIwUZ2V0X3BvdGVudGlhbF9lbmVyZ3mUjAdyZXN1bHRzlIwKZ2V0X3ZvbHVtZZR0lIwFYXRvbXOUhZSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llEssQ2yAAPUIAAUK0Aos0QQt1AQt0AQt3QwRj06KTpg10Qwh1AwhgEXdERSRFZQVgEWEStgECdcEHtIEHtEEINQEINAEIOASF5Qq1BIkoFjUEi7YEhfXEiLSEiLREiTUEiTwBQMMBvAAAwwG8AADBQaUQwCUKSl0lFKUfZQojAtfX3BhY2thZ2VfX5ROjAhfX25hbWVfX5SMCF9fbWFpbl9flHVOTk50lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgmfZR9lChoI4wbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwMX19xdWFsbmFtZV9flIwbY2FsY3VsYXRlX2VuZXJneV9hbmRfdm9sdW1llIwPX19hbm5vdGF0aW9uc19flH2UKGgYjAlhc2UuYXRvbXOUaBCTlIwGcmV0dXJulIwIYnVpbHRpbnOUjARkaWN0lJOUdYwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaCSMB19fZG9jX1+UaAmMC19fY2xvc3VyZV9flE6MF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lChoEGgxaBKME2FzZS5jYWxjdWxhdG9ycy5lbXSUaBKTlHV1hpSGUjAu', 'source_code': '@task()\ndef calculate_energy_and_volume(atoms: Atoms) -> dict:\n    """Calculate the energy and volume for a single atomic structure."""\n\n    print("Calculating energy and volume...")\n    atoms = Atoms.fromdict(atoms)\n    atoms.calc = EMT()\n    atoms.get_potential_energy()\n    return {\n        "energy": atoms.calc.results["energy"],\n        "volume": atoms.get_volume(),\n    }\n', 'metadata': None}
self.instance: calc_all_structures
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}
2025-11-27T13:12:20.082040Z [info     ] Run    Job a523d9b3:  task_calc_all_structures_calculate_energy_and_volume4(parent_pid='dcb17baf-8fcc-45dc-a612-360c3264ae57', _ng_meta=TaskMeta(node_name='calculate_energy_and_volume4', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'met..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'calculate_energy_and_volume', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVkAQAAAAAAACMF2Nsb3VkcGlja2xlLmN..., _ng_engine_name='calc_all_structures', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'atoms': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, ..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
Calculating energy and volume...
[redun] Run    Job 11bae18f:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}}, dotted='result', default=None) on default
2025-11-27T13:12:21.336537Z [info     ] Run    Job 11bae18f:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 68926ae1:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}, dotted='result', default=None) on default
2025-11-27T13:12:21.370041Z [info     ] Run    Job 68926ae1:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job bd347d8c:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}}, dotted='result', default=None) on default
2025-11-27T13:12:21.405940Z [info     ] Run    Job bd347d8c:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job f4e609d2:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}}, dotted='result', default=None) on default
2025-11-27T13:12:21.424196Z [info     ] Run    Job f4e609d2:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job f9a72774:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}}, dotted='result', default=None) on default
2025-11-27T13:12:21.432019Z [info     ] Run    Job f9a72774:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 02fba7ae:  ng_bundle(kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:21.440931Z [info     ] Run    Job 02fba7ae:  ng_bundle(kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job c5f86cb2:  ng_bundle(kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:21.448892Z [info     ] Run    Job c5f86cb2:  ng_bundle(kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:21.457153Z [info     ]                                [redun] loc=scheduler.py:1028
[redun] | JOB STATUS 2025/11/27 14:12:21
2025-11-27T13:12:21.458915Z [info     ] | JOB STATUS 2025/11/27 14:12:21 [redun] loc=scheduler.py:1028
[redun] | TASK                                                  PENDING RUNNING  FAILED  CACHED    DONE   TOTAL
2025-11-27T13:12:21.461744Z [info     ] | TASK                                                  PENDING RUNNING  FAILED  CACHED    DONE   TOTAL [redun] loc=scheduler.py:1028
[redun] |
2025-11-27T13:12:21.463939Z [info     ] |                              [redun] loc=scheduler.py:1028
[redun] | ALL                                                         0       0       0       0      13      13
2025-11-27T13:12:21.466120Z [info     ] | ALL                                                         0       0       0       0      13      13 [redun] loc=scheduler.py:1028
[redun] | ng_bundle                                                   0       0       0       0       2       2
2025-11-27T13:12:21.468527Z [info     ] | ng_bundle                                                   0       0       0       0       2       2 [redun] loc=scheduler.py:1028
[redun] | ng_get_nested                                               0       0       0       0       5       5
2025-11-27T13:12:21.470778Z [info     ] | ng_get_nested                                               0       0       0       0       5       5 [redun] loc=scheduler.py:1028
[redun] | redun.root_task                                             0       0       0       0       1       1
2025-11-27T13:12:21.475714Z [info     ] | redun.root_task                                             0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_calc_all_structures_calculate_energy_and_volume        0       0       0       0       1       1
2025-11-27T13:12:21.477113Z [info     ] | task_calc_all_structures_calculate_energy_and_volume        0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_calc_all_structures_calculate_energy_and_volume1       0       0       0       0       1       1
2025-11-27T13:12:21.478602Z [info     ] | task_calc_all_structures_calculate_energy_and_volume1       0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_calc_all_structures_calculate_energy_and_volume2       0       0       0       0       1       1
2025-11-27T13:12:21.481320Z [info     ] | task_calc_all_structures_calculate_energy_and_volume2       0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_calc_all_structures_calculate_energy_and_volume3       0       0       0       0       1       1
2025-11-27T13:12:21.483295Z [info     ] | task_calc_all_structures_calculate_energy_and_volume3       0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_calc_all_structures_calculate_energy_and_volume4       0       0       0       0       1       1
2025-11-27T13:12:21.485445Z [info     ] | task_calc_all_structures_calculate_energy_and_volume4       0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:21.489924Z [info     ]                                [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:21.491294Z [info     ]                                [redun] loc=scheduler.py:1028
[redun] Execution duration: 1.62 seconds
2025-11-27T13:12:21.492433Z [info     ] Execution duration: 1.62 seconds [redun] loc=scheduler.py:1028
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}}
self.instance: result
self.instance: None
self.instance: {'result': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}
self.instance: result
self.instance: None
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}}
self.instance: result
self.instance: None
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}}
self.instance: result
self.instance: None
self.instance: {'result': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}}
self.instance: result
self.instance: None
self.instance: {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}
self.instance: {'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}}
[redun] Run    Job eaeb5aeb:  ng_get_nested(d={'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'..., dotted='results', default=None) on default
2025-11-27T13:12:21.948924Z [info     ] Run    Job eaeb5aeb:  ng_get_nested(d={'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'..., dotted='results', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job eb628285:  task_eos_workflow_redun_fit_eos_model(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required'..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xll..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta'..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:21.958880Z [info     ] Run    Job eb628285:  task_eos_workflow_redun_fit_eos_model(parent_pid='e93e31a3-fc95-49fb-91b5-a6317632e360', _ng_meta=TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required'..., _ng_callable={'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xll..., _ng_engine_name='eos_workflow_redun', _ng_task_inputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta'..., _ng_task_outputs={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta':..., _ng_config=<redun.config.Config object at 0x7a1bfa805010>, _ng_default_user_email='aiida@localhost', _ng_preserve_session=True, kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
self.instance: {'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}}
self.instance: results
self.instance: None
self.instance: e93e31a3-fc95-49fb-91b5-a6317632e360
self.instance: TaskMeta(node_name='fit_eos_model', outputs_spec={'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}, label_kind='create', is_graph=False, semantics=None)
self.instance: {'mode': 'pickled_callable', 'module_path': None, 'callable_name': 'fit_eos_model', 'callable_kind': None, 'graph_data': None, 'pickled_callable': 'gAWVrgcAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwpLBEsDQ/aXAGQBZAJsAG0BfQEBAGQBZANsAm0DfQIBAGQEhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9A2QFhAB8AKAEAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAEQApgAAAKsAAAAAAAAAAAB9BAIAfAF8A3wEpgIAAKsCAAAAAAAAAAB9BXwFoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAXAMAAH0GfQd9CHwIfAJ6CwAAZAZ6BQAAfQl8BnwHfAlkB5wDUwCUKIw+Rml0IEVuZXJneS1Wb2x1bWUgZGF0YSB0byBhIEJpcmNoLU11cm5hZ2hhbiBFcXVhdGlvbiBvZiBTdGF0ZS6USwCMD0VxdWF0aW9uT2ZTdGF0ZZSFlIwCa0qUhZRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBnZvbHVtZZSFlCmMAi4wlIwFdmFsdWWUhpSMIy90bXAvaXB5a2VybmVsXzEwNjYyNDcvNTg1MDgxMDY2LnB5lIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUEMcgADQEz/QEz/QEz+oBZBFmCiUT9ATP9ATP9ATP5RDAJQpKXSUUpRoByhLAUsASwBLAksESxNDHpcAZwB8AF0KfQF8AWQAGQAAAAAAAAAAAJECjAtTAJSMBmVuZXJneZSFlCloEWgShpRoFIwKPGxpc3Rjb21wPpSMIWZpdF9lb3NfbW9kZWwuPGxvY2Fscz4uPGxpc3Rjb21wPpRLUUMcgADQFEDQFEDQFECoFZBVmDiUX9AUQNAUQNAUQJRoGCkpdJRSlEdE6nhDedmdtIwGdjBfQV4zlIwFZTBfZVaUjAVCX0dQYZSHlHSUKIwHYXNlLmVvc5RoCowJYXNlLnVuaXRzlGgMjAZ2YWx1ZXOUjANmaXSUdJQojARkYXRhlGgKaAyMDHZvbHVtZXNfbGlzdJSMDWVuZXJnaWVzX2xpc3SUjANlb3OUjAJ2MJSMAmUwlIwBQpRoJnSUaBSMDWZpdF9lb3NfbW9kZWyUjA1maXRfZW9zX21vZGVslEtJQ6SAAPAGAAUo0AQn0AQn0AQn0AQn0AQn2AQc0AQc0AQc0AQc0AQc0AQc8AYAFEAB0BM/sBS3G7IbsR20HdATP9ETP9QTP4BM2BRA0BRAsCS3K7IrsS20LdAUQNEUQNQUQIBN4AoZiC+YLKgN0Qo21Ao2gEPYEBOXB5IHkQmUCYFJgEKIAohB8AYADQ6QAolGkFaJT4BF2BYYoDKwBdALNtALNtAENpRoGCkpdJRSlH2UKIwLX19wYWNrYWdlX1+UTowIX19uYW1lX1+UjAhfX21haW5fX5R1Tk5OdJRSlGgAjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoQH2UfZQoaD2MDWZpdF9lb3NfbW9kZWyUjAxfX3F1YWxuYW1lX1+UjA1maXRfZW9zX21vZGVslIwPX19hbm5vdGF0aW9uc19flH2UKGgujAlfb3BlcmF0b3KUjAdnZXRpdGVtlJOUjAZ0eXBpbmeUjAlBbm5vdGF0ZWSUk5SMCGJ1aWx0aW5zlIwEZGljdJSTlIwWbm9kZV9ncmFwaC5zb2NrZXRfc3BlY5SMClNvY2tldFNwZWOUk5QpgZR9lCiMCmlkZW50aWZpZXKUjBRub2RlX2dyYXBoLm5hbWVzcGFjZZSMBGl0ZW2UaFUpgZR9lChoWIwObm9kZV9ncmFwaC5hbnmUaFpOjAdkZWZhdWx0lIwLZGF0YWNsYXNzZXOUjA1fTUlTU0lOR19UWVBFlJOUKYGUjApsaW5rX2xpbWl0lE6MBmZpZWxkc5R9lIwEbWV0YZSMFm5vZGVfZ3JhcGguc29ja2V0X21ldGGUjApTb2NrZXRNZXRhlJOUKYGUfZQojARoZWxwlE6MCHJlcXVpcmVklIiMCWNhbGxfcm9sZZROjAtpc19tZXRhZGF0YZSJjAdkeW5hbWljlImMGGNoaWxkX2RlZmF1bHRfbGlua19saW1pdJRLAYwLc29ja2V0X3R5cGWUTowIYXJnX3R5cGWUTowGZXh0cmFzlH2UjAlzZW1hbnRpY3OUTnVidWJoXmhiaGNOaGR9lGhmaGkpgZR9lChobE5obYhobk5ob4locIhocUsBaHJOaHNOaHR9lGh2TnVidWKGlIaUUpSMBnJldHVybpRoUnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGg+jAdfX2RvY19flGgJjAtfX2Nsb3N1cmVfX5ROjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu', 'source_code': '@task()\ndef fit_eos_model(data: Annotated[dict, dynamic(dict)]) -> dict:\n    """Fit Energy-Volume data to a Birch-Murnaghan Equation of State."""\n    from ase.eos import EquationOfState\n    from ase.units import kJ\n\n    # Unpack the energies and volumes from the input data dictionary\n    volumes_list = [value["volume"] for value in data.values()]\n    energies_list = [value["energy"] for value in data.values()]\n\n    eos = EquationOfState(volumes_list, energies_list)\n    v0, e0, B = eos.fit()\n\n    # The bulk modulus B is converted from eV/ų to GPa.\n    B_GPa = B / kJ * 1.0e24\n    return {"v0_A^3": v0, "e0_eV": e0, "B_GPa": B_GPa}\n', 'metadata': None}
self.instance: eos_workflow_redun
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'data': {'identifier': 'node_graph.namespace', 'dynamic': True, 'item': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.KWARGS: 'kwargs'>, 'child_default_link_limit': 1}}
self.instance: {'identifier': 'node_graph.namespace', 'dynamic': False, 'fields': {'result': {'identifier': 'node_graph.any', 'dynamic': False, 'meta': {'required': True, 'child_default_link_limit': 1}}}, 'meta': {'required': True, 'call_role': <CallRole.RETURN: 'return'>, 'child_default_link_limit': 1}}
self.instance: <redun.config.Config object at 0x7a1bfa805010>
self.instance: aiida@localhost
self.instance: True
self.instance: {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}
[redun] Run    Job ec73c80c:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}}, dotted='result', default=None) on default
2025-11-27T13:12:22.306407Z [info     ] Run    Job ec73c80c:  ng_get_nested(d={'result': {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}}, dotted='result', default=None) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 58b5a0e1:  ng_bundle(kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:22.312528Z [info     ] Run    Job 58b5a0e1:  ng_bundle(kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun] Run    Job 8c3f065c:  ng_bundle(kwargs=<class 'inspect._empty'>) on default
2025-11-27T13:12:22.321628Z [info     ] Run    Job 8c3f065c:  ng_bundle(kwargs=<class 'inspect._empty'>) on default [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:22.332929Z [info     ]                                [redun] loc=scheduler.py:1028
[redun] | JOB STATUS 2025/11/27 14:12:22
2025-11-27T13:12:22.334745Z [info     ] | JOB STATUS 2025/11/27 14:12:22 [redun] loc=scheduler.py:1028
[redun] | TASK                                               PENDING RUNNING  FAILED  CACHED    DONE   TOTAL
2025-11-27T13:12:22.335575Z [info     ] | TASK                                               PENDING RUNNING  FAILED  CACHED    DONE   TOTAL [redun] loc=scheduler.py:1028
[redun] |
2025-11-27T13:12:22.336253Z [info     ] |                              [redun] loc=scheduler.py:1028
[redun] | ALL                                                      0       0       0       0      11      11
2025-11-27T13:12:22.336893Z [info     ] | ALL                                                      0       0       0       0      11      11 [redun] loc=scheduler.py:1028
[redun] | ng_bundle                                                0       0       0       0       2       2
2025-11-27T13:12:22.338645Z [info     ] | ng_bundle                                                0       0       0       0       2       2 [redun] loc=scheduler.py:1028
[redun] | ng_get_nested                                            0       0       0       0       4       4
2025-11-27T13:12:22.340018Z [info     ] | ng_get_nested                                            0       0       0       0       4       4 [redun] loc=scheduler.py:1028
[redun] | redun.root_task                                          0       0       0       0       1       1
2025-11-27T13:12:22.341860Z [info     ] | redun.root_task                                          0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_eos_workflow_redun_calc_all_structures              0       0       0       0       1       1
2025-11-27T13:12:22.343793Z [info     ] | task_eos_workflow_redun_calc_all_structures              0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_eos_workflow_redun_create_strained_structures       0       0       0       0       1       1
2025-11-27T13:12:22.345296Z [info     ] | task_eos_workflow_redun_create_strained_structures       0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_eos_workflow_redun_fit_eos_model                    0       0       0       0       1       1
2025-11-27T13:12:22.347623Z [info     ] | task_eos_workflow_redun_fit_eos_model                    0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun] | task_eos_workflow_redun_relax_structure                  0       0       0       0       1       1
2025-11-27T13:12:22.348942Z [info     ] | task_eos_workflow_redun_relax_structure                  0       0       0       0       1       1 [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:22.351495Z [info     ]                                [redun] loc=scheduler.py:1028
[redun]
2025-11-27T13:12:22.352691Z [info     ]                                [redun] loc=scheduler.py:1028
[redun] Execution duration: 3.67 seconds
2025-11-27T13:12:22.354471Z [info     ] Execution duration: 3.67 seconds [redun] loc=scheduler.py:1028
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}}
self.instance: result
self.instance: None
self.instance: {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '456ddfdb-1061-46e2-9d6e-84e69330be41'}}
self.instance: {'scaled_structures': {'strain_0': {'__ng_tagged__': True, 'uuid': '4f3e6b25-587a-47e2-b414-badf3a887dc7'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '246576de-3e8c-4aab-b695-cfeb9bca8f59'}, 'strain_2': {'__ng_tagged__': True, 'uuid': 'f0a6b680-fc52-40d3-8797-5bc9ab2d3b6a'}, 'strain_3': {'__ng_tagged__': True, 'uuid': '57dd30e4-3e61-4cad-9b02-0d738f0509ec'}, 'strain_4': {'__ng_tagged__': True, 'uuid': '3da87c59-b7df-4f55-8811-150ac8abe68a'}}}
self.instance: {'results': {'strain_0': {'__ng_tagged__': True, 'uuid': '4d2ed87f-5942-4379-adfa-94628c89c250'}, 'strain_1': {'__ng_tagged__': True, 'uuid': '8706db7b-07ae-487f-9242-e2350f7b73a0'}, 'strain_2': {'__ng_tagged__': True, 'uuid': '957dcfb4-f560-451f-95c8-ab5d00ce4a5e'}, 'strain_3': {'__ng_tagged__': True, 'uuid': 'fdbf7300-1b5c-4bd0-a146-2527f9afe14d'}, 'strain_4': {'__ng_tagged__': True, 'uuid': 'fafa56c5-ba11-42da-9614-c188c8a54e6c'}}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}}
self.instance: {'result': {'__ng_tagged__': True, 'uuid': '75ce8e6c-2337-4f88-aa1a-4794c09ea4a7'}}
Fitted EOS parameters: {'result': <Dict: uuid: 75ce8e6c-2337-4f88-aa1a-4794c09ea4a7 (pk: 220462)>}
[12]:
100%
N220441 Graph<eos_workflow> (e93e31a3) State: finished Exit Code: 0 N220442 relax_structure (74d2acaa) State: finished Exit Code: 0 N220441->N220442 CALL_CALC relax_structure N220444 create_strained_structures (cb1fc0fc) State: finished Exit Code: 0 N220441->N220444 CALL_CALC create_strained_structures N220450 Graph<calc_all_structures> (dcb17baf) State: finished Exit Code: 0 N220441->N220450 CALL_WORK calc_all_structures N220461 fit_eos_model (1370bc1c) State: finished Exit Code: 0 N220441->N220461 CALL_CALC fit_eos_model N220462 Dict (75ce8e6c) N220441->N220462 RETURN result N220438 Dict (8a3599dc) N220438->N220441 INPUT_WORK atoms N220439 List (b39e3819) N220439->N220441 INPUT_WORK scales N220440 Bool (40a96e68) True N220440->N220441 INPUT_WORK run_relax N220443 Dict (456ddfdb) N220442->N220443 CREATE result N220443->N220444 INPUT_CALC atoms N220445 Dict (4f3e6b25) N220444->N220445 CREATE scaled_structures__strain_0 N220446 Dict (246576de) N220444->N220446 CREATE scaled_structures__strain_1 N220447 Dict (f0a6b680) N220444->N220447 CREATE scaled_structures__strain_2 N220448 Dict (57dd30e4) N220444->N220448 CREATE scaled_structures__strain_3 N220449 Dict (3da87c59) N220444->N220449 CREATE scaled_structures__strain_4 N220445->N220450 INPUT_WORK scaled_structures__strain_0 N220451 calculate_energy_and_volume (22d72ca7) State: finished Exit Code: 0 N220445->N220451 INPUT_CALC atoms N220446->N220450 INPUT_WORK scaled_structures__strain_1 N220452 calculate_energy_and_volume1 (d49c99f4) State: finished Exit Code: 0 N220446->N220452 INPUT_CALC atoms N220447->N220450 INPUT_WORK scaled_structures__strain_2 N220453 calculate_energy_and_volume2 (47e8bd94) State: finished Exit Code: 0 N220447->N220453 INPUT_CALC atoms N220448->N220450 INPUT_WORK scaled_structures__strain_3 N220454 calculate_energy_and_volume3 (8cbd48a5) State: finished Exit Code: 0 N220448->N220454 INPUT_CALC atoms N220449->N220450 INPUT_WORK scaled_structures__strain_4 N220455 calculate_energy_and_volume4 (279cf960) State: finished Exit Code: 0 N220449->N220455 INPUT_CALC atoms N220450->N220451 CALL_CALC calculate_energy_and_volume N220450->N220452 CALL_CALC calculate_energy_and_volume1 N220450->N220453 CALL_CALC calculate_energy_and_volume2 N220450->N220454 CALL_CALC calculate_energy_and_volume3 N220450->N220455 CALL_CALC calculate_energy_and_volume4 N220456 Dict (8706db7b) N220450->N220456 RETURN results__strain_1 N220457 Dict (957dcfb4) N220450->N220457 RETURN results__strain_2 N220458 Dict (4d2ed87f) N220450->N220458 RETURN results__strain_0 N220459 Dict (fdbf7300) N220450->N220459 RETURN results__strain_3 N220460 Dict (fafa56c5) N220450->N220460 RETURN results__strain_4 N220451->N220458 CREATE result N220452->N220456 CREATE result N220453->N220457 CREATE result N220454->N220459 CREATE result N220455->N220460 CREATE result N220456->N220461 INPUT_CALC data__strain_1 N220457->N220461 INPUT_CALC data__strain_2 N220458->N220461 INPUT_CALC data__strain_0 N220459->N220461 INPUT_CALC data__strain_3 N220460->N220461 INPUT_CALC data__strain_4 N220461->N220462 CREATE result

Note

The aiida-workgraph # noqa: E501 project (built on top of Graph) ships the same Equation of State workflow described in this documentation and records provenance that is compatible with Graph Engine. This shared, decorator-driven approach lets different workflow systems exchange and analyse provenance without translation layers.

Conclusion

This example illustrated how to build a complex scientific workflow using :mod:node_graph, featuring optional steps, dynamic namespaces, and nested sub-workflows. The same workflow definition can be executed by multiple engines, producing identical provenance for cross-comparison and analysis.