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]:
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]:
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]:
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]:
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]:
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]:
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]:
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]:
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]:
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]:
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.