From 28b6ac4d712edf8916cf327abf954a584786d182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 12:44:40 +0200 Subject: [PATCH 1/8] Move examples to separate folder --- .github/workflows/pipeline.yml | 13 +- README.md | 56 +- aiida_arithmetic.ipynb | 1 - aiida_nfdi.ipynb | 1 - aiida_qe.ipynb | 1 - book/_toc.yml | 18 +- book/arithmetic.md | 4 +- .../arithmetic/aiida_arithmetic.ipynb | 234 +++++++++ .../arithmetic/arithmetic_workflow.py | 0 .../arithmetic/jobflow_arithmetic.ipynb | 298 +++++++++++ .../arithmetic/pyiron_base_arithmetic.ipynb | 289 ++++++++++ .../universal_workflow_arithmetic.ipynb | 0 .../arithmetic/workflow_arithmetic.json | 0 example_workflows/nfdi/aiida_nfdi.ipynb | 364 +++++++++++++ example_workflows/nfdi/jobflow_nfdi.ipynb | 327 ++++++++++++ .../nfdi/nfdi_ing_workflow.py | 0 example_workflows/nfdi/pyiron_base_nfdi.ipynb | 312 +++++++++++ .../nfdi/source}/envs/postprocessing.yaml | 0 .../nfdi/source}/envs/preprocessing.yaml | 0 .../nfdi/source}/envs/processing.yaml | 0 .../nfdi/source}/macros.tex.template | 0 .../nfdi/source}/paper.tex | 0 .../nfdi/source}/poisson.py | 0 .../nfdi/source}/postprocessing.py | 0 .../nfdi/source}/prepare_paper_macros.py | 0 .../nfdi/source}/unit_square.geo | 0 .../nfdi/universal_workflow_nfdi.ipynb | 0 .../nfdi/workflow_nfdi.json | 0 .../quantum_espresso/aiida_qe.ipynb | 495 ++++++++++++++++++ .../quantum_espresso/environment_qe.yml | 0 .../pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF | 0 .../quantum_espresso/jobflow_qe.ipynb | 419 +++++++++++++++ .../quantum_espresso/pyiron_base_qe.ipynb | 393 ++++++++++++++ .../qe_xml_parser}/pyproject.toml | 0 .../src/qe_xml_parser/__init__.py | 0 .../src/qe_xml_parser/parsers.py | 0 .../src/qe_xml_parser/schemas/__init__.py | 0 .../src/qe_xml_parser/schemas/qes_230310.xsd | 0 .../quantum_espresso_workflow.py | 0 .../universal_workflow_qe.ipynb | 0 .../quantum_espresso/workflow_qe.json | 0 jobflow_arithmetic.ipynb | 1 - jobflow_nfdi.ipynb | 1 - jobflow_qe.ipynb | 1 - pyiron_base_arithmetic.ipynb | 1 - pyiron_base_nfdi.ipynb | 1 - pyiron_base_qe.ipynb | 1 - 47 files changed, 3178 insertions(+), 53 deletions(-) delete mode 100644 aiida_arithmetic.ipynb delete mode 100644 aiida_nfdi.ipynb delete mode 100644 aiida_qe.ipynb create mode 100644 example_workflows/arithmetic/aiida_arithmetic.ipynb rename arithmetic_workflow.py => example_workflows/arithmetic/arithmetic_workflow.py (100%) create mode 100644 example_workflows/arithmetic/jobflow_arithmetic.ipynb create mode 100644 example_workflows/arithmetic/pyiron_base_arithmetic.ipynb rename universal_workflow_arithmetic.ipynb => example_workflows/arithmetic/universal_workflow_arithmetic.ipynb (100%) rename workflow_arithmetic.json => example_workflows/arithmetic/workflow_arithmetic.json (100%) create mode 100644 example_workflows/nfdi/aiida_nfdi.ipynb create mode 100644 example_workflows/nfdi/jobflow_nfdi.ipynb rename nfdi_ing_workflow.py => example_workflows/nfdi/nfdi_ing_workflow.py (100%) create mode 100644 example_workflows/nfdi/pyiron_base_nfdi.ipynb rename {source => example_workflows/nfdi/source}/envs/postprocessing.yaml (100%) rename {source => example_workflows/nfdi/source}/envs/preprocessing.yaml (100%) rename {source => example_workflows/nfdi/source}/envs/processing.yaml (100%) rename {source => example_workflows/nfdi/source}/macros.tex.template (100%) rename {source => example_workflows/nfdi/source}/paper.tex (100%) rename {source => example_workflows/nfdi/source}/poisson.py (100%) rename {source => example_workflows/nfdi/source}/postprocessing.py (100%) rename {source => example_workflows/nfdi/source}/prepare_paper_macros.py (100%) rename {source => example_workflows/nfdi/source}/unit_square.geo (100%) rename universal_workflow_nfdi.ipynb => example_workflows/nfdi/universal_workflow_nfdi.ipynb (100%) rename workflow_nfdi.json => example_workflows/nfdi/workflow_nfdi.json (100%) create mode 100644 example_workflows/quantum_espresso/aiida_qe.ipynb rename environment_qe.yml => example_workflows/quantum_espresso/environment_qe.yml (100%) rename {espresso => example_workflows/quantum_espresso/espresso}/pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF (100%) create mode 100644 example_workflows/quantum_espresso/jobflow_qe.ipynb create mode 100644 example_workflows/quantum_espresso/pyiron_base_qe.ipynb rename {qe_xml_parser => example_workflows/quantum_espresso/qe_xml_parser}/pyproject.toml (100%) rename {qe_xml_parser => example_workflows/quantum_espresso/qe_xml_parser}/src/qe_xml_parser/__init__.py (100%) rename {qe_xml_parser => example_workflows/quantum_espresso/qe_xml_parser}/src/qe_xml_parser/parsers.py (100%) rename {qe_xml_parser => example_workflows/quantum_espresso/qe_xml_parser}/src/qe_xml_parser/schemas/__init__.py (100%) rename {qe_xml_parser => example_workflows/quantum_espresso/qe_xml_parser}/src/qe_xml_parser/schemas/qes_230310.xsd (100%) rename quantum_espresso_workflow.py => example_workflows/quantum_espresso/quantum_espresso_workflow.py (100%) rename universal_workflow_qe.ipynb => example_workflows/quantum_espresso/universal_workflow_qe.ipynb (100%) rename workflow_qe.json => example_workflows/quantum_espresso/workflow_qe.json (100%) delete mode 100644 jobflow_arithmetic.ipynb delete mode 100644 jobflow_nfdi.ipynb delete mode 100644 jobflow_qe.ipynb delete mode 100644 pyiron_base_arithmetic.ipynb delete mode 100644 pyiron_base_nfdi.ipynb delete mode 100644 pyiron_base_qe.ipynb diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 307ace9..a0e4e90 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -19,7 +19,6 @@ jobs: - name: Installation and setup shell: bash -l {0} run: | - pip install -e qe_xml_parser pip install -e python_workflow_definition conda install -c conda-forge jupyter papermill verdi presto --profile-name pwd @@ -27,12 +26,13 @@ jobs: - name: Create Additional Conda Environments shell: bash -l {0} run: | - conda env create -n preprocessing -f source/envs/preprocessing.yaml -y - conda env create -n processing -f source/envs/processing.yaml -y - conda env create -n postprocessing -f source/envs/postprocessing.yaml -y + conda env create -n preprocessing -f example_workflows/nfdi/source/envs/preprocessing.yaml -y + conda env create -n processing -f example_workflows/nfdi/source/envs/processing.yaml -y + conda env create -n postprocessing -f example_workflows/nfdi/source/envs/postprocessing.yaml -y - name: Tests shell: bash -l {0} run: | + cd example_workflows/nfdi/ papermill aiida_nfdi.ipynb aiida_nfdi_out.ipynb -k "python3" papermill jobflow_nfdi.ipynb jobflow_nfdi_out.ipynb -k "python3" papermill pyiron_base_nfdi.ipynb pyiron_base_nfdi_out.ipynb -k "python3" @@ -54,7 +54,7 @@ jobs: - name: Installation and setup shell: bash -l {0} run: | - pip install -e qe_xml_parser + pip install -e example_workflows/quantum_espresso/qe_xml_parser pip install -e python_workflow_definition conda install -c conda-forge jupyter papermill verdi presto --profile-name pwd @@ -62,6 +62,8 @@ jobs: shell: bash -l {0} run: | export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo + cp -r example_workflows/quantum_espresso/espresso . + cd example_workflows/quantum_espresso papermill aiida_qe.ipynb aiida_qe_out.ipynb -k "python3" papermill jobflow_qe.ipynb jobflow_qe_out.ipynb -k "python3" papermill pyiron_base_qe.ipynb pyiron_base_qe_out.ipynb -k "python3" @@ -86,6 +88,7 @@ jobs: - name: Tests shell: bash -l {0} run: | + cd example_workflows/arithmetic papermill aiida_arithmetic.ipynb aiida_arithmetic_out.ipynb -k "python3" papermill jobflow_arithmetic.ipynb jobflow_arithmetic_out.ipynb -k "python3" papermill pyiron_base_arithmetic.ipynb pyiron_base_arithmetic_out.ipynb -k "python3" diff --git a/README.md b/README.md index ec7a72d..604b90d 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ These two Python functions are combined in the following example workflow: tmp_dict = get_prod_and_div(x=1, y=2) result = get_sum(x=tmp_dict["prod"], y=tmp_dict["div"]) ``` -For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](arithmetic_workflow.py) -Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](workflow_arithmetic.json) +For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](example_workflows/arithmetic/arithmetic_workflow.py) +Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](example_workflows/arithmetic/workflow_arithmetic.json) JSON file: ``` { @@ -59,45 +59,45 @@ The corresponding Jupyter notebooks demonstrate this functionality: | Example | Explanation | |----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_arithmetic.ipynb](aiida_arithmetic.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_arithmetic.ipynb](jobflow_arithmetic.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_arithmetic.ipynb](pyiron_base_arithmetic.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_arithmetic.ipynb](universal_workflow_arithmetic.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | +| [aiida_arithmetic.ipynb](example_workflows/arithmetic/aiida_arithmetic.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_arithmetic.ipynb](example_workflows/arithmetic/jobflow_arithmetic.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_arithmetic.ipynb](example_workflows/arithmetic/pyiron_base_arithmetic.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_arithmetic.ipynb](example_workflows/arithmetic/universal_workflow_arithmetic.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | ### Quantum Espresso Workflow The second workflow example is the calculation of an energy volume curve with Quantum Espresso. In the first step the initial structure is relaxed, afterward it is strained and the total energy is calculated. -* [quantum_espresso_workflow.py](quantum_espresso_workflow.py) Python functions -* [workflow_qe.json](workflow_qe.json) Workflow definition in the Python Workflow Definition. -* [environment_qe.yml](environment_qe.yml) Conda environment +* [quantum_espresso_workflow.py](example_workflows/quantum_espresso/quantum_espresso_workflow.py) Python functions +* [workflow_qe.json](example_workflows/quantum_espresso/workflow_qe.json) Workflow definition in the Python Workflow Definition. +* [environment_qe.yml](example_workflows/quantum_espresso/environment_qe.yml) Conda environment | Example | Explanation | |------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_qe.ipynb](aiida_qe.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_qe.ipynb](jobflow_qe.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_qe.ipynb](pyiron_base_qe.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_qe.ipynb](universal_workflow_qe.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | +| [aiida_qe.ipynb](example_workflows/quantum_espresso/aiida_qe.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_qe.ipynb](example_workflows/quantum_espresso/jobflow_qe.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_qe.ipynb](example_workflows/quantum_espresso/pyiron_base_qe.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_qe.ipynb](example_workflows/quantum_espresso/universal_workflow_qe.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | ### NFDI4Ing Scientific Workflow Requirements To demonstrate the compatibility of the Python Workflow Definition to file based workflows, the workflow benchmark developed as part of [NFDI4Ing](https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements) is implemented for all three simulation codes based on a shared workflow definition. -* [nfdi_ing_workflow.py](nfdi_ing_workflow.py) Python functions -* [workflow_nfdi.json](workflow_nfdi.json) Workflow definition in the Python Workflow Definition. +* [nfdi_ing_workflow.py](example_workflows/nfdi/nfdi_ing_workflow.py) Python functions +* [workflow_nfdi.json](example_workflows/nfdi/workflow_nfdi.json) Workflow definition in the Python Workflow Definition. Additional source files provided with the workflow benchmark: -* [source/envs/preprocessing.yaml](source/envs/preprocessing.yaml) Conda environment for preprocessing -* [source/envs/processing.yaml](source/envs/processing.yaml) Conda environment for processing -* [source/envs/postprocessing.yaml](source/envs/postprocessing.yaml) Conda environment for postprocessing -* [source/macros.tex.template](source/macros.tex.template) LaTeX module template -* [source/paper.tex](source/paper.tex) LaTeX paper template -* [source/poisson.py](source/poisson.py) Poisson Python script -* [source/postprocessing.py](source/postprocessing.py) Postprocessing Python script -* [source/prepare_paper_macros.py](source/prepare_paper_macros.py) LaTeX preprocessing Python script -* [source/unit_square.geo](source/unit_square.geo) Input structure +* [source/envs/preprocessing.yaml](example_workflows/nfdi/source/envs/preprocessing.yaml) Conda environment for preprocessing +* [source/envs/processing.yaml](example_workflows/nfdi/source/envs/processing.yaml) Conda environment for processing +* [source/envs/postprocessing.yaml](example_workflows/nfdi/source/envs/postprocessing.yaml) Conda environment for postprocessing +* [source/macros.tex.template](example_workflows/nfdi/source/macros.tex.template) LaTeX module template +* [source/paper.tex](example_workflows/nfdi/source/paper.tex) LaTeX paper template +* [source/poisson.py](example_workflows/nfdi/source/poisson.py) Poisson Python script +* [source/postprocessing.py](example_workflows/nfdi/source/postprocessing.py) Postprocessing Python script +* [source/prepare_paper_macros.py](example_workflows/nfdi/source/prepare_paper_macros.py) LaTeX preprocessing Python script +* [source/unit_square.geo](example_workflows/nfdi/source/unit_square.geo) Input structure | Example | Explanation | |----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_nfdi.ipynb](aiida_nfdi.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_nfdi.ipynb](jobflow_nfdi.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_nfdi.ipynb](pyiron_base_nfdi.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_nfdi.ipynb](universal_workflow_nfdi.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | \ No newline at end of file +| [aiida_nfdi.ipynb](example_workflows/nfdi/aiida_nfdi.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_nfdi.ipynb](example_workflows/nfdi/jobflow_nfdi.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_nfdi.ipynb](example_workflows/nfdi/pyiron_base_nfdi.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_nfdi.ipynb](example_workflows/nfdi/universal_workflow_nfdi.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | \ No newline at end of file diff --git a/aiida_arithmetic.ipynb b/aiida_arithmetic.ipynb deleted file mode 100644 index 3c45097..0000000 --- a/aiida_arithmetic.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.8"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Aiida","metadata":{}},{"cell_type":"markdown","source":"## Define workflow with aiida","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()\n\nworkflow_json_filename = \"aiida_simple.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from arithmetic_workflow import (\n get_sum as _get_sum,\n get_prod_and_div as _get_prod_and_div,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"wg = WorkGraph(\"arithmetic\")","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"cell_type":"code","source":"get_prod_and_div_task = wg.add_task(\n task(outputs=['prod', 'div'])(_get_prod_and_div),\n name=\"get_prod_and_div\",\n x=orm.Float(1),\n y=orm.Float(2),\n)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"get_sum_task = wg.add_task(\n _get_sum,\n name=\"get_sum\",\n x=get_prod_and_div_task.outputs.prod,\n y=get_prod_and_div_task.outputs.div,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"cell_type":"code","source":"write_workflow_json(wg=wg, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[{"execution_count":6,"output_type":"execute_result","data":{"text/plain":"{'nodes': [{'id': 0, 'function': 'arithmetic_workflow.get_prod_and_div'},\n {'id': 1, 'function': 'arithmetic_workflow.get_sum'},\n {'id': 2, 'value': 1.0},\n {'id': 3, 'value': 2.0}],\n 'edges': [{'target': 1, 'targetPort': 'x', 'source': 0, 'sourcePort': 'prod'},\n {'target': 1, 'targetPort': 'y', 'source': 0, 'sourcePort': 'div'},\n {'target': 0, 'targetPort': 'x', 'source': 2, 'sourcePort': None},\n {'target': 0, 'targetPort': 'y', 'source': 3, 'sourcePort': None}]}"},"metadata":{}}],"execution_count":6},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"arithmetic_workflow.get_prod_and_div\"\n },\n {\n \"id\": 1,\n \"function\": \"arithmetic_workflow.get_sum\"\n },\n {\n \"id\": 2,\n \"value\": 1.0\n },\n {\n \"id\": 3,\n \"value\": 2.0\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"x\",\n \"source\": 0,\n \"sourcePort\": \"prod\"\n },\n {\n \"target\": 1,\n \"targetPort\": \"y\",\n \"source\": 0,\n \"sourcePort\": \"div\"\n },\n {\n \"target\": 0,\n \"targetPort\": \"x\",\n \"source\": 2,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"y\",\n \"source\": 3,\n \"sourcePort\": null\n }\n ]\n}"}],"execution_count":7},{"cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":8},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:27:52,129 INFO Started executing jobs locally\n2025-04-23 09:27:52,561 INFO Starting job - get_prod_and_div (6eae194f-04a4-4c7c-b0d9-baf624bac375)\n2025-04-23 09:27:52,564 INFO Finished job - get_prod_and_div (6eae194f-04a4-4c7c-b0d9-baf624bac375)\n2025-04-23 09:27:52,564 INFO Starting job - get_sum (21fda98d-7701-45c7-a30a-816e9a91ab75)\n2025-04-23 09:27:52,566 INFO Finished job - get_sum (21fda98d-7701-45c7-a30a-816e9a91ab75)\n2025-04-23 09:27:52,566 INFO Finished executing jobs locally\n"},{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"{'6eae194f-04a4-4c7c-b0d9-baf624bac375': {1: Response(output={'prod': 2.0, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '21fda98d-7701-45c7-a30a-816e9a91ab75': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":11},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_92b349b68e1d28facd2c0cc67fea0894\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7407d4c7d100>\n\n\n\nx_c8e04d7c4ce41e51517caabdd70267c4\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x7407ca519a90>\n\n\n\nx_c8e04d7c4ce41e51517caabdd70267c4->create_function_job_92b349b68e1d28facd2c0cc67fea0894\n\n\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1\n\nx=1.0\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->x_c8e04d7c4ce41e51517caabdd70267c4\n\n\n\n\n\ny_6c83c1caef87634071eb9102b68e73cf\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x7407bf835610>\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->y_6c83c1caef87634071eb9102b68e73cf\n\n\n\n\n\ny_6c83c1caef87634071eb9102b68e73cf->create_function_job_92b349b68e1d28facd2c0cc67fea0894\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20\n\ny=2.0\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->x_c8e04d7c4ce41e51517caabdd70267c4\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->y_6c83c1caef87634071eb9102b68e73cf\n\n\n\n\n"},"metadata":{}}],"execution_count":13},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_prod_and_div_7c19c6233dddb02781fc331f609558a1 was saved and received the ID: 1\nThe job get_sum_92b8e0a2d45fff6b04940562a8d7d8f7 was saved and received the ID: 2\n"},{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"2.5"},"metadata":{}}],"execution_count":14}]} \ No newline at end of file diff --git a/aiida_nfdi.ipynb b/aiida_nfdi.ipynb deleted file mode 100644 index d6e33e5..0000000 --- a/aiida_nfdi.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"# Aiida\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"11e09b78-cb72-465f-9c8b-5b77f0aa729c","cell_type":"markdown","source":"## Define workflow with aiida","metadata":{}},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh,\n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line,\n substitute_macros,\n compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\npoisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = orm.Float(2.0)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"1e7e14ba-c4a7-485f-9bd8-44625830cca0","cell_type":"code","source":"wg = WorkGraph(\"wg-nfdi\")","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = wg.add_task(\n generate_mesh,\n name=\"generate_mesh\",\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = wg.add_task(\n convert_to_xdmf,\n name=\"convert_to_xdmf\",\n gmsh_output_file=gmsh_output_file.outputs.result,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = wg.add_task(\n poisson,\n name=\"poisson\",\n meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n meshio_output_h5=meshio_output_dict.outputs.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = wg.add_task(\n plot_over_line,\n name=\"plot_over_line\",\n poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = wg.add_task(\n substitute_macros,\n name=\"substitute_macros\",\n pvbatch_output_file=pvbatch_output_file.outputs.result, \n ndofs=poisson_dict.outputs.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = wg.add_task(\n compile_paper,\n name=\"compile_paper\",\n macros_tex=macros_tex_file.outputs.result, \n plot_file=pvbatch_output_file.outputs.result,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":12,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-nfdi…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"cc82d573b0404a4697e86fea0f52b39d"}},"metadata":{}}],"execution_count":12},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"aiida_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(wg=wg, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"{'nodes': [{'id': 0, 'function': 'nfdi_ing_workflow.generate_mesh'},\n {'id': 1, 'function': 'nfdi_ing_workflow.convert_to_xdmf'},\n {'id': 2, 'function': 'nfdi_ing_workflow.poisson'},\n {'id': 3, 'function': 'nfdi_ing_workflow.plot_over_line'},\n {'id': 4, 'function': 'nfdi_ing_workflow.substitute_macros'},\n {'id': 5, 'function': 'nfdi_ing_workflow.compile_paper'},\n {'id': 6, 'value': 2.0}],\n 'edges': [{'target': 1,\n 'targetPort': 'gmsh_output_file',\n 'source': 0,\n 'sourcePort': None},\n {'target': 2,\n 'targetPort': 'meshio_output_xdmf',\n 'source': 1,\n 'sourcePort': 'xdmf_file'},\n {'target': 2,\n 'targetPort': 'meshio_output_h5',\n 'source': 1,\n 'sourcePort': 'h5_file'},\n {'target': 3,\n 'targetPort': 'poisson_output_pvd_file',\n 'source': 2,\n 'sourcePort': 'pvd_file'},\n {'target': 3,\n 'targetPort': 'poisson_output_vtu_file',\n 'source': 2,\n 'sourcePort': 'vtu_file'},\n {'target': 4,\n 'targetPort': 'pvbatch_output_file',\n 'source': 3,\n 'sourcePort': None},\n {'target': 4, 'targetPort': 'ndofs', 'source': 2, 'sourcePort': 'numdofs'},\n {'target': 5, 'targetPort': 'macros_tex', 'source': 4, 'sourcePort': None},\n {'target': 5, 'targetPort': 'plot_file', 'source': 3, 'sourcePort': None},\n {'target': 0, 'targetPort': 'domain_size', 'source': 6, 'sourcePort': None},\n {'target': 4, 'targetPort': 'domain_size', 'source': 6, 'sourcePort': None}]}"},"metadata":{}}],"execution_count":14},{"id":"490df6a3-e402-4620-acf2-dbcfa0c5d537","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"nfdi_ing_workflow.generate_mesh\"\n },\n {\n \"id\": 1,\n \"function\": \"nfdi_ing_workflow.convert_to_xdmf\"\n },\n {\n \"id\": 2,\n \"function\": \"nfdi_ing_workflow.poisson\"\n },\n {\n \"id\": 3,\n \"function\": \"nfdi_ing_workflow.plot_over_line\"\n },\n {\n \"id\": 4,\n \"function\": \"nfdi_ing_workflow.substitute_macros\"\n },\n {\n \"id\": 5,\n \"function\": \"nfdi_ing_workflow.compile_paper\"\n },\n {\n \"id\": 6,\n \"value\": 2.0\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"gmsh_output_file\",\n \"source\": 0,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"meshio_output_xdmf\",\n \"source\": 1,\n \"sourcePort\": \"xdmf_file\"\n },\n {\n \"target\": 2,\n \"targetPort\": \"meshio_output_h5\",\n \"source\": 1,\n \"sourcePort\": \"h5_file\"\n },\n {\n \"target\": 3,\n \"targetPort\": \"poisson_output_pvd_file\",\n \"source\": 2,\n \"sourcePort\": \"pvd_file\"\n },\n {\n \"target\": 3,\n \"targetPort\": \"poisson_output_vtu_file\",\n \"source\": 2,\n \"sourcePort\": \"vtu_file\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"pvbatch_output_file\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"ndofs\",\n \"source\": 2,\n \"sourcePort\": \"numdofs\"\n },\n {\n \"target\": 5,\n \"targetPort\": \"macros_tex\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"plot_file\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"domain_size\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"domain_size\",\n \"source\": 6,\n \"sourcePort\": null\n }\n ]\n}"}],"execution_count":15},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":16},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":17},{"id":"c3528d55-6bf7-47ed-a110-65c47446ba92","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:29:09,718 INFO Started executing jobs locally\n2025-04-23 09:29:10,027 INFO Starting job - generate_mesh (db4e4162-f31c-4da8-b474-aff5f748b02a)\n2025-04-23 09:29:11,997 INFO Finished job - generate_mesh (db4e4162-f31c-4da8-b474-aff5f748b02a)\n2025-04-23 09:29:11,998 INFO Starting job - convert_to_xdmf (25f3510a-42fc-4895-bb0c-1ea58a357c1d)\n2025-04-23 09:29:13,640 INFO Finished job - convert_to_xdmf (25f3510a-42fc-4895-bb0c-1ea58a357c1d)\n2025-04-23 09:29:13,642 INFO Starting job - poisson (03732863-096b-4c7f-b9fe-62edb0fd5d91)\n2025-04-23 09:29:23,400 INFO Finished job - poisson (03732863-096b-4c7f-b9fe-62edb0fd5d91)\n2025-04-23 09:29:23,401 INFO Starting job - plot_over_line (d326049f-820a-4b9c-8645-70a4d5a8b581)\n2025-04-23 09:29:25,817 INFO Finished job - plot_over_line (d326049f-820a-4b9c-8645-70a4d5a8b581)\n2025-04-23 09:29:25,818 INFO Starting job - substitute_macros (ce1245a5-8a5d-4428-9e90-437f8dff22e2)\n2025-04-23 09:29:26,635 INFO Finished job - substitute_macros (ce1245a5-8a5d-4428-9e90-437f8dff22e2)\n2025-04-23 09:29:26,636 INFO Starting job - compile_paper (5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb)\n2025-04-23 09:30:40,178 INFO Finished job - compile_paper (5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb)\n2025-04-23 09:30:40,179 INFO Finished executing jobs locally\n"},{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"{'db4e4162-f31c-4da8-b474-aff5f748b02a': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '25f3510a-42fc-4895-bb0c-1ea58a357c1d': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '03732863-096b-4c7f-b9fe-62edb0fd5d91': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd326049f-820a-4b9c-8645-70a4d5a8b581': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ce1245a5-8a5d-4428-9e90-437f8dff22e2': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":19},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"4452a648-d4c3-4f5f-8678-ffb54bef17dc","cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7470370855e0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x747042cb6ed0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd8c20>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x74704c596180>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd8c20>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7470340b41d0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x74704c5960c0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd9310>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x746ea8314fb0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x746ea6f35d30>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n"},"metadata":{}}],"execution_count":21},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":22}]} \ No newline at end of file diff --git a/aiida_qe.ipynb b/aiida_qe.ipynb deleted file mode 100644 index 7af5b2f..0000000 --- a/aiida_qe.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.8"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Aiida","metadata":{}},{"cell_type":"markdown","source":"## Define workflow with aiida","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json\nfrom python_workflow_definition.shared import get_dict, get_list\n\nfrom aiida import load_profile, orm\n\nload_profile()\n\nworkflow_json_filename = \"aiida_qe.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from aiida_workgraph import task, WorkGraph","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"from quantum_espresso_workflow import generate_structures\nfrom quantum_espresso_workflow import get_bulk_structure\nfrom quantum_espresso_workflow import calculate_qe as _calculate_qe\nfrom quantum_espresso_workflow import plot_energy_volume_curve","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"cell_type":"code","source":"calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"wg = WorkGraph(\"wg-qe\")","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"cell_type":"markdown","source":"### Prepare the inputs","metadata":{}},{"cell_type":"code","source":"element = orm.Str(\"Al\")\na = orm.Float(4.04)\ncubic = orm.Bool(True)\nrelax_workdir = orm.Str(\"mini\")\npseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nkpts = orm.List([3, 3, 3])\ncalc_type_relax = orm.Str(\"vc-relax\")\ncalc_type_scf = orm.Str(\"scf\")\nsmearing = orm.Float(0.02)\nstrain_lst = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"cell_type":"markdown","source":"### Actual tasks to construct the EOS workflow","metadata":{}},{"cell_type":"code","source":"get_bulk_structure_task = wg.add_task(\n get_bulk_structure,\n name=\"get_bulk_structure\",\n element=element,\n a=a,\n cubic=cubic,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"cell_type":"code","source":"relax_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=\"relax_get_dict\",\n structure=get_bulk_structure_task.outputs.result,\n calculation=calc_type_relax,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n)\n\nrelax_task = wg.add_task(\n calculate_qe,\n name=\"mini\",\n input_dict=relax_prepare_input_dict_task.outputs.result,\n working_directory=relax_workdir,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"cell_type":"code","source":"generate_structures_task = wg.add_task(\n generate_structures,\n name=\"generate_structures\",\n structure=relax_task.outputs.structure,\n strain_lst=strain_lst,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"cell_type":"code","source":"get_volumes_task = wg.add_task(get_list, name=\"get_volumes\")","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"cell_type":"code","source":"get_energies_task = wg.add_task(get_list, name=\"get_energies\")","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"cell_type":"code","source":"strain_dir_tasks, scf_qe_tasks, scf_get_dict_tasks = [], [], []\n\nfor i, strain in enumerate(strain_lst):\n\n structure_key = f\"s_{i}\"\n strain_dir = orm.Str(f\"strain_{i}\")\n generate_structures_task.add_output(\"workgraph.any\", structure_key)\n\n scf_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=f\"get_dict_{i}\",\n structure=generate_structures_task.outputs[structure_key],\n calculation=calc_type_scf,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n )\n\n scf_qe_task = wg.add_task(\n calculate_qe,\n name=f\"qe_{i}\",\n input_dict=scf_prepare_input_dict_task.outputs.result,\n working_directory=strain_dir,\n )\n\n # collect energy and volume\n get_energies_task.set({f\"{i}\": scf_qe_task.outputs.energy})\n get_volumes_task.set({f\"{i}\": scf_qe_task.outputs.volume})","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"plot_energy_volume_curve_task = wg.add_task(\n plot_energy_volume_curve,\n name=\"plot_energy_volume_curve\",\n volume_lst=get_volumes_task.outputs.result,\n energy_lst=get_energies_task.outputs.result,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-qe',…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"a44258c4d19f490bb7e35a61d721b97c"}},"metadata":{}}],"execution_count":14},{"cell_type":"code","source":"_ = write_workflow_json(wg=wg, file_name=workflow_json_filename)\n","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"quantum_espresso_workflow.get_bulk_structure\"\n },\n {\n \"id\": 1,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 2,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 3,\n \"function\": \"quantum_espresso_workflow.generate_structures\"\n },\n {\n \"id\": 4,\n \"function\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 5,\n \"function\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 6,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 7,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 8,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 9,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 10,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 11,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 12,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 13,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 14,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 15,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 16,\n \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 17,\n \"value\": \"Al\"\n },\n {\n \"id\": 18,\n \"value\": 4.04\n },\n {\n \"id\": 19,\n \"value\": true\n },\n {\n \"id\": 20,\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 21,\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 22,\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 23,\n \"value\": 0.02\n },\n {\n \"id\": 24,\n \"value\": \"mini\"\n },\n {\n \"id\": 25,\n \"value\": [\n 0.9,\n 0.95,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 26,\n \"value\": \"scf\"\n },\n {\n \"id\": 27,\n \"value\": \"strain_0\"\n },\n {\n \"id\": 28,\n \"value\": \"strain_1\"\n },\n {\n \"id\": 29,\n \"value\": \"strain_2\"\n },\n {\n \"id\": 30,\n \"value\": \"strain_3\"\n },\n {\n \"id\": 31,\n \"value\": \"strain_4\"\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"structure\",\n \"source\": 0,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"input_dict\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"structure\"\n },\n {\n \"target\": 6,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_0\"\n },\n {\n \"target\": 7,\n \"targetPort\": \"input_dict\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"0\",\n \"source\": 7,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"0\",\n \"source\": 7,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_1\"\n },\n {\n \"target\": 9,\n \"targetPort\": \"input_dict\",\n \"source\": 8,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"1\",\n \"source\": 9,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"1\",\n \"source\": 9,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 10,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_2\"\n },\n {\n \"target\": 11,\n \"targetPort\": \"input_dict\",\n \"source\": 10,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"2\",\n \"source\": 11,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"2\",\n \"source\": 11,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 12,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_3\"\n },\n {\n \"target\": 13,\n \"targetPort\": \"input_dict\",\n \"source\": 12,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"3\",\n \"source\": 13,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"3\",\n \"source\": 13,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_4\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"input_dict\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"4\",\n \"source\": 15,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"4\",\n \"source\": 15,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"volume_lst\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 16,\n \"targetPort\": \"energy_lst\",\n \"source\": 5,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"element\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"a\",\n \"source\": 18,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"cubic\",\n \"source\": 19,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"calculation\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"working_directory\",\n \"source\": 24,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"strain_lst\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"working_directory\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"working_directory\",\n \"source\": 28,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"working_directory\",\n \"source\": 29,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"working_directory\",\n \"source\": 30,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"working_directory\",\n \"source\": 31,\n \"sourcePort\": null\n }\n ]\n}"}],"execution_count":16},{"cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":17},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"cell_type":"code","source":"flow[0].function_kwargs[\"a\"] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:31:18,763 INFO Started executing jobs locally\n2025-04-23 09:31:19,023 INFO Starting job - get_bulk_structure (ceb203d4-4b50-4fbf-bd60-36680543382b)\n2025-04-23 09:31:19,030 INFO Finished job - get_bulk_structure (ceb203d4-4b50-4fbf-bd60-36680543382b)\n2025-04-23 09:31:19,031 INFO Starting job - get_dict (27f28719-6394-4a85-b93f-c8ece2feceaf)\n2025-04-23 09:31:19,034 INFO Finished job - get_dict (27f28719-6394-4a85-b93f-c8ece2feceaf)\n2025-04-23 09:31:19,035 INFO Starting job - calculate_qe (ae0b4b06-5734-41ea-a7cc-e8393ef01e55)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01795] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:32:12,183 INFO Finished job - calculate_qe (ae0b4b06-5734-41ea-a7cc-e8393ef01e55)\n2025-04-23 09:32:12,184 INFO Starting job - generate_structures (e9deb2a2-2e2a-4077-a221-a6afc9701377)\n2025-04-23 09:32:12,189 INFO Finished job - generate_structures (e9deb2a2-2e2a-4077-a221-a6afc9701377)\n2025-04-23 09:32:12,189 INFO Starting job - get_dict (9f4a0c82-798c-4178-9a46-c5430a2853c1)\n2025-04-23 09:32:12,190 INFO Finished job - get_dict (9f4a0c82-798c-4178-9a46-c5430a2853c1)\n2025-04-23 09:32:12,191 INFO Starting job - get_dict (8e10ca3a-91ba-4647-bca8-3c905020fb39)\n2025-04-23 09:32:12,192 INFO Finished job - get_dict (8e10ca3a-91ba-4647-bca8-3c905020fb39)\n2025-04-23 09:32:12,193 INFO Starting job - get_dict (765da827-3180-44d3-940e-e9d5a7e2ae45)\n2025-04-23 09:32:12,194 INFO Finished job - get_dict (765da827-3180-44d3-940e-e9d5a7e2ae45)\n2025-04-23 09:32:12,195 INFO Starting job - get_dict (5f8ce3d7-f65e-481d-8cb0-291d204df659)\n2025-04-23 09:32:12,196 INFO Finished job - get_dict (5f8ce3d7-f65e-481d-8cb0-291d204df659)\n2025-04-23 09:32:12,196 INFO Starting job - get_dict (12912688-d0c2-4053-80b2-a758b50ce86a)\n2025-04-23 09:32:12,208 INFO Finished job - get_dict (12912688-d0c2-4053-80b2-a758b50ce86a)\n2025-04-23 09:32:12,209 INFO Starting job - calculate_qe (282ce127-dc4e-4e2d-9769-c22bdcdf2e3f)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01814] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:32:23,091 INFO Finished job - calculate_qe (282ce127-dc4e-4e2d-9769-c22bdcdf2e3f)\n2025-04-23 09:32:23,092 INFO Starting job - calculate_qe (76b1d287-fd0f-4fed-a0b7-cc817dffe2d8)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01825] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:32:34,038 INFO Finished job - calculate_qe (76b1d287-fd0f-4fed-a0b7-cc817dffe2d8)\n2025-04-23 09:32:34,038 INFO Starting job - calculate_qe (2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01836] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:32:46,472 INFO Finished job - calculate_qe (2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc)\n2025-04-23 09:32:46,473 INFO Starting job - calculate_qe (4f947882-06db-4296-8456-b12cff2e66e3)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01847] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:33:00,409 INFO Finished job - calculate_qe (4f947882-06db-4296-8456-b12cff2e66e3)\n2025-04-23 09:33:00,410 INFO Starting job - calculate_qe (d7bd31df-d3a7-49a1-9ae8-7766d4c519ec)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01858] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:33:14,798 INFO Finished job - calculate_qe (d7bd31df-d3a7-49a1-9ae8-7766d4c519ec)\n2025-04-23 09:33:14,800 INFO Starting job - get_list (daa806da-16e9-4733-afe1-2ae60dc6292f)\n2025-04-23 09:33:14,804 INFO Finished job - get_list (daa806da-16e9-4733-afe1-2ae60dc6292f)\n2025-04-23 09:33:14,805 INFO Starting job - get_list (407d4cb0-b4f3-41f5-ba66-077754af69eb)\n2025-04-23 09:33:14,808 INFO Finished job - get_list (407d4cb0-b4f3-41f5-ba66-077754af69eb)\n2025-04-23 09:33:14,810 INFO Starting job - plot_energy_volume_curve (e363e583-bcc3-4cd8-b943-f6e4487b11f0)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:33:14,912 INFO Finished job - plot_energy_volume_curve (e363e583-bcc3-4cd8-b943-f6e4487b11f0)\n2025-04-23 09:33:14,913 INFO Finished executing jobs locally\n"},{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"{'ceb203d4-4b50-4fbf-bd60-36680543382b': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '27f28719-6394-4a85-b93f-c8ece2feceaf': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'vc-relax', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ae0b4b06-5734-41ea-a7cc-e8393ef01e55': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.93652622536, 'volume': 66.21567448236135}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e9deb2a2-2e2a-4077-a221-a6afc9701377': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019785962126, 0.0, 0.0], [0.0, 3.906019785962126, 0.0], [0.0, 0.0, 3.906019785962126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981063, 1.953009892981063], [1.953009892981063, 0.0, 1.953009892981063], [1.953009892981063, 1.953009892981063, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443180263, 0.0, 0.0], [0.0, 3.9770538443180263, 0.0], [0.0, 0.0, 3.9770538443180263]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221590132, 1.9885269221590132], [1.9885269221590132, 0.0, 1.9885269221590132], [1.9885269221590132, 1.9885269221590132, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282933, 0.0, 0.0], [0.0, 4.111970927282933, 0.0], [0.0, 0.0, 4.111970927282933]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414663, 2.0559854636414663], [2.0559854636414663, 0.0, 2.0559854636414663], [2.0559854636414663, 2.0559854636414663, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372157, 0.0, 0.0], [0.0, 4.176230852372157, 0.0], [0.0, 0.0, 4.176230852372157]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860786, 2.0881154261860786], [2.0881154261860786, 0.0, 2.0881154261860786], [2.0881154261860786, 2.0881154261860786, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '9f4a0c82-798c-4178-9a46-c5430a2853c1': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019785962126, 0.0, 0.0], [0.0, 3.906019785962126, 0.0], [0.0, 0.0, 3.906019785962126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981063, 1.953009892981063], [1.953009892981063, 0.0, 1.953009892981063], [1.953009892981063, 1.953009892981063, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '8e10ca3a-91ba-4647-bca8-3c905020fb39': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443180263, 0.0, 0.0], [0.0, 3.9770538443180263, 0.0], [0.0, 0.0, 3.9770538443180263]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221590132, 1.9885269221590132], [1.9885269221590132, 0.0, 1.9885269221590132], [1.9885269221590132, 1.9885269221590132, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '765da827-3180-44d3-940e-e9d5a7e2ae45': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5f8ce3d7-f65e-481d-8cb0-291d204df659': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282933, 0.0, 0.0], [0.0, 4.111970927282933, 0.0], [0.0, 0.0, 4.111970927282933]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414663, 2.0559854636414663], [2.0559854636414663, 0.0, 2.0559854636414663], [2.0559854636414663, 2.0559854636414663, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '12912688-d0c2-4053-80b2-a758b50ce86a': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372157, 0.0, 0.0], [0.0, 4.176230852372157, 0.0], [0.0, 0.0, 4.176230852372157]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860786, 2.0881154261860786], [2.0881154261860786, 0.0, 2.0881154261860786], [2.0881154261860786, 2.0881154261860786, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '282ce127-dc4e-4e2d-9769-c22bdcdf2e3f': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019768889166, 0.0, 0.0], [0.0, 3.906019768889166, 0.0], [0.0, 0.0, 3.906019768889166]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150626, 'volume': 59.594106252679225}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '76b1d287-fd0f-4fed-a0b7-cc817dffe2d8': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538269345797, 0.0, 0.0], [0.0, 3.9770538269345797, 0.0], [0.0, 0.0, 3.9770538269345797]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082753, 1.9885269135082753], [1.9885269135082753, 0.0, 1.9885269135082753], [1.9885269135082753, 1.9885269135082753, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594607, 'volume': 62.90488993338357}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263596, 0.0, 0.0], [0.0, 4.045637198263596, 0.0], [0.0, 0.0, 4.045637198263596]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583882, 2.0228185991583882], [2.0228185991583882, 0.0, 2.0228185991583882], [2.0228185991583882, 2.0228185991583882, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668372, 'volume': 66.21567361408789}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '4f947882-06db-4296-8456-b12cff2e66e3': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309766, 0.0, 0.0], [0.0, 4.111970909309766, 0.0], [0.0, 0.0, 4.111970909309766]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025842, 'volume': 69.52645729479204}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd7bd31df-d3a7-49a1-9ae8-7766d4c519ec': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411812, 0.0, 0.0], [0.0, 4.17623083411812, 0.0], [0.0, 0.0, 4.17623083411812]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.87379046934, 'volume': 72.83724097549673}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'daa806da-16e9-4733-afe1-2ae60dc6292f': {1: Response(output=[59.594106252679225, 62.90488993338357, 66.21567361408789, 69.52645729479204, 72.83724097549673], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '407d4cb0-b4f3-41f5-ba66-077754af69eb': {1: Response(output=[-1074.8457446150626, -1074.9161488594607, -1074.9365241668372, -1074.9192860025842, -1074.87379046934], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e363e583-bcc3-4cd8-b943-f6e4487b11f0': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":21},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":22},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64e90>\n\n\n\nvolume_lst_7877f4496713e91ee9569a3d39477944\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64320>\n\n\n\nvolume_lst_7877f4496713e91ee9569a3d39477944->create_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\n\n\n\n\n0_e81e45d48628cffd23c97591d4742381\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46db0>\n\n\n\n0_e81e45d48628cffd23c97591d4742381->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47f80>\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7->0_e81e45d48628cffd23c97591d4742381\n\n\n\n\n\n0_79d0e65e922efc9f26386930f67b4593\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47a70>\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7->0_79d0e65e922efc9f26386930f67b4593\n\n\n\n\n\nenergy_lst_c39c096e088c6198246309199a06e31a\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46c00>\n\n\n\n0_79d0e65e922efc9f26386930f67b4593->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nstructure_8ec2a7af77e9d22260dc56b435bba70b\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47cb0>\n\n\n\nstructure_8ec2a7af77e9d22260dc56b435bba70b->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46cf0>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_8ec2a7af77e9d22260dc56b435bba70b\n\n\n\n\n\nstructure_c401a7118deb546adf8cacc894a995d4\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47980>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_c401a7118deb546adf8cacc894a995d4\n\n\n\n\n\nstructure_503093210fb645799cb9c53a6111f31d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47650>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_503093210fb645799cb9c53a6111f31d\n\n\n\n\n\nstructure_feae982cf556b8d382334d6cbdf1cd8d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47320>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_feae982cf556b8d382334d6cbdf1cd8d\n\n\n\n\n\nstructure_d63e04359ed4866d6c7b37b920475e13\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46ff0>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_d63e04359ed4866d6c7b37b920475e13\n\n\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47c20>\n\n\n\nstructure_c401a7118deb546adf8cacc894a995d4->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def478f0>\n\n\n\nstructure_503093210fb645799cb9c53a6111f31d->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def475c0>\n\n\n\nstructure_feae982cf556b8d382334d6cbdf1cd8d->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47290>\n\n\n\nstructure_d63e04359ed4866d6c7b37b920475e13->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\ninput_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46660>\n\n\n\ninput_dict_2f4bdfa637c1310ad67c1dbef51e42fc->structure_a2e153ee6a338726bca4488fd55e61d3\n\n\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def467b0>\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\n1_6ad77da55455ab9aa590aedabc104f68\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def648f0>\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167->1_6ad77da55455ab9aa590aedabc104f68\n\n\n\n\n\n1_f7ad5955f13722bf930d81c2b9e742e9\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47a40>\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167->1_f7ad5955f13722bf930d81c2b9e742e9\n\n\n\n\n\n2_e195a45cae0bfce238475e97d9a58cd5\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64c20>\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142->2_e195a45cae0bfce238475e97d9a58cd5\n\n\n\n\n\n2_112c792629e86543b9cea4a872270624\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47350>\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142->2_112c792629e86543b9cea4a872270624\n\n\n\n\n\n3_a983b77487f6859f18062f31bb895319\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def647a0>\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3->3_a983b77487f6859f18062f31bb895319\n\n\n\n\n\n3_f629cc0dcbd5dc353789776418f3701f\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def473b0>\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3->3_f629cc0dcbd5dc353789776418f3701f\n\n\n\n\n\n4_c9c83b9132566cff0bc7068536ede7ca\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64da0>\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8->4_c9c83b9132566cff0bc7068536ede7ca\n\n\n\n\n\n4_4d455a4b322d423d9821fbd74191eb62\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47050>\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8->4_4d455a4b322d423d9821fbd74191eb62\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_a2e153ee6a338726bca4488fd55e61d3\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781\n\nstrain_lst=[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_8ec2a7af77e9d22260dc56b435bba70b\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_c401a7118deb546adf8cacc894a995d4\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_503093210fb645799cb9c53a6111f31d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_feae982cf556b8d382334d6cbdf1cd8d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_d63e04359ed4866d6c7b37b920475e13\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_e81e45d48628cffd23c97591d4742381\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_79d0e65e922efc9f26386930f67b4593\n\n\n\n\n\n1_6ad77da55455ab9aa590aedabc104f68->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n1_f7ad5955f13722bf930d81c2b9e742e9->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_6ad77da55455ab9aa590aedabc104f68\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_f7ad5955f13722bf930d81c2b9e742e9\n\n\n\n\n\n2_e195a45cae0bfce238475e97d9a58cd5->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n2_112c792629e86543b9cea4a872270624->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_e195a45cae0bfce238475e97d9a58cd5\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_112c792629e86543b9cea4a872270624\n\n\n\n\n\n3_a983b77487f6859f18062f31bb895319->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n3_f629cc0dcbd5dc353789776418f3701f->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_a983b77487f6859f18062f31bb895319\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_f629cc0dcbd5dc353789776418f3701f\n\n\n\n\n\n4_c9c83b9132566cff0bc7068536ede7ca->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n4_4d455a4b322d423d9821fbd74191eb62->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_c9c83b9132566cff0bc7068536ede7ca\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_4d455a4b322d423d9821fbd74191eb62\n\n\n\n\n\nenergy_lst_c39c096e088c6198246309199a06e31a->create_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\n\n\n\n"},"metadata":{}}],"execution_count":23},{"cell_type":"code","source":"delayed_object_lst[0].input['a'] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":24},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_20400c1655d51731f9f5ffb50c2b401f was saved and received the ID: 2\nThe job calculate_qe_22b5d0934d89d8f08761e744e4612c30 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01892] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job generate_structures_6bbb6b6ae566b035388bec7f6f658394 was saved and received the ID: 4\nThe job get_dict_7fbef1423a72155d480420469f6f0f78 was saved and received the ID: 5\nThe job calculate_qe_35d4282b6beff7c2fc7a850e02ff3f07 was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01908] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_bcd13fb93bbd4d7a7a99c460c0591b51 was saved and received the ID: 7\nThe job calculate_qe_3159d3281f1fccbf1a91388144a7957f was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01919] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_5b1eeb4af2f8eb4018b7326f4af63eca was saved and received the ID: 9\nThe job calculate_qe_4d1c131dceca1e8897f7cda47cb24f9e was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01930] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_566acb6c9830b82fd09efc4e8227e6e6 was saved and received the ID: 11\nThe job calculate_qe_e463d009aee35caa551669d8efc7c8cd was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01941] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_75499df774616aa1b379a3fa72da90fb was saved and received the ID: 13\nThe job calculate_qe_6ef5649cee1f8db43ecd79d266f477b5 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01953] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_list_5d2e404624b12c3bb1f93528d1b1dddb was saved and received the ID: 15\nThe job get_list_8628ae553e40ba9aab5dde25ea2d7ba2 was saved and received the ID: 16\nThe job plot_energy_volume_curve_d715578098aa2e6221fb76f20377b5cf was saved and received the ID: 17\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":25},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/book/_toc.yml b/book/_toc.yml index f6cf550..1a979a6 100644 --- a/book/_toc.yml +++ b/book/_toc.yml @@ -4,17 +4,17 @@ chapters: - file: intro.md - file: arithmetic.md sections: - - file: aiida_arithmetic.ipynb - - file: jobflow_arithmetic.ipynb - - file: pyiron_base_arithmetic.ipynb + - file: example_workflows/arithmetic/aiida_arithmetic.ipynb + - file: example_workflows/arithmetic/jobflow_arithmetic.ipynb + - file: example_workflows/arithmetic/pyiron_base_arithmetic.ipynb - file: evcurve.md sections: - - file: aiida_qe.ipynb - - file: jobflow_qe.ipynb - - file: pyiron_base_qe.ipynb + - file: example_workflows/quantum_espresso/aiida_qe.ipynb + - file: example_workflows/quantum_espresso/jobflow_qe.ipynb + - file: example_workflows/quantum_espresso/pyiron_base_qe.ipynb - file: nfdi.md sections: - - file: aiida_nfdi.ipynb - - file: jobflow_nfdi.ipynb - - file: pyiron_base_nfdi.ipynb + - file: example_workflows/nfdi/aiida_nfdi.ipynb + - file: example_workflows/nfdi/jobflow_nfdi.ipynb + - file: example_workflows/nfdi/pyiron_base_nfdi.ipynb - file: conclusion.md \ No newline at end of file diff --git a/book/arithmetic.md b/book/arithmetic.md index ba33a3c..3e4e7a6 100644 --- a/book/arithmetic.md +++ b/book/arithmetic.md @@ -12,8 +12,8 @@ These two Python functions are combined in the following example workflow: tmp_dict = get_prod_and_div(x=1, y=2) result = get_sum(x=tmp_dict["prod"], y=tmp_dict["div"]) ``` -For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](arithmetic_workflow.py) -Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](workflow_arithmetic.json) +For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](example_workflows/arithmetic/arithmetic_workflow.py) +Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](example_workflows/arithmetic/workflow_arithmetic.json) JSON file: ``` { diff --git a/example_workflows/arithmetic/aiida_arithmetic.ipynb b/example_workflows/arithmetic/aiida_arithmetic.ipynb new file mode 100644 index 0000000..06840ba --- /dev/null +++ b/example_workflows/arithmetic/aiida_arithmetic.ipynb @@ -0,0 +1,234 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# Aiida", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Define workflow with aiida", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()\n\nworkflow_json_filename = \"aiida_simple.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": [ + "from example_workflows.arithmetic.arithmetic_workflow import (\n", + " get_sum as _get_sum,\n", + " get_prod_and_div as _get_prod_and_div,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "cell_type": "code", + "source": "wg = WorkGraph(\"arithmetic\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": "get_prod_and_div_task = wg.add_task(\n task(outputs=['prod', 'div'])(_get_prod_and_div),\n name=\"get_prod_and_div\",\n x=orm.Float(1),\n y=orm.Float(2),\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "get_sum_task = wg.add_task(\n _get_sum,\n name=\"get_sum\",\n x=get_prod_and_div_task.outputs.prod,\n y=get_prod_and_div_task.outputs.div,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "cell_type": "code", + "source": "write_workflow_json(wg=wg, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 6, + "output_type": "execute_result", + "data": { + "text/plain": "{'nodes': [{'id': 0, 'function': 'arithmetic_workflow.get_prod_and_div'},\n {'id': 1, 'function': 'arithmetic_workflow.get_sum'},\n {'id': 2, 'value': 1.0},\n {'id': 3, 'value': 2.0}],\n 'edges': [{'target': 1, 'targetPort': 'x', 'source': 0, 'sourcePort': 'prod'},\n {'target': 1, 'targetPort': 'y', 'source': 0, 'sourcePort': 'div'},\n {'target': 0, 'targetPort': 'x', 'source': 2, 'sourcePort': None},\n {'target': 0, 'targetPort': 'y', 'source': 3, 'sourcePort': None}]}" + }, + "metadata": {} + } + ], + "execution_count": 6 + }, + { + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"arithmetic_workflow.get_prod_and_div\"\n },\n {\n \"id\": 1,\n \"function\": \"arithmetic_workflow.get_sum\"\n },\n {\n \"id\": 2,\n \"value\": 1.0\n },\n {\n \"id\": 3,\n \"value\": 2.0\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"x\",\n \"source\": 0,\n \"sourcePort\": \"prod\"\n },\n {\n \"target\": 1,\n \"targetPort\": \"y\",\n \"source\": 0,\n \"sourcePort\": \"div\"\n },\n {\n \"target\": 0,\n \"targetPort\": \"x\",\n \"source\": 2,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"y\",\n \"source\": 3,\n \"sourcePort\": null\n }\n ]\n}" + } + ], + "execution_count": 7 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:27:52,129 INFO Started executing jobs locally\n2025-04-23 09:27:52,561 INFO Starting job - get_prod_and_div (6eae194f-04a4-4c7c-b0d9-baf624bac375)\n2025-04-23 09:27:52,564 INFO Finished job - get_prod_and_div (6eae194f-04a4-4c7c-b0d9-baf624bac375)\n2025-04-23 09:27:52,564 INFO Starting job - get_sum (21fda98d-7701-45c7-a30a-816e9a91ab75)\n2025-04-23 09:27:52,566 INFO Finished job - get_sum (21fda98d-7701-45c7-a30a-816e9a91ab75)\n2025-04-23 09:27:52,566 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 11, + "output_type": "execute_result", + "data": { + "text/plain": "{'6eae194f-04a4-4c7c-b0d9-baf624bac375': {1: Response(output={'prod': 2.0, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '21fda98d-7701-45c7-a30a-816e9a91ab75': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 11 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_92b349b68e1d28facd2c0cc67fea0894\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7407d4c7d100>\n\n\n\nx_c8e04d7c4ce41e51517caabdd70267c4\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x7407ca519a90>\n\n\n\nx_c8e04d7c4ce41e51517caabdd70267c4->create_function_job_92b349b68e1d28facd2c0cc67fea0894\n\n\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1\n\nx=1.0\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->x_c8e04d7c4ce41e51517caabdd70267c4\n\n\n\n\n\ny_6c83c1caef87634071eb9102b68e73cf\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x7407bf835610>\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->y_6c83c1caef87634071eb9102b68e73cf\n\n\n\n\n\ny_6c83c1caef87634071eb9102b68e73cf->create_function_job_92b349b68e1d28facd2c0cc67fea0894\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20\n\ny=2.0\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->x_c8e04d7c4ce41e51517caabdd70267c4\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->y_6c83c1caef87634071eb9102b68e73cf\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_prod_and_div_7c19c6233dddb02781fc331f609558a1 was saved and received the ID: 1\nThe job get_sum_92b8e0a2d45fff6b04940562a8d7d8f7 was saved and received the ID: 2\n" + }, + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "2.5" + }, + "metadata": {} + } + ], + "execution_count": 14 + } + ] +} diff --git a/arithmetic_workflow.py b/example_workflows/arithmetic/arithmetic_workflow.py similarity index 100% rename from arithmetic_workflow.py rename to example_workflows/arithmetic/arithmetic_workflow.py diff --git a/example_workflows/arithmetic/jobflow_arithmetic.ipynb b/example_workflows/arithmetic/jobflow_arithmetic.ipynb new file mode 100644 index 0000000..4cc6987 --- /dev/null +++ b/example_workflows/arithmetic/jobflow_arithmetic.ipynb @@ -0,0 +1,298 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "982a4fbe-7cf9-45dd-84ae-9854149db0b9", + "cell_type": "markdown", + "source": "# jobflow", + "metadata": {} + }, + { + "id": "e6180712-d081-45c7-ba41-fc5191f10427", + "cell_type": "markdown", + "source": "## Define workflow with jobflow", + "metadata": {} + }, + { + "id": "000bbd4a-f53c-4eea-9d85-76f0aa2ca10b", + "cell_type": "code", + "source": "from jobflow import job, Flow", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 1 + }, + { + "id": "06c2bd9e-b2ac-4b88-9158-fa37331c3418", + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "fb847d49-7bf9-4839-9b99-c116d1b0e9ee", + "cell_type": "code", + "source": [ + "from example_workflows.arithmetic.arithmetic_workflow import (\n", + " get_sum as _get_sum,\n", + " get_prod_and_div as _get_prod_and_div,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "8f95244e", + "cell_type": "code", + "source": "workflow_json_filename = \"jobflow_simple.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "07598344-0f75-433b-8902-bea21a42088c", + "cell_type": "code", + "source": "get_sum = job(_get_sum)\nget_prod_and_div = job(_get_prod_and_div, data=[\"prod\", \"div\"])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "ecef1ed5-a8d3-48c3-9e01-4a40e55c1153", + "cell_type": "code", + "source": "obj = get_prod_and_div(x=1, y=2)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "2b88a30a-e26b-4802-89b7-79ca08cc0af9", + "cell_type": "code", + "source": "w = get_sum(x=obj.output.prod, y=obj.output.div)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "a5e5ca63-2906-47c9-bac6-adebf8643cba", + "cell_type": "code", + "source": "flow = Flow([obj, w])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "e464da97-16a1-4772-9a07-0a47f152781d", + "cell_type": "code", + "source": "write_workflow_json(flow=flow, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "bca646b2-0a9a-4271-966a-e5903a8c9031", + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\"nodes\": [{\"id\": 0, \"function\": \"arithmetic_workflow.get_prod_and_div\"}, {\"id\": 1, \"function\": \"arithmetic_workflow.get_sum\"}, {\"id\": 2, \"value\": 1}, {\"id\": 3, \"value\": 2}], \"edges\": [{\"target\": 0, \"targetPort\": \"x\", \"source\": 2, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"y\", \"source\": 3, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"x\", \"source\": 0, \"sourcePort\": \"prod\"}, {\"target\": 1, \"targetPort\": \"y\", \"source\": 0, \"sourcePort\": \"div\"}]}" + } + ], + "execution_count": 10 + }, + { + "id": "87a27540-c390-4d34-ae75-4739bfc4c1b7", + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "id": "66a1b3a6-3d3b-4caa-b58f-d8bc089b1074", + "cell_type": "code", + "source": "from aiida import load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 11, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 11 + }, + { + "id": "4679693b-039b-45cf-8c67-5b2b3d705a83", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "id": "68c41a61-d185-47e8-ba31-eeff71d8b2c6", + "cell_type": "code", + "source": "wg = load_workflow_json(file_name=workflow_json_filename)\nwg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 13, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "4be70fedd20f4c3597415dc903adc743" + } + }, + "metadata": {} + } + ], + "execution_count": 13 + }, + { + "id": "05228ece-643c-420c-8df8-4ce3df379515", + "cell_type": "code", + "source": "wg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:35:55 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 14 + }, + { + "id": "2c942094-61b4-4e94-859a-64f87b5bec64", + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "id": "ea102341-84f7-4156-a7d1-c3ab1ea613a5", + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "id": "8f2a621d-b533-4ddd-8bcd-c22db2f922ec", + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_a30133cc7a07a2e64b505497250df84d\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x746386902750>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x746386a3b5f0>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x7463869023f0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "id": "cf80267d-c2b0-4236-bf1d-a57596985fc1", + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_prod_and_div_955f44280fa0072653e4d910a57d7b92 was saved and received the ID: 1\nThe job get_sum_55b699570ac3c74e1e8078a45b657240 was saved and received the ID: 2\n" + }, + { + "execution_count": 17, + "output_type": "execute_result", + "data": { + "text/plain": "2.5" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "id": "9d819ed0-689c-46a7-9eff-0afb5ed66efc", + "cell_type": "code", + "source": "", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": null + } + ] +} diff --git a/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb b/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb new file mode 100644 index 0000000..d5b1b44 --- /dev/null +++ b/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb @@ -0,0 +1,289 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "c39b76fb-259f-4e16-a44d-02a295c82386", + "cell_type": "markdown", + "source": "# pyiron", + "metadata": {} + }, + { + "id": "3638419b-a0cb-49e2-b157-7fbb1acde90f", + "cell_type": "markdown", + "source": "## Define workflow with pyiron_base", + "metadata": {} + }, + { + "id": "b4a78447-e87c-4fb4-8d17-d9a280eb7254", + "cell_type": "code", + "source": "from pyiron_base import job", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "id": "06c2bd9e-b2ac-4b88-9158-fa37331c3418", + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "fb847d49-7bf9-4839-9b99-c116d1b0e9ee", + "cell_type": "code", + "source": [ + "from example_workflows.arithmetic.arithmetic_workflow import (\n", + " get_sum as _get_sum,\n", + " get_prod_and_div as _get_prod_and_div,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "8f95244e", + "cell_type": "code", + "source": "workflow_json_filename = \"pyiron_arithmetic.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "07598344-0f75-433b-8902-bea21a42088c", + "cell_type": "code", + "source": "get_sum = job(_get_sum)\nget_prod_and_div = job(_get_prod_and_div, output_key_lst=[\"prod\", \"div\"])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "2b88a30a-e26b-4802-89b7-79ca08cc0af9", + "cell_type": "code", + "source": "obj = get_prod_and_div(x=1, y=2)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "a5e5ca63-2906-47c9-bac6-adebf8643cba", + "cell_type": "code", + "source": "w = get_sum(x=obj.output.prod, y=obj.output.div)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "e464da97-16a1-4772-9a07-0a47f152781d", + "cell_type": "code", + "source": "write_workflow_json(delayed_object=w, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "bca646b2-0a9a-4271-966a-e5903a8c9031", + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\"nodes\": [{\"id\": 0, \"function\": \"arithmetic_workflow.get_sum\"}, {\"id\": 1, \"function\": \"arithmetic_workflow.get_prod_and_div\"}, {\"id\": 2, \"value\": 1}, {\"id\": 3, \"value\": 2}], \"edges\": [{\"target\": 0, \"targetPort\": \"x\", \"source\": 1, \"sourcePort\": \"prod\"}, {\"target\": 1, \"targetPort\": \"x\", \"source\": 2, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"y\", \"source\": 3, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"y\", \"source\": 1, \"sourcePort\": \"div\"}]}" + } + ], + "execution_count": 9 + }, + { + "id": "a4c0faaf-e30d-4ded-8e9f-57f97f51b14c", + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "id": "2ecc229f-daa1-49b9-9279-a6b5ae1aa4f2", + "cell_type": "code", + "source": "from aiida import load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 10, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 10 + }, + { + "id": "68a56b32-9f99-43d7-aaee-0c1cd9522681", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "8f2a621d-b533-4ddd-8bcd-c22db2f922ec", + "cell_type": "code", + "source": "wg = load_workflow_json(file_name=workflow_json_filename)\nwg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 12, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "cb6aafce370b43bb9904c64f03c93cc0" + } + }, + "metadata": {} + } + ], + "execution_count": 12 + }, + { + "id": "cf80267d-c2b0-4236-bf1d-a57596985fc1", + "cell_type": "code", + "source": "\nwg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:45:47 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div2\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|update_task_state]: Task: get_prod_and_div2, type: PyFunction, finished.\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum1\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|update_task_state]: Task: get_sum1, type: PyFunction, finished.\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 13 + }, + { + "id": "0c3503e1-0a32-40e1-845d-3fd9ec3c4c19", + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "id": "4abb0481-8e38-479d-ae61-6c46d091653e", + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 14 + }, + { + "id": "8253dd7c283bf3f7", + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "id": "4b45e83b-945f-48c5-8e20-9df0ce0a14a1", + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 16 + }, + { + "id": "8665c39c-220c-4982-b738-c31f6460530f", + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:45:49,174 INFO Started executing jobs locally\n2025-04-23 09:45:49,540 INFO Starting job - get_prod_and_div (77d76447-21f8-4ad8-b2b5-bef7263ef5b9)\n2025-04-23 09:45:49,543 INFO Finished job - get_prod_and_div (77d76447-21f8-4ad8-b2b5-bef7263ef5b9)\n2025-04-23 09:45:49,544 INFO Starting job - get_sum (e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0)\n2025-04-23 09:45:49,546 INFO Finished job - get_sum (e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0)\n2025-04-23 09:45:49,546 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 17, + "output_type": "execute_result", + "data": { + "text/plain": "{'77d76447-21f8-4ad8-b2b5-bef7263ef5b9': {1: Response(output={'prod': 2, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "id": "cf76f305-24de-45a7-be8e-cfe45cd6458e", + "cell_type": "code", + "source": "", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": null + } + ] +} diff --git a/universal_workflow_arithmetic.ipynb b/example_workflows/arithmetic/universal_workflow_arithmetic.ipynb similarity index 100% rename from universal_workflow_arithmetic.ipynb rename to example_workflows/arithmetic/universal_workflow_arithmetic.ipynb diff --git a/workflow_arithmetic.json b/example_workflows/arithmetic/workflow_arithmetic.json similarity index 100% rename from workflow_arithmetic.json rename to example_workflows/arithmetic/workflow_arithmetic.json diff --git a/example_workflows/nfdi/aiida_nfdi.ipynb b/example_workflows/nfdi/aiida_nfdi.ipynb new file mode 100644 index 0000000..cc90370 --- /dev/null +++ b/example_workflows/nfdi/aiida_nfdi.ipynb @@ -0,0 +1,364 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "106ded66-d202-46ac-82b0-2755ca309bdd", + "cell_type": "markdown", + "source": "# Aiida\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements", + "metadata": {} + }, + { + "id": "11e09b78-cb72-465f-9c8b-5b77f0aa729c", + "cell_type": "markdown", + "source": "## Define workflow with aiida", + "metadata": {} + }, + { + "id": "89c02460-b543-442c-a27e-f1757dc2262e", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 1, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 1 + }, + { + "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "cell_type": "code", + "source": [ + "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + " generate_mesh,\n", + " convert_to_xdmf as _convert_to_xdmf,\n", + " poisson as _poisson,\n", + " plot_over_line,\n", + " substitute_macros,\n", + " compile_paper,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", + "cell_type": "code", + "source": "convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\npoisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", + "cell_type": "code", + "source": "domain_size = orm.Float(2.0)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "1e7e14ba-c4a7-485f-9bd8-44625830cca0", + "cell_type": "code", + "source": "wg = WorkGraph(\"wg-nfdi\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", + "cell_type": "code", + "source": "gmsh_output_file = wg.add_task(\n generate_mesh,\n name=\"generate_mesh\",\n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "1d0d9804-f250-48b3-a5d0-a546d520f79b", + "cell_type": "code", + "source": "meshio_output_dict = wg.add_task(\n convert_to_xdmf,\n name=\"convert_to_xdmf\",\n gmsh_output_file=gmsh_output_file.outputs.result,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590", + "cell_type": "code", + "source": "poisson_dict = wg.add_task(\n poisson,\n name=\"poisson\",\n meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n meshio_output_h5=meshio_output_dict.outputs.h5_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "3c4a29b0-eb1e-490a-8be0-e03cfff15e0a", + "cell_type": "code", + "source": "pvbatch_output_file = wg.add_task(\n plot_over_line,\n name=\"plot_over_line\",\n poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "a0a4c233-322d-4723-9627-62ca2487bfa9", + "cell_type": "code", + "source": "macros_tex_file = wg.add_task(\n substitute_macros,\n name=\"substitute_macros\",\n pvbatch_output_file=pvbatch_output_file.outputs.result, \n ndofs=poisson_dict.outputs.numdofs, \n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "id": "c281408f-e63d-4380-a7e6-c595d49fbb8f", + "cell_type": "code", + "source": "paper_output = wg.add_task(\n compile_paper,\n name=\"compile_paper\",\n macros_tex=macros_tex_file.outputs.result, \n plot_file=pvbatch_output_file.outputs.result,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "a384d70a-8ef5-4fdd-880c-56ac7eaf87b9", + "cell_type": "code", + "source": "wg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 12, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-nfdi…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "cc82d573b0404a4697e86fea0f52b39d" + } + }, + "metadata": {} + } + ], + "execution_count": 12 + }, + { + "id": "fb23ad9c-76fd-4c0b-b546-e305d6c49796", + "cell_type": "code", + "source": "workflow_json_filename = \"aiida_nfdi.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "id": "4139547a-9717-4708-b1a5-8202a0382d77", + "cell_type": "code", + "source": "write_workflow_json(wg=wg, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "{'nodes': [{'id': 0, 'function': 'nfdi_ing_workflow.generate_mesh'},\n {'id': 1, 'function': 'nfdi_ing_workflow.convert_to_xdmf'},\n {'id': 2, 'function': 'nfdi_ing_workflow.poisson'},\n {'id': 3, 'function': 'nfdi_ing_workflow.plot_over_line'},\n {'id': 4, 'function': 'nfdi_ing_workflow.substitute_macros'},\n {'id': 5, 'function': 'nfdi_ing_workflow.compile_paper'},\n {'id': 6, 'value': 2.0}],\n 'edges': [{'target': 1,\n 'targetPort': 'gmsh_output_file',\n 'source': 0,\n 'sourcePort': None},\n {'target': 2,\n 'targetPort': 'meshio_output_xdmf',\n 'source': 1,\n 'sourcePort': 'xdmf_file'},\n {'target': 2,\n 'targetPort': 'meshio_output_h5',\n 'source': 1,\n 'sourcePort': 'h5_file'},\n {'target': 3,\n 'targetPort': 'poisson_output_pvd_file',\n 'source': 2,\n 'sourcePort': 'pvd_file'},\n {'target': 3,\n 'targetPort': 'poisson_output_vtu_file',\n 'source': 2,\n 'sourcePort': 'vtu_file'},\n {'target': 4,\n 'targetPort': 'pvbatch_output_file',\n 'source': 3,\n 'sourcePort': None},\n {'target': 4, 'targetPort': 'ndofs', 'source': 2, 'sourcePort': 'numdofs'},\n {'target': 5, 'targetPort': 'macros_tex', 'source': 4, 'sourcePort': None},\n {'target': 5, 'targetPort': 'plot_file', 'source': 3, 'sourcePort': None},\n {'target': 0, 'targetPort': 'domain_size', 'source': 6, 'sourcePort': None},\n {'target': 4, 'targetPort': 'domain_size', 'source': 6, 'sourcePort': None}]}" + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "id": "490df6a3-e402-4620-acf2-dbcfa0c5d537", + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"nfdi_ing_workflow.generate_mesh\"\n },\n {\n \"id\": 1,\n \"function\": \"nfdi_ing_workflow.convert_to_xdmf\"\n },\n {\n \"id\": 2,\n \"function\": \"nfdi_ing_workflow.poisson\"\n },\n {\n \"id\": 3,\n \"function\": \"nfdi_ing_workflow.plot_over_line\"\n },\n {\n \"id\": 4,\n \"function\": \"nfdi_ing_workflow.substitute_macros\"\n },\n {\n \"id\": 5,\n \"function\": \"nfdi_ing_workflow.compile_paper\"\n },\n {\n \"id\": 6,\n \"value\": 2.0\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"gmsh_output_file\",\n \"source\": 0,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"meshio_output_xdmf\",\n \"source\": 1,\n \"sourcePort\": \"xdmf_file\"\n },\n {\n \"target\": 2,\n \"targetPort\": \"meshio_output_h5\",\n \"source\": 1,\n \"sourcePort\": \"h5_file\"\n },\n {\n \"target\": 3,\n \"targetPort\": \"poisson_output_pvd_file\",\n \"source\": 2,\n \"sourcePort\": \"pvd_file\"\n },\n {\n \"target\": 3,\n \"targetPort\": \"poisson_output_vtu_file\",\n \"source\": 2,\n \"sourcePort\": \"vtu_file\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"pvbatch_output_file\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"ndofs\",\n \"source\": 2,\n \"sourcePort\": \"numdofs\"\n },\n {\n \"target\": 5,\n \"targetPort\": \"macros_tex\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"plot_file\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"domain_size\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"domain_size\",\n \"source\": 6,\n \"sourcePort\": null\n }\n ]\n}" + } + ], + "execution_count": 15 + }, + { + "id": "11a829e2-face-469f-b343-2c95763b1f13", + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "id": "4f3acabe-55df-479a-af4d-a23a80c4660d", + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 16 + }, + { + "id": "b6ba9444-a2c8-451b-b74c-19b0f69ba369", + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 17 + }, + { + "id": "c3528d55-6bf7-47ed-a110-65c47446ba92", + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "id": "5ef48778-4209-425f-8c6b-85a4cd2f92ec", + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:29:09,718 INFO Started executing jobs locally\n2025-04-23 09:29:10,027 INFO Starting job - generate_mesh (db4e4162-f31c-4da8-b474-aff5f748b02a)\n2025-04-23 09:29:11,997 INFO Finished job - generate_mesh (db4e4162-f31c-4da8-b474-aff5f748b02a)\n2025-04-23 09:29:11,998 INFO Starting job - convert_to_xdmf (25f3510a-42fc-4895-bb0c-1ea58a357c1d)\n2025-04-23 09:29:13,640 INFO Finished job - convert_to_xdmf (25f3510a-42fc-4895-bb0c-1ea58a357c1d)\n2025-04-23 09:29:13,642 INFO Starting job - poisson (03732863-096b-4c7f-b9fe-62edb0fd5d91)\n2025-04-23 09:29:23,400 INFO Finished job - poisson (03732863-096b-4c7f-b9fe-62edb0fd5d91)\n2025-04-23 09:29:23,401 INFO Starting job - plot_over_line (d326049f-820a-4b9c-8645-70a4d5a8b581)\n2025-04-23 09:29:25,817 INFO Finished job - plot_over_line (d326049f-820a-4b9c-8645-70a4d5a8b581)\n2025-04-23 09:29:25,818 INFO Starting job - substitute_macros (ce1245a5-8a5d-4428-9e90-437f8dff22e2)\n2025-04-23 09:29:26,635 INFO Finished job - substitute_macros (ce1245a5-8a5d-4428-9e90-437f8dff22e2)\n2025-04-23 09:29:26,636 INFO Starting job - compile_paper (5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb)\n2025-04-23 09:30:40,178 INFO Finished job - compile_paper (5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb)\n2025-04-23 09:30:40,179 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 19, + "output_type": "execute_result", + "data": { + "text/plain": "{'db4e4162-f31c-4da8-b474-aff5f748b02a': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '25f3510a-42fc-4895-bb0c-1ea58a357c1d': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '03732863-096b-4c7f-b9fe-62edb0fd5d91': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd326049f-820a-4b9c-8645-70a4d5a8b581': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ce1245a5-8a5d-4428-9e90-437f8dff22e2': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5b619ad3-49d6-4e76-ad3f-0ac31e7d63cb': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 19 + }, + { + "id": "397b16a2-e1ec-4eec-8562-1c84f585c347", + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "id": "be4d5d93-e9f6-4072-a6be-0ee5dc93590f", + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 20 + }, + { + "id": "4452a648-d4c3-4f5f-8678-ffb54bef17dc", + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7470370855e0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x747042cb6ed0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd8c20>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x74704c596180>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd8c20>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7470340b41d0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x74704c5960c0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x747041dd9310>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x746ea8314fb0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x746ea6f35d30>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 21 + }, + { + "id": "1c2760b6-96b4-4f44-ac49-a229d4a0cf67", + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n" + }, + { + "execution_count": 22, + "output_type": "execute_result", + "data": { + "text/plain": "'/home/jovyan/postprocessing/paper.pdf'" + }, + "metadata": {} + } + ], + "execution_count": 22 + } + ] +} diff --git a/example_workflows/nfdi/jobflow_nfdi.ipynb b/example_workflows/nfdi/jobflow_nfdi.ipynb new file mode 100644 index 0000000..398f273 --- /dev/null +++ b/example_workflows/nfdi/jobflow_nfdi.ipynb @@ -0,0 +1,327 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "048b53d1-db08-44ff-84cc-a4ff50032944", + "cell_type": "markdown", + "source": "# jobflow", + "metadata": {} + }, + { + "id": "106ded66-d202-46ac-82b0-2755ca309bdd", + "cell_type": "markdown", + "source": "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements", + "metadata": {} + }, + { + "id": "856b2ba2-93d5-4516-93e1-a1eac49c48f2", + "cell_type": "markdown", + "source": "## Define workflow with jobflow", + "metadata": {} + }, + { + "id": "89c02460-b543-442c-a27e-f1757dc2262e", + "cell_type": "code", + "source": "from jobflow import job, Flow\n\nfrom python_workflow_definition.jobflow import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 1 + }, + { + "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "cell_type": "code", + "source": [ + "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + " generate_mesh as _generate_mesh, \n", + " convert_to_xdmf as _convert_to_xdmf,\n", + " poisson as _poisson,\n", + " plot_over_line as _plot_over_line,\n", + " substitute_macros as _substitute_macros,\n", + " compile_paper as _compile_paper,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", + "cell_type": "code", + "source": "generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", + "cell_type": "code", + "source": "domain_size = 2.0", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", + "cell_type": "code", + "source": "gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "1d0d9804-f250-48b3-a5d0-a546d520f79b", + "cell_type": "code", + "source": "meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file.output,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590", + "cell_type": "code", + "source": "poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "3c4a29b0-eb1e-490a-8be0-e03cfff15e0a", + "cell_type": "code", + "source": "pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "a0a4c233-322d-4723-9627-62ca2487bfa9", + "cell_type": "code", + "source": "macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file.output, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "c281408f-e63d-4380-a7e6-c595d49fbb8f", + "cell_type": "code", + "source": "paper_output = compile_paper(\n macros_tex=macros_tex_file.output, \n plot_file=pvbatch_output_file.output,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "id": "a384d70a-8ef5-4fdd-880c-56ac7eaf87b9", + "cell_type": "code", + "source": "flow = Flow([gmsh_output_file, meshio_output_dict, poisson_dict, pvbatch_output_file, macros_tex_file, paper_output])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "fb23ad9c-76fd-4c0b-b546-e305d6c49796", + "cell_type": "code", + "source": "workflow_json_filename = \"jobflow_nfdi.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "id": "4139547a-9717-4708-b1a5-8202a0382d77", + "cell_type": "code", + "source": "write_workflow_json(flow=flow, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "id": "11a829e2-face-469f-b343-2c95763b1f13", + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "id": "4f3acabe-55df-479a-af4d-a23a80c4660d", + "cell_type": "code", + "source": "from aiida import load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "id": "b6ba9444-a2c8-451b-b74c-19b0f69ba369", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "id": "c3528d55-6bf7-47ed-a110-65c47446ba92", + "cell_type": "code", + "source": "wg = load_workflow_json(file_name=workflow_json_filename)\nwg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 16, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "b702a754434d41848a5b074dc7a35118" + } + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "id": "5ef48778-4209-425f-8c6b-85a4cd2f92ec", + "cell_type": "code", + "source": "wg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:36:34 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/23/2025 09:36:36 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/23/2025 09:36:36 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/23/2025 09:36:38 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/23/2025 09:36:38 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/23/2025 09:36:41 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/23/2025 09:36:41 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/23/2025 09:36:44 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/23/2025 09:36:44 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/23/2025 09:36:45 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/23/2025 09:36:45 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 17 + }, + { + "id": "397b16a2-e1ec-4eec-8562-1c84f585c347", + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "id": "be4d5d93-e9f6-4072-a6be-0ee5dc93590f", + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "id": "4452a648-d4c3-4f5f-8678-ffb54bef17dc", + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151abb90>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab920>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab5f0>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab290>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab5f0>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aaf60>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab260>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab680>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aad20>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aaf30>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 19 + }, + { + "id": "1c2760b6-96b4-4f44-ac49-a229d4a0cf67", + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n" + }, + { + "execution_count": 20, + "output_type": "execute_result", + "data": { + "text/plain": "'/home/jovyan/postprocessing/paper.pdf'" + }, + "metadata": {} + } + ], + "execution_count": 20 + } + ] +} diff --git a/nfdi_ing_workflow.py b/example_workflows/nfdi/nfdi_ing_workflow.py similarity index 100% rename from nfdi_ing_workflow.py rename to example_workflows/nfdi/nfdi_ing_workflow.py diff --git a/example_workflows/nfdi/pyiron_base_nfdi.ipynb b/example_workflows/nfdi/pyiron_base_nfdi.ipynb new file mode 100644 index 0000000..dc10021 --- /dev/null +++ b/example_workflows/nfdi/pyiron_base_nfdi.ipynb @@ -0,0 +1,312 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "106ded66-d202-46ac-82b0-2755ca309bdd", + "cell_type": "markdown", + "source": "# pyiron\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements", + "metadata": {} + }, + { + "id": "91dd48ea-aa7e-4937-a68e-59fc5017eb1e", + "cell_type": "markdown", + "source": "## Define workflow with pyiron_base", + "metadata": {} + }, + { + "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "cell_type": "code", + "source": [ + "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + " generate_mesh as _generate_mesh, \n", + " convert_to_xdmf as _convert_to_xdmf,\n", + " poisson as _poisson,\n", + " plot_over_line as _plot_over_line,\n", + " substitute_macros as _substitute_macros,\n", + " compile_paper as _compile_paper,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "id": "89c02460-b543-442c-a27e-f1757dc2262e", + "cell_type": "code", + "source": "from pyiron_base import job\n\nfrom python_workflow_definition.pyiron_base import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", + "cell_type": "code", + "source": "generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, output_key_lst=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, output_key_lst=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", + "cell_type": "code", + "source": "domain_size = 2.0", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", + "cell_type": "code", + "source": "gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "1d0d9804-f250-48b3-a5d0-a546d520f79b", + "cell_type": "code", + "source": "meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590", + "cell_type": "code", + "source": "poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "3c4a29b0-eb1e-490a-8be0-e03cfff15e0a", + "cell_type": "code", + "source": "pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "a0a4c233-322d-4723-9627-62ca2487bfa9", + "cell_type": "code", + "source": "macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)", + "metadata": { + "tags": [], + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "c281408f-e63d-4380-a7e6-c595d49fbb8f", + "cell_type": "code", + "source": "paper_output = compile_paper(\n macros_tex=macros_tex_file, \n plot_file=pvbatch_output_file,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "id": "63f29646-3846-4a97-a033-20e9df0ac214", + "cell_type": "code", + "source": "workflow_json_filename = \"pyiron_base_nfdi.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "f62111ba-9271-4987-9c7e-3b1c9f9eae7a", + "cell_type": "code", + "source": "write_workflow_json(delayed_object=paper_output, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "id": "d789971e-8f41-45fa-832a-11fd72dea96e", + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "id": "a6e85e89-5d7a-40eb-809c-ac44974e3fd7", + "cell_type": "code", + "source": "from aiida import load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 13, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 13 + }, + { + "id": "3de84fb7-b01b-4541-868a-92e881eb6e77", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 14 + }, + { + "id": "b33f5528-10cd-47c8-8723-622902978859", + "cell_type": "code", + "source": "wg = load_workflow_json(file_name=workflow_json_filename)\nwg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 15, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "ef807dc1b56a416796bab756bbb1896f" + } + }, + "metadata": {} + } + ], + "execution_count": 15 + }, + { + "id": "15282ca1-d339-40e7-ad68-8a7613ed08da", + "cell_type": "code", + "source": "wg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:46:12 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh6\n04/23/2025 09:46:13 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: generate_mesh6, type: PyFunction, finished.\n04/23/2025 09:46:13 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf5\n04/23/2025 09:46:15 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf5, type: PyFunction, finished.\n04/23/2025 09:46:15 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson4\n04/23/2025 09:46:19 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: poisson4, type: PyFunction, finished.\n04/23/2025 09:46:19 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line3\n04/23/2025 09:46:21 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: plot_over_line3, type: PyFunction, finished.\n04/23/2025 09:46:21 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros2\n04/23/2025 09:46:23 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: substitute_macros2, type: PyFunction, finished.\n04/23/2025 09:46:23 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper1\n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: compile_paper1, type: PyFunction, finished.\n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 16 + }, + { + "id": "55dc8d12-dfe6-4465-a368-b7e590ae6800", + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "id": "dff46eb8-e0e7-49bb-8c40-0db2df133124", + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 17 + }, + { + "id": "6a189459-84e4-4738-ada1-37ee8c65b2ab", + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "id": "6e7f3614-c971-4e2d-83f0-96f0d0fc04de", + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 19 + }, + { + "id": "2d87ed45-f5d9-403f-a03a-26be4a47a3ef", + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:46:27,159 INFO Started executing jobs locally\n2025-04-23 09:46:27,488 INFO Starting job - generate_mesh (972ab469-7d1c-4dba-9d59-957741b6a6c8)\n2025-04-23 09:46:28,720 INFO Finished job - generate_mesh (972ab469-7d1c-4dba-9d59-957741b6a6c8)\n2025-04-23 09:46:28,721 INFO Starting job - convert_to_xdmf (7374ea3b-fa17-4554-bea9-5e97bf7c49a9)\n2025-04-23 09:46:30,169 INFO Finished job - convert_to_xdmf (7374ea3b-fa17-4554-bea9-5e97bf7c49a9)\n2025-04-23 09:46:30,170 INFO Starting job - poisson (5c920484-2b4a-47d1-92a1-5d2919557682)\n2025-04-23 09:46:33,008 INFO Finished job - poisson (5c920484-2b4a-47d1-92a1-5d2919557682)\n2025-04-23 09:46:33,009 INFO Starting job - plot_over_line (82770ae4-8a07-44c2-8a87-1cee9b178df5)\n2025-04-23 09:46:35,835 INFO Finished job - plot_over_line (82770ae4-8a07-44c2-8a87-1cee9b178df5)\n2025-04-23 09:46:35,836 INFO Starting job - substitute_macros (35dd4c5e-41f5-4d23-99ab-6972ad8d4827)\n2025-04-23 09:46:36,748 INFO Finished job - substitute_macros (35dd4c5e-41f5-4d23-99ab-6972ad8d4827)\n2025-04-23 09:46:36,749 INFO Starting job - compile_paper (785da10b-dd2a-47eb-9d5e-91d7e889807d)\n2025-04-23 09:46:39,139 INFO Finished job - compile_paper (785da10b-dd2a-47eb-9d5e-91d7e889807d)\n2025-04-23 09:46:39,140 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 20, + "output_type": "execute_result", + "data": { + "text/plain": "{'972ab469-7d1c-4dba-9d59-957741b6a6c8': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7374ea3b-fa17-4554-bea9-5e97bf7c49a9': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5c920484-2b4a-47d1-92a1-5d2919557682': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '82770ae4-8a07-44c2-8a87-1cee9b178df5': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '35dd4c5e-41f5-4d23-99ab-6972ad8d4827': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '785da10b-dd2a-47eb-9d5e-91d7e889807d': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 20 + } + ] +} diff --git a/source/envs/postprocessing.yaml b/example_workflows/nfdi/source/envs/postprocessing.yaml similarity index 100% rename from source/envs/postprocessing.yaml rename to example_workflows/nfdi/source/envs/postprocessing.yaml diff --git a/source/envs/preprocessing.yaml b/example_workflows/nfdi/source/envs/preprocessing.yaml similarity index 100% rename from source/envs/preprocessing.yaml rename to example_workflows/nfdi/source/envs/preprocessing.yaml diff --git a/source/envs/processing.yaml b/example_workflows/nfdi/source/envs/processing.yaml similarity index 100% rename from source/envs/processing.yaml rename to example_workflows/nfdi/source/envs/processing.yaml diff --git a/source/macros.tex.template b/example_workflows/nfdi/source/macros.tex.template similarity index 100% rename from source/macros.tex.template rename to example_workflows/nfdi/source/macros.tex.template diff --git a/source/paper.tex b/example_workflows/nfdi/source/paper.tex similarity index 100% rename from source/paper.tex rename to example_workflows/nfdi/source/paper.tex diff --git a/source/poisson.py b/example_workflows/nfdi/source/poisson.py similarity index 100% rename from source/poisson.py rename to example_workflows/nfdi/source/poisson.py diff --git a/source/postprocessing.py b/example_workflows/nfdi/source/postprocessing.py similarity index 100% rename from source/postprocessing.py rename to example_workflows/nfdi/source/postprocessing.py diff --git a/source/prepare_paper_macros.py b/example_workflows/nfdi/source/prepare_paper_macros.py similarity index 100% rename from source/prepare_paper_macros.py rename to example_workflows/nfdi/source/prepare_paper_macros.py diff --git a/source/unit_square.geo b/example_workflows/nfdi/source/unit_square.geo similarity index 100% rename from source/unit_square.geo rename to example_workflows/nfdi/source/unit_square.geo diff --git a/universal_workflow_nfdi.ipynb b/example_workflows/nfdi/universal_workflow_nfdi.ipynb similarity index 100% rename from universal_workflow_nfdi.ipynb rename to example_workflows/nfdi/universal_workflow_nfdi.ipynb diff --git a/workflow_nfdi.json b/example_workflows/nfdi/workflow_nfdi.json similarity index 100% rename from workflow_nfdi.json rename to example_workflows/nfdi/workflow_nfdi.json diff --git a/example_workflows/quantum_espresso/aiida_qe.ipynb b/example_workflows/quantum_espresso/aiida_qe.ipynb new file mode 100644 index 0000000..4ab2515 --- /dev/null +++ b/example_workflows/quantum_espresso/aiida_qe.ipynb @@ -0,0 +1,495 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# Aiida", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Define workflow with aiida", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import write_workflow_json\nfrom python_workflow_definition.shared import get_dict, get_list\n\nfrom aiida import load_profile, orm\n\nload_profile()\n\nworkflow_json_filename = \"aiida_qe.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": "from aiida_workgraph import task, WorkGraph", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "cell_type": "code", + "source": [ + "from example_workflows.quantum_espresso.quantum_espresso_workflow import generate_structures\n", + "from example_workflows.quantum_espresso.quantum_espresso_workflow import get_bulk_structure\n", + "from example_workflows.quantum_espresso.quantum_espresso_workflow import calculate_qe as _calculate_qe\n", + "from example_workflows.quantum_espresso.quantum_espresso_workflow import plot_energy_volume_curve" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": "calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "wg = WorkGraph(\"wg-qe\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "cell_type": "markdown", + "source": "### Prepare the inputs", + "metadata": {} + }, + { + "cell_type": "code", + "source": "element = orm.Str(\"Al\")\na = orm.Float(4.04)\ncubic = orm.Bool(True)\nrelax_workdir = orm.Str(\"mini\")\npseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nkpts = orm.List([3, 3, 3])\ncalc_type_relax = orm.Str(\"vc-relax\")\ncalc_type_scf = orm.Str(\"scf\")\nsmearing = orm.Float(0.02)\nstrain_lst = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "source": "### Actual tasks to construct the EOS workflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "get_bulk_structure_task = wg.add_task(\n get_bulk_structure,\n name=\"get_bulk_structure\",\n element=element,\n a=a,\n cubic=cubic,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "code", + "source": "relax_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=\"relax_get_dict\",\n structure=get_bulk_structure_task.outputs.result,\n calculation=calc_type_relax,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n)\n\nrelax_task = wg.add_task(\n calculate_qe,\n name=\"mini\",\n input_dict=relax_prepare_input_dict_task.outputs.result,\n working_directory=relax_workdir,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": "generate_structures_task = wg.add_task(\n generate_structures,\n name=\"generate_structures\",\n structure=relax_task.outputs.structure,\n strain_lst=strain_lst,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "get_volumes_task = wg.add_task(get_list, name=\"get_volumes\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "code", + "source": "get_energies_task = wg.add_task(get_list, name=\"get_energies\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "cell_type": "code", + "source": "strain_dir_tasks, scf_qe_tasks, scf_get_dict_tasks = [], [], []\n\nfor i, strain in enumerate(strain_lst):\n\n structure_key = f\"s_{i}\"\n strain_dir = orm.Str(f\"strain_{i}\")\n generate_structures_task.add_output(\"workgraph.any\", structure_key)\n\n scf_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=f\"get_dict_{i}\",\n structure=generate_structures_task.outputs[structure_key],\n calculation=calc_type_scf,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n )\n\n scf_qe_task = wg.add_task(\n calculate_qe,\n name=f\"qe_{i}\",\n input_dict=scf_prepare_input_dict_task.outputs.result,\n working_directory=strain_dir,\n )\n\n # collect energy and volume\n get_energies_task.set({f\"{i}\": scf_qe_task.outputs.energy})\n get_volumes_task.set({f\"{i}\": scf_qe_task.outputs.volume})", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "plot_energy_volume_curve_task = wg.add_task(\n plot_energy_volume_curve,\n name=\"plot_energy_volume_curve\",\n volume_lst=get_volumes_task.outputs.result,\n energy_lst=get_energies_task.outputs.result,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "wg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-qe',…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "a44258c4d19f490bb7e35a61d721b97c" + } + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "cell_type": "code", + "source": "_ = write_workflow_json(wg=wg, file_name=workflow_json_filename)\n", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\n \"nodes\": [\n {\n \"id\": 0,\n \"function\": \"quantum_espresso_workflow.get_bulk_structure\"\n },\n {\n \"id\": 1,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 2,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 3,\n \"function\": \"quantum_espresso_workflow.generate_structures\"\n },\n {\n \"id\": 4,\n \"function\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 5,\n \"function\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 6,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 7,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 8,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 9,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 10,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 11,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 12,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 13,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 14,\n \"function\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 15,\n \"function\": \"quantum_espresso_workflow.calculate_qe\"\n },\n {\n \"id\": 16,\n \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 17,\n \"value\": \"Al\"\n },\n {\n \"id\": 18,\n \"value\": 4.04\n },\n {\n \"id\": 19,\n \"value\": true\n },\n {\n \"id\": 20,\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 21,\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 22,\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 23,\n \"value\": 0.02\n },\n {\n \"id\": 24,\n \"value\": \"mini\"\n },\n {\n \"id\": 25,\n \"value\": [\n 0.9,\n 0.95,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 26,\n \"value\": \"scf\"\n },\n {\n \"id\": 27,\n \"value\": \"strain_0\"\n },\n {\n \"id\": 28,\n \"value\": \"strain_1\"\n },\n {\n \"id\": 29,\n \"value\": \"strain_2\"\n },\n {\n \"id\": 30,\n \"value\": \"strain_3\"\n },\n {\n \"id\": 31,\n \"value\": \"strain_4\"\n }\n ],\n \"edges\": [\n {\n \"target\": 1,\n \"targetPort\": \"structure\",\n \"source\": 0,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"input_dict\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"structure\"\n },\n {\n \"target\": 6,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_0\"\n },\n {\n \"target\": 7,\n \"targetPort\": \"input_dict\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"0\",\n \"source\": 7,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"0\",\n \"source\": 7,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_1\"\n },\n {\n \"target\": 9,\n \"targetPort\": \"input_dict\",\n \"source\": 8,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"1\",\n \"source\": 9,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"1\",\n \"source\": 9,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 10,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_2\"\n },\n {\n \"target\": 11,\n \"targetPort\": \"input_dict\",\n \"source\": 10,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"2\",\n \"source\": 11,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"2\",\n \"source\": 11,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 12,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_3\"\n },\n {\n \"target\": 13,\n \"targetPort\": \"input_dict\",\n \"source\": 12,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"3\",\n \"source\": 13,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"3\",\n \"source\": 13,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_4\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"input_dict\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"4\",\n \"source\": 15,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"4\",\n \"source\": 15,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"volume_lst\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 16,\n \"targetPort\": \"energy_lst\",\n \"source\": 5,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"element\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"a\",\n \"source\": 18,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"cubic\",\n \"source\": 19,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"calculation\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"working_directory\",\n \"source\": 24,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"strain_lst\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"working_directory\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"working_directory\",\n \"source\": 28,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"working_directory\",\n \"source\": 29,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"working_directory\",\n \"source\": 30,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"working_directory\",\n \"source\": 31,\n \"sourcePort\": null\n }\n ]\n}" + } + ], + "execution_count": 16 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 17 + }, + { + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 19 + }, + { + "cell_type": "code", + "source": "flow[0].function_kwargs[\"a\"] = 4.05", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 20 + }, + { + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:31:18,763 INFO Started executing jobs locally\n2025-04-23 09:31:19,023 INFO Starting job - get_bulk_structure (ceb203d4-4b50-4fbf-bd60-36680543382b)\n2025-04-23 09:31:19,030 INFO Finished job - get_bulk_structure (ceb203d4-4b50-4fbf-bd60-36680543382b)\n2025-04-23 09:31:19,031 INFO Starting job - get_dict (27f28719-6394-4a85-b93f-c8ece2feceaf)\n2025-04-23 09:31:19,034 INFO Finished job - get_dict (27f28719-6394-4a85-b93f-c8ece2feceaf)\n2025-04-23 09:31:19,035 INFO Starting job - calculate_qe (ae0b4b06-5734-41ea-a7cc-e8393ef01e55)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01795] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:32:12,183 INFO Finished job - calculate_qe (ae0b4b06-5734-41ea-a7cc-e8393ef01e55)\n2025-04-23 09:32:12,184 INFO Starting job - generate_structures (e9deb2a2-2e2a-4077-a221-a6afc9701377)\n2025-04-23 09:32:12,189 INFO Finished job - generate_structures (e9deb2a2-2e2a-4077-a221-a6afc9701377)\n2025-04-23 09:32:12,189 INFO Starting job - get_dict (9f4a0c82-798c-4178-9a46-c5430a2853c1)\n2025-04-23 09:32:12,190 INFO Finished job - get_dict (9f4a0c82-798c-4178-9a46-c5430a2853c1)\n2025-04-23 09:32:12,191 INFO Starting job - get_dict (8e10ca3a-91ba-4647-bca8-3c905020fb39)\n2025-04-23 09:32:12,192 INFO Finished job - get_dict (8e10ca3a-91ba-4647-bca8-3c905020fb39)\n2025-04-23 09:32:12,193 INFO Starting job - get_dict (765da827-3180-44d3-940e-e9d5a7e2ae45)\n2025-04-23 09:32:12,194 INFO Finished job - get_dict (765da827-3180-44d3-940e-e9d5a7e2ae45)\n2025-04-23 09:32:12,195 INFO Starting job - get_dict (5f8ce3d7-f65e-481d-8cb0-291d204df659)\n2025-04-23 09:32:12,196 INFO Finished job - get_dict (5f8ce3d7-f65e-481d-8cb0-291d204df659)\n2025-04-23 09:32:12,196 INFO Starting job - get_dict (12912688-d0c2-4053-80b2-a758b50ce86a)\n2025-04-23 09:32:12,208 INFO Finished job - get_dict (12912688-d0c2-4053-80b2-a758b50ce86a)\n2025-04-23 09:32:12,209 INFO Starting job - calculate_qe (282ce127-dc4e-4e2d-9769-c22bdcdf2e3f)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01814] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:32:23,091 INFO Finished job - calculate_qe (282ce127-dc4e-4e2d-9769-c22bdcdf2e3f)\n2025-04-23 09:32:23,092 INFO Starting job - calculate_qe (76b1d287-fd0f-4fed-a0b7-cc817dffe2d8)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01825] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:32:34,038 INFO Finished job - calculate_qe (76b1d287-fd0f-4fed-a0b7-cc817dffe2d8)\n2025-04-23 09:32:34,038 INFO Starting job - calculate_qe (2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01836] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:32:46,472 INFO Finished job - calculate_qe (2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc)\n2025-04-23 09:32:46,473 INFO Starting job - calculate_qe (4f947882-06db-4296-8456-b12cff2e66e3)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01847] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:33:00,409 INFO Finished job - calculate_qe (4f947882-06db-4296-8456-b12cff2e66e3)\n2025-04-23 09:33:00,410 INFO Starting job - calculate_qe (d7bd31df-d3a7-49a1-9ae8-7766d4c519ec)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01858] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:33:14,798 INFO Finished job - calculate_qe (d7bd31df-d3a7-49a1-9ae8-7766d4c519ec)\n2025-04-23 09:33:14,800 INFO Starting job - get_list (daa806da-16e9-4733-afe1-2ae60dc6292f)\n2025-04-23 09:33:14,804 INFO Finished job - get_list (daa806da-16e9-4733-afe1-2ae60dc6292f)\n2025-04-23 09:33:14,805 INFO Starting job - get_list (407d4cb0-b4f3-41f5-ba66-077754af69eb)\n2025-04-23 09:33:14,808 INFO Finished job - get_list (407d4cb0-b4f3-41f5-ba66-077754af69eb)\n2025-04-23 09:33:14,810 INFO Starting job - plot_energy_volume_curve (e363e583-bcc3-4cd8-b943-f6e4487b11f0)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:33:14,912 INFO Finished job - plot_energy_volume_curve (e363e583-bcc3-4cd8-b943-f6e4487b11f0)\n2025-04-23 09:33:14,913 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 21, + "output_type": "execute_result", + "data": { + "text/plain": "{'ceb203d4-4b50-4fbf-bd60-36680543382b': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '27f28719-6394-4a85-b93f-c8ece2feceaf': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'vc-relax', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ae0b4b06-5734-41ea-a7cc-e8393ef01e55': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.93652622536, 'volume': 66.21567448236135}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e9deb2a2-2e2a-4077-a221-a6afc9701377': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019785962126, 0.0, 0.0], [0.0, 3.906019785962126, 0.0], [0.0, 0.0, 3.906019785962126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981063, 1.953009892981063], [1.953009892981063, 0.0, 1.953009892981063], [1.953009892981063, 1.953009892981063, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443180263, 0.0, 0.0], [0.0, 3.9770538443180263, 0.0], [0.0, 0.0, 3.9770538443180263]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221590132, 1.9885269221590132], [1.9885269221590132, 0.0, 1.9885269221590132], [1.9885269221590132, 1.9885269221590132, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282933, 0.0, 0.0], [0.0, 4.111970927282933, 0.0], [0.0, 0.0, 4.111970927282933]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414663, 2.0559854636414663], [2.0559854636414663, 0.0, 2.0559854636414663], [2.0559854636414663, 2.0559854636414663, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372157, 0.0, 0.0], [0.0, 4.176230852372157, 0.0], [0.0, 0.0, 4.176230852372157]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860786, 2.0881154261860786], [2.0881154261860786, 0.0, 2.0881154261860786], [2.0881154261860786, 2.0881154261860786, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '9f4a0c82-798c-4178-9a46-c5430a2853c1': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019785962126, 0.0, 0.0], [0.0, 3.906019785962126, 0.0], [0.0, 0.0, 3.906019785962126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981063, 1.953009892981063], [1.953009892981063, 0.0, 1.953009892981063], [1.953009892981063, 1.953009892981063, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '8e10ca3a-91ba-4647-bca8-3c905020fb39': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443180263, 0.0, 0.0], [0.0, 3.9770538443180263, 0.0], [0.0, 0.0, 3.9770538443180263]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221590132, 1.9885269221590132], [1.9885269221590132, 0.0, 1.9885269221590132], [1.9885269221590132, 1.9885269221590132, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '765da827-3180-44d3-940e-e9d5a7e2ae45': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946818, 0.0, 0.0], [0.0, 4.045637215946818, 0.0], [0.0, 0.0, 4.045637215946818]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973409, 2.022818607973409], [2.022818607973409, 0.0, 2.022818607973409], [2.022818607973409, 2.022818607973409, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5f8ce3d7-f65e-481d-8cb0-291d204df659': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282933, 0.0, 0.0], [0.0, 4.111970927282933, 0.0], [0.0, 0.0, 4.111970927282933]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414663, 2.0559854636414663], [2.0559854636414663, 0.0, 2.0559854636414663], [2.0559854636414663, 2.0559854636414663, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '12912688-d0c2-4053-80b2-a758b50ce86a': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372157, 0.0, 0.0], [0.0, 4.176230852372157, 0.0], [0.0, 0.0, 4.176230852372157]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860786, 2.0881154261860786], [2.0881154261860786, 0.0, 2.0881154261860786], [2.0881154261860786, 2.0881154261860786, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'calculation': 'scf', 'kpts': [3, 3, 3], 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '282ce127-dc4e-4e2d-9769-c22bdcdf2e3f': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019768889166, 0.0, 0.0], [0.0, 3.906019768889166, 0.0], [0.0, 0.0, 3.906019768889166]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150626, 'volume': 59.594106252679225}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '76b1d287-fd0f-4fed-a0b7-cc817dffe2d8': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538269345797, 0.0, 0.0], [0.0, 3.9770538269345797, 0.0], [0.0, 0.0, 3.9770538269345797]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082753, 1.9885269135082753], [1.9885269135082753, 0.0, 1.9885269135082753], [1.9885269135082753, 1.9885269135082753, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594607, 'volume': 62.90488993338357}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2c6bfb73-15c3-4be7-95ab-f9afbeaf53bc': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263596, 0.0, 0.0], [0.0, 4.045637198263596, 0.0], [0.0, 0.0, 4.045637198263596]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583882, 2.0228185991583882], [2.0228185991583882, 0.0, 2.0228185991583882], [2.0228185991583882, 2.0228185991583882, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668372, 'volume': 66.21567361408789}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '4f947882-06db-4296-8456-b12cff2e66e3': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309766, 0.0, 0.0], [0.0, 4.111970909309766, 0.0], [0.0, 0.0, 4.111970909309766]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025842, 'volume': 69.52645729479204}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd7bd31df-d3a7-49a1-9ae8-7766d4c519ec': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411812, 0.0, 0.0], [0.0, 4.17623083411812, 0.0], [0.0, 0.0, 4.17623083411812]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.87379046934, 'volume': 72.83724097549673}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'daa806da-16e9-4733-afe1-2ae60dc6292f': {1: Response(output=[59.594106252679225, 62.90488993338357, 66.21567361408789, 69.52645729479204, 72.83724097549673], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '407d4cb0-b4f3-41f5-ba66-077754af69eb': {1: Response(output=[-1074.8457446150626, -1074.9161488594607, -1074.9365241668372, -1074.9192860025842, -1074.87379046934], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e363e583-bcc3-4cd8-b943-f6e4487b11f0': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 21 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 22 + }, + { + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64e90>\n\n\n\nvolume_lst_7877f4496713e91ee9569a3d39477944\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64320>\n\n\n\nvolume_lst_7877f4496713e91ee9569a3d39477944->create_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\n\n\n\n\n0_e81e45d48628cffd23c97591d4742381\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46db0>\n\n\n\n0_e81e45d48628cffd23c97591d4742381->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47f80>\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7->0_e81e45d48628cffd23c97591d4742381\n\n\n\n\n\n0_79d0e65e922efc9f26386930f67b4593\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47a70>\n\n\n\ninput_dict_2104e1cd318f16e37db9c8fc50b44bf7->0_79d0e65e922efc9f26386930f67b4593\n\n\n\n\n\nenergy_lst_c39c096e088c6198246309199a06e31a\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46c00>\n\n\n\n0_79d0e65e922efc9f26386930f67b4593->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nstructure_8ec2a7af77e9d22260dc56b435bba70b\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47cb0>\n\n\n\nstructure_8ec2a7af77e9d22260dc56b435bba70b->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46cf0>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_8ec2a7af77e9d22260dc56b435bba70b\n\n\n\n\n\nstructure_c401a7118deb546adf8cacc894a995d4\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47980>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_c401a7118deb546adf8cacc894a995d4\n\n\n\n\n\nstructure_503093210fb645799cb9c53a6111f31d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47650>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_503093210fb645799cb9c53a6111f31d\n\n\n\n\n\nstructure_feae982cf556b8d382334d6cbdf1cd8d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47320>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_feae982cf556b8d382334d6cbdf1cd8d\n\n\n\n\n\nstructure_d63e04359ed4866d6c7b37b920475e13\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46ff0>\n\n\n\nstructure_a2e153ee6a338726bca4488fd55e61d3->structure_d63e04359ed4866d6c7b37b920475e13\n\n\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47c20>\n\n\n\nstructure_c401a7118deb546adf8cacc894a995d4->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def478f0>\n\n\n\nstructure_503093210fb645799cb9c53a6111f31d->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def475c0>\n\n\n\nstructure_feae982cf556b8d382334d6cbdf1cd8d->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47290>\n\n\n\nstructure_d63e04359ed4866d6c7b37b920475e13->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\ninput_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def46660>\n\n\n\ninput_dict_2f4bdfa637c1310ad67c1dbef51e42fc->structure_a2e153ee6a338726bca4488fd55e61d3\n\n\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def467b0>\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\n1_6ad77da55455ab9aa590aedabc104f68\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def648f0>\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167->1_6ad77da55455ab9aa590aedabc104f68\n\n\n\n\n\n1_f7ad5955f13722bf930d81c2b9e742e9\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47a40>\n\n\n\ninput_dict_b90e408f5e84971a0acbe801ef8e7167->1_f7ad5955f13722bf930d81c2b9e742e9\n\n\n\n\n\n2_e195a45cae0bfce238475e97d9a58cd5\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64c20>\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142->2_e195a45cae0bfce238475e97d9a58cd5\n\n\n\n\n\n2_112c792629e86543b9cea4a872270624\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47350>\n\n\n\ninput_dict_09a5f6ff4398ee33f2c690b496ea0142->2_112c792629e86543b9cea4a872270624\n\n\n\n\n\n3_a983b77487f6859f18062f31bb895319\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def647a0>\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3->3_a983b77487f6859f18062f31bb895319\n\n\n\n\n\n3_f629cc0dcbd5dc353789776418f3701f\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def473b0>\n\n\n\ninput_dict_b75fbdc25556c6a295e00bd54557cdf3->3_f629cc0dcbd5dc353789776418f3701f\n\n\n\n\n\n4_c9c83b9132566cff0bc7068536ede7ca\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def64da0>\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8->4_c9c83b9132566cff0bc7068536ede7ca\n\n\n\n\n\n4_4d455a4b322d423d9821fbd74191eb62\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7b15def47050>\n\n\n\ninput_dict_dff830eead42379c139eeb9148710ae8->4_4d455a4b322d423d9821fbd74191eb62\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2f4bdfa637c1310ad67c1dbef51e42fc\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_a2e153ee6a338726bca4488fd55e61d3\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781\n\nstrain_lst=[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_8ec2a7af77e9d22260dc56b435bba70b\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_c401a7118deb546adf8cacc894a995d4\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_503093210fb645799cb9c53a6111f31d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_feae982cf556b8d382334d6cbdf1cd8d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_d63e04359ed4866d6c7b37b920475e13\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2104e1cd318f16e37db9c8fc50b44bf7\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b90e408f5e84971a0acbe801ef8e7167\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_09a5f6ff4398ee33f2c690b496ea0142\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b75fbdc25556c6a295e00bd54557cdf3\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_dff830eead42379c139eeb9148710ae8\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_e81e45d48628cffd23c97591d4742381\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_79d0e65e922efc9f26386930f67b4593\n\n\n\n\n\n1_6ad77da55455ab9aa590aedabc104f68->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n1_f7ad5955f13722bf930d81c2b9e742e9->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_6ad77da55455ab9aa590aedabc104f68\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_f7ad5955f13722bf930d81c2b9e742e9\n\n\n\n\n\n2_e195a45cae0bfce238475e97d9a58cd5->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n2_112c792629e86543b9cea4a872270624->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_e195a45cae0bfce238475e97d9a58cd5\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_112c792629e86543b9cea4a872270624\n\n\n\n\n\n3_a983b77487f6859f18062f31bb895319->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n3_f629cc0dcbd5dc353789776418f3701f->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_a983b77487f6859f18062f31bb895319\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_f629cc0dcbd5dc353789776418f3701f\n\n\n\n\n\n4_c9c83b9132566cff0bc7068536ede7ca->volume_lst_7877f4496713e91ee9569a3d39477944\n\n\n\n\n\n4_4d455a4b322d423d9821fbd74191eb62->energy_lst_c39c096e088c6198246309199a06e31a\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_c9c83b9132566cff0bc7068536ede7ca\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_4d455a4b322d423d9821fbd74191eb62\n\n\n\n\n\nenergy_lst_c39c096e088c6198246309199a06e31a->create_function_job_81ad14ceddd174cc2129a2d071b8dfeb\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 23 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[0].input['a'] = 4.05", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 24 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_20400c1655d51731f9f5ffb50c2b401f was saved and received the ID: 2\nThe job calculate_qe_22b5d0934d89d8f08761e744e4612c30 was saved and received the ID: 3\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01892] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_structures_6bbb6b6ae566b035388bec7f6f658394 was saved and received the ID: 4\nThe job get_dict_7fbef1423a72155d480420469f6f0f78 was saved and received the ID: 5\nThe job calculate_qe_35d4282b6beff7c2fc7a850e02ff3f07 was saved and received the ID: 6\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01908] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_bcd13fb93bbd4d7a7a99c460c0591b51 was saved and received the ID: 7\nThe job calculate_qe_3159d3281f1fccbf1a91388144a7957f was saved and received the ID: 8\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01919] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_5b1eeb4af2f8eb4018b7326f4af63eca was saved and received the ID: 9\nThe job calculate_qe_4d1c131dceca1e8897f7cda47cb24f9e was saved and received the ID: 10\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01930] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_566acb6c9830b82fd09efc4e8227e6e6 was saved and received the ID: 11\nThe job calculate_qe_e463d009aee35caa551669d8efc7c8cd was saved and received the ID: 12\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01941] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_75499df774616aa1b379a3fa72da90fb was saved and received the ID: 13\nThe job calculate_qe_6ef5649cee1f8db43ecd79d266f477b5 was saved and received the ID: 14\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:01953] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_list_5d2e404624b12c3bb1f93528d1b1dddb was saved and received the ID: 15\nThe job get_list_8628ae553e40ba9aab5dde25ea2d7ba2 was saved and received the ID: 16\nThe job plot_energy_volume_curve_d715578098aa2e6221fb76f20377b5cf was saved and received the ID: 17\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 25 + }, + { + "cell_type": "code", + "source": "", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": null + } + ] +} diff --git a/environment_qe.yml b/example_workflows/quantum_espresso/environment_qe.yml similarity index 100% rename from environment_qe.yml rename to example_workflows/quantum_espresso/environment_qe.yml diff --git a/espresso/pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF b/example_workflows/quantum_espresso/espresso/pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF similarity index 100% rename from espresso/pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF rename to example_workflows/quantum_espresso/espresso/pseudo/Al.pbe-n-kjpaw_psl.1.0.0.UPF diff --git a/example_workflows/quantum_espresso/jobflow_qe.ipynb b/example_workflows/quantum_espresso/jobflow_qe.ipynb new file mode 100644 index 0000000..9d12597 --- /dev/null +++ b/example_workflows/quantum_espresso/jobflow_qe.ipynb @@ -0,0 +1,419 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# jobflow", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Define workflow with jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "import numpy as np", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": "from jobflow import job, Flow", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 2 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": [ + "from example_workflows.quantum_espresso.quantum_espresso_workflow import (\n", + " calculate_qe as _calculate_qe, \n", + " generate_structures as _generate_structures, \n", + " get_bulk_structure as _get_bulk_structure, \n", + " plot_energy_volume_curve as _plot_energy_volume_curve,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "workflow_json_filename = \"jobflow_qe.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "cell_type": "code", + "source": "calculate_qe = job(_calculate_qe, data=[\"energy\", \"volume\", \"structure\"])\ngenerate_structures = job(_generate_structures, data=[f\"s_{i}\" for i in range(100)])\nplot_energy_volume_curve = job(_plot_energy_volume_curve)\nget_bulk_structure = job(_get_bulk_structure)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "cell_type": "code", + "source": "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "code", + "source": "structure = get_bulk_structure(\n element=\"Al\",\n a=4.04,\n cubic=True,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": "calc_mini = calculate_qe(\n working_directory=\"mini\",\n input_dict={\n \"structure\": structure.output,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "number_of_strains = 5\nstructure_lst = generate_structures(\n structure=calc_mini.output.structure,\n strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "code", + "source": "job_strain_lst = []\nfor i in range(number_of_strains):\n calc_strain = calculate_qe(\n working_directory=\"strain_\" + str(i),\n input_dict={\n \"structure\": getattr(structure_lst.output, f\"s_{i}\"),\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n )\n job_strain_lst.append(calc_strain)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "cell_type": "code", + "source": "plot = plot_energy_volume_curve(\n volume_lst=[job.output.volume for job in job_strain_lst],\n energy_lst=[job.output.energy for job in job_strain_lst],\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "flow = Flow([structure, calc_mini, structure_lst] + job_strain_lst + [plot])", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "write_workflow_json(flow=flow, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 14 + }, + { + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\"nodes\": [{\"id\": 0, \"function\": \"quantum_espresso_workflow.get_bulk_structure\"}, {\"id\": 1, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 2, \"function\": \"quantum_espresso_workflow.generate_structures\"}, {\"id\": 3, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 4, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 5, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 6, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 7, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 8, \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"}, {\"id\": 9, \"value\": \"Al\"}, {\"id\": 10, \"value\": 4.04}, {\"id\": 11, \"value\": true}, {\"id\": 12, \"value\": \"mini\"}, {\"id\": 13, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 14, \"value\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}}, {\"id\": 15, \"value\": [3, 3, 3]}, {\"id\": 16, \"value\": \"vc-relax\"}, {\"id\": 17, \"value\": 0.02}, {\"id\": 18, \"value\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1]}, {\"id\": 19, \"value\": \"strain_0\"}, {\"id\": 20, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 21, \"value\": \"scf\"}, {\"id\": 22, \"value\": \"strain_1\"}, {\"id\": 23, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 24, \"value\": \"strain_2\"}, {\"id\": 25, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 26, \"value\": \"strain_3\"}, {\"id\": 27, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 28, \"value\": \"strain_4\"}, {\"id\": 29, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 30, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 31, \"function\": \"python_workflow_definition.shared.get_list\"}], \"edges\": [{\"target\": 0, \"targetPort\": \"element\", \"source\": 9, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"a\", \"source\": 10, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"cubic\", \"source\": 11, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"working_directory\", \"source\": 12, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"structure\", \"source\": 0, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"calculation\", \"source\": 16, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"input_dict\", \"source\": 13, \"sourcePort\": null}, {\"target\": 2, \"targetPort\": \"structure\", \"source\": 1, \"sourcePort\": \"structure\"}, {\"target\": 2, \"targetPort\": \"strain_lst\", \"source\": 18, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"working_directory\", \"source\": 19, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_0\"}, {\"target\": 20, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"input_dict\", \"source\": 20, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"working_directory\", \"source\": 22, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_1\"}, {\"target\": 23, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"input_dict\", \"source\": 23, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"working_directory\", \"source\": 24, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_2\"}, {\"target\": 25, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"input_dict\", \"source\": 25, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"working_directory\", \"source\": 26, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_3\"}, {\"target\": 27, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"input_dict\", \"source\": 27, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"working_directory\", \"source\": 28, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_4\"}, {\"target\": 29, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"input_dict\", \"source\": 29, \"sourcePort\": null}, {\"target\": 30, \"targetPort\": \"0\", \"source\": 3, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"1\", \"source\": 4, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"2\", \"source\": 5, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"3\", \"source\": 6, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"4\", \"source\": 7, \"sourcePort\": \"volume\"}, {\"target\": 8, \"targetPort\": \"volume_lst\", \"source\": 30, \"sourcePort\": null}, {\"target\": 31, \"targetPort\": \"0\", \"source\": 3, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"1\", \"source\": 4, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"2\", \"source\": 5, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"3\", \"source\": 6, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"4\", \"source\": 7, \"sourcePort\": \"energy\"}, {\"target\": 8, \"targetPort\": \"energy_lst\", \"source\": 31, \"sourcePort\": null}]}" + } + ], + "execution_count": 15 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from aiida import orm, load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 16, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 17 + }, + { + "cell_type": "code", + "source": "wg = load_workflow_json(workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "cell_type": "code", + "source": "wg.nodes.get_bulk_structure1.inputs.a.value = orm.Float(4.05)", + "metadata": { + "scrolled": true, + "trusted": true + }, + "outputs": [], + "execution_count": 19 + }, + { + "cell_type": "code", + "source": "wg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 20, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "5181550fd32b489581df9e1b0d490087" + } + }, + "metadata": {} + } + ], + "execution_count": 20 + }, + { + "cell_type": "code", + "source": "wg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:37:37 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n04/23/2025 09:37:38 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n04/23/2025 09:37:38 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n04/23/2025 09:37:39 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:37:39 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03734] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n04/23/2025 09:38:35 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n04/23/2025 09:38:35 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:38:36 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n04/23/2025 09:38:36 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03752] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:38:48 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:38:48 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03763] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n04/23/2025 09:39:01 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n04/23/2025 09:39:01 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03775] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n04/23/2025 09:39:15 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:39:15 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03786] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n04/23/2025 09:39:31 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n04/23/2025 09:39:31 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03802] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n04/23/2025 09:39:50 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n04/23/2025 09:39:50 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:39:51 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:39:51 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|finalize]: Finalize workgraph.\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 21 + }, + { + "cell_type": "markdown", + "source": "## Load Workflow with pyiron_base", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 22 + }, + { + "cell_type": "code", + "source": "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_32ef32f9566b9201becfbb5fe459cf95\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a4620>\n\n\n\nvolume_lst_1de093461d597c9482af1b1162abe220\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a43b0>\n\n\n\nvolume_lst_1de093461d597c9482af1b1162abe220->create_function_job_32ef32f9566b9201becfbb5fe459cf95\n\n\n\n\n\n0_177953661fa32c20aeffbbe7a1ea38c4\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573dd0>\n\n\n\n0_177953661fa32c20aeffbbe7a1ea38c4->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_177953661fa32c20aeffbbe7a1ea38c4\n\n\n\n\n\n0_2660ce7e7ff52f944150be4ac7156b8d\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565737a0>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_2660ce7e7ff52f944150be4ac7156b8d\n\n\n\n\n\nenergy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573d40>\n\n\n\n0_2660ce7e7ff52f944150be4ac7156b8d->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572ae0>\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18->0_177953661fa32c20aeffbbe7a1ea38c4\n\n\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18->0_2660ce7e7ff52f944150be4ac7156b8d\n\n\n\n\n\nstructure_8892d31d306c467640f6211152645923\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572810>\n\n\n\nstructure_8892d31d306c467640f6211152645923->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565718b0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_8892d31d306c467640f6211152645923\n\n\n\n\n\nstructure_3d5c86c809bb793502a724d190fc0992\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565724e0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_3d5c86c809bb793502a724d190fc0992\n\n\n\n\n\nstructure_73859cd8cf8266c2c8fca0036718a3ca\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572210>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_73859cd8cf8266c2c8fca0036718a3ca\n\n\n\n\n\nstructure_90f5c8bcaba951371c7a0fca07a3a1c6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571ee0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_90f5c8bcaba951371c7a0fca07a3a1c6\n\n\n\n\n\nstructure_455912e219ba7dc19b4b63accdb089e8\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571bb0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_455912e219ba7dc19b4b63accdb089e8\n\n\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572780>\n\n\n\nstructure_3d5c86c809bb793502a724d190fc0992->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572450>\n\n\n\nstructure_73859cd8cf8266c2c8fca0036718a3ca->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572180>\n\n\n\nstructure_90f5c8bcaba951371c7a0fca07a3a1c6->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571e50>\n\n\n\nstructure_455912e219ba7dc19b4b63accdb089e8->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_bb0e80218d6fb6d1f539fecce43c6da5\n\n\n\n\n\ninput_dict_9588611272d06d8efced69e7f4a609b7\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571010>\n\n\n\ninput_dict_9588611272d06d8efced69e7f4a609b7->structure_bb0e80218d6fb6d1f539fecce43c6da5\n\n\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571220>\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\n1_16a57ad80c618ed046701f9d6bea507d\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573da0>\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667->1_16a57ad80c618ed046701f9d6bea507d\n\n\n\n\n\n1_b3dca6b1e782f19126f68f1450166e4c\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573770>\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667->1_b3dca6b1e782f19126f68f1450166e4c\n\n\n\n\n\n2_d396dc02378656e5149b50dbea2c6849\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573bc0>\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b->2_d396dc02378656e5149b50dbea2c6849\n\n\n\n\n\n2_774a8fdeb27a17082a2eef733fa8f89a\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565732c0>\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b->2_774a8fdeb27a17082a2eef733fa8f89a\n\n\n\n\n\n3_877d87905334b912a295e5804e3fd1c2\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573ef0>\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd->3_877d87905334b912a295e5804e3fd1c2\n\n\n\n\n\n3_6e96371d1e2c31701a9bf3e866b183ca\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565738c0>\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd->3_6e96371d1e2c31701a9bf3e866b183ca\n\n\n\n\n\n4_26ec0cf277f9f46050b75f68dd6eb03e\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a4050>\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9->4_26ec0cf277f9f46050b75f68dd6eb03e\n\n\n\n\n\n4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565739b0>\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9->4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86\n\nstrain_lst=[0.9, 0.9500000000000001, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_8892d31d306c467640f6211152645923\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_3d5c86c809bb793502a724d190fc0992\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_73859cd8cf8266c2c8fca0036718a3ca\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_90f5c8bcaba951371c7a0fca07a3a1c6\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_455912e219ba7dc19b4b63accdb089e8\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\n1_16a57ad80c618ed046701f9d6bea507d->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_16a57ad80c618ed046701f9d6bea507d\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_b3dca6b1e782f19126f68f1450166e4c\n\n\n\n\n\n1_b3dca6b1e782f19126f68f1450166e4c->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n2_d396dc02378656e5149b50dbea2c6849->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_d396dc02378656e5149b50dbea2c6849\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_774a8fdeb27a17082a2eef733fa8f89a\n\n\n\n\n\n2_774a8fdeb27a17082a2eef733fa8f89a->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n3_877d87905334b912a295e5804e3fd1c2->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_877d87905334b912a295e5804e3fd1c2\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_6e96371d1e2c31701a9bf3e866b183ca\n\n\n\n\n\n3_6e96371d1e2c31701a9bf3e866b183ca->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n4_26ec0cf277f9f46050b75f68dd6eb03e->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_26ec0cf277f9f46050b75f68dd6eb03e\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n\n\n\n\n4_df9dceb6d52a2c322ae1cba07c03d9f3->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\nenergy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb->create_function_job_32ef32f9566b9201becfbb5fe459cf95\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 23 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[0].input['a'] = 4.05", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 24 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_e3c0bf43f7edf24d215901bf93271e87 was saved and received the ID: 3\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03835] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_structures_89c98f83a15c7e4629b528fb8c259dc0 was saved and received the ID: 4\nThe job get_dict_4460300f595bfcc30ce17af0b31c8142 was saved and received the ID: 5\nThe job calculate_qe_ce57e1390b2d70b601bd0b6372b75743 was saved and received the ID: 6\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03850] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_b928c97580ae9dba3e4f7f776dd64ff2 was saved and received the ID: 7\nThe job calculate_qe_199c2f21d205b83b19eb452135f485f4 was saved and received the ID: 8\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03860] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_c07eddc6adee32971572cbe8e5875ddf was saved and received the ID: 9\nThe job calculate_qe_c9beb3d48a3c6888a35ec8b706f0a333 was saved and received the ID: 10\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03870] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_67d13c2b6722a40b6c41623343ace5eb was saved and received the ID: 11\nThe job calculate_qe_0c4bf53901c3453824c0261fbd4a4f7e was saved and received the ID: 12\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03884] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_b70792626f9cb4bfe8bc34627f103fd4 was saved and received the ID: 13\nThe job calculate_qe_86a733fa48f90c657f29f907e2283590 was saved and received the ID: 14\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03894] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_list_cca1d5d7a794bd0ac3693b2b5eca8bc2 was saved and received the ID: 15\nThe job get_list_1acf1cb5d3c716bd2b7eb2614b745c39 was saved and received the ID: 16\nThe job plot_energy_volume_curve_8671230cc853d6cabc56f6f722bbd04e was saved and received the ID: 17\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 25 + }, + { + "cell_type": "code", + "source": "", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": null + } + ] +} diff --git a/example_workflows/quantum_espresso/pyiron_base_qe.ipynb b/example_workflows/quantum_espresso/pyiron_base_qe.ipynb new file mode 100644 index 0000000..a3f9e11 --- /dev/null +++ b/example_workflows/quantum_espresso/pyiron_base_qe.ipynb @@ -0,0 +1,393 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "be2d61b0-0d47-4349-b4b0-1b767c961644", + "cell_type": "markdown", + "source": "# pyiron", + "metadata": {} + }, + { + "id": "0bad2a57-1bd2-4837-94fe-f8c60e211fae", + "cell_type": "markdown", + "source": "## Define workflow with pyiron_base", + "metadata": {} + }, + { + "id": "a2ed2608-9e1b-4a81-81cb-5079573ea2d1", + "cell_type": "code", + "source": "import numpy as np\nfrom pyiron_base import job\nfrom python_workflow_definition.pyiron_base import write_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "id": "b75c2530-9b89-4185-838f-a17e517fa68f", + "cell_type": "code", + "source": [ + "from example_workflows.quantum_espresso.quantum_espresso_workflow import (\n", + " calculate_qe as _calculate_qe, \n", + " generate_structures as _generate_structures, \n", + " get_bulk_structure as _get_bulk_structure, \n", + " plot_energy_volume_curve as _plot_energy_volume_curve,\n", + ")" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "07a950ca", + "cell_type": "code", + "source": "workflow_json_filename = \"pyiron_base_qe.json\"", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "208ddfb8-dfda-4227-aa1f-3dc29e34ea82", + "cell_type": "code", + "source": "calculate_qe = job(_calculate_qe, output_key_lst=[\"energy\", \"volume\", \"structure\"])\ngenerate_structures = job(_generate_structures)\nplot_energy_volume_curve = job(_plot_energy_volume_curve)\nget_bulk_structure = job(_get_bulk_structure)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "5071d3a0-7c1f-44c5-85e0-dede1566c10c", + "cell_type": "code", + "source": "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "1f1cb12f-4001-478d-8ea0-b369f4f2981a", + "cell_type": "code", + "source": "structure = get_bulk_structure(\n element=\"Al\",\n a=4.04,\n cubic=True,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "4140f07b-af54-41ef-be22-df6b5b53bf95", + "cell_type": "code", + "source": "calc_mini = calculate_qe(\n working_directory=\"mini\",\n input_dict={\n \"structure\": structure,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "id": "3c4dae11-8750-42d5-807c-cd19f2b65706", + "cell_type": "code", + "source": "number_of_strains = 5\nstructure_lst = generate_structures( # the generate_structures() function is not available in the workflow graph\n structure=calc_mini.output.structure,\n strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n list_length=number_of_strains,\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "fdf3b62d-6cce-4312-8a5b-057224e36aca", + "cell_type": "code", + "source": "job_strain_lst = []\nfor i, structure_strain in enumerate(structure_lst):\n calc_strain = calculate_qe(\n working_directory=\"strain_\" + str(i),\n input_dict={\n \"structure\": structure_strain,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n )\n job_strain_lst.append(calc_strain)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "b2823306-0a8a-4ae6-bb1f-104e90e2fe41", + "cell_type": "code", + "source": "plot = plot_energy_volume_curve(\n volume_lst=[job.output.volume for job in job_strain_lst],\n energy_lst=[job.output.energy for job in job_strain_lst],\n)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "id": "52646121-335f-48e6-bd5e-a1d69d00e8bc", + "cell_type": "code", + "source": "write_workflow_json(delayed_object=plot, file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "72c8e6e6-8e60-4a4f-81f3-968b4b5f36ee", + "cell_type": "code", + "source": "!cat {workflow_json_filename}", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "{\"nodes\": [{\"id\": 0, \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"}, {\"id\": 1, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 2, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 3, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 4, \"function\": \"quantum_espresso_workflow.generate_structures\"}, {\"id\": 5, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 6, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 7, \"function\": \"quantum_espresso_workflow.get_bulk_structure\"}, {\"id\": 8, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 9, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 10, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 11, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 12, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 13, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 14, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 15, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 16, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 17, \"value\": \"strain_0\"}, {\"id\": 18, \"value\": \"mini\"}, {\"id\": 19, \"value\": \"Al\"}, {\"id\": 20, \"value\": 4.04}, {\"id\": 21, \"value\": true}, {\"id\": 22, \"value\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}}, {\"id\": 23, \"value\": [3, 3, 3]}, {\"id\": 24, \"value\": \"vc-relax\"}, {\"id\": 25, \"value\": 0.02}, {\"id\": 26, \"value\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1]}, {\"id\": 27, \"value\": \"scf\"}, {\"id\": 28, \"value\": \"strain_1\"}, {\"id\": 29, \"value\": \"strain_2\"}, {\"id\": 30, \"value\": \"strain_3\"}, {\"id\": 31, \"value\": \"strain_4\"}], \"edges\": [{\"target\": 0, \"targetPort\": \"volume_lst\", \"source\": 1, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"0\", \"source\": 2, \"sourcePort\": \"volume\"}, {\"target\": 2, \"targetPort\": \"working_directory\", \"source\": 17, \"sourcePort\": null}, {\"target\": 2, \"targetPort\": \"input_dict\", \"source\": 3, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_0\"}, {\"target\": 4, \"targetPort\": \"structure\", \"source\": 5, \"sourcePort\": \"structure\"}, {\"target\": 5, \"targetPort\": \"working_directory\", \"source\": 18, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"input_dict\", \"source\": 6, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"structure\", \"source\": 7, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"element\", \"source\": 19, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"a\", \"source\": 20, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"cubic\", \"source\": 21, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"calculation\", \"source\": 24, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"strain_lst\", \"source\": 26, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"1\", \"source\": 8, \"sourcePort\": \"volume\"}, {\"target\": 8, \"targetPort\": \"working_directory\", \"source\": 28, \"sourcePort\": null}, {\"target\": 8, \"targetPort\": \"input_dict\", \"source\": 9, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_1\"}, {\"target\": 9, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"2\", \"source\": 10, \"sourcePort\": \"volume\"}, {\"target\": 10, \"targetPort\": \"working_directory\", \"source\": 29, \"sourcePort\": null}, {\"target\": 10, \"targetPort\": \"input_dict\", \"source\": 11, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_2\"}, {\"target\": 11, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"3\", \"source\": 12, \"sourcePort\": \"volume\"}, {\"target\": 12, \"targetPort\": \"working_directory\", \"source\": 30, \"sourcePort\": null}, {\"target\": 12, \"targetPort\": \"input_dict\", \"source\": 13, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_3\"}, {\"target\": 13, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"4\", \"source\": 14, \"sourcePort\": \"volume\"}, {\"target\": 14, \"targetPort\": \"working_directory\", \"source\": 31, \"sourcePort\": null}, {\"target\": 14, \"targetPort\": \"input_dict\", \"source\": 15, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_4\"}, {\"target\": 15, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"energy_lst\", \"source\": 16, \"sourcePort\": null}, {\"target\": 16, \"targetPort\": \"0\", \"source\": 2, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"1\", \"source\": 8, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"2\", \"source\": 10, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"3\", \"source\": 12, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"4\", \"source\": 14, \"sourcePort\": \"energy\"}]}" + } + ], + "execution_count": 12 + }, + { + "id": "7d75a2f6-6fad-49c8-bd29-37cca1b84441", + "cell_type": "markdown", + "source": "## Load Workflow with aiida", + "metadata": {} + }, + { + "id": "28760464-2a2c-40c2-9451-20713da2ba2c", + "cell_type": "code", + "source": "from aiida import orm, load_profile\n\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 13, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 13 + }, + { + "id": "a442fe46-057c-469b-a5e0-173ed4829dfb", + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 14 + }, + { + "id": "32fcd4b2-4f0a-442d-b098-827672823796", + "cell_type": "code", + "source": "wg = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "id": "d81a4fb5-a674-41a9-ac19-24c56f952468", + "cell_type": "code", + "source": "wg.nodes.get_bulk_structure8.inputs.a.value = orm.Float(4.05)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 16 + }, + { + "id": "a80b59bd-fe30-49c6-92ca-35ef2d77a6fb", + "cell_type": "code", + "source": "wg.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:47:03 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure8\n04/23/2025 09:47:04 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_bulk_structure8, type: PyFunction, finished.\n04/23/2025 09:47:04 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7\n04/23/2025 09:47:05 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n04/23/2025 09:47:05 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05529] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures5\n04/23/2025 09:47:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: generate_structures5, type: PyFunction, finished.\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict4,get_dict10,get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict4, type: PyFunction, finished.\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3,get_dict10,get_dict12,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05544] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:11 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10,get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe9,get_dict12,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05555] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe9, type: PyFunction, finished.\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:26 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:48:26 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe11,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05567] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:40 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe11, type: PyFunction, finished.\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict16\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:48:42 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe13,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05577] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe13, type: PyFunction, finished.\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict16\n04/23/2025 09:48:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict16, type: PyFunction, finished.\n04/23/2025 09:48:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05592] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:49:14 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:49:15 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe15, type: PyFunction, finished.\n04/23/2025 09:49:15 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list2,get_list17\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_list2, type: PyFunction, finished.\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve1\n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve1, type: PyFunction, finished.\n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|finalize]: Finalize workgraph.\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "id": "c4f5c047-c6da-4b54-9007-415faca7a448", + "cell_type": "markdown", + "source": "## Load Workflow with jobflow", + "metadata": {} + }, + { + "id": "b8e3c2ca-2672-4e9d-aada-63344842dbcf", + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 18 + }, + { + "id": "54a24ff6c569094e", + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 19 + }, + { + "id": "48a27146-7372-40ab-8b02-e2a9283d4748", + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=workflow_json_filename)", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 20 + }, + { + "id": "bf84ef10-e1af-475f-a457-d2703c7276a0", + "cell_type": "code", + "source": "flow[0].function_kwargs[\"a\"] = 4.05", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 21 + }, + { + "id": "98fa5694-2cc6-44e9-a6e7-2cc71b4f48ce", + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:49:19,623 INFO Started executing jobs locally\n2025-04-23 09:49:19,791 INFO Starting job - get_bulk_structure (3a79a0c7-c443-40e5-8c4c-030ccf176743)\n2025-04-23 09:49:19,795 INFO Finished job - get_bulk_structure (3a79a0c7-c443-40e5-8c4c-030ccf176743)\n2025-04-23 09:49:19,796 INFO Starting job - get_dict (d168da9a-66a0-4ab1-ab65-7b5b4b078fac)\n2025-04-23 09:49:19,799 INFO Finished job - get_dict (d168da9a-66a0-4ab1-ab65-7b5b4b078fac)\n2025-04-23 09:49:19,809 INFO Starting job - calculate_qe (0b40ca71-1ea2-4181-8d91-1de15ef3df17)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05604] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:50:11,885 INFO Finished job - calculate_qe (0b40ca71-1ea2-4181-8d91-1de15ef3df17)\n2025-04-23 09:50:11,886 INFO Starting job - generate_structures (451e4839-7612-4530-bbdb-9cb3e77cc6b8)\n2025-04-23 09:50:11,891 INFO Finished job - generate_structures (451e4839-7612-4530-bbdb-9cb3e77cc6b8)\n2025-04-23 09:50:11,892 INFO Starting job - get_dict (b586638f-b882-4439-a28e-a2c76f50c0e2)\n2025-04-23 09:50:11,893 INFO Finished job - get_dict (b586638f-b882-4439-a28e-a2c76f50c0e2)\n2025-04-23 09:50:11,895 INFO Starting job - get_dict (974e6f28-2911-4b3b-bc55-786c2111e39e)\n2025-04-23 09:50:11,896 INFO Finished job - get_dict (974e6f28-2911-4b3b-bc55-786c2111e39e)\n2025-04-23 09:50:11,897 INFO Starting job - get_dict (1c0b7807-d38a-4e23-880f-bccd87c84b28)\n2025-04-23 09:50:11,899 INFO Finished job - get_dict (1c0b7807-d38a-4e23-880f-bccd87c84b28)\n2025-04-23 09:50:11,908 INFO Starting job - get_dict (8791b0c0-b424-4f62-80a9-3170660b35f9)\n2025-04-23 09:50:11,910 INFO Finished job - get_dict (8791b0c0-b424-4f62-80a9-3170660b35f9)\n2025-04-23 09:50:11,911 INFO Starting job - get_dict (b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4)\n2025-04-23 09:50:11,913 INFO Finished job - get_dict (b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4)\n2025-04-23 09:50:11,913 INFO Starting job - calculate_qe (146dc5e6-1415-4c92-9b81-c1dac13c4af7)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05619] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:50:23,619 INFO Finished job - calculate_qe (146dc5e6-1415-4c92-9b81-c1dac13c4af7)\n2025-04-23 09:50:23,620 INFO Starting job - calculate_qe (4760dd26-7403-4f3e-8d64-596893d84e95)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05630] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:50:35,807 INFO Finished job - calculate_qe (4760dd26-7403-4f3e-8d64-596893d84e95)\n2025-04-23 09:50:35,808 INFO Starting job - calculate_qe (e67d4ff9-8416-4eff-86da-8b82ca9e6a7b)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05641] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:50:49,609 INFO Finished job - calculate_qe (e67d4ff9-8416-4eff-86da-8b82ca9e6a7b)\n2025-04-23 09:50:49,610 INFO Starting job - calculate_qe (b351bbe7-8e96-4167-8eef-83fb97b952e9)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05657] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:51:03,448 INFO Finished job - calculate_qe (b351bbe7-8e96-4167-8eef-83fb97b952e9)\n2025-04-23 09:51:03,449 INFO Starting job - calculate_qe (2eee6b99-b12e-4e61-96f5-359461bf3c10)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05668] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:51:14,516 INFO Finished job - calculate_qe (2eee6b99-b12e-4e61-96f5-359461bf3c10)\n2025-04-23 09:51:14,517 INFO Starting job - get_list (7bb19e3c-c167-4477-beee-c93a5148e5ca)\n2025-04-23 09:51:14,520 INFO Finished job - get_list (7bb19e3c-c167-4477-beee-c93a5148e5ca)\n2025-04-23 09:51:14,521 INFO Starting job - get_list (cb1ca4e3-b479-40af-8f27-0a2562b9e246)\n2025-04-23 09:51:14,524 INFO Finished job - get_list (cb1ca4e3-b479-40af-8f27-0a2562b9e246)\n2025-04-23 09:51:14,525 INFO Starting job - plot_energy_volume_curve (15aebe69-961a-4b8f-a3e3-2371ca361d64)\n2025-04-23 09:51:14,588 INFO Finished job - plot_energy_volume_curve (15aebe69-961a-4b8f-a3e3-2371ca361d64)\n2025-04-23 09:51:14,589 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 22, + "output_type": "execute_result", + "data": { + "text/plain": "{'3a79a0c7-c443-40e5-8c4c-030ccf176743': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd168da9a-66a0-4ab1-ab65-7b5b4b078fac': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '0b40ca71-1ea2-4181-8d91-1de15ef3df17': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365262253586, 'volume': 66.21567448236675}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '451e4839-7612-4530-bbdb-9cb3e77cc6b8': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859622328, 0.0, 0.0], [0.0, 3.9060197859622328, 0.0], [0.0, 0.0, 3.9060197859622328]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981116, 1.953009892981116], [1.953009892981116, 0.0, 1.953009892981116], [1.953009892981116, 1.953009892981116, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443181347, 0.0, 0.0], [0.0, 3.9770538443181347, 0.0], [0.0, 0.0, 3.9770538443181347]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988526922159067, 1.988526922159067], [1.988526922159067, 0.0, 1.988526922159067], [1.988526922159067, 1.988526922159067, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.1119709272830445, 0.0, 0.0], [0.0, 4.1119709272830445, 0.0], [0.0, 0.0, 4.1119709272830445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985463641522, 2.055985463641522], [2.055985463641522, 0.0, 2.055985463641522], [2.055985463641522, 2.055985463641522, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372271, 0.0, 0.0], [0.0, 4.176230852372271, 0.0], [0.0, 0.0, 4.176230852372271]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186135, 2.088115426186135], [2.088115426186135, 0.0, 2.088115426186135], [2.088115426186135, 2.088115426186135, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b586638f-b882-4439-a28e-a2c76f50c0e2': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443181347, 0.0, 0.0], [0.0, 3.9770538443181347, 0.0], [0.0, 0.0, 3.9770538443181347]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988526922159067, 1.988526922159067], [1.988526922159067, 0.0, 1.988526922159067], [1.988526922159067, 1.988526922159067, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '974e6f28-2911-4b3b-bc55-786c2111e39e': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '1c0b7807-d38a-4e23-880f-bccd87c84b28': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.1119709272830445, 0.0, 0.0], [0.0, 4.1119709272830445, 0.0], [0.0, 0.0, 4.1119709272830445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985463641522, 2.055985463641522], [2.055985463641522, 0.0, 2.055985463641522], [2.055985463641522, 2.055985463641522, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '8791b0c0-b424-4f62-80a9-3170660b35f9': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372271, 0.0, 0.0], [0.0, 4.176230852372271, 0.0], [0.0, 0.0, 4.176230852372271]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186135, 2.088115426186135], [2.088115426186135, 0.0, 2.088115426186135], [2.088115426186135, 2.088115426186135, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859622328, 0.0, 0.0], [0.0, 3.9060197859622328, 0.0], [0.0, 0.0, 3.9060197859622328]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981116, 1.953009892981116], [1.953009892981116, 0.0, 1.953009892981116], [1.953009892981116, 1.953009892981116, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '146dc5e6-1415-4c92-9b81-c1dac13c4af7': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.97705382693468, 0.0, 0.0], [0.0, 3.97705382693468, 0.0], [0.0, 0.0, 3.97705382693468]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082746, 1.9885269135082746], [1.9885269135082746, 0.0, 1.9885269135082746], [1.9885269135082746, 1.9885269135082746, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594584, 'volume': 62.90488993338832}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '4760dd26-7403-4f3e-8d64-596893d84e95': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263706, 0.0, 0.0], [0.0, 4.045637198263706, 0.0], [0.0, 0.0, 4.045637198263706]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583887, 2.0228185991583887], [2.0228185991583887, 0.0, 2.0228185991583887], [2.0228185991583887, 2.0228185991583887, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668336, 'volume': 66.21567361409329}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e67d4ff9-8416-4eff-86da-8b82ca9e6a7b': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309876, 0.0, 0.0], [0.0, 4.111970909309876, 0.0], [0.0, 0.0, 4.111970909309876]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025814, 'volume': 69.52645729479767}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b351bbe7-8e96-4167-8eef-83fb97b952e9': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411823, 0.0, 0.0], [0.0, 4.17623083411823, 0.0], [0.0, 0.0, 4.17623083411823]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8737904693405, 'volume': 72.83724097550255}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2eee6b99-b12e-4e61-96f5-359461bf3c10': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197688892653, 0.0, 0.0], [0.0, 3.9060197688892653, 0.0], [0.0, 0.0, 3.9060197688892653]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150649, 'volume': 59.59410625268378}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7bb19e3c-c167-4477-beee-c93a5148e5ca': {1: Response(output=[-1074.8457446150649, -1074.9161488594584, -1074.9365241668336, -1074.9192860025814, -1074.8737904693405], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'cb1ca4e3-b479-40af-8f27-0a2562b9e246': {1: Response(output=[59.59410625268378, 62.90488993338832, 66.21567361409329, 69.52645729479767, 72.83724097550255], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '15aebe69-961a-4b8f-a3e3-2371ca361d64': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 22 + } + ] +} diff --git a/qe_xml_parser/pyproject.toml b/example_workflows/quantum_espresso/qe_xml_parser/pyproject.toml similarity index 100% rename from qe_xml_parser/pyproject.toml rename to example_workflows/quantum_espresso/qe_xml_parser/pyproject.toml diff --git a/qe_xml_parser/src/qe_xml_parser/__init__.py b/example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/__init__.py similarity index 100% rename from qe_xml_parser/src/qe_xml_parser/__init__.py rename to example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/__init__.py diff --git a/qe_xml_parser/src/qe_xml_parser/parsers.py b/example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/parsers.py similarity index 100% rename from qe_xml_parser/src/qe_xml_parser/parsers.py rename to example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/parsers.py diff --git a/qe_xml_parser/src/qe_xml_parser/schemas/__init__.py b/example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/schemas/__init__.py similarity index 100% rename from qe_xml_parser/src/qe_xml_parser/schemas/__init__.py rename to example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/schemas/__init__.py diff --git a/qe_xml_parser/src/qe_xml_parser/schemas/qes_230310.xsd b/example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/schemas/qes_230310.xsd similarity index 100% rename from qe_xml_parser/src/qe_xml_parser/schemas/qes_230310.xsd rename to example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser/schemas/qes_230310.xsd diff --git a/quantum_espresso_workflow.py b/example_workflows/quantum_espresso/quantum_espresso_workflow.py similarity index 100% rename from quantum_espresso_workflow.py rename to example_workflows/quantum_espresso/quantum_espresso_workflow.py diff --git a/universal_workflow_qe.ipynb b/example_workflows/quantum_espresso/universal_workflow_qe.ipynb similarity index 100% rename from universal_workflow_qe.ipynb rename to example_workflows/quantum_espresso/universal_workflow_qe.ipynb diff --git a/workflow_qe.json b/example_workflows/quantum_espresso/workflow_qe.json similarity index 100% rename from workflow_qe.json rename to example_workflows/quantum_espresso/workflow_qe.json diff --git a/jobflow_arithmetic.ipynb b/jobflow_arithmetic.ipynb deleted file mode 100644 index b431d12..0000000 --- a/jobflow_arithmetic.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"982a4fbe-7cf9-45dd-84ae-9854149db0b9","cell_type":"markdown","source":"# jobflow","metadata":{}},{"id":"e6180712-d081-45c7-ba41-fc5191f10427","cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"id":"000bbd4a-f53c-4eea-9d85-76f0aa2ca10b","cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from arithmetic_workflow import (\n get_sum as _get_sum,\n get_prod_and_div as _get_prod_and_div,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"jobflow_simple.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"get_sum = job(_get_sum)\nget_prod_and_div = job(_get_prod_and_div, data=[\"prod\", \"div\"])","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"ecef1ed5-a8d3-48c3-9e01-4a40e55c1153","cell_type":"code","source":"obj = get_prod_and_div(x=1, y=2)","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"2b88a30a-e26b-4802-89b7-79ca08cc0af9","cell_type":"code","source":"w = get_sum(x=obj.output.prod, y=obj.output.div)","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"a5e5ca63-2906-47c9-bac6-adebf8643cba","cell_type":"code","source":"flow = Flow([obj, w])","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"id":"e464da97-16a1-4772-9a07-0a47f152781d","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"id":"bca646b2-0a9a-4271-966a-e5903a8c9031","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": [{\"id\": 0, \"function\": \"arithmetic_workflow.get_prod_and_div\"}, {\"id\": 1, \"function\": \"arithmetic_workflow.get_sum\"}, {\"id\": 2, \"value\": 1}, {\"id\": 3, \"value\": 2}], \"edges\": [{\"target\": 0, \"targetPort\": \"x\", \"source\": 2, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"y\", \"source\": 3, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"x\", \"source\": 0, \"sourcePort\": \"prod\"}, {\"target\": 1, \"targetPort\": \"y\", \"source\": 0, \"sourcePort\": \"div\"}]}"}],"execution_count":10},{"id":"87a27540-c390-4d34-ae75-4739bfc4c1b7","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"66a1b3a6-3d3b-4caa-b58f-d8bc089b1074","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":11},{"id":"4679693b-039b-45cf-8c67-5b2b3d705a83","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"68c41a61-d185-47e8-ba31-eeff71d8b2c6","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"4be70fedd20f4c3597415dc903adc743"}},"metadata":{}}],"execution_count":13},{"id":"05228ece-643c-420c-8df8-4ce3df379515","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:35:55 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:35:56 AM <2073> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":14},{"id":"2c942094-61b4-4e94-859a-64f87b5bec64","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"ea102341-84f7-4156-a7d1-c3ab1ea613a5","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"8f2a621d-b533-4ddd-8bcd-c22db2f922ec","cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_a30133cc7a07a2e64b505497250df84d\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x746386902750>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x746386a3b5f0>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x7463869023f0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n"},"metadata":{}}],"execution_count":16},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_prod_and_div_955f44280fa0072653e4d910a57d7b92 was saved and received the ID: 1\nThe job get_sum_55b699570ac3c74e1e8078a45b657240 was saved and received the ID: 2\n"},{"execution_count":17,"output_type":"execute_result","data":{"text/plain":"2.5"},"metadata":{}}],"execution_count":17},{"id":"9d819ed0-689c-46a7-9eff-0afb5ed66efc","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/jobflow_nfdi.ipynb b/jobflow_nfdi.ipynb deleted file mode 100644 index e0d12f0..0000000 --- a/jobflow_nfdi.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"048b53d1-db08-44ff-84cc-a4ff50032944","cell_type":"markdown","source":"# jobflow","metadata":{}},{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"856b2ba2-93d5-4516-93e1-a1eac49c48f2","cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from jobflow import job, Flow\n\nfrom python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":1},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":5},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file.output,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file.output, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = compile_paper(\n macros_tex=macros_tex_file.output, \n plot_file=pvbatch_output_file.output,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"flow = Flow([gmsh_output_file, meshio_output_dict, poisson_dict, pvbatch_output_file, macros_tex_file, paper_output])","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"jobflow_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":14},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"c3528d55-6bf7-47ed-a110-65c47446ba92","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"b702a754434d41848a5b074dc7a35118"}},"metadata":{}}],"execution_count":16},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:36:34 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/23/2025 09:36:36 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/23/2025 09:36:36 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/23/2025 09:36:38 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/23/2025 09:36:38 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/23/2025 09:36:41 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/23/2025 09:36:41 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/23/2025 09:36:44 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/23/2025 09:36:44 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/23/2025 09:36:45 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/23/2025 09:36:45 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:36:48 AM <2295> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":17},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"id":"4452a648-d4c3-4f5f-8678-ffb54bef17dc","cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151abb90>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab920>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab5f0>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab290>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab5f0>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aaf60>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab260>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151ab680>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aad20>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x79d1151aaf30>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n"},"metadata":{}}],"execution_count":19},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":20,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":20}]} \ No newline at end of file diff --git a/jobflow_qe.ipynb b/jobflow_qe.ipynb deleted file mode 100644 index 19d4836..0000000 --- a/jobflow_qe.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.8"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# jobflow","metadata":{}},{"cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"cell_type":"code","source":"import numpy as np","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":2},{"cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"cell_type":"code","source":"from quantum_espresso_workflow import (\n calculate_qe as _calculate_qe, \n generate_structures as _generate_structures, \n get_bulk_structure as _get_bulk_structure, \n plot_energy_volume_curve as _plot_energy_volume_curve,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"workflow_json_filename = \"jobflow_qe.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"cell_type":"code","source":"calculate_qe = job(_calculate_qe, data=[\"energy\", \"volume\", \"structure\"])\ngenerate_structures = job(_generate_structures, data=[f\"s_{i}\" for i in range(100)])\nplot_energy_volume_curve = job(_plot_energy_volume_curve)\nget_bulk_structure = job(_get_bulk_structure)","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"cell_type":"code","source":"pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"cell_type":"code","source":"structure = get_bulk_structure(\n element=\"Al\",\n a=4.04,\n cubic=True,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"cell_type":"code","source":"calc_mini = calculate_qe(\n working_directory=\"mini\",\n input_dict={\n \"structure\": structure.output,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"cell_type":"code","source":"number_of_strains = 5\nstructure_lst = generate_structures(\n structure=calc_mini.output.structure,\n strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"cell_type":"code","source":"job_strain_lst = []\nfor i in range(number_of_strains):\n calc_strain = calculate_qe(\n working_directory=\"strain_\" + str(i),\n input_dict={\n \"structure\": getattr(structure_lst.output, f\"s_{i}\"),\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n )\n job_strain_lst.append(calc_strain)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"cell_type":"code","source":"plot = plot_energy_volume_curve(\n volume_lst=[job.output.volume for job in job_strain_lst],\n energy_lst=[job.output.energy for job in job_strain_lst],\n)","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"flow = Flow([structure, calc_mini, structure_lst] + job_strain_lst + [plot])","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": [{\"id\": 0, \"function\": \"quantum_espresso_workflow.get_bulk_structure\"}, {\"id\": 1, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 2, \"function\": \"quantum_espresso_workflow.generate_structures\"}, {\"id\": 3, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 4, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 5, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 6, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 7, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 8, \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"}, {\"id\": 9, \"value\": \"Al\"}, {\"id\": 10, \"value\": 4.04}, {\"id\": 11, \"value\": true}, {\"id\": 12, \"value\": \"mini\"}, {\"id\": 13, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 14, \"value\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}}, {\"id\": 15, \"value\": [3, 3, 3]}, {\"id\": 16, \"value\": \"vc-relax\"}, {\"id\": 17, \"value\": 0.02}, {\"id\": 18, \"value\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1]}, {\"id\": 19, \"value\": \"strain_0\"}, {\"id\": 20, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 21, \"value\": \"scf\"}, {\"id\": 22, \"value\": \"strain_1\"}, {\"id\": 23, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 24, \"value\": \"strain_2\"}, {\"id\": 25, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 26, \"value\": \"strain_3\"}, {\"id\": 27, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 28, \"value\": \"strain_4\"}, {\"id\": 29, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 30, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 31, \"function\": \"python_workflow_definition.shared.get_list\"}], \"edges\": [{\"target\": 0, \"targetPort\": \"element\", \"source\": 9, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"a\", \"source\": 10, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"cubic\", \"source\": 11, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"working_directory\", \"source\": 12, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"structure\", \"source\": 0, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"calculation\", \"source\": 16, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"input_dict\", \"source\": 13, \"sourcePort\": null}, {\"target\": 2, \"targetPort\": \"structure\", \"source\": 1, \"sourcePort\": \"structure\"}, {\"target\": 2, \"targetPort\": \"strain_lst\", \"source\": 18, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"working_directory\", \"source\": 19, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_0\"}, {\"target\": 20, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 20, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"input_dict\", \"source\": 20, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"working_directory\", \"source\": 22, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_1\"}, {\"target\": 23, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 23, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"input_dict\", \"source\": 23, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"working_directory\", \"source\": 24, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_2\"}, {\"target\": 25, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 25, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"input_dict\", \"source\": 25, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"working_directory\", \"source\": 26, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_3\"}, {\"target\": 27, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 27, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"input_dict\", \"source\": 27, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"working_directory\", \"source\": 28, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"structure\", \"source\": 2, \"sourcePort\": \"s_4\"}, {\"target\": 29, \"targetPort\": \"pseudopotentials\", \"source\": 14, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"kpts\", \"source\": 15, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"calculation\", \"source\": 21, \"sourcePort\": null}, {\"target\": 29, \"targetPort\": \"smearing\", \"source\": 17, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"input_dict\", \"source\": 29, \"sourcePort\": null}, {\"target\": 30, \"targetPort\": \"0\", \"source\": 3, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"1\", \"source\": 4, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"2\", \"source\": 5, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"3\", \"source\": 6, \"sourcePort\": \"volume\"}, {\"target\": 30, \"targetPort\": \"4\", \"source\": 7, \"sourcePort\": \"volume\"}, {\"target\": 8, \"targetPort\": \"volume_lst\", \"source\": 30, \"sourcePort\": null}, {\"target\": 31, \"targetPort\": \"0\", \"source\": 3, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"1\", \"source\": 4, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"2\", \"source\": 5, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"3\", \"source\": 6, \"sourcePort\": \"energy\"}, {\"target\": 31, \"targetPort\": \"4\", \"source\": 7, \"sourcePort\": \"energy\"}, {\"target\": 8, \"targetPort\": \"energy_lst\", \"source\": 31, \"sourcePort\": null}]}"}],"execution_count":15},{"cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"cell_type":"code","source":"from aiida import orm, load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":16},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":17},{"cell_type":"code","source":"wg = load_workflow_json(workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"wg.nodes.get_bulk_structure1.inputs.a.value = orm.Float(4.05)","metadata":{"scrolled":true,"trusted":true},"outputs":[],"execution_count":19},{"cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":20,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"5181550fd32b489581df9e1b0d490087"}},"metadata":{}}],"execution_count":20},{"cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:37:37 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n04/23/2025 09:37:38 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n04/23/2025 09:37:38 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n04/23/2025 09:37:39 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:37:39 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03734] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n04/23/2025 09:38:33 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n04/23/2025 09:38:35 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n04/23/2025 09:38:35 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:38:36 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n04/23/2025 09:38:36 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03752] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n04/23/2025 09:38:47 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:38:48 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:38:48 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03763] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n04/23/2025 09:39:00 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n04/23/2025 09:39:01 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n04/23/2025 09:39:01 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03775] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:39:14 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n04/23/2025 09:39:15 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:39:15 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03786] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n04/23/2025 09:39:30 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n04/23/2025 09:39:31 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n04/23/2025 09:39:31 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03802] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n04/23/2025 09:39:49 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n04/23/2025 09:39:50 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n04/23/2025 09:39:50 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:39:51 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:39:51 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:39:52 AM <3661> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [58|WorkGraphEngine|finalize]: Finalize workgraph.\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":21},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":22},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_32ef32f9566b9201becfbb5fe459cf95\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a4620>\n\n\n\nvolume_lst_1de093461d597c9482af1b1162abe220\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a43b0>\n\n\n\nvolume_lst_1de093461d597c9482af1b1162abe220->create_function_job_32ef32f9566b9201becfbb5fe459cf95\n\n\n\n\n\n0_177953661fa32c20aeffbbe7a1ea38c4\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573dd0>\n\n\n\n0_177953661fa32c20aeffbbe7a1ea38c4->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_177953661fa32c20aeffbbe7a1ea38c4\n\n\n\n\n\n0_2660ce7e7ff52f944150be4ac7156b8d\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565737a0>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_2660ce7e7ff52f944150be4ac7156b8d\n\n\n\n\n\nenergy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573d40>\n\n\n\n0_2660ce7e7ff52f944150be4ac7156b8d->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572ae0>\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18->0_177953661fa32c20aeffbbe7a1ea38c4\n\n\n\n\n\ninput_dict_d4fd21664755878ddd70933cce962f18->0_2660ce7e7ff52f944150be4ac7156b8d\n\n\n\n\n\nstructure_8892d31d306c467640f6211152645923\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572810>\n\n\n\nstructure_8892d31d306c467640f6211152645923->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565718b0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_8892d31d306c467640f6211152645923\n\n\n\n\n\nstructure_3d5c86c809bb793502a724d190fc0992\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565724e0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_3d5c86c809bb793502a724d190fc0992\n\n\n\n\n\nstructure_73859cd8cf8266c2c8fca0036718a3ca\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572210>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_73859cd8cf8266c2c8fca0036718a3ca\n\n\n\n\n\nstructure_90f5c8bcaba951371c7a0fca07a3a1c6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571ee0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_90f5c8bcaba951371c7a0fca07a3a1c6\n\n\n\n\n\nstructure_455912e219ba7dc19b4b63accdb089e8\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571bb0>\n\n\n\nstructure_bb0e80218d6fb6d1f539fecce43c6da5->structure_455912e219ba7dc19b4b63accdb089e8\n\n\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572780>\n\n\n\nstructure_3d5c86c809bb793502a724d190fc0992->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572450>\n\n\n\nstructure_73859cd8cf8266c2c8fca0036718a3ca->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956572180>\n\n\n\nstructure_90f5c8bcaba951371c7a0fca07a3a1c6->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571e50>\n\n\n\nstructure_455912e219ba7dc19b4b63accdb089e8->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_bb0e80218d6fb6d1f539fecce43c6da5\n\n\n\n\n\ninput_dict_9588611272d06d8efced69e7f4a609b7\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571010>\n\n\n\ninput_dict_9588611272d06d8efced69e7f4a609b7->structure_bb0e80218d6fb6d1f539fecce43c6da5\n\n\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956571220>\n\n\n\nstructure_8a946279df78421b8c6c2efb8df18e00->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_8a946279df78421b8c6c2efb8df18e00\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\n1_16a57ad80c618ed046701f9d6bea507d\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573da0>\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667->1_16a57ad80c618ed046701f9d6bea507d\n\n\n\n\n\n1_b3dca6b1e782f19126f68f1450166e4c\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573770>\n\n\n\ninput_dict_220c96253f8aedd354ad8343c2016667->1_b3dca6b1e782f19126f68f1450166e4c\n\n\n\n\n\n2_d396dc02378656e5149b50dbea2c6849\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573bc0>\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b->2_d396dc02378656e5149b50dbea2c6849\n\n\n\n\n\n2_774a8fdeb27a17082a2eef733fa8f89a\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565732c0>\n\n\n\ninput_dict_2e602a54c4d91fa9f13bf1817873386b->2_774a8fdeb27a17082a2eef733fa8f89a\n\n\n\n\n\n3_877d87905334b912a295e5804e3fd1c2\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7e8956573ef0>\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd->3_877d87905334b912a295e5804e3fd1c2\n\n\n\n\n\n3_6e96371d1e2c31701a9bf3e866b183ca\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565738c0>\n\n\n\ninput_dict_9d35ebdf31269fb6831eaba54d8f87bd->3_6e96371d1e2c31701a9bf3e866b183ca\n\n\n\n\n\n4_26ec0cf277f9f46050b75f68dd6eb03e\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7e89563a4050>\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9->4_26ec0cf277f9f46050b75f68dd6eb03e\n\n\n\n\n\n4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7e89565739b0>\n\n\n\ninput_dict_4b2508b7156463722cb2882e1ced8fd9->4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_9588611272d06d8efced69e7f4a609b7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86\n\nstrain_lst=[0.9, 0.9500000000000001, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_8892d31d306c467640f6211152645923\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_3d5c86c809bb793502a724d190fc0992\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_73859cd8cf8266c2c8fca0036718a3ca\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_90f5c8bcaba951371c7a0fca07a3a1c6\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_455912e219ba7dc19b4b63accdb089e8\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_d4fd21664755878ddd70933cce962f18\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_220c96253f8aedd354ad8343c2016667\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2e602a54c4d91fa9f13bf1817873386b\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_9d35ebdf31269fb6831eaba54d8f87bd\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_4b2508b7156463722cb2882e1ced8fd9\n\n\n\n\n\n1_16a57ad80c618ed046701f9d6bea507d->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_16a57ad80c618ed046701f9d6bea507d\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_b3dca6b1e782f19126f68f1450166e4c\n\n\n\n\n\n1_b3dca6b1e782f19126f68f1450166e4c->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n2_d396dc02378656e5149b50dbea2c6849->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_d396dc02378656e5149b50dbea2c6849\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_774a8fdeb27a17082a2eef733fa8f89a\n\n\n\n\n\n2_774a8fdeb27a17082a2eef733fa8f89a->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n3_877d87905334b912a295e5804e3fd1c2->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_877d87905334b912a295e5804e3fd1c2\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_6e96371d1e2c31701a9bf3e866b183ca\n\n\n\n\n\n3_6e96371d1e2c31701a9bf3e866b183ca->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\n4_26ec0cf277f9f46050b75f68dd6eb03e->volume_lst_1de093461d597c9482af1b1162abe220\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_26ec0cf277f9f46050b75f68dd6eb03e\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_df9dceb6d52a2c322ae1cba07c03d9f3\n\n\n\n\n\n4_df9dceb6d52a2c322ae1cba07c03d9f3->energy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb\n\n\n\n\n\nenergy_lst_7c0b4a6176947c3cfc7e3ede184ac4cb->create_function_job_32ef32f9566b9201becfbb5fe459cf95\n\n\n\n\n"},"metadata":{}}],"execution_count":23},{"cell_type":"code","source":"delayed_object_lst[0].input['a'] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":24},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_e3c0bf43f7edf24d215901bf93271e87 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03835] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job generate_structures_89c98f83a15c7e4629b528fb8c259dc0 was saved and received the ID: 4\nThe job get_dict_4460300f595bfcc30ce17af0b31c8142 was saved and received the ID: 5\nThe job calculate_qe_ce57e1390b2d70b601bd0b6372b75743 was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03850] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_b928c97580ae9dba3e4f7f776dd64ff2 was saved and received the ID: 7\nThe job calculate_qe_199c2f21d205b83b19eb452135f485f4 was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03860] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_c07eddc6adee32971572cbe8e5875ddf was saved and received the ID: 9\nThe job calculate_qe_c9beb3d48a3c6888a35ec8b706f0a333 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03870] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_67d13c2b6722a40b6c41623343ace5eb was saved and received the ID: 11\nThe job calculate_qe_0c4bf53901c3453824c0261fbd4a4f7e was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03884] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_b70792626f9cb4bfe8bc34627f103fd4 was saved and received the ID: 13\nThe job calculate_qe_86a733fa48f90c657f29f907e2283590 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:03894] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_list_cca1d5d7a794bd0ac3693b2b5eca8bc2 was saved and received the ID: 15\nThe job get_list_1acf1cb5d3c716bd2b7eb2614b745c39 was saved and received the ID: 16\nThe job plot_energy_volume_curve_8671230cc853d6cabc56f6f722bbd04e was saved and received the ID: 17\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":25},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/pyiron_base_arithmetic.ipynb b/pyiron_base_arithmetic.ipynb deleted file mode 100644 index 0c98533..0000000 --- a/pyiron_base_arithmetic.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"c39b76fb-259f-4e16-a44d-02a295c82386","cell_type":"markdown","source":"# pyiron","metadata":{}},{"id":"3638419b-a0cb-49e2-b157-7fbb1acde90f","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"b4a78447-e87c-4fb4-8d17-d9a280eb7254","cell_type":"code","source":"from pyiron_base import job","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from arithmetic_workflow import (\n get_sum as _get_sum,\n get_prod_and_div as _get_prod_and_div,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"pyiron_arithmetic.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"get_sum = job(_get_sum)\nget_prod_and_div = job(_get_prod_and_div, output_key_lst=[\"prod\", \"div\"])","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"2b88a30a-e26b-4802-89b7-79ca08cc0af9","cell_type":"code","source":"obj = get_prod_and_div(x=1, y=2)","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"a5e5ca63-2906-47c9-bac6-adebf8643cba","cell_type":"code","source":"w = get_sum(x=obj.output.prod, y=obj.output.div)","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"e464da97-16a1-4772-9a07-0a47f152781d","cell_type":"code","source":"write_workflow_json(delayed_object=w, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"id":"bca646b2-0a9a-4271-966a-e5903a8c9031","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": [{\"id\": 0, \"function\": \"arithmetic_workflow.get_sum\"}, {\"id\": 1, \"function\": \"arithmetic_workflow.get_prod_and_div\"}, {\"id\": 2, \"value\": 1}, {\"id\": 3, \"value\": 2}], \"edges\": [{\"target\": 0, \"targetPort\": \"x\", \"source\": 1, \"sourcePort\": \"prod\"}, {\"target\": 1, \"targetPort\": \"x\", \"source\": 2, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"y\", \"source\": 3, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"y\", \"source\": 1, \"sourcePort\": \"div\"}]}"}],"execution_count":9},{"id":"a4c0faaf-e30d-4ded-8e9f-57f97f51b14c","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"2ecc229f-daa1-49b9-9279-a6b5ae1aa4f2","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":10},{"id":"68a56b32-9f99-43d7-aaee-0c1cd9522681","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"8f2a621d-b533-4ddd-8bcd-c22db2f922ec","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":12,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"cb6aafce370b43bb9904c64f03c93cc0"}},"metadata":{}}],"execution_count":12},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"\nwg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:45:47 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div2\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|update_task_state]: Task: get_prod_and_div2, type: PyFunction, finished.\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum1\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|update_task_state]: Task: get_sum1, type: PyFunction, finished.\n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:45:48 AM <4032> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [138|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":13},{"id":"0c3503e1-0a32-40e1-845d-3fd9ec3c4c19","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"4abb0481-8e38-479d-ae61-6c46d091653e","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":14},{"id":"8253dd7c283bf3f7","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"4b45e83b-945f-48c5-8e20-9df0ce0a14a1","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"id":"8665c39c-220c-4982-b738-c31f6460530f","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:45:49,174 INFO Started executing jobs locally\n2025-04-23 09:45:49,540 INFO Starting job - get_prod_and_div (77d76447-21f8-4ad8-b2b5-bef7263ef5b9)\n2025-04-23 09:45:49,543 INFO Finished job - get_prod_and_div (77d76447-21f8-4ad8-b2b5-bef7263ef5b9)\n2025-04-23 09:45:49,544 INFO Starting job - get_sum (e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0)\n2025-04-23 09:45:49,546 INFO Finished job - get_sum (e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0)\n2025-04-23 09:45:49,546 INFO Finished executing jobs locally\n"},{"execution_count":17,"output_type":"execute_result","data":{"text/plain":"{'77d76447-21f8-4ad8-b2b5-bef7263ef5b9': {1: Response(output={'prod': 2, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e61e0bc0-bddd-4ac9-93f0-cf5f064e17b0': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":17},{"id":"cf76f305-24de-45a7-be8e-cfe45cd6458e","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/pyiron_base_nfdi.ipynb b/pyiron_base_nfdi.ipynb deleted file mode 100644 index 08a2778..0000000 --- a/pyiron_base_nfdi.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"# pyiron\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"91dd48ea-aa7e-4937-a68e-59fc5017eb1e","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from pyiron_base import job\n\nfrom python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, output_key_lst=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, output_key_lst=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":5},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = compile_paper(\n macros_tex=macros_tex_file, \n plot_file=pvbatch_output_file,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"id":"63f29646-3846-4a97-a033-20e9df0ac214","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"f62111ba-9271-4987-9c7e-3b1c9f9eae7a","cell_type":"code","source":"write_workflow_json(delayed_object=paper_output, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"d789971e-8f41-45fa-832a-11fd72dea96e","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"a6e85e89-5d7a-40eb-809c-ac44974e3fd7","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":13},{"id":"3de84fb7-b01b-4541-868a-92e881eb6e77","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"id":"b33f5528-10cd-47c8-8723-622902978859","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"ef807dc1b56a416796bab756bbb1896f"}},"metadata":{}}],"execution_count":15},{"id":"15282ca1-d339-40e7-ad68-8a7613ed08da","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:46:12 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh6\n04/23/2025 09:46:13 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: generate_mesh6, type: PyFunction, finished.\n04/23/2025 09:46:13 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf5\n04/23/2025 09:46:15 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf5, type: PyFunction, finished.\n04/23/2025 09:46:15 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson4\n04/23/2025 09:46:19 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: poisson4, type: PyFunction, finished.\n04/23/2025 09:46:19 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line3\n04/23/2025 09:46:21 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: plot_over_line3, type: PyFunction, finished.\n04/23/2025 09:46:21 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros2\n04/23/2025 09:46:23 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: substitute_macros2, type: PyFunction, finished.\n04/23/2025 09:46:23 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper1\n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|update_task_state]: Task: compile_paper1, type: PyFunction, finished.\n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:46:26 AM <4155> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [149|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":16},{"id":"55dc8d12-dfe6-4465-a368-b7e590ae6800","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"dff46eb8-e0e7-49bb-8c40-0db2df133124","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":17},{"id":"6a189459-84e4-4738-ada1-37ee8c65b2ab","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"id":"6e7f3614-c971-4e2d-83f0-96f0d0fc04de","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"id":"2d87ed45-f5d9-403f-a03a-26be4a47a3ef","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:46:27,159 INFO Started executing jobs locally\n2025-04-23 09:46:27,488 INFO Starting job - generate_mesh (972ab469-7d1c-4dba-9d59-957741b6a6c8)\n2025-04-23 09:46:28,720 INFO Finished job - generate_mesh (972ab469-7d1c-4dba-9d59-957741b6a6c8)\n2025-04-23 09:46:28,721 INFO Starting job - convert_to_xdmf (7374ea3b-fa17-4554-bea9-5e97bf7c49a9)\n2025-04-23 09:46:30,169 INFO Finished job - convert_to_xdmf (7374ea3b-fa17-4554-bea9-5e97bf7c49a9)\n2025-04-23 09:46:30,170 INFO Starting job - poisson (5c920484-2b4a-47d1-92a1-5d2919557682)\n2025-04-23 09:46:33,008 INFO Finished job - poisson (5c920484-2b4a-47d1-92a1-5d2919557682)\n2025-04-23 09:46:33,009 INFO Starting job - plot_over_line (82770ae4-8a07-44c2-8a87-1cee9b178df5)\n2025-04-23 09:46:35,835 INFO Finished job - plot_over_line (82770ae4-8a07-44c2-8a87-1cee9b178df5)\n2025-04-23 09:46:35,836 INFO Starting job - substitute_macros (35dd4c5e-41f5-4d23-99ab-6972ad8d4827)\n2025-04-23 09:46:36,748 INFO Finished job - substitute_macros (35dd4c5e-41f5-4d23-99ab-6972ad8d4827)\n2025-04-23 09:46:36,749 INFO Starting job - compile_paper (785da10b-dd2a-47eb-9d5e-91d7e889807d)\n2025-04-23 09:46:39,139 INFO Finished job - compile_paper (785da10b-dd2a-47eb-9d5e-91d7e889807d)\n2025-04-23 09:46:39,140 INFO Finished executing jobs locally\n"},{"execution_count":20,"output_type":"execute_result","data":{"text/plain":"{'972ab469-7d1c-4dba-9d59-957741b6a6c8': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7374ea3b-fa17-4554-bea9-5e97bf7c49a9': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5c920484-2b4a-47d1-92a1-5d2919557682': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '82770ae4-8a07-44c2-8a87-1cee9b178df5': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '35dd4c5e-41f5-4d23-99ab-6972ad8d4827': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '785da10b-dd2a-47eb-9d5e-91d7e889807d': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":20}]} \ No newline at end of file diff --git a/pyiron_base_qe.ipynb b/pyiron_base_qe.ipynb deleted file mode 100644 index 855d95e..0000000 --- a/pyiron_base_qe.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.8"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"be2d61b0-0d47-4349-b4b0-1b767c961644","cell_type":"markdown","source":"# pyiron","metadata":{}},{"id":"0bad2a57-1bd2-4837-94fe-f8c60e211fae","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"a2ed2608-9e1b-4a81-81cb-5079573ea2d1","cell_type":"code","source":"import numpy as np\nfrom pyiron_base import job\nfrom python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"b75c2530-9b89-4185-838f-a17e517fa68f","cell_type":"code","source":"from quantum_espresso_workflow import (\n calculate_qe as _calculate_qe, \n generate_structures as _generate_structures, \n get_bulk_structure as _get_bulk_structure, \n plot_energy_volume_curve as _plot_energy_volume_curve,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"07a950ca","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_qe.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"208ddfb8-dfda-4227-aa1f-3dc29e34ea82","cell_type":"code","source":"calculate_qe = job(_calculate_qe, output_key_lst=[\"energy\", \"volume\", \"structure\"])\ngenerate_structures = job(_generate_structures)\nplot_energy_volume_curve = job(_plot_energy_volume_curve)\nget_bulk_structure = job(_get_bulk_structure)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"5071d3a0-7c1f-44c5-85e0-dede1566c10c","cell_type":"code","source":"pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"1f1cb12f-4001-478d-8ea0-b369f4f2981a","cell_type":"code","source":"structure = get_bulk_structure(\n element=\"Al\",\n a=4.04,\n cubic=True,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"4140f07b-af54-41ef-be22-df6b5b53bf95","cell_type":"code","source":"calc_mini = calculate_qe(\n working_directory=\"mini\",\n input_dict={\n \"structure\": structure,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n)","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"3c4dae11-8750-42d5-807c-cd19f2b65706","cell_type":"code","source":"number_of_strains = 5\nstructure_lst = generate_structures( # the generate_structures() function is not available in the workflow graph\n structure=calc_mini.output.structure,\n strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n list_length=number_of_strains,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"id":"fdf3b62d-6cce-4312-8a5b-057224e36aca","cell_type":"code","source":"job_strain_lst = []\nfor i, structure_strain in enumerate(structure_lst):\n calc_strain = calculate_qe(\n working_directory=\"strain_\" + str(i),\n input_dict={\n \"structure\": structure_strain,\n \"pseudopotentials\": pseudopotentials,\n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n )\n job_strain_lst.append(calc_strain)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"id":"b2823306-0a8a-4ae6-bb1f-104e90e2fe41","cell_type":"code","source":"plot = plot_energy_volume_curve(\n volume_lst=[job.output.volume for job in job_strain_lst],\n energy_lst=[job.output.energy for job in job_strain_lst],\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"id":"52646121-335f-48e6-bd5e-a1d69d00e8bc","cell_type":"code","source":"write_workflow_json(delayed_object=plot, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"72c8e6e6-8e60-4a4f-81f3-968b4b5f36ee","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": [{\"id\": 0, \"function\": \"quantum_espresso_workflow.plot_energy_volume_curve\"}, {\"id\": 1, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 2, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 3, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 4, \"function\": \"quantum_espresso_workflow.generate_structures\"}, {\"id\": 5, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 6, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 7, \"function\": \"quantum_espresso_workflow.get_bulk_structure\"}, {\"id\": 8, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 9, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 10, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 11, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 12, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 13, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 14, \"function\": \"quantum_espresso_workflow.calculate_qe\"}, {\"id\": 15, \"function\": \"python_workflow_definition.shared.get_dict\"}, {\"id\": 16, \"function\": \"python_workflow_definition.shared.get_list\"}, {\"id\": 17, \"value\": \"strain_0\"}, {\"id\": 18, \"value\": \"mini\"}, {\"id\": 19, \"value\": \"Al\"}, {\"id\": 20, \"value\": 4.04}, {\"id\": 21, \"value\": true}, {\"id\": 22, \"value\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}}, {\"id\": 23, \"value\": [3, 3, 3]}, {\"id\": 24, \"value\": \"vc-relax\"}, {\"id\": 25, \"value\": 0.02}, {\"id\": 26, \"value\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1]}, {\"id\": 27, \"value\": \"scf\"}, {\"id\": 28, \"value\": \"strain_1\"}, {\"id\": 29, \"value\": \"strain_2\"}, {\"id\": 30, \"value\": \"strain_3\"}, {\"id\": 31, \"value\": \"strain_4\"}], \"edges\": [{\"target\": 0, \"targetPort\": \"volume_lst\", \"source\": 1, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"0\", \"source\": 2, \"sourcePort\": \"volume\"}, {\"target\": 2, \"targetPort\": \"working_directory\", \"source\": 17, \"sourcePort\": null}, {\"target\": 2, \"targetPort\": \"input_dict\", \"source\": 3, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_0\"}, {\"target\": 4, \"targetPort\": \"structure\", \"source\": 5, \"sourcePort\": \"structure\"}, {\"target\": 5, \"targetPort\": \"working_directory\", \"source\": 18, \"sourcePort\": null}, {\"target\": 5, \"targetPort\": \"input_dict\", \"source\": 6, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"structure\", \"source\": 7, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"element\", \"source\": 19, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"a\", \"source\": 20, \"sourcePort\": null}, {\"target\": 7, \"targetPort\": \"cubic\", \"source\": 21, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"calculation\", \"source\": 24, \"sourcePort\": null}, {\"target\": 6, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 4, \"targetPort\": \"strain_lst\", \"source\": 26, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 3, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"1\", \"source\": 8, \"sourcePort\": \"volume\"}, {\"target\": 8, \"targetPort\": \"working_directory\", \"source\": 28, \"sourcePort\": null}, {\"target\": 8, \"targetPort\": \"input_dict\", \"source\": 9, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_1\"}, {\"target\": 9, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 9, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"2\", \"source\": 10, \"sourcePort\": \"volume\"}, {\"target\": 10, \"targetPort\": \"working_directory\", \"source\": 29, \"sourcePort\": null}, {\"target\": 10, \"targetPort\": \"input_dict\", \"source\": 11, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_2\"}, {\"target\": 11, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 11, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"3\", \"source\": 12, \"sourcePort\": \"volume\"}, {\"target\": 12, \"targetPort\": \"working_directory\", \"source\": 30, \"sourcePort\": null}, {\"target\": 12, \"targetPort\": \"input_dict\", \"source\": 13, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_3\"}, {\"target\": 13, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 13, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 1, \"targetPort\": \"4\", \"source\": 14, \"sourcePort\": \"volume\"}, {\"target\": 14, \"targetPort\": \"working_directory\", \"source\": 31, \"sourcePort\": null}, {\"target\": 14, \"targetPort\": \"input_dict\", \"source\": 15, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"structure\", \"source\": 4, \"sourcePort\": \"s_4\"}, {\"target\": 15, \"targetPort\": \"pseudopotentials\", \"source\": 22, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"kpts\", \"source\": 23, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"calculation\", \"source\": 27, \"sourcePort\": null}, {\"target\": 15, \"targetPort\": \"smearing\", \"source\": 25, \"sourcePort\": null}, {\"target\": 0, \"targetPort\": \"energy_lst\", \"source\": 16, \"sourcePort\": null}, {\"target\": 16, \"targetPort\": \"0\", \"source\": 2, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"1\", \"source\": 8, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"2\", \"source\": 10, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"3\", \"source\": 12, \"sourcePort\": \"energy\"}, {\"target\": 16, \"targetPort\": \"4\", \"source\": 14, \"sourcePort\": \"energy\"}]}"}],"execution_count":12},{"id":"7d75a2f6-6fad-49c8-bd29-37cca1b84441","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"28760464-2a2c-40c2-9451-20713da2ba2c","cell_type":"code","source":"from aiida import orm, load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":13},{"id":"a442fe46-057c-469b-a5e0-173ed4829dfb","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"id":"32fcd4b2-4f0a-442d-b098-827672823796","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"d81a4fb5-a674-41a9-ac19-24c56f952468","cell_type":"code","source":"wg.nodes.get_bulk_structure8.inputs.a.value = orm.Float(4.05)","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"id":"a80b59bd-fe30-49c6-92ca-35ef2d77a6fb","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:47:03 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure8\n04/23/2025 09:47:04 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_bulk_structure8, type: PyFunction, finished.\n04/23/2025 09:47:04 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7\n04/23/2025 09:47:05 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n04/23/2025 09:47:05 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05529] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:47:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures5\n04/23/2025 09:47:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: generate_structures5, type: PyFunction, finished.\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict4,get_dict10,get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict4, type: PyFunction, finished.\n04/23/2025 09:48:00 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3,get_dict10,get_dict12,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05544] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:11 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10,get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:48:12 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe9,get_dict12,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05555] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe9, type: PyFunction, finished.\n04/23/2025 09:48:25 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict14,get_dict16\n04/23/2025 09:48:26 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:48:26 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe11,get_dict14,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05567] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:40 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe11, type: PyFunction, finished.\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict16\n04/23/2025 09:48:41 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:48:42 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe13,get_dict16\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05577] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe13, type: PyFunction, finished.\n04/23/2025 09:48:58 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict16\n04/23/2025 09:48:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_dict16, type: PyFunction, finished.\n04/23/2025 09:48:59 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05592] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:49:14 AM <5440> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:49:15 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: calculate_qe15, type: PyFunction, finished.\n04/23/2025 09:49:15 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list2,get_list17\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_list2, type: PyFunction, finished.\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:49:16 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve1\n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve1, type: PyFunction, finished.\n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:49:17 AM <5440> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [193|WorkGraphEngine|finalize]: Finalize workgraph.\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":17},{"id":"c4f5c047-c6da-4b54-9007-415faca7a448","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"b8e3c2ca-2672-4e9d-aada-63344842dbcf","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":18},{"id":"54a24ff6c569094e","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"id":"48a27146-7372-40ab-8b02-e2a9283d4748","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"bf84ef10-e1af-475f-a457-d2703c7276a0","cell_type":"code","source":"flow[0].function_kwargs[\"a\"] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":21},{"id":"98fa5694-2cc6-44e9-a6e7-2cc71b4f48ce","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:49:19,623 INFO Started executing jobs locally\n2025-04-23 09:49:19,791 INFO Starting job - get_bulk_structure (3a79a0c7-c443-40e5-8c4c-030ccf176743)\n2025-04-23 09:49:19,795 INFO Finished job - get_bulk_structure (3a79a0c7-c443-40e5-8c4c-030ccf176743)\n2025-04-23 09:49:19,796 INFO Starting job - get_dict (d168da9a-66a0-4ab1-ab65-7b5b4b078fac)\n2025-04-23 09:49:19,799 INFO Finished job - get_dict (d168da9a-66a0-4ab1-ab65-7b5b4b078fac)\n2025-04-23 09:49:19,809 INFO Starting job - calculate_qe (0b40ca71-1ea2-4181-8d91-1de15ef3df17)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05604] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:50:11,885 INFO Finished job - calculate_qe (0b40ca71-1ea2-4181-8d91-1de15ef3df17)\n2025-04-23 09:50:11,886 INFO Starting job - generate_structures (451e4839-7612-4530-bbdb-9cb3e77cc6b8)\n2025-04-23 09:50:11,891 INFO Finished job - generate_structures (451e4839-7612-4530-bbdb-9cb3e77cc6b8)\n2025-04-23 09:50:11,892 INFO Starting job - get_dict (b586638f-b882-4439-a28e-a2c76f50c0e2)\n2025-04-23 09:50:11,893 INFO Finished job - get_dict (b586638f-b882-4439-a28e-a2c76f50c0e2)\n2025-04-23 09:50:11,895 INFO Starting job - get_dict (974e6f28-2911-4b3b-bc55-786c2111e39e)\n2025-04-23 09:50:11,896 INFO Finished job - get_dict (974e6f28-2911-4b3b-bc55-786c2111e39e)\n2025-04-23 09:50:11,897 INFO Starting job - get_dict (1c0b7807-d38a-4e23-880f-bccd87c84b28)\n2025-04-23 09:50:11,899 INFO Finished job - get_dict (1c0b7807-d38a-4e23-880f-bccd87c84b28)\n2025-04-23 09:50:11,908 INFO Starting job - get_dict (8791b0c0-b424-4f62-80a9-3170660b35f9)\n2025-04-23 09:50:11,910 INFO Finished job - get_dict (8791b0c0-b424-4f62-80a9-3170660b35f9)\n2025-04-23 09:50:11,911 INFO Starting job - get_dict (b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4)\n2025-04-23 09:50:11,913 INFO Finished job - get_dict (b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4)\n2025-04-23 09:50:11,913 INFO Starting job - calculate_qe (146dc5e6-1415-4c92-9b81-c1dac13c4af7)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05619] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:50:23,619 INFO Finished job - calculate_qe (146dc5e6-1415-4c92-9b81-c1dac13c4af7)\n2025-04-23 09:50:23,620 INFO Starting job - calculate_qe (4760dd26-7403-4f3e-8d64-596893d84e95)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05630] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:50:35,807 INFO Finished job - calculate_qe (4760dd26-7403-4f3e-8d64-596893d84e95)\n2025-04-23 09:50:35,808 INFO Starting job - calculate_qe (e67d4ff9-8416-4eff-86da-8b82ca9e6a7b)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05641] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:50:49,609 INFO Finished job - calculate_qe (e67d4ff9-8416-4eff-86da-8b82ca9e6a7b)\n2025-04-23 09:50:49,610 INFO Starting job - calculate_qe (b351bbe7-8e96-4167-8eef-83fb97b952e9)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05657] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:51:03,448 INFO Finished job - calculate_qe (b351bbe7-8e96-4167-8eef-83fb97b952e9)\n2025-04-23 09:51:03,449 INFO Starting job - calculate_qe (2eee6b99-b12e-4e61-96f5-359461bf3c10)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:05668] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 09:51:14,516 INFO Finished job - calculate_qe (2eee6b99-b12e-4e61-96f5-359461bf3c10)\n2025-04-23 09:51:14,517 INFO Starting job - get_list (7bb19e3c-c167-4477-beee-c93a5148e5ca)\n2025-04-23 09:51:14,520 INFO Finished job - get_list (7bb19e3c-c167-4477-beee-c93a5148e5ca)\n2025-04-23 09:51:14,521 INFO Starting job - get_list (cb1ca4e3-b479-40af-8f27-0a2562b9e246)\n2025-04-23 09:51:14,524 INFO Finished job - get_list (cb1ca4e3-b479-40af-8f27-0a2562b9e246)\n2025-04-23 09:51:14,525 INFO Starting job - plot_energy_volume_curve (15aebe69-961a-4b8f-a3e3-2371ca361d64)\n2025-04-23 09:51:14,588 INFO Finished job - plot_energy_volume_curve (15aebe69-961a-4b8f-a3e3-2371ca361d64)\n2025-04-23 09:51:14,589 INFO Finished executing jobs locally\n"},{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"{'3a79a0c7-c443-40e5-8c4c-030ccf176743': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd168da9a-66a0-4ab1-ab65-7b5b4b078fac': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '0b40ca71-1ea2-4181-8d91-1de15ef3df17': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365262253586, 'volume': 66.21567448236675}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '451e4839-7612-4530-bbdb-9cb3e77cc6b8': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859622328, 0.0, 0.0], [0.0, 3.9060197859622328, 0.0], [0.0, 0.0, 3.9060197859622328]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981116, 1.953009892981116], [1.953009892981116, 0.0, 1.953009892981116], [1.953009892981116, 1.953009892981116, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443181347, 0.0, 0.0], [0.0, 3.9770538443181347, 0.0], [0.0, 0.0, 3.9770538443181347]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988526922159067, 1.988526922159067], [1.988526922159067, 0.0, 1.988526922159067], [1.988526922159067, 1.988526922159067, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.1119709272830445, 0.0, 0.0], [0.0, 4.1119709272830445, 0.0], [0.0, 0.0, 4.1119709272830445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985463641522, 2.055985463641522], [2.055985463641522, 0.0, 2.055985463641522], [2.055985463641522, 2.055985463641522, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372271, 0.0, 0.0], [0.0, 4.176230852372271, 0.0], [0.0, 0.0, 4.176230852372271]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186135, 2.088115426186135], [2.088115426186135, 0.0, 2.088115426186135], [2.088115426186135, 2.088115426186135, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b586638f-b882-4439-a28e-a2c76f50c0e2': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538443181347, 0.0, 0.0], [0.0, 3.9770538443181347, 0.0], [0.0, 0.0, 3.9770538443181347]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988526922159067, 1.988526922159067], [1.988526922159067, 0.0, 1.988526922159067], [1.988526922159067, 1.988526922159067, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '974e6f28-2911-4b3b-bc55-786c2111e39e': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946928, 0.0, 0.0], [0.0, 4.045637215946928, 0.0], [0.0, 0.0, 4.045637215946928]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079734636, 2.0228186079734636], [2.0228186079734636, 0.0, 2.0228186079734636], [2.0228186079734636, 2.0228186079734636, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '1c0b7807-d38a-4e23-880f-bccd87c84b28': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.1119709272830445, 0.0, 0.0], [0.0, 4.1119709272830445, 0.0], [0.0, 0.0, 4.1119709272830445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985463641522, 2.055985463641522], [2.055985463641522, 0.0, 2.055985463641522], [2.055985463641522, 2.055985463641522, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '8791b0c0-b424-4f62-80a9-3170660b35f9': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372271, 0.0, 0.0], [0.0, 4.176230852372271, 0.0], [0.0, 0.0, 4.176230852372271]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186135, 2.088115426186135], [2.088115426186135, 0.0, 2.088115426186135], [2.088115426186135, 2.088115426186135, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b0e2cd7f-9e49-40b6-8c79-6a3c8588fed4': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859622328, 0.0, 0.0], [0.0, 3.9060197859622328, 0.0], [0.0, 0.0, 3.9060197859622328]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981116, 1.953009892981116], [1.953009892981116, 0.0, 1.953009892981116], [1.953009892981116, 1.953009892981116, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '146dc5e6-1415-4c92-9b81-c1dac13c4af7': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.97705382693468, 0.0, 0.0], [0.0, 3.97705382693468, 0.0], [0.0, 0.0, 3.97705382693468]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082746, 1.9885269135082746], [1.9885269135082746, 0.0, 1.9885269135082746], [1.9885269135082746, 1.9885269135082746, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594584, 'volume': 62.90488993338832}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '4760dd26-7403-4f3e-8d64-596893d84e95': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263706, 0.0, 0.0], [0.0, 4.045637198263706, 0.0], [0.0, 0.0, 4.045637198263706]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583887, 2.0228185991583887], [2.0228185991583887, 0.0, 2.0228185991583887], [2.0228185991583887, 2.0228185991583887, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668336, 'volume': 66.21567361409329}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e67d4ff9-8416-4eff-86da-8b82ca9e6a7b': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309876, 0.0, 0.0], [0.0, 4.111970909309876, 0.0], [0.0, 0.0, 4.111970909309876]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025814, 'volume': 69.52645729479767}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b351bbe7-8e96-4167-8eef-83fb97b952e9': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411823, 0.0, 0.0], [0.0, 4.17623083411823, 0.0], [0.0, 0.0, 4.17623083411823]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8737904693405, 'volume': 72.83724097550255}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2eee6b99-b12e-4e61-96f5-359461bf3c10': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197688892653, 0.0, 0.0], [0.0, 3.9060197688892653, 0.0], [0.0, 0.0, 3.9060197688892653]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150649, 'volume': 59.59410625268378}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7bb19e3c-c167-4477-beee-c93a5148e5ca': {1: Response(output=[-1074.8457446150649, -1074.9161488594584, -1074.9365241668336, -1074.9192860025814, -1074.8737904693405], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'cb1ca4e3-b479-40af-8f27-0a2562b9e246': {1: Response(output=[59.59410625268378, 62.90488993338832, 66.21567361409329, 69.52645729479767, 72.83724097550255], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '15aebe69-961a-4b8f-a3e3-2371ca361d64': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":22}]} \ No newline at end of file From b61ba76e50f63cc86a2f237f642c93bc54befe84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 12:47:35 +0200 Subject: [PATCH 2/8] update environment path --- .github/workflows/pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index a0e4e90..bbf5b71 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -44,7 +44,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup environment shell: bash -l {0} - run: tail --lines=+4 environment_qe.yml >> environment.yml + run: tail --lines=+4 example_workflows/quantum_espresso/environment_qe.yml >> environment.yml - uses: conda-incubator/setup-miniconda@v3 with: auto-update-conda: true From b0b97dffa538df8669579f89f5dc51a6191f18f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 12:50:22 +0200 Subject: [PATCH 3/8] fix import --- .../arithmetic/aiida_arithmetic.ipynb | 20 +++++------ .../arithmetic/jobflow_arithmetic.ipynb | 22 +++++------- .../arithmetic/pyiron_base_arithmetic.ipynb | 22 +++++------- example_workflows/nfdi/aiida_nfdi.ipynb | 25 +++++++------ example_workflows/nfdi/jobflow_nfdi.ipynb | 29 ++++++++------- example_workflows/nfdi/pyiron_base_nfdi.ipynb | 26 +++++++------- .../quantum_espresso/aiida_qe.ipynb | 36 +++++++++---------- .../quantum_espresso/jobflow_qe.ipynb | 20 +++++------ .../quantum_espresso/pyiron_base_qe.ipynb | 22 +++++------- 9 files changed, 100 insertions(+), 122 deletions(-) diff --git a/example_workflows/arithmetic/aiida_arithmetic.ipynb b/example_workflows/arithmetic/aiida_arithmetic.ipynb index 06840ba..fe9e474 100644 --- a/example_workflows/arithmetic/aiida_arithmetic.ipynb +++ b/example_workflows/arithmetic/aiida_arithmetic.ipynb @@ -41,27 +41,23 @@ "execution_count": 1 }, { + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.arithmetic.arithmetic_workflow import (\n", + "from arithmetic_workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 + ] }, { + "metadata": {}, "cell_type": "code", - "source": "wg = WorkGraph(\"arithmetic\")", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 3 + "execution_count": null, + "source": "wg = WorkGraph(\"arithmetic\")" }, { "cell_type": "code", diff --git a/example_workflows/arithmetic/jobflow_arithmetic.ipynb b/example_workflows/arithmetic/jobflow_arithmetic.ipynb index 4cc6987..7adf9e5 100644 --- a/example_workflows/arithmetic/jobflow_arithmetic.ipynb +++ b/example_workflows/arithmetic/jobflow_arithmetic.ipynb @@ -60,29 +60,25 @@ "execution_count": 2 }, { - "id": "fb847d49-7bf9-4839-9b99-c116d1b0e9ee", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.arithmetic.arithmetic_workflow import (\n", + "from arithmetic_workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 3 + "id": "f9217ce7b093b5fc" }, { - "id": "8f95244e", + "metadata": {}, "cell_type": "code", - "source": "workflow_json_filename = \"jobflow_simple.json\"", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 4 + "execution_count": null, + "source": "workflow_json_filename = \"jobflow_simple.json\"", + "id": "1feba0898ee4e361" }, { "id": "07598344-0f75-433b-8902-bea21a42088c", diff --git a/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb b/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb index d5b1b44..daf15f8 100644 --- a/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb +++ b/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb @@ -54,29 +54,25 @@ "execution_count": 2 }, { - "id": "fb847d49-7bf9-4839-9b99-c116d1b0e9ee", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.arithmetic.arithmetic_workflow import (\n", + "from arithmetic_workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 3 + "id": "6d859dfff0c2df5c" }, { - "id": "8f95244e", + "metadata": {}, "cell_type": "code", - "source": "workflow_json_filename = \"pyiron_arithmetic.json\"", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 4 + "execution_count": null, + "source": "workflow_json_filename = \"pyiron_arithmetic.json\"", + "id": "77135b0c61898507" }, { "id": "07598344-0f75-433b-8902-bea21a42088c", diff --git a/example_workflows/nfdi/aiida_nfdi.ipynb b/example_workflows/nfdi/aiida_nfdi.ipynb index cc90370..d3aef99 100644 --- a/example_workflows/nfdi/aiida_nfdi.ipynb +++ b/example_workflows/nfdi/aiida_nfdi.ipynb @@ -53,10 +53,12 @@ "execution_count": 1 }, { - "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + "from nfdi_ing_workflow import (\n", " generate_mesh,\n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", @@ -65,21 +67,18 @@ " compile_paper,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 + "id": "6dac225a1ce86b25" }, { - "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", + "metadata": {}, "cell_type": "code", - "source": "convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\npoisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 3 + "execution_count": null, + "source": [ + "convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\n", + "poisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)" + ], + "id": "c47205d289499756" }, { "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", diff --git a/example_workflows/nfdi/jobflow_nfdi.ipynb b/example_workflows/nfdi/jobflow_nfdi.ipynb index 398f273..65c47fd 100644 --- a/example_workflows/nfdi/jobflow_nfdi.ipynb +++ b/example_workflows/nfdi/jobflow_nfdi.ipynb @@ -56,10 +56,12 @@ "execution_count": 1 }, { - "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + "from nfdi_ing_workflow import (\n", " generate_mesh as _generate_mesh, \n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", @@ -68,21 +70,22 @@ " compile_paper as _compile_paper,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 + "id": "864f048d78ea3f08" }, { - "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", + "metadata": {}, "cell_type": "code", - "source": "generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 3 + "execution_count": null, + "source": [ + "generate_mesh = job(_generate_mesh)\n", + "convert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\n", + "poisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\n", + "plot_over_line = job(_plot_over_line)\n", + "substitute_macros = job(_substitute_macros)\n", + "compile_paper = job(_compile_paper)" + ], + "id": "147b81b7b494ceda" }, { "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", diff --git a/example_workflows/nfdi/pyiron_base_nfdi.ipynb b/example_workflows/nfdi/pyiron_base_nfdi.ipynb index dc10021..b0f88de 100644 --- a/example_workflows/nfdi/pyiron_base_nfdi.ipynb +++ b/example_workflows/nfdi/pyiron_base_nfdi.ipynb @@ -34,10 +34,12 @@ "metadata": {} }, { - "id": "a76e6c0a-98f2-4436-af10-8097da183341", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.nfdi.nfdi_ing_workflow import (\n", + "from nfdi_ing_workflow import (\n", " generate_mesh as _generate_mesh, \n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", @@ -46,21 +48,19 @@ " compile_paper as _compile_paper,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 1 + "id": "d265bb5aa6af79d6" }, { - "id": "89c02460-b543-442c-a27e-f1757dc2262e", + "metadata": {}, "cell_type": "code", - "source": "from pyiron_base import job\n\nfrom python_workflow_definition.pyiron_base import write_workflow_json", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 2 + "execution_count": null, + "source": [ + "from pyiron_base import job\n", + "\n", + "from python_workflow_definition.pyiron_base import write_workflow_json" + ], + "id": "2dced28725813fc1" }, { "id": "549ecf27-88ef-4e77-8bd4-b616cfdda2e4", diff --git a/example_workflows/quantum_espresso/aiida_qe.ipynb b/example_workflows/quantum_espresso/aiida_qe.ipynb index 4ab2515..b57cf5a 100644 --- a/example_workflows/quantum_espresso/aiida_qe.ipynb +++ b/example_workflows/quantum_espresso/aiida_qe.ipynb @@ -50,36 +50,32 @@ "execution_count": 2 }, { + "metadata": {}, "cell_type": "code", - "source": [ - "from example_workflows.quantum_espresso.quantum_espresso_workflow import generate_structures\n", - "from example_workflows.quantum_espresso.quantum_espresso_workflow import get_bulk_structure\n", - "from example_workflows.quantum_espresso.quantum_espresso_workflow import calculate_qe as _calculate_qe\n", - "from example_workflows.quantum_espresso.quantum_espresso_workflow import plot_energy_volume_curve" - ], - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 3 + "execution_count": null, + "source": [ + "from quantum_espresso_workflow import (\n", + " generate_structures,\n", + " get_bulk_structure,\n", + " calculate_qe as _calculate_qe,\n", + " plot_energy_volume_curve,\n", + ")" + ] }, { + "metadata": {}, "cell_type": "code", - "source": "calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 4 + "execution_count": null, + "source": "calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)" }, { + "metadata": {}, "cell_type": "code", - "source": "wg = WorkGraph(\"wg-qe\")", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 5 + "execution_count": null, + "source": "wg = WorkGraph(\"wg-qe\")" }, { "cell_type": "markdown", diff --git a/example_workflows/quantum_espresso/jobflow_qe.ipynb b/example_workflows/quantum_espresso/jobflow_qe.ipynb index 9d12597..ed784b9 100644 --- a/example_workflows/quantum_espresso/jobflow_qe.ipynb +++ b/example_workflows/quantum_espresso/jobflow_qe.ipynb @@ -65,29 +65,25 @@ "execution_count": 3 }, { + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.quantum_espresso.quantum_espresso_workflow import (\n", + "from quantum_espresso_workflow import (\n", " calculate_qe as _calculate_qe, \n", " generate_structures as _generate_structures, \n", " get_bulk_structure as _get_bulk_structure, \n", " plot_energy_volume_curve as _plot_energy_volume_curve,\n", ")" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 4 + ] }, { + "metadata": {}, "cell_type": "code", - "source": "workflow_json_filename = \"jobflow_qe.json\"", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 5 + "execution_count": null, + "source": "workflow_json_filename = \"jobflow_qe.json\"" }, { "cell_type": "code", diff --git a/example_workflows/quantum_espresso/pyiron_base_qe.ipynb b/example_workflows/quantum_espresso/pyiron_base_qe.ipynb index a3f9e11..0fe2c45 100644 --- a/example_workflows/quantum_espresso/pyiron_base_qe.ipynb +++ b/example_workflows/quantum_espresso/pyiron_base_qe.ipynb @@ -44,31 +44,27 @@ "execution_count": 1 }, { - "id": "b75c2530-9b89-4185-838f-a17e517fa68f", + "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ - "from example_workflows.quantum_espresso.quantum_espresso_workflow import (\n", + "from quantum_espresso_workflow import (\n", " calculate_qe as _calculate_qe, \n", " generate_structures as _generate_structures, \n", " get_bulk_structure as _get_bulk_structure, \n", " plot_energy_volume_curve as _plot_energy_volume_curve,\n", ")" ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 + "id": "ea65c6275f956bdb" }, { - "id": "07a950ca", + "metadata": {}, "cell_type": "code", - "source": "workflow_json_filename = \"pyiron_base_qe.json\"", - "metadata": { - "trusted": true - }, "outputs": [], - "execution_count": 3 + "execution_count": null, + "source": "workflow_json_filename = \"pyiron_base_qe.json\"", + "id": "686a6a5f54a0cef5" }, { "id": "208ddfb8-dfda-4227-aa1f-3dc29e34ea82", From db20b82bb1b65dc11e9aeabb1b460381a4a6ea19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 12:55:40 +0200 Subject: [PATCH 4/8] update python module path --- .github/workflows/pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 0a6173d..50ce46b 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -17,7 +17,7 @@ jobs: - uses: psf/black@stable with: options: "--check --diff" - src: ./qe_xml_parser/src/qe_xml_parser + src: ./example_workflows/quantum_espresso/qe_xml_parser/src/qe_xml_parser nfdi4ing: runs-on: ubuntu-22.04 From d67d371ba46dfa5a5523b7864b8f1b0320469c83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 13:07:20 +0200 Subject: [PATCH 5/8] update postbuild script --- postBuild | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/postBuild b/postBuild index e48e9f4..cafb6fe 100644 --- a/postBuild +++ b/postBuild @@ -1,7 +1,8 @@ -conda env create -n preprocessing -f source/envs/preprocessing.yaml -y -conda env create -n processing -f source/envs/processing.yaml -y -conda env create -n postprocessing -f source/envs/postprocessing.yaml -y -conda env update --name base --file environment_qe.yml -pip install -e qe_xml_parser +conda env create -n preprocessing -f example_workflows/nfdi/source/envs/preprocessing.yaml -y +conda env create -n processing -f example_workflows/nfdi/source/envs/processing.yaml -y +conda env create -n postprocessing -f example_workflows/nfdi/source/envs/postprocessing.yaml -y +conda env update --name base --file example_workflows/quantum_espresso/environment_qe.yml +pip install -e example_workflows/quantum_espresso/qe_xml_parser pip install -e python_workflow_definition verdi presto --profile-name pwd +mv example_workflows/quantum_espresso/espresso ~ \ No newline at end of file From 4e4853c0f920a5f208da07127711beaff88fa4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 13:12:37 +0200 Subject: [PATCH 6/8] move mybinder related parts --- .github/workflows/pipeline.yml | 10 +++++----- apt.txt => binder/apt.txt | 0 environment.yml => binder/environment.yml | 0 postBuild => binder/postBuild | 0 4 files changed, 5 insertions(+), 5 deletions(-) rename apt.txt => binder/apt.txt (100%) rename environment.yml => binder/environment.yml (100%) rename postBuild => binder/postBuild (100%) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 50ce46b..e7c9102 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -27,7 +27,7 @@ jobs: with: auto-update-conda: true python-version: "3.12" - environment-file: environment.yml + environment-file: binder/environment.yml auto-activate-base: false - name: Installation and setup shell: bash -l {0} @@ -35,7 +35,7 @@ jobs: pip install -e python_workflow_definition conda install -c conda-forge jupyter papermill verdi presto --profile-name pwd - sudo apt-get install -y $(cat apt.txt) + sudo apt-get install -y $(cat binder/apt.txt) - name: Create Additional Conda Environments shell: bash -l {0} run: | @@ -57,12 +57,12 @@ jobs: - uses: actions/checkout@v4 - name: Setup environment shell: bash -l {0} - run: tail --lines=+4 example_workflows/quantum_espresso/environment_qe.yml >> environment.yml + run: tail --lines=+4 example_workflows/quantum_espresso/environment_qe.yml >> binder/environment.yml - uses: conda-incubator/setup-miniconda@v3 with: auto-update-conda: true python-version: "3.12" - environment-file: environment.yml + environment-file: binder/environment.yml auto-activate-base: false - name: Installation and setup shell: bash -l {0} @@ -90,7 +90,7 @@ jobs: with: auto-update-conda: true python-version: "3.12" - environment-file: environment.yml + environment-file: binder/environment.yml auto-activate-base: false - name: Installation and setup shell: bash -l {0} diff --git a/apt.txt b/binder/apt.txt similarity index 100% rename from apt.txt rename to binder/apt.txt diff --git a/environment.yml b/binder/environment.yml similarity index 100% rename from environment.yml rename to binder/environment.yml diff --git a/postBuild b/binder/postBuild similarity index 100% rename from postBuild rename to binder/postBuild From 09fa6fd87c9b67f4d750bbed1d53c511eb55a0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 13:16:20 +0200 Subject: [PATCH 7/8] rename notebooks --- .github/workflows/pipeline.yml | 26 +- README.md | 32 +- binder/postBuild | 2 +- book/_toc.yml | 18 +- .../{aiida_arithmetic.ipynb => aiida.ipynb} | 0 ...jobflow_arithmetic.ipynb => jobflow.ipynb} | 0 ...ase_arithmetic.ipynb => pyiron_base.ipynb} | 0 .../arithmetic/universal_workflow.ipynb | 336 ++++++++++++ .../universal_workflow_arithmetic.ipynb | 1 - ...workflow_arithmetic.json => workflow.json} | 0 .../nfdi/{aiida_nfdi.ipynb => aiida.ipynb} | 0 .../{jobflow_nfdi.ipynb => jobflow.ipynb} | 0 ...iron_base_nfdi.ipynb => pyiron_base.ipynb} | 0 .../nfdi/universal_workflow.ipynb | 336 ++++++++++++ .../nfdi/universal_workflow_nfdi.ipynb | 1 - .../{workflow_nfdi.json => workflow.json} | 0 .../{aiida_qe.ipynb => aiida.ipynb} | 0 .../{environment_qe.yml => environment.yml} | 0 .../{jobflow_qe.ipynb => jobflow.ipynb} | 0 ...pyiron_base_qe.ipynb => pyiron_base.ipynb} | 0 .../quantum_espresso/universal_workflow.ipynb | 484 ++++++++++++++++++ .../universal_workflow_qe.ipynb | 1 - .../{workflow_qe.json => workflow.json} | 0 23 files changed, 1195 insertions(+), 42 deletions(-) rename example_workflows/arithmetic/{aiida_arithmetic.ipynb => aiida.ipynb} (100%) rename example_workflows/arithmetic/{jobflow_arithmetic.ipynb => jobflow.ipynb} (100%) rename example_workflows/arithmetic/{pyiron_base_arithmetic.ipynb => pyiron_base.ipynb} (100%) create mode 100644 example_workflows/arithmetic/universal_workflow.ipynb delete mode 100644 example_workflows/arithmetic/universal_workflow_arithmetic.ipynb rename example_workflows/arithmetic/{workflow_arithmetic.json => workflow.json} (100%) rename example_workflows/nfdi/{aiida_nfdi.ipynb => aiida.ipynb} (100%) rename example_workflows/nfdi/{jobflow_nfdi.ipynb => jobflow.ipynb} (100%) rename example_workflows/nfdi/{pyiron_base_nfdi.ipynb => pyiron_base.ipynb} (100%) create mode 100644 example_workflows/nfdi/universal_workflow.ipynb delete mode 100644 example_workflows/nfdi/universal_workflow_nfdi.ipynb rename example_workflows/nfdi/{workflow_nfdi.json => workflow.json} (100%) rename example_workflows/quantum_espresso/{aiida_qe.ipynb => aiida.ipynb} (100%) rename example_workflows/quantum_espresso/{environment_qe.yml => environment.yml} (100%) rename example_workflows/quantum_espresso/{jobflow_qe.ipynb => jobflow.ipynb} (100%) rename example_workflows/quantum_espresso/{pyiron_base_qe.ipynb => pyiron_base.ipynb} (100%) create mode 100644 example_workflows/quantum_espresso/universal_workflow.ipynb delete mode 100644 example_workflows/quantum_espresso/universal_workflow_qe.ipynb rename example_workflows/quantum_espresso/{workflow_qe.json => workflow.json} (100%) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index e7c9102..892ea6a 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -46,10 +46,10 @@ jobs: shell: bash -l {0} run: | cd example_workflows/nfdi/ - papermill aiida_nfdi.ipynb aiida_nfdi_out.ipynb -k "python3" - papermill jobflow_nfdi.ipynb jobflow_nfdi_out.ipynb -k "python3" - papermill pyiron_base_nfdi.ipynb pyiron_base_nfdi_out.ipynb -k "python3" - papermill universal_workflow_nfdi.ipynb universal_workflow_nfdi_out.ipynb -k "python3" + papermill aiida.ipynb aiida_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" quantumespresso: runs-on: ubuntu-latest @@ -57,7 +57,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup environment shell: bash -l {0} - run: tail --lines=+4 example_workflows/quantum_espresso/environment_qe.yml >> binder/environment.yml + run: tail --lines=+4 example_workflows/quantum_espresso/environment.yml >> binder/environment.yml - uses: conda-incubator/setup-miniconda@v3 with: auto-update-conda: true @@ -77,10 +77,10 @@ jobs: export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo cp -r example_workflows/quantum_espresso/espresso . cd example_workflows/quantum_espresso - papermill aiida_qe.ipynb aiida_qe_out.ipynb -k "python3" - papermill jobflow_qe.ipynb jobflow_qe_out.ipynb -k "python3" - papermill pyiron_base_qe.ipynb pyiron_base_qe_out.ipynb -k "python3" - papermill universal_workflow_qe.ipynb universal_workflow_qe_out.ipynb -k "python3" + papermill aiida.ipynb aiida_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" arithmetic: runs-on: ubuntu-latest @@ -102,10 +102,10 @@ jobs: shell: bash -l {0} run: | cd example_workflows/arithmetic - papermill aiida_arithmetic.ipynb aiida_arithmetic_out.ipynb -k "python3" - papermill jobflow_arithmetic.ipynb jobflow_arithmetic_out.ipynb -k "python3" - papermill pyiron_base_arithmetic.ipynb pyiron_base_arithmetic_out.ipynb -k "python3" - papermill universal_workflow_arithmetic.ipynb universal_workflow_arithmetic_out.ipynb -k "python3" + papermill aiida.ipynb aiida_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" book: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 604b90d..6c51a2d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ tmp_dict = get_prod_and_div(x=1, y=2) result = get_sum(x=tmp_dict["prod"], y=tmp_dict["div"]) ``` For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](example_workflows/arithmetic/arithmetic_workflow.py) -Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](example_workflows/arithmetic/workflow_arithmetic.json) +Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](example_workflows/arithmetic/workflow.json) JSON file: ``` { @@ -59,30 +59,30 @@ The corresponding Jupyter notebooks demonstrate this functionality: | Example | Explanation | |----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_arithmetic.ipynb](example_workflows/arithmetic/aiida_arithmetic.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_arithmetic.ipynb](example_workflows/arithmetic/jobflow_arithmetic.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_arithmetic.ipynb](example_workflows/arithmetic/pyiron_base_arithmetic.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_arithmetic.ipynb](example_workflows/arithmetic/universal_workflow_arithmetic.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | +| [aiida_arithmetic.ipynb](example_workflows/arithmetic/aiida.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_arithmetic.ipynb](example_workflows/arithmetic/jobflow.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_arithmetic.ipynb](example_workflows/arithmetic/pyiron_base.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_arithmetic.ipynb](example_workflows/arithmetic/universal_workflow.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | ### Quantum Espresso Workflow The second workflow example is the calculation of an energy volume curve with Quantum Espresso. In the first step the initial structure is relaxed, afterward it is strained and the total energy is calculated. * [quantum_espresso_workflow.py](example_workflows/quantum_espresso/quantum_espresso_workflow.py) Python functions -* [workflow_qe.json](example_workflows/quantum_espresso/workflow_qe.json) Workflow definition in the Python Workflow Definition. -* [environment_qe.yml](example_workflows/quantum_espresso/environment_qe.yml) Conda environment +* [workflow_qe.json](example_workflows/quantum_espresso/workflow.json) Workflow definition in the Python Workflow Definition. +* [environment_qe.yml](example_workflows/quantum_espresso/environment.yml) Conda environment | Example | Explanation | |------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_qe.ipynb](example_workflows/quantum_espresso/aiida_qe.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_qe.ipynb](example_workflows/quantum_espresso/jobflow_qe.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_qe.ipynb](example_workflows/quantum_espresso/pyiron_base_qe.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_qe.ipynb](example_workflows/quantum_espresso/universal_workflow_qe.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | +| [aiida_qe.ipynb](example_workflows/quantum_espresso/aiida.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_qe.ipynb](example_workflows/quantum_espresso/jobflow.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_qe.ipynb](example_workflows/quantum_espresso/pyiron_base.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_qe.ipynb](example_workflows/quantum_espresso/universal_workflow.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | ### NFDI4Ing Scientific Workflow Requirements To demonstrate the compatibility of the Python Workflow Definition to file based workflows, the workflow benchmark developed as part of [NFDI4Ing](https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements) is implemented for all three simulation codes based on a shared workflow definition. * [nfdi_ing_workflow.py](example_workflows/nfdi/nfdi_ing_workflow.py) Python functions -* [workflow_nfdi.json](example_workflows/nfdi/workflow_nfdi.json) Workflow definition in the Python Workflow Definition. +* [workflow_nfdi.json](example_workflows/nfdi/workflow.json) Workflow definition in the Python Workflow Definition. Additional source files provided with the workflow benchmark: * [source/envs/preprocessing.yaml](example_workflows/nfdi/source/envs/preprocessing.yaml) Conda environment for preprocessing @@ -97,7 +97,7 @@ Additional source files provided with the workflow benchmark: | Example | Explanation | |----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| -| [aiida_nfdi.ipynb](example_workflows/nfdi/aiida_nfdi.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_nfdi.ipynb](example_workflows/nfdi/jobflow_nfdi.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_nfdi.ipynb](example_workflows/nfdi/pyiron_base_nfdi.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_workflow_nfdi.ipynb](example_workflows/nfdi/universal_workflow_nfdi.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | \ No newline at end of file +| [aiida_nfdi.ipynb](example_workflows/nfdi/aiida.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_nfdi.ipynb](example_workflows/nfdi/jobflow.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_nfdi.ipynb](example_workflows/nfdi/pyiron_base.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_nfdi.ipynb](example_workflows/nfdi/universal_workflow.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | \ No newline at end of file diff --git a/binder/postBuild b/binder/postBuild index cafb6fe..21a6f6a 100644 --- a/binder/postBuild +++ b/binder/postBuild @@ -1,7 +1,7 @@ conda env create -n preprocessing -f example_workflows/nfdi/source/envs/preprocessing.yaml -y conda env create -n processing -f example_workflows/nfdi/source/envs/processing.yaml -y conda env create -n postprocessing -f example_workflows/nfdi/source/envs/postprocessing.yaml -y -conda env update --name base --file example_workflows/quantum_espresso/environment_qe.yml +conda env update --name base --file example_workflows/quantum_espresso/environment.yml pip install -e example_workflows/quantum_espresso/qe_xml_parser pip install -e python_workflow_definition verdi presto --profile-name pwd diff --git a/book/_toc.yml b/book/_toc.yml index 1a979a6..84f4011 100644 --- a/book/_toc.yml +++ b/book/_toc.yml @@ -4,17 +4,17 @@ chapters: - file: intro.md - file: arithmetic.md sections: - - file: example_workflows/arithmetic/aiida_arithmetic.ipynb - - file: example_workflows/arithmetic/jobflow_arithmetic.ipynb - - file: example_workflows/arithmetic/pyiron_base_arithmetic.ipynb + - file: example_workflows/arithmetic/aiida.ipynb + - file: example_workflows/arithmetic/jobflow.ipynb + - file: example_workflows/arithmetic/pyiron_base.ipynb - file: evcurve.md sections: - - file: example_workflows/quantum_espresso/aiida_qe.ipynb - - file: example_workflows/quantum_espresso/jobflow_qe.ipynb - - file: example_workflows/quantum_espresso/pyiron_base_qe.ipynb + - file: example_workflows/quantum_espresso/aiida.ipynb + - file: example_workflows/quantum_espresso/jobflow.ipynb + - file: example_workflows/quantum_espresso/pyiron_base.ipynb - file: nfdi.md sections: - - file: example_workflows/nfdi/aiida_nfdi.ipynb - - file: example_workflows/nfdi/jobflow_nfdi.ipynb - - file: example_workflows/nfdi/pyiron_base_nfdi.ipynb + - file: example_workflows/nfdi/aiida.ipynb + - file: example_workflows/nfdi/jobflow.ipynb + - file: example_workflows/nfdi/pyiron_base.ipynb - file: conclusion.md \ No newline at end of file diff --git a/example_workflows/arithmetic/aiida_arithmetic.ipynb b/example_workflows/arithmetic/aiida.ipynb similarity index 100% rename from example_workflows/arithmetic/aiida_arithmetic.ipynb rename to example_workflows/arithmetic/aiida.ipynb diff --git a/example_workflows/arithmetic/jobflow_arithmetic.ipynb b/example_workflows/arithmetic/jobflow.ipynb similarity index 100% rename from example_workflows/arithmetic/jobflow_arithmetic.ipynb rename to example_workflows/arithmetic/jobflow.ipynb diff --git a/example_workflows/arithmetic/pyiron_base_arithmetic.ipynb b/example_workflows/arithmetic/pyiron_base.ipynb similarity index 100% rename from example_workflows/arithmetic/pyiron_base_arithmetic.ipynb rename to example_workflows/arithmetic/pyiron_base.ipynb diff --git a/example_workflows/arithmetic/universal_workflow.ipynb b/example_workflows/arithmetic/universal_workflow.ipynb new file mode 100644 index 0000000..e1775b2 --- /dev/null +++ b/example_workflows/arithmetic/universal_workflow.ipynb @@ -0,0 +1,336 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# Load Simple Workflow", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Plot", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.plot import plot", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": "plot(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\n0\n\narithmetic_workflow.get_prod_and_div\n\n\n\n1\n\narithmetic_workflow.get_sum\n\n\n\n0->1\n\n\nx=result[prod], y=result[div]\n\n\n\n2\n\n1\n\n\n\n2->0\n\n\nx\n\n\n\n3\n\n2\n\n\n\n3->0\n\n\ny\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 2 + }, + { + "cell_type": "markdown", + "source": "## Aiida ", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 3, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": "workgraph = load_workflow_json(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "# TODO: Create inputs rather than tasks out of data nodes\nworkgraph", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 5, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "10427ed751dc4ec8853025eebb109925" + } + }, + "metadata": {} + } + ], + "execution_count": 5 + }, + { + "cell_type": "code", + "source": "\nworkgraph.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "source": "## executorlib", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from executorlib import SingleNodeExecutor", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.executorlib import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "result", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 10, + "output_type": "execute_result", + "data": { + "text/plain": "2.5" + }, + "metadata": {} + } + ], + "execution_count": 10 + }, + { + "cell_type": "markdown", + "source": "## Jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 11 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:51:44,679 INFO Started executing jobs locally\n2025-04-23 09:51:44,779 INFO Starting job - get_prod_and_div (51955f11-032f-4a6d-b643-c4fc87967298)\n2025-04-23 09:51:44,782 INFO Finished job - get_prod_and_div (51955f11-032f-4a6d-b643-c4fc87967298)\n2025-04-23 09:51:44,782 INFO Starting job - get_sum (3ed0bbc7-babb-475a-be16-2cdfe4c0c583)\n2025-04-23 09:51:44,784 INFO Finished job - get_sum (3ed0bbc7-babb-475a-be16-2cdfe4c0c583)\n2025-04-23 09:51:44,784 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "{'51955f11-032f-4a6d-b643-c4fc87967298': {1: Response(output={'prod': 2, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '3ed0bbc7-babb-475a-be16-2cdfe4c0c583': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "cell_type": "markdown", + "source": "## pyiron", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "cell_type": "code", + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ], + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_a30133cc7a07a2e64b505497250df84d\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72b84012a420>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x72b8402f8fb0>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x72b84012a150>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_prod_and_div_955f44280fa0072653e4d910a57d7b92 was saved and received the ID: 1\nThe job get_sum_55b699570ac3c74e1e8078a45b657240 was saved and received the ID: 2\n" + }, + { + "execution_count": 17, + "output_type": "execute_result", + "data": { + "text/plain": "2.5" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "cell_type": "markdown", + "source": "## Python", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.purepython import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "cell_type": "code", + "source": "load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 19, + "output_type": "execute_result", + "data": { + "text/plain": "2.5" + }, + "metadata": {} + } + ], + "execution_count": 19 + } + ] +} diff --git a/example_workflows/arithmetic/universal_workflow_arithmetic.ipynb b/example_workflows/arithmetic/universal_workflow_arithmetic.ipynb deleted file mode 100644 index c16635c..0000000 --- a/example_workflows/arithmetic/universal_workflow_arithmetic.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Load Simple Workflow","metadata":{}},{"cell_type":"markdown","source":"## Plot","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.plot import plot","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"plot(file_name='workflow_arithmetic.json')","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\n0\n\narithmetic_workflow.get_prod_and_div\n\n\n\n1\n\narithmetic_workflow.get_sum\n\n\n\n0->1\n\n\nx=result[prod], y=result[div]\n\n\n\n2\n\n1\n\n\n\n2->0\n\n\nx\n\n\n\n3\n\n2\n\n\n\n3->0\n\n\ny\n\n\n"},"metadata":{}}],"execution_count":2},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"workgraph = load_workflow_json(file_name='workflow_arithmetic.json')","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"# TODO: Create inputs rather than tasks out of data nodes\nworkgraph","metadata":{"trusted":true},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"10427ed751dc4ec8853025eebb109925"}},"metadata":{}}],"execution_count":5},{"cell_type":"code","source":"\nworkgraph.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n04/23/2025 09:51:40 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:51:41 AM <5717> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [273|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":6},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_arithmetic.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"2.5"},"metadata":{}}],"execution_count":10},{"cell_type":"markdown","source":"## Jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":11},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_arithmetic.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:51:44,679 INFO Started executing jobs locally\n2025-04-23 09:51:44,779 INFO Starting job - get_prod_and_div (51955f11-032f-4a6d-b643-c4fc87967298)\n2025-04-23 09:51:44,782 INFO Finished job - get_prod_and_div (51955f11-032f-4a6d-b643-c4fc87967298)\n2025-04-23 09:51:44,782 INFO Starting job - get_sum (3ed0bbc7-babb-475a-be16-2cdfe4c0c583)\n2025-04-23 09:51:44,784 INFO Finished job - get_sum (3ed0bbc7-babb-475a-be16-2cdfe4c0c583)\n2025-04-23 09:51:44,784 INFO Finished executing jobs locally\n"},{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"{'51955f11-032f-4a6d-b643-c4fc87967298': {1: Response(output={'prod': 2, 'div': 0.5}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '3ed0bbc7-babb-475a-be16-2cdfe4c0c583': {1: Response(output=2.5, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":14},{"cell_type":"markdown","source":"## pyiron","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=\"workflow_arithmetic.json\")\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_a30133cc7a07a2e64b505497250df84d\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72b84012a420>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x72b8402f8fb0>\n\n\n\nx_03371e8bbb210fff8c1beb07977c6fca->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x72b84012a150>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n\ny_69de87ef8d8a066b8926b02e01e9f7f8->create_function_job_a30133cc7a07a2e64b505497250df84d\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_03371e8bbb210fff8c1beb07977c6fca\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_69de87ef8d8a066b8926b02e01e9f7f8\n\n\n\n\n"},"metadata":{}}],"execution_count":16},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_prod_and_div_955f44280fa0072653e4d910a57d7b92 was saved and received the ID: 1\nThe job get_sum_55b699570ac3c74e1e8078a45b657240 was saved and received the ID: 2\n"},{"execution_count":17,"output_type":"execute_result","data":{"text/plain":"2.5"},"metadata":{}}],"execution_count":17},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_arithmetic.json\")","metadata":{"trusted":true},"outputs":[{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"2.5"},"metadata":{}}],"execution_count":19}]} \ No newline at end of file diff --git a/example_workflows/arithmetic/workflow_arithmetic.json b/example_workflows/arithmetic/workflow.json similarity index 100% rename from example_workflows/arithmetic/workflow_arithmetic.json rename to example_workflows/arithmetic/workflow.json diff --git a/example_workflows/nfdi/aiida_nfdi.ipynb b/example_workflows/nfdi/aiida.ipynb similarity index 100% rename from example_workflows/nfdi/aiida_nfdi.ipynb rename to example_workflows/nfdi/aiida.ipynb diff --git a/example_workflows/nfdi/jobflow_nfdi.ipynb b/example_workflows/nfdi/jobflow.ipynb similarity index 100% rename from example_workflows/nfdi/jobflow_nfdi.ipynb rename to example_workflows/nfdi/jobflow.ipynb diff --git a/example_workflows/nfdi/pyiron_base_nfdi.ipynb b/example_workflows/nfdi/pyiron_base.ipynb similarity index 100% rename from example_workflows/nfdi/pyiron_base_nfdi.ipynb rename to example_workflows/nfdi/pyiron_base.ipynb diff --git a/example_workflows/nfdi/universal_workflow.ipynb b/example_workflows/nfdi/universal_workflow.ipynb new file mode 100644 index 0000000..e04294b --- /dev/null +++ b/example_workflows/nfdi/universal_workflow.ipynb @@ -0,0 +1,336 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# Load Simple Workflow", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Plot", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.plot import plot", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": "plot(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\n0\n\nnfdi_ing_workflow.generate_mesh\n\n\n\n1\n\nnfdi_ing_workflow.convert_to_xdmf\n\n\n\n0->1\n\n\ngmsh_output_file\n\n\n\n2\n\nnfdi_ing_workflow.poisson\n\n\n\n1->2\n\n\nmeshio_output_xdmf=result[xdmf_file], meshio_output_h5=result[h5_file]\n\n\n\n3\n\nnfdi_ing_workflow.plot_over_line\n\n\n\n2->3\n\n\npoisson_output_pvd_file=result[pvd_file], poisson_output_vtu_file=result[vtu_file]\n\n\n\n4\n\nnfdi_ing_workflow.substitute_macros\n\n\n\n2->4\n\n\nndofs=result[numdofs]\n\n\n\n3->4\n\n\npvbatch_output_file\n\n\n\n5\n\nnfdi_ing_workflow.compile_paper\n\n\n\n3->5\n\n\nplot_file\n\n\n\n4->5\n\n\nmacros_tex\n\n\n\n6\n\n2.0\n\n\n\n6->0\n\n\ndomain_size\n\n\n\n6->4\n\n\ndomain_size\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 2 + }, + { + "cell_type": "markdown", + "source": "## Aiida ", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 3, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": "workgraph = load_workflow_json(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "# TODO: Create inputs rather than tasks out of data nodes\nworkgraph", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 5, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "492cc805bc524eaa96137a512b2616fb" + } + }, + "metadata": {} + } + ], + "execution_count": 5 + }, + { + "cell_type": "code", + "source": "\nworkgraph.run()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:52:22 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/23/2025 09:52:24 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/23/2025 09:52:24 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/23/2025 09:52:26 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/23/2025 09:52:26 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/23/2025 09:52:30 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/23/2025 09:52:30 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/23/2025 09:52:33 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/23/2025 09:52:33 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/23/2025 09:52:35 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/23/2025 09:52:35 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|finalize]: Finalize workgraph.\n" + } + ], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "source": "## executorlib", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from executorlib import SingleNodeExecutor", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.executorlib import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ], + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "result", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 10, + "output_type": "execute_result", + "data": { + "text/plain": "'/home/jovyan/postprocessing/paper.pdf'" + }, + "metadata": {} + } + ], + "execution_count": 10 + }, + { + "cell_type": "markdown", + "source": "## Jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 11 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:52:59,822 INFO Started executing jobs locally\n2025-04-23 09:52:59,957 INFO Starting job - generate_mesh (3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a)\n2025-04-23 09:53:01,321 INFO Finished job - generate_mesh (3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a)\n2025-04-23 09:53:01,325 INFO Starting job - convert_to_xdmf (2457090f-84ec-40dc-87dc-16e1ecd5c5ef)\n2025-04-23 09:53:03,102 INFO Finished job - convert_to_xdmf (2457090f-84ec-40dc-87dc-16e1ecd5c5ef)\n2025-04-23 09:53:03,103 INFO Starting job - poisson (ddd8574c-2717-4d3c-a638-2e55670ae679)\n2025-04-23 09:53:06,212 INFO Finished job - poisson (ddd8574c-2717-4d3c-a638-2e55670ae679)\n2025-04-23 09:53:06,213 INFO Starting job - plot_over_line (669dc5b4-0fe1-41fa-8861-305009122991)\n2025-04-23 09:53:08,100 INFO Finished job - plot_over_line (669dc5b4-0fe1-41fa-8861-305009122991)\n2025-04-23 09:53:08,101 INFO Starting job - substitute_macros (bb6ad245-506d-4524-ae3e-e54bc4fcea61)\n2025-04-23 09:53:09,122 INFO Finished job - substitute_macros (bb6ad245-506d-4524-ae3e-e54bc4fcea61)\n2025-04-23 09:53:09,123 INFO Starting job - compile_paper (034ed702-2349-4e6b-b3e5-c5f83772b5aa)\n2025-04-23 09:53:11,397 INFO Finished job - compile_paper (034ed702-2349-4e6b-b3e5-c5f83772b5aa)\n2025-04-23 09:53:11,398 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "{'3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2457090f-84ec-40dc-87dc-16e1ecd5c5ef': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ddd8574c-2717-4d3c-a638-2e55670ae679': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '669dc5b4-0fe1-41fa-8861-305009122991': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'bb6ad245-506d-4524-ae3e-e54bc4fcea61': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '034ed702-2349-4e6b-b3e5-c5f83772b5aa': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "cell_type": "markdown", + "source": "## pyiron", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "cell_type": "code", + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ], + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d2c0e0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07dd0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07d70>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07bc0>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07d70>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d078c0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07b90>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07e00>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d076b0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d078f0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n" + }, + { + "execution_count": 17, + "output_type": "execute_result", + "data": { + "text/plain": "'/home/jovyan/postprocessing/paper.pdf'" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "cell_type": "markdown", + "source": "## Python", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.purepython import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "cell_type": "code", + "source": "load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 19, + "output_type": "execute_result", + "data": { + "text/plain": "'/home/jovyan/postprocessing/paper.pdf'" + }, + "metadata": {} + } + ], + "execution_count": 19 + } + ] +} diff --git a/example_workflows/nfdi/universal_workflow_nfdi.ipynb b/example_workflows/nfdi/universal_workflow_nfdi.ipynb deleted file mode 100644 index 6cf8c6e..0000000 --- a/example_workflows/nfdi/universal_workflow_nfdi.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Load Simple Workflow","metadata":{}},{"cell_type":"markdown","source":"## Plot","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.plot import plot","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"plot(file_name='workflow_nfdi.json')","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\n0\n\nnfdi_ing_workflow.generate_mesh\n\n\n\n1\n\nnfdi_ing_workflow.convert_to_xdmf\n\n\n\n0->1\n\n\ngmsh_output_file\n\n\n\n2\n\nnfdi_ing_workflow.poisson\n\n\n\n1->2\n\n\nmeshio_output_xdmf=result[xdmf_file], meshio_output_h5=result[h5_file]\n\n\n\n3\n\nnfdi_ing_workflow.plot_over_line\n\n\n\n2->3\n\n\npoisson_output_pvd_file=result[pvd_file], poisson_output_vtu_file=result[vtu_file]\n\n\n\n4\n\nnfdi_ing_workflow.substitute_macros\n\n\n\n2->4\n\n\nndofs=result[numdofs]\n\n\n\n3->4\n\n\npvbatch_output_file\n\n\n\n5\n\nnfdi_ing_workflow.compile_paper\n\n\n\n3->5\n\n\nplot_file\n\n\n\n4->5\n\n\nmacros_tex\n\n\n\n6\n\n2.0\n\n\n\n6->0\n\n\ndomain_size\n\n\n\n6->4\n\n\ndomain_size\n\n\n"},"metadata":{}}],"execution_count":2},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"workgraph = load_workflow_json(file_name='workflow_nfdi.json')","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"# TODO: Create inputs rather than tasks out of data nodes\nworkgraph","metadata":{"trusted":true},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"492cc805bc524eaa96137a512b2616fb"}},"metadata":{}}],"execution_count":5},{"cell_type":"code","source":"\nworkgraph.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:52:22 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/23/2025 09:52:24 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/23/2025 09:52:24 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/23/2025 09:52:26 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/23/2025 09:52:26 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/23/2025 09:52:30 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/23/2025 09:52:30 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/23/2025 09:52:33 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/23/2025 09:52:33 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/23/2025 09:52:35 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/23/2025 09:52:35 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:52:38 AM <6139> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [284|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":6},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_nfdi.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":10},{"cell_type":"markdown","source":"## Jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":11},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_nfdi.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:52:59,822 INFO Started executing jobs locally\n2025-04-23 09:52:59,957 INFO Starting job - generate_mesh (3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a)\n2025-04-23 09:53:01,321 INFO Finished job - generate_mesh (3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a)\n2025-04-23 09:53:01,325 INFO Starting job - convert_to_xdmf (2457090f-84ec-40dc-87dc-16e1ecd5c5ef)\n2025-04-23 09:53:03,102 INFO Finished job - convert_to_xdmf (2457090f-84ec-40dc-87dc-16e1ecd5c5ef)\n2025-04-23 09:53:03,103 INFO Starting job - poisson (ddd8574c-2717-4d3c-a638-2e55670ae679)\n2025-04-23 09:53:06,212 INFO Finished job - poisson (ddd8574c-2717-4d3c-a638-2e55670ae679)\n2025-04-23 09:53:06,213 INFO Starting job - plot_over_line (669dc5b4-0fe1-41fa-8861-305009122991)\n2025-04-23 09:53:08,100 INFO Finished job - plot_over_line (669dc5b4-0fe1-41fa-8861-305009122991)\n2025-04-23 09:53:08,101 INFO Starting job - substitute_macros (bb6ad245-506d-4524-ae3e-e54bc4fcea61)\n2025-04-23 09:53:09,122 INFO Finished job - substitute_macros (bb6ad245-506d-4524-ae3e-e54bc4fcea61)\n2025-04-23 09:53:09,123 INFO Starting job - compile_paper (034ed702-2349-4e6b-b3e5-c5f83772b5aa)\n2025-04-23 09:53:11,397 INFO Finished job - compile_paper (034ed702-2349-4e6b-b3e5-c5f83772b5aa)\n2025-04-23 09:53:11,398 INFO Finished executing jobs locally\n"},{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"{'3dfb7e61-0ac4-48e8-90b9-5dc1c8e9cc3a': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2457090f-84ec-40dc-87dc-16e1ecd5c5ef': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ddd8574c-2717-4d3c-a638-2e55670ae679': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '669dc5b4-0fe1-41fa-8861-305009122991': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'bb6ad245-506d-4524-ae3e-e54bc4fcea61': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '034ed702-2349-4e6b-b3e5-c5f83772b5aa': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":14},{"cell_type":"markdown","source":"## pyiron","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=\"workflow_nfdi.json\")\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d2c0e0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07dd0>\n\n\n\nmacros_tex_c5f640fc7b11414962941f82a40a8b04->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07d70>\n\n\n\npvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07bc0>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07d70>\n\n\n\npoisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nplot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78->create_function_job_69b38eef29d5c9aba4c6de512da1bb24\n\n\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d078c0>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07b90>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d07e00>\n\n\n\nmeshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->pvbatch_output_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\npoisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b->plot_file_5f8f87a5c4f1bd1a4b6cca85a1fc2b78\n\n\n\n\n\nndofs_c3811e53ce75b5460d97029d314439b5->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d076b0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_xdmf_fc75e768124c1b73ca0efc70a5765dea\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7c1a34d078f0>\n\n\n\ngmsh_output_file_950b49ac6562a70cf11f14756f9831ea->meshio_output_h5_efe999f964b5fb7603bd642abcd8905d\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_pvd_file_08c5d21e2c998fd513709b7a059c6649\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->poisson_output_vtu_file_62144723b416cb6b52989d18b3dec55b\n\n\n\n\n\nmeshio_output_h5_efe999f964b5fb7603bd642abcd8905d->ndofs_c3811e53ce75b5460d97029d314439b5\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_c5f640fc7b11414962941f82a40a8b04\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_950b49ac6562a70cf11f14756f9831ea\n\n\n\n\n"},"metadata":{}}],"execution_count":16},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":17,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":17},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_nfdi.json\")","metadata":{"trusted":true},"outputs":[{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":19}]} \ No newline at end of file diff --git a/example_workflows/nfdi/workflow_nfdi.json b/example_workflows/nfdi/workflow.json similarity index 100% rename from example_workflows/nfdi/workflow_nfdi.json rename to example_workflows/nfdi/workflow.json diff --git a/example_workflows/quantum_espresso/aiida_qe.ipynb b/example_workflows/quantum_espresso/aiida.ipynb similarity index 100% rename from example_workflows/quantum_espresso/aiida_qe.ipynb rename to example_workflows/quantum_espresso/aiida.ipynb diff --git a/example_workflows/quantum_espresso/environment_qe.yml b/example_workflows/quantum_espresso/environment.yml similarity index 100% rename from example_workflows/quantum_espresso/environment_qe.yml rename to example_workflows/quantum_espresso/environment.yml diff --git a/example_workflows/quantum_espresso/jobflow_qe.ipynb b/example_workflows/quantum_espresso/jobflow.ipynb similarity index 100% rename from example_workflows/quantum_espresso/jobflow_qe.ipynb rename to example_workflows/quantum_espresso/jobflow.ipynb diff --git a/example_workflows/quantum_espresso/pyiron_base_qe.ipynb b/example_workflows/quantum_espresso/pyiron_base.ipynb similarity index 100% rename from example_workflows/quantum_espresso/pyiron_base_qe.ipynb rename to example_workflows/quantum_espresso/pyiron_base.ipynb diff --git a/example_workflows/quantum_espresso/universal_workflow.ipynb b/example_workflows/quantum_espresso/universal_workflow.ipynb new file mode 100644 index 0000000..958ffe1 --- /dev/null +++ b/example_workflows/quantum_espresso/universal_workflow.ipynb @@ -0,0 +1,484 @@ +{ + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + } + }, + "nbformat_minor": 4, + "nbformat": 4, + "cells": [ + { + "cell_type": "markdown", + "source": "# Load Quantum Espresso Energy Volume Curve Workflow", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Plot", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.plot import plot", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "source": "plot(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\n0\n\nquantum_espresso_workflow.get_bulk_structure\n\n\n\n13\n\npython_workflow_definition.shared.get_dict\n\n\n\n0->13\n\n\nstructure\n\n\n\n1\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n13->1\n\n\ninput_dict\n\n\n\n2\n\nquantum_espresso_workflow.generate_structures\n\n\n\n1->2\n\n\nstructure=result[structure]\n\n\n\n20\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->20\n\n\nstructure=result[s_0]\n\n\n\n23\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->23\n\n\nstructure=result[s_1]\n\n\n\n25\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->25\n\n\nstructure=result[s_2]\n\n\n\n27\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->27\n\n\nstructure=result[s_3]\n\n\n\n29\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->29\n\n\nstructure=result[s_4]\n\n\n\n3\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n20->3\n\n\ninput_dict\n\n\n\n4\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n23->4\n\n\ninput_dict\n\n\n\n5\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n25->5\n\n\ninput_dict\n\n\n\n6\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n27->6\n\n\ninput_dict\n\n\n\n7\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n29->7\n\n\ninput_dict\n\n\n\n30\n\npython_workflow_definition.shared.get_list\n\n\n\n3->30\n\n\n0=result[volume]\n\n\n\n31\n\npython_workflow_definition.shared.get_list\n\n\n\n3->31\n\n\n0=result[energy]\n\n\n\n8\n\nquantum_espresso_workflow.plot_energy_volume_curve\n\n\n\n30->8\n\n\nvolume_lst\n\n\n\n31->8\n\n\nenergy_lst\n\n\n\n4->30\n\n\n1=result[volume]\n\n\n\n4->31\n\n\n1=result[energy]\n\n\n\n5->30\n\n\n2=result[volume]\n\n\n\n5->31\n\n\n2=result[energy]\n\n\n\n6->30\n\n\n3=result[volume]\n\n\n\n6->31\n\n\n3=result[energy]\n\n\n\n7->30\n\n\n4=result[volume]\n\n\n\n7->31\n\n\n4=result[energy]\n\n\n\n9\n\nAl\n\n\n\n9->0\n\n\nelement\n\n\n\n10\n\n4.05\n\n\n\n10->0\n\n\na\n\n\n\n11\n\nTrue\n\n\n\n11->0\n\n\ncubic\n\n\n\n12\n\nmini\n\n\n\n12->1\n\n\nworking_directory\n\n\n\n14\n\n{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\n14->13\n\n\npseudopotentials\n\n\n\n14->20\n\n\npseudopotentials\n\n\n\n14->23\n\n\npseudopotentials\n\n\n\n14->25\n\n\npseudopotentials\n\n\n\n14->27\n\n\npseudopotentials\n\n\n\n14->29\n\n\npseudopotentials\n\n\n\n15\n\n[3, 3, 3]\n\n\n\n15->13\n\n\nkpts\n\n\n\n15->20\n\n\nkpts\n\n\n\n15->23\n\n\nkpts\n\n\n\n15->25\n\n\nkpts\n\n\n\n15->27\n\n\nkpts\n\n\n\n15->29\n\n\nkpts\n\n\n\n16\n\nvc-relax\n\n\n\n16->13\n\n\ncalculation\n\n\n\n17\n\n0.02\n\n\n\n17->13\n\n\nsmearing\n\n\n\n17->20\n\n\nsmearing\n\n\n\n17->23\n\n\nsmearing\n\n\n\n17->25\n\n\nsmearing\n\n\n\n17->27\n\n\nsmearing\n\n\n\n17->29\n\n\nsmearing\n\n\n\n18\n\n[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\n18->2\n\n\nstrain_lst\n\n\n\n19\n\nstrain_0\n\n\n\n19->3\n\n\nworking_directory\n\n\n\n21\n\nscf\n\n\n\n21->20\n\n\ncalculation\n\n\n\n21->23\n\n\ncalculation\n\n\n\n21->25\n\n\ncalculation\n\n\n\n21->27\n\n\ncalculation\n\n\n\n21->29\n\n\ncalculation\n\n\n\n22\n\nstrain_1\n\n\n\n22->4\n\n\nworking_directory\n\n\n\n24\n\nstrain_2\n\n\n\n24->5\n\n\nworking_directory\n\n\n\n26\n\nstrain_3\n\n\n\n26->6\n\n\nworking_directory\n\n\n\n28\n\nstrain_4\n\n\n\n28->7\n\n\nworking_directory\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 2 + }, + { + "cell_type": "markdown", + "source": "## Aiida ", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.aiida import load_workflow_json\nfrom aiida import load_profile\nload_profile()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 3, + "output_type": "execute_result", + "data": { + "text/plain": "Profile" + }, + "metadata": {} + } + ], + "execution_count": 3 + }, + { + "cell_type": "code", + "source": "wg = load_workflow_json(file_name='workflow.json')", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "code", + "source": "wg", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "execution_count": 5, + "output_type": "execute_result", + "data": { + "text/plain": "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 1, + "model_id": "5af0ea14112b49749055805432385d2e" + } + }, + "metadata": {} + } + ], + "execution_count": 5 + }, + { + "cell_type": "code", + "source": "wg.run()\n", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "04/23/2025 09:54:08 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n04/23/2025 09:54:09 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n04/23/2025 09:54:09 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n04/23/2025 09:54:10 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:54:10 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09908] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n04/23/2025 09:55:04 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n04/23/2025 09:55:04 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:05 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n04/23/2025 09:55:05 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09923] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:16 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09934] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:30 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n04/23/2025 09:55:30 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09945] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:42 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:43 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:55:43 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n04/23/2025 09:55:44 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:55:44 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09957] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n04/23/2025 09:56:00 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n04/23/2025 09:56:00 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09972] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:56:17 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:56:18 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n04/23/2025 09:56:18 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|finalize]: Finalize workgraph.\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "source": "## executorlib", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from executorlib import SingleNodeExecutor", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.executorlib import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 8 + }, + { + "cell_type": "code", + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ], + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10149] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10867] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10938] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11002] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11066] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11130] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + } + ], + "execution_count": 9 + }, + { + "cell_type": "code", + "source": "result", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "markdown", + "source": "## jobflow", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from jobflow.managers.local import run_locally", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" + } + ], + "execution_count": 11 + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.jobflow import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 12 + }, + { + "cell_type": "code", + "source": "flow = load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 13 + }, + { + "cell_type": "code", + "source": "result = run_locally(flow)\nresult", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 09:59:48,753 INFO Started executing jobs locally\n2025-04-23 09:59:48,761 INFO Starting job - get_bulk_structure (35ed74db-cf3f-4c0f-99bd-a7ff1db0d988)\n2025-04-23 09:59:48,764 INFO Finished job - get_bulk_structure (35ed74db-cf3f-4c0f-99bd-a7ff1db0d988)\n2025-04-23 09:59:48,764 INFO Starting job - get_dict (7774021f-6e06-4c7f-92a9-46955c99ecd4)\n2025-04-23 09:59:48,767 INFO Finished job - get_dict (7774021f-6e06-4c7f-92a9-46955c99ecd4)\n2025-04-23 09:59:48,767 INFO Starting job - calculate_qe (61858f11-6889-471c-8c11-dcb40ddb9fc5)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11842] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:00:38,712 INFO Finished job - calculate_qe (61858f11-6889-471c-8c11-dcb40ddb9fc5)\n2025-04-23 10:00:38,713 INFO Starting job - generate_structures (6677baf4-a206-48d3-ac40-1553c1978514)\n2025-04-23 10:00:38,717 INFO Finished job - generate_structures (6677baf4-a206-48d3-ac40-1553c1978514)\n2025-04-23 10:00:38,718 INFO Starting job - get_dict (e08257f2-54ce-417e-9d4a-3be382e98632)\n2025-04-23 10:00:38,719 INFO Finished job - get_dict (e08257f2-54ce-417e-9d4a-3be382e98632)\n2025-04-23 10:00:38,720 INFO Starting job - get_dict (09257370-ee8d-4fb4-b1df-c68470f77d6e)\n2025-04-23 10:00:38,721 INFO Finished job - get_dict (09257370-ee8d-4fb4-b1df-c68470f77d6e)\n2025-04-23 10:00:38,721 INFO Starting job - get_dict (f54bd010-a381-4fb9-a6a2-327603f25c6c)\n2025-04-23 10:00:38,723 INFO Finished job - get_dict (f54bd010-a381-4fb9-a6a2-327603f25c6c)\n2025-04-23 10:00:38,723 INFO Starting job - get_dict (a7796fe7-6fa9-46ff-938c-747a1216db5a)\n2025-04-23 10:00:38,724 INFO Finished job - get_dict (a7796fe7-6fa9-46ff-938c-747a1216db5a)\n2025-04-23 10:00:38,725 INFO Starting job - get_dict (51a90fa6-a6fc-458e-9039-ccc9dcfb55db)\n2025-04-23 10:00:38,726 INFO Finished job - get_dict (51a90fa6-a6fc-458e-9039-ccc9dcfb55db)\n2025-04-23 10:00:38,726 INFO Starting job - calculate_qe (0060409e-3f07-4950-a306-f4b2b5e19fde)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11856] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:00:49,710 INFO Finished job - calculate_qe (0060409e-3f07-4950-a306-f4b2b5e19fde)\n2025-04-23 10:00:49,711 INFO Starting job - calculate_qe (d40b5716-3dee-4eb6-9c82-5335f13e2ed5)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11866] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:01:00,507 INFO Finished job - calculate_qe (d40b5716-3dee-4eb6-9c82-5335f13e2ed5)\n2025-04-23 10:01:00,508 INFO Starting job - calculate_qe (ca9b7260-0409-45d0-b0a5-cd07b9e34fff)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11876] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:01:14,075 INFO Finished job - calculate_qe (ca9b7260-0409-45d0-b0a5-cd07b9e34fff)\n2025-04-23 10:01:14,076 INFO Starting job - calculate_qe (7ef9bf5f-2ca4-4005-8389-9cc19488c6ba)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11886] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:01:28,946 INFO Finished job - calculate_qe (7ef9bf5f-2ca4-4005-8389-9cc19488c6ba)\n2025-04-23 10:01:28,951 INFO Starting job - calculate_qe (223364ac-72f3-4a33-848e-bd19d97d5d03)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11896] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:01:44,264 INFO Finished job - calculate_qe (223364ac-72f3-4a33-848e-bd19d97d5d03)\n2025-04-23 10:01:44,265 INFO Starting job - get_list (2154d54f-07fe-487a-aca2-fa00d90f90a4)\n2025-04-23 10:01:44,269 INFO Finished job - get_list (2154d54f-07fe-487a-aca2-fa00d90f90a4)\n2025-04-23 10:01:44,269 INFO Starting job - get_list (1d4c09d5-7f97-4496-8cfd-1ec336c467d8)\n2025-04-23 10:01:44,274 INFO Finished job - get_list (1d4c09d5-7f97-4496-8cfd-1ec336c467d8)\n2025-04-23 10:01:44,275 INFO Starting job - plot_energy_volume_curve (43ed7824-5c9c-46f4-96fd-e6bc56809e5b)\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "2025-04-23 10:01:44,359 INFO Finished job - plot_energy_volume_curve (43ed7824-5c9c-46f4-96fd-e6bc56809e5b)\n2025-04-23 10:01:44,360 INFO Finished executing jobs locally\n" + }, + { + "execution_count": 14, + "output_type": "execute_result", + "data": { + "text/plain": "{'35ed74db-cf3f-4c0f-99bd-a7ff1db0d988': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7774021f-6e06-4c7f-92a9-46955c99ecd4': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '61858f11-6889-471c-8c11-dcb40ddb9fc5': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365262253605, 'volume': 66.21567448235946}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '6677baf4-a206-48d3-ac40-1553c1978514': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859620884, 0.0, 0.0], [0.0, 3.9060197859620884, 0.0], [0.0, 0.0, 3.9060197859620884]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098929810442, 1.9530098929810442], [1.9530098929810442, 0.0, 1.9530098929810442], [1.9530098929810442, 1.9530098929810442, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.977053844317988, 0.0, 0.0], [0.0, 3.977053844317988, 0.0], [0.0, 0.0, 3.977053844317988]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221589943, 1.9885269221589943], [1.9885269221589943, 0.0, 1.9885269221589943], [1.9885269221589943, 1.9885269221589943, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282893, 0.0, 0.0], [0.0, 4.111970927282893, 0.0], [0.0, 0.0, 4.111970927282893]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414463, 2.0559854636414463], [2.0559854636414463, 0.0, 2.0559854636414463], [2.0559854636414463, 2.0559854636414463, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372117, 0.0, 0.0], [0.0, 4.176230852372117, 0.0], [0.0, 0.0, 4.176230852372117]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860586, 2.0881154261860586], [2.0881154261860586, 0.0, 2.0881154261860586], [2.0881154261860586, 2.0881154261860586, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e08257f2-54ce-417e-9d4a-3be382e98632': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859620884, 0.0, 0.0], [0.0, 3.9060197859620884, 0.0], [0.0, 0.0, 3.9060197859620884]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098929810442, 1.9530098929810442], [1.9530098929810442, 0.0, 1.9530098929810442], [1.9530098929810442, 1.9530098929810442, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '09257370-ee8d-4fb4-b1df-c68470f77d6e': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.977053844317988, 0.0, 0.0], [0.0, 3.977053844317988, 0.0], [0.0, 0.0, 3.977053844317988]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221589943, 1.9885269221589943], [1.9885269221589943, 0.0, 1.9885269221589943], [1.9885269221589943, 1.9885269221589943, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'f54bd010-a381-4fb9-a6a2-327603f25c6c': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'a7796fe7-6fa9-46ff-938c-747a1216db5a': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282893, 0.0, 0.0], [0.0, 4.111970927282893, 0.0], [0.0, 0.0, 4.111970927282893]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414463, 2.0559854636414463], [2.0559854636414463, 0.0, 2.0559854636414463], [2.0559854636414463, 2.0559854636414463, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '51a90fa6-a6fc-458e-9039-ccc9dcfb55db': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372117, 0.0, 0.0], [0.0, 4.176230852372117, 0.0], [0.0, 0.0, 4.176230852372117]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860586, 2.0881154261860586], [2.0881154261860586, 0.0, 2.0881154261860586], [2.0881154261860586, 2.0881154261860586, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '0060409e-3f07-4950-a306-f4b2b5e19fde': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019768889126, 0.0, 0.0], [0.0, 3.906019768889126, 0.0], [0.0, 0.0, 3.906019768889126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150614, 'volume': 59.59410625267737}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd40b5716-3dee-4eb6-9c82-5335f13e2ed5': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538269345397, 0.0, 0.0], [0.0, 3.9770538269345397, 0.0], [0.0, 0.0, 3.9770538269345397]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082746, 1.9885269135082746], [1.9885269135082746, 0.0, 1.9885269135082746], [1.9885269135082746, 1.9885269135082746, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594598, 'volume': 62.90488993338167}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ca9b7260-0409-45d0-b0a5-cd07b9e34fff': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263556, 0.0, 0.0], [0.0, 4.045637198263556, 0.0], [0.0, 0.0, 4.045637198263556]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583882, 2.0228185991583882], [2.0228185991583882, 0.0, 2.0228185991583882], [2.0228185991583882, 2.0228185991583882, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668365, 'volume': 66.21567361408594}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7ef9bf5f-2ca4-4005-8389-9cc19488c6ba': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309726, 0.0, 0.0], [0.0, 4.111970909309726, 0.0], [0.0, 0.0, 4.111970909309726]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025814, 'volume': 69.52645729479006}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '223364ac-72f3-4a33-848e-bd19d97d5d03': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411808, 0.0, 0.0], [0.0, 4.17623083411808, 0.0], [0.0, 0.0, 4.17623083411808]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8737904693435, 'volume': 72.83724097549467}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2154d54f-07fe-487a-aca2-fa00d90f90a4': {1: Response(output=[59.59410625267737, 62.90488993338167, 66.21567361408594, 69.52645729479006, 72.83724097549467], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '1d4c09d5-7f97-4496-8cfd-1ec336c467d8': {1: Response(output=[-1074.8457446150614, -1074.9161488594598, -1074.9365241668365, -1074.9192860025814, -1074.8737904693435], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '43ed7824-5c9c-46f4-96fd-e6bc56809e5b': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlB5aSksJtt91G8+bN8fT0pFu3bmzcuLH8+4ZhMGPGDIKCgmjUqBEDBw5kx44dJiauXVUdj6KiIh599FE6d+6Ml5cXQUFBTJgwgdTUVJNT165z/Y780d13343FYuGNN96wb0g7Op/jER8fz+jRo7FarTRp0oS+ffty4MABkxLXrnMdj5MnTzJlyhSCg4Np1KgRERERvPvuuyYmrj1hYWFYLJYzHn//+9+Bhvd5WtXxaIifpypLDurEiRNcdtlluLq68tNPP7Fz505effVVfHx8yrd56aWXeO2115g9ezbr168nMDCQwYMHl9+epT451/HIy8tj06ZNPPnkk2zatImFCxeSmJjI6NGjzQ1ei87nd6TMN998w9q1awkKCrJ/UDs5n+OxZ88e+vfvT3h4OCtWrGDLli08+eSTeHh4mBe8lpzP8Zg6dSoxMTF89tlnxMfHM3XqVO69916+/fZb84LXkvXr15OWllb+WLJkCQDjxo0DGtbnKVR9PBri5ymGOKRHH33U6N+//1m/b7PZjMDAQGPWrFnlz+Xn5xtWq9V477337BHRrs51PCqzbt06AzD2799fS6nMdb7H5NChQ0bLli2N7du3G6Ghocbrr79e++FMcD7HY/z48cZtt91mp0TmOp/j0bFjR+OZZ56p8FyPHj2MJ554ojaj1Qn333+/cckllxg2m63BfZ5W5o/HozL1/fNUI0sOavHixfTq1Ytx48bh7+9P9+7d+eCDD8q/v2/fPtLT08tvPAyla2MMGDCA1atXmxG5Vp3reFQmKysLi8VS6UhLfXA+x8RmsxEdHc20adPo2LGjSUnt41zHw2az8cMPP9C+fXuGDh2Kv78/ffr04ZtvvjEvdC06n9+P/v37s3jxYlJSUjAMg+XLl5OYmMjQoUNNSm0fhYWFfPbZZ9xxxx1YLJYG93n6Z38+HpWp75+nGllyUO7u7oa7u7sxffp0Y9OmTcZ7771neHh4GB9//LFhGIaxatUqAzBSUlIq7Dd58mRjyJAhZkSuVec6Hn926tQpo2fPnsatt95q56T2cz7H5IUXXjAGDx5c/q/F+jyydK7jkZaWZgCGp6en8dprrxmbN282Zs6caVgsFmPFihUmp6955/P7UVBQYEyYMMEADBcXF8PNzc345JNPTExtH1999ZXh7Oxc/vnZ0D5P/+zPx+PPGsLnqcqSg3J1dTWioqIqPHfvvfcaffv2NQzjf//jTk1NrbDNXXfdZQwdOtRuOe3lXMfjjwoLC41rr73W6N69u5GVlWWviHZ3rmOyYcMGIyAgoMIHYH0uS+c6HikpKQZg3HzzzRW2GTVqlHHTTTfZLae9nM//Zl5++WWjffv2xuLFi40tW7YYb731ltG4cWNjyZIl9o5rV0OGDDFGjhxZ/nVD+zz9sz8fjz9qKJ+nmoZzUC1atCAyMrLCcxEREeVX7QQGBgKQnp5eYZvDhw8TEBBgn5B2dK7jUaaoqIgbb7yRffv2sWTJknpxx+yzOdcx+f333zl8+DCtWrXCxcUFFxcX9u/fz0MPPURYWJgJiWvXuY6Hr68vLi4u5/V7VB+c63icOnWKxx9/nNdee41Ro0bRpUsXpkyZwvjx43nllVfMiGwX+/fvZ+nSpdx1113lzzW0z9M/qux4lGlIn6cqSw7qsssuIyEhocJziYmJhIaGAtC6dWsCAwPLr2CA0nnn3377jX79+tk1qz2c63jA//6HnZSUxNKlS2nevLm9Y9rVuY5JdHQ0W7duJS4urvwRFBTEtGnT+Pnnn82IXKvOdTzc3Ny49NJLz/l7VF+c63gUFRVRVFSEk1PFPxPOzs7YbDa75bS3OXPm4O/vz4gRI8qfa2ifp39U2fGAhvd5qmk4B7Vu3TrDxcXFeP75542kpCTj888/Nzw9PY3PPvusfJtZs2YZVqvVWLhwobFt2zbj5ptvNlq0aGFkZ2ebmLx2nOt4FBUVGaNHjzaCg4ONuLg4Iy0trfxRUFBgcvracT6/I39Wn6fhzud4LFy40HB1dTX+9a9/GUlJScZbb71lODs7G7///ruJyWvH+RyPAQMGGB07djSWL19u7N2715gzZ47h4eFhvPPOOyYmrz0lJSVGq1atjEcfffSM7zWkz9MyZzseDfHzVGXJgX333XdGp06dDHd3dyM8PNz417/+VeH7NpvNePrpp43AwEDD3d3duOKKK4xt27aZlLb2VXU89u3bZwCVPpYvX25e6Fp2rt+RP6vPZckwzu94fPjhh0bbtm0NDw8Po2vXrsY333xjQlL7ONfxSEtLMyZOnGgEBQUZHh4eRocOHYxXX331rJePO7qff/7ZAIyEhIQzvtfQPk8N4+zHoyF+nloMwzDMGNESERERcQQ6Z0lERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 14 + }, + { + "cell_type": "markdown", + "source": "## pyiron_base", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.pyiron_base import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 15 + }, + { + "cell_type": "code", + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ], + "metadata": { + "trusted": true + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "image/svg+xml": "\n\n\n\n\ncreate_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaaf30>\n\n\n\nvolume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa94f0>\n\n\n\nvolume_lst_b5f2fd1e32e4e01ea2626029ed68b478->create_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\n\n\n\n\n0_cfd4cf6c1025f44cf76a26492950ed54\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9970>\n\n\n\n0_cfd4cf6c1025f44cf76a26492950ed54->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_cfd4cf6c1025f44cf76a26492950ed54\n\n\n\n\n\n0_cc627152090a464ac0fcf4a27e06bbb5\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab710>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_cc627152090a464ac0fcf4a27e06bbb5\n\n\n\n\n\nenergy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa89b0>\n\n\n\n0_cc627152090a464ac0fcf4a27e06bbb5->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8ce0>\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1->0_cfd4cf6c1025f44cf76a26492950ed54\n\n\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1->0_cc627152090a464ac0fcf4a27e06bbb5\n\n\n\n\n\nstructure_df04e4d893c5690957f89611b7345b28\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9be0>\n\n\n\nstructure_df04e4d893c5690957f89611b7345b28->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8fe0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_df04e4d893c5690957f89611b7345b28\n\n\n\n\n\nstructure_2b7ddbcc5cb639c73affda9ede67dec5\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9f70>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_2b7ddbcc5cb639c73affda9ede67dec5\n\n\n\n\n\nstructure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa570>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\n\n\n\n\nstructure_8cca8f18cbbe5fb77bb757dffc3ae643\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa5d0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_8cca8f18cbbe5fb77bb757dffc3ae643\n\n\n\n\n\nstructure_b84beabc3985a89fc046a65b9a67e983\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa8d0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_b84beabc3985a89fc046a65b9a67e983\n\n\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9af0>\n\n\n\nstructure_2b7ddbcc5cb639c73affda9ede67dec5->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9eb0>\n\n\n\nstructure_aa5ccf55b0a0454daa8ad56aaa4c1b75->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa5a0>\n\n\n\nstructure_8cca8f18cbbe5fb77bb757dffc3ae643->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaac00>\n\n\n\nstructure_b84beabc3985a89fc046a65b9a67e983->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_140732db3f49342de208b33a5c1eaaa8\n\n\n\n\n\ninput_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab170>\n\n\n\ninput_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17->structure_140732db3f49342de208b33a5c1eaaa8\n\n\n\n\n\nstructure_282f0db80018c1bdf8d2119a70f01182\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9880>\n\n\n\nstructure_282f0db80018c1bdf8d2119a70f01182->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\n1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8980>\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f->1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n\n\n\n\n1_5bd086346009762990f93ec30f88dcd7\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab6e0>\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f->1_5bd086346009762990f93ec30f88dcd7\n\n\n\n\n\n2_146e8d22689b52e89f9c92b365734f80\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa82c0>\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f->2_146e8d22689b52e89f9c92b365734f80\n\n\n\n\n\n2_323db0344dea52dc7aae9026884bb4bf\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaba40>\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f->2_323db0344dea52dc7aae9026884bb4bf\n\n\n\n\n\n3_c95ed4f75c0e100499869a1c2682a919\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9df0>\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9->3_c95ed4f75c0e100499869a1c2682a919\n\n\n\n\n\n3_ae3c4c3451f55bb975d471c4a248a4bc\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa80b0>\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9->3_ae3c4c3451f55bb975d471c4a248a4bc\n\n\n\n\n\n4_b7507f656125f365dc5dfea1575f24e8\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa390>\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d->4_b7507f656125f365dc5dfea1575f24e8\n\n\n\n\n\n4_c6fc275eedc1dad3222d092b24c3382c\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baabc50>\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d->4_c6fc275eedc1dad3222d092b24c3382c\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781\n\nstrain_lst=[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_df04e4d893c5690957f89611b7345b28\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_2b7ddbcc5cb639c73affda9ede67dec5\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_8cca8f18cbbe5fb77bb757dffc3ae643\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_b84beabc3985a89fc046a65b9a67e983\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\n1_081d0cbb5f75d5202dfdffa9d67c3b22->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_5bd086346009762990f93ec30f88dcd7\n\n\n\n\n\n1_5bd086346009762990f93ec30f88dcd7->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n2_146e8d22689b52e89f9c92b365734f80->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_146e8d22689b52e89f9c92b365734f80\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_323db0344dea52dc7aae9026884bb4bf\n\n\n\n\n\n2_323db0344dea52dc7aae9026884bb4bf->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n3_c95ed4f75c0e100499869a1c2682a919->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_c95ed4f75c0e100499869a1c2682a919\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_ae3c4c3451f55bb975d471c4a248a4bc\n\n\n\n\n\n3_ae3c4c3451f55bb975d471c4a248a4bc->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n4_b7507f656125f365dc5dfea1575f24e8->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_b7507f656125f365dc5dfea1575f24e8\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_c6fc275eedc1dad3222d092b24c3382c\n\n\n\n\n\n4_c6fc275eedc1dad3222d092b24c3382c->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\nenergy_lst_15dd456e7182ea1aeeb3eb8a96e8d855->create_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\n\n\n\n" + }, + "metadata": {} + } + ], + "execution_count": 16 + }, + { + "cell_type": "code", + "source": "delayed_object_lst[-1].pull()", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_e3c0bf43f7edf24d215901bf93271e87 was saved and received the ID: 3\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11926] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job generate_structures_5ee3c796287c1d44e6fcdeec1fcc55e5 was saved and received the ID: 4\nThe job get_dict_a6c6a93d0a4d3f93b67cd4f2f527f113 was saved and received the ID: 5\nThe job calculate_qe_30b838d672325385dbf68abbd0dc920f was saved and received the ID: 6\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11942] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_56c7baf33180a622d02de781bb5d83b8 was saved and received the ID: 7\nThe job calculate_qe_9be8c05a4037c09a47b17e782e3af791 was saved and received the ID: 8\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11953] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_13814149cf915b88a341f5932909d0c5 was saved and received the ID: 9\nThe job calculate_qe_ca75104e062b66d78cb4990513466ad9 was saved and received the ID: 10\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11963] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_2aa82e83accc35e7ebb2ab9e1f450b85 was saved and received the ID: 11\nThe job calculate_qe_bf556bcb1e352359c372a2ccc2bc060e was saved and received the ID: 12\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11973] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_dict_fe77eeeb61b97b67635aae94093a7e1d was saved and received the ID: 13\nThe job calculate_qe_ef80e3efb1f1b5c06bfbcec3bf1b4905 was saved and received the ID: 14\n" + }, + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11985] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "name": "stdout", + "output_type": "stream", + "text": "The job get_list_2691e781d16d4171a2d5e93468359d9f was saved and received the ID: 15\nThe job get_list_31e21423c6b0488ff776e3739a542d92 was saved and received the ID: 16\nThe job plot_energy_volume_curve_204ada257bb5f43b38f0b8818e86bdaa was saved and received the ID: 17\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 17 + }, + { + "cell_type": "markdown", + "source": "## Python", + "metadata": {} + }, + { + "cell_type": "code", + "source": "from python_workflow_definition.purepython import load_workflow_json", + "metadata": { + "trusted": true + }, + "outputs": [], + "execution_count": 18 + }, + { + "cell_type": "code", + "source": "load_workflow_json(file_name=\"workflow.json\")", + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": "[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11996] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12014] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12025] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12036] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12047] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12057] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlB5aSksJtt91G8+bN8fT0pFu3bmzcuLH8+4ZhMGPGDIKCgmjUqBEDBw5kx44dJiauXVUdj6KiIh599FE6d+6Ml5cXQUFBTJgwgdTUVJNT165z/Y780d13343FYuGNN96wb0g7Op/jER8fz+jRo7FarTRp0oS+ffty4MABkxLXrnMdj5MnTzJlyhSCg4Np1KgRERERvPvuuyYmrj1hYWFYLJYzHn//+9+Bhvd5WtXxaIifpypLDurEiRNcdtlluLq68tNPP7Fz505effVVfHx8yrd56aWXeO2115g9ezbr168nMDCQwYMHl9+epT451/HIy8tj06ZNPPnkk2zatImFCxeSmJjI6NGjzQ1ei87nd6TMN998w9q1awkKCrJ/UDs5n+OxZ88e+vfvT3h4OCtWrGDLli08+eSTeHh4mBe8lpzP8Zg6dSoxMTF89tlnxMfHM3XqVO69916+/fZb84LXkvXr15OWllb+WLJkCQDjxo0DGtbnKVR9PBri5ymGOKRHH33U6N+//1m/b7PZjMDAQGPWrFnlz+Xn5xtWq9V477337BHRrs51PCqzbt06AzD2799fS6nMdb7H5NChQ0bLli2N7du3G6Ghocbrr79e++FMcD7HY/z48cZtt91mp0TmOp/j0bFjR+OZZ56p8FyPHj2MJ554ojaj1Qn333+/cckllxg2m63BfZ5W5o/HozL1/fNUI0sOavHixfTq1Ytx48bh7+9P9+7d+eCDD8q/v2/fPtLT08tvPAyla2MMGDCA1atXmxG5Vp3reFQmKysLi8VS6UhLfXA+x8RmsxEdHc20adPo2LGjSUnt41zHw2az8cMPP9C+fXuGDh2Kv78/ffr04ZtvvjEvdC06n9+P/v37s3jxYlJSUjAMg+XLl5OYmMjQoUNNSm0fhYWFfPbZZ9xxxx1YLJYG93n6Z38+HpWp75+nGllyUO7u7oa7u7sxffp0Y9OmTcZ7771neHh4GB9//LFhGIaxatUqAzBSUlIq7Dd58mRjyJAhZkSuVec6Hn926tQpo2fPnsatt95q56T2cz7H5IUXXjAGDx5c/q/F+jyydK7jkZaWZgCGp6en8dprrxmbN282Zs6caVgsFmPFihUmp6955/P7UVBQYEyYMMEADBcXF8PNzc345JNPTExtH1999ZXh7Oxc/vnZ0D5P/+zPx+PPGsLnqcqSg3J1dTWioqIqPHfvvfcaffv2NQzjf//jTk1NrbDNXXfdZQwdOtRuOe3lXMfjjwoLC41rr73W6N69u5GVlWWviHZ3rmOyYcMGIyAgoMIHYH0uS+c6HikpKQZg3HzzzRW2GTVqlHHTTTfZLae9nM//Zl5++WWjffv2xuLFi40tW7YYb731ltG4cWNjyZIl9o5rV0OGDDFGjhxZ/nVD+zz9sz8fjz9qKJ+nmoZzUC1atCAyMrLCcxEREeVX7QQGBgKQnp5eYZvDhw8TEBBgn5B2dK7jUaaoqIgbb7yRffv2sWTJknpxx+yzOdcx+f333zl8+DCtWrXCxcUFFxcX9u/fz0MPPURYWJgJiWvXuY6Hr68vLi4u5/V7VB+c63icOnWKxx9/nNdee41Ro0bRpUsXpkyZwvjx43nllVfMiGwX+/fvZ+nSpdx1113lzzW0z9M/qux4lGlIn6cqSw7qsssuIyEhocJziYmJhIaGAtC6dWsCAwPLr2CA0nnn3377jX79+tk1qz2c63jA//6HnZSUxNKlS2nevLm9Y9rVuY5JdHQ0W7duJS4urvwRFBTEtGnT+Pnnn82IXKvOdTzc3Ny49NJLz/l7VF+c63gUFRVRVFSEk1PFPxPOzs7YbDa75bS3OXPm4O/vz4gRI8qfa2ifp39U2fGAhvd5qmk4B7Vu3TrDxcXFeP75542kpCTj888/Nzw9PY3PPvusfJtZs2YZVqvVWLhwobFt2zbj5ptvNlq0aGFkZ2ebmLx2nOt4FBUVGaNHjzaCg4ONuLg4Iy0trfxRUFBgcvracT6/I39Wn6fhzud4LFy40HB1dTX+9a9/GUlJScZbb71lODs7G7///ruJyWvH+RyPAQMGGB07djSWL19u7N2715gzZ47h4eFhvPPOOyYmrz0lJSVGq1atjEcfffSM7zWkz9MyZzseDfHzVGXJgX333XdGp06dDHd3dyM8PNz417/+VeH7NpvNePrpp43AwEDD3d3duOKKK4xt27aZlLb2VXU89u3bZwCVPpYvX25e6Fp2rt+RP6vPZckwzu94fPjhh0bbtm0NDw8Po2vXrsY333xjQlL7ONfxSEtLMyZOnGgEBQUZHh4eRocOHYxXX331rJePO7qff/7ZAIyEhIQzvtfQPk8N4+zHoyF+nloMwzDMGNESERERcQQ6Z0lERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ], + "execution_count": 19 + } + ] +} diff --git a/example_workflows/quantum_espresso/universal_workflow_qe.ipynb b/example_workflows/quantum_espresso/universal_workflow_qe.ipynb deleted file mode 100644 index dbe6348..0000000 --- a/example_workflows/quantum_espresso/universal_workflow_qe.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Load Quantum Espresso Energy Volume Curve Workflow","metadata":{}},{"cell_type":"markdown","source":"## Plot","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.plot import plot","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"cell_type":"code","source":"plot(file_name='workflow_qe.json')","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\n0\n\nquantum_espresso_workflow.get_bulk_structure\n\n\n\n13\n\npython_workflow_definition.shared.get_dict\n\n\n\n0->13\n\n\nstructure\n\n\n\n1\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n13->1\n\n\ninput_dict\n\n\n\n2\n\nquantum_espresso_workflow.generate_structures\n\n\n\n1->2\n\n\nstructure=result[structure]\n\n\n\n20\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->20\n\n\nstructure=result[s_0]\n\n\n\n23\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->23\n\n\nstructure=result[s_1]\n\n\n\n25\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->25\n\n\nstructure=result[s_2]\n\n\n\n27\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->27\n\n\nstructure=result[s_3]\n\n\n\n29\n\npython_workflow_definition.shared.get_dict\n\n\n\n2->29\n\n\nstructure=result[s_4]\n\n\n\n3\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n20->3\n\n\ninput_dict\n\n\n\n4\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n23->4\n\n\ninput_dict\n\n\n\n5\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n25->5\n\n\ninput_dict\n\n\n\n6\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n27->6\n\n\ninput_dict\n\n\n\n7\n\nquantum_espresso_workflow.calculate_qe\n\n\n\n29->7\n\n\ninput_dict\n\n\n\n30\n\npython_workflow_definition.shared.get_list\n\n\n\n3->30\n\n\n0=result[volume]\n\n\n\n31\n\npython_workflow_definition.shared.get_list\n\n\n\n3->31\n\n\n0=result[energy]\n\n\n\n8\n\nquantum_espresso_workflow.plot_energy_volume_curve\n\n\n\n30->8\n\n\nvolume_lst\n\n\n\n31->8\n\n\nenergy_lst\n\n\n\n4->30\n\n\n1=result[volume]\n\n\n\n4->31\n\n\n1=result[energy]\n\n\n\n5->30\n\n\n2=result[volume]\n\n\n\n5->31\n\n\n2=result[energy]\n\n\n\n6->30\n\n\n3=result[volume]\n\n\n\n6->31\n\n\n3=result[energy]\n\n\n\n7->30\n\n\n4=result[volume]\n\n\n\n7->31\n\n\n4=result[energy]\n\n\n\n9\n\nAl\n\n\n\n9->0\n\n\nelement\n\n\n\n10\n\n4.05\n\n\n\n10->0\n\n\na\n\n\n\n11\n\nTrue\n\n\n\n11->0\n\n\ncubic\n\n\n\n12\n\nmini\n\n\n\n12->1\n\n\nworking_directory\n\n\n\n14\n\n{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\n14->13\n\n\npseudopotentials\n\n\n\n14->20\n\n\npseudopotentials\n\n\n\n14->23\n\n\npseudopotentials\n\n\n\n14->25\n\n\npseudopotentials\n\n\n\n14->27\n\n\npseudopotentials\n\n\n\n14->29\n\n\npseudopotentials\n\n\n\n15\n\n[3, 3, 3]\n\n\n\n15->13\n\n\nkpts\n\n\n\n15->20\n\n\nkpts\n\n\n\n15->23\n\n\nkpts\n\n\n\n15->25\n\n\nkpts\n\n\n\n15->27\n\n\nkpts\n\n\n\n15->29\n\n\nkpts\n\n\n\n16\n\nvc-relax\n\n\n\n16->13\n\n\ncalculation\n\n\n\n17\n\n0.02\n\n\n\n17->13\n\n\nsmearing\n\n\n\n17->20\n\n\nsmearing\n\n\n\n17->23\n\n\nsmearing\n\n\n\n17->25\n\n\nsmearing\n\n\n\n17->27\n\n\nsmearing\n\n\n\n17->29\n\n\nsmearing\n\n\n\n18\n\n[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\n18->2\n\n\nstrain_lst\n\n\n\n19\n\nstrain_0\n\n\n\n19->3\n\n\nworking_directory\n\n\n\n21\n\nscf\n\n\n\n21->20\n\n\ncalculation\n\n\n\n21->23\n\n\ncalculation\n\n\n\n21->25\n\n\ncalculation\n\n\n\n21->27\n\n\ncalculation\n\n\n\n21->29\n\n\ncalculation\n\n\n\n22\n\nstrain_1\n\n\n\n22->4\n\n\nworking_directory\n\n\n\n24\n\nstrain_2\n\n\n\n24->5\n\n\nworking_directory\n\n\n\n26\n\nstrain_3\n\n\n\n26->6\n\n\nworking_directory\n\n\n\n28\n\nstrain_4\n\n\n\n28->7\n\n\nworking_directory\n\n\n"},"metadata":{}}],"execution_count":2},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"wg = load_workflow_json(file_name='workflow_qe.json')","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"5af0ea14112b49749055805432385d2e"}},"metadata":{}}],"execution_count":5},{"cell_type":"code","source":"wg.run()\n","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/23/2025 09:54:08 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n04/23/2025 09:54:09 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n04/23/2025 09:54:09 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n04/23/2025 09:54:10 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/23/2025 09:54:10 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09908] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n04/23/2025 09:55:03 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n04/23/2025 09:55:04 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n04/23/2025 09:55:04 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:05 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n04/23/2025 09:55:05 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09923] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:16 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/23/2025 09:55:17 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09934] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n04/23/2025 09:55:29 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n04/23/2025 09:55:30 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n04/23/2025 09:55:30 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09945] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:42 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:43 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/23/2025 09:55:43 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n04/23/2025 09:55:44 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/23/2025 09:55:44 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09957] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n04/23/2025 09:55:59 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n04/23/2025 09:56:00 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n04/23/2025 09:56:00 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:09972] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/23/2025 09:56:17 AM <9828> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/23/2025 09:56:18 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n04/23/2025 09:56:18 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/23/2025 09:56:19 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/23/2025 09:56:20 AM <9828> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [327|WorkGraphEngine|finalize]: Finalize workgraph.\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":6},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_qe.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10149] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10867] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:10938] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11002] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11066] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11130] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"}],"execution_count":9},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"cell_type":"markdown","source":"## jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":11},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-23 09:59:48,753 INFO Started executing jobs locally\n2025-04-23 09:59:48,761 INFO Starting job - get_bulk_structure (35ed74db-cf3f-4c0f-99bd-a7ff1db0d988)\n2025-04-23 09:59:48,764 INFO Finished job - get_bulk_structure (35ed74db-cf3f-4c0f-99bd-a7ff1db0d988)\n2025-04-23 09:59:48,764 INFO Starting job - get_dict (7774021f-6e06-4c7f-92a9-46955c99ecd4)\n2025-04-23 09:59:48,767 INFO Finished job - get_dict (7774021f-6e06-4c7f-92a9-46955c99ecd4)\n2025-04-23 09:59:48,767 INFO Starting job - calculate_qe (61858f11-6889-471c-8c11-dcb40ddb9fc5)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11842] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:00:38,712 INFO Finished job - calculate_qe (61858f11-6889-471c-8c11-dcb40ddb9fc5)\n2025-04-23 10:00:38,713 INFO Starting job - generate_structures (6677baf4-a206-48d3-ac40-1553c1978514)\n2025-04-23 10:00:38,717 INFO Finished job - generate_structures (6677baf4-a206-48d3-ac40-1553c1978514)\n2025-04-23 10:00:38,718 INFO Starting job - get_dict (e08257f2-54ce-417e-9d4a-3be382e98632)\n2025-04-23 10:00:38,719 INFO Finished job - get_dict (e08257f2-54ce-417e-9d4a-3be382e98632)\n2025-04-23 10:00:38,720 INFO Starting job - get_dict (09257370-ee8d-4fb4-b1df-c68470f77d6e)\n2025-04-23 10:00:38,721 INFO Finished job - get_dict (09257370-ee8d-4fb4-b1df-c68470f77d6e)\n2025-04-23 10:00:38,721 INFO Starting job - get_dict (f54bd010-a381-4fb9-a6a2-327603f25c6c)\n2025-04-23 10:00:38,723 INFO Finished job - get_dict (f54bd010-a381-4fb9-a6a2-327603f25c6c)\n2025-04-23 10:00:38,723 INFO Starting job - get_dict (a7796fe7-6fa9-46ff-938c-747a1216db5a)\n2025-04-23 10:00:38,724 INFO Finished job - get_dict (a7796fe7-6fa9-46ff-938c-747a1216db5a)\n2025-04-23 10:00:38,725 INFO Starting job - get_dict (51a90fa6-a6fc-458e-9039-ccc9dcfb55db)\n2025-04-23 10:00:38,726 INFO Finished job - get_dict (51a90fa6-a6fc-458e-9039-ccc9dcfb55db)\n2025-04-23 10:00:38,726 INFO Starting job - calculate_qe (0060409e-3f07-4950-a306-f4b2b5e19fde)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11856] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:00:49,710 INFO Finished job - calculate_qe (0060409e-3f07-4950-a306-f4b2b5e19fde)\n2025-04-23 10:00:49,711 INFO Starting job - calculate_qe (d40b5716-3dee-4eb6-9c82-5335f13e2ed5)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11866] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:01:00,507 INFO Finished job - calculate_qe (d40b5716-3dee-4eb6-9c82-5335f13e2ed5)\n2025-04-23 10:01:00,508 INFO Starting job - calculate_qe (ca9b7260-0409-45d0-b0a5-cd07b9e34fff)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11876] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:01:14,075 INFO Finished job - calculate_qe (ca9b7260-0409-45d0-b0a5-cd07b9e34fff)\n2025-04-23 10:01:14,076 INFO Starting job - calculate_qe (7ef9bf5f-2ca4-4005-8389-9cc19488c6ba)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11886] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:01:28,946 INFO Finished job - calculate_qe (7ef9bf5f-2ca4-4005-8389-9cc19488c6ba)\n2025-04-23 10:01:28,951 INFO Starting job - calculate_qe (223364ac-72f3-4a33-848e-bd19d97d5d03)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11896] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:01:44,264 INFO Finished job - calculate_qe (223364ac-72f3-4a33-848e-bd19d97d5d03)\n2025-04-23 10:01:44,265 INFO Starting job - get_list (2154d54f-07fe-487a-aca2-fa00d90f90a4)\n2025-04-23 10:01:44,269 INFO Finished job - get_list (2154d54f-07fe-487a-aca2-fa00d90f90a4)\n2025-04-23 10:01:44,269 INFO Starting job - get_list (1d4c09d5-7f97-4496-8cfd-1ec336c467d8)\n2025-04-23 10:01:44,274 INFO Finished job - get_list (1d4c09d5-7f97-4496-8cfd-1ec336c467d8)\n2025-04-23 10:01:44,275 INFO Starting job - plot_energy_volume_curve (43ed7824-5c9c-46f4-96fd-e6bc56809e5b)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-23 10:01:44,359 INFO Finished job - plot_energy_volume_curve (43ed7824-5c9c-46f4-96fd-e6bc56809e5b)\n2025-04-23 10:01:44,360 INFO Finished executing jobs locally\n"},{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"{'35ed74db-cf3f-4c0f-99bd-a7ff1db0d988': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7774021f-6e06-4c7f-92a9-46955c99ecd4': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '61858f11-6889-471c-8c11-dcb40ddb9fc5': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365262253605, 'volume': 66.21567448235946}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '6677baf4-a206-48d3-ac40-1553c1978514': {1: Response(output={'s_0': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859620884, 0.0, 0.0], [0.0, 3.9060197859620884, 0.0], [0.0, 0.0, 3.9060197859620884]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098929810442, 1.9530098929810442], [1.9530098929810442, 0.0, 1.9530098929810442], [1.9530098929810442, 1.9530098929810442, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_1': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.977053844317988, 0.0, 0.0], [0.0, 3.977053844317988, 0.0], [0.0, 0.0, 3.977053844317988]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221589943, 1.9885269221589943], [1.9885269221589943, 0.0, 1.9885269221589943], [1.9885269221589943, 1.9885269221589943, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_2': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_3': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282893, 0.0, 0.0], [0.0, 4.111970927282893, 0.0], [0.0, 0.0, 4.111970927282893]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414463, 2.0559854636414463], [2.0559854636414463, 0.0, 2.0559854636414463], [2.0559854636414463, 2.0559854636414463, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 's_4': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372117, 0.0, 0.0], [0.0, 4.176230852372117, 0.0], [0.0, 0.0, 4.176230852372117]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860586, 2.0881154261860586], [2.0881154261860586, 0.0, 2.0881154261860586], [2.0881154261860586, 2.0881154261860586, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'e08257f2-54ce-417e-9d4a-3be382e98632': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9060197859620884, 0.0, 0.0], [0.0, 3.9060197859620884, 0.0], [0.0, 0.0, 3.9060197859620884]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098929810442, 1.9530098929810442], [1.9530098929810442, 0.0, 1.9530098929810442], [1.9530098929810442, 1.9530098929810442, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '09257370-ee8d-4fb4-b1df-c68470f77d6e': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.977053844317988, 0.0, 0.0], [0.0, 3.977053844317988, 0.0], [0.0, 0.0, 3.977053844317988]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221589943, 1.9885269221589943], [1.9885269221589943, 0.0, 1.9885269221589943], [1.9885269221589943, 1.9885269221589943, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'f54bd010-a381-4fb9-a6a2-327603f25c6c': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637215946779, 0.0, 0.0], [0.0, 4.045637215946779, 0.0], [0.0, 0.0, 4.045637215946779]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186079733894, 2.0228186079733894], [2.0228186079733894, 0.0, 2.0228186079733894], [2.0228186079733894, 2.0228186079733894, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'a7796fe7-6fa9-46ff-938c-747a1216db5a': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970927282893, 0.0, 0.0], [0.0, 4.111970927282893, 0.0], [0.0, 0.0, 4.111970927282893]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636414463, 2.0559854636414463], [2.0559854636414463, 0.0, 2.0559854636414463], [2.0559854636414463, 2.0559854636414463, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '51a90fa6-a6fc-458e-9039-ccc9dcfb55db': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.176230852372117, 0.0, 0.0], [0.0, 4.176230852372117, 0.0], [0.0, 0.0, 4.176230852372117]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154261860586, 2.0881154261860586], [2.0881154261860586, 0.0, 2.0881154261860586], [2.0881154261860586, 2.0881154261860586, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'scf', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '0060409e-3f07-4950-a306-f4b2b5e19fde': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.906019768889126, 0.0, 0.0], [0.0, 3.906019768889126, 0.0], [0.0, 0.0, 3.906019768889126]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150614, 'volume': 59.59410625267737}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'd40b5716-3dee-4eb6-9c82-5335f13e2ed5': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[3.9770538269345397, 0.0, 0.0], [0.0, 3.9770538269345397, 0.0], [0.0, 0.0, 3.9770538269345397]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082746, 1.9885269135082746], [1.9885269135082746, 0.0, 1.9885269135082746], [1.9885269135082746, 1.9885269135082746, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594598, 'volume': 62.90488993338167}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ca9b7260-0409-45d0-b0a5-cd07b9e34fff': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.045637198263556, 0.0, 0.0], [0.0, 4.045637198263556, 0.0], [0.0, 0.0, 4.045637198263556]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583882, 2.0228185991583882], [2.0228185991583882, 0.0, 2.0228185991583882], [2.0228185991583882, 2.0228185991583882, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668365, 'volume': 66.21567361408594}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7ef9bf5f-2ca4-4005-8389-9cc19488c6ba': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.111970909309726, 0.0, 0.0], [0.0, 4.111970909309726, 0.0], [0.0, 0.0, 4.111970909309726]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025814, 'volume': 69.52645729479006}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '223364ac-72f3-4a33-848e-bd19d97d5d03': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.17623083411808, 0.0, 0.0], [0.0, 4.17623083411808, 0.0], [0.0, 0.0, 4.17623083411808]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.08811541707298, 2.08811541707298], [2.08811541707298, 0.0, 2.08811541707298], [2.08811541707298, 2.08811541707298, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8737904693435, 'volume': 72.83724097549467}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2154d54f-07fe-487a-aca2-fa00d90f90a4': {1: Response(output=[59.59410625267737, 62.90488993338167, 66.21567361408594, 69.52645729479006, 72.83724097549467], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '1d4c09d5-7f97-4496-8cfd-1ec336c467d8': {1: Response(output=[-1074.8457446150614, -1074.9161488594598, -1074.9365241668365, -1074.9192860025814, -1074.8737904693435], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '43ed7824-5c9c-46f4-96fd-e6bc56809e5b': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":14},{"cell_type":"markdown","source":"## pyiron_base","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=\"workflow_qe.json\")\ndelayed_object_lst[-1].draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaaf30>\n\n\n\nvolume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa94f0>\n\n\n\nvolume_lst_b5f2fd1e32e4e01ea2626029ed68b478->create_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\n\n\n\n\n0_cfd4cf6c1025f44cf76a26492950ed54\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9970>\n\n\n\n0_cfd4cf6c1025f44cf76a26492950ed54->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_cfd4cf6c1025f44cf76a26492950ed54\n\n\n\n\n\n0_cc627152090a464ac0fcf4a27e06bbb5\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab710>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_cc627152090a464ac0fcf4a27e06bbb5\n\n\n\n\n\nenergy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa89b0>\n\n\n\n0_cc627152090a464ac0fcf4a27e06bbb5->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8ce0>\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1->0_cfd4cf6c1025f44cf76a26492950ed54\n\n\n\n\n\ninput_dict_0c62beeaf41ac41d9f675982e41165f1->0_cc627152090a464ac0fcf4a27e06bbb5\n\n\n\n\n\nstructure_df04e4d893c5690957f89611b7345b28\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9be0>\n\n\n\nstructure_df04e4d893c5690957f89611b7345b28->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8fe0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_df04e4d893c5690957f89611b7345b28\n\n\n\n\n\nstructure_2b7ddbcc5cb639c73affda9ede67dec5\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9f70>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_2b7ddbcc5cb639c73affda9ede67dec5\n\n\n\n\n\nstructure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa570>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\n\n\n\n\nstructure_8cca8f18cbbe5fb77bb757dffc3ae643\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa5d0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_8cca8f18cbbe5fb77bb757dffc3ae643\n\n\n\n\n\nstructure_b84beabc3985a89fc046a65b9a67e983\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa8d0>\n\n\n\nstructure_140732db3f49342de208b33a5c1eaaa8->structure_b84beabc3985a89fc046a65b9a67e983\n\n\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9af0>\n\n\n\nstructure_2b7ddbcc5cb639c73affda9ede67dec5->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9eb0>\n\n\n\nstructure_aa5ccf55b0a0454daa8ad56aaa4c1b75->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa5a0>\n\n\n\nstructure_8cca8f18cbbe5fb77bb757dffc3ae643->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaac00>\n\n\n\nstructure_b84beabc3985a89fc046a65b9a67e983->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_140732db3f49342de208b33a5c1eaaa8\n\n\n\n\n\ninput_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab170>\n\n\n\ninput_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17->structure_140732db3f49342de208b33a5c1eaaa8\n\n\n\n\n\nstructure_282f0db80018c1bdf8d2119a70f01182\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9880>\n\n\n\nstructure_282f0db80018c1bdf8d2119a70f01182->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_282f0db80018c1bdf8d2119a70f01182\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10\n\npseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\n1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa8980>\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f->1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n\n\n\n\n1_5bd086346009762990f93ec30f88dcd7\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baab6e0>\n\n\n\ninput_dict_2380e4d6d0edfa808bc57fcfeec4447f->1_5bd086346009762990f93ec30f88dcd7\n\n\n\n\n\n2_146e8d22689b52e89f9c92b365734f80\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa82c0>\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f->2_146e8d22689b52e89f9c92b365734f80\n\n\n\n\n\n2_323db0344dea52dc7aae9026884bb4bf\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaba40>\n\n\n\ninput_dict_14cfa30c74c4da7397c159da09a99d0f->2_323db0344dea52dc7aae9026884bb4bf\n\n\n\n\n\n3_c95ed4f75c0e100499869a1c2682a919\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa9df0>\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9->3_c95ed4f75c0e100499869a1c2682a919\n\n\n\n\n\n3_ae3c4c3451f55bb975d471c4a248a4bc\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baa80b0>\n\n\n\ninput_dict_c307ef11e5f328f32eeaa1bbe51c4de9->3_ae3c4c3451f55bb975d471c4a248a4bc\n\n\n\n\n\n4_b7507f656125f365dc5dfea1575f24e8\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baaa390>\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d->4_b7507f656125f365dc5dfea1575f24e8\n\n\n\n\n\n4_c6fc275eedc1dad3222d092b24c3382c\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72c31baabc50>\n\n\n\ninput_dict_36a7fa9f3c0b6814f4ae6120416e2c1d->4_c6fc275eedc1dad3222d092b24c3382c\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2929e5a6d1a8b6c0a02d6fb9fd7cec17\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781\n\nstrain_lst=[0.9, 0.95, 1.0, 1.05, 1.1]\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_df04e4d893c5690957f89611b7345b28\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_2b7ddbcc5cb639c73affda9ede67dec5\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_aa5ccf55b0a0454daa8ad56aaa4c1b75\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_8cca8f18cbbe5fb77bb757dffc3ae643\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_b84beabc3985a89fc046a65b9a67e983\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_0c62beeaf41ac41d9f675982e41165f1\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_2380e4d6d0edfa808bc57fcfeec4447f\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_14cfa30c74c4da7397c159da09a99d0f\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_c307ef11e5f328f32eeaa1bbe51c4de9\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_36a7fa9f3c0b6814f4ae6120416e2c1d\n\n\n\n\n\n1_081d0cbb5f75d5202dfdffa9d67c3b22->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_081d0cbb5f75d5202dfdffa9d67c3b22\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_5bd086346009762990f93ec30f88dcd7\n\n\n\n\n\n1_5bd086346009762990f93ec30f88dcd7->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n2_146e8d22689b52e89f9c92b365734f80->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_146e8d22689b52e89f9c92b365734f80\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_323db0344dea52dc7aae9026884bb4bf\n\n\n\n\n\n2_323db0344dea52dc7aae9026884bb4bf->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n3_c95ed4f75c0e100499869a1c2682a919->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_c95ed4f75c0e100499869a1c2682a919\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_ae3c4c3451f55bb975d471c4a248a4bc\n\n\n\n\n\n3_ae3c4c3451f55bb975d471c4a248a4bc->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\n4_b7507f656125f365dc5dfea1575f24e8->volume_lst_b5f2fd1e32e4e01ea2626029ed68b478\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_b7507f656125f365dc5dfea1575f24e8\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_c6fc275eedc1dad3222d092b24c3382c\n\n\n\n\n\n4_c6fc275eedc1dad3222d092b24c3382c->energy_lst_15dd456e7182ea1aeeb3eb8a96e8d855\n\n\n\n\n\nenergy_lst_15dd456e7182ea1aeeb3eb8a96e8d855->create_function_job_985eb2c5b23ed5677690754a7d6b54b0\n\n\n\n\n"},"metadata":{}}],"execution_count":16},{"cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_e3c0bf43f7edf24d215901bf93271e87 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11926] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job generate_structures_5ee3c796287c1d44e6fcdeec1fcc55e5 was saved and received the ID: 4\nThe job get_dict_a6c6a93d0a4d3f93b67cd4f2f527f113 was saved and received the ID: 5\nThe job calculate_qe_30b838d672325385dbf68abbd0dc920f was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11942] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_56c7baf33180a622d02de781bb5d83b8 was saved and received the ID: 7\nThe job calculate_qe_9be8c05a4037c09a47b17e782e3af791 was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11953] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_13814149cf915b88a341f5932909d0c5 was saved and received the ID: 9\nThe job calculate_qe_ca75104e062b66d78cb4990513466ad9 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11963] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_2aa82e83accc35e7ebb2ab9e1f450b85 was saved and received the ID: 11\nThe job calculate_qe_bf556bcb1e352359c372a2ccc2bc060e was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11973] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_fe77eeeb61b97b67635aae94093a7e1d was saved and received the ID: 13\nThe job calculate_qe_ef80e3efb1f1b5c06bfbcec3bf1b4905 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11985] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_list_2691e781d16d4171a2d5e93468359d9f was saved and received the ID: 15\nThe job get_list_31e21423c6b0488ff776e3739a542d92 was saved and received the ID: 16\nThe job plot_energy_volume_curve_204ada257bb5f43b38f0b8818e86bdaa was saved and received the ID: 17\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXuY2bHERERaZBUluowbw9XbugZDMCcVftMTiMiItIwqSzVcbf3CwNgWcJhko/mmhtGRESkAVJZquPa+DVmYAc/DAPmrk42O46IiEiDo7LkACZd1hqABRsPkZNfZHIaERGRhkVlyQFc0c6XS/y8OFlQzIKNh8yOIyIi0qCoLDkAi8XCxNPnLn28OhmbTcsIiIiI2IvKkoO4rkcwTTxcSD6Wx/KEw2bHERERaTBUlhyEl7sLN10aAuhEbxEREXtSWXIgE6LCcLLA70lHScrIMTuOiIhIg6Cy5EBCmnkyKCIAgDkaXRIREbELlSUHU7aMwMJNh8jMKzQ5jYiISP2nsuRg+rZpRnhgE/KLbHy1/qDZcUREROo9lSUHY7FYuOP06NIna/ZTXGIzOZGIiEj9prLkgEZ3C6KppyspmadYsjPD7DgiIiL1msqSA/JwdeaWPq0AmLMq2dwwIiIi9ZzKkoOK7huGi5OFdcnH2Z6SZXYcERGRektlyUEFWj0Y3rkFoEUqRUREapPKkgMru1/c4rhUjp4sMDeMiIhIPaWy5MB6tPKha7CVwhIbX6w9YHYcERGRekllyYFZLJbyRSo/i91PYbGWERAREalpKksO7prOLfBr4s7hnAJ+2p5mdhwREZF6R2XJwbm5OHFbn1AAPtIyAiIiIjVOZakeuKVPK9ycndhyMJPNB06YHUdERKReUVmqB/yauDOqaxCgRSpFRERqmspSPTHpsjAAftyWRnpWvrlhRERE6hGVpXqiU0srl4Y1pdhm8FnsfrPjiIiI1BsqS/VI2TICX6w7QH5RiclpRERE6geVpXpkSGQALX0acTy3kMVbUs2OIyIiUi+oLNUjLs5OREeVLiMwZ1UyhmGYnEhERMTxqSzVMzddGoKHqxPxadms3Xfc7DgiIiIOT2WpnvHxdGNs92AA5moZARERkYumslQPlS0j8MvOdA4ezzM3jIiIiINTWaqH2gc0oX9bX2wGfKplBERERC6KylI9NbFfGADz1h0gr7DY3DAiIiIOTGWpnroq3J/Q5p5k5xezcFOK2XFEREQclspSPeXkZOH2qDAA5q7WMgIiIiLVpbJUj43rFYyXmzO7D5/k96SjZscRERFxSCpL9VgTD1fG9QoBYM6qfSanERERcUwqS/Xc7f3CsFhgecIR9h3NNTuOiIiIw1FZquda+3pxZQd/AD5enWxuGBEREQekstQAlC0jMH/DQbLzi8wNIyIi4mBUlhqAy9v50ta/MbmFJczfcMjsOCIiIg5FZakBsFgs5aNLH69OpsSmZQRERETOl8pSA3Fdj5Z4e7hw4Hgey3cdNjuOiIiIw1BZaiA83Vy4qXcrAOas1jICIiIi50tlqQGZEBWKkwVW7T5GYkaO2XFEREQcgsOUpRMnThAdHY3VasVqtRIdHU1mZmaV+5w8eZIpU6YQHBxMo0aNiIiI4N133z1juzVr1nDVVVfh5eWFj48PAwcO5NSpU7X0TswT3NSTIZGBAMxZlWxuGBEREQfhMGXplltuIS4ujpiYGGJiYoiLiyM6OrrKfaZOnUpMTAyfffYZ8fHxTJ06lXvvvZdvv/22fJs1a9YwbNgwhgwZwrp161i/fj1TpkzByclhDs0FmXRZGACLNh8iM6/Q3DAiIiIOwGI4wB1W4+PjiYyMJDY2lj59+gAQGxtLVFQUu3btokOHDpXu16lTJ8aPH8+TTz5Z/lzPnj255pprePbZZwHo27cvgwcPLv+6OrKzs7FarWRlZeHt7V3t17EHwzC45s2VxKdl8+iwcP468BKzI4mIiJjifP9+O8TwyZo1a7BareVFCUpLjtVqZfXq1Wfdr3///ixevJiUlBQMw2D58uUkJiYydOhQAA4fPszatWvx9/enX79+BAQEMGDAAFauXFnr78ksFoulfHTp0zXJFJfYzA0kIiJSxzlEWUpPT8ff3/+M5/39/UlPTz/rfm+++SaRkZEEBwfj5ubGsGHDeOedd+jfvz8Ae/fuBWDGjBlMnjyZmJgYevTowdVXX01SUtJZX7egoIDs7OwKD0cyumsQzb3cSM3K55edGWbHERERqdNMLUszZszAYrFU+diwYQNQOiLyZ4ZhVPp8mTfffJPY2FgWL17Mxo0befXVV/nb3/7G0qVLAbDZSkdV7r77biZNmkT37t15/fXX6dChAx999NFZX3fmzJnlJ5pbrVZCQkIu5jDYnYerM7f0Ob2MwCotIyAiIlIVFzN/+JQpU7jpppuq3CYsLIytW7eSkXHmCMiRI0cICAiodL9Tp07x+OOPs2jRIkaMGAFAly5diIuL45VXXmHQoEG0aNECgMjIyAr7RkREcODAgbNmmj59Og8++GD519nZ2Q5XmG7rG8q7K/awPvkE21Oy6NTSanYkERGROsnUsuTr64uvr+85t4uKiiIrK4t169bRu3dvANauXUtWVhb9+vWrdJ+ioiKKiorOuKrN2dm5fEQpLCyMoKAgEhISKmyTmJjI8OHDz5rH3d0dd3f3c+auywK8PbimcwsWb0llzqpkXr2xq9mRRERE6iSHOGcpIiKCYcOGMXnyZGJjY4mNjWXy5MmMHDmywpVw4eHhLFq0CABvb28GDBjAtGnTWLFiBfv27WPu3Ll88sknjB07Fiid2ps2bRpvvvkmCxYsYPfu3Tz55JPs2rWLO++805T3ak9lJ3p/tyWVIzkF5oYRERGpo0wdWboQn3/+Offddx9DhgwBYPTo0cyePbvCNgkJCWRlZZV/PW/ePKZPn86tt97K8ePHCQ0N5fnnn+eee+4p3+aBBx4gPz+fqVOncvz4cbp27cqSJUu45JL6f0l991ZN6RbiQ9zBTL5Ye4D7B7UzO5KIiEid4xDrLNV1jrTO0p99G5fC/fPi8GvizqpHr8LNxSEGG0VERC5avVpnSWrP8E4t8G/izpGcAn7clmZ2HBERkTpHZamBc3NxIrpvKFC6jIAGGkVERCpSWRJu6dMKNxcnthzKYtOBTLPjiIiI1CkqS0Lzxu6M7hoEaJFKERGRP1NZEuB/ywj8tD2dtKxT5oYRERGpQ1SWBICOQVZ6t25Gic3gs9j9ZscRERGpM1SWpNwdp0eXvlh7gPyiEnPDiIiI1BEqS1JuUEQALX0acSKviG/jUsyOIyIiUieoLEk5F2cnJkSVLSOQrGUEREREUFmSP7np0lY0cnVmV3oOsXuPmx1HRETEdCpLUoHV05XrerQEtIyAiIgIqCxJJSb2CwNgaXwGB4/nmRtGRETEZCpLcoZ2AU24vJ0vNgM+WZNsdhwRERFTqSxJpcoWqZy3/iC5BcXmhhERETGRypJUamB7f8Kae5KTX8zCTYfMjiMiImIalSWplJOThdtPn7s0d3UyNpuWERARkYZJZUnO6oaewTR2d2HPkVx+333U7DgiIiKmUFmSs2ri4cq4XsGAlhEQEZGGS2VJqnR7VBgWC6xIOMKeIyfNjiMiImJ3KktSpTBfL67q4A/AJ6uTzQ0jIiJiApUlOadJl7UGYMHGQ2TnF5mcRkRExL5UluScLmvbnHb+jcktLOE/6w+aHUdERMSuVJbknCwWCxNPL1L58ZpkSrSMgIiINCAqS3JerusejLWRKwePn2LZrsNmxxEREbEblSU5L43cnLmpdwigZQRERKRhUVmS8zYhKgwnC6zec4xd6dlmxxEREbELlSU5by19GjG0YyAAc1clmxtGRETETlSW5IKULSOwaHMKJ3ILTU4jIiJS+1SW5IJcGtaUjkHeFBTb+HL9AbPjiIiI1DqVJbkgFoulfHTp0zX7KSqxmZxIRESkdqksyQUb2aUFzb3cSMvK5+cd6WbHERERqVUqS3LBPFydubVPK0AneouISP2nsiTVclvfUFydLWzYf4Jth7LMjiMiIlJrVJakWvy9PRjRuQWgRSpFRKR+U1mSapt4+kTv77amcjgn3+Q0IiIitUNlSaqtW4gP3Vv5UFRi8MVaLSMgIiL1k8qSXJSyZQQ+iz1AQXGJyWlERERqnsqSXJThnQIJ8Hbn6MkCftiaZnYcERGRGqeyJBfF1dmJ6L6hAMxZlYxhGCYnEhERqVkqS3LRbu7dCjcXJ7alZLHpwAmz44iIiNQolSW5aM0buzOmWxAAH2mRShERqWdUlqRGTOxXeqJ3zPZ0UjNPmZxGRESk5qgsSY2IDPKmT+tmlNgMPovdb3YcERGRGqOyJDWmbBmBL9cdIL9IywiIiMjFO3g8jzmr9mGzmXcBkcqS1JjBkQEEN23EibwivtmcYnYcERFxcDabwbQFW/jHdzt54cd403KoLEmNcXaycHtUGKBlBERE5OJ9tnY/sXuP08jVmeioUNNyqCxJjbqxVwiNXJ1JyMhhzd5jZscREREHdeBYHjN/3AXAY8PDCW3uZVoWlSWpUVZPV67v2RIoHV0SERG5UDabwcMLtnCqqIS+bZqVL35sFpUlqXFlywgsjc/gwLE8k9OIiIij+WRNMuv2HcfTzZmXru+Kk5PF1DwqS1Lj2vo35or2fhgGfLwm2ew4IiLiQJKP5jIrpnT6bfrwcFo19zQ5kcqS1JJJ/cIA+M/6g+QWFJsbRkREHILNZvDIgq3kF9mIatOcW/uYO/1WRmVJasWA9n608fUip6CYrzcdMjuOiIg4gLmrk1mXfBwvN2deuqGL6dNvZVSWpFY4OVm4/fTo0txVyaYuJiYiInXfvqO5vPTz6em3ayIIaWb+9FsZlSWpNdf3DKaJuwt7j+byW9IRs+OIiEgdVWIzmDZ/C/lFNvq39eXWPq3MjlSBypLUmsbuLozrFQKUji6JiIhUZs6qfWzYf4LG7i7Mur4zFkvdmH4ro7IktWpivzAsFvgt8Qi7D580O46IiNQxe46c5OWfEwB4/JoIgpvWnem3MipLUqtaNffk6vAAAD5enWxuGBERqVPKpt8Kim1c3s6Xm3uHmB2pUipLUusmXRYGwNebDpF1qsjcMCIiUmd8tHIfmw5knp5+61Lnpt/KqCxJret3SXM6BDQhr7CE+RsOmh1HRETqgN2HT/LyL6XTb0+MiKClTyOTE52dypLUOovFwsTTo0tzVydTomUEREQatBKbwcPzt1BYbOOK9n6Mv7RuTr+VUVkSuxjTrSU+nq4cOnGKpfEZZscRERETffD7XuIOZtLE3YUX6+DVb3+msiR20cjNmZsuLV03Q8sIiIg0XLsP5/DakkQAnhwVSQtr3Z1+K6OyJHYzISoUZycLa/YeIz4t2+w4IiJiZ8UlNh6av5XCYhtXdvBjXM9gsyOdF4cpSydOnCA6Ohqr1YrVaiU6OprMzMwq9zl58iRTpkwhODiYRo0aERERwbvvvlthm/T0dKKjowkMDMTLy4sePXqwYMGCWnwnDVeQTyOGdQwENLokItIQ/ev3vWw5mEkTDxdmXld3r377M4cpS7fccgtxcXHExMQQExNDXFwc0dHRVe4zdepUYmJi+Oyzz4iPj2fq1Knce++9fPvtt+XbREdHk5CQwOLFi9m2bRvXXXcd48ePZ/PmzbX9lhqksmUEvolL4XhuoblhRETEbhIzcnhjSRIAT4/qSKDVw+RE588hylJ8fDwxMTH8+9//JioqiqioKD744AO+//57EhISzrrfmjVruP322xk4cCBhYWH85S9/oWvXrmzYsKHCNvfeey+9e/emTZs2PPHEE/j4+LBp0yZ7vLUGp2doUzq19Kag2MaX6w6YHUdEROyguMRWevVbiY2rwv25vkdLsyNdEIcoS2vWrMFqtdKnT5/y5/r27YvVamX16tVn3a9///4sXryYlJQUDMNg+fLlJCYmMnTo0ArbfPXVVxw/fhybzca8efMoKChg4MCBtfmWGiyLxcKkfq0B+HTNfopKbCYnEhGR2vb+f/ey9VAW3h4uzLyu7l/99mcOUZbS09Px9/c/43l/f3/S09PPut+bb75JZGQkwcHBuLm5MWzYMN555x369+9fvs1XX31FcXExzZs3x93dnbvvvptFixZxySWXnPV1CwoKyM7OrvCQ8zeyawt8G7uTnp1PzPaz//cTERHHtys9mzeWll79NmN0RwK8HWf6rYypZWnGjBlYLJYqH2VTZpW1UMMwqmynb775JrGxsSxevJiNGzfy6quv8re//Y2lS5eWb/PEE09w4sQJli5dyoYNG3jwwQcZN24c27ZtO+vrzpw5s/xEc6vVSkhI3V5Mq65xd3Hm1j6lywjMWbXP5DQiIlJbik5PvxWVGAyK8Gdsd8eafitjMQzDtOWUjx49ytGjR6vcJiwsjC+++IIHH3zwjKvffHx8eP3115k0adIZ+506dQqr1cqiRYsYMWJE+fN33XUXhw4dIiYmhj179tC2bVu2b99Ox44dy7cZNGgQbdu25b333qs0U0FBAQUFBeVfZ2dnExISQlZWFt7e3ufz1hu8wzn5XDZrGUUlBt/+/TK6hviYHUlERGrYW78m8eqSRKyNXFky9Qr869ioUnZ2Nlar9Zx/v13smOkMvr6++Pr6nnO7qKgosrKyWLduHb179wZg7dq1ZGVl0a9fv0r3KSoqoqioCCenioNnzs7O2Gyl58nk5eUBVLlNZdzd3XF3dz9nbjk7/yYejOwSxKLNKcxdnczr47uZHUlERGpQfFo2by4rvfrtH6M71rmidCEc4pyliIgIhg0bxuTJk4mNjSU2NpbJkyczcuRIOnToUL5deHg4ixYtAsDb25sBAwYwbdo0VqxYwb59+5g7dy6ffPIJY8eOLd++bdu23H333axbt449e/bw6quvsmTJEsaMGWPGW21QypYR+H5rKoez880NIyIiNeaP02+DIwO4tluQ2ZEuikOUJYDPP/+czp07M2TIEIYMGUKXLl349NNPK2yTkJBAVlZW+dfz5s3j0ksv5dZbbyUyMpJZs2bx/PPPc8899wDg6urKjz/+iJ+fH6NGjaJLly588sknfPzxx1xzzTV2fX8NUZdgH3qGNqWoxOCztVpGQESkvnhn+R52pGbj4+nK82M7OdzVb39m6jlL9cX5znnKmb7bksq9X27Gt7Ebqx67CncXZ7MjiYjIRdiRmsW1s1dRbDP4503duLZb3T2p+3z/fjvMyJLUT8M6BRLo7cHRk4V8vyXN7DgiInIRCottPDx/K8U2g6EdAxjd1bGn38qoLImpXJ2diI4KBWDO6n1ooFNExHG9vXw38WnZNPV05bkxjrf45NmoLInpbu7dCncXJ7anZLNh/wmz44iISDVsT8ni7eW7AXjm2k74Nak/V42rLInpmnm5Meb0nPbcVcnmhhERkQtWOv22hWKbwfBOgYzs0sLsSDVKZUnqhEn9wwCI2ZFOauYpc8OIiMgFmb0siV3pOTTzcuPZMY5/9dufqSxJnRAe6E1Um+aU2Aw+WbPf7DgiInKeth3K4u0VewB49tpO+DauP9NvZVSWpM4oW6Tyy3UHOFVYYm4YERE5p4LiEh6ev4USm8GILi0YUc+m38qoLEmdcXVEACHNGpF1qohv4lLMjiMiIufw1q+7ScjIobmXG8+M7njuHRyUypLUGc5OFm6PCgNgziotIyAiUpdtPZTJu7+VTr89N6YTzevh9FsZlSWpU8b1CsHTzZnEjJOs3nPM7DgiIlKJP06/jeoaxPDO9XP6rYzKktQp1kau3NAzGIA5WkZARKRO+ufSJBIzTuLb2I1/1OPptzIqS1Ln3N4vDIBfd2Ww/1iuuWFERKSCuIOZvFc+/daZZl5uJieqfSpLUudc4teYAe39MAz4eLWWERARqSvyi0qn32wGXNstiGGdAs2OZBfVKku5ufrXvtSusmUE5m84yMmCYnPDiIgIAK8vTWT34ZP4NnZnxqj6P/1WplplKSAggDvuuIOVK1fWdB4RAK5o50cbXy9yCor5euMhs+OIiDR4mw6c4IP/7gXghbGdaNoApt/KVKssffnll2RlZXH11VfTvn17Zs2aRWpqak1nkwbMycnCxNOjS3NXJ2OzaRkBERGz5BeVMO309NvY7i0Z0rFhTL+VqVZZGjVqFF9//TWpqan89a9/5csvvyQ0NJSRI0eycOFCios1bSIX7/oewTTxcGHf0Vx+SzxidhwRkQbrtSWJ7DmSi18Td54eFWl2HLu7qBO8mzdvztSpU9myZQuvvfYaS5cu5YYbbiAoKIinnnqKvLy8msopDZCXuwvje4UA8NGqfSanERFpmDbuP8EHv5dOv80c2xkfz4Yz/VbmospSeno6L730EhERETz22GPccMMN/Prrr7z++ussWrSIMWPG1FBMaagmRIVhscDvSUfZfTjH7DgiIg1K2fSbYcB1PVoyKDLA7EimcKnOTgsXLmTOnDn8/PPPREZG8ve//53bbrsNHx+f8m26detG9+7dayqnNFCtmnsyKCKAJTszmLs6mefGdDY7kohIg/HKzwnsPZpLgLc7T49sOFe//Vm1RpYmTZpEUFAQq1atIi4ujilTplQoSgBt2rTh//7v/2oiozRwZcsIfL0xhay8InPDiIg0EBuSj/Ph6VMgZl7XGaunq8mJzFOtkaW0tDQ8PT2r3KZRo0Y8/fTT1Qol8kdRbZoTHtiEXek5fLXhAH+54hKzI4mI1GunCksXnzQMuKFnMFeFN8zptzLVGlkqLi4mOzv7jEdOTg6FhYU1nVEaOIvFwsTTt0D5ePV+SrSMgIhIrXr55wSSj+UR6O3BkyMb3tVvf1atsuTj40PTpk3PePj4+NCoUSNCQ0N5+umnsdlsNZ1XGqgx3VvS1NOVlMxTLNmZYXYcEZF6a92+48xZfXr67frOWBs13Om3MtUqS3PnziUoKIjHH3+cb775hkWLFvH444/TsmVL3n33Xf7yl7/w5ptvMmvWrJrOKw2Uh6szN/duBcAcLSMgIlIr8gqLmbagdPrtxl7BXNnB3+xIdUK1zln6+OOPefXVV7nxxhvLnxs9ejSdO3fm/fff59dff6VVq1Y8//zzPP744zUWVhq26KhQ3v/vXtbuO86O1Cw6BlnNjiQiUq+8FJPA/mN5tLB68ISm38pVa2RpzZo1lS4L0L17d9asWQNA//79OXDgwMWlE/mDFtZG5Xe4/nh1srlhRETqmdi9x5h7+rN11vVd8PbQ9FuZapWl4OBgPvzwwzOe//DDDwkJKV1x+dixYzRt2vTi0on8yR2nlxH4Ji6VYycLzA0jIlJP5BUW88iCrQDcdGkIA9r7mZyobqnWNNwrr7zCuHHj+Omnn7j00kuxWCysX7+eXbt2sWDBAgDWr1/P+PHjazSsSI9WTekSbGXroSy+XHeAKVe1MzuSiIjDe/GnXRw4nkeQ1YP/GxFhdpw6x2IYRrWuw96/fz/vvfceCQkJGIZBeHg4d999N2FhYTUcse7Lzs7GarWSlZWFt7e32XHqvUWbDzH1qy0EeLuz8tGrcHW+qLv2iIg0aKv3HOWWD9YC8Omdvbm8XcMZVTrfv98XPLJUVFTEkCFDeP/995k5c+ZFhRSpjms6t+D5H3aRkV3AT9vTGd01yOxIIiIOKbfgf9Nvt/Rp1aCK0oW44H+Su7q6sn37diwWS23kETkndxdnbuurZQRERC7WrJ92cejEKVr6NOLxazT9djbVmr+YMGFCpSd4i9jLrX1CcXN2YvOBTOIOZpodR0TE4azefZRPY/cD8NINXWjsXq3TmBuEah2ZwsJC/v3vf7NkyRJ69eqFl5dXhe+/9tprNRJO5Gz8mrgzsmsLFm5KYe6qfbxx05lLWYiISOVOFhQz7fT02219W3FZW1+TE9Vt1SpL27dvp0ePHgAkJiZW+J6m58ReJvVrzcJNKfywLY3Hr4nA39vD7EgiIg5h5o/xpGSeIrhpI6YP1/TbuVSrLC1fvrymc4hcsM7BVnqFNmXD/hN8FrufB4d0MDuSiEidtzLpKJ+vLV00+qUbuuCl6bdzuqhrrnfv3s3PP//MqVOnAKjmKgQi1TbpstYAfL72APlFJSanERGp23Lyi3j069LptwlRofS7RNNv56NaZenYsWNcffXVtG/fnmuuuYa0tDQA7rrrLh566KEaDShSlaEdA2hh9eBYbiHfb00zO46ISJ32wunpt5BmjXh0WLjZcRxGtcrS1KlTcXV15cCBA3h6epY/P378eGJiYmosnMi5uDg7ER0VCpQuI6DRTRGRyv038QhfrjsIwMs3dNX02wWoVln65ZdfePHFFwkODq7wfLt27di/f3+NBBM5Xzdf2goPVyd2pGazPvmE2XFEROqc7PwiHjs9/TaxXxh92zQ3OZFjqVZZys3NrTCiVObo0aO4u7tfdCiRC9HUy42x3VsCWqRSRKQyz38fT2pWPqHNPXlkmC6GuVDVKktXXHEFn3zySfnXFosFm83Gyy+/zJVXXllj4UTO18R+pSd6/7wjnZTMUyanERGpO1YkHOarDQexWEqn3zzdNP12oap1xF5++WUGDhzIhg0bKCws5JFHHmHHjh0cP36cVatW1XRGkXPqENiEfpc0Z/WeY3yyJlnrhoiIAFmninjs621A6fRb79bNTE7kmKo1shQZGcnWrVvp3bs3gwcPJjc3l+uuu47NmzdzySWX1HRGkfNStozAvHUHySssNjmNiIj5nvt+J+nZ+YQ19+SRobr6rbqqPRYXGBjIP/7xj5rMInJRrgr3p1UzTw4cz2PR5hRu7RNqdiQREdMs33WY+RsPlU6/jetKIzdnsyM5rGqXpczMTNatW8fhw4ex2WwVvjdhwoSLDiZyoZydLEyICuW5H+KZuyqZW3q30u13RKRBysor4rGFpVe/3XFZay4N0/TbxahWWfruu++49dZbyc3NpUmTJhX+IFksFpUlMc2Nl4bw+pJEkg6fZNXuY/Rvp9VpRaTheeb7nWRkF9Da14uHdSuoi1atc5Yeeugh7rjjDnJycsjMzOTEiRPlj+PHj9d0RpHz5u3hyg09S9f/0jICItIQ/RqfwdebSqffXhnXRdNvNaBaZSklJYX77ruv0rWWRMx2e78wAJYlHCb5aK65YURE7Cgrr4jpC0uvfrurf2t6hmr6rSZUqywNHTqUDRs21HQWkRrRxq8xAzv4YRjw8Zpks+OIiNjNP77bweGcAtr4efGQpt9qTLXOWRoxYgTTpk1j586ddO7cGVdX1wrfHz16dI2EE6muSZe1ZkXCEeZvOMSDg9vTxMP13DuJiDiwJTszWLg5BScLvDKuKx6umn6rKdUqS5MnTwbgmWeeOeN7FouFkpKSi0slcpGuaOfLJX5e7DmSy4KNh8rXYBIRqY8y8wp5fFHp9Nvky9vQo1VTkxPVL9WahrPZbGd9qChJXWCxWJh4uiB9vDoZm80wOZGISO2ZsXgHR3IKuMTPi6mD25sdp965oLJ0zTXXkJWVVf71888/T2ZmZvnXx44dIzIyssbCiVyM67q3pImHC8nH8liReNjsOCIiteLnHel8E5eKkwVevbGbpt9qwQWVpZ9//pmCgoLyr1988cUKSwUUFxeTkJBQc+lELoKXuws3XRoCwJxVyeaGERGpBSdyC/m/RdsB+MsVl9AtxMfcQPXUBZUlwzCq/FqkrpkQFYaTBX5POkpSRo7ZcUREatTTi3dw9GQB7fwb88CgdmbHqbeqdc6SiKMIaebJ4MgAAOauTjY3jIhIDYrZnsbiLak4O1l09Vstu6CyZLFYzrjXlu69JXXdxH6lJ3ov3JRCVl6RyWlERC7e8dxCnvimdPrtngFt6Krpt1p1QUsHGIbBxIkTcXd3ByA/P5977rkHLy8vgArnM4nUFX3bNCM8sAm70nOYt/4Adw+4xOxIIiIX5alvt3P0ZCEdAppw39WafqttFzSydPvtt+Pv74/VasVqtXLbbbcRFBRU/rW/v79uoit1jsVi4Y7Tywh8smY/xSU2kxOJiFTfj9vS+H5rWvn0m7uLpt9q2wWNLM2ZM6e2cojUqtHdgpgVs4uUzFMsjc9gWKcWZkcSEblgx04W8OTp6be/DbyEzsFWkxM1DDrBWxoED1dnbu5duozAR1pGQEQc1FPf7uBYbiHhgU249ypNv9mLypI0GNF9w3BxsrBu33F2pGadewcRkTrk+62p/LDtf9Nvbi76E24vDnOkT5w4QXR0dPn5UdHR0RVWD69MRkYGEydOJCgoCE9PT4YNG0ZSUlKFbQoKCrj33nvx9fXFy8uL0aNHc+jQoVp8J2KWQKsHwzuXTr9pkUoRcSRHcv43/fb3K9vSqaWm3+zJYcrSLbfcQlxcHDExMcTExBAXF0d0dPRZtzcMgzFjxrB3716+/fZbNm/eTGhoKIMGDSI3N7d8uwceeIBFixYxb948Vq5cycmTJxk5cqTucVdPTbosDIDFcakcPamrN0Wk7jMMgye/2c6JvCIiWngz5cq2ZkdqcCyGAyzDHR8fT2RkJLGxsfTp0weA2NhYoqKi2LVrFx06dDhjn8TERDp06MD27dvp2LEjACUlJfj7+/Piiy9y1113kZWVhZ+fH59++injx48HIDU1lZCQEH788UeGDh16Xvmys7OxWq1kZWXh7e1dQ+9aaoNhGIx5exVbDmXx0OD23KtLbkWkjlu8JZX7vtyMi5OFb6dcRscgjSrVlPP9++0QI0tr1qzBarWWFyWAvn37YrVaWb16daX7lK355OHhUf6cs7Mzbm5urFy5EoCNGzdSVFTEkCFDyrcJCgqiU6dOZ31dcWwWi4VJp5cR+DR2P4XFWkZAROquwzn5PPVt6fTblKvaqiiZxCHKUnp6Ov7+/mc87+/vT3p6eqX7hIeHExoayvTp0zlx4gSFhYXMmjWL9PR00tLSyl/Xzc2Npk2bVtg3ICDgrK8LpUUsOzu7wkMcxzWdW+DfxJ3DOQX8tD3N7DgiIpUyDIMnFm0nM6+IyBbe/F3Tb6YxtSzNmDGj/BYqZ3ts2LABqPy2KoZhnPV2K66urnz99dckJibSrFkzPD09WbFiBcOHD8fZueoFvKp6XYCZM2eWn2hutVoJCQm5gHctZnNzceK2vqGATvQWkbpr8ZZUftmZgatz6dVvrs4OMb5RL13QopQ1bcqUKdx0001VbhMWFsbWrVvJyMg443tHjhwhICDgrPv27NmTuLg4srKyKCwsxM/Pjz59+tCrVy8AAgMDKSws5MSJExVGlw4fPky/fv3O+rrTp0/nwQcfLP86OztbhcnB3Ny7FbOX7SbuYCabD5yge6um595JRMRODmfn89S3OwC496p2RAbpfFgzmVqWfH198fX1Ped2UVFRZGVlsW7dOnr37g3A2rVrycrKqrLUlLFaS+d4k5KS2LBhA88++yxQWqZcXV1ZsmQJN954IwBpaWls376dl1566ayv5+7uXn5/PHFMfk3cGdU1iK83HWLOqmSVJRGpMwzD4PFF28k6VUSnlt78daDuZ2k2hxjTi4iIYNiwYUyePJnY2FhiY2OZPHkyI0eOrHAlXHh4OIsWLSr/ev78+axYsaJ8+YDBgwczZsyY8hO6rVYrd955Jw899BC//vormzdv5rbbbqNz584MGjTI7u9T7KtsGYEft6WRnpVvbhgRkdO+iUthabym3+oSh/kv8Pnnn9O5c2eGDBnCkCFD6NKlC59++mmFbRISEsjK+t/KzGlpaURHRxMeHs59991HdHQ0X375ZYV9Xn/9dcaMGcONN97IZZddhqenJ9999905z2sSx9eppZXeYc0othl8vna/2XFERMjIzmfG4p0A3H91O8IDNf1WFzjEOkt1ndZZclw/bkvjb59vormXG6seuwoPV5VkETGHYRjc9fEGft11mM4trSz6Wz9cNKpUq+rVOksitWVIZAAtfRpxLLeQxVtSzY4jIg3Ywk0p/LrrMG7OTrx6Y1cVpTpE/yWkQXNxdiI66n/LCGigVUTMkJ6Vz4zvSq9+u39QO9oHNDE5kfyRypI0eDddGoKHqxPxadms23fc7Dgi0sAYhsH0hVvJyS+ma7CVu69oY3Yk+ROVJWnwfDzdGNs9GNAilSJifws2HmJ5whHcnJ14ZZym3+oi/RcR4X/LCPyyM52Dx/PMDSMiDUZa1ime+a706repg9vTTtNvdZLKkgjQPqAJ/dv6YjNKb7ArIlLbDMPgsa+3kVNQTLcQHyZf3trsSHIWKksip03sFwbAvHUHyCssNjeMiNR78zcc4rfEI7i5aPqtrtN/GZHTrgr3J7S5J9n5xSzclGJ2HBGpx1IzT/Hs96XTbw8Nbk9b/8YmJ5KqqCyJnObkZOH2qDAA5q7WMgIiUjsMw+DRr7eSU1BM91Y+3HW5rn6r61SWRP5gXK9gvNyc2X34JCt3HzU7jojUQ/PWH+T3pKO4n55+c3aymB1JzkFlSeQPmni4Mq5XCKBlBESk5qVknuL5H+IBmDa0A5f4afrNEagsifzJ7f3CsFhg2a7D7Duaa3YcEaknDMPg0QVbOVlQTK/Qpky6TFe/OQqVJZE/ae3rxZUd/AH4eHWyuWFEpN74Yt0BVu4unX576YYumn5zICpLIpUoW6Ry/oaD5OQXmRtGRBzeweN5vHB6+u2RYeG00fSbQ1FZEqlE/7a+tPVvTG5hCfM3HDI7jog4MJut9Oq33MISLg1ryqTTa7qJ41BZEqmExWIpX6Ty4zXJlNi0jICIVM/n6w6wes8xPFydePmGrjhp+s3hqCyJnMV1PVri7eHC/mN5LN912Ow4IuKADh7PY+aPpdNvjw4LJ8zXy+REUh0qSyJn4enmws29WwGli1SKiFwIm81g2oIt5BWW0Lt1s/JFb8XxqCyJVCE6KhQnC6zcfZTEjByz44iIA/ls7X5i9x6nkaszL9/QRdNvDkxlSaQKwU09GRIZCGiRShE5fweO5THzx10APDY8nNDmmn5zZCpLIudQtozAos2HyMwrNDeMiNR5NpvBwwu2cKqohL5tmhHdN9TsSHKRVJZEzqF362ZEtvAmv8jGvPUHzY4jInXcJ2uSWbfvOJ5uzrx0va5+qw9UlkTOwWKxMPH06NInq5MpLrGZG0hE6qzko7m8GJMAwPTh4bRq7mlyIqkJKksi52F01yCae7mRmpXPLzszzI4jInWQzWbwyIKtnCoqIapNc27to+m3+kJlSeQ8eLg6c0uf0mUE5qzaZ3IaEamL5q5OZl3ycbzcnHlJV7/VKypLIufptr6huDhZWJ98gu0pWWbHEZE6ZN/RXF76ufTqt+nXRBDSTNNv9YnKksh5CvD24JrOLQAtIyAi/1NiM5g2fwv5RTb6t/Xl1tOj0FJ/qCyJXICyZQS+25LKkZwCc8OISJ0wZ9U+Nuw/QWN3F2Zd3xmLRdNv9Y3KksgF6N6qKd1CfCgssfHF2gNmxxERk+05cpKXfy69+u3xayIIbqrpt/pIZUnkApWNLn22dj+FxVpGQKShKpt+Kyi2cXk7X27uHWJ2JKklKksiF2h4pxb4N3HnSE4BP25LMzuOiJjko5X72HQg8/T0WxdNv9VjKksiF8jNxan89gVzVu3DMAyTE4mIve0+fJKXfymdfntiRAQtfRqZnEhqk8qSSDXc0qcVbi5ObDmUxeaDmWbHERE7KrEZTFuwhcJiG1e092P8pZp+q+9UlkSqoXljd67tGgRoGQGRhubfv+9l84FMmri78KKufmsQVJZEqqnsfnE/bUsjPSvf3DAiYhe7D+fw6pJEAJ4cFUkLq6bfGgKVJZFq6hhkpXfrZhTbDD6NTTY7jojUsuISGw/N30phsY0rO/gxrmew2ZHETlSWRC7CHadHl75Ye4D8ohJzw4hIrfrX73vZcjCTJh4uzLxOV781JCpLIhdhUEQALX0acSKviMVxqWbHEZFakpiRwxtLkgB4elRHAq0eJicSe1JZErkILs5OTIgqXUbgIy0jIFIvFZfYeHj+FgpLbFwV7s/1PVqaHUnsTGVJ5CLddGkrGrk6sys9h9i9x82OIyI17P3/7mXroSy8PVyYeZ2ufmuIVJZELpLV05XrTv9Lc+7qfSanEZGalJCewxtLS69+mzG6IwHemn5riFSWRGrAxH5hACzZmcHB43nmhhGRGlF0evqtqMRgUIQ/Y7tr+q2hUlkSqQHtAppweTtfbAZ8sibZ7DgiUgPeW7GHbSlZWBu58sJYTb81ZCpLIjVk0ullBOatP0huQbG5YUTkosSnZfPmstKr3/4xuiP+mn5r0FSWRGrIwPb+hDX3JCe/mIWbU8yOIyLV9Mfpt8GRAVzbLcjsSGIylSWRGuLkZOH20+cuzV21D5tNywiIOKJ3lu9hR2o2Pp6uPD+2k6bfRGVJpCbd0DOYxu4u7DmSy++7j5odR0Qu0I7ULN764/RbE02/icqSSI1q4uHKuF6l94uas0rLCIg4ksJiGw/P30qxzWBoxwBGd9X0m5RSWRKpYbdHhWGxwIqEI+w9ctLsOCJynt5evpv4tGyaerry3Bhd/Sb/o7IkUsPCfL24qoM/AB+vTjY3jIicl+0pWby9fDcAz1zbCb8m7iYnkrpEZUmkFky6rDUACzYeIju/yOQ0IlKV0um3LRTbDIZ3CmRklxZmR5I6RmVJpBZc1rY57QMak1tYwn/WHzQ7johUYfayJHal59DMy41nx+jqNzmTypJILbBYLEzsVzq69PGaZPKLSkxOJCKV2Z6Sxdsr9gDw7LWd8G2s6Tc5k8qSSC0Z270lPp6uHDx+ilFvrWTLwUyzI4nIHxQUl/DQf7ZQYjMY0aUFIzT9JmehsiRSSxq5OTP75h74NnYn6fBJrnt3NS/F7KKgWKNMInXBW7/uJiEjh+ZebjwzuqPZcaQOU1kSqUX92/myZOoVjO4aRInN4J0Vexj11kq2Hso0O5pIg7b1UCbv/lY6/fbcmE401/SbVEFlSaSWNfVy482bu/PebT3wbexGYsZJxr6zmld+TtAok4gJCopLeHh+6fTbqK5BDO+s6TepmsqSiJ0M69SCX6YOYGSXFpTYDGYv383ot1axPSXL7GgiDco/lyaRmHES38Zu/EPTb3IeVJZE7KiZlxuzb+nBu7f2oLmXGwkZOVz79ipe+yWBwmKb2fFE6r24g5m8Vz791plmXm4mJxJHoLIkYoLhnVvwy9QrGNG5dJTpzWW7GT17pUaZRGpRflHp9JvNgGu7BTGsU6DZkcRBqCyJmKR5Y3fevrUHb9/Sg2ZebuxKz2HM26t4bUmiRplEasEbS5PYffgkvo3dmTFK029y/lSWREw2okvpKNPwToEU2wze/DWJa99exc7UbLOjidQbmw6c4F//LZ1+e2FsJ5pq+k0ugMqSSB3g29idd27twVs3d6eppyvxadmMnr2SN5YmUlSiUSaRi5FfVMK009NvY7u3ZEhHTb/JhXGYsnTixAmio6OxWq1YrVaio6PJzMyscp+MjAwmTpxIUFAQnp6eDBs2jKSkpPLvHz9+nHvvvZcOHTrg6elJq1atuO+++8jK0nkjYn8Wi4VRXYP4ZeoAhnUsHWV6Y2kSY95eRXyaRplEquu1JYnsOZKLXxN3nh4VaXYccUAOU5ZuueUW4uLiiImJISYmhri4OKKjo8+6vWEYjBkzhr179/Ltt9+yefNmQkNDGTRoELm5uQCkpqaSmprKK6+8wrZt25g7dy4xMTHceeed9npbImfwa+LOu7f14M2bu+Pj6cqO1NJRpjd/TdIok8gFKCy28e/f9/Lv3/cCMHNsZ3w8Nf0mF85iGIZhdohziY+PJzIyktjYWPr06QNAbGwsUVFR7Nq1iw4dOpyxT2JiIh06dGD79u107Fh6Il9JSQn+/v68+OKL3HXXXZX+rPnz53PbbbeRm5uLi4vLeeXLzs7GarWSlZWFt7d3Nd+lyJkO5+TzxKLt/LIzA4BOLb15ZVxXwgP1eyZyNoZhsGRnBjN/2sW+o6X/OL6xVzAv3dDV5GRS15zv32+HGFlas2YNVqu1vCgB9O3bF6vVyurVqyvdp6CgAAAPD4/y55ydnXFzc2PlypVn/VllB+x8i5JIbfJv4sH70T35503dsDZyZXtKNqPeWsnsZUkUa5RJ5Aw7UrO45YO1/OXTjew7motvY3dmXdeZmdd1MTuaODCHaATp6en4+/uf8by/vz/p6emV7hMeHk5oaCjTp0/n/fffx8vLi9dee4309HTS0tIq3efYsWM8++yz3H333VXmKSgoKC9jUNpMRWqLxWLh2m4tiWrTnMcXbWdpfAav/JLIzzsyeGVcVzoENjE7oojpDmfn8+ovifxn40EMA9xcnLirf2v+dmVbGrs7xJ86qcNMHVmaMWMGFoulyseGDRuA0j8Yf2YYRqXPA7i6uvL111+TmJhIs2bN8PT0ZMWKFQwfPhxnZ+czts/OzmbEiBFERkby9NNPV5l75syZ5SeaW61WQkJCqvHuRS6Mv7cHH0zoyevju2Jt5Mq2lCxGvbWSt5fv1iiTNFj5RSXMXpbEwFdW8NWG0qI0sksLfn1wAI8MC1dRkhph6jlLR48e5ejRo1VuExYWxhdffMGDDz54xtVvPj4+vP7660yaNKnK18jKyqKwsBA/Pz/69OlDr169ePvtt8u/n5OTw9ChQ/H09OT777+vMHVXmcpGlkJCQnTOktjN4ex8Hl+0jaXxhwHoGmzllXFdaRegUSZpGAzDYPGWVF6KSSAl8xQAXUN8eGpkBD1Dm5mcThzF+Z6z5FAneK9du5bevXsDsHbtWvr27XvWE7wrk5SURHh4OD/99BNDhgwBSg/U0KFDcXd358cff8TT0/OC8+kEbzGDYRgs3JTCP77bQXZ+MW7OTkwd3J7Jl7fGxdkhTkcUqZZNB07w7Pc72XwgE4AgqwePDg9nVJcgnJwqn20QqUy9KksAw4cPJzU1lffffx+Av/zlL4SGhvLdd9+VbxMeHs7MmTMZO3YsUHplm5+fH61atWLbtm3cf//99OzZk6+//hooHVEaPHgweXl5LFq0CC8vr/LX8vPzq3S6rjIqS2Km9KzSUaZlu06PMoX48Oq4LrT11yiT1C8pmad48addLN6SCoCnmzN/HXAJd13ehkZu5/d5LfJH5/v322Emcz///HPuu+++8hGh0aNHM3v27ArbJCQkVFhQMi0tjQcffJCMjAxatGjBhAkTePLJJ8u/v3HjRtauXQtA27ZtK7zWvn37CAsLq6V3I1JzAq0efHh7LxZsPMQz3+9ky8FMrnlzJQ8Obs/ky9vgrH9pi4PLLSjm3RV7+OD3vRQU27BY4IYewTw8tAMB3lWfNiFSExxmZKku08iS1BXpWfk8tnArKxKOANC9lQ8v39CVtv6NTU4mcuFKbAYLNh7klV8SOZJTep5on9bNeHJkJJ1aWk1OJ/VBvZuGq8tUlqQuMQyD+RsO8ez3O8kpKMbNxYmHh7Tnzv4aZRLHsXrPUZ77Pp6dp2/1E9rck8eviWBIZMBZr4IWuVAqS3aksiR1UWrmKR5buI3/JpaOMvVo5cPL47pyiZ9GmaTu2nc0lxd+jGfJ6VXrm3i4cP/V7ZgQFYabiy5ckJqlsmRHKktSVxmGwX82HOTZ7+M5WVCMu4sT04Z2YNJlrTXKJHVKVl4Rby5L4pM1yRSVGDg7Wbi1TyseGNSeZl66n5vUDpUlO1JZkrouJfMUj329ld+TStc16xXalJdu6EIbjTKJyYpKbHweu583fk0iM68IgIEd/Pi/ayK0bpjUOpUlO1JZEkdgGAbz1h/k+R80yiTmMwyD5QmHef6HePYcKb3ZbTv/xjwxMpIB7f1MTicNhcqSHaksiSNJyTzFowu2snJ36SjTpWFNefmGroT5ep1jT5GakZCew3M/7Cwf6Wzm5caDg9tz06UhWlBV7EplyY5UlsTRGIbBF+sO8MIP8eQWluDh6sQjQ8OZ2C9MKyBLrTl6soDXliQyb90BbAa4OTsx6bIw/n5VW7w9XM2OJw2QypIdqSyJozp4PI/HFm5l1e5jAPRu3YyXb+hCaHONMknNKSguYc6qZN5etpucgmIAhncK5LHh4fpdE1OpLNmRypI4MsMw+HztAV74MZ68whIauTrz6LAOTIjSKJNcHMMw+Gl7OjN/iufg8dKb3XZuaeWJERH0adPc5HQiKkt2pbIk9cHB43k8smAra/aWjjL1ad2Ml2/oSqvmF35zaZGthzJ59vudrE8+AUCAtzvThoZzXfeWKuFSZ6gs2ZHKktQXNpvB52v388KPuzhVVIKnmzOPDQ/ntj6h+gMn5yUt6xQvxySwcHMKAB6uTvzliku4Z0AbPN0c5nak0kCoLNmRypLUNweO5TFtwRbW7jsOQN82paNMIc00yiSVyyss5v3f9vL+f/eQX2QD4LruLZk2rAMtrI1MTidSOZUlO1JZkvrIZjP4NHY/s3763yjT9GsiuLV3K40ySTmbzWDR5hRe/jmB9Ox8oHTR0ydHRtI1xMfccCLnoLJkRypLUp/tP5bLtPlbWZdcOsrU75LmvHh9F40yCev2Hee5H3ay9VAWAMFNGzF9eATXdA7UzW7FIags2ZHKktR3NpvBx2uSeTFmF/lFNrzcnHl8RAS39G6lP4oN0IFjecyKiefHbekANHZ34e9XtmXSZWF4uDqbnE7k/Kks2ZHKkjQUyUdzmbZgS/kVTv3b+jLr+s4EN9UoU0OQnV/E28t2M2dVMoUlNpwscFPvVjw4uD2+jd3NjidywVSW7EhlSRoSm81gzupkXv65dJSpsbsLj18Twc29QzTKVE8Vl9iYt/4gry9J5FhuIQCXt/Pl/0ZEEB6ozzxxXCpLdqSyJA3RvqO5TJu/hQ37S0eZLm/ny6zru9DSR1c+1Sf/TTzCcz/sJDHjJABt/Lx4YkQEV3bwVzkWh6eyZEcqS9JQldgM5qzax8s/J1BQXDrK9MSICMZfqlEmR7f7cA7P/xDP8oQjAPh4uvLA1e24tW8orrrZrdQTKkt2pLIkDd2eIyeZNn8Lmw5kAnBFez9mXdeZII0yOZzjuYW8sTSRz9ceoMRm4OJkYUJUGPdf3Q6rp252K/WLypIdqSyJlI4yfbhyL6/8kkhhsY0m7i48OTKScb2CNcrkAAqLbXyyJpk3f00iO7/0ZreDIwOYPjycNn6NTU4nUjtUluxIZUnkf3YfPsm0BVvYfHqUaWAHP2Ze11mrONdRhmHwy84MZv4YT/KxPAAiWnjz5IgI+rX1NTmdSO1SWbIjlSWRikpsBv/+fS+vLjk9yuRxepSpp0aZ6pIdqVk8+/1OYveWLjjq29idaUPbc0PPEJy1Srs0ACpLdqSyJFK53YdzeGj+VrYczATgyg5+zLyuC4FWD3ODNXCHs/N55ZcE5m88hGGAm4sTky9vzV8HtqWxu252Kw2HypIdqSyJnF1xiY0Pft/H60sSKSyx4e3hwlOjOnJ9j5YaZbKz/KIS/v37Xt5ZsYe8whIARnUN4tFhHbSwqDRIKkt2pLIkcm5JGTk8PH8LW07fR+zqcH9euK4zAd4aZapthmGweEsqL/60i9Ss0pvddgvx4cmRkfQMbWpyOhHzqCzZkcqSyPkpLrHx/n/38s+lSeWjTDNGd2Rsd40y1ZaN+0/w7Pc7iTs9FRpk9eDR4eGM7hqkYy4NnsqSHaksiVyYhPTSUaZtKaWjTIMiAnhhbCf8NcpUYw6dyOPFmAS+25IKgKebM38beAl3Xd5GN7sVOU1lyY5UlkQuXNko0xtLEykqMbA2cuUfoztybTeNeFyMkwXFvLtiN//+fR8FxTYsFhjXM5iHh3RQGRX5E5UlO1JZEqm+XenZPDx/C9tTsoHShRCfH9sJ/yb6w34hSmwG8zcc5JVfEjl6sgCAvm2a8cSISDq1tJqcTqRuUlmyI5UlkYtTVGLjvRV7eHNZEkUlBj6epaNMOq/m/KzefZRnf4gnPq20cIY19+TxayIYHBmg4ydSBZUlO1JZEqkZ8WnZPPSfLew8/Ud/aMcAnhvTGb8m7iYnq5v2HjnJCz/uYml8BgDeHi7cd3U7JkSF4eaim92KnIvKkh2pLInUnKISG+8s38Nby5Iothk09XTlH9d2YlSXFholOS0rr4h//prEJ2uSKbYZODtZuK1PK+4f1J5mXm5mxxNxGCpLdqSyJFLzdqaWnstUNso0vFMgz47phG/jhjvKVFRi4/PY/bzxaxKZeUVA6aro/zcigrb+TUxOJ+J4VJbsSGVJpHYUFtt4e/lu3l6+m2KbQTMvN565tiMjuwSZHc2uDMNgecJhnv8hnj1HcgFoH9CYJ0ZEckV7P5PTiTgulSU7UlkSqV3bU7J4eP4WdqXnAHBN50CevbYTzRvAKNOu9Gye+z6elbuPAtDcy40Hh7RnfK8QXJx1XpLIxVBZsiOVJZHaV1hsY/ayJN5esYcSm0FzLzeeHdOJazq3MDtarTh6soBXf0nkq/UHsBng5uzEpP5h/P3Ktnh7uJodT6ReUFmyI5UlEfv58yjTiC4tePbaTvXmxOb8ohLmrErm7eW7OVlQDJSOpD02LIJWzXWzW5GapLJkRypLIvZVUFzCW7/u5t3f/jfK9NyYTgx34FEmwzD4cVs6M3+K59CJUwB0CbbyxIhIerduZnI6kfpJZcmOVJZEzLH1UCYPz99CYsZJAEZ1DeKZ0R1p6mCjTFsOZvLcDztZn3wCgEBvDx4Z1oEx3Vri5KTlEkRqi8qSHaksiZinoLiEN39N4t0Ve7AZ4NvYjefGdGZYp0Czo51TWtYpXo5JYOHmFAAauTpz94A2/OWKNni6uZicTqT+U1myI5UlEfNtOVg6ypR0uHSU6dpuQcwYVTdHmfIKi3nvt7386797yC+yAXBdj5Y8MjScQKvuiSdiLypLdqSyJFI35BeV8M9fk3j/t7JRJndeGNuJIR3rxiiTzWawcHMKL/+8i4zs0pvdXhrWlCdHRtIl2MfccCINkMqSHaksidQtcQczeeg/ceULOI7t3pKnR0Xi42neKNO6fcd59vudbEvJAiCkWSOmD49geKdA3cZFxCQqS3aksiRS9+QXlfD60kQ++O9ebAb4NXFn5tjODIoMsGuOA8fymPlTPD9tTwegibsLU65qy+39wvBwdbZrFhGpSGXJjlSWROquTQdOMG3+lvJRpuu6t+TpUR2xetbuwo7Z+UXMXrabuauSKSyx4WSBm3u3Yurg9g36/nYidYnKkh2pLInUbflFJby+JJF//b4Xw4AAb3dmXteZq8JrfpSpuMTGl+sP8vqSRI7nFgJweTtfnhgRSYdA3exWpC5RWbIjlSURx7Bxf+ko096jpaNM1/cI5qlRkVgb1cwo02+JR3j+h53l6z5d4ufFEyMiGdjBT+clidRBKkt2pLIk4jjyi0p49ZcE/r1yX/ko06zrunBluH+1X3P34Rye+yGeFQlHAPDxdGXqoPbc0qcVrrrZrUidpbJkRypLIo5nQ/Jxpi3Yyr7To0zjegbzxMgLG2U6nlvIG0sT+XztAUpsBq7OFiZEhXHfVe1q/ZwoEbl4Kkt2pLIk4phOFZbwyi8JfLSqdJQp0NuDWdd3ZmCHqkeZCottfLImmX/+mkROfunNbodEBjD9mgha+3rZI7qI1ACVJTtSWRJxbOuTjzNt/haSj+UBML5XCP83MgJvj4qjQ4Zh8POODGb+FM/+09tGtvDmiZER9LvE1+65ReTiqCzZkcqSiOM7VVjCSz/vYu7qZAwDWlg9ePH6LlzR3g+A7SlZPPfDTmL3HgdK122aNqQD1/cMxlk3uxVxSCpLdqSyJFJ/rN17jGkLtnLgeOnI0U2XhlBiM1iw6RCGAe4uTky+vA33DLyExu662a2II1NZsiOVJZH6Ja+wmJdiEpi7OrnC89d2C+KRYeG09GlkTjARqVHn+/db/ywSEfkTTzcXZozuyLBOgTz97Q6snq48NjycHq2amh1NREygkaUaoJElERERx3O+f7+1WpqIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoOU5ZOnDhBdHQ0VqsVq9VKdHQ0mZmZVe6TkZHBxIkTCQoKwtPTk2HDhpGUlFTptoZhMHz4cCwWC998803NvwERERFxSA5Tlm655Rbi4uKIiYkhJiaGuLg4oqOjz7q9YRiMGTOGvXv38u2337J582ZCQ0MZNGgQubm5Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":17},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:11996] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12014] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12025] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12036] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12047] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-5x990k36:12057] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":19}]} \ No newline at end of file diff --git a/example_workflows/quantum_espresso/workflow_qe.json b/example_workflows/quantum_espresso/workflow.json similarity index 100% rename from example_workflows/quantum_espresso/workflow_qe.json rename to example_workflows/quantum_espresso/workflow.json From 5e17babbbbe104ae11546491e6ca7b4bedd2332e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Wed, 23 Apr 2025 13:24:31 +0200 Subject: [PATCH 8/8] rename python modules --- README.md | 6 +++--- example_workflows/arithmetic/aiida.ipynb | 2 +- example_workflows/arithmetic/jobflow.ipynb | 2 +- example_workflows/arithmetic/pyiron_base.ipynb | 2 +- example_workflows/arithmetic/workflow.json | 4 ++-- .../{arithmetic_workflow.py => workflow.py} | 0 example_workflows/nfdi/aiida.ipynb | 2 +- example_workflows/nfdi/jobflow.ipynb | 2 +- example_workflows/nfdi/pyiron_base.ipynb | 2 +- example_workflows/nfdi/workflow.json | 12 ++++++------ .../nfdi/{nfdi_ing_workflow.py => workflow.py} | 0 example_workflows/quantum_espresso/aiida.ipynb | 2 +- .../quantum_espresso/jobflow.ipynb | 2 +- .../quantum_espresso/pyiron_base.ipynb | 2 +- .../quantum_espresso/workflow.json | 18 +++++++++--------- ...uantum_espresso_workflow.py => workflow.py} | 0 16 files changed, 29 insertions(+), 29 deletions(-) rename example_workflows/arithmetic/{arithmetic_workflow.py => workflow.py} (100%) rename example_workflows/nfdi/{nfdi_ing_workflow.py => workflow.py} (100%) rename example_workflows/quantum_espresso/{quantum_espresso_workflow.py => workflow.py} (100%) diff --git a/README.md b/README.md index 6c51a2d..6e16756 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ These two Python functions are combined in the following example workflow: tmp_dict = get_prod_and_div(x=1, y=2) result = get_sum(x=tmp_dict["prod"], y=tmp_dict["div"]) ``` -For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](example_workflows/arithmetic/arithmetic_workflow.py) +For the workflow representation of these Python functions the Python functions are stored in the [arithmetic_workflow.py](example_workflows/arithmetic/workflow.py) Python module. The connection of the Python functions are stored in the [workflow_arithmetic.json](example_workflows/arithmetic/workflow.json) JSON file: ``` @@ -67,7 +67,7 @@ The corresponding Jupyter notebooks demonstrate this functionality: ### Quantum Espresso Workflow The second workflow example is the calculation of an energy volume curve with Quantum Espresso. In the first step the initial structure is relaxed, afterward it is strained and the total energy is calculated. -* [quantum_espresso_workflow.py](example_workflows/quantum_espresso/quantum_espresso_workflow.py) Python functions +* [quantum_espresso_workflow.py](example_workflows/quantum_espresso/workflow.py) Python functions * [workflow_qe.json](example_workflows/quantum_espresso/workflow.json) Workflow definition in the Python Workflow Definition. * [environment_qe.yml](example_workflows/quantum_espresso/environment.yml) Conda environment @@ -81,7 +81,7 @@ initial structure is relaxed, afterward it is strained and the total energy is c ### NFDI4Ing Scientific Workflow Requirements To demonstrate the compatibility of the Python Workflow Definition to file based workflows, the workflow benchmark developed as part of [NFDI4Ing](https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements) is implemented for all three simulation codes based on a shared workflow definition. -* [nfdi_ing_workflow.py](example_workflows/nfdi/nfdi_ing_workflow.py) Python functions +* [nfdi_ing_workflow.py](example_workflows/nfdi/workflow.py) Python functions * [workflow_nfdi.json](example_workflows/nfdi/workflow.json) Workflow definition in the Python Workflow Definition. Additional source files provided with the workflow benchmark: diff --git a/example_workflows/arithmetic/aiida.ipynb b/example_workflows/arithmetic/aiida.ipynb index fe9e474..6faaa43 100644 --- a/example_workflows/arithmetic/aiida.ipynb +++ b/example_workflows/arithmetic/aiida.ipynb @@ -46,7 +46,7 @@ "outputs": [], "execution_count": null, "source": [ - "from arithmetic_workflow import (\n", + "from workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" diff --git a/example_workflows/arithmetic/jobflow.ipynb b/example_workflows/arithmetic/jobflow.ipynb index 7adf9e5..81d1c09 100644 --- a/example_workflows/arithmetic/jobflow.ipynb +++ b/example_workflows/arithmetic/jobflow.ipynb @@ -65,7 +65,7 @@ "outputs": [], "execution_count": null, "source": [ - "from arithmetic_workflow import (\n", + "from workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" diff --git a/example_workflows/arithmetic/pyiron_base.ipynb b/example_workflows/arithmetic/pyiron_base.ipynb index daf15f8..abb63ec 100644 --- a/example_workflows/arithmetic/pyiron_base.ipynb +++ b/example_workflows/arithmetic/pyiron_base.ipynb @@ -59,7 +59,7 @@ "outputs": [], "execution_count": null, "source": [ - "from arithmetic_workflow import (\n", + "from workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", ")" diff --git a/example_workflows/arithmetic/workflow.json b/example_workflows/arithmetic/workflow.json index 1f29a65..e68cfc7 100644 --- a/example_workflows/arithmetic/workflow.json +++ b/example_workflows/arithmetic/workflow.json @@ -1,7 +1,7 @@ { "nodes": [ - {"id": 0, "function": "arithmetic_workflow.get_prod_and_div"}, - {"id": 1, "function": "arithmetic_workflow.get_sum"}, + {"id": 0, "function": "workflow.get_prod_and_div"}, + {"id": 1, "function": "workflow.get_sum"}, {"id": 2, "value": 1}, {"id": 3, "value": 2} ], diff --git a/example_workflows/arithmetic/arithmetic_workflow.py b/example_workflows/arithmetic/workflow.py similarity index 100% rename from example_workflows/arithmetic/arithmetic_workflow.py rename to example_workflows/arithmetic/workflow.py diff --git a/example_workflows/nfdi/aiida.ipynb b/example_workflows/nfdi/aiida.ipynb index d3aef99..d8b5ab7 100644 --- a/example_workflows/nfdi/aiida.ipynb +++ b/example_workflows/nfdi/aiida.ipynb @@ -58,7 +58,7 @@ "outputs": [], "execution_count": null, "source": [ - "from nfdi_ing_workflow import (\n", + "from workflow import (\n", " generate_mesh,\n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", diff --git a/example_workflows/nfdi/jobflow.ipynb b/example_workflows/nfdi/jobflow.ipynb index 65c47fd..0fda22f 100644 --- a/example_workflows/nfdi/jobflow.ipynb +++ b/example_workflows/nfdi/jobflow.ipynb @@ -61,7 +61,7 @@ "outputs": [], "execution_count": null, "source": [ - "from nfdi_ing_workflow import (\n", + "from workflow import (\n", " generate_mesh as _generate_mesh, \n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", diff --git a/example_workflows/nfdi/pyiron_base.ipynb b/example_workflows/nfdi/pyiron_base.ipynb index b0f88de..2e5506c 100644 --- a/example_workflows/nfdi/pyiron_base.ipynb +++ b/example_workflows/nfdi/pyiron_base.ipynb @@ -39,7 +39,7 @@ "outputs": [], "execution_count": null, "source": [ - "from nfdi_ing_workflow import (\n", + "from workflow import (\n", " generate_mesh as _generate_mesh, \n", " convert_to_xdmf as _convert_to_xdmf,\n", " poisson as _poisson,\n", diff --git a/example_workflows/nfdi/workflow.json b/example_workflows/nfdi/workflow.json index 820fb43..911beb1 100644 --- a/example_workflows/nfdi/workflow.json +++ b/example_workflows/nfdi/workflow.json @@ -1,11 +1,11 @@ { "nodes": [ - {"id": 0, "function": "nfdi_ing_workflow.generate_mesh"}, - {"id": 1, "function": "nfdi_ing_workflow.convert_to_xdmf"}, - {"id": 2, "function": "nfdi_ing_workflow.poisson"}, - {"id": 3, "function": "nfdi_ing_workflow.plot_over_line"}, - {"id": 4, "function": "nfdi_ing_workflow.substitute_macros"}, - {"id": 5, "function": "nfdi_ing_workflow.compile_paper"}, + {"id": 0, "function": "workflow.generate_mesh"}, + {"id": 1, "function": "workflow.convert_to_xdmf"}, + {"id": 2, "function": "workflow.poisson"}, + {"id": 3, "function": "workflow.plot_over_line"}, + {"id": 4, "function": "workflow.substitute_macros"}, + {"id": 5, "function": "workflow.compile_paper"}, {"id": 6, "value": 2.0} ], "edges": [ diff --git a/example_workflows/nfdi/nfdi_ing_workflow.py b/example_workflows/nfdi/workflow.py similarity index 100% rename from example_workflows/nfdi/nfdi_ing_workflow.py rename to example_workflows/nfdi/workflow.py diff --git a/example_workflows/quantum_espresso/aiida.ipynb b/example_workflows/quantum_espresso/aiida.ipynb index b57cf5a..8e4abce 100644 --- a/example_workflows/quantum_espresso/aiida.ipynb +++ b/example_workflows/quantum_espresso/aiida.ipynb @@ -55,7 +55,7 @@ "outputs": [], "execution_count": null, "source": [ - "from quantum_espresso_workflow import (\n", + "from workflow import (\n", " generate_structures,\n", " get_bulk_structure,\n", " calculate_qe as _calculate_qe,\n", diff --git a/example_workflows/quantum_espresso/jobflow.ipynb b/example_workflows/quantum_espresso/jobflow.ipynb index ed784b9..ac0983e 100644 --- a/example_workflows/quantum_espresso/jobflow.ipynb +++ b/example_workflows/quantum_espresso/jobflow.ipynb @@ -70,7 +70,7 @@ "outputs": [], "execution_count": null, "source": [ - "from quantum_espresso_workflow import (\n", + "from workflow import (\n", " calculate_qe as _calculate_qe, \n", " generate_structures as _generate_structures, \n", " get_bulk_structure as _get_bulk_structure, \n", diff --git a/example_workflows/quantum_espresso/pyiron_base.ipynb b/example_workflows/quantum_espresso/pyiron_base.ipynb index 0fe2c45..a1c94e0 100644 --- a/example_workflows/quantum_espresso/pyiron_base.ipynb +++ b/example_workflows/quantum_espresso/pyiron_base.ipynb @@ -49,7 +49,7 @@ "outputs": [], "execution_count": null, "source": [ - "from quantum_espresso_workflow import (\n", + "from workflow import (\n", " calculate_qe as _calculate_qe, \n", " generate_structures as _generate_structures, \n", " get_bulk_structure as _get_bulk_structure, \n", diff --git a/example_workflows/quantum_espresso/workflow.json b/example_workflows/quantum_espresso/workflow.json index 872bda0..a085370 100644 --- a/example_workflows/quantum_espresso/workflow.json +++ b/example_workflows/quantum_espresso/workflow.json @@ -1,14 +1,14 @@ { "nodes": [ - {"id": 0, "function": "quantum_espresso_workflow.get_bulk_structure"}, - {"id": 1, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 2, "function": "quantum_espresso_workflow.generate_structures"}, - {"id": 3, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 4, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 5, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 6, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 7, "function": "quantum_espresso_workflow.calculate_qe"}, - {"id": 8, "function": "quantum_espresso_workflow.plot_energy_volume_curve"}, + {"id": 0, "function": "workflow.get_bulk_structure"}, + {"id": 1, "function": "workflow.calculate_qe"}, + {"id": 2, "function": "workflow.generate_structures"}, + {"id": 3, "function": "workflow.calculate_qe"}, + {"id": 4, "function": "workflow.calculate_qe"}, + {"id": 5, "function": "workflow.calculate_qe"}, + {"id": 6, "function": "workflow.calculate_qe"}, + {"id": 7, "function": "workflow.calculate_qe"}, + {"id": 8, "function": "workflow.plot_energy_volume_curve"}, {"id": 9, "value": "Al"}, {"id": 10, "value": 4.05}, {"id": 11, "value": true}, diff --git a/example_workflows/quantum_espresso/quantum_espresso_workflow.py b/example_workflows/quantum_espresso/workflow.py similarity index 100% rename from example_workflows/quantum_espresso/quantum_espresso_workflow.py rename to example_workflows/quantum_espresso/workflow.py